?? ospf_show_routines.c
字號:
/* ospf_show_routines.c - OSPF show routines *//* Copyright 2000-2003 Wind River Systems, Inc. *//*modification history--------------------02b,22may03,kkz SPR 88613 - New show routine for Area Address Ranges02c,14may03,agi Changed RWOS semaphores to vxWorks semaphores02b,22apr03,ram SPR#76812 Added turn off prologue debbugging when all debugging is off02a,17feb02,ram SPR 81808 Added OSPF memory partition support01a,08oct01,jkw Added new show routines for debugging OSPF.*//*DESCRIPTIONThis file contains display routines for debugging OSPF.*/#include <ctype.h>#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ */static void ospf_ulong_to_dotted_decimal(ULONG, char*);/**********************************************************************************************************************************//* Function: ospf_ulong_to_dotted_decimal Input: ULONG - ulong_to_convert char * - dotted_address RETURNS: None Description: This function converts a ulong network number to an ip addr in dotted decimal notation.*/static void ospf_ulong_to_dotted_decimal (ULONG ulong_to_convert, char *dotted_address){ struct in_addr net_address; ULONG network_address = 0x00000000; network_address = ulong_to_convert; network_address = host_to_net_long(network_address); net_address.s_addr = network_address; inet_ntoa_b (net_address, (char *)dotted_address); return;}/******************************************************************************** ospfEnableDebug - OSPF enable debug** This function sets the debug level of printfs in ospf.** RETURNS: OK on success, ERROR is commands are not valid*/STATUS ospfEnableDebug ( char * commands ) { char *p_token; char *tokenizer; int pass = 0, error = 0; int result; semTake (ospf_global_mutex, WAIT_FOREVER); while (*commands != '\0') { pass = 0; p_token = commands; while (*p_token == ' ' || *p_token == ',') { p_token++; } tokenizer = p_token; while (*tokenizer != ' ' && *tokenizer != ',' && *tokenizer !='\0') { *tokenizer = toupper( *tokenizer ); tokenizer++; } if (*tokenizer == '\0') { commands = tokenizer; } else { *tokenizer = '\0'; commands = tokenizer + 1; } result = strcmp(p_token,"INTERFACE"); if (!result) pass = 1; ospf.printing_enabled = TRUE; ospf.interface_printing_enabled = TRUE; } result = strcmp(p_token,"NEIGHBOR"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.neighbor_printing_enabled = TRUE; } result = strcmp(p_token,"MEMORY"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.memory_printing_enabled = TRUE; } result = strcmp(p_token,"ALARM"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.alarm_printing_enabled = TRUE; } result = strcmp(p_token,"SNMP"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.snmp_printing_enabled = TRUE; } result = strcmp(p_token,"PACKET"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.packet_printing_enabled = TRUE; } result = strcmp(p_token,"ROUTING"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.routing_table_printing_enabled = TRUE; } result = strcmp(p_token,"DEBUG"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.debug_printing_enabled = TRUE; } result = strcmp(p_token,"RTM"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.rtm_printing_enabled = TRUE; } result = strcmp(p_token,"DB_OVERFLOW"); if (!result) { pass = 1; ospf.db_overflow_printing_enabled = TRUE; } result = strcmp(p_token,"SEARCH"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.search_printing_enabled = TRUE; } result = strcmp(p_token,"PROLOGUE"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.prologue_printing_enabled = TRUE; } result = strcmp(p_token,"ALL"); if (!result) { pass = 1; ospf.printing_enabled = TRUE; ospf.interface_printing_enabled = TRUE; ospf.neighbor_printing_enabled = TRUE; ospf.memory_printing_enabled = TRUE; ospf.alarm_printing_enabled = TRUE; ospf.snmp_printing_enabled = TRUE; ospf.packet_printing_enabled = TRUE; ospf.routing_table_printing_enabled = TRUE; ospf.debug_printing_enabled = TRUE; ospf.rtm_printing_enabled = TRUE; ospf.db_overflow_printing_enabled = TRUE; ospf.search_printing_enabled = TRUE; ospf.prologue_printing_enabled = TRUE; } if (!pass) { if (!error) { error = 1; printf("Error : Unknown parameter "); } printf(" %s ",p_token); } } semGive (ospf_global_mutex); if (error) { printf(" \n "); } if (!pass) { printf("USAGE: ospfEnableDebug(\"KEYWORD1,KEYWORD2,KEYWORD3...\") \n\n KEYWORD(S): INTERFACE, NEIGHBOR, MEMORY, ALARM, SNMP, PACKET, ROUTING, DEBUG, RTM, DB_OVERFLOW, ALL\n"); return ERROR; } return (OK); }/**********************************************************************************************************************************//* Function: ospfDisableDebug Input: char * - commands RETURNS: None Description: This function disables the debug level of printfs in ospf.*/STATUS ospfDisableDebug ( char * commands ) { char *p_token; char *tokenizer; int pass = 0, error = 0; int result; semTake (ospf_global_mutex, WAIT_FOREVER); while (*commands != '\0') { pass = 0; p_token = commands; while (*p_token == ' ' || *p_token == ',') { p_token++; } tokenizer = p_token; while (*tokenizer != ' ' && *tokenizer != ',' && *tokenizer !='\0') { *tokenizer = toupper( *tokenizer ); tokenizer++; } if (*tokenizer == '\0') { commands = tokenizer; } else { *tokenizer = '\0'; commands = tokenizer + 1; } result = strcmp(p_token,"INTERFACE"); if (!result) { pass = 1; ospf.interface_printing_enabled = FALSE; } result = strcmp(p_token,"NEIGHBOR"); if (!result) { pass = 1; ospf.neighbor_printing_enabled = FALSE; } result = strcmp(p_token,"MEMORY"); if (!result) { pass = 1; ospf.memory_printing_enabled = FALSE; } result = strcmp(p_token,"ALARM"); if (!result) { pass = 1; ospf.alarm_printing_enabled = FALSE; } result = strcmp(p_token,"SNMP"); if (!result) { pass = 1; ospf.snmp_printing_enabled = FALSE; } result = strcmp(p_token,"PACKET"); if (!result) { pass = 1; ospf.packet_printing_enabled = FALSE; } result = strcmp(p_token,"ROUTING"); if (!result) { pass = 1; ospf.routing_table_printing_enabled = FALSE; } result = strcmp(p_token,"DEBUG"); if (!result) { pass = 1; ospf.debug_printing_enabled = FALSE; } result = strcmp(p_token,"RTM"); if (!result) { pass = 1; ospf.rtm_printing_enabled = FALSE; } result = strcmp(p_token,"DB_OVERFLOW"); if (!result) { pass = 1; ospf.db_overflow_printing_enabled = FALSE; } result = strcmp(p_token,"SEARCH"); if (!result) { pass = 1; ospf.search_printing_enabled = FALSE; } result = strcmp(p_token,"PROLOGUE"); if (!result) { pass = 1; ospf.prologue_printing_enabled = FALSE; } result = strcmp(p_token,"ALL"); if (!result) { pass = 1; ospf.printing_enabled = FALSE; ospf.interface_printing_enabled = FALSE; ospf.neighbor_printing_enabled = FALSE; ospf.memory_printing_enabled = FALSE; ospf.alarm_printing_enabled = FALSE; ospf.snmp_printing_enabled = FALSE; ospf.packet_printing_enabled = FALSE; ospf.routing_table_printing_enabled = FALSE; ospf.debug_printing_enabled = FALSE; ospf.rtm_printing_enabled = FALSE; ospf.db_overflow_printing_enabled = FALSE; /* SPR#76812 */ ospf.prologue_printing_enabled = FALSE; } if (!pass) { if (!error) { error = 1; printf("Error : Unknown parameter "); } printf(" %s ",p_token); } } semGive (ospf_global_mutex); if (error) { printf(" \n "); } if (!pass) { printf("USAGE: ospfDisableDebug(\"KEYWORD1,KEYWORD2,KEYWORD3...\") \n\n KEYWORD(S): INTERFACE, NEIGHBOR, MEMORY, ALARM, SNMP, PACKET, ROUTING, DEBUG, RTM, DB_OVERFLOW, ALL\n"); return ERROR; } return OK; }/**********************************************************************************************************************************//* Function: ospfShowDebug Input: None RETURNS: bool Description: This function displays which show routines are on.*/STATUS ospfShowDebug(){ char dotted_notation[32]; semTake (ospf_global_mutex, WAIT_FOREVER); ospf_ulong_to_dotted_decimal (ospf.router_id, dotted_notation); printf("OSPF Identifier = %s\n",dotted_notation); if (ospf.printing_enabled) { printf("Printing - on\n"); } if (ospf.interface_printing_enabled) { printf("Interface Printing - on\n"); } if (ospf.neighbor_printing_enabled) { printf("Neighbor Printing - on\n"); } if (ospf.memory_printing_enabled) { printf("Memory Printing - on\n"); } if (ospf.alarm_printing_enabled) { printf("Alarm Printing - on\n"); } if (ospf.snmp_printing_enabled) { printf("SNMP Printing - on\n"); } if (ospf.packet_printing_enabled) { printf("Packet Printing - on\n"); } if (ospf.routing_table_printing_enabled) { printf("Routing Table Printing - on\n"); } if (ospf.routing_table_printing_enabled) { printf("Routing Table Printing - on\n"); } if (ospf.debug_printing_enabled) { printf("Debug Printing - on\n"); } if (ospf.rtm_printing_enabled) { printf("RTM Printing - on\n"); } if (ospf.db_overflow_printing_enabled) { printf("DB Overflow Printing - on\n"); } if (ospf.search_printing_enabled) { printf("SEARCH Printing - on\n"); } if (ospf.prologue_printing_enabled) { printf("PROLOGUE Printing - on\n"); } semGive (ospf_global_mutex); return OK; }/* SPR 81808 -- Begin *//**********************************************************************************************************************************//* Function: ospfShowDebug Input: Option: 0 = statistic only, 1 = statistic and list, RETURNS: bool Description: This function displays which show routines are on.*/STATUS ospfShowMemPartition(int option) { if((option != 0) && (option != 1)) { return ERROR; } return (OSPF_PARTMEM_SHOW (option)); }/* SPR 81808 -- End *//* SPR 88613 Begin */STATUS ospfShowAreaAddressRange(){ OSPF_AREA_ENTRY * sptr_area; OSPF_ADDRESS_RANGE_LIST_ENTRY *sptr_addr_range; char print_buffer[PRINT_BUFFER_SIZE]; printf("Area id Network Mask Advertise Active Cost\n"); /* for each area */ for (sptr_area = ospf.sptr_area_list; sptr_area != NULL; sptr_area = sptr_area->sptr_forward_link) { /* for each address range */ for (sptr_addr_range = sptr_area->sptr_address_ranges; sptr_addr_range != NULL; sptr_addr_range = sptr_addr_range->sptr_forward_link) { OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_addr_range->area_id); printf("%-17s", print_buffer); OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_addr_range->network); printf("%-17s", print_buffer); OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_addr_range->mask); printf("%-17s", print_buffer); printf("%-11s", (sptr_addr_range->advertise ? "TRUE" : "FALSE") ); printf("%-8s", (sptr_addr_range->active ? "TRUE" : "FALSE")); printf("%-10ld\n", sptr_addr_range->cost); } } return OK;}/*SPR 88613 End *//* This function is to include the ospf_show_routine functions when the project is built. This function is called by ospfInitialize*/void ospf_show_routines_stub() { return; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -