From b38065dd3a22452572f4bd6c380ed2c7f73ac103 Mon Sep 17 00:00:00 2001 From: Chenbo Feng Date: Thu, 16 May 2019 16:00:01 -0700 Subject: [PATCH] Add server information for pptp vpn The pptp vpn set up in ip-up-vpn.c does not provide an environment variable for the remote server so we cannot setup a correct throw route to the VPN endpoint. Change the LegacyVpnRunner class to include the remote server information in the class so it can use it to bring up the vpn and set the throw rule correctly. Bug: 131386220 Test: Build Change-Id: Ia6b00dd88f8f31823647c56c20b8c7edd20280f7 --- .../java/com/android/server/connectivity/Vpn.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 1275302cd8c94..f5de2ad886b87 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -1850,10 +1850,11 @@ public class Vpn { if (!profile.searchDomains.isEmpty()) { config.searchDomains = Arrays.asList(profile.searchDomains.split(" +")); } - startLegacyVpn(config, racoon, mtpd); + startLegacyVpn(config, racoon, mtpd, profile); } - private synchronized void startLegacyVpn(VpnConfig config, String[] racoon, String[] mtpd) { + private synchronized void startLegacyVpn(VpnConfig config, String[] racoon, String[] mtpd, + VpnProfile profile) { stopLegacyVpnPrivileged(); // Prepare for the new request. @@ -1861,7 +1862,7 @@ public class Vpn { updateState(DetailedState.CONNECTING, "startLegacyVpn"); // Start a new LegacyVpnRunner and we are done! - mLegacyVpnRunner = new LegacyVpnRunner(config, racoon, mtpd); + mLegacyVpnRunner = new LegacyVpnRunner(config, racoon, mtpd, profile); mLegacyVpnRunner.start(); } @@ -1927,6 +1928,7 @@ public class Vpn { private final String mOuterInterface; private final AtomicInteger mOuterConnection = new AtomicInteger(ConnectivityManager.TYPE_NONE); + private final VpnProfile mProfile; private long mBringupStartTime = -1; @@ -1953,7 +1955,7 @@ public class Vpn { } }; - public LegacyVpnRunner(VpnConfig config, String[] racoon, String[] mtpd) { + LegacyVpnRunner(VpnConfig config, String[] racoon, String[] mtpd, VpnProfile profile) { super(TAG); mConfig = config; mDaemons = new String[] {"racoon", "mtpd"}; @@ -1969,6 +1971,8 @@ public class Vpn { // registering mOuterInterface = mConfig.interfaze; + mProfile = profile; + if (!TextUtils.isEmpty(mOuterInterface)) { final ConnectivityManager cm = ConnectivityManager.from(mContext); for (Network network : cm.getAllNetworks()) { @@ -2181,7 +2185,7 @@ public class Vpn { } // Add a throw route for the VPN server endpoint, if one was specified. - String endpoint = parameters[5]; + String endpoint = parameters[5].isEmpty() ? mProfile.server : parameters[5]; if (!endpoint.isEmpty()) { try { InetAddress addr = InetAddress.parseNumericAddress(endpoint);