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

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

?? bucket_lookup.c

?? Windows XP下的抓包程序實現
?? 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 "bucket_lookup.h"
#endif

#ifdef __FreeBSD__

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

#endif

#ifndef UNUSED
#define UNUSED(_x) (_x)
#endif


/* the key is represented by the initial and final value */
/* of the bucket. At the moment bucket_lookup is able to */
/* manage values of 16, 32 bits.                         */
uint32 bucket_lookup(uint8 *key, TME_DATA *data, MEM_TYPE *mem_ex, struct time_conv *time_ref)  
{
	uint32 value;
	uint32 i,j;
	int found=-1;
	uint32 blocks;
	uint32 block_size;
	uint8 *temp;

	UNUSED(mem_ex);

	if ((data->key_len!=1)&&  /*16 bit value*/
		(data->key_len!=2))   /*32 bit value*/
		return TME_ERROR;
	
	/*32 bit values*/
	blocks=data->filled_blocks-1;
	block_size=data->block_size;
	i=blocks/2; /*relative shift*/
	j=i;
	temp=data->shared_memory_base_address+block_size;

	if (data->key_len==2)
	{
		value=SW_ULONG_AT(key,0);
	
		if((value<SW_ULONG_AT(temp,0))||(value>SW_ULONG_AT(temp+block_size*(blocks-1),4)))
		{
			uint32 *key32=(uint32*) key;
			key32[0]=key32[1]=0;

			GET_TIME((struct timeval *)(data->shared_memory_base_address+8),time_ref);

			data->last_found=NULL;
			return TME_FALSE;
		}
			
		while(found==-1) /* search routine */
		{   
			i=(i==1)? 1:i>>1;
			if (SW_ULONG_AT(temp+block_size*j,0)>value)
				if (SW_ULONG_AT(temp+block_size*(j-1),4)<value)
					found=-2;
				else
					j-=i;
			else
				if (SW_ULONG_AT(temp+block_size*j,4)<value) 
					if (SW_ULONG_AT(temp+block_size*j,0)>value)
						found=-2;
					else
						j+=i;
				else found=j;
		}	
		if (found<0)
		{
			uint32 *key32=(uint32*) key;
			key32[0]=key32[1]=0;

			GET_TIME((struct timeval *)(data->shared_memory_base_address+8),time_ref);
			
			data->last_found=NULL;
			return TME_FALSE;
		}
	
		data->last_found=data->lut_base_address+found*sizeof(RECORD);

		COPY_MEMORY(key,temp+block_size*found,8);

		GET_TIME((struct timeval *)(temp+block_size*found+8),time_ref);

		return TME_TRUE;
	}
	else
	{
		value=SW_USHORT_AT(key,0);
	
		if((value<SW_USHORT_AT(temp,0))||(value>SW_USHORT_AT(temp+block_size*(blocks-1),2)))
		{
			uint16 *key16=(uint16*) key;
			key16[0]=key16[1]=0;
			
			GET_TIME((struct timeval *)(data->shared_memory_base_address+4),time_ref);

			data->last_found=NULL;
			return TME_FALSE;
		}
			
		while(found==-1) /* search routine */
		{   
			i=(i==1)? 1:i>>1;
			if (SW_USHORT_AT(temp+block_size*j,0)>value)
				if (SW_USHORT_AT(temp+block_size*(j-1),2)<value)
					found=-2;
				else
					j-=i;
			else
				if (SW_USHORT_AT(temp+block_size*j,2)<value) 
					if (SW_USHORT_AT(temp+block_size*j,0)>value)
						found=-2;
					else
						j+=i;
				else found=j;
		}	

		if (found<0)
		{
			uint16 *key16=(uint16*) key;
			key16[0]=key16[1]=0;

			GET_TIME((struct timeval *)(data->shared_memory_base_address+4),time_ref);

			data->last_found=NULL;
			return TME_FALSE;
		}
	
		data->last_found=data->lut_base_address+found*sizeof(RECORD);

		GET_TIME((struct timeval *)(temp+block_size*found+4),time_ref);

		COPY_MEMORY(key,temp+block_size*found,4);
		
		return TME_TRUE;
	}
		
}

uint32 bucket_lookup_insert(uint8 *key, TME_DATA *data, MEM_TYPE *mem_ex, struct time_conv *time_ref)   
{	
	RECORD *records=(RECORD*)data->lut_base_address;

	if ((data->key_len!=1)&&  /*16 bit value*/
		(data->key_len!=2))   /*32 bit value*/
		return TME_ERROR;

	if(data->key_len==2)
	{
		uint32 start,stop;
		uint8 *tmp;

		start=SW_ULONG_AT(key,0);	
		stop=SW_ULONG_AT(key,4);

		if (start>stop)
			return TME_ERROR;
		if (data->filled_entries>0)
		{
			tmp=mem_ex->buffer+SW_ULONG_AT(&records[data->filled_entries-1].block,0);		
			/*check if it is coherent with the previous block*/
			if (SW_ULONG_AT(tmp,4)>=start)
				return TME_ERROR;
		}
		
		if (data->filled_blocks==data->shared_memory_blocks)
			return TME_ERROR;

		if (data->filled_entries==data->lut_entries)
			return TME_ERROR;

		tmp=data->shared_memory_base_address+data->block_size*data->filled_blocks;		
		
		COPY_MEMORY(tmp,key,8);
		
		SW_ULONG_ASSIGN(&records[data->filled_entries].block,tmp-mem_ex->buffer);
		SW_ULONG_ASSIGN(&records[data->filled_entries].exec_fcn,data->default_exec);
		
		GET_TIME((struct timeval *)(tmp+8),time_ref);		
		
		data->filled_blocks++;
		data->filled_entries++;
		
		return TME_TRUE;
	}
	else
	{
		uint16 start,stop;
		uint8 *tmp;

		start=SW_USHORT_AT(key,0);	
		stop=SW_USHORT_AT(key,2);

		if (start>stop)
			return TME_ERROR;
		if (data->filled_entries>0)
		{
			tmp=mem_ex->buffer+SW_ULONG_AT(&records[data->filled_entries-1].block,0);		
			/*check if it is coherent with the previous block*/
			if (SW_USHORT_AT(tmp,2)>=start)
				return TME_ERROR;
		}
		
		if (data->filled_blocks==data->shared_memory_blocks)
			return TME_ERROR;

		if (data->filled_entries==data->lut_entries)
			return TME_ERROR;

		tmp=mem_ex->buffer+SW_ULONG_AT(&records[data->filled_entries].block,0);		
		
		COPY_MEMORY(tmp,key,4);
		
		SW_ULONG_ASSIGN(&records[data->filled_entries].block,tmp-mem_ex->buffer);
		SW_ULONG_ASSIGN(&records[data->filled_entries].exec_fcn,data->default_exec);
		
		GET_TIME((struct timeval *)(tmp+4),time_ref);		
		
		data->filled_blocks++;
		data->filled_entries++;
		
		return TME_TRUE;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品专区| 一区二区三区日韩精品视频| 成人免费高清视频在线观看| 亚洲18女电影在线观看| 欧美国产日韩a欧美在线观看 | 91福利小视频| 国产在线播放一区| 午夜精品久久久久久| 国产精品―色哟哟| 日韩精品一区在线观看| 欧美日韩一二区| 一本久久精品一区二区| 国产精品亚洲一区二区三区在线| 亚洲一二三四区不卡| 国产欧美视频在线观看| 日韩色在线观看| 欧美网站大全在线观看| 成人av网站免费观看| 国产高清在线精品| 毛片基地黄久久久久久天堂| 亚洲成人自拍偷拍| 亚洲激情一二三区| 国产精品久久久久一区二区三区共| 26uuu国产日韩综合| 精品欧美久久久| 欧美精品久久天天躁| 欧美视频在线一区二区三区| 色综合亚洲欧洲| 91色视频在线| 91蜜桃免费观看视频| 成人美女在线观看| 粉嫩13p一区二区三区| 国产成人啪午夜精品网站男同| 久久99精品网久久| 韩国v欧美v日本v亚洲v| 久久99精品久久久久久动态图 | 精品在线视频一区| 日本在线播放一区二区三区| 香蕉乱码成人久久天堂爱免费| 亚洲精品国产成人久久av盗摄| 亚洲图片激情小说| 亚洲男女一区二区三区| 亚洲欧洲精品一区二区精品久久久| 日本一二三四高清不卡| 国产精品天干天干在线综合| 欧美激情综合五月色丁香| 国产欧美精品国产国产专区| 国产情人综合久久777777| 国产亚洲午夜高清国产拍精品| 国产婷婷色一区二区三区四区 | 风间由美一区二区三区在线观看| 成人午夜免费视频| 91视视频在线观看入口直接观看www| 91视频在线看| 欧美日韩国产高清一区二区三区| 91精品国产综合久久精品图片| 欧美精品成人一区二区三区四区| 日韩区在线观看| 久久综合狠狠综合久久激情| 亚洲国产精品黑人久久久| 国产精品成人在线观看| 亚洲国产你懂的| 美女网站色91| av在线播放不卡| 欧美日韩在线三级| 精品久久99ma| 中文字幕在线不卡国产视频| 亚洲国产成人av| 国产专区欧美精品| 91麻豆高清视频| 日韩欧美国产综合| 亚洲婷婷综合色高清在线| 亚洲成av人片在线| 国产电影一区二区三区| 日本韩国视频一区二区| 日韩欧美一二三区| 最新国产の精品合集bt伙计| 日韩黄色免费网站| 丁香婷婷综合五月| 欧美日韩一区三区四区| 精品国精品自拍自在线| 亚洲色图都市小说| 黄色成人免费在线| 色久综合一二码| 亚洲精品在线电影| 亚洲国产精品一区二区久久恐怖片| 久久精品国产网站| 91黄色小视频| 久久久久久久性| 亚洲国产精品久久久久婷婷884 | 国产欧美日韩亚州综合 | 亚洲五码中文字幕| 国产精品亚洲一区二区三区在线| 欧美视频完全免费看| 国产清纯白嫩初高生在线观看91 | av一二三不卡影片| 日韩精品一区二区三区在线播放| 亚洲天堂福利av| 国产麻豆日韩欧美久久| 欧美伦理影视网| 亚洲视频精选在线| 国产在线麻豆精品观看| 欧美日韩一区二区电影| 中文幕一区二区三区久久蜜桃| 日韩高清不卡一区| 欧美在线观看视频一区二区三区| 欧美精品一区二区三区蜜桃视频 | 91精品国产综合久久香蕉麻豆 | 日本中文一区二区三区| 色一情一伦一子一伦一区| 国产午夜久久久久| 麻豆视频一区二区| 欧美精品视频www在线观看| 日韩美女视频一区二区| 国v精品久久久网| 欧美成人精品福利| 轻轻草成人在线| 91麻豆精品国产自产在线观看一区| 亚洲免费观看在线视频| caoporm超碰国产精品| 国产日韩精品一区二区浪潮av| 久久成人免费网| 欧美一区二区三区影视| 五月激情综合婷婷| 欧美三级蜜桃2在线观看| 成人欧美一区二区三区黑人麻豆| 国产精品88av| 国产三级精品在线| 国产成人av一区二区| 久久精品在线观看| 国产一区二区免费看| 久久蜜臀精品av| 国产69精品久久久久毛片| 久久免费视频色| 高潮精品一区videoshd| 中文字幕欧美日本乱码一线二线| 国产成人精品综合在线观看| 久久免费的精品国产v∧| 国产精品乡下勾搭老头1| 中文字幕免费一区| 波波电影院一区二区三区| 国产精品美女视频| 一本大道av一区二区在线播放| 一区二区三区欧美| 欧美日韩国产另类不卡| 日韩经典一区二区| 337p日本欧洲亚洲大胆精品| 国产盗摄精品一区二区三区在线 | 欧美精品一区二区在线观看| 韩国中文字幕2020精品| 亚洲国产成人自拍| 一本色道久久综合亚洲精品按摩| 亚洲综合免费观看高清完整版 | 91免费版在线| 亚洲尤物在线视频观看| 欧美绝品在线观看成人午夜影视| 日韩在线a电影| 国产亚洲一区字幕| 色婷婷久久久亚洲一区二区三区 | 日韩成人午夜精品| 久久天天做天天爱综合色| a亚洲天堂av| 日韩精品福利网| 久久久久国产精品免费免费搜索| 国产成人aaaa| 亚洲电影欧美电影有声小说| 日韩一区二区三区高清免费看看| 国产精品香蕉一区二区三区| 亚洲精品高清视频在线观看| 777色狠狠一区二区三区| 国产一区二区精品久久91| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩综合不卡| 国产精品资源在线观看| 亚洲综合激情另类小说区| 精品日韩在线一区| 91亚洲永久精品| 精品一区二区av| 樱花草国产18久久久久| 欧美成人a∨高清免费观看| 99精品国产一区二区三区不卡 | 91视频www| 久久66热re国产| 成人欧美一区二区三区白人 | 欧美区在线观看| 国产成人午夜片在线观看高清观看| 亚洲一区二区影院| 国产亲近乱来精品视频| 欧美日韩高清一区二区三区| 风流少妇一区二区| 蜜臀av一区二区三区| 亚洲精品免费电影| 久久久91精品国产一区二区三区| 欧美亚洲综合一区| 99精品久久久久久| 国产99久久久国产精品免费看| 日韩va欧美va亚洲va久久| 亚洲嫩草精品久久| 国产精品三级视频| 精品少妇一区二区三区在线播放|