summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2013-10-23 10:26:40 +0200
committerSteven Barth <steven@midlink.org>2013-10-23 10:26:40 +0200
commit16cee36ff3cf1895f87368709dabd3ffd5f24e4f (patch)
tree0b87ee4d91ce1111a5ac24b674b746aca52ac268 /src
parente418a237611a5d2ad6dfa8a814b560350345b2f7 (diff)
Fix cleanup of interfaces
Diffstat (limited to 'src')
-rw-r--r--src/config.c12
-rw-r--r--src/odhcpd.h2
2 files changed, 6 insertions, 8 deletions
diff --git a/src/config.c b/src/config.c
index f008c12..6c09541 100644
--- a/src/config.c
+++ b/src/config.c
@@ -273,8 +273,6 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
iface = calloc(1, sizeof(*iface));
strncpy(iface->name, name, sizeof(iface->name) - 1);
list_add(&iface->head, &interfaces);
- } else if (overwrite) {
- clean_interface(iface);
}
const char *ifname = NULL;
@@ -298,9 +296,6 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
iface->inuse = true;
- if (overwrite)
- clean_interface(iface);
-
if ((c = tb[IFACE_ATTR_DYNAMICDHCP]))
iface->no_dynamic_dhcp = !blobmsg_get_bool(c);
@@ -503,6 +498,10 @@ void odhcpd_reload(void)
free(l);
}
+ struct interface *master = NULL, *i, *n;
+ list_for_each_entry(i, &interfaces, head)
+ clean_interface(i);
+
struct uci_package *dhcp = NULL;
if (!uci_load(uci, "dhcp", &dhcp)) {
struct uci_element *e;
@@ -521,12 +520,12 @@ void odhcpd_reload(void)
}
}
+
#ifdef WITH_UBUS
ubus_apply_network();
#endif
// Evaluate hybrid mode for master
- struct interface *master = NULL, *i, *n;
list_for_each_entry(i, &interfaces, head) {
if (!i->master)
continue;
@@ -570,7 +569,6 @@ void odhcpd_reload(void)
setup_dhcpv6_interface(i, true);
setup_ndp_interface(i, true);
setup_dhcpv4_interface(i, true);
- i->inuse = false;
} else {
close_interface(i);
}
diff --git a/src/odhcpd.h b/src/odhcpd.h
index 5ae6a39..9949253 100644
--- a/src/odhcpd.h
+++ b/src/odhcpd.h
@@ -104,7 +104,6 @@ struct interface {
int ifindex;
char ifname[IF_NAMESIZE];
char name[IF_NAMESIZE];
- bool inuse;
// Runtime data
struct uloop_timeout timer_rs;
@@ -124,6 +123,7 @@ struct interface {
enum odhcpd_mode dhcpv4;
// Config
+ bool inuse;
bool external;
bool master;
bool ignore;