mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
dc4d6b0901
Signed-off-by: Tad <tad@spotco.us>
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 d32f80240..809780e75 100644
|
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
|
@@ -262,7 +262,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];
|
|
@@ -546,12 +546,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;
|
|
}
|
|
}
|
|
|
|
@@ -561,11 +567,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 d7120988c..d341046c0 100644
|
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
|
@@ -138,6 +138,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 = {
|