From f13fd9d61f5a45cf9d5c473f157d29576a44dcb8 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Thu, 19 Mar 2020 15:59:00 -0700 Subject: [PATCH] netdev: honor handshake->spa if set In order to support AlwaysRandomizeAddress and AddressOverride, station will set the desired address into the handshake object. Then, netdev checks if this was done and will use that address rather than generate one. --- src/netdev.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/netdev.c b/src/netdev.c index e1c775be..e1afeb63 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -2560,8 +2560,13 @@ static int netdev_start_powered_mac_change(struct netdev *netdev, struct rtnl_data *req; uint8_t new_addr[6]; - wiphy_generate_address_from_ssid(netdev->wiphy, (const char *)bss->ssid, + /* No address set in handshake, use per-network MAC generation */ + if (util_mem_is_zero(netdev->handshake->spa, ETH_ALEN)) + wiphy_generate_address_from_ssid(netdev->wiphy, + (const char *)bss->ssid, new_addr); + else + memcpy(new_addr, netdev->handshake->spa, ETH_ALEN); /* * MAC has already been changed previously, no need to again