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

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

?? ip_nat_proto_gre.c

?? linux-2.6.15.6
?? C
字號(hào):
/* * ip_nat_proto_gre.c - Version 2.0 * * NAT protocol helper module for GRE. * * GRE is a generic encapsulation protocol, which is generally not very * suited for NAT, as it has no protocol-specific part as port numbers. * * It has an optional key field, which may help us distinguishing two  * connections between the same two hosts. * * GRE is defined in RFC 1701 and RFC 1702, as well as RFC 2784  * * PPTP is built on top of a modified version of GRE, and has a mandatory * field called "CallID", which serves us for the same purpose as the key * field in plain GRE. * * Documentation about PPTP can be found in RFC 2637 * * (C) 2000-2005 by Harald Welte <laforge@gnumonks.org> * * Development of this code funded by Astaro AG (http://www.astaro.com/) * */#include <linux/config.h>#include <linux/module.h>#include <linux/ip.h>#include <linux/netfilter_ipv4/ip_nat.h>#include <linux/netfilter_ipv4/ip_nat_rule.h>#include <linux/netfilter_ipv4/ip_nat_protocol.h>#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");MODULE_DESCRIPTION("Netfilter NAT protocol helper module for GRE");#if 0#define DEBUGP(format, args...) printk(KERN_DEBUG "%s:%s: " format, __FILE__, \				       __FUNCTION__, ## args)#else#define DEBUGP(x, args...)#endif/* is key in given range between min and max */static intgre_in_range(const struct ip_conntrack_tuple *tuple,	     enum ip_nat_manip_type maniptype,	     const union ip_conntrack_manip_proto *min,	     const union ip_conntrack_manip_proto *max){	u_int32_t key;	if (maniptype == IP_NAT_MANIP_SRC)		key = tuple->src.u.gre.key;	else		key = tuple->dst.u.gre.key;	return ntohl(key) >= ntohl(min->gre.key)		&& ntohl(key) <= ntohl(max->gre.key);}/* generate unique tuple ... */static int gre_unique_tuple(struct ip_conntrack_tuple *tuple,		 const struct ip_nat_range *range,		 enum ip_nat_manip_type maniptype,		 const struct ip_conntrack *conntrack){	static u_int16_t key;	u_int16_t *keyptr;	unsigned int min, i, range_size;	if (maniptype == IP_NAT_MANIP_SRC)		keyptr = &tuple->src.u.gre.key;	else		keyptr = &tuple->dst.u.gre.key;	if (!(range->flags & IP_NAT_RANGE_PROTO_SPECIFIED)) {		DEBUGP("%p: NATing GRE PPTP\n", conntrack);		min = 1;		range_size = 0xffff;	} else {		min = ntohl(range->min.gre.key);		range_size = ntohl(range->max.gre.key) - min + 1;	}	DEBUGP("min = %u, range_size = %u\n", min, range_size); 	for (i = 0; i < range_size; i++, key++) {		*keyptr = htonl(min + key % range_size);		if (!ip_nat_used_tuple(tuple, conntrack))			return 1;	}	DEBUGP("%p: no NAT mapping\n", conntrack);	return 0;}/* manipulate a GRE packet according to maniptype */static intgre_manip_pkt(struct sk_buff **pskb,	      unsigned int iphdroff,	      const struct ip_conntrack_tuple *tuple,	      enum ip_nat_manip_type maniptype){	struct gre_hdr *greh;	struct gre_hdr_pptp *pgreh;	struct iphdr *iph = (struct iphdr *)((*pskb)->data + iphdroff);	unsigned int hdroff = iphdroff + iph->ihl*4;	/* pgreh includes two optional 32bit fields which are not required	 * to be there.  That's where the magic '8' comes from */	if (!skb_make_writable(pskb, hdroff + sizeof(*pgreh)-8))		return 0;	greh = (void *)(*pskb)->data + hdroff;	pgreh = (struct gre_hdr_pptp *) greh;	/* we only have destination manip of a packet, since 'source key' 	 * is not present in the packet itself */	if (maniptype == IP_NAT_MANIP_DST) {		/* key manipulation is always dest */		switch (greh->version) {		case 0:			if (!greh->key) {				DEBUGP("can't nat GRE w/o key\n");				break;			}			if (greh->csum) {				/* FIXME: Never tested this code... */				*(gre_csum(greh)) = 					ip_nat_cheat_check(~*(gre_key(greh)),							tuple->dst.u.gre.key,							*(gre_csum(greh)));			}			*(gre_key(greh)) = tuple->dst.u.gre.key;			break;		case GRE_VERSION_PPTP:			DEBUGP("call_id -> 0x%04x\n", 				ntohs(tuple->dst.u.gre.key));			pgreh->call_id = tuple->dst.u.gre.key;			break;		default:			DEBUGP("can't nat unknown GRE version\n");			return 0;			break;		}	}	return 1;}/* print out a nat tuple */static unsigned int gre_print(char *buffer, 	  const struct ip_conntrack_tuple *match,	  const struct ip_conntrack_tuple *mask){	unsigned int len = 0;	if (mask->src.u.gre.key)		len += sprintf(buffer + len, "srckey=0x%x ", 				ntohl(match->src.u.gre.key));	if (mask->dst.u.gre.key)		len += sprintf(buffer + len, "dstkey=0x%x ",				ntohl(match->src.u.gre.key));	return len;}/* print a range of keys */static unsigned int gre_print_range(char *buffer, const struct ip_nat_range *range){	if (range->min.gre.key != 0 	    || range->max.gre.key != 0xFFFF) {		if (range->min.gre.key == range->max.gre.key)			return sprintf(buffer, "key 0x%x ",					ntohl(range->min.gre.key));		else			return sprintf(buffer, "keys 0x%u-0x%u ",					ntohl(range->min.gre.key),					ntohl(range->max.gre.key));	} else		return 0;}/* nat helper struct */static struct ip_nat_protocol gre = { 	.name		= "GRE", 	.protonum	= IPPROTO_GRE,	.manip_pkt	= gre_manip_pkt,	.in_range	= gre_in_range,	.unique_tuple	= gre_unique_tuple,	.print		= gre_print,	.print_range	= gre_print_range,#if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \    defined(CONFIG_IP_NF_CONNTRACK_NETLINK_MODULE)	.range_to_nfattr	= ip_nat_port_range_to_nfattr,	.nfattr_to_range	= ip_nat_port_nfattr_to_range,#endif};				  int __init ip_nat_proto_gre_init(void){	return ip_nat_protocol_register(&gre);}void __exit ip_nat_proto_gre_fini(void){	ip_nat_protocol_unregister(&gre);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看视频| 亚洲日本青草视频在线怡红院 | 成人午夜伦理影院| 精品一区二区三区免费播放 | 99国产精品久久久| 精品国产一区久久| 91麻豆国产精品久久| 国产剧情av麻豆香蕉精品| 蜜臀久久99精品久久久久宅男| 偷拍一区二区三区| 一区二区三区毛片| wwwwww.欧美系列| 精品国产乱码久久久久久1区2区| 欧美午夜一区二区三区| 93久久精品日日躁夜夜躁欧美| 国产精品区一区二区三区| 国产伦精品一区二区三区免费| 日韩电影在线观看网站| 国产精品久久久久影院色老大| 欧美人xxxx| 欧美成人女星排行榜| 精品国精品自拍自在线| 欧美激情一区二区三区| 国产精品二区一区二区aⅴ污介绍| 日韩一卡二卡三卡四卡| 欧美日韩精品一区二区三区四区| 色综合久久88色综合天天| 不卡视频免费播放| 亚洲午夜精品一区二区三区他趣| 亚洲午夜久久久久久久久电影院 | 国产成人鲁色资源国产91色综 | 午夜亚洲福利老司机| 2019国产精品| 国产香蕉久久精品综合网| 成人激情开心网| 国产91精品在线观看| 亚洲综合免费观看高清在线观看| 一区二区高清免费观看影视大全| 在线电影院国产精品| 午夜精品久久久久久久蜜桃app| 国产精品毛片高清在线完整版| 亚洲综合偷拍欧美一区色| 美女视频一区二区| 老司机午夜精品| 成人精品一区二区三区四区| 91久久精品网| 91精品91久久久中77777| 92国产精品观看| 91精品在线免费观看| 欧美一级黄色片| 欧美一二三四区在线| 亚洲日本在线观看| 欧美一区二区三区视频在线观看| 蜜桃视频免费观看一区| 日本一区二区三级电影在线观看| 99亚偷拍自图区亚洲| 亚洲免费观看高清完整| 日本视频中文字幕一区二区三区| 国产91精品欧美| 成人激情午夜影院| 欧美日韩精品高清| 日韩一区二区三区免费看 | 2020国产精品久久精品美国| 日韩av电影免费观看高清完整版| 国产欧美精品一区二区色综合朱莉 | 欧美激情在线观看视频免费| 亚洲国产高清在线观看视频| 亚洲欧美日韩国产手机在线| 国产麻豆精品theporn| 亚洲最色的网站| 亚洲综合成人在线视频| 成人福利电影精品一区二区在线观看| www.亚洲色图.com| 欧美疯狂做受xxxx富婆| 日韩精品影音先锋| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧美怡红院| 国产高清无密码一区二区三区| 色94色欧美sute亚洲线路二 | 精品久久99ma| 在线视频你懂得一区| 综合在线观看色| 欧美精品一区二区精品网| 久久久久综合网| 亚洲国产cao| 欧美三级午夜理伦三级中视频| 丁香另类激情小说| 欧美日韩黄色影视| 久久久99久久| 日韩福利视频导航| 91久久精品网| 久久精品亚洲精品国产欧美kt∨ | 色婷婷av一区| 国产白丝精品91爽爽久久| 欧美一区二区成人| 久久久夜色精品亚洲| 一区二区三区成人在线视频| 国产成人啪免费观看软件| 日本一区二区高清| 欧美色综合天天久久综合精品| 久久久久久久久久电影| 欧洲另类一二三四区| 成人aaaa免费全部观看| 精品国产制服丝袜高跟| 国产精品正在播放| 欧美日韩一区三区四区| 2014亚洲片线观看视频免费| 国产乱妇无码大片在线观看| 欧美日韩在线播放一区| 亚洲成人精品一区| 国产福利91精品一区| 欧美电影精品一区二区| 亚洲国产精品久久人人爱蜜臀| 91视视频在线直接观看在线看网页在线看| 亚洲免费资源在线播放| 国产一区二区三区免费看| 久久亚洲精华国产精华液 | 亚洲视频 欧洲视频| 在线精品视频小说1| 亚洲卡通动漫在线| 欧美视频一二三区| 热久久一区二区| 中文字幕 久热精品 视频在线| 国产成人综合网| 色菇凉天天综合网| 免费观看在线综合色| 亚洲国产va精品久久久不卡综合 | 色噜噜狠狠色综合中国| 亚洲视频一二三| 欧美老肥妇做.爰bbww视频| 国产精品久久99| 欧美成人激情免费网| 亚洲同性gay激情无套| 依依成人综合视频| 夜夜操天天操亚洲| 国产一区二区三区免费| 欧美日韩免费电影| 韩国欧美一区二区| 亚洲日本va在线观看| 91视频观看视频| 狠狠色狠狠色综合| 91成人免费在线| 亚洲一区中文日韩| 一本高清dvd不卡在线观看| 色国产综合视频| 一区二区三区波多野结衣在线观看| 欧美丰满少妇xxxxx高潮对白| 亚洲国产综合色| 精品国产凹凸成av人网站| 精品国产一区二区三区久久久蜜月| 麻豆免费精品视频| 日韩一区二区视频| 午夜电影久久久| 国产精品五月天| 久久久噜噜噜久噜久久综合| 自拍偷拍国产精品| 国产精品久久网站| 久久激情五月婷婷| 玉足女爽爽91| 久久精品无码一区二区三区| 欧美视频三区在线播放| 久久国产精品一区二区| 琪琪一区二区三区| 午夜私人影院久久久久| 亚洲特级片在线| 欧美日韩在线不卡| 大桥未久av一区二区三区中文| 在线观看日韩一区| 激情综合五月天| 国产精品一二二区| 日本不卡视频在线观看| 日韩欧美一二三区| 欧美在线free| 午夜电影网一区| 亚洲日本va午夜在线影院| 久久网这里都是精品| 97se亚洲国产综合自在线观| 日韩一级欧美一级| 欧美国产精品一区二区三区| 91麻豆精品国产91久久久使用方法 | 亚洲福利视频一区| 欧美精品一区男女天堂| 欧美欧美欧美欧美首页| 99国产精品久久久久久久久久| 久久精品国产久精国产| 国产精品人妖ts系列视频| 捆绑调教美女网站视频一区| 99re视频这里只有精品| 精品欧美一区二区三区精品久久| 国产精品久久久久久亚洲伦| 欧美精品一区二区三区高清aⅴ| 911国产精品| av电影在线观看不卡| 久久激情五月激情| 亚洲成a人片在线观看中文| 久久久99久久| 欧美日韩一区高清| 国产精品二区一区二区aⅴ污介绍| 日韩av一区二区在线影视| 北条麻妃一区二区三区|