config: recheck have_link_local on interface reload if already init
[project/odhcpd.git] / src / config.c
index ee7219fa9a2724867f82f9ad83b638599bf4e5eb..27e7f0375adf30a29388215f1fd142f6da4d4b47 100644 (file)
@@ -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]))