diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-09-22 07:44:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-22 07:44:23 +0200 |
commit | 82d1264048a3768fb8238387810f78c5d3912058 (patch) | |
tree | 40849433e32bc8d48d7335b090bd4abc983a7128 /src/libsystemd-network | |
parent | fc9d85b9bcef6c9329abeb085f0ba500b8eb1e28 (diff) | |
parent | 308e7dfdce67c5ac3a066f9aff1f7fc4f9f00060 (diff) | |
download | systemd-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.c | 18 |
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; |