diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2017-01-19 09:38:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-01-19 09:38:27 +0000 |
commit | 0ac7232b7cd55806b4fd231899a57a20c7f7bdd8 (patch) | |
tree | a395283bfbe1e1fb8c8566d4f70c90c5cb265593 | |
parent | 9311dbf9e43168707d9accaec352a66ff229df89 (diff) | |
parent | fed4194af0011e453119f86df7629412b882216f (diff) |
Merge "Eschew unspecified IP addresses for DNS servers"
-rw-r--r-- | services/net/java/android/net/ip/IpManager.java | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/services/net/java/android/net/ip/IpManager.java b/services/net/java/android/net/ip/IpManager.java index 87018ec5c342..abdf6831b06c 100644 --- a/services/net/java/android/net/ip/IpManager.java +++ b/services/net/java/android/net/ip/IpManager.java @@ -865,13 +865,7 @@ public class IpManager extends StateMachine { for (RouteInfo route : netlinkLinkProperties.getRoutes()) { newLp.addRoute(route); } - for (InetAddress dns : netlinkLinkProperties.getDnsServers()) { - // Only add likely reachable DNS servers. - // TODO: investigate deleting this. - if (newLp.isReachable(dns)) { - newLp.addDnsServer(dns); - } - } + addAllReachableDnsServers(newLp, netlinkLinkProperties.getDnsServers()); // [3] Add in data from DHCPv4, if available. // @@ -881,13 +875,7 @@ public class IpManager extends StateMachine { for (RouteInfo route : mDhcpResults.getRoutes(mInterfaceName)) { newLp.addRoute(route); } - for (InetAddress dns : mDhcpResults.dnsServers) { - // Only add likely reachable DNS servers. - // TODO: investigate deleting this. - if (newLp.isReachable(dns)) { - newLp.addDnsServer(dns); - } - } + addAllReachableDnsServers(newLp, mDhcpResults.dnsServers); newLp.setDomains(mDhcpResults.domains); if (mDhcpResults.mtu != 0) { @@ -909,6 +897,18 @@ public class IpManager extends StateMachine { return newLp; } + private static void addAllReachableDnsServers( + LinkProperties lp, Iterable<InetAddress> dnses) { + // TODO: Investigate deleting this reachability check. We should be + // able to pass everything down to netd and let netd do evaluation + // and RFC6724-style sorting. + for (InetAddress dns : dnses) { + if (!dns.isAnyLocalAddress() && lp.isReachable(dns)) { + lp.addDnsServer(dns); + } + } + } + // Returns false if we have lost provisioning, true otherwise. private boolean handleLinkPropertiesUpdate(boolean sendCallbacks) { final LinkProperties newLp = assembleLinkProperties(); |