summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-05-27 18:51:42 -0400
committerDavid S. Miller <davem@davemloft.net>2017-05-27 18:51:42 -0400
commit5f1d258d5389643ee306bf616385d992ce39eac5 (patch)
treee71e607d845b7a87f50eace22efa40f63621081e /include
parent34aa83c2fc23e055968387c8b78ac8bafd735aff (diff)
parent7a7e96e09d463c7c3d51a51c539ae4352085ed18 (diff)
Merge branch 'rtnetlink-Updates-to-rtnetlink_event'
Vladislav Yasevich says: ==================== rtnetlink: Updates to rtnetlink_event() First is the patch to add IFLA_EVENT attribute to the netlink message. It supports only currently white-listed events. Like before, this is just an attribute that gets added to the rtnetlink message only when the messaged was generated as a result of a netdev event. In my case, this is necessary since I want to trap NETDEV_NOTIFY_PEERS event (also possibly NETDEV_RESEND_IGMP event) and perform certain actions in user space. This is not possible since the messages generated as a result of netdev events do not usually contain any changed data. They are just notifications. This patch exposes this notification type to userspace. Second, I remove duplicate messages that a result of a change to bonding options. If netlink is used to configure bonding options, 2 messages are generated, one as a result NETDEV_CHANGEINFODATA event triggered by bonding code and one a result of device state changes triggered by netdev_state_change (called from do_setlink). V6: Updated names and refactored to make it less tied to netdev events. (From David Ahern) V5: Rebased. Added iproute2 patch to the series. V4: * Removed the patch the removed NETDEV_CHANGENAME from event whitelist. It doesn't trigger duplicate messages since name changes can only be done while device is down and netdev_state_change() doesn't report changes while device is down. * Added a patch to clean-up duplicate messages on bonding option changes. V3: Rebased. Cleaned-up duplicate event. V2: Added missed events (from David Ahern) ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/rtnetlink.h3
-rw-r--r--include/net/bond_options.h2
-rw-r--r--include/uapi/linux/if_link.h11
3 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index 57e54847b0b9..dea59c8eec54 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -18,7 +18,8 @@ extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst,
void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change, gfp_t flags);
struct sk_buff *rtmsg_ifinfo_build_skb(int type, struct net_device *dev,
- unsigned change, gfp_t flags);
+ unsigned change, u32 event,
+ gfp_t flags);
void rtmsg_ifinfo_send(struct sk_buff *skb, struct net_device *dev,
gfp_t flags);
diff --git a/include/net/bond_options.h b/include/net/bond_options.h
index 1797235cd590..d79d28f5318c 100644
--- a/include/net/bond_options.h
+++ b/include/net/bond_options.h
@@ -104,6 +104,8 @@ struct bond_option {
int __bond_opt_set(struct bonding *bond, unsigned int option,
struct bond_opt_value *val);
+int __bond_opt_set_notify(struct bonding *bond, unsigned int option,
+ struct bond_opt_value *val);
int bond_opt_tryset_rtnl(struct bonding *bond, unsigned int option, char *buf);
const struct bond_opt_value *bond_opt_parse(const struct bond_option *opt,
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index 15ac20382aba..8ed679fe603f 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -157,6 +157,7 @@ enum {
IFLA_GSO_MAX_SIZE,
IFLA_PAD,
IFLA_XDP,
+ IFLA_EVENT,
__IFLA_MAX
};
@@ -911,4 +912,14 @@ enum {
#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
+enum {
+ IFLA_EVENT_NONE,
+ IFLA_EVENT_REBOOT, /* internal reset / reboot */
+ IFLA_EVENT_FEATURES, /* change in offload features */
+ IFLA_EVENT_BONDING_FAILOVER, /* change in active slave */
+ IFLA_EVENT_NOTIFY_PEERS, /* re-sent grat. arp/ndisc */
+ IFLA_EVENT_IGMP_RESEND, /* re-sent IGMP JOIN */
+ IFLA_EVENT_BONDING_OPTIONS, /* change in bonding options */
+};
+
#endif /* _UAPI_LINUX_IF_LINK_H */