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

📄 ospf_print_utilities.c

📁 vxworks下ospf协议栈
💻 C
📖 第 1 页 / 共 3 页
字号:
	ULONG advertising_router;	BYTE_ENUM (OSPF_LS_TYPE) type;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_ls_request_packet\r\n");	sptr_ls_requested_advertisement = &(sptr_ls_request_packet->requested_advertisement);	for (size_of_requested_advertisement_optional_fields = (ULONG) length_of_packet - OSPF_PACKET_SIZE;		size_of_requested_advertisement_optional_fields > 0x00000000L;		size_of_requested_advertisement_optional_fields -= OSPF_LS_REQUESTED_ADVERTISEMENT_SIZE)		{		link_state_id = sptr_ls_requested_advertisement->id;		link_state_id = net_to_host_long (link_state_id);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, link_state_id);		advertising_router = sptr_ls_requested_advertisement->advertising_router;		advertising_router = net_to_host_long (advertising_router);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, advertising_router);		type = sptr_ls_requested_advertisement->type;		/* Check for valid index for array string */		if (type > OSPF_LS_MAX)			{			OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "LSA TYPE = %x\n", type);			type = OSPF_LS_MAX;			}		OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- LS Request Packet Advertisement Details ---\r\n");		OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         type = %s, id = %s, advertising router = %s\r\n",			cptr_ls_type_string[type], print_buffer, print_buffer_1);		sptr_ls_requested_advertisement = (OSPF_LS_REQUESTED_ADVERTISEMENT *) ((ULONG) sptr_ls_requested_advertisement +			OSPF_LS_REQUESTED_ADVERTISEMENT_SIZE);		}	return;}/*******************************************************************************************************************************/static void ospf_display_ls_update_packet (OSPF_LS_UPDATE_HEADER *sptr_ls_update_packet){	ULONG number_of_advertisements;	UNION_OSPF_ADVERTISEMENT_HEADER *sptr_advertisement_header;	USHORT length;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_ls_update_packet\r\n");	number_of_advertisements = sptr_ls_update_packet->number_of_advertisements;	number_of_advertisements = net_to_host_long (number_of_advertisements);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- LS Update Packet Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         number of advertisements = %d\r\n", number_of_advertisements);	sptr_advertisement_header = &(sptr_ls_update_packet->advertisement_header);	for (; number_of_advertisements > 0x00000000L; --number_of_advertisements)		{		ospf_display_ls_header (&(sptr_advertisement_header->router.ls_header));		switch (sptr_advertisement_header->router.ls_header.type)			{			case OSPF_LS_ROUTER:				ospf_display_router_links_advertisement (&(sptr_advertisement_header->router));				break;			case OSPF_LS_NETWORK:				ospf_display_network_links_advertisement (&(sptr_advertisement_header->network));				break;			case OSPF_LS_SUMMARY_NETWORK:			case OSPF_LS_SUMMARY_AS_BOUNDARY_ROUTER:				ospf_display_summary_links_advertisement (&(sptr_advertisement_header->summary));				break;#if defined (__NSSA__)			case OSPF_LS_TYPE_7:				ospf_display_type_7_links_advertisement (&(sptr_advertisement_header->type_7));#endif /*__NSSA__*/			case OSPF_LS_AS_EXTERNAL:				ospf_display_external_links_advertisement (&(sptr_advertisement_header->external));				break;			default:				break;			}		length = sptr_advertisement_header->router.ls_header.length;		length = net_to_host_short (length);		sptr_advertisement_header = (UNION_OSPF_ADVERTISEMENT_HEADER *) ((ULONG) sptr_advertisement_header + length);		}	return;}/*******************************************************************************************************************************/static void ospf_display_router_links_advertisement (OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER *sptr_router_links_advertisement_header){	USHORT number_of_links;	OSPF_ROUTER_LINK_PIECE *sptr_router_link_piece;	ULONG link_id;	char print_buffer[PRINT_BUFFER_SIZE];	ULONG link_data;	char print_buffer_1[PRINT_BUFFER_SIZE];	USHORT tos0_metric;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_router_links_advertisement\r\n");	number_of_links = sptr_router_links_advertisement_header->number_of_links;	number_of_links = net_to_host_short (number_of_links);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- Router Advertisement Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         number of links = %d\r\n", number_of_links);	sptr_router_link_piece = &(sptr_router_links_advertisement_header->link);	for (; number_of_links > 0x0000; --number_of_links)		{		link_id = sptr_router_link_piece->link_id;		link_id = net_to_host_long (link_id);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, link_id);		link_data = sptr_router_link_piece->link_data;		link_data = net_to_host_long (link_data);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, link_data);		tos0_metric = sptr_router_link_piece->tos0_metric;		tos0_metric = net_to_host_short (tos0_metric);		OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- Router Link Details ---\r\n");		OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         link id = %s, link data = %s, type = %d, number_of_metrics = %d, tos0_metric = %d\r\n",			print_buffer, print_buffer_1, sptr_router_link_piece->type, sptr_router_link_piece->number_of_metrics, tos0_metric);		sptr_router_link_piece = (OSPF_ROUTER_LINK_PIECE *) ((ULONG) sptr_router_link_piece + OSPF_ROUTER_LINK_PIECE_SIZE +			(sptr_router_link_piece->number_of_metrics * OSPF_ROUTER_LINK_METRIC_PIECE_SIZE));		}	return;}/*******************************************************************************************************************************/static void ospf_display_network_links_advertisement (OSPF_NETWORK_LINK_ADVERTISEMENT_HEADER *sptr_network_links_advertisement_header){	ULONG network_mask;	char print_buffer[PRINT_BUFFER_SIZE];	OSPF_NETWORK_LINK_PIECE *sptr_network_link_piece;	USHORT length_of_advertisement;	USHORT number_of_links;	ULONG link_id;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_network_links_advertisement\r\n");	network_mask = sptr_network_links_advertisement_header->network_mask;	network_mask = net_to_host_long (network_mask);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, network_mask);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- Network Advertisement Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         network mask = %s\r\n", print_buffer);	sptr_network_link_piece = &(sptr_network_links_advertisement_header->attached_router);	length_of_advertisement = sptr_network_links_advertisement_header->ls_header.length;	length_of_advertisement = net_to_host_short (length_of_advertisement);	number_of_links = (USHORT) ((length_of_advertisement - OSPF_NETWORK_LINK_ADVERTISEMENT_HEADER_SIZE) / OSPF_NETWORK_LINK_PIECE_SIZE);	for (; number_of_links > 0x0000; --number_of_links)		{		link_id = sptr_network_link_piece->link_id;		link_id = net_to_host_long (link_id);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, link_id);		OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         attached router's link id = %s\r\n", print_buffer);		sptr_network_link_piece = (OSPF_NETWORK_LINK_PIECE *) ((ULONG) sptr_network_link_piece + OSPF_NETWORK_LINK_PIECE_SIZE);		}	return;}/*******************************************************************************************************************************/static void ospf_display_summary_links_advertisement (OSPF_SUMMARY_LINK_ADVERTISEMENT_HEADER *sptr_summary_links_advertisement_header){	ULONG network_mask;	char print_buffer[PRINT_BUFFER_SIZE];	ULONG tos0_metric;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_summary_links_advertisement\r\n");	network_mask = sptr_summary_links_advertisement_header->network_mask;	network_mask = net_to_host_long (network_mask);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, network_mask);	tos0_metric = sptr_summary_links_advertisement_header->tos0_metric;	tos0_metric = net_to_host_long (tos0_metric);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- Summary Advertisement Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         network mask = %s, tos0_metric = %d\r\n", print_buffer, tos0_metric);	return;}/*******************************************************************************************************************************/#if defined (__NSSA__)static void ospf_display_type_7_links_advertisement (OSPF_TYPE_7_LINK_ADVERTISEMENT_HEADER *sptr_type_7_links_advertisement_header){	ULONG network_mask;	char print_buffer[PRINT_BUFFER_SIZE];	ULONG tos0_metric;	ULONG tos0_forwarding_address;	char print_buffer_1[PRINT_BUFFER_SIZE];	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_type_7_links_advertisement\r\n");	network_mask = net_to_host_long (sptr_type_7_links_advertisement_header->network_mask);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, network_mask);	tos0_metric = net_to_host_long (sptr_type_7_links_advertisement_header->tos0_metric);	tos0_forwarding_address = net_to_host_long (sptr_type_7_links_advertisement_header->tos0_forwarding_address);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, tos0_forwarding_address);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- NSSA Type-7 Advertisement Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         network mask = %s, tos0_metric = %d, tos0_forwarding_address = %s\r\n", print_buffer,		tos0_metric, print_buffer_1);	return;}#endif /*__NSSA__*//*******************************************************************************************************************************/static void ospf_display_external_links_advertisement (OSPF_EXTERNAL_LINK_ADVERTISEMENT_HEADER *sptr_external_links_advertisement_header){	ULONG network_mask;	char print_buffer[PRINT_BUFFER_SIZE];	ULONG tos0_metric;	ULONG tos0_forwarding_address;	char print_buffer_1[PRINT_BUFFER_SIZE];	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_external_links_advertisement\r\n");	network_mask = net_to_host_long (sptr_external_links_advertisement_header->network_mask);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, network_mask);	tos0_metric = net_to_host_long (sptr_external_links_advertisement_header->tos0_metric);	tos0_forwarding_address = net_to_host_long (sptr_external_links_advertisement_header->tos0_forwarding_address);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, tos0_forwarding_address);	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "      --- External Advertisement Details ---\r\n");	OSPF_PRINTF_PACKET (OSPF_PACKET_PRINTF, "         network mask = %s, tos0_metric = %d, tos0_forwarding_address = %s\r\n", print_buffer,		tos0_metric, print_buffer_1);	return;}/*******************************************************************************************************************************/static void ospf_display_ls_acknowledgement_packet (OSPF_LS_ACKNOWLEDGEMENT_HEADER *sptr_ls_acknowledgement_packet,USHORT length_of_packet){	OSPF_LS_HEADER *sptr_ls_header;	ULONG size_of_acknowledgement_optional_fields;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_ls_acknowledgement_packet\r\n");	sptr_ls_header = &(sptr_ls_acknowledgement_packet->ls_advertisement_header);	for (size_of_acknowledgement_optional_fields = (ULONG) length_of_packet - OSPF_PACKET_SIZE;		size_of_acknowledgement_optional_fields > 0x00000000L; size_of_acknowledgement_optional_fields -= OSPF_LS_HEADER_SIZE)		{		ospf_display_ls_header (sptr_ls_header);		sptr_ls_header = (OSPF_LS_HEADER *) ((ULONG) sptr_ls_header + OSPF_LS_HEADER_SIZE);		}	return;}/*******************************************************************************************************************************/static void ospf_display_ls_header (OSPF_LS_HEADER *sptr_ls_header){	USHORT age;	ULONG link_state_id;	char print_buffer[PRINT_BUFFER_SIZE];	ULONG advertising_router;	char print_buffer_1[PRINT_BUFFER_SIZE];	seq_t sequence_number;	USHORT length;	BYTE_ENUM (OSPF_LS_TYPE) type;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_display_ls_header\r\n");	age = sptr_ls_header->age;	age = net_to_host_short (age);	type = sptr_ls_header->type;	if (type > OSPF_LS_MAX)		{		type = OSPF_LS_MAX;		}	link_state_id = sptr_ls_header->id;	link_state_id = net_to_host_long (link_state_id);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, link_state_id);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -