+ if (c->assigned != -1)
+ assigned_any = true;
+ }
+
+ // Then try to assign all other + failed custom assignments
+ while (!list_empty(&assign_later)) {
+ c = list_first_entry(&assign_later, struct device_prefix_assignment, head);
+ list_del(&c->head);
+
+ bool assigned = false;
+ do {
+ assigned = interface_prefix_assign(&prefix->assignments, c);
+ } while (!assigned && ++c->length <= 64);
+
+ if (!assigned) {
+ netifd_log_message(L_WARNING, "Failed to assign subprefix "
+ "of size %hhu for %s\n", c->length, c->name);
+ free(c);
+ } else {
+ assigned_any = true;
+ }
+ }
+
+ list_for_each_entry(c, &prefix->assignments, head)
+ if ((iface = vlist_find(&interfaces, c->name, iface, node)))
+ interface_set_prefix_address(c, prefix, iface, true);
+
+ if (!assigned_any)
+ netifd_log_message(L_WARNING, "You have delegated IPv6-prefixes but haven't assigned them "
+ "to any interface. Did you forget to set option ip6assign on your lan-interfaces?");
+}