diff options
author | James Prestwood <prestwoj@gmail.com> | 2020-03-19 15:59:00 -0700 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2020-03-18 18:15:16 -0500 |
commit | f13fd9d61f5a45cf9d5c473f157d29576a44dcb8 (patch) | |
tree | ab11ec33f9ff044617dddb2b9cad5fcd68f3b510 | |
parent | e7777c342272dd7c73fd2515ddde8d534780c33a (diff) | |
download | iwd-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.c | 7 |
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 |