udhcpc: run "deconfig" script in manual renew state too. closes 9061

The bug was seen when the following is done:

    # killall 1 udhpc; killall 2 udhpc

Performing a DHCP renew
state: 2 -> 5
Sending renew...
Entering released state
state: 5 -> 6  <<<<<<<<<<<<<< not calling script!!!!

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2016-07-03 20:26:44 +02:00
parent aabb0a93e9
commit 44399e00ff
2 changed files with 10 additions and 2 deletions

View File

@ -793,7 +793,11 @@ static void perform_renew(void)
static void perform_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cur_ipv6) static void perform_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cur_ipv6)
{ {
/* send release packet */ /* send release packet */
if (state == BOUND || state == RENEWING || state == REBINDING) { if (state == BOUND
|| state == RENEWING
|| state == REBINDING
|| state == RENEW_REQUESTED
) {
bb_error_msg("unicasting a release"); bb_error_msg("unicasting a release");
send_d6_release(server_ipv6, our_cur_ipv6); /* unicast */ send_d6_release(server_ipv6, our_cur_ipv6); /* unicast */
d6_run_script(NULL, "deconfig"); d6_run_script(NULL, "deconfig");

View File

@ -1118,7 +1118,11 @@ static void perform_release(uint32_t server_addr, uint32_t requested_ip)
struct in_addr temp_addr; struct in_addr temp_addr;
/* send release packet */ /* send release packet */
if (state == BOUND || state == RENEWING || state == REBINDING) { if (state == BOUND
|| state == RENEWING
|| state == REBINDING
|| state == RENEW_REQUESTED
) {
temp_addr.s_addr = server_addr; temp_addr.s_addr = server_addr;
strcpy(buffer, inet_ntoa(temp_addr)); strcpy(buffer, inet_ntoa(temp_addr));
temp_addr.s_addr = requested_ip; temp_addr.s_addr = requested_ip;