}
(void) in6_addr_prefix_to_string(&assigned_prefix, 64, &buf);
- if (link == dhcp6_link) {
- r = dhcp6_pd_request_address(link, &assigned_prefix, lifetime_preferred, lifetime_valid);
- if (r < 0)
- return log_link_warning_errno(link, r, "Failed to assign addresses in prefix %s: %m", strna(buf));
+ r = dhcp6_pd_assign_prefix(link, &assigned_prefix, lifetime_preferred, lifetime_valid);
+ if (r < 0) {
+ log_link_warning_errno(link, r, "Failed to assign/update prefix %s: %m", strna(buf));
+ if (link == dhcp6_link)
+ return r;
- log_link_debug(link, "Assigned addresses in prefix %s: %m", strna(buf));
- } else {
- r = dhcp6_pd_assign_prefix(link, &assigned_prefix, lifetime_preferred, lifetime_valid);
- if (r < 0) {
- log_link_error_errno(link, r, "Failed to assign/update prefix %s: %m", strna(buf));
- link_enter_failed(link);
- } else
- log_link_debug(link, "Assigned prefix %s", strna(buf));
+ link_enter_failed(link);
+ continue;
}
+
+ log_link_debug(link, "Assigned prefix %s", strna(buf));
}
return 0;