Merge "Remove TunnelConnectionParams interface" am: b8f67d1bd7

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1684427

Change-Id: I2e1a6d8c02e5208e99ce6387d18062fecb2e9a6d
This commit is contained in:
Yan Yan
2021-04-27 18:54:32 +00:00
committed by Automerger Merge Worker
7 changed files with 33 additions and 92 deletions

View File

@@ -25146,9 +25146,6 @@ package android.net {
field public static final int UNSUPPORTED = -1; // 0xffffffff field public static final int UNSUPPORTED = -1; // 0xffffffff
} }
public interface TunnelConnectionParams {
}
public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable { public abstract class Uri implements java.lang.Comparable<android.net.Uri> android.os.Parcelable {
method public abstract android.net.Uri.Builder buildUpon(); method public abstract android.net.Uri.Builder buildUpon();
method public int compareTo(android.net.Uri); method public int compareTo(android.net.Uri);
@@ -25717,7 +25714,7 @@ package android.net.vcn {
} }
public static final class VcnGatewayConnectionConfig.Builder { public static final class VcnGatewayConnectionConfig.Builder {
ctor public VcnGatewayConnectionConfig.Builder(@NonNull String, @NonNull android.net.TunnelConnectionParams); ctor public VcnGatewayConnectionConfig.Builder(@NonNull String, @NonNull android.net.ipsec.ike.IkeTunnelConnectionParams);
method @NonNull public android.net.vcn.VcnGatewayConnectionConfig.Builder addExposedCapability(int); method @NonNull public android.net.vcn.VcnGatewayConnectionConfig.Builder addExposedCapability(int);
method @NonNull public android.net.vcn.VcnGatewayConnectionConfig build(); method @NonNull public android.net.vcn.VcnGatewayConnectionConfig build();
method @NonNull public android.net.vcn.VcnGatewayConnectionConfig.Builder removeExposedCapability(int); method @NonNull public android.net.vcn.VcnGatewayConnectionConfig.Builder removeExposedCapability(int);

View File

@@ -1,29 +0,0 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.net;
/**
* TunnelConnectionParams represents a configuration to set up a tunnel connection.
*
* <p>Concrete implementations for a control plane protocol should implement this interface.
* Subclasses should be immutable data classes containing connection, authentication and
* authorization parameters required to establish a tunnel connection.
*
* @see android.net.ipsec.ike.IkeTunnelConnectionParams
*/
// TODO:b/186071626 Remove TunnelConnectionParams when non-updatable API stub can resolve
// IkeTunnelConnectionParams
public interface TunnelConnectionParams {}

View File

@@ -24,7 +24,7 @@ import android.annotation.Nullable;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.TunnelConnectionParams; import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtils; import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtils;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.util.ArraySet; import android.util.ArraySet;
@@ -154,7 +154,7 @@ public final class VcnGatewayConnectionConfig {
@NonNull private final String mGatewayConnectionName; @NonNull private final String mGatewayConnectionName;
private static final String TUNNEL_CONNECTION_PARAMS_KEY = "mTunnelConnectionParams"; private static final String TUNNEL_CONNECTION_PARAMS_KEY = "mTunnelConnectionParams";
@NonNull private TunnelConnectionParams mTunnelConnectionParams; @NonNull private IkeTunnelConnectionParams mTunnelConnectionParams;
private static final String EXPOSED_CAPABILITIES_KEY = "mExposedCapabilities"; private static final String EXPOSED_CAPABILITIES_KEY = "mExposedCapabilities";
@NonNull private final SortedSet<Integer> mExposedCapabilities; @NonNull private final SortedSet<Integer> mExposedCapabilities;
@@ -171,7 +171,7 @@ public final class VcnGatewayConnectionConfig {
/** Builds a VcnGatewayConnectionConfig with the specified parameters. */ /** Builds a VcnGatewayConnectionConfig with the specified parameters. */
private VcnGatewayConnectionConfig( private VcnGatewayConnectionConfig(
@NonNull String gatewayConnectionName, @NonNull String gatewayConnectionName,
@NonNull TunnelConnectionParams tunnelConnectionParams, @NonNull IkeTunnelConnectionParams tunnelConnectionParams,
@NonNull Set<Integer> exposedCapabilities, @NonNull Set<Integer> exposedCapabilities,
@NonNull Set<Integer> underlyingCapabilities, @NonNull Set<Integer> underlyingCapabilities,
@NonNull long[] retryIntervalsMs, @NonNull long[] retryIntervalsMs,
@@ -271,7 +271,7 @@ public final class VcnGatewayConnectionConfig {
* @hide * @hide
*/ */
@NonNull @NonNull
public TunnelConnectionParams getTunnelConnectionParams() { public IkeTunnelConnectionParams getTunnelConnectionParams() {
return mTunnelConnectionParams; return mTunnelConnectionParams;
} }
@@ -414,7 +414,7 @@ public final class VcnGatewayConnectionConfig {
*/ */
public static final class Builder { public static final class Builder {
@NonNull private final String mGatewayConnectionName; @NonNull private final String mGatewayConnectionName;
@NonNull private final TunnelConnectionParams mTunnelConnectionParams; @NonNull private final IkeTunnelConnectionParams mTunnelConnectionParams;
@NonNull private final Set<Integer> mExposedCapabilities = new ArraySet(); @NonNull private final Set<Integer> mExposedCapabilities = new ArraySet();
@NonNull private final Set<Integer> mUnderlyingCapabilities = new ArraySet(); @NonNull private final Set<Integer> mUnderlyingCapabilities = new ArraySet();
@NonNull private long[] mRetryIntervalsMs = DEFAULT_RETRY_INTERVALS_MS; @NonNull private long[] mRetryIntervalsMs = DEFAULT_RETRY_INTERVALS_MS;
@@ -432,13 +432,13 @@ public final class VcnGatewayConnectionConfig {
* VcnConfig} must be given a unique name. This name is used by the caller to * VcnConfig} must be given a unique name. This name is used by the caller to
* distinguish between VcnGatewayConnectionConfigs configured on a single {@link * distinguish between VcnGatewayConnectionConfigs configured on a single {@link
* VcnConfig}. This will be used as the identifier in VcnStatusCallback invocations. * VcnConfig}. This will be used as the identifier in VcnStatusCallback invocations.
* @param tunnelConnectionParams the tunnel connection configuration * @param tunnelConnectionParams the IKE tunnel connection configuration
* @see TunnelConnectionParams * @see IkeTunnelConnectionParams
* @see VcnManager.VcnStatusCallback#onGatewayConnectionError * @see VcnManager.VcnStatusCallback#onGatewayConnectionError
*/ */
public Builder( public Builder(
@NonNull String gatewayConnectionName, @NonNull String gatewayConnectionName,
@NonNull TunnelConnectionParams tunnelConnectionParams) { @NonNull IkeTunnelConnectionParams tunnelConnectionParams) {
Objects.requireNonNull(gatewayConnectionName, "gatewayConnectionName was null"); Objects.requireNonNull(gatewayConnectionName, "gatewayConnectionName was null");
Objects.requireNonNull(tunnelConnectionParams, "tunnelConnectionParams was null"); Objects.requireNonNull(tunnelConnectionParams, "tunnelConnectionParams was null");

View File

@@ -16,7 +16,6 @@
package android.net.vcn.persistablebundleutils; package android.net.vcn.persistablebundleutils;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.net.TunnelConnectionParams;
import android.net.ipsec.ike.IkeSessionParams; import android.net.ipsec.ike.IkeSessionParams;
import android.net.ipsec.ike.IkeTunnelConnectionParams; import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.ipsec.ike.TunnelModeChildSessionParams; import android.net.ipsec.ike.TunnelModeChildSessionParams;
@@ -25,7 +24,7 @@ import android.os.PersistableBundle;
import java.util.Objects; import java.util.Objects;
/** /**
* Utility class to convert TunnelConnectionParams to/from PersistableBundle * Utility class to convert Tunnel Connection Params to/from PersistableBundle
* *
* @hide * @hide
*/ */
@@ -34,30 +33,28 @@ public final class TunnelConnectionParamsUtils {
private static final String PARAMS_TYPE_IKE = "IKE"; private static final String PARAMS_TYPE_IKE = "IKE";
/** Serializes an TunnelConnectionParams to a PersistableBundle. */ /** Serializes an IkeTunnelConnectionParams to a PersistableBundle. */
@NonNull @NonNull
public static PersistableBundle toPersistableBundle(@NonNull TunnelConnectionParams params) { public static PersistableBundle toPersistableBundle(@NonNull IkeTunnelConnectionParams params) {
final PersistableBundle result = new PersistableBundle(); final PersistableBundle result = new PersistableBundle();
if (params instanceof IkeTunnelConnectionParams) { result.putPersistableBundle(
result.putPersistableBundle( PARAMS_TYPE_IKE,
PARAMS_TYPE_IKE, IkeTunnelConnectionParamsUtils.serializeIkeParams(
IkeTunnelConnectionParamsUtils.serializeIkeParams( (IkeTunnelConnectionParams) params));
(IkeTunnelConnectionParams) params)); return result;
return result;
} else {
throw new UnsupportedOperationException("Invalid TunnelConnectionParams type");
}
} }
/** Constructs an TunnelConnectionParams by deserializing a PersistableBundle. */ /** Constructs an IkeTunnelConnectionParams by deserializing a PersistableBundle. */
@NonNull @NonNull
public static TunnelConnectionParams fromPersistableBundle(@NonNull PersistableBundle in) { public static IkeTunnelConnectionParams fromPersistableBundle(@NonNull PersistableBundle in) {
Objects.requireNonNull(in, "PersistableBundle was null"); Objects.requireNonNull(in, "PersistableBundle was null");
if (in.keySet().size() != EXPECTED_BUNDLE_KEY_CNT) { if (in.keySet().size() != EXPECTED_BUNDLE_KEY_CNT) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Expect PersistableBundle to have one element but found: " + in.keySet()); String.format(
"Expect PersistableBundle to have %d element but found: %d",
EXPECTED_BUNDLE_KEY_CNT, in.keySet()));
} }
if (in.get(PARAMS_TYPE_IKE) != null) { if (in.get(PARAMS_TYPE_IKE) != null) {
@@ -66,7 +63,7 @@ public final class TunnelConnectionParamsUtils {
} }
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Invalid TunnelConnectionParams type " + in.keySet().iterator().next()); "Invalid Tunnel Connection Params type " + in.keySet().iterator().next());
} }
private static final class IkeTunnelConnectionParamsUtils { private static final class IkeTunnelConnectionParamsUtils {

View File

@@ -52,7 +52,6 @@ import android.net.NetworkProvider;
import android.net.NetworkScore; import android.net.NetworkScore;
import android.net.RouteInfo; import android.net.RouteInfo;
import android.net.TelephonyNetworkSpecifier; import android.net.TelephonyNetworkSpecifier;
import android.net.TunnelConnectionParams;
import android.net.Uri; import android.net.Uri;
import android.net.annotations.PolicyDirection; import android.net.annotations.PolicyDirection;
import android.net.ipsec.ike.ChildSessionCallback; import android.net.ipsec.ike.ChildSessionCallback;
@@ -1924,14 +1923,8 @@ public class VcnGatewayConnection extends StateMachine {
@NonNull IpSecTunnelInterface tunnelIface, @NonNull IpSecTunnelInterface tunnelIface,
@NonNull VcnChildSessionConfiguration childConfig, @NonNull VcnChildSessionConfiguration childConfig,
@Nullable UnderlyingNetworkRecord underlying) { @Nullable UnderlyingNetworkRecord underlying) {
final TunnelConnectionParams tunnelParams = final IkeTunnelConnectionParams ikeTunnelParams =
gatewayConnectionConfig.getTunnelConnectionParams(); gatewayConnectionConfig.getTunnelConnectionParams();
if (!(tunnelParams instanceof IkeTunnelConnectionParams)) {
throw new IllegalStateException(
"TunnelConnectionParams is not IkeTunnelConnectionParams");
}
final IkeTunnelConnectionParams ikeTunnelParams = (IkeTunnelConnectionParams) tunnelParams;
final LinkProperties lp = new LinkProperties(); final LinkProperties lp = new LinkProperties();
lp.setInterfaceName(tunnelIface.getInterfaceName()); lp.setInterfaceName(tunnelIface.getInterfaceName());
@@ -2138,32 +2131,16 @@ public class VcnGatewayConnection extends StateMachine {
} }
private IkeSessionParams buildIkeParams(@NonNull Network network) { private IkeSessionParams buildIkeParams(@NonNull Network network) {
final TunnelConnectionParams tunnelConnectionParams = final IkeTunnelConnectionParams ikeTunnelConnectionParams =
mConnectionConfig.getTunnelConnectionParams(); mConnectionConfig.getTunnelConnectionParams();
final IkeSessionParams.Builder builder =
if (tunnelConnectionParams instanceof IkeTunnelConnectionParams) { new IkeSessionParams.Builder(ikeTunnelConnectionParams.getIkeSessionParams());
final IkeTunnelConnectionParams ikeTunnelConnectionParams = builder.setNetwork(network);
(IkeTunnelConnectionParams) tunnelConnectionParams; return builder.build();
final IkeSessionParams.Builder builder =
new IkeSessionParams.Builder(ikeTunnelConnectionParams.getIkeSessionParams());
builder.setNetwork(network);
return builder.build();
}
throw new IllegalStateException("TunnelConnectionParams is not IkeTunnelConnectionParams");
} }
private ChildSessionParams buildChildParams() { private ChildSessionParams buildChildParams() {
final TunnelConnectionParams tunnelConnectionParams = return mConnectionConfig.getTunnelConnectionParams().getTunnelModeChildSessionParams();
mConnectionConfig.getTunnelConnectionParams();
if (tunnelConnectionParams instanceof IkeTunnelConnectionParams) {
return ((IkeTunnelConnectionParams) tunnelConnectionParams)
.getTunnelModeChildSessionParams();
}
throw new IllegalStateException("TunnelConnectionParams is not IkeTunnelConnectionParams");
} }
@VisibleForTesting(visibility = Visibility.PRIVATE) @VisibleForTesting(visibility = Visibility.PRIVATE)

View File

@@ -22,7 +22,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.TunnelConnectionParams; import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtilsTest; import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtilsTest;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
@@ -60,7 +60,7 @@ public class VcnGatewayConnectionConfigTest {
}; };
public static final int MAX_MTU = 1360; public static final int MAX_MTU = 1360;
public static final TunnelConnectionParams TUNNEL_CONNECTION_PARAMS = public static final IkeTunnelConnectionParams TUNNEL_CONNECTION_PARAMS =
TunnelConnectionParamsUtilsTest.buildTestParams(); TunnelConnectionParamsUtilsTest.buildTestParams();
public static final String GATEWAY_CONNECTION_NAME_PREFIX = "gatewayConnectionName-"; public static final String GATEWAY_CONNECTION_NAME_PREFIX = "gatewayConnectionName-";

View File

@@ -51,7 +51,6 @@ import android.net.LinkProperties;
import android.net.NetworkAgent; import android.net.NetworkAgent;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.ipsec.ike.ChildSaProposal; import android.net.ipsec.ike.ChildSaProposal;
import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.net.ipsec.ike.exceptions.IkeException; import android.net.ipsec.ike.exceptions.IkeException;
import android.net.ipsec.ike.exceptions.IkeInternalException; import android.net.ipsec.ike.exceptions.IkeInternalException;
import android.net.ipsec.ike.exceptions.IkeProtocolException; import android.net.ipsec.ike.exceptions.IkeProtocolException;
@@ -181,7 +180,7 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
assertEquals(mGatewayConnection.mConnectedState, mGatewayConnection.getCurrentState()); assertEquals(mGatewayConnection.mConnectedState, mGatewayConnection.getCurrentState());
final List<ChildSaProposal> saProposals = final List<ChildSaProposal> saProposals =
((IkeTunnelConnectionParams) mConfig.getTunnelConnectionParams()) mConfig.getTunnelConnectionParams()
.getTunnelModeChildSessionParams() .getTunnelModeChildSessionParams()
.getSaProposals(); .getSaProposals();
final int expectedMtu = final int expectedMtu =