📄 ospf_show_lsdb.c
字号:
} }#endif /* __OPAQUE_LSA__ */ ospf_print_number_of_router_lsas(number_of_router_lsas); printf("=====================================================================\r\n"); ospf_print_number_of_network_lsas(number_of_network_lsas); printf("=====================================================================\r\n"); ospf_print_number_of_network_summary_lsas(number_of_network_summary_lsas); printf("=====================================================================\r\n"); ospf_print_number_of_asbr_summary_lsas(number_of_asbr_summary_lsas); printf("=====================================================================\r\n");#if defined (__NSSA__) ospf_print_number_of_type_7_lsas(number_of_type_7_lsas); printf("=====================================================================\r\n");#endif /* __NSSA__ */#if defined (__OPAQUE_LSA__) ospf_print_number_of_type_9_lsas(number_of_type_9_lsas); printf("=====================================================================\r\n"); ospf_print_number_of_type_10_lsas(number_of_type_10_lsas); printf("=====================================================================\r\n");#endif /* __OPAQUE_LSA__ */ sptr_area = sptr_area->sptr_forward_link; } /* SPR 85432 -- Begin */ /* Check for external lsdb */ for (index = 0x00000000L, sptr_ls_database_head = &(ospf.external_database_hash_table[LS_EXTERNAL_LSA][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(ospf.external_database_hash_table[LS_EXTERNAL_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; /* SPR 85893 --Begin */ if ( sptr_database_entry->ls_database_pending_delete == FALSE) { sptr_display_route = ( OSPF_LS_DATABASE_ENTRY*) table_malloc (1, sizeof (OSPF_LS_DATABASE_ENTRY)); if (sptr_display_route != NULL) { memset(sptr_display_route,0x0,sizeof(OSPF_LS_DATABASE_ENTRY)); memcpy(sptr_display_route,sptr_database_entry,sizeof(OSPF_LS_DATABASE_ENTRY)); if (ospf_container_add_back (ospf.sptr_lsdb_print_queue, sptr_display_route) == false) { table_free ((void *)sptr_display_route); sptr_display_route = NULL; } } } /* SPR 85893 --End */ } } semGive (ospf_global_mutex ); iterator = (OSPF_CONTAINER_ITERATOR)NULL; iterator = ospf_container_create_iterator (ospf.sptr_lsdb_print_queue); if (iterator == (OSPF_CONTAINER_ITERATOR)NULL) { return ERROR; } ospf_container_goto_front (iterator); while(ospf_container_is_at_end (iterator) == false) { sptr_display_route_output = ospf_container_at (iterator); if(sptr_display_route_output == NULL) { ospf_container_next (iterator); continue; } else { ospf_container_remove (iterator); if ( sptr_display_route_output->advertisement.sptr_external != NULL ) { printf("Displaying External Link States \r\n"); ospf_print_ls_age(sptr_display_route_output->advertisement.sptr_external->ls_header.age); ospf_print_ls_id(sptr_display_route_output->advertisement.sptr_external->ls_header.id); ospf_print_ls_advertising_router(sptr_display_route_output->advertisement.sptr_external->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_display_route_output->advertisement.sptr_external->ls_header.sequence_number); ospf_print_ls_checksum(sptr_display_route_output->advertisement.sptr_external->ls_header.checksum); printf("=====================================================================\r\n"); number_of_external_lsas++; } table_free ((void *)sptr_display_route_output); sptr_display_route_output = NULL; } } ospf_print_number_of_external_lsas(number_of_external_lsas); printf("=====================================================================\r\n"); ospf_container_free_iterator (iterator); iterator = 0; semTake (ospf_global_mutex , WAIT_FOREVER); /* SPR 85432 -- End */#if defined (__OPAQUE_LSA__) /* 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 ) { ospf_print_ls_age(sptr_database_entry->advertisement.sptr_type_11->ls_header.age); 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); printf("=====================================================================\r\n"); number_of_type_11_lsas++; } } } ospf_print_number_of_type_11_lsas(number_of_type_11_lsas); printf("=====================================================================\r\n");#endif /* __OPAQUE_LSA__ */ semGive(ospf_global_mutex ); return OK; }STATUS ospfShowLsdbSummary() { 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_router_lsas = 0x00000000; ULONG number_of_network_lsas = 0x00000000; ULONG number_of_network_summary_lsas = 0x00000000; ULONG number_of_asbr_summary_lsas = 0x00000000; ULONG number_of_type_7_lsas = 0x00000000; ULONG number_of_type_9_lsas = 0x00000000; ULONG number_of_type_10_lsas = 0x00000000; ULONG number_of_external_lsas = 0x00000000;#if defined (__OPAQUE_LSA__) ULONG number_of_type_11_lsas = 0x00000000;#endif /* __OPAQUE_LSA__ */ ULONG total_number_of_lsas = 0x00000000; ULONG router_lsa_bytes = 0x00000000; ULONG network_lsa_bytes = 0x00000000; ULONG network_summary_lsa_bytes = 0x00000000; ULONG asbr_summary_lsa_bytes = 0x00000000; ULONG type_7_lsa_bytes = 0x00000000; ULONG type_9_lsa_bytes = 0x00000000; ULONG type_10_lsa_bytes = 0x00000000; ULONG external_lsa_bytes = 0x00000000; ULONG type_11_lsa_bytes = 0x00000000; ULONG total_lsa_bytes = 0x00000000; USHORT length = 0x0000; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_show_lsdb\r\n"); semTake (ospf_global_mutex , WAIT_FOREVER); while (sptr_area != NULL) { number_of_router_lsas = 0x0000; number_of_network_lsas = 0x0000; number_of_network_summary_lsas = 0x0000; number_of_asbr_summary_lsas = 0x0000; number_of_type_7_lsas = 0x0000; number_of_type_9_lsas = 0x0000; number_of_type_10_lsas = 0x0000; for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_ROUTER][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_ROUTER][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_router != NULL ) { number_of_router_lsas++; length = sptr_database_entry->advertisement.sptr_router->ls_header.length; length = net_to_host_short(length); router_lsa_bytes = router_lsa_bytes + length; } } } for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_NETWORK][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_NETWORK][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_network != NULL ) { number_of_network_lsas++; length = sptr_database_entry->advertisement.sptr_network->ls_header.length; length = net_to_host_short(length); network_lsa_bytes = network_lsa_bytes + length; } } } for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_SUMMARY_NETWORK][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_SUMMARY_NETWORK][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_summary != NULL ) { number_of_network_summary_lsas++; length = sptr_database_entry->advertisement.sptr_summary->ls_header.length; length = net_to_host_short(length); network_summary_lsa_bytes = network_summary_lsa_bytes + length; } } } for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_SUMMARY_AS_BOUNDARY_ROUTER][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_SUMMARY_AS_BOUNDARY_ROUTER][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_summary != NULL ) { number_of_asbr_summary_lsas++; length = sptr_database_entry->advertisement.sptr_summary->ls_header.length; length = net_to_host_short(length); asbr_summary_lsa_bytes = asbr_summary_lsa_bytes + length; } } }#if defined (__NSSA__) for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_TYPE_7][index]); /* for each hash list */ index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->ls_database_hash_table[OSPF_LS_TYPE_7][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_7 != NULL ) { number_of_type_7_lsas++; length = sptr_database_entry->advertisement.sptr_type_7->ls_header.length; length = net_to_host_short(length); type_7_lsa_bytes = type_7_lsa_bytes + length; } } }#endif /* __NSSA__ */ /* opaque lsa show routines for opaque lsa jkw */#if defined (__OPAQUE_LSA__) 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -