if (!link->static_addresses_configured)
return (void) log_link_debug(link, "%s(): static addresses are not configured.", __func__);
- SET_FOREACH(a, link->addresses)
- if (!address_is_ready(a))
- return (void) log_link_debug(link, "%s(): address %s is not ready.", __func__,
- IN_ADDR_PREFIX_TO_STRING(a->family, &a->in_addr, a->prefixlen));
-
if (!link->static_address_labels_configured)
return (void) log_link_debug(link, "%s(): static address labels are not configured.", __func__);
!in6_addr_is_set(&link->ipv6ll_address))
return (void) log_link_debug(link, "%s(): IPv6LL is not configured yet.", __func__);
+ /* All static addresses must be ready. */
+ bool has_static_address = false;
+ SET_FOREACH(a, link->addresses) {
+ if (a->source != NETWORK_CONFIG_SOURCE_STATIC)
+ continue;
+ if (!address_is_ready(a))
+ return (void) log_link_debug(link, "%s(): static address %s is not ready.", __func__,
+ IN_ADDR_PREFIX_TO_STRING(a->family, &a->in_addr, a->prefixlen));
+ has_static_address = true;
+ }
+
+ /* If at least one static address is requested, do not request that dynamic addressing protocols are finished. */
+ if (has_static_address)
+ goto ready;
+
/* If no dynamic addressing protocol enabled, assume the interface is ready.
* Note, ignore NDisc when ConfigureWithoutCarrier= is enabled, as IPv6AcceptRA= is enabled by default. */
if (!link_ipv4ll_enabled(link) && !link_dhcp4_enabled(link) &&
'--dhcp-alternate-port=67,5555',
ipv4_range='192.168.5.110,192.168.5.119')
self.wait_online(['veth99:routable', 'veth-peer:routable'])
+ self.wait_address('veth99', r'inet 192.168.5.11[0-9]*/24', ipv='-4')
print('## ip address show dev veth99 scope global')
output = check_output('ip address show dev veth99 scope global')