summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java73
-rw-r--r--service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java71
2 files changed, 75 insertions, 69 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index f5f96a134..90e1c59d3 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -451,7 +451,7 @@ public class ClientModeImpl extends StateMachine {
private byte[] mRssiRanges;
// Used to filter out requests we couldn't possibly satisfy.
- private final NetworkCapabilities mNetworkCapabilitiesFilter = new NetworkCapabilities();
+ private final NetworkCapabilities mNetworkCapabilitiesFilter;
private final ExternalCallbackTracker<IActionListener> mProcessingActionListeners;
private final ExternalCallbackTracker<ITxPacketCountListener> mProcessingTxPacketCountListeners;
@@ -813,16 +813,18 @@ public class ClientModeImpl extends StateMachine {
mWifiMetrics, mWifiInfo, mWifiNative, mBssidBlocklistMonitor,
mWifiInjector.getWifiThreadRunner());
- mNetworkCapabilitiesFilter.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
- mNetworkCapabilitiesFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
- mNetworkCapabilitiesFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
- mNetworkCapabilitiesFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
- mNetworkCapabilitiesFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED);
- mNetworkCapabilitiesFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
- // TODO - needs to be a bit more dynamic
- mNetworkCapabilitiesFilter.setLinkUpstreamBandwidthKbps(1024 * 1024);
- mNetworkCapabilitiesFilter.setLinkDownstreamBandwidthKbps(1024 * 1024);
- mNetworkCapabilitiesFilter.setNetworkSpecifier(new MatchAllNetworkSpecifier());
+ mNetworkCapabilitiesFilter = new NetworkCapabilities.Builder()
+ .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
+ // TODO - needs to be a bit more dynamic
+ .setLinkUpstreamBandwidthKbps(1024 * 1024)
+ .setLinkDownstreamBandwidthKbps(1024 * 1024)
+ .setNetworkSpecifier(new MatchAllNetworkSpecifier())
+ .build();
// Make the network factories.
mNetworkFactory = mWifiInjector.makeWifiNetworkFactory(
mNetworkCapabilitiesFilter, mWifiConnectivityManager);
@@ -4333,43 +4335,42 @@ public class ClientModeImpl extends StateMachine {
}
private NetworkCapabilities getCapabilities(WifiConfiguration currentWifiConfiguration) {
- final NetworkCapabilities result = new NetworkCapabilities(mNetworkCapabilitiesFilter);
+ final NetworkCapabilities.Builder builder =
+ new NetworkCapabilities.Builder(mNetworkCapabilitiesFilter);
// MatchAllNetworkSpecifier set in the mNetworkCapabilitiesFilter should never be set in the
// agent's specifier.
- result.setNetworkSpecifier(null);
+ builder.setNetworkSpecifier(null);
if (currentWifiConfiguration == null) {
- return result;
+ return builder.build();
}
- if (!mWifiInfo.isTrusted()) {
- result.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
+ if (mWifiInfo.isTrusted()) {
+ builder.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
} else {
- result.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
}
- result.setOwnerUid(currentWifiConfiguration.creatorUid);
- result.setAdministratorUids(new int[] {currentWifiConfiguration.creatorUid});
+ builder.setOwnerUid(currentWifiConfiguration.creatorUid);
+ builder.setAdministratorUids(new int[] {currentWifiConfiguration.creatorUid});
if (!WifiConfiguration.isMetered(currentWifiConfiguration, mWifiInfo)) {
- result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+ builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
} else {
- result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
}
if (mWifiInfo.getRssi() != WifiInfo.INVALID_RSSI) {
- result.setSignalStrength(mWifiInfo.getRssi());
+ builder.setSignalStrength(mWifiInfo.getRssi());
} else {
- result.setSignalStrength(NetworkCapabilities.SIGNAL_STRENGTH_UNSPECIFIED);
+ builder.setSignalStrength(NetworkCapabilities.SIGNAL_STRENGTH_UNSPECIFIED);
}
if (currentWifiConfiguration.osu) {
- result.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
}
if (!mWifiInfo.getSSID().equals(WifiManager.UNKNOWN_SSID)) {
- result.setSSID(mWifiInfo.getSSID());
- } else {
- result.setSSID(null);
+ builder.setSsid(mWifiInfo.getSSID());
}
Pair<Integer, String> specificRequestUidAndPackageName =
mNetworkFactory.getSpecificNetworkRequestUidAndPackageName(
@@ -4377,19 +4378,19 @@ public class ClientModeImpl extends StateMachine {
// There is an active specific request.
if (specificRequestUidAndPackageName.first != Process.INVALID_UID) {
// Remove internet capability.
- result.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+ builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
// Fill up the uid/packageName for this connection.
- result.setRequestorUid(specificRequestUidAndPackageName.first);
- result.setRequestorPackageName(specificRequestUidAndPackageName.second);
+ builder.setRequestorUid(specificRequestUidAndPackageName.first);
+ builder.setRequestorPackageName(specificRequestUidAndPackageName.second);
// Fill up the network agent specifier for this connection.
- result.setNetworkSpecifier(createNetworkAgentSpecifier(
+ builder.setNetworkSpecifier(createNetworkAgentSpecifier(
currentWifiConfiguration, getCurrentBSSID()));
}
- updateLinkBandwidth(result);
- return result;
+ updateLinkBandwidth(builder);
+ return builder.build();
}
- private void updateLinkBandwidth(NetworkCapabilities networkCapabilities) {
+ private void updateLinkBandwidth(NetworkCapabilities.Builder networkCapabilitiesBuilder) {
int rssiDbm = mWifiInfo.getRssi();
int txTputKbps = INVALID_THROUGHPUT;
int rxTputKbps = INVALID_THROUGHPUT;
@@ -4417,10 +4418,10 @@ public class ClientModeImpl extends StateMachine {
logd("rx tput in kbps: " + rxTputKbps);
}
if (txTputKbps > 0) {
- networkCapabilities.setLinkUpstreamBandwidthKbps(txTputKbps);
+ networkCapabilitiesBuilder.setLinkUpstreamBandwidthKbps(txTputKbps);
}
if (rxTputKbps > 0) {
- networkCapabilities.setLinkDownstreamBandwidthKbps(rxTputKbps);
+ networkCapabilitiesBuilder.setLinkDownstreamBandwidthKbps(rxTputKbps);
}
}
diff --git a/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java b/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
index 867587720..682af56f2 100644
--- a/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
+++ b/service/java/com/android/server/wifi/aware/WifiAwareDataPathStateManager.java
@@ -104,7 +104,8 @@ public class WifiAwareDataPathStateManager {
private final WifiAwareStateManager mMgr;
private final Clock mClock;
public NetworkInterfaceWrapper mNiWrapper = new NetworkInterfaceWrapper();
- private static final NetworkCapabilities sNetworkCapabilitiesFilter = new NetworkCapabilities();
+ private static final NetworkCapabilities sNetworkCapabilitiesFilter =
+ makeNetworkCapabilitiesFilter();
private final Set<String> mInterfaces = new HashSet<>();
private final Map<WifiAwareNetworkSpecifier, AwareNetworkRequestInformation>
mNetworkRequestsCache = new ArrayMap<>();
@@ -125,6 +126,23 @@ public class WifiAwareDataPathStateManager {
mClock = clock;
}
+ private static NetworkCapabilities makeNetworkCapabilitiesFilter() {
+ return new NetworkCapabilities.Builder()
+ .addTransportType(NetworkCapabilities.TRANSPORT_WIFI_AWARE)
+ .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
+ .setNetworkSpecifier(new MatchAllNetworkSpecifier())
+ .setLinkUpstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL)
+ .setLinkDownstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL)
+ .setSignalStrength(NETWORK_FACTORY_SIGNAL_STRENGTH_AVAIL)
+ .build();
+ }
+
/**
* Initialize the Aware data-path state manager. Specifically register the network factory with
* connectivity service.
@@ -142,19 +160,6 @@ public class WifiAwareDataPathStateManager {
mLooper = looper;
mHandler = new Handler(mLooper);
- sNetworkCapabilitiesFilter.clearAll();
- sNetworkCapabilitiesFilter.addTransportType(NetworkCapabilities.TRANSPORT_WIFI_AWARE);
- sNetworkCapabilitiesFilter
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
- sNetworkCapabilitiesFilter.setNetworkSpecifier(new MatchAllNetworkSpecifier());
- sNetworkCapabilitiesFilter.setLinkUpstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL);
- sNetworkCapabilitiesFilter.setLinkDownstreamBandwidthKbps(NETWORK_FACTORY_BANDWIDTH_AVAIL);
- sNetworkCapabilitiesFilter.setSignalStrength(NETWORK_FACTORY_SIGNAL_STRENGTH_AVAIL);
mNetworkFactory = new WifiAwareNetworkFactory(looper, context, sNetworkCapabilitiesFilter);
mNetworkFactory.setScoreFilter(NETWORK_FACTORY_SCORE_AVAIL);
@@ -556,7 +561,7 @@ public class WifiAwareDataPathStateManager {
nnri.peerDataMac = mac;
nnri.channelInfo = channelInfo;
- NetworkCapabilities networkCapabilities = new NetworkCapabilities(
+ final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder(
sNetworkCapabilitiesFilter);
LinkProperties linkProperties = new LinkProperties();
@@ -625,17 +630,16 @@ public class WifiAwareDataPathStateManager {
}
if (nnri.peerIpv6 != null) {
- networkCapabilities.setTransportInfo(
- new WifiAwareNetworkInfo(nnri.peerIpv6, nnri.peerPort,
- nnri.peerTransportProtocol));
- }
- if (VDBG) {
- Log.v(TAG, "onDataPathConfirm: AwareNetworkInfo="
- + networkCapabilities.getTransportInfo());
+ final WifiAwareNetworkInfo ni = new WifiAwareNetworkInfo(
+ nnri.peerIpv6, nnri.peerPort, nnri.peerTransportProtocol);
+ ncBuilder.setTransportInfo(ni);
+ if (VDBG) {
+ Log.v(TAG, "onDataPathConfirm: AwareNetworkInfo=" + ni);
+ }
}
if (!mNiWrapper.configureAgentProperties(nnri, nnri.equivalentRequests, ndpId,
- networkCapabilities, linkProperties)) {
+ ncBuilder, linkProperties)) {
declareUnfullfillableAndEndDp(nnri, ndpId);
return networkSpecifier;
}
@@ -646,8 +650,8 @@ public class WifiAwareDataPathStateManager {
.build();
nnri.networkAgent = new WifiAwareNetworkAgent(mLooper, mContext,
- AGENT_TAG_PREFIX + nnri.ndpId,
- networkCapabilities, linkProperties, NETWORK_FACTORY_SCORE_AVAIL,
+ AGENT_TAG_PREFIX + nnri.ndpId, ncBuilder.build(),
+ linkProperties, NETWORK_FACTORY_SCORE_AVAIL,
naConfig, mNetworkFactory.getProvider(), nnri);
nnri.startValidationTimestamp = mClock.getElapsedSinceBootMillis();
handleAddressValidation(nnri, linkProperties, ndpId, networkSpecifier.isOutOfBand());
@@ -1206,16 +1210,17 @@ public class WifiAwareDataPathStateManager {
}
private NetworkCapabilities getNetworkCapabilities() {
- NetworkCapabilities nc = new NetworkCapabilities(sNetworkCapabilitiesFilter);
- nc.setNetworkSpecifier(new WifiAwareAgentNetworkSpecifier(
+ final NetworkCapabilities.Builder builder =
+ new NetworkCapabilities.Builder(sNetworkCapabilitiesFilter);
+ builder.setNetworkSpecifier(new WifiAwareAgentNetworkSpecifier(
equivalentRequests.stream()
.map(NetworkRequest::getNetworkSpecifier)
.toArray(WifiAwareNetworkSpecifier[]::new)));
if (peerIpv6 != null) {
- nc.setTransportInfo(
+ builder.setTransportInfo(
new WifiAwareNetworkInfo(peerIpv6, peerPort, peerTransportProtocol));
}
- return nc;
+ return builder.build();
}
/**
@@ -1471,7 +1476,7 @@ public class WifiAwareDataPathStateManager {
*/
public boolean configureAgentProperties(AwareNetworkRequestInformation nnri,
Set<NetworkRequest> networkRequests, int ndpId,
- NetworkCapabilities networkCapabilities, LinkProperties linkProperties) {
+ NetworkCapabilities.Builder ncBuilder, LinkProperties linkProperties) {
// find link-local address
InetAddress linkLocal = null;
NetworkInterface ni;
@@ -1507,9 +1512,9 @@ public class WifiAwareDataPathStateManager {
return false;
}
- networkCapabilities.setRequestorUid(nnri.uid);
- networkCapabilities.setRequestorPackageName(nnri.packageName);
- networkCapabilities.setNetworkSpecifier(new WifiAwareAgentNetworkSpecifier(
+ ncBuilder.setRequestorUid(nnri.uid);
+ ncBuilder.setRequestorPackageName(nnri.packageName);
+ ncBuilder.setNetworkSpecifier(new WifiAwareAgentNetworkSpecifier(
networkRequests.stream()
.map(NetworkRequest::getNetworkSpecifier)
.toArray(WifiAwareNetworkSpecifier[]::new)));