diff options
5 files changed, 17 insertions, 7 deletions
diff --git a/core/java/android/net/Ikev2VpnProfile.java b/core/java/android/net/Ikev2VpnProfile.java index f19a3410d673..81d03f07d0be 100644 --- a/core/java/android/net/Ikev2VpnProfile.java +++ b/core/java/android/net/Ikev2VpnProfile.java @@ -562,7 +562,7 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile { @NonNull private List<String> mAllowedAlgorithms = new ArrayList<>(); private boolean mIsBypassable = false; private boolean mIsMetered = true; - private int mMaxMtu = 1360; + private int mMaxMtu = PlatformVpnProfile.MAX_MTU_DEFAULT; /** * Creates a new builder with the basic parameters of an IKEv2/IPsec VPN. diff --git a/core/java/android/net/PlatformVpnProfile.java b/core/java/android/net/PlatformVpnProfile.java index fbae63707be2..445ec91e4f46 100644 --- a/core/java/android/net/PlatformVpnProfile.java +++ b/core/java/android/net/PlatformVpnProfile.java @@ -60,6 +60,9 @@ public abstract class PlatformVpnProfile { public static final int TYPE_IKEV2_IPSEC_RSA = VpnProfile.TYPE_IKEV2_IPSEC_RSA; /** @hide */ + public static final int MAX_MTU_DEFAULT = 1360; + + /** @hide */ @PlatformVpnType protected final int mType; /** @hide */ diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java index 23b1ab52cb21..829bd8a5a2a7 100644 --- a/core/java/com/android/internal/net/VpnProfile.java +++ b/core/java/com/android/internal/net/VpnProfile.java @@ -19,6 +19,7 @@ package com.android.internal.net; import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.net.Ikev2VpnProfile; +import android.net.PlatformVpnProfile; import android.net.ProxyInfo; import android.os.Build; import android.os.Parcel; @@ -131,10 +132,10 @@ public final class VpnProfile implements Cloneable, Parcelable { * delimiters) are not present in the algorithm names. See {@link #validateAllowedAlgorithms()} */ private List<String> mAllowedAlgorithms = new ArrayList<>(); // 19 - public boolean isBypassable = false; // 20 - public boolean isMetered = false; // 21 - public int maxMtu = 1400; // 22 - public boolean areAuthParamsInline = false; // 23 + public boolean isBypassable = false; // 20 + public boolean isMetered = false; // 21 + public int maxMtu = PlatformVpnProfile.MAX_MTU_DEFAULT; // 22 + public boolean areAuthParamsInline = false; // 23 // Helper fields. @UnsupportedAppUsage diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 20ffd9f51d6e..5ecaf6a148aa 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -2248,12 +2248,16 @@ public class Vpn { final String interfaceName = mTunnelIface.getInterfaceName(); final int maxMtu = mProfile.getMaxMtu(); final List<LinkAddress> internalAddresses = childConfig.getInternalAddresses(); + final List<String> dnsAddrStrings = new ArrayList<>(); final Collection<RouteInfo> newRoutes = VpnIkev2Utils.getRoutesFromTrafficSelectors( childConfig.getOutboundTrafficSelectors()); for (final LinkAddress address : internalAddresses) { mTunnelIface.addAddress(address.getAddress(), address.getPrefixLength()); } + for (InetAddress addr : childConfig.getInternalDnsServers()) { + dnsAddrStrings.add(addr.getHostAddress()); + } final NetworkAgent networkAgent; final LinkProperties lp; @@ -2269,7 +2273,9 @@ public class Vpn { mConfig.routes.clear(); mConfig.routes.addAll(newRoutes); - // TODO: Add DNS servers from negotiation + if (mConfig.dnsServers == null) mConfig.dnsServers = new ArrayList<>(); + mConfig.dnsServers.clear(); + mConfig.dnsServers.addAll(dnsAddrStrings); networkAgent = mNetworkAgent; diff --git a/tests/net/java/com/android/internal/net/VpnProfileTest.java b/tests/net/java/com/android/internal/net/VpnProfileTest.java index 8a4b53343c26..ceca6f028866 100644 --- a/tests/net/java/com/android/internal/net/VpnProfileTest.java +++ b/tests/net/java/com/android/internal/net/VpnProfileTest.java @@ -65,7 +65,7 @@ public class VpnProfileTest { assertTrue(p.getAllowedAlgorithms() != null && p.getAllowedAlgorithms().isEmpty()); assertFalse(p.isBypassable); assertFalse(p.isMetered); - assertEquals(1400, p.maxMtu); + assertEquals(1360, p.maxMtu); assertFalse(p.areAuthParamsInline); } |