net: introduce dev_net notifier register/unregister variants
Introduce dev_net variants of netdev notifier register/unregister functions and allow per-net notifier to follow the netdevice into the namespace it is moved to. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
1f637703d8
commit
93642e14bd
@@ -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;
|
||||
|
Reference in New Issue
Block a user