Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b38065dd authored by Chenbo Feng's avatar Chenbo Feng
Browse files

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
parent 98e26638
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -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);