Merge changes Ifa2aa335,I09366a7f am: 708c77d236 am: 7c2b530a09
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1565201 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I75892e729ba690205bea14512edef97d271611f0
This commit is contained in:
@@ -4838,7 +4838,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
synchronized (mVpns) {
|
synchronized (mVpns) {
|
||||||
throwIfLockdownEnabled();
|
throwIfLockdownEnabled();
|
||||||
mVpns.get(user).startLegacyVpn(profile, mKeyStore, egress);
|
mVpns.get(user).startLegacyVpn(profile, mKeyStore, null /* underlying */, egress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8068,7 +8068,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
int user = UserHandle.getUserId(mDeps.getCallingUid());
|
int user = UserHandle.getUserId(mDeps.getCallingUid());
|
||||||
final boolean success;
|
final boolean success;
|
||||||
synchronized (mVpns) {
|
synchronized (mVpns) {
|
||||||
throwIfLockdownEnabled();
|
|
||||||
success = mVpns.get(user).setUnderlyingNetworks(networks);
|
success = mVpns.get(user).setUnderlyingNetworks(networks);
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
|
|||||||
@@ -1982,27 +1982,28 @@ public class Vpn {
|
|||||||
* secondary thread to perform connection work, returning quickly.
|
* secondary thread to perform connection work, returning quickly.
|
||||||
*
|
*
|
||||||
* Should only be called to respond to Binder requests as this enforces caller permission. Use
|
* Should only be called to respond to Binder requests as this enforces caller permission. Use
|
||||||
* {@link #startLegacyVpnPrivileged(VpnProfile, KeyStore, LinkProperties)} to skip the
|
* {@link #startLegacyVpnPrivileged(VpnProfile, KeyStore, Network, LinkProperties)} to skip the
|
||||||
* permission check only when the caller is trusted (or the call is initiated by the system).
|
* permission check only when the caller is trusted (or the call is initiated by the system).
|
||||||
*/
|
*/
|
||||||
public void startLegacyVpn(VpnProfile profile, KeyStore keyStore, LinkProperties egress) {
|
public void startLegacyVpn(VpnProfile profile, KeyStore keyStore, @Nullable Network underlying,
|
||||||
|
LinkProperties egress) {
|
||||||
enforceControlPermission();
|
enforceControlPermission();
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
startLegacyVpnPrivileged(profile, keyStore, egress);
|
startLegacyVpnPrivileged(profile, keyStore, underlying, egress);
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(token);
|
Binder.restoreCallingIdentity(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Like {@link #startLegacyVpn(VpnProfile, KeyStore, LinkProperties)}, but does not check
|
* Like {@link #startLegacyVpn(VpnProfile, KeyStore, Network, LinkProperties)}, but does not
|
||||||
* permissions under the assumption that the caller is the system.
|
* check permissions under the assumption that the caller is the system.
|
||||||
*
|
*
|
||||||
* Callers are responsible for checking permissions if needed.
|
* Callers are responsible for checking permissions if needed.
|
||||||
*/
|
*/
|
||||||
public void startLegacyVpnPrivileged(VpnProfile profile, KeyStore keyStore,
|
public void startLegacyVpnPrivileged(VpnProfile profile, KeyStore keyStore,
|
||||||
LinkProperties egress) {
|
@Nullable Network underlying, @NonNull LinkProperties egress) {
|
||||||
UserManager mgr = UserManager.get(mContext);
|
UserManager mgr = UserManager.get(mContext);
|
||||||
UserInfo user = mgr.getUserInfo(mUserId);
|
UserInfo user = mgr.getUserInfo(mUserId);
|
||||||
if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN,
|
if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN,
|
||||||
@@ -2128,6 +2129,9 @@ public class Vpn {
|
|||||||
config.session = profile.name;
|
config.session = profile.name;
|
||||||
config.isMetered = false;
|
config.isMetered = false;
|
||||||
config.proxyInfo = profile.proxy;
|
config.proxyInfo = profile.proxy;
|
||||||
|
if (underlying != null) {
|
||||||
|
config.underlyingNetworks = new Network[] { underlying };
|
||||||
|
}
|
||||||
|
|
||||||
config.addLegacyRoutes(profile.routes);
|
config.addLegacyRoutes(profile.routes);
|
||||||
if (!profile.dnsServers.isEmpty()) {
|
if (!profile.dnsServers.isEmpty()) {
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public class LockdownVpnTracker {
|
|||||||
try {
|
try {
|
||||||
// Use the privileged method because Lockdown VPN is initiated by the system, so
|
// Use the privileged method because Lockdown VPN is initiated by the system, so
|
||||||
// no additional permission checks are necessary.
|
// no additional permission checks are necessary.
|
||||||
mVpn.startLegacyVpnPrivileged(mProfile, mKeyStore, egressProp);
|
mVpn.startLegacyVpnPrivileged(mProfile, mKeyStore, null, egressProp);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
mAcceptedEgressIface = null;
|
mAcceptedEgressIface = null;
|
||||||
Log.e(TAG, "Failed to start VPN", e);
|
Log.e(TAG, "Failed to start VPN", e);
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ public class VpnTest {
|
|||||||
managedProfileA.profileGroupId = primaryUser.id;
|
managedProfileA.profileGroupId = primaryUser.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static final Network EGRESS_NETWORK = new Network(101);
|
||||||
static final String EGRESS_IFACE = "wlan0";
|
static final String EGRESS_IFACE = "wlan0";
|
||||||
static final String TEST_VPN_PKG = "com.testvpn.vpn";
|
static final String TEST_VPN_PKG = "com.testvpn.vpn";
|
||||||
private static final String TEST_VPN_SERVER = "1.2.3.4";
|
private static final String TEST_VPN_SERVER = "1.2.3.4";
|
||||||
@@ -963,7 +964,7 @@ public class VpnTest {
|
|||||||
InetAddresses.parseNumericAddress("192.0.2.0"), EGRESS_IFACE);
|
InetAddresses.parseNumericAddress("192.0.2.0"), EGRESS_IFACE);
|
||||||
lp.addRoute(defaultRoute);
|
lp.addRoute(defaultRoute);
|
||||||
|
|
||||||
vpn.startLegacyVpn(vpnProfile, mKeyStore, lp);
|
vpn.startLegacyVpn(vpnProfile, mKeyStore, EGRESS_NETWORK, lp);
|
||||||
return vpn;
|
return vpn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user