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
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))
11 #define SKB_IPHDR(skb) ((struct iphdr*)skb->network_header)
14 #define SKB_IPHDR(skb) skb->nh.iph
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
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))
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);
36 hard_header_len = skb->data - skb->mac_header;
39 hard_header_len = skb->data - skb->mac.raw;
41 if ((hard_header_len < 0) || (hard_header_len > skb_headroom(skb)))
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",
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);
59 CniNewFragment(ETH_HLEN, skb->mac_header, &MacHdr, CNI_USE_BUFFER);
62 CniNewFragment(ETH_HLEN, skb->mac.raw, &MacHdr, CNI_USE_BUFFER);
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);
71 hard_header_len = skb->network_header - skb->data;
74 hard_header_len = skb->nh.raw - skb->data;
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
80 skb->ip_summed = CHECKSUM_UNNECESSARY;
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;
87 skb->network_header = (sk_buff_data_t) skb->data;
88 skb->mac_header = (sk_buff_data_t)pMac;
91 skb->nh.iph = (struct iphdr *) skb->data;
94 skb->dev = pBinding->pDevice;
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;
101 skb->mac_header = (sk_buff_data_t)pMac;
102 skb->network_header = (sk_buff_data_t)pIP;
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;
115 skb->transport_header = (sk_buff_data_t)
116 (pIP + (((struct iphdr*)(skb->network_header))->ihl * 4));
119 skb->h.raw = pIP + (skb->nh.iph->ihl * 4);
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
125 void*rc = kmalloc(size, GFP_ATOMIC);
128 - printk("<1> os_malloc size %d failed\n",size);
129 + printk("<1> os_malloc size %ld failed\n",size);