Loading services/core/java/com/android/server/ConnectivityService.java +15 −6 Original line number Original line Diff line number Diff line Loading @@ -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: { Loading Loading @@ -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) { Loading Loading @@ -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); } } Loading Loading @@ -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); } } } } } } Loading Loading @@ -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; Loading @@ -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"); Loading services/core/java/com/android/server/net/LockdownVpnTracker.java +11 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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; Loading Loading @@ -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(); Loading @@ -277,7 +286,7 @@ public class LockdownVpnTracker { } } } } public void onNetworkInfoChanged(NetworkInfo info) { public void onNetworkInfoChanged() { synchronized (mStateLock) { synchronized (mStateLock) { handleStateChangedLocked(); handleStateChangedLocked(); } } Loading Loading
services/core/java/com/android/server/ConnectivityService.java +15 −6 Original line number Original line Diff line number Diff line Loading @@ -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: { Loading Loading @@ -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) { Loading Loading @@ -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); } } Loading Loading @@ -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); } } } } } } Loading Loading @@ -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; Loading @@ -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"); Loading
services/core/java/com/android/server/net/LockdownVpnTracker.java +11 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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; Loading Loading @@ -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(); Loading @@ -277,7 +286,7 @@ public class LockdownVpnTracker { } } } } public void onNetworkInfoChanged(NetworkInfo info) { public void onNetworkInfoChanged() { synchronized (mStateLock) { synchronized (mStateLock) { handleStateChangedLocked(); handleStateChangedLocked(); } } Loading