[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