proc: Usable inode numbers for the namespace file descriptors.
[deliverable/linux.git] / net / core / net_namespace.c
index ec2870b44c1f920b734a4bccaf09824e99250742..2e9a3132b8dd11ac8a9851e8042d8982af9c20ef 100644 (file)
@@ -381,6 +381,21 @@ struct net *get_net_ns_by_pid(pid_t pid)
 }
 EXPORT_SYMBOL_GPL(get_net_ns_by_pid);
 
+static __net_init int net_ns_net_init(struct net *net)
+{
+       return proc_alloc_inum(&net->proc_inum);
+}
+
+static __net_exit void net_ns_net_exit(struct net *net)
+{
+       proc_free_inum(net->proc_inum);
+}
+
+static struct pernet_operations __net_initdata net_ns_ops = {
+       .init = net_ns_net_init,
+       .exit = net_ns_net_exit,
+};
+
 static int __init net_ns_init(void)
 {
        struct net_generic *ng;
@@ -412,6 +427,8 @@ static int __init net_ns_init(void)
 
        mutex_unlock(&net_mutex);
 
+       register_pernet_subsys(&net_ns_ops);
+
        return 0;
 }
 
@@ -640,11 +657,18 @@ static int netns_install(struct nsproxy *nsproxy, void *ns)
        return 0;
 }
 
+static unsigned int netns_inum(void *ns)
+{
+       struct net *net = ns;
+       return net->proc_inum;
+}
+
 const struct proc_ns_operations netns_operations = {
        .name           = "net",
        .type           = CLONE_NEWNET,
        .get            = netns_get,
        .put            = netns_put,
        .install        = netns_install,
+       .inum           = netns_inum,
 };
 #endif
This page took 0.027792 seconds and 5 git commands to generate.