Patchwork [v2] supplicant: Print human readable event names.

login
register
mail settings
Submitter Ben Greear
Date Nov. 11, 2011, 1:03 a.m.
Message ID <1320973408-29041-1-git-send-email-greearb@candelatech.com>
Download mbox | patch
Permalink /patch/125038/
State Accepted
Commit 6c3771d7d5b99cb6de389a0f28db3dfcc71694ba
Headers show

Comments

Ben Greear - Nov. 11, 2011, 1:03 a.m.
From: Ben Greear <greearb@candelatech.com>

This makes it easier to understand the event related
logs.

Also, print re-entrancy depth in the event handler.
I'm suspicious that it could be called in a re-entrant
manner if netlink events are received & processed as
part of another event.

Signed-hostap: Ben Greear <greearb@candelatech.com>
---
:100644 100644 06f2db3... f9b4361... M	src/drivers/driver.h
:000000 100644 0000000... e646af2... A	src/drivers/driver_common.c
:100644 100644 3641a58... 917b0a7... M	wpa_supplicant/Makefile
:100644 100644 9a0663b... 719555c... M	wpa_supplicant/events.c
 src/drivers/driver.h        |    4 ++
 src/drivers/driver_common.c |   72 +++++++++++++++++++++++++++++++++++++++++++
 wpa_supplicant/Makefile     |    2 +
 wpa_supplicant/events.c     |    9 +++--
 4 files changed, 83 insertions(+), 4 deletions(-)
Jouni Malinen - Nov. 13, 2011, 5:09 p.m.
On Thu, Nov 10, 2011 at 05:03:28PM -0800, greearb@candelatech.com wrote:
> This makes it easier to understand the event related
> logs.

Thanks, applied. Though, this would have broken number of builds
(wpa_supplicant/Makefile is not the only build related file that needs
updating for new files). I ended up doing a separate commit to add the
new driver_common.c file with the build files updated and then applied
your changes to add event_to_string() into that.

> Also, print re-entrancy depth in the event handler.
> I'm suspicious that it could be called in a re-entrant
> manner if netlink events are received & processed as
> part of another event.

This should not really be in the commit message anymore..
Ben Greear - Nov. 14, 2011, 6:41 p.m.
On 11/13/2011 09:09 AM, Jouni Malinen wrote:
> On Thu, Nov 10, 2011 at 05:03:28PM -0800, greearb@candelatech.com wrote:
>> This makes it easier to understand the event related
>> logs.
>
> Thanks, applied. Though, this would have broken number of builds
> (wpa_supplicant/Makefile is not the only build related file that needs
> updating for new files). I ended up doing a separate commit to add the
> new driver_common.c file with the build files updated and then applied
> your changes to add event_to_string() into that.

Thanks for fixing the makefile omissions and accepting this
patch.

I'm going to post two more patches from my queue.  Both have
been posted before, but had no comment.  If you simply do
not want to accept these patches at this time, just let
me know and I'll quit posting them.  Otherwise, I'm
going to try to keep drip-feeding my patches upstream
a few at a time.

Thanks,
Ben

Patch

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 06f2db3..f9b4361 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -3456,6 +3456,10 @@  void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
 			  union wpa_event_data *data);
 
 
+/* Convert wpa_event_type to a string for logging. */
+const char* event_to_string(enum wpa_event_type event);
+
+
 /*
  * The following inline functions are provided for convenience to simplify
  * event indication for some of the common events.
diff --git a/src/drivers/driver_common.c b/src/drivers/driver_common.c
new file mode 100644
index 0000000..e646af2
--- /dev/null
+++ b/src/drivers/driver_common.c
@@ -0,0 +1,72 @@ 
+/*
+ * Common driver-related functions.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+
+#include "includes.h"
+#include "../utils/common.h"
+#include "driver.h"
+
+const char* event_to_string(enum wpa_event_type event)
+{
+	switch (event) {
+	case EVENT_ASSOC: return "ASSOC";
+	case EVENT_DISASSOC: return "DISASSOC";
+	case EVENT_MICHAEL_MIC_FAILURE: return "MICHAEL_MIC_FAILURE";
+	case EVENT_SCAN_RESULTS: return "SCAN_RESULTS";
+	case EVENT_ASSOCINFO: return "ASSOCINFO";
+	case EVENT_INTERFACE_STATUS: return "INTERFACE_STATUS";
+	case EVENT_PMKID_CANDIDATE: return "PMKID_CANDIDATE";
+	case EVENT_STKSTART: return "STKSTART";
+	case EVENT_TDLS: return "TDLS";
+	case EVENT_FT_RESPONSE: return "FT_RESPONSE";
+	case EVENT_IBSS_RSN_START: return "IBSS_RSN_START";
+	case EVENT_AUTH: return "AUTH";
+	case EVENT_DEAUTH: return "DEAUTH";
+	case EVENT_ASSOC_REJECT: return "ASSOC_REJECT";
+	case EVENT_AUTH_TIMED_OUT: return "AUTH_TIMED_OUT";
+	case EVENT_ASSOC_TIMED_OUT: return "ASSOC_TIMED_OUT";
+	case EVENT_FT_RRB_RX: return "FT_RRB_RX";
+	case EVENT_WPS_BUTTON_PUSHED: return "WPS_BUTTON_PUSHED";
+	case EVENT_TX_STATUS: return "TX_STATUS";
+	case EVENT_RX_FROM_UNKNOWN: return "RX_FROM_UNKNOWN";
+	case EVENT_RX_MGMT: return "RX_MGMT";
+	case EVENT_RX_ACTION: return "RX_ACTION";
+	case EVENT_REMAIN_ON_CHANNEL: return "REMAIN_ON_CHANNEL";
+	case EVENT_CANCEL_REMAIN_ON_CHANNEL: return "CANCEL_ROC";
+	case EVENT_MLME_RX: return "MLME_RX";
+	case EVENT_RX_PROBE_REQ: return "RX_PROBE_REQ";
+	case EVENT_NEW_STA: return "NEW_STA";
+	case EVENT_EAPOL_RX: return "EAPOL_RX";
+	case EVENT_SIGNAL_CHANGE: return "SIGNAL_CHANGE";
+	case EVENT_INTERFACE_ENABLED: return "IFACE_ENABLED";
+	case EVENT_INTERFACE_DISABLED: return "IFACE_DISABLED";
+	case EVENT_CHANNEL_LIST_CHANGED: return "CHANNEL_LIST_CHANGED";
+	case EVENT_INTERFACE_UNAVAILABLE: return "INTERFACE_UNAVAILABLE";
+	case EVENT_BEST_CHANNEL: return "BEST_CHANNEL";
+	case EVENT_UNPROT_DEAUTH: return "UNPROT_DEAUTH";
+	case EVENT_UNPROT_DISASSOC: return "UNPROT_DISASSOC";
+	case EVENT_STATION_LOW_ACK: return "STA_LOW_ACK";
+	case EVENT_P2P_DEV_FOUND: return "P2P_DEV_FOUND";
+	case EVENT_P2P_GO_NEG_REQ_RX: return "P2P_GO_NEG_REQ_RX";
+	case EVENT_P2P_GO_NEG_COMPLETED: return "P2P_GO_NEG_COMPLETED";
+	case EVENT_P2P_PROV_DISC_REQUEST: return "P2P_PROV_DISC_REQUEST";
+	case EVENT_P2P_PROV_DISC_RESPONSE: return "P2P_PROV_DISC_RESPONSE";
+	case EVENT_P2P_SD_REQUEST: return "P2P_SD_REQUEST";
+	case EVENT_P2P_SD_RESPONSE: return "P2P_SD_RESPONSE";
+	case EVENT_IBSS_PEER_LOST: return "IBSS_PEER_LOST";
+	case EVENT_DRIVER_GTK_REKEY: return "DRIVER_GTK_REKEY";
+	case EVENT_SCHED_SCAN_STOPPED: return "SCHED_SCAN_STOPPED";
+	case EVENT_DRIVER_CLIENT_POLL_OK: return "CLIENT_POLL_OK";
+
+	default: return "UNKNOWN";
+	}
+}
diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile
index 3641a58..917b0a7 100644
--- a/wpa_supplicant/Makefile
+++ b/wpa_supplicant/Makefile
@@ -1321,6 +1321,8 @@  endif
 OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
 OBJS += $(CONFIG_MAIN).o
 
+OBJS += ../src/drivers/driver_common.o
+
 ifdef CONFIG_PRIVSEP
 OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
 OBJS_priv += $(OBJS_l2)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 9a0663b..719555c 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -1945,13 +1945,14 @@  void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
 	if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED &&
 	    event != EVENT_INTERFACE_ENABLED &&
 	    event != EVENT_INTERFACE_STATUS) {
-		wpa_dbg(wpa_s, MSG_DEBUG, "Ignore event %d while interface is "
-			"disabled", event);
+		wpa_dbg(wpa_s, MSG_DEBUG,
+			"Ignore event %s (%d) while interface is disabled",
+			event_to_string(event), event);
 		return;
 	}
 
-	wpa_dbg(wpa_s, MSG_DEBUG, "Event %d received on interface %s",
-		event, wpa_s->ifname);
+	wpa_dbg(wpa_s, MSG_DEBUG, "Event %s (%d) received",
+		event_to_string(event), event);
 
 	switch (event) {
 	case EVENT_AUTH: