[NET]: Add a network namespace parameter to struct sock
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 12 Sep 2007 09:58:02 +0000 (11:58 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:49:05 +0000 (16:49 -0700)
Sockets need to get a reference to their network namespace,
or possibly a simple hold if someone registers on the network
namespace notifier and will free the sockets when the namespace
is going to be destroyed.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/inet_timewait_sock.h
include/net/sock.h

index 47d52b2414dbac4b1c5a294c46483e9db36901ef..abaff05972707feac79c5ca7199996e3f252167b 100644 (file)
@@ -115,6 +115,7 @@ struct inet_timewait_sock {
 #define tw_refcnt              __tw_common.skc_refcnt
 #define tw_hash                        __tw_common.skc_hash
 #define tw_prot                        __tw_common.skc_prot
+#define tw_net                 __tw_common.skc_net
        volatile unsigned char  tw_substate;
        /* 3 bits hole, try to pack */
        unsigned char           tw_rcv_wscale;
index 5ed9fa42b6e887bf10b67a4c7dacc2d94cdc82fe..9ef8b5fb7936ed42610850188cde4bfcbbc15613 100644 (file)
@@ -105,6 +105,7 @@ struct proto;
  *     @skc_refcnt: reference count
  *     @skc_hash: hash value used with various protocol lookup tables
  *     @skc_prot: protocol handlers inside a network family
+ *     @skc_net: reference to the network namespace of this socket
  *
  *     This is the minimal network layer representation of sockets, the header
  *     for struct sock and struct inet_timewait_sock.
@@ -119,6 +120,7 @@ struct sock_common {
        atomic_t                skc_refcnt;
        unsigned int            skc_hash;
        struct proto            *skc_prot;
+       struct net              *skc_net;
 };
 
 /**
@@ -195,6 +197,7 @@ struct sock {
 #define sk_refcnt              __sk_common.skc_refcnt
 #define sk_hash                        __sk_common.skc_hash
 #define sk_prot                        __sk_common.skc_prot
+#define sk_net                 __sk_common.skc_net
        unsigned char           sk_shutdown : 2,
                                sk_no_check : 2,
                                sk_userlocks : 4;