From 3d17d2b430a6a68c967b789c990cc441154d695e Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 14 Aug 2007 16:45:29 +0000 Subject: [PATCH] udhcpd: add -f "foreground" and -S "syslog" options 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 --- include/usage.h | 36 +++++++++++++++++++----------------- networking/udhcp/Config.in | 11 ----------- networking/udhcp/dhcpc.c | 6 ++++-- networking/udhcp/dhcpd.c | 7 ++++--- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/include/usage.h b/include/usage.h index d01e3e4f3..1d4459df1 100644 --- a/include/usage.h +++ b/include/usage.h @@ -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" diff --git a/networking/udhcp/Config.in b/networking/udhcp/Config.in index 7a3eda9cc..76b078001 100644 --- a/networking/udhcp/Config.in +++ b/networking/udhcp/Config.in @@ -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 diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index 0e89c3cae..7cb1dfe5d 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c @@ -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; } diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c index 89f57bfe8..d8e80e30d 100644 --- a/networking/udhcp/dhcpd.c +++ b/networking/udhcp/dhcpd.c @@ -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; }