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

Commit 28dcf034 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Android (Google) Code Review
Browse files

Merge "Propagate network state changes to the LockdownVpnTracker." into lmp-dev

parents 185fcadf 0cb7903d
Loading
Loading
Loading
Loading
+15 −6
Original line number Original line Diff line number Diff line
@@ -2001,9 +2001,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                    } else if (state == NetworkInfo.State.CONNECTED) {
                    } else if (state == NetworkInfo.State.CONNECTED) {
                    //    handleConnect(info);
                    //    handleConnect(info);
                    }
                    }
                    if (mLockdownTracker != null) {
                    notifyLockdownVpn(null);
                        mLockdownTracker.onNetworkInfoChanged(info);
                    }
                    break;
                    break;
                }
                }
                case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED: {
                case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED: {
@@ -2126,6 +2124,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
            if (nai.networkRequests.get(mDefaultRequest.requestId) != null) {
            if (nai.networkRequests.get(mDefaultRequest.requestId) != null) {
                removeDataActivityTracking(nai);
                removeDataActivityTracking(nai);
                mActiveDefaultNetwork = ConnectivityManager.TYPE_NONE;
                mActiveDefaultNetwork = ConnectivityManager.TYPE_NONE;
                notifyLockdownVpn(nai);
                requestNetworkTransitionWakelock(nai.name());
                requestNetworkTransitionWakelock(nai.name());
            }
            }
            for (NetworkAgentInfo networkToActivate : toActivate) {
            for (NetworkAgentInfo networkToActivate : toActivate) {
@@ -3801,6 +3800,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        } catch (Exception e) {
        } catch (Exception e) {
            loge("Exception setting default network :" + e);
            loge("Exception setting default network :" + e);
        }
        }
        notifyLockdownVpn(newNetwork);
        handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy());
        handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy());
        updateTcpBufferSizes(newNetwork);
        updateTcpBufferSizes(newNetwork);
    }
    }
@@ -3916,6 +3916,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
                        }
                        }
                        mDefaultInetConditionPublished = newNetwork.validated ? 100 : 0;
                        mDefaultInetConditionPublished = newNetwork.validated ? 100 : 0;
                        mLegacyTypeTracker.add(newNetwork.networkInfo.getType(), newNetwork);
                        mLegacyTypeTracker.add(newNetwork.networkInfo.getType(), newNetwork);
                        notifyLockdownVpn(newNetwork);
                    }
                    }
                }
                }
            }
            }
@@ -4035,6 +4036,16 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        sendInetConditionBroadcast(nai.networkInfo);
        sendInetConditionBroadcast(nai.networkInfo);
    }
    }


    private void notifyLockdownVpn(NetworkAgentInfo nai) {
        if (mLockdownTracker != null) {
            if (nai != null && nai.isVPN()) {
                mLockdownTracker.onVpnStateChanged(nai.networkInfo);
            } else {
                mLockdownTracker.onNetworkInfoChanged();
            }
        }
    }

    private void updateNetworkInfo(NetworkAgentInfo networkAgent, NetworkInfo newInfo) {
    private void updateNetworkInfo(NetworkAgentInfo networkAgent, NetworkInfo newInfo) {
        NetworkInfo.State state = newInfo.getState();
        NetworkInfo.State state = newInfo.getState();
        NetworkInfo oldInfo = null;
        NetworkInfo oldInfo = null;
@@ -4042,9 +4053,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
            oldInfo = networkAgent.networkInfo;
            oldInfo = networkAgent.networkInfo;
            networkAgent.networkInfo = newInfo;
            networkAgent.networkInfo = newInfo;
        }
        }
        if (networkAgent.isVPN() && mLockdownTracker != null) {
        notifyLockdownVpn(networkAgent);
            mLockdownTracker.onVpnStateChanged(newInfo);
        }


        if (oldInfo != null && oldInfo.getState() == state) {
        if (oldInfo != null && oldInfo.getState() == state) {
            if (VDBG) log("ignoring duplicate network state non-change");
            if (VDBG) log("ignoring duplicate network state non-change");
+11 −2
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.LinkProperties;
import android.net.LinkAddress;
import android.net.LinkAddress;
import android.net.NetworkInfo;
import android.net.NetworkInfo;
@@ -113,7 +114,6 @@ public class LockdownVpnTracker {
     * connection when ready, or setting firewall rules once VPN is connected.
     * connection when ready, or setting firewall rules once VPN is connected.
     */
     */
    private void handleStateChangedLocked() {
    private void handleStateChangedLocked() {
        Slog.d(TAG, "handleStateChanged()");


        final NetworkInfo egressInfo = mConnService.getActiveNetworkInfoUnfiltered();
        final NetworkInfo egressInfo = mConnService.getActiveNetworkInfoUnfiltered();
        final LinkProperties egressProp = mConnService.getActiveLinkProperties();
        final LinkProperties egressProp = mConnService.getActiveLinkProperties();
@@ -126,6 +126,14 @@ public class LockdownVpnTracker {
                || State.DISCONNECTED.equals(egressInfo.getState());
                || State.DISCONNECTED.equals(egressInfo.getState());
        final boolean egressChanged = egressProp == null
        final boolean egressChanged = egressProp == null
                || !TextUtils.equals(mAcceptedEgressIface, egressProp.getInterfaceName());
                || !TextUtils.equals(mAcceptedEgressIface, egressProp.getInterfaceName());

        final String egressTypeName = (egressInfo == null) ?
                null : ConnectivityManager.getNetworkTypeName(egressInfo.getType());
        final String egressIface = (egressProp == null) ?
                null : egressProp.getInterfaceName();
        Slog.d(TAG, "handleStateChanged: egress=" + egressTypeName +
                " " + mAcceptedEgressIface + "->" + egressIface);

        if (egressDisconnected || egressChanged) {
        if (egressDisconnected || egressChanged) {
            clearSourceRulesLocked();
            clearSourceRulesLocked();
            mAcceptedEgressIface = null;
            mAcceptedEgressIface = null;
@@ -252,6 +260,7 @@ public class LockdownVpnTracker {
    }
    }


    public void reset() {
    public void reset() {
        Slog.d(TAG, "reset()");
        synchronized (mStateLock) {
        synchronized (mStateLock) {
            // cycle tracker, reset error count, and trigger retry
            // cycle tracker, reset error count, and trigger retry
            shutdownLocked();
            shutdownLocked();
@@ -277,7 +286,7 @@ public class LockdownVpnTracker {
        }
        }
    }
    }


    public void onNetworkInfoChanged(NetworkInfo info) {
    public void onNetworkInfoChanged() {
        synchronized (mStateLock) {
        synchronized (mStateLock) {
            handleStateChangedLocked();
            handleStateChangedLocked();
        }
        }