]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
PR: Update PR device MAC address on MAC address randomization
authorPeddolla Harshavardhan Reddy <peddolla@qti.qualcomm.com>
Fri, 2 May 2025 07:37:03 +0000 (13:07 +0530)
committerJouni Malinen <j@w1.fi>
Fri, 17 Oct 2025 10:22:52 +0000 (13:22 +0300)
Update the device MAC address in Proximity Ranging context when the MAC
address of the the device changes.

Signed-off-by: Peddolla Harshavardhan Reddy <peddolla@qti.qualcomm.com>
src/common/proximity_ranging.c
src/common/proximity_ranging.h
wpa_supplicant/pr_supplicant.c
wpa_supplicant/pr_supplicant.h
wpa_supplicant/wpa_supplicant.c

index fe36f27f49e48b6c9e6eb8eea9556b29d1342824..cc18e4d571ebeccb08038f1d5d89c1ade79b9d6b 100644 (file)
@@ -148,6 +148,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;
index 22794cc1904ecd380cc8c2de4bca26c3574257b3..82204e840fec68e64e6e191db32a512ea0830ce0 100644 (file)
@@ -480,6 +480,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);
index aa20cff010ed541eee184a61d5e35882be15f535..125b404d0ce73bc559e0edeb8bfa20e123d2ed90 100644 (file)
@@ -427,6 +427,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;
index 891fef0dfda57d88d4dbfee4d8871a224c0eff70..a469f0afd5391c2444bbac62cacf228f860223fc 100644 (file)
@@ -14,6 +14,7 @@
 int wpas_pr_init(struct wpa_global *global, struct wpa_supplicant *wpa_s,
                 const struct wpa_driver_capa *capa);
 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);
@@ -44,6 +45,10 @@ 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)
 {
 }
index 1c17fe188e1e5ff37985b3b1dd64b9b4a5ee052d..317ca3d57d5e28d29d687d677b7f38c2cd450163 100644 (file)
@@ -2645,6 +2645,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));