From 3b644398d5148f539009b5f03230b880365ab576 Mon Sep 17 00:00:00 2001 From: Florian Wagner Date: Thu, 13 Apr 2017 17:34:17 +0200 Subject: [PATCH] hostapd: Add support for logging to syslog (#6174) Even if enabled in hostapd.conf the 2.6 release only logs some of its messages to syslog. All parts of the code using the wpa_printf function send output to stdout. This commit adds a patch (taken from hostap.git) to the package to fully support logging to syslog using the -s commandline argument. The runit run file is modified accordingly. --- srcpkgs/hostapd/files/config | 3 + srcpkgs/hostapd/files/hostapd/run | 2 +- srcpkgs/hostapd/patches/hostapd-syslog.patch | 160 +++++++++++++++++++ srcpkgs/hostapd/template | 2 +- 4 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/hostapd/patches/hostapd-syslog.patch diff --git a/srcpkgs/hostapd/files/config b/srcpkgs/hostapd/files/config index 2d58183f8a5..e26ae344e96 100644 --- a/srcpkgs/hostapd/files/config +++ b/srcpkgs/hostapd/files/config @@ -94,3 +94,6 @@ CONFIG_IEEE80211AC=y CONFIG_LIBNL32=y CONFIG_ACS=y + +# Support debug logging to syslog +CONFIG_DEBUG_SYSLOG=y diff --git a/srcpkgs/hostapd/files/hostapd/run b/srcpkgs/hostapd/files/hostapd/run index c010d1baf99..0d17269e5d5 100644 --- a/srcpkgs/hostapd/files/hostapd/run +++ b/srcpkgs/hostapd/files/hostapd/run @@ -1,2 +1,2 @@ #!/bin/sh -exec hostapd -d /etc/hostapd/hostapd.conf 2>&1 +exec hostapd -s /etc/hostapd/hostapd.conf 2>&1 diff --git a/srcpkgs/hostapd/patches/hostapd-syslog.patch b/srcpkgs/hostapd/patches/hostapd-syslog.patch new file mode 100644 index 00000000000..3535b079bee --- /dev/null +++ b/srcpkgs/hostapd/patches/hostapd-syslog.patch @@ -0,0 +1,160 @@ +From cc3dae85bd694506cdea66ae532d452fb8716297 Mon Sep 17 00:00:00 2001 +From: Wojciech Dubowik +Date: Mon, 23 Jan 2017 13:55:04 +0100 +Subject: [PATCH] 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 +--- + hostapd/Android.mk | 4 ++++ + hostapd/Makefile | 4 ++++ + hostapd/defconfig | 3 +++ + hostapd/main.c | 19 ++++++++++++++++++- + src/utils/wpa_debug.c | 2 +- + src/utils/wpa_debug.h | 3 +++ + 6 files changed, 33 insertions(+), 2 deletions(-) + +diff --git hostapd/Android.mk hostapd/Android.mk +index 9a14be4b9..ec2d55a9f 100644 +--- hostapd/Android.mk ++++ hostapd/Android.mk +@@ -952,6 +952,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG + L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG + endif + ++ifdef CONFIG_DEBUG_SYSLOG ++L_CFLAGS += -DCONFIG_DEBUG_SYSLOG ++endif ++ + ifdef CONFIG_DEBUG_LINUX_TRACING + L_CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING + endif +diff --git hostapd/Makefile hostapd/Makefile +index 52c72dc45..d9bb72a0a 100644 +--- hostapd/Makefile ++++ hostapd/Makefile +@@ -997,6 +997,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG + CFLAGS += -DCONFIG_NO_STDOUT_DEBUG + endif + ++ifdef CONFIG_DEBUG_SYSLOG ++CFLAGS += -DCONFIG_DEBUG_SYSLOG ++endif ++ + ifdef CONFIG_DEBUG_LINUX_TRACING + CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING + endif +diff --git hostapd/defconfig hostapd/defconfig +index e25ec320f..bf6e64663 100644 +--- hostapd/defconfig ++++ hostapd/defconfig +@@ -166,6 +166,9 @@ CONFIG_IPV6=y + # Disabled by default. + #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) + # 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 +diff --git hostapd/main.c hostapd/main.c +index 6911232eb..593267c96 100644 +--- hostapd/main.c ++++ hostapd/main.c +@@ -108,6 +108,10 @@ static void hostapd_logger_cb(void *ctx, const u8 *addr, unsigned int module, + module_str ? module_str : "", + 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) { + wpa_debug_print_timestamp(); + wpa_printf(MSG_INFO, "%s", format); +@@ -484,6 +488,9 @@ static void usage(void) + " (records all messages regardless of debug verbosity)\n" + #endif /* CONFIG_DEBUG_LINUX_TRACING */ + " -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" + " -t include timestamps in some debug messages\n" + " -v show hostapd version\n"); +@@ -661,7 +668,7 @@ int main(int argc, char *argv[]) + dl_list_init(&interfaces.global_ctrl_dst); + + 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) + break; + switch (c) { +@@ -718,6 +725,11 @@ int main(int argc, char *argv[]) + bss_config = tmp_bss; + bss_config[num_bss_configs++] = optarg; + break; ++#ifdef CONFIG_DEBUG_SYSLOG ++ case 's': ++ wpa_debug_syslog = 1; ++ break; ++#endif /* CONFIG_DEBUG_SYSLOG */ + case 'S': + start_ifaces_in_sync = 1; + break; +@@ -746,6 +758,10 @@ int main(int argc, char *argv[]) + wpa_debug_open_file(log_file); + else + 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 + if (enable_trace_dbg) { + 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); + os_free(pid_file); + ++ wpa_debug_close_syslog(); + if (log_file) + wpa_debug_close_file(); + wpa_debug_close_linux_tracing(); +diff --git src/utils/wpa_debug.c src/utils/wpa_debug.c +index f7acf6b9f..62758d864 100644 +--- src/utils/wpa_debug.c ++++ src/utils/wpa_debug.c +@@ -13,7 +13,7 @@ + #ifdef CONFIG_DEBUG_SYSLOG + #include + +-static int wpa_debug_syslog = 0; ++int wpa_debug_syslog = 0; + #endif /* CONFIG_DEBUG_SYSLOG */ + + #ifdef CONFIG_DEBUG_LINUX_TRACING +diff --git src/utils/wpa_debug.h src/utils/wpa_debug.h +index 17d8f9638..1fe0b7db7 100644 +--- src/utils/wpa_debug.h ++++ src/utils/wpa_debug.h +@@ -14,6 +14,9 @@ + extern int wpa_debug_level; + extern int wpa_debug_show_keys; + 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 + * use these for debugging purposes. */ +-- +2.12.2 + diff --git a/srcpkgs/hostapd/template b/srcpkgs/hostapd/template index 99ee93aa4ce..1cf9476f3c7 100644 --- a/srcpkgs/hostapd/template +++ b/srcpkgs/hostapd/template @@ -1,7 +1,7 @@ # Template file for 'hostapd' pkgname=hostapd version=2.6 -revision=2 +revision=3 build_wrksrc=${pkgname} conf_files="/etc/hostapd/hostapd.conf" hostmakedepends="pkg-config"