diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2021-06-03 16:14:04 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-06-03 16:14:04 +0200 |
| commit | f6def87a2e73e65fb6743cb5b6d0592b390628e5 (patch) | |
| tree | 40963f11d21645cc84f0db78f401e673a4f3a458 | |
| parent | 2f1d13d56aecc622366f717932929db5f0b8b35b (diff) | |
| download | busybox-w32-f6def87a2e73e65fb6743cb5b6d0592b390628e5.tar.gz busybox-w32-f6def87a2e73e65fb6743cb5b6d0592b390628e5.tar.bz2 busybox-w32-f6def87a2e73e65fb6743cb5b6d0592b390628e5.zip | |
udhcpc: code shrink, rename functions, no logic changes
function old new delta
d4_run_script - 739 +739
d4_recv_raw_packet - 484 +484
d4_run_script_deconfig - 12 +12
perform_release 207 200 -7
udhcpc_main 2598 2556 -42
udhcp_recv_raw_packet 484 - -484
udhcp_run_script 739 - -739
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 0/2 up/down: 1235/-1272) Total: -37 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | networking/udhcp/d6_dhcpc.c | 4 | ||||
| -rw-r--r-- | networking/udhcp/dhcpc.c | 30 |
2 files changed, 19 insertions, 15 deletions
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c index 276ceca3c..1a58f5f44 100644 --- a/networking/udhcp/d6_dhcpc.c +++ b/networking/udhcp/d6_dhcpc.c | |||
| @@ -441,7 +441,7 @@ static char **fill_envp(const uint8_t *option, const uint8_t *option_end) | |||
| 441 | return envp; | 441 | return envp; |
| 442 | } | 442 | } |
| 443 | 443 | ||
| 444 | /* Call a script with a par file and env vars */ | 444 | /* Call a script with env vars */ |
| 445 | static void d6_run_script(const uint8_t *option, const uint8_t *option_end, | 445 | static void d6_run_script(const uint8_t *option, const uint8_t *option_end, |
| 446 | const char *name) | 446 | const char *name) |
| 447 | { | 447 | { |
| @@ -464,7 +464,7 @@ static void d6_run_script(const uint8_t *option, const uint8_t *option_end, | |||
| 464 | free(envp); | 464 | free(envp); |
| 465 | } | 465 | } |
| 466 | 466 | ||
| 467 | /* Call a script with a par file and no env var */ | 467 | /* Call a script with no env var */ |
| 468 | static void d6_run_script_no_option(const char *name) | 468 | static void d6_run_script_no_option(const char *name) |
| 469 | { | 469 | { |
| 470 | d6_run_script(NULL, NULL, name); | 470 | d6_run_script(NULL, NULL, name); |
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index e0bddcdc9..e55b606cd 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c | |||
| @@ -566,8 +566,8 @@ static void fill_envp(struct dhcp_packet *packet) | |||
| 566 | } | 566 | } |
| 567 | } | 567 | } |
| 568 | 568 | ||
| 569 | /* Call a script with a par file and env vars */ | 569 | /* Call a script with env vars */ |
| 570 | static void udhcp_run_script(struct dhcp_packet *packet, const char *name) | 570 | static void d4_run_script(struct dhcp_packet *packet, const char *name) |
| 571 | { | 571 | { |
| 572 | char *argv[3]; | 572 | char *argv[3]; |
| 573 | 573 | ||
| @@ -585,6 +585,10 @@ static void udhcp_run_script(struct dhcp_packet *packet, const char *name) | |||
| 585 | client_data.envp = NULL; | 585 | client_data.envp = NULL; |
| 586 | } | 586 | } |
| 587 | 587 | ||
| 588 | static void d4_run_script_deconfig(void) | ||
| 589 | { | ||
| 590 | d4_run_script(NULL, "deconfig"); | ||
| 591 | } | ||
| 588 | 592 | ||
| 589 | /*** Sending/receiving packets ***/ | 593 | /*** Sending/receiving packets ***/ |
| 590 | 594 | ||
| @@ -882,7 +886,7 @@ int send_release(uint32_t server, uint32_t ciaddr) | |||
| 882 | 886 | ||
| 883 | /* Returns -1 on errors that are fatal for the socket, -2 for those that aren't */ | 887 | /* Returns -1 on errors that are fatal for the socket, -2 for those that aren't */ |
| 884 | /* NOINLINE: limit stack usage in caller */ | 888 | /* NOINLINE: limit stack usage in caller */ |
| 885 | static NOINLINE int udhcp_recv_raw_packet(struct dhcp_packet *dhcp_pkt, int fd) | 889 | static NOINLINE int d4_recv_raw_packet(struct dhcp_packet *dhcp_pkt, int fd) |
| 886 | { | 890 | { |
| 887 | int bytes; | 891 | int bytes; |
| 888 | struct ip_udp_dhcp_packet packet; | 892 | struct ip_udp_dhcp_packet packet; |
| @@ -1143,7 +1147,7 @@ static void perform_release(uint32_t server_addr, uint32_t requested_ip) | |||
| 1143 | * Users requested to be notified in all cases, even if not in one | 1147 | * Users requested to be notified in all cases, even if not in one |
| 1144 | * of the states above. | 1148 | * of the states above. |
| 1145 | */ | 1149 | */ |
| 1146 | udhcp_run_script(NULL, "deconfig"); | 1150 | d4_run_script_deconfig(); |
| 1147 | client_data.state = RELEASED; | 1151 | client_data.state = RELEASED; |
| 1148 | } | 1152 | } |
| 1149 | 1153 | ||
| @@ -1374,7 +1378,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1374 | srand(monotonic_us()); | 1378 | srand(monotonic_us()); |
| 1375 | 1379 | ||
| 1376 | client_data.state = INIT_SELECTING; | 1380 | client_data.state = INIT_SELECTING; |
| 1377 | udhcp_run_script(NULL, "deconfig"); | 1381 | d4_run_script_deconfig(); |
| 1378 | packet_num = 0; | 1382 | packet_num = 0; |
| 1379 | timeout = 0; | 1383 | timeout = 0; |
| 1380 | lease_remaining = 0; | 1384 | lease_remaining = 0; |
| @@ -1460,7 +1464,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1460 | } | 1464 | } |
| 1461 | leasefail: | 1465 | leasefail: |
| 1462 | change_listen_mode(LISTEN_NONE); | 1466 | change_listen_mode(LISTEN_NONE); |
| 1463 | udhcp_run_script(NULL, "leasefail"); | 1467 | d4_run_script(NULL, "leasefail"); |
| 1464 | #if BB_MMU /* -b is not supported on NOMMU */ | 1468 | #if BB_MMU /* -b is not supported on NOMMU */ |
| 1465 | if (opt & OPT_b) { /* background if no lease */ | 1469 | if (opt & OPT_b) { /* background if no lease */ |
| 1466 | bb_simple_info_msg("no lease, forking to background"); | 1470 | bb_simple_info_msg("no lease, forking to background"); |
| @@ -1555,7 +1559,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1555 | /* Timed out, enter init state */ | 1559 | /* Timed out, enter init state */ |
| 1556 | change_listen_mode(LISTEN_NONE); | 1560 | change_listen_mode(LISTEN_NONE); |
| 1557 | bb_simple_info_msg("lease lost, entering init state"); | 1561 | bb_simple_info_msg("lease lost, entering init state"); |
| 1558 | udhcp_run_script(NULL, "deconfig"); | 1562 | d4_run_script_deconfig(); |
| 1559 | client_data.state = INIT_SELECTING; | 1563 | client_data.state = INIT_SELECTING; |
| 1560 | client_data.first_secs = 0; /* make secs field count from 0 */ | 1564 | client_data.first_secs = 0; /* make secs field count from 0 */ |
| 1561 | timeout = 0; | 1565 | timeout = 0; |
| @@ -1595,7 +1599,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1595 | /* Two SIGUSR1 received, start things over */ | 1599 | /* Two SIGUSR1 received, start things over */ |
| 1596 | case RENEW_REQUESTED: | 1600 | case RENEW_REQUESTED: |
| 1597 | change_listen_mode(LISTEN_NONE); | 1601 | change_listen_mode(LISTEN_NONE); |
| 1598 | udhcp_run_script(NULL, "deconfig"); | 1602 | d4_run_script_deconfig(); |
| 1599 | 1603 | ||
| 1600 | /* Wake from SIGUSR2-induced deconfigured state */ | 1604 | /* Wake from SIGUSR2-induced deconfigured state */ |
| 1601 | default: | 1605 | default: |
| @@ -1627,7 +1631,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1627 | if (client_data.listen_mode == LISTEN_KERNEL) | 1631 | if (client_data.listen_mode == LISTEN_KERNEL) |
| 1628 | len = udhcp_recv_kernel_packet(&packet, client_data.sockfd); | 1632 | len = udhcp_recv_kernel_packet(&packet, client_data.sockfd); |
| 1629 | else | 1633 | else |
| 1630 | len = udhcp_recv_raw_packet(&packet, client_data.sockfd); | 1634 | len = d4_recv_raw_packet(&packet, client_data.sockfd); |
| 1631 | if (len == -1) { | 1635 | if (len == -1) { |
| 1632 | /* Error is severe, reopen socket */ | 1636 | /* Error is severe, reopen socket */ |
| 1633 | bb_error_msg("read error: "STRERROR_FMT", reopening socket" STRERROR_ERRNO); | 1637 | bb_error_msg("read error: "STRERROR_FMT", reopening socket" STRERROR_ERRNO); |
| @@ -1772,7 +1776,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1772 | send_decline(/*xid,*/ server_addr, packet.yiaddr); | 1776 | send_decline(/*xid,*/ server_addr, packet.yiaddr); |
| 1773 | 1777 | ||
| 1774 | if (client_data.state != REQUESTING) | 1778 | if (client_data.state != REQUESTING) |
| 1775 | udhcp_run_script(NULL, "deconfig"); | 1779 | d4_run_script_deconfig(); |
| 1776 | client_data.state = INIT_SELECTING; | 1780 | client_data.state = INIT_SELECTING; |
| 1777 | client_data.first_secs = 0; /* make secs field count from 0 */ | 1781 | client_data.first_secs = 0; /* make secs field count from 0 */ |
| 1778 | requested_ip = 0; | 1782 | requested_ip = 0; |
| @@ -1784,7 +1788,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1784 | #endif | 1788 | #endif |
| 1785 | /* enter bound state */ | 1789 | /* enter bound state */ |
| 1786 | start = monotonic_sec(); | 1790 | start = monotonic_sec(); |
| 1787 | udhcp_run_script(&packet, client_data.state == REQUESTING ? "bound" : "renew"); | 1791 | d4_run_script(&packet, client_data.state == REQUESTING ? "bound" : "renew"); |
| 1788 | lease_remaining -= (unsigned)monotonic_sec() - start; | 1792 | lease_remaining -= (unsigned)monotonic_sec() - start; |
| 1789 | if (lease_remaining < 0) | 1793 | if (lease_remaining < 0) |
| 1790 | lease_remaining = 0; | 1794 | lease_remaining = 0; |
| @@ -1831,9 +1835,9 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) | |||
| 1831 | /* return to init state */ | 1835 | /* return to init state */ |
| 1832 | change_listen_mode(LISTEN_NONE); | 1836 | change_listen_mode(LISTEN_NONE); |
| 1833 | bb_info_msg("received %s", "DHCP NAK"); | 1837 | bb_info_msg("received %s", "DHCP NAK"); |
| 1834 | udhcp_run_script(&packet, "nak"); | 1838 | d4_run_script(&packet, "nak"); |
| 1835 | if (client_data.state != REQUESTING) | 1839 | if (client_data.state != REQUESTING) |
| 1836 | udhcp_run_script(NULL, "deconfig"); | 1840 | d4_run_script_deconfig(); |
| 1837 | sleep(3); /* avoid excessive network traffic */ | 1841 | sleep(3); /* avoid excessive network traffic */ |
| 1838 | client_data.state = INIT_SELECTING; | 1842 | client_data.state = INIT_SELECTING; |
| 1839 | client_data.first_secs = 0; /* make secs field count from 0 */ | 1843 | client_data.first_secs = 0; /* make secs field count from 0 */ |
