summaryrefslogtreecommitdiff
path: root/ubus.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-10-19 16:43:22 +0200
committerFelix Fietkau <nbd@openwrt.org>2013-10-22 14:10:33 +0200
commit381f47c5af62cec173528f5f539558d7a18b6d30 (patch)
treeec513fb911bdff393ea3e04fb67c34fd4aaf80d8 /ubus.c
parent98ffa1331519ed3dd84bd351652ae0fde3df8c93 (diff)
downloadnetifd-381f47c5af62cec173528f5f539558d7a18b6d30.tar.gz
add helper function for adding/removing devices to interfaces
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Diffstat (limited to 'ubus.c')
-rw-r--r--ubus.c26
1 files changed, 1 insertions, 25 deletions
diff --git a/ubus.c b/ubus.c
index 31a83a9..b75eaec 100644
--- a/ubus.c
+++ b/ubus.c
@@ -762,9 +762,7 @@ netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj,
{
struct blob_attr *tb[__DEV_MAX];
struct interface *iface;
- struct device *dev;
bool add = !strncmp(method, "add", 3);
- int ret;
iface = container_of(obj, struct interface, ubus);
@@ -773,29 +771,7 @@ netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj,
if (!tb[DEV_NAME])
return UBUS_STATUS_INVALID_ARGUMENT;
- device_lock();
-
- dev = device_get(blobmsg_data(tb[DEV_NAME]), add ? 2 : 0);
- if (!dev) {
- ret = UBUS_STATUS_NOT_FOUND;
- goto out;
- }
-
- if (add) {
- device_set_present(dev, true);
- if (iface->device_config)
- device_set_config(dev, &simple_device_type, iface->config);
-
- system_if_apply_settings(dev, &dev->settings);
- ret = interface_add_link(iface, dev);
- } else {
- ret = interface_remove_link(iface, dev);
- }
-
-out:
- device_unlock();
-
- return ret;
+ return interface_handle_link(iface, blobmsg_data(tb[DEV_NAME]), add);
}