diff options
author | Denis Kenzior <denkenz@gmail.com> | 2022-09-26 22:42:35 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2022-09-26 22:42:35 -0500 |
commit | 39c7dd519f31d6142e3fdc2ebdf08458d04f4753 (patch) | |
tree | 09d13116ab9936ae3ac3ad624fb1d9cd739db98c | |
parent | d9b7c9bd17ba7639a8d1f02102180b92aa86c710 (diff) |
dhcp: Send LEASE_EXPIRED in case RENEW gets NAKed
In case the DHCP server NAKs our request, dhcp_client would always send
a NO_LEASE event. However, this could result in addresses not being
cleaned up properly. In case a RENEW or a REBIND request was NAKed,
send a LEASE_EXPIRED event instead.
-rw-r--r-- | ell/dhcp.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -820,6 +820,7 @@ static void dhcp_client_rx_message(const void *data, size_t len, void *userdata, const void *v; int r, e; struct in_addr ia; + enum l_dhcp_client_event event = L_DHCP_CLIENT_EVENT_LEASE_EXPIRED; CLIENT_DEBUG(""); @@ -874,6 +875,8 @@ static void dhcp_client_rx_message(const void *data, size_t len, void *userdata, dhcp_client_handle_offer(client, message, len); return; } + + event = L_DHCP_CLIENT_EVENT_NO_LEASE; /* Fall through */ case DHCP_STATE_RENEWING: case DHCP_STATE_REBINDING: @@ -882,8 +885,7 @@ static void dhcp_client_rx_message(const void *data, size_t len, void *userdata, CLIENT_INFO("Received NAK, Stopping..."); l_dhcp_client_stop(client); - dhcp_client_event_notify(client, - L_DHCP_CLIENT_EVENT_NO_LEASE); + dhcp_client_event_notify(client, event); return; } |