diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 15 | ||||
-rw-r--r-- | src/dhcpv4.c | 1 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/config.c b/src/config.c index d33309f..06e5407 100644 --- a/src/config.c +++ b/src/config.c @@ -282,10 +282,13 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if (overwrite || !iface->ifname[0]) ifname = ubus_get_ifname(name); #endif - if ((c = tb[IFACE_ATTR_IFNAME])) - ifname = blobmsg_get_string(c); - else if ((c = tb[IFACE_ATTR_NETWORKID])) - ifname = blobmsg_get_string(c); + + if (overwrite) { + if ((c = tb[IFACE_ATTR_IFNAME])) + ifname = blobmsg_get_string(c); + else if ((c = tb[IFACE_ATTR_NETWORKID])) + ifname = blobmsg_get_string(c); + } if (!iface->ifname[0] && !ifname) return -1; @@ -301,7 +304,7 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if ((c = tb[IFACE_ATTR_DYNAMICDHCP])) iface->no_dynamic_dhcp = !blobmsg_get_bool(c); - if ((c = tb[IFACE_ATTR_IGNORE])) + if (overwrite && (c = tb[IFACE_ATTR_IGNORE])) iface->ignore = blobmsg_get_bool(c); if ((c = tb[IFACE_ATTR_LEASETIME])) { @@ -340,7 +343,7 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if ((c = tb[IFACE_ATTR_MASTER])) iface->master = blobmsg_get_bool(c); - if ((c = tb[IFACE_ATTR_UPSTREAM])) { + if (overwrite && (c = tb[IFACE_ATTR_UPSTREAM])) { struct blob_attr *cur; unsigned rem; diff --git a/src/dhcpv4.c b/src/dhcpv4.c index b4b0720..6f15a0a 100644 --- a/src/dhcpv4.c +++ b/src/dhcpv4.c @@ -49,6 +49,7 @@ int init_dhcpv4(void) int setup_dhcpv4_interface(struct interface *iface, bool enable) { if (iface->dhcpv4_event.uloop.fd > 0) { + uloop_fd_delete(&iface->dhcpv4_event.uloop); close(iface->dhcpv4_event.uloop.fd); iface->dhcpv4_event.uloop.fd = -1; } |