[PATCH 59/92] NAN: Add an indication that a peer is paired

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


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

Add a function for other modules to check if the peer is paired.
This can be used to decide whether frames sent to the peer
should be protected.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 src/nan/nan.h         |  7 +++++++
 src/nan/nan_i.h       |  2 ++
 src/nan/nan_pairing.c | 14 ++++++++++++++
 3 files changed, 23 insertions(+)

diff --git a/src/nan/nan.h b/src/nan/nan.h
index 4225b8fb78..a9bdcf9d67 100644
--- a/src/nan/nan.h
+++ b/src/nan/nan.h
@@ -739,6 +739,7 @@ int nan_pairing_set_pairing_setup(struct nan_data *nan_data, bool value);
 int nan_pairing_set_npk_caching(struct nan_data *nan_data, bool value);
 int nan_pairing_set_pairing_verification(struct nan_data *nan_data, bool value);
 int nan_pairing_set_cipher_suites(struct nan_data *nan_data, u32 value);
+bool nan_pairing_is_peer_paired(struct nan_data *nan_data, const u8 *peer_addr);
 #else
 static inline int nan_pairing_add_attrs(struct nan_data *nan_data,
 					struct wpabuf *buf)
@@ -768,6 +769,12 @@ static inline int nan_pairing_auth_rx(struct nan_data *nan_data,
 {
 	return -1;
 }
+
+static inline
+bool nan_pairing_is_peer_paired(struct nan_data *nan_data, const u8 *peer_addr)
+{
+	return false;
+}
 #endif /* CONFIG_PASN */
 
 #endif /* NAN_H */
diff --git a/src/nan/nan_i.h b/src/nan/nan_i.h
index 9c6ff10cab..667bc3b480 100644
--- a/src/nan/nan_i.h
+++ b/src/nan/nan_i.h
@@ -473,6 +473,8 @@ enum nan_pairing_role {
 
 /* Current pairing uses pairing verification */
 #define NAN_PAIRING_FLAG_NPK_VERIFICATION BIT(0)
+/* Peer is paired */
+#define NAN_PAIRING_FLAG_PAIRED BIT(1)
 
 /**
  * struct nan_pairing_peer_data - NAN pairing peer information
diff --git a/src/nan/nan_pairing.c b/src/nan/nan_pairing.c
index 840044357f..185a9e92a1 100644
--- a/src/nan/nan_pairing.c
+++ b/src/nan/nan_pairing.c
@@ -587,6 +587,8 @@ static void nan_pairing_done(struct nan_data *nan_data, struct nan_peer *peer)
 	u8 *initiator_nmi, *responder_nmi;
 	int ret;
 
+	peer->pairing.flags |= NAN_PAIRING_FLAG_PAIRED;
+
 	if (!nan_data->cfg->pairing_cfg.npk_caching ||
 	    !peer->pairing.pairing_cfg.npk_caching ||
 	    peer->pairing.flags & NAN_PAIRING_FLAG_NPK_VERIFICATION)
@@ -1375,3 +1377,15 @@ int nan_pairing_set_cipher_suites(struct nan_data *nan, u32 value)
 	nan->cfg->pairing_cfg.cipher_suites = value;
 	return 0;
 }
+
+
+bool nan_pairing_is_peer_paired(struct nan_data *nan_data, const u8 *peer_addr)
+{
+	struct nan_peer *peer;
+
+	peer = nan_get_peer(nan_data, peer_addr);
+	if (!peer)
+		return 0;
+
+	return !!(peer->pairing.flags & NAN_PAIRING_FLAG_PAIRED);
+}
-- 
2.53.0




More information about the Hostap mailing list