diff options
author | Andre Kalb <andre.kalb@sma.de> | 2022-06-30 10:27:27 +0200 |
---|---|---|
committer | Andre Kalb <andre.kalb@sma.de> | 2022-07-14 14:35:42 +0200 |
commit | 59c272316cf4977fd1332c7c9bc45b2dc2e11647 (patch) | |
tree | 495921c10cb702243d8f234a5ba53a8564c2b4ad /src/network/networkd-dhcp4.c | |
parent | 34b63c9e458b08e1894ea458687c8450817762b8 (diff) | |
download | systemd-59c272316cf4977fd1332c7c9bc45b2dc2e11647.tar.gz |
sd-ipv4ll/networkd: Try to select an IPv4 link-local start address
Diffstat (limited to 'src/network/networkd-dhcp4.c')
-rw-r--r-- | src/network/networkd-dhcp4.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 5770b48767..5c74dcef6f 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1071,6 +1071,12 @@ static int dhcp4_handler(sd_dhcp_client *client, int event, void *userdata) { if (link->ipv4ll) { log_link_debug(link, "DHCP client is stopped. Acquiring IPv4 link-local address"); + if (in4_addr_is_set(&link->network->ipv4ll_start_address)) { + r = sd_ipv4ll_set_address(link->ipv4ll, &link->network->ipv4ll_start_address); + if (r < 0) + return log_link_warning_errno(link, r, "Could not set IPv4 link-local start address: %m");; + } + r = sd_ipv4ll_start(link->ipv4ll); if (r < 0) return log_link_warning_errno(link, r, "Could not acquire IPv4 link-local address: %m"); @@ -1154,6 +1160,12 @@ static int dhcp4_handler(sd_dhcp_client *client, int event, void *userdata) { if (link->ipv4ll && !sd_ipv4ll_is_running(link->ipv4ll)) { log_link_debug(link, "Problems acquiring DHCP lease, acquiring IPv4 link-local address"); + if (in4_addr_is_set(&link->network->ipv4ll_start_address)) { + r = sd_ipv4ll_set_address(link->ipv4ll, &link->network->ipv4ll_start_address); + if (r < 0) + return log_link_warning_errno(link, r, "Could not set IPv4 link-local start address: %m");; + } + r = sd_ipv4ll_start(link->ipv4ll); if (r < 0) return log_link_warning_errno(link, r, "Could not acquire IPv4 link-local address: %m"); |