diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2019-05-22 16:53:33 +0900 |
---|---|---|
committer | Remi NGUYEN VAN <reminv@google.com> | 2019-05-22 16:53:33 +0900 |
commit | aabe5a01858c39fc568691cbbb7e144edfe783cf (patch) | |
tree | 34689aa9521a33be8a1d9029b2b729ce9bb00510 /packages/NetworkStack | |
parent | 8ef722a970d6b241282a9249f2b07f41ed7df50f (diff) |
Address comments on dumpsys network_stack version
Track a set of versions instead of just the latest seen version, and
print versions in the standard dumpsys network_stack as well.
Also add version tracking for the netd aidl interface.
Test: Flashed, dumpsys network_stack and dumpsys network_stack version
Bug: 133124190
Change-Id: I9bf21b10b02f605ef7b85aceb808a5437d936f85
Diffstat (limited to 'packages/NetworkStack')
-rw-r--r-- | packages/NetworkStack/src/com/android/server/NetworkStackService.java | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/packages/NetworkStack/src/com/android/server/NetworkStackService.java b/packages/NetworkStack/src/com/android/server/NetworkStackService.java index c394d4c4cfd3..2fae0c703084 100644 --- a/packages/NetworkStack/src/com/android/server/NetworkStackService.java +++ b/packages/NetworkStack/src/com/android/server/NetworkStackService.java @@ -49,6 +49,7 @@ import android.net.shared.PrivateDnsConfig; import android.net.util.SharedLog; import android.os.IBinder; import android.os.RemoteException; +import android.util.ArraySet; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.IndentingPrintWriter; @@ -62,7 +63,6 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; -import java.util.concurrent.atomic.AtomicInteger; /** * Android service used to start the network stack when bound to via an intent. @@ -118,14 +118,12 @@ public class NetworkStackService extends Service { @GuardedBy("mValidationLogs") private final ArrayDeque<SharedLog> mValidationLogs = new ArrayDeque<>(MAX_VALIDATION_LOGS); - private static final int VERSION_UNKNOWN = 0; private static final String DUMPSYS_ARG_VERSION = "version"; - /** Version of the AIDL interfaces observed on the system */ - private final AtomicInteger mSystemAidlVersion = new AtomicInteger(VERSION_UNKNOWN); - - /** Whether different versions have been observed on interfaces provided by the system */ - private volatile boolean mConflictingSystemAidlVersions = false; + /** Version of the framework AIDL interfaces observed. Should hold only one value. */ + @GuardedBy("mFrameworkAidlVersions") + private final ArraySet<Integer> mFrameworkAidlVersions = new ArraySet<>(1); + private final int mNetdAidlVersion; private SharedLog addValidationLogs(Network network, String name) { final SharedLog log = new SharedLog(NUM_VALIDATION_LOG_LINES, network + " - " + name); @@ -146,6 +144,15 @@ public class NetworkStackService extends Service { mCm = context.getSystemService(ConnectivityManager.class); mIpMemoryStoreService = new IpMemoryStoreService(context); + int netdVersion; + try { + netdVersion = mNetd.getInterfaceVersion(); + } catch (RemoteException e) { + mLog.e("Error obtaining INetd version", e); + netdVersion = -1; + } + mNetdAidlVersion = netdVersion; + try { mObserverRegistry.register(mNetd); } catch (RemoteException e) { @@ -154,9 +161,8 @@ public class NetworkStackService extends Service { } private void updateSystemAidlVersion(final int version) { - final int previousVersion = mSystemAidlVersion.getAndSet(version); - if (previousVersion != VERSION_UNKNOWN && previousVersion != version) { - mConflictingSystemAidlVersions = true; + synchronized (mFrameworkAidlVersions) { + mFrameworkAidlVersions.add(version); } } @@ -230,12 +236,16 @@ public class NetworkStackService extends Service { protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout, @Nullable String[] args) { checkDumpPermission(); + + final IndentingPrintWriter pw = new IndentingPrintWriter(fout, " "); + pw.println("NetworkStack version:"); + dumpVersion(pw); + pw.println(); + if (args != null && args.length >= 1 && DUMPSYS_ARG_VERSION.equals(args[0])) { - dumpVersion(fout); return; } - final IndentingPrintWriter pw = new IndentingPrintWriter(fout, " "); pw.println("NetworkStack logs:"); mLog.dump(fd, pw, args); @@ -283,8 +293,10 @@ public class NetworkStackService extends Service { */ private void dumpVersion(@NonNull PrintWriter fout) { fout.println("NetworkStackConnector: " + this.VERSION); - fout.println("SystemServer: " + mSystemAidlVersion); - fout.println("SystemServerConflicts: " + mConflictingSystemAidlVersions); + synchronized (mFrameworkAidlVersions) { + fout.println("SystemServer: " + mFrameworkAidlVersions); + } + fout.println("Netd: " + mNetdAidlVersion); } @Override |