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

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

?? ip_conntrack_irc.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號:
/* IRC extension for IP connection tracking, Version 1.21 * (C) 2000-2002 by Harald Welte <laforge@gnumonks.org> * based on RR's ip_conntrack_ftp.c	 * * ip_conntrack_irc.c,v 1.21 2002/02/05 14:49:26 laforge Exp * *      This program is free software; you can redistribute it and/or *      modify it under the terms of the GNU General Public License *      as published by the Free Software Foundation; either version *      2 of the License, or (at your option) any later version. ** *	Module load syntax: * 	insmod ip_conntrack_irc.o ports=port1,port2,...port<MAX_PORTS> *			    max_dcc_channels=n dcc_timeout=secs *	 * 	please give the ports of all IRC servers You wish to connect to. *	If You don't specify ports, the default will be port 6667. *	With max_dcc_channels you can define the maximum number of not *	yet answered DCC channels per IRC session (default 8). *	With dcc_timeout you can specify how long the system waits for  *	an expected DCC channel (default 300 seconds). * */#include <linux/config.h>#include <linux/module.h>#include <linux/netfilter.h>#include <linux/ip.h>#include <net/checksum.h>#include <net/tcp.h>#include <linux/netfilter_ipv4/lockhelp.h>#include <linux/netfilter_ipv4/ip_conntrack_helper.h>#include <linux/netfilter_ipv4/ip_conntrack_irc.h>#define MAX_PORTS 8static int ports[MAX_PORTS];static int ports_c;static int max_dcc_channels = 8;static unsigned int dcc_timeout = 300;/* This is slow, but it's simple. --RR */static char irc_buffer[65536];MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");MODULE_DESCRIPTION("IRC (DCC) connection tracking helper");MODULE_LICENSE("GPL");MODULE_PARM(ports, "1-" __MODULE_STRING(MAX_PORTS) "i");MODULE_PARM_DESC(ports, "port numbers of IRC servers");MODULE_PARM(max_dcc_channels, "i");MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC session");MODULE_PARM(dcc_timeout, "i");MODULE_PARM_DESC(dcc_timeout, "timeout on for unestablished DCC channels");static char *dccprotos[] = { "SEND ", "CHAT ", "MOVE ", "TSEND ", "SCHAT " };#define MINMATCHLEN	5DECLARE_LOCK(ip_irc_lock);struct module *ip_conntrack_irc = THIS_MODULE;#if 0#define DEBUGP(format, args...) printk(KERN_DEBUG "%s:%s:" format, \                                       __FILE__, __FUNCTION__ , ## args)#else#define DEBUGP(format, args...)#endifint parse_dcc(char *data, char *data_end, u_int32_t * ip, u_int16_t * port,	      char **ad_beg_p, char **ad_end_p)/* tries to get the ip_addr and port out of a dcc command   return value: -1 on failure, 0 on success 	data		pointer to first byte of DCC command data	data_end	pointer to last byte of dcc command data	ip		returns parsed ip of dcc command	port		returns parsed port of dcc command	ad_beg_p	returns pointer to first byte of addr data	ad_end_p	returns pointer to last byte of addr data */{	/* at least 12: "AAAAAAAA P\1\n" */	while (*data++ != ' ')		if (data > data_end - 12)			return -1;	*ad_beg_p = data;	*ip = simple_strtoul(data, &data, 10);	/* skip blanks between ip and port */	while (*data == ' ') {		if (data >= data_end) 			return -1;		data++;	}	*port = simple_strtoul(data, &data, 10);	*ad_end_p = data;	return 0;}static int help(struct sk_buff *skb,		struct ip_conntrack *ct, enum ip_conntrack_info ctinfo){	unsigned int dataoff;	struct tcphdr tcph;	char *data, *data_limit;	int dir = CTINFO2DIR(ctinfo);	struct ip_conntrack_expect *exp;	struct ip_ct_irc_expect *exp_irc_info = NULL;	u_int32_t dcc_ip;	u_int16_t dcc_port;	int i;	char *addr_beg_p, *addr_end_p;	DEBUGP("entered\n");	/* If packet is coming from IRC server */	if (dir == IP_CT_DIR_REPLY)		return NF_ACCEPT;	/* Until there's been traffic both ways, don't look in packets. */	if (ctinfo != IP_CT_ESTABLISHED	    && ctinfo != IP_CT_ESTABLISHED + IP_CT_IS_REPLY) {		DEBUGP("Conntrackinfo = %u\n", ctinfo);		return NF_ACCEPT;	}	/* Not a full tcp header? */	if (skb_copy_bits(skb, skb->nh.iph->ihl*4, &tcph, sizeof(tcph)) != 0)		return NF_ACCEPT;	/* No data? */	dataoff = skb->nh.iph->ihl*4 + tcph.doff*4;	if (dataoff >= skb->len)		return NF_ACCEPT;	LOCK_BH(&ip_irc_lock);	skb_copy_bits(skb, dataoff, irc_buffer, skb->len - dataoff);	data = irc_buffer;	data_limit = irc_buffer + skb->len - dataoff;	/* strlen("\1DCC SENT t AAAAAAAA P\1\n")=24	 * 5+MINMATCHLEN+strlen("t AAAAAAAA P\1\n")=14 */	while (data < (data_limit - (19 + MINMATCHLEN))) {		if (memcmp(data, "\1DCC ", 5)) {			data++;			continue;		}		data += 5;		/* we have at least (19+MINMATCHLEN)-5 bytes valid data left */		DEBUGP("DCC found in master %u.%u.%u.%u:%u %u.%u.%u.%u:%u...\n",			NIPQUAD(iph->saddr), ntohs(tcph.source),			NIPQUAD(iph->daddr), ntohs(tcph.dest));		for (i = 0; i < ARRAY_SIZE(dccprotos); i++) {			if (memcmp(data, dccprotos[i], strlen(dccprotos[i]))) {				/* no match */				continue;			}			DEBUGP("DCC %s detected\n", dccprotos[i]);			data += strlen(dccprotos[i]);			/* we have at least 			 * (19+MINMATCHLEN)-5-dccprotos[i].matchlen bytes valid			 * data left (== 14/13 bytes) */			if (parse_dcc((char *)data, data_limit, &dcc_ip,				       &dcc_port, &addr_beg_p, &addr_end_p)) {				/* unable to parse */				DEBUGP("unable to parse dcc command\n");				continue;			}			DEBUGP("DCC bound ip/port: %u.%u.%u.%u:%u\n",				HIPQUAD(dcc_ip), dcc_port);			/* dcc_ip can be the internal OR external (NAT'ed) IP			 * Tiago Sousa <mirage@kaotik.org> */			if (ct->tuplehash[dir].tuple.src.ip != htonl(dcc_ip)			    && ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip != htonl(dcc_ip)) {				if (net_ratelimit())					printk(KERN_WARNING						"Forged DCC command from "						"%u.%u.%u.%u: %u.%u.%u.%u:%u\n",				NIPQUAD(ct->tuplehash[dir].tuple.src.ip),						HIPQUAD(dcc_ip), dcc_port);				continue;			}			exp = ip_conntrack_expect_alloc();			if (exp == NULL)				goto out;			exp_irc_info = &exp->help.exp_irc_info;			/* save position of address in dcc string,			 * necessary for NAT */			DEBUGP("tcph->seq = %u\n", tcph.seq);			exp->seq = ntohl(tcph.seq) + (addr_beg_p - irc_buffer);			exp_irc_info->len = (addr_end_p - addr_beg_p);			exp_irc_info->port = dcc_port;			DEBUGP("wrote info seq=%u (ofs=%u), len=%d\n",				exp->seq, (addr_end_p - _data), exp_irc_info->len);			exp->tuple = ((struct ip_conntrack_tuple)				{ { 0, { 0 } },				  { ct->tuplehash[dir].tuple.src.ip, { .tcp = { htons(dcc_port) } },				    IPPROTO_TCP }});			exp->mask = ((struct ip_conntrack_tuple)				{ { 0, { 0 } },				  { 0xFFFFFFFF, { .tcp = { 0xFFFF } }, 0xFFFF }});			exp->expectfn = NULL;			DEBUGP("expect_related %u.%u.%u.%u:%u-%u.%u.%u.%u:%u\n",				NIPQUAD(exp->tuple.src.ip),				ntohs(exp->tuple.src.u.tcp.port),				NIPQUAD(exp->tuple.dst.ip),				ntohs(exp->tuple.dst.u.tcp.port));			ip_conntrack_expect_related(exp, ct);			goto out;		} /* for .. NUM_DCCPROTO */	} /* while data < ... */ out:	UNLOCK_BH(&ip_irc_lock);	return NF_ACCEPT;}static struct ip_conntrack_helper irc_helpers[MAX_PORTS];static char irc_names[MAX_PORTS][10];static void fini(void);static int __init init(void){	int i, ret;	struct ip_conntrack_helper *hlpr;	char *tmpname;	if (max_dcc_channels < 1) {		printk("ip_conntrack_irc: max_dcc_channels must be a positive integer\n");		return -EBUSY;	}	if (dcc_timeout < 0) {		printk("ip_conntrack_irc: dcc_timeout must be a positive integer\n");		return -EBUSY;	}		/* If no port given, default to standard irc port */	if (ports[0] == 0)		ports[0] = IRC_PORT;	for (i = 0; (i < MAX_PORTS) && ports[i]; i++) {		hlpr = &irc_helpers[i];		hlpr->tuple.src.u.tcp.port = htons(ports[i]);		hlpr->tuple.dst.protonum = IPPROTO_TCP;		hlpr->mask.src.u.tcp.port = 0xFFFF;		hlpr->mask.dst.protonum = 0xFFFF;		hlpr->max_expected = max_dcc_channels;		hlpr->timeout = dcc_timeout;		hlpr->flags = IP_CT_HELPER_F_REUSE_EXPECT;		hlpr->me = ip_conntrack_irc;		hlpr->help = help;		tmpname = &irc_names[i][0];		if (ports[i] == IRC_PORT)			sprintf(tmpname, "irc");		else			sprintf(tmpname, "irc-%d", i);		hlpr->name = tmpname;		DEBUGP("port #%d: %d\n", i, ports[i]);		ret = ip_conntrack_helper_register(hlpr);		if (ret) {			printk("ip_conntrack_irc: ERROR registering port %d\n",				ports[i]);			fini();			return -EBUSY;		}		ports_c++;	}	return 0;}/* This function is intentionally _NOT_ defined as __exit, because  * it is needed by the init function */static void fini(void){	int i;	for (i = 0; i < ports_c; i++) {		DEBUGP("unregistering port %d\n",		       ports[i]);		ip_conntrack_helper_unregister(&irc_helpers[i]);	}}PROVIDES_CONNTRACK(irc);EXPORT_SYMBOL(ip_irc_lock);module_init(init);module_exit(fini);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线一区二区| 色综合天天性综合| 全部av―极品视觉盛宴亚洲| 亚洲韩国一区二区三区| 成人欧美一区二区三区| 综合久久综合久久| 一二三区精品福利视频| 亚洲综合在线电影| 亚洲va国产天堂va久久en| 日本成人在线看| 激情亚洲综合在线| 成人97人人超碰人人99| 91免费看视频| 宅男在线国产精品| 2024国产精品视频| 亚洲日本丝袜连裤袜办公室| 亚洲一区二区在线视频| 美女视频一区在线观看| 国产精品自产自拍| 91日韩在线专区| 欧美一级生活片| 国产日韩欧美在线一区| 亚洲男人的天堂在线观看| 亚洲一级在线观看| 国产精品伊人色| 91精品福利视频| 日韩精品一区国产麻豆| 欧美国产日韩亚洲一区| 亚洲国产精品影院| 国产一区二区精品久久91| 99国产精品久久久久| 欧美高清性hdvideosex| 久久精品这里都是精品| 亚洲午夜成aⅴ人片| 国产成人夜色高潮福利影视| 色av成人天堂桃色av| 久久影音资源网| 五月婷婷久久综合| 成人免费高清在线| 日韩精品资源二区在线| 亚洲精品视频在线观看免费| 国产一区二区久久| 91精品中文字幕一区二区三区| 国产蜜臀97一区二区三区| 亚洲成人午夜影院| 9久草视频在线视频精品| 欧美一卡2卡3卡4卡| 一区二区三区免费看视频| 国产福利91精品一区二区三区| 91精品久久久久久久99蜜桃| 亚洲欧美激情一区二区| 国产91丝袜在线观看| 欧美mv日韩mv国产| 偷窥少妇高潮呻吟av久久免费| 99久久精品国产一区| 久久色在线视频| 精品在线一区二区三区| 在线综合+亚洲+欧美中文字幕| 亚洲免费在线看| 99久久伊人久久99| 国产欧美一区二区精品忘忧草| 久久精品国产成人一区二区三区| 欧美亚一区二区| 一区二区在线观看视频| 99精品视频在线观看| 中文字幕巨乱亚洲| 国产成人精品影院| 国产人久久人人人人爽| 国产精品中文字幕欧美| 久久亚洲综合av| 国产一区二区三区免费观看| 久久久另类综合| 国产一区二区h| 国产人伦精品一区二区| 岛国一区二区在线观看| 国产欧美日韩三区| 成人精品一区二区三区中文字幕| 国产欧美久久久精品影院| 国产高清久久久久| 欧美国产综合色视频| 99视频有精品| 亚洲一区二区三区在线播放| 欧美日本在线看| 美腿丝袜在线亚洲一区| 久久精品网站免费观看| av一区二区久久| 亚洲欧美福利一区二区| 欧美亚日韩国产aⅴ精品中极品| 亚洲大片精品永久免费| 日韩欧美精品三级| 国产91高潮流白浆在线麻豆| 136国产福利精品导航| 欧美午夜视频网站| 久久er精品视频| 国产精品乱码一区二三区小蝌蚪| 色综合天天性综合| 日韩av电影免费观看高清完整版| 欧美不卡一区二区三区| 岛国av在线一区| 香蕉加勒比综合久久| 久久精品人人做人人爽人人| 成人av网站免费| 日韩成人av影视| 国产精品久久毛片| 正在播放亚洲一区| 波多野结衣91| 日本在线不卡视频| 国产精品久久久久久户外露出| 欧美日本韩国一区二区三区视频 | 精品国产sm最大网站免费看| 成人在线综合网| 无码av中文一区二区三区桃花岛| 久久久久久久网| 欧美女孩性生活视频| 国产91丝袜在线观看| 香蕉成人啪国产精品视频综合网| 国产欧美一区二区在线| 91精品婷婷国产综合久久性色| 福利电影一区二区| 老司机午夜精品| 亚洲尤物视频在线| 亚洲欧洲美洲综合色网| 亚洲精品在线三区| 91.麻豆视频| 欧美在线看片a免费观看| 国产精品一区在线观看乱码| 日韩精品一区第一页| 亚洲综合色丁香婷婷六月图片| 中文字幕国产精品一区二区| 欧美tk丨vk视频| 欧美一区欧美二区| 欧美在线视频你懂得| 91小视频免费看| eeuss鲁片一区二区三区在线看| 国产一区二区三区久久久| 日本欧美一区二区三区| 亚洲午夜视频在线观看| 亚洲欧美日韩一区二区| 国产精品久久久久婷婷二区次| 久久嫩草精品久久久久| 日韩欧美一级特黄在线播放| 在线成人高清不卡| 欧美日韩精品福利| 欧美精品在线观看播放| 欧美午夜免费电影| 在线免费观看日本一区| 色美美综合视频| 色哟哟精品一区| 91在线播放网址| 欧美综合色免费| 欧美视频一区二区三区四区 | 亚洲欧美成aⅴ人在线观看| 国产日本一区二区| 欧美激情一区不卡| 中文字幕在线一区免费| 成人欧美一区二区三区白人| 18成人在线视频| 一区二区三区在线视频观看58| 亚洲欧美日韩在线播放| 亚洲一区自拍偷拍| 免费成人在线观看| 久久9热精品视频| 国产成人精品亚洲777人妖| 丁香六月综合激情| 色欧美片视频在线观看| 欧美日韩高清一区| 久久无码av三级| 一区在线观看视频| 亚洲成人精品在线观看| 麻豆久久久久久| www.日韩大片| 欧美日韩高清一区二区三区| 日韩欧美一区二区久久婷婷| 国产欧美精品一区| 亚洲综合无码一区二区| 免费成人深夜小野草| 丁香激情综合五月| 欧美日韩三级在线| 国产偷国产偷亚洲高清人白洁| 中文字幕亚洲精品在线观看| 亚洲午夜在线视频| 国产剧情一区在线| 欧洲日韩一区二区三区| 欧美精品一区男女天堂| 亚洲欧美日韩综合aⅴ视频| 日韩精品一级中文字幕精品视频免费观看| 开心九九激情九九欧美日韩精美视频电影 | 日韩美女精品在线| 欧美aaaaaa午夜精品| 97久久超碰国产精品电影| 日韩一区二区在线观看| 一区在线观看免费| 麻豆成人免费电影| 在线观看国产一区二区| 2023国产精华国产精品| 亚洲成人精品影院| 99精品视频一区| 欧美精品一区二区三区很污很色的 | 亚洲欧美综合另类在线卡通| 蜜臀久久99精品久久久画质超高清 |