diff -Nurb linux-2.6.27-510/include/linux/skbuff.h linux-2.6.27-521/include/linux/skbuff.h --- linux-2.6.27-510/include/linux/skbuff.h 2008-10-09 18:13:53.000000000 -0400 +++ linux-2.6.27-521/include/linux/skbuff.h 2009-07-23 10:51:52.000000000 -0400 @@ -330,6 +330,7 @@ #endif __u32 mark; +#define skb_tag mark __u16 vlan_tci; diff -Nurb linux-2.6.27-510/net/core/skbuff.c linux-2.6.27-521/net/core/skbuff.c --- linux-2.6.27-510/net/core/skbuff.c 2008-10-09 18:13:53.000000000 -0400 +++ linux-2.6.27-521/net/core/skbuff.c 2009-07-23 10:51:52.000000000 -0400 @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -209,6 +210,7 @@ skb->data = data; skb_reset_tail_pointer(skb); skb->end = skb->tail + size; + if (!in_interrupt()) skb->skb_tag = nx_current_nid(); else skb->skb_tag = 0; /* make sure we initialize shinfo sequentially */ shinfo = skb_shinfo(skb); atomic_set(&shinfo->dataref, 1); @@ -460,6 +462,7 @@ #endif #endif new->vlan_tci = old->vlan_tci; + new->skb_tag = old->skb_tag; skb_copy_secmark(new, old); } @@ -490,6 +493,8 @@ #endif atomic_set(&n->users, 1); + /* Sapan: Cloned skbs aren't owned by anyone. Let the cloner decide who it belongs to. */ + atomic_inc(&(skb_shinfo(skb)->dataref)); skb->cloned = 1; diff -Nurb linux-2.6.27-510/net/core/sock.c linux-2.6.27-521/net/core/sock.c --- linux-2.6.27-510/net/core/sock.c 2009-07-23 10:51:44.000000000 -0400 +++ linux-2.6.27-521/net/core/sock.c 2009-11-25 17:36:26.000000000 -0500 @@ -954,6 +954,8 @@ sk->sk_prot = sk->sk_prot_creator = prot; sock_lock_init(sk); sock_net_set(sk, get_net(net)); + if (!in_interrupt()) + sk->sk_mark = nx_current_nid(); } return sk; diff -Nurb linux-2.6.27-510/net/ipv4/af_inet.c linux-2.6.27-521/net/ipv4/af_inet.c --- linux-2.6.27-510/net/ipv4/af_inet.c 2009-07-23 10:51:44.000000000 -0400 +++ linux-2.6.27-521/net/ipv4/af_inet.c 2009-07-23 10:51:52.000000000 -0400 @@ -181,6 +181,8 @@ return -EAGAIN; } inet->sport = htons(inet->num); + sk->sk_xid = vx_current_xid(); + if (!in_interrupt()) sk->sk_nid = nx_current_nid(); else sk->sk_nid=0; } release_sock(sk); return 0; diff -Nurb linux-2.6.27-510/net/ipv4/netfilter/ipt_LOG.c linux-2.6.27-521/net/ipv4/netfilter/ipt_LOG.c --- linux-2.6.27-510/net/ipv4/netfilter/ipt_LOG.c 2008-10-09 18:13:53.000000000 -0400 +++ linux-2.6.27-521/net/ipv4/netfilter/ipt_LOG.c 2009-07-23 10:51:52.000000000 -0400 @@ -45,6 +45,8 @@ else logflags = NF_LOG_MASK; + printk("TAG=%d ", skb->skb_tag); + ih = skb_header_pointer(skb, iphoff, sizeof(_iph), &_iph); if (ih == NULL) { printk("TRUNCATED");