summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-06-03 16:22:35 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2021-06-03 16:22:35 +0200
commitecaf8e8d082b48f186be0a096764f0442b546626 (patch)
treeb7dfec9079cea2816f8a9002b0efe48629483919
parentf6def87a2e73e65fb6743cb5b6d0592b390628e5 (diff)
udhcpc[6]: on SIGUSR1, do not go from rebind to renew state
function old new delta udhcpc6_main 2628 2636 +8 udhcpc_main 2556 2563 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 15/0) Total: 15 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/udhcp/d6_dhcpc.c10
-rw-r--r--networking/udhcp/dhcpc.c10
2 files changed, 12 insertions, 8 deletions
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index 1a58f5f44..7f288f891 100644
--- a/networking/udhcp/d6_dhcpc.c
+++ b/networking/udhcp/d6_dhcpc.c
@@ -1517,6 +1517,9 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
if (client_data.state <= REQUESTING)
/* Initial negotiations in progress, do not disturb */
break;
+ if (client_data.state == REBINDING)
+ /* Do not go back from rebind to renew state */
+ break;
if (lease_remaining > 30) /* if renew fails, do not go back to BOUND */
lease_remaining = 30;
@@ -1524,22 +1527,21 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
packet_num = 0;
switch (client_data.state) {
- /* Try to renew/rebind */
case BOUND:
case RENEWING:
- case REBINDING:
+ /* Try to renew/rebind */
change_listen_mode(LISTEN_KERNEL);
client_data.state = RENEW_REQUESTED;
goto got_SIGUSR1;
- /* Two SIGUSR1 received, start things over */
case RENEW_REQUESTED:
+ /* Two SIGUSR1 received, start things over */
change_listen_mode(LISTEN_NONE);
d6_run_script_no_option("deconfig");
- /* Wake from SIGUSR2-induced deconfigured state */
default:
/* case RELEASED: */
+ /* Wake from SIGUSR2-induced deconfigured state */
change_listen_mode(LISTEN_NONE);
}
client_data.state = INIT_SELECTING;
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index e55b606cd..f388003a3 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -1582,6 +1582,9 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
if (client_data.state <= REQUESTING)
/* Initial negotiations in progress, do not disturb */
break;
+ if (client_data.state == REBINDING)
+ /* Do not go back from rebind to renew state */
+ break;
if (lease_remaining > 30) /* if renew fails, do not go back to BOUND */
lease_remaining = 30;
@@ -1589,21 +1592,20 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
packet_num = 0;
switch (client_data.state) {
- /* Try to renew/rebind */
case BOUND:
case RENEWING:
- case REBINDING:
+ /* Try to renew/rebind */
client_data.state = RENEW_REQUESTED;
goto got_SIGUSR1;
- /* Two SIGUSR1 received, start things over */
case RENEW_REQUESTED:
+ /* Two SIGUSR1 received, start things over */
change_listen_mode(LISTEN_NONE);
d4_run_script_deconfig();
- /* Wake from SIGUSR2-induced deconfigured state */
default:
/* case RELEASED: */
+ /* Wake from SIGUSR2-induced deconfigured state */
change_listen_mode(LISTEN_NONE);
}
client_data.state = INIT_SELECTING;