From: Otto Moerbeek Date: Fri, 18 Mar 2022 12:16:17 +0000 (+0100) Subject: Moved SavedParentSet class to syncres.cc X-Git-Tag: rec-4.7.0-beta1~44^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d2b4d7ad4c8604e60cd37bcde54cb039b3555fdc;p=thirdparty%2Fpdns.git Moved SavedParentSet class to syncres.cc --- diff --git a/pdns/syncres.cc b/pdns/syncres.cc index 763ef7cc7b..ab871984af 100644 --- a/pdns/syncres.cc +++ b/pdns/syncres.cc @@ -38,6 +38,47 @@ #include "validate-recursor.hh" #include "rec-taskqueue.hh" +struct SavedParentEntry +{ + SavedParentEntry(const DNSName& name, map>&& nsAddresses, time_t ttd) + : d_domain(name), d_nsAddresses(nsAddresses), d_ttd(ttd) + { + } + DNSName d_domain; + map> d_nsAddresses; + time_t d_ttd; + mutable uint64_t d_count{0}; +}; + +typedef multi_index_container< + SavedParentEntry, + indexed_by, member>, + ordered_non_unique, member> + >> SavedParentNSSetBase; + +class SavedParentNSSet : public SavedParentNSSetBase +{ +public: + void prune(time_t now) + { + auto &ind = get(); + ind.erase(ind.begin(), ind.upper_bound(now)); + } + void inc(const DNSName& name) + { + auto it = find(name); + if (it != end()) { + ++(*it).d_count; + } + } + SavedParentNSSet getMapCopy() const + { + return *this; + } +}; + +static LockGuarded s_savedParentNSSet; + thread_local SyncRes::ThreadLocalStorage SyncRes::t_sstorage; thread_local std::unique_ptr t_timeouts; @@ -51,7 +92,6 @@ SyncRes::LogMode SyncRes::s_lm; const std::unordered_set SyncRes::s_redirectionQTypes = {QType::CNAME, QType::DNAME}; LockGuarded> SyncRes::s_fails; LockGuarded> SyncRes::s_nonresolving; -LockGuarded SyncRes::s_savedParentNSSet; unsigned int SyncRes::s_maxnegttl; unsigned int SyncRes::s_maxbogusttl; @@ -736,6 +776,21 @@ uint64_t SyncRes::doDumpNonResolvingNS(int fd) return count; } +void SyncRes::clearSaveParentsNSSets() +{ + s_savedParentNSSet.lock()->clear(); +} + +size_t SyncRes::getSaveParentsNSSetsSize() +{ + return s_savedParentNSSet.lock()->size(); +} + +void SyncRes::pruneSaveParentsNSSets(time_t now) +{ + s_savedParentNSSet.lock()->prune(now); +} + uint64_t SyncRes::doDumpSavedParentNSSets(int fd) { int newfd = dup(fd); diff --git a/pdns/syncres.hh b/pdns/syncres.hh index 989d1d6d5e..427869b54d 100644 --- a/pdns/syncres.hh +++ b/pdns/syncres.hh @@ -407,48 +407,9 @@ public: }; - struct SavedParentEntry - { - SavedParentEntry(const DNSName& name, map>&& nsAddresses, time_t ttd) - : d_domain(name), d_nsAddresses(nsAddresses), d_ttd(ttd) - { - } - DNSName d_domain; - map> d_nsAddresses; - time_t d_ttd; - mutable uint64_t d_count{0}; - }; - - typedef multi_index_container< - SavedParentEntry, - indexed_by, member>, - ordered_non_unique, member> - >> SavedParentNSSetBase; - - class SavedParentNSSet : public SavedParentNSSetBase - { - public: - void prune(time_t now) - { - auto &ind = get(); - ind.erase(ind.begin(), ind.upper_bound(now)); - } - void inc(const DNSName& name) - { - auto it = find(name); - if (it != end()) { - ++(*it).d_count; - } - } - SavedParentNSSet getMapCopy() const - { - return *this; - } - }; static LockGuarded> s_fails; static LockGuarded> s_nonresolving; - static LockGuarded s_savedParentNSSet; struct ThreadLocalStorage { nsspeeds_t nsSpeeds; @@ -612,18 +573,11 @@ public: { s_nonresolving.lock()->prune(cutoff); } - static void clearSaveParentsNSSets() - { - s_savedParentNSSet.lock()->clear(); - } - static size_t getSaveParentsNSSetsSize() - { - return s_savedParentNSSet.lock()->size(); - } - static void pruneSaveParentsNSSets(time_t now) - { - s_savedParentNSSet.lock()->prune(now); - } + + static void clearSaveParentsNSSets(); + static size_t getSaveParentsNSSetsSize(); + static void pruneSaveParentsNSSets(time_t now); + static void setDomainMap(std::shared_ptr newMap) { t_sstorage.domainmap = newMap;