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

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

?? ospf_receive_database.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* ospf_receive_database.c - OSPF receive database  *//* Copyright 2000-2003 Wind River Systems, Inc. *//*modification history--------------------02d,26may03,agi     Changed rwos_get_system_elapsed_time_second() to                     ospf_get_system_elapsed_time_second()02c,22apr03,ram	    SPR#76812 Modifications for OSPF performance enhancements02b,07feb,03,agi    Fixed SPR#75769 - ANVL 23.10 and SPR#75772 - ANVL 23.1102a,03dec02,ram     SPR 84312 - Change elapsed time to return seconds23,16april02,jkw    One copy of external and type 11 lsa22,09april02,jkw    Sequence number wrap.21,08februay02,jkw  Ignore mtu size if virtual link.20,23january02,jkw  Fix receiving of dd packets with opaque.19,03september,jkw  Added Mistral updates for RFC 217818,23july01,jkw	    Added new configuration variables for ignoring tos and demand circuit17,18july01,jkw	    Return received good on TWO-WAY receive as specified per the RFC16,26september00,reshma	Added WindRiver CopyRight15,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-interface11,28december98,jack		Compiled and added some comments10,11november98,jack		Config changes, linted and big endian changes09,30october98,jack		Incorporate changes for compilation on Vxworks08,23august98,jack			ANVL tested OSPF with PATRICIA tree route table and no recursion07,10august98,jack			PATRICIA Route Table Based OSPF Code Base06,04june98,jack			Integration with RTM and BGP05,24april98,jack			RTM changes04,10july97,cindy			Pre-release v1.52b03,02october97,cindy		Release Version 1.5202,22october96,cindy		Release Version 1.5001,05june96,cindy			First Beta Release*//*DESCRIPTIONospf_receive_database.c is used for processing received database description packets.This file is used whenever a new OSPF database description packet is received.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//**********************************************************************************************************************************/static OSPF_RETURN_TYPE ospf_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet);static OSPF_RETURN_TYPE ospf_neighbor_exchange_start_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,	ULONG size_of_packet,OSPF_NEIGHBOR *sptr_neighbor,OSPF_INTERFACE *sptr_interface);static void ospf_neighbor_exchange_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,ULONG size_of_packet,	OSPF_NEIGHBOR *sptr_neighbor,OSPF_INTERFACE *sptr_interface);static int check_database_packet_header_options(OSPF_DATABASE_HEADER *sptr_database_packet_header, OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface, seq_t database_description_sequence_number);static void ospf_remove_last_sent_database_summary (OSPF_NEIGHBOR *sptr_neighbor);static enum OSPF_PACKET_STATE ospf_accept_as_next_in_sequence (OSPF_DATABASE_HEADER *sptr_database_packet_header,ULONG size_of_packet,	OSPF_NEIGHBOR *sptr_neighbor,OSPF_INTERFACE *sptr_interface);static enum OSPF_PACKET_STATE ospf_parse_database_packet (OSPF_DATABASE_HEADER *sptr_database_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet);static void ospf_neighbor_full_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface);/****************************************************************************//* section 10.6 of OSPF specification (page 90) */enum OSPF_PACKET_STATE ospf_database_packet_received (OSPF_DATABASE_HEADER *sptr_database_packet_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet){	ULONG ls_request_queue_count;	OSPF_AREA_ENTRY *sptr_area;	OSPF_RETURN_TYPE return_type;#if defined (__RFC_2328__)	/* RFC 2178 G.9 */	USHORT interface_mtu;	USHORT database_mtu;#endif	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_database_packet_received\r\n");	sptr_area = sptr_interface->sptr_area;	ls_request_queue_count = sptr_neighbor->ls_request_queue_count;#if defined (__RFC_2328__)	if (sptr_interface->type != OSPF_VIRTUAL_LINK)		{		/* RFC 2178 G.9 */		interface_mtu = (USHORT)ospf_get_interface_mtu(sptr_interface);		database_mtu = sptr_database_packet_header->interface_mtu;		/* Mistral Added Changes on  July 18th */		database_mtu = net_to_host_short(database_mtu);		if (database_mtu > interface_mtu)			{			return OSPF_ERROR_DATABASE_DESCRIPTION_MTU_MISMATCH;			}		}#endif /*__RFC_2328__*/	size_of_packet -= (OSPF_PACKET_SIZE + OSPF_DATABASE_HEADER_SIZE);	return_type = ospf_process_database_packet (sptr_database_packet_header, sptr_neighbor, sptr_interface,	size_of_packet);	if (return_type.exit_routine == FALSE)		{		if (sptr_interface->flags._bit.neighbor_change == TRUE)			{			ospf_execute_interface_state_machine (OSPF_NEIGHBOR_CHANGE, sptr_interface->state, sptr_interface);			}		ospf_generate_network_and_router_link_state_advertisements (sptr_interface);		/*		 * During the above packet processing, a node may have been added to the ls request queue.		 * If a node was added and the list was previously empty, then send out an ls request packet right		 * away.  Otherwise, there is already an ls request packet outstanding.  So let the retransmit		 * process handle all sending of ls request packets (so we don't end up with more than one sent		 * out at a time).		 */		if ((sptr_neighbor->state >= OSPF_NEIGHBOR_EXCHANGE) && (ls_request_queue_count == 0x00000000L /* list was previously empty */) &&			(sptr_neighbor->ls_request_queue_count > 0x00000000L /* list is no longer empty */))			{			ospf_send_ls_request_packet (sptr_interface, sptr_neighbor);			}		}	return (return_type.packet_state);}/******************************************************************************************************************************/static OSPF_RETURN_TYPE ospf_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet){	OSPF_RETURN_TYPE return_type;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_process_database_packet\r\n");	return_type.exit_routine = FALSE;	return_type.packet_state = GOOD_RECEIVE;	switch (sptr_neighbor->state)		{		case OSPF_NEIGHBOR_DOWN:		case OSPF_NEIGHBOR_ATTEMPT:			{			return_type.exit_routine = TRUE;			return_type.packet_state = OSPF_ERROR_DATABASE_DESCRIPTION_STATE;			return (return_type);									/* ignore the packet */			}		case OSPF_NEIGHBOR_2_WAY:			{			return (return_type);  									/* ignore the packet */			}		case OSPF_NEIGHBOR_INITIALIZING:		case OSPF_NEIGHBOR_EXCHANGE_START:			{			if (sptr_neighbor->state == OSPF_NEIGHBOR_INITIALIZING)		/* first transition state to NEIGHBOR_EXSTART */				{				ospf_execute_neighbor_state_machine (OSPF_TWO_WAY_RECEIVED, sptr_neighbor->state, sptr_interface, sptr_neighbor);				if (sptr_neighbor->state != OSPF_NEIGHBOR_EXCHANGE_START)					{					break;					}				}			return_type = ospf_neighbor_exchange_start_process_database_packet (sptr_database_packet_header, size_of_packet,				sptr_neighbor, sptr_interface);			break;			}		case OSPF_NEIGHBOR_EXCHANGE:			{			ospf_neighbor_exchange_process_database_packet (sptr_database_packet_header, size_of_packet, sptr_neighbor,				sptr_interface);			break;			}		case OSPF_NEIGHBOR_LOADING:		case OSPF_NEIGHBOR_FULL:			{			ospf_neighbor_full_process_database_packet (sptr_database_packet_header, sptr_neighbor, sptr_interface);			break;			}		default:			{			break;			}		}	return (return_type);}/******************************************************************************************************************************/static OSPF_RETURN_TYPE ospf_neighbor_exchange_start_process_database_packet (OSPF_DATABASE_HEADER *sptr_database_packet_header,	ULONG size_of_packet,OSPF_NEIGHBOR *sptr_neighbor,OSPF_INTERFACE *sptr_interface){	OSPF_RETURN_TYPE return_type;	seq_t database_description_sequence_number;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_neighbor_exchange_start_process_database_packet\r\n");	database_description_sequence_number = sptr_database_packet_header->sequence;	database_description_sequence_number = net_to_host_long (database_description_sequence_number);	/* first bullet item under ExStart in section 10.6 of OSPF specification (page 90) */	if ((sptr_database_packet_header->flags._bit.initialize == TRUE) && (sptr_database_packet_header->flags._bit.more == TRUE) &&		(sptr_database_packet_header->flags._bit.master == TRUE) &&	(size_of_packet == 0x00000000L) &&		(sptr_neighbor->id > ospf.router_id))		{		sptr_neighbor->mode = OSPF_SLAVE;							/* router is now OSPF_SLAVE */		sptr_neighbor->flags._byte = 0x0000;				/* set to slave */		sptr_neighbor->database_description_sequence_number = database_description_sequence_number;																		/* set the sequence number to that specified by the master */		}	/* second bullet item under ExStart in section 10.6 of OSPF specification (page 90) */	else if ((sptr_database_packet_header->flags._bit.initialize == FALSE) && (sptr_database_packet_header->flags._bit.master == FALSE) &&		(sptr_neighbor->database_description_sequence_number == database_description_sequence_number) &&		(sptr_neighbor->id < ospf.router_id))		{		sptr_neighbor->mode = OSPF_MASTER;							/* router is now OSPF_MASTER */		sptr_neighbor->flags._byte = 0x0000;		sptr_neighbor->flags._bit.master = TRUE;			/* set to master */	}	else if (sptr_neighbor->id == ospf.router_id)		{		return_type.exit_routine = FALSE;		return_type.packet_state = OSPF_ERROR_DATABASE_DESCRIPTION_ROUTER_ID;	/* ignore packet */		return (return_type);		}	else		{		return_type.exit_routine = FALSE;		return_type.packet_state = GOOD_RECEIVE;					/* ignore packet */		return (return_type);		}#if defined (__OPAQUE_LSA__)	/* Check for opaque capability */	if ((sptr_database_packet_header->options._bit.opaque == TRUE)		&& (ospf.opaque_capability == TRUE))		{		sptr_neighbor->opaque_capability = TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本精品一级二级| 国产精品影视在线观看| 色综合久久天天| 亚洲综合999| 4438成人网| 国产黄色精品视频| 综合av第一页| 3d动漫精品啪啪| 国产剧情一区在线| 亚洲欧美另类图片小说| 欧美日韩国产不卡| 国模一区二区三区白浆| 中文字幕亚洲综合久久菠萝蜜| 91视频一区二区| 天天影视网天天综合色在线播放| 日韩欧美国产三级电影视频| 成人理论电影网| 五月天丁香久久| 国产精品日日摸夜夜摸av| 欧美三片在线视频观看| 久色婷婷小香蕉久久| 中文字幕一区二区三区不卡| 91精品国产综合久久小美女| 国产99精品国产| 亚洲v中文字幕| 国产日韩影视精品| 欧美日韩精品一区二区| 国产成人免费在线视频| 亚洲午夜免费电影| 国产日产欧美一区| 欧美精品一卡二卡| 精品久久久久香蕉网| 91影院在线观看| 黄色资源网久久资源365| 一区二区三区 在线观看视频| 久久蜜桃香蕉精品一区二区三区| 欧美亚洲一区三区| 成人综合在线观看| 日韩电影在线一区| 亚洲男人天堂av网| 国产日产欧美一区二区视频| 91精品婷婷国产综合久久性色| 波多野结衣中文字幕一区二区三区| 日韩国产在线一| ...xxx性欧美| 国产日韩欧美麻豆| 日韩欧美国产综合一区 | 国产综合久久久久影院| 亚洲一区二区欧美| 成人免费小视频| 久久久久一区二区三区四区| 日韩一区二区在线免费观看| 欧亚一区二区三区| 波多野结衣欧美| 国产不卡视频一区二区三区| 国产一区二区三区美女| 老司机午夜精品| 午夜精品在线看| 亚洲国产另类精品专区| 亚洲麻豆国产自偷在线| 国产精品久久久爽爽爽麻豆色哟哟 | 蜜臀av亚洲一区中文字幕| 亚洲综合色噜噜狠狠| 亚洲欧美激情插| 亚洲久本草在线中文字幕| 国产精品入口麻豆九色| 中文字幕 久热精品 视频在线 | 国产精品卡一卡二| 久久精品网站免费观看| 久久久夜色精品亚洲| 亚洲精品一区二区三区福利| 精品久久久影院| 久久精品在线观看| 亚洲国产精品黑人久久久| 中文字幕中文字幕在线一区 | 国产欧美一区二区三区网站| 久久久国产一区二区三区四区小说| 精品久久久久久亚洲综合网| 亚洲精品在线观看网站| 久久久久9999亚洲精品| 国产色一区二区| 亚洲色图一区二区三区| 亚洲一线二线三线视频| 亚洲福利视频一区| 日本亚洲三级在线| 男女男精品视频网| 国产精品综合久久| 成人爽a毛片一区二区免费| 99久久久无码国产精品| 91免费国产视频网站| 精品视频在线免费观看| 日韩女优制服丝袜电影| 国产色一区二区| 亚洲精品第1页| 免费成人小视频| 国产成人免费视频一区| 色琪琪一区二区三区亚洲区| 欧美高清视频一二三区| 26uuu亚洲综合色| 亚洲丝袜美腿综合| 日本美女视频一区二区| 国产精品一线二线三线| 99精品视频在线播放观看| 欧美日韩中文一区| 久久一夜天堂av一区二区三区| 中文字幕一区二| 日韩中文字幕1| 丁香另类激情小说| 欧美剧在线免费观看网站| 久久色成人在线| 一区二区三区四区国产精品| 久久99九九99精品| 色综合久久88色综合天天 | 国产成a人亚洲精| 欧美亚洲国产一区在线观看网站| 精品福利一区二区三区免费视频| 国产精品亲子伦对白| 奇米一区二区三区| 91亚洲精品久久久蜜桃网站| 日韩欧美中文字幕公布| 一色桃子久久精品亚洲| 日本欧美在线观看| 色综合天天视频在线观看| 欧美tickling挠脚心丨vk| 亚洲精品五月天| 国产精品性做久久久久久| 欧美片在线播放| 综合久久给合久久狠狠狠97色 | 中文字幕中文字幕中文字幕亚洲无线| 天堂av在线一区| 色综合天天综合| 中文字幕欧美日本乱码一线二线| 洋洋av久久久久久久一区| 波多野结衣欧美| 国产香蕉久久精品综合网| 免费美女久久99| 欧美日韩国产a| 一区二区三区高清| 99re成人精品视频| 国产人久久人人人人爽| 国内精品免费**视频| 欧美一区二区三区思思人| 亚洲影院在线观看| 色先锋资源久久综合| 中文字幕免费观看一区| 狠狠久久亚洲欧美| 日韩免费观看高清完整版| 爽好多水快深点欧美视频| 色94色欧美sute亚洲线路二| 国产丝袜欧美中文另类| 国产一区二区三区美女| 欧美mv日韩mv国产网站| 免费观看在线综合色| 欧美精品v国产精品v日韩精品| 亚洲精品成人悠悠色影视| 99热这里都是精品| 国产精品国产三级国产aⅴ原创| 丰满岳乱妇一区二区三区| 国产人伦精品一区二区| 国产suv精品一区二区三区| 国产午夜精品在线观看| 国产麻豆精品一区二区| 国产无一区二区| 成人午夜电影网站| 国产精品福利电影一区二区三区四区| 国产精品自在欧美一区| 久久久久久麻豆| 成人精品免费视频| 国产精品剧情在线亚洲| 色综合久久中文字幕综合网| 一区二区三区四区激情| 欧美日韩一区二区三区四区| 亚洲不卡在线观看| 日韩精品在线网站| 狠狠色综合播放一区二区| 久久久美女毛片| 99久久婷婷国产综合精品| 国产精品久久久久久久裸模| 色欧美片视频在线观看 | 理论片日本一区| 国产亚洲制服色| jlzzjlzz亚洲女人18| 亚洲激情男女视频| 8x8x8国产精品| 国产大片一区二区| 日韩伦理电影网| 制服丝袜亚洲精品中文字幕| 麻豆成人91精品二区三区| 国产日韩亚洲欧美综合| 91蜜桃视频在线| 日韩av不卡一区二区| 久久九九国产精品| 欧美在线综合视频| 免费成人在线视频观看| 国产精品美女久久久久久| 精品视频免费看| 国产高清不卡二三区| 亚洲精品综合在线| 欧美精品一区在线观看| 91成人国产精品|