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

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

?? ospf_opaque_lsa.c

?? vxworks下ospf協議棧
?? 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;							}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品在线观看| 2017欧美狠狠色| 精品久久久久久久人人人人传媒| 天天色图综合网| 国产宾馆实践打屁股91| 4hu四虎永久在线影院成人| 国产精品欧美精品| 久久99精品视频| 在线成人免费观看| 亚洲福中文字幕伊人影院| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 亚洲欧美一区二区三区国产精品 | 亚洲综合在线第一页| 国产91精品久久久久久久网曝门| 欧美乱熟臀69xxxxxx| 亚洲专区一二三| 在线观看国产一区二区| 亚洲人成电影网站色mp4| 成人美女视频在线看| 久久精品夜色噜噜亚洲a∨| 国产一区二区久久| 69久久夜色精品国产69蝌蚪网| 国产日韩精品一区| 精品在线你懂的| 日韩久久久久久| 激情六月婷婷综合| 精品粉嫩超白一线天av| 午夜久久久久久久久| 欧美精品亚洲二区| 亚洲va国产va欧美va观看| 色狠狠桃花综合| 亚洲码国产岛国毛片在线| 在线看国产日韩| 亚洲高清在线精品| 欧美日韩中文字幕一区| 亚洲免费伊人电影| 欧美在线观看视频在线| 亚洲午夜精品久久久久久久久| 欧美在线免费播放| 日韩av网站在线观看| 国产午夜久久久久| 蜜桃av一区二区在线观看| 91精品国产色综合久久ai换脸| 日本不卡免费在线视频| 精品国产伦一区二区三区观看体验| 久久精品国产亚洲一区二区三区| 26uuu精品一区二区| 国产**成人网毛片九色| 最新国产成人在线观看| 欧美日韩国产免费一区二区| 蜜乳av一区二区三区| 国产日本欧美一区二区| 色呦呦一区二区三区| 爽好多水快深点欧美视频| 亚洲精品在线电影| 91视频一区二区三区| 亚洲mv在线观看| 久久综合999| 色av综合在线| 国内精品国产成人国产三级粉色 | 国产片一区二区| 欧美天堂亚洲电影院在线播放| 另类成人小视频在线| 国产女人水真多18毛片18精品视频 | 欧美午夜电影一区| 国产黑丝在线一区二区三区| 亚洲视频免费在线观看| 精品免费99久久| 91麻豆福利精品推荐| 亚洲国产美女搞黄色| 91麻豆精品国产91| 国产精品一二一区| 夜夜亚洲天天久久| 久久久精品欧美丰满| 欧美性大战xxxxx久久久| 九色|91porny| 亚洲精品成人精品456| 精品1区2区在线观看| 欧美图片一区二区三区| 国产高清成人在线| 蜜臀av国产精品久久久久| 中文字幕一区av| 精品成人一区二区三区| 欧美在线色视频| 成年人午夜久久久| 激情久久五月天| 丝袜a∨在线一区二区三区不卡| 国产精品网站在线观看| 欧美变态tickling挠脚心| 欧美色图片你懂的| eeuss鲁片一区二区三区| 久久精品国产99国产精品| 91浏览器入口在线观看| 亚洲成人在线免费| 亚洲免费视频成人| 中文一区一区三区高中清不卡| 日韩免费看网站| 欧美一区二区视频观看视频| 91美女蜜桃在线| 91影视在线播放| av中文字幕在线不卡| 成人午夜视频网站| 成人精品小蝌蚪| 国产精品亚洲专一区二区三区| 美女精品一区二区| 蜜桃av一区二区| 九色综合国产一区二区三区| 久久99热这里只有精品| 丝袜亚洲另类丝袜在线| 午夜欧美2019年伦理| 婷婷夜色潮精品综合在线| 亚洲制服欧美中文字幕中文字幕| 亚洲欧美日韩系列| 亚洲美女屁股眼交| 一区二区三区国产豹纹内裤在线| 亚洲久本草在线中文字幕| 亚洲精品中文字幕乱码三区| 亚洲一区二区视频| 午夜视频一区二区三区| 日韩经典中文字幕一区| 青娱乐精品在线视频| 男男视频亚洲欧美| 激情综合一区二区三区| 国产精品一区二区在线播放| 成人97人人超碰人人99| 91久久精品一区二区三| 欧美福利一区二区| 欧美日韩大陆一区二区| 日韩精品专区在线| 久久久亚洲高清| 椎名由奈av一区二区三区| 亚洲一区二区三区四区中文字幕| 丝袜亚洲另类欧美综合| 久久精品国产成人一区二区三区 | 亚洲国产精品欧美一二99| 亚洲国产成人精品视频| 免费看欧美女人艹b| 国产激情一区二区三区四区| 99re8在线精品视频免费播放| 欧洲国内综合视频| 精品精品欲导航| 日韩伦理免费电影| 亚洲国产精品麻豆| 激情久久五月天| 在线免费观看日本欧美| 日韩三级视频在线看| 国产精品超碰97尤物18| 日韩影院精彩在线| caoporn国产一区二区| 91精品国产高清一区二区三区 | 精品视频在线免费看| 欧美大度的电影原声| 中文字幕一区二区三区视频| 亚洲永久免费视频| 丰满白嫩尤物一区二区| 在线成人小视频| 中文字幕一区二区三区精华液| 欧美aaaaa成人免费观看视频| 播五月开心婷婷综合| 欧美一区二区视频网站| 亚洲欧美视频在线观看| 国内外成人在线| 欧美日韩中文一区| 亚洲三级免费观看| 国产一区二区三区| 欧美一区在线视频| 洋洋成人永久网站入口| 国产成人午夜视频| 日韩一区二区免费高清| 亚洲最新在线观看| www.欧美色图| 久久久久97国产精华液好用吗| 午夜精品久久一牛影视| 色综合色狠狠天天综合色| 久久久久久久久久久久电影| 蜜臀av性久久久久蜜臀aⅴ四虎| 91成人在线精品| 综合欧美亚洲日本| www.亚洲国产| 国产精品人人做人人爽人人添| 久久精品久久久精品美女| 欧美片网站yy| 伊人婷婷欧美激情| 色婷婷av一区二区三区软件| 国产精品久久久久一区二区三区共 | 精品国产乱码久久久久久闺蜜| 肉肉av福利一精品导航| 欧美日韩亚洲综合在线| 亚洲激情av在线| 色婷婷综合视频在线观看| 综合色天天鬼久久鬼色| 97se狠狠狠综合亚洲狠狠| 国产精品传媒入口麻豆| 岛国一区二区在线观看| 日本一区二区三区四区在线视频| 韩国视频一区二区| 国产日韩精品久久久| 成人午夜视频免费看| 中文字幕五月欧美| 97超碰欧美中文字幕|