diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-10-19 16:43:22 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-10-22 14:10:33 +0200 |
commit | 381f47c5af62cec173528f5f539558d7a18b6d30 (patch) | |
tree | ec513fb911bdff393ea3e04fb67c34fd4aaf80d8 /ubus.c | |
parent | 98ffa1331519ed3dd84bd351652ae0fde3df8c93 (diff) |
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.c | 26 |
1 files changed, 1 insertions, 25 deletions
@@ -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); } |