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

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

?? ospf_receive_request.c

?? vxworks下ospf協(xié)議棧
?? C
字號:
/* ospf_receive_request.c *//* Copyright 1998-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02a,22apr03,ram     SPR#76812 Modifications for OSPF performance enhancements01s,10apr03,mwv     SPR 85906 - include IP header size for LSA fragmentation01r,16apr02,jkw     One copy of external and type 11 lsa01q,19jul01,aos     Fixes relating to TSR #24935801p,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_receive_request.c is used for processing received link state request packets.  This file will process therequest and build the appropriate link state update packet as a reply.This file is used whenever a new OSPF request packet is received.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//*******************************************************************************************************************************/static enum OSPF_PACKET_STATE ospf_gather_and_transmit_update_packets (OSPF_LS_REQUEST_HEADER *sptr_ls_request_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet);/****************************************************************************//* section 10.7 of OSPF specification (page 93) */enum OSPF_PACKET_STATE ospf_ls_request_packet_received (OSPF_LS_REQUEST_HEADER *sptr_ls_request_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet){	enum OSPF_PACKET_STATE return_type;	/* Link State Request Packets should be accepted when the neighbor is in states Exchange, Loading, or Full and ignored otherwise */	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_ls_request_packet_received\r\n");	if (sptr_neighbor->state < OSPF_NEIGHBOR_EXCHANGE)		{		return (OSPF_ERROR_ACKNOWLEDGEMENT_STATE);		}	size_of_packet -= OSPF_PACKET_SIZE;	if (size_of_packet == 0x00000000L)		{		return (OSPF_ERROR_REQUEST_EMPTY);		}	/*	 * Each link state advertisement specified in the Link State request packet should be located in the router's database and copied	 * into Link State Update packets for transmission to the neighbor.	 */	return_type = ospf_gather_and_transmit_update_packets (sptr_ls_request_header, sptr_neighbor, sptr_interface, size_of_packet);  	return (return_type);}/******************************************************************************************************************************/static enum OSPF_PACKET_STATE ospf_gather_and_transmit_update_packets (OSPF_LS_REQUEST_HEADER *sptr_ls_request_header,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_INTERFACE *sptr_interface,ULONG size_of_packet){	OSPF_HEADER *sptr_update_packet;	OSPF_LS_DATABASE_ENTRY *sptr_database;	OSPF_LS_REQUESTED_ADVERTISEMENT *sptr_requested_advertisement;	UNION_OSPF_ADVERTISEMENT_HEADER *uptr_acknowledgement_header;	ULONG interface_mtu;	ULONG authentication_size;	ULONG update_packet_length;	ULONG link_state_id;	ULONG advertising_router;	USHORT length;	USHORT age;#if defined (__OPAQUE_LSA__)	OSPF_TYPE_9_LINK_ADVERTISEMENT_HEADER *sptr_type_9_advertisement_header = NULL;	OSPF_TYPE_10_LINK_ADVERTISEMENT_HEADER *sptr_type_10_advertisement_header = NULL;	OSPF_TYPE_11_LINK_ADVERTISEMENT_HEADER *sptr_type_11_advertisement_header = NULL;	OSPF_LS_OPAQUE_HEADER *opaque_lsa = NULL;	USHORT opaque_lsa_size = 0x0000;	USHORT opaque_ls_header_size = 0x0000;	USHORT data_size = 0x0000;#endif /* __OPAQUE_LSA__ */	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_gather_and_transmit_update_packets\r\n");	sptr_update_packet = ospf_new_link_state_update (&uptr_acknowledgement_header, sptr_interface);	update_packet_length = OSPF_PACKET_SIZE + OSPF_LS_UPDATE_HEADER_SIZE;	if (sptr_update_packet == NULL)		{		return (GOOD_RECEIVE);		}	for (sptr_requested_advertisement = &sptr_ls_request_header->requested_advertisement; size_of_packet != 0x00000000L;		size_of_packet -= OSPF_LS_REQUESTED_ADVERTISEMENT_SIZE)		{		link_state_id = sptr_requested_advertisement->id;		link_state_id = net_to_host_long (link_state_id);		advertising_router = sptr_requested_advertisement->advertising_router;		advertising_router = net_to_host_long (advertising_router);		/* SPR#76812 */		sptr_database = ospf_find_LSA (sptr_interface->sptr_area, link_state_id, advertising_router, sptr_requested_advertisement->type);		if ((sptr_requested_advertisement->type < OSPF_LS_ROUTER) || (sptr_requested_advertisement->type > OSPF_LS_MAX) ||			(sptr_database == NULL))			{			ospf_execute_neighbor_state_machine (OSPF_BAD_LINK_STATE_REQUEST, sptr_neighbor->state, sptr_interface, sptr_neighbor);			ospf_free_an_ospf_send_packet (sptr_update_packet);			sptr_update_packet = NULL;			return (OSPF_ERROR_REQUEST_BOGUS);					/* didn't find the advertisement in the database, or the request type was invalid */			}		length = sptr_database->advertisement.sptr_router->ls_header.length;		length = net_to_host_short (length);		authentication_size = ospf_get_authentication_size (sptr_interface);		interface_mtu = ospf_get_interface_mtu (sptr_interface);        /* SPR 85906 */        if ((update_packet_length + length + authentication_size + OSPF_MAXIMUM_IP_HEADER_SIZE) > interface_mtu)			{			sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements = host_to_net_long (				sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements);			ospf_tx_packet (sptr_update_packet, sptr_interface, OSPF_LINK_STATE_UPDATE_PACKET, update_packet_length, sptr_neighbor->address, FALSE);			memset (sptr_update_packet, 0x0, update_packet_length);			uptr_acknowledgement_header = (UNION_OSPF_ADVERTISEMENT_HEADER *) &(sptr_update_packet->rest_of_packet.ls_update.advertisement_header); /* after txmitting the packet, reset the pointer so that sptr_update_packet can be reused */			update_packet_length = OSPF_PACKET_SIZE + OSPF_LS_UPDATE_HEADER_SIZE;			}		++sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements;#if defined (__OPAQUE_LSA__)	if (sptr_database->advertisement.sptr_router->ls_header.type == OSPF_LS_TYPE_9)		{		opaque_ls_header_size = sizeof(OSPF_LS_OPAQUE_HEADER);		sptr_type_9_advertisement_header = sptr_database->advertisement.sptr_type_9;		data_size = sptr_type_9_advertisement_header->ls_header.length;		data_size = net_to_host_short(data_size);		data_size = (USHORT)(data_size - OSPF_LS_HEADER_SIZE);		opaque_lsa_size = (USHORT)(data_size + opaque_ls_header_size);		opaque_lsa = (OSPF_LS_OPAQUE_HEADER *) table_malloc(1, opaque_lsa_size);		if (opaque_lsa != NULL)			{			memset(opaque_lsa, 0x00, opaque_lsa_size);			memcpy(opaque_lsa, &(sptr_type_9_advertisement_header->ls_header), opaque_ls_header_size);			if ((sptr_type_9_advertisement_header->data != NULL) && (data_size > 0))				{				memcpy(((BYTE *)(opaque_lsa)+opaque_ls_header_size), sptr_type_9_advertisement_header->data, data_size);				}			memcpy ((void *) &(uptr_acknowledgement_header->router), (const void *)opaque_lsa, opaque_lsa_size);			table_free(opaque_lsa);			opaque_lsa = NULL;			uptr_acknowledgement_header->router.ls_header.checksum = 0x0000;			uptr_acknowledgement_header->router.ls_header.checksum = ospf_generate_LS_checksum ((void *) &(uptr_acknowledgement_header->router), (USHORT)opaque_lsa_size,				(BYTE *) &uptr_acknowledgement_header->router.ls_header.checksum);			}		}	else if (sptr_database->advertisement.sptr_router->ls_header.type == OSPF_LS_TYPE_10)		{		opaque_ls_header_size = sizeof(OSPF_LS_OPAQUE_HEADER);		sptr_type_10_advertisement_header = sptr_database->advertisement.sptr_type_10;		data_size = sptr_type_10_advertisement_header->ls_header.length;		data_size = net_to_host_short(data_size);		data_size = (USHORT)(data_size - OSPF_LS_HEADER_SIZE);		opaque_lsa_size = (USHORT)(data_size + opaque_ls_header_size);		opaque_lsa = (OSPF_LS_OPAQUE_HEADER *) table_malloc(1, opaque_lsa_size);		if (opaque_lsa != NULL)			{			memset(opaque_lsa, 0x00, opaque_lsa_size);			memcpy(opaque_lsa, &(sptr_type_10_advertisement_header->ls_header), opaque_ls_header_size);			if ((sptr_type_10_advertisement_header->data != NULL) && (data_size > 0))				{				memcpy(((BYTE *)(opaque_lsa)+opaque_ls_header_size), sptr_type_10_advertisement_header->data, data_size);				}			memcpy ((void *) &(uptr_acknowledgement_header->router), (const void *)opaque_lsa, opaque_lsa_size);			table_free(opaque_lsa);			opaque_lsa = NULL;			uptr_acknowledgement_header->router.ls_header.checksum = 0x0000;			uptr_acknowledgement_header->router.ls_header.checksum = ospf_generate_LS_checksum ((void *) &(uptr_acknowledgement_header->router), (USHORT)opaque_lsa_size,				(BYTE *) &uptr_acknowledgement_header->router.ls_header.checksum);			}		}	else if (sptr_database->advertisement.sptr_router->ls_header.type == OSPF_LS_TYPE_11)		{		opaque_ls_header_size = sizeof(OSPF_LS_OPAQUE_HEADER);		sptr_type_11_advertisement_header = sptr_database->advertisement.sptr_type_11;		data_size = sptr_type_11_advertisement_header->ls_header.length;		data_size = net_to_host_short(data_size);		data_size = (USHORT)(data_size - OSPF_LS_HEADER_SIZE);		opaque_lsa_size = (USHORT)(data_size + opaque_ls_header_size);		opaque_lsa = (OSPF_LS_OPAQUE_HEADER *) table_malloc(1, opaque_lsa_size);		if (opaque_lsa != NULL)			{			memset(opaque_lsa, 0x00, opaque_lsa_size);			memcpy(opaque_lsa, &(sptr_type_11_advertisement_header->ls_header), opaque_ls_header_size);			if ((sptr_type_11_advertisement_header->data != NULL) && (data_size > 0))				{				memcpy(((BYTE *)(opaque_lsa)+opaque_ls_header_size), sptr_type_11_advertisement_header->data, data_size);				}			memcpy ((void *) &(uptr_acknowledgement_header->router), (const void *)opaque_lsa, opaque_lsa_size);			table_free(opaque_lsa);			opaque_lsa = NULL;			uptr_acknowledgement_header->router.ls_header.checksum = 0x0000;			uptr_acknowledgement_header->router.ls_header.checksum = ospf_generate_LS_checksum ((void *) &(uptr_acknowledgement_header->router), (USHORT)opaque_lsa_size,				(BYTE *) &uptr_acknowledgement_header->router.ls_header.checksum);			}		}	else		{		memcpy ((void *) uptr_acknowledgement_header, (const void *) sptr_database->advertisement.sptr_router, (size_t) length);		}#else /* __OPAQUE_LSA__ */		memcpy ((void *) uptr_acknowledgement_header, (const void *) sptr_database->advertisement.sptr_router, (size_t) length);#endif /* __OPAQUE_LSA__ */		age = sptr_database->advertisement.sptr_router->ls_header.age;		age = net_to_host_short (age);		age = (USHORT) (age + sptr_interface->transmit_delay);		uptr_acknowledgement_header->router.ls_header.age = (USHORT) ospf_min (age, OSPF_MAXIMUM_AGE);		uptr_acknowledgement_header->router.ls_header.age = host_to_net_short (uptr_acknowledgement_header->router.ls_header.age);		uptr_acknowledgement_header = (UNION_OSPF_ADVERTISEMENT_HEADER *) ((ULONG) uptr_acknowledgement_header + length);		update_packet_length += length;		sptr_requested_advertisement = (OSPF_LS_REQUESTED_ADVERTISEMENT *) ((ULONG) sptr_requested_advertisement + OSPF_LS_REQUESTED_ADVERTISEMENT_SIZE);		}	if (sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements != 0x00000000L)		{		sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements = host_to_net_long (			sptr_update_packet->rest_of_packet.ls_update.number_of_advertisements);		ospf_tx_packet (sptr_update_packet, sptr_interface, OSPF_LINK_STATE_UPDATE_PACKET, update_packet_length, sptr_neighbor->address, /*TRUE*/FALSE);		ospf_free_an_ospf_send_packet (sptr_update_packet);		sptr_update_packet = NULL;		}	else        {		ospf_free_an_ospf_send_packet (sptr_update_packet);        sptr_update_packet = NULL;        }	return (GOOD_RECEIVE);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产激情二区三区| 成人国产精品免费观看| 亚洲精品日韩专区silk | 麻豆成人久久精品二区三区红| 亚洲精品国产一区二区精华液 | 中日韩av电影| 国产欧美一区二区三区网站| 国产午夜精品一区二区三区嫩草 | 三级影片在线观看欧美日韩一区二区 | 欧美一区二区三区在线观看视频 | 久久久精品蜜桃| 亚洲精品一区二区三区精华液| 欧美一区二区二区| 久久久久一区二区三区四区| 国产欧美日韩在线视频| 国产精品丝袜91| 亚洲欧美偷拍三级| 天堂蜜桃91精品| 久久成人免费电影| 成人性生交大片免费看中文| 91香蕉视频mp4| 欧美情侣在线播放| 精品国产精品网麻豆系列| 久久精品亚洲麻豆av一区二区 | 视频一区中文字幕| 国产成人在线网站| 欧美性色黄大片手机版| 51精品国自产在线| 中文久久乱码一区二区| 亚洲不卡一区二区三区| 久久黄色级2电影| 99久久99久久精品免费看蜜桃| 欧美亚洲日本国产| 精品福利视频一区二区三区| 国产亚洲精品福利| 日韩综合小视频| gogo大胆日本视频一区| 欧美一卡2卡三卡4卡5免费| 国产精品久久毛片| 久久草av在线| 日本乱码高清不卡字幕| 精品少妇一区二区三区在线播放 | 久久久久97国产精华液好用吗| 国产精品女上位| 日韩av成人高清| 成人美女在线观看| 欧美成人精品1314www| 洋洋成人永久网站入口| 国产精品一区二区免费不卡| 欧美裸体bbwbbwbbw| 中文字幕一区免费在线观看| 久久成人久久鬼色| 欧美日韩国产在线观看| 亚洲天堂精品视频| 国产成人精品免费一区二区| 欧美一区二区三区不卡| 一区二区三区四区av| 成人午夜视频免费看| 2014亚洲片线观看视频免费| 日韩av一区二区在线影视| 日本韩国一区二区三区视频| 亚洲欧洲性图库| av电影在线观看一区| 久久久欧美精品sm网站| 久久99最新地址| 911精品国产一区二区在线| 亚洲国产成人91porn| 91久久精品午夜一区二区| 亚洲六月丁香色婷婷综合久久 | 久久成人免费日本黄色| 日韩欧美久久久| 免费观看30秒视频久久| 欧美丰满嫩嫩电影| 日本不卡的三区四区五区| 6080国产精品一区二区| 天天色图综合网| 欧美一区二区三区视频免费播放| 天天影视色香欲综合网老头| 欧美一卡二卡三卡| 国产一区二区伦理| 国产亚洲精品资源在线26u| 国产精品性做久久久久久| 国产欧美日韩另类视频免费观看| 国产精品一区专区| 国产精品毛片a∨一区二区三区| av亚洲产国偷v产偷v自拍| 国产精品福利在线播放| 色婷婷av久久久久久久| 亚洲国产你懂的| 91精品国产色综合久久ai换脸 | 三级成人在线视频| 日韩精品一区二区三区在线| 国产一区二区三区在线观看免费视频 | 欧美一区二区成人6969| 看片网站欧美日韩| 久久久亚洲高清| 99这里只有精品| 一区二区三区av电影| 欧美人狂配大交3d怪物一区| 美国三级日本三级久久99| 国产日韩欧美综合在线| 94-欧美-setu| 日日摸夜夜添夜夜添国产精品| 日韩精品综合一本久道在线视频| 国产一区999| 亚洲国产综合人成综合网站| 日韩视频一区在线观看| 成人动漫一区二区三区| 调教+趴+乳夹+国产+精品| 久久精品一区二区| 欧美性xxxxxx少妇| 国产麻豆9l精品三级站| 一区二区三区国产精品| 日韩一区二区三区观看| 色综合亚洲欧洲| 精品一区二区日韩| 亚洲精品视频在线| 国产清纯美女被跳蛋高潮一区二区久久w | 在线观看日韩电影| 国产一区二区三区av电影 | 激情五月婷婷综合网| 亚洲人吸女人奶水| 久久亚洲综合色| 欧美日韩视频不卡| 99精品视频免费在线观看| 日韩av中文字幕一区二区三区| 中文字幕在线视频一区| 精品理论电影在线| 91精品国产综合久久久久久久| 色8久久精品久久久久久蜜| 国产激情精品久久久第一区二区| 天天综合色天天综合色h| 一区二区三区日韩精品视频| 国产精品久久网站| 国产亚洲精品7777| 精品国产一区二区精华 | 国产精品99久久久久| 亚洲第一搞黄网站| 一区二区三区美女| 亚洲色图视频网站| 国产精品私人自拍| 国产精品视频免费| 国产精品麻豆视频| 国产精品毛片高清在线完整版| 精品99久久久久久| 欧美一区二区三区在线视频| 欧美日韩卡一卡二| 欧美三级视频在线观看| 91久久精品一区二区三| 一本一本大道香蕉久在线精品| 成人国产精品免费网站| 不卡高清视频专区| www.欧美日韩| 99久久久无码国产精品| 成人免费毛片aaaaa**| 成人亚洲一区二区一| 成人a级免费电影| 99天天综合性| 91丨九色丨尤物| 在线观看欧美黄色| 欧美日韩小视频| 91精品国产综合久久香蕉麻豆| 日韩视频免费观看高清完整版| 91精品国产入口在线| 精品久久久久久久一区二区蜜臀| 欧美电影免费观看高清完整版| 日韩丝袜情趣美女图片| 久久综合久久综合久久综合| 国产婷婷一区二区| 国产精品美女久久久久aⅴ| ...中文天堂在线一区| 亚洲精品免费视频| 五月婷婷综合网| 久久99国内精品| 成人性生交大片免费看视频在线| 成av人片一区二区| 欧美日免费三级在线| 精品国产乱码久久久久久浪潮 | 91亚洲精品久久久蜜桃网站 | 欧美变态tickle挠乳网站| 国产亚洲欧美中文| 一区二区三区精品在线观看| 日韩精品乱码免费| 国产精品系列在线观看| 91精品1区2区| 精品福利在线导航| 亚洲综合视频网| 久久精品国产99久久6| www.视频一区| 欧美www视频| 一区二区三区欧美日| 狂野欧美性猛交blacked| 色综合欧美在线视频区| www久久精品| 亚洲动漫第一页| 99热国产精品| 精品免费国产一区二区三区四区| 亚洲三级在线看| 国产成人精品一区二区三区四区| 欧美日韩小视频|