[PATCH v3 04/46] ctrl_iface: Add forced_addr parameter to NAN_PUBLISH and NAN_SUBSCRIBE

Kavita Kavita kavita.kavita at oss.qualcomm.com
Wed May 13 02:59:28 PDT 2026


From: Peddolla Harshavardhan Reddy <peddolla.reddy at oss.qualcomm.com>

The NAN_PUBLISH and NAN_SUBSCRIBE control interface commands had no way
to specify a per-service transmitter address for NAN Service Discovery
Frames. Add a forced_addr parameter to both commands to allow the caller
to pass the desired transmitter address into the NAN Discovery Engine.

Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy at oss.qualcomm.com>
---
 wpa_supplicant/ctrl_iface.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 14b4cd9d2..d31acbef4 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -12795,6 +12795,7 @@ static int wpas_ctrl_nan_publish(struct wpa_supplicant *wpa_s, char *cmd,
 	int *cipher_list = NULL;
 	u8 nd_pmk[PMK_LEN];
 	bool p2p = false;
+	u8 forced_addr[ETH_ALEN];
 
 	os_memset(&params, 0, sizeof(params));
 	/* USD shall use both solicited and unsolicited transmissions */
@@ -12946,6 +12947,16 @@ static int wpas_ctrl_nan_publish(struct wpa_supplicant *wpa_s, char *cmd,
 			continue;
 		}
 
+		if (os_strncmp(token, "forced_addr=", 12) == 0) {
+			if (hwaddr_aton(token + 12, forced_addr)) {
+				wpa_printf(MSG_INFO,
+					   "CTRL: Invalid forced_addr");
+				goto fail;
+			}
+			params.forced_addr = forced_addr;
+			continue;
+		}
+
 		wpa_printf(MSG_INFO, "CTRL: Invalid NAN_PUBLISH parameter: %s",
 			   token);
 		goto fail;
@@ -13074,6 +13085,7 @@ static int wpas_ctrl_nan_subscribe(struct wpa_supplicant *wpa_s, char *cmd,
 	enum nan_service_protocol_type srv_proto_type = 0;
 	int *freq_list = NULL;
 	bool p2p = false;
+	u8 forced_addr[ETH_ALEN];
 
 	os_memset(&params, 0, sizeof(params));
 	params.freq = NAN_USD_DEFAULT_FREQ;
@@ -13189,6 +13201,16 @@ static int wpas_ctrl_nan_subscribe(struct wpa_supplicant *wpa_s, char *cmd,
 			continue;
 		}
 
+		if (os_strncmp(token, "forced_addr=", 12) == 0) {
+			if (hwaddr_aton(token + 12, forced_addr)) {
+				wpa_printf(MSG_INFO,
+					   "CTRL: Invalid forced_addr");
+				goto fail;
+			}
+			params.forced_addr = forced_addr;
+			continue;
+		}
+
 		wpa_printf(MSG_INFO,
 			   "CTRL: Invalid NAN_SUBSCRIBE parameter: %s",
 			   token);
-- 
2.34.1




More information about the Hostap mailing list