From abdd3f8a9f453f9a198e4757f84408339def4377 Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Thu, 14 Apr 2016 17:30:59 +0900 Subject: [PATCH] Also log IPv4 and IPv6 connectivity of any previous default network Change-Id: I07595c0a131fea21914f524949cd64af87403b88 --- .../android/server/ConnectivityService.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index d8b3a97de3..e5fe03a06f 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2208,9 +2208,7 @@ public class ConnectivityService extends IConnectivityManager.Stub rematchAllNetworksAndRequests(null, 0); if (wasDefault && getDefaultNetwork() == null) { // Log that we lost the default network and there is no replacement. - final int[] transportTypes = new int[0]; - ConnectivityServiceChangeEvent.logEvent(NETID_UNSET, nai.network.netId, - transportTypes); + logConnectivityServiceChangeEvent(null, nai); } if (nai.created) { // Tell netd to clean up the configuration for this network @@ -4434,7 +4432,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } private void makeDefault(NetworkAgentInfo newNetwork, NetworkAgentInfo prevNetwork) { - int prevNetId = (prevNetwork == null) ? NETID_UNSET : prevNetwork.network.netId; if (DBG) log("Switching to new default network: " + newNetwork); setupDataActivityTracking(newNetwork); try { @@ -4446,8 +4443,8 @@ public class ConnectivityService extends IConnectivityManager.Stub handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy()); updateTcpBufferSizes(newNetwork); setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers()); - ConnectivityServiceChangeEvent.logEvent(newNetwork.network.netId, prevNetId, - newNetwork.networkCapabilities.getTransportTypes()); + + logConnectivityServiceChangeEvent(newNetwork, prevNetwork); } // Handles a network appearing or improving its score. @@ -5068,4 +5065,22 @@ public class ConnectivityService extends IConnectivityManager.Stub NetworkAgentInfo nai, NetworkRequest defaultRequest) { return new NetworkMonitor(context, handler, nai, defaultRequest); } + + private static void logConnectivityServiceChangeEvent( + NetworkAgentInfo next, NetworkAgentInfo prev) { + final int newNetId = (next == null) ? NETID_UNSET : next.network.netId; + final int[] newTransportTypes = (next == null) + ? new int[0] + : next.networkCapabilities.getTransportTypes(); + + final int oldNetId = (prev == null) ? NETID_UNSET : prev.network.netId; + final boolean hadIPv4 = (prev != null) && + prev.linkProperties.hasIPv4Address() && + prev.linkProperties.hasIPv4DefaultRoute(); + final boolean hadIPv6 = (prev != null) && + prev.linkProperties.hasGlobalIPv6Address() && + prev.linkProperties.hasIPv6DefaultRoute(); + ConnectivityServiceChangeEvent.logEvent(newNetId, newTransportTypes, + oldNetId, hadIPv4, hadIPv6); + } }