diff options
author | Christian Marangi <ansuelsmth@gmail.com> | 2023-03-24 00:29:15 +0100 |
---|---|---|
committer | Christian Marangi <ansuelsmth@gmail.com> | 2023-03-24 01:57:58 +0100 |
commit | 29c934d7ab98ca0b5da0e3757b885a1d3c19a2f4 (patch) | |
tree | 46fd87cb38eda57c3ca0c832348e16060639c03c | |
parent | 7c0f603abc1481ddabcdeae0eaaf72d5535ecefa (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.c | 18 |
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])) |