diff options
author | Moni Shoua <monis@mellanox.com> | 2015-02-03 09:48:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-04 19:14:24 -0500 |
commit | 61bd3857ff2c7daf756d49b41e6277bbdaa8f789 (patch) | |
tree | 60cb4a6a64906a1420ebfea518277207ac61f939 /net/core | |
parent | 251c005a6403933b3405fdc15fca4355e7590b42 (diff) |
net/core: Add event for a change in slave state
Add event which provides an indication on a change in the state
of a bonding slave. The event handler should cast the pointer to the
appropriate type (struct netdev_bonding_info) in order to get the
full info about the slave.
Signed-off-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 20 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 1d564d68e31a..ede0b161b115 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -5355,6 +5355,26 @@ void netdev_upper_dev_unlink(struct net_device *dev, | |||
5355 | } | 5355 | } |
5356 | EXPORT_SYMBOL(netdev_upper_dev_unlink); | 5356 | EXPORT_SYMBOL(netdev_upper_dev_unlink); |
5357 | 5357 | ||
5358 | /** | ||
5359 | * netdev_bonding_info_change - Dispatch event about slave change | ||
5360 | * @dev: device | ||
5361 | * @netdev_bonding_info: info to dispatch | ||
5362 | * | ||
5363 | * Send NETDEV_BONDING_INFO to netdev notifiers with info. | ||
5364 | * The caller must hold the RTNL lock. | ||
5365 | */ | ||
5366 | void netdev_bonding_info_change(struct net_device *dev, | ||
5367 | struct netdev_bonding_info *bonding_info) | ||
5368 | { | ||
5369 | struct netdev_notifier_bonding_info info; | ||
5370 | |||
5371 | memcpy(&info.bonding_info, bonding_info, | ||
5372 | sizeof(struct netdev_bonding_info)); | ||
5373 | call_netdevice_notifiers_info(NETDEV_BONDING_INFO, dev, | ||
5374 | &info.info); | ||
5375 | } | ||
5376 | EXPORT_SYMBOL(netdev_bonding_info_change); | ||
5377 | |||
5358 | void netdev_adjacent_add_links(struct net_device *dev) | 5378 | void netdev_adjacent_add_links(struct net_device *dev) |
5359 | { | 5379 | { |
5360 | struct netdev_adjacent *iter; | 5380 | struct netdev_adjacent *iter; |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 673cb4c6f391..4cd5e350d129 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -3180,6 +3180,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi | |||
3180 | case NETDEV_UNREGISTER_FINAL: | 3180 | case NETDEV_UNREGISTER_FINAL: |
3181 | case NETDEV_RELEASE: | 3181 | case NETDEV_RELEASE: |
3182 | case NETDEV_JOIN: | 3182 | case NETDEV_JOIN: |
3183 | case NETDEV_BONDING_INFO: | ||
3183 | break; | 3184 | break; |
3184 | default: | 3185 | default: |
3185 | rtmsg_ifinfo(RTM_NEWLINK, dev, 0, GFP_KERNEL); | 3186 | rtmsg_ifinfo(RTM_NEWLINK, dev, 0, GFP_KERNEL); |