svn commit: trunk/busybox/networking/udhcp
vda at busybox.net
vda at busybox.net
Thu Sep 7 10:05:45 PDT 2006
Author: vda
Date: 2006-09-07 10:05:44 -0700 (Thu, 07 Sep 2006)
New Revision: 16066
Log:
Fix (hopefully) bug 976. Need more thorough audit.
Restore erroneously removed FEATURE_UDHCP_SYSLOG.
Modified:
trunk/busybox/networking/udhcp/Config.in
trunk/busybox/networking/udhcp/common.c
trunk/busybox/networking/udhcp/dhcpc.c
trunk/busybox/networking/udhcp/dhcpd.c
trunk/busybox/networking/udhcp/libbb_udhcp.h
Changeset:
Modified: trunk/busybox/networking/udhcp/Config.in
===================================================================
--- trunk/busybox/networking/udhcp/Config.in 2006-09-07 16:20:03 UTC (rev 16065)
+++ trunk/busybox/networking/udhcp/Config.in 2006-09-07 17:05:44 UTC (rev 16066)
@@ -37,6 +37,16 @@
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
bool "Compile udhcp with noisy debugging messages"
default n
Modified: trunk/busybox/networking/udhcp/common.c
===================================================================
--- trunk/busybox/networking/udhcp/common.c 2006-09-07 16:20:03 UTC (rev 16065)
+++ trunk/busybox/networking/udhcp/common.c 2006-09-07 17:05:44 UTC (rev 16066)
@@ -67,7 +67,7 @@
#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;
@@ -82,9 +82,9 @@
setlinebuf(stdout);
if (ENABLE_FEATURE_UDHCP_SYSLOG) {
- openlog(client_server, LOG_PID, LOG_LOCAL0);
+ openlog(bb_applet_name, LOG_PID, LOG_LOCAL0);
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);
}
Modified: trunk/busybox/networking/udhcp/dhcpc.c
===================================================================
--- trunk/busybox/networking/udhcp/dhcpc.c 2006-09-07 16:20:03 UTC (rev 16065)
+++ trunk/busybox/networking/udhcp/dhcpc.c 2006-09-07 17:05:44 UTC (rev 16066)
@@ -32,6 +32,11 @@
#include "signalpipe.h"
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 server_addr;
static unsigned long timeout;
@@ -267,7 +272,7 @@
}
/* 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,
NULL, client_config.arp) < 0)
@@ -446,8 +451,9 @@
case INIT_SELECTING:
/* Must be a DHCPOFFER to one of our xid's */
if (*message == DHCPOFFER) {
- if ((temp = get_option(&packet, DHCP_SERVER_ID))) {
- memcpy(&server_addr, temp, 4);
+ temp = get_option(&packet, DHCP_SERVER_ID);
+ if (temp) {
+ server_addr = *(uint32_t*)temp;
xid = packet.xid;
requested_ip = packet.yiaddr;
@@ -465,12 +471,12 @@
case RENEWING:
case REBINDING:
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");
lease = 60 * 60;
} else {
- memcpy(&lease, temp, 4);
- lease = ntohl(lease);
+ lease = ntohl(*(uint32_t*)temp);
}
/* enter bound state */
Modified: trunk/busybox/networking/udhcp/dhcpd.c
===================================================================
--- trunk/busybox/networking/udhcp/dhcpd.c 2006-09-07 16:20:03 UTC (rev 16065)
+++ trunk/busybox/networking/udhcp/dhcpd.c 2006-09-07 17:05:44 UTC (rev 16066)
@@ -55,7 +55,7 @@
read_config(argc < 2 ? DHCPD_CONF_FILE : argv[1]);
/* 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))) {
memcpy(&server_config.lease, option->data + 2, 4);
Modified: trunk/busybox/networking/udhcp/libbb_udhcp.h
===================================================================
--- trunk/busybox/networking/udhcp/libbb_udhcp.h 2006-09-07 16:20:03 UTC (rev 16065)
+++ trunk/busybox/networking/udhcp/libbb_udhcp.h 2006-09-07 17:05:44 UTC (rev 16066)
@@ -21,7 +21,7 @@
#define COMBINED_BINARY
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);
More information about the busybox-cvs
mailing list