mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-09-16 06:22:26 +00:00
d98f33a337
TODO: - f/w/b - settings Signed-off-by: Tavi <tavi@divested.dev>
89 lines
4.3 KiB
Diff
89 lines
4.3 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 246c7b36a..86e17c570 100644
|
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
|
|
@@ -260,7 +260,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];
|
|
@@ -553,12 +553,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;
|
|
}
|
|
}
|
|
|
|
@@ -570,11 +576,21 @@ public class StandardWifiEntry extends WifiEntry {
|
|
// Refresh the current config so we don't overwrite any changes that we haven't gotten
|
|
// the CONFIGURED_NETWORKS_CHANGED broadcast for yet.
|
|
refreshTargetWifiConfig();
|
|
- 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 09dfd89e3..358b534db 100644
|
|
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
|
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
|
|
@@ -142,6 +142,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 = {
|