[PATCH 1/2] net: prepare netlink code for netlink diag

2013-03-21 Thread Andrey Vagin
Move a few declarations in a header.

Cc: "David S. Miller" 
Cc: Eric Dumazet 
Cc: Pavel Emelyanov 
Cc: Pablo Neira Ayuso 
Cc: "Eric W. Biederman" 
Cc: Gao feng 
Signed-off-by: Andrey Vagin 
---
 net/netlink/af_netlink.c | 59 -
 net/netlink/af_netlink.h | 62 
 2 files changed, 67 insertions(+), 54 deletions(-)
 create mode 100644 net/netlink/af_netlink.h

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 1e3fd5b..a500ce2 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -61,28 +61,7 @@
 #include 
 #include 
 
-#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8)
-#define NLGRPLONGS(x)  (NLGRPSZ(x)/sizeof(unsigned long))
-
-struct netlink_sock {
-   /* struct sock has to be the first member of netlink_sock */
-   struct sock sk;
-   u32 portid;
-   u32 dst_portid;
-   u32 dst_group;
-   u32 flags;
-   u32 subscriptions;
-   u32 ngroups;
-   unsigned long   *groups;
-   unsigned long   state;
-   wait_queue_head_t   wait;
-   struct netlink_callback *cb;
-   struct mutex*cb_mutex;
-   struct mutexcb_def_mutex;
-   void(*netlink_rcv)(struct sk_buff *skb);
-   void(*netlink_bind)(int group);
-   struct module   *module;
-};
+#include "af_netlink.h"
 
 struct listeners {
struct rcu_head rcu;
@@ -94,48 +73,20 @@ struct listeners {
 #define NETLINK_BROADCAST_SEND_ERROR   0x4
 #define NETLINK_RECV_NO_ENOBUFS0x8
 
-static inline struct netlink_sock *nlk_sk(struct sock *sk)
-{
-   return container_of(sk, struct netlink_sock, sk);
-}
-
 static inline int netlink_is_kernel(struct sock *sk)
 {
return nlk_sk(sk)->flags & NETLINK_KERNEL_SOCKET;
 }
 
-struct nl_portid_hash {
-   struct hlist_head   *table;
-   unsigned long   rehash_time;
-
-   unsigned intmask;
-   unsigned intshift;
-
-   unsigned intentries;
-   unsigned intmax_shift;
-
-   u32 rnd;
-};
-
-struct netlink_table {
-   struct nl_portid_hash   hash;
-   struct hlist_head   mc_list;
-   struct listeners __rcu  *listeners;
-   unsigned intflags;
-   unsigned intgroups;
-   struct mutex*cb_mutex;
-   struct module   *module;
-   void(*bind)(int group);
-   int registered;
-};
-
-static struct netlink_table *nl_table;
+struct netlink_table *nl_table;
+EXPORT_SYMBOL_GPL(nl_table);
 
 static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait);
 
 static int netlink_dump(struct sock *sk);
 
-static DEFINE_RWLOCK(nl_table_lock);
+DEFINE_RWLOCK(nl_table_lock);
+EXPORT_SYMBOL_GPL(nl_table_lock);
 static atomic_t nl_table_users = ATOMIC_INIT(0);
 
 #define nl_deref_protected(X) rcu_dereference_protected(X, 
lockdep_is_held(_table_lock));
diff --git a/net/netlink/af_netlink.h b/net/netlink/af_netlink.h
new file mode 100644
index 000..d9acb2a
--- /dev/null
+++ b/net/netlink/af_netlink.h
@@ -0,0 +1,62 @@
+#ifndef _AF_NETLINK_H
+#define _AF_NETLINK_H
+
+#include 
+
+#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8)
+#define NLGRPLONGS(x)  (NLGRPSZ(x)/sizeof(unsigned long))
+
+struct netlink_sock {
+   /* struct sock has to be the first member of netlink_sock */
+   struct sock sk;
+   u32 portid;
+   u32 dst_portid;
+   u32 dst_group;
+   u32 flags;
+   u32 subscriptions;
+   u32 ngroups;
+   unsigned long   *groups;
+   unsigned long   state;
+   wait_queue_head_t   wait;
+   struct netlink_callback *cb;
+   struct mutex*cb_mutex;
+   struct mutexcb_def_mutex;
+   void(*netlink_rcv)(struct sk_buff *skb);
+   void(*netlink_bind)(int group);
+   struct module   *module;
+};
+
+static inline struct netlink_sock *nlk_sk(struct sock *sk)
+{
+   return container_of(sk, struct netlink_sock, sk);
+}
+
+struct nl_portid_hash {
+   struct hlist_head   *table;
+   unsigned long   rehash_time;
+
+   unsigned intmask;
+   unsigned intshift;
+
+   unsigned intentries;
+   unsigned intmax_shift;
+
+   u32 rnd;
+};
+
+struct netlink_table {
+   struct nl_portid_hash   hash;
+   struct hlist_head   mc_list;
+   struct listeners __rcu  *listeners;
+   unsigned int 

[PATCH 1/2] net: prepare netlink code for netlink diag

2013-03-21 Thread Andrey Vagin
Move a few declarations in a header.

Cc: David S. Miller da...@davemloft.net
Cc: Eric Dumazet eduma...@google.com
Cc: Pavel Emelyanov xe...@parallels.com
Cc: Pablo Neira Ayuso pa...@netfilter.org
Cc: Eric W. Biederman ebied...@xmission.com
Cc: Gao feng gaof...@cn.fujitsu.com
Signed-off-by: Andrey Vagin ava...@openvz.org
---
 net/netlink/af_netlink.c | 59 -
 net/netlink/af_netlink.h | 62 
 2 files changed, 67 insertions(+), 54 deletions(-)
 create mode 100644 net/netlink/af_netlink.h

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 1e3fd5b..a500ce2 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -61,28 +61,7 @@
 #include net/scm.h
 #include net/netlink.h
 
-#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8)
-#define NLGRPLONGS(x)  (NLGRPSZ(x)/sizeof(unsigned long))
-
-struct netlink_sock {
-   /* struct sock has to be the first member of netlink_sock */
-   struct sock sk;
-   u32 portid;
-   u32 dst_portid;
-   u32 dst_group;
-   u32 flags;
-   u32 subscriptions;
-   u32 ngroups;
-   unsigned long   *groups;
-   unsigned long   state;
-   wait_queue_head_t   wait;
-   struct netlink_callback *cb;
-   struct mutex*cb_mutex;
-   struct mutexcb_def_mutex;
-   void(*netlink_rcv)(struct sk_buff *skb);
-   void(*netlink_bind)(int group);
-   struct module   *module;
-};
+#include af_netlink.h
 
 struct listeners {
struct rcu_head rcu;
@@ -94,48 +73,20 @@ struct listeners {
 #define NETLINK_BROADCAST_SEND_ERROR   0x4
 #define NETLINK_RECV_NO_ENOBUFS0x8
 
-static inline struct netlink_sock *nlk_sk(struct sock *sk)
-{
-   return container_of(sk, struct netlink_sock, sk);
-}
-
 static inline int netlink_is_kernel(struct sock *sk)
 {
return nlk_sk(sk)-flags  NETLINK_KERNEL_SOCKET;
 }
 
-struct nl_portid_hash {
-   struct hlist_head   *table;
-   unsigned long   rehash_time;
-
-   unsigned intmask;
-   unsigned intshift;
-
-   unsigned intentries;
-   unsigned intmax_shift;
-
-   u32 rnd;
-};
-
-struct netlink_table {
-   struct nl_portid_hash   hash;
-   struct hlist_head   mc_list;
-   struct listeners __rcu  *listeners;
-   unsigned intflags;
-   unsigned intgroups;
-   struct mutex*cb_mutex;
-   struct module   *module;
-   void(*bind)(int group);
-   int registered;
-};
-
-static struct netlink_table *nl_table;
+struct netlink_table *nl_table;
+EXPORT_SYMBOL_GPL(nl_table);
 
 static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait);
 
 static int netlink_dump(struct sock *sk);
 
-static DEFINE_RWLOCK(nl_table_lock);
+DEFINE_RWLOCK(nl_table_lock);
+EXPORT_SYMBOL_GPL(nl_table_lock);
 static atomic_t nl_table_users = ATOMIC_INIT(0);
 
 #define nl_deref_protected(X) rcu_dereference_protected(X, 
lockdep_is_held(nl_table_lock));
diff --git a/net/netlink/af_netlink.h b/net/netlink/af_netlink.h
new file mode 100644
index 000..d9acb2a
--- /dev/null
+++ b/net/netlink/af_netlink.h
@@ -0,0 +1,62 @@
+#ifndef _AF_NETLINK_H
+#define _AF_NETLINK_H
+
+#include net/sock.h
+
+#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8)
+#define NLGRPLONGS(x)  (NLGRPSZ(x)/sizeof(unsigned long))
+
+struct netlink_sock {
+   /* struct sock has to be the first member of netlink_sock */
+   struct sock sk;
+   u32 portid;
+   u32 dst_portid;
+   u32 dst_group;
+   u32 flags;
+   u32 subscriptions;
+   u32 ngroups;
+   unsigned long   *groups;
+   unsigned long   state;
+   wait_queue_head_t   wait;
+   struct netlink_callback *cb;
+   struct mutex*cb_mutex;
+   struct mutexcb_def_mutex;
+   void(*netlink_rcv)(struct sk_buff *skb);
+   void(*netlink_bind)(int group);
+   struct module   *module;
+};
+
+static inline struct netlink_sock *nlk_sk(struct sock *sk)
+{
+   return container_of(sk, struct netlink_sock, sk);
+}
+
+struct nl_portid_hash {
+   struct hlist_head   *table;
+   unsigned long   rehash_time;
+
+   unsigned intmask;
+   unsigned intshift;
+
+   unsigned intentries;
+   unsigned intmax_shift;
+
+   u32 rnd;
+};
+
+struct