diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 5c87a6c9c7..57a9ceb229 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1158,6 +1158,9 @@ static bool address_is_ready_to_configure(Link *link, const Address *address) { if (!link_is_ready_to_configure(link, false)) return false; + if (address_is_removing(address)) + return false; + if (!ipv4acd_bound(address)) return false; diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h index 9c360f5526..8ffe4b5b5b 100644 --- a/src/network/networkd-util.h +++ b/src/network/networkd-util.h @@ -125,6 +125,10 @@ int network_config_state_to_string_alloc(NetworkConfigState s, char **ret); 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 | \