[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