From ceaec54a3c8366e81863a7d0d9c1f1d9f09960e1 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 7 Jul 2020 09:43:10 +0900 Subject: [PATCH 1/2] dhcp4: do not renew address if client is not running yet --- src/libsystemd-network/sd-dhcp-client.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index d5f25d5a19..69589c301b 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -2012,6 +2012,9 @@ int sd_dhcp_client_send_renew(sd_dhcp_client *client) { assert_return(client, -EINVAL); assert_return(client->fd >= 0, -EINVAL); + if (IN_SET(client->state, DHCP_STATE_INIT, DHCP_STATE_INIT_REBOOT, DHCP_STATE_STOPPED)) + return 0; + client->start_delay = 0; client->attempt = 1; client->state = DHCP_STATE_RENEWING; From 921693a0f386b01fb755d044f7345b1d00bf4a05 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 7 Jul 2020 10:04:42 +0900 Subject: [PATCH 2/2] dhcp4: do not try to renew address when client has no lease --- src/libsystemd-network/sd-dhcp-client.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 69589c301b..ef24b9c4de 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -1441,7 +1441,10 @@ static int client_timeout_t1(sd_event_source *s, uint64_t usec, void *userdata) sd_dhcp_client *client = userdata; DHCP_CLIENT_DONT_DESTROY(client); - client->state = DHCP_STATE_RENEWING; + if (client->lease) + client->state = DHCP_STATE_RENEWING; + else if (client->state != DHCP_STATE_INIT) + client->state = DHCP_STATE_INIT_REBOOT; client->attempt = 0; return client_initialize_time_events(client);