[PATCH 28/34] PR: Update PR device mac address on mac randomization

Peddolla Harshavardhan Reddy peddolla at qti.qualcomm.com
Thu Jun 19 08:37:21 PDT 2025


Changes to simulate mac randomization. To validate the working of
changes related to Device Identity Key.

Signed-off-by: Peddolla Harshavardhan Reddy <peddolla at qti.qualcomm.com>
---
 src/common/proximity_ranging.c  | 7 +++++++
 src/common/proximity_ranging.h  | 1 +
 wpa_supplicant/pr_supplicant.c  | 6 ++++++
 wpa_supplicant/pr_supplicant.h  | 4 ++++
 wpa_supplicant/wpa_supplicant.c | 1 +
 5 files changed, 19 insertions(+)

diff --git a/src/common/proximity_ranging.c b/src/common/proximity_ranging.c
index 6fd8e7003..544cb9dfb 100644
--- a/src/common/proximity_ranging.c
+++ b/src/common/proximity_ranging.c
@@ -138,6 +138,13 @@ void pr_deinit(struct pr_data *pr)
 }
 
 
+void pr_set_dev_addr(struct pr_data *pr, const u8 *addr)
+{
+	if (pr && addr)
+		os_memcpy(pr->cfg->dev_addr, addr, ETH_ALEN);
+}
+
+
 void pr_clear_dev_iks(struct pr_data *pr)
 {
 	struct pr_device *dev;
diff --git a/src/common/proximity_ranging.h b/src/common/proximity_ranging.h
index e6943355f..77ce4cd49 100644
--- a/src/common/proximity_ranging.h
+++ b/src/common/proximity_ranging.h
@@ -442,6 +442,7 @@ struct operation_mode {
 
 struct pr_data * pr_init(const struct pr_config *cfg);
 void pr_deinit(struct pr_data *pr);
+void pr_set_dev_addr(struct pr_data *pr, const u8 *addr);
 void pr_clear_dev_iks(struct pr_data *pr);
 void pr_add_dev_ik(struct pr_data *pr, const u8 *dik, const char *password,
 		   const u8 *pmk, bool own);
diff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c
index 9385215b5..36cffcae6 100644
--- a/wpa_supplicant/pr_supplicant.c
+++ b/wpa_supplicant/pr_supplicant.c
@@ -245,6 +245,12 @@ void wpas_pr_deinit(struct wpa_supplicant *wpa_s)
 }
 
 
+void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s)
+{
+	pr_set_dev_addr(wpa_s->global->pr, wpa_s->own_addr);
+}
+
+
 void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s)
 {
 	struct pr_data *pr = wpa_s->global->pr;
diff --git a/wpa_supplicant/pr_supplicant.h b/wpa_supplicant/pr_supplicant.h
index 633de38b6..58b145788 100644
--- a/wpa_supplicant/pr_supplicant.h
+++ b/wpa_supplicant/pr_supplicant.h
@@ -15,6 +15,7 @@
 
 int wpas_pr_init(struct wpa_global *global, struct wpa_supplicant *wpa_s);
 void wpas_pr_deinit(struct wpa_supplicant *wpa_s);
+void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s);
 void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s);
 void wpas_pr_set_dev_ik(struct wpa_supplicant *wpa_s, const u8 *dik,
 			const char *password, const u8 *pmk, bool own);
@@ -42,6 +43,9 @@ static inline void wpas_pr_deinit(struct wpa_supplicant *wpa_s)
 {
 }
 
+static inline void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s)
+{
+}
 
 static inline void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s)
 {
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 1524794aa..57ada0a30 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -2635,6 +2635,7 @@ int wpas_update_random_addr(struct wpa_supplicant *wpa_s,
 	}
 
 	wpas_p2p_update_dev_addr(wpa_s);
+	wpas_pr_update_dev_addr(wpa_s);
 
 	wpa_msg(wpa_s, MSG_DEBUG, "Using random MAC address " MACSTR,
 		MAC2STR(addr));
-- 
2.34.1




More information about the Hostap mailing list