summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorJeff Davidson <jpd@google.com>2015-01-06 17:15:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-01-06 17:15:08 +0000
commit1456ea5d08ed5a4e697b58ededde4b5a90809d76 (patch)
tree99240fd78fd6386cc8a884c4c4ec08ee03751665 /service
parent104a9803187593ab25d3784b420077022686dbe4 (diff)
parentebe870ef4051da2fc307114ed3c14927f548d9d4 (diff)
downloadandroid_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.tar.gz
android_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.tar.bz2
android_frameworks_opt_net_wifi-1456ea5d08ed5a4e697b58ededde4b5a90809d76.zip
Merge "Split untrusted NetworkFactory from regular one." into lmp-mr1-dev
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java38
1 files changed, 32 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index c22e9edb0..87e0c3af5 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -138,6 +138,7 @@ import java.util.regex.Pattern;
public class WifiStateMachine extends StateMachine {
private static final String NETWORKTYPE = "WIFI";
+ private static final String NETWORKTYPE_UNTRUSTED = "WIFI_UT";
private static boolean DBG = false;
private static boolean VDBG = false;
private static boolean VVDBG = false;
@@ -407,6 +408,7 @@ public class WifiStateMachine extends StateMachine {
private int mConnectionRequests = 0;
private WifiNetworkFactory mNetworkFactory;
+ private UntrustedWifiNetworkFactory mUntrustedNetworkFactory;
private WifiNetworkAgent mNetworkAgent;
// Keep track of various statistics, for retrieval by System Apps, i.e. under @SystemApi
@@ -2436,6 +2438,7 @@ public class WifiStateMachine extends StateMachine {
pw.println("mLastSetCountryCode " + mLastSetCountryCode);
pw.println("mPersistedCountryCode " + mPersistedCountryCode);
mNetworkFactory.dump(fd, pw, args);
+ mUntrustedNetworkFactory.dump(fd, pw, args);
pw.println();
mWifiConfigStore.dump(fd, pw, args);
}
@@ -4595,9 +4598,6 @@ public class WifiStateMachine extends StateMachine {
}
private class WifiNetworkFactory extends NetworkFactory {
- /** Number of outstanding NetworkRequests for untrusted networks. */
- private int mUntrustedReqCount = 0;
-
public WifiNetworkFactory(Looper l, Context c, String TAG, NetworkCapabilities f) {
super(l, c, TAG, f);
}
@@ -4605,6 +4605,28 @@ public class WifiStateMachine extends StateMachine {
@Override
protected void needNetworkFor(NetworkRequest networkRequest, int score) {
++mConnectionRequests;
+ }
+
+ @Override
+ protected void releaseNetworkFor(NetworkRequest networkRequest) {
+ --mConnectionRequests;
+ }
+
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println("mConnectionRequests " + mConnectionRequests);
+ }
+
+ }
+
+ private class UntrustedWifiNetworkFactory extends NetworkFactory {
+ private int mUntrustedReqCount;
+
+ public UntrustedWifiNetworkFactory(Looper l, Context c, String tag, NetworkCapabilities f) {
+ super(l, c, tag, f);
+ }
+
+ @Override
+ protected void needNetworkFor(NetworkRequest networkRequest, int score) {
if (!networkRequest.networkCapabilities.hasCapability(
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
if (++mUntrustedReqCount == 1) {
@@ -4615,7 +4637,6 @@ public class WifiStateMachine extends StateMachine {
@Override
protected void releaseNetworkFor(NetworkRequest networkRequest) {
- --mConnectionRequests;
if (!networkRequest.networkCapabilities.hasCapability(
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
if (--mUntrustedReqCount == 0) {
@@ -4625,10 +4646,8 @@ public class WifiStateMachine extends StateMachine {
}
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- pw.println("mConnectionRequests " + mConnectionRequests);
pw.println("mUntrustedReqCount " + mUntrustedReqCount);
}
-
}
void maybeRegisterNetworkFactory() {
@@ -4639,6 +4658,13 @@ public class WifiStateMachine extends StateMachine {
NETWORKTYPE, mNetworkCapabilitiesFilter);
mNetworkFactory.setScoreFilter(60);
mNetworkFactory.register();
+
+ // We can't filter untrusted network in the capabilities filter because a trusted
+ // network would still satisfy a request that accepts untrusted ones.
+ mUntrustedNetworkFactory = new UntrustedWifiNetworkFactory(getHandler().getLooper(),
+ mContext, NETWORKTYPE_UNTRUSTED, mNetworkCapabilitiesFilter);
+ mUntrustedNetworkFactory.setScoreFilter(Integer.MAX_VALUE);
+ mUntrustedNetworkFactory.register();
}
}
}