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

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

?? ospf_designated_router_election.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ospf_designated_router_election.c - Executes the designated router election process *//* Copyright 1998 - 2002 Wind River Systems, Inc. *//*modification history-------------------- 18,30may03,htm			    Fix SPR 88272, memcmp was failing due to sizeof(OSPF_DESIGNATED_ROUTER_NODE)                             returns 16 bytes instead of 14 bytes (the actual size). 17,11january02,jkw			Fix TSR 72091, neighbors not being added. 16,26september00,reshma	Added WindRiver CopyRight 15,25september00,reshma	RFC-1587 implementation for OSPF NSSA Option, also tested against ANVL. 14,07july00,reshma			Unix compatibility related changes. 13,04april00,reshma		Added some MIB support (Read only).Passed all important ANVL OSPF tests. 12,23december99,reshma		Compatibility with VxWorks-IP and VxWorks RTM-interface 11,28december98,jack		Compiled and added some comments 10,11november98,jack		Config changes, linted and big endian changes 09,30october98,jack		Incorporate changes for compilation on Vxworks 08,23august98,jack			ANVL tested OSPF with PATRICIA tree route table and no recursion 07,10august98,jack			PATRICIA Route Table Based OSPF Code Base 06,04june98,jack			Integration with RTM and BGP 05,24april98,jack			RTM changes 04,10july97,cindy			Pre-release v1.52b 03,02october97,cindy		Release Version 1.52 02,22october96,cindy		Release Version 1.50 01,05june96,cindy			First Beta Release*//*DESCRIPTIONospf_designated_router_election.c is used for selecting the designated and backup designated router.This file is used whenever OSPF comes up on a broadcast or NBMA network.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//*******************************************************************************************************************************/static void ospf_calculate_backup_designated_router  (OSPF_INTERFACE *sptr_interface);static void ospf_calculate_designated_router (OSPF_INTERFACE *sptr_interface);static void ospf_select_best_router (OSPF_DESIGNATED_ROUTER_NODE *sptr_candidate_1, OSPF_NEIGHBOR *sptr_candidate_2);static void ospf_check_if_dr_is_down_and_assign_bdr_as_dr (OSPF_INTERFACE *sptr_interface);/****************************************************************************************//* section 9.4 of OSPF specification *//**************************************************************************************** ospf_run_designated_router_election - calculates the designated router and backup designated router** This routine calculates the designated router and the backup designated router.* This routine determines the designated router by comparing the router's interface* priority, current designated router and backup designated router with its * neighbors and their current priority, designated router and backup designated router.** <sptr_interface> OSPF interface ** RETURNS: 	N/A** ERRNO: N/A** NOMANUAL*/void ospf_run_designated_router_election (OSPF_INTERFACE *sptr_interface){	enum OSPF_INTERFACE_STATE old_state;	OSPF_NEIGHBOR *sptr_neighbor = NULL;	OSPF_NEIGHBOR *sptr_next_neighbor = NULL;	OSPF_DESIGNATED_ROUTER_NODE old_designated_router;	OSPF_DESIGNATED_ROUTER_NODE old_backup_designated_router;	char print_buffer[PRINT_BUFFER_SIZE];	char print_buffer_1[PRINT_BUFFER_SIZE];	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_run_designated_router_election\r\n");	old_state = sptr_interface->state;	memcpy ((void *) &old_designated_router, (const void *) &sptr_interface->designated_router,     /* step (1) */		(size_t) sizeof (OSPF_DESIGNATED_ROUTER_NODE));	memcpy ((void *) &old_backup_designated_router, (const void *) &sptr_interface->backup_designated_router,		(size_t) sizeof (OSPF_DESIGNATED_ROUTER_NODE));    ospf_check_if_dr_is_down_and_assign_bdr_as_dr (sptr_interface);	ospf_calculate_backup_designated_router (sptr_interface); 											/* step (2) */	ospf_calculate_designated_router (sptr_interface);													/* step (3) */	if (((old_designated_router.address != sptr_interface->designated_router.address) &&			/* step (4) - repeat steps (2) and (3) if necessary */		((old_designated_router.id == ospf.router_id) || (sptr_interface->designated_router.id == ospf.router_id))) ||		((old_backup_designated_router.address != sptr_interface->backup_designated_router.address) &&		((old_backup_designated_router.id == ospf.router_id) || (sptr_interface->backup_designated_router.id == ospf.router_id))))		{		ospf_calculate_backup_designated_router (sptr_interface);		ospf_calculate_designated_router (sptr_interface);		}	/*	 * Step (4) may not be carried out always. It's only assurances that a router won't declare itself as DR as well as BDR	 * But a router can declared another router to be both. In that case Step (4) is may not be carried out	 * So if DR and BDR are one and the same make the BDR NULL	 */    /* SPR 88272 - begin */    /*          memcmp is no longer needed since ospf_calculate_backup_designated_router() was modified       to prevent ospf.router_id from being both DR & BDR.     */    /*if ( memcmp ( (const void *) &(sptr_interface->designated_router), (const void *) &(sptr_interface->backup_designated_router), (size_t) sizeof (OSPF_DESIGNATED_ROUTER_NODE)) == (int) 0 )		{		memset ( (void *) (&(sptr_interface->backup_designated_router)), 0x00, (size_t) sizeof (OSPF_DESIGNATED_ROUTER_NODE) );		}*/    /* SPR 88272 - end */    /* SPR 88272 - begin */    /* Put all comparisons between (), otherwise it might fail on diab */	if ((sptr_interface->designated_router.id) == (ospf.router_id))										/* step (5) */		{		sptr_interface->state = OSPF_INTERFACE_DESIGNATED_ROUTER;										/* this router is designated router */		}	else if ((sptr_interface->backup_designated_router.id) == (ospf.router_id))		{		sptr_interface->state = OSPF_INTERFACE_BACKUP_DESIGNATED_ROUTER;									/* this router is backup designated router */		}	else		{		sptr_interface->state = OSPF_INTERFACE_DESIGNATED_ROUTER_OTHER;									/* this router is neither designated nor backup designated router */		}    /* SPR 88272 - end */	/* Removed ospf_multicast_alldesignated_router () calls from here. Joined All-SPF group already - Reshma*/	if ((sptr_interface->type == OSPF_NBMA) &&														   	/* step (6) */	    (((sptr_interface->state == OSPF_INTERFACE_DESIGNATED_ROUTER    ) && (old_state != OSPF_INTERFACE_DESIGNATED_ROUTER    )) ||	     ((sptr_interface->state == OSPF_INTERFACE_BACKUP_DESIGNATED_ROUTER) && (old_state != OSPF_INTERFACE_BACKUP_DESIGNATED_ROUTER))))		{		for (sptr_neighbor = sptr_interface->sptr_neighbor; sptr_neighbor != NULL; sptr_neighbor = sptr_next_neighbor)			{			sptr_next_neighbor = sptr_neighbor->sptr_forward_link;			if ((sptr_neighbor->priority == 0x0000) && (sptr_neighbor->state < OSPF_NEIGHBOR_2_WAY))				{				ospf_execute_neighbor_state_machine (OSPF_START, sptr_neighbor->state, sptr_interface, sptr_neighbor);				}			}		}	if ((sptr_interface->designated_router.address != old_designated_router.address) ||			   /* step (7) */	    (sptr_interface->backup_designated_router.address != old_backup_designated_router.address))		{		for (sptr_neighbor = sptr_interface->sptr_neighbor; sptr_neighbor != NULL; sptr_neighbor = sptr_next_neighbor)			{			sptr_next_neighbor = sptr_neighbor->sptr_forward_link;			if (sptr_neighbor->state >= OSPF_NEIGHBOR_2_WAY)				{				ospf_execute_neighbor_state_machine (OSPF_ADJACENCY_OK, sptr_neighbor->state, sptr_interface, sptr_neighbor);				}			}		}	if (sptr_interface->state == OSPF_INTERFACE_DESIGNATED_ROUTER)		{		OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Set build_network on interface with address (HEX)%lx  to TRUE , DR Election\r\n",sptr_interface->address);		sptr_interface->flags._bit.build_network = TRUE;		}	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_interface->designated_router.id);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, sptr_interface->designated_router.address);	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF:    elected designated router: Router ID = %s, IP interface address = %s\r\n", print_buffer, print_buffer_1);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_interface->backup_designated_router.id);	OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer_1, sptr_interface->backup_designated_router.address);	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF:    elected backup designated router: Router ID = %s, IP interface address = %s\r\n", print_buffer, print_buffer_1);	return;}/**************************************************************************************** ospf_calculate_backup_designated_router - calculates the backup designated router** This routine calculates the the backup designated router.  This routine checks if its* priority is not 0 and if any other router has declared itself as the backup designated* router.  If the interface is eligible to become the backup designated router it will* check to see if the neighbor has declared itself to be the backup designated router.* It will then determine whether or not to become the backup designated router.** <sptr_interface> OSPF interface ** RETURNS: 	N/A** ERRNO: N/A** NOMANUAL*/static void ospf_calculate_backup_designated_router (OSPF_INTERFACE *sptr_interface){	OSPF_NEIGHBOR *sptr_neighbor = NULL;	OSPF_NEIGHBOR *sptr_next_neighbor = NULL;	OSPF_DESIGNATED_ROUTER_NODE best_backup_designated_router;   	enum BOOLEAN found_a_declared_backup_designated_router;	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_calculate_backup_designated_router\r\n");	best_backup_designated_router.address = 0x00000000L;    /* SPR 88272 - begin */    /* If ospf.router_id is DR then it can't be BDR, rfc 2328 s9.4. */	if ((sptr_interface->priority == 0x0000) ||        (sptr_interface->designated_router.id == ospf.router_id))    /* SPR 88272 - end */		{		memset ((void *) &best_backup_designated_router, 0x00, (size_t) sizeof (OSPF_DESIGNATED_ROUTER_NODE));		}	else		{		best_backup_designated_router.id = ospf.router_id;		best_backup_designated_router.address = sptr_interface->address;		best_backup_designated_router.state = OSPF_NEIGHBOR_FULL;		best_backup_designated_router.priority = sptr_interface->priority;		}	found_a_declared_backup_designated_router = FALSE;	for (sptr_neighbor = sptr_interface->sptr_neighbor; sptr_neighbor != NULL; sptr_neighbor = sptr_next_neighbor)		{		sptr_next_neighbor = sptr_neighbor->sptr_forward_link;		if (sptr_neighbor->state < OSPF_NEIGHBOR_2_WAY)			{			continue;		/* skip this neighbor since it hasn't established bidirectional communication with this router */			}		if (sptr_neighbor->priority == 0x0000)			{			continue;		/* skip this neighbor since it is not eligible to become designated router */			}        if ((sptr_neighbor->designated_router == sptr_neighbor->address))    {			continue;		/* skip this neighbor since it has declared itself to be the designated router */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费视频| 在线观看不卡一区| 日韩手机在线导航| 免费成人在线网站| 精品88久久久久88久久久| 国产一区二区影院| 国产精品网站在线观看| 91麻豆国产香蕉久久精品| 亚洲精品国产第一综合99久久| 欧美专区在线观看一区| 亚洲福利视频一区| 欧美电影免费观看完整版| 国产原创一区二区三区| 国产精品免费观看视频| 色婷婷国产精品| 日本免费在线视频不卡一不卡二| 精品sm在线观看| 97se亚洲国产综合自在线不卡| 一区二区三区四区在线| 欧美喷潮久久久xxxxx| 久久成人久久爱| 中文av一区特黄| 欧美偷拍一区二区| 国产一区 二区| 亚洲综合在线五月| 精品久久久网站| 91视频观看免费| 色欧美乱欧美15图片| 五月综合激情日本mⅴ| 久久久久久久综合色一本| 色综合天天天天做夜夜夜夜做| 日本午夜精品视频在线观看| 久久久精品天堂| 欧美久久一二区| 成人免费看的视频| 日韩二区在线观看| 亚洲欧洲在线观看av| 制服视频三区第一页精品| 国产成人精品亚洲午夜麻豆| 香蕉成人啪国产精品视频综合网 | 国产成人啪免费观看软件| 中文字幕一区二区三中文字幕| 欧美另类一区二区三区| 国产成人av电影在线观看| 亚洲成人先锋电影| 国产精品动漫网站| 久久综合给合久久狠狠狠97色69| 色噜噜久久综合| 粉嫩aⅴ一区二区三区四区| 亚洲高清免费在线| 亚洲美女在线一区| 国产性天天综合网| 欧美一卡2卡3卡4卡| 91网站最新地址| 国产精品白丝jk白祙喷水网站| 天堂蜜桃一区二区三区| 亚洲三级免费观看| 中文字幕精品一区二区精品绿巨人| 91精品福利在线一区二区三区| 色先锋资源久久综合| 高清日韩电视剧大全免费| 久久国产精品区| 日韩国产欧美一区二区三区| 一区二区三区不卡在线观看 | 日本vs亚洲vs韩国一区三区二区| 亚洲视频在线一区| 欧美激情一区二区三区蜜桃视频 | 国产精品综合二区| 精品在线观看免费| 日韩不卡手机在线v区| 午夜久久电影网| 亚洲国产视频一区二区| 一区二区三区中文在线观看| 国产精品久久久久aaaa| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩欧美一区在线| 日韩午夜电影av| 日韩亚洲欧美综合| 日韩欧美区一区二| 精品国产三级a在线观看| 欧美一卡二卡三卡四卡| 日韩天堂在线观看| 精品国产凹凸成av人导航| 日韩欧美国产成人一区二区| 欧美一级久久久| 日韩欧美一区二区视频| 精品日韩99亚洲| 国产日韩v精品一区二区| 欧美激情在线一区二区| 亚洲欧洲性图库| 亚洲国产精品精华液网站| 亚洲va天堂va国产va久| 日本欧美一区二区三区乱码| 久久精品国产亚洲高清剧情介绍| 国产一区高清在线| 成人a级免费电影| 91麻豆福利精品推荐| 欧美日韩激情一区| 精品国产免费人成电影在线观看四季| 2020国产成人综合网| 国产精品狼人久久影院观看方式| 亚洲男女一区二区三区| 亚洲成人黄色影院| 国产又粗又猛又爽又黄91精品| 国产成人精品三级麻豆| 色成人在线视频| 日韩精品一区二区三区视频| 中文字幕av一区二区三区| 亚洲女人的天堂| 蜜桃av噜噜一区| 成人午夜短视频| 欧美日韩精品一区二区三区四区| 日韩一区二区三| 国产精品女人毛片| 午夜精品久久久久久久99樱桃| 国产一区二区日韩精品| 色综合色狠狠天天综合色| 欧美一区二区三区四区在线观看 | 欧美日韩国产美女| 日韩精品一区在线| 1024精品合集| 久久不见久久见中文字幕免费| 国产精品一区二区91| 色婷婷久久一区二区三区麻豆| 欧美tickle裸体挠脚心vk| 国产精品狼人久久影院观看方式| 午夜久久久久久| 成人av动漫网站| 欧美精品一二三| 国产精品不卡视频| 老司机免费视频一区二区 | 久久精品一区二区三区四区| 亚洲欧美一区二区三区极速播放| 免费一区二区视频| 欧美亚洲丝袜传媒另类| 久久精品亚洲乱码伦伦中文| 亚洲二区在线视频| eeuss国产一区二区三区| 精品久久国产老人久久综合| 亚洲综合色区另类av| 成人黄色在线看| 欧美精品一区二区三区高清aⅴ| 亚洲一区二区三区小说| 丁香六月综合激情| 日韩欧美国产系列| 香蕉成人啪国产精品视频综合网| 99久久婷婷国产综合精品| 久久―日本道色综合久久| 肉肉av福利一精品导航| 91福利社在线观看| 综合色天天鬼久久鬼色| 国产伦精品一区二区三区视频青涩| 欧美一区二区高清| 亚洲v日本v欧美v久久精品| 91一区二区三区在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 韩国女主播一区二区三区| 欧美一区二区三区免费大片 | 亚洲国产中文字幕在线视频综合| 成人免费观看av| 国产午夜精品福利| 国产精品夜夜爽| 精品国产精品网麻豆系列| 日韩av电影天堂| 91精品国产综合久久福利软件| 一区二区三区日韩精品视频| 91一区在线观看| 亚洲欧洲日韩av| 色一区在线观看| 亚洲无人区一区| 欧美日本一区二区三区| 亚洲成在人线免费| 欧美肥胖老妇做爰| 日韩电影在线一区| 制服丝袜亚洲播放| 视频一区视频二区中文字幕| 欧美性一二三区| 午夜欧美大尺度福利影院在线看 | 精品伊人久久久久7777人| 欧美精品自拍偷拍| 免费成人在线视频观看| 精品美女被调教视频大全网站| 精品一区二区在线免费观看| 久久免费看少妇高潮| 国产精品一区二区久久精品爱涩| 国产视频一区在线播放| av午夜一区麻豆| 亚洲国产成人va在线观看天堂| 这里只有精品99re| 国产毛片精品一区| 亚洲视频在线一区二区| 欧美日韩三级在线| 久久99这里只有精品| 国产欧美日韩在线| 色94色欧美sute亚洲线路二 | 99久久精品国产麻豆演员表| 一区二区三区在线观看动漫| 欧美久久久久中文字幕| 韩国在线一区二区| 亚洲日本成人在线观看|