When BROPT_FDB_LOCAL_VLAN_0 is enabled, the local FDB entries for the
member ports as well as the bridge itself should not be created per-VLAN,
but instead only on VLAN 0.

Thus when a VLAN is added for a port or the bridge itself, a local FDB
entry with the corresponding address should not be added when in the VLAN-0
mode.

Reviewed-by: Ido Schimmel <[email protected]>
Signed-off-by: Petr Machata <[email protected]>
---
 net/bridge/br_vlan.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c
index 939a3aa78d5c..ae911220cb3c 100644
--- a/net/bridge/br_vlan.c
+++ b/net/bridge/br_vlan.c
@@ -331,10 +331,12 @@ static int __vlan_add(struct net_bridge_vlan *v, u16 
flags,
 
        /* Add the dev mac and count the vlan only if it's usable */
        if (br_vlan_should_use(v)) {
-               err = br_fdb_add_local(br, p, dev->dev_addr, v->vid);
-               if (err) {
-                       br_err(br, "failed insert local address into bridge 
forwarding table\n");
-                       goto out_filt;
+               if (!br_opt_get(br, BROPT_FDB_LOCAL_VLAN_0)) {
+                       err = br_fdb_add_local(br, p, dev->dev_addr, v->vid);
+                       if (err) {
+                               br_err(br, "failed insert local address into 
bridge forwarding table\n");
+                               goto out_filt;
+                       }
                }
                vg->num_vlans++;
        }
-- 
2.49.0


Reply via email to