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

📄 ospf_show_routines.c

📁 vxworks下ospf协议栈
💻 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.printing_enabled = TRUE;			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 + -