📄 ospf_show_lsdb.c
字号:
ospf_print_ls_age(sptr_database_entry->advertisement.sptr_type_11->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_type_11->ls_header.type); ospf_lsid.lsid = sptr_database_entry->advertisement.sptr_type_11->ls_header.id.lsid; ospf_lsid.lsid = net_to_host_long(ospf_lsid.lsid); ospf_print_ls_opaque_id(ospf_lsid.opaque_lsid); ospf_print_ls_advertising_router(sptr_database_entry->advertisement.sptr_type_11->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_type_11->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_type_11->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_type_11->ls_header.length); printf("=====================================================================\r\n"); return;}void ospfShowOpaqueLsdb(enum OSPF_SEARCH_TYPE key, ULONG key_value){ OSPF_AREA_ENTRY *sptr_area = ospf.sptr_area_list; OSPF_LS_DATABASE_HEAD *sptr_ls_database_head = NULL; OSPF_LS_DATABASE_ENTRY *sptr_database_entry = NULL; OSPF_LS_DATABASE_ENTRY *sptr_next_database_entry = NULL; ULONG index; ULONG number_of_type_9_lsas = 0x00000000; ULONG number_of_type_10_lsas = 0x00000000; ULONG number_of_type_11_lsas = 0x00000000; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_show_opaque_lsdb\r\n"); semTake (ospf_global_mutex , WAIT_FOREVER); sptr_area = ospf.sptr_area_list; sptr_ls_database_head = NULL; sptr_database_entry = NULL; index = 0; while (sptr_area != NULL) { for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_9_LSA][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_9_LSA][index])) { /* SPR#76812 */ for (sptr_database_entry = sptr_ls_database_head->sptr_linear_database_entry; sptr_database_entry != NULL; sptr_database_entry = sptr_next_database_entry) { sptr_next_database_entry = sptr_database_entry->sptr_forward_link; if ( sptr_database_entry->advertisement.sptr_type_9 != NULL ) { if (key == OSPF_SEARCH_ADVERTISING_ROUTER) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_9->ls_header.advertising_router == key_value) { ospf_print_type_9(sptr_area,sptr_database_entry); number_of_type_9_lsas++; } } else if (key == OSPF_SEARCH_LSA_ID) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_9->ls_header.id.lsid == key_value) { ospf_print_type_9(sptr_area,sptr_database_entry); number_of_type_9_lsas++; } } else { if (key_value == OSPF_LS_TYPE_9) { ospf_print_type_9(sptr_area,sptr_database_entry); number_of_type_9_lsas++; } } } } } sptr_area = sptr_area->sptr_forward_link; } ospf_print_number_of_type_9_lsas(number_of_type_9_lsas); printf("=====================================================================\r\n"); sptr_area = ospf.sptr_area_list; sptr_ls_database_head = NULL; sptr_database_entry = NULL; index = 0; while (sptr_area != NULL) { for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_10_LSA][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_10_LSA][index])) { /* SPR#76812 */ for (sptr_database_entry = sptr_ls_database_head->sptr_linear_database_entry; sptr_database_entry != NULL; sptr_database_entry = sptr_next_database_entry) { sptr_next_database_entry = sptr_database_entry->sptr_forward_link; if ( sptr_database_entry->advertisement.sptr_type_10 != NULL ) { if (key == OSPF_SEARCH_ADVERTISING_ROUTER) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_10->ls_header.advertising_router == key_value) { ospf_print_type_10(sptr_area,sptr_database_entry); number_of_type_10_lsas++; } } else if (key == OSPF_SEARCH_LSA_ID) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_10->ls_header.id.lsid == key_value) { ospf_print_type_10(sptr_area,sptr_database_entry); number_of_type_10_lsas++; } } else { if (key_value == OSPF_LS_TYPE_10) { ospf_print_type_10(sptr_area,sptr_database_entry); number_of_type_10_lsas++; } } } } } sptr_area = sptr_area->sptr_forward_link; } ospf_print_number_of_type_10_lsas(number_of_type_10_lsas); printf("=====================================================================\r\n"); sptr_ls_database_head = NULL; sptr_database_entry = NULL; index = 0; /* Check for type 11 lsdb */ for (index = 0x00000000L, sptr_ls_database_head = &(ospf.type_11_database_hash_table[LS_TYPE_11_LSA][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(ospf.type_11_database_hash_table[LS_TYPE_11_LSA][index])) { if (sptr_ls_database_head == NULL) { continue; } /* SPR#76812 */ for (sptr_database_entry = sptr_ls_database_head->sptr_linear_database_entry; sptr_database_entry != NULL; sptr_database_entry = sptr_next_database_entry) { sptr_next_database_entry = sptr_database_entry->sptr_forward_link; if ( sptr_database_entry->advertisement.sptr_type_11 != NULL ) { if (key == OSPF_SEARCH_ADVERTISING_ROUTER) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_11->ls_header.advertising_router == key_value) { ospf_print_type_11(sptr_database_entry); number_of_type_11_lsas++; } } else if (key == OSPF_SEARCH_LSA_ID) { key_value = host_to_net_long(key_value); if (sptr_database_entry->advertisement.sptr_type_11->ls_header.id.lsid == key_value) { ospf_print_type_11(sptr_database_entry); number_of_type_11_lsas++; } } else { if (key_value == OSPF_LS_TYPE_11) { ospf_print_type_11(sptr_database_entry); number_of_type_11_lsas++; } } } } } ospf_print_number_of_type_11_lsas(number_of_type_11_lsas); printf("=====================================================================\r\n"); semGive(ospf_global_mutex ); return;}#endif /* __OPAQUE_LSA__ */static void ospf_print_ls_router_id(){ char print_buffer[PRINT_BUFFER_SIZE]; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_router_id\r\n"); OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, ospf.router_id); printf("OSPF Router with id(%s)\r\n", print_buffer); return;}static void ospf_print_ls_age(USHORT ls_age){ USHORT age; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_age\r\n"); age = ls_age; age = net_to_host_short(age); printf("LS age: %d\r\n", age); return;}static void ospf_print_ls_options_for_router(OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER *sptr_router){ OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_options\r\n"); printf("Options: (No TOS-capability)\r\n"); if (sptr_router != NULL) { if (sptr_router->bit_options._bit.bit_V) { printf(" Virtual Link\r\n"); } if (sptr_router->bit_options._bit.bit_B) { printf(" Area Border Link\r\n"); } if (sptr_router->bit_options._bit.bit_E) { printf(" ASBR Link\r\n"); } } return;}static void ospf_print_ls_options(){ OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_options\r\n"); printf("Options: (No TOS-capability)\r\n"); return;}static void ospf_print_ls_type(BYTE_ENUM (OSPF_LS_TYPE) type){ OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_type\r\n"); switch (type) { case OSPF_LS_ROUTER: printf("Router Links\r\n"); return; case OSPF_LS_NETWORK: printf("Network Links\r\n"); return; case OSPF_LS_SUMMARY_NETWORK: printf("Summary Links(Network)\r\n"); return; case OSPF_LS_SUMMARY_AS_BOUNDARY_ROUTER: printf("Summary Links(AS Boundary Router)\r\n"); return; case OSPF_LS_AS_EXTERNAL: printf("AS External Link\r\n"); return;#if defined (__NSSA__) case OSPF_LS_TYPE_7: printf("NSSA Links(Type 7)\r\n"); return;#endif /*__NSSA__*/ /* opaque lsa print opaque types jkw */#if defined (__OPAQUE_LSA__) case OSPF_LS_TYPE_9: printf("Opaque Links(Type 9)\r\n"); return; case OSPF_LS_TYPE_10: printf("Opaque Links(Type 10)\r\n"); return; case OSPF_LS_TYPE_11: printf("Opaque Links(Type 11)\r\n"); return;#endif /* __OPAQUE_LSA__ */ default: printf("Unknown Links\r\n"); return; }}static void ospf_print_ls_id(ULONG ls_id){ char print_buffer[PRINT_BUFFER_SIZE]; ULONG id; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_id\r\n"); id = ls_id; id = net_to_host_long(id); OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, id); printf("Link State ID: %s\r\n", print_buffer); return;}static void ospf_print_ls_advertising_router(ULONG ls_advertising_router){ char print_buffer[PRINT_BUFFER_SIZE]; ULONG advertising_router; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_ls_advertising_router\r\n"); advertising_router = ls_advertising_router; advertising_router = net_to_host_long(advertising_router); OSPF_CONVERT_IP_ADDRESS_T
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -