mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
89 lines
4.1 KiB
Diff
89 lines
4.1 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: renlord <me@renlord.com>
|
||
|
Date: Fri, 15 Oct 2021 19:11:18 +0530
|
||
|
Subject: [PATCH] add support for always generating new random MAC
|
||
|
|
||
|
To trigger re-generation of randomized MAC addressed for an already
|
||
|
connected AP. User simply has to toggle on/off wifi. Otherwise, on
|
||
|
re-connection, a new randomized MAC address also gets generated.
|
||
|
|
||
|
based on https://github.com/GrapheneOS/platform_frameworks_opt_net_wifi/commit/a0d9bda06b71694f38fe02bbe24628ee21a7d270
|
||
|
---
|
||
|
.../wifitrackerlib/StandardWifiEntry.java | 32 ++++++++++++++-----
|
||
|
.../com/android/wifitrackerlib/WifiEntry.java | 1 +
|
||
|
2 files changed, 25 insertions(+), 8 deletions(-)
|
||
|
|
||
|
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
||
|
index 249544b7d..49ae22dae 100644
|
||
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
||
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
||
|
@@ -267,7 +267,7 @@ public class StandardWifiEntry extends WifiEntry {
|
||
|
return wifiInfoMac;
|
||
|
}
|
||
|
}
|
||
|
- if (mTargetWifiConfig == null || getPrivacy() != PRIVACY_RANDOMIZED_MAC) {
|
||
|
+ if (mTargetWifiConfig == null || getPrivacy() == PRIVACY_DEVICE_MAC) {
|
||
|
final String[] factoryMacs = mWifiManager.getFactoryMacAddresses();
|
||
|
if (factoryMacs.length > 0) {
|
||
|
return factoryMacs[0];
|
||
|
@@ -550,12 +550,18 @@ public class StandardWifiEntry extends WifiEntry {
|
||
|
@Override
|
||
|
@Privacy
|
||
|
public synchronized int getPrivacy() {
|
||
|
- if (mTargetWifiConfig != null
|
||
|
- && mTargetWifiConfig.macRandomizationSetting
|
||
|
- == WifiConfiguration.RANDOMIZATION_NONE) {
|
||
|
- return PRIVACY_DEVICE_MAC;
|
||
|
+ if (mTargetWifiConfig != null) {
|
||
|
+ switch (mTargetWifiConfig.macRandomizationSetting) {
|
||
|
+ case WifiConfiguration.RANDOMIZATION_NONE:
|
||
|
+ return PRIVACY_DEVICE_MAC;
|
||
|
+ case WifiConfiguration.RANDOMIZATION_ALWAYS:
|
||
|
+ return PRIVACY_RANDOMIZATION_ALWAYS;
|
||
|
+ default:
|
||
|
+ // WifiConfiguration.RANDOMIZATION_AUTO and WifiConfiguration.RANDOMIZATION_PERSISTENT
|
||
|
+ return PRIVACY_RANDOMIZED_MAC;
|
||
|
+ }
|
||
|
} else {
|
||
|
- return PRIVACY_RANDOMIZED_MAC;
|
||
|
+ return PRIVACY_RANDOMIZATION_ALWAYS;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@@ -565,11 +571,21 @@ public class StandardWifiEntry extends WifiEntry {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- mTargetWifiConfig.macRandomizationSetting = privacy == PRIVACY_RANDOMIZED_MAC
|
||
|
- ? WifiConfiguration.RANDOMIZATION_AUTO : WifiConfiguration.RANDOMIZATION_NONE;
|
||
|
+ mTargetWifiConfig.macRandomizationSetting = translatePrivacyToWifiConfigurationValues(privacy);
|
||
|
mWifiManager.save(mTargetWifiConfig, null /* listener */);
|
||
|
}
|
||
|
|
||
|
+ private static int translatePrivacyToWifiConfigurationValues(int privacyValue) {
|
||
|
+ switch (privacyValue) {
|
||
|
+ case PRIVACY_RANDOMIZED_MAC:
|
||
|
+ return WifiConfiguration.RANDOMIZATION_PERSISTENT;
|
||
|
+ case PRIVACY_DEVICE_MAC:
|
||
|
+ return WifiConfiguration.RANDOMIZATION_NONE;
|
||
|
+ default:
|
||
|
+ return WifiConfiguration.RANDOMIZATION_ALWAYS;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
@Override
|
||
|
public synchronized boolean isAutoJoinEnabled() {
|
||
|
if (mTargetWifiConfig == null) {
|
||
|
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
||
|
index f346c6179..a33f6328f 100644
|
||
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
||
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
||
|
@@ -137,6 +137,7 @@ public class WifiEntry {
|
||
|
public static final int PRIVACY_DEVICE_MAC = 0;
|
||
|
public static final int PRIVACY_RANDOMIZED_MAC = 1;
|
||
|
public static final int PRIVACY_UNKNOWN = 2;
|
||
|
+ public static final int PRIVACY_RANDOMIZATION_ALWAYS = 100;
|
||
|
|
||
|
@Retention(RetentionPolicy.SOURCE)
|
||
|
@IntDef(value = {
|