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.h b/wpa_supplicant/config.h
index ad4dd88..4677d48 100644
--- a/wpa_supplicant/config.h
+++ b/wpa_supplicant/config.h
@@ -1469,6 +1469,26 @@
* profile automatically
*/
int dpp_config_processing;
+
+ /**
+ * p2p_device_random_mac_addr - P2P Device MAC address policy default
+ *
+ * 0 = use permanent MAC address
+ * 1 = use random MAC address on creating the interface if there is no persistent groups.
+ *
+ * By default, permanent MAC address is used.
+ */
+ int p2p_device_random_mac_addr;
+
+ /**
+ * p2p_device_persistent_mac_addr - Record last used MAC address
+ *
+ * If there are saved persistent groups, P2P cannot generate another random MAC address,
+ * and need to restore to last used MAC address.
+ * format: aa:bb:cc:dd:ee:ff
+ */
+ char *p2p_device_persistent_mac_addr;
+
};