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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ospf_transmit_database.c

?? vxworks下ospf協(xié)議棧
?? C
字號(hào):
/* ospf_transmit_database.c *//* Copyright 2000 Wind River Systems, Inc. *//*modification history___________________02c,19feb03,mwv     SPR 86272 - DD with the more bit enabled will wait until an acknowledgement is                    received before sending the next DD.02b,13feb03,mwv     SPR 85993 - enable M-bit on DD packets that span > MTU size02a,26nov02,kkz     SPR 75761 - ANVL 13.10 include Network LSA in DD packet01r,24jun02,jkw     SPR 77461 Need to traverse through database summary list01q,11may01,aos     Added null pointer checks01p,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_transmit_database.c is used for transmitting database description packets.This file is used whenever a new OSPF database description packet needs to be transmitted.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//*******************************************************************************************************************************/static void ospf_new_empty_database_description (OSPF_HEADER **ptr_to_sptr_packet,OSPF_DATABASE_HEADER **ptr_to_sptr_database_header,	ULONG authentication_size);static void ospf_initialize_database_header (OSPF_DATABASE_HEADER *sptr_database_header,OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor);/********************************************************************************//* section 10.8 of OSPF specification (page 93) */void ospf_send_an_empty_database_description_packet (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	ULONG authentication_size;	OSPF_HEADER *sptr_packet;	OSPF_DATABASE_HEADER *sptr_database_header;	ULONG destination_router;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_send_an_empty_database_description_packet\r\n");	authentication_size = ospf_get_authentication_size (sptr_interface);	ospf_new_empty_database_description (&sptr_packet, &sptr_database_header, authentication_size);    /* Added change as per TMS PR # 1583.	   To make sure the sptr_packet will not be referenced if NULL*/    if ( sptr_packet == NULL )		{		OSPF_PRINTF_DEBUG (OSPF_ALARM_PRINTF, "OSPF: ospf_send_an_empty_database_description_packet::ospf_new_empty_database_description() failed!\r\n");        return;  /* don't send */		}	ospf_initialize_database_header (sptr_database_header, sptr_interface, sptr_neighbor);	destination_router = sptr_neighbor->address; /* DDs are always unicast */	ospf_tx_packet (sptr_packet, sptr_interface, OSPF_DATABASE_DESCRIPTION_PACKET, (ULONG) (OSPF_DATABASE_HEADER_SIZE + OSPF_PACKET_SIZE),		destination_router, TRUE);	return;}/**********************************************************************************************************************************/static void ospf_new_empty_database_description (OSPF_HEADER **ptr_to_sptr_packet,OSPF_DATABASE_HEADER **ptr_to_sptr_database_header,	ULONG authentication_size){	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_new_empty_database_description\r\n");	*ptr_to_sptr_packet = ospf_get_an_ospf_send_packet (OSPF_PACKET_SIZE + OSPF_DATABASE_HEADER_SIZE + authentication_size);	/* Added changes as per TMS PR # 1583	   To make sure the ptr_to_sptr_packet will only be referenced if	   ospf_get_an_ospf_send_packet() is ok! */    if ( *ptr_to_sptr_packet != NULL )    {        *ptr_to_sptr_database_header = (OSPF_DATABASE_HEADER *) &((*ptr_to_sptr_packet)->rest_of_packet.database);    }	return;}/********************************************************************************//* section 10.8 of OSPF specification (page 93) */void ospf_send_database_summary (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	OSPF_HEADER *sptr_packet;	OSPF_HEADER *sptr_sending_packet;	OSPF_DATABASE_HEADER *sptr_database_header;	OSPF_LS_DATABASE_SUMMARY *sptr_database_summary;	OSPF_LS_DATABASE_SUMMARY *sptr_next_database_summary;	ULONG destination_router;	ULONG interface_mtu;	ULONG size_of_ads;	ULONG size_of_packet;	ULONG address;	OSPF_DATABASE_HEADER *sptr_temp_database_header1;	OSPF_DATABASE_HEADER *sptr_temp_database_header2;	OSPF_LS_HEADER *sptr_temp_ls_header1;	OSPF_LS_HEADER *sptr_temp_ls_header2;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_send_database_summary\r\n");	sptr_packet = NULL;	sptr_sending_packet = NULL;	sptr_database_header  = NULL;	sptr_database_summary  = NULL;	sptr_next_database_summary  = NULL;	size_of_ads = 0x00000000L;	size_of_packet = 0x00000000L;	address = 0x00000000L;	sptr_temp_database_header1 = NULL;	sptr_temp_database_header2 = NULL;	sptr_temp_ls_header1 = NULL;	sptr_temp_ls_header2 = NULL;	if (sptr_neighbor->sptr_database_summary == NULL)		{		sptr_database_summary = ospf_allocate_ls_database_summary (sptr_interface);		if (sptr_database_summary == NULL)			{			return;			}		sptr_neighbor->sptr_database_summary = sptr_database_summary;		sptr_packet = (OSPF_HEADER *) sptr_database_summary->sptr_ospf_header;		sptr_database_header = (OSPF_DATABASE_HEADER *) &sptr_packet->rest_of_packet.database;		ospf_initialize_database_header (sptr_database_header, sptr_interface, sptr_neighbor);		destination_router =  sptr_neighbor->address;		interface_mtu = ospf_get_interface_mtu (sptr_interface);		sptr_sending_packet = (OSPF_HEADER*) ospf_get_an_ospf_send_packet (interface_mtu );		if (sptr_sending_packet == NULL)			{			OSPF_PRINTF_DEBUG (OSPF_ALARM_PRINTF, "OSPF: ospf_send_database_summary::ospf_get_an_ospf_send_packet() failed!\r\n");			return;			}		memcpy ((BYTE*) sptr_sending_packet, (BYTE*) sptr_packet, (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) );		size_of_ads = sptr_database_summary->size_of_packet - (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) ;		sptr_temp_database_header2 =   (OSPF_DATABASE_HEADER*) ((BYTE *) sptr_sending_packet +   (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) ) ;		sptr_temp_database_header1 =   (OSPF_DATABASE_HEADER*)  ((BYTE*) sptr_packet + (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) );		memcpy ((BYTE*) sptr_temp_database_header2, (BYTE*) sptr_temp_database_header1, ( sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER) ) );		sptr_temp_ls_header2 =   (OSPF_LS_HEADER*) ((BYTE *) sptr_temp_database_header2 +   (sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER)) ) ;		sptr_temp_ls_header1 =   (OSPF_LS_HEADER*) ((BYTE*) sptr_temp_database_header1 + ( sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER)) );		size_of_packet = sptr_database_summary->size_of_packet;		for ( ; size_of_ads >= sizeof (OSPF_LS_HEADER) ; size_of_ads = size_of_ads - sizeof (OSPF_LS_HEADER) )			{			/*opaque lsa check for opaque enabled before sending database summary jkw*/#if defined		(__OPAQUE_LSA__)			if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_9) &&				(sptr_neighbor->opaque_capability == FALSE))				{				continue;				}			else if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_10) &&				(sptr_neighbor->opaque_capability == FALSE))				{				continue;				}			else if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_11) &&				(sptr_neighbor->opaque_capability == FALSE))				{				continue;				}#endif /* __OPAQUE_LSA__ */			address = host_to_net_long (sptr_interface->address);			/* SPR 75761 - remove code which prevents sending of network LSA,			 * when link state ID = interface address.  We should send all			 * LSAs which are in the LSDB.			 */			memcpy ((BYTE*) sptr_temp_ls_header2, (BYTE*) sptr_temp_ls_header1, sizeof (OSPF_LS_HEADER) );			sptr_temp_ls_header1 =  (OSPF_LS_HEADER*) ( (BYTE*) sptr_temp_ls_header1 + sizeof (OSPF_LS_HEADER)) ;			sptr_temp_ls_header2 =  (OSPF_LS_HEADER*) ( (BYTE*) sptr_temp_ls_header2 + sizeof (OSPF_LS_HEADER)) ;			}		ospf_tx_packet (sptr_sending_packet, sptr_interface, OSPF_DATABASE_DESCRIPTION_PACKET, size_of_packet,			destination_router, FALSE);		ospf_free_an_ospf_send_packet ((void*) sptr_sending_packet );		sptr_sending_packet = NULL;		}	else		{		        /* SPR 86272 -- Begin                                                                        */        /* this fix nulls SPR 77461                                                                  */        /* Send the data in the currenly pointed to database summay.  Each DD packet must recieve an */        /* acknowledgement before the next is sent                                                   */                 /* (sptr_database_summary = sptr_neighbor->sptr_database_summary; sptr_database_summary != NULL; sptr_database_summary = sptr_next_database_summary)*/        /*	{ */				sptr_database_summary = sptr_neighbor->sptr_database_summary;                if ( sptr_database_summary != NULL )            {					sptr_packet = (OSPF_HEADER *) sptr_database_summary->sptr_ospf_header;			sptr_database_header = (OSPF_DATABASE_HEADER *) &sptr_packet->rest_of_packet.database;			ospf_initialize_database_header (sptr_database_header, sptr_interface, sptr_neighbor);			destination_router =  sptr_neighbor->address;			interface_mtu = ospf_get_interface_mtu (sptr_interface);			sptr_sending_packet = (OSPF_HEADER*) ospf_get_an_ospf_send_packet (interface_mtu );			if (sptr_sending_packet == NULL)				{				OSPF_PRINTF_DEBUG (OSPF_ALARM_PRINTF, "OSPF: ospf_send_database_summary::ospf_get_an_ospf_send_packet() failed!\r\n");				return;				}			memcpy ((BYTE*) sptr_sending_packet, (BYTE*) sptr_packet, (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) );			size_of_ads = sptr_database_summary->size_of_packet - (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) ;			sptr_temp_database_header2 =   (OSPF_DATABASE_HEADER*) ((BYTE *) sptr_sending_packet +   (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) ) ;			sptr_temp_database_header1 =   (OSPF_DATABASE_HEADER*)  ((BYTE*) sptr_packet + (sizeof (OSPF_HEADER) - sizeof (UNION_OSPF_PACKET_TYPES)) );			memcpy ((BYTE*) sptr_temp_database_header2, (BYTE*) sptr_temp_database_header1, ( sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER) ) );			sptr_temp_ls_header2 =   (OSPF_LS_HEADER*) ((BYTE *) sptr_temp_database_header2 +   (sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER)) ) ;			sptr_temp_ls_header1 =   (OSPF_LS_HEADER*) ((BYTE*) sptr_temp_database_header1 + ( sizeof (OSPF_DATABASE_HEADER) - sizeof (OSPF_LS_HEADER)) );			size_of_packet = sptr_database_summary->size_of_packet;			for ( ; size_of_ads >= sizeof (OSPF_LS_HEADER) ; size_of_ads = size_of_ads - sizeof (OSPF_LS_HEADER) )				{				/*opaque lsa check for opaque enabled before sending database summary jkw*/#if defined		(__OPAQUE_LSA__)				if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_9) &&					(sptr_neighbor->opaque_capability == FALSE))					{					continue;					}				else if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_10) &&					(sptr_neighbor->opaque_capability == FALSE))					{					continue;					}				else if ((sptr_temp_ls_header1->type == OSPF_LS_TYPE_11) &&					(sptr_neighbor->opaque_capability == FALSE))					{					continue;					}#endif /* __OPAQUE_LSA__ */				address = host_to_net_long (sptr_interface->address);				/* SPR 75761 - remove code which prevents sending of network LSA,				 * when link state ID = interface address.  We should send all				 * LSAs which are in the LSDB.				 */				memcpy ((BYTE*) sptr_temp_ls_header2, (BYTE*) sptr_temp_ls_header1, sizeof (OSPF_LS_HEADER) );				sptr_temp_ls_header1 =  (OSPF_LS_HEADER*) ( (BYTE*) sptr_temp_ls_header1 + sizeof (OSPF_LS_HEADER)) ;				sptr_temp_ls_header2 =  (OSPF_LS_HEADER*) ( (BYTE*) sptr_temp_ls_header2 + sizeof (OSPF_LS_HEADER)) ;                }            /* send the current DD */            ospf_tx_packet (sptr_sending_packet, sptr_interface, OSPF_DATABASE_DESCRIPTION_PACKET, size_of_packet,                             destination_router, FALSE);	                        /* free the current DD */            ospf_free_an_ospf_send_packet ((void*) sptr_sending_packet );            sptr_sending_packet = NULL;            }        /* SPR 86272 -- End */        }	return;}/***********************************************************************************************************************************/static void ospf_initialize_database_header (OSPF_DATABASE_HEADER *sptr_database_header,OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_initialize_database_header\r\n");	/* RFC 2178 */	if (sptr_interface->type == OSPF_VIRTUAL_LINK)		{		sptr_database_header->interface_mtu = 0x0000;		}	else		{		sptr_database_header->interface_mtu = (USHORT)ospf_get_interface_mtu(sptr_interface);		sptr_database_header->interface_mtu = host_to_net_short(sptr_database_header->interface_mtu);		}	if ((sptr_interface->type != OSPF_VIRTUAL_LINK && sptr_interface->sptr_area->flags._bit.stub == TRUE ) ||		(sptr_interface->type != OSPF_VIRTUAL_LINK && sptr_interface->sptr_area->flags._bit.nssa == TRUE))		{		if (sptr_interface->sptr_area->flags._bit.nssa == TRUE)			{			sptr_database_header->options._bit.nssa = TRUE;			}		}	else		{		sptr_database_header->options._bit.externals = TRUE;		}    /*opaque lsa set DD packet options with opaque capability on jkw*/#if defined (__OPAQUE_LSA__)	if (ospf.opaque_capability == TRUE)		{		sptr_database_header->options._bit.opaque = TRUE;		}#endif /* __OPAQUE_LSA__ */	/* SPR 85993 -- Begin */	sptr_database_header->flags._byte = (sptr_database_header->flags._byte | sptr_neighbor->flags._byte);	/* SPR 85993 -- End */	sptr_database_header->sequence = sptr_neighbor->database_description_sequence_number;	sptr_database_header->sequence = host_to_net_long (sptr_database_header->sequence);	return;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频精品一区二区| 亚洲图片欧美视频| 91精品久久久久久久91蜜桃| 国产精品小仙女| 丝袜a∨在线一区二区三区不卡| 国产欧美一区二区三区鸳鸯浴| 91黄色在线观看| 不卡的av电影| 国产精品99久久久久久宅男| 五月天亚洲婷婷| 亚洲小说欧美激情另类| 亚洲天天做日日做天天谢日日欢| 国产日韩欧美综合一区| 欧美白人最猛性xxxxx69交| 欧美一区国产二区| 91精品国产色综合久久ai换脸| 91免费精品国自产拍在线不卡| 国产成人一区在线| 成人一级黄色片| 91在线小视频| 色88888久久久久久影院按摩| 国产成人免费在线视频| 国产精品18久久久久久久久 | 在线不卡的av| 欧美亚洲禁片免费| 51精品秘密在线观看| 欧美一区二区三区思思人| 911精品国产一区二区在线| 欧美午夜精品久久久| 日韩一区二区三区免费看| 精品国产电影一区二区| 久久久久成人黄色影片| 国产精品网站在线| 亚洲一区在线观看免费| 日日欢夜夜爽一区| 国产一区二区在线看| 成人看片黄a免费看在线| 91视频一区二区三区| 欧美理论在线播放| 欧美不卡123| 亚洲女同女同女同女同女同69| 肉色丝袜一区二区| 国产精品一色哟哟哟| 欧美日韩中文国产| 国产亚洲欧美日韩在线一区| 亚洲久草在线视频| 国产一区二区在线免费观看| 色综合久久综合网| 久久精品亚洲精品国产欧美 | 国产精品视频九色porn| 视频在线在亚洲| av亚洲精华国产精华| 精品乱人伦一区二区三区| 《视频一区视频二区| 国产揄拍国内精品对白| 在线影视一区二区三区| 日本一区二区综合亚洲| 天堂一区二区在线免费观看| 97se亚洲国产综合自在线观| 精品福利一二区| 日韩电影在线一区二区三区| 色老汉av一区二区三区| 久久欧美中文字幕| 樱桃视频在线观看一区| 91精品婷婷国产综合久久竹菊| 久久精品av麻豆的观看方式| 久久久亚洲精品石原莉奈| 制服丝袜成人动漫| 在线成人免费视频| 美国一区二区三区在线播放| 欧美精品一区在线观看| 成人一区在线观看| 亚洲成va人在线观看| 精品理论电影在线观看| 99久久久无码国产精品| 天天色综合天天| 国产蜜臀97一区二区三区| 欧美日韩精品免费| 粉嫩绯色av一区二区在线观看| 亚洲激情网站免费观看| 久久久国际精品| 欧美日韩精品久久久| jiyouzz国产精品久久| 另类的小说在线视频另类成人小视频在线| 精品欧美一区二区在线观看| 国产成人精品免费看| 亚洲精品视频免费看| 日韩你懂的在线播放| 色偷偷久久一区二区三区| 天堂一区二区在线免费观看| 国产精品美日韩| 欧美日韩国产另类不卡| 国产成都精品91一区二区三| 亚洲最色的网站| 精品欧美乱码久久久久久1区2区| 91啪在线观看| 国产精品原创巨作av| 亚洲成人三级小说| 国产精品伦理一区二区| 久久五月婷婷丁香社区| 色94色欧美sute亚洲13| 成人免费视频网站在线观看| 视频一区二区国产| 亚洲一二三级电影| 亚洲三级在线看| 亚洲视频狠狠干| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美一区二区免费观在线| 欧美在线一二三四区| 成人av资源下载| 成人av资源在线| 成人做爰69片免费看网站| 国产精品影音先锋| 韩国毛片一区二区三区| 国模无码大尺度一区二区三区| 激情综合网激情| 不卡一区在线观看| 国产成人99久久亚洲综合精品| 国产精一区二区三区| 成人免费精品视频| 成人精品视频一区二区三区尤物| 不卡免费追剧大全电视剧网站| 粉嫩一区二区三区性色av| 成人久久久精品乱码一区二区三区| 高清视频一区二区| 91首页免费视频| 欧美日韩免费电影| 久久综合视频网| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美激情在线免费观看| 亚洲激情五月婷婷| 麻豆精品视频在线| av不卡在线观看| 欧美一卡二卡三卡四卡| 亚洲欧洲三级电影| 日本中文一区二区三区| 粉嫩嫩av羞羞动漫久久久| 欧美精品1区2区3区| 久久久国产精华| 亚洲成人黄色影院| 国产黄人亚洲片| 欧美一区二区三区免费在线看| 亚洲国产精品t66y| 日韩不卡一区二区| 91亚洲精华国产精华精华液| 91精品久久久久久久91蜜桃| 亚洲欧美日韩国产中文在线| 免费成人你懂的| 欧美日韩一区二区欧美激情| 中文字幕国产一区| 国产精品一区二区免费不卡 | 91在线精品一区二区三区| 欧美精品一区在线观看| 香港成人在线视频| 欧美在线一二三四区| 亚洲欧美在线视频观看| 豆国产96在线|亚洲| 精品久久国产老人久久综合| 日韩精品免费专区| 欧美在线免费观看亚洲| 亚洲三级久久久| 不卡av电影在线播放| 久久久五月婷婷| 狠狠色丁香九九婷婷综合五月| 欧美视频一二三区| 亚洲福利视频导航| 欧美性受xxxx| 日本亚洲欧美天堂免费| wwwwww.欧美系列| 国产91精品在线观看| 亚洲国产成人91porn| 精品久久国产老人久久综合| 色婷婷精品大在线视频| 日韩精品亚洲专区| 日韩久久一区二区| www国产成人| 4hu四虎永久在线影院成人| 成人黄色大片在线观看| 久久国产精品无码网站| 亚洲影院免费观看| 亚洲私人黄色宅男| 2023国产精品| 欧美综合亚洲图片综合区| 天天av天天翘天天综合网 | 日本成人超碰在线观看| 欧美丝袜自拍制服另类| 亚洲mv大片欧洲mv大片精品| 国产精品萝li| 欧美日韩综合在线| 成人免费看视频| 国产乱子伦视频一区二区三区 | 国产69精品久久久久毛片 | 国产jizzjizz一区二区| 亚洲成人av在线电影| 中文字幕在线不卡| 精品久久五月天| 日本道色综合久久| 99久久婷婷国产综合精品| 久久99精品久久久久久国产越南| 一卡二卡欧美日韩|