diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/android/net/util/NetworkStackUtils.java | 5 | ||||
-rw-r--r-- | src/com/android/server/NetworkStackService.java | 40 |
2 files changed, 29 insertions, 16 deletions
diff --git a/src/android/net/util/NetworkStackUtils.java b/src/android/net/util/NetworkStackUtils.java index 4afc34b..4e340ce 100644 --- a/src/android/net/util/NetworkStackUtils.java +++ b/src/android/net/util/NetworkStackUtils.java @@ -18,6 +18,7 @@ package android.net.util; import android.annotation.NonNull; import android.annotation.Nullable; +import android.provider.DeviceConfig; import android.util.SparseArray; import java.io.FileDescriptor; @@ -183,8 +184,8 @@ public class NetworkStackUtils { @Nullable public static String getDeviceConfigProperty(@NonNull String namespace, @NonNull String name, @Nullable String defaultValue) { - // TODO: Link to DeviceConfig API once it is ready. - return defaultValue; + String value = DeviceConfig.getProperty(namespace, name); + return value != null ? value : defaultValue; } /** diff --git a/src/com/android/server/NetworkStackService.java b/src/com/android/server/NetworkStackService.java index 91cc8c3..9bf4457 100644 --- a/src/com/android/server/NetworkStackService.java +++ b/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); } } @@ -233,12 +239,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); @@ -286,8 +296,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 |