]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/netdevice.h
net: introduce dev_net notifier register/unregister variants
[linux.git] / include / linux / netdevice.h
index 20445f94eb1c81881ae1fc23339f8375fc5a244c..4626188a754bf21be63a318e47c639ec4227c944 100644 (file)
@@ -939,6 +939,11 @@ struct netdev_name_node {
 int netdev_name_node_alt_create(struct net_device *dev, const char *name);
 int netdev_name_node_alt_destroy(struct net_device *dev, const char *name);
 
+struct netdev_net_notifier {
+       struct list_head list;
+       struct notifier_block *nb;
+};
+
 /*
  * This structure defines the management hooks for network devices.
  * The following hooks can be defined; unless noted otherwise, they are
@@ -1793,6 +1798,10 @@ enum netdev_priv_flags {
  *
  *     @wol_enabled:   Wake-on-LAN is enabled
  *
+ *     @net_notifier_list:     List of per-net netdev notifier block
+ *                             that follow this device when it is moved
+ *                             to another network namespace.
+ *
  *     FIXME: cleanup struct net_device such that network protocol info
  *     moves out.
  */
@@ -2085,6 +2094,8 @@ struct net_device {
        struct lock_class_key   addr_list_lock_key;
        bool                    proto_down;
        unsigned                wol_enabled:1;
+
+       struct list_head        net_notifier_list;
 };
 #define to_net_dev(d) container_of(d, struct net_device, dev)
 
@@ -2529,6 +2540,12 @@ int unregister_netdevice_notifier(struct notifier_block *nb);
 int register_netdevice_notifier_net(struct net *net, struct notifier_block *nb);
 int unregister_netdevice_notifier_net(struct net *net,
                                      struct notifier_block *nb);
+int register_netdevice_notifier_dev_net(struct net_device *dev,
+                                       struct notifier_block *nb,
+                                       struct netdev_net_notifier *nn);
+int unregister_netdevice_notifier_dev_net(struct net_device *dev,
+                                         struct notifier_block *nb,
+                                         struct netdev_net_notifier *nn);
 
 struct netdev_notifier_info {
        struct net_device       *dev;