]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Use a dummy class if the framestream lib is not available.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 8 Mar 2019 10:23:23 +0000 (11:23 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 8 Mar 2019 10:23:23 +0000 (11:23 +0100)
pdns/fstrm_logger.hh
pdns/lwres.cc
pdns/lwres.hh
pdns/pdns_recursor.cc
pdns/recursordist/Makefile.am
pdns/recursordist/test-syncres_cc.cc
pdns/syncres.hh

index ceb1e800905b149403bfd8b74a159d8890a4e999..57ee93aed81b0d09584c28777d4c69c5f47bfd8d 100644 (file)
@@ -68,4 +68,6 @@ private:
   bool d_logResponses{true};
 };
 
+#else
+class FrameStreamLogger : public RemoteLoggerInterface, boost::noncopyable {};
 #endif /* HAVE_FSTRM */
index 05e5709f150dc1457ce283a387966cf90ddcaee5..dbbaba26efdaf93462c8e114127e5a7573743449 100644 (file)
 #include "fstrm_logger.hh"
 bool g_syslog;
 
-static bool isEnabledForQueries(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstreamLoggers)
+static bool isEnabledForQueries(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstreamLoggers)
 {
   if (fstreamLoggers == nullptr) {
     return false;
   }
   for (auto& logger : *fstreamLoggers) {
-    // We know this is safe since fstreamLoggers is filled with FrameStreamLogger objects only
-    auto fsl = static_cast<const FrameStreamLogger*>(logger.get());
-    if (fsl->logQueries()) {
+    if (logger->logQueries()) {
       return true;
     }
   }
   return false;
 }
 
-static void logFstreamQuery(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstreamLoggers, const struct timeval &queryTime, const ComboAddress& ip, bool doTCP, const vector<uint8_t>& packet)
+static void logFstreamQuery(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstreamLoggers, const struct timeval &queryTime, const ComboAddress& ip, bool doTCP, const vector<uint8_t>& packet)
 {
   if (fstreamLoggers == nullptr)
     return;
@@ -88,22 +86,20 @@ static void logFstreamQuery(const std::shared_ptr<std::vector<std::unique_ptr<Re
   }
 }
 
-static bool isEnabledForResponses(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstreamLoggers)
+static bool isEnabledForResponses(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstreamLoggers)
 {
   if (fstreamLoggers == nullptr) {
     return false;
   }
   for (auto& logger : *fstreamLoggers) {
-    // We know this is safe since fstreamLoggers is filled with FrameStreamLogger objects only
-    auto fsl = static_cast<const FrameStreamLogger*>(logger.get());
-    if (fsl->logResponses()) {
+    if (logger->logResponses()) {
       return true;
     }
   }
   return false;
 }
 
-static void logFstreamResponse(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstreamLoggers, const ComboAddress& ip, bool doTCP, const std::string& packet, const struct timeval& queryTime, const struct timeval& replyTime)
+static void logFstreamResponse(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstreamLoggers, const ComboAddress& ip, bool doTCP, const std::string& packet, const struct timeval& queryTime, const struct timeval& replyTime)
 {
   if (fstreamLoggers == nullptr)
     return;
@@ -175,7 +171,7 @@ static void logIncomingResponse(const std::shared_ptr<std::vector<std::unique_pt
 /** lwr is only filled out in case 1 was returned, and even when returning 1 for 'success', lwr might contain DNS errors
     Never throws! 
  */
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult *lwr, bool* chained)
+int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult *lwr, bool* chained)
 {
   size_t len;
   size_t bufsize=g_outgoingEDNSBufsize;
index 12a08e72e23e08fa06105c4c58d676c34f5a113b..510ae9e23def60897d413a776d77ecc38a54d1e4 100644 (file)
@@ -41,6 +41,7 @@
 #include "dns.hh"
 #include "namespaces.hh"
 #include "remote_logger.hh"
+#include "fstrm_logger.hh"
 #include "resolve-context.hh"
 
 
@@ -69,5 +70,5 @@ public:
   bool d_haveEDNS{false};
 };
 
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained);
+int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained);
 #endif // PDNS_LWRES_HH
index 25ff42300c5710d544bad3506e6ea7de82c66e1c..eefdc3017ee47dd9d45d354c576e266a7d1ed6e8 100644 (file)
@@ -122,7 +122,7 @@ static thread_local uint64_t t_outgoingProtobufServersGeneration;
 #endif /* HAVE_PROTOBUF */
 
 #ifdef HAVE_FSTRM
-static thread_local std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>> t_frameStreamServers{nullptr};
+static thread_local std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>> t_frameStreamServers{nullptr};
 static thread_local uint64_t t_frameStreamServersGeneration;
 #endif /* HAVE_FSTRM */
 
@@ -963,9 +963,9 @@ static bool checkOutgoingProtobufExport(LocalStateHolder<LuaConfigItems>& luacon
 
 #ifdef HAVE_FSTRM
 
-static std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>> startFrameStreamServers(const FrameStreamExportConfig& config)
+static std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>> startFrameStreamServers(const FrameStreamExportConfig& config)
 {
-  auto result = std::make_shared<std::vector<std::unique_ptr<RemoteLoggerInterface>>>();
+  auto result = std::make_shared<std::vector<std::unique_ptr<FrameStreamLogger>>>();
 
   for (const auto& server : config.servers) {
     try {
index 6c37f2604b8664c97cb316eb3a12f79f44250df1..afc82e62c86114bbe705736d4235a638794dff84 100644 (file)
@@ -114,6 +114,7 @@ pdns_recursor_SOURCES = \
        ednsoptions.cc ednsoptions.hh \
        ednssubnet.cc ednssubnet.hh \
        filterpo.cc filterpo.hh \
+       fstrm_logger.cc fstrm_logger.hh \
        gettime.cc gettime.hh \
        gss_context.cc gss_context.hh \
        iputils.hh iputils.cc \
@@ -390,7 +391,7 @@ endif
 
 if FSTRM
 pdns_recursor_SOURCES += \
-       dnstap.cc dnstap.hh fstrm_logger.cc fstrm_logger.hh rec-dnstap.hh
+       dnstap.cc dnstap.hh rec-dnstap.hh
 
 pdns_recursor_LDADD += \
        $(FSTRM_LIBS)
index 23e90995946f9beac2e2d7762f00b3a33b4eaf68..20e7d1fa287fb6ed9056e5ab351e9f99209432a5 100644 (file)
@@ -39,7 +39,7 @@ bool RecursorLua4::preoutquery(const ComboAddress& ns, const ComboAddress& reque
   return false;
 }
 
-int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& fstrmLoggers,const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained)
+int asyncresolve(const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>& outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& fstrmLoggers,const std::set<uint16_t>& exportTypes, LWResult* res, bool* chained)
 {
   return 0;
 }
index 885a55828e07d87f1998a7a978b504f8b36dd3fe..d0ead57a17606f1b53f56f53d277c28aafbebf36 100644 (file)
@@ -665,7 +665,7 @@ public:
 #endif
 
 #ifdef HAVE_FSTRM
-  void setFrameStreamServers(std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>>& servers)
+  void setFrameStreamServers(std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>& servers)
   {
     d_frameStreamServers = servers;
   }
@@ -815,7 +815,7 @@ private:
   shared_ptr<RecursorLua4> d_pdl;
   boost::optional<Netmask> d_outgoingECSNetwork;
   std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>> d_outgoingProtobufServers{nullptr};
-  std::shared_ptr<std::vector<std::unique_ptr<RemoteLoggerInterface>>> d_frameStreamServers{nullptr};
+  std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>> d_frameStreamServers{nullptr};
 #ifdef HAVE_PROTOBUF
   boost::optional<const boost::uuids::uuid&> d_initialRequestId;
 #endif