[PATCH v3 07/21] wpa_debug: Add utility functions for printing MLO link ID in hexdump
Veerendranath Jakkam
quic_vjakkam at quicinc.com
Wed Oct 19 07:13:55 PDT 2022
Add support to print MLO link ID in hexdump debug prints.
Signed-off-by: Veerendranath Jakkam <quic_vjakkam at quicinc.com>
---
src/utils/wpa_debug.c | 56 ++++++++++++++++++++++++++++++-------------
src/utils/wpa_debug.h | 6 +++++
2 files changed, 46 insertions(+), 16 deletions(-)
diff --git a/src/utils/wpa_debug.c b/src/utils/wpa_debug.c
index a338a2039..5d255cfed 100644
--- a/src/utils/wpa_debug.c
+++ b/src/utils/wpa_debug.c
@@ -255,16 +255,25 @@ void wpa_printf(int level, const char *fmt, ...)
}
-static void _wpa_hexdump(int level, const char *title, const u8 *buf,
- size_t len, int show, int only_syslog)
+static void _wpa_hexdump(int level, int link_id, const char *title,
+ const u8 *buf, size_t len, int show, int only_syslog)
{
size_t i;
+ char link_id_str[20];
+
+ link_id_str[0] = '\0';
+ if (link_id >= 0 && link_id < 15) {
+ int ret = os_snprintf(link_id_str, sizeof(link_id_str),
+ " link_id=%d", link_id);
+ if (os_snprintf_error(sizeof(link_id_str), ret))
+ link_id_str[0] = '\0';
+ }
#ifdef CONFIG_DEBUG_LINUX_TRACING
if (wpa_debug_tracing_file != NULL) {
fprintf(wpa_debug_tracing_file,
- WPAS_TRACE_PFX "%s - hexdump(len=%lu):",
- level, title, (unsigned long) len);
+ WPAS_TRACE_PFX "%s - hexdump(len=%lu%s):",
+ level, title, (unsigned long) len, link_id_str);
if (buf == NULL) {
fprintf(wpa_debug_tracing_file, " [NULL]\n");
} else if (!show) {
@@ -311,9 +320,9 @@ static void _wpa_hexdump(int level, const char *title, const u8 *buf,
__android_log_print(wpa_to_android_level(level),
ANDROID_LOG_NAME,
- "%s - hexdump(len=%lu):%s%s",
- title, (long unsigned int) len, display,
- len > slen ? " ..." : "");
+ "%s - hexdump(len=%lu%s):%s%s",
+ title, (long unsigned int) len, link_id_str,
+ display, len > slen ? " ..." : "");
bin_clear_free(strbuf, 1 + 3 * slen);
return;
}
@@ -344,8 +353,8 @@ static void _wpa_hexdump(int level, const char *title, const u8 *buf,
display = " [REMOVED]";
}
- syslog(syslog_priority(level), "%s - hexdump(len=%lu):%s",
- title, (unsigned long) len, display);
+ syslog(syslog_priority(level), "%s - hexdump(len=%lu%s):%s",
+ title, (unsigned long) len, link_id_str, display);
bin_clear_free(strbuf, 1 + 3 * len);
if (only_syslog)
return;
@@ -354,8 +363,8 @@ static void _wpa_hexdump(int level, const char *title, const u8 *buf,
wpa_debug_print_timestamp();
#ifdef CONFIG_DEBUG_FILE
if (out_file) {
- fprintf(out_file, "%s - hexdump(len=%lu):",
- title, (unsigned long) len);
+ fprintf(out_file, "%s - hexdump(len=%lu%s):",
+ title, (unsigned long) len, link_id_str);
if (buf == NULL) {
fprintf(out_file, " [NULL]");
} else if (show) {
@@ -368,7 +377,8 @@ static void _wpa_hexdump(int level, const char *title, const u8 *buf,
}
#endif /* CONFIG_DEBUG_FILE */
if (!wpa_debug_syslog && !out_file) {
- printf("%s - hexdump(len=%lu):", title, (unsigned long) len);
+ printf("%s - hexdump(len=%lu%s):", title, (unsigned long) len,
+ link_id_str);
if (buf == NULL) {
printf(" [NULL]");
} else if (show) {
@@ -384,13 +394,27 @@ static void _wpa_hexdump(int level, const char *title, const u8 *buf,
void wpa_hexdump(int level, const char *title, const void *buf, size_t len)
{
- _wpa_hexdump(level, title, buf, len, 1, 0);
+ _wpa_hexdump(level, -1, title, buf, len, 1, 0);
}
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, 0);
+ _wpa_hexdump(level, -1, title, buf, len, wpa_debug_show_keys, 0);
+}
+
+
+void wpa_hexdump_link(int level, u8 link_id, const char *title, const void *buf,
+ size_t len)
+{
+ _wpa_hexdump(level, link_id, title, buf, len, 1, 0);
+}
+
+
+void wpa_hexdump_link_key(int level, u8 link_id, const char *title,
+ const void *buf, size_t len)
+{
+ _wpa_hexdump(level, link_id, title, buf, len, wpa_debug_show_keys, 0);
}
@@ -423,11 +447,11 @@ static void _wpa_hexdump_ascii(int level, const char *title, const void *buf,
if (level < wpa_debug_level)
return;
#ifdef CONFIG_ANDROID_LOG
- _wpa_hexdump(level, title, buf, len, show, 0);
+ _wpa_hexdump(level, -1, title, buf, len, show, 0);
#else /* CONFIG_ANDROID_LOG */
#ifdef CONFIG_DEBUG_SYSLOG
if (wpa_debug_syslog)
- _wpa_hexdump(level, title, buf, len, show, 1);
+ _wpa_hexdump(level, -1, title, buf, len, show, 1);
#endif /* CONFIG_DEBUG_SYSLOG */
wpa_debug_print_timestamp();
#ifdef CONFIG_DEBUG_FILE
diff --git a/src/utils/wpa_debug.h b/src/utils/wpa_debug.h
index c6d5cc647..9f3f6443e 100644
--- a/src/utils/wpa_debug.h
+++ b/src/utils/wpa_debug.h
@@ -37,6 +37,8 @@ enum {
#define wpa_debug_close_file() do { } while (0)
#define wpa_debug_setup_stdout() do { } while (0)
#define wpa_dbg(args...) do { } while (0)
+#define wpa_hexdump_link(l,li,t,b,le) do { } while (0)
+#define wpa_hexdump_link_key(l,li,t,b,le) do { } while (0)
static inline int wpa_debug_reopen_file(void)
{
@@ -85,6 +87,8 @@ PRINTF_FORMAT(2, 3);
* 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);
+void wpa_hexdump_link(int level, u8 link_id, const char *title, const void *buf,
+ size_t len);
static inline void wpa_hexdump_buf(int level, const char *title,
const struct wpabuf *buf)
@@ -107,6 +111,8 @@ static inline void wpa_hexdump_buf(int level, const char *title,
* etc.) in debug output.
*/
void wpa_hexdump_key(int level, const char *title, const void *buf, size_t len);
+void wpa_hexdump_link_key(int level, u8 link_id, const char *title,
+ const void *buf, size_t len);
static inline void wpa_hexdump_buf_key(int level, const char *title,
const struct wpabuf *buf)
--
2.25.1
More information about the Hostap
mailing list