?? ospf_print_utilities.c
字號:
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 + -