⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ospf_show_lsdb.c

📁 vxworks下ospf协议栈
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -