udhcpc[6]: fold perform_renew() into its only caller
No binary (build failed)
—
(log yok)
| @@ -1040,7 +1040,6 @@ static int d6_raw_socket(int ifindex) | |
| log2("opening raw socket on ifindex %d", ifindex); | |
| fd = xsocket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IPV6)); | |
| - | log3("got raw socket fd %d", fd); |
| memset(&sock, 0, sizeof(sock)); /* let's be deterministic */ | |
| sock.sll_family = AF_PACKET; | |
| @@ -1087,29 +1086,6 @@ static void change_listen_mode(int new_mode) | |
| /* else LISTEN_NONE: client_data.sockfd stays closed */ | |
| } | |
| - | /* Called only on SIGUSR1 */ |
| - | static void perform_renew(void) |
| - | { |
| - | bb_simple_info_msg("performing DHCP renew"); |
| - | switch (client_data.state) { |
| - | case BOUND: |
| - | change_listen_mode(LISTEN_KERNEL); |
| - | case RENEWING: |
| - | case REBINDING: |
| - | client_data.state = RENEW_REQUESTED; |
| - | break; |
| - | case RENEW_REQUESTED: /* impatient are we? fine, square 1 */ |
| - | d6_run_script_no_option("deconfig"); |
| - | case REQUESTING: |
| - | case RELEASED: |
| - | change_listen_mode(LISTEN_RAW); |
| - | client_data.state = INIT_SELECTING; |
| - | break; |
| - | case INIT_SELECTING: |
| - | break; |
| - | } |
| - | } |
| - | |
| static void perform_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cur_ipv6) | |
| { | |
| /* send release packet */ | |
| @@ -1535,10 +1511,26 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) | |
| switch (udhcp_sp_read()) { | |
| case SIGUSR1: | |
| client_data.first_secs = 0; /* make secs field count from 0 */ | |
| - | perform_renew(); |
| - | if (client_data.state == RENEW_REQUESTED) |
| + | bb_simple_info_msg("performing DHCP renew"); |
| + | |
| + | switch (client_data.state) { |
| + | /* Try to renew/rebind */ |
| + | case BOUND: |
| + | case RENEWING: |
| + | case REBINDING: |
| + | change_listen_mode(LISTEN_KERNEL); |
| + | client_data.state = RENEW_REQUESTED; |
| goto case_RENEW_REQUESTED; | |
| + | |
| /* Start things over */ | |
| + | case RENEW_REQUESTED: /* two or more SIGUSR1 received */ |
| + | d6_run_script_no_option("deconfig"); |
| + | /* case REQUESTING: break; */ |
| + | /* case RELEASED: break; */ |
| + | /* case INIT_SELECTING: break; */ |
| + | } |
| + | change_listen_mode(LISTEN_RAW); |
| + | client_data.state = INIT_SELECTING; |
| packet_num = 0; | |
| /* Kill any timeouts, user wants this to hurry along */ | |
| timeout = 0; | |
| @@ -1027,7 +1027,6 @@ static int udhcp_raw_socket(int ifindex) | |
| * SOCK_DGRAM: remove link-layer headers on input (SOCK_RAW keeps them) | |
| * ETH_P_IP: want to receive only packets with IPv4 eth type | |
| */ | |
| - | log3("got raw socket fd %d", fd); |
| memset(&sock, 0, sizeof(sock)); /* let's be deterministic */ | |
| sock.sll_family = AF_PACKET; | |
| @@ -1122,29 +1121,6 @@ static void change_listen_mode(int new_mode) | |
| /* else LISTEN_NONE: client_data.sockfd stays closed */ | |
| } | |
| - | /* Called only on SIGUSR1 */ |
| - | static void perform_renew(void) |
| - | { |
| - | bb_simple_info_msg("performing DHCP renew"); |
| - | switch (client_data.state) { |
| - | case BOUND: |
| - | change_listen_mode(LISTEN_KERNEL); |
| - | case RENEWING: |
| - | case REBINDING: |
| - | client_data.state = RENEW_REQUESTED; |
| - | break; |
| - | case RENEW_REQUESTED: /* impatient are we? fine, square 1 */ |
| - | udhcp_run_script(NULL, "deconfig"); |
| - | case REQUESTING: |
| - | case RELEASED: |
| - | change_listen_mode(LISTEN_RAW); |
| - | client_data.state = INIT_SELECTING; |
| - | break; |
| - | case INIT_SELECTING: |
| - | break; |
| - | } |
| - | } |
| - | |
| static void perform_release(uint32_t server_addr, uint32_t requested_ip) | |
| { | |
| char buffer[sizeof("255.255.255.255")]; | |
| @@ -1247,7 +1223,6 @@ static void client_background(void) | |
| //usage: "\n USR1 Renew lease" | |
| //usage: "\n USR2 Release lease" | |
| - | |
| int udhcpc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |
| int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |
| { | |
| @@ -1597,10 +1572,26 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |
| switch (udhcp_sp_read()) { | |
| case SIGUSR1: | |
| client_data.first_secs = 0; /* make secs field count from 0 */ | |
| - | perform_renew(); |
| - | if (client_data.state == RENEW_REQUESTED) |
| + | bb_simple_info_msg("performing DHCP renew"); |
| + | |
| + | switch (client_data.state) { |
| + | /* Try to renew/rebind */ |
| + | case BOUND: |
| + | case RENEWING: |
| + | case REBINDING: |
| + | change_listen_mode(LISTEN_KERNEL); |
| + | client_data.state = RENEW_REQUESTED; |
| goto case_RENEW_REQUESTED; | |
| + | |
| /* Start things over */ | |
| + | case RENEW_REQUESTED: /* two or more SIGUSR1 received */ |
| + | udhcp_run_script(NULL, "deconfig"); |
| + | /* case REQUESTING: break; */ |
| + | /* case RELEASED: break; */ |
| + | /* case INIT_SELECTING: break; */ |
| + | } |
| + | change_listen_mode(LISTEN_RAW); |
| + | client_data.state = INIT_SELECTING; |
| packet_num = 0; | |
| /* Kill any timeouts, user wants this to hurry along */ | |
| timeout = 0; | |
| @@ -1737,7 +1728,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |
| /* paranoia: must not be too small and not prone to overflows */ | |
| /* NB: 60s leases _are_ used in real world | |
| * (temporary IPs while ISP modem initializes) | |
| - | * do not break this case by bumplit it up. |
| + | * do not break this case by bumping it up. |
| */ | |
| if (lease_remaining < 0) /* signed overflow? */ | |
| lease_remaining = INT_MAX; | |