summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/config.c15
-rw-r--r--src/dhcpv4.c1
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;
}