From: Kees Monshouwer Date: Thu, 3 Jun 2021 06:44:38 +0000 (+0200) Subject: auth: document and check backend zone-cache capability X-Git-Tag: auth-4.5.0-beta1~5^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F10454%2Fhead;p=thirdparty%2Fpdns.git auth: document and check backend zone-cache capability --- diff --git a/docs/backends/bind.rst b/docs/backends/bind.rst index 4890668999..1232c5df02 100644 --- a/docs/backends/bind.rst +++ b/docs/backends/bind.rst @@ -10,6 +10,7 @@ BIND zone file backend * Disabled data: No * Comments: No * API: Read-only +* Zone caching: Yes (except in hybrid mode) * Module name: bind * Launch: ``bind`` diff --git a/docs/backends/generic-mysql.rst b/docs/backends/generic-mysql.rst index 797dc89630..9c19182e5d 100644 --- a/docs/backends/generic-mysql.rst +++ b/docs/backends/generic-mysql.rst @@ -10,6 +10,7 @@ Generic MySQL backend * DNSSEC: Yes (set ``gmysql-dnssec``) * Disabled data: Yes * Comments: Yes +* Zone caching: Yes * Module name: gmysql * Launch name: ``gmysql`` diff --git a/docs/backends/generic-odbc.rst b/docs/backends/generic-odbc.rst index a2bcc423ff..99fdef58a1 100644 --- a/docs/backends/generic-odbc.rst +++ b/docs/backends/generic-odbc.rst @@ -10,6 +10,7 @@ Generic ODBC Backend * DNSSEC: Yes * Disabled data: Yes * Comments: Yes +* Zone caching: Yes * Module name: godbc * Launch name: ``godbc`` diff --git a/docs/backends/generic-postgresql.rst b/docs/backends/generic-postgresql.rst index 18f9b3abf5..b726cbe466 100644 --- a/docs/backends/generic-postgresql.rst +++ b/docs/backends/generic-postgresql.rst @@ -10,6 +10,7 @@ Generic PostgreSQL backend * DNSSEC: Yes (set ``gpgsql-dnssec``) * Disabled data: Yes * Comments: Yes +* Zone caching: Yes * Module name: gpgsql * Launch name: ``gpgsql`` diff --git a/docs/backends/generic-sqlite3.rst b/docs/backends/generic-sqlite3.rst index c3a5d4a538..e8e055c692 100644 --- a/docs/backends/generic-sqlite3.rst +++ b/docs/backends/generic-sqlite3.rst @@ -8,6 +8,7 @@ Generic SQLite 3 backend * DNSSEC: Yes * Disabled data: Yes * Comments: Yes +* Zone caching: Yes * Module name: gsqlite3 * Launch name: ``gsqlite3`` diff --git a/docs/backends/geoip.rst b/docs/backends/geoip.rst index 3829b53509..4c04a818df 100644 --- a/docs/backends/geoip.rst +++ b/docs/backends/geoip.rst @@ -8,6 +8,7 @@ GeoIP backend * DNSSEC: Yes * Disabled data: No * Comments: No +* Zone caching: Yes * Module name: geoip * Launch name: ``geoip`` diff --git a/docs/backends/ldap.rst b/docs/backends/ldap.rst index 46fb40fc2d..dc42890510 100644 --- a/docs/backends/ldap.rst +++ b/docs/backends/ldap.rst @@ -9,6 +9,7 @@ LDAP backend * DNSSEC: No * Disabled data: No * Comments: No +* Zone caching: No * Module name: ldap * Launch name: ``ldap`` diff --git a/docs/backends/lmdb.rst b/docs/backends/lmdb.rst index a9fc94490e..61b2b3cefd 100644 --- a/docs/backends/lmdb.rst +++ b/docs/backends/lmdb.rst @@ -10,6 +10,7 @@ LMDB backend * Disabled data: No * Comments: No * Multiple instances: No +* Zone caching: Yes * Module name: lmdb * Launch name: ``lmdb`` diff --git a/docs/backends/lua2.rst b/docs/backends/lua2.rst index 07019467cb..e41fa996b6 100644 --- a/docs/backends/lua2.rst +++ b/docs/backends/lua2.rst @@ -9,6 +9,7 @@ Lua2 Backend * DNSSEC: Yes * Disabled data: No * Comments: No +* Zone caching: Yes * Module name: lua2 * Launch name: ``lua2`` diff --git a/docs/backends/pipe.rst b/docs/backends/pipe.rst index 160e2d1b78..ddd01094a3 100644 --- a/docs/backends/pipe.rst +++ b/docs/backends/pipe.rst @@ -10,6 +10,7 @@ Pipe Backend * DNSSEC: Partial, no delegation, no key storage * Disabled data: No * Comments: No +* Zone caching: No * Module name: pipe * Launch name: ``pipe`` diff --git a/docs/backends/random.rst b/docs/backends/random.rst index 919ab8f2e3..6f7af49907 100644 --- a/docs/backends/random.rst +++ b/docs/backends/random.rst @@ -10,6 +10,7 @@ Random Backend - DNSSEC: Yes, no key storage - Disabled data: No - Comments: No +- Zone caching: No - Module name: built in - Launch: ``random`` diff --git a/docs/backends/remote.rst b/docs/backends/remote.rst index 3e82e3d85a..520bbd9d73 100644 --- a/docs/backends/remote.rst +++ b/docs/backends/remote.rst @@ -7,6 +7,7 @@ Remote Backend * Superslave: Yes\* * Autoserial: Yes\* * DNSSEC: Yes\* +* Zone caching: Yes\* * Multiple instances: Yes \* If provided by the responder (your script). diff --git a/docs/backends/tinydns.rst b/docs/backends/tinydns.rst index 61f1f65b16..4117baff5b 100644 --- a/docs/backends/tinydns.rst +++ b/docs/backends/tinydns.rst @@ -7,6 +7,7 @@ TinyDNS Backend - Superslave: No - Autoserial: No - DNSSEC: No +* Zone caching: Yes - Multiple Instances: Yes - Module name: tinydns - Launch: ``tinydns`` diff --git a/pdns/dnsbackend.cc b/pdns/dnsbackend.cc index 0e5d82ca9b..f2c86729c8 100644 --- a/pdns/dnsbackend.cc +++ b/pdns/dnsbackend.cc @@ -29,7 +29,8 @@ #include "logger.hh" #include -#include "pdns/packetcache.hh" +#include "packetcache.hh" +#include "auth-zonecache.hh" #include "dnspacket.hh" #include "dns.hh" #include "statbag.hh" @@ -297,6 +298,14 @@ bool DNSBackend::getBeforeAndAfterNames(uint32_t id, const DNSName& zonename, co return ret; } +void DNSBackend::getAllDomains(vector* domains, bool include_disabled) +{ + if (g_zoneCache.isEnabled()) { + g_log << Logger::Error << "One of the backends does not support zone caching. Put zone-cache-refresh-interval=0 in the config file to disable this cache." << endl; + exit(1); + } +} + void fillSOAData(const DNSZoneRecord& in, SOAData& sd) { sd.domain_id = in.domain_id; diff --git a/pdns/dnsbackend.hh b/pdns/dnsbackend.hh index ffe8da1fc7..306159ef23 100644 --- a/pdns/dnsbackend.hh +++ b/pdns/dnsbackend.hh @@ -173,8 +173,7 @@ public: return setDomainMetadata(name, kind, meta); } - - virtual void getAllDomains(vector *domains, bool include_disabled=false) { } + virtual void getAllDomains(vector* domains, bool include_disabled = false); /** Determines if we are authoritative for a zone, and at what level */ virtual bool getAuth(const DNSName &target, SOAData *sd);