From 2417754282b74996e1b6ceedd702e79bfed4fbbc Mon Sep 17 00:00:00 2001 From: chiachangwang Date: Tue, 8 Nov 2022 05:34:13 +0000 Subject: [PATCH] Set vpn bypassability into VpnTransportInfo Bypassability is available in VpnTransportInfo now. The value should be read from VPN config and set to network capabilities to apps to indicate the bypassability. Bug: 256775913 Test: atest FrameworksNetTests Change-Id: I8d59ecf69298e9c4f0f402cbeb7852f7067c0af8 --- .../core/java/com/android/server/connectivity/Vpn.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 9985ffecc2abc..1edaed014614b 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -620,7 +620,8 @@ public class Vpn { .addTransportType(NetworkCapabilities.TRANSPORT_VPN) .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED) - .setTransportInfo(new VpnTransportInfo(VpnManager.TYPE_VPN_NONE, null)) + .setTransportInfo(new VpnTransportInfo( + VpnManager.TYPE_VPN_NONE, null /* sessionId */, false /* bypassable */)) .build(); loadAlwaysOnPackage(); @@ -684,7 +685,8 @@ public class Vpn { private void resetNetworkCapabilities() { mNetworkCapabilities = new NetworkCapabilities.Builder(mNetworkCapabilities) .setUids(null) - .setTransportInfo(new VpnTransportInfo(VpnManager.TYPE_VPN_NONE, null)) + .setTransportInfo(new VpnTransportInfo( + VpnManager.TYPE_VPN_NONE, null /* sessionId */, false /* bypassable */)) .build(); } @@ -1534,7 +1536,8 @@ public class Vpn { capsBuilder.setUids(createUserAndRestrictedProfilesRanges(mUserId, mConfig.allowedApplications, mConfig.disallowedApplications)); - capsBuilder.setTransportInfo(new VpnTransportInfo(getActiveVpnType(), mConfig.session)); + capsBuilder.setTransportInfo( + new VpnTransportInfo(getActiveVpnType(), mConfig.session, mConfig.allowBypass)); // Only apps targeting Q and above can explicitly declare themselves as metered. // These VPNs are assumed metered unless they state otherwise.