net: Add support for batching network namespace cleanups
[firefly-linux-kernel-4.4.55.git] / include / net / net_namespace.h
index a1202841aaddf23bb9d68d5b88095cedefc504ee..f307e133d14c77567306dc7089630b75d9edb743 100644 (file)
@@ -28,6 +28,10 @@ struct ctl_table_header;
 struct net_generic;
 struct sock;
 
+
+#define NETDEV_HASHBITS    8
+#define NETDEV_HASHENTRIES (1 << NETDEV_HASHBITS)
+
 struct net {
        atomic_t                count;          /* To decided when the network
                                                 *  namespace should be freed.
@@ -38,7 +42,8 @@ struct net {
                                                 */
 #endif
        struct list_head        list;           /* list of network namespaces */
-       struct work_struct      work;           /* work struct for freeing */
+       struct list_head        cleanup_list;   /* namespaces on death row */
+       struct list_head        exit_list;      /* Use only net_mutex */
 
        struct proc_dir_entry   *proc_net;
        struct proc_dir_entry   *proc_net_stat;
@@ -80,7 +85,7 @@ struct net {
 #ifdef CONFIG_XFRM
        struct netns_xfrm       xfrm;
 #endif
-#ifdef CONFIG_WIRELESS_EXT
+#ifdef CONFIG_WEXT_CORE
        struct sk_buff_head     wext_nlevents;
 #endif
        struct net_generic      *gen;
@@ -232,6 +237,9 @@ struct pernet_operations {
        struct list_head list;
        int (*init)(struct net *net);
        void (*exit)(struct net *net);
+       void (*exit_batch)(struct list_head *net_exit_list);
+       int *id;
+       size_t size;
 };
 
 /*
@@ -255,12 +263,8 @@ struct pernet_operations {
  */
 extern int register_pernet_subsys(struct pernet_operations *);
 extern void unregister_pernet_subsys(struct pernet_operations *);
-extern int register_pernet_gen_subsys(int *id, struct pernet_operations *);
-extern void unregister_pernet_gen_subsys(int id, struct pernet_operations *);
 extern int register_pernet_device(struct pernet_operations *);
 extern void unregister_pernet_device(struct pernet_operations *);
-extern int register_pernet_gen_device(int *id, struct pernet_operations *);
-extern void unregister_pernet_gen_device(int id, struct pernet_operations *);
 
 struct ctl_path;
 struct ctl_table;