You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
From fd14e0686820eaff61c2583d98aefc391a8164fe Mon Sep 17 00:00:00 2001 |
|
From: Anssi Hannula <anssi.hannula@iki.fi> |
|
Date: Tue, 17 Apr 2018 18:12:00 +0300 |
|
Subject: [PATCH] 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). |
|
|
|
(cherry picked from commit 223932c786ada7f758a7b7878a6ad2dae0d1e5fb) |
|
|
|
Related: #1663365 |
|
|
|
[jsynacek: Note that link_client_handler() was used instead of |
|
link_check_ready(). The former is an older version of the latter.] |
|
--- |
|
src/network/networkd-dhcp4.c | 5 +++++ |
|
1 file changed, 5 insertions(+) |
|
|
|
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c |
|
index 354c760ba9..295e44fdd7 100644 |
|
--- a/src/network/networkd-dhcp4.c |
|
+++ b/src/network/networkd-dhcp4.c |
|
@@ -305,6 +305,11 @@ static int dhcp4_address_handler(sd_rtnl *rtnl, sd_rtnl_message *m, |
|
|
|
link_set_dhcp_routes(link); |
|
|
|
+ if (link->dhcp4_messages == 0) { |
|
+ link->dhcp4_configured = true; |
|
+ link_client_handler(link); |
|
+ } |
|
+ |
|
return 1; |
|
} |
|
|
|
|