hostapd: Add possibility to send debug messages to syslog

We can only send module specific messages to syslog and not debug
messages printed with wpa_printf. Add an extra command line parameter
'-s' to allow it. The feature is enabled with compile flag
CONFIG_DEBUG_SYSLOG as for wpa_supplicant and behaves in the same manner
as the wpa_supplicant -s command line argument.

Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com>
This commit is contained in:
Wojciech Dubowik 2017-01-23 13:55:04 +01:00 committed by Jouni Malinen
parent 0da355235e
commit cc3dae85bd
6 changed files with 33 additions and 2 deletions

View file

@ -952,6 +952,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG
L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
endif endif
ifdef CONFIG_DEBUG_SYSLOG
L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
endif
ifdef CONFIG_DEBUG_LINUX_TRACING ifdef CONFIG_DEBUG_LINUX_TRACING
L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
endif endif

View file

@ -997,6 +997,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG
CFLAGS += -DCONFIG_NO_STDOUT_DEBUG CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
endif endif
ifdef CONFIG_DEBUG_SYSLOG
CFLAGS += -DCONFIG_DEBUG_SYSLOG
endif
ifdef CONFIG_DEBUG_LINUX_TRACING ifdef CONFIG_DEBUG_LINUX_TRACING
CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
endif endif

View file

@ -166,6 +166,9 @@ CONFIG_IPV6=y
# Disabled by default. # Disabled by default.
#CONFIG_DEBUG_FILE=y #CONFIG_DEBUG_FILE=y
# Send debug messages to syslog instead of stdout
#CONFIG_DEBUG_SYSLOG=y
# Add support for sending all debug messages (regardless of debug verbosity) # Add support for sending all debug messages (regardless of debug verbosity)
# to the Linux kernel tracing facility. This helps debug the entire stack by # to the Linux kernel tracing facility. This helps debug the entire stack by
# making it easy to record everything happening from the driver up into the # making it easy to record everything happening from the driver up into the

View file

@ -108,6 +108,10 @@ static void hostapd_logger_cb(void *ctx, const u8 *addr, unsigned int module,
module_str ? module_str : "", module_str ? module_str : "",
module_str ? ": " : "", txt); module_str ? ": " : "", txt);
#ifdef CONFIG_DEBUG_SYSLOG
if (wpa_debug_syslog)
conf_stdout = 0;
#endif /* CONFIG_DEBUG_SYSLOG */
if ((conf_stdout & module) && level >= conf_stdout_level) { if ((conf_stdout & module) && level >= conf_stdout_level) {
wpa_debug_print_timestamp(); wpa_debug_print_timestamp();
wpa_printf(MSG_INFO, "%s", format); wpa_printf(MSG_INFO, "%s", format);
@ -484,6 +488,9 @@ static void usage(void)
" (records all messages regardless of debug verbosity)\n" " (records all messages regardless of debug verbosity)\n"
#endif /* CONFIG_DEBUG_LINUX_TRACING */ #endif /* CONFIG_DEBUG_LINUX_TRACING */
" -i list of interface names to use\n" " -i list of interface names to use\n"
#ifdef CONFIG_DEBUG_SYSLOG
" -s log output to syslog instead of stdout\n"
#endif /* CONFIG_DEBUG_SYSLOG */
" -S start all the interfaces synchronously\n" " -S start all the interfaces synchronously\n"
" -t include timestamps in some debug messages\n" " -t include timestamps in some debug messages\n"
" -v show hostapd version\n"); " -v show hostapd version\n");
@ -661,7 +668,7 @@ int main(int argc, char *argv[])
dl_list_init(&interfaces.global_ctrl_dst); dl_list_init(&interfaces.global_ctrl_dst);
for (;;) { for (;;) {
c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:vg:G:"); c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:vg:G:");
if (c < 0) if (c < 0)
break; break;
switch (c) { switch (c) {
@ -718,6 +725,11 @@ int main(int argc, char *argv[])
bss_config = tmp_bss; bss_config = tmp_bss;
bss_config[num_bss_configs++] = optarg; bss_config[num_bss_configs++] = optarg;
break; break;
#ifdef CONFIG_DEBUG_SYSLOG
case 's':
wpa_debug_syslog = 1;
break;
#endif /* CONFIG_DEBUG_SYSLOG */
case 'S': case 'S':
start_ifaces_in_sync = 1; start_ifaces_in_sync = 1;
break; break;
@ -746,6 +758,10 @@ int main(int argc, char *argv[])
wpa_debug_open_file(log_file); wpa_debug_open_file(log_file);
else else
wpa_debug_setup_stdout(); wpa_debug_setup_stdout();
#ifdef CONFIG_DEBUG_SYSLOG
if (wpa_debug_syslog)
wpa_debug_open_syslog();
#endif /* CONFIG_DEBUG_SYSLOG */
#ifdef CONFIG_DEBUG_LINUX_TRACING #ifdef CONFIG_DEBUG_LINUX_TRACING
if (enable_trace_dbg) { if (enable_trace_dbg) {
int tret = wpa_debug_open_linux_tracing(); int tret = wpa_debug_open_linux_tracing();
@ -882,6 +898,7 @@ int main(int argc, char *argv[])
hostapd_global_deinit(pid_file, interfaces.eloop_initialized); hostapd_global_deinit(pid_file, interfaces.eloop_initialized);
os_free(pid_file); os_free(pid_file);
wpa_debug_close_syslog();
if (log_file) if (log_file)
wpa_debug_close_file(); wpa_debug_close_file();
wpa_debug_close_linux_tracing(); wpa_debug_close_linux_tracing();

View file

@ -13,7 +13,7 @@
#ifdef CONFIG_DEBUG_SYSLOG #ifdef CONFIG_DEBUG_SYSLOG
#include <syslog.h> #include <syslog.h>
static int wpa_debug_syslog = 0; int wpa_debug_syslog = 0;
#endif /* CONFIG_DEBUG_SYSLOG */ #endif /* CONFIG_DEBUG_SYSLOG */
#ifdef CONFIG_DEBUG_LINUX_TRACING #ifdef CONFIG_DEBUG_LINUX_TRACING

View file

@ -14,6 +14,9 @@
extern int wpa_debug_level; extern int wpa_debug_level;
extern int wpa_debug_show_keys; extern int wpa_debug_show_keys;
extern int wpa_debug_timestamp; extern int wpa_debug_timestamp;
#ifdef CONFIG_DEBUG_SYSLOG
extern int wpa_debug_syslog;
#endif /* CONFIG_DEBUG_SYSLOG */
/* Debugging function - conditional printf and hex dump. Driver wrappers can /* Debugging function - conditional printf and hex dump. Driver wrappers can
* use these for debugging purposes. */ * use these for debugging purposes. */