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

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

?? ospf_database_summary.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ospf_database_summary.c - Sets up database summary packets in DD Exchange State */ /* Copyright 1998 - 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02e,22apr03,ram	   SPR#76812 Modifications for OSPF performance enhancements02d,17feb03,mwv    SPR 85906 use IP header size in calculation for DD fragmentation02c,19nov02,mwv    Merge TMS code SPR 8428402b,09sep02,agi    Fixed broken conditional compile for OPAQUE_LSA02a,09oct02,agi    Fixed compiler warnings01x,08aug02,kc     Zero out allocated memory in ospf_allocate_ls_database_summary().01w,06jun02,jkw    Merged in code for NSSA SPR75496.01v,16apr02,jkw    One copy of external and type 11 lsa01u,23jan02,jkw    Update database summary with opaque lsas.01t,28nov01,jkw    Virtual link updates.01s,13oct01,kc     Dynamic configuration changes.01r,11oct01,jkw    Set pointer to NULL after table_free.01q,3may01,jkw     Added checks for NULL pointers and alarm messages01p,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_database_summary.c is used for creating the database summary list.This file is used during the database exchange process.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//*****************************************************************************/static enum OSPF_RETURN_FLAGS ospf_build_neighbor_database_summary_list (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor);static OSPF_LS_DATABASE_SUMMARY *ospf_add_each_advertisement_in_the_database_to_the_appropriate_list (	OSPF_LS_DATABASE_SUMMARY **ptr_to_sptr_database_summary,OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor);static enum OSPF_LS_TYPE ospf_get_maximum_ls_type (OSPF_INTERFACE *sptr_interface);static OSPF_LS_DATABASE_SUMMARY *ospf_add_advertisement_to_appropriate_list (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_LS_DATABASE_ENTRY *sptr_database_entry,OSPF_LS_DATABASE_SUMMARY *sptr_database_summary,	OSPF_LS_DATABASE_SUMMARY **prt_to_sptr_previous_database_summary,OSPF_LS_HEADER **ptr_to_sptr_ls_header);static OSPF_LS_DATABASE_SUMMARY *ospf_add_advertisement_to_neighbor_database_summary_list (OSPF_LS_DATABASE_SUMMARY *sptr_database_summary,	OSPF_LS_DATABASE_SUMMARY **ptr_to_sptr_previous_database_summary,OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor,	OSPF_LS_DATABASE_ENTRY *sptr_database_entry,USHORT advertisement_age,OSPF_LS_HEADER **ptr_to_sptr_ls_header);/**************************************************************************************** ospf_build_ls_database_summary - initializes summary and request lists.** This routine frees up all the neighbor database summary lists and the neighbor* request list.  Once this is finished it calls the function to build the* database summary list.** <sptr_interface> OSPF interface** <sptr_neighbor> Associated neighbor to OSPF interface** RETURNS: 	OSPF_NO_PROBLEM or OSPF_NO_BUFFERS or OSPF_BAD_REQUEST** ERRNO: N/A** NOMANUAL*/enum OSPF_RETURN_FLAGS ospf_build_ls_database_summary (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	enum OSPF_RETURN_FLAGS return_flag;	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_build_ls_database_summary\r\n");	ospf_free_neighbor_database_summary_list (sptr_neighbor);	ospf_free_neighbor_ls_request_list (sptr_neighbor);	return_flag = ospf_build_neighbor_database_summary_list (sptr_interface, sptr_neighbor);	return (return_flag);}/**************************************************************************************** ospf_build_neighbor_database_summary_list - builds link state database summary list** This routine calls the function to allocate memory and adds link state* advertisement headers to the database summary list** <sptr_interface> OSPF interface** <sptr_neighbor> Associated neighbor to OSPF interface** RETURNS: 	OSPF_NO_PROBLEM or OSPF_NO_BUFFERS or OSPF_BAD_REQUEST** ERRNO: N/A** NOMANUAL*/static enum OSPF_RETURN_FLAGS ospf_build_neighbor_database_summary_list (OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	OSPF_LS_DATABASE_SUMMARY *sptr_database_summary =NULL;	OSPF_LS_DATABASE_SUMMARY *sptr_previous_database_summary =NULL;	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_build_neighbor_database_summary_list\r\n");	sptr_database_summary = ospf_allocate_ls_database_summary (sptr_interface);	if (sptr_database_summary == NULL)		{		return (OSPF_NO_BUFFERS);		}	sptr_database_summary->size_of_packet = OSPF_PACKET_SIZE + OSPF_DATABASE_HEADER_SIZE;	sptr_neighbor->sptr_database_summary = sptr_database_summary;									/* this is the first packet in the list */	sptr_previous_database_summary = ospf_add_each_advertisement_in_the_database_to_the_appropriate_list (&sptr_database_summary,		sptr_interface, sptr_neighbor);	if (sptr_database_summary == NULL)		{		return (OSPF_NO_BUFFERS);		}	if (sptr_database_summary->size_of_packet == (OSPF_PACKET_SIZE + OSPF_DATABASE_HEADER_SIZE))		{																												/* check if the last formed packet is empty */		if (sptr_database_summary == sptr_neighbor->sptr_database_summary)			{																											/* check if it's the only packet in the list */			sptr_neighbor->sptr_database_summary = NULL;													/* it is, so make it an empty list */			}		ospf_free_ls_database_summary (sptr_database_summary);		sptr_database_summary = sptr_previous_database_summary;		}	if (sptr_database_summary != NULL)		{		if (sptr_neighbor->mode == OSPF_SLAVE)																	/* leave more bit on if OSPF_MASTER */			{			sptr_database_summary->sptr_ospf_header->rest_of_packet.database.flags._bit.more = FALSE;			}		sptr_database_summary->sptr_forward_link = NULL;		}	return (OSPF_NO_PROBLEM);}/**************************************************************************************** ospf_allocate_ls_database_summary - allocate memory for database summary** This routine allocates for the database summary.** <sptr_interface> OSPF interface** RETURNS: 	OSPF_LS_DATABASE_SUMMARY * or NULL** ERRNO: N/A** NOMANUAL*/OSPF_LS_DATABASE_SUMMARY *ospf_allocate_ls_database_summary (OSPF_INTERFACE *sptr_interface){    OSPF_LS_DATABASE_SUMMARY *sptr_database_summary = NULL;	ULONG interface_mtu =0;	OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_allocate_ls_database_summary\r\n");	sptr_database_summary = (OSPF_LS_DATABASE_SUMMARY *) table_malloc (1, sizeof (OSPF_LS_DATABASE_SUMMARY));	if (sptr_database_summary != NULL)		{		memset (sptr_database_summary, 0x00, sizeof (OSPF_LS_DATABASE_SUMMARY));		interface_mtu = ospf_get_interface_mtu (sptr_interface);		sptr_database_summary->sptr_ospf_header = table_malloc (1, interface_mtu); /* WAS ospf_get_an_ospf_send_packet (interface_mtu); */		if (sptr_database_summary->sptr_ospf_header != NULL)			{            memset( sptr_database_summary->sptr_ospf_header, 0x00, interface_mtu );            sptr_database_summary->size_of_packet = (USHORT) (OSPF_PACKET_SIZE + OSPF_DATABASE_HEADER_SIZE);            }		else			{			ospf_print_memory_error_message_and_free_buffer_if_necessary ((void *)sptr_database_summary , "OSPF_LS_DATABASE_SUMMARY");			}        }		else			{            ospf_print_memory_error_message_and_free_buffer_if_necessary ((void *)NULL , "OSPF_HEADER");			}	return (sptr_database_summary);}/********************************************************************************* ospf_add_each_advertisement_in_the_database_to_the_appropriate_list - * adds advertisement header to the appropriate list** This routine adds advertisement headers to the database summary list** <ptr_to_sptr_database_summary> pointer to the database summary list to be * modified** <sptr_interface> OSPF interface** <sptr_neighbor> OSPF neighbor associated with interface** RETURNS: 	OSPF_LS_DATABASE_SUMMARY * or NULL** ERRNO: N/A** NOMANUAL*/static OSPF_LS_DATABASE_SUMMARY *ospf_add_each_advertisement_in_the_database_to_the_appropriate_list     (    OSPF_LS_DATABASE_SUMMARY **ptr_to_sptr_database_summary,    OSPF_INTERFACE *sptr_interface,    OSPF_NEIGHBOR *sptr_neighbor    )    {    OSPF_LS_DATABASE_SUMMARY *sptr_previous_database_summary =NULL;    OSPF_LS_HEADER *sptr_ls_header =NULL;    enum OSPF_LS_TYPE maximum_ls_type;    enum OSPF_LS_TYPE ls_type;    ULONG index =0;    OSPF_LS_DATABASE_HEAD *sptr_ls_database_head =NULL;    OSPF_LS_DATABASE_ENTRY *sptr_database_entry =NULL;    OSPF_LS_DATABASE_ENTRY *sptr_next_database_entry =NULL;    enum BOOLEAN found_lsa = TRUE;    enum BOOLEAN found_external_lsa = TRUE;#if defined (__OPAQUE_LSA__)    enum BOOLEAN found_opaque_lsa = TRUE;    enum BOOLEAN found_type_11_lsa = TRUE;#endif    OSPF_PRINTF_PROLOGUE (OSPF_PROLOGUE_PRINTF, "OSPF: Entering ospf_add_each_advertisement_in_the_database_to_the_appropriate_list\r\n");    sptr_previous_database_summary = NULL;    sptr_ls_header = &((*ptr_to_sptr_database_summary)->sptr_ospf_header->rest_of_packet.database.link_state_advertisement_header);    maximum_ls_type = ospf_get_maximum_ls_type (sptr_interface);    /* for each type of advertisement */    for (ls_type = OSPF_LS_ROUTER; ls_type <= maximum_ls_type; ++ls_type)        {        /* for each hash list */        for (index = 0x00000000L, sptr_ls_database_head = &(sptr_interface->sptr_area->ls_database_hash_table[ls_type][index]);             index < OSPF_HASH_TABLE_SIZE;             ++index, sptr_ls_database_head = &(sptr_interface->sptr_area->ls_database_hash_table[ls_type][index]))            {            if (sptr_ls_database_head == NULL)                {                continue;                }	        /* SPR#76812 */	       	for (sptr_database_entry = sptr_ls_database_head->sptr_linear_database_entry;	       		sptr_database_entry != NULL;	       	    sptr_database_entry = sptr_next_database_entry)                {				sptr_next_database_entry = sptr_database_entry->sptr_forward_link;                *ptr_to_sptr_database_summary =                     ospf_add_advertisement_to_appropriate_list                         (sptr_interface,                         sptr_neighbor, sptr_database_entry,                         *ptr_to_sptr_database_summary,                         &sptr_previous_database_summary,                         &sptr_ls_header);                if (*ptr_to_sptr_database_summary == NULL)                    {                    found_lsa = FALSE;                    break;                    }                }            if (found_lsa == FALSE)                {                break;                }            }            if (found_lsa == FALSE)                {                break;                }        }    /* Check for external lsdb */    /* for each hash list */    for (index = 0x00000000L, sptr_ls_database_head = &(ospf.external_database_hash_table[LS_EXTERNAL_LSA][index]);         index < OSPF_HASH_TABLE_SIZE;         ++index, sptr_ls_database_head = &(ospf.external_database_hash_table[LS_EXTERNAL_LSA][index]))        {        if (sptr_ls_database_head == NULL)            {            continue;            }        /* for each database entry */        /* SPR#76812 */       	for (sptr_database_entry = sptr_ls_database_head->sptr_linear_database_entry;       		sptr_database_entry != NULL;       	    sptr_database_entry = sptr_next_database_entry)            {			sptr_next_database_entry = sptr_database_entry->sptr_forward_link;#if defined (__NSSA__)#if defined (__NSSA_FIXES__)            if(sptr_interface->sptr_area->flags._bit.nssa == TRUE)				{                continue;				}#endif /*__NSSA_FIXES__*/#endif /* __NSSA__ */				   																										/* for each database entry */            *ptr_to_sptr_database_summary =                 ospf_add_advertisement_to_appropriate_list                     (sptr_interface,                     sptr_neighbor,                     sptr_database_entry,                     *ptr_to_sptr_database_summary,                     &sptr_previous_database_summary,                     &sptr_ls_header);            if (*ptr_to_sptr_database_summary == NULL)                {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一二三| 国产无一区二区| 精品国产制服丝袜高跟| 国产亚洲精品aa| 亚洲人精品午夜| 婷婷中文字幕综合| 国产综合一区二区| 99久久综合色| 欧美美女一区二区| 国产日韩av一区二区| 亚洲图片自拍偷拍| 国产乱码字幕精品高清av| 99精品国产视频| 3atv一区二区三区| 国产精品欧美极品| 午夜精品福利在线| 国产91在线观看丝袜| 欧美美女激情18p| 国产精品免费丝袜| 日韩激情视频网站| a4yy欧美一区二区三区| 日韩天堂在线观看| 亚洲品质自拍视频| 国产最新精品免费| 欧美日韩夫妻久久| 亚洲婷婷国产精品电影人久久| 日韩中文字幕不卡| www国产成人免费观看视频 深夜成人网| 中文字幕不卡在线观看| 午夜私人影院久久久久| hitomi一区二区三区精品| 51久久夜色精品国产麻豆| 国产精品天美传媒| 蜜桃av一区二区| 色悠悠亚洲一区二区| 国产亲近乱来精品视频| 日韩国产精品久久| 欧洲精品中文字幕| 国产精品国产三级国产aⅴ中文| 免费的国产精品| 欧美日韩亚洲综合一区| 中文字幕亚洲欧美在线不卡| 国产一区福利在线| 日韩欧美亚洲一区二区| 午夜精品aaa| 色婷婷综合久久久久中文一区二区| 欧美大片国产精品| 亚洲国产精品一区二区尤物区| kk眼镜猥琐国模调教系列一区二区| 精品国产免费视频| 奇米综合一区二区三区精品视频 | 欧美一区二区三区在线| 亚洲蜜臀av乱码久久精品| 国产成人在线电影| 精品国产乱码久久久久久夜甘婷婷| 亚洲一区二区高清| 91高清视频在线| 国产精品久久久久久久久免费丝袜| 极品瑜伽女神91| 欧美成人三级在线| 蜜桃视频在线观看一区| 欧美日韩1234| 亚洲第四色夜色| 欧美色图天堂网| 一区二区三区四区蜜桃| 97精品国产露脸对白| 国产精品久久久久影院亚瑟| 粉嫩aⅴ一区二区三区四区| 久久精品在线免费观看| 美女精品自拍一二三四| 欧美电视剧免费全集观看 | 日韩午夜激情视频| 日韩二区三区四区| 91精品国产一区二区三区 | 日韩一卡二卡三卡四卡| 免费视频一区二区| 日韩欧美国产1| 久久99精品久久只有精品| 亚洲一卡二卡三卡四卡 | 亚洲人精品一区| 色偷偷成人一区二区三区91| 亚洲免费在线看| 欧美视频一区二区在线观看| 亚洲高清免费视频| 欧美老年两性高潮| 久久国产精品无码网站| 久久综合九色综合欧美98| 国产精品99久久久久久宅男| 国产欧美久久久精品影院| www.色综合.com| 亚洲美女屁股眼交| 69av一区二区三区| 久久99精品久久久久久 | aa级大片欧美| 亚洲综合偷拍欧美一区色| 欧美日本不卡视频| 久久99热国产| 中文字幕不卡一区| 日本乱码高清不卡字幕| 午夜精品久久久| 久久这里只有精品首页| 99精品视频在线观看| 亚洲一区二区四区蜜桃| 欧美成人伊人久久综合网| 国产99久久久久| 一区二区不卡在线视频 午夜欧美不卡在| 91黄色激情网站| 蜜臀久久99精品久久久画质超高清 | 26uuu国产电影一区二区| 国产成人亚洲综合a∨婷婷| 亚洲日本欧美天堂| 6080亚洲精品一区二区| 国产成a人亚洲精| 夜夜精品浪潮av一区二区三区| 91精品国产综合久久久久久久| 激情文学综合丁香| 亚洲免费观看高清完整版在线 | 一区二区三区在线视频免费| 欧美久久久久免费| 大桥未久av一区二区三区中文| 一二三四区精品视频| 精品成人一区二区三区| 91久久精品网| 国产一区在线不卡| 亚洲精品久久久蜜桃| 日韩欧美国产精品| 色综合久久久网| 欧美体内she精视频| 国产一区视频导航| 性做久久久久久| 国产精品人成在线观看免费| 91精品国产综合久久精品图片| 成人午夜视频福利| 日本中文在线一区| 亚洲免费毛片网站| 国产视频不卡一区| 在线成人午夜影院| 99久精品国产| 国内成人精品2018免费看| 亚洲国产三级在线| 亚洲国产激情av| 日韩一区二区免费电影| 色综合一个色综合亚洲| 久久66热偷产精品| 亚洲r级在线视频| 国产精品国产馆在线真实露脸| 欧美一级专区免费大片| 91官网在线免费观看| 成人国产精品视频| 久久99最新地址| 婷婷国产v国产偷v亚洲高清| |精品福利一区二区三区| 久久亚洲一级片| 在线电影欧美成精品| 在线观看亚洲一区| 成人小视频在线| 精品一区二区三区在线观看| 亚洲第一久久影院| 亚洲欧美日韩久久| 国产日本一区二区| 精品欧美一区二区久久| 欧美日韩大陆一区二区| 一本久久精品一区二区| 波多野结衣在线一区| 国产一区二区中文字幕| 日韩电影在线一区二区三区| 亚洲一区二区三区在线| 亚洲另类春色国产| 成人免费一区二区三区视频| 国产精品污www在线观看| 国产校园另类小说区| 久久综合久久综合九色| 日韩欧美国产精品| 日韩欧美成人一区| 337p亚洲精品色噜噜| 欧美电影在线免费观看| 欧美日韩一区二区三区视频| 欧美亚洲综合另类| 在线观看国产精品网站| 一本大道av一区二区在线播放| av亚洲精华国产精华精| 成人妖精视频yjsp地址| 成人激情免费视频| 不卡的av电影在线观看| eeuss鲁一区二区三区| 不卡欧美aaaaa| 97精品国产露脸对白| 色婷婷久久久亚洲一区二区三区| 色综合久久综合网97色综合| 91国偷自产一区二区使用方法| 欧美在线一区二区| 日本一区二区视频在线| 国产网站一区二区| 国产精品伦一区二区三级视频| 中文字幕在线免费不卡| 亚洲丝袜制服诱惑| 一区二区三区在线视频观看58| 亚洲综合在线观看视频| 亚欧色一区w666天堂| 美腿丝袜一区二区三区|