]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Format dnsbackend.hh and dnsbackend.cc
authorFred Morcos <fred.morcos@open-xchange.com>
Mon, 15 Jan 2024 15:00:54 +0000 (16:00 +0100)
committerFred Morcos <fred.morcos@open-xchange.com>
Mon, 22 Jan 2024 23:38:27 +0000 (00:38 +0100)
.not-formatted
pdns/dnsbackend.cc
pdns/dnsbackend.hh

index b299f383e8e5fe0076b058982e67ac47716f4473..65bafc5e618b3fdf3e9260ed3f98d841aef184a7 100644 (file)
@@ -33,8 +33,6 @@
 ./pdns/distributor.hh
 ./pdns/dns.cc
 ./pdns/dns.hh
-./pdns/dnsbackend.cc
-./pdns/dnsbackend.hh
 ./pdns/dnsbulktest.cc
 ./pdns/dnscrypt.cc
 ./pdns/dnscrypt.hh
index bbb546079e7c72ee25b43fbab4ee7db675872484..8fb9e370c4aa1910463bc277ccfd77083d35ca5f 100644 (file)
@@ -42,52 +42,52 @@ extern StatBag S;
 // this is so the geoipbackend can set this pointer if loaded for lua-record.cc
 std::function<std::string(const std::string&, int)> g_getGeo;
 
-bool DNSBackend::getAuth(const DNSName &target, SOAData *sd)
+bool DNSBackend::getAuth(const DNSName& target, SOAData* sd)
 {
   return this->getSOA(target, *sd);
 }
 
-void DNSBackend::setArgPrefix(const string &prefix)
+void DNSBackend::setArgPrefix(const stringprefix)
 {
-  d_prefix=prefix;
+  d_prefix = prefix;
 }
 
-bool DNSBackend::mustDo(const string &key)
+bool DNSBackend::mustDo(const stringkey)
 {
-  return arg().mustDo(d_prefix+"-"+key);
+  return arg().mustDo(d_prefix + "-" + key);
 }
 
-const string &DNSBackend::getArg(const string &key)
+const string& DNSBackend::getArg(const string& key)
 {
-  return arg()[d_prefix+"-"+key];
+  return arg()[d_prefix + "-" + key];
 }
 
-int DNSBackend::getArgAsNum(const string &key)
+int DNSBackend::getArgAsNum(const stringkey)
 {
-  return arg().asNum(d_prefix+"-"+key);
+  return arg().asNum(d_prefix + "-" + key);
 }
 
-void BackendFactory::declare(const string &suffix, const string &param, const string &help, const string &value)
+void BackendFactory::declare(const string& suffix, const string& param, const string& help, const string& value)
 {
-  string fullname=d_name+suffix+"-"+param;
-  arg().set(fullname,help)=value;
-  arg().setDefault(fullname,value);
+  string fullname = d_name + suffix + "-" + param;
+  arg().set(fullname, help) = value;
+  arg().setDefault(fullname, value);
 }
 
-const string &BackendFactory::getName() const
+const stringBackendFactory::getName() const
 {
   return d_name;
 }
 
-BackendMakerClass &BackendMakers()
+BackendMakerClassBackendMakers()
 {
   static BackendMakerClass bmc;
   return bmc;
 }
 
-void BackendMakerClass::report(BackendFactory *bf)
+void BackendMakerClass::report(BackendFactorybf)
 {
-  d_repository[bf->getName()]=bf;
+  d_repository[bf->getName()] = bf;
 }
 
 void BackendMakerClass::clear()
@@ -105,7 +105,7 @@ vector<string> BackendMakerClass::getModules()
   load_all();
   vector<string> ret;
   //  copy(d_repository.begin(), d_repository.end(),back_inserter(ret));
-  for(d_repository_t::const_iterator i=d_repository.begin();i!=d_repository.end();++i)
+  for (d_repository_t::const_iterator i = d_repository.begin(); i != d_repository.end(); ++i)
     ret.push_back(i->first);
   return ret;
 }
@@ -113,60 +113,58 @@ vector<string> BackendMakerClass::getModules()
 void BackendMakerClass::load_all()
 {
   auto directoryError = pdns::visit_directory(arg()["module-dir"], [this]([[maybe_unused]] ino_t inodeNumber, const std::string_view& name) {
-    if (boost::starts_with(name, "lib") &&
-        name.size() > 13 &&
-        boost::ends_with(name, "backend.so")) {
+    if (boost::starts_with(name, "lib") && name.size() > 13 && boost::ends_with(name, "backend.so")) {
       load(std::string(name));
     }
     return true;
   });
   if (directoryError) {
-    g_log<<Logger::Error<<"Unable to open module directory '"<<arg()["module-dir"]<<"': "<<*directoryError<<endl;
+    g_log << Logger::Error << "Unable to open module directory '" << arg()["module-dir"] << "': " << *directoryError << endl;
   }
 }
 
-void BackendMakerClass::load(const string &module)
+void BackendMakerClass::load(const stringmodule)
 {
   bool res;
 
-  if(module.find('.')==string::npos)
-    res=UeberBackend::loadmodule(arg()["module-dir"]+"/lib"+module+"backend.so");
-  else if(module[0]=='/' || (module[0]=='.' && module[1]=='/') || (module[0]=='.' && module[1]=='.'))    // absolute or current path
-    res=UeberBackend::loadmodule(module);
+  if (module.find('.') == string::npos)
+    res = UeberBackend::loadmodule(arg()["module-dir"] + "/lib" + module + "backend.so");
+  else if (module[0] == '/' || (module[0] == '.' && module[1] == '/') || (module[0] == '.' && module[1] == '.')) // absolute or current path
+    res = UeberBackend::loadmodule(module);
   else
-    res=UeberBackend::loadmodule(arg()["module-dir"]+"/"+module);
+    res = UeberBackend::loadmodule(arg()["module-dir"] + "/" + module);
 
-  if(res==false) {
-    g_log<<Logger::Error<<"DNSBackend unable to load module in "<<module<<endl;
+  if (res == false) {
+    g_log << Logger::Error << "DNSBackend unable to load module in " << module << endl;
     exit(1);
   }
 }
 
-void BackendMakerClass::launch(const string &instr)
+void BackendMakerClass::launch(const stringinstr)
 {
   //    if(instr.empty())
   // throw ArgException("Not launching any backends - nameserver won't function");
 
   vector<string> parts;
-  stringtok(parts,instr,", ");
+  stringtok(parts, instr, ", ");
 
   for (const auto& part : parts)
     if (count(parts.begin(), parts.end(), part) > 1)
       throw ArgException("Refusing to launch multiple backends with the same name '" + part + "', verify all 'launch' statements in your configuration");
 
-  for(const auto & part : parts) {
+  for (const auto& part : parts) {
     string module, name;
-    vector<string>pparts;
-    stringtok(pparts,part,": ");
-    module=pparts[0];
-    if(pparts.size()>1)
-      name="-"+pparts[1];
+    vector<string> pparts;
+    stringtok(pparts, part, ": ");
+    module = pparts[0];
+    if (pparts.size() > 1)
+      name = "-" + pparts[1];
 
-    if(d_repository.find(module)==d_repository.end()) {
+    if (d_repository.find(module) == d_repository.end()) {
       // this is *so* userfriendly
       load(module);
-      if(d_repository.find(module)==d_repository.end())
-        throw ArgException("Trying to launch unknown backend '"+module+"'");
+      if (d_repository.find(module) == d_repository.end())
+        throw ArgException("Trying to launch unknown backend '" + module + "'");
     }
     d_repository[module]->declareArguments(name);
     d_instances.emplace_back(module, name);
@@ -180,7 +178,7 @@ size_t BackendMakerClass::numLauncheable() const
 
 vector<std::unique_ptr<DNSBackend>> BackendMakerClass::all(bool metadataOnly)
 {
-  if(d_instances.empty()) {
+  if (d_instances.empty()) {
     throw PDNSException("No database backends configured for launch, unable to function");
   }
 
@@ -200,12 +198,13 @@ vector<std::unique_ptr<DNSBackend>> BackendMakerClass::all(bool metadataOnly)
       ret.push_back(std::move(made));
     }
   }
-  catch(const PDNSException &ae) {
+  catch (const PDNSException& ae) {
     g_log << Logger::Error << "Caught an exception instantiating a backend (" << current << "): " << ae.reason << endl;
     g_log << Logger::Error << "Cleaning up" << endl;
     ret.clear();
     throw;
-  } catch(...) {
+  }
+  catch (...) {
     // and cleanup
     g_log << Logger::Error << "Caught an exception instantiating a backend (" << current << "), cleaning up" << endl;
     ret.clear();
@@ -230,13 +229,13 @@ vector<std::unique_ptr<DNSBackend>> BackendMakerClass::all(bool metadataOnly)
     \param sd SOAData which is filled with the SOA details
     \param unmodifiedSerial bool if set, serial will be returned as stored in the backend (maybe 0)
 */
-bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd)
+bool DNSBackend::getSOA(const DNSName& domain, SOAData& sd)
 {
-  this->lookup(QType(QType::SOA),domain,-1);
+  this->lookup(QType(QType::SOA), domain, -1);
   S.inc("backend-queries");
 
   DNSResourceRecord rr;
-  int hits=0;
+  int hits = 0;
 
   sd.db = nullptr;
 
@@ -267,18 +266,19 @@ bool DNSBackend::get(DNSZoneRecord& dzr)
 {
   //  cout<<"DNSBackend::get(DNSZoneRecord&) called - translating into DNSResourceRecord query"<<endl;
   DNSResourceRecord rr;
-  if(!this->get(rr))
+  if (!this->get(rr))
     return false;
   dzr.auth = rr.auth;
   dzr.domain_id = rr.domain_id;
   dzr.scopeMask = rr.scopeMask;
-  if(rr.qtype.getCode() == QType::TXT && !rr.content.empty() && rr.content[0]!='"')
-    rr.content = "\""+ rr.content + "\"";
+  if (rr.qtype.getCode() == QType::TXT && !rr.content.empty() && rr.content[0] != '"')
+    rr.content = "\"" + rr.content + "\"";
   try {
     dzr.dr = DNSRecord(rr);
   }
-  catch(...) {
-    while(this->get(rr));
+  catch (...) {
+    while (this->get(rr))
+      ;
     throw;
   }
   return true;
@@ -307,7 +307,7 @@ void fillSOAData(const DNSZoneRecord& in, SOAData& sd)
   sd.domain_id = in.domain_id;
   sd.ttl = in.dr.d_ttl;
 
-  auto src=getRR<SOARecordContent>(in.dr);
+  auto src = getRR<SOARecordContent>(in.dr);
   sd.nameserver = src->d_mname;
   sd.rname = src->d_rname;
   sd.serial = src->d_st.serial;
@@ -319,18 +319,18 @@ void fillSOAData(const DNSZoneRecord& in, SOAData& sd)
 
 std::shared_ptr<DNSRecordContent> makeSOAContent(const SOAData& sd)
 {
-    struct soatimes st;
-    st.serial = sd.serial;
-    st.refresh = sd.refresh;
-    st.retry = sd.retry;
-    st.expire = sd.expire;
-    st.minimum = sd.minimum;
-    return std::make_shared<SOARecordContent>(sd.nameserver, sd.rname, st);
+  struct soatimes st;
+  st.serial = sd.serial;
+  st.refresh = sd.refresh;
+  st.retry = sd.retry;
+  st.expire = sd.expire;
+  st.minimum = sd.minimum;
+  return std::make_shared<SOARecordContent>(sd.nameserver, sd.rname, st);
 }
 
-void fillSOAData(const string &content, SOAData &data)
+void fillSOAData(const string& content, SOAData& data)
 {
-  vector<string>parts;
+  vector<string> parts;
   parts.reserve(7);
   stringtok(parts, content);
 
@@ -343,7 +343,7 @@ void fillSOAData(const string &content, SOAData &data)
     pdns::checked_stoi_into(data.expire, parts.at(5));
     pdns::checked_stoi_into(data.minimum, parts.at(6));
   }
-  catch(const std::out_of_range& oor) {
+  catch (const std::out_of_range& oor) {
     throw PDNSException("Out of range exception parsing '" + content + "'");
   }
 }
index 625a4780723888841677ec38a7406a8b9d818c3a..d099d537ae5177d183604b269e38cd408caf98f0 100644 (file)
@@ -51,7 +51,8 @@ struct SOAData;
 
 struct DomainInfo
 {
-  DomainInfo() : last_check(0), backend(nullptr), id(0), notified_serial(0), receivedNotify(false), serial(0), kind(DomainInfo::Native) {}
+  DomainInfo() :
+    last_check(0), backend(nullptr), id(0), notified_serial(0), receivedNotify(false), serial(0), kind(DomainInfo::Native) {}
 
   DNSName zone;
   DNSName catalog;
@@ -59,7 +60,7 @@ struct DomainInfo
   string options;
   string account;
   vector<ComboAddress> primaries;
-  DNSBackend *backend{};
+  DNSBackendbackend{};
 
   uint32_t id{};
   uint32_t notified_serial{};
@@ -84,12 +85,12 @@ struct DomainInfo
     All
   } kind;
 
-  [[nodiscard]] const char *getKindString() const
+  [[nodiscard]] const chargetKindString() const
   {
     return DomainInfo::getKindString(kind);
   }
 
-  static const char *getKindString(enum DomainKind kind)
+  static const chargetKindString(enum DomainKind kind)
   {
     const char* kinds[] = {"Master", "Slave", "Native", "Producer", "Consumer", "All"};
     return kinds[kind];
@@ -123,18 +124,20 @@ struct DomainInfo
   }
 };
 
-struct TSIGKey {
-   DNSName name;
-   DNSName algorithm;
-   std::string key;
+struct TSIGKey
+{
+  DNSName name;
+  DNSName algorithm;
+  std::string key;
 };
 
-struct AutoPrimary {
-   AutoPrimary(const string& new_ip, const string& new_nameserver, const string& new_account) :
-     ip(new_ip), nameserver(new_nameserver), account(new_account){};
-   std::string ip;
-   std::string nameserver;
-   std::string account;
+struct AutoPrimary
+{
+  AutoPrimary(const string& new_ip, const string& new_nameserver, const string& new_account) :
+    ip(new_ip), nameserver(new_nameserver), account(new_account){};
+  std::string ip;
+  std::string nameserver;
+  std::string account;
 };
 
 class DNSPacket;
@@ -154,21 +157,21 @@ class DNSBackend
 {
 public:
   //! lookup() initiates a lookup. A lookup without results should not throw!
-  virtual void lookup(const QType &qtype, const DNSName &qdomain, int zoneId=-1, DNSPacket *pkt_p=nullptr)=0;
-  virtual bool get(DNSResourceRecord &)=0; //!< retrieves one DNSResource record, returns false if no more were available
-  virtual bool get(DNSZoneRecord &r);
+  virtual void lookup(const QType& qtype, const DNSName& qdomain, int zoneId = -1, DNSPacket* pkt_p = nullptr) = 0;
+  virtual bool get(DNSResourceRecord&) = 0; //!< retrieves one DNSResource record, returns false if no more were available
+  virtual bool get(DNSZoneRecordr);
 
   //! Initiates a list of the specified domain
   /** Once initiated, DNSResourceRecord objects can be retrieved using get(). Should return false
       if the backend does not consider itself responsible for the id passed.
       \param domain_id ID of which a list is requested
   */
-  virtual bool list(const DNSName &target, int domain_id, bool include_disabled=false)=0;
+  virtual bool list(const DNSName& target, int domain_id, bool include_disabled = false) = 0;
 
   virtual ~DNSBackend() = default;
 
   //! fills the soadata struct with the SOA details. Returns false if there is no SOA.
-  virtual bool getSOA(const DNSName &name, SOAData &soadata);
+  virtual bool getSOA(const DNSName& name, SOAData& soadata);
 
   virtual bool replaceRRSet(uint32_t /* domain_id */, const DNSName& /* qname */, const QType& /* qt */, const vector<DNSResourceRecord>& /* rrset */)
   {
@@ -211,7 +214,8 @@ public:
   /** Determines if we are authoritative for a zone, and at what level */
   virtual bool getAuth(const DNSName& target, SOAData* /* sd */);
 
-  struct KeyData {
+  struct KeyData
+  {
     std::string content;
     unsigned int id{0};
     unsigned int flags{0};
@@ -400,7 +404,7 @@ public:
   }
 
   //! Can be called to seed the getArg() function with a prefix
-  void setArgPrefix(const string &prefix);
+  void setArgPrefix(const stringprefix);
 
   //! Add an entry for a super primary
   virtual bool autoPrimaryAdd(const struct AutoPrimary& /* primary */)
@@ -462,10 +466,11 @@ public:
   }
 
   const string& getPrefix() { return d_prefix; };
+
 protected:
-  bool mustDo(const string &key);
-  const string &getArg(const string &key);
-  int getArgAsNum(const string &key);
+  bool mustDo(const stringkey);
+  const string& getArg(const string& key);
+  int getArgAsNum(const stringkey);
 
 private:
   string d_prefix;
@@ -474,10 +479,11 @@ private:
 class BackendFactory
 {
 public:
-  BackendFactory(const string &name) : d_name(name) {}
+  BackendFactory(const string& name) :
+    d_name(name) {}
   virtual ~BackendFactory() = default;
-  virtual DNSBackend *make(const string &suffix)=0;
-  virtual DNSBackend *makeMetadataOnly(const string &suffix)
+  virtual DNSBackend* make(const string& suffix) = 0;
+  virtual DNSBackend* makeMetadataOnly(const string& suffix)
   {
     return this->make(suffix);
   }
@@ -485,7 +491,7 @@ public:
   [[nodiscard]] const string& getName() const;
 
 protected:
-  void declare(const string &suffix, const string &param, const string &explanation, const string &value);
+  void declare(const string& suffix, const string& param, const string& explanation, const string& value);
 
 private:
   const string d_name;
@@ -494,34 +500,35 @@ private:
 class BackendMakerClass
 {
 public:
-  void report(BackendFactory *bf);
-  void launch(const string &instr);
-  vector<std::unique_ptr<DNSBackend>> all(bool metadataOnly=false);
-  void load(const string &module);
+  void report(BackendFactorybf);
+  void launch(const stringinstr);
+  vector<std::unique_ptr<DNSBackend>> all(bool metadataOnly = false);
+  void load(const stringmodule);
   [[nodiscard]] size_t numLauncheable() const;
   vector<string> getModules();
   void clear();
 
 private:
   void load_all();
-  using d_repository_t = map<string, BackendFactory *>;
+  using d_repository_t = map<string, BackendFactory*>;
   d_repository_t d_repository;
-  vector<pair<string,string> >d_instances;
+  vector<pair<string, string>> d_instances;
 };
 
-extern BackendMakerClass &BackendMakers();
+extern BackendMakerClassBackendMakers();
 
 //! Exception that can be thrown by a DNSBackend to indicate a failure
 class DBException : public PDNSException
 {
 public:
-  DBException(const string &reason_) : PDNSException(reason_){}
+  DBException(const string& reason_) :
+    PDNSException(reason_) {}
 };
 
-
 struct SOAData
 {
-  SOAData() : domain_id(-1) {};
+  SOAData() :
+    domain_id(-1){};
 
   DNSName qname;
   DNSName nameserver;
@@ -532,14 +539,14 @@ struct SOAData
   uint32_t retry{};
   uint32_t expire{};
   uint32_t minimum{};
-  DNSBackend *db{};
+  DNSBackenddb{};
   int domain_id{};
 
   [[nodiscard]] uint32_t getNegativeTTL() const { return min(ttl, minimum); }
 };
 
 /** helper function for both DNSPacket and addSOARecord() - converts a line into a struct, for easier parsing */
-void fillSOAData(const string &content, SOAData &data);
+void fillSOAData(const string& content, SOAData& data);
 // same but more karmic
 void fillSOAData(const DNSZoneRecord& in, SOAData& data);
 // the reverse