Browse Source

New upstream version 4.3.0~beta2

tags/upstream/4.3.0
Chris Hofstaedtler 1 year ago
parent
commit
b780c3a796
100 changed files with 3576 additions and 1009 deletions
  1. +38
    -6
      Makefile.am
  2. +220
    -157
      Makefile.in
  3. +14
    -2
      RECURSOR-MIB.txt
  4. +2
    -0
      aclocal.m4
  5. +28
    -36
      arguments.cc
  6. +1
    -1
      arguments.hh
  7. +20
    -12
      builder-support/gen-version
  8. +20
    -20
      cachecleaner.hh
  9. +28
    -2
      capabilities.cc
  10. +3
    -1
      capabilities.hh
  11. +21
    -0
      config.h.in
  12. +396
    -92
      configure
  13. +20
    -13
      configure.ac
  14. +0
    -22
      contrib/systemd-pdns-recursor.service
  15. +3
    -3
      devpollmplexer.cc
  16. +10
    -0
      dns.cc
  17. +1
    -0
      dns.hh
  18. +20
    -6
      dns_random.cc
  19. +1
    -0
      dns_random.hh
  20. +1
    -1
      dnsbackend.hh
  21. +3
    -1
      dnsmessage.proto
  22. +42
    -17
      dnsname.cc
  23. +17
    -1
      dnsname.hh
  24. +7
    -6
      dnspacket.hh
  25. +6
    -3
      dnsparser.cc
  26. +1
    -0
      dnsrecords.cc
  27. +23
    -24
      dnssecinfra.cc
  28. +10
    -2
      dnssecinfra.hh
  29. +11
    -8
      dnsseckeeper.hh
  30. +76
    -0
      dnstap.cc
  31. +50
    -0
      dnstap.hh
  32. +269
    -0
      dnstap.proto
  33. +23
    -13
      effective_tld_names.dat
  34. +7
    -0
      ext/Makefile.in
  35. +7
    -0
      ext/json11/Makefile.in
  36. +7
    -0
      ext/probds/Makefile.in
  37. +2
    -0
      ext/probds/murmur3.cc
  38. +7
    -0
      ext/yahttp/Makefile.in
  39. +7
    -0
      ext/yahttp/yahttp/Makefile.in
  40. +1
    -0
      ext/yahttp/yahttp/cookie.hpp
  41. +3
    -2
      ext/yahttp/yahttp/reqresp.cpp
  42. +6
    -3
      ext/yahttp/yahttp/utility.hpp
  43. +118
    -28
      filterpo.cc
  44. +31
    -6
      filterpo.hh
  45. +216
    -0
      fstrm_logger.cc
  46. +66
    -0
      fstrm_logger.hh
  47. +1
    -3
      html/index.html
  48. +2
    -9
      html/local.js
  49. +12
    -11
      iputils.cc
  50. +11
    -11
      iputils.hh
  51. +1
    -1
      ixfr.cc
  52. +1
    -1
      json.hh
  53. +4
    -8
      lock.hh
  54. +1
    -1
      logger.cc
  55. +14
    -3
      lua-base4.cc
  56. +2
    -0
      lua-base4.hh
  57. +14
    -0
      lua-recursor4-ffi.hh
  58. +57
    -34
      lua-recursor4.cc
  59. +2
    -1
      lua-recursor4.hh
  60. +129
    -25
      lwres.cc
  61. +3
    -1
      lwres.hh
  62. +31
    -0
      m4/pdns_check_dnstap.m4
  63. +15
    -5
      m4/pdns_enable_nod.m4
  64. +17
    -0
      m4/pdns_with_service_user.m4
  65. +47
    -42
      m4/systemd.m4
  66. +54
    -13
      misc.cc
  67. +12
    -8
      misc.hh
  68. +31
    -24
      negcache.cc
  69. +60
    -54
      negcache.hh
  70. +3
    -3
      nod.cc
  71. +7
    -5
      nsecrecords.cc
  72. +33
    -33
      opensslsigners.cc
  73. +5
    -1
      pdns-recursor.service.in
  74. +1
    -1
      pdns_recursor.1
  75. +417
    -127
      pdns_recursor.cc
  76. +32
    -1
      protobuf.cc
  77. +4
    -0
      protobuf.hh
  78. +3
    -1
      pubsuffix.cc
  79. +6
    -6
      pubsuffixloader.cc
  80. +4
    -2
      qtype.hh
  81. +1
    -1
      rec-carbon.cc
  82. +40
    -0
      rec-dnstap.hh
  83. +78
    -5
      rec-lua-conf.cc
  84. +16
    -0
      rec-lua-conf.hh
  85. +2
    -0
      rec-snmp.cc
  86. +7
    -5
      rec_channel.cc
  87. +5
    -0
      rec_channel.hh
  88. +23
    -21
      rec_channel_rec.cc
  89. +1
    -1
      rec_control.1
  90. +2
    -2
      rec_control.cc
  91. +447
    -0
      rec_metrics.hh
  92. +4
    -4
      recpacketcache.cc
  93. +2
    -1
      recpacketcache.hh
  94. +6
    -6
      recursor_cache.cc
  95. +2
    -0
      reczones.cc
  96. +1
    -1
      remote_logger.cc
  97. +7
    -6
      resolve-context.hh
  98. +3
    -3
      resolver.cc
  99. +6
    -4
      rpzloader.cc
  100. +24
    -26
      secpoll-recursor.cc

+ 38
- 6
Makefile.am View File

@@ -18,6 +18,11 @@ AM_CXXFLAGS += \
-DNODCACHEDIR=\"$(nodcachedir)\"
endif

if FSTRM
AM_CPPFLAGS += \
$(FSTRM_CFLAGS)
endif

AM_LDFLAGS = \
$(PROGRAM_LDFLAGS) \
$(THREADFLAGS)
@@ -61,6 +66,7 @@ EXTRA_DIST = \
NOTICE \
opensslsigners.hh opensslsigners.cc \
portsmplexer.cc \
dnstap.proto dnstap.cc dnstap.hh fstrm_logger.cc fstrm_logger.hh rec-dnstap.hh \
rrd/* \
html incfiles \
test_libcrypto \
@@ -112,6 +118,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 \
@@ -145,7 +152,7 @@ pdns_recursor_SOURCES = \
rec-lua-conf.hh rec-lua-conf.cc \
rec-protobuf.cc rec-protobuf.hh \
rec-snmp.hh rec-snmp.cc \
rec_channel.cc rec_channel.hh \
rec_channel.cc rec_channel.hh rec_metrics.hh \
rec_channel_rec.cc \
recpacketcache.cc recpacketcache.hh \
recursor_cache.cc recursor_cache.hh \
@@ -157,8 +164,8 @@ pdns_recursor_SOURCES = \
root-addresses.hh \
root-dnssec.hh \
rpzloader.cc rpzloader.hh \
secpoll-recursor.cc \
secpoll-recursor.hh \
secpoll-recursor.cc secpoll-recursor.hh \
secpoll.cc secpoll.hh \
sholder.hh \
sillyrecords.cc \
snmp-agent.hh snmp-agent.cc \
@@ -251,6 +258,7 @@ testrunner_SOURCES = \
rpzloader.cc rpzloader.hh \
resolver.hh resolver.cc \
root-dnssec.hh \
secpoll.cc \
sillyrecords.cc \
sholder.hh \
sstuff.hh \
@@ -278,6 +286,7 @@ testrunner_SOURCES = \
test-recpacketcache_cc.cc \
test-recursorcache_cc.cc \
test-rpzloader_cc.cc \
test-secpoll_cc.cc \
test-signers.cc \
test-syncres_cc.hh \
test-syncres_cc.cc \
@@ -377,18 +386,41 @@ if HAVE_PROTOC
dnsmessage.pb.cc: dnsmessage.proto
$(AM_V_GEN)$(PROTOC) --cpp_out=./ $<

if FSTRM
dnstap.pb.cc: dnstap.proto
$(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
endif


BUILT_SOURCES += dnsmessage.pb.cc
pdns_recursor_LDADD += $(PROTOBUF_LIBS)
nodist_pdns_recursor_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h
nodist_testrunner_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h

if FSTRM
BUILT_SOURCES += dnstap.pb.cc
pdns_recursor.$(OBJEXT): dnstap.pb.cc dnsmessage.pb.cc
testrunner$(OBJEXT): dnstap.pb.cc dnsmessage.pb.cc
nodist_pdns_recursor_SOURCES += dnstap.pb.cc dnstap.pb.h
nodist_testrunner_SOURCES += dnstap.pb.cc dnstap.pb.h
else
pdns_recursor.$(OBJEXT): dnsmessage.pb.cc
testrunner$(OBJEXT): dnsmessage.pb.cc
endif

nodist_testrunner_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h
testrunner_LDADD += $(PROTOBUF_LIBS)
testrunner$(OBJEXT): dnsmessage.pb.cc

endif
endif

if FSTRM
pdns_recursor_SOURCES += \
dnstap.cc dnstap.hh rec-dnstap.hh

pdns_recursor_LDADD += \
$(FSTRM_LIBS)
endif

rec_control_SOURCES = \
arguments.cc arguments.hh \
dnsname.hh dnsname.cc \
@@ -470,7 +502,7 @@ endif

if HAVE_SYSTEMD
pdns-recursor.service: pdns-recursor.service.in
$(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' < $< > $@
$(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@
if !HAVE_SYSTEMD_LOCK_PERSONALITY
$(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
endif


+ 220
- 157
Makefile.in View File

@@ -92,64 +92,76 @@ host_triplet = @host@
@NOD_ENABLED_TRUE@am__append_1 = \
@NOD_ENABLED_TRUE@ -DNODCACHEDIR=\"$(nodcachedir)\"

@LUA_TRUE@am__append_2 = $(LUA_CFLAGS)
@FSTRM_TRUE@am__append_2 = \
@FSTRM_TRUE@ $(FSTRM_CFLAGS)

@LUA_TRUE@am__append_3 = $(LUA_CFLAGS)
sbin_PROGRAMS = pdns_recursor$(EXEEXT)
bin_PROGRAMS = rec_control$(EXEEXT)
TESTS = test_libcrypto $(am__EXEEXT_1)
@UNIT_TESTS_TRUE@noinst_PROGRAMS = testrunner$(EXEEXT)
@UNIT_TESTS_TRUE@am__append_3 = testrunner
@HAVE_LUA_HPP_FALSE@am__append_4 = lua.hpp
@UNIT_TESTS_TRUE@am__append_4 = testrunner
@HAVE_LUA_HPP_FALSE@am__append_5 = lua.hpp
@NOD_ENABLED_TRUE@am__append_6 = nod.hh nod.cc
@NOD_ENABLED_TRUE@am__append_7 = \
@HAVE_LUA_HPP_FALSE@am__append_6 = lua.hpp
@NOD_ENABLED_TRUE@am__append_7 = nod.hh nod.cc
@NOD_ENABLED_TRUE@am__append_8 = \
@NOD_ENABLED_TRUE@ $(BOOST_FILESYSTEM_LIBS)

@NOD_ENABLED_TRUE@am__append_8 = \
@NOD_ENABLED_TRUE@am__append_9 = \
@NOD_ENABLED_TRUE@ $(BOOST_FILESYSTEM_LDFLAGS)

@NOD_ENABLED_TRUE@am__append_9 = nod.hh nod.cc \
@NOD_ENABLED_TRUE@am__append_10 = nod.hh nod.cc \
@NOD_ENABLED_TRUE@ test-nod_cc.cc

@NOD_ENABLED_TRUE@am__append_10 = \
@NOD_ENABLED_TRUE@am__append_11 = \
@NOD_ENABLED_TRUE@ $(BOOST_FILESYSTEM_LIBS)

@NOD_ENABLED_TRUE@am__append_11 = \
@NOD_ENABLED_TRUE@am__append_12 = \
@NOD_ENABLED_TRUE@ $(BOOST_FILESYSTEM_LDFLAGS)

@LIBSODIUM_TRUE@am__append_12 = \
@LIBSODIUM_TRUE@am__append_13 = \
@LIBSODIUM_TRUE@ sodiumsigners.cc

@LIBSODIUM_TRUE@am__append_13 = $(LIBSODIUM_LIBS)
@LIBSODIUM_TRUE@am__append_14 = \
@LIBSODIUM_TRUE@am__append_14 = $(LIBSODIUM_LIBS)
@LIBSODIUM_TRUE@am__append_15 = \
@LIBSODIUM_TRUE@ sodiumsigners.cc

@LIBSODIUM_TRUE@am__append_15 = $(LIBSODIUM_LIBS)
@LIBDECAF_TRUE@am__append_16 = \
@LIBSODIUM_TRUE@am__append_16 = $(LIBSODIUM_LIBS)
@LIBDECAF_TRUE@am__append_17 = \
@LIBDECAF_TRUE@ decafsigners.cc

@LIBDECAF_TRUE@am__append_17 = $(LIBDECAF_LIBS)
@MALLOC_TRACE_TRUE@am__append_18 = \
@LIBDECAF_TRUE@am__append_18 = $(LIBDECAF_LIBS)
@MALLOC_TRACE_TRUE@am__append_19 = \
@MALLOC_TRACE_TRUE@ malloctrace.cc \
@MALLOC_TRACE_TRUE@ malloctrace.hh

@MALLOC_TRACE_TRUE@am__append_19 = -rdynamic
@LUA_TRUE@am__append_20 = $(LUA_LIBS)
@HAVE_FREEBSD_TRUE@am__append_21 = kqueuemplexer.cc
@MALLOC_TRACE_TRUE@am__append_20 = -rdynamic
@LUA_TRUE@am__append_21 = $(LUA_LIBS)
@HAVE_FREEBSD_TRUE@am__append_22 = kqueuemplexer.cc
@HAVE_LINUX_TRUE@am__append_23 = epollmplexer.cc
@HAVE_FREEBSD_TRUE@am__append_23 = kqueuemplexer.cc
@HAVE_LINUX_TRUE@am__append_24 = epollmplexer.cc
@HAVE_SOLARIS_TRUE@am__append_25 = \
@HAVE_LINUX_TRUE@am__append_25 = epollmplexer.cc
@HAVE_SOLARIS_TRUE@am__append_26 = \
@HAVE_SOLARIS_TRUE@ devpollmplexer.cc \
@HAVE_SOLARIS_TRUE@ portsmplexer.cc

@HAVE_SOLARIS_TRUE@am__append_26 = \
@HAVE_SOLARIS_TRUE@am__append_27 = \
@HAVE_SOLARIS_TRUE@ devpollmplexer.cc \
@HAVE_SOLARIS_TRUE@ portsmplexer.cc

@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_27 = dnsmessage.pb.cc
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_28 = $(PROTOBUF_LIBS)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_28 = dnsmessage.pb.cc
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_29 = $(PROTOBUF_LIBS)
@HAVE_SYSTEMD_TRUE@am__append_30 = \
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_30 = dnstap.pb.cc
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_31 = dnstap.pb.cc dnstap.pb.h
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_32 = dnstap.pb.cc dnstap.pb.h
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_33 = $(PROTOBUF_LIBS)
@FSTRM_TRUE@am__append_34 = \
@FSTRM_TRUE@ dnstap.cc dnstap.hh rec-dnstap.hh

@FSTRM_TRUE@am__append_35 = \
@FSTRM_TRUE@ $(FSTRM_LIBS)

@HAVE_SYSTEMD_TRUE@am__append_36 = \
@HAVE_SYSTEMD_TRUE@ pdns-recursor.service \
@HAVE_SYSTEMD_TRUE@ pdns-recursor@.service

@@ -163,6 +175,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_pthread_set_name.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/pdns_check_clock_gettime.m4 \
$(top_srcdir)/m4/pdns_check_curl.m4 \
$(top_srcdir)/m4/pdns_check_dnstap.m4 \
$(top_srcdir)/m4/pdns_check_libcrypto.m4 \
$(top_srcdir)/m4/pdns_check_libcrypto_ecdsa.m4 \
$(top_srcdir)/m4/pdns_check_libcrypto_eddsa.m4 \
@@ -189,6 +202,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_pthread_set_name.m4 \
$(top_srcdir)/m4/pdns_with_lua.m4 \
$(top_srcdir)/m4/pdns_with_net_snmp.m4 \
$(top_srcdir)/m4/pdns_with_protobuf.m4 \
$(top_srcdir)/m4/pdns_with_service_user.m4 \
$(top_srcdir)/m4/systemd.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -213,25 +227,26 @@ am__pdns_recursor_SOURCES_DIST = arguments.cc ascii.hh base32.cc \
dnsrecords.cc dnsrecords.hh dnssecinfra.hh dnssecinfra.cc \
dnsseckeeper.hh dnswriter.cc dnswriter.hh ednsoptions.cc \
ednsoptions.hh ednssubnet.cc ednssubnet.hh filterpo.cc \
filterpo.hh gettime.cc gettime.hh gss_context.cc \
gss_context.hh iputils.hh iputils.cc ixfr.cc ixfr.hh json.cc \
json.hh lazy_allocator.hh lock.hh logger.hh logger.cc \
lua-base4.cc lua-base4.hh lua-recursor4.cc lua-recursor4.hh \
lua-recursor4-ffi.hh lwres.cc lwres.hh misc.hh misc.cc \
mplexer.hh mtasker.hh mtasker_context.cc mtasker_context.hh \
namespaces.hh negcache.hh negcache.cc nsecrecords.cc \
opensslsigners.cc opensslsigners.hh packetcache.hh \
pdns_recursor.cc pdnsexception.hh pollmplexer.cc protobuf.cc \
protobuf.hh pubsuffix.hh pubsuffix.cc pubsuffixloader.cc \
qtype.hh qtype.cc rcpgenerator.cc rcpgenerator.hh \
rec-carbon.cc rec-lua-conf.hh rec-lua-conf.cc rec-protobuf.cc \
rec-protobuf.hh rec-snmp.hh rec-snmp.cc rec_channel.cc \
rec_channel.hh rec_channel_rec.cc recpacketcache.cc \
recpacketcache.hh recursor_cache.cc recursor_cache.hh \
reczones.cc remote_logger.cc remote_logger.hh resolver.hh \
resolver.cc resolve-context.hh responsestats.hh \
responsestats.cc root-addresses.hh root-dnssec.hh rpzloader.cc \
rpzloader.hh secpoll-recursor.cc secpoll-recursor.hh \
filterpo.hh fstrm_logger.cc fstrm_logger.hh gettime.cc \
gettime.hh gss_context.cc gss_context.hh iputils.hh iputils.cc \
ixfr.cc ixfr.hh json.cc json.hh lazy_allocator.hh lock.hh \
logger.hh logger.cc lua-base4.cc lua-base4.hh lua-recursor4.cc \
lua-recursor4.hh lua-recursor4-ffi.hh lwres.cc lwres.hh \
misc.hh misc.cc mplexer.hh mtasker.hh mtasker_context.cc \
mtasker_context.hh namespaces.hh negcache.hh negcache.cc \
nsecrecords.cc opensslsigners.cc opensslsigners.hh \
packetcache.hh pdns_recursor.cc pdnsexception.hh \
pollmplexer.cc protobuf.cc protobuf.hh pubsuffix.hh \
pubsuffix.cc pubsuffixloader.cc qtype.hh qtype.cc \
rcpgenerator.cc rcpgenerator.hh rec-carbon.cc rec-lua-conf.hh \
rec-lua-conf.cc rec-protobuf.cc rec-protobuf.hh rec-snmp.hh \
rec-snmp.cc rec_channel.cc rec_channel.hh rec_metrics.hh \
rec_channel_rec.cc recpacketcache.cc recpacketcache.hh \
recursor_cache.cc recursor_cache.hh reczones.cc \
remote_logger.cc remote_logger.hh resolver.hh resolver.cc \
resolve-context.hh responsestats.hh responsestats.cc \
root-addresses.hh root-dnssec.hh rpzloader.cc rpzloader.hh \
secpoll-recursor.cc secpoll-recursor.hh secpoll.cc secpoll.hh \
sholder.hh sillyrecords.cc snmp-agent.hh snmp-agent.cc \
sortlist.cc sortlist.hh sstuff.hh stable-bloom.hh syncres.cc \
syncres.hh threadname.hh threadname.cc tsigverifier.cc \
@@ -242,7 +257,8 @@ am__pdns_recursor_SOURCES_DIST = arguments.cc ascii.hh base32.cc \
ws-recursor.cc ws-recursor.hh xpf.cc xpf.hh zoneparser-tng.cc \
zoneparser-tng.hh nod.hh nod.cc sodiumsigners.cc \
decafsigners.cc malloctrace.cc malloctrace.hh kqueuemplexer.cc \
epollmplexer.cc devpollmplexer.cc portsmplexer.cc
epollmplexer.cc devpollmplexer.cc portsmplexer.cc dnstap.cc \
dnstap.hh rec-dnstap.hh
@NOD_ENABLED_TRUE@am__objects_1 = nod.$(OBJEXT)
@LIBSODIUM_TRUE@am__objects_2 = sodiumsigners.$(OBJEXT)
@LIBDECAF_TRUE@am__objects_3 = decafsigners.$(OBJEXT)
@@ -251,18 +267,20 @@ am__pdns_recursor_SOURCES_DIST = arguments.cc ascii.hh base32.cc \
@HAVE_LINUX_TRUE@am__objects_6 = epollmplexer.$(OBJEXT)
@HAVE_SOLARIS_TRUE@am__objects_7 = devpollmplexer.$(OBJEXT) \
@HAVE_SOLARIS_TRUE@ portsmplexer.$(OBJEXT)
@FSTRM_TRUE@am__objects_8 = dnstap.$(OBJEXT)
am_pdns_recursor_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
base64.$(OBJEXT) capabilities.$(OBJEXT) dns.$(OBJEXT) \
dns_random.$(OBJEXT) dnslabeltext.$(OBJEXT) dnsname.$(OBJEXT) \
dnsparser.$(OBJEXT) dnsrecords.$(OBJEXT) dnssecinfra.$(OBJEXT) \
dnswriter.$(OBJEXT) ednsoptions.$(OBJEXT) ednssubnet.$(OBJEXT) \
filterpo.$(OBJEXT) gettime.$(OBJEXT) gss_context.$(OBJEXT) \
iputils.$(OBJEXT) ixfr.$(OBJEXT) json.$(OBJEXT) \
logger.$(OBJEXT) lua-base4.$(OBJEXT) lua-recursor4.$(OBJEXT) \
lwres.$(OBJEXT) misc.$(OBJEXT) mtasker_context.$(OBJEXT) \
negcache.$(OBJEXT) nsecrecords.$(OBJEXT) \
opensslsigners.$(OBJEXT) pdns_recursor.$(OBJEXT) \
pollmplexer.$(OBJEXT) protobuf.$(OBJEXT) pubsuffix.$(OBJEXT) \
filterpo.$(OBJEXT) fstrm_logger.$(OBJEXT) gettime.$(OBJEXT) \
gss_context.$(OBJEXT) iputils.$(OBJEXT) ixfr.$(OBJEXT) \
json.$(OBJEXT) logger.$(OBJEXT) lua-base4.$(OBJEXT) \
lua-recursor4.$(OBJEXT) lwres.$(OBJEXT) misc.$(OBJEXT) \
mtasker_context.$(OBJEXT) negcache.$(OBJEXT) \
nsecrecords.$(OBJEXT) opensslsigners.$(OBJEXT) \
pdns_recursor.$(OBJEXT) pollmplexer.$(OBJEXT) \
protobuf.$(OBJEXT) pubsuffix.$(OBJEXT) \
pubsuffixloader.$(OBJEXT) qtype.$(OBJEXT) \
rcpgenerator.$(OBJEXT) rec-carbon.$(OBJEXT) \
rec-lua-conf.$(OBJEXT) rec-protobuf.$(OBJEXT) \
@@ -271,17 +289,20 @@ am_pdns_recursor_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
recursor_cache.$(OBJEXT) reczones.$(OBJEXT) \
remote_logger.$(OBJEXT) resolver.$(OBJEXT) \
responsestats.$(OBJEXT) rpzloader.$(OBJEXT) \
secpoll-recursor.$(OBJEXT) sillyrecords.$(OBJEXT) \
snmp-agent.$(OBJEXT) sortlist.$(OBJEXT) syncres.$(OBJEXT) \
threadname.$(OBJEXT) tsigverifier.$(OBJEXT) \
secpoll-recursor.$(OBJEXT) secpoll.$(OBJEXT) \
sillyrecords.$(OBJEXT) snmp-agent.$(OBJEXT) sortlist.$(OBJEXT) \
syncres.$(OBJEXT) threadname.$(OBJEXT) tsigverifier.$(OBJEXT) \
unix_utility.$(OBJEXT) uuid-utils.$(OBJEXT) validate.$(OBJEXT) \
validate-recursor.$(OBJEXT) version.$(OBJEXT) \
webserver.$(OBJEXT) ws-api.$(OBJEXT) ws-recursor.$(OBJEXT) \
xpf.$(OBJEXT) zoneparser-tng.$(OBJEXT) $(am__objects_1) \
$(am__objects_2) $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_pdns_recursor_OBJECTS = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.$(OBJEXT)
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
$(am__objects_8)
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__objects_9 = dnstap.pb.$(OBJEXT)
@HAVE_LUA_HPP_FALSE@nodist_pdns_recursor_OBJECTS = $(am__objects_9)
@HAVE_LUA_HPP_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_pdns_recursor_OBJECTS = dnsmessage.pb.$(OBJEXT) \
@HAVE_LUA_HPP_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__objects_9)
pdns_recursor_OBJECTS = $(am_pdns_recursor_OBJECTS) \
$(nodist_pdns_recursor_OBJECTS)
am__DEPENDENCIES_1 =
@@ -291,13 +312,15 @@ am__DEPENDENCIES_1 =
@LUA_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__DEPENDENCIES_6 = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__DEPENDENCIES_1)
@FSTRM_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
pdns_recursor_DEPENDENCIES = $(am__DEPENDENCIES_1) $(JSON11_LIBS) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(PROBDS_LIBS) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6)
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_6) \
$(am__DEPENDENCIES_7)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
@@ -327,27 +350,29 @@ am__testrunner_SOURCES_DIST = arguments.cc base32.cc base64.cc \
rcpgenerator.cc rec-protobuf.cc rec-protobuf.hh \
recpacketcache.cc recpacketcache.hh recursor_cache.cc \
recursor_cache.hh responsestats.cc rpzloader.cc rpzloader.hh \
resolver.hh resolver.cc root-dnssec.hh sillyrecords.cc \
sholder.hh sstuff.hh stable-bloom.hh syncres.cc syncres.hh \
test-arguments_cc.cc test-base32_cc.cc test-base64_cc.cc \
test-common.hh test-dnsrecordcontent.cc test-dns_random_hh.cc \
test-dnsname_cc.cc test-dnsparser_hh.cc test-dnsrecords_cc.cc \
test-ednsoptions_cc.cc test-filterpo_cc.cc test-iputils_hh.cc \
test-ixfr_cc.cc test-misc_hh.cc test-mtasker.cc \
test-mplexer.cc test-negcache_cc.cc test-packetcache_hh.cc \
resolver.hh resolver.cc root-dnssec.hh secpoll.cc \
sillyrecords.cc sholder.hh sstuff.hh stable-bloom.hh \
syncres.cc syncres.hh test-arguments_cc.cc test-base32_cc.cc \
test-base64_cc.cc test-common.hh test-dnsrecordcontent.cc \
test-dns_random_hh.cc test-dnsname_cc.cc test-dnsparser_hh.cc \
test-dnsrecords_cc.cc test-ednsoptions_cc.cc \
test-filterpo_cc.cc test-iputils_hh.cc test-ixfr_cc.cc \
test-misc_hh.cc test-mtasker.cc test-mplexer.cc \
test-negcache_cc.cc test-packetcache_hh.cc \
test-rcpgenerator_cc.cc test-recpacketcache_cc.cc \
test-recursorcache_cc.cc test-rpzloader_cc.cc test-signers.cc \
test-syncres_cc.hh test-syncres_cc.cc test-syncres_cc1.cc \
test-syncres_cc2.cc test-syncres_cc3.cc test-syncres_cc4.cc \
test-syncres_cc5.cc test-syncres_cc6.cc test-syncres_cc7.cc \
test-syncres_cc8.cc test-syncres_cc9.cc test-tsig.cc \
test-xpf_cc.cc testrunner.cc threadname.hh threadname.cc \
tsigverifier.cc tsigverifier.hh unix_utility.cc validate.cc \
validate.hh validate-recursor.cc validate-recursor.hh xpf.cc \
xpf.hh zoneparser-tng.cc zoneparser-tng.hh nod.hh nod.cc \
test-nod_cc.cc sodiumsigners.cc kqueuemplexer.cc \
epollmplexer.cc devpollmplexer.cc portsmplexer.cc
@NOD_ENABLED_TRUE@am__objects_8 = nod.$(OBJEXT) test-nod_cc.$(OBJEXT)
test-recursorcache_cc.cc test-rpzloader_cc.cc \
test-secpoll_cc.cc test-signers.cc test-syncres_cc.hh \
test-syncres_cc.cc test-syncres_cc1.cc test-syncres_cc2.cc \
test-syncres_cc3.cc test-syncres_cc4.cc test-syncres_cc5.cc \
test-syncres_cc6.cc test-syncres_cc7.cc test-syncres_cc8.cc \
test-syncres_cc9.cc test-tsig.cc test-xpf_cc.cc testrunner.cc \
threadname.hh threadname.cc tsigverifier.cc tsigverifier.hh \
unix_utility.cc validate.cc validate.hh validate-recursor.cc \
validate-recursor.hh xpf.cc xpf.hh zoneparser-tng.cc \
zoneparser-tng.hh nod.hh nod.cc test-nod_cc.cc \
sodiumsigners.cc kqueuemplexer.cc epollmplexer.cc \
devpollmplexer.cc portsmplexer.cc
@NOD_ENABLED_TRUE@am__objects_10 = nod.$(OBJEXT) test-nod_cc.$(OBJEXT)
am_testrunner_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
base64.$(OBJEXT) dns.$(OBJEXT) dns_random.$(OBJEXT) \
dnslabeltext.$(OBJEXT) dnsname.$(OBJEXT) dnsparser.$(OBJEXT) \
@@ -361,33 +386,34 @@ am_testrunner_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
protobuf.$(OBJEXT) qtype.$(OBJEXT) rcpgenerator.$(OBJEXT) \
rec-protobuf.$(OBJEXT) recpacketcache.$(OBJEXT) \
recursor_cache.$(OBJEXT) responsestats.$(OBJEXT) \
rpzloader.$(OBJEXT) resolver.$(OBJEXT) sillyrecords.$(OBJEXT) \
syncres.$(OBJEXT) test-arguments_cc.$(OBJEXT) \
test-base32_cc.$(OBJEXT) test-base64_cc.$(OBJEXT) \
test-dnsrecordcontent.$(OBJEXT) test-dns_random_hh.$(OBJEXT) \
test-dnsname_cc.$(OBJEXT) test-dnsparser_hh.$(OBJEXT) \
test-dnsrecords_cc.$(OBJEXT) test-ednsoptions_cc.$(OBJEXT) \
test-filterpo_cc.$(OBJEXT) test-iputils_hh.$(OBJEXT) \
test-ixfr_cc.$(OBJEXT) test-misc_hh.$(OBJEXT) \
test-mtasker.$(OBJEXT) test-mplexer.$(OBJEXT) \
test-negcache_cc.$(OBJEXT) test-packetcache_hh.$(OBJEXT) \
test-rcpgenerator_cc.$(OBJEXT) \
rpzloader.$(OBJEXT) resolver.$(OBJEXT) secpoll.$(OBJEXT) \
sillyrecords.$(OBJEXT) syncres.$(OBJEXT) \
test-arguments_cc.$(OBJEXT) test-base32_cc.$(OBJEXT) \
test-base64_cc.$(OBJEXT) test-dnsrecordcontent.$(OBJEXT) \
test-dns_random_hh.$(OBJEXT) test-dnsname_cc.$(OBJEXT) \
test-dnsparser_hh.$(OBJEXT) test-dnsrecords_cc.$(OBJEXT) \
test-ednsoptions_cc.$(OBJEXT) test-filterpo_cc.$(OBJEXT) \
test-iputils_hh.$(OBJEXT) test-ixfr_cc.$(OBJEXT) \
test-misc_hh.$(OBJEXT) test-mtasker.$(OBJEXT) \
test-mplexer.$(OBJEXT) test-negcache_cc.$(OBJEXT) \
test-packetcache_hh.$(OBJEXT) test-rcpgenerator_cc.$(OBJEXT) \
test-recpacketcache_cc.$(OBJEXT) \
test-recursorcache_cc.$(OBJEXT) test-rpzloader_cc.$(OBJEXT) \
test-signers.$(OBJEXT) test-syncres_cc.$(OBJEXT) \
test-syncres_cc1.$(OBJEXT) test-syncres_cc2.$(OBJEXT) \
test-syncres_cc3.$(OBJEXT) test-syncres_cc4.$(OBJEXT) \
test-syncres_cc5.$(OBJEXT) test-syncres_cc6.$(OBJEXT) \
test-syncres_cc7.$(OBJEXT) test-syncres_cc8.$(OBJEXT) \
test-syncres_cc9.$(OBJEXT) test-tsig.$(OBJEXT) \
test-xpf_cc.$(OBJEXT) testrunner.$(OBJEXT) \
test-secpoll_cc.$(OBJEXT) test-signers.$(OBJEXT) \
test-syncres_cc.$(OBJEXT) test-syncres_cc1.$(OBJEXT) \
test-syncres_cc2.$(OBJEXT) test-syncres_cc3.$(OBJEXT) \
test-syncres_cc4.$(OBJEXT) test-syncres_cc5.$(OBJEXT) \
test-syncres_cc6.$(OBJEXT) test-syncres_cc7.$(OBJEXT) \
test-syncres_cc8.$(OBJEXT) test-syncres_cc9.$(OBJEXT) \
test-tsig.$(OBJEXT) test-xpf_cc.$(OBJEXT) testrunner.$(OBJEXT) \
threadname.$(OBJEXT) tsigverifier.$(OBJEXT) \
unix_utility.$(OBJEXT) validate.$(OBJEXT) \
validate-recursor.$(OBJEXT) xpf.$(OBJEXT) \
zoneparser-tng.$(OBJEXT) $(am__objects_8) $(am__objects_2) \
zoneparser-tng.$(OBJEXT) $(am__objects_10) $(am__objects_2) \
$(am__objects_5) $(am__objects_6) $(am__objects_7)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_testrunner_OBJECTS = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.$(OBJEXT)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.$(OBJEXT) \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__objects_9)
testrunner_OBJECTS = $(am_testrunner_OBJECTS) \
$(nodist_testrunner_OBJECTS)
testrunner_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -420,11 +446,13 @@ am__depfiles_remade = ./$(DEPDIR)/arguments.Po ./$(DEPDIR)/base32.Po \
./$(DEPDIR)/dnslabeltext.Po ./$(DEPDIR)/dnsmessage.pb.Po \
./$(DEPDIR)/dnsname.Po ./$(DEPDIR)/dnsparser.Po \
./$(DEPDIR)/dnsrecords.Po ./$(DEPDIR)/dnssecinfra.Po \
./$(DEPDIR)/dnstap.Po ./$(DEPDIR)/dnstap.pb.Po \
./$(DEPDIR)/dnswriter.Po ./$(DEPDIR)/ednscookies.Po \
./$(DEPDIR)/ednsoptions.Po ./$(DEPDIR)/ednssubnet.Po \
./$(DEPDIR)/epollmplexer.Po ./$(DEPDIR)/filterpo.Po \
./$(DEPDIR)/gettime.Po ./$(DEPDIR)/gss_context.Po \
./$(DEPDIR)/iputils.Po ./$(DEPDIR)/ixfr.Po ./$(DEPDIR)/json.Po \
./$(DEPDIR)/fstrm_logger.Po ./$(DEPDIR)/gettime.Po \
./$(DEPDIR)/gss_context.Po ./$(DEPDIR)/iputils.Po \
./$(DEPDIR)/ixfr.Po ./$(DEPDIR)/json.Po \
./$(DEPDIR)/kqueuemplexer.Po ./$(DEPDIR)/logger.Po \
./$(DEPDIR)/lua-base4.Po ./$(DEPDIR)/lua-recursor4.Po \
./$(DEPDIR)/lwres.Po ./$(DEPDIR)/malloctrace.Po \
@@ -442,11 +470,11 @@ am__depfiles_remade = ./$(DEPDIR)/arguments.Po ./$(DEPDIR)/base32.Po \
./$(DEPDIR)/recursor_cache.Po ./$(DEPDIR)/reczones.Po \
./$(DEPDIR)/remote_logger.Po ./$(DEPDIR)/resolver.Po \
./$(DEPDIR)/responsestats.Po ./$(DEPDIR)/rpzloader.Po \
./$(DEPDIR)/secpoll-recursor.Po ./$(DEPDIR)/sillyrecords.Po \
./$(DEPDIR)/snmp-agent.Po ./$(DEPDIR)/sodiumsigners.Po \
./$(DEPDIR)/sortlist.Po ./$(DEPDIR)/syncres.Po \
./$(DEPDIR)/test-arguments_cc.Po ./$(DEPDIR)/test-base32_cc.Po \
./$(DEPDIR)/test-base64_cc.Po \
./$(DEPDIR)/secpoll-recursor.Po ./$(DEPDIR)/secpoll.Po \
./$(DEPDIR)/sillyrecords.Po ./$(DEPDIR)/snmp-agent.Po \
./$(DEPDIR)/sodiumsigners.Po ./$(DEPDIR)/sortlist.Po \
./$(DEPDIR)/syncres.Po ./$(DEPDIR)/test-arguments_cc.Po \
./$(DEPDIR)/test-base32_cc.Po ./$(DEPDIR)/test-base64_cc.Po \
./$(DEPDIR)/test-dns_random_hh.Po \
./$(DEPDIR)/test-dnsname_cc.Po \
./$(DEPDIR)/test-dnsparser_hh.Po \
@@ -461,7 +489,8 @@ am__depfiles_remade = ./$(DEPDIR)/arguments.Po ./$(DEPDIR)/base32.Po \
./$(DEPDIR)/test-rcpgenerator_cc.Po \
./$(DEPDIR)/test-recpacketcache_cc.Po \
./$(DEPDIR)/test-recursorcache_cc.Po \
./$(DEPDIR)/test-rpzloader_cc.Po ./$(DEPDIR)/test-signers.Po \
./$(DEPDIR)/test-rpzloader_cc.Po \
./$(DEPDIR)/test-secpoll_cc.Po ./$(DEPDIR)/test-signers.Po \
./$(DEPDIR)/test-syncres_cc.Po ./$(DEPDIR)/test-syncres_cc1.Po \
./$(DEPDIR)/test-syncres_cc2.Po \
./$(DEPDIR)/test-syncres_cc3.Po \
@@ -834,7 +863,7 @@ AM_CPPFLAGS = $(LUA_CFLAGS) $(YAHTTP_CFLAGS) $(BOOST_CPPFLAGS) \
$(SANITIZER_FLAGS) -O3 -Wall -pthread \
-DSYSCONFDIR=\"${sysconfdir}\" $(SYSTEMD_CFLAGS) \
-I$(top_srcdir)/ext/json11 $(YAHTTP_CFLAGS) \
$(LIBCRYPTO_INCLUDES) $(am__append_2)
$(LIBCRYPTO_INCLUDES) $(am__append_2) $(am__append_3)
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -882,6 +911,8 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FSTRM_CFLAGS = @FSTRM_CFLAGS@
FSTRM_LIBS = @FSTRM_LIBS@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
INSTALL = @INSTALL@
@@ -945,6 +976,7 @@ SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
SYSTEMCTL = @SYSTEMCTL@
SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
SYSTEMD_DIR = @SYSTEMD_DIR@
SYSTEMD_LIBS = @SYSTEMD_LIBS@
@@ -1004,6 +1036,8 @@ program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
service_group = @service_group@
service_user = @service_user@
sharedstatedir = @sharedstatedir@
socketdir = @socketdir@
srcdir = @srcdir@
@@ -1023,11 +1057,11 @@ AM_LDFLAGS = \
$(THREADFLAGS)

ACLOCAL_AMFLAGS = -I m4
BUILT_SOURCES = htmlfiles.h dnslabeltext.cc $(am__append_4) \
$(am__append_27)
BUILT_SOURCES = htmlfiles.h dnslabeltext.cc $(am__append_5) \
$(am__append_28) $(am__append_30)
CLEANFILES = htmlfiles.h dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc \
dnstap.pb.h recursor.conf-dist $(am__append_5) \
$(am__append_30)
dnstap.pb.h recursor.conf-dist $(am__append_6) \
$(am__append_36)
SUBDIRS = ext
EXTRA_DIST = \
contrib/* \
@@ -1047,6 +1081,7 @@ EXTRA_DIST = \
NOTICE \
opensslsigners.hh opensslsigners.cc \
portsmplexer.cc \
dnstap.proto dnstap.cc dnstap.hh fstrm_logger.cc fstrm_logger.hh rec-dnstap.hh \
rrd/* \
html incfiles \
test_libcrypto \
@@ -1063,25 +1098,26 @@ pdns_recursor_SOURCES = arguments.cc ascii.hh base32.cc base32.hh \
dnsrecords.cc dnsrecords.hh dnssecinfra.hh dnssecinfra.cc \
dnsseckeeper.hh dnswriter.cc dnswriter.hh ednsoptions.cc \
ednsoptions.hh ednssubnet.cc ednssubnet.hh filterpo.cc \
filterpo.hh gettime.cc gettime.hh gss_context.cc \
gss_context.hh iputils.hh iputils.cc ixfr.cc ixfr.hh json.cc \
json.hh lazy_allocator.hh lock.hh logger.hh logger.cc \
lua-base4.cc lua-base4.hh lua-recursor4.cc lua-recursor4.hh \
lua-recursor4-ffi.hh lwres.cc lwres.hh misc.hh misc.cc \
mplexer.hh mtasker.hh mtasker_context.cc mtasker_context.hh \
namespaces.hh negcache.hh negcache.cc nsecrecords.cc \
opensslsigners.cc opensslsigners.hh packetcache.hh \
pdns_recursor.cc pdnsexception.hh pollmplexer.cc protobuf.cc \
protobuf.hh pubsuffix.hh pubsuffix.cc pubsuffixloader.cc \
qtype.hh qtype.cc rcpgenerator.cc rcpgenerator.hh \
rec-carbon.cc rec-lua-conf.hh rec-lua-conf.cc rec-protobuf.cc \
rec-protobuf.hh rec-snmp.hh rec-snmp.cc rec_channel.cc \
rec_channel.hh rec_channel_rec.cc recpacketcache.cc \
recpacketcache.hh recursor_cache.cc recursor_cache.hh \
reczones.cc remote_logger.cc remote_logger.hh resolver.hh \
resolver.cc resolve-context.hh responsestats.hh \
responsestats.cc root-addresses.hh root-dnssec.hh rpzloader.cc \
rpzloader.hh secpoll-recursor.cc secpoll-recursor.hh \
filterpo.hh fstrm_logger.cc fstrm_logger.hh gettime.cc \
gettime.hh gss_context.cc gss_context.hh iputils.hh iputils.cc \
ixfr.cc ixfr.hh json.cc json.hh lazy_allocator.hh lock.hh \
logger.hh logger.cc lua-base4.cc lua-base4.hh lua-recursor4.cc \
lua-recursor4.hh lua-recursor4-ffi.hh lwres.cc lwres.hh \
misc.hh misc.cc mplexer.hh mtasker.hh mtasker_context.cc \
mtasker_context.hh namespaces.hh negcache.hh negcache.cc \
nsecrecords.cc opensslsigners.cc opensslsigners.hh \
packetcache.hh pdns_recursor.cc pdnsexception.hh \
pollmplexer.cc protobuf.cc protobuf.hh pubsuffix.hh \
pubsuffix.cc pubsuffixloader.cc qtype.hh qtype.cc \
rcpgenerator.cc rcpgenerator.hh rec-carbon.cc rec-lua-conf.hh \
rec-lua-conf.cc rec-protobuf.cc rec-protobuf.hh rec-snmp.hh \
rec-snmp.cc rec_channel.cc rec_channel.hh rec_metrics.hh \
rec_channel_rec.cc recpacketcache.cc recpacketcache.hh \
recursor_cache.cc recursor_cache.hh reczones.cc \
remote_logger.cc remote_logger.hh resolver.hh resolver.cc \
resolve-context.hh responsestats.hh responsestats.cc \
root-addresses.hh root-dnssec.hh rpzloader.cc rpzloader.hh \
secpoll-recursor.cc secpoll-recursor.hh secpoll.cc secpoll.hh \
sholder.hh sillyrecords.cc snmp-agent.hh snmp-agent.cc \
sortlist.cc sortlist.hh sstuff.hh stable-bloom.hh syncres.cc \
syncres.hh threadname.hh threadname.cc tsigverifier.cc \
@@ -1090,19 +1126,23 @@ pdns_recursor_SOURCES = arguments.cc ascii.hh base32.cc base32.hh \
validate-recursor.cc validate-recursor.hh version.cc \
version.hh webserver.cc webserver.hh ws-api.cc ws-api.hh \
ws-recursor.cc ws-recursor.hh xpf.cc xpf.hh zoneparser-tng.cc \
zoneparser-tng.hh $(am__append_6) $(am__append_12) \
$(am__append_16) $(am__append_18) $(am__append_21) \
$(am__append_23) $(am__append_25)
@HAVE_LUA_HPP_FALSE@nodist_pdns_recursor_SOURCES = lua.hpp
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_pdns_recursor_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h
zoneparser-tng.hh $(am__append_7) $(am__append_13) \
$(am__append_17) $(am__append_19) $(am__append_22) \
$(am__append_24) $(am__append_26) $(am__append_34)
@HAVE_LUA_HPP_FALSE@nodist_pdns_recursor_SOURCES = lua.hpp \
@HAVE_LUA_HPP_FALSE@ $(am__append_31)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_pdns_recursor_SOURCES = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.cc \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.h \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__append_31)
pdns_recursor_LDADD = $(YAHTTP_LIBS) $(JSON11_LIBS) $(LIBCRYPTO_LIBS) \
$(BOOST_CONTEXT_LIBS) $(NET_SNMP_LIBS) $(SYSTEMD_LIBS) \
$(RT_LIBS) $(BOOST_SYSTEM_LIBS) $(PROBDS_LIBS) $(LIBCAP_LIBS) \
$(am__append_7) $(am__append_13) $(am__append_17) \
$(am__append_20) $(am__append_28)
$(am__append_8) $(am__append_14) $(am__append_18) \
$(am__append_21) $(am__append_29) $(am__append_35)
pdns_recursor_LDFLAGS = $(AM_LDFLAGS) $(LIBCRYPTO_LDFLAGS) \
$(BOOST_CONTEXT_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) \
$(am__append_8) $(am__append_19)
$(am__append_9) $(am__append_20)
testrunner_SOURCES = arguments.cc base32.cc base64.cc base64.hh \
circular_buffer.hh dns.cc dns.hh dns_random.cc dns_random.hh \
dnslabeltext.cc dnsname.cc dnsname.hh dnsparser.hh \
@@ -1118,7 +1158,7 @@ testrunner_SOURCES = arguments.cc base32.cc base64.cc base64.hh \
rec-protobuf.hh recpacketcache.cc recpacketcache.hh \
recursor_cache.cc recursor_cache.hh responsestats.cc \
rpzloader.cc rpzloader.hh resolver.hh resolver.cc \
root-dnssec.hh sillyrecords.cc sholder.hh sstuff.hh \
root-dnssec.hh secpoll.cc sillyrecords.cc sholder.hh sstuff.hh \
stable-bloom.hh syncres.cc syncres.hh test-arguments_cc.cc \
test-base32_cc.cc test-base64_cc.cc test-common.hh \
test-dnsrecordcontent.cc test-dns_random_hh.cc \
@@ -1127,25 +1167,28 @@ testrunner_SOURCES = arguments.cc base32.cc base64.cc base64.hh \
test-ixfr_cc.cc test-misc_hh.cc test-mtasker.cc \
test-mplexer.cc test-negcache_cc.cc test-packetcache_hh.cc \
test-rcpgenerator_cc.cc test-recpacketcache_cc.cc \
test-recursorcache_cc.cc test-rpzloader_cc.cc test-signers.cc \
test-syncres_cc.hh test-syncres_cc.cc test-syncres_cc1.cc \
test-syncres_cc2.cc test-syncres_cc3.cc test-syncres_cc4.cc \
test-syncres_cc5.cc test-syncres_cc6.cc test-syncres_cc7.cc \
test-syncres_cc8.cc test-syncres_cc9.cc test-tsig.cc \
test-xpf_cc.cc testrunner.cc threadname.hh threadname.cc \
tsigverifier.cc tsigverifier.hh unix_utility.cc validate.cc \
validate.hh validate-recursor.cc validate-recursor.hh xpf.cc \
xpf.hh zoneparser-tng.cc zoneparser-tng.hh $(am__append_9) \
$(am__append_14) $(am__append_22) $(am__append_24) \
$(am__append_26)
test-recursorcache_cc.cc test-rpzloader_cc.cc \
test-secpoll_cc.cc test-signers.cc test-syncres_cc.hh \
test-syncres_cc.cc test-syncres_cc1.cc test-syncres_cc2.cc \
test-syncres_cc3.cc test-syncres_cc4.cc test-syncres_cc5.cc \
test-syncres_cc6.cc test-syncres_cc7.cc test-syncres_cc8.cc \
test-syncres_cc9.cc test-tsig.cc test-xpf_cc.cc testrunner.cc \
threadname.hh threadname.cc tsigverifier.cc tsigverifier.hh \
unix_utility.cc validate.cc validate.hh validate-recursor.cc \
validate-recursor.hh xpf.cc xpf.hh zoneparser-tng.cc \
zoneparser-tng.hh $(am__append_10) $(am__append_15) \
$(am__append_23) $(am__append_25) $(am__append_27)
testrunner_LDFLAGS = $(AM_LDFLAGS) $(BOOST_CONTEXT_LDFLAGS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) $(LIBCRYPTO_LDFLAGS) \
$(BOOST_SYSTEM_LDFLAGS) $(am__append_11)
$(BOOST_SYSTEM_LDFLAGS) $(am__append_12)
testrunner_LDADD = $(BOOST_CONTEXT_LIBS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LIBS) $(LIBCRYPTO_LIBS) $(RT_LIBS) \
$(BOOST_SYSTEM_LIBS) $(PROBDS_LIBS) $(LIBCAP_LIBS) \
$(am__append_10) $(am__append_15) $(am__append_29)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_testrunner_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h
$(am__append_11) $(am__append_16) $(am__append_33)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_testrunner_SOURCES = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.cc \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.h \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(am__append_32)
rec_control_SOURCES = \
arguments.cc arguments.hh \
dnsname.hh dnsname.cc \
@@ -1364,12 +1407,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsparser.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsrecords.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnssecinfra.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnstap.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnstap.pb.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnswriter.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednscookies.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednsoptions.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ednssubnet.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epollmplexer.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filterpo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstrm_logger.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gss_context.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iputils.Po@am__quote@ # am--include-marker
@@ -1410,6 +1456,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/responsestats.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpzloader.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secpoll-recursor.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secpoll.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sillyrecords.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp-agent.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sodiumsigners.Po@am__quote@ # am--include-marker
@@ -1437,6 +1484,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-recpacketcache_cc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-recursorcache_cc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rpzloader_cc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-secpoll_cc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signers.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-syncres_cc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-syncres_cc1.Po@am__quote@ # am--include-marker
@@ -2125,12 +2173,15 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/dnsparser.Po
-rm -f ./$(DEPDIR)/dnsrecords.Po
-rm -f ./$(DEPDIR)/dnssecinfra.Po
-rm -f ./$(DEPDIR)/dnstap.Po
-rm -f ./$(DEPDIR)/dnstap.pb.Po
-rm -f ./$(DEPDIR)/dnswriter.Po
-rm -f ./$(DEPDIR)/ednscookies.Po
-rm -f ./$(DEPDIR)/ednsoptions.Po
-rm -f ./$(DEPDIR)/ednssubnet.Po
-rm -f ./$(DEPDIR)/epollmplexer.Po
-rm -f ./$(DEPDIR)/filterpo.Po
-rm -f ./$(DEPDIR)/fstrm_logger.Po
-rm -f ./$(DEPDIR)/gettime.Po
-rm -f ./$(DEPDIR)/gss_context.Po
-rm -f ./$(DEPDIR)/iputils.Po
@@ -2171,6 +2222,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/responsestats.Po
-rm -f ./$(DEPDIR)/rpzloader.Po
-rm -f ./$(DEPDIR)/secpoll-recursor.Po
-rm -f ./$(DEPDIR)/secpoll.Po
-rm -f ./$(DEPDIR)/sillyrecords.Po
-rm -f ./$(DEPDIR)/snmp-agent.Po
-rm -f ./$(DEPDIR)/sodiumsigners.Po
@@ -2198,6 +2250,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-recpacketcache_cc.Po
-rm -f ./$(DEPDIR)/test-recursorcache_cc.Po
-rm -f ./$(DEPDIR)/test-rpzloader_cc.Po
-rm -f ./$(DEPDIR)/test-secpoll_cc.Po
-rm -f ./$(DEPDIR)/test-signers.Po
-rm -f ./$(DEPDIR)/test-syncres_cc.Po
-rm -f ./$(DEPDIR)/test-syncres_cc1.Po
@@ -2286,12 +2339,15 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/dnsparser.Po
-rm -f ./$(DEPDIR)/dnsrecords.Po
-rm -f ./$(DEPDIR)/dnssecinfra.Po
-rm -f ./$(DEPDIR)/dnstap.Po
-rm -f ./$(DEPDIR)/dnstap.pb.Po
-rm -f ./$(DEPDIR)/dnswriter.Po
-rm -f ./$(DEPDIR)/ednscookies.Po
-rm -f ./$(DEPDIR)/ednsoptions.Po
-rm -f ./$(DEPDIR)/ednssubnet.Po
-rm -f ./$(DEPDIR)/epollmplexer.Po
-rm -f ./$(DEPDIR)/filterpo.Po
-rm -f ./$(DEPDIR)/fstrm_logger.Po
-rm -f ./$(DEPDIR)/gettime.Po
-rm -f ./$(DEPDIR)/gss_context.Po
-rm -f ./$(DEPDIR)/iputils.Po
@@ -2332,6 +2388,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/responsestats.Po
-rm -f ./$(DEPDIR)/rpzloader.Po
-rm -f ./$(DEPDIR)/secpoll-recursor.Po
-rm -f ./$(DEPDIR)/secpoll.Po
-rm -f ./$(DEPDIR)/sillyrecords.Po
-rm -f ./$(DEPDIR)/snmp-agent.Po
-rm -f ./$(DEPDIR)/sodiumsigners.Po
@@ -2359,6 +2416,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-recpacketcache_cc.Po
-rm -f ./$(DEPDIR)/test-recursorcache_cc.Po
-rm -f ./$(DEPDIR)/test-rpzloader_cc.Po
-rm -f ./$(DEPDIR)/test-secpoll_cc.Po
-rm -f ./$(DEPDIR)/test-signers.Po
-rm -f ./$(DEPDIR)/test-syncres_cc.Po
-rm -f ./$(DEPDIR)/test-syncres_cc1.Po
@@ -2451,8 +2509,13 @@ dist-hook:

@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@dnsmessage.pb.cc: dnsmessage.proto
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(AM_V_GEN)$(PROTOC) --cpp_out=./ $<
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@pdns_recursor.$(OBJEXT): dnsmessage.pb.cc
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@testrunner$(OBJEXT): dnsmessage.pb.cc

@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@dnstap.pb.cc: dnstap.proto
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@pdns_recursor.$(OBJEXT): dnstap.pb.cc dnsmessage.pb.cc
@FSTRM_TRUE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@testrunner$(OBJEXT): dnstap.pb.cc dnsmessage.pb.cc
@FSTRM_FALSE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@pdns_recursor.$(OBJEXT): dnsmessage.pb.cc
@FSTRM_FALSE@@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@testrunner$(OBJEXT): dnsmessage.pb.cc

dnslabeltext.cc: dnslabeltext.rl
$(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
@@ -2505,7 +2568,7 @@ recursor.conf-dist: pdns_recursor
@HAVE_VIRTUALENV_FALSE@ exit 1

@HAVE_SYSTEMD_TRUE@pdns-recursor.service: pdns-recursor.service.in
@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' < $< > $@
@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)sed -e 's![@]sbindir[@]!$(sbindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@
@HAVE_SYSTEMD_LOCK_PERSONALITY_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
@HAVE_SYSTEMD_PRIVATE_DEVICES_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
@HAVE_SYSTEMD_PRIVATE_TMP_FALSE@@HAVE_SYSTEMD_TRUE@ $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@


+ 14
- 2
RECURSOR-MIB.txt View File

@@ -15,7 +15,7 @@ IMPORTS
FROM SNMPv2-CONF;

rec MODULE-IDENTITY
LAST-UPDATED "201812240000Z"
LAST-UPDATED "201911140000Z"
ORGANIZATION "PowerDNS BV"
CONTACT-INFO "support@powerdns.com"
DESCRIPTION
@@ -27,6 +27,9 @@ rec MODULE-IDENTITY
REVISION "201812240000Z"
DESCRIPTION "Added the dnssecAuthenticDataQueries and dnssecCheckDisabledQueries stats."

REVISION "201911140000Z"
DESCRIPTION "Added qnameMinFallbackSuccess stats."

::= { powerdns 2 }

powerdns OBJECT IDENTIFIER ::= { enterprises 43315 }
@@ -825,6 +828,14 @@ rebalancedQueries OBJECT-TYPE
"Number of queries re-distributed because the first selected worker thread was above the target load"
::= { stats 99 }

qnameMinFallbackSuccess OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Number of successful queries due to fallback mechanism within 'qname-minimization' setting"
::= { stats 100 }

---
--- Traps / Notifications
---
@@ -967,7 +978,8 @@ recGroup OBJECT-GROUP
variableResponses,
specialMemoryUsage,
rebalancedQueries,
trapReason
trapReason,
qnameMinFallbackSuccess
}
STATUS current
DESCRIPTION "Objects conformance group for PowerDNS Recursor"


+ 2
- 0
aclocal.m4 View File

@@ -1525,6 +1525,7 @@ m4_include([m4/ltversion.m4])
m4_include([m4/lt~obsolete.m4])
m4_include([m4/pdns_check_clock_gettime.m4])
m4_include([m4/pdns_check_curl.m4])
m4_include([m4/pdns_check_dnstap.m4])
m4_include([m4/pdns_check_libcrypto.m4])
m4_include([m4/pdns_check_libcrypto_ecdsa.m4])
m4_include([m4/pdns_check_libcrypto_eddsa.m4])
@@ -1552,5 +1553,6 @@ m4_include([m4/pdns_with_libsodium.m4])
m4_include([m4/pdns_with_lua.m4])
m4_include([m4/pdns_with_net_snmp.m4])
m4_include([m4/pdns_with_protobuf.m4])
m4_include([m4/pdns_with_service_user.m4])
m4_include([m4/systemd.m4])
m4_include([m4/warnings.m4])

+ 28
- 36
arguments.cc View File

@@ -460,43 +460,35 @@ bool ArgvMap::file(const char *fname, bool lax, bool included)

void ArgvMap::gatherIncludes(std::vector<std::string> &extraConfigs) {
extraConfigs.clear();
if (params["include-dir"].empty()) return; // nothing to do
struct stat st;
DIR *dir;
struct dirent *ent;

// stat
if (stat(params["include-dir"].c_str(), &st)) {
g_log << Logger::Error << params["include-dir"] << " does not exist!" << std::endl;
throw ArgException(params["include-dir"] + " does not exist!");
}

// wonder if it's accessible directory
if (!S_ISDIR(st.st_mode)) {
g_log << Logger::Error << params["include-dir"] << " is not a directory" << std::endl;
throw ArgException(params["include-dir"] + " is not a directory");
}

if (!(dir = opendir(params["include-dir"].c_str()))) {
g_log << Logger::Error << params["include-dir"] << " is not accessible" << std::endl;
throw ArgException(params["include-dir"] + " is not accessible");
}
if (params["include-dir"].empty())
return; // nothing to do

DIR *dir;
if (!(dir = opendir(params["include-dir"].c_str()))) {
int err = errno;
string msg = params["include-dir"] + " is not accessible: " + strerror(err);
g_log << Logger::Error << msg << std::endl;
throw ArgException(msg);
}

while((ent = readdir(dir)) != NULL) {
if (ent->d_name[0] == '.') continue; // skip any dots
if (boost::ends_with(ent->d_name, ".conf")) {
// build name
std::ostringstream namebuf;
namebuf << params["include-dir"].c_str() << "/" << ent->d_name; // FIXME: Use some path separator
// ensure it's readable file
if (stat(namebuf.str().c_str(), &st) || !S_ISREG(st.st_mode)) {
g_log << Logger::Error << namebuf.str() << " is not a file" << std::endl;
closedir(dir);
throw ArgException(namebuf.str() + " does not exist!");
}
extraConfigs.push_back(namebuf.str());
struct dirent *ent;
while ((ent = readdir(dir)) != NULL) {
if (ent->d_name[0] == '.')
continue; // skip any dots
if (boost::ends_with(ent->d_name, ".conf")) {
// build name
string name = params["include-dir"] + "/" + ent->d_name; // FIXME: Use some path separator
// ensure it's readable file
struct stat st;
if (stat(name.c_str(), &st) || !S_ISREG(st.st_mode)) {
string msg = name + " is not a regular file";
g_log << Logger::Error << msg << std::endl;
closedir(dir);
throw ArgException(msg);
}
extraConfigs.push_back(name);
}
std::sort(extraConfigs.begin(), extraConfigs.end(), CIStringComparePOSIX());
closedir(dir);
}
std::sort(extraConfigs.begin(), extraConfigs.end(), CIStringComparePOSIX());
closedir(dir);
}

+ 1
- 1
arguments.hh View File

@@ -104,7 +104,7 @@ public:
string &set(const string &); //!< Gives a writable reference and allocates space for it
string &set(const string &, const string &); //!< Does the same but also allows one to specify a help message
void setCmd(const string &, const string &); //!< Add a command flag
string &setSwitch(const string &, const string &); //!< Add a command flag
string &setSwitch(const string &, const string &); //!< Add a switch flag
string helpstring(string prefix=""); //!< generates the --help
string configstring(bool current=false); //!< generates the --mkconfig
bool contains(const string &var, const string &val);


+ 20
- 12
builder-support/gen-version View File

@@ -10,7 +10,7 @@ DIRTY=""
git status | grep -q clean || DIRTY='.dirty'

# Special environment variable to signal that we are building a release, as this
# has condequenses for the version number.
# has consequenses for the version number.
if [ "${IS_RELEASE}" = "YES" ]; then
TAG="$(git describe --tags --exact-match 2> /dev/null | cut -d- -f 2-)"
if [ -n "${TAG}" ]; then
@@ -27,17 +27,26 @@ fi
# Generate the version number based on the branch
#
if [ ! -z "$(git rev-parse --abbrev-ref HEAD 2> /dev/null)" ]; then
GIT_VERSION=""
if $(git rev-parse --abbrev-ref HEAD | grep -q 'rel/'); then
REL_TYPE="$(git rev-parse --abbrev-ref HEAD | cut -d/ -f 2 | cut -d- -f 1)"
GIT_VERSION="$(git describe --match=${REL_TYPE}-* --tags | cut -d- -f2-)"
if [ -n "${BUILDER_MODULES}" ]; then
match=${BUILDER_MODULES}
[ $match = "authoritative" ] && match='auth'
[ $match = "recursor" ] && match='rec'
GIT_VERSION="$(git describe --match=${match}-* --tags | cut -d- -f2-)"
if [ $(echo ${GIT_VERSION} | awk -F"-" '{print NF-1}') = '3' ]; then
# A prerelease happened before
LAST_TAG="$(echo ${GIT_VERSION} | cut -d- -f1-2)"
COMMITS_SINCE_TAG="$(echo ${GIT_VERSION} | cut -d- -f3)"
GIT_HASH="$(echo ${GIT_VERSION} | cut -d- -f4)"
else
LAST_TAG="$(echo ${GIT_VERSION} | cut -d- -f1)"
COMMITS_SINCE_TAG="$(echo ${GIT_VERSION} | cut -d- -f2)"
GIT_HASH="$(echo ${GIT_VERSION} | cut -d- -f3)"
fi
fi

LAST_TAG="$(echo ${GIT_VERSION} | cut -d- -f1)"
COMMITS_SINCE_TAG="$(echo ${GIT_VERSION} | cut -d- -f2)"
GIT_HASH="$(echo ${GIT_VERSION} | cut -d- -f3)"

if [ -z "${GIT_VERSION}" ]; then
# BUILDER_SUPPORT has more than one product listed, fall back to the 0.0.0 logic

# We used 0.0.XXXXgHASH for master in the previous incarnation of our build pipeline.
# This now becomes 0.0.XXXX.0.gHASH, as 0.0.0.XXXX.gHASH (which is more correct)
# would break upgrades for those running master
@@ -45,11 +54,10 @@ if [ ! -z "$(git rev-parse --abbrev-ref HEAD 2> /dev/null)" ]; then
LAST_TAG=0.0
COMMITS_SINCE_TAG="$(git rev-list --count 12c868770afc20b6cc0da439d881105151d557dd..HEAD 2> /dev/null).0"
[ "${COMMITS_SINCE_TAG}" = ".0" ] && COMMITS_SINCE_TAG=0.0
GIT_HASH="$(git rev-parse HEAD | cut -c1-10 2> /dev/null)"
GIT_HASH="g$(git rev-parse HEAD | cut -c1-10 2> /dev/null)"
fi

BRANCH=".$(git rev-parse --abbrev-ref HEAD | perl -p -e 's/[^[:alnum:]]//g;')"
[ "${BRANCH}" = ".master" ] && BRANCH=''

TAG="$(git describe --tags --exact-match 2> /dev/null | cut -d- -f 2-)"
if [ -n "${TAG}" ]; then # We're exactly on a tag
@@ -60,7 +68,7 @@ if [ ! -z "$(git rev-parse --abbrev-ref HEAD 2> /dev/null)" ]; then
fi
fi

VERSION="${LAST_TAG}.${COMMITS_SINCE_TAG}${BRANCH}.g${GIT_HASH}${DIRTY}"
VERSION="${LAST_TAG}.${COMMITS_SINCE_TAG}${BRANCH}.${GIT_HASH}${DIRTY}"
fi

printf $VERSION

+ 20
- 20
cachecleaner.hh View File

@@ -26,7 +26,7 @@
// this function can clean any cache that has a getTTD() method on its entries, a preRemoval() method and a 'sequence' index as its second index
// the ritual is that the oldest entries are in *front* of the sequence collection, so on a hit, move an item to the end
// on a miss, move it to the beginning
template <typename C, typename T> void pruneCollection(C& container, T& collection, unsigned int maxCached, unsigned int scanFraction=1000)
template <typename S, typename C, typename T> void pruneCollection(C& container, T& collection, unsigned int maxCached, unsigned int scanFraction=1000)
{
time_t now=time(0);
unsigned int toTrim=0;
@@ -39,8 +39,8 @@ template <typename C, typename T> void pruneCollection(C& container, T& collecti

// cout<<"Need to trim "<<toTrim<<" from cache to meet target!\n";

typedef typename T::template nth_index<1>::type sequence_t;
sequence_t& sidx=collection.template get<1>();
typedef typename T::template index<S>::type sequence_t;
sequence_t& sidx=collection.template get<S>();

unsigned int tried=0, lookAt, erased=0;

@@ -89,29 +89,29 @@ template <typename C, typename T> void pruneCollection(C& container, T& collecti
}
}

// note: this expects iterator from first index, and sequence MUST be second index!
template <typename T> void moveCacheItemToFrontOrBack(T& collection, typename T::iterator& iter, bool front)
// note: this expects iterator from first index
template <typename S, typename T> void moveCacheItemToFrontOrBack(T& collection, typename T::iterator& iter, bool front)
{
typedef typename T::template nth_index<1>::type sequence_t;
sequence_t& sidx=collection.template get<1>();
typename sequence_t::iterator si=collection.template project<1>(iter);
typedef typename T::template index<S>::type sequence_t;
sequence_t& sidx=collection.template get<S>();
typename sequence_t::iterator si=collection.template project<S>(iter);
if(front)
sidx.relocate(sidx.begin(), si); // at the beginning of the delete queue
else
sidx.relocate(sidx.end(), si); // back
}

template <typename T> void moveCacheItemToFront(T& collection, typename T::iterator& iter)
template <typename S, typename T> void moveCacheItemToFront(T& collection, typename T::iterator& iter)
{
moveCacheItemToFrontOrBack(collection, iter, true);
moveCacheItemToFrontOrBack<S>(collection, iter, true);
}

template <typename T> void moveCacheItemToBack(T& collection, typename T::iterator& iter)
template <typename S, typename T> void moveCacheItemToBack(T& collection, typename T::iterator& iter)
{
moveCacheItemToFrontOrBack(collection, iter, false);
moveCacheItemToFrontOrBack<S>(collection, iter, false);
}

template <typename T> uint64_t pruneLockedCollectionsVector(vector<T>& maps, uint64_t maxCached, uint64_t cacheSize)
template <typename S, typename T> uint64_t pruneLockedCollectionsVector(vector<T>& maps, uint64_t maxCached, uint64_t cacheSize)
{
time_t now = time(nullptr);
uint64_t totErased = 0;
@@ -129,7 +129,7 @@ template <typename T> uint64_t pruneLockedCollectionsVector(vector<T>& maps, uin

for(auto& mc : maps) {
WriteLock wl(&mc.d_mut);
auto& sidx = boost::multi_index::get<2>(mc.d_map);
auto& sidx = boost::multi_index::get<S>(mc.d_map);
uint64_t erased = 0, lookedAt = 0;
for(auto i = sidx.begin(); i != sidx.end(); lookedAt++) {
if(i->ttd < now) {
@@ -164,7 +164,7 @@ template <typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps)
return delcount;
}

template <typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps, const std::string& match)
template <typename N, typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps, const std::string& match)
{
uint64_t delcount=0;
string prefix(match);
@@ -172,7 +172,7 @@ template <typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps, con
DNSName dprefix(prefix);
for(auto& mc : maps) {
WriteLock wl(&mc.d_mut);
auto& idx = boost::multi_index::get<1>(mc.d_map);
auto& idx = boost::multi_index::get<N>(mc.d_map);
auto iter = idx.lower_bound(dprefix);
auto start = iter;

@@ -188,11 +188,11 @@ template <typename T> uint64_t purgeLockedCollectionsVector(vector<T>& maps, con
return delcount;
}

template <typename T> uint64_t purgeExactLockedCollection(T& mc, const DNSName& qname)
template <typename N, typename T> uint64_t purgeExactLockedCollection(T& mc, const DNSName& qname)
{
uint64_t delcount=0;
WriteLock wl(&mc.d_mut);
auto& idx = boost::multi_index::get<1>(mc.d_map);
auto& idx = boost::multi_index::get<N>(mc.d_map);
auto range = idx.equal_range(qname);
if(range.first != range.second) {
delcount += distance(range.first, range.second);
@@ -202,13 +202,13 @@ template <typename T> uint64_t purgeExactLockedCollection(T& mc, const DNSName&
return delcount;
}

template<typename Index>
template<typename S, typename Index>
std::pair<typename Index::iterator,bool>
lruReplacingInsert(Index& i,const typename Index::value_type& x)
{
std::pair<typename Index::iterator,bool> res = i.insert(x);
if (!res.second) {
moveCacheItemToBack(i, res.first);
moveCacheItemToBack<S>(i, res.first);
res.second = i.replace(res.first, x);
}
return res;


+ 28
- 2
capabilities.cc View File

@@ -30,17 +30,43 @@
#endif

#include "capabilities.hh"
#include "misc.hh"

void dropCapabilities()
void dropCapabilities(std::set<std::string> capabilitiesToKeep)
{
#ifdef HAVE_LIBCAP
cap_t caps = cap_get_proc();
if (caps != nullptr) {
cap_clear(caps);

if (!capabilitiesToKeep.empty()) {
std::vector<cap_value_t> toKeep;
toKeep.reserve(capabilitiesToKeep.size());

for (const auto& capToKeep : capabilitiesToKeep) {
cap_value_t value;
int res = cap_from_name(capToKeep.c_str(), &value);
if (res != 0) {
cap_free(caps);
throw std::runtime_error("Unable to convert capability name '" + capToKeep + "': " + stringerror());
}
toKeep.push_back(value);
}

if (cap_set_flag(caps, CAP_EFFECTIVE, toKeep.size(), toKeep.data(), CAP_SET) != 0) {
cap_free(caps);
throw std::runtime_error("Unable to set effective flag capabilities: " + stringerror());
}

if (cap_set_flag(caps, CAP_PERMITTED, toKeep.size(), toKeep.data(), CAP_SET) != 0) {
cap_free(caps);
throw std::runtime_error("Unable to set permitted flag capabilities: " + stringerror());
}
}

if (cap_set_proc(caps) != 0) {
cap_free(caps);
throw std::runtime_error("Unable to drop capabilities: " + std::string(strerror(errno)));
throw std::runtime_error("Unable to drop capabilities: " + stringerror());
}

cap_free(caps);


+ 3
- 1
capabilities.hh View File

@@ -21,4 +21,6 @@
*/
#pragma once

void dropCapabilities();
#include <set>

void dropCapabilities(std::set<std::string> capabilitiesToKeep = {});

+ 21
- 0
config.h.in View File

@@ -87,9 +87,21 @@
/* Define if ASAN fiber annotation interface is available. */
#undef HAVE_FIBER_SANITIZER

/* Define to 1 if you have libfstrm */
#undef HAVE_FSTRM

/* Define to 1 if you have the `fstrm_tcp_writer_init' function. */
#undef HAVE_FSTRM_TCP_WRITER_INIT

/* Define to 1 if you have the `getcontext' function. */
#undef HAVE_GETCONTEXT

/* Define to 1 if you have the `getrandom' function. */
#undef HAVE_GETRANDOM

/* Define to 1 if you have the `gmtime_r' function. */
#undef HAVE_GMTIME_R

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

@@ -117,9 +129,15 @@
/* Define to 1 if you have libsodium */
#undef HAVE_LIBSODIUM

/* Define to 1 if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R

/* Define to 1 if you have lua */
#undef HAVE_LUA

/* Define to 1 if you have the `makecontext' function. */
#undef HAVE_MAKECONTEXT

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

@@ -193,6 +211,9 @@
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the `swapcontext' function. */
#undef HAVE_SWAPCONTEXT

/* Systemd available and enabled */
#undef HAVE_SYSTEMD



+ 396
- 92
configure View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for pdns-recursor 4.2.1.
# Generated by GNU Autoconf 2.69 for pdns-recursor 4.3.0-beta2.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='pdns-recursor'
PACKAGE_TARNAME='pdns-recursor'
PACKAGE_VERSION='4.2.1'
PACKAGE_STRING='pdns-recursor 4.2.1'
PACKAGE_VERSION='4.3.0-beta2'
PACKAGE_STRING='pdns-recursor 4.3.0-beta2'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''

@@ -643,12 +643,16 @@ HAVE_MANPAGES_TRUE
HAVE_VIRTUALENV_FALSE
HAVE_VIRTUALENV_TRUE
VIRTUALENV
service_group
service_user
HAVE_SYSTEMD_FALSE
HAVE_SYSTEMD_TRUE
HAVE_SYSTEMD_SYSTEM_CALL_FILTER_FALSE
HAVE_SYSTEMD_SYSTEM_CALL_FILTER_TRUE
HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES_FALSE
HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES_TRUE
HAVE_SYSTEMD_RESTRICT_SUIDSGID_FALSE
HAVE_SYSTEMD_RESTRICT_SUIDSGID_TRUE
HAVE_SYSTEMD_RESTRICT_REALTIME_FALSE
HAVE_SYSTEMD_RESTRICT_REALTIME_TRUE
HAVE_SYSTEMD_RESTRICT_NAMESPACES_FALSE
@@ -681,6 +685,7 @@ HAVE_SYSTEMD_LOCK_PERSONALITY_FALSE
HAVE_SYSTEMD_LOCK_PERSONALITY_TRUE
HAVE_SYSTEMD_DYNAMIC_USER_FALSE
HAVE_SYSTEMD_DYNAMIC_USER_TRUE
SYSTEMCTL
SYSTEMD_LIBS
SYSTEMD_CFLAGS
SYSTEMD_MODULES_LOAD
@@ -695,12 +700,16 @@ SANITIZER_FLAGS
RELRO_LDFLAGS
PIE_LDFLAGS
PIE_CFLAGS
FSTRM_FALSE
FSTRM_TRUE
FSTRM_LIBS
FSTRM_CFLAGS
nodcachedir
NOD_ENABLED_FALSE
NOD_ENABLED_TRUE
BOOST_FILESYSTEM_LIBS
BOOST_FILESYSTEM_LDPATH
BOOST_FILESYSTEM_LDFLAGS
NOD_ENABLED_FALSE
NOD_ENABLED_TRUE
socketdir
CURL
RAGEL
@@ -917,6 +926,7 @@ with_net_snmp
with_socketdir
enable_nod
with_nod_cache_dir
enable_dnstap
enable_hardening
enable_asan
enable_msan
@@ -927,6 +937,8 @@ enable_malloc_trace
enable_valgrind
enable_systemd
with_systemd
with_service_user
with_service_group
'
ac_precious_vars='build_alias
host_alias
@@ -953,6 +965,8 @@ LIBSODIUM_CFLAGS
LIBSODIUM_LIBS
LIBCAP_CFLAGS
LIBCAP_LIBS
FSTRM_CFLAGS
FSTRM_LIBS
SYSTEMD_CFLAGS
SYSTEMD_LIBS'

@@ -1505,7 +1519,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures pdns-recursor 4.2.1 to adapt to many kinds of systems.
\`configure' configures pdns-recursor 4.3.0-beta2 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

@@ -1576,7 +1590,7 @@ fi

if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of pdns-recursor 4.2.1:";;
short | recursive ) echo "Configuration of pdns-recursor 4.3.0-beta2:";;
esac
cat <<\_ACEOF

@@ -1605,7 +1619,8 @@ Optional Features:
[default=no]
--enable-verbose-logging
enable verbose logging [default=no]
--enable-nod enable newly observed domains [default=no]
--enable-nod enable newly observed domains [default=auto]
--enable-dnstap enable dnstap support [default=auto]
--disable-hardening disable compiler security checks [default=no]
--enable-asan enable AddressSanitizer [default=no]
--enable-msan enable MemorySanitizer [default=no]
@@ -1642,6 +1657,14 @@ Optional Packages:
[default=LOCALSTATEDIR/lib/pdns-recursor]
--with-systemd set directory for systemd service files
--with-systemd-modules-load set directory for systemd modules load files
--with-service-user User to use by service when running the service
[default=pdns-recursor]. Only the setuid setting and
User in the systemd unit file are affected, the user
is not created.
--with-service-group Group to use by service when running the service
[default=pdns-recursor]. Only the setgid setting and
Group in the systemd unit file are affected, the
group is not created.

Some influential environment variables:
CC C compiler command
@@ -1675,6 +1698,9 @@ Some influential environment variables:
LIBCAP_CFLAGS
C compiler flags for LIBCAP, overriding pkg-config
LIBCAP_LIBS linker flags for LIBCAP, overriding pkg-config
FSTRM_CFLAGS
C compiler flags for FSTRM, overriding pkg-config
FSTRM_LIBS linker flags for FSTRM, overriding pkg-config
SYSTEMD_CFLAGS
C compiler flags for SYSTEMD, overriding pkg-config
SYSTEMD_LIBS
@@ -1746,7 +1772,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
pdns-recursor configure 4.2.1
pdns-recursor configure 4.3.0-beta2
generated by GNU Autoconf 2.69

Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2339,7 +2365,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by pdns-recursor $as_me 4.2.1, which was
It was created by pdns-recursor $as_me 4.3.0-beta2, which was
generated by GNU Autoconf 2.69. Invocation command line was

$ $0 $@
@@ -2619,6 +2645,8 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi

as_fn_append ac_func_list " localtime_r"
as_fn_append ac_func_list " gmtime_r"
as_fn_append ac_func_list " strcasestr"
as_fn_append ac_func_list " getrandom"
as_fn_append ac_func_list " arc4random"
@@ -3205,7 +3233,7 @@ fi

# Define the identity of the package.
PACKAGE='pdns-recursor'
VERSION='4.2.1'
VERSION='4.3.0-beta2'


cat >>confdefs.h <<_ACEOF
@@ -3531,8 +3559,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac


# Add some default CFLAGS and CXXFLAGS, can be appended to using the environment variables
CFLAGS="-Wall -g -O2 $CFLAGS"
CXXFLAGS="-Wall -g -O2 $CXXFLAGS"
CFLAGS="-Wall -Wextra -Wshadow -Wno-unused-parameter -g -O2 $CFLAGS"
CXXFLAGS="-Wall -Wextra -Wshadow -Wno-unused-parameter -g -O2 $CXXFLAGS"

pdns_configure_args="$ac_configure_args"

@@ -17668,7 +17696,7 @@ fi

# Boost Context was introduced in 1.51 (Aug 2012), but there was an immediate
# API break in 1.52 (Nov 2012), so we only support that, and later.
pdns_context_library="System V ucontexts"
pdns_context_library=""
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19384,13 +19412,34 @@ LDFLAGS=$boost_context_save_LDFLAGS


fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what context library to use for MTasker" >&5
$as_echo_n "checking what context library to use for MTasker... " >&6; }
if test x"$boost_cv_lib_context" = "xyes"; then :

pdns_context_library="Boost Context"

else

for ac_func in getcontext makecontext swapcontext
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
pdns_context_library="System V ucontexts"
fi
done


fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pdns_context_library" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what context library to use for MTasker" >&5
$as_echo_n "checking what context library to use for MTasker... " >&6; }
if test -n "$pdns_context_library"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pdns_context_library" >&5
$as_echo "$pdns_context_library" >&6; }
else
as_fn_error $? "neither boost::context nor System V ucontexts available" "$LINENO" 5
fi


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable unit test building" >&5
@@ -21949,6 +21998,10 @@ done







{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_setaffinity_np" >&5
$as_echo_n "checking for library containing pthread_setaffinity_np... " >&6; }
if ${ac_cv_search_pthread_setaffinity_np+:} false; then :
@@ -22027,33 +22080,11 @@ $as_echo_n "checking whether to enable newly observed domain checking... " >&6;
if test "${enable_nod+set}" = set; then :
enableval=$enable_nod; enable_nod=$enableval
else
enable_nod=no
enable_nod=auto

fi


if test "x$enable_nod" != "xno"; then :

$as_echo "#define NOD_ENABLED 1" >>confdefs.h


fi

if test "x$enable_nod" != "xno"; then
NOD_ENABLED_TRUE=
NOD_ENABLED_FALSE='#'
else
NOD_ENABLED_TRUE='#'
NOD_ENABLED_FALSE=
fi


{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_nod" >&5
$as_echo "$enable_nod" >&6; }


if test -z "$NOD_ENABLED_TRUE"; then :

# Do we have to check for Boost.System? This link-time dependency was
# added as of 1.35.0. If we have a version <1.35, we must not attempt to
# find Boost.System as it didn't exist by then.
@@ -22067,7 +22098,7 @@ ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
if test x"" = "xno"; then :
if test x"no" = "xno"; then :
not_found_header='true'
fi
if test x"$boost_cv_inc_path" = xno; then
@@ -22146,7 +22177,7 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
ac_objext=do_not_rm_me_plz
else
if test x"" != x"no"; then :
if test x"no" != x"no"; then :

as_fn_error $? "cannot compile a test that uses Boost system" "$LINENO" 5

@@ -22349,7 +22380,7 @@ $as_echo "#define HAVE_BOOST_SYSTEM 1" >>confdefs.h
(no) $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

if test x"" != "xno"; then :
if test x"no" != "xno"; then :

as_fn_error $? "cannot find flags to link with the Boost system library (libboost-system)" "$LINENO" 5

@@ -22380,7 +22411,7 @@ ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
if test x"" = "xno"; then :
if test x"no" = "xno"; then :
not_found_header='true'
fi
if test x"$boost_cv_inc_path" = xno; then
@@ -22459,7 +22490,7 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
ac_objext=do_not_rm_me_plz
else
if test x"" != x"no"; then :
if test x"no" != x"no"; then :

as_fn_error $? "cannot compile a test that uses Boost filesystem" "$LINENO" 5

@@ -22662,7 +22693,7 @@ $as_echo "#define HAVE_BOOST_FILESYSTEM 1" >>confdefs.h
(no) $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

if test x"" != "xno"; then :
if test x"no" != "xno"; then :

as_fn_error $? "cannot find flags to link with the Boost filesystem library (libboost-filesystem)" "$LINENO" 5

@@ -22684,11 +22715,43 @@ LIBS=$boost_filesystem_save_LIBS
LDFLAGS=$boost_filesystem_save_LDFLAGS


if test -z "$BOOST_FILESYSTEM_LIBS"; then :
as_fn_error $? "Boost filesystem library is not installed" "$LINENO" 5

if test "x$enable_nod" = "xyes"; then :

if test "x$BOOST_FILESYSTEM_LIBS" = "x"; then :
as_fn_error $? "Boost filesystem library required by NOD is not installed" "$LINENO" 5
fi


fi
if test "x$enable_nod" = "xauto"; then :

if test "x$BOOST_FILESYSTEM_LIBS" != "x"; then :
enable_nod="yes"
else
enable_nod="no"
fi

fi

if test "x$enable_nod" = "xyes"; then
NOD_ENABLED_TRUE=
NOD_ENABLED_FALSE='#'
else
NOD_ENABLED_TRUE='#'
NOD_ENABLED_FALSE=
fi

if test "x$enable_nod" = "xyes"; then :

$as_echo "#define NOD_ENABLED 1" >>confdefs.h

fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_nod" >&5
$as_echo "$enable_nod" >&6; }



nodcachedir='${localstatedir}/lib/pdns-recursor'

@@ -22699,6 +22762,139 @@ if test "${with_nod_cache_dir+set}" = set; then :
fi



{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we will have dnstap" >&5
$as_echo_n "checking whether we will have dnstap... " >&6; }
# Check whether --enable-dnstap was given.
if test "${enable_dnstap+set}" = set; then :
enableval=$enable_dnstap; enable_dnstap=$enableval
else
enable_dnstap=auto
fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dnstap" >&5
$as_echo "$enable_dnstap" >&6; }

if test "x$enable_dnstap" != "xno"; then :

if test "x$enable_dnstap" = "xyes" -o "x$enable_dnstap" = "xauto"; then :


pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FSTRM" >&5
$as_echo_n "checking for FSTRM... " >&6; }

if test -n "$FSTRM_CFLAGS"; then
pkg_cv_FSTRM_CFLAGS="$FSTRM_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libfstrm\""; } >&5
($PKG_CONFIG --exists --print-errors "libfstrm") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_FSTRM_CFLAGS=`$PKG_CONFIG --cflags "libfstrm" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$FSTRM_LIBS"; then
pkg_cv_FSTRM_LIBS="$FSTRM_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libfstrm\""; } >&5
($PKG_CONFIG --exists --print-errors "libfstrm") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_FSTRM_LIBS=`$PKG_CONFIG --libs "libfstrm" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi



if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }

if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
FSTRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libfstrm" 2>&1`
else
FSTRM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libfstrm" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$FSTRM_PKG_ERRORS" >&5

:
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
:
else
FSTRM_CFLAGS=$pkg_cv_FSTRM_CFLAGS
FSTRM_LIBS=$pkg_cv_FSTRM_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }


$as_echo "#define HAVE_FSTRM 1" >>confdefs.h

save_CFLAGS=$CFLAGS
save_LIBS=$LIBS
CFLAGS="$FSTRM_CFLAGS $CFLAGS"
LIBS="$FSTRM_LIBS $LIBS"
for ac_func in fstrm_tcp_writer_init
do :
ac_fn_cxx_check_func "$LINENO" "fstrm_tcp_writer_init" "ac_cv_func_fstrm_tcp_writer_init"
if test "x$ac_cv_func_fstrm_tcp_writer_init" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_FSTRM_TCP_WRITER_INIT 1
_ACEOF

fi
done

CFLAGS=$save_CFLAGS
LIBS=$save_LIBS

fi

fi

fi

if test "x$FSTRM_LIBS" != "x"; then
FSTRM_TRUE=
FSTRM_FALSE='#'
else
FSTRM_TRUE='#'
FSTRM_FALSE=
fi

if test "x$enable_dnstap" = "xyes"; then :

if test x"$FSTRM_LIBS" = "x"; then :

as_fn_error $? "dnstap requested but libfstrm was not found" "$LINENO" 5

fi

fi


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we will enable compiler security checks" >&5
$as_echo_n "checking whether we will enable compiler security checks... " >&6; }
# Check whether --enable-hardening was given.
@@ -23799,48 +23995,97 @@ fi



if test x"$systemd" = "xy"; then
_systemd_version=`systemctl --version|head -1 |cut -d" " -f 2`
if test $_systemd_version -ge 183; then
systemd_private_tmp=y
fi
if test $_systemd_version -ge 209; then
systemd_system_call_architectures=y
systemd_private_devices=y
fi
if test $_systemd_version -ge 211; then
systemd_restrict_address_families=y
fi
if test $_systemd_version -ge 214; then
systemd_protect_system=y
systemd_protect_home=y
fi
if test $_systemd_version -ge 231; then
systemd_restrict_realtime=y
systemd_memory_deny_write_execute=y
fi
if test $_systemd_version -ge 232; then
systemd_protect_control_groups=y
systemd_protect_kernel_modules=y
systemd_protect_kernel_tunables=y
systemd_remove_ipc=y
systemd_dynamic_user=y
systemd_private_users=y
systemd_protect_system_strict=y
fi
if test $_systemd_version -ge 233; then
systemd_restrict_namespaces=y
fi
if test $_systemd_version -ge 235; then
systemd_lock_personality=y
# while SystemCallFilter is technically available starting with 187,
# we use the pre-defined call filter sets that have been introduced later.
# Initial support for these landed in 231
# @filesystem @reboot @swap in 233
# @aio, @sync, @chown, @setuid, @memlock, @signal and @timer in 235
systemd_system_call_filter=y
fi
fi