Merge "Set VPN as the preference network for specific apps" am: 593b84759f
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2314119 Change-Id: I609a2ff2aed9ca4020a185049dcf032dbb7de771 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -140,6 +140,7 @@ import com.android.internal.net.LegacyVpnInfo;
|
|||||||
import com.android.internal.net.VpnConfig;
|
import com.android.internal.net.VpnConfig;
|
||||||
import com.android.internal.net.VpnProfile;
|
import com.android.internal.net.VpnProfile;
|
||||||
import com.android.modules.utils.build.SdkLevel;
|
import com.android.modules.utils.build.SdkLevel;
|
||||||
|
import com.android.net.module.util.BinderUtils;
|
||||||
import com.android.net.module.util.NetdUtils;
|
import com.android.net.module.util.NetdUtils;
|
||||||
import com.android.net.module.util.NetworkStackConstants;
|
import com.android.net.module.util.NetworkStackConstants;
|
||||||
import com.android.server.DeviceIdleInternal;
|
import com.android.server.DeviceIdleInternal;
|
||||||
@@ -2783,6 +2784,16 @@ public class Vpn {
|
|||||||
return hasIPV6 && !hasIPV4;
|
return hasIPV6 && !hasIPV4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setVpnNetworkPreference(String session, Set<Range<Integer>> ranges) {
|
||||||
|
BinderUtils.withCleanCallingIdentity(
|
||||||
|
() -> mConnectivityManager.setVpnDefaultForUids(session, ranges));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearVpnNetworkPreference(String session) {
|
||||||
|
BinderUtils.withCleanCallingIdentity(
|
||||||
|
() -> mConnectivityManager.setVpnDefaultForUids(session, Collections.EMPTY_LIST));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal class managing IKEv2/IPsec VPN connectivity
|
* Internal class managing IKEv2/IPsec VPN connectivity
|
||||||
*
|
*
|
||||||
@@ -2894,6 +2905,9 @@ public class Vpn {
|
|||||||
(r, exe) -> {
|
(r, exe) -> {
|
||||||
Log.d(TAG, "Runnable " + r + " rejected by the mExecutor");
|
Log.d(TAG, "Runnable " + r + " rejected by the mExecutor");
|
||||||
});
|
});
|
||||||
|
setVpnNetworkPreference(mSessionKey,
|
||||||
|
createUserAndRestrictedProfilesRanges(mUserId,
|
||||||
|
mConfig.allowedApplications, mConfig.disallowedApplications));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -3047,7 +3061,6 @@ public class Vpn {
|
|||||||
mConfig.dnsServers.addAll(dnsAddrStrings);
|
mConfig.dnsServers.addAll(dnsAddrStrings);
|
||||||
|
|
||||||
mConfig.underlyingNetworks = new Network[] {network};
|
mConfig.underlyingNetworks = new Network[] {network};
|
||||||
mConfig.disallowedApplications = getAppExclusionList(mPackage);
|
|
||||||
|
|
||||||
networkAgent = mNetworkAgent;
|
networkAgent = mNetworkAgent;
|
||||||
|
|
||||||
@@ -3750,6 +3763,7 @@ public class Vpn {
|
|||||||
mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
|
mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
|
||||||
mConnectivityDiagnosticsManager.unregisterConnectivityDiagnosticsCallback(
|
mConnectivityDiagnosticsManager.unregisterConnectivityDiagnosticsCallback(
|
||||||
mDiagnosticsCallback);
|
mDiagnosticsCallback);
|
||||||
|
clearVpnNetworkPreference(mSessionKey);
|
||||||
|
|
||||||
mExecutor.shutdown();
|
mExecutor.shutdown();
|
||||||
}
|
}
|
||||||
@@ -4310,6 +4324,7 @@ public class Vpn {
|
|||||||
mConfig.requiresInternetValidation = profile.requiresInternetValidation;
|
mConfig.requiresInternetValidation = profile.requiresInternetValidation;
|
||||||
mConfig.excludeLocalRoutes = profile.excludeLocalRoutes;
|
mConfig.excludeLocalRoutes = profile.excludeLocalRoutes;
|
||||||
mConfig.allowBypass = profile.isBypassable;
|
mConfig.allowBypass = profile.isBypassable;
|
||||||
|
mConfig.disallowedApplications = getAppExclusionList(mPackage);
|
||||||
|
|
||||||
switch (profile.type) {
|
switch (profile.type) {
|
||||||
case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS:
|
case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS:
|
||||||
@@ -4462,6 +4477,9 @@ public class Vpn {
|
|||||||
.setUids(createUserAndRestrictedProfilesRanges(
|
.setUids(createUserAndRestrictedProfilesRanges(
|
||||||
mUserId, null /* allowedApplications */, excludedApps))
|
mUserId, null /* allowedApplications */, excludedApps))
|
||||||
.build();
|
.build();
|
||||||
|
setVpnNetworkPreference(getSessionKeyLocked(),
|
||||||
|
createUserAndRestrictedProfilesRanges(mUserId,
|
||||||
|
mConfig.allowedApplications, mConfig.disallowedApplications));
|
||||||
doSendNetworkCapabilities(mNetworkAgent, mNetworkCapabilities);
|
doSendNetworkCapabilities(mNetworkAgent, mNetworkCapabilities);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user