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

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

?? ip_conntrack_standalone.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* This file contains all the functions required for the standalone   ip_conntrack module.   These are not required by the compatibility layer.*//* (C) 1999-2001 Paul `Rusty' Russell * (C) 2002-2004 Netfilter Core Team <coreteam@netfilter.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/config.h>#include <linux/types.h>#include <linux/ip.h>#include <linux/netfilter.h>#include <linux/netfilter_ipv4.h>#include <linux/module.h>#include <linux/skbuff.h>#include <linux/proc_fs.h>#ifdef CONFIG_SYSCTL#include <linux/sysctl.h>#endif#include <net/checksum.h>#include <net/ip.h>#define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_conntrack_lock)#define ASSERT_WRITE_LOCK(x) MUST_BE_WRITE_LOCKED(&ip_conntrack_lock)#include <linux/netfilter_ipv4/ip_conntrack.h>#include <linux/netfilter_ipv4/ip_conntrack_protocol.h>#include <linux/netfilter_ipv4/ip_conntrack_core.h>#include <linux/netfilter_ipv4/ip_conntrack_helper.h>#include <linux/netfilter_ipv4/listhelp.h>#if 0#define DEBUGP printk#else#define DEBUGP(format, args...)#endifMODULE_LICENSE("GPL");static int kill_proto(const struct ip_conntrack *i, void *data){	return (i->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum == 			*((u_int8_t *) data));}static unsigned intprint_tuple(char *buffer, const struct ip_conntrack_tuple *tuple,	    struct ip_conntrack_protocol *proto){	int len;	len = sprintf(buffer, "src=%u.%u.%u.%u dst=%u.%u.%u.%u ",		      NIPQUAD(tuple->src.ip), NIPQUAD(tuple->dst.ip));	len += proto->print_tuple(buffer + len, tuple);	return len;}/* FIXME: Don't print source proto part. --RR */static unsigned intprint_expect(char *buffer, const struct ip_conntrack_expect *expect){	unsigned int len;	if (expect->expectant->helper->timeout)		len = sprintf(buffer, "EXPECTING: %lu ",			      timer_pending(&expect->timeout)			      ? (expect->timeout.expires - jiffies)/HZ : 0);	else		len = sprintf(buffer, "EXPECTING: - ");	len += sprintf(buffer + len, "use=%u proto=%u ",		      atomic_read(&expect->use), expect->tuple.dst.protonum);	len += print_tuple(buffer + len, &expect->tuple,			   __ip_ct_find_proto(expect->tuple.dst.protonum));	len += sprintf(buffer + len, "\n");	return len;}static unsigned intprint_conntrack(char *buffer, struct ip_conntrack *conntrack){	unsigned int len;	struct ip_conntrack_protocol *proto		= __ip_ct_find_proto(conntrack->tuplehash[IP_CT_DIR_ORIGINAL]			       .tuple.dst.protonum);	len = sprintf(buffer, "%-8s %u %lu ",		      proto->name,		      conntrack->tuplehash[IP_CT_DIR_ORIGINAL]		      .tuple.dst.protonum,		      timer_pending(&conntrack->timeout)		      ? (conntrack->timeout.expires - jiffies)/HZ : 0);	len += proto->print_conntrack(buffer + len, conntrack);	len += print_tuple(buffer + len,			   &conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple,			   proto);	if (!(test_bit(IPS_SEEN_REPLY_BIT, &conntrack->status)))		len += sprintf(buffer + len, "[UNREPLIED] ");	len += print_tuple(buffer + len,			   &conntrack->tuplehash[IP_CT_DIR_REPLY].tuple,			   proto);	if (test_bit(IPS_ASSURED_BIT, &conntrack->status))		len += sprintf(buffer + len, "[ASSURED] ");	len += sprintf(buffer + len, "use=%u ",		       atomic_read(&conntrack->ct_general.use));	len += sprintf(buffer + len, "\n");	return len;}/* Returns true when finished. */static inline intconntrack_iterate(const struct ip_conntrack_tuple_hash *hash,		  char *buffer, off_t offset, off_t *upto,		  unsigned int *len, unsigned int maxlen){	unsigned int newlen;	IP_NF_ASSERT(hash->ctrack);	MUST_BE_READ_LOCKED(&ip_conntrack_lock);	/* Only count originals */	if (DIRECTION(hash))		return 0;	if ((*upto)++ < offset)		return 0;	newlen = print_conntrack(buffer + *len, hash->ctrack);	if (*len + newlen > maxlen)		return 1;	else *len += newlen;	return 0;}static intlist_conntracks(char *buffer, char **start, off_t offset, int length){	unsigned int i;	unsigned int len = 0;	off_t upto = 0;	struct list_head *e;	READ_LOCK(&ip_conntrack_lock);	/* Traverse hash; print originals then reply. */	for (i = 0; i < ip_conntrack_htable_size; i++) {		if (LIST_FIND(&ip_conntrack_hash[i], conntrack_iterate,			      struct ip_conntrack_tuple_hash *,			      buffer, offset, &upto, &len, length))			goto finished;	}	/* Now iterate through expecteds. */	READ_LOCK(&ip_conntrack_expect_tuple_lock);	list_for_each(e, &ip_conntrack_expect_list) {		unsigned int last_len;		struct ip_conntrack_expect *expect			= (struct ip_conntrack_expect *)e;		if (upto++ < offset) continue;		last_len = len;		len += print_expect(buffer + len, expect);		if (len > length) {			len = last_len;			goto finished_expects;		}	} finished_expects:	READ_UNLOCK(&ip_conntrack_expect_tuple_lock); finished:	READ_UNLOCK(&ip_conntrack_lock);	/* `start' hack - see fs/proc/generic.c line ~165 */	*start = (char *)((unsigned int)upto - offset);	return len;}static unsigned int ip_confirm(unsigned int hooknum,			       struct sk_buff **pskb,			       const struct net_device *in,			       const struct net_device *out,			       int (*okfn)(struct sk_buff *)){	/* We've seen it coming out the other side: confirm it */	return ip_conntrack_confirm(*pskb);}static unsigned int ip_conntrack_defrag(unsigned int hooknum,				        struct sk_buff **pskb,				        const struct net_device *in,				        const struct net_device *out,				        int (*okfn)(struct sk_buff *)){	/* Previously seen (loopback)?  Ignore.  Do this before           fragment check. */	if ((*pskb)->nfct)		return NF_ACCEPT;	/* Gather fragments. */	if ((*pskb)->nh.iph->frag_off & htons(IP_MF|IP_OFFSET)) {		*pskb = ip_ct_gather_frags(*pskb);		if (!*pskb)			return NF_STOLEN;	}	return NF_ACCEPT;}static unsigned int ip_refrag(unsigned int hooknum,			      struct sk_buff **pskb,			      const struct net_device *in,			      const struct net_device *out,			      int (*okfn)(struct sk_buff *)){	struct rtable *rt = (struct rtable *)(*pskb)->dst;	/* We've seen it coming out the other side: confirm */	if (ip_confirm(hooknum, pskb, in, out, okfn) != NF_ACCEPT)		return NF_DROP;	/* Local packets are never produced too large for their	   interface.  We degfragment them at LOCAL_OUT, however,	   so we have to refragment them here. */	if ((*pskb)->len > dst_pmtu(&rt->u.dst) &&	    !skb_shinfo(*pskb)->tso_size) {		/* No hook can be after us, so this should be OK. */		ip_fragment(*pskb, okfn);		return NF_STOLEN;	}	return NF_ACCEPT;}static unsigned int ip_conntrack_local(unsigned int hooknum,				       struct sk_buff **pskb,				       const struct net_device *in,				       const struct net_device *out,				       int (*okfn)(struct sk_buff *)){	/* root is playing with raw sockets. */	if ((*pskb)->len < sizeof(struct iphdr)	    || (*pskb)->nh.iph->ihl * 4 < sizeof(struct iphdr)) {		if (net_ratelimit())			printk("ipt_hook: happy cracking.\n");		return NF_ACCEPT;	}	return ip_conntrack_in(hooknum, pskb, in, out, okfn);}/* Connection tracking may drop packets, but never alters them, so   make it the first hook. */static struct nf_hook_ops ip_conntrack_defrag_ops = {	.hook		= ip_conntrack_defrag,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_PRE_ROUTING,	.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,};static struct nf_hook_ops ip_conntrack_in_ops = {	.hook		= ip_conntrack_in,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_PRE_ROUTING,	.priority	= NF_IP_PRI_CONNTRACK,};static struct nf_hook_ops ip_conntrack_defrag_local_out_ops = {	.hook		= ip_conntrack_defrag,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_LOCAL_OUT,	.priority	= NF_IP_PRI_CONNTRACK_DEFRAG,};static struct nf_hook_ops ip_conntrack_local_out_ops = {	.hook		= ip_conntrack_local,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_LOCAL_OUT,	.priority	= NF_IP_PRI_CONNTRACK,};/* Refragmenter; last chance. */static struct nf_hook_ops ip_conntrack_out_ops = {	.hook		= ip_refrag,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_POST_ROUTING,	.priority	= NF_IP_PRI_LAST,};static struct nf_hook_ops ip_conntrack_local_in_ops = {	.hook		= ip_confirm,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_LOCAL_IN,	.priority	= NF_IP_PRI_LAST-1,};/* Sysctl support */#ifdef CONFIG_SYSCTL/* From ip_conntrack_core.c */extern int ip_conntrack_max;extern unsigned int ip_conntrack_htable_size;/* From ip_conntrack_proto_tcp.c */extern unsigned long ip_ct_tcp_timeout_syn_sent;extern unsigned long ip_ct_tcp_timeout_syn_recv;extern unsigned long ip_ct_tcp_timeout_established;extern unsigned long ip_ct_tcp_timeout_fin_wait;extern unsigned long ip_ct_tcp_timeout_close_wait;extern unsigned long ip_ct_tcp_timeout_last_ack;extern unsigned long ip_ct_tcp_timeout_time_wait;extern unsigned long ip_ct_tcp_timeout_close;/* From ip_conntrack_proto_udp.c */extern unsigned long ip_ct_udp_timeout;extern unsigned long ip_ct_udp_timeout_stream;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区**美女毛片| 奇米一区二区三区av| 日本不卡免费在线视频| 成人av在线一区二区| 日韩女优制服丝袜电影| 一区二区三区日韩欧美精品| 国产一区视频在线看| 欧美三级中文字幕| 国产精品萝li| 美女免费视频一区| 91久久精品一区二区三区| 久久久久国色av免费看影院| 日本不卡1234视频| 欧美色图激情小说| 亚洲欧美激情小说另类| 成人久久18免费网站麻豆| 日韩久久精品一区| 免费成人av在线| 欧美性一级生活| 亚洲精品欧美综合四区| 春色校园综合激情亚洲| 久久久久综合网| 毛片不卡一区二区| 日韩欧美电影一二三| 五月激情综合色| 欧美三级一区二区| 一区二区在线电影| 91久久免费观看| 亚洲精品成人悠悠色影视| www.亚洲色图| 国产精品成人免费| 91在线视频播放| 日韩毛片精品高清免费| 色又黄又爽网站www久久| 国产精品久久777777| 成人黄色小视频在线观看| 欧美国产精品劲爆| av一区二区三区四区| 中文欧美字幕免费| av亚洲精华国产精华精| 亚洲人成在线观看一区二区| 91偷拍与自偷拍精品| 亚洲精品视频在线看| 在线区一区二视频| 视频一区二区三区中文字幕| 日韩一级片网站| 久久精品免费观看| 国产亚洲精品bt天堂精选| 波多野结衣在线一区| 亚洲婷婷在线视频| 欧美三级电影在线观看| 日本不卡免费在线视频| 精品处破学生在线二十三| 国产成人精品影视| 亚洲欧美日本在线| 欧美一区二区三区在线电影| 久久99久久久欧美国产| 国产精品看片你懂得| 色老汉av一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久精品这里都是精品| 成人av动漫网站| 性欧美大战久久久久久久久| 日韩限制级电影在线观看| 成人国产亚洲欧美成人综合网| 亚洲女厕所小便bbb| 日韩午夜在线观看视频| 成人免费视频视频| 日韩国产欧美在线观看| 中文字幕第一页久久| 欧美精品777| 国产69精品一区二区亚洲孕妇| 亚洲综合一区二区精品导航| 欧美成人性福生活免费看| 97成人超碰视| 久久国产精品99久久久久久老狼 | 成熟亚洲日本毛茸茸凸凹| 亚洲成人免费视| 亚洲国产精品传媒在线观看| 欧美色网一区二区| 国产成人av电影在线| 视频一区中文字幕| 18成人在线观看| 久久综合精品国产一区二区三区 | 99久久久精品免费观看国产蜜| 午夜一区二区三区视频| 国产精品私房写真福利视频| 欧美一区二区在线观看| 欧洲精品视频在线观看| 粉嫩aⅴ一区二区三区四区| 麻豆精品一区二区| 亚洲香蕉伊在人在线观| 中文字幕视频一区| 国产三级精品三级| 精品国产一区二区三区不卡| 欧美日韩一区二区在线观看视频| 国产**成人网毛片九色| 玖玖九九国产精品| 日本sm残虐另类| 亚洲无人区一区| 亚洲免费av在线| 中文字幕一区二区三区蜜月| 久久久九九九九| 久久综合九色综合97_久久久 | 在线观看三级视频欧美| 成人久久久精品乱码一区二区三区| 精品一区二区三区视频在线观看| 天天亚洲美女在线视频| 午夜a成v人精品| 亚洲一区二区在线播放相泽| 1000部国产精品成人观看| 中文字幕国产一区二区| 中文字幕av不卡| 欧美韩国日本不卡| 国产日韩欧美制服另类| 久久精品人人做人人爽人人| 精品久久免费看| 久久婷婷一区二区三区| 久久只精品国产| 国产日韩欧美制服另类| 日本一区二区视频在线| 国产精品美女久久久久久久久久久 | 久久久国产午夜精品| 久久精品人人做| 中文字幕乱码一区二区免费| 综合自拍亚洲综合图不卡区| 亚洲欧洲综合另类在线| 亚洲综合色区另类av| 五月婷婷激情综合| 麻豆精品国产传媒mv男同| 国产精品亚洲第一区在线暖暖韩国| 国产精品一二三四五| eeuss鲁片一区二区三区| 色综合久久久久| 91精品国产欧美一区二区| 2023国产精品| 国产精品不卡视频| 亚洲国产精品一区二区www在线| 五月激情综合网| 国产成人免费视频一区| 91视频观看视频| 欧美精品一二三| 久久男人中文字幕资源站| 国产精品毛片大码女人| 亚洲福利一区二区| 精品一区二区影视| 97精品电影院| 精品国产免费人成电影在线观看四季| 国产日产精品1区| 亚洲国产一二三| 国产精品中文字幕日韩精品| 色94色欧美sute亚洲线路一久 | 色婷婷一区二区| 欧美一区二区女人| 国产精品久久久久一区| 日韩二区在线观看| 懂色av一区二区夜夜嗨| 欧美日韩亚洲不卡| 国产亚洲精品精华液| 首页国产欧美久久| 成人免费观看av| 欧美电影免费观看高清完整版 | 国产视频视频一区| 午夜伦理一区二区| jizzjizzjizz欧美| 精品久久久久久久久久久院品网| 亚洲日本va在线观看| 精品影视av免费| 欧美性xxxxx极品少妇| 亚洲国产精品v| 蜜臀久久久久久久| 欧美综合亚洲图片综合区| 国产嫩草影院久久久久| 麻豆一区二区99久久久久| 91福利在线免费观看| 国产视频一区在线观看| 久久精品国产第一区二区三区| 色噜噜狠狠一区二区三区果冻| 亚洲国产经典视频| 狠狠色丁香久久婷婷综| 欧美精品乱人伦久久久久久| 亚洲激情欧美激情| 91香蕉视频mp4| 国产精品国产成人国产三级 | 色婷婷一区二区三区四区| 欧美激情在线一区二区三区| 极品少妇xxxx精品少妇偷拍 | 久久色在线视频| 老司机一区二区| 欧美一级搡bbbb搡bbbb| 午夜精品一区在线观看| 在线免费视频一区二区| 亚洲人成小说网站色在线 | 精品一二三四在线| 日韩一区二区在线观看| 日韩专区欧美专区| 91精品福利在线一区二区三区| 亚洲国产一区二区三区| 欧美日韩免费高清一区色橹橹 | 最新不卡av在线|