aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch')
-rw-r--r--meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch117
1 files changed, 117 insertions, 0 deletions
diff --git a/meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch b/meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch
new file mode 100644
index 0000000000..405d4823af
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-1.18.4/busybox-udhcpc-no_deconfig.patch
@@ -0,0 +1,117 @@
+Upstream-Status: Pending
+
+Add a new option -D to the udhcpc client that allows for
+dhcp renewal to occur without having to down the interface
+in the process.
+
+Signed-off-by: Greg Moffatt <greg.moffatt@windriver.com>
+
+Updated to latest Busybox 1.17.3
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Updated to Busybox 1.18.4
+option spec is changed
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
+diff -ur busybox-1.17.3.orig/networking/udhcp/dhcpc.c busybox-1.17.3/networking/udhcp/dhcpc.c
+--- busybox-1.17.3.orig/networking/udhcp/dhcpc.c
++++ busybox-1.17.3/networking/udhcp/dhcpc.c
+@@ -35,6 +35,9 @@
+ #endif
+ #include <linux/filter.h>
+
++/* option whether to down the interface when reconfiguring */
++static int allow_deconfig = 1;
++
+ /* struct client_config_t client_config is in bb_common_bufsiz1 */
+
+
+@@ -709,7 +712,8 @@
+ state = RENEW_REQUESTED;
+ break;
+ case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ case REQUESTING:
+ case RELEASED:
+ change_listen_mode(LISTEN_RAW);
+@@ -733,7 +737,8 @@
+ bb_info_msg("Unicasting a release of %s to %s",
+ inet_ntoa(temp_addr), buffer);
+ send_release(server_addr, requested_ip); /* unicast */
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ }
+ bb_info_msg("Entering released state");
+
+@@ -836,6 +841,7 @@
+ OPT_o = 1 << 17,
+ OPT_x = 1 << 18,
+ OPT_f = 1 << 19,
++ OPT_D = 1 << 20,
+ /* The rest has variable bit positions, need to be clever */
+ OPTBIT_f = 20,
+ USE_FOR_MMU( OPTBIT_b,)
+@@ -861,7 +867,7 @@
+ #endif
+ ;
+ IF_LONG_OPTS(applet_long_options = udhcpc_longopts;)
+- opt = getopt32(argv, "CV:H:h:F:i:np:qRr:s:T:t:SA:O:ox:f"
++ opt = getopt32(argv, "CV:H:h:F:i:np:qRr:s:T:t:SA:O:ox:fD"
+ USE_FOR_MMU("b")
+ IF_FEATURE_UDHCPC_ARPING("a")
+ IF_FEATURE_UDHCP_PORT("P:")
+@@ -950,6 +956,9 @@
+ logmode |= LOGMODE_SYSLOG;
+ }
+
++ if (opt & OPT_D)
++ allow_deconfig = 0;
++
+ /* Make sure fd 0,1,2 are open */
+ bb_sanitize_stdio();
+ /* Equivalent of doing a fflush after every \n */
+@@ -964,7 +973,8 @@
+ srand(monotonic_us());
+
+ state = INIT_SELECTING;
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ packet_num = 0;
+ timeout = 0;
+@@ -1100,7 +1110,8 @@
+ }
+ /* Timed out, enter init state */
+ bb_info_msg("Lease lost, entering init state");
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ state = INIT_SELECTING;
+ /*timeout = 0; - already is */
+ packet_num = 0;
+@@ -1246,7 +1257,8 @@
+ send_decline(xid, server_addr, packet.yiaddr);
+
+ if (state != REQUESTING)
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ state = INIT_SELECTING;
+ requested_ip = 0;
+@@ -1292,7 +1304,8 @@
+ bb_info_msg("Received DHCP NAK");
+ udhcp_run_script(&packet, "nak");
+ if (state != REQUESTING)
+- udhcp_run_script(NULL, "deconfig");
++ if (allow_deconfig)
++ udhcp_run_script(NULL, "deconfig");
+ change_listen_mode(LISTEN_RAW);
+ sleep(3); /* avoid excessive network traffic */
+ state = INIT_SELECTING;