Setting tag linux-2.6-32-36
[linux-2.6.git] / linux-2.6-521-packet-tagging.patch
1 From 5d0cfcf3f26b5aafe91f23fa9095461bdf83c074 Mon Sep 17 00:00:00 2001
2 From: S.Çağlar Onur <caglar@cs.princeton.edu>
3 Date: Tue, 7 Dec 2010 11:06:08 -0500
4 Subject: [PATCH] linux-2.6-521-packet-tagging.patch
5
6 ---
7  include/linux/skbuff.h       |    2 ++
8  net/core/skbuff.c            |    2 ++
9  net/core/sock.c              |    2 ++
10  net/ipv4/af_inet.c           |    2 ++
11  net/ipv4/netfilter/ipt_LOG.c |    2 ++
12  5 files changed, 10 insertions(+), 0 deletions(-)
13
14 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
15 index 69af253..0670992 100644
16 --- a/include/linux/skbuff.h
17 +++ b/include/linux/skbuff.h
18 @@ -391,6 +391,8 @@ struct sk_buff {
19                 __u32           dropcount;
20         };
21  
22 +#define skb_tag                        mark
23 +
24         __u16                   vlan_tci;
25  #ifndef __GENKSYMS__
26         __u16                   rxhash;
27 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
28 index 841664f..371324c 100644
29 --- a/net/core/skbuff.c
30 +++ b/net/core/skbuff.c
31 @@ -208,6 +208,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
32         skb->mac_header = ~0U;
33  #endif
34  
35 +       if (!in_interrupt()) skb->skb_tag = nx_current_nid(); else skb->skb_tag = 0;
36         /* make sure we initialize shinfo sequentially */
37         shinfo = skb_shinfo(skb);
38         atomic_set(&shinfo->dataref, 1);
39 @@ -562,6 +563,7 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
40  #endif
41  #endif
42         new->vlan_tci           = old->vlan_tci;
43 +       new->skb_tag            = old->skb_tag;
44  
45         skb_copy_secmark(new, old);
46  }
47 diff --git a/net/core/sock.c b/net/core/sock.c
48 index f406c4b..40197d6 100644
49 --- a/net/core/sock.c
50 +++ b/net/core/sock.c
51 @@ -1081,6 +1081,8 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
52                 sk->sk_prot = sk->sk_prot_creator = prot;
53                 sock_lock_init(sk);
54                 sock_net_set(sk, get_net(net));
55 +               if (!in_interrupt())
56 +                       sk->sk_mark = nx_current_nid();
57                 atomic_set(&sk->sk_wmem_alloc, 1);
58  
59                 sock_update_classid(sk);
60 diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
61 index e3213b2..3f29c1f 100644
62 --- a/net/ipv4/af_inet.c
63 +++ b/net/ipv4/af_inet.c
64 @@ -181,6 +181,8 @@ static int inet_autobind(struct sock *sk)
65                         return -EAGAIN;
66                 }
67                 inet->sport = htons(inet->num);
68 +               sk->sk_xid = vx_current_xid();
69 +               if (!in_interrupt()) sk->sk_nid = nx_current_nid(); else sk->sk_nid=0;
70         }
71         release_sock(sk);
72         return 0;
73 diff --git a/net/ipv4/netfilter/ipt_LOG.c b/net/ipv4/netfilter/ipt_LOG.c
74 index acc44c6..ac29a8c 100644
75 --- a/net/ipv4/netfilter/ipt_LOG.c
76 +++ b/net/ipv4/netfilter/ipt_LOG.c
77 @@ -45,6 +45,8 @@ static void dump_packet(const struct nf_loginfo *info,
78         else
79                 logflags = NF_LOG_MASK;
80  
81 +       printk("TAG=%d ", skb->skb_tag);
82 +
83         ih = skb_header_pointer(skb, iphoff, sizeof(_iph), &_iph);
84         if (ih == NULL) {
85                 printk("TRUNCATED");