From: Anssi Hannula Date: Tue, 17 Apr 2018 15:12:00 +0000 (+0300) Subject: networkd: fix dhcp4 link without routes not being considered ready (#8728) X-Git-Tag: v239~404 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=223932c786ada7f758a7b7878a6ad2dae0d1e5fb;p=systemd%2F.git networkd: fix dhcp4 link without routes not being considered ready (#8728) The dhcp4 code sets link->dhcp4_configured when dhcp4_route_handler() has processed the last message. However, in case UseRoutes=no has been set in the [DHCP] section, or in case the DHCP server simply sends no routes, link_set_dhcp_routes() will not send any netlink messages and dhcp4_route_handler() will therefore never be called. This causes the link to never reach LINK_STATE_CONFIGURED, and e.g. systemd-networkd-wait-online will not consider the link as ready. Fix that by setting link->dhcp4_configured = true and calling link_check_ready() in dhcp4_address_handler() in case link_set_dhcp_routes() sent no netlink messages (dhcp4_messages is zero). --- diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index acd0e68a61..6bab7647d6 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -319,6 +319,11 @@ static int dhcp4_address_handler(sd_netlink *rtnl, sd_netlink_message *m, link_set_dhcp_routes(link); + if (link->dhcp4_messages == 0) { + link->dhcp4_configured = true; + link_check_ready(link); + } + return 1; }