From a9159882e5d88a47a945cf54c4e2245bc193b24d Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Mon, 17 Feb 2020 17:46:23 -0800 Subject: [PATCH] Pass server address directly to IKE. This change updates the buildIkeSessionParams() method to use the new IKE API that allows the VPN to pass the server address, and let IKE do the DNS resolution. Bug: 149356682 Test: FrameworksNetTests passing Change-Id: Ic1077c6eb1f49bca9331e49555b3787cee02788c Merged-In: Ic1077c6eb1f49bca9331e49555b3787cee02788c (cherry picked from commit fe975fea5d228514fd19f95e56859d5c98433f7d) --- services/core/java/com/android/server/connectivity/Vpn.java | 5 +++-- .../java/com/android/server/connectivity/VpnIkev2Utils.java | 6 +----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 97502c8001d19..968528ca5b29d 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -2357,10 +2357,11 @@ public class Vpn { // TODO: Remove the need for adding two unused addresses with // IPsec tunnels. + final InetAddress address = InetAddress.getLocalHost(); mTunnelIface = mIpSecManager.createIpSecTunnelInterface( - ikeSessionParams.getServerAddress() /* unused */, - ikeSessionParams.getServerAddress() /* unused */, + address /* unused */, + address /* unused */, network); mNetd.setInterfaceUp(mTunnelIface.getInterfaceName()); diff --git a/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java index 1e20ae752709b..3da304c07910e 100644 --- a/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java +++ b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java @@ -85,16 +85,12 @@ import java.util.List; public class VpnIkev2Utils { static IkeSessionParams buildIkeSessionParams( @NonNull Context context, @NonNull Ikev2VpnProfile profile, @NonNull Network network) { - // TODO(b/149356682): Update this based on new IKE API. Only numeric addresses supported - // until then. All others throw IAE (caught by caller). - final InetAddress serverAddr = InetAddresses.parseNumericAddress(profile.getServerAddr()); final IkeIdentification localId = parseIkeIdentification(profile.getUserIdentity()); final IkeIdentification remoteId = parseIkeIdentification(profile.getServerAddr()); - // TODO(b/149356682): Update this based on new IKE API. final IkeSessionParams.Builder ikeOptionsBuilder = new IkeSessionParams.Builder(context) - .setServerAddress(serverAddr) + .setServerHostname(profile.getServerAddr()) .setNetwork(network) .setLocalIdentification(localId) .setRemoteIdentification(remoteId);