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)
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 97502c8..968528c 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 @@
 
                     // 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 1e20ae7..3da304c 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 @@
 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);