When we request an address that already exists and is under removing,
we need to wait for the address being removed. Otherwise, configuration
of a route whose preferred source is the address will fail.
Fixes #28009.
Replaces #28088.
if (!link_is_ready_to_configure(link, false))
return false;
+ if (address_is_removing(address))
+ return false;
+
if (!ipv4acd_bound(address))
return false;
NETWORK_CONFIG_STATE_REMOVING, \
NETWORK_CONFIG_STATE_REMOVING); \
} \
+ static inline bool name##_is_removing(const type *t) { \
+ assert(t); \
+ return FLAGS_SET(t->state, NETWORK_CONFIG_STATE_REMOVING); \
+ } \
static inline void name##_enter_removed(type *t) { \
name##_update_state(t, \
NETWORK_CONFIG_STATE_CONFIGURED | \