亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久国产精品第一页| 一区二区在线免费| 色婷婷综合久久久中文字幕| 欧美激情综合网| 99精品热视频| 亚洲国产一区二区在线播放| 欧美男女性生活在线直播观看| 亚洲6080在线| 日韩网站在线看片你懂的| 国内成人自拍视频| 中文字幕av一区二区三区高| 色噜噜久久综合| 五月激情六月综合| 欧美电影免费观看高清完整版在线| 精品影视av免费| 中文字幕一区二区三区色视频| 欧美视频在线不卡| 精东粉嫩av免费一区二区三区| 国产免费久久精品| 欧美自拍丝袜亚洲| 黄一区二区三区| 一区二区三区四区在线播放 | 欧美日韩国产首页| 久热成人在线视频| 中文字幕一区二区三区av| 欧美精品第1页| 国产成人综合在线| 亚洲电影视频在线| 欧美激情中文不卡| 欧美日韩精品久久久| 国产精品一区一区三区| 亚洲国产一区二区在线播放| 国产色91在线| 337p亚洲精品色噜噜狠狠| 国产真实乱子伦精品视频| 亚洲精品日日夜夜| 久久综合色婷婷| 欧美日韩国产综合一区二区三区| 国内欧美视频一区二区| 亚洲一线二线三线久久久| 精品国产髙清在线看国产毛片| 91免费版pro下载短视频| 久久精品国产**网站演员| 亚洲人成电影网站色mp4| 精品国产伦一区二区三区观看方式| 日本高清不卡视频| 懂色av一区二区三区免费观看| 五月综合激情日本mⅴ| 亚洲丝袜制服诱惑| 2024国产精品| 在线播放国产精品二区一二区四区| 国产盗摄精品一区二区三区在线 | 亚洲成人在线免费| 成人欧美一区二区三区视频网页 | 欧美一区二区在线免费观看| www.在线成人| 国产精品1区2区| 免费人成精品欧美精品 | 午夜激情综合网| 亚洲三级小视频| 国产亚洲精久久久久久| 日韩精品最新网址| 欧美伦理电影网| 欧美日韩另类国产亚洲欧美一级| www.欧美.com| 国产精品自在欧美一区| 精品一区二区久久久| 日本不卡视频在线观看| 午夜久久久久久电影| 亚洲午夜一二三区视频| 亚洲免费观看视频| 国产精品国产三级国产有无不卡| 久久久久久久久久久久久夜| 久久久久综合网| 久久久久久久久免费| 精品蜜桃在线看| 日韩免费一区二区三区在线播放| 国产调教视频一区| 久久久美女毛片| 久久久久久电影| 久久精品亚洲国产奇米99| 久久久精品国产99久久精品芒果| 欧美精品一区二| 国产拍揄自揄精品视频麻豆| 国产精品久久久久久妇女6080| 中文字幕日本乱码精品影院| 国产精品全国免费观看高清| 中文字幕第一区第二区| 欧美激情艳妇裸体舞| 中文文精品字幕一区二区| 欧美妇女性影城| 色伊人久久综合中文字幕| 成人免费视频视频| 日韩二区三区四区| 韩国成人福利片在线播放| 日韩1区2区3区| 美女视频黄久久| 国产一区二区免费看| 东方欧美亚洲色图在线| 99re成人精品视频| 欧美三级电影一区| xf在线a精品一区二区视频网站| 久久综合狠狠综合| 国产精品嫩草久久久久| 亚洲精品成人在线| 奇米影视一区二区三区| 国产 欧美在线| 欧美在线一二三四区| 日韩丝袜美女视频| 国产精品三级av| 视频在线观看一区| 国产jizzjizz一区二区| 欧美三级在线看| 精品国产髙清在线看国产毛片| 国产精品乱人伦一区二区| 亚洲二区在线视频| 国产成人精品免费| 欧美婷婷六月丁香综合色| 久久综合丝袜日本网| 亚洲欧美日韩中文字幕一区二区三区 | 久久综合av免费| 亚洲天堂精品在线观看| 奇米精品一区二区三区在线观看 | 欧美成人猛片aaaaaaa| 欧美激情一区二区三区全黄 | 欧美一区二区三区视频在线观看 | 久久精品二区亚洲w码| 成人av在线电影| 91精品在线麻豆| 中文字幕在线观看不卡视频| 天天综合网 天天综合色| 成人国产一区二区三区精品| 91精品国产综合久久福利| 国产精品久久久久久久岛一牛影视| 日韩电影在线免费看| av在线播放一区二区三区| 亚洲精品一区二区三区四区高清 | 久久久不卡网国产精品一区| 亚洲一区二区三区四区中文字幕| 国产麻豆成人精品| 欧美一区二区网站| 亚洲一区二区高清| 99久久夜色精品国产网站| 精品国产乱码久久久久久久| 偷拍日韩校园综合在线| aaa亚洲精品| 国产日韩视频一区二区三区| 久久国产精品第一页| 欧美久久久久久久久久| 亚洲国产日韩av| 91在线观看地址| 亚洲欧洲在线观看av| 成人免费高清在线| 久久综合av免费| 国产真实乱偷精品视频免| 日韩无一区二区| 日韩av一区二| 欧美日韩不卡在线| 亚洲激情图片小说视频| 一本久道久久综合中文字幕| 中文字幕精品三区| 国产成人精品www牛牛影视| 久久综合中文字幕| 国产米奇在线777精品观看| 精品蜜桃在线看| 国产美女在线观看一区| 精品国产电影一区二区| 激情欧美一区二区三区在线观看| 日韩午夜精品电影| 麻豆精品久久精品色综合| 日韩欧美中文字幕公布| 美女视频黄久久| 久久这里只有精品视频网| 国产麻豆成人精品| 国产精品免费aⅴ片在线观看| 国产激情精品久久久第一区二区| 久久一日本道色综合| 黄网站免费久久| 国产日韩av一区| 99久久国产综合精品麻豆| 亚洲欧洲日产国码二区| 色综合一个色综合亚洲| 亚洲一区在线视频| 555夜色666亚洲国产免| 麻豆国产欧美一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品影音先锋| 国产精品美女一区二区在线观看| 91蜜桃网址入口| 午夜视频一区在线观看| 日韩一区二区视频在线观看| 六月丁香婷婷色狠狠久久| 国产日韩精品一区二区三区在线| 懂色一区二区三区免费观看| 亚洲人亚洲人成电影网站色| 69堂成人精品免费视频| 国产精品一线二线三线精华| 亚洲免费av观看| 91精品国产色综合久久不卡电影| 精品一区二区三区欧美|