From a5479eca84716131a7a7e67a8184869a13478057 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: 133797637 Test: Build Change-Id: Ia6b00dd88f8f31823647c56c20b8c7edd20280f7 Merged-In: Ia6b00dd88f8f31823647c56c20b8c7edd20280f7 (cherry picked from commit b38065dd3a22452572f4bd6c380ed2c7f73ac103) --- .../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 0271d3bcb57ca..8185c31f63210 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -1846,10 +1846,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. @@ -1857,7 +1858,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(); } @@ -1923,6 +1924,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; @@ -1949,7 +1951,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"}; @@ -1965,6 +1967,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()) { @@ -2177,7 +2181,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);