networkd: fix dhcp4 link without routes not being considered ready (#8728)
authorAnssi Hannula <anssi.hannula@iki.fi>
Tue, 17 Apr 2018 15:12:00 +0000 (18:12 +0300)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 17 Apr 2018 15:12:00 +0000 (17:12 +0200)
commit223932c786ada7f758a7b7878a6ad2dae0d1e5fb
tree905b0e88d14ea46df5e575ececbb8951ffb2b6fe
parentb1c626f67fac9f29166812c12204bbb0c2d73047
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).
src/network/networkd-dhcp4.c