[PATCH 54/92] wpa_supplicant: Add PMKIDs list to NAN-DISCOVERY-RESULT event

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 22 05:23:45 PDT 2026


From: Avraham Stern <avraham.stern at intel.com>

Extend the NAN-DISCOVERY-RESULT event with a list of PMKIDs available
for the service.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 wpa_supplicant/nan_supplicant.c |  3 ++-
 wpa_supplicant/notify.c         | 30 ++++++++++++++++++++++++++----
 wpa_supplicant/notify.h         |  3 ++-
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 47a33ddd1e..e33a41cef3 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -3145,7 +3145,8 @@ wpas_nan_de_discovery_result(void *ctx, int subscribe_id,
 
 	wpas_notify_nan_discovery_result(wpa_s, srv_proto_type, subscribe_id,
 					 peer_publish_id, peer_addr, fsd,
-					 fsd_gas, ssi, ssi_len);
+					 fsd_gas, ssi, ssi_len,
+					 pmkid_list, pmkid_count);
 }
 
 
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index b5a81cc564..6612b291b4 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -1105,21 +1105,43 @@ void wpas_notify_nan_discovery_result(struct wpa_supplicant *wpa_s,
 				      int subscribe_id, int peer_publish_id,
 				      const u8 *peer_addr,
 				      bool fsd, bool fsd_gas,
-				      const u8 *ssi, size_t ssi_len)
+				      const u8 *ssi, size_t ssi_len,
+				      const u8 *pmkid_list, size_t pmkid_count)
 {
-	char *ssi_hex;
+	char *ssi_hex, *pmkid_hex = NULL;
+	size_t i;
+	const size_t pmkid_hex_len = 2 * PMKID_LEN + 1;
 
 	ssi_hex = os_zalloc(2 * ssi_len + 1);
 	if (!ssi_hex)
 		return;
 	if (ssi)
 		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
+
+	if (pmkid_list && pmkid_count > 0) {
+		pmkid_hex = os_zalloc(pmkid_count * pmkid_hex_len);
+		if (pmkid_hex) {
+			for (i = 0; i < pmkid_count; i++) {
+				char *pos = &pmkid_hex[i * pmkid_hex_len];
+
+				wpa_snprintf_hex(pos, pmkid_hex_len,
+						 &pmkid_list[i * PMKID_LEN],
+						 PMKID_LEN);
+				if (i < pmkid_count - 1)
+					pos[2 * PMKID_LEN] = ',';
+			}
+		}
+	}
+
 	wpa_msg_global(wpa_s, MSG_INFO, NAN_DISCOVERY_RESULT
 		       "subscribe_id=%d publish_id=%d address=" MACSTR
-		       " fsd=%d fsd_gas=%d srv_proto_type=%u ssi=%s",
+		       " fsd=%d fsd_gas=%d srv_proto_type=%u ssi=%s%s%s",
 		       subscribe_id, peer_publish_id, MAC2STR(peer_addr),
-		       fsd, fsd_gas, srv_proto_type, ssi_hex);
+		       fsd, fsd_gas, srv_proto_type, ssi_hex,
+		       pmkid_hex ? " pmkid=" : "",
+		       pmkid_hex ? pmkid_hex : "");
 	os_free(ssi_hex);
+	os_free(pmkid_hex);
 
 	wpas_dbus_signal_nan_discovery_result(wpa_s, srv_proto_type,
 					      subscribe_id, peer_publish_id,
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index c3e8ef933a..8047b17d52 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -190,7 +190,8 @@ void wpas_notify_nan_discovery_result(struct wpa_supplicant *wpa_s,
 				      int subscribe_id, int peer_publish_id,
 				      const u8 *peer_addr,
 				      bool fsd, bool fsd_gas,
-				      const u8 *ssi, size_t ssi_len);
+				      const u8 *ssi, size_t ssi_len,
+				      const u8 *pmkid_list, size_t pmkid_count);
 void wpas_notify_nan_replied(struct wpa_supplicant *wpa_s,
 			     enum nan_service_protocol_type srv_proto_type,
 			     int publish_id, int peer_subscribe_id,
-- 
2.53.0




More information about the Hostap mailing list