From 497611074dd918b1a467d6db7409604f67350234 Mon Sep 17 00:00:00 2001 From: Peddolla Harshavardhan Reddy Date: Fri, 2 May 2025 13:07:03 +0530 Subject: [PATCH] PR: Update PR device MAC address on MAC address randomization Update the device MAC address in Proximity Ranging context when the MAC address of the the device changes. Signed-off-by: Peddolla Harshavardhan Reddy --- src/common/proximity_ranging.c | 7 +++++++ src/common/proximity_ranging.h | 1 + wpa_supplicant/pr_supplicant.c | 6 ++++++ wpa_supplicant/pr_supplicant.h | 5 +++++ wpa_supplicant/wpa_supplicant.c | 1 + 5 files changed, 20 insertions(+) diff --git a/src/common/proximity_ranging.c b/src/common/proximity_ranging.c index fe36f27f4..cc18e4d57 100644 --- a/src/common/proximity_ranging.c +++ b/src/common/proximity_ranging.c @@ -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; diff --git a/src/common/proximity_ranging.h b/src/common/proximity_ranging.h index 22794cc19..82204e840 100644 --- a/src/common/proximity_ranging.h +++ b/src/common/proximity_ranging.h @@ -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); diff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c index aa20cff01..125b404d0 100644 --- a/wpa_supplicant/pr_supplicant.c +++ b/wpa_supplicant/pr_supplicant.c @@ -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; diff --git a/wpa_supplicant/pr_supplicant.h b/wpa_supplicant/pr_supplicant.h index 891fef0df..a469f0afd 100644 --- a/wpa_supplicant/pr_supplicant.h +++ b/wpa_supplicant/pr_supplicant.h @@ -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) { } diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 1c17fe188..317ca3d57 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -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)); -- 2.47.3