dhcpv6: assign all viable DHCPv6 addresses by default (FS#402, FS#524)
[project/odhcpd.git] / src / dhcpv6-ia.c
index 502373f..847ede4 100644 (file)
@@ -36,7 +36,7 @@
 #include <libubox/usock.h>
 
 #define ADDR_ENTRY_VALID_IA_ADDR(iface, i, m, addrs) \
 #include <libubox/usock.h>
 
 #define ADDR_ENTRY_VALID_IA_ADDR(iface, i, m, addrs) \
-    ((iface)->managed == RELAYD_MANAGED_NO_AFLAG || (i) == (m) || \
+    ((iface)->dhcpv6_assignall || (i) == (m) || \
      (addrs)[(i)].prefix > 64)
 
 static void free_dhcpv6_assignment(struct dhcpv6_assignment *c);
      (addrs)[(i)].prefix > 64)
 
 static void free_dhcpv6_assignment(struct dhcpv6_assignment *c);
@@ -657,7 +657,8 @@ void dhcpv6_ia_preupdate(struct interface *iface)
                        &iface->ia_assignments, struct dhcpv6_assignment, head);
 
        list_for_each_entry(c, &iface->ia_assignments, head)
                        &iface->ia_assignments, struct dhcpv6_assignment, head);
 
        list_for_each_entry(c, &iface->ia_assignments, head)
-               if (c != border && !iface->managed && (c->flags & OAF_BOUND))
+               if (c != border && iface->ra_managed == RA_MANAGED_NO_MFLAG
+                               && (c->flags & OAF_BOUND))
                        apply_lease(iface, c, false);
 }
 
                        apply_lease(iface, c, false);
 }