proto-shell: allow running protocols without proto_task.
[project/netifd.git] / interface.c
index 3281b70..a9ecf28 100644 (file)
@@ -68,15 +68,9 @@ static const struct blobmsg_policy iface_attrs[IFACE_ATTR_MAX] = {
        [IFACE_ATTR_FORCE_LINK] = { .name = "force_link", .type = BLOBMSG_TYPE_BOOL },
 };
 
-static const struct uci_blob_param_info iface_attr_info[IFACE_ATTR_MAX] = {
-       [IFACE_ATTR_DNS] = { .type = BLOBMSG_TYPE_STRING },
-       [IFACE_ATTR_IP6CLASS] = { .type = BLOBMSG_TYPE_STRING },
-};
-
 const struct uci_blob_param_list interface_attr_list = {
        .n_params = IFACE_ATTR_MAX,
        .params = iface_attrs,
-       .info = iface_attr_info,
 };
 
 static void
@@ -145,7 +139,7 @@ void interface_add_error(struct interface *iface, const char *subsystem,
                memcpy(dest, data[i], datalen[i]);
                dest += datalen[i];
        }
-       error->data[n_data++] = NULL;
+       error->data[n_data] = NULL;
 
        if (subsystem)
                error->subsystem = strcpy(d_subsys, subsystem);
@@ -525,9 +519,11 @@ interface_set_device_config(struct interface *iface, struct device *dev)
        if (!dev || !dev->default_config)
                return;
 
-       if (!iface->device_config && !dev->iface_config)
+       if (!iface->device_config &&
+           (!dev->iface_config || dev->config_iface != iface))
                return;
 
+       dev->config_iface = iface;
        dev->iface_config = iface->device_config;
        device_apply_config(dev, dev->type, iface->config);
 }