summaryrefslogtreecommitdiff
path: root/interface.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2021-06-04 09:05:31 +0200
committerFelix Fietkau <nbd@nbd.name>2021-06-04 09:05:33 +0200
commit50381d0a2998f6c0fc4823f0c2aa4206063d549e (patch)
treee22f15cc925923c12a741a41e4fa289270c3a547 /interface.c
parent7f199050f395d5295a3f665bcd2eb8cc755d08aa (diff)
downloadnetifd-50381d0a2998f6c0fc4823f0c2aa4206063d549e.tar.gz
bridge: allow adding/removing VLANs to configured member ports via hotplug
This is useful for a dynamic VLAN setup, where extra tags need to be created on the trunking port on demand Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'interface.c')
-rw-r--r--interface.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/interface.c b/interface.c
index 1d1a5f8..2391e12 100644
--- a/interface.c
+++ b/interface.c
@@ -1034,12 +1034,13 @@ interface_set_main_dev(struct interface *iface, struct device *dev)
}
static int
-interface_remove_link(struct interface *iface, struct device *dev)
+interface_remove_link(struct interface *iface, struct device *dev,
+ struct blob_attr *vlan)
{
struct device *mdev = iface->main_dev.dev;
if (mdev && mdev->hotplug_ops)
- return mdev->hotplug_ops->del(mdev, dev);
+ return mdev->hotplug_ops->del(mdev, dev, vlan);
if (dev == iface->ext_dev.dev)
device_remove_user(&iface->ext_dev);
@@ -1103,7 +1104,7 @@ interface_handle_link(struct interface *iface, const char *name,
ret = interface_add_link(iface, dev, vlan, link_ext);
} else {
- ret = interface_remove_link(iface, dev);
+ ret = interface_remove_link(iface, dev, vlan);
}
out: