]>
Commit | Line | Data |
---|---|---|
51abe00e | 1 | diff -ur vpnclient.old/frag.c vpnclient.new/frag.c |
2 | --- vpnclient.old/frag.c 2007-08-22 15:30:31.000000000 -0400 | |
3 | +++ vpnclient/frag.c 2007-11-09 09:19:48.000000000 -0500 | |
4 | @@ -22,7 +22,11 @@ | |
5 | #include "frag.h" | |
6 | ||
7 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
8 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
9 | +#define SKB_IPHDR(skb) ((struct iphdr*)(skb->head+skb->network_header)) | |
10 | +#else | |
11 | #define SKB_IPHDR(skb) ((struct iphdr*)skb->network_header) | |
12 | +#endif | |
13 | #else | |
14 | #define SKB_IPHDR(skb) skb->nh.iph | |
15 | #endif | |
16 | diff -ur vpnclient.old/interceptor.c vpnclient.new/interceptor.c | |
17 | --- vpnclient.old/interceptor.c 2007-08-22 15:30:31.000000000 -0400 | |
18 | +++ vpnclient/interceptor.c 2007-11-09 10:03:01.000000000 -0500 | |
19 | @@ -630,19 +630,31 @@ | |
20 | ||
21 | reset_inject_status(&pBinding->recv_stat); | |
22 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
23 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
24 | + if (skb->mac_header >= (skb->data-skb->head)) | |
25 | +#else | |
26 | if (skb->mac_header) | |
27 | +#endif | |
28 | #else | |
29 | if (skb->mac.raw) | |
30 | #endif | |
31 | { | |
32 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
33 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
34 | + hard_header_len = skb->mac_header - (skb->data - skb->head); | |
35 | +#else | |
36 | hard_header_len = skb->data - skb->mac_header; | |
37 | +#endif | |
38 | #else | |
39 | hard_header_len = skb->data - skb->mac.raw; | |
40 | #endif | |
41 | if ((hard_header_len < 0) || (hard_header_len > skb_headroom(skb))) | |
42 | { | |
43 | - printk(KERN_DEBUG "bad hh len %d\n", hard_header_len); | |
44 | + printk(KERN_DEBUG "bad hh len %d, mac: %d, data: %p, head: %p\n", | |
45 | + hard_header_len, | |
46 | + skb->mac_header, | |
47 | + skb->data, | |
48 | + skb->head); | |
49 | hard_header_len = 0; | |
50 | } | |
51 | } | |
52 | @@ -657,7 +669,11 @@ | |
53 | { | |
54 | case ETH_HLEN: | |
55 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
56 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
57 | + CniNewFragment(ETH_HLEN, skb->head+skb->mac_header, &MacHdr, CNI_USE_BUFFER); | |
58 | +#else | |
59 | CniNewFragment(ETH_HLEN, skb->mac_header, &MacHdr, CNI_USE_BUFFER); | |
60 | +#endif | |
61 | #else | |
62 | CniNewFragment(ETH_HLEN, skb->mac.raw, &MacHdr, CNI_USE_BUFFER); | |
63 | #endif | |
64 | @@ -775,7 +791,11 @@ | |
65 | #endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) | |
66 | reset_inject_status(&pBinding->send_stat); | |
67 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
68 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
69 | + hard_header_len = skb->network_header - (skb->data - skb->head); | |
70 | +#else | |
71 | hard_header_len = skb->network_header - skb->data; | |
72 | +#endif | |
73 | #else | |
74 | hard_header_len = skb->nh.raw - skb->data; | |
75 | #endif | |
76 | diff -ur vpnclient.old/linuxcniapi.c vpnclient.new/linuxcniapi.c | |
77 | --- vpnclient.old/linuxcniapi.c 2007-08-22 15:30:31.000000000 -0400 | |
78 | +++ vpnclient/linuxcniapi.c 2007-11-09 09:17:50.000000000 -0500 | |
79 | @@ -338,8 +338,13 @@ | |
80 | skb->ip_summed = CHECKSUM_UNNECESSARY; | |
81 | ||
82 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
83 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
84 | + skb->network_header = skb->data - skb->head; | |
85 | + skb->mac_header = pMac - skb->head; | |
86 | +#else | |
87 | skb->network_header = (sk_buff_data_t) skb->data; | |
88 | skb->mac_header = (sk_buff_data_t)pMac; | |
89 | +#endif | |
90 | #else | |
91 | skb->nh.iph = (struct iphdr *) skb->data; | |
92 | skb->mac.raw = pMac; | |
93 | @@ -478,8 +483,13 @@ | |
94 | skb->dev = pBinding->pDevice; | |
95 | ||
96 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
97 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
98 | + skb->network_header = skb->data - skb->head; | |
99 | + skb->mac_header = pMac - skb->head; | |
100 | +#else | |
101 | skb->mac_header = (sk_buff_data_t)pMac; | |
102 | skb->network_header = (sk_buff_data_t)pIP; | |
103 | +#endif | |
104 | #else | |
105 | skb->mac.raw = pMac; | |
106 | skb->nh.raw = pIP; | |
107 | @@ -487,8 +497,13 @@ | |
108 | ||
109 | /*ip header length is in 32bit words */ | |
110 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) | |
111 | +#ifdef NET_SKBUFF_DATA_USES_OFFSET | |
112 | + skb->transport_header = | |
113 | + (pIP + (((struct iphdr*)(skb->head+skb->network_header))->ihl * 4)) - skb->head; | |
114 | +#else | |
115 | skb->transport_header = (sk_buff_data_t) | |
116 | (pIP + (((struct iphdr*)(skb->network_header))->ihl * 4)); | |
117 | +#endif | |
118 | #else | |
119 | skb->h.raw = pIP + (skb->nh.iph->ihl * 4); | |
120 | #endif | |
121 | diff -ur vpnclient.old/linuxkernelapi.c vpnclient.new/linuxkernelapi.c | |
122 | --- vpnclient.old/linuxkernelapi.c 2007-08-22 15:30:31.000000000 -0400 | |
123 | +++ vpnclient/linuxkernelapi.c 2007-11-09 09:23:21.000000000 -0500 | |
124 | @@ -9,7 +9,7 @@ | |
125 | void*rc = kmalloc(size, GFP_ATOMIC); | |
126 | if(NULL == rc) | |
127 | { | |
128 | - printk("<1> os_malloc size %d failed\n",size); | |
129 | + printk("<1> os_malloc size %ld failed\n",size); | |
130 | } | |
131 | ||
132 | return rc; |