diff -ru vpnclient-4.7-orig/interceptor.c vpnclient-4.7/interceptor.c --- vpnclient-4.7-orig/interceptor.c 2005-09-14 05:12:39.000000000 +0200 +++ vpnclient-4.7/interceptor.c 2005-11-11 19:40:36.354892000 +0100 @@ -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-4.7-orig/linuxcniapi.c vpnclient-4.7/linuxcniapi.c --- vpnclient-4.7-orig/linuxcniapi.c 2005-09-14 05:12:39.000000000 +0200 +++ vpnclient-4.7/linuxcniapi.c 2005-11-11 19:41:37.670724000 +0100 @@ -289,7 +289,7 @@ goto exit_gracefully; } /* move the data into the packet */ - do_gettimeofday(&skb->stamp); + __net_timestamp(skb); pIP = skb_put(skb, lpPacketDescriptor->uiPacketSize); @@ -333,7 +333,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); @@ -429,7 +429,7 @@ CniGetPacketData(Packet, 0, lpPacketDescriptor->uiPacketSize, pIP); /* put the mac header on */ - do_gettimeofday(&skb->stamp); + __net_timestamp(skb); skb->dev = pBinding->pDevice; diff -ru vpnclient-4.7-orig/linuxcniapi.h vpnclient-4.7/linuxcniapi.h --- vpnclient-4.7-orig/linuxcniapi.h 2005-09-14 05:12:39.000000000 +0200 +++ vpnclient-4.7/linuxcniapi.h 2005-11-11 19:41:11.777105750 +0100 @@ -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;