Loading core/java/android/os/INetworkManagementService.aidl +0 −11 Original line number Diff line number Diff line Loading @@ -330,12 +330,6 @@ interface INetworkManagementService */ void removeIdleTimer(String iface); /** * Configure name servers, search paths, and resolver parameters for the given network. */ void setDnsConfigurationForNetwork(int netId, in String[] servers, in String[] domains, in int[] params, String tlsHostname, in String[] tlsServers); void setFirewallEnabled(boolean enabled); boolean isFirewallEnabled(); void setFirewallInterfaceRule(String iface, boolean allow); Loading Loading @@ -380,11 +374,6 @@ interface INetworkManagementService */ void createVirtualNetwork(int netId, boolean secure); /** * Remove a network. */ void removeNetwork(int netId); /** * Add an interface to a network. */ Loading services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ java_library_static { "android.hardware.configstore-V1.0-java", "android.hardware.contexthub-V1.0-java", "android.hidl.manager-V1.2-java", "dnsresolver_aidl_interface-java", "netd_aidl_interface-java", "netd_event_listener_interface-java", ], Loading services/core/java/com/android/server/ConnectivityService.java +18 −8 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import android.net.ConnectionInfo; import android.net.ConnectivityManager; import android.net.ICaptivePortal; import android.net.IConnectivityManager; import android.net.IDnsResolver; import android.net.IIpConnectivityMetrics; import android.net.INetd; import android.net.INetdEventCallback; Loading Loading @@ -294,6 +295,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private INetworkManagementService mNMS; @VisibleForTesting protected IDnsResolver mDnsResolver; @VisibleForTesting protected INetd mNetd; private INetworkStatsService mStatsService; private INetworkPolicyManager mPolicyManager; Loading Loading @@ -525,6 +528,11 @@ public class ConnectivityService extends IConnectivityManager.Stub return sMagicDecoderRing.get(what, Integer.toString(what)); } private static IDnsResolver getDnsResolver() { return IDnsResolver.Stub .asInterface(ServiceManager.getService("dnsresolver")); } /** Handler thread used for both of the handlers below. */ @VisibleForTesting protected final HandlerThread mHandlerThread; Loading Loading @@ -810,13 +818,14 @@ public class ConnectivityService extends IConnectivityManager.Stub public ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager) { this(context, netManager, statsService, policyManager, new IpConnectivityLog()); this(context, netManager, statsService, policyManager, getDnsResolver(), new IpConnectivityLog()); } @VisibleForTesting protected ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager, IpConnectivityLog logger) { IDnsResolver dnsresolver, IpConnectivityLog logger) { if (DBG) log("ConnectivityService starting up"); mSystemProperties = getSystemProperties(); Loading Loading @@ -853,6 +862,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mPolicyManagerInternal = checkNotNull( LocalServices.getService(NetworkPolicyManagerInternal.class), "missing NetworkPolicyManagerInternal"); mDnsResolver = checkNotNull(dnsresolver, "missing IDnsResolver"); mProxyTracker = makeProxyTracker(); mNetd = NetdService.getInstance(); Loading Loading @@ -1006,7 +1016,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler); mDnsManager = new DnsManager(mContext, mNMS, mSystemProperties); mDnsManager = new DnsManager(mContext, mDnsResolver, mSystemProperties); registerPrivateDnsSettingsCallbacks(); } Loading Loading @@ -3021,9 +3031,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // NetworkFactories, so network traffic isn't interrupted for an unnecessarily // long time. try { mNMS.removeNetwork(nai.network.netId); } catch (Exception e) { loge("Exception removing network: " + e); mNetd.networkDestroy(nai.network.netId); } catch (RemoteException | ServiceSpecificException e) { loge("Exception destroying network: " + e); } mDnsManager.removeNetwork(nai.network); } Loading Loading @@ -5379,8 +5389,8 @@ public class ConnectivityService extends IConnectivityManager.Stub final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities); final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(), new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, nc, currentScore, mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mNMS, factorySerialNumber); mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mDnsResolver, mNMS, factorySerialNumber); // Make sure the network capabilities reflect what the agent info says. nai.networkCapabilities = mixInCapabilities(nai, nc); final String extraInfo = networkInfo.getExtraInfo(); Loading services/core/java/com/android/server/NetworkManagementService.java +0 −29 Original line number Diff line number Diff line Loading @@ -1604,20 +1604,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { return stats; } @Override public void setDnsConfigurationForNetwork(int netId, String[] servers, String[] domains, int[] params, String tlsHostname, String[] tlsServers) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); final String[] tlsFingerprints = new String[0]; try { mNetdService.setResolverConfiguration( netId, servers, domains, params, tlsHostname, tlsServers, tlsFingerprints); } catch (RemoteException e) { throw new RuntimeException(e); } } @Override public void addVpnUidRanges(int netId, UidRange[] ranges) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); Loading Loading @@ -2075,21 +2061,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { } } @Override public void removeNetwork(int netId) { mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG); try { mNetdService.networkDestroy(netId); } catch (ServiceSpecificException e) { Log.w(TAG, "removeNetwork(" + netId + "): ", e); throw e; } catch (RemoteException e) { Log.w(TAG, "removeNetwork(" + netId + "): ", e); throw e.rethrowAsRuntimeException(); } } @Override public void addInterfaceToNetwork(String iface, int netId) { modifyInterfaceInNetwork(MODIFY_OPERATION_ADD, netId, iface); Loading services/core/java/com/android/server/connectivity/DnsManager.java +17 −7 Original line number Diff line number Diff line Loading @@ -30,13 +30,15 @@ import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.net.IDnsResolver; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkUtils; import android.net.Uri; import android.net.shared.PrivateDnsConfig; import android.os.Binder; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; Loading Loading @@ -229,7 +231,7 @@ public class DnsManager { private final Context mContext; private final ContentResolver mContentResolver; private final INetworkManagementService mNMS; private final IDnsResolver mDnsResolver; private final MockableSystemProperties mSystemProperties; // TODO: Replace these Maps with SparseArrays. private final Map<Integer, PrivateDnsConfig> mPrivateDnsMap; Loading @@ -243,10 +245,10 @@ public class DnsManager { private String mPrivateDnsMode; private String mPrivateDnsSpecifier; public DnsManager(Context ctx, INetworkManagementService nms, MockableSystemProperties sp) { public DnsManager(Context ctx, IDnsResolver dnsResolver, MockableSystemProperties sp) { mContext = ctx; mContentResolver = mContext.getContentResolver(); mNMS = nms; mDnsResolver = dnsResolver; mSystemProperties = sp; mPrivateDnsMap = new HashMap<>(); mPrivateDnsValidationMap = new HashMap<>(); Loading @@ -260,6 +262,12 @@ public class DnsManager { } public void removeNetwork(Network network) { try { mDnsResolver.clearResolverConfiguration(network.netId); } catch (RemoteException | ServiceSpecificException e) { Slog.e(TAG, "Error clearing DNS configuration: " + e); return; } mPrivateDnsMap.remove(network.netId); mPrivateDnsValidationMap.remove(network.netId); } Loading Loading @@ -344,10 +352,12 @@ public class DnsManager { Slog.d(TAG, String.format("setDnsConfigurationForNetwork(%d, %s, %s, %s, %s, %s)", netId, Arrays.toString(assignedServers), Arrays.toString(domainStrs), Arrays.toString(params), tlsHostname, Arrays.toString(tlsServers))); final String[] tlsFingerprints = new String[0]; try { mNMS.setDnsConfigurationForNetwork( netId, assignedServers, domainStrs, params, tlsHostname, tlsServers); } catch (Exception e) { mDnsResolver.setResolverConfiguration( netId, assignedServers, domainStrs, params, tlsHostname, tlsServers, tlsFingerprints); } catch (RemoteException | ServiceSpecificException e) { Slog.e(TAG, "Error setting DNS configuration: " + e); return; } Loading Loading
core/java/android/os/INetworkManagementService.aidl +0 −11 Original line number Diff line number Diff line Loading @@ -330,12 +330,6 @@ interface INetworkManagementService */ void removeIdleTimer(String iface); /** * Configure name servers, search paths, and resolver parameters for the given network. */ void setDnsConfigurationForNetwork(int netId, in String[] servers, in String[] domains, in int[] params, String tlsHostname, in String[] tlsServers); void setFirewallEnabled(boolean enabled); boolean isFirewallEnabled(); void setFirewallInterfaceRule(String iface, boolean allow); Loading Loading @@ -380,11 +374,6 @@ interface INetworkManagementService */ void createVirtualNetwork(int netId, boolean secure); /** * Remove a network. */ void removeNetwork(int netId); /** * Add an interface to a network. */ Loading
services/core/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ java_library_static { "android.hardware.configstore-V1.0-java", "android.hardware.contexthub-V1.0-java", "android.hidl.manager-V1.2-java", "dnsresolver_aidl_interface-java", "netd_aidl_interface-java", "netd_event_listener_interface-java", ], Loading
services/core/java/com/android/server/ConnectivityService.java +18 −8 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import android.net.ConnectionInfo; import android.net.ConnectivityManager; import android.net.ICaptivePortal; import android.net.IConnectivityManager; import android.net.IDnsResolver; import android.net.IIpConnectivityMetrics; import android.net.INetd; import android.net.INetdEventCallback; Loading Loading @@ -294,6 +295,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private INetworkManagementService mNMS; @VisibleForTesting protected IDnsResolver mDnsResolver; @VisibleForTesting protected INetd mNetd; private INetworkStatsService mStatsService; private INetworkPolicyManager mPolicyManager; Loading Loading @@ -525,6 +528,11 @@ public class ConnectivityService extends IConnectivityManager.Stub return sMagicDecoderRing.get(what, Integer.toString(what)); } private static IDnsResolver getDnsResolver() { return IDnsResolver.Stub .asInterface(ServiceManager.getService("dnsresolver")); } /** Handler thread used for both of the handlers below. */ @VisibleForTesting protected final HandlerThread mHandlerThread; Loading Loading @@ -810,13 +818,14 @@ public class ConnectivityService extends IConnectivityManager.Stub public ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager) { this(context, netManager, statsService, policyManager, new IpConnectivityLog()); this(context, netManager, statsService, policyManager, getDnsResolver(), new IpConnectivityLog()); } @VisibleForTesting protected ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager, IpConnectivityLog logger) { IDnsResolver dnsresolver, IpConnectivityLog logger) { if (DBG) log("ConnectivityService starting up"); mSystemProperties = getSystemProperties(); Loading Loading @@ -853,6 +862,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mPolicyManagerInternal = checkNotNull( LocalServices.getService(NetworkPolicyManagerInternal.class), "missing NetworkPolicyManagerInternal"); mDnsResolver = checkNotNull(dnsresolver, "missing IDnsResolver"); mProxyTracker = makeProxyTracker(); mNetd = NetdService.getInstance(); Loading Loading @@ -1006,7 +1016,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler); mDnsManager = new DnsManager(mContext, mNMS, mSystemProperties); mDnsManager = new DnsManager(mContext, mDnsResolver, mSystemProperties); registerPrivateDnsSettingsCallbacks(); } Loading Loading @@ -3021,9 +3031,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // NetworkFactories, so network traffic isn't interrupted for an unnecessarily // long time. try { mNMS.removeNetwork(nai.network.netId); } catch (Exception e) { loge("Exception removing network: " + e); mNetd.networkDestroy(nai.network.netId); } catch (RemoteException | ServiceSpecificException e) { loge("Exception destroying network: " + e); } mDnsManager.removeNetwork(nai.network); } Loading Loading @@ -5379,8 +5389,8 @@ public class ConnectivityService extends IConnectivityManager.Stub final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities); final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(), new Network(reserveNetId()), new NetworkInfo(networkInfo), lp, nc, currentScore, mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mNMS, factorySerialNumber); mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mDnsResolver, mNMS, factorySerialNumber); // Make sure the network capabilities reflect what the agent info says. nai.networkCapabilities = mixInCapabilities(nai, nc); final String extraInfo = networkInfo.getExtraInfo(); Loading
services/core/java/com/android/server/NetworkManagementService.java +0 −29 Original line number Diff line number Diff line Loading @@ -1604,20 +1604,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { return stats; } @Override public void setDnsConfigurationForNetwork(int netId, String[] servers, String[] domains, int[] params, String tlsHostname, String[] tlsServers) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); final String[] tlsFingerprints = new String[0]; try { mNetdService.setResolverConfiguration( netId, servers, domains, params, tlsHostname, tlsServers, tlsFingerprints); } catch (RemoteException e) { throw new RuntimeException(e); } } @Override public void addVpnUidRanges(int netId, UidRange[] ranges) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); Loading Loading @@ -2075,21 +2061,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { } } @Override public void removeNetwork(int netId) { mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG); try { mNetdService.networkDestroy(netId); } catch (ServiceSpecificException e) { Log.w(TAG, "removeNetwork(" + netId + "): ", e); throw e; } catch (RemoteException e) { Log.w(TAG, "removeNetwork(" + netId + "): ", e); throw e.rethrowAsRuntimeException(); } } @Override public void addInterfaceToNetwork(String iface, int netId) { modifyInterfaceInNetwork(MODIFY_OPERATION_ADD, netId, iface); Loading
services/core/java/com/android/server/connectivity/DnsManager.java +17 −7 Original line number Diff line number Diff line Loading @@ -30,13 +30,15 @@ import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.net.IDnsResolver; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkUtils; import android.net.Uri; import android.net.shared.PrivateDnsConfig; import android.os.Binder; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; Loading Loading @@ -229,7 +231,7 @@ public class DnsManager { private final Context mContext; private final ContentResolver mContentResolver; private final INetworkManagementService mNMS; private final IDnsResolver mDnsResolver; private final MockableSystemProperties mSystemProperties; // TODO: Replace these Maps with SparseArrays. private final Map<Integer, PrivateDnsConfig> mPrivateDnsMap; Loading @@ -243,10 +245,10 @@ public class DnsManager { private String mPrivateDnsMode; private String mPrivateDnsSpecifier; public DnsManager(Context ctx, INetworkManagementService nms, MockableSystemProperties sp) { public DnsManager(Context ctx, IDnsResolver dnsResolver, MockableSystemProperties sp) { mContext = ctx; mContentResolver = mContext.getContentResolver(); mNMS = nms; mDnsResolver = dnsResolver; mSystemProperties = sp; mPrivateDnsMap = new HashMap<>(); mPrivateDnsValidationMap = new HashMap<>(); Loading @@ -260,6 +262,12 @@ public class DnsManager { } public void removeNetwork(Network network) { try { mDnsResolver.clearResolverConfiguration(network.netId); } catch (RemoteException | ServiceSpecificException e) { Slog.e(TAG, "Error clearing DNS configuration: " + e); return; } mPrivateDnsMap.remove(network.netId); mPrivateDnsValidationMap.remove(network.netId); } Loading Loading @@ -344,10 +352,12 @@ public class DnsManager { Slog.d(TAG, String.format("setDnsConfigurationForNetwork(%d, %s, %s, %s, %s, %s)", netId, Arrays.toString(assignedServers), Arrays.toString(domainStrs), Arrays.toString(params), tlsHostname, Arrays.toString(tlsServers))); final String[] tlsFingerprints = new String[0]; try { mNMS.setDnsConfigurationForNetwork( netId, assignedServers, domainStrs, params, tlsHostname, tlsServers); } catch (Exception e) { mDnsResolver.setResolverConfiguration( netId, assignedServers, domainStrs, params, tlsHostname, tlsServers, tlsFingerprints); } catch (RemoteException | ServiceSpecificException e) { Slog.e(TAG, "Error setting DNS configuration: " + e); return; } Loading