[PATCH 70/71] NAN: Report supported bootstrapping methods in NAN_PEER_INFO
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Wed Apr 1 15:02:19 PDT 2026
Peer's supported pairing bootstrapping methods are required by the
intiator to properly select the bootstrap method. Report it in
NAN_PEER_INFO command.
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
src/nan/nan.h | 3 +++
src/nan/nan_bootstrap.c | 29 +++++++++++++++++++++++++++++
wpa_supplicant/nan_supplicant.c | 17 +++++++++++++++--
3 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/src/nan/nan.h b/src/nan/nan.h
index 904af0fdf4..95c1f784d0 100644
--- a/src/nan/nan.h
+++ b/src/nan/nan.h
@@ -597,6 +597,9 @@ int nan_bootstrap_request(struct nan_data *nan, int handle,
const u8 *peer_addr, u8 req_instance_id, u16 pbm,
bool auth);
int nan_bootstrap_peer_reset(struct nan_data *nan, const u8 *peer_nmi);
+int nan_bootstrap_get_supported_methods(struct nan_data *nan,
+ const u8 *peer_nmi,
+ u16 *supported_methods);
bool nan_publish_instance_id_valid(struct nan_data *nan, u8 instance_id,
u8 *service_id);
diff --git a/src/nan/nan_bootstrap.c b/src/nan/nan_bootstrap.c
index 561fea5ebc..f4e56cad14 100644
--- a/src/nan/nan_bootstrap.c
+++ b/src/nan/nan_bootstrap.c
@@ -684,3 +684,32 @@ int nan_bootstrap_peer_reset(struct nan_data *nan, const u8 *peer_nmi)
nan_bootstrap_reset(nan, peer);
return 0;
}
+
+
+/*
+ * nan_bootstrap_get_supported_methods - Get supported bootstrap methods for peer
+ *
+ * @nan: NAN module context from nan_init()
+ * @peer_nmi: Peer address
+ * @supported_methods: Pointer to store the supported methods bitmap
+ * Returns: 0 on success, -1 on failure
+ */
+int nan_bootstrap_get_supported_methods(struct nan_data *nan,
+ const u8 *peer_nmi,
+ u16 *supported_methods)
+{
+ struct nan_peer *peer;
+
+ if (!nan || !nan->nan_started || !supported_methods)
+ return -1;
+
+ peer = nan_get_peer(nan, peer_nmi);
+ if (!peer) {
+ wpa_printf(MSG_DEBUG,
+ "NAN: Bootstrap: Get supported methods for unknown peer");
+ return -1;
+ }
+
+ *supported_methods = peer->bootstrap.supported_methods;
+ return 0;
+}
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 993486f76f..da5090f779 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -2386,8 +2386,21 @@ int wpas_nan_peer_info(struct wpa_supplicant *wpa_s, const char *cmd,
"capabilities=0x%02x\n", capa->capa);
ret = written;
- }
- else {
+ } else if (os_strncmp(pos + 1, "bootstrap", 9) == 0) {
+ u16 supported_methods;
+
+ if (nan_bootstrap_get_supported_methods(wpa_s->nan, addr,
+ &supported_methods) < 0) {
+ wpa_printf(MSG_DEBUG,
+ "NAN: Failed to get bootstrap methods for peer "
+ MACSTR, MAC2STR(addr));
+ return -1;
+ }
+
+ ret = wpa_scnprintf(reply, reply_size,
+ "supported_methods=0x%04x\n",
+ supported_methods);
+ } else {
wpa_printf(MSG_DEBUG, "NAN: Unknown info type: %s", pos + 1);
return -1;
}
--
2.53.0
More information about the Hostap
mailing list