summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-03-24 00:29:15 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-03-24 01:57:58 +0100
commit29c934d7ab98ca0b5da0e3757b885a1d3c19a2f4 (patch)
tree46fd87cb38eda57c3ca0c832348e16060639c03c
parent7c0f603abc1481ddabcdeae0eaaf72d5535ecefa (diff)
config: recheck have_link_local on interface reload if already init
If an interface is already init in the odhcpd avl tables, have_link_local is not set to true with a link local addr set as get ipv6 addr is skipped. Move checking for have_link_local outside get_addr to better track when an interface is ready and have a link local addr for interface already init in odhcpd avl tables. Fixes: #197 Fixes: 7c0f603abc14 ("router: skip RA and wait for LINK-LOCAL to be assigned") Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-rw-r--r--src/config.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/config.c b/src/config.c
index ee7219f..27e7f03 100644
--- a/src/config.c
+++ b/src/config.c
@@ -594,21 +594,21 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
if (len > 0)
iface->addr6_len = len;
- for (size_t i = 0; i < iface->addr6_len; i++) {
- struct odhcpd_ipaddr *addr = &iface->addr6[i];
-
- if (!addr->tentative) {
- iface->have_link_local = true;
- break;
- }
- }
-
len = netlink_get_interface_addrs(iface->ifindex,
false, &iface->addr4);
if (len > 0)
iface->addr4_len = len;
}
+ for (size_t i = 0; i < iface->addr6_len; i++) {
+ struct odhcpd_ipaddr *addr = &iface->addr6[i];
+
+ if (!addr->tentative) {
+ iface->have_link_local = true;
+ break;
+ }
+ }
+
iface->inuse = true;
if ((c = tb[IFACE_ATTR_DYNAMICDHCP]))