diff -ru vpnclient.orig/interceptor.c vpnclient/interceptor.c --- vpnclient.orig/interceptor.c 2005-11-22 02:43:57.000000000 -0700 +++ vpnclient/interceptor.c 2006-03-11 00:29:21.065629750 -0700 @@ -61,7 +61,8 @@ /*packet handler functions*/ static int recv_ip_packet_handler(struct sk_buff *skb, struct net_device *dev, - struct packet_type *type); + struct packet_type *type, + struct net_device *orig_dev); static int replacement_dev_xmit(struct sk_buff *skb, struct net_device *dev); static int handle_netdev_event(struct notifier_block *self, unsigned long, @@ -71,7 +72,7 @@ { struct packet_type *pt; int (*orig_handler_func) (struct sk_buff *, struct net_device *, - struct packet_type *); + struct packet_type *, struct net_device *); }; static struct packet_type_funcs original_ip_handler; @@ -494,7 +495,7 @@ static int recv_ip_packet_handler(struct sk_buff *skb, - struct net_device *dev, struct packet_type *type) + struct net_device *dev, struct packet_type *type, struct net_device *orig_dev) { int rc2 = 0; int tmp_rc = 0; @@ -513,14 +514,14 @@ #endif if (dev->type == ARPHRD_LOOPBACK) { - rc2 = original_ip_handler.orig_handler_func(skb, dev, type); + rc2 = original_ip_handler.orig_handler_func(skb, dev, type, orig_dev); goto exit_gracefully; } /* Don't handle non-eth non-ppp packets */ if (!supported_device(dev)) { - rc2 = original_ip_handler.orig_handler_func(skb, dev, type); + rc2 = original_ip_handler.orig_handler_func(skb, dev, type, orig_dev); goto exit_gracefully; } @@ -539,14 +540,14 @@ firsttime = 0; } - rc2 = original_ip_handler.orig_handler_func(skb, dev, type); + rc2 = original_ip_handler.orig_handler_func(skb, dev, type, orig_dev); goto exit_gracefully; } //only need to handle IP packets. if (skb->protocol != htons(ETH_P_IP)) { - rc2 = original_ip_handler.orig_handler_func(skb, dev, type); + rc2 = original_ip_handler.orig_handler_func(skb, dev, type, orig_dev); goto exit_gracefully; } @@ -626,7 +627,7 @@ tmp_rc = CNICallbackTable.ReceiveComplete(pBinding, lpReceiveContext, NewPacket); - rc2 = original_ip_handler.orig_handler_func(skb, dev, type); + rc2 = original_ip_handler.orig_handler_func(skb, dev, type, orig_dev); if (pBinding->recv_stat.called) { diff -ru vpnclient.orig/linuxcniapi.c vpnclient/linuxcniapi.c --- vpnclient.orig/linuxcniapi.c 2005-11-22 02:43:57.000000000 -0700 +++ vpnclient/linuxcniapi.c 2006-03-11 00:30:45.302894250 -0700 @@ -290,12 +290,7 @@ } /* move the data into the packet */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) - { - struct timeval timestamp; - - do_gettimeofday(×tamp); - skb_set_timestamp(skb,×tamp); - } + __net_timestamp(skb); #else do_gettimeofday(&skb->stamp); #endif @@ -342,7 +337,7 @@ rx_bytes+=skb->len; #endif - pBinding->recv_stat.rc = pBinding->InjectReceive(skb, skb->dev, pBinding->pPT); + pBinding->recv_stat.rc = pBinding->InjectReceive(skb, skb->dev, pBinding->pPT, skb->dev); exit_gracefully: CNICallbackTable.ReceiveComplete(Binding, ReceiveContext, Packet); @@ -439,12 +434,7 @@ /* put the mac header on */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) - { - struct timeval timestamp; - - do_gettimeofday(×tamp); - skb_set_timestamp(skb,×tamp); - } + __net_timestamp(skb); #else do_gettimeofday(&skb->stamp); #endif diff -ru vpnclient.orig/linuxcniapi.h vpnclient/linuxcniapi.h --- vpnclient.orig/linuxcniapi.h 2005-11-22 02:43:57.000000000 -0700 +++ vpnclient/linuxcniapi.h 2006-03-11 00:29:21.105632250 -0700 @@ -23,7 +23,7 @@ struct net_device *pDevice; struct packet_type *pPT; int (*InjectReceive) (struct sk_buff *, struct net_device *, - struct packet_type *); + struct packet_type *, struct net_device *); int (*InjectSend) (struct sk_buff * skb, struct net_device * dev); int recv_real_hh_len; diff -ru vpnclient.orig/linuxkernelapi.c vpnclient/linuxkernelapi.c --- vpnclient.orig/linuxkernelapi.c 2005-11-22 02:43:57.000000000 -0700 +++ vpnclient/linuxkernelapi.c 2006-03-11 00:29:21.113632750 -0700 @@ -9,7 +9,7 @@ void*rc = kmalloc(size, GFP_ATOMIC); if(NULL == rc) { - printk("<1> os_malloc size %d failed\n",size); + printk("<1> os_malloc size %ld failed\n",size); } return rc;