summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2023-06-27 08:48:26 +0000
committerFelix Fietkau2023-06-27 08:48:28 +0000
commit03a61994771766a7ae7252531df75893bce210a5 (patch)
tree9648134c136b05224c50ce09d0e774ad7278a81f
parent493e1589bc8b67a34d2576c5793dfc4ffc9e52ed (diff)
downloadnetifd-03a61994771766a7ae7252531df75893bce210a5.tar.gz
bridge: add support for configuring extra vlans for the bridge itself
Can be configured in the same way as extra bridge member vlans Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--bridge.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/bridge.c b/bridge.c
index 2e9cca3..b4dddb8 100644
--- a/bridge.c
+++ b/bridge.c
@@ -351,13 +351,14 @@ static void bridge_stp_notify(struct bridge_state *bst)
static int
bridge_enable_interface(struct bridge_state *bst)
{
- int ret;
+ struct device *dev = &bst->dev;
+ int i, ret;
if (bst->active)
return 0;
bridge_stp_notify(bst);
- ret = system_bridge_addbr(&bst->dev, &bst->config);
+ ret = system_bridge_addbr(dev, &bst->config);
if (ret < 0)
return ret;
@@ -368,6 +369,10 @@ bridge_enable_interface(struct bridge_state *bst)
bridge_set_local_vlans(bst, true);
}
+ for (i = 0; i < dev->n_extra_vlan; i++)
+ system_bridge_vlan(dev->ifname, dev->extra_vlan[i].start,
+ dev->extra_vlan[i].end, true, BRVLAN_F_SELF);
+
bst->active = true;
return 0;
}