[PATCH 82/92] wpa_supplicant: Move NAN notifications to notify.c

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 22 05:24:13 PDT 2026


Move all NAN notifications to notify.c to simplify future extensions for
other notification APIs.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 wpa_supplicant/nan_supplicant.c |  91 ++++++-----------------
 wpa_supplicant/notify.c         | 124 ++++++++++++++++++++++++++++++++
 wpa_supplicant/notify.h         |  24 +++++++
 3 files changed, 170 insertions(+), 69 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 432e752fc3..acebae9157 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -333,39 +333,22 @@ wpas_nan_ndp_action_notif_cb(void *ctx,
 			     struct nan_ndp_action_notif_params *params)
 {
 	struct wpa_supplicant *wpa_s = ctx;
-	char *ssi_hex = NULL;
-
-	if (params->ssi) {
-		size_t len = 2 * params->ssi_len + 1;
-
-		ssi_hex = os_zalloc(len);
-		if (!ssi_hex)
-			return;
-
-		wpa_snprintf_hex(ssi_hex, len, params->ssi, params->ssi_len);
-	}
 
 	if (params->is_request) {
-		wpa_msg_global(wpa_s, MSG_INFO,
-			       NAN_NDP_REQUEST "peer_nmi=" MACSTR
-			       " init_ndi=" MACSTR
-			       " ndp_id=%u publish_inst_id=%u ssi=%s csid=%u",
-			       MAC2STR(params->ndp_id.peer_nmi),
-			       MAC2STR(params->ndp_id.init_ndi),
-			       params->ndp_id.id,
-			       params->publish_inst_id,
-			       ssi_hex ? ssi_hex : "", params->csid);
+		wpas_notify_nan_ndp_request(wpa_s, params->ndp_id.peer_nmi,
+					    params->ndp_id.init_ndi,
+					    params->ndp_id.id,
+					    params->publish_inst_id,
+					    params->ssi, params->ssi_len,
+					    params->csid);
 	} else {
-		wpa_msg_global(wpa_s, MSG_INFO,
-			       NAN_NDP_COUNTER_REQUEST "peer_nmi=" MACSTR
-			       " init_ndi=" MACSTR
-			       " ndp_id=%u ssi=%s",
-			       MAC2STR(params->ndp_id.peer_nmi),
-			       MAC2STR(params->ndp_id.init_ndi),
-			       params->ndp_id.id, ssi_hex ? ssi_hex : "");
+		wpas_notify_nan_ndp_counter_request(wpa_s,
+						    params->ndp_id.peer_nmi,
+						    params->ndp_id.init_ndi,
+						    params->ndp_id.id,
+						    params->ssi,
+						    params->ssi_len);
 	}
-
-       os_free(ssi_hex);
 }
 
 
@@ -595,7 +578,6 @@ static int wpas_nan_ndp_connected_cb(void *ctx,
 				     struct nan_ndp_connection_params *params)
 {
 	struct wpa_supplicant *wpa_s = ctx;
-	char *ssi_hex = NULL;
 
 	if (wpas_nan_add_ndi_sta(wpa_s, params->ndp_id.peer_nmi,
 				 params->local_ndi, params->peer_ndi,
@@ -606,23 +588,10 @@ static int wpas_nan_ndp_connected_cb(void *ctx,
 		return -1;
 	}
 
-	if (params->ssi) {
-		size_t len = 2 * params->ssi_len + 1;
-
-		ssi_hex = os_zalloc(len);
-		if (!ssi_hex)
-			return -1;
-
-		wpa_snprintf_hex(ssi_hex, len, params->ssi, params->ssi_len);
-	}
-
-	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_CONNECTED "peer=" MACSTR
-		       " ndp_id=%u local_ndi=" MACSTR
-		       " peer_ndi=" MACSTR " ssi=%s",
-		       MAC2STR(params->ndp_id.peer_nmi), params->ndp_id.id,
-		       MAC2STR(params->local_ndi), MAC2STR(params->peer_ndi),
-		       ssi_hex ? ssi_hex : "");
-       os_free(ssi_hex);
+	wpas_notify_nan_ndp_connected(wpa_s, params->ndp_id.peer_nmi,
+				      params->ndp_id.id,
+				      params->local_ndi, params->peer_ndi,
+				      params->ssi, params->ssi_len);
 
        return 0;
 }
@@ -636,11 +605,9 @@ static void wpas_nan_ndp_disconnected_cb(void *ctx, struct nan_ndp_id *ndp_id,
 	struct wpa_supplicant *wpa_s = ctx;
 
 	wpas_nan_remove_ndi_sta(wpa_s, local_ndi, peer_ndi);
-	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_DISCONNECTED
-		       "peer=" MACSTR " ndp_id=%u local_ndi=" MACSTR
-		       " peer_ndi=" MACSTR " reason=%u",
-		       MAC2STR(ndp_id->peer_nmi), ndp_id->id,
-		       MAC2STR(local_ndi), MAC2STR(peer_ndi), reason);
+	wpas_notify_nan_ndp_disconnected(wpa_s, ndp_id->peer_nmi,
+					 ndp_id->id, local_ndi, peer_ndi,
+					 reason);
 }
 
 
@@ -879,22 +846,9 @@ static int wpas_nan_pasn_auth_status_cb(void *ctx, const u8 *peer_addr,
 	struct wpa_supplicant *wpa_s = ctx;
 	enum wpa_alg alg;
 	u8 seq[6];
-	char nd_pmk_hex[2 * PMK_LEN + 1];
-
-	if (nd_pmk)
-		wpa_snprintf_hex(nd_pmk_hex, sizeof(nd_pmk_hex), nd_pmk,
-				 PMK_LEN);
-	else
-		nd_pmk_hex[0] = '\0';
 
-	wpa_msg_global(wpa_s, MSG_INFO,
-		       NAN_PAIRING_STATUS "addr=" MACSTR " akmp=%s cipher=%s status=%s%s%s",
-		       MAC2STR(peer_addr),
-		       wpa_key_mgmt_txt(akmp, WPA_PROTO_RSN),
-		       wpa_cipher_txt(cipher),
-		       status == WLAN_STATUS_SUCCESS ? "success" : "failure",
-		       nd_pmk ? " nd_pmk=" : "",
-		       nd_pmk ? nd_pmk_hex : "");
+	wpas_notify_nan_pairing_status(wpa_s, peer_addr, akmp, cipher,
+				       status, nd_pmk);
 
 	if (status != WLAN_STATUS_SUCCESS)
 		return 0;
@@ -2836,8 +2790,7 @@ void wpas_nan_cluster_join(struct wpa_supplicant *wpa_s,
 	if (!wpas_nan_ready(wpa_s))
 		return;
 
-	wpa_msg_global(wpa_s, MSG_INFO, NAN_CLUSTER_JOIN "cluster_id=" MACSTR
-		       " new=%d", MAC2STR(cluster_id), new_cluster);
+	wpas_notify_nan_cluster_join(wpa_s, cluster_id, new_cluster);
 
 	nan_de_set_cluster_id(wpa_s->nan_de, cluster_id);
 	nan_set_cluster_id(wpa_s->nan, cluster_id);
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 3e122ed7fe..80545c456d 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -1340,6 +1340,130 @@ void wpas_notify_nan_pairing_request(struct wpa_supplicant *wpa_s,
 		       MAC2STR(peer_nmi), csid, instance_id);
 }
 
+
+void wpas_notify_nan_ndp_request(struct wpa_supplicant *wpa_s,
+				 const u8 *peer_nmi, const u8 *init_ndi,
+				 u32 ndp_id, u8 publish_inst_id,
+				 const u8 *ssi, size_t ssi_len, u32 csid)
+{
+	char *ssi_hex = NULL;
+
+	if (ssi) {
+		ssi_hex = os_zalloc(2 * ssi_len + 1);
+		if (!ssi_hex)
+			return;
+
+		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
+	}
+
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_REQUEST "peer_nmi=" MACSTR
+		       " init_ndi=" MACSTR
+		       " ndp_id=%u publish_inst_id=%u ssi=%s csid=%u",
+		       MAC2STR(peer_nmi), MAC2STR(init_ndi),
+		       ndp_id, publish_inst_id,
+		       ssi_hex ? ssi_hex : "", csid);
+
+	os_free(ssi_hex);
+}
+
+
+void wpas_notify_nan_ndp_counter_request(struct wpa_supplicant *wpa_s,
+					 const u8 *peer_nmi,
+					 const u8 *init_ndi, u32 ndp_id,
+					 const u8 *ssi, size_t ssi_len)
+{
+	char *ssi_hex = NULL;
+
+	if (ssi) {
+		ssi_hex = os_zalloc(2 * ssi_len + 1);
+		if (!ssi_hex)
+			return;
+
+		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi,
+				 ssi_len);
+	}
+
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_COUNTER_REQUEST
+		       "peer_nmi=" MACSTR " init_ndi=" MACSTR
+		       " ndp_id=%u ssi=%s",
+		       MAC2STR(peer_nmi), MAC2STR(init_ndi),
+		       ndp_id, ssi_hex ? ssi_hex : "");
+
+	os_free(ssi_hex);
+}
+
+
+void wpas_notify_nan_ndp_connected(struct wpa_supplicant *wpa_s,
+				   const u8 *peer_nmi, u32 ndp_id,
+				   const u8 *local_ndi,
+				   const u8 *peer_ndi,
+				   const u8 *ssi, size_t ssi_len)
+{
+	char *ssi_hex = NULL;
+
+	if (ssi) {
+		ssi_hex = os_zalloc(2 * ssi_len + 1);
+		if (!ssi_hex)
+			return;
+
+		wpa_snprintf_hex(ssi_hex, 2 * ssi_len + 1, ssi, ssi_len);
+	}
+
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_CONNECTED "peer=" MACSTR
+		       " ndp_id=%u local_ndi=" MACSTR
+		       " peer_ndi=" MACSTR " ssi=%s",
+		       MAC2STR(peer_nmi), ndp_id, MAC2STR(local_ndi),
+		       MAC2STR(peer_ndi), ssi_hex ? ssi_hex : "");
+
+	os_free(ssi_hex);
+}
+
+
+void wpas_notify_nan_ndp_disconnected(struct wpa_supplicant *wpa_s,
+				      const u8 *peer_nmi, u32 ndp_id,
+				      const u8 *local_ndi,
+				      const u8 *peer_ndi,
+				      enum nan_reason reason)
+{
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_NDP_DISCONNECTED
+		       "peer=" MACSTR " ndp_id=%u local_ndi=" MACSTR
+		       " peer_ndi=" MACSTR " reason=%u",
+		       MAC2STR(peer_nmi), ndp_id,
+		       MAC2STR(local_ndi), MAC2STR(peer_ndi), reason);
+}
+
+
+void wpas_notify_nan_cluster_join(struct wpa_supplicant *wpa_s,
+				  const u8 *cluster_id, bool new_cluster)
+{
+	wpa_msg_global(wpa_s, MSG_INFO, NAN_CLUSTER_JOIN "cluster_id=" MACSTR
+		       " new=%d", MAC2STR(cluster_id), new_cluster);
+}
+
+
+void wpas_notify_nan_pairing_status(struct wpa_supplicant *wpa_s,
+				    const u8 *peer_addr, int akmp,
+				    int cipher, u8 status,
+				    const u8 *nd_pmk)
+{
+	char nd_pmk_hex[2 * PMK_LEN + 1];
+
+	if (nd_pmk)
+		wpa_snprintf_hex(nd_pmk_hex, sizeof(nd_pmk_hex), nd_pmk,
+				 PMK_LEN);
+	else
+		nd_pmk_hex[0] = '\0';
+
+	wpa_msg_global(wpa_s, MSG_INFO,
+		       NAN_PAIRING_STATUS "addr=" MACSTR " akmp=%s cipher=%s status=%s%s%s",
+		       MAC2STR(peer_addr),
+		       wpa_key_mgmt_txt(akmp, WPA_PROTO_RSN),
+		       wpa_cipher_txt(cipher),
+		       status == WLAN_STATUS_SUCCESS ? "success" : "failure",
+		       nd_pmk ? " nd_pmk=" : "",
+		       nd_pmk ? nd_pmk_hex : "");
+}
+
 #endif /* CONFIG_NAN || CONFIG_NAN_USD */
 
 
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index 3b1517d91b..2ef2b59d32 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -233,5 +233,29 @@ void wpas_notify_nan_bootstrap_failure(struct wpa_supplicant *wpa_s,
 void wpas_notify_nan_pairing_request(struct wpa_supplicant *wpa_s,
 				     const u8 *peer_nmi, u8 csid,
 				     u8 instance_id);
+void wpas_notify_nan_ndp_request(struct wpa_supplicant *wpa_s,
+				 const u8 *peer_nmi, const u8 *init_ndi,
+				 u32 ndp_id, u8 publish_inst_id,
+				 const u8 *ssi, size_t ssi_len, u32 csid);
+void wpas_notify_nan_ndp_counter_request(struct wpa_supplicant *wpa_s,
+					 const u8 *peer_nmi,
+					 const u8 *init_ndi, u32 ndp_id,
+					 const u8 *ssi, size_t ssi_len);
+void wpas_notify_nan_ndp_connected(struct wpa_supplicant *wpa_s,
+				   const u8 *peer_nmi, u32 ndp_id,
+				   const u8 *local_ndi,
+				   const u8 *peer_ndi,
+				   const u8 *ssi, size_t ssi_len);
+void wpas_notify_nan_ndp_disconnected(struct wpa_supplicant *wpa_s,
+				      const u8 *peer_nmi, u32 ndp_id,
+				      const u8 *local_ndi,
+				      const u8 *peer_ndi,
+				      enum nan_reason reason);
+void wpas_notify_nan_cluster_join(struct wpa_supplicant *wpa_s,
+				  const u8 *cluster_id, bool new_cluster);
+void wpas_notify_nan_pairing_status(struct wpa_supplicant *wpa_s,
+				    const u8 *peer_addr, int akmp,
+				    int cipher, u8 status,
+				    const u8 *nd_pmk);
 
 #endif /* NOTIFY_H */
-- 
2.53.0




More information about the Hostap mailing list