[git commit] udhcpc[6]: fold perform_renew() into its only caller

Denys Vlasenko vda.linux at googlemail.com
Sat May 1 11:48:50 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=e6007c4911c3ea26925f9473b9f156a692585f30
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
udhcpc_main                                         2550    2541      -9
udhcpc6_main                                        2576    2567      -9
change_listen_mode                                   321     299     -22
.rodata                                           103294  103225     -69
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-109)           Total: -109 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 networking/udhcp/d6_dhcpc.c | 44 +++++++++++++++++-------------------------
 networking/udhcp/dhcpc.c    | 47 ++++++++++++++++++---------------------------
 2 files changed, 37 insertions(+), 54 deletions(-)

diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index 592f5b127..0a5cae310 100644
--- a/networking/udhcp/d6_dhcpc.c
+++ b/networking/udhcp/d6_dhcpc.c
@@ -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;
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index a818c1875..6666cbce6 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -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;


More information about the busybox-cvs mailing list