Fix Ikev2 vpn cannot establish through startLegacyVpn()
Settings will also call startLegacyVpn() to bring up Ikev2 VPN,
so it's needed to add a vpn type check in startLegacyVpn().
Otherwise, UnsupportedOperationException will be thrown when
Settings tries to bring up Ikev2 VPN.
Bug: 191937302
Bug: 188749090
Bug: 189808606
Test: 1. make gts && gts-tradefed
2. run gts --module GtsNetworkStackHostTestCases
Change-Id: I752c39bd1bf953a11bdf62e6f02f99f48fef23c4
Merged-In: I752c39bd1bf953a11bdf62e6f02f99f48fef23c4
This commit is contained in:
@@ -377,12 +377,15 @@ public final class VpnProfile implements Cloneable, Parcelable {
|
||||
/** Checks if this profile specifies a LegacyVpn type. */
|
||||
public static boolean isLegacyType(int type) {
|
||||
switch (type) {
|
||||
case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS: // fall through
|
||||
case VpnProfile.TYPE_IKEV2_IPSEC_RSA: // fall through
|
||||
case VpnProfile.TYPE_IKEV2_IPSEC_PSK:
|
||||
return false;
|
||||
default:
|
||||
case VpnProfile.TYPE_PPTP:
|
||||
case VpnProfile.TYPE_L2TP_IPSEC_PSK:
|
||||
case VpnProfile.TYPE_L2TP_IPSEC_RSA:
|
||||
case VpnProfile.TYPE_IPSEC_XAUTH_PSK:
|
||||
case VpnProfile.TYPE_IPSEC_XAUTH_RSA:
|
||||
case VpnProfile.TYPE_IPSEC_HYBRID_RSA:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -357,7 +357,8 @@ public class VpnManagerService extends IVpnManager.Stub {
|
||||
@SuppressWarnings("AndroidFrameworkCompatChange") // This is not an app-visible API.
|
||||
@Override
|
||||
public void startLegacyVpn(VpnProfile profile) {
|
||||
if (Build.VERSION.DEVICE_INITIAL_SDK_INT >= Build.VERSION_CODES.S) {
|
||||
if (Build.VERSION.DEVICE_INITIAL_SDK_INT >= Build.VERSION_CODES.S
|
||||
&& VpnProfile.isLegacyType(profile.type)) {
|
||||
throw new UnsupportedOperationException("Legacy VPN is deprecated");
|
||||
}
|
||||
int user = UserHandle.getUserId(mDeps.getCallingUid());
|
||||
|
||||
Reference in New Issue
Block a user