From bc67ec220818362c9bf9eade837c79c790930a97 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Wed, 11 Oct 2017 12:27:03 +0200 Subject: [PATCH] BIND: save the kind of domain in BB2DomainInfo And use this in all places where this makes sense. This change will use a size_t number of bytes more per loaded zone. This change is mostly for `b2b-migrate` to be 1:1. --- modules/bindbackend/bindbackend2.cc | 18 ++++++++++++++---- modules/bindbackend/bindbackend2.hh | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index d7f996604..5bddd104d 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -302,7 +302,7 @@ void Bind2Backend::getUpdatedMasters(vector *changedDomains) ReadLock rl(&s_state_lock); for(state_t::const_iterator i = s_state.begin(); i != s_state.end() ; ++i) { - if(!i->d_masters.empty() && this->alsoNotify.empty() && i->d_also_notify.empty()) + if(i->d_kind != DomainInfo::Master) continue; DomainInfo di; @@ -352,7 +352,7 @@ void Bind2Backend::getAllDomains(vector *domains, bool include_disab di.id=i->d_id; di.zone=i->d_name; di.last_check=i->d_lastcheck; - di.kind=i->d_masters.empty() ? DomainInfo::Master : DomainInfo::Slave; //TODO: what about Native? + di.kind=i->d_kind; di.masters=i->d_masters; di.backend=this; domains->push_back(di); @@ -374,7 +374,7 @@ void Bind2Backend::getUnfreshSlaveInfos(vector *unfreshDomains) { ReadLock rl(&s_state_lock); for(state_t::const_iterator i = s_state.begin(); i != s_state.end() ; ++i) { - if(i->d_masters.empty()) + if(i->d_kind != DomainInfo::Slave) continue; DomainInfo sd; sd.id=i->d_id; @@ -412,7 +412,7 @@ bool Bind2Backend::getDomainInfo(const DNSName& domain, DomainInfo &di) di.masters=bbd.d_masters; di.last_check=bbd.d_lastcheck; di.backend=this; - di.kind=bbd.d_masters.empty() ? DomainInfo::Master : DomainInfo::Slave; + di.kind=bbd.d_kind; di.serial=0; try { SOAData sd; @@ -839,6 +839,12 @@ void Bind2Backend::loadConfig(string* status) bbd.d_masters=i->masters; bbd.d_also_notify=i->alsoNotify; + bbd.d_kind = DomainInfo::Native; + if (i->type == "master") + bbd.d_kind = DomainInfo::Master; + if (i->type == "slave") + bbd.d_kind = DomainInfo::Slave; + newnames.insert(bbd.d_name); if(filenameChanged || !bbd.d_loaded || !bbd.current()) { L<name<<"' from file '"<filename<<"'"<::const_iterator iter = bbd.d_masters.begin(); iter != bbd.d_masters.end(); ++iter) if(*iter==ip) return true; @@ -1286,6 +1295,7 @@ bool Bind2Backend::createSlaveDomain(const string &ip, const DNSName& domain, co } BB2DomainInfo bbd = createDomainEntry(domain, filename); + bbd.d_kind = DomainInfo::Slave; bbd.d_masters.push_back(ip); safePutBBDomainInfo(bbd); return true; diff --git a/modules/bindbackend/bindbackend2.hh b/modules/bindbackend/bindbackend2.hh index 075ec4b4f..a3825e025 100644 --- a/modules/bindbackend/bindbackend2.hh +++ b/modules/bindbackend/bindbackend2.hh @@ -159,6 +159,7 @@ public: void setCheckInterval(time_t seconds); DNSName d_name; //!< actual name of the domain + DomainInfo::DomainKind d_kind; //!< the kind of domain string d_filename; //!< full absolute filename of the zone on disk string d_status; //!< message describing status of a domain, for human consumption vector d_masters; //!< IP address of the master of this domain -- 2.40.0