From: Susant Sahani <145210+ssahani@users.noreply.github.com> Date: Mon, 20 Nov 2017 18:23:34 +0000 (+0530) Subject: networkd: configure link even if no routes have been received by dhcp (#6886) X-Git-Tag: v236~166 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=444b01704648c2f1292531f17c3b8c95bf1a9896;p=thirdparty%2Fsystemd.git networkd: configure link even if no routes have been received by dhcp (#6886) Fixes #3752 networkctl IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 eth0 ether no-carrier configuring 5 host ether routable configured <========== 5 links listed. --- diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 168dc6ead20..bfce6418583 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -95,8 +95,10 @@ static int link_set_dhcp_routes(Link *link) { return log_link_warning_errno(link, r, "DHCP error: could not get address: %m"); r = sd_dhcp_lease_get_router(link->dhcp_lease, &gateway); - if (r < 0 && r != -ENODATA) - return log_link_warning_errno(link, r, "DHCP error: could not get gateway: %m"); + if (r == -ENODATA) + log_link_info_errno(link, r, "DHCP: No routes received from DHCP server: %m"); + else if (r < 0) + log_link_warning_errno(link, r, "DHCP error: could not get gateway: %m"); if (r >= 0) { _cleanup_route_free_ Route *route = NULL; @@ -148,9 +150,9 @@ static int link_set_dhcp_routes(Link *link) { n = sd_dhcp_lease_get_routes(link->dhcp_lease, &static_routes); if (n == -ENODATA) - return 0; - if (n < 0) - return log_link_warning_errno(link, n, "DHCP error: could not get routes: %m"); + log_link_info_errno(link, n, "DHCP: No routes received from DHCP server: %m"); + else if (n < 0) + log_link_warning_errno(link, n, "DHCP error: could not get routes: %m"); for (i = 0; i < n; i++) { _cleanup_route_free_ Route *route = NULL; @@ -175,6 +177,11 @@ static int link_set_dhcp_routes(Link *link) { link->dhcp4_messages++; } + if (link->dhcp4_messages == 0) { + link->dhcp4_configured = true; + link_check_ready(link); + } + return 0; }