[NETNS]: Introduce a netns_core structure.
authorPavel Emelyanov <xemul@openvz.org>
Tue, 1 Apr 2008 02:41:14 +0000 (19:41 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Apr 2008 02:41:14 +0000 (19:41 -0700)
There's already some stuff on the struct net, that should better
be folded into netns_core structure. I'm making the per-proto inuse
counter be per-net also, which is also a candidate for this, so
introduce this structure and populate it a bit.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/net_namespace.h
include/net/netns/core.h [new file with mode: 0644]
net/core/sysctl_net_core.c
net/socket.c

index f8f3d1a5fc35ec3abeb5739b911769d3c698e603..c01d45fe08c3d8d57c37f608de97ae93e70cdf7c 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/workqueue.h>
 #include <linux/list.h>
 
+#include <net/netns/core.h>
 #include <net/netns/unix.h>
 #include <net/netns/packet.h>
 #include <net/netns/ipv4.h>
@@ -46,10 +47,7 @@ struct net {
 
        struct sock             *rtnl;                  /* rtnetlink socket */
 
-       /* core sysctls */
-       struct ctl_table_header *sysctl_core_hdr;
-       int                     sysctl_somaxconn;
-
+       struct netns_core       core;
        struct netns_packet     packet;
        struct netns_unix       unx;
        struct netns_ipv4       ipv4;
diff --git a/include/net/netns/core.h b/include/net/netns/core.h
new file mode 100644 (file)
index 0000000..0e8c0f8
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef __NETNS_CORE_H__
+#define __NETNS_CORE_H__
+
+struct ctl_table_header;
+
+struct netns_core {
+       /* core sysctls */
+       struct ctl_table_header *sysctl_hdr;
+
+       int     sysctl_somaxconn;
+};
+
+#endif
index 130338f83ae5c7be54b7f848d755931f65b4bc0e..5fc801057244b797aafce24665147987cdd877ef 100644 (file)
@@ -127,7 +127,7 @@ static struct ctl_table net_core_table[] = {
        {
                .ctl_name       = NET_CORE_SOMAXCONN,
                .procname       = "somaxconn",
-               .data           = &init_net.sysctl_somaxconn,
+               .data           = &init_net.core.sysctl_somaxconn,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = &proc_dointvec
@@ -161,7 +161,7 @@ static __net_init int sysctl_core_net_init(struct net *net)
 {
        struct ctl_table *tbl, *tmp;
 
-       net->sysctl_somaxconn = SOMAXCONN;
+       net->core.sysctl_somaxconn = SOMAXCONN;
 
        tbl = net_core_table;
        if (net != &init_net) {
@@ -178,9 +178,9 @@ static __net_init int sysctl_core_net_init(struct net *net)
                }
        }
 
-       net->sysctl_core_hdr = register_net_sysctl_table(net,
+       net->core.sysctl_hdr = register_net_sysctl_table(net,
                        net_core_path, tbl);
-       if (net->sysctl_core_hdr == NULL)
+       if (net->core.sysctl_hdr == NULL)
                goto err_reg;
 
        return 0;
@@ -196,8 +196,8 @@ static __net_exit void sysctl_core_net_exit(struct net *net)
 {
        struct ctl_table *tbl;
 
-       tbl = net->sysctl_core_hdr->ctl_table_arg;
-       unregister_net_sysctl_table(net->sysctl_core_hdr);
+       tbl = net->core.sysctl_hdr->ctl_table_arg;
+       unregister_net_sysctl_table(net->core.sysctl_hdr);
        BUG_ON(tbl == net_core_table);
        kfree(tbl);
 }
index 79e5382fd11060110bf37aa89f07b736d41821f4..9b5c917f8a6b8587adf63d8d8581c3a0ad4bfb57 100644 (file)
@@ -1375,7 +1375,7 @@ asmlinkage long sys_listen(int fd, int backlog)
 
        sock = sockfd_lookup_light(fd, &err, &fput_needed);
        if (sock) {
-               somaxconn = sock_net(sock->sk)->sysctl_somaxconn;
+               somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn;
                if ((unsigned)backlog > somaxconn)
                        backlog = somaxconn;