diff options
author | Nikolay Aleksandrov <nikolay@cumulusnetworks.com> | 2017-10-27 13:19:36 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-29 05:03:43 +0300 |
commit | e19b42a1a0669ed5b8009930c5269a5a87cc363c (patch) | |
tree | 11cc4d5dbba9a0977773ab624a2a4f0ddb4b9035 /net/bridge/br_private_tunnel.h | |
parent | 5b52a4c3acf5f4b4854d1c3ddc8be8770330a79c (diff) | |
download | linux-e19b42a1a0669ed5b8009930c5269a5a87cc363c.tar.xz |
bridge: netlink: make setlink/dellink notifications more accurate
Before this patch we had cases that either sent notifications when there
were in fact no changes (e.g. non-existent vlan delete) or didn't send
notifications when there were changes (e.g. vlan add range with an error in
the middle, port flags change + vlan update error). This patch sends down
a boolean to the functions setlink/dellink use and if there is even a
single configuration change (port flag, vlan add/del, port state) then
we always send a notification. This is all done to keep backwards
compatibility with the opportunistic vlan delete, where one could
specify a vlan range that has missing vlans inside and still everything
in that range will be cleared, this is mostly used to clear the whole
vlan config with a single call, i.e. range 1-4094.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_private_tunnel.h')
-rw-r--r-- | net/bridge/br_private_tunnel.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bridge/br_private_tunnel.h b/net/bridge/br_private_tunnel.h index 4a447a378ab3..a259471bfd78 100644 --- a/net/bridge/br_private_tunnel.h +++ b/net/bridge/br_private_tunnel.h @@ -26,7 +26,8 @@ int br_process_vlan_tunnel_info(struct net_bridge *br, struct net_bridge_port *p, int cmd, struct vtunnel_info *tinfo_curr, - struct vtunnel_info *tinfo_last); + struct vtunnel_info *tinfo_last, + bool *changed); int br_get_vlan_tunnel_info_size(struct net_bridge_vlan_group *vg); int br_fill_vlan_tunnel_info(struct sk_buff *skb, struct net_bridge_vlan_group *vg); |