亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ospf_interface.c

?? vxworks下ospf協議棧
?? C
字號:
/* ospf_interface.c - used for initializing interface *//* Copyright 1998 - 2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------    02d,15may03,asr    Changes to make OSPF virtual stack compatible02c,14may03,agi    Changed RWOS semaphores to vxWorks semaphores02b,19nov02,mwv    Merge TMS code SPR 8428402a,08oct02,agi    Fixed compiler warnings01r,24jun02,kc     Changed check_if_status() to return boolean (instead of int).01q,06feb02,bt     look for changes in comment  __UNNUMBERED_LINK__ver1.001p,26sep00,reshma Added WindRiver CopyRight01o,25sep00,reshma RFC-1587 implementation for OSPF NSSA Option, also tested against ANVL.01n,07jul00,reshma Unix compatibility related changes.01m,04apr00,reshma Added some MIB support (Read only). Passed all important ANVL                   OSPF tests.01l,23dec99,reshma Compatibility with VxWorks-IP and VxWorks RTM-interface01k,28dec98,jack   Compiled and added some comments01j,11nov98,jack   Config changes, linted and big endian changes01i,30oct98,jack   Incorporate changes for compilation on Vxworks01h,23aug98,jack   ANVL tested OSPF with PATRICIA tree route table and no recursion01g,10aug98,jack   PATRICIA Route Table Based OSPF Code Base01f,04jun98,jack   Integration with RTM and BGP01e,24apr98,jack   RTM changes01d,10jul97,cindy  Pre-release v1.52b01c,02oct97,cindy  Release Version 1.5201b,22oct96,cindy  Release Version 1.5001a,05jun96,cindy  First Beta Release*//*DESCRIPTIONospf_interface.c is used for initializing and bringing up interfaces in OSPF.  This file checksif the interface is up or down.This file is used whenever an interface needs to be brought up or initialized.*/#include <stdio.h>#include <stdarg.h>#include <vxWorks.h>#include <tickLib.h>#include <netLib.h>#include <net/systm.h>#include <net/mbuf.h>#include <net/domain.h>#include <net/protosw.h>#include <sys/socket.h>#include <errno.h>#include <net/if.h>#include <net/route.h>#include <netinet/in.h>#include <netinet/in_pcb.h>#include <netinet/in_systm.h>#include <netinet/in_var.h>#include <netinet/ip.h>#include <netinet/ip_var.h>#include <netinet/ip_icmp.h>#include	"ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//******************************************************************************/static void ospf_initialize_interface_time_counters (OSPF_INTERFACE *sptr_interface);/******************************************************************************//*************************************************************************** ospf_bring_up_interface - bring up an interface** This routine will bring up an interface and execute* the associated interface state machine.** <sptr_interface> OSPF interface** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/void ospf_bring_up_interface (OSPF_INTERFACE *sptr_interface){	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_bring_up_interface\r\n");	ospf_initialize_interface_time_counters (sptr_interface);	sptr_interface->sptr_head_of_delayed_acknowledgement_list = NULL;	sptr_interface->number_of_acknowledgements_on_delayed_acknowledgement_list = 0x00000000L;	ospf_execute_interface_state_machine (OSPF_INTERFACE_UP, OSPF_INTERFACE_IS_DOWN, sptr_interface);	ospf_generate_network_and_router_link_state_advertisements (sptr_interface);	return;}/*************************************************************************** ospf_initialize_interface - initialize an interface** This routine will initialize the variables associated* with an interface.** <sptr_interface> OSPF interface** <dynamic> Boolean to tell whether or not dynamically configured** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/void ospf_initialize_interface (OSPF_INTERFACE *sptr_interface, BOOL dynamic){	ULONG address =0;	char print_buffer[PRINT_BUFFER_SIZE];	char print_buffer_1[PRINT_BUFFER_SIZE];	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_initialize_interface\r\n");	if  (sptr_interface == NULL)		return;	if (sptr_interface->type == OSPF_VIRTUAL_LINK)		{		/* Virtual Link - no interface */		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_interface->virtual_neighbor_rid);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, sptr_interface->sptr_transit_area->area_id);		OSPF_PRINTF_INTERFACE (OSPF_INTERFACE_PRINTF, "OSPF: initializing virtual interface to neighbor %s via transit area %s\r\n",			print_buffer, print_buffer_1);		}	else		{		/* Non-virtual interface */		address = sptr_interface->address;		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, address);		OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, sptr_interface->sptr_area->area_id);		OSPF_PRINTF_INTERFACE (OSPF_INTERFACE_PRINTF, "OSPF: initializing interface %s in area %s\r\n",			print_buffer, print_buffer_1);		switch (sptr_interface->type)			{			case OSPF_POINT_TO_POINT:			case OSPF_BROADCAST:				{				if ((ospf.ip_multicast == TRUE) && (sptr_interface->flags._bit.multicast == TRUE))					{					/* Indicate we joined the group */					address |= OSPF_IF_MULTICAST_ALLSPF;					}				break;				}			case OSPF_NBMA:				{				break;				}			default:				{				break;				}			}        /* execute state machine to bring up the interface if the interface UP flag         * is set         */        if ((check_if_status( sptr_interface->ifnet_index )) == true )            {            ospf_execute_interface_state_machine (OSPF_INTERFACE_UP,                                                   OSPF_INTERFACE_IS_DOWN,                                                   sptr_interface);            }		}	ospf_initialize_interface_time_counters (sptr_interface);	sptr_interface->sptr_head_of_delayed_acknowledgement_list = NULL;	sptr_interface->number_of_acknowledgements_on_delayed_acknowledgement_list = 0x00000000L;	sptr_interface->designated_router.address = 0x00000000L;	sptr_interface->designated_router.id = 0x00000000L;	sptr_interface->backup_designated_router.address = 0x00000000L;	sptr_interface->backup_designated_router.id = 0x00000000L;	return;}/*************************************************************************** ospf_initialize_interface_time_counters - initialize interface counters** This routine will initialize the counters associated* with an interface.** <sptr_interface> OSPF interface** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/static void ospf_initialize_interface_time_counters (OSPF_INTERFACE *sptr_interface){	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_initialize_interface_time_counters\r\n");	sptr_interface->periodic_hello_time_counter = 0x00000000L;	sptr_interface->hello_timer_enabled = TRUE;	sptr_interface->periodic_retransmit_time_counter = 0x00000000L;	sptr_interface->retransmit_timer_enabled = TRUE;	sptr_interface->delayed_acknowledgement_timer_enabled = FALSE;	return;}/*************************************************************************** ospf_is_if_up - checks if the interface is up** This routine will check IP if the interface is up** <ip_address> Interface identifier ** RETURNS: TRUE or FALSE** ERRNO: N/A** NOMANUAL*/enum BOOLEAN ospf_is_if_up (ULONG ip_address){    struct ifnet *sptr_ifnet;	struct ifaddr* sptr_ifaddr;	struct in_ifaddr * sptr_interface_address;	int s;	/* asr: set the virtual stack context */#if defined (VIRTUAL_STACK)    virtualStackNumTaskIdSet (ospf.ospf_vsid);#endif /* VIRTUAL_STACK */	semGive  (ospf_global_mutex );	sptr_ifnet = NULL;	sptr_ifaddr = NULL;	s = splimp();#if defined (VIRTUAL_STACK)    for (sptr_ifnet = _ifnet; sptr_ifnet; sptr_ifnet = sptr_ifnet->if_next)#else    for (sptr_ifnet = ifnet; sptr_ifnet; sptr_ifnet = sptr_ifnet->if_next)#endif /* VIRTUAL_STACK */		{		for (sptr_ifaddr = sptr_ifnet->if_addrlist; sptr_ifaddr; sptr_ifaddr = sptr_ifaddr->ifa_next)				{				IFP_TO_IA (sptr_ifnet, sptr_interface_address);				if (sptr_interface_address == NULL)					{					continue;					}				/* check the sin family type for Internet */				if (sptr_interface_address->ia_addr.sin_family != AF_INET)					{					continue;					}				if (sptr_interface_address->ia_addr.sin_addr.s_addr == ip_address)					{					if (sptr_ifnet->if_flags &IFF_UP)						{						splx(s);						semTake  (ospf_global_mutex , WAIT_FOREVER);  							return (TRUE);						}					else						OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: INTERFACE DOWN with address (HEX) %lx\r\n", ip_address);					}			} /* for */		}/*for */	splx(s);	semTake  (ospf_global_mutex , WAIT_FOREVER);  		return (FALSE);}#if defined (__UNNUMBERED_LINK__)	/* __UNNUMBERED_LINK__ver1.0 */ /*************************************************************************** this routine will scan the I/F table to see if the the unnumbered interfaces* exists and it's also UP ***************************************************************************//*************************************************************************** ospf_is_if_unnumbered_up - checks if the unnumbered interface is up** This routine will check IP if the interface is up** <sptr_interface> OSPF interface** RETURNS: TRUE or FALSE** ERRNO: N/A** NOMANUAL*/enum BOOLEAN ospf_is_if_unnumbered_up(OSPF_INTERFACE *sptr_interface){        struct ifnet 		*sptr_ifnet;	struct ifaddr 		*sptr_ifaddr;	struct in_addr ip_address;	ULONG interface_address = 0x00000000;	sptr_ifnet = NULL;	sptr_ifaddr = NULL;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_is_if_unnumbered_up\r\n");	interface_address = sptr_interface->unnumbered_dest_ip;	/* check to see if this interface is actually an unnumbered interface */	if(interface_address == 0)		{		OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: PORT%d is not an UNNUMBERED Interface!!\n",sptr_interface->port_number);		return(false);		}	else	{	interface_address = host_to_net_long(interface_address);    ip_address.s_addr = interface_address;	}		/* with the destination ip find the corresponding IF from the IP stack */	sptr_ifnet = dstaddr_to_ifp(ip_address);	if ((sptr_ifnet != NULL) && (sptr_ifnet->if_flags & IFF_UP))	{		return (true);	}	else	{		OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Unnumbered PORT%s is DOWN!!\r\n", sptr_interface->port_number);    	return(false);	}}#endif	/* __UNNUMBERED_LINK__ver1.0 *//**************************************************************************************This routine scans IF list and returns 1 if the IF is up and 0 if IF is down.***************************************************************************************//*************************************************************************** check_if_status - checks interface status** This routine will check IP for the interfaces status of * being up or down.** <if_index> Interface index** RETURNS: INT** ERRNO: N/A** NOMANUAL*/enum BOOLEAN check_if_status( unsigned short if_index ){	struct ifnet *sptr_ifnet;		int s;	sptr_ifnet = NULL;#if defined (VIRTUAL_STACK)	virtualStackNumTaskIdSet (ospf.ospf_vsid);#endif /* VIRTUAL_STACK */	s = splimp ();#if defined (VIRTUAL_STACK)    for (sptr_ifnet = _ifnet; sptr_ifnet; sptr_ifnet = sptr_ifnet->if_next)#else    for (sptr_ifnet = ifnet; sptr_ifnet; sptr_ifnet = sptr_ifnet->if_next)#endif /* VIRTUAL_STACK */		{		if( sptr_ifnet->if_index == if_index )			{			if( sptr_ifnet->if_flags & IFF_UP)				{				splx (s);				return(true);				}							else				{				splx (s);				return(false);				}			}		}	splx (s);	return(false);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色免费看| 日韩午夜精品电影| 国产精品久久福利| 欧美色图第一页| 国产精品一区二区久久不卡| 亚洲综合在线视频| 久久久久国产一区二区三区四区 | 午夜精品久久久久久不卡8050| 日韩欧美精品三级| 91视频观看免费| 国产福利不卡视频| 蜜臀久久久99精品久久久久久| 亚洲精品免费在线播放| 久久精品亚洲精品国产欧美kt∨| 欧美日韩在线精品一区二区三区激情| 国产电影一区在线| 久久国产三级精品| 亚洲444eee在线观看| 亚洲天堂免费看| 国产精品欧美一区二区三区| 欧美电视剧在线观看完整版| 欧美一级欧美三级| 欧美特级限制片免费在线观看| www.在线成人| 成人精品一区二区三区中文字幕| 狠狠色丁香久久婷婷综| 蜜桃一区二区三区在线观看| 日韩影视精彩在线| 亚洲高清免费视频| 亚洲精品免费在线观看| 国产喂奶挤奶一区二区三区| 精品久久人人做人人爽| 欧美一区二区三区在线电影| 欧美放荡的少妇| 欧美日韩精品一区二区三区四区 | 久久99精品久久久久婷婷| 视频一区二区国产| 丝袜脚交一区二区| 亚洲午夜激情网页| 亚洲国产三级在线| 亚洲国产一区在线观看| 亚洲一卡二卡三卡四卡五卡| 亚洲最新视频在线播放| 亚瑟在线精品视频| 日韩精品一二区| 免费一级片91| 国产在线精品一区二区夜色| 国产中文字幕精品| 国产福利91精品一区| 成人国产一区二区三区精品| av网站免费线看精品| av激情成人网| 一本久久a久久精品亚洲| 91福利国产精品| 欧美图区在线视频| 欧美性生活久久| 91精品国产入口| 精品国产精品网麻豆系列| 26uuu另类欧美亚洲曰本| 国产农村妇女毛片精品久久麻豆| 欧美激情综合五月色丁香 | 日本一区二区三区免费乱视频| 国产欧美日韩在线看| 中文字幕一区免费在线观看| 亚洲美女偷拍久久| 视频一区视频二区中文字幕| 久久精品72免费观看| 国产成人综合网| 日本韩国欧美一区二区三区| 欧美日韩久久久| 日韩免费视频线观看| 国产调教视频一区| 亚洲永久免费av| 国产一区二区免费视频| 成熟亚洲日本毛茸茸凸凹| 色哟哟亚洲精品| 精品捆绑美女sm三区| 国产精品素人视频| 中文字幕中文在线不卡住| 亚洲午夜激情av| 国产一本一道久久香蕉| av一区二区三区| 91精品一区二区三区久久久久久| 久久久99精品免费观看| 亚洲综合激情小说| 国产一区二区三区精品视频| 欧美性极品少妇| 国产日韩亚洲欧美综合| 亚洲国产一区二区视频| 风流少妇一区二区| 日韩一级欧美一级| 亚洲欧美欧美一区二区三区| 蜜臀av一区二区| 色菇凉天天综合网| 久久久99久久精品欧美| 婷婷综合另类小说色区| 成人午夜av电影| 日韩欧美亚洲国产另类| 亚洲免费观看视频| 国产成人免费视频一区| 日韩欧美资源站| 一区二区在线免费| 处破女av一区二区| 久久综合一区二区| 日韩综合在线视频| 91高清视频在线| 中文字幕视频一区| 国内精品不卡在线| 日韩久久久精品| 午夜精品久久久久久久久 | 精品免费国产一区二区三区四区| 一区二区三区国产| 波多野结衣中文一区| 精品国产伦一区二区三区免费| 亚洲va韩国va欧美va精品| 91麻豆swag| 欧美国产1区2区| 国产永久精品大片wwwapp| 欧美一区二区三区视频在线观看| 亚洲成人资源在线| 91免费观看国产| 中文字幕一区二区三区四区不卡| 丁香六月久久综合狠狠色| 亚洲精品一区在线观看| 麻豆精品蜜桃视频网站| 日韩一区二区三区电影在线观看| 香蕉乱码成人久久天堂爱免费| 色综合视频一区二区三区高清| 成人免费在线观看入口| 99久久99精品久久久久久 | 一区二区免费在线| 色一区在线观看| 亚洲精品国产a| 欧美无乱码久久久免费午夜一区| 一区二区三区欧美久久| 一本一本久久a久久精品综合麻豆| 最近中文字幕一区二区三区| 91女人视频在线观看| 国产精品毛片大码女人| 97se亚洲国产综合在线| 中文字幕综合网| 欧美在线影院一区二区| 亚洲444eee在线观看| 7777精品久久久大香线蕉| 久久国产精品无码网站| 欧美成人a在线| 国产一区二区电影| 国产三级一区二区| 91在线观看视频| 亚洲一区电影777| 日韩手机在线导航| 国产在线观看一区二区| 中文字幕中文在线不卡住| 日本久久精品电影| 午夜精品久久久| www国产精品av| 99国产精品国产精品毛片| 一区二区三区四区蜜桃| 欧洲在线/亚洲| 麻豆国产精品一区二区三区| 国产欧美日韩激情| 色哟哟欧美精品| 美国三级日本三级久久99| 国产午夜精品一区二区三区四区| 成人激情免费电影网址| 亚洲综合色视频| 欧美精品一区二区三区在线 | 日韩免费一区二区| 丁香亚洲综合激情啪啪综合| 一区二区三区精密机械公司| 欧美一区二区三区四区高清| 国产经典欧美精品| 亚洲综合色丁香婷婷六月图片| 日韩情涩欧美日韩视频| 成年人国产精品| 午夜精品一区二区三区免费视频| 久久久久高清精品| 在线观看欧美黄色| 韩日欧美一区二区三区| 一区二区欧美国产| 久久精品日产第一区二区三区高清版 | 国产午夜精品一区二区三区视频 | 亚洲精品成人精品456| 欧美一级搡bbbb搡bbbb| 成人免费av资源| 亚洲成人av中文| 中文字幕第一页久久| 91精品国产综合久久婷婷香蕉 | 久久精品网站免费观看| 欧洲精品一区二区| 国产一区999| 婷婷久久综合九色综合伊人色| 久久久综合网站| 欧美三级资源在线| 成人综合婷婷国产精品久久蜜臀| 偷窥国产亚洲免费视频| 亚洲嫩草精品久久| 久久蜜桃一区二区| 日韩视频免费观看高清完整版在线观看| 不卡视频免费播放|