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

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

?? ip_fw_compat.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* Compatibility framework for ipchains and ipfwadm support; designed   to look as much like the 2.2 infrastructure as possible. *//* (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. */struct notifier_block;#include <linux/netfilter_ipv4.h>#include <linux/ip.h>#include <net/icmp.h>#include <linux/if.h>#include <linux/inetdevice.h>#include <linux/netdevice.h>#include <linux/module.h>#include <asm/uaccess.h>#include <net/ip.h>#include <net/route.h>#include <linux/netfilter_ipv4/compat_firewall.h>#include <linux/netfilter_ipv4/ip_conntrack.h>#include <linux/netfilter_ipv4/ip_conntrack_core.h>#include "ip_fw_compat.h"static struct firewall_ops *fwops;#ifdef CONFIG_IP_VS/* From ip_vs_core.c */extern unsigned intcheck_for_ip_vs_out(struct sk_buff **skb_p, int (*okfn)(struct sk_buff *));#endif/* They call these; we do what they want. */int register_firewall(int pf, struct firewall_ops *fw){	if (pf != PF_INET) {		printk("Attempt to register non-IP firewall module.\n");		return -EINVAL;	}	if (fwops) {		printk("Attempt to register multiple firewall modules.\n");		return -EBUSY;	}	fwops = fw;	return 0;}int unregister_firewall(int pf, struct firewall_ops *fw){	fwops = NULL;	return 0;}static unsigned intfw_in(unsigned int hooknum,      struct sk_buff **pskb,      const struct net_device *in,      const struct net_device *out,      int (*okfn)(struct sk_buff *)){	int ret = FW_BLOCK;	u_int16_t redirpt;	/* Assume worse case: any hook could change packet */	(*pskb)->nfcache |= NFC_UNKNOWN | NFC_ALTERED;	if ((*pskb)->ip_summed == CHECKSUM_HW)		if (skb_checksum_help(pskb, (out == NULL)))			return NF_DROP;	switch (hooknum) {	case NF_IP_PRE_ROUTING:		if (fwops->fw_acct_in)			fwops->fw_acct_in(fwops, PF_INET,					  (struct net_device *)in,					  &redirpt, pskb);		if ((*pskb)->nh.iph->frag_off & htons(IP_MF|IP_OFFSET)) {			*pskb = ip_ct_gather_frags(*pskb);			if (!*pskb)				return NF_STOLEN;		}		ret = fwops->fw_input(fwops, PF_INET, (struct net_device *)in,				      &redirpt, pskb);		break;	case NF_IP_FORWARD:		/* Connection will only be set if it was                   demasqueraded: if so, skip forward chain. */		if ((*pskb)->nfct)			ret = FW_ACCEPT;		else ret = fwops->fw_forward(fwops, PF_INET,					     (struct net_device *)out,					     &redirpt, pskb);		break;	case NF_IP_POST_ROUTING:		ret = fwops->fw_output(fwops, PF_INET,				       (struct net_device *)out,				       &redirpt, pskb);		if (ret == FW_ACCEPT || ret == FW_SKIP) {			if (fwops->fw_acct_out)				fwops->fw_acct_out(fwops, PF_INET,						   (struct net_device *)out,						   &redirpt,						   pskb);			/* ip_conntrack_confirm return NF_DROP or NF_ACCEPT */			if (ip_conntrack_confirm(*pskb) == NF_DROP)				ret = FW_BLOCK;		}		break;	}	switch (ret) {	case FW_REJECT: {		/* Alexey says:		 *		 * Generally, routing is THE FIRST thing to make, when		 * packet enters IP stack. Before packet is routed you		 * cannot call any service routines from IP stack.  */		struct iphdr *iph = (*pskb)->nh.iph;		if ((*pskb)->dst != NULL		    || ip_route_input(*pskb, iph->daddr, iph->saddr, iph->tos,				      (struct net_device *)in) == 0)			icmp_send(*pskb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH,				  0);		return NF_DROP;	}	case FW_ACCEPT:	case FW_SKIP:		if (hooknum == NF_IP_PRE_ROUTING) {			check_for_demasq(pskb);			check_for_redirect(*pskb);		} else if (hooknum == NF_IP_POST_ROUTING) {			check_for_unredirect(*pskb);			/* Handle ICMP errors from client here */			if ((*pskb)->nh.iph->protocol == IPPROTO_ICMP			    && (*pskb)->nfct)				check_for_masq_error(pskb);		}		return NF_ACCEPT;	case FW_MASQUERADE:		if (hooknum == NF_IP_FORWARD) {#ifdef CONFIG_IP_VS			/* check if it is for ip_vs */			if (check_for_ip_vs_out(pskb, okfn) == NF_STOLEN)				return NF_STOLEN;#endif			return do_masquerade(pskb, out);		}		else return NF_ACCEPT;	case FW_REDIRECT:		if (hooknum == NF_IP_PRE_ROUTING)			return do_redirect(*pskb, in, redirpt);		else return NF_ACCEPT;	default:		/* FW_BLOCK */		return NF_DROP;	}}static unsigned int fw_confirm(unsigned int hooknum,			       struct sk_buff **pskb,			       const struct net_device *in,			       const struct net_device *out,			       int (*okfn)(struct sk_buff *)){	return ip_conntrack_confirm(*pskb);}extern int ip_fw_ctl(int optval, void *m, unsigned int len);static int sock_fn(struct sock *sk, int optval, void __user *user, unsigned int len){	/* MAX of:	   2.2: sizeof(struct ip_fwtest) (~14x4 + 3x4 = 17x4)	   2.2: sizeof(struct ip_fwnew) (~1x4 + 15x4 + 3x4 + 3x4 = 22x4)	   2.0: sizeof(struct ip_fw) (~25x4)	   We can't include both 2.0 and 2.2 headers, they conflict.	   Hence, 200 is a good number. --RR */	char tmp_fw[200];	if (!capable(CAP_NET_ADMIN))		return -EPERM;	if (len > sizeof(tmp_fw) || len < 1)		return -EINVAL;	if (copy_from_user(&tmp_fw, user, len))		return -EFAULT;	return -ip_fw_ctl(optval, &tmp_fw, len);}static struct nf_hook_ops preroute_ops = {	.hook		= fw_in,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_PRE_ROUTING,	.priority	= NF_IP_PRI_FILTER,};static struct nf_hook_ops postroute_ops = {	.hook		= fw_in,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_POST_ROUTING,	.priority	= NF_IP_PRI_FILTER,};static struct nf_hook_ops forward_ops = {	.hook		= fw_in,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_FORWARD,	.priority	= NF_IP_PRI_FILTER,};static struct nf_hook_ops local_in_ops = {	.hook		= fw_confirm,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum	= NF_IP_LOCAL_IN,	.priority	= NF_IP_PRI_LAST - 1,};static struct nf_sockopt_ops sock_ops = {	.pf		= PF_INET,	.set_optmin	= 64,	.set_optmax	= 64 + 1024 + 1,	.set		= &sock_fn,};extern int ipfw_init_or_cleanup(int init);static int init_or_cleanup(int init){	int ret = 0;	if (!init) goto cleanup;	ret = nf_register_sockopt(&sock_ops);	if (ret < 0)		goto cleanup_nothing;	ret = ipfw_init_or_cleanup(1);	if (ret < 0)		goto cleanup_sockopt;	ret = masq_init();	if (ret < 0)		goto cleanup_ipfw;	nf_register_hook(&preroute_ops);	nf_register_hook(&postroute_ops);	nf_register_hook(&forward_ops);	nf_register_hook(&local_in_ops);	return ret; cleanup:	nf_unregister_hook(&preroute_ops);	nf_unregister_hook(&postroute_ops);	nf_unregister_hook(&forward_ops);	nf_unregister_hook(&local_in_ops);	masq_cleanup(); cleanup_ipfw:	ipfw_init_or_cleanup(0); cleanup_sockopt:	nf_unregister_sockopt(&sock_ops); cleanup_nothing:	return ret;}static int __init init(void){	return init_or_cleanup(1);}static void __exit fini(void){	init_or_cleanup(0);}module_init(init);module_exit(fini);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
理论电影国产精品| 亚洲成人av资源| 欧美精品一区二区久久久| 欧美日韩国产bt| 欧洲av在线精品| 91麻豆成人久久精品二区三区| 一本到不卡精品视频在线观看| 日韩三级视频在线观看| 欧美精品在欧美一区二区少妇| 亚洲一区二区影院| 亚洲视频免费看| 亚洲人成人一区二区在线观看| 欧美性xxxxx极品少妇| 欧洲一区在线电影| 欧美日韩视频一区二区| 777欧美精品| 精品久久久久久最新网址| 欧美电影免费观看高清完整版在线 | 日本成人中文字幕在线视频| 三级不卡在线观看| 免费成人av在线| 捆绑调教一区二区三区| 国产精品原创巨作av| 99久久精品费精品国产一区二区| 亚洲午夜免费视频| 午夜欧美一区二区三区在线播放| 欧美丰满一区二区免费视频| 久久综合久久综合久久| 一色屋精品亚洲香蕉网站| 五月开心婷婷久久| 国产乱人伦偷精品视频免下载| 亚洲免费视频成人| 日本成人中文字幕在线视频| 九九视频精品免费| 一本在线高清不卡dvd| 91精品国产免费久久综合| 国产日本欧美一区二区| 亚洲一区成人在线| 狠狠色丁香久久婷婷综| 色av成人天堂桃色av| 欧美日韩大陆一区二区| 中文字幕在线不卡| 视频在线观看国产精品| 成人一道本在线| 欧美另类久久久品| 国产精品进线69影院| 日本va欧美va欧美va精品| 成人动漫精品一区二区| 欧美不卡123| 亚洲午夜精品在线| 成人免费视频视频在线观看免费 | 精品视频123区在线观看| 精品成a人在线观看| 性感美女久久精品| 成人深夜在线观看| 日韩欧美久久久| 一区二区在线电影| 岛国精品在线观看| 久久综合久久综合九色| 日韩av网站在线观看| 色哟哟国产精品| 国产欧美日本一区视频| 日本在线播放一区二区三区| 色婷婷综合久久久久中文一区二区 | 日韩电影在线看| 日本精品视频一区二区| 欧美激情一区二区三区四区 | 国产精品久久久久一区二区三区| 国产日韩欧美激情| 另类小说一区二区三区| 在线不卡欧美精品一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区大片| 首页亚洲欧美制服丝腿| 欧美亚洲精品一区| 一个色综合av| 在线观看亚洲精品| 亚洲国产中文字幕在线视频综合| 亚洲一区在线观看网站| 欧美伊人久久久久久久久影院| 欧美日韩在线观看一区二区| 一区二区三区国产精华| 波多野结衣在线aⅴ中文字幕不卡| 91视频免费看| 最好看的中文字幕久久| 日本韩国一区二区三区视频| 一区二区三区高清| 日韩一级在线观看| 久久国产尿小便嘘嘘尿| 精品国产电影一区二区| 成人性视频免费网站| 亚洲女性喷水在线观看一区| 欧美色中文字幕| 久久99深爱久久99精品| 国产午夜精品一区二区三区四区 | 91精品国产色综合久久久蜜香臀| 久久久久久久综合日本| 99久久国产综合精品麻豆| 一区二区免费视频| 日韩精品中文字幕一区二区三区| 亚洲欧美一区二区视频| 欧美日韩高清不卡| 国产精品一色哟哟哟| 国产精品国产三级国产aⅴ入口| 一区二区三区四区不卡视频| 国产99精品在线观看| 欧美一区二区在线免费观看| 国产一区二区三区免费播放| 日韩欧美国产综合| 国产精品一级在线| 国产精品久久久久影院| 色综合天天综合给合国产| 亚洲欧美日韩在线| 精品污污网站免费看| 日韩国产欧美在线视频| 日韩欧美区一区二| 国产精品原创巨作av| 亚洲色图在线视频| 欧美日韩一级片网站| 精品亚洲成a人在线观看| 欧美国产日韩亚洲一区| 日韩女优av电影| 成人久久视频在线观看| 一区二区三区波多野结衣在线观看| 日本欧洲一区二区| 国产日韩欧美亚洲| 在线观看日产精品| 国产91露脸合集magnet| 亚洲乱码精品一二三四区日韩在线| 美女网站色91| 久久久久久久综合色一本| 色婷婷av一区| 久久99久久99| 亚洲一区二区在线视频| 国产欧美中文在线| 欧美午夜视频网站| 国产精品123| 亚洲精品国产第一综合99久久| 国产乱对白刺激视频不卡| 日本一二三不卡| 久久丝袜美腿综合| 欧美日韩色综合| 成人免费精品视频| 另类小说综合欧美亚洲| 国产欧美精品一区二区三区四区 | 久久综合视频网| 日本黄色一区二区| 狠狠色丁香久久婷婷综| 亚洲免费在线视频| 亚洲伦理在线免费看| 国产欧美一区视频| 日韩精品一区二区在线观看| 色吧成人激情小说| 不卡的av中国片| 国产一区二区三区在线观看免费| 欧美一级欧美三级| 在线观看中文字幕不卡| 国产美女精品一区二区三区| 天天色天天操综合| 一区二区三区美女视频| 午夜影视日本亚洲欧洲精品| 一色屋精品亚洲香蕉网站| 久久久欧美精品sm网站| 欧美大度的电影原声| 欧美一区二区三区在线电影| 91精品国产综合久久久久久久久久 | 日韩中文字幕av电影| 亚洲精选免费视频| 中文字幕亚洲综合久久菠萝蜜| 国产成人免费xxxxxxxx| 国产成人aaa| 国产麻豆9l精品三级站| 麻豆成人久久精品二区三区红| 欧美一级日韩免费不卡| 欧美亚洲国产怡红院影院| 91丝袜呻吟高潮美腿白嫩在线观看| 精品国产免费人成在线观看| 在线观看精品一区| 日韩欧美电影一二三| 宅男在线国产精品| 欧美理论片在线| 91精品国产免费久久综合| 欧美亚洲图片小说| 久久无码av三级| 欧美精品一区二区三区很污很色的| 成人夜色视频网站在线观看| 国产**成人网毛片九色| www.欧美.com| zzijzzij亚洲日本少妇熟睡| 91污片在线观看| 欧美剧在线免费观看网站| 欧美日韩中字一区| 欧美一个色资源| 26uuu精品一区二区在线观看| 91福利在线免费观看| 欧美日韩高清在线| xnxx国产精品| 综合在线观看色| 亚洲国产综合视频在线观看| 天天综合色天天综合色h|