[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