summaryrefslogtreecommitdiff
path: root/aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch
diff options
context:
space:
mode:
Diffstat (limited to 'aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch')
-rw-r--r--aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch b/aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch
new file mode 100644
index 0000000..523768b
--- /dev/null
+++ b/aports/busybox/0012-udhcpc-Don-t-background-if-n-is-given.patch
@@ -0,0 +1,96 @@
+From 0cd01228c1e4173683637c4e582448656b26c05f Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 6 Jul 2017 11:40:14 +0200
+Subject: [PATCH] udhcpc: Don't background if -n is given
+
+we need add -b to our udhcpc options to prevent boot forever if there are no
+dhcp server. We also need a way for users to disable this behavior by making
+it possible to set -n option at runtime.
+
+Since busybox 1.31.0 -b takes precedence over -n [0]. However, since we
+enable -b instead of -n by default (through our busyboxconfig) this is
+not desired, this commit therefore also reverts the upstream patch
+introducing this change.
+
+See also: https://bugs.busybox.net/11691
+
+[0]: https://git.busybox.net/busybox/commit/?id=87e216294af9eec39c0c1d553555f8a98c15db38
+---
+ networking/udhcp/d6_dhcpc.c | 20 +++++++-------------
+ networking/udhcp/dhcpc.c | 20 +++++++-------------
+ 2 files changed, 14 insertions(+), 26 deletions(-)
+
+diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
+index 8d11a7539..0284a0fd8 100644
+--- a/networking/udhcp/d6_dhcpc.c
++++ b/networking/udhcp/d6_dhcpc.c
+@@ -1401,25 +1401,19 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
+ leasefail:
+ change_listen_mode(LISTEN_NONE);
+ d6_run_script_no_option("leasefail");
++ if (opt & OPT_n) { /* abort if no lease */
++ bb_simple_info_msg("no lease, failing");
++ retval = 1;
++ goto ret;
++ }
+ #if BB_MMU /* -b is not supported on NOMMU */
+ if (opt & OPT_b) { /* background if no lease */
+ bb_simple_info_msg("no lease, forking to background");
+ client_background();
+ /* do not background again! */
+- opt = ((opt & ~(OPT_b|OPT_n)) | OPT_f);
+- /* ^^^ also disables -n (-b takes priority over -n):
+- * ifup's default udhcpc options are -R -n,
+- * and users want to be able to add -b
+- * (in a config file) to make it background
+- * _and not exit_.
+- */
+- } else
+-#endif
+- if (opt & OPT_n) { /* abort if no lease */
+- bb_simple_info_msg("no lease, failing");
+- retval = 1;
+- goto ret;
++ opt = ((opt & ~OPT_b) | OPT_f);
+ }
++#endif
+ /* Wait before trying again */
+ timeout = tryagain_timeout;
+ packet_num = 0;
+diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
+index bbf95caca..8e034ac8a 100644
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1456,25 +1456,19 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+ leasefail:
+ change_listen_mode(LISTEN_NONE);
+ d4_run_script(NULL, "leasefail");
++ if (opt & OPT_n) { /* abort if no lease */
++ bb_simple_info_msg("no lease, failing");
++ retval = 1;
++ goto ret;
++ }
+ #if BB_MMU /* -b is not supported on NOMMU */
+ if (opt & OPT_b) { /* background if no lease */
+ bb_simple_info_msg("no lease, forking to background");
+ client_background();
+ /* do not background again! */
+- opt = ((opt & ~(OPT_b|OPT_n)) | OPT_f);
+- /* ^^^ also disables -n (-b takes priority over -n):
+- * ifup's default udhcpc options are -R -n,
+- * and users want to be able to add -b
+- * (in a config file) to make it background
+- * _and not exit_.
+- */
+- } else
+-#endif
+- if (opt & OPT_n) { /* abort if no lease */
+- bb_simple_info_msg("no lease, failing");
+- retval = 1;
+- goto ret;
++ opt = ((opt & ~OPT_b) | OPT_f);
+ }
++#endif
+ /* Wait before trying again */
+ timeout = tryagain_timeout;
+ packet_num = 0;