p2p: support random device address
To enhance privacy, generate a ramdom device address for p2p interface.
If there is no saved persistent group, it generate a new random MAC address on bringing up p2p0.
If there is saved persistent group, it will use last MAC address to avoid breaking
group reinvoke behavior.
There are two configurations are introduced:
* p2p_device_random_mac_addr
enable device random MAC address feature, default disable.
* p2p_device_persistent_mac_addr
store last used random MAC address.
Bug: 118904478
Test: manual test (Without saved persistent groups)
* enable WiFi Direct in Settings.
* check MAC address is changed on bringing up p2p0 everytime.
* establish fresh connection between two peers.
* establish reinvoke connection between two peers.
Test: manual test (With saved ersistent groups)
* enable WiFi Direct in Settings.
* ensure MAC address is restored to last used MAC address.
* establish fresh connection between two peers.
* establish reinvoke connection between two peers.
Test: CtsVerifier - WiFi Direct
* Two random device address enabled device.
* One random device address enabled device and
One random device address disabled device.
Change-Id: I3a519209752e0e79c82c7fbd9c7a18669f778e84
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index dd7f603..970e0fa 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -2637,6 +2637,7 @@
#ifdef CONFIG_MBO
os_free(config->non_pref_chan);
#endif /* CONFIG_MBO */
+ os_free(config->p2p_device_persistent_mac_addr);
os_free(config);
}
@@ -4753,6 +4754,8 @@
{ INT(gas_rand_addr_lifetime), 0 },
{ INT_RANGE(gas_rand_mac_addr, 0, 2), 0 },
{ INT_RANGE(dpp_config_processing, 0, 2), 0 },
+ { INT(p2p_device_random_mac_addr), 0 },
+ { STR(p2p_device_persistent_mac_addr), 0 },
};
#undef FUNC