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

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

?? ospf_opaque_lsa.c

?? vxworks下ospf協(xié)議棧
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* ospf_opaque_lsa.c *//* Copyright 2000-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02e,17jul03,agi  Fixed compilation with __OPAQUE_LSA__ flag turned on02d,14may03,agi  Changed RWOS semaphores to vxWorks semaphores02c,22apr03,ram	 SPR#76812 Modifications for OSPF performance enhancements02b,19nov02,mwv  Merge TMS code SPR 8428402a,08oct02,agi  Fixed compiler warnings01d,19apr02,jkw  Fix memory leak for external lsas.01c,16apr02,jkw  One copy of external and type 11 lsa01b,09apr02,jkw  Sequence number wrap01a,20dec01,jkw  Removed sptr_area->sptr_interfaces structure.*//*DESCRIPTIONospf_opaque_lsa.c is used for originating opaque lsas.  This file contains theAPIs to originate, retrieve, remove, and register callback functions for opaquelsas.This file is used whenever an opaque lsa needs to be manipulated.*//******************************************************************************//*opaque lsa opaque apis jkw*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ */static void ospf_te_build_router_tlv (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_link_type (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_link_id (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_local_ip_address (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_remote_ip_address (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_metric (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_maximum_bandwidth (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_maximum_reservable_bandwidth (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_unreserved_bandwidth (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_sub_tlv_resource_class_color (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_build_link_tlv (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);static void ospf_te_lsa_body_set (char **new_lsa, USHORT *length, OSPF_TE_PARAMETERS *pTLVparms);#if defined (__OPAQUE_LSA__)/****************************************************************************//*	Function: ospfSetOrigOpaqueLsa	Input: ULONG - ip_address		   ULONG - netmask		   BYTE lsa_type		   BYTE opaque_type	RETURNS: int - 0|-1	Description: This function finds the interfaces to flood an opaque lsa out and calls a	callback function to the traffic engineering extension to add the type, length, value field	to the opaque lsa.*/int ospfSetOrigOpaqueLsa(ULONG ip_address, ULONG netmask, BYTE lsa_type,	BYTE opaque_type){	OSPF_OPAQUE_CALLBACK *sptr_opaque_callback = NULL;	OSPF_AREA_ENTRY *sptr_area = NULL;	OSPF_AREA_ENTRY *sptr_next_area = NULL;	OSPF_INTERFACE *sptr_interface = NULL;	OSPF_INTERFACE *sptr_next_interface = NULL;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospfSetOrigOpaqueLsa\r\n");	semTake (ospf_global_mutex , WAIT_FOREVER);	if (ospf.opaque_capability == TRUE)		{    	for (sptr_interface = ospf.sptr_interface_list; sptr_interface != NULL;          sptr_interface = sptr_next_interface)    		{			sptr_next_interface = sptr_interface->sptr_forward_link;        	if ((sptr_interface->address & sptr_interface->netmask) == (ip_address & netmask))        		{    	        break;        		}    		}		switch (lsa_type)			{			case 9:				if (sptr_interface != NULL)					{					for (sptr_area = ospf.sptr_area_list; sptr_area != NULL; sptr_area = sptr_next_area)						{						sptr_next_area = sptr_area->sptr_forward_link;						if (sptr_interface->sptr_area != NULL)							{							if (sptr_area->area_id == sptr_interface->sptr_area->area_id)								{								for (sptr_interface = sptr_area->sptr_interfaces; sptr_interface != NULL; sptr_interface = sptr_next_interface)									{									sptr_next_interface = sptr_interface->sptr_forward_link;									if (sptr_interface->area_id == sptr_area->area_id)										{										sptr_opaque_callback = ospfRetrieveOpaqueCallback(lsa_type, opaque_type);										if (sptr_opaque_callback != NULL)											{											sptr_opaque_callback->opaque_lsa_originate_hook((void *)sptr_interface, lsa_type, opaque_type, 0);											}										}									}								}							}						}					} 				else 					{					semGive (ospf_global_mutex ); 					return -1; 					}				semGive (ospf_global_mutex );				return 0;			case 10:				if (sptr_interface != NULL)					{					for (sptr_area = ospf.sptr_area_list; sptr_area != NULL; sptr_area = sptr_next_area)						{						sptr_next_area = sptr_area->sptr_forward_link;						if (sptr_interface->sptr_area != NULL)							{							if (sptr_area->area_id == sptr_interface->sptr_area->area_id)								{								sptr_opaque_callback = ospfRetrieveOpaqueCallback(lsa_type, opaque_type);								if (sptr_opaque_callback != NULL)									{									sptr_opaque_callback->opaque_lsa_originate_hook((void *)sptr_area, lsa_type, opaque_type, 0);									}								}							}						}					} 				else 					{					semGive (ospf_global_mutex ); 					return -1; 					}				semGive (ospf_global_mutex );				return 0;			case 11:				if (sptr_interface != NULL)					{						sptr_opaque_callback->opaque_lsa_originate_hook((void *)sptr_interface, lsa_type, opaque_type, 0);					}				else					{					semGive (ospf_global_mutex );					return -1;					}				semGive (ospf_global_mutex );				return 0;			default:				semGive (ospf_global_mutex );				return -1;			}		}	else		{		semGive (ospf_global_mutex );		return -1;		}}/***********************************************************************************************************************************//*	Function: ospfRemoveType9	Input: ULONG - opaque_lsid		   ULONG - opaque_advertising_router	RETURNS: int - 0|-1	Description: This function finds the opaque lsa in the opaque lsdb using the link state id	and the advertising router as keys.  The link state advertisement is prematurely aged	by setting the opaque lsa's age to MAXIMUM_AGE and floods it out its interfaces.	It then removes the opaque lsa from the appropriate lists.*/int ospfRemoveType9(ULONG opaque_lsid, ULONG opaque_advertising_router)    {	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;	USHORT age =0;	enum TEST test_return_type;	ULONG index;	ULONG advertising_router;	ULONG lsid;	OSPF_AREA_ENTRY *sptr_area = NULL;	OSPF_AREA_ENTRY *sptr_next_area = NULL;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospfRemoveType9 \r\n");	semTake (ospf_global_mutex , WAIT_FOREVER);	    if (ospf.opaque_capability == TRUE)		{		for (sptr_area = ospf.sptr_area_list; sptr_area != NULL; sptr_area = sptr_next_area)			{			sptr_next_area = sptr_area->sptr_forward_link;			for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_9_LSA][index]);	/* for each hash list */				index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_9_LSA][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;					advertising_router = sptr_database_entry->advertisement.sptr_router->ls_header.advertising_router;					advertising_router = net_to_host_long (advertising_router);					lsid = sptr_database_entry->advertisement.sptr_router->ls_header.id;					lsid = net_to_host_long(lsid);					if ((lsid == opaque_lsid) && (advertising_router == opaque_advertising_router))						{						age = OSPF_MAXIMUM_AGE;						age = host_to_net_short (age);						sptr_database_entry->advertisement.sptr_router->ls_header.age = age;						test_return_type = ospf_check_if_advertisements_link_state_id_is_equal_to_one_of_the_routers_own_IP_interface_addresses (							sptr_database_entry->advertisement.sptr_router);						if ((sptr_database_entry->ls_database_freeme == FALSE) && ((advertising_router == ospf.router_id) ||							((sptr_database_entry->advertisement.sptr_router->ls_header.type == OSPF_LS_NETWORK) && (test_return_type == PASS)) ) )							{							(void) ospf_flood_advertisement_out_some_subset_of_the_routers_interfaces (sptr_database_entry->advertisement.sptr_router,								sptr_area, NULL, NULL, TRUE);							sptr_database_entry->ls_database_freeme = TRUE;							ospf_clean_up_retransmit_lists_affiliated_with_this_advertisement (sptr_database_entry);							(void) ospf_free_database_entry (sptr_database_entry);							sptr_database_entry = NULL;							}						else if ((sptr_database_entry->sptr_ls_database_retrans == NULL) &&							(ospf.number_of_neighbors_in_exchange_state == ospf.number_of_neighbors_in_full_state))							{							ospf_clean_up_retransmit_lists_affiliated_with_this_advertisement (sptr_database_entry);							(void) ospf_free_database_entry (sptr_database_entry);							sptr_database_entry = NULL;							}						}					}				}			}		semGive (ospf_global_mutex );		return 0;		}	else		{		semGive (ospf_global_mutex );		return -1;		}}/***********************************************************************************************************************************//*	Function: ospfRemoveType10	Input: ULONG - opaque_lsid		   ULONG - opaque_advertising_router	RETURNS: int - 0|-1	Description: This function finds the opaque lsa in the opaque lsdb using the link state id	and the advertising router as keys.  The link state advertisement is prematurely aged	by setting the opaque lsa's age to MAXIMUM_AGE and floods it out its interfaces.	It then removes the opaque lsa from the appropriate lists.*/int ospfRemoveType10(ULONG opaque_lsid, ULONG opaque_advertising_router)    {	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;	USHORT age =0;	enum TEST test_return_type;	ULONG index;	ULONG advertising_router;	ULONG lsid;	OSPF_AREA_ENTRY *sptr_area = NULL;	OSPF_AREA_ENTRY *sptr_next_area = NULL;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospfRemoveType10 \r\n");	semTake (ospf_global_mutex , WAIT_FOREVER);	    if (ospf.opaque_capability == TRUE)		{		for (sptr_area = ospf.sptr_area_list; sptr_area != NULL; sptr_area = sptr_next_area)			{			sptr_next_area = sptr_area->sptr_forward_link;			for (index = 0x00000000L, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_10_LSA][index]);	/* for each hash list */				index < OSPF_HASH_TABLE_SIZE; ++index, sptr_ls_database_head = &(sptr_area->opaque_ls_database_hash_table[TYPE_10_LSA][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;					advertising_router = sptr_database_entry->advertisement.sptr_router->ls_header.advertising_router;					advertising_router = net_to_host_long (advertising_router);					lsid = sptr_database_entry->advertisement.sptr_router->ls_header.id;					lsid = net_to_host_long(lsid);					if ((lsid == opaque_lsid) && (advertising_router == opaque_advertising_router))						{						age = OSPF_MAXIMUM_AGE;						age = host_to_net_short (age);						sptr_database_entry->advertisement.sptr_router->ls_header.age = age;						test_return_type = ospf_check_if_advertisements_link_state_id_is_equal_to_one_of_the_routers_own_IP_interface_addresses (							sptr_database_entry->advertisement.sptr_router);						if ((sptr_database_entry->ls_database_freeme == FALSE) && ((advertising_router == ospf.router_id) ||							((sptr_database_entry->advertisement.sptr_router->ls_header.type == OSPF_LS_NETWORK) && (test_return_type == PASS)) ) )							{							(void) ospf_flood_advertisement_out_some_subset_of_the_routers_interfaces (sptr_database_entry->advertisement.sptr_router,								sptr_area, NULL, NULL, TRUE);							sptr_database_entry->ls_database_freeme = TRUE;							ospf_clean_up_retransmit_lists_affiliated_with_this_advertisement (sptr_database_entry);							(void) ospf_free_database_entry (sptr_database_entry);							sptr_database_entry = NULL;							}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区久久悠悠色av| 日韩视频免费观看高清完整版在线观看 | 久久久午夜电影| 7777精品伊人久久久大香线蕉经典版下载| 成人av网站在线| 91在线精品秘密一区二区| 国产成人精品免费视频网站| 久久国产剧场电影| 成人精品鲁一区一区二区| 99久久99久久免费精品蜜臀| 欧美日韩日日骚| 精品国产免费人成电影在线观看四季 | 日韩亚洲欧美高清| 久久久久久久综合色一本| 亚洲激情av在线| 久久先锋影音av| 亚洲福利视频一区二区| 日本成人超碰在线观看| 豆国产96在线|亚洲| 91黄色免费版| 国产精品福利电影一区二区三区四区| 一区二区免费在线播放| 欧美va亚洲va| 日韩三级免费观看| 国产精品麻豆欧美日韩ww| 青娱乐精品在线视频| 欧美日韩一区 二区 三区 久久精品| 精品久久久久久久久久久院品网| 亚洲色图在线视频| 99久久国产综合色|国产精品| 色综合天天综合网天天看片| 精品国产91乱码一区二区三区| 亚洲综合图片区| 欧美三片在线视频观看| 亚洲精品精品亚洲| 欧美日韩国产综合久久| 亚洲一区二区在线视频| 欧美探花视频资源| 午夜久久久影院| 日韩欧美黄色影院| 国产一区二区三区免费观看| 久久久一区二区三区捆绑**| 国产成人在线网站| 亚洲综合视频在线观看| 欧美日韩日日骚| 国产成人自拍网| 亚洲欧美日韩小说| 日韩女优电影在线观看| 成人一区二区三区中文字幕| 亚洲国产精品成人综合色在线婷婷 | 91丨porny丨在线| 国产精品久久久久毛片软件| 久久疯狂做爰流白浆xx| 久久先锋影音av鲁色资源网| 成人精品gif动图一区| 亚洲电影一级片| 亚洲欧洲另类国产综合| 欧美一级在线观看| 91香蕉视频污在线| 国产永久精品大片wwwapp| 亚洲男人天堂av网| 国产拍揄自揄精品视频麻豆| 在线欧美日韩精品| 成人免费看黄yyy456| 九色综合国产一区二区三区| 亚洲欧美经典视频| 国产精品每日更新| 国产三区在线成人av| 2024国产精品| 久久精品日产第一区二区三区高清版 | 丁香婷婷深情五月亚洲| 久久se精品一区精品二区| 免费成人在线观看| 黄一区二区三区| 国内精品视频666| 国产精品亚洲人在线观看| 国产一区二区三区蝌蚪| 国产成人亚洲综合a∨婷婷图片 | 国产一区二区久久| 国产乱码精品一区二区三区av| 久久99国产精品成人| 日本aⅴ免费视频一区二区三区 | 亚洲国产精品尤物yw在线观看| 中文字幕欧美国产| 中文字幕在线观看不卡| 一个色妞综合视频在线观看| 午夜影院久久久| 国产精品77777竹菊影视小说| 国产suv精品一区二区883| 99国产精品国产精品毛片| 欧美日韩三级在线| 国产欧美一区二区三区鸳鸯浴| √…a在线天堂一区| 午夜久久久久久久久久一区二区| 美国av一区二区| 色成人在线视频| 精品欧美一区二区久久| 一区二区三区在线播放| 懂色中文一区二区在线播放| 欧美精品xxxxbbbb| 亚洲精品视频一区二区| 国产成人在线看| 久久人人97超碰com| 日韩精品一区第一页| av激情亚洲男人天堂| 久久综合99re88久久爱| 日本不卡一二三| 欧美三级视频在线观看| 亚洲精品美国一| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲午夜精品网| 欧美日韩一区二区在线观看视频| 国产日韩在线不卡| 天天综合天天综合色| 国产一区二区不卡老阿姨| 日韩欧美综合在线| 国产一区 二区 三区一级| 精品少妇一区二区三区在线播放| 亚洲国产日韩a在线播放性色| 色噜噜狠狠一区二区三区果冻| 亚洲欧洲成人自拍| 欧美性大战久久| 国内成+人亚洲+欧美+综合在线| 日韩一区二区在线免费观看| 久88久久88久久久| 国产精品久久久久久久午夜片| 色综合天天综合色综合av | 欧美精品一区二区不卡| zzijzzij亚洲日本少妇熟睡| 亚洲午夜电影在线观看| 精品成人免费观看| 日本丰满少妇一区二区三区| 视频一区免费在线观看| 国产精品视频第一区| 91精品国产综合久久久久久久| 国产成人亚洲综合a∨猫咪| 性久久久久久久久| 亚洲精品视频在线| 欧美激情在线一区二区三区| 欧美一区二区视频在线观看| aa级大片欧美| 国产suv精品一区二区883| 国精产品一区一区三区mba视频 | 麻豆成人av在线| 五月婷婷激情综合| 亚洲精品视频一区二区| 1000部国产精品成人观看| 国产精品伦一区二区三级视频| 久久久亚洲欧洲日产国码αv| 欧美高清hd18日本| 国内精品免费在线观看| 裸体一区二区三区| 水野朝阳av一区二区三区| 亚洲国产人成综合网站| 亚洲一区二区四区蜜桃| 亚洲男人的天堂一区二区| 亚洲婷婷国产精品电影人久久| 中文字幕制服丝袜一区二区三区| 欧美激情一二三区| 一区二区三区小说| 奇米一区二区三区| 成人性生交大片免费看中文| 北条麻妃一区二区三区| 欧美日韩在线直播| 精品第一国产综合精品aⅴ| 国产校园另类小说区| 亚洲乱码中文字幕| 无码av免费一区二区三区试看| 国产一区二区美女诱惑| 91福利精品视频| 精品国产91乱码一区二区三区| 国产精品理论片在线观看| 亚洲成人av一区二区三区| 韩国三级在线一区| 欧美日韩中文另类| 亚洲欧洲av色图| 国内精品视频一区二区三区八戒| 欧洲另类一二三四区| 国产日韩v精品一区二区| 婷婷成人激情在线网| 91亚洲男人天堂| 国产精品视频线看| 国产精品一区免费视频| 欧美一级高清大全免费观看| 亚洲国产美女搞黄色| 99精品一区二区三区| 国产日韩欧美麻豆| 国产黑丝在线一区二区三区| 日韩色视频在线观看| 午夜精品视频在线观看| 欧美色视频一区| 婷婷综合在线观看| 欧美一卡在线观看| 国产成人av资源| 一区免费观看视频| 成人午夜视频网站| 久久精品一区二区三区不卡牛牛| 韩国av一区二区三区在线观看| 欧美一区二区三区色| 国产999精品久久|