Pass NetworkCapabilities into DnsManager
1. At present, the transportTypes in NetworkCapabilities have been passed into DnsManager::updateTransportsForNetwork() as a parameter. In the following CL, we also need to pass the 'metered' (also in NetworkCapabilities) as a parameter to the function. Instead of passing the members of NetworkCapabilities one by one, it is better to pass the entire NetworkCapabilities. 2. Rename updateTransportsForNetwork() to updateCapabilitiesForNetwork(). Bug: 288340533 Test: presubmit Change-Id: I0966124f87b12c1d5a2eaee681885c3d5c7f74dc
This commit is contained in:
@@ -5074,8 +5074,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
mNetd.networkCreate(config);
|
mNetd.networkCreate(config);
|
||||||
mDnsResolver.createNetworkCache(nai.network.getNetId());
|
mDnsResolver.createNetworkCache(nai.network.getNetId());
|
||||||
mDnsManager.updateTransportsForNetwork(nai.network.getNetId(),
|
mDnsManager.updateCapabilitiesForNetwork(nai.network.getNetId(),
|
||||||
nai.networkCapabilities.getTransportTypes());
|
nai.networkCapabilities);
|
||||||
return true;
|
return true;
|
||||||
} catch (RemoteException | ServiceSpecificException e) {
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
loge("Error creating network " + nai.toShortString() + ": " + e.getMessage());
|
loge("Error creating network " + nai.toShortString() + ": " + e.getMessage());
|
||||||
@@ -8899,8 +8899,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
propagateUnderlyingNetworkCapabilities(nai.network);
|
propagateUnderlyingNetworkCapabilities(nai.network);
|
||||||
|
|
||||||
if (!newNc.equalsTransportTypes(prevNc)) {
|
if (!newNc.equalsTransportTypes(prevNc)) {
|
||||||
mDnsManager.updateTransportsForNetwork(
|
mDnsManager.updateCapabilitiesForNetwork(nai.network.getNetId(), newNc);
|
||||||
nai.network.getNetId(), newNc.getTransportTypes());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeSendProxyBroadcast(nai, prevNc, newNc);
|
maybeSendProxyBroadcast(nai, prevNc, newNc);
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import android.net.IDnsResolver;
|
|||||||
import android.net.InetAddresses;
|
import android.net.InetAddresses;
|
||||||
import android.net.LinkProperties;
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.ResolverParamsParcel;
|
import android.net.ResolverParamsParcel;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.net.shared.PrivateDnsConfig;
|
import android.net.shared.PrivateDnsConfig;
|
||||||
@@ -251,7 +252,7 @@ public class DnsManager {
|
|||||||
// TODO: Replace the Map with SparseArrays.
|
// TODO: Replace the Map with SparseArrays.
|
||||||
private final Map<Integer, PrivateDnsValidationStatuses> mPrivateDnsValidationMap;
|
private final Map<Integer, PrivateDnsValidationStatuses> mPrivateDnsValidationMap;
|
||||||
private final Map<Integer, LinkProperties> mLinkPropertiesMap;
|
private final Map<Integer, LinkProperties> mLinkPropertiesMap;
|
||||||
private final Map<Integer, int[]> mTransportsMap;
|
private final Map<Integer, NetworkCapabilities> mNetworkCapabilitiesMap;
|
||||||
|
|
||||||
private int mSampleValidity;
|
private int mSampleValidity;
|
||||||
private int mSuccessThreshold;
|
private int mSuccessThreshold;
|
||||||
@@ -265,7 +266,7 @@ public class DnsManager {
|
|||||||
mPrivateDnsMap = new ConcurrentHashMap<>();
|
mPrivateDnsMap = new ConcurrentHashMap<>();
|
||||||
mPrivateDnsValidationMap = new HashMap<>();
|
mPrivateDnsValidationMap = new HashMap<>();
|
||||||
mLinkPropertiesMap = new HashMap<>();
|
mLinkPropertiesMap = new HashMap<>();
|
||||||
mTransportsMap = new HashMap<>();
|
mNetworkCapabilitiesMap = new HashMap<>();
|
||||||
|
|
||||||
// TODO: Create and register ContentObservers to track every setting
|
// TODO: Create and register ContentObservers to track every setting
|
||||||
// used herein, posting messages to respond to changes.
|
// used herein, posting messages to respond to changes.
|
||||||
@@ -278,7 +279,7 @@ public class DnsManager {
|
|||||||
public void removeNetwork(Network network) {
|
public void removeNetwork(Network network) {
|
||||||
mPrivateDnsMap.remove(network.getNetId());
|
mPrivateDnsMap.remove(network.getNetId());
|
||||||
mPrivateDnsValidationMap.remove(network.getNetId());
|
mPrivateDnsValidationMap.remove(network.getNetId());
|
||||||
mTransportsMap.remove(network.getNetId());
|
mNetworkCapabilitiesMap.remove(network.getNetId());
|
||||||
mLinkPropertiesMap.remove(network.getNetId());
|
mLinkPropertiesMap.remove(network.getNetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,12 +327,12 @@ public class DnsManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* When creating a new network or transport types are changed in a specific network,
|
* When creating a new network or transport types are changed in a specific network,
|
||||||
* transport types are always saved to a hashMap before update dns config.
|
* capabilities are always saved to a hashMap before update dns config.
|
||||||
* When destroying network, the specific network will be removed from the hashMap.
|
* When destroying network, the specific network will be removed from the hashMap.
|
||||||
* The hashMap is always accessed on the same thread.
|
* The hashMap is always accessed on the same thread.
|
||||||
*/
|
*/
|
||||||
public void updateTransportsForNetwork(int netId, @NonNull int[] transportTypes) {
|
public void updateCapabilitiesForNetwork(int netId, @NonNull final NetworkCapabilities nc) {
|
||||||
mTransportsMap.put(netId, transportTypes);
|
mNetworkCapabilitiesMap.put(netId, nc);
|
||||||
sendDnsConfigurationForNetwork(netId);
|
sendDnsConfigurationForNetwork(netId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,8 +352,8 @@ public class DnsManager {
|
|||||||
*/
|
*/
|
||||||
public void sendDnsConfigurationForNetwork(int netId) {
|
public void sendDnsConfigurationForNetwork(int netId) {
|
||||||
final LinkProperties lp = mLinkPropertiesMap.get(netId);
|
final LinkProperties lp = mLinkPropertiesMap.get(netId);
|
||||||
final int[] transportTypes = mTransportsMap.get(netId);
|
final NetworkCapabilities nc = mNetworkCapabilitiesMap.get(netId);
|
||||||
if (lp == null || transportTypes == null) return;
|
if (lp == null || nc == null) return;
|
||||||
updateParametersSettings();
|
updateParametersSettings();
|
||||||
final ResolverParamsParcel paramsParcel = new ResolverParamsParcel();
|
final ResolverParamsParcel paramsParcel = new ResolverParamsParcel();
|
||||||
|
|
||||||
@@ -383,7 +384,7 @@ public class DnsManager {
|
|||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
: useTls ? paramsParcel.servers // Opportunistic
|
: useTls ? paramsParcel.servers // Opportunistic
|
||||||
: new String[0]; // Off
|
: new String[0]; // Off
|
||||||
paramsParcel.transportTypes = transportTypes;
|
paramsParcel.transportTypes = nc.getTransportTypes();
|
||||||
// Prepare to track the validation status of the DNS servers in the
|
// Prepare to track the validation status of the DNS servers in the
|
||||||
// resolver config when private DNS is in opportunistic or strict mode.
|
// resolver config when private DNS is in opportunistic or strict mode.
|
||||||
if (useTls) {
|
if (useTls) {
|
||||||
|
|||||||
@@ -169,10 +169,12 @@ public class DnsManagerTest {
|
|||||||
lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
|
lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
|
||||||
|
|
||||||
// Send a validation event that is tracked on the alternate netId
|
// Send a validation event that is tracked on the alternate netId
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||||
|
nc.setTransportTypes(TEST_TRANSPORT_TYPES);
|
||||||
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID_ALTERNATE, TEST_TRANSPORT_TYPES);
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID_ALTERNATE, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID_ALTERNATE, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID_ALTERNATE, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
mDnsManager.updatePrivateDnsValidation(
|
mDnsManager.updatePrivateDnsValidation(
|
||||||
@@ -205,7 +207,7 @@ public class DnsManagerTest {
|
|||||||
InetAddress.parseNumericAddress("6.6.6.6"),
|
InetAddress.parseNumericAddress("6.6.6.6"),
|
||||||
InetAddress.parseNumericAddress("2001:db8:66:66::1")
|
InetAddress.parseNumericAddress("2001:db8:66:66::1")
|
||||||
}));
|
}));
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
fixedLp = new LinkProperties(lp);
|
fixedLp = new LinkProperties(lp);
|
||||||
@@ -242,7 +244,9 @@ public class DnsManagerTest {
|
|||||||
// be tracked.
|
// be tracked.
|
||||||
LinkProperties lp = new LinkProperties();
|
LinkProperties lp = new LinkProperties();
|
||||||
lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
|
lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||||
|
nc.setTransportTypes(TEST_TRANSPORT_TYPES);
|
||||||
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
mDnsManager.updatePrivateDnsValidation(
|
mDnsManager.updatePrivateDnsValidation(
|
||||||
@@ -256,7 +260,7 @@ public class DnsManagerTest {
|
|||||||
// Validation event has untracked netId
|
// Validation event has untracked netId
|
||||||
mDnsManager.updatePrivateDns(new Network(TEST_NETID),
|
mDnsManager.updatePrivateDns(new Network(TEST_NETID),
|
||||||
mDnsManager.getPrivateDnsConfig());
|
mDnsManager.getPrivateDnsConfig());
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
mDnsManager.updatePrivateDnsValidation(
|
mDnsManager.updatePrivateDnsValidation(
|
||||||
@@ -307,7 +311,7 @@ public class DnsManagerTest {
|
|||||||
ConnectivitySettingsManager.setPrivateDnsMode(mCtx, PRIVATE_DNS_MODE_OFF);
|
ConnectivitySettingsManager.setPrivateDnsMode(mCtx, PRIVATE_DNS_MODE_OFF);
|
||||||
mDnsManager.updatePrivateDns(new Network(TEST_NETID),
|
mDnsManager.updatePrivateDns(new Network(TEST_NETID),
|
||||||
mDnsManager.getPrivateDnsConfig());
|
mDnsManager.getPrivateDnsConfig());
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
mDnsManager.updatePrivateDnsValidation(
|
mDnsManager.updatePrivateDnsValidation(
|
||||||
@@ -352,7 +356,9 @@ public class DnsManagerTest {
|
|||||||
lp.setInterfaceName(TEST_IFACENAME);
|
lp.setInterfaceName(TEST_IFACENAME);
|
||||||
lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
|
lp.addDnsServer(InetAddress.getByName("3.3.3.3"));
|
||||||
lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
|
lp.addDnsServer(InetAddress.getByName("4.4.4.4"));
|
||||||
mDnsManager.updateTransportsForNetwork(TEST_NETID, TEST_TRANSPORT_TYPES);
|
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||||
|
nc.setTransportTypes(TEST_TRANSPORT_TYPES);
|
||||||
|
mDnsManager.updateCapabilitiesForNetwork(TEST_NETID, nc);
|
||||||
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
mDnsManager.noteDnsServersForNetwork(TEST_NETID, lp);
|
||||||
mDnsManager.flushVmDnsCache();
|
mDnsManager.flushVmDnsCache();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user