(no commit message)
authorSapan Bhatia <sapanb@cs.princeton.edu>
Mon, 14 Jul 2008 20:22:09 +0000 (20:22 +0000)
committerSapan Bhatia <sapanb@cs.princeton.edu>
Mon, 14 Jul 2008 20:22:09 +0000 (20:22 +0000)
linux-2.6-526-tun-tap.patch

index d9527a9..cfc4954 100644 (file)
@@ -12,8 +12,8 @@ diff -Nurb linux-2.6.22-525/drivers/net/Makefile linux-2.6.22-526/drivers/net/Ma
  obj-$(CONFIG_IBM_EMAC) += ibm_emac/
 diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/vnet_tun.c
 --- linux-2.6.22-525/drivers/net/vnet_tun.c    1969-12-31 19:00:00.000000000 -0500
-+++ linux-2.6.22-526/drivers/net/vnet_tun.c    2008-07-14 12:11:21.000000000 -0400
-@@ -0,0 +1,718 @@
++++ linux-2.6.22-526/drivers/net/vnet_tun.c    2008-07-14 16:22:57.000000000 -0400
+@@ -0,0 +1,725 @@
 +/*
 + *  TUN - Universal TUN/TAP device driver.
 + *  Copyright (C) 1999-2002 Maxim Krasnyansky <maxk@qualcomm.com>
@@ -111,6 +111,7 @@ diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/
 +
 +#define set_sk_xid(sk,xid) sk->sk_nid=xid
 +#define set_skb_xid(skb,xid) skb->skb_tag=xid
++#define get_skb_xid(skb) skb->skb_tag
 +
 +/* Extended fields */
 +struct tun_pi_ext {
@@ -195,9 +196,15 @@ diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/
 +/* Net device start xmit */
 +static int tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
 +{
-+      xid_t xid = get_sk_xid(skb->sk);
-+      struct tun_struct *tun = tun_get_by_xid(xid);
++      xid_t xid, skb_xid; 
++      struct tun_struct *tun;
++      skb_xid=get_skb_xid(skb);
++      if (skb_xid<1) 
++              xid=get_sk_xid(skb->sk);
++      else
++              xid=skb_xid;
 +
++      tun = tun_get_by_xid(xid);
 +      /* Mark packet */
 +      set_skb_xid(skb, xid);
 +
@@ -729,6 +736,6 @@ diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/
 +      unregister_netdev(&tun_netdev);
 +}
 +
-+MODULE_LICENSE("GPL");
 +module_init(tun_init);
 +module_cleanup(tun_cleanup);
++MODULE_LICENSE("GPL");