ifupdown.c: allow options to udhcpc to be configurable from .config
authorWade Berrier <wberrier@gmail.com>
Fri, 14 Nov 2008 21:18:45 +0000 (21:18 -0000)
committerWade Berrier <wberrier@gmail.com>
Fri, 14 Nov 2008 21:18:45 +0000 (21:18 -0000)
This allows more control over options that are passed to udhcpc
that are not configurable via /etc/network/interfaces.

Example: rather than quit when an initial lease isn't found,
you could use "--background" so that udhcpc keeps running and
continually attempts to get an ip.  That way, when you plug in
the ethernet after powering on the device, you'll still get an ip.

networking/Config.in
networking/ifupdown.c

index 95f89423090917ec20b6f733ac502581235b23ef..735415ccba30ffb90f84e8d8ab62bb1fe908f22c 100644 (file)
@@ -858,6 +858,15 @@ config FEATURE_TRACEROUTE_USE_ICMP
 
 source networking/udhcp/Config.in
 
+config IFUPDOWN_UDHCPC_CMD_OPTIONS
+       string "ifup udhcpc command line options"
+       default "-R -n"
+       depends on IFUPDOWN && APP_UDHCPC
+       help
+         Command line options to pass to udhcpc from ifup.
+         Intended to alter options not available in /etc/network/interfaces.
+         (IE: --syslog --background etc...)
+
 config VCONFIG
        bool "vconfig"
        default n
index d7cb40f321b21f38ffbeb7cc6619eb9a68a7de02..07855f07fd0119ccbbf3e8f779ee69ce6e3e7cba 100644 (file)
@@ -31,6 +31,8 @@
 #define MAX_INTERFACE_LENGTH 10
 #endif
 
+#define UDHCPC_CMD_OPTIONS CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS
+
 #define debug_noise(args...) /*fprintf(stderr, args)*/
 
 /* Forward declaration */
@@ -487,7 +489,7 @@ static const struct dhcp_client_t ext_dhcp_clients[] = {
                "pump -i %iface% -k",
        },
        { "udhcpc",
-               "udhcpc -R -n -p /var/run/udhcpc.%iface%.pid -i %iface%[[ -H %hostname%]][[ -c %clientid%]]"
+               "udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid -i %iface%[[ -H %hostname%]][[ -c %clientid%]]"
                                "[[ -s %script%]][[ %udhcpc_opts%]]",
                "kill `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null",
        },
@@ -526,7 +528,7 @@ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
        if (!execute("ifconfig %iface%[[ hw %hwaddress%]] up", ifd, exec))
                return 0;
 #endif
-       return execute("udhcpc -R -n -p /var/run/udhcpc.%iface%.pid "
+       return execute("udhcpc " UDHCPC_CMD_OPTIONS " -p /var/run/udhcpc.%iface%.pid "
                        "-i %iface%[[ -H %hostname%]][[ -c %clientid%]][[ -s %script%]][[ %udhcpc_opts%]]",
                        ifd, exec);
 }