ifupdown / udhcpc: override UDHCPC_CMD_OPTIONS, -n/-b mutually exclusive

Michael Rendell michael at mytelescope.com
Mon Apr 15 13:48:17 UTC 2013


Hello,

  Had a need to remove the default "-n" flag that is passed to udhcpc
by ifup.  The patch below changes networking/udhcp/dhcpc.c to make
the -n and -b command line options mutually exclusive (two ways of
doing this, one via opt_complementary another by clearing OPT_n when
backgrounding).  The patch also changes networking/ifupdown.c to add
an optional udhcpc_def_opts interface parameter that can override the
compiled in default (UDHCPC_CMD_OPTIONS).

Best wishes,
Michael

--- busybox-1.19.4/networking/udhcp/dhcpc.c.Orig	2013-04-10 11:53:36.302705348 -0230
+++ busybox-1.19.4/networking/udhcp/dhcpc.c	2013-04-10 12:35:44.230219373 -0230
@@ -1082,8 +1082,8 @@
 	str_V = "udhcp "BB_VER;
 
 	/* Parse command line */
-	/* O,x: list; -T,-t,-A take numeric param */
-	opt_complementary = "O::x::T+:t+:A+"
+	/* O,x: list; -T,-t,-A take numeric param, only one of -n,-b */
+	opt_complementary = "O::x::T+:t+:A+:n-b:b-n"
 #if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 1
 		":vv"
 #endif
@@ -1283,7 +1283,7 @@
 					bb_info_msg("No lease, forking to background");
 					client_background();
 					/* do not background again! */
-					opt = ((opt & ~OPT_b) | OPT_f);
+					opt = ((opt & ~OPT_b & ~OPT_n) | OPT_f);
 				} else
 #endif
 				if (opt & OPT_n) { /* abort if no lease */
--- busybox-1.19.4/networking/ifupdown.c.Orig	2012-02-04 16:04:24.000000000 -0330
+++ busybox-1.19.4/networking/ifupdown.c	2013-04-10 14:29:47.896458346 -0230
@@ -188,6 +188,10 @@
 			return ifd->option[i].value;
 		}
 	}
+	/* Provide a default value for this. */
+	if (strncmpz(id, "udhcpc_def_opts", idlen) == 0) {
+		return UDHCPC_CMD_OPTIONS;
+	}
 	return NULL;
 }
 
@@ -534,7 +538,7 @@
 		"pump -i %iface% -k",
 	},
 	{ "udhcpc",
-		"udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid -i %iface%[[ -H %hostname%]][[ -c %client%]]"
+		"udhcpc %udhcpc_def_opts% -p /var/run/udhcpc.%iface%.pid -i %iface%[[ -H %hostname%]][[ -c %client%]]"
 				"[[ -s %script%]][[ %udhcpc_opts%]]",
 		"kill `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null",
 	},
@@ -573,7 +577,7 @@
 	if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
 		return 0;
 #  endif
-	return execute("udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid "
+	return execute("udhcpc %udhcpc_def_opts% -p /var/run/udhcpc.%iface%.pid "
 			"-i %iface%[[ -H %hostname%]][[ -c %client%]][[ -s %script%]][[ %udhcpc_opts%]]",
 			ifd, exec);
 }

[end]



More information about the busybox mailing list