📄 ospf_show_lsdb.c
字号:
semTake (ospf_global_mutex , WAIT_FOREVER); while (sptr_area != NULL) { 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 ) { ospf_print_ls_router_id(); ospf_print_ls_summary_area_id(sptr_area->area_id); ospf_print_ls_age(sptr_database_entry->advertisement.sptr_summary->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_summary->ls_header.type); ospf_print_ls_id(sptr_database_entry->advertisement.sptr_summary->ls_header.id); ospf_print_ls_advertising_router(sptr_database_entry->advertisement.sptr_summary->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_summary->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_summary->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_summary->ls_header.length); ospf_print_ls_network_mask(sptr_database_entry->advertisement.sptr_summary->network_mask); ospf_print_ls_summary_tos0_metric(sptr_database_entry->advertisement.sptr_summary->tos0_metric); printf("=====================================================================\r\n"); number_of_network_summary_lsas++; } } } sptr_area = sptr_area->sptr_forward_link; } ospf_print_number_of_network_summary_lsas(number_of_network_summary_lsas); printf("=====================================================================\r\n"); semGive(ospf_global_mutex ); return OK; }STATUS ospfShowAsbrSummaryLsdb() { 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_asbr_summary_lsas = 0x00000000; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_show_asbr_summary_lsdb\r\n"); semTake (ospf_global_mutex , WAIT_FOREVER); while (sptr_area != NULL) { 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 ) { ospf_print_ls_router_id(); ospf_print_ls_asbr_summary_area_id(sptr_area->area_id); ospf_print_ls_age(sptr_database_entry->advertisement.sptr_summary->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_summary->ls_header.type); ospf_print_ls_id(sptr_database_entry->advertisement.sptr_summary->ls_header.id); ospf_print_ls_advertising_router(sptr_database_entry->advertisement.sptr_summary->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_summary->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_summary->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_summary->ls_header.length); ospf_print_ls_network_mask(sptr_database_entry->advertisement.sptr_summary->network_mask); ospf_print_ls_summary_tos0_metric(sptr_database_entry->advertisement.sptr_summary->tos0_metric); printf("=====================================================================\r\n"); number_of_asbr_summary_lsas++; } } } sptr_area = sptr_area->sptr_forward_link; } ospf_print_number_of_asbr_summary_lsas(number_of_asbr_summary_lsas); printf("=====================================================================\r\n"); semGive(ospf_global_mutex ); return OK; }/* SPR 85432 -- Begin */STATUS ospfShowExternalLsdb() { 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_external_lsas = 0x00000000; OSPF_LS_DATABASE_ENTRY *sptr_display_route = NULL; OSPF_LS_DATABASE_ENTRY *sptr_display_route_output = NULL; OSPF_CONTAINER_ITERATOR iterator; OSPF_PRINTF_DEBUG ( OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_show_external_lsdb\r\n"); semTake (ospf_global_mutex , WAIT_FOREVER); /* 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 */ 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_external_lsdb_print_queue, sptr_display_route) == false) { table_free ((void *)sptr_display_route); sptr_display_route = NULL; } } } } } semGive(ospf_global_mutex ); iterator = (OSPF_CONTAINER_ITERATOR)NULL; iterator = ospf_container_create_iterator (ospf.sptr_external_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 ) { ospf_print_ls_router_id(); printf("AS External Link States\r\n"); ospf_print_ls_age(sptr_display_route_output->advertisement.sptr_external->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_display_route_output->advertisement.sptr_external->ls_header.type); 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); ospf_print_ls_length(sptr_display_route_output->advertisement.sptr_external->ls_header.length); ospf_print_ls_network_mask(sptr_display_route_output->advertisement.sptr_external->network_mask); ospf_print_ls_external_link(sptr_display_route_output->advertisement.sptr_external); printf("routeProtoId: %ld\r\n", sptr_display_route_output->route_protocol); 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; return OK; }/* SPR 85432 -- End */#if defined (__NSSA__)STATUS ospfShowType7Lsdb() { 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_7_lsas = 0x00000000; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospfShowType7Lsdb\r\n"); semTake (ospf_global_mutex , WAIT_FOREVER); while (sptr_area != NULL) { 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])) { 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; ospf_print_ls_router_id(); printf("NSSA Link States\r\n"); ospf_print_ls_age(sptr_database_entry->advertisement.sptr_type_7->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_type_7->ls_header.type); ospf_print_ls_id(sptr_database_entry->advertisement.sptr_type_7->ls_header.id); ospf_print_ls_advertising_router(sptr_database_entry->advertisement.sptr_type_7->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_type_7->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_type_7->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_type_7->ls_header.length); ospf_print_ls_network_mask(sptr_database_entry->advertisement.sptr_type_7->network_mask); ospf_print_ls_type_7_link(sptr_database_entry->advertisement.sptr_type_7); printf("=====================================================================\r\n"); number_of_type_7_lsas++; } } sptr_area = sptr_area->sptr_forward_link; } ospf_print_number_of_type_7_lsas(number_of_type_7_lsas); printf("=====================================================================\r\n"); semGive(ospf_global_mutex ); return OK; }#endif#if defined (__OPAQUE_LSA__)void ospf_print_type_9(OSPF_AREA_ENTRY *sptr_area,OSPF_LS_DATABASE_ENTRY *sptr_database_entry){ UNION_OSPF_LS_ID ospf_lsid; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_type_9\r\n"); ospf_print_ls_router_id(); ospf_print_ls_router_area_id(sptr_area->area_id); ospf_print_ls_age(sptr_database_entry->advertisement.sptr_type_9->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_type_9->ls_header.type); ospf_lsid.lsid = sptr_database_entry->advertisement.sptr_type_9->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_9->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_type_9->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_type_9->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_type_9->ls_header.length); printf("=====================================================================\r\n"); return;}void ospf_print_type_10(OSPF_AREA_ENTRY *sptr_area,OSPF_LS_DATABASE_ENTRY *sptr_database_entry){ UNION_OSPF_LS_ID ospf_lsid; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_type_10\r\n"); ospf_print_ls_router_id(); ospf_print_ls_router_area_id(sptr_area->area_id); ospf_print_ls_age(sptr_database_entry->advertisement.sptr_type_10->ls_header.age); ospf_print_ls_options(); ospf_print_ls_type(sptr_database_entry->advertisement.sptr_type_10->ls_header.type); ospf_lsid.lsid = sptr_database_entry->advertisement.sptr_type_10->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_10->ls_header.advertising_router); ospf_print_ls_sequence_number(sptr_database_entry->advertisement.sptr_type_10->ls_header.sequence_number); ospf_print_ls_checksum(sptr_database_entry->advertisement.sptr_type_10->ls_header.checksum); ospf_print_ls_length(sptr_database_entry->advertisement.sptr_type_10->ls_header.length); printf("=====================================================================\r\n"); return;}void ospf_print_type_11(OSPF_LS_DATABASE_ENTRY *sptr_database_entry){ UNION_OSPF_LS_ID ospf_lsid; OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_print_type_11\r\n"); ospf_print_ls_router_id();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -