svn commit: trunk/busybox/networking/udhcp

vda at busybox.net vda at busybox.net
Thu Sep 7 17:05:45 UTC 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