summaryrefslogtreecommitdiff
path: root/ubus.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2020-11-18 13:38:17 +0100
committerFelix Fietkau <nbd@nbd.name>2020-11-18 13:38:19 +0100
commit351d690f1a09e062ef951ac406ee571e1f1fe3e6 (patch)
treea142451fac10848da5970c65ee3ac9ce92e0f2a9 /ubus.c
parent4a41135750d97e06d1f6d808a9d24bb4b472aca4 (diff)
downloadnetifd-351d690f1a09e062ef951ac406ee571e1f1fe3e6.tar.gz
wireless: fix passing bridge name for vlan hotplug pass-through
When preparing the interface for hotplug add, pass the bridge device back to the caller, since it may not match the original device Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'ubus.c')
-rw-r--r--ubus.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/ubus.c b/ubus.c
index 4f16764..db4b335 100644
--- a/ubus.c
+++ b/ubus.c
@@ -986,19 +986,27 @@ netifd_handle_iface_prepare(struct ubus_context *ctx, struct ubus_object *obj,
struct blob_attr *msg)
{
struct interface *iface;
- struct device *dev;
+ struct device *dev, *bridge_dev = NULL;
const struct device_hotplug_ops *ops;
iface = container_of(obj, struct interface, ubus);
dev = iface->main_dev.dev;
if (!dev)
- return 0;
+ goto out;
ops = dev->hotplug_ops;
if (!ops)
- return 0;
+ goto out;
+
+ ops->prepare(dev, &bridge_dev);
+
+out:
+ blob_buf_init(&b, 0);
+ if (bridge_dev)
+ blobmsg_add_string(&b, "bridge", bridge_dev->ifname);
+ ubus_send_reply(ctx, req, b.head);
- return ops->prepare(dev);
+ return 0;
}
static int