[RFC v2 67/99] wpa_supplicant: Add NAN data path events

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Dec 23 03:52:11 PST 2025


Notify about NAN data path events (NAN-NDP-REQUEST, NAN-NDP-CONNECTED,
NAN-NDP-DISCONNECTED, NAN-NDP-COUNTER-REQUEST) via control interface.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 src/common/wpa_ctrl.h           |  4 ++
 wpa_supplicant/nan_supplicant.c | 74 ++++++++++++++++++++++++++-------
 2 files changed, 64 insertions(+), 14 deletions(-)

diff --git a/src/common/wpa_ctrl.h b/src/common/wpa_ctrl.h
index 963d304213..3c4f8f9f68 100644
--- a/src/common/wpa_ctrl.h
+++ b/src/common/wpa_ctrl.h
@@ -247,6 +247,10 @@ extern "C" {
 #define NAN_SUBSCRIBE_TERMINATED "NAN-SUBSCRIBE-TERMINATED "
 #define NAN_RECEIVE "NAN-RECEIVE "
 #define NAN_CLUSTER_JOIN "NAN-CLUSTER-JOIN "
+#define NAN_NDP_REQUEST "NAN-NDP-REQUEST "
+#define NAN_NDP_COUNTER_REQUEST "NAN-NDP-COUNTER-REQUEST "
+#define NAN_NDP_CONNECTED "NAN-NDP-CONNECTED "
+#define NAN_NDP_DISCONNECTED "NAN-NDP-DISCONNECTED "
 
 /* MESH events */
 #define MESH_GROUP_STARTED "MESH-GROUP-STARTED "
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index b409da4f3d..b231628b5f 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -167,31 +167,77 @@ static void wpas_nan_stop_cb(void *ctx)
 static void wpas_nan_ndp_action_notif_cb(void *ctx,
 					 struct nan_ndp_action_notif_params *params)
 {
-	wpa_printf(MSG_DEBUG, "NAN: NDP action notification - peer=" MACSTR
-		   " ndp_id=%u ndp_status=%u ndl_status=%u publish_inst_id=%u",
-		   MAC2STR(params->ndp_id.peer_nmi), params->ndp_id.id,
-		   params->ndp_status, params->ndl_status, params->publish_inst_id);
+	struct wpa_supplicant *wpa_s = ctx;
+	char *ssi_hex = NULL;
+
+	if (params->ssi) {
+		ssi_hex = os_zalloc(2 * params->ssi_len + 1);
+		if (!ssi_hex)
+			return;
+
+		wpa_snprintf_hex(ssi_hex, 2 * params->ssi_len + 1, params->ssi,
+				 params->ssi_len);
+	}
+
+	if (params->is_request) {
+		wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_REQUEST "peer_nmi=" MACSTR
+				" init_ndi=" MACSTR
+				" ndp_id=%u publish_inst_id=%u ssi=%s csid=%u",
+				MAC2STR(params->ndp_id.peer_nmi),
+				MAC2STR(params->ndp_id.init_ndi),
+				params->ndp_id.id,
+				params->publish_inst_id,
+				ssi_hex ? ssi_hex : "", params->csid);
+	} else {
+		wpa_msg_global(wpa_s, MSG_INFO,
+			       NAN_NDP_COUNTER_REQUEST
+			       "peer_nmi=" MACSTR
+			       " init_ndi=" MACSTR
+			       " ndp_id=%u ssi=%s",
+			       MAC2STR(params->ndp_id.peer_nmi),
+			       MAC2STR(params->ndp_id.init_ndi),
+			       params->ndp_id.id, ssi_hex);
+	}
+
+       os_free(ssi_hex);
 }
 
 
 static void wpas_nan_ndp_connected_cb(void *ctx,
 				      struct nan_ndp_connection_params *params)
 {
-	wpa_printf(MSG_DEBUG, "NAN: NDP connected - peer=" MACSTR
-		   " ndp_id=%u local_ndi=" MACSTR " peer_ndi=" MACSTR,
-		   MAC2STR(params->ndp_id.peer_nmi), params->ndp_id.id,
-		   MAC2STR(params->local_ndi), MAC2STR(params->peer_ndi));
+	struct wpa_supplicant *wpa_s = ctx;
+	char *ssi_hex = NULL;
+
+	if (params->ssi) {
+		ssi_hex = os_zalloc(2 * params->ssi_len + 1);
+		if (!ssi_hex)
+			return;
+		wpa_snprintf_hex(ssi_hex, 2 * params->ssi_len + 1, params->ssi,
+				 params->ssi_len);
+	}
+
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_CONNECTED
+		       "peer=" MACSTR " ndp_id=%u local_ndi=" MACSTR
+		       " peer_ndi=" MACSTR " ssi=%s",
+		       MAC2STR(params->ndp_id.peer_nmi), params->ndp_id.id,
+		       MAC2STR(params->local_ndi), MAC2STR(params->peer_ndi),
+		       ssi_hex ? ssi_hex : "");
+       os_free(ssi_hex);
 }
 
 
 static void wpas_nan_ndp_disconnected_cb(void *ctx, struct nan_ndp_id *ndp_id,
-					 const u8 *local_ndi, const u8 *peer_ndi,
-					 enum nan_reason reason)
+					  const u8 *local_ndi, const u8 *peer_ndi,
+					  enum nan_reason reason)
 {
-	wpa_printf(MSG_DEBUG, "NAN: NDP disconnected - peer=" MACSTR
-		   " ndp_id=%u local_ndi=" MACSTR " peer_ndi=" MACSTR " reason=%u",
-		   MAC2STR(ndp_id->peer_nmi), ndp_id->id,
-		   MAC2STR(local_ndi), MAC2STR(peer_ndi), reason);
+	struct wpa_supplicant *wpa_s = ctx;
+
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_DISCONNECTED
+		       "peer=" MACSTR " ndp_id=%u local_ndi=" MACSTR
+		       " peer_ndi=" MACSTR " reason=%u",
+		       MAC2STR(ndp_id->peer_nmi), ndp_id->id,
+		       MAC2STR(local_ndi), MAC2STR(peer_ndi), reason);
 }
 
 
-- 
2.49.0




More information about the Hostap mailing list