aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Prestwood <prestwoj@gmail.com>2020-03-19 15:59:00 -0700
committerDenis Kenzior <denkenz@gmail.com>2020-03-18 18:15:16 -0500
commitf13fd9d61f5a45cf9d5c473f157d29576a44dcb8 (patch)
treeab11ec33f9ff044617dddb2b9cad5fcd68f3b510
parente7777c342272dd7c73fd2515ddde8d534780c33a (diff)
downloadiwd-f13fd9d61f5a45cf9d5c473f157d29576a44dcb8.tar.gz
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.
-rw-r--r--src/netdev.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/netdev.c b/src/netdev.c
index e1c775be3..e1afeb63c 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