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

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

?? normal_lookup.c

?? Windows XP下的抓包程序?qū)崿F(xiàn)
?? C
字號:
/*
 * Copyright (c) 2001 - 2003
 * NetGroup, Politecnico di Torino (Italy)
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the Politecnico di Torino nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#ifdef WIN32
#include "tme.h"
#include "normal_lookup.h"
#endif

#ifdef __FreeBSD__

#ifdef _KERNEL
#include <net/tme/tme.h>
#include <net/tme/normal_lookup.h>
#else
#include <tme/tme.h>
#include <tme/normal_lookup.h>
#endif

#endif


/* lookup in the table, seen as an hash               */
/* if not found, inserts an element                   */
/* returns TME_TRUE if the entry is found or created, */
/* returns TME_FALSE if no more blocks are available  */
uint32 normal_lut_w_insert(uint8 *key, TME_DATA *data, MEM_TYPE *mem_ex, struct time_conv *time_ref) 
{
	uint32 i;
	uint32 tocs=0;
	uint32 *key32=(uint32*) key;
	uint32 shrinked_key=0;
	uint32 index;
	RECORD *records=(RECORD*)data->lut_base_address;
	uint8 *offset;
	uint32 key_len=data->key_len;
	/*the key is shrinked into a 32-bit value */	
	for (i=0; i<key_len;i++) 
		shrinked_key^=key32[i];
    /*the first index in the table is calculated*/
	index=shrinked_key % data->lut_entries;

	while (tocs<=data->filled_entries)
	{ 	

		if (records[index].block==0)
		{   /*creation of a new entry*/

			if (data->filled_blocks==data->shared_memory_blocks)
			{
				/*no more free blocks*/
				GET_TIME((struct timeval *)(data->shared_memory_base_address+4*key_len),time_ref);
				data->last_found=NULL;	
				return TME_FALSE;
			}

			/*offset=absolute pointer to the block associated*/
			/*with the newly created entry*/
			offset=data->shared_memory_base_address+
			data->block_size*data->filled_blocks;
			
			/*copy the key in the block*/
			COPY_MEMORY(offset,key32,key_len*4);
			GET_TIME((struct timeval *)(offset+4*key_len),time_ref);
			/*assign the block relative offset to the entry, in NBO*/
			SW_ULONG_ASSIGN(&records[index].block,offset-mem_ex->buffer);

			data->filled_blocks++;
			
			/*assign the exec function ID to the entry, in NBO*/
			SW_ULONG_ASSIGN(&records[index].exec_fcn,data->default_exec);
			data->filled_entries++;

			data->last_found=(uint8*)&records[index];
			
			return TME_TRUE;	
		}
		/*offset contains the absolute pointer to the block*/
		/*associated with the current entry */
		offset=mem_ex->buffer+SW_ULONG_AT(&records[index].block,0);		

		for (i=0; (i<key_len) && (key32[i]==ULONG_AT(offset,i*4)); i++);
		
		if (i==key_len)
			{
				/*key in the block matches the one provided, right entry*/
				GET_TIME((struct timeval *)(offset+4*key_len),time_ref);
				data->last_found=(uint8*)&records[index];
				return TME_TRUE;
			}
		else 
		{
			/* wrong entry, rehashing */
			if (IS_DELETABLE(offset+key_len*4,data))
			{
				ZERO_MEMORY(offset,data->block_size);
				COPY_MEMORY(offset,key32,key_len*4);
				SW_ULONG_ASSIGN(&records[index].exec_fcn,data->default_exec);
				GET_TIME((struct timeval*)(offset+key_len*4),time_ref);
				data->last_found=(uint8*)&records[index];
				return TME_TRUE;	
			}
			else
			{
				index=(index+data->rehashing_value) % data->lut_entries;
				tocs++;
			}
		}
	}

	/* nothing found, last found= out of lut */
	GET_TIME((struct timeval *)(data->shared_memory_base_address+4*key_len),time_ref);
	data->last_found=NULL;
	return TME_FALSE;

}

/* lookup in the table, seen as an hash           */
/* if not found, returns out of count entry index */
/* returns TME_TRUE if the entry is found         */
/* returns TME_FALSE if the entry is not found    */
uint32 normal_lut_wo_insert(uint8 *key, TME_DATA *data, MEM_TYPE *mem_ex, struct time_conv *time_ref) 
{
	uint32 i;
	uint32 tocs=0;
	uint32 *key32=(uint32*) key;
	uint32 shrinked_key=0;
	uint32 index;
	RECORD *records=(RECORD*)data->lut_base_address;
	uint8 *offset;
	uint32 key_len=data->key_len;
	/*the key is shrinked into a 32-bit value */	
	for (i=0; i<key_len;i++) 
		shrinked_key^=key32[i];
    /*the first index in the table is calculated*/
	index=shrinked_key % data->lut_entries;

	while (tocs<=data->filled_entries)
	{ 	

		if (records[index].block==0)
		{   /*out of table, insertion is not allowed*/
			GET_TIME((struct timeval *)(data->shared_memory_base_address+4*key_len),time_ref);
			data->last_found=NULL;	
			return TME_FALSE;
		}
		/*offset contains the absolute pointer to the block*/
		/*associated with the current entry */
		
		offset=mem_ex->buffer+SW_ULONG_AT(&records[index].block,0);		

		for (i=0; (i<key_len) && (key32[i]==ULONG_AT(offset,i*4)); i++);
		
		if (i==key_len)
			{
				/*key in the block matches the one provided, right entry*/
				GET_TIME((struct timeval *)(offset+4*key_len),time_ref);
				data->last_found=(uint8*)&records[index];
				return TME_TRUE;
			}
		else 
		{
			/*wrong entry, rehashing*/
			index=(index+data->rehashing_value) % data->lut_entries;
			tocs++;
		}
	}

	/*nothing found, last found= out of lut*/
	GET_TIME((struct timeval *)(data->shared_memory_base_address+4*key_len),time_ref);
	data->last_found=NULL;
	return TME_FALSE;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区四区| 在线日韩国产精品| 久久一区二区三区国产精品| 久久国产夜色精品鲁鲁99| 日韩欧美在线网站| 久久精品免费观看| 国产网红主播福利一区二区| 成人黄色a**站在线观看| 一区在线中文字幕| 欧美日韩一区二区三区在线| 日韩激情中文字幕| 久久综合久色欧美综合狠狠| 岛国精品一区二区| 亚洲激情六月丁香| 正在播放一区二区| 成人黄色小视频| 亚洲精品久久嫩草网站秘色| 欧美群妇大交群中文字幕| 精品一区二区精品| 中文字幕一区二区三区乱码在线 | 中文字幕一区在线观看视频| 色综合中文字幕| 七七婷婷婷婷精品国产| 国产亚洲va综合人人澡精品 | 一区二区三区欧美| 欧美一级黄色录像| 91影视在线播放| 奇米在线7777在线精品| 久久精品亚洲麻豆av一区二区| 91传媒视频在线播放| 国产一区二区三区av电影| 亚洲视频每日更新| 欧美xxxxx牲另类人与| 99在线精品免费| 蜜臀精品久久久久久蜜臀| 中国色在线观看另类| 欧美日韩午夜在线| 99re在线视频这里只有精品| 久久精品国产一区二区三区免费看 | 蜜臀久久99精品久久久久宅男| 国产精品久久一卡二卡| 欧美日韩国产三级| 不卡av在线免费观看| 麻豆精品在线看| 亚洲一区免费在线观看| 久久久久久麻豆| 3d成人h动漫网站入口| 99久久精品国产导航| 麻豆一区二区99久久久久| 亚洲一区视频在线| 中文字幕一区免费在线观看| 久久精品综合网| 9191国产精品| 在线观看日韩一区| 成人丝袜高跟foot| 国产精品系列在线播放| 日韩电影免费一区| 亚洲va国产va欧美va观看| 亚洲丝袜美腿综合| 国产精品久久久爽爽爽麻豆色哟哟| 日韩视频一区二区三区| 欧美老肥妇做.爰bbww视频| 93久久精品日日躁夜夜躁欧美| 国产在线精品一区二区三区不卡| 日本一不卡视频| 亚洲成av人片| 亚洲国产aⅴ成人精品无吗| 亚洲天堂a在线| 亚洲欧美日韩系列| 国产精品家庭影院| 国产精品久久久久久户外露出| 久久精品一区二区三区四区| 久久亚洲精华国产精华液| 久久久久久影视| 久久九九99视频| 国产精品乱码人人做人人爱 | 欧美视频一区二区三区| 日本电影亚洲天堂一区| 91在线小视频| 91麻豆国产福利在线观看| 99re热视频这里只精品| 色欧美88888久久久久久影院| 91小视频免费看| 色综合av在线| 欧美系列亚洲系列| 在线播放/欧美激情| 91精品一区二区三区久久久久久| 欧美三级日韩三级国产三级| 欧美日韩在线三级| 欧美电影一区二区三区| 91精品婷婷国产综合久久性色 | 亚洲精品一区二区三区香蕉| 国产亚洲精品aa| 亚洲天堂免费看| 亚洲网友自拍偷拍| 奇米777欧美一区二区| 国内外精品视频| av动漫一区二区| 在线亚洲精品福利网址导航| 7878成人国产在线观看| 日韩三级高清在线| 国产精品色噜噜| 一区二区在线观看视频在线观看| 亚洲五码中文字幕| 国产一区二区三区免费观看| 不卡免费追剧大全电视剧网站| 一本色道久久综合亚洲91| 欧美精品v国产精品v日韩精品| 精品国产露脸精彩对白| 成人免费一区二区三区视频| 亚洲午夜电影在线| 国产91色综合久久免费分享| 色婷婷综合久色| 欧美电影精品一区二区| 亚洲婷婷在线视频| 久久国产夜色精品鲁鲁99| 91蜜桃婷婷狠狠久久综合9色| 欧美日本国产视频| 国产精品每日更新| 久久成人精品无人区| 99热在这里有精品免费| 日韩一区二区三区在线观看| 中文字幕视频一区| 久久99久久99小草精品免视看| 波多野洁衣一区| 日韩欧美一区二区久久婷婷| 亚洲欧洲日韩女同| 美女视频黄 久久| 99国产精品一区| 久久亚洲一区二区三区明星换脸| 亚洲视频一区二区免费在线观看| 久久av资源网| 欧美性大战久久久久久久 | 日本精品一级二级| 久久久精品2019中文字幕之3| 亚洲午夜精品久久久久久久久| 国产乱色国产精品免费视频| 欧美日韩国产经典色站一区二区三区| 欧美精品一区二区久久婷婷| 亚洲午夜精品网| 色悠悠久久综合| 欧美国产日韩a欧美在线观看| 免费成人在线影院| 欧美视频日韩视频| 国产精品九色蝌蚪自拍| 国产成人av影院| 精品国产伦一区二区三区观看体验 | 欧美精品在线视频| 亚洲精品自拍动漫在线| 国产suv精品一区二区6| 日韩欧美一级二级三级久久久| 亚洲一区二区综合| 97精品国产露脸对白| 国产精品久久久久久户外露出 | ●精品国产综合乱码久久久久| 国产精品自拍三区| 精品久久久久99| 久久精品72免费观看| 欧美一区二区视频在线观看2022 | 日韩欧美一级在线播放| 免费久久99精品国产| 51久久夜色精品国产麻豆| 午夜精品久久久久久久久久久| 欧美日免费三级在线| 亚洲一本大道在线| 欧洲一区二区三区在线| 亚洲色图视频网站| 色av一区二区| 一区二区三区免费网站| 欧洲一区二区三区免费视频| 亚洲免费观看高清| 在线日韩av片| 日本在线播放一区二区三区| 欧美精选午夜久久久乱码6080| 视频一区二区中文字幕| 制服丝袜中文字幕一区| 美日韩一区二区三区| 欧美xxxxxxxx| 国产一区三区三区| 欧美国产日本韩| 91香蕉视频污在线| 午夜精品福利一区二区三区蜜桃| 欧美日韩久久久| 精品一区二区在线播放| 国产精品欧美一区二区三区| av在线这里只有精品| 亚洲一区在线观看网站| 欧美一区二区三区婷婷月色| 黄色日韩三级电影| 国产精品无码永久免费888| 色婷婷久久久亚洲一区二区三区| 亚洲成a人片综合在线| 精品精品欲导航| 成人av先锋影音| 亚洲观看高清完整版在线观看| 日韩精品中文字幕一区| 成人国产精品免费观看视频| 亚洲成人av福利| 国产欧美久久久精品影院| 色综合久久66|