udhcpd: add -f "foreground" and -S "syslog" options
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Tue, 14 Aug 2007 16:45:29 +0000 (16:45 +0000)
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Tue, 14 Aug 2007 16:45:29 +0000 (16:45 +0000)
udhcpc: add -S "syslog" options
remove CONFIG_FEATURE_UDHCP_SYSLOG

function                                             old     new   delta
udhcpd_main                                         1168    1201     +33
udhcpc_main                                         2414    2425     +11
static.udhcpc_longopts                               191     200      +9
qgravechar                                           112     108      -4
packed_usage                                       22843   22827     -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 53/-20)             Total: 33 bytes

git-svn-id: svn://busybox.net/trunk/busybox@19507 69ca8d6d-28ef-0310-b511-8ec308f3f277

include/usage.h
networking/udhcp/Config.in
networking/udhcp/dhcpc.c
networking/udhcp/dhcpd.c

index d01e3e4..1d4459d 100644 (file)
@@ -3654,27 +3654,29 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l      Prints names of all matching files even when
        "[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n" \
        "       [-p pidfile] [-r IP] [-s script]"
 #define udhcpc_full_usage \
-       "       -V,--vendorclass=CLASSID        Set vendor class identifier\n" \
-       "       -i,--interface=INTERFACE        Interface to use (default: eth0)\n" \
-       "       -H,-h,--hostname=HOSTNAME       Client hostname\n" \
-       "       -c,--clientid=CLIENTID  Set client identifier\n" \
-       "       -C,--clientid-none      Suppress default client identifier\n" \
-       "       -p,--pidfile=file       Store process ID of daemon in file\n" \
-       "       -r,--request=IP         IP address to request (default: none)\n" \
-       "       -s,--script=file        Run file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
-       "       -t,--retries=NUM        Send up to NUM request packets\n"\
-       "       -f,--foreground Do not fork after getting lease\n" \
-       "       -b,--background Fork to background if lease cannot be immediately negotiated\n" \
-       "       -n,--now        Exit with failure if lease cannot be immediately negotiated\n" \
-       "       -q,--quit       Quit after obtaining lease\n" \
-       "       -R,--release    Release IP on quit\n" \
-       "       -v,--version    Display version" \
+       "\n     -V,--vendorclass=CLASSID        Set vendor class identifier" \
+       "\n     -i,--interface=INTERFACE        Interface to use (default: eth0)" \
+       "\n     -H,-h,--hostname=HOSTNAME       Client hostname" \
+       "\n     -c,--clientid=CLIENTID  Set client identifier" \
+       "\n     -C,--clientid-none      Suppress default client identifier" \
+       "\n     -p,--pidfile=file       Store process ID of daemon in file" \
+       "\n     -r,--request=IP         IP address to request" \
+       "\n     -s,--script=file        Run file at dhcp events (default: /usr/share/udhcpc/default.script)" \
+       "\n     -t,--retries=N          Send up to N request packets"\
+       "\n     -f,--foreground Stay in foreground" \
+       "\n     -b,--background Background if lease cannot be immediately negotiated" \
+       "\n     -S,--syslog     Log to syslog too" \
+       "\n     -n,--now        Exit with failure if lease cannot be immediately negotiated" \
+       "\n     -q,--quit       Quit after obtaining lease" \
+       "\n     -R,--release    Release IP on quit" \
+       "\n     -v,--version    Display version" \
 
 #define udhcpd_trivial_usage \
-       "[configfile]" \
+       "[-fS] [configfile]" \
 
 #define udhcpd_full_usage \
-       ""
+       "\n     -f      Stay in foreground" \
+       "\n     -S      Log to syslog too"
 
 #define umount_trivial_usage \
        "[flags] FILESYSTEM|DIRECTORY"
index 7a3eda9..76b0780 100644 (file)
@@ -54,17 +54,6 @@ config APP_UDHCPC
 
          See http://udhcp.busybox.net for further details.
 
-config FEATURE_UDHCP_SYSLOG
-       bool "Log udhcp messages to syslog"
-       default n
-       depends on APP_UDHCPD || APP_UDHCPC
-       select FEATURE_SYSLOG
-       help
-         If not daemonized, udhcpd prints its messages to stdout/stderr.
-         If this option is selected, it will also log them to syslog.
-
-         See http://udhcp.busybox.net for further details.
-
 config FEATURE_UDHCP_DEBUG
        bool "Compile udhcp with noisy debugging messages"
        default n
index 0e89c3c..7cb1dfe 100644 (file)
@@ -178,6 +178,7 @@ int udhcpc_main(int argc, char **argv)
                OPT_T = 1 << 15,
                OPT_t = 1 << 16,
                OPT_v = 1 << 17,
+               OPT_S = 1 << 18,
        };
 #if ENABLE_GETOPT_LONG
        static const char udhcpc_longopts[] ALIGN1 =
@@ -199,6 +200,7 @@ int udhcpc_main(int argc, char **argv)
                "timeout\0"       Required_argument "T"
                "version\0"       No_argument       "v"
                "retries\0"       Required_argument "t"
+               "syslog\0"        No_argument       "S"
                ;
 #endif
        /* Default options. */
@@ -213,7 +215,7 @@ int udhcpc_main(int argc, char **argv)
 #if ENABLE_GETOPT_LONG
        applet_long_options = udhcpc_longopts;
 #endif
-       opt = getopt32(argc, argv, "c:CV:fbH:h:F:i:np:qRr:s:T:t:v",
+       opt = getopt32(argc, argv, "c:CV:fbH:h:F:i:np:qRr:s:T:t:vS",
                &str_c, &str_V, &str_h, &str_h, &str_F,
                &client_config.interface, &client_config.pidfile, &str_r,
                &client_config.script, &str_T, &str_t
@@ -262,7 +264,7 @@ int udhcpc_main(int argc, char **argv)
                return 0;
        }
 
-       if (ENABLE_FEATURE_UDHCP_SYSLOG) {
+       if (opt & OPT_S) {
                openlog(applet_name, LOG_PID, LOG_LOCAL0);
                logmode |= LOGMODE_SYSLOG;
        }
index 89f57bf..d8e80e3 100644 (file)
@@ -32,17 +32,18 @@ int udhcpd_main(int argc, char **argv)
        uint32_t server_id_align, requested_align, static_lease_ip;
        unsigned timeout_end;
        unsigned num_ips;
+       unsigned opt;
        struct option_set *option;
        struct dhcpOfferedAddr *lease, static_lease;
 
-//Huh, dhcpd don't have --foreground, --syslog options?? TODO
+       opt = getopt32(argc, argv, "fS");
 
-       if (!ENABLE_FEATURE_UDHCP_DEBUG) {
+       if (!(opt & 1)) { /* no -f */
                bb_daemonize_or_rexec(0, argv);
                logmode &= ~LOGMODE_STDIO;
        }
 
-       if (ENABLE_FEATURE_UDHCP_SYSLOG) {
+       if (opt & 2) { /* -S */
                openlog(applet_name, LOG_PID, LOG_LOCAL0);
                logmode |= LOGMODE_SYSLOG;
        }