mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
net: bridge: BROPT_FDB_LOCAL_VLAN_0: On bridge changeaddr, skip per-VLAN FDBs
When BROPT_FDB_LOCAL_VLAN_0 is enabled, the local FDB entries for the bridge itself should not be created per-VLAN, but instead only on VLAN 0. When the bridge address changes, the local FDB entries need to be updated, which is done in br_fdb_change_mac_address(). Bail out early when in VLAN-0 mode, so that the per-VLAN FDB entries are not created. The per-VLAN walk is only done afterwards. Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Acked-by: Nikolay Aleksandrov <razor@blackwall.org> Link: https://patch.msgid.link/0bd432cf91921ef7c4ed0e129de1d1cd358c716b.1757004393.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4cf5fd8497
commit
40df3b8e90
|
|
@ -503,6 +503,9 @@ void br_fdb_change_mac_address(struct net_bridge *br, const u8 *newaddr)
|
|||
struct net_bridge_vlan_group *vg;
|
||||
struct net_bridge_fdb_entry *f;
|
||||
struct net_bridge_vlan *v;
|
||||
bool local_vlan_0;
|
||||
|
||||
local_vlan_0 = br_opt_get(br, BROPT_FDB_LOCAL_VLAN_0);
|
||||
|
||||
spin_lock_bh(&br->hash_lock);
|
||||
|
||||
|
|
@ -514,7 +517,7 @@ void br_fdb_change_mac_address(struct net_bridge *br, const u8 *newaddr)
|
|||
|
||||
fdb_add_local(br, NULL, newaddr, 0);
|
||||
vg = br_vlan_group(br);
|
||||
if (!vg || !vg->num_vlans)
|
||||
if (!vg || !vg->num_vlans || local_vlan_0)
|
||||
goto out;
|
||||
/* Now remove and add entries for every VLAN configured on the
|
||||
* bridge. This function runs under RTNL so the bitmap will not
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user