Fix (hopefully) bug 976. Need more thorough audit. Restore erroneously removed FEATURE_UDHCP_SYSLOG.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -37,6 +37,16 @@ config CONFIG_APP_UDHCPC | |
| 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 | |
| @@ -67,7 +67,7 @@ void udhcp_background(const char *pidfile) | |
| #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 @@ void udhcp_start_log_and_pid(const char *client_server, const char *pidfile) | |
| 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); |
| } | |
| @@ -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 @@ int udhcpc_main(int argc, char *argv[]) | |
| } | |
| /* 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 @@ int udhcpc_main(int argc, char *argv[]) | |
| 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 @@ int udhcpc_main(int argc, char *argv[]) | |
| 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 */ | |
| @@ -55,7 +55,7 @@ int udhcpd_main(int argc, char *argv[]) | |
| 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); | |
| @@ -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); | |