--- a/src/utils/wpa_debug.c +++ b/src/utils/wpa_debug.c @@ -206,7 +206,7 @@ void wpa_debug_close_linux_tracing(void) * * Note: New line '\n' is added to the end of the text when printing to stdout. */ -void wpa_printf(int level, const char *fmt, ...) +void _wpa_printf(int level, const char *fmt, ...) { va_list ap; @@ -253,8 +253,8 @@ void wpa_printf(int level, const char *f } -static void _wpa_hexdump(int level, const char *title, const u8 *buf, - size_t len, int show) +void _wpa_hexdump(int level, const char *title, const u8 *buf, + size_t len, int show) { size_t i; @@ -380,20 +380,8 @@ static void _wpa_hexdump(int level, cons #endif /* CONFIG_ANDROID_LOG */ } -void wpa_hexdump(int level, const char *title, const void *buf, size_t len) -{ - _wpa_hexdump(level, title, buf, len, 1); -} - - -void wpa_hexdump_key(int level, const char *title, const void *buf, size_t len) -{ - _wpa_hexdump(level, title, buf, len, wpa_debug_show_keys); -} - - -static void _wpa_hexdump_ascii(int level, const char *title, const void *buf, - size_t len, int show) +void _wpa_hexdump_ascii(int level, const char *title, const void *buf, + size_t len, int show) { size_t i, llen; const u8 *pos = buf; @@ -506,20 +494,6 @@ static void _wpa_hexdump_ascii(int level } -void wpa_hexdump_ascii(int level, const char *title, const void *buf, - size_t len) -{ - _wpa_hexdump_ascii(level, title, buf, len, 1); -} - - -void wpa_hexdump_ascii_key(int level, const char *title, const void *buf, - size_t len) -{ - _wpa_hexdump_ascii(level, title, buf, len, wpa_debug_show_keys); -} - - #ifdef CONFIG_DEBUG_FILE static char *last_path = NULL; #endif /* CONFIG_DEBUG_FILE */ @@ -635,7 +609,7 @@ void wpa_msg_register_ifname_cb(wpa_msg_ } -void wpa_msg(void *ctx, int level, const char *fmt, ...) +void _wpa_msg(void *ctx, int level, const char *fmt, ...) { va_list ap; char *buf; @@ -673,7 +647,7 @@ void wpa_msg(void *ctx, int level, const } -void wpa_msg_ctrl(void *ctx, int level, const char *fmt, ...) +void _wpa_msg_ctrl(void *ctx, int level, const char *fmt, ...) { va_list ap; char *buf; --- a/src/utils/wpa_debug.h +++ b/src/utils/wpa_debug.h @@ -52,6 +52,17 @@ int wpa_debug_reopen_file(void); void wpa_debug_close_file(void); void wpa_debug_setup_stdout(void); +/* internal */ +void _wpa_hexdump(int level, const char *title, const u8 *buf, + size_t len, int show); +void _wpa_hexdump_ascii(int level, const char *title, const void *buf, + size_t len, int show); +extern int wpa_debug_show_keys; + +#ifndef CONFIG_MSG_MIN_PRIORITY +#define CONFIG_MSG_MIN_PRIORITY 0 +#endif + /** * wpa_debug_printf_timestamp - Print timestamp for debug output * @@ -72,9 +83,15 @@ void wpa_debug_print_timestamp(void); * * Note: New line '\n' is added to the end of the text when printing to stdout. */ -void wpa_printf(int level, const char *fmt, ...) +void _wpa_printf(int level, const char *fmt, ...) PRINTF_FORMAT(2, 3); +#define wpa_printf(level, ...) \ + do { \ + if (level >= CONFIG_MSG_MIN_PRIORITY) \ + _wpa_printf(level, __VA_ARGS__); \ + } while(0) + /** * wpa_hexdump - conditional hex dump * @level: priority level (MSG_*) of the message @@ -86,7 +103,13 @@ PRINTF_FORMAT(2, 3); * output may be directed to stdout, stderr, and/or syslog based on * configuration. The contents of buf is printed out has hex dump. */ -void wpa_hexdump(int level, const char *title, const void *buf, size_t len); +static inline void wpa_hexdump(int level, const char *title, const void *buf, size_t len) +{ + if (level < CONFIG_MSG_MIN_PRIORITY) + return; + + _wpa_hexdump(level, title, buf, len, 1); +} static inline void wpa_hexdump_buf(int level, const char *title, const struct wpabuf *buf) @@ -108,7 +131,13 @@ static inline void wpa_hexdump_buf(int l * like wpa_hexdump(), but by default, does not include secret keys (passwords, * etc.) in debug output. */ -void wpa_hexdump_key(int level, const char *title, const void *buf, size_t len); +static inline void wpa_hexdump_key(int level, const char *title, const u8 *buf, size_t len) +{ + if (level < CONFIG_MSG_MIN_PRIORITY) + return; + + _wpa_hexdump(level, title, buf, len, wpa_debug_show_keys); +} static inline void wpa_hexdump_buf_key(int level, const char *title, const struct wpabuf *buf) @@ -130,8 +159,14 @@ static inline void wpa_hexdump_buf_key(i * the hex numbers and ASCII characters (for printable range) are shown. 16 * bytes per line will be shown. */ -void wpa_hexdump_ascii(int level, const char *title, const void *buf, - size_t len); +static inline void wpa_hexdump_ascii(int level, const char *title, + const u8 *buf, size_t len) +{ + if (level < CONFIG_MSG_MIN_PRIORITY) + return; + + _wpa_hexdump_ascii(level, title, buf, len, 1); +} /** * wpa_hexdump_ascii_key - conditional hex dump, hide keys @@ -147,8 +182,14 @@ void wpa_hexdump_ascii(int level, const * bytes per line will be shown. This works like wpa_hexdump_ascii(), but by * default, does not include secret keys (passwords, etc.) in debug output. */ -void wpa_hexdump_ascii_key(int level, const char *title, const void *buf, - size_t len); +static inline void wpa_hexdump_ascii_key(int level, const char *title, + const u8 *buf, size_t len) +{ + if (level < CONFIG_MSG_MIN_PRIORITY) + return; + + _wpa_hexdump_ascii(level, title, buf, len, wpa_debug_show_keys); +} /* * wpa_dbg() behaves like wpa_msg(), but it can be removed from build to reduce @@ -185,7 +226,12 @@ void wpa_hexdump_ascii_key(int level, co * * Note: New line '\n' is added to the end of the text when printing to stdout. */ -void wpa_msg(void *ctx, int level, const char *fmt, ...) PRINTF_FORMAT(3, 4); +void _wpa_msg(void *ctx, int level, const char *fmt, ...) PRINTF_FORMAT(3, 4); +#define wpa_msg(ctx, level, ...) \ + do { \ + if (level >= CONFIG_MSG_MIN_PRIORITY) \ + _wpa_msg(ctx, level, __VA_ARGS__); \ + } while(0) /** * wpa_msg_ctrl - Conditional printf for ctrl_iface monitors @@ -199,8 +245,13 @@ void wpa_msg(void *ctx, int level, const * attached ctrl_iface monitors. In other words, it can be used for frequent * events that do not need to be sent to syslog. */ -void wpa_msg_ctrl(void *ctx, int level, const char *fmt, ...) +void _wpa_msg_ctrl(void *ctx, int level, const char *fmt, ...) PRINTF_FORMAT(3, 4); +#define wpa_msg_ctrl(ctx, level, ...) \ + do { \ + if (level >= CONFIG_MSG_MIN_PRIORITY) \ + _wpa_msg_ctrl(ctx, level, __VA_ARGS__); \ + } while(0) /** * wpa_msg_global - Global printf for ctrl_iface monitors