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

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

?? ipsec_tunnel.c

?? ipsec_sha1的C源碼。我們已經用于測試SHA1的erilog
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * IPSEC Tunneling code. Heavily based on drivers/net/new_tunnel.c * Copyright (C) 1996, 1997  John Ioannidis. * Copyright (C) 1998, 1999, 2000, 2001  Richard Guy Briggs. *  * 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.  See <http://www.fsf.org/copyleft/gpl.txt>. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * for more details. */char ipsec_tunnel_c_version[] = "RCSID $Id: ipsec_tunnel.c,v 1.187 2002/03/23 19:55:17 rgb Exp $";#define __NO_VERSION__#include <linux/module.h>#include <linux/config.h>	/* for CONFIG_IP_FORWARD */#include <linux/version.h>#include <linux/kernel.h> /* printk() *//* XXX-mcr remove this definition when the code has been properly rototiled */#define IPSEC_KLIPS1_COMPAT 1#include "ipsec_param.h"#ifdef MALLOC_SLAB# include <linux/slab.h> /* kmalloc() */#else /* MALLOC_SLAB */# include <linux/malloc.h> /* kmalloc() */#endif /* MALLOC_SLAB */#include <linux/errno.h>  /* error codes */#include <linux/types.h>  /* size_t */#include <linux/interrupt.h> /* mark_bh */#include <linux/netdevice.h>   /* struct device, struct net_device_stats, dev_queue_xmit() and other headers */#include <linux/etherdevice.h> /* eth_type_trans */#include <linux/ip.h>          /* struct iphdr */#include <linux/tcp.h>         /* struct tcphdr */#include <linux/udp.h>         /* struct udphdr */#include <linux/skbuff.h>#include <freeswan.h>#ifdef NET_21# define MSS_HACK_		/* experimental */# include <asm/uaccess.h># include <linux/in6.h># define ip_chk_addr inet_addr_type# define IS_MYADDR RTN_LOCAL# include <net/dst.h># undef dev_kfree_skb# define dev_kfree_skb(a,b) kfree_skb(a)# define proto_priv cb# define PHYSDEV_TYPE#endif /* NET_21 */#include <asm/checksum.h>#include <net/icmp.h>		/* icmp_send() */#include <net/ip.h>#ifdef NETDEV_23# include <linux/netfilter_ipv4.h>#endif /* NETDEV_23 */#include <linux/if_arp.h>#ifdef MSS_HACK# include <net/tcp.h>		/* TCP options */#endif	/* MSS_HACK */#include "radij.h"#include "ipsec_life.h"#include "ipsec_xform.h"#include "ipsec_eroute.h"#include "ipsec_encap.h"#include "ipsec_radij.h"#include "ipsec_netlink.h"#include "ipsec_sa.h"#include "ipsec_tunnel.h"#include "ipsec_ipe4.h"#include "ipsec_ah.h"#include "ipsec_esp.h"#ifdef CONFIG_IPSEC_IPCOMP# include "ipcomp.h"#endif /* CONFIG_IPSEC_IPCOMP */#include <pfkeyv2.h>#include <pfkey.h>#include "ipsec_proto.h"static __u32 zeroes[64];#ifdef CONFIG_IPSEC_DEBUGint debug_tunnel = 0;int sysctl_ipsec_debug_verbose = 0;#endif /* CONFIG_IPSEC_DEBUG */int sysctl_ipsec_icmp = 0;int sysctl_ipsec_tos = 0;/* * If the IP packet (iph) is a carrying TCP/UDP, then set the encaps * source and destination ports to those from the TCP/UDP header. */static void extract_ports(struct iphdr * iph, struct sockaddr_encap * er){	struct udphdr *udp;	switch (iph->protocol) {	case IPPROTO_UDP:	case IPPROTO_TCP:		/*		 * The ports are at the same offsets in a TCP and UDP		 * header so hack it ...		 */		udp = (struct udphdr*)(((char*)iph)+(iph->ihl<<2));		er->sen_sport = udp->source;		er->sen_dport = udp->dest;		break;	default:		er->sen_sport = 0;		er->sen_dport = 0;		break;	}}/* * A TRAP eroute is installed and we want to replace it with a HOLD * eroute. */static int create_hold_eroute(struct sk_buff * skb, struct iphdr * iph,			      uint32_t eroute_pid){	struct eroute hold_eroute;	struct sa_id hold_said;	struct sk_buff *first, *last;	int error;	first = last = NULL;	memset((caddr_t)&hold_eroute, 0, sizeof(hold_eroute));	memset((caddr_t)&hold_said, 0, sizeof(hold_said));		hold_said.proto = IPPROTO_INT;	hold_said.spi = htonl(SPI_HOLD);	hold_said.dst.s_addr = INADDR_ANY;		hold_eroute.er_eaddr.sen_len = sizeof(struct sockaddr_encap);	hold_eroute.er_emask.sen_len = sizeof(struct sockaddr_encap);	hold_eroute.er_eaddr.sen_family = AF_ENCAP;	hold_eroute.er_emask.sen_family = AF_ENCAP;	hold_eroute.er_eaddr.sen_type = SENT_IP4;	hold_eroute.er_emask.sen_type = 255;		hold_eroute.er_eaddr.sen_ip_src.s_addr = iph->saddr;	hold_eroute.er_eaddr.sen_ip_dst.s_addr = iph->daddr;	hold_eroute.er_emask.sen_ip_src.s_addr = INADDR_BROADCAST;	hold_eroute.er_emask.sen_ip_dst.s_addr = INADDR_BROADCAST;	hold_eroute.er_emask.sen_sport = ~0;	hold_eroute.er_emask.sen_dport = ~0;	hold_eroute.er_pid = eroute_pid;	hold_eroute.er_count = 0;	hold_eroute.er_lasttime = jiffies/HZ;							hold_eroute.er_eaddr.sen_proto = iph->protocol;	extract_ports(iph, &hold_eroute.er_eaddr);#ifdef CONFIG_IPSEC_DEBUG	if (debug_pfkey) {		char buf1[64], buf2[64];		subnettoa(hold_eroute.er_eaddr.sen_ip_src,			  hold_eroute.er_emask.sen_ip_src, 0, buf1, sizeof(buf1));		subnettoa(hold_eroute.er_eaddr.sen_ip_dst,			  hold_eroute.er_emask.sen_ip_dst, 0, buf2, sizeof(buf2));		KLIPS_PRINT(debug_pfkey,			    "klips_debug:ipsec_tunnel_start_xmit: "			    "calling breakeroute and makeroute for %s:%d->%s:%d %d HOLD eroute.\n",			    buf1, ntohs(hold_eroute.er_eaddr.sen_sport),			    buf2, ntohs(hold_eroute.er_eaddr.sen_dport),			    hold_eroute.er_eaddr.sen_proto);	}#endif /* CONFIG_IPSEC_DEBUG */	if (ipsec_breakroute(&(hold_eroute.er_eaddr), &(hold_eroute.er_emask),			     &first, &last, 0)) {		KLIPS_PRINT(debug_pfkey,			    "klips_debug:ipsec_tunnel_start_xmit: "			    "HOLD breakeroute found nothing.\n");	} else {		KLIPS_PRINT(debug_pfkey,			    "klips_debug:ipsec_tunnel_start_xmit: "			    "HOLD breakroute deleted %u.%u.%u.%u:%u -> %u.%u.%u.%u:%u %u\n",			    NIPQUAD(hold_eroute.er_eaddr.sen_ip_src),			    ntohs(hold_eroute.er_eaddr.sen_sport),			    NIPQUAD(hold_eroute.er_eaddr.sen_ip_dst),			    ntohs(hold_eroute.er_eaddr.sen_dport),			    hold_eroute.er_eaddr.sen_proto);	}	if (first != NULL)		kfree_skb(first);	if (last != NULL)		kfree_skb(last);	error = ipsec_makeroute(&(hold_eroute.er_eaddr),				&(hold_eroute.er_emask),				hold_said, eroute_pid, skb, NULL, NULL);	if (error) {		KLIPS_PRINT(debug_pfkey,			    "klips_debug:ipsec_tunnel_start_xmit: "			    "HOLD makeroute returned %d, failed.\n", error);	} else {		KLIPS_PRINT(debug_pfkey,			    "klips_debug:ipsec_tunnel_start_xmit: "			    "HOLD makeroute call successful.\n");	}	return (error == 0);}#ifdef CONFIG_IPSEC_DEBUG_DEBUG_NO_STATIC voiddmp(char *s, caddr_t bb, int len){	int i;	unsigned char *b = bb;  	if (debug_tunnel) {		printk(KERN_INFO "klips_debug:ipsec_tunnel_:dmp: "		       "at %s, len=%d:",		       s,		       len);		for (i=0; i < len; i++) {			if(!(i%16)){				printk("\nklips_debug:  ");			}			printk(" %02x", *b++);		}		printk("\n");	}}#else /* CONFIG_IPSEC_DEBUG */#define dmp(_x, _y, _z) #endif /* CONFIG_IPSEC_DEBUG */#ifndef SKB_COPY_EXPAND/* *	This is mostly skbuff.c:skb_copy(). */struct sk_buff *skb_copy_expand(struct sk_buff *skb, int headroom, int tailroom, int priority){	struct sk_buff *n;	unsigned long offset;	/*	 *	Do sanity checking	 */	if((headroom < 0) || (tailroom < 0) || ((headroom+tailroom) < 0)) {		printk(KERN_WARNING		       "klips_error:skb_copy_expand: "		       "Illegal negative head,tailroom %d,%d\n",		       headroom,		       tailroom);		return NULL;	}	/*	 *	Allocate the copy buffer	 */	 #ifndef NET_21	IS_SKB(skb);#endif /* !NET_21 */	n=alloc_skb(skb->end - skb->head + headroom + tailroom, priority);	KLIPS_PRINT(debug_tunnel & DB_TN_CROUT,		    "klips_debug:skb_copy_expand: "		    "head=%p data=%p tail=%p end=%p end-head=%d tail-data=%d\n",		    skb->head,		    skb->data,		    skb->tail,		    skb->end,		    skb->end - skb->head,		    skb->tail - skb->data);	if(n==NULL)		return NULL;	/*	 *	Shift between the two data areas in bytes	 */	 	/* offset=n->head-skb->head; */ /* moved down a few lines */	/* Set the data pointer */	skb_reserve(n,skb->data-skb->head+headroom);	/* Set the tail pointer and length */	if(skb_tailroom(n) < skb->len) {		printk(KERN_WARNING "klips_error:skb_copy_expand: "		       "tried to skb_put %ld, %d available.  This should never happen, please report.\n",		       (unsigned long int)skb->len,		       skb_tailroom(n));		dev_kfree_skb(n, FREE_WRITE);		return NULL;	}	skb_put(n,skb->len);	offset=n->head + headroom - skb->head;	/* Copy the bytes */	memcpy(n->head + headroom, skb->head,skb->end-skb->head);#ifdef NET_21	n->csum=skb->csum;	n->priority=skb->priority;	n->dst=dst_clone(skb->dst);	if(skb->nh.raw)		n->nh.raw=skb->nh.raw+offset;#ifndef NETDEV_23	n->is_clone=0;#endif /* NETDEV_23 */	atomic_set(&n->users, 1);	n->destructor = NULL;	n->security=skb->security;#else /* NET_21 */	n->link3=NULL;	n->when=skb->when;	if(skb->ip_hdr)	        n->ip_hdr=(struct iphdr *)(((char *)skb->ip_hdr)+offset);	n->saddr=skb->saddr;	n->daddr=skb->daddr;	n->raddr=skb->raddr;	n->seq=skb->seq;	n->end_seq=skb->end_seq;	n->ack_seq=skb->ack_seq;	n->acked=skb->acked;	n->free=1;	n->arp=skb->arp;	n->tries=0;	n->lock=0;	n->users=0;#endif /* NET_21 */	n->protocol=skb->protocol;	n->list=NULL;	n->sk=NULL;	n->dev=skb->dev;	if(skb->h.raw)		n->h.raw=skb->h.raw+offset;	if(skb->mac.raw) 		n->mac.raw=skb->mac.raw+offset;	memcpy(n->proto_priv, skb->proto_priv, sizeof(skb->proto_priv));#ifndef NETDEV_23	n->used=skb->used;#endif /* !NETDEV_23 */	n->pkt_type=skb->pkt_type;	n->stamp=skb->stamp;	#ifndef NET_21	IS_SKB(n);#endif /* !NET_21 */	return n;}#endif /* !SKB_COPY_EXPAND */#ifdef CONFIG_IPSEC_DEBUGvoidipsec_print_ip(struct iphdr *ip){	char buf[ADDRTOA_BUF];	printk(KERN_INFO "klips_debug:   IP:");	printk(" ihl:%d", ip->ihl*4);	printk(" ver:%d", ip->version);	printk(" tos:%d", ip->tos);	printk(" tlen:%d", ntohs(ip->tot_len));	printk(" id:%d", ntohs(ip->id));	printk(" %s%s%sfrag_off:%d",               ip->frag_off & __constant_htons(IP_CE) ? "CE " : "",               ip->frag_off & __constant_htons(IP_DF) ? "DF " : "",               ip->frag_off & __constant_htons(IP_MF) ? "MF " : "",               (ntohs(ip->frag_off) & IP_OFFSET) << 3);	printk(" ttl:%d", ip->ttl);	printk(" proto:%d", ip->protocol);	if(ip->protocol == IPPROTO_UDP)		printk(" (UDP)");	if(ip->protocol == IPPROTO_TCP)		printk(" (TCP)");	if(ip->protocol == IPPROTO_ICMP)		printk(" (ICMP)");	printk(" chk:%d", ntohs(ip->check));	addrtoa(*((struct in_addr*)(&ip->saddr)), 0, buf, sizeof(buf));	printk(" saddr:%s", buf);	if(ip->protocol == IPPROTO_UDP)		printk(":%d",		       ntohs(((struct udphdr*)((caddr_t)ip + (ip->ihl << 2)))->source));	if(ip->protocol == IPPROTO_TCP)		printk(":%d",		       ntohs(((struct tcphdr*)((caddr_t)ip + (ip->ihl << 2)))->source));	addrtoa(*((struct in_addr*)(&ip->daddr)), 0, buf, sizeof(buf));	printk(" daddr:%s", buf);	if(ip->protocol == IPPROTO_UDP)		printk(":%d",		       ntohs(((struct udphdr*)((caddr_t)ip + (ip->ihl << 2)))->dest));	if(ip->protocol == IPPROTO_TCP)		printk(":%d",		       ntohs(((struct tcphdr*)((caddr_t)ip + (ip->ihl << 2)))->dest));	if(ip->protocol == IPPROTO_ICMP)		printk(" type:code=%d:%d",		       ((struct icmphdr*)((caddr_t)ip + (ip->ihl << 2)))->type,		       ((struct icmphdr*)((caddr_t)ip + (ip->ihl << 2)))->code);	printk("\n");	if(sysctl_ipsec_debug_verbose) {		__u8 *c;		int i;				c = ((__u8*)ip) + ip->ihl*4;		for(i = 0; i < ntohs(ip->tot_len) - ip->ihl*4; i++ /*, c++*/) {			if(!(i % 16)) {				printk(KERN_INFO				       "klips_debug:   @%03x:",				       i);			}			printk(" %02x", /***/c[i]);			if(!((i + 1) % 16)) {				printk("\n");			}		}		if(i % 16) {			printk("\n");		}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站一区| 欧美国产日韩一二三区| 亚洲国产成人av网| 色婷婷国产精品久久包臀| 国产精品美女久久久久久久| 99久久精品免费看国产免费软件| 中文字幕一区免费在线观看| 色老汉一区二区三区| 亚洲成人黄色小说| 日韩亚洲欧美中文三级| 激情综合五月婷婷| 国产精品国产三级国产aⅴ入口 | 精品一区二区三区影院在线午夜| 日韩视频免费观看高清完整版 | 久久综合九色综合欧美就去吻| 卡一卡二国产精品| 国产视频一区二区三区在线观看| 不卡一二三区首页| 午夜a成v人精品| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色婷婷亚洲一区二区三区| 亚洲国产日韩a在线播放性色| 欧美一区二区三区啪啪| 成人性生交大片| 亚洲18色成人| 欧美精品一区二区精品网| 99精品久久只有精品| 石原莉奈一区二区三区在线观看| 精品粉嫩超白一线天av| 99re6这里只有精品视频在线观看| 香蕉久久夜色精品国产使用方法 | 久久精品夜夜夜夜久久| 91免费看视频| 精品一区二区三区久久| 亚洲蜜臀av乱码久久精品| 日韩欧美在线影院| 91亚洲大成网污www| 毛片不卡一区二区| 亚洲男同性视频| 久久久久久久久97黄色工厂| 欧美性大战久久久| 成人激情午夜影院| 蜜臀久久久久久久| 亚洲午夜一二三区视频| 国产女同互慰高潮91漫画| 欧美日韩精品欧美日韩精品| 国产成人免费视频精品含羞草妖精| 一区二区三区免费网站| 国产女主播一区| 日韩欧美国产精品| 欧美午夜不卡视频| 91在线无精精品入口| 国产麻豆日韩欧美久久| 美女视频一区二区| 亚洲一区二区三区四区不卡| 国产精品视频免费看| 精品噜噜噜噜久久久久久久久试看| 欧美性受极品xxxx喷水| 99麻豆久久久国产精品免费| 国产伦精品一区二区三区免费 | 91小视频免费看| 国产精品一卡二卡| 麻豆精品久久精品色综合| 亚洲成av人片在线| 亚洲综合色丁香婷婷六月图片| 中文欧美字幕免费| 国产欧美日韩中文久久| 26uuu亚洲综合色| 精品国产91亚洲一区二区三区婷婷| 91精品欧美综合在线观看最新| 在线免费观看日本一区| 91老师国产黑色丝袜在线| 国产91丝袜在线播放0| 国产精品羞羞答答xxdd| 国产揄拍国内精品对白| 国产精品综合二区| 国产精品白丝jk黑袜喷水| 国内成人精品2018免费看| 精品中文av资源站在线观看| 久久精品国产在热久久| 久久国产免费看| 韩国成人福利片在线播放| 激情五月婷婷综合网| 韩国av一区二区| 国产成人精品午夜视频免费| 国产69精品久久777的优势| 国产成人免费在线视频| 成人h版在线观看| 色综合久久久久久久久久久| 色婷婷综合久久久中文一区二区| 日本韩国精品一区二区在线观看| 在线免费观看日本一区| 制服丝袜中文字幕亚洲| 日韩欧美一卡二卡| 久久久久综合网| 国产精品久久久久久久第一福利| 亚洲免费观看高清完整版在线观看| 日韩毛片精品高清免费| 一区二区三区美女视频| 日韩av网站在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 成人av资源下载| 欧美午夜精品一区二区蜜桃| 日韩一区二区免费在线观看| 国产亚洲综合在线| 亚洲男人的天堂网| 免费看日韩精品| 成人午夜免费电影| 欧美片网站yy| 久久亚洲影视婷婷| 亚洲免费观看高清完整| 日本sm残虐另类| 99免费精品视频| 欧美一区二区三区精品| 欧美激情一区二区三区不卡| 一区二区三区.www| 国产在线视频一区二区| 色猫猫国产区一区二在线视频| 欧美片在线播放| 国产精品久久久久久久久果冻传媒| 亚洲国产日韩a在线播放性色| 国产一区二区视频在线播放| 色综合中文字幕国产 | 久久影院电视剧免费观看| 中文文精品字幕一区二区| 亚洲国产精品人人做人人爽| 久久99精品久久久久婷婷| 色哟哟在线观看一区二区三区| 欧美变态tickle挠乳网站| 亚洲欧美视频在线观看视频| 韩国三级中文字幕hd久久精品| 91麻豆免费观看| 精品国产91洋老外米糕| 亚洲最大色网站| 风流少妇一区二区| 日韩欧美中文字幕精品| 亚洲一区二区三区中文字幕在线| 色婷婷精品久久二区二区蜜臂av| 日韩欧美高清dvd碟片| 一区二区三区中文字幕电影| 国产精品99久久久久久久女警| 欧美裸体一区二区三区| 综合久久久久久久| 国产成人精品午夜视频免费| 日韩欧美区一区二| 亚洲一二三四在线| 91美女蜜桃在线| 国产精品视频yy9299一区| 久久精品国产99久久6| 欧美精品一卡两卡| 亚洲综合免费观看高清完整版在线| 国产黄人亚洲片| 欧美精品一区视频| 日韩中文欧美在线| 欧美日韩久久一区| 亚洲影视在线观看| 在线亚洲欧美专区二区| 亚洲精品菠萝久久久久久久| 成人18精品视频| 中文字幕一区二区三区不卡| 国产大片一区二区| 久久精品视频在线免费观看| 激情欧美日韩一区二区| 欧美成人精品二区三区99精品| 喷白浆一区二区| 日韩免费一区二区| 蜜臀av性久久久久蜜臀aⅴ| 3751色影院一区二区三区| 日韩黄色免费电影| 91精品国产欧美一区二区18| 奇米亚洲午夜久久精品| 亚洲精品中文字幕在线观看| 成人黄色在线看| 亚洲人被黑人高潮完整版| 色哦色哦哦色天天综合| 亚洲尤物在线视频观看| 欧美区视频在线观看| 奇米影视在线99精品| 精品久久人人做人人爽| 国产乱子轮精品视频| 国产精品毛片久久久久久久| 9久草视频在线视频精品| 最新高清无码专区| 欧美在线播放高清精品| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美区视频在线观看| 婷婷开心久久网| 日韩精品一区二区三区视频播放| 久久99日本精品| 中文字幕欧美激情一区| 99国产精品国产精品久久| 亚洲一区二区三区四区的| 日韩一级大片在线观看| 国产精品综合一区二区| 1024亚洲合集| 欧美日本韩国一区| 国产一区二区精品久久91| 亚洲手机成人高清视频| 欧美日韩国产欧美日美国产精品| 免费成人在线网站|