X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=interface.c;h=733b5f10fd0fb0fdc005ef662c2d801e174c6dfe;hp=35f20b087fdee2906296cb29cbbf65045a34d9ea;hb=9d8dd091f8f336b111364ed211165b5ec9842a24;hpb=b2dcb02570939d98b92c7c55db1c328693a5d52a diff --git a/interface.c b/interface.c index 35f20b0..733b5f1 100644 --- a/interface.c +++ b/interface.c @@ -501,6 +501,8 @@ interface_claim_device(struct interface *iface) } else if (iface->ifname && !(iface->proto_handler->flags & PROTO_FLAG_NODEV)) { dev = device_get(iface->ifname, true); + if (dev && dev->default_config && iface->device_config) + device_set_config(dev, dev->type, iface->config); } else { dev = iface->ext_dev.dev; } @@ -881,8 +883,8 @@ interface_handle_link(struct interface *iface, const char *name, bool add, bool if (add) { device_set_present(dev, true); - if (iface->device_config) - device_set_config(dev, &simple_device_type, iface->config); + if (iface->device_config && dev->default_config) + device_set_config(dev, dev->type, iface->config); system_if_apply_settings(dev, &dev->settings, dev->settings.flags); ret = interface_add_link(iface, dev, link_ext); @@ -1043,10 +1045,13 @@ interface_change_config(struct interface *if_old, struct interface *if_new) } if (reload_ip) { + bool config_ip_enabled = if_old->config_ip.enabled; + bool proto_ip_enabled = if_old->proto_ip.enabled; + interface_ip_set_enabled(&if_old->config_ip, false); interface_ip_set_enabled(&if_old->proto_ip, false); - interface_ip_set_enabled(&if_old->proto_ip, if_new->proto_ip.enabled); - interface_ip_set_enabled(&if_old->config_ip, if_new->config_ip.enabled); + interface_ip_set_enabled(&if_old->proto_ip, proto_ip_enabled); + interface_ip_set_enabled(&if_old->config_ip, config_ip_enabled); } interface_write_resolv_conf();