am 24f9a26c: am 28dcf034: Merge "Propagate network state changes to the LockdownVpnTracker." into lmp-dev

* commit '24f9a26cea200d9452bd922d94f8669d87744f53':
  Propagate network state changes to the LockdownVpnTracker.
This commit is contained in:
Lorenzo Colitti
2014-10-16 18:35:14 +00:00
committed by Android Git Automerger
2 changed files with 26 additions and 8 deletions

View File

@@ -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");

View File

@@ -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();
} }