Fix (hopefully) bug 976. Need more thorough audit.

Restore erroneously removed FEATURE_UDHCP_SYSLOG.
This commit is contained in:
Denis Vlasenko 2006-09-07 17:05:44 +00:00
parent a9801658ee
commit 239369b368
5 changed files with 27 additions and 11 deletions

View File

@ -37,6 +37,16 @@ config CONFIG_APP_UDHCPC
See http://udhcp.busybox.net for further details. See http://udhcp.busybox.net for further details.
config CONFIG_FEATURE_UDHCP_SYSLOG
bool "Log udhcp messages to syslog"
default n
depends on CONFIG_APP_UDHCPD || CONFIG_APP_UDHCPC
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 CONFIG_FEATURE_UDHCP_DEBUG config CONFIG_FEATURE_UDHCP_DEBUG
bool "Compile udhcp with noisy debugging messages" bool "Compile udhcp with noisy debugging messages"
default n default n

View File

@ -67,7 +67,7 @@ void udhcp_background(const char *pidfile)
#endif /* __uClinux__ */ #endif /* __uClinux__ */
} }
void udhcp_start_log_and_pid(const char *client_server, const char *pidfile) void udhcp_start_log_and_pid(const char *pidfile)
{ {
int pid_fd; int pid_fd;
@ -82,9 +82,9 @@ void udhcp_start_log_and_pid(const char *client_server, const char *pidfile)
setlinebuf(stdout); setlinebuf(stdout);
if (ENABLE_FEATURE_UDHCP_SYSLOG) { if (ENABLE_FEATURE_UDHCP_SYSLOG) {
openlog(client_server, LOG_PID, LOG_LOCAL0); openlog(bb_applet_name, LOG_PID, LOG_LOCAL0);
logmode |= LOGMODE_SYSLOG; logmode |= LOGMODE_SYSLOG;
} }
bb_info_msg("%s (v%s) started", client_server, BB_VER); bb_info_msg("%s (v%s) started", bb_applet_name, BB_VER);
} }

View File

@ -32,6 +32,11 @@
#include "signalpipe.h" #include "signalpipe.h"
static int state; static int state;
/* Something is definitely wrong here. IPv4 addresses
* in variables of type long?? BTW, we use inet_ntoa()
* in the code. Manpage says that struct in_addr has a member of type long (!)
* which holds IPv4 address, and the struct is passed by value (!!)
*/
static unsigned long requested_ip; /* = 0 */ static unsigned long requested_ip; /* = 0 */
static unsigned long server_addr; static unsigned long server_addr;
static unsigned long timeout; static unsigned long timeout;
@ -267,7 +272,7 @@ int udhcpc_main(int argc, char *argv[])
} }
/* Start the log, sanitize fd's, and write a pid file */ /* Start the log, sanitize fd's, and write a pid file */
udhcp_start_log_and_pid("udhcpc", client_config.pidfile); udhcp_start_log_and_pid(client_config.pidfile);
if (read_interface(client_config.interface, &client_config.ifindex, if (read_interface(client_config.interface, &client_config.ifindex,
NULL, client_config.arp) < 0) NULL, client_config.arp) < 0)
@ -446,8 +451,9 @@ int udhcpc_main(int argc, char *argv[])
case INIT_SELECTING: case INIT_SELECTING:
/* Must be a DHCPOFFER to one of our xid's */ /* Must be a DHCPOFFER to one of our xid's */
if (*message == DHCPOFFER) { if (*message == DHCPOFFER) {
if ((temp = get_option(&packet, DHCP_SERVER_ID))) { temp = get_option(&packet, DHCP_SERVER_ID);
memcpy(&server_addr, temp, 4); if (temp) {
server_addr = *(uint32_t*)temp;
xid = packet.xid; xid = packet.xid;
requested_ip = packet.yiaddr; requested_ip = packet.yiaddr;
@ -465,12 +471,12 @@ int udhcpc_main(int argc, char *argv[])
case RENEWING: case RENEWING:
case REBINDING: case REBINDING:
if (*message == DHCPACK) { if (*message == DHCPACK) {
if (!(temp = get_option(&packet, DHCP_LEASE_TIME))) { temp = get_option(&packet, DHCP_LEASE_TIME);
if (!temp) {
bb_error_msg("No lease time with ACK, using 1 hour lease"); bb_error_msg("No lease time with ACK, using 1 hour lease");
lease = 60 * 60; lease = 60 * 60;
} else { } else {
memcpy(&lease, temp, 4); lease = ntohl(*(uint32_t*)temp);
lease = ntohl(lease);
} }
/* enter bound state */ /* enter bound state */

View File

@ -55,7 +55,7 @@ int udhcpd_main(int argc, char *argv[])
read_config(argc < 2 ? DHCPD_CONF_FILE : argv[1]); read_config(argc < 2 ? DHCPD_CONF_FILE : argv[1]);
/* Start the log, sanitize fd's, and write a pid file */ /* Start the log, sanitize fd's, and write a pid file */
udhcp_start_log_and_pid("udhcpd", server_config.pidfile); udhcp_start_log_and_pid(server_config.pidfile);
if ((option = find_option(server_config.options, DHCP_LEASE_TIME))) { if ((option = find_option(server_config.options, DHCP_LEASE_TIME))) {
memcpy(&server_config.lease, option->data + 2, 4); memcpy(&server_config.lease, option->data + 2, 4);

View File

@ -21,7 +21,7 @@
#define COMBINED_BINARY #define COMBINED_BINARY
void udhcp_background(const char *pidfile); void udhcp_background(const char *pidfile);
void udhcp_start_log_and_pid(const char *client_server, const char *pidfile); void udhcp_start_log_and_pid(const char *pidfile);
void udhcp_run_script(struct dhcpMessage *packet, const char *name); void udhcp_run_script(struct dhcpMessage *packet, const char *name);