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

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

?? ipt_masquerade.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* Masquerade.  Simple mapping which alters range to a local IP address   (depending on route). *//* (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/timer.h>#include <linux/module.h>#include <linux/netfilter.h>#include <net/protocol.h>#include <net/ip.h>#include <net/checksum.h>#include <linux/netfilter_ipv4.h>#include <linux/netfilter_ipv4/ip_nat_rule.h>#include <linux/netfilter_ipv4/ip_tables.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("Netfilter Core Team <coreteam@netfilter.org>");MODULE_DESCRIPTION("iptables MASQUERADE target module");#if 0#define DEBUGP printk#else#define DEBUGP(format, args...)#endif/* Lock protects masq region inside conntrack */static DECLARE_RWLOCK(masq_lock);/* FIXME: Multiple targets. --RR */static intmasquerade_check(const char *tablename,		 const struct ipt_entry *e,		 void *targinfo,		 unsigned int targinfosize,		 unsigned int hook_mask){	const struct ip_nat_multi_range *mr = targinfo;	if (strcmp(tablename, "nat") != 0) {		DEBUGP("masquerade_check: bad table `%s'.\n", tablename);		return 0;	}	if (targinfosize != IPT_ALIGN(sizeof(*mr))) {		DEBUGP("masquerade_check: size %u != %u.\n",		       targinfosize, sizeof(*mr));		return 0;	}	if (hook_mask & ~(1 << NF_IP_POST_ROUTING)) {		DEBUGP("masquerade_check: bad hooks %x.\n", hook_mask);		return 0;	}	if (mr->range[0].flags & IP_NAT_RANGE_MAP_IPS) {		DEBUGP("masquerade_check: bad MAP_IPS.\n");		return 0;	}	if (mr->rangesize != 1) {		DEBUGP("masquerade_check: bad rangesize %u.\n", mr->rangesize);		return 0;	}	return 1;}static unsigned intmasquerade_target(struct sk_buff **pskb,		  const struct net_device *in,		  const struct net_device *out,		  unsigned int hooknum,		  const void *targinfo,		  void *userinfo){	struct ip_conntrack *ct;	enum ip_conntrack_info ctinfo;	const struct ip_nat_multi_range *mr;	struct ip_nat_multi_range newrange;	u_int32_t newsrc;	struct rtable *rt;	IP_NF_ASSERT(hooknum == NF_IP_POST_ROUTING);	/* FIXME: For the moment, don't do local packets, breaks	   testsuite for 2.3.49 --RR */	if ((*pskb)->sk)		return NF_ACCEPT;	ct = ip_conntrack_get(*pskb, &ctinfo);	IP_NF_ASSERT(ct && (ctinfo == IP_CT_NEW				  || ctinfo == IP_CT_RELATED));	mr = targinfo;	{		struct flowi fl = { .nl_u = { .ip4_u =					      { .daddr = (*pskb)->nh.iph->daddr,						.tos = (RT_TOS((*pskb)->nh.iph->tos) |							RTO_CONN),#ifdef CONFIG_IP_ROUTE_FWMARK						.fwmark = (*pskb)->nfmark#endif					      } } };		if (ip_route_output_key(&rt, &fl) != 0) {			/* Funky routing can do this. */			if (net_ratelimit())				printk("MASQUERADE:"				       " No route: Rusty's brain broke!\n");			return NF_DROP;		}		if (rt->u.dst.dev != out) {			if (net_ratelimit())				printk("MASQUERADE:"				       " Route sent us somewhere else.\n");			ip_rt_put(rt);			return NF_DROP;		}	}	newsrc = rt->rt_src;	DEBUGP("newsrc = %u.%u.%u.%u\n", NIPQUAD(newsrc));	ip_rt_put(rt);	WRITE_LOCK(&masq_lock);	ct->nat.masq_index = out->ifindex;	WRITE_UNLOCK(&masq_lock);	/* Transfer from original range. */	newrange = ((struct ip_nat_multi_range)		{ 1, { { mr->range[0].flags | IP_NAT_RANGE_MAP_IPS,			 newsrc, newsrc,			 mr->range[0].min, mr->range[0].max } } });	/* Hand modified range to generic setup. */	return ip_nat_setup_info(ct, &newrange, hooknum);}static inline intdevice_cmp(const struct ip_conntrack *i, void *_ina){	int ret = 0;	struct in_ifaddr *ina = _ina;	READ_LOCK(&masq_lock);	/* If it's masquerading out this interface with a different address,	   or we don't know the new address of this interface. */	if (i->nat.masq_index == ina->ifa_dev->dev->ifindex	    && i->tuplehash[IP_CT_DIR_REPLY].tuple.dst.ip != ina->ifa_address)		ret = 1;	READ_UNLOCK(&masq_lock);	return ret;}static int masq_inet_event(struct notifier_block *this,			   unsigned long event,			   void *ptr){	/* For some configurations, interfaces often come back with	 * the same address.  If not, clean up old conntrack	 * entries. */	if (event == NETDEV_UP)		ip_ct_selective_cleanup(device_cmp, ptr);	return NOTIFY_DONE;}static struct notifier_block masq_inet_notifier = {	.notifier_call	= masq_inet_event,};static struct ipt_target masquerade = {	.name		= "MASQUERADE",	.target		= masquerade_target,	.checkentry	= masquerade_check,	.me		= THIS_MODULE,};static int __init init(void){	int ret;	ret = ipt_register_target(&masquerade);	if (ret == 0)		/* Register IP address change reports */		register_inetaddr_notifier(&masq_inet_notifier);	return ret;}static void __exit fini(void){	ipt_unregister_target(&masquerade);	unregister_inetaddr_notifier(&masq_inet_notifier);	}module_init(init);module_exit(fini);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久久久电影| 久久精品在线免费观看| 波多野结衣亚洲一区| 国产精品综合一区二区三区| 狠狠久久亚洲欧美| 国产二区国产一区在线观看| 国产精品一区二区在线看| 国产一区在线视频| 国产99久久久国产精品潘金| 成人v精品蜜桃久久一区| 99re这里只有精品视频首页| 一本一本大道香蕉久在线精品| 色婷婷亚洲综合| 欧美挠脚心视频网站| 欧美一区二区视频免费观看| 久久综合狠狠综合久久综合88| 欧美国产日韩一二三区| 亚洲乱码日产精品bd| 日韩精品每日更新| 国产高清不卡一区二区| 91黄色免费看| 日韩美一区二区三区| 国产精品色在线观看| 亚洲精品高清视频在线观看| 视频一区国产视频| 国产·精品毛片| 欧美中文字幕一区二区三区亚洲| 欧美喷水一区二区| 国产丝袜欧美中文另类| 亚洲在线视频免费观看| 韩国精品久久久| 91精品办公室少妇高潮对白| 日韩免费高清av| 亚洲精品国产无套在线观| 青草av.久久免费一区| 国产成人免费视频网站| 欧美日韩一区二区三区四区| 精品久久免费看| 亚洲在线免费播放| 成人免费视频一区二区| 欧美一区二区三区在线视频| 日韩毛片精品高清免费| 国产资源在线一区| 精品视频资源站| 国产精品国模大尺度视频| 日本在线不卡视频一二三区| 不卡的看片网站| 日韩精品一区二| 一区二区三区在线观看网站| 国产成人免费视频网站 | 不卡一区中文字幕| 日韩午夜精品电影| 亚洲午夜一二三区视频| 成人黄色大片在线观看| 欧美成人免费网站| 五月天激情综合网| 色综合久久中文字幕| 国产精品理论片在线观看| 麻豆国产精品一区二区三区 | 欧美一级片在线观看| 成人免费在线视频观看| 国产精品1024| 337p日本欧洲亚洲大胆色噜噜| 婷婷中文字幕一区三区| 91精彩视频在线| 亚洲私人影院在线观看| www.欧美精品一二区| 日本一区二区三区在线不卡 | 欧美激情在线看| 国内久久精品视频| 日韩精品自拍偷拍| 激情综合网最新| 精品女同一区二区| 国产一区二区三区av电影| 日韩欧美www| 蓝色福利精品导航| 26uuu亚洲| 国产suv精品一区二区883| 国产亲近乱来精品视频| 91免费版pro下载短视频| 国产精品麻豆99久久久久久| 国产精品88av| 国产精品美女久久久久av爽李琼 | 亚洲人123区| 99国产精品久| 亚洲国产精品人人做人人爽| 91成人免费电影| 日日夜夜免费精品| 日韩视频免费观看高清完整版| 免费在线观看成人| 国产欧美一区二区三区网站| 99久久夜色精品国产网站| 亚洲精品视频在线看| 7777精品伊人久久久大香线蕉的 | 欧美一区二区日韩| 韩国一区二区三区| 中文字幕制服丝袜成人av| 色婷婷综合久久久久中文| 天堂影院一区二区| 国产欧美在线观看一区| 日本韩国欧美国产| 免费高清成人在线| 国产欧美视频在线观看| 欧美中文一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 一区二区三区精品| 欧洲av在线精品| 激情亚洲综合在线| 亚洲欧洲一区二区在线播放| 欧美亚洲国产一区二区三区va| 蜜臀a∨国产成人精品| 国产精品剧情在线亚洲| 欧美电影影音先锋| 成人av在线一区二区三区| 三级久久三级久久久| 国产精品久久久久久久岛一牛影视| 欧美午夜视频网站| 国产aⅴ精品一区二区三区色成熟| 亚洲最大色网站| 中文字幕av资源一区| 欧美一区二区视频在线观看| 91首页免费视频| 激情五月播播久久久精品| 亚洲女厕所小便bbb| 国产情人综合久久777777| 91麻豆精品国产91久久久资源速度| 国产成a人无v码亚洲福利| 婷婷激情综合网| 亚洲人成在线播放网站岛国| 精品国产免费视频| 欧美一区二区三区在线观看| 色视频欧美一区二区三区| 风间由美性色一区二区三区| 天天操天天干天天综合网| 国产精品污污网站在线观看| 精品免费一区二区三区| 欧美一区二区三区免费观看视频| 99re热这里只有精品免费视频| 国产一二精品视频| 奇米777欧美一区二区| 亚洲午夜电影网| |精品福利一区二区三区| 国产欧美日韩综合| 国产拍揄自揄精品视频麻豆 | 国产一区二区三区黄视频| 免费欧美高清视频| 日本成人在线视频网站| 亚洲成人精品一区二区| 夜夜嗨av一区二区三区四季av| 亚洲精品日日夜夜| 一区二区三区日韩| 一区二区三区欧美久久| 亚洲综合成人在线视频| 玉足女爽爽91| 亚洲妇熟xx妇色黄| 水野朝阳av一区二区三区| 美女视频黄 久久| 久久精品国产99久久6| 国产乱理伦片在线观看夜一区| 国产一区二区剧情av在线| 国产电影一区二区三区| 成人免费毛片app| 91免费看视频| 欧美疯狂性受xxxxx喷水图片| 91精品中文字幕一区二区三区| 日韩精品在线网站| 国产亚洲美州欧州综合国| 一区二区中文字幕在线| 亚洲电影在线免费观看| 日本一区中文字幕| 国产在线观看一区二区| 99热这里都是精品| 欧美少妇bbb| 欧美一区二区日韩一区二区| 久久九九99视频| 亚洲精品国久久99热| 免费一区二区视频| 成人一二三区视频| 在线免费观看日本一区| 欧美一级二级在线观看| 国产女主播视频一区二区| 一区二区不卡在线播放| 毛片不卡一区二区| voyeur盗摄精品| 欧美人与z0zoxxxx视频| 国产日韩影视精品| 亚洲国产cao| 国产成人8x视频一区二区| 欧美性受极品xxxx喷水| 国产亚洲精品7777| 一级日本不卡的影视| 国产麻豆日韩欧美久久| 欧美在线免费观看亚洲| 欧美精品一区二区三区蜜桃 | 成人黄色在线视频| 91精品国产高清一区二区三区蜜臀 | 中文字幕制服丝袜一区二区三区 | 国产九九视频一区二区三区| 色88888久久久久久影院野外 | 国产一区视频在线看|