udhcpc: Unconditionally call deconfig script, not only if lease is active

The udhcpc script may be used to setup fallback configuration (E.G. IPv4LL,
fixed IP address, ..) that also needs to be cleaned up on release (E.G.
when SIGUSR2 is called or on shutdown with -R), so unconditionally call
deconfig.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Peter Korsgaard 2016-08-26 18:46:34 +02:00 committed by Denys Vlasenko
parent 0dddbc1a59
commit b6355e2bb5
2 changed files with 16 additions and 6 deletions

View File

@ -800,10 +800,15 @@ static void perform_d6_release(struct in6_addr *server_ipv6, struct in6_addr *ou
) { ) {
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");
} }
bb_error_msg("entering released state"); bb_error_msg("entering released state");
/*
* We can be here on: SIGUSR2,
* or on exit (SIGTERM) and -R "release on quit" is specified.
* Users requested to be notified in all cases, even if not in one
* of the states above.
*/
d6_run_script(NULL, "deconfig");
change_listen_mode(LISTEN_NONE); change_listen_mode(LISTEN_NONE);
state = RELEASED; state = RELEASED;
} }

View File

@ -1129,9 +1129,15 @@ static void perform_release(uint32_t server_addr, uint32_t requested_ip)
bb_error_msg("unicasting a release of %s to %s", bb_error_msg("unicasting a release of %s to %s",
inet_ntoa(temp_addr), buffer); inet_ntoa(temp_addr), buffer);
send_release(server_addr, requested_ip); /* unicast */ send_release(server_addr, requested_ip); /* unicast */
udhcp_run_script(NULL, "deconfig");
} }
bb_error_msg("entering released state"); bb_error_msg("entering released state");
/*
* We can be here on: SIGUSR2,
* or on exit (SIGTERM) and -R "release on quit" is specified.
* Users requested to be notified in all cases, even if not in one
* of the states above.
*/
udhcp_run_script(NULL, "deconfig");
change_listen_mode(LISTEN_NONE); change_listen_mode(LISTEN_NONE);
state = RELEASED; state = RELEASED;
@ -1813,9 +1819,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
temp = udhcp_get_option(&packet, DHCP_SERVER_ID); temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
if (!temp) { if (!temp) {
non_matching_svid: non_matching_svid:
log1("%s with wrong server ID, ignoring packet", log1("received DHCP NAK with wrong"
"Received DHCP NAK" " server ID, ignoring packet");
);
continue; continue;
} }
move_from_unaligned32(svid, temp); move_from_unaligned32(svid, temp);