@@ -137,7 +137,7 @@ config_parse_interface(struct uci_section *s, bool alias)
return;
if (iface->device_config || dev->settings.flags)
- device_set_config(dev, dev->type, b.head);
+ device_apply_config(dev, dev->type, b.head);
return;
error_free_config:
free(config);
@@ -596,7 +596,7 @@ device_init_pending(void)
}
}
-enum dev_change_type
+static enum dev_change_type
device_set_config(struct device *dev, const struct device_type *type,
struct blob_attr *attr)
{
@@ -194,9 +194,6 @@ void device_init_settings(struct device *dev, struct blob_attr **tb);
void device_init_pending(void);
enum dev_change_type
-device_set_config(struct device *dev, const struct device_type *type,
- struct blob_attr *attr);
-enum dev_change_type
device_apply_config(struct device *dev, const struct device_type *type,
struct blob_attr *config);
@@ -918,11 +918,11 @@ interface_handle_link(struct interface *iface, const char *name, bool add, bool
}
if (add) {
- device_set_present(dev, true);
if (iface->device_config && dev->default_config)
- device_set_config(dev, dev->type, iface->config);
+ device_apply_config(dev, dev->type, iface->config);
+
+ device_set_present(dev, true);
- system_if_apply_settings(dev, &dev->settings, dev->settings.flags);
ret = interface_add_link(iface, dev, link_ext);
} else {
ret = interface_remove_link(iface, dev);
@@ -72,7 +72,7 @@ tunnel_create(const char *name, struct blob_attr *attr)
device_init(dev, &tunnel_device_type, name);
tun->set_state = dev->set_state;
dev->set_state = tunnel_set_state;
- device_set_config(dev, &tunnel_device_type, attr);
+ device_apply_config(dev, &tunnel_device_type, attr);
device_set_present(dev, true);
return dev;
Fixes issue interface device config is not applied in some cases. As the interface device config was applied but not always cached; an interface device config diff was not always detected. Simplify device config setting by exposing as api only device_apply_config Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> --- config.c | 2 +- device.c | 2 +- device.h | 3 --- interface.c | 6 +++--- tunnel.c | 2 +- 5 files changed, 6 insertions(+), 9 deletions(-)