Address outstanding comments from aosp/713992
Test: as follows
- built, flashed, booted
- system/netd/tests/runtest.sh passes
- connected to a DNS64 network and observed prefix discovery
via "adb shell dumpsys netd"
Bug: 78545619
Change-Id: I7ae6bf258bb3f22795274026187ee8493875aace
diff --git a/server/ResolverController.cpp b/server/ResolverController.cpp
index 65e3d69..506eb8a 100644
--- a/server/ResolverController.cpp
+++ b/server/ResolverController.cpp
@@ -554,6 +554,11 @@
// Operators may choose to use a longer TTL in order to reduce repeated
// resolution (see also https://tools.ietf.org/html/rfc7050#section-5).
if (allIPv6Only(servers)) {
+ // TODO: Keep any existing discovered prefix around for use while
+ // re-discovery is in progress. Otherwise, whenever DNS servers are
+ // pushed to netd there can be gaps where it would appear there was
+ // no prefix64 when in fact we had previously discovered one (and
+ // are highly likely to rediscover the same one).
mDns64Configuration.startPrefixDiscovery(netId);
} else {
mDns64Configuration.stopPrefixDiscovery(netId);
diff --git a/server/dns/Dns64Configuration.cpp b/server/dns/Dns64Configuration.cpp
index aa6cc56..fed7ad2 100644
--- a/server/dns/Dns64Configuration.cpp
+++ b/server/dns/Dns64Configuration.cpp
@@ -174,7 +174,7 @@
return true;
}
-bool Dns64Configuration::mapContainsConfig(const Dns64Config& cfg) const REQUIRES(mMutex) {
+bool Dns64Configuration::isDiscoveryInProgress(const Dns64Config& cfg) const REQUIRES(mMutex) {
const auto& iter = mDns64Configs.find(cfg.netId);
if (iter == mDns64Configs.end()) return false;
@@ -184,12 +184,12 @@
bool Dns64Configuration::shouldContinueDiscovery(const Dns64Config& cfg) {
std::lock_guard guard(mMutex);
- return mapContainsConfig(cfg);
+ return isDiscoveryInProgress(cfg);
}
void Dns64Configuration::recordDns64Config(const Dns64Config& cfg) {
std::lock_guard guard(mMutex);
- if (!mapContainsConfig(cfg)) return;
+ if (!isDiscoveryInProgress(cfg)) return;
mDns64Configs.erase(cfg.netId);
mDns64Configs.emplace(std::make_pair(cfg.netId, cfg));
diff --git a/server/dns/Dns64Configuration.h b/server/dns/Dns64Configuration.h
index ac9da3a..17f2561 100644
--- a/server/dns/Dns64Configuration.h
+++ b/server/dns/Dns64Configuration.h
@@ -82,7 +82,7 @@
static bool doRfc7050PrefixDiscovery(const android_net_context& netcontext, Dns64Config* cfg);
unsigned getNextId() REQUIRES(mMutex) { return mNextId++; }
- bool mapContainsConfig(const Dns64Config& cfg) const REQUIRES(mMutex);
+ bool isDiscoveryInProgress(const Dns64Config& cfg) const REQUIRES(mMutex);
bool shouldContinueDiscovery(const Dns64Config& cfg);
void recordDns64Config(const Dns64Config& cfg);