Add ubus methods for global interface status
[project/netifd.git] / device.c
index 5fa0ac1..c30650a 100644 (file)
--- a/device.c
+++ b/device.c
@@ -39,7 +39,7 @@ static const struct blobmsg_policy dev_attrs[__DEV_ATTR_MAX] = {
        [DEV_ATTR_ENABLED] = { "enabled", BLOBMSG_TYPE_BOOL },
 };
 
-const struct config_param_list device_attr_list = {
+const struct uci_blob_param_list device_attr_list = {
        .n_params = __DEV_ATTR_MAX,
        .params = dev_attrs,
 };
@@ -216,7 +216,7 @@ int device_claim(struct device_user *dep)
        if (ret == 0)
                device_broadcast_event(dev, DEV_EVENT_UP);
        else {
-               D(DEVICE, "claim device %s failed: %d\n", dev->ifname, ret);
+               D(DEVICE, "claim %s %s failed: %d\n", dev->type->name, dev->ifname, ret);
                dev->active = 0;
                dep->claimed = false;
        }
@@ -408,6 +408,9 @@ void device_add_user(struct device_user *dep, struct device *dev)
 {
        struct safe_list *head;
 
+       if (dep->dev == dev)
+               return;
+
        if (dep->dev)
                device_remove_user(dep);
 
@@ -499,9 +502,9 @@ static enum dev_change_type
 device_reload_config(struct device *dev, struct blob_attr *attr)
 {
        struct blob_attr *tb[__DEV_ATTR_MAX];
-       const struct config_param_list *cfg = dev->type->config_params;
+       const struct uci_blob_param_list *cfg = dev->type->config_params;
 
-       if (config_check_equal(dev->config, attr, cfg))
+       if (uci_blob_check_equal(dev->config, attr, cfg))
                return DEV_CONFIG_NO_CHANGE;
 
        if (cfg == &device_attr_list) {