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

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

?? nat_timer.c

?? VXWORKS NAT 部分源代碼3 有興趣朋友可以參考下
?? C
字號:
/* nat_timer.c */

/* Copyright 2000-2003 Wind River Systems, Inc. */

/* @format.tab-size 4, @format.use-tabs true, @format.new-line lf */

/*
modification history
--------------------
01d,16jun03,myz  Call the new fragment translation timer and removed old one.
01c,25apr03,myz  added debug switch check before calling nat_printf in one case
01b,24apr03,zhu  updated copyright
01a,21apr03,myz  replaced swap(_long) with the htons(l) macros, 
                 replaced RWOS list functions with ones in dllLib.c.
040903  vks     updated Copyright info
040303  vks     replaced table_free with free
092502  vvv     modified fragment lists to use lstLib instead of rw_container;
		added semaphore protection (SPR #79675)
082301	tk	Modify check_tcp_translation_entry_timer so that if static TCP
		entry, don't delete entry when timer goes to 0. 
071101	tk	Call natFreeBind to delete TCP, UDP, and IP entry from its 
                respective translation list and the bind list.
062801	tk	Add the ip semaphore lock in check_ip_translation_entry_timer.
060401	tk	Fix the static entry disable problem with static address (IP) 
		translations. The IP static entry got permanently deleted from
                translation list so it can't be revived even when the static 
                entry is reenabled.
050401	tk	Delete TCP/UDP entry from translation list regardless of
		whether it is static or dynamic when its translation timer 
                expires.  The static entries are kept in separate tables.  
                A static flag in the translation list simply indicates the 
                address is bound to a static entry, but the entry shouldn't 
                stay permanently in the translation list as the next TCP/UDP
                connection will require creation of a new control block anyway
               (client's port changes with each connection).
*/
#include "nat.h"
#include "nat_api.h"
/************************************************************************/
void check_tcp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_tcp_translation_list);
static void check_ip_translation_entry_timer (IP_TRANSLATION_HEADER *sptr_ip_translation_list);
void check_udp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_udp_translation_list);
void check_icmp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_icmp_translation_list);
static void check_sequence_entry_timer (SEQUENCE_HEADER *sptr_sequence_list);
extern STATUS 	ifFlagGet (char *interfaceName, int *flags);
extern unsigned char Link_Is_Change;
/************************************************************************/


void nat_timer (void)
{
	unsigned long nat_timeisup_count;
	int if_flag;
	NAT_CURRENCY_TRANSLATION_ENTRY *sptr_translation_entry=NULL;
	NAT_BIND_INFO* bind_info=NULL;

	if(!nat.port[nat.global_port_number].enabled)
	{
		if((ifFlagGet(nat.port[nat.global_port_number].ifname,&if_flag))==ERROR)
		{
			return;
		}
		if(if_flag&0x1)/*interface is up*/
		{
			nat.port[nat.global_port_number].enabled=TRUE;
			nat.port[nat.global_port_number].ifunit=NULL;
		}
		return ;
	}
	if (nat.single_global_address_enabled == TRUE)
	{
		if(Link_Is_Change)
		{
			for(nat_timeisup_count=0;nat_timeisup_count<MAX_NAT_ENTRYS;nat_timeisup_count++)
			{
				if( natTabArray[nat_timeisup_count].local_address== 0 ) 
					continue;
				else
				{
					sptr_translation_entry=&natTabArray[nat_timeisup_count];
					if(sptr_translation_entry->bind_id)
					{
						if(natFreeBind ((u_long)&nat, 0, sptr_translation_entry->bind_id)!=NAT_OK)
						{
							bind_info=(NAT_BIND_INFO*)sptr_translation_entry->bind_id;
							if(bind_info)
							{
								free(bind_info);
								bind_info=NULL;
							}
						}
					}
				
					semTake(natentrylock, WAIT_FOREVER);
					natDelete_entrys(sptr_translation_entry);
					semGive(natentrylock);
				}
			}
			Link_Is_Change=0;
			return;
		}
		for(nat_timeisup_count=0;nat_timeisup_count < MAX_NAT_ENTRYS; nat_timeisup_count++)
		{
			sptr_translation_entry=&natTabArray[nat_timeisup_count];
			if(sptr_translation_entry==NULL)
				continue;
			if(sptr_translation_entry->local_address==0)
			{
				continue;
			}
			if( sptr_translation_entry->static_entry== TRUE)
			{
				continue;
			}
			switch(sptr_translation_entry->protocol_type)
			{
				
				case IPPROTO_ICMP :
					check_icmp_translation_entry_timer(sptr_translation_entry);
					break;
				case IPPROTO_TCP :
					check_tcp_translation_entry_timer(sptr_translation_entry);
					break;
				case IPPROTO_UDP :
					check_udp_translation_entry_timer(sptr_translation_entry);
					break;
				default :
					break;
			}
			
		}
		/*
		check_ip_translation_entry_timer (&nat.natg.ip_translation_list);
		*/
		
	}
	else
	{
		check_ip_translation_entry_timer (&nat.natg.ip_translation_list);
	}
	/*
	natFragTranTimerProcess ();
	*/
}
/************************************************************************/
void check_icmp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_icmp_translation_entry)
{
	NAT_BIND_INFO* bind_info=NULL;

	if(sptr_icmp_translation_entry->currenty_translation_entry_timer>0)
		sptr_icmp_translation_entry->currenty_translation_entry_timer-=1;
	if(sptr_icmp_translation_entry->currenty_translation_entry_timer<=0)
	{
		
		if(sptr_icmp_translation_entry->bind_id)
		{
			if(natFreeBind ((u_long)&nat, 0, sptr_icmp_translation_entry->bind_id)!=NAT_OK)
			{
				bind_info=(NAT_BIND_INFO*)sptr_icmp_translation_entry->bind_id;
				if(bind_info)
				{
					free(bind_info);
					bind_info=NULL;
				}
			}
		}
		
		semTake(natentrylock, WAIT_FOREVER);
		natDelete_entrys(sptr_icmp_translation_entry);
		semGive(natentrylock);
	}
	return;
}
/************************************************************************/
void check_udp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_udp_translation_entry)
{
	NAT_BIND_INFO* bind_info=NULL;

    	if(sptr_udp_translation_entry->currenty_translation_entry_timer>0)
		sptr_udp_translation_entry->currenty_translation_entry_timer-=1;
	if(sptr_udp_translation_entry->currenty_translation_entry_timer<=0)
	{
	
		if(sptr_udp_translation_entry->bind_id)
		{
			if(natFreeBind ((u_long)&nat, 0, sptr_udp_translation_entry->bind_id)!=NAT_OK)
			{
				bind_info=(NAT_BIND_INFO*)sptr_udp_translation_entry->bind_id;
				if(bind_info)
				{
					free(bind_info);
					bind_info=NULL;
				}
			}
		}
		
		semTake(natentrylock, WAIT_FOREVER);
		natDelete_entrys(sptr_udp_translation_entry);
		semGive (natentrylock);
	}
	return;
}
/************************************************************************/
void check_tcp_translation_entry_timer (NAT_CURRENCY_TRANSLATION_ENTRY *sptr_tcp_translation_entry)
{
	NAT_BIND_INFO*			bind_item=NULL;
	
	semTake(natentrylock, WAIT_FOREVER);

/*
	if (sptr_tcp_translation_entry->local_connection_timer > 0x00000000L)
	{
		sptr_tcp_translation_entry->local_connection_timer-=2;
	}


	if (sptr_tcp_translation_entry->global_connection_timer > 0x00000000L)
	{
		sptr_tcp_translation_entry->global_connection_timer-=2;
	}
*/
    	if(sptr_tcp_translation_entry->currenty_translation_entry_timer>0/*&&
			sptr_tcp_translation_entry->nat_aging_state == NAT_SYNCH_STATE*/)
    	{
		sptr_tcp_translation_entry->currenty_translation_entry_timer-=1;
    	}
		
	check_sequence_entry_timer (&sptr_tcp_translation_entry->local_sequence_delta_list);
	check_sequence_entry_timer (&sptr_tcp_translation_entry->global_sequence_delta_list);

	if (/*(sptr_tcp_translation_entry->local_connection_timer == 0 &&		
		sptr_tcp_translation_entry->global_connection_timer == 0)||
		(*/sptr_tcp_translation_entry->currenty_translation_entry_timer<=0)
	{
		delete_sequence_entry_list (&sptr_tcp_translation_entry->local_sequence_delta_list);
		delete_sequence_entry_list (&sptr_tcp_translation_entry->global_sequence_delta_list);
		
		semGive(natentrylock);
		
		if(sptr_tcp_translation_entry->bind_id)
		{
			if(natFreeBind ((u_long)&nat, 0, sptr_tcp_translation_entry->bind_id)!=NAT_OK)
			{
				bind_item=(NAT_BIND_INFO*)sptr_tcp_translation_entry->bind_id;
				if(bind_item)
				{
					free(bind_item);
					bind_item=NULL;
				}
			}
		}
		
		semTake(natentrylock, WAIT_FOREVER);
		natDelete_entrys(sptr_tcp_translation_entry);
	}
	semGive(natentrylock);
	
	return;
}
/************************************************************************/
static void check_sequence_entry_timer (SEQUENCE_HEADER *sptr_sequence_list)
{
	SEQUENCE_ENTRY *sptr_sequence_entry;
	SEQUENCE_ENTRY *sptr_next_sequence_entry;
	

	for (sptr_sequence_entry = (SEQUENCE_ENTRY *) DLL_FIRST ((DL_LIST *) sptr_sequence_list);
		sptr_sequence_entry != NULL;
		sptr_sequence_entry = sptr_next_sequence_entry)
	{
		sptr_next_sequence_entry = (SEQUENCE_ENTRY *) DLL_NEXT ((DL_NODE *) sptr_sequence_entry);
		
		if (sptr_sequence_entry->timer_enabled == TRUE)
		{
			if (sptr_sequence_entry->entry_timer > 0x00000000L)
			{
				sptr_sequence_entry->entry_timer-=1;
			}
			else
			{
				
				dllRemove ((DL_LIST *) sptr_sequence_list,
						(DL_NODE *) sptr_sequence_entry);

				free (sptr_sequence_entry);
			}
		}
	}
}	
/************************************************************************/
static void check_ip_translation_entry_timer (IP_TRANSLATION_HEADER *sptr_ip_translation_list)
{
	IP_TRANSLATION_ENTRY *sptr_ip_translation_entry=NULL;
	IP_TRANSLATION_ENTRY *sptr_ip_translation_entry_next=NULL;
	NAT_CURRENCY_TRANSLATION_ENTRY *sptr_tcp_translation_entry=NULL;
	char addr_str[32];

	semTake (ipListLock, WAIT_FOREVER);

	for (sptr_ip_translation_entry = (IP_TRANSLATION_ENTRY *) DLL_FIRST ((DL_LIST *) sptr_ip_translation_list);
		sptr_ip_translation_entry != NULL;
		sptr_ip_translation_entry = sptr_ip_translation_entry_next)
	{
		sptr_ip_translation_entry_next = (IP_TRANSLATION_ENTRY *) DLL_NEXT ((DL_NODE *) sptr_ip_translation_entry);

		sptr_tcp_translation_entry = (NAT_CURRENCY_TRANSLATION_ENTRY *) DLL_FIRST ((DL_LIST *) &sptr_ip_translation_entry->tcp_translation_list);

		if (sptr_tcp_translation_entry != NULL)
		{
			check_tcp_translation_entry_timer (&sptr_ip_translation_entry->tcp_translation_list);
		}
		else if (sptr_ip_translation_entry->time_stamp > 0x00000000L)
		{
			--sptr_ip_translation_entry->time_stamp;
		}
		else if (!sptr_ip_translation_entry->static_entry)
		{
			delete_tcp_connection_entry_list ();

			sptr_ip_translation_entry->sptr_local_address_use_entry->address_in_use = FALSE;

			semGive (ipListLock);	/* need to give semaphore since natFreeBind will take it */
		
			if (nat.logging_enabled == true || nat.printing_enabled == true)
			{
				struct in_addr iaddr;

				iaddr.s_addr = htonl(sptr_ip_translation_entry->sa_local_address);
				inet_ntoa_b(iaddr,addr_str);

				nat_printf (NAT_PRINTF_TRACE, "IP translation entry expired, addr: %s\n",addr_str);
			}

			natFreeBind ((u_long)&nat, 0, sptr_ip_translation_entry->bind_id);

			semTake (ipListLock, WAIT_FOREVER);
		}
	}

	semGive (ipListLock);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美天堂一区二区三区| 波多野结衣亚洲| 91精品国产色综合久久不卡蜜臀| 亚洲午夜精品17c| 91精品麻豆日日躁夜夜躁| 午夜成人在线视频| 日韩女优视频免费观看| 国产suv精品一区二区三区| 中文字幕一区二区三区在线播放| 日本高清免费不卡视频| 日韩综合一区二区| 久久亚洲一级片| 色综合天天天天做夜夜夜夜做| 亚洲与欧洲av电影| 欧美成人激情免费网| 成人免费观看男女羞羞视频| 夜夜精品浪潮av一区二区三区| 欧美一区二区成人6969| 成人午夜大片免费观看| 亚洲综合视频网| 欧美精品一区二区久久婷婷| 风间由美中文字幕在线看视频国产欧美| 亚洲天堂精品视频| 欧美精品乱码久久久久久| 久久精品99国产国产精| 中文字幕亚洲成人| 日韩欧美亚洲一区二区| 99re8在线精品视频免费播放| 天天av天天翘天天综合网色鬼国产| 精品999久久久| 在线观看区一区二| 久久99久久99精品免视看婷婷| 国产精品素人视频| 日韩一区二区三区高清免费看看| 成人高清视频在线| 毛片av一区二区| 亚洲精品视频在线看| 久久综合999| 欧美手机在线视频| av午夜精品一区二区三区| 在线看不卡av| 成人午夜视频免费看| 久久精品国产99国产精品| 亚洲综合免费观看高清在线观看| 久久久久久麻豆| 欧美浪妇xxxx高跟鞋交| 91麻豆视频网站| 国产aⅴ综合色| 美女免费视频一区| 亚洲www啪成人一区二区麻豆| 亚洲图片你懂的| 国产亚洲综合在线| 精品国产一区二区精华| 91精品福利在线一区二区三区| 一本大道久久a久久综合| 高清不卡一二三区| 国产精品12区| 久久99国产精品尤物| 日韩电影在线观看网站| 天天影视色香欲综合网老头| 一区二区三区影院| 中文字幕一区二区三区精华液 | 韩国三级中文字幕hd久久精品| 亚洲一线二线三线久久久| 国产精品每日更新| 国产精品无码永久免费888| 国产亚洲精品久| 国产视频一区不卡| 久久精子c满五个校花| 久久久噜噜噜久久中文字幕色伊伊| 欧美一区二区在线免费观看| 欧美妇女性影城| 欧美另类高清zo欧美| 欧美久久久一区| 欧美一区二区视频网站| 日韩欧美国产三级| 精品人在线二区三区| 久久影视一区二区| 久久久另类综合| 欧美国产亚洲另类动漫| 国产精品九色蝌蚪自拍| 中文字幕一区二区三区不卡在线| 国产精品美女一区二区| 亚洲乱码国产乱码精品精可以看 | 成人免费一区二区三区在线观看| 国产精品美女久久久久久2018| 中文字幕成人av| 中文字幕一区二区三区在线播放 | 午夜一区二区三区在线观看| 亚洲成av人片在线观看| 男男gaygay亚洲| 国产自产高清不卡| 成人高清视频在线观看| 91久久国产最好的精华液| 欧美日韩视频专区在线播放| 日韩三级视频在线观看| 国产欧美在线观看一区| 亚洲欧美自拍偷拍| 偷窥国产亚洲免费视频 | 国产精品18久久久久久久久 | 一区二区三区在线视频播放| 亚洲一区二区精品久久av| 免费观看91视频大全| 国产乱国产乱300精品| av激情成人网| 91精品欧美综合在线观看最新| 国产亚洲精品中文字幕| 亚洲综合在线电影| 国产乱子轮精品视频| 色天天综合色天天久久| 日韩精品专区在线| 中文字幕一区二区在线观看| 日本视频中文字幕一区二区三区| 国产成人午夜片在线观看高清观看 | 日韩一区二区中文字幕| 国产精品久久久久久一区二区三区| 一区二区三区久久久| 精品一区二区三区久久| 在线亚洲免费视频| 精品免费一区二区三区| 亚洲影院久久精品| 国产一区二区三区免费播放| 在线观看国产一区二区| 国产亚洲一区字幕| 日韩精品一二三| 91免费国产在线观看| 精品福利视频一区二区三区| 一区二区三区.www| 成人午夜碰碰视频| 欧美大度的电影原声| 亚洲亚洲人成综合网络| 成人视屏免费看| 亚洲精品在线观看网站| 亚洲v精品v日韩v欧美v专区| 播五月开心婷婷综合| 精品精品欲导航| 丝袜美腿亚洲色图| 在线亚洲一区观看| 国产精品久久久久久亚洲毛片 | 国产精品三级视频| 六月丁香婷婷久久| 欧美性受极品xxxx喷水| 亚洲欧洲精品一区二区三区不卡| 久久激情五月激情| 91精品午夜视频| 亚洲国产综合视频在线观看| www.日韩av| 欧美高清一级片在线观看| 狠狠久久亚洲欧美| 日韩美女主播在线视频一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 不卡一二三区首页| 国产精品久久久久影院老司| 国产成人欧美日韩在线电影| 久久久久久久综合| 激情久久五月天| 精品盗摄一区二区三区| 免费成人av资源网| 欧美草草影院在线视频| 人禽交欧美网站| 日韩一区二区电影网| 蜜臀国产一区二区三区在线播放 | 国产欧美一区二区精品忘忧草 | 日韩精品一区第一页| 欧美高清视频一二三区| 亚洲香蕉伊在人在线观| 欧美日韩免费视频| 婷婷亚洲久悠悠色悠在线播放| 欧美三级电影网| 日韩精品亚洲一区二区三区免费| 制服丝袜日韩国产| 日本在线不卡一区| 日韩一级片网址| 国产精一区二区三区| 中文字幕不卡的av| 色综合久久综合| 五月婷婷激情综合| 欧美zozozo| 成人av中文字幕| 一区二区高清视频在线观看| 欧美午夜一区二区三区| 蜜臀精品一区二区三区在线观看 | 日韩国产精品久久久| 日韩一区二区在线观看| 国产精品综合一区二区三区| 国产精品沙发午睡系列990531| 一本大道综合伊人精品热热 | 国产一区二区不卡| 国产精品欧美久久久久一区二区| 色综合一区二区| 日韩不卡一二三区| 久久久亚洲精品一区二区三区 | 在线观看国产精品网站| 日韩电影在线一区| 国产精品情趣视频| 欧洲人成人精品| 狠狠久久亚洲欧美| 一区二区三区精品在线观看| 日韩亚洲欧美在线| 色综合天天天天做夜夜夜夜做|