diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 8a987e84a3..1bb1df32e9 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -103,6 +103,11 @@ static int link_set_dhcp_routes(Link *link) { if (!link->network->dhcp_use_routes) return 0; + if (!link_has_carrier(link) && !link->network->configure_without_carrier) + /* During configuring addresses, the link lost its carrier. As networkd is dropping + * the addresses now, let's not configure the routes either. */ + return 0; + table = link_get_dhcp_route_table(link); r = sd_dhcp_lease_get_address(link->dhcp_lease, &address); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 66fbeac79d..46830290c6 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -934,6 +934,11 @@ int link_request_set_routes(Link *link) { link->static_routes_configured = false; + if (!link_has_carrier(link) && !link->network->configure_without_carrier) + /* During configuring addresses, the link lost its carrier. As networkd is dropping + * the addresses now, let's not configure the routes either. */ + return 0; + r = link_request_set_routing_policy_rule(link); if (r < 0) return r;