From 21d15049f4422bfde167ec0d504702f0d0e7f45f Mon Sep 17 00:00:00 2001 From: dalyk Date: Thu, 8 Mar 2018 16:25:48 -0500 Subject: [PATCH] Add new netd event callback for changes to private DNS validation state. Test: None. Bug: 71828272 Merged-In: Ib6824606b95deb23da2edd7aa4b96a0de66b12d1 Merged-In: Id88a4e846ae50536ac7b1541cf10c1fad1b1eeca Change-Id: Ibf2683b9ff7c6cb69d7f4ad12b8bdff7cf7008f0 (cherry picked from commit 99c5029b91f17c46acd219a317b48b3ac0fe9a90) --- core/java/android/net/INetdEventCallback.aidl | 17 +++++++++++++-- .../server/net/BaseNetdEventCallback.java | 6 ++++++ .../NetdEventListenerService.java | 21 +++++++++++++++++-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/core/java/android/net/INetdEventCallback.aidl b/core/java/android/net/INetdEventCallback.aidl index 1fd9423b6128b..1e75bf461a705 100644 --- a/core/java/android/net/INetdEventCallback.aidl +++ b/core/java/android/net/INetdEventCallback.aidl @@ -20,8 +20,9 @@ package android.net; oneway interface INetdEventCallback { // Possible addNetdEventCallback callers. - const int CALLBACK_CALLER_DEVICE_POLICY = 0; - const int CALLBACK_CALLER_NETWORK_WATCHLIST = 1; + const int CALLBACK_CALLER_CONNECTIVITY_SERVICE = 0; + const int CALLBACK_CALLER_DEVICE_POLICY = 1; + const int CALLBACK_CALLER_NETWORK_WATCHLIST = 2; /** * Reports a single DNS lookup function call. @@ -38,6 +39,18 @@ oneway interface INetdEventCallback { void onDnsEvent(String hostname, in String[] ipAddresses, int ipAddressesCount, long timestamp, int uid); + /** + * Represents a private DNS validation success or failure. + * This method must not block or perform long-running operations. + * + * @param netId the ID of the network the validation was performed on. + * @param ipAddress the IP address for which validation was performed. + * @param hostname the hostname for which validation was performed. + * @param validated whether or not validation was successful. + */ + void onPrivateDnsValidationEvent(int netId, String ipAddress, String hostname, + boolean validated); + /** * Reports a single connect library call. * This method must not block or perform long-running operations. diff --git a/core/java/com/android/server/net/BaseNetdEventCallback.java b/core/java/com/android/server/net/BaseNetdEventCallback.java index 3d3a3d07b2163..fdba2f3dc9e61 100644 --- a/core/java/com/android/server/net/BaseNetdEventCallback.java +++ b/core/java/com/android/server/net/BaseNetdEventCallback.java @@ -31,6 +31,12 @@ public class BaseNetdEventCallback extends INetdEventCallback.Stub { // default no-op } + @Override + public void onPrivateDnsValidationEvent(int netId, String ipAddress, + String hostname, boolean validated) { + // default no-op + } + @Override public void onConnectEvent(String ipAddr, int port, long timestamp, int uid) { // default no-op diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java index f1a806bb4074f..4f31e533f8f97 100644 --- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java +++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java @@ -102,9 +102,12 @@ public class NetdEventListenerService extends INetdEventListener.Stub { /** - * There are only 2 possible callbacks. + * There are only 3 possible callbacks. * - * mNetdEventCallbackList[CALLBACK_CALLER_DEVICE_POLICY]. + * mNetdEventCallbackList[CALLBACK_CALLER_CONNECTIVITY_SERVICE] + * Callback registered/unregistered by ConnectivityService. + * + * mNetdEventCallbackList[CALLBACK_CALLER_DEVICE_POLICY] * Callback registered/unregistered when logging is being enabled/disabled in DPM * by the device owner. It's DevicePolicyManager's responsibility to ensure that. * @@ -113,6 +116,7 @@ public class NetdEventListenerService extends INetdEventListener.Stub { */ @GuardedBy("this") private static final int[] ALLOWED_CALLBACK_TYPES = { + INetdEventCallback.CALLBACK_CALLER_CONNECTIVITY_SERVICE, INetdEventCallback.CALLBACK_CALLER_DEVICE_POLICY, INetdEventCallback.CALLBACK_CALLER_NETWORK_WATCHLIST }; @@ -209,6 +213,19 @@ public class NetdEventListenerService extends INetdEventListener.Stub { } } + @Override + // Called concurrently by multiple binder threads. + // This method must not block or perform long-running operations. + public synchronized void onPrivateDnsValidationEvent(int netId, + String ipAddress, String hostname, boolean validated) + throws RemoteException { + for (INetdEventCallback callback : mNetdEventCallbackList) { + if (callback != null) { + callback.onPrivateDnsValidationEvent(netId, ipAddress, hostname, validated); + } + } + } + @Override // Called concurrently by multiple binder threads. // This method must not block or perform long-running operations.