mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 05:31:15 +00:00
vxlan: changelink: Delete remote after update
If a change in remote address prompts a change in a default FDB entry, that change might be vetoed. If that happens, it would then be necessary to reinstate the already-removed default FDB entry corresponding to the previous remote address. Instead, arrange to have the previous address removed only after the FDB is successfully vetted. Signed-off-by: Petr Machata <petrm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
038a5a99e9
commit
1cdc98c271
1 changed files with 8 additions and 9 deletions
|
@ -3809,15 +3809,6 @@ static int vxlan_changelink(struct net_device *dev, struct nlattr *tb[],
|
||||||
/* handle default dst entry */
|
/* handle default dst entry */
|
||||||
if (!vxlan_addr_equal(&conf.remote_ip, &dst->remote_ip)) {
|
if (!vxlan_addr_equal(&conf.remote_ip, &dst->remote_ip)) {
|
||||||
spin_lock_bh(&vxlan->hash_lock);
|
spin_lock_bh(&vxlan->hash_lock);
|
||||||
if (!vxlan_addr_any(&dst->remote_ip))
|
|
||||||
__vxlan_fdb_delete(vxlan, all_zeros_mac,
|
|
||||||
dst->remote_ip,
|
|
||||||
vxlan->cfg.dst_port,
|
|
||||||
dst->remote_vni,
|
|
||||||
dst->remote_vni,
|
|
||||||
dst->remote_ifindex,
|
|
||||||
true);
|
|
||||||
|
|
||||||
if (!vxlan_addr_any(&conf.remote_ip)) {
|
if (!vxlan_addr_any(&conf.remote_ip)) {
|
||||||
err = vxlan_fdb_update(vxlan, all_zeros_mac,
|
err = vxlan_fdb_update(vxlan, all_zeros_mac,
|
||||||
&conf.remote_ip,
|
&conf.remote_ip,
|
||||||
|
@ -3832,6 +3823,14 @@ static int vxlan_changelink(struct net_device *dev, struct nlattr *tb[],
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!vxlan_addr_any(&dst->remote_ip))
|
||||||
|
__vxlan_fdb_delete(vxlan, all_zeros_mac,
|
||||||
|
dst->remote_ip,
|
||||||
|
vxlan->cfg.dst_port,
|
||||||
|
dst->remote_vni,
|
||||||
|
dst->remote_vni,
|
||||||
|
dst->remote_ifindex,
|
||||||
|
true);
|
||||||
spin_unlock_bh(&vxlan->hash_lock);
|
spin_unlock_bh(&vxlan->hash_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue