summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiShellCommand.java46
1 files changed, 37 insertions, 9 deletions
diff --git a/service/java/com/android/server/wifi/WifiShellCommand.java b/service/java/com/android/server/wifi/WifiShellCommand.java
index 1ec56b4ab..98d662dcb 100644
--- a/service/java/com/android/server/wifi/WifiShellCommand.java
+++ b/service/java/com/android/server/wifi/WifiShellCommand.java
@@ -405,11 +405,12 @@ public class WifiShellCommand extends BasicShellCommandHandler {
countDownLatch.countDown();
}
};
+ WifiConfiguration config = buildWifiConfiguration(pw);
mWifiService.connect(
- buildWifiConfiguration(pw), -1, new Binder(), actionListener,
- actionListener.hashCode());
+ config, -1, new Binder(), actionListener, actionListener.hashCode());
// wait for status.
countDownLatch.await(500, TimeUnit.MILLISECONDS);
+ setAutoJoin(pw, config.SSID, config.allowAutojoin);
break;
}
case "add-network": {
@@ -427,11 +428,12 @@ public class WifiShellCommand extends BasicShellCommandHandler {
countDownLatch.countDown();
}
};
+ WifiConfiguration config = buildWifiConfiguration(pw);
mWifiService.save(
- buildWifiConfiguration(pw), new Binder(), actionListener,
- actionListener.hashCode());
+ config, new Binder(), actionListener, actionListener.hashCode());
// wait for status.
countDownLatch.await(500, TimeUnit.MILLISECONDS);
+ setAutoJoin(pw, config.SSID, config.allowAutojoin);
break;
}
case "forget-network": {
@@ -483,10 +485,12 @@ public class WifiShellCommand extends BasicShellCommandHandler {
mWifiService.enableVerboseLogging(enabled ? 1 : 0);
break;
}
- case "add-suggestion":
+ case "add-suggestion": {
+ WifiNetworkSuggestion suggestion = buildSuggestion(pw);
mWifiService.addNetworkSuggestions(
- Arrays.asList(buildSuggestion(pw)), SHELL_PACKAGE_NAME, null);
+ Arrays.asList(suggestion), SHELL_PACKAGE_NAME, null);
break;
+ }
case "remove-suggestion": {
String ssid = getNextArgRequired();
List<WifiNetworkSuggestion> suggestions =
@@ -646,6 +650,8 @@ public class WifiShellCommand extends BasicShellCommandHandler {
while (option != null) {
if (option.equals("-m")) {
configuration.meteredOverride = METERED_OVERRIDE_METERED;
+ } else if (option.equals("-d")) {
+ configuration.allowAutojoin = false;
} else {
pw.println("Ignoring unknown option " + option);
}
@@ -679,6 +685,8 @@ public class WifiShellCommand extends BasicShellCommandHandler {
suggestionBuilder.setIsMetered(true);
} else if (option.equals("-s")) {
suggestionBuilder.setCredentialSharedWithUser(true);
+ } else if (option.equals("-d")) {
+ suggestionBuilder.setIsInitialAutojoinEnabled(false);
} else {
pw.println("Ignoring unknown option " + option);
}
@@ -724,6 +732,23 @@ public class WifiShellCommand extends BasicShellCommandHandler {
.build();
}
+ private void setAutoJoin(PrintWriter pw, String ssid, boolean allowAutojoin) {
+ // For suggestions, this will work only if the config has already been added
+ // to WifiConfigManager.
+ WifiConfiguration retrievedConfig =
+ mWifiService.getPrivilegedConfiguredNetworks(SHELL_PACKAGE_NAME, null)
+ .getList()
+ .stream()
+ .filter(n -> n.SSID.equals(ssid))
+ .findAny()
+ .orElse(null);
+ if (retrievedConfig == null) {
+ pw.println("Cannot retrieve config, autojoin setting skipped.");
+ return;
+ }
+ mWifiService.allowAutojoin(retrievedConfig.networkId, allowAutojoin);
+ }
+
private int sendLinkProbe(PrintWriter pw) throws InterruptedException {
// Note: should match WifiNl80211Manager#SEND_MGMT_FRAME_TIMEOUT_MS
final int sendMgmtFrameTimeoutMs = 1000;
@@ -789,7 +814,7 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" Start a new scan");
pw.println(" list-networks");
pw.println(" Lists the saved networks");
- pw.println(" connect-network <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-m]");
+ pw.println(" connect-network <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-m] [-d]");
pw.println(" Connect to a network with provided params and add to saved networks list");
pw.println(" <ssid> - SSID of the network");
pw.println(" open|owe|wpa2|wpa3 - Security type of the network.");
@@ -800,7 +825,8 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" - 'wpa2' - WPA-2 PSK networks (Most prevalent)");
pw.println(" - 'wpa3' - WPA-3 PSK networks");
pw.println(" -m - Mark the network metered.");
- pw.println(" add-network <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-m]");
+ pw.println(" -d - Mark the network autojoin disabled.");
+ pw.println(" add-network <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-m] [-d]");
pw.println(" Add/update saved network with provided params");
pw.println(" <ssid> - SSID of the network");
pw.println(" open|owe|wpa2|wpa3 - Security type of the network.");
@@ -811,6 +837,7 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" - 'wpa2' - WPA-2 PSK networks (Most prevalent)");
pw.println(" - 'wpa3' - WPA-3 PSK networks");
pw.println(" -m - Mark the network metered.");
+ pw.println(" -d - Mark the network autojoin disabled.");
pw.println(" forget-network <networkId>");
pw.println(" Remove the network mentioned by <networkId>");
pw.println(" - Use list-networks to retrieve <networkId> for the network");
@@ -818,7 +845,7 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" Current wifi status");
pw.println(" set-verbose-logging enabled|disabled ");
pw.println(" Set the verbose logging enabled or disabled");
- pw.println(" add-suggestion <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-u] [-m] [-s]");
+ pw.println(" add-suggestion <ssid> open|owe|wpa2|wpa3 [<passphrase>] [-u] [-m] [-s] [-d]");
pw.println(" Add a network suggestion with provided params");
pw.println(" Use 'network-suggestions-set-user-approved " + SHELL_PACKAGE_NAME + " yes'"
+ " to approve suggestions added via shell (Needs root access)");
@@ -833,6 +860,7 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" -u - Mark the suggestion untrusted.");
pw.println(" -m - Mark the suggestion metered.");
pw.println(" -s - Share the suggestion with user.");
+ pw.println(" -d - Mark the suggestion autojoin disabled.");
pw.println(" remove-suggestion <ssid>");
pw.println(" Remove a network suggestion with provided SSID of the network");
pw.println(" remove-all-suggestions");