summaryrefslogtreecommitdiff
path: root/src/libsystemd-network
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2019-09-22 07:44:23 +0200
committerGitHub <noreply@github.com>2019-09-22 07:44:23 +0200
commit82d1264048a3768fb8238387810f78c5d3912058 (patch)
tree40849433e32bc8d48d7335b090bd4abc983a7128 /src/libsystemd-network
parentfc9d85b9bcef6c9329abeb085f0ba500b8eb1e28 (diff)
parent308e7dfdce67c5ac3a066f9aff1f7fc4f9f00060 (diff)
downloadsystemd-82d1264048a3768fb8238387810f78c5d3912058.tar.gz
Merge pull request #11883 from yuwata/network-dhcp-renew
network: dhcp renew
Diffstat (limited to 'src/libsystemd-network')
-rw-r--r--src/libsystemd-network/sd-dhcp-client.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
index 85238c21d1..cadacc24d4 100644
--- a/src/libsystemd-network/sd-dhcp-client.c
+++ b/src/libsystemd-network/sd-dhcp-client.c
@@ -995,15 +995,14 @@ static int client_send_request(sd_dhcp_client *client) {
if (r < 0)
return r;
- if (client->state == DHCP_STATE_RENEWING) {
+ if (client->state == DHCP_STATE_RENEWING)
r = dhcp_network_send_udp_socket(client->fd,
client->lease->server_address,
DHCP_PORT_SERVER,
&request->dhcp,
sizeof(DHCPMessage) + optoffset);
- } else {
+ else
r = dhcp_client_send_raw(client, request, sizeof(DHCPPacket) + optoffset);
- }
if (r < 0)
return r;
@@ -1211,7 +1210,7 @@ static int client_initialize_time_events(sd_dhcp_client *client) {
assert(client);
assert(client->event);
- if (client->start_delay) {
+ if (client->start_delay > 0) {
assert_se(sd_event_now(client->event, clock_boottime_or_monotonic(), &usec) >= 0);
usec += client->start_delay;
}
@@ -1882,6 +1881,17 @@ static int client_receive_message_raw(
return client_handle_message(client, &packet->dhcp, len);
}
+int sd_dhcp_client_send_renew(sd_dhcp_client *client) {
+ assert_return(client, -EINVAL);
+ assert_return(client->fd >= 0, -EINVAL);
+
+ client->start_delay = 0;
+ client->attempt = 1;
+ client->state = DHCP_STATE_RENEWING;
+
+ return client_initialize_time_events(client);
+}
+
int sd_dhcp_client_start(sd_dhcp_client *client) {
int r;