Browse Source

New upstream version 4.1.0~rc3

tags/upstream/4.3.0
Christian Hofstaedtler 3 years ago
parent
commit
d60354bec4
100 changed files with 12463 additions and 2473 deletions
  1. +1
    -1
      .version
  2. +13
    -5
      Makefile.am
  3. +93
    -79
      Makefile.in
  4. +3
    -0
      README
  5. +0
    -37
      aclocal.m4
  6. +5
    -5
      arguments.cc
  7. +43
    -66
      botansigners.cc
  8. +15
    -2
      config.h.in
  9. +189
    -134
      configure
  10. +4
    -0
      configure.ac
  11. +5
    -0
      contrib/dns64.lua
  12. +4
    -5
      devpollmplexer.cc
  13. +10
    -0
      dnsmessage.proto
  14. +21
    -0
      dnsname.cc
  15. +1
    -0
      dnsname.hh
  16. +0
    -8
      dnspacket.hh
  17. +4
    -4
      dnsparser.cc
  18. +16
    -5
      dnsrecords.cc
  19. +31
    -1
      dnssecinfra.cc
  20. +7
    -1
      dnssecinfra.hh
  21. +4
    -1
      dnsseckeeper.hh
  22. +83
    -20
      effective_tld_names.dat
  23. +4
    -5
      epollmplexer.cc
  24. +2
    -2
      ext/Makefile.in
  25. +2
    -2
      ext/json11/Makefile.in
  26. +2
    -2
      ext/yahttp/Makefile.in
  27. +2
    -2
      ext/yahttp/yahttp/Makefile.in
  28. +2
    -0
      ext/yahttp/yahttp/reqresp.hpp
  29. +1
    -0
      ext/yahttp/yahttp/router.hpp
  30. +190
    -14
      filterpo.cc
  31. +51
    -6
      filterpo.hh
  32. +1
    -1
      gettime.cc
  33. +145
    -101
      html/index.html
  34. +4840
    -0
      html/js/handlebars-v4.0.11.js
  35. +1
    -2
      html/lines.css
  36. +185
    -191
      html/local.js
  37. +82
    -0
      html/styling.css
  38. +4
    -4
      iputils.cc
  39. +76
    -4
      iputils.hh
  40. +5
    -7
      kqueuemplexer.cc
  41. +22
    -7
      lock.hh
  42. +9
    -7
      logger.cc
  43. +5
    -0
      logger.hh
  44. +15
    -3
      lua-recursor4.cc
  45. +12
    -8
      lua-recursor4.hh
  46. +2
    -2
      m4/ax_arg_default_enable_disable.m4
  47. +2
    -0
      m4/boost.m4
  48. +20
    -16
      m4/pdns_check_libsodium.m4
  49. +1
    -1
      m4/pdns_check_network_libs.m4
  50. +2
    -2
      m4/pdns_check_os.m4
  51. +11
    -12
      m4/pdns_enable_botan.m4
  52. +9
    -0
      m4/pdns_with_net_snmp.m4
  53. +2
    -2
      m4/systemd.m4
  54. +6
    -1
      misc.cc
  55. +2
    -1
      misc.hh
  56. +4
    -5
      mplexer.hh
  57. +2
    -0
      mtasker.cc
  58. +7
    -5
      mtasker_fcontext.cc
  59. +17
    -2
      negcache.cc
  60. +3
    -2
      negcache.hh
  61. +1
    -1
      pdns-recursor.service.in
  62. +1
    -1
      pdns_recursor.1
  63. +163
    -43
      pdns_recursor.cc
  64. +7
    -8
      portsmplexer.cc
  65. +39
    -0
      protobuf.cc
  66. +3
    -0
      protobuf.hh
  67. +67
    -1
      pubsuffix.cc
  68. +4
    -0
      rec-carbon.cc
  69. +13
    -6
      rec-lua-conf.cc
  70. +31
    -0
      rec-protobuf.cc
  71. +2
    -1
      rec-protobuf.hh
  72. +107
    -16
      rec_channel_rec.cc
  73. +18
    -2
      rec_control.1
  74. +9
    -7
      recursor_cache.cc
  75. +4
    -3
      recursor_cache.hh
  76. +6
    -2
      reczones.cc
  77. +2
    -5
      resolver.cc
  78. +2
    -2
      root-addresses.hh
  79. +5
    -4
      rpzloader.cc
  80. +2
    -0
      rpzloader.hh
  81. +18
    -9
      secpoll-recursor.cc
  82. +8
    -8
      selectmplexer.cc
  83. +109
    -21
      snmp-agent.cc
  84. +6
    -2
      snmp-agent.hh
  85. +11
    -18
      sortlist.cc
  86. +0
    -1
      sortlist.hh
  87. +1
    -1
      sstuff.hh
  88. +564
    -238
      syncres.cc
  89. +52
    -39
      syncres.hh
  90. +27
    -5
      test-dnsname_cc.cc
  91. +60
    -0
      test-mtasker.cc
  92. +21
    -0
      test-negcache_cc.cc
  93. +44
    -0
      test-nmtree.cc
  94. +236
    -1
      test-recursorcache_cc.cc
  95. +280
    -0
      test-signers.cc
  96. +3741
    -1003
      test-syncres_cc.cc
  97. +1
    -152
      validate-recursor.cc
  98. +1
    -4
      validate-recursor.hh
  99. +494
    -75
      validate.cc
  100. +3
    -1
      validate.hh

+ 1
- 1
.version View File

@@ -1 +1 @@
4.1.0-alpha1
4.1.0-rc3

+ 13
- 5
Makefile.am View File

@@ -1,6 +1,6 @@
JSON11_LIBS = $(top_srcdir)/ext/json11/libjson11.la

AM_CPPFLAGS = $(LUA_CFLAGS) $(YAHTTP_CFLAGS) $(BOOST_CPPFLAGS) $(BOTAN110_CFLAGS) $(NET_SNMP_CFLAGS) $(SANITIZER_FLAGS) -O3 -Wall -pthread -DSYSCONFDIR=\"${sysconfdir}\" $(SYSTEMD_CFLAGS)
AM_CPPFLAGS = $(LUA_CFLAGS) $(YAHTTP_CFLAGS) $(BOOST_CPPFLAGS) $(BOTAN_CFLAGS) $(LIBSODIUM_CFLAGS) $(NET_SNMP_CFLAGS) $(SANITIZER_FLAGS) -O3 -Wall -pthread -DSYSCONFDIR=\"${sysconfdir}\" $(SYSTEMD_CFLAGS)

AM_CPPFLAGS += \
-I$(top_srcdir)/ext/json11 \
@@ -38,7 +38,7 @@ endif
EXTRA_DIST = \
NOTICE \
.version \
botan110signers.cc \
botansigners.cc \
build-aux/gen-version \
contrib/* \
devpollmplexer.cc \
@@ -206,6 +206,7 @@ testrunner_SOURCES = \
ixfr.cc ixfr.hh \
logger.cc logger.hh \
misc.cc misc.hh \
mtasker_context.cc \
negcache.hh negcache.cc \
namespaces.hh \
nsecrecords.cc \
@@ -237,11 +238,13 @@ testrunner_SOURCES = \
test-iputils_hh.cc \
test-ixfr_cc.cc \
test-misc_hh.cc \
test-mtasker.cc \
test-nmtree.cc \
test-negcache_cc.cc \
test-rcpgenerator_cc.cc \
test-recpacketcache_cc.cc \
test-recursorcache_cc.cc \
test-signers.cc \
test-syncres_cc.cc \
test-tsig.cc \
testrunner.cc \
@@ -253,18 +256,23 @@ testrunner_SOURCES = \

testrunner_LDFLAGS = \
$(AM_LDFLAGS) \
$(BOOST_CONTEXT_LDFLAGS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
$(LIBCRYPTO_LDFLAGS)

testrunner_LDADD = \
$(BOOST_CONTEXT_LIBS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
$(LIBCRYPTO_LIBS) \
$(RT_LIBS)

if BOTAN110
if BOTAN
pdns_recursor_SOURCES += \
botan110signers.cc
pdns_recursor_LDADD += $(BOTAN110_LIBS)
botansigners.cc
pdns_recursor_LDADD += $(BOTAN_LIBS)
testrunner_SOURCES += \
botansigners.cc
testrunner_LDADD += $(BOTAN_LIBS)
endif

if LIBSODIUM


+ 93
- 79
Makefile.in View File

@@ -87,37 +87,41 @@ TESTS = test_libcrypto $(am__EXEEXT_1)
@UNIT_TESTS_TRUE@am__append_2 = testrunner
@HAVE_LUA_HPP_FALSE@am__append_3 = lua.hpp
@HAVE_LUA_HPP_FALSE@am__append_4 = lua.hpp
@BOTAN110_TRUE@am__append_5 = \
@BOTAN110_TRUE@ botan110signers.cc
@BOTAN_TRUE@am__append_5 = \
@BOTAN_TRUE@ botansigners.cc

@BOTAN110_TRUE@am__append_6 = $(BOTAN110_LIBS)
@LIBSODIUM_TRUE@am__append_7 = \
@LIBSODIUM_TRUE@ sodiumsigners.cc
@BOTAN_TRUE@am__append_6 = $(BOTAN_LIBS)
@BOTAN_TRUE@am__append_7 = \
@BOTAN_TRUE@ botansigners.cc

@LIBSODIUM_TRUE@am__append_8 = $(LIBSODIUM_LIBS)
@BOTAN_TRUE@am__append_8 = $(BOTAN_LIBS)
@LIBSODIUM_TRUE@am__append_9 = \
@LIBSODIUM_TRUE@ sodiumsigners.cc

@LIBSODIUM_TRUE@am__append_10 = $(LIBSODIUM_LIBS)
@LIBDECAF_TRUE@am__append_11 = \
@LIBSODIUM_TRUE@am__append_11 = \
@LIBSODIUM_TRUE@ sodiumsigners.cc

@LIBSODIUM_TRUE@am__append_12 = $(LIBSODIUM_LIBS)
@LIBDECAF_TRUE@am__append_13 = \
@LIBDECAF_TRUE@ decafsigners.cc

@LIBDECAF_TRUE@am__append_12 = $(LIBDECAF_LIBS)
@MALLOC_TRACE_TRUE@am__append_13 = \
@LIBDECAF_TRUE@am__append_14 = $(LIBDECAF_LIBS)
@MALLOC_TRACE_TRUE@am__append_15 = \
@MALLOC_TRACE_TRUE@ malloctrace.cc \
@MALLOC_TRACE_TRUE@ malloctrace.hh

@MALLOC_TRACE_TRUE@am__append_14 = -rdynamic
@LUA_TRUE@am__append_15 = $(LUA_LIBS)
@HAVE_FREEBSD_TRUE@am__append_16 = kqueuemplexer.cc
@HAVE_LINUX_TRUE@am__append_17 = epollmplexer.cc
@HAVE_SOLARIS_TRUE@am__append_18 = \
@MALLOC_TRACE_TRUE@am__append_16 = -rdynamic
@LUA_TRUE@am__append_17 = $(LUA_LIBS)
@HAVE_FREEBSD_TRUE@am__append_18 = kqueuemplexer.cc
@HAVE_LINUX_TRUE@am__append_19 = epollmplexer.cc
@HAVE_SOLARIS_TRUE@am__append_20 = \
@HAVE_SOLARIS_TRUE@ devpollmplexer.cc \
@HAVE_SOLARIS_TRUE@ portsmplexer.cc

@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_19 = dnsmessage.pb.cc
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_20 = $(PROTOBUF_LIBS)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_21 = $(PROTOBUF_LIBS)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_21 = dnsmessage.pb.cc
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_22 = $(PROTOBUF_LIBS)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@am__append_23 = $(PROTOBUF_LIBS)
DIST_COMMON = $(srcdir)/lua_hpp.mk $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/config.h.in \
@@ -212,10 +216,10 @@ am__pdns_recursor_SOURCES_DIST = arguments.cc ascii.hh base32.cc \
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 zoneparser-tng.cc \
zoneparser-tng.hh botan110signers.cc sodiumsigners.cc \
zoneparser-tng.hh botansigners.cc sodiumsigners.cc \
decafsigners.cc malloctrace.cc malloctrace.hh kqueuemplexer.cc \
epollmplexer.cc devpollmplexer.cc portsmplexer.cc
@BOTAN110_TRUE@am__objects_1 = botan110signers.$(OBJEXT)
@BOTAN_TRUE@am__objects_1 = botansigners.$(OBJEXT)
@LIBSODIUM_TRUE@am__objects_2 = sodiumsigners.$(OBJEXT)
@LIBDECAF_TRUE@am__objects_3 = decafsigners.$(OBJEXT)
@MALLOC_TRACE_TRUE@am__objects_4 = malloctrace.$(OBJEXT)
@@ -255,7 +259,7 @@ am_pdns_recursor_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
pdns_recursor_OBJECTS = $(am_pdns_recursor_OBJECTS) \
$(nodist_pdns_recursor_OBJECTS)
am__DEPENDENCIES_1 =
@BOTAN110_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
@BOTAN_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
@LIBSODIUM_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
@LIBDECAF_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
@LUA_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
@@ -289,8 +293,8 @@ am__testrunner_SOURCES_DIST = arguments.cc base32.cc base64.cc \
ednsoptions.cc ednsoptions.hh ednssubnet.cc ednssubnet.hh \
filterpo.cc filterpo.hh gettime.cc gettime.hh gss_context.cc \
gss_context.hh iputils.cc iputils.hh ixfr.cc ixfr.hh logger.cc \
logger.hh misc.cc misc.hh negcache.hh negcache.cc \
namespaces.hh nsecrecords.cc pdnsexception.hh \
logger.hh misc.cc misc.hh mtasker_context.cc negcache.hh \
negcache.cc namespaces.hh nsecrecords.cc pdnsexception.hh \
opensslsigners.cc opensslsigners.hh protobuf.cc protobuf.hh \
qtype.cc qtype.hh randomhelper.cc rcpgenerator.cc \
rec-protobuf.cc rec-protobuf.hh recpacketcache.cc \
@@ -301,12 +305,13 @@ am__testrunner_SOURCES_DIST = arguments.cc base32.cc base64.cc \
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-iputils_hh.cc test-ixfr_cc.cc \
test-misc_hh.cc test-nmtree.cc test-negcache_cc.cc \
test-rcpgenerator_cc.cc test-recpacketcache_cc.cc \
test-recursorcache_cc.cc test-syncres_cc.cc test-tsig.cc \
testrunner.cc tsigverifier.cc tsigverifier.hh unix_utility.cc \
validate.cc validate.hh validate-recursor.cc \
validate-recursor.hh zoneparser-tng.cc zoneparser-tng.hh \
test-misc_hh.cc test-mtasker.cc test-nmtree.cc \
test-negcache_cc.cc test-rcpgenerator_cc.cc \
test-recpacketcache_cc.cc test-recursorcache_cc.cc \
test-signers.cc test-syncres_cc.cc test-tsig.cc testrunner.cc \
tsigverifier.cc tsigverifier.hh unix_utility.cc validate.cc \
validate.hh validate-recursor.cc validate-recursor.hh \
zoneparser-tng.cc zoneparser-tng.hh botansigners.cc \
sodiumsigners.cc
am_testrunner_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
base64.$(OBJEXT) dns.$(OBJEXT) dns_random.$(OBJEXT) \
@@ -315,32 +320,35 @@ am_testrunner_OBJECTS = arguments.$(OBJEXT) base32.$(OBJEXT) \
ednscookies.$(OBJEXT) ednsoptions.$(OBJEXT) \
ednssubnet.$(OBJEXT) filterpo.$(OBJEXT) gettime.$(OBJEXT) \
gss_context.$(OBJEXT) iputils.$(OBJEXT) ixfr.$(OBJEXT) \
logger.$(OBJEXT) misc.$(OBJEXT) negcache.$(OBJEXT) \
nsecrecords.$(OBJEXT) opensslsigners.$(OBJEXT) \
protobuf.$(OBJEXT) qtype.$(OBJEXT) randomhelper.$(OBJEXT) \
rcpgenerator.$(OBJEXT) rec-protobuf.$(OBJEXT) \
recpacketcache.$(OBJEXT) recursor_cache.$(OBJEXT) \
responsestats.$(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-iputils_hh.$(OBJEXT) test-ixfr_cc.$(OBJEXT) \
test-misc_hh.$(OBJEXT) test-nmtree.$(OBJEXT) \
logger.$(OBJEXT) misc.$(OBJEXT) mtasker_context.$(OBJEXT) \
negcache.$(OBJEXT) nsecrecords.$(OBJEXT) \
opensslsigners.$(OBJEXT) protobuf.$(OBJEXT) qtype.$(OBJEXT) \
randomhelper.$(OBJEXT) rcpgenerator.$(OBJEXT) \
rec-protobuf.$(OBJEXT) recpacketcache.$(OBJEXT) \
recursor_cache.$(OBJEXT) responsestats.$(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-iputils_hh.$(OBJEXT) \
test-ixfr_cc.$(OBJEXT) test-misc_hh.$(OBJEXT) \
test-mtasker.$(OBJEXT) test-nmtree.$(OBJEXT) \
test-negcache_cc.$(OBJEXT) test-rcpgenerator_cc.$(OBJEXT) \
test-recpacketcache_cc.$(OBJEXT) \
test-recursorcache_cc.$(OBJEXT) test-syncres_cc.$(OBJEXT) \
test-tsig.$(OBJEXT) testrunner.$(OBJEXT) \
tsigverifier.$(OBJEXT) unix_utility.$(OBJEXT) \
validate.$(OBJEXT) validate-recursor.$(OBJEXT) \
zoneparser-tng.$(OBJEXT) $(am__objects_2)
test-recursorcache_cc.$(OBJEXT) test-signers.$(OBJEXT) \
test-syncres_cc.$(OBJEXT) test-tsig.$(OBJEXT) \
testrunner.$(OBJEXT) tsigverifier.$(OBJEXT) \
unix_utility.$(OBJEXT) validate.$(OBJEXT) \
validate-recursor.$(OBJEXT) zoneparser-tng.$(OBJEXT) \
$(am__objects_1) $(am__objects_2)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_testrunner_OBJECTS = \
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@ dnsmessage.pb.$(OBJEXT)
testrunner_OBJECTS = $(am_testrunner_OBJECTS) \
$(nodist_testrunner_OBJECTS)
testrunner_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
$(am__DEPENDENCIES_6)
testrunner_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
@@ -698,9 +706,10 @@ distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_CPPFLAGS = $(LUA_CFLAGS) $(YAHTTP_CFLAGS) $(BOOST_CPPFLAGS) \
$(BOTAN110_CFLAGS) $(NET_SNMP_CFLAGS) $(SANITIZER_FLAGS) -O3 \
-Wall -pthread -DSYSCONFDIR=\"${sysconfdir}\" \
$(SYSTEMD_CFLAGS) -I$(top_srcdir)/ext/json11 \
$(BOTAN_CFLAGS) $(LIBSODIUM_CFLAGS) $(NET_SNMP_CFLAGS) \
$(SANITIZER_FLAGS) -O3 -Wall -pthread \
-DSYSCONFDIR=\"${sysconfdir}\" $(SYSTEMD_CFLAGS) \
-I$(top_srcdir)/ext/json11 \
-I$(top_srcdir)/ext/rapidjson/include $(YAHTTP_CFLAGS) \
$(LIBCRYPTO_INCLUDES) $(am__append_1)
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -724,8 +733,8 @@ BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS = @BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS@
BOOST_UNIT_TEST_FRAMEWORK_LDPATH = @BOOST_UNIT_TEST_FRAMEWORK_LDPATH@
BOOST_UNIT_TEST_FRAMEWORK_LIBS = @BOOST_UNIT_TEST_FRAMEWORK_LIBS@
BOTAN110_CFLAGS = @BOTAN110_CFLAGS@
BOTAN110_LIBS = @BOTAN110_LIBS@
BOTAN_CFLAGS = @BOTAN_CFLAGS@
BOTAN_LIBS = @BOTAN_LIBS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -887,14 +896,14 @@ AM_LDFLAGS = \

ACLOCAL_AMFLAGS = -I m4
BUILT_SOURCES = htmlfiles.h dnslabeltext.cc $(am__append_3) \
$(am__append_19)
$(am__append_21)
CLEANFILES = htmlfiles.h dnsmessage.pb.cc dnsmessage.pb.h \
$(am__append_4)
SUBDIRS = ext
EXTRA_DIST = \
NOTICE \
.version \
botan110signers.cc \
botansigners.cc \
build-aux/gen-version \
contrib/* \
devpollmplexer.cc \
@@ -950,17 +959,17 @@ 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 zoneparser-tng.cc \
zoneparser-tng.hh $(am__append_5) $(am__append_7) \
$(am__append_11) $(am__append_13) $(am__append_16) \
$(am__append_17) $(am__append_18)
zoneparser-tng.hh $(am__append_5) $(am__append_9) \
$(am__append_13) $(am__append_15) $(am__append_18) \
$(am__append_19) $(am__append_20)
@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
pdns_recursor_LDADD = $(YAHTTP_LIBS) $(JSON11_LIBS) $(LIBCRYPTO_LIBS) \
$(BOOST_CONTEXT_LIBS) $(NET_SNMP_LIBS) $(SYSTEMD_LIBS) \
$(RT_LIBS) $(am__append_6) $(am__append_8) $(am__append_12) \
$(am__append_15) $(am__append_20)
$(RT_LIBS) $(am__append_6) $(am__append_10) $(am__append_14) \
$(am__append_17) $(am__append_22)
pdns_recursor_LDFLAGS = $(AM_LDFLAGS) $(LIBCRYPTO_LDFLAGS) \
$(BOOST_CONTEXT_LDFLAGS) $(am__append_14)
$(BOOST_CONTEXT_LDFLAGS) $(am__append_16)
testrunner_SOURCES = arguments.cc base32.cc base64.cc base64.hh dns.cc \
dns.hh dns_random.cc dns_random.hh dnslabeltext.cc dnsname.cc \
dnsname.hh dnsparser.hh dnsparser.cc dnsrecords.cc \
@@ -969,31 +978,34 @@ testrunner_SOURCES = arguments.cc base32.cc base64.cc base64.hh dns.cc \
ednssubnet.cc ednssubnet.hh filterpo.cc filterpo.hh gettime.cc \
gettime.hh gss_context.cc gss_context.hh iputils.cc iputils.hh \
ixfr.cc ixfr.hh logger.cc logger.hh misc.cc misc.hh \
negcache.hh negcache.cc namespaces.hh nsecrecords.cc \
pdnsexception.hh opensslsigners.cc opensslsigners.hh \
protobuf.cc protobuf.hh qtype.cc qtype.hh randomhelper.cc \
rcpgenerator.cc rec-protobuf.cc rec-protobuf.hh \
recpacketcache.cc recpacketcache.hh recursor_cache.cc \
recursor_cache.hh responsestats.cc root-dnssec.hh \
sillyrecords.cc sholder.hh sstuff.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-iputils_hh.cc test-ixfr_cc.cc \
test-misc_hh.cc test-nmtree.cc test-negcache_cc.cc \
mtasker_context.cc negcache.hh negcache.cc namespaces.hh \
nsecrecords.cc pdnsexception.hh opensslsigners.cc \
opensslsigners.hh protobuf.cc protobuf.hh qtype.cc qtype.hh \
randomhelper.cc rcpgenerator.cc rec-protobuf.cc \
rec-protobuf.hh recpacketcache.cc recpacketcache.hh \
recursor_cache.cc recursor_cache.hh responsestats.cc \
root-dnssec.hh sillyrecords.cc sholder.hh sstuff.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-iputils_hh.cc test-ixfr_cc.cc test-misc_hh.cc \
test-mtasker.cc test-nmtree.cc test-negcache_cc.cc \
test-rcpgenerator_cc.cc test-recpacketcache_cc.cc \
test-recursorcache_cc.cc test-syncres_cc.cc test-tsig.cc \
testrunner.cc tsigverifier.cc tsigverifier.hh unix_utility.cc \
validate.cc validate.hh validate-recursor.cc \
test-recursorcache_cc.cc test-signers.cc test-syncres_cc.cc \
test-tsig.cc testrunner.cc tsigverifier.cc tsigverifier.hh \
unix_utility.cc validate.cc validate.hh validate-recursor.cc \
validate-recursor.hh zoneparser-tng.cc zoneparser-tng.hh \
$(am__append_9)
$(am__append_7) $(am__append_11)
testrunner_LDFLAGS = \
$(AM_LDFLAGS) \
$(BOOST_CONTEXT_LDFLAGS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
$(LIBCRYPTO_LDFLAGS)

testrunner_LDADD = $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) $(LIBCRYPTO_LIBS) \
$(RT_LIBS) $(am__append_10) $(am__append_21)
testrunner_LDADD = $(BOOST_CONTEXT_LIBS) \
$(BOOST_UNIT_TEST_FRAMEWORK_LIBS) $(LIBCRYPTO_LIBS) $(RT_LIBS) \
$(am__append_8) $(am__append_12) $(am__append_23)
@HAVE_PROTOBUF_TRUE@@HAVE_PROTOC_TRUE@nodist_testrunner_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h
rec_control_SOURCES = \
arguments.cc arguments.hh \
@@ -1203,7 +1215,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arguments.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/botan110signers.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/botansigners.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decafsigners.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devpollmplexer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns.Po@am__quote@
@@ -1275,11 +1287,13 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iputils_hh.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ixfr_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-misc_hh.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mtasker.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-negcache_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nmtree.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rcpgenerator_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-recpacketcache_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-recursorcache_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signers.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-syncres_cc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-tsig.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrunner.Po@am__quote@


+ 3
- 0
README View File

@@ -43,11 +43,14 @@ To compile from a git checkout, install pandoc, ragel, automake and autoconf.
Then run

```
$ cd pdns/pdns/recursordist/
$ ./bootstrap
$ ./configure
$ make
```

On macOS, you may need to `brew install openssl` and set `PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig` during configure.

Lua scripting
-------------
To benefit from Lua scripting, as described on https://doc.powerdns.com/md/recursor/scripting/


+ 0
- 37
aclocal.m4 View File

@@ -323,43 +323,6 @@ AC_DEFUN([AM_AUX_DIR_EXPAND],
am_aux_dir=`cd "$ac_aux_dir" && pwd`
])

# AM_COND_IF -*- Autoconf -*-

# Copyright (C) 2008-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# _AM_COND_IF
# _AM_COND_ELSE
# _AM_COND_ENDIF
# --------------
# These macros are only used for tracing.
m4_define([_AM_COND_IF])
m4_define([_AM_COND_ELSE])
m4_define([_AM_COND_ENDIF])

# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
# ---------------------------------------
# If the shell condition COND is true, execute IF-TRUE, otherwise execute
# IF-FALSE. Allow automake to learn about conditional instantiating macros
# (the AC_CONFIG_FOOS).
AC_DEFUN([AM_COND_IF],
[m4_ifndef([_AM_COND_VALUE_$1],
[m4_fatal([$0: no such condition "$1"])])dnl
_AM_COND_IF([$1])dnl
if test -z "$$1_TRUE"; then :
m4_n([$2])[]dnl
m4_ifval([$3],
[_AM_COND_ELSE([$1])dnl
else
$3
])dnl
_AM_COND_ENDIF([$1])dnl
fi[]dnl
])

# AM_CONDITIONAL -*- Autoconf -*-

# Copyright (C) 1997-2013 Free Software Foundation, Inc.


+ 5
- 5
arguments.cc View File

@@ -120,7 +120,7 @@ string ArgvMap::helpstring(string prefix)
i!=helpmap.end();
i++)
{
if(!prefix.empty() && i->first.find(prefix)) // only print items with prefix
if(!prefix.empty() && i->first.find(prefix) != 0) // only print items with prefix
continue;

help+=" --";
@@ -304,18 +304,18 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax)
string::size_type pos;
bool incremental = false;

if(!arg.find("--") && (pos=arg.find("+="))!=string::npos) // this is a --port+=25 case
if(arg.find("--") == 0 && (pos=arg.find("+="))!=string::npos) // this is a --port+=25 case
{
var=arg.substr(2,pos-2);
val=arg.substr(pos+2);
incremental = true;
}
else if(!arg.find("--") && (pos=arg.find("="))!=string::npos) // this is a --port=25 case
else if(arg.find("--") == 0 && (pos=arg.find("="))!=string::npos) // this is a --port=25 case
{
var=arg.substr(2,pos-2);
val=arg.substr(pos+1);
}
else if(!arg.find("--") && (arg.find("=")==string::npos)) // this is a --daemon case
else if(arg.find("--") == 0 && (arg.find("=")==string::npos)) // this is a --daemon case
{
var=arg.substr(2);
val="";
@@ -376,7 +376,7 @@ void ArgvMap::preParse(int &argc, char **argv, const string &arg)
{
for(int n=1;n<argc;n++) {
string varval=argv[n];
if(!varval.find("--"+arg))
if(varval.find("--"+arg) == 0)
parseOne(argv[n]);
}
}


botan110signers.cc → botansigners.cc View File

@@ -22,9 +22,10 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <botan/botan.h>
#include <botan/auto_rng.h>
#include <botan/gost_3410.h>
#include <botan/gost_3411.h>
#include <botan/pubkey.h>
#include "dnssecinfra.hh"

using namespace Botan;
@@ -43,15 +44,14 @@ class GOSTDNSCryptoKeyEngine : public DNSCryptoKeyEngine
{
public:
explicit GOSTDNSCryptoKeyEngine(unsigned int algorithm) : DNSCryptoKeyEngine(algorithm) {}
// XXX FIXME NEEDS COPY CONSTRUCTOR SO WE DON'T SHARE KEYS
~GOSTDNSCryptoKeyEngine(){}
void create(unsigned int bits) override;
string getName() const override { return "Botan 1.10 GOST"; }
string getName() const override { return "Botan 2 GOST"; }
storvector_t convertToISCVector() const override;
std::string getPubKeyHash() const override;
std::string sign(const std::string& hash) const override;
std::string hash(const std::string& hash) const override;
bool verify(const std::string& hash, const std::string& signature) const override;
std::string sign(const std::string& msg) const override;
std::string hash(const std::string& msg) const override;
bool verify(const std::string& msg, const std::string& signature) const override;
std::string getPublicKeyString() const override;
int getBits() const override;
void fromISCMap(DNSKEYRecordContent& drc, std::map<std::string, std::string>& content) override;
@@ -65,6 +65,11 @@ public:
}

private:
static EC_Group getParams()
{
return EC_Group("gost_256A");
}

shared_ptr<GOST_3410_PrivateKey> d_key;
shared_ptr<GOST_3410_PublicKey> d_pubkey;
};
@@ -80,8 +85,7 @@ private:
void GOSTDNSCryptoKeyEngine::create(unsigned int bits)
{
AutoSeeded_RNG rng;
EC_Domain_Params params("1.2.643.2.2.35.1");
d_key = shared_ptr<GOST_3410_PrivateKey>(new GOST_3410_PrivateKey(rng, params));
d_key = std::make_shared<GOST_3410_PrivateKey>(rng, getParams());
}

int GOSTDNSCryptoKeyEngine::getBits() const
@@ -98,17 +102,17 @@ int GOSTDNSCryptoKeyEngine::getBits() const

DNSCryptoKeyEngine::storvector_t GOSTDNSCryptoKeyEngine::convertToISCVector() const
{
storvector_t storvect;
storvect.push_back(make_pair("Algorithm", "12 (ECC-GOST)"));
unsigned char asn1Prefix[]=
static const unsigned char asn1Prefix[]=
{0x30, 0x45, 0x02, 0x01, 0x00, 0x30, 0x1c, 0x06, 0x06, 0x2a, 0x85, 0x03, 0x02, 0x02,
0x13, 0x30, 0x12, 0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01, 0x06, 0x07,
0x2a, 0x85, 0x03, 0x02, 0x02, 0x1e, 0x01, 0x04, 0x22, 0x04, 0x20}; // this is DER, fixed for a 32 byte key

SecureVector<byte> buffer=BigInt::encode(d_key->private_value());
string gostasn1((const char*)asn1Prefix, sizeof(asn1Prefix));
gostasn1.append((const char*)&*buffer.begin(), (const char*)&*buffer.end());
storvector_t storvect;
storvect.push_back(make_pair("Algorithm", "12 (ECC-GOST)"));

auto buffer = BigInt::encode(d_key->private_value());
string gostasn1(reinterpret_cast<const char*>(asn1Prefix), sizeof(asn1Prefix));
gostasn1.append(buffer.begin(), buffer.end());
storvect.push_back(make_pair("GostAsn1", gostasn1));
return storvect;
}
@@ -135,22 +139,21 @@ void GOSTDNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent& drc, std::map<std::
BigInt bigint((byte*)rawKey.c_str(), rawKey.size());
EC_Group params("1.2.643.2.2.35.1");
AutoSeeded_RNG rng;
d_key=shared_ptr<GOST_3410_PrivateKey>(new GOST_3410_PrivateKey(rng, params, bigint));
d_key=std::make_shared<GOST_3410_PrivateKey>(rng, getParams(), bigint);
//cerr<<"Is the just imported key on the curve? " << d_key->public_point().on_the_curve()<<endl;
//cerr<<"Is the just imported key zero? " << d_key->public_point().is_zero()<<endl;
const BigInt&x = d_key->private_value();
SecureVector<byte> buffer=BigInt::encode(x);
auto buffer = BigInt::encode(x);
// cerr<<"And out again! "<<makeHexDump(string((const char*)buffer.begin(), (const char*)buffer.end()))<<endl;
}
namespace {

BigInt decode_le(const byte msg[], size_t msg_len)
{
SecureVector<byte> msg_le(msg, msg_len);
Botan::secure_vector<byte> msg_le(msg, msg + msg_len);

for(size_t i = 0; i != msg_le.size() / 2; ++i)
std::swap(msg_le[i], msg_le[msg_le.size()-1-i]);
@@ -166,28 +169,29 @@ void GOSTDNSCryptoKeyEngine::fromPublicKeyString(const std::string& input)
x=decode_le((const byte*)input.c_str(), input.length()/2);
y=decode_le((const byte*)input.c_str() + input.length()/2, input.length()/2);

EC_Domain_Params params("1.2.643.2.2.35.1");
auto params = getParams();
PointGFp point(params.get_curve(), x,y);
d_pubkey = shared_ptr<GOST_3410_PublicKey>(new GOST_3410_PublicKey(params, point));
d_pubkey = std::make_shared<GOST_3410_PublicKey>(params, point);
d_key.reset();
}

std::string GOSTDNSCryptoKeyEngine::getPubKeyHash() const
{
const BigInt&x = d_key->private_value();
SecureVector<byte> buffer=BigInt::encode(x);
return string((const char*)buffer.begin(), (const char*)buffer.end());
auto buffer = BigInt::encode(x);
return string(buffer.begin(), buffer.end());
}

std::string GOSTDNSCryptoKeyEngine::getPublicKeyString() const
{
const BigInt&x =d_key->public_point().get_affine_x();
const BigInt&y =d_key->public_point().get_affine_y();
std::shared_ptr<GOST_3410_PublicKey> pk = d_pubkey ? d_pubkey : d_key;
const BigInt&x =pk->public_point().get_affine_x();
const BigInt&y =pk->public_point().get_affine_y();
size_t part_size = std::max(x.bytes(), y.bytes());
MemoryVector<byte> bits(2*part_size);
std::vector<byte> bits(2*part_size);
x.binary_encode(&bits[part_size - x.bytes()]);
y.binary_encode(&bits[2*part_size - y.bytes()]);

@@ -198,7 +202,7 @@ std::string GOSTDNSCryptoKeyEngine::getPublicKeyString() const
std::swap(bits[part_size+i], bits[2*part_size-1-i]);
}
return string((const char*)bits.begin(), (const char*)bits.end());
return string(bits.begin(), bits.end());
}

/*
@@ -210,50 +214,27 @@ std::string GOSTDNSCryptoKeyEngine::getPublicKeyString() const

std::string GOSTDNSCryptoKeyEngine::sign(const std::string& msg) const
{
GOST_3410_Signature_Operation ops(*d_key);
AutoSeeded_RNG rng;
string hash= this->hash(msg);
SecureVector<byte> signature=ops.sign((byte*)hash.c_str(), hash.length(), rng);

#if BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,9,12) // see http://bit.ly/gTytUf
string reversed((const char*)signature.begin()+ signature.size()/2, signature.size()/2);
reversed.append((const char*)signature.begin(), signature.size()/2);
return reversed;
#else
return string((const char*)signature.begin(), (const char*) signature.end());
#endif
PK_Signer signer(*d_key, rng, "Raw");
signer.update(hash(msg));
auto signature = signer.signature(rng);
return string(signature.begin(), signature.end());
}

std::string GOSTDNSCryptoKeyEngine::hash(const std::string& orig) const
{
SecureVector<byte> result;
GOST_34_11 hasher;
result= hasher.process(orig);
return string((const char*)result.begin(), (const char*) result.end());
auto result = hasher.process(orig);
return string(result.begin(), result.end());
}


bool GOSTDNSCryptoKeyEngine::verify(const std::string& message, const std::string& signature) const
{
string hash = this->hash(message);
GOST_3410_PublicKey* pk;
if(d_pubkey) {
pk =d_pubkey.get();
}
else
pk = d_key.get();
GOST_3410_Verification_Operation ops(*pk);
#if BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,9,12) // see http://bit.ly/gTytUf
string rsignature(signature.substr(32));
rsignature.append(signature.substr(0,32));
return ops.verify ((byte*)hash.c_str(), hash.length(), (byte*)rsignature.c_str(), rsignature.length());
#else
return ops.verify ((byte*)hash.c_str(), hash.length(), (byte*)signature.c_str(), signature.length());
#endif
std::shared_ptr<GOST_3410_PublicKey> pk = d_pubkey ? d_pubkey : d_key;
PK_Verifier verifier(*pk, "Raw");
verifier.update(hash(message));
return verifier.check_signature(reinterpret_cast<const uint8_t*>(signature.c_str()), signature.size());
}

/*
@@ -271,11 +252,7 @@ struct LoaderStruct
{
LoaderStruct()
{
new Botan::LibraryInitializer("thread_safe=true");
// this leaks, but is fine
Botan::global_state().set_default_allocator("malloc"); // the other Botan allocator slows down for us

DNSCryptoKeyEngine::report(12, &GOSTDNSCryptoKeyEngine::maker);
}
} loaderBotan110;
} loaderBotan2;
}

+ 15
- 2
config.h.in View File

@@ -3,6 +3,9 @@
/* Set to the user and host that builds PowerDNS */
#undef BUILD_HOST

/* Define to 1 if you have the `accept4' function. */
#undef HAVE_ACCEPT4

/* Defined if the requested minimum BOOST version is satisfied */
#undef HAVE_BOOST

@@ -33,8 +36,8 @@
/* Defined if the Boost unit_test_framework library is available */
#undef HAVE_BOOST_UNIT_TEST_FRAMEWORK

/* Define to 1 if you have botan 1.10 */
#undef HAVE_BOTAN110
/* Define to 1 if you have botan */
#undef HAVE_BOTAN

/* Define to 1 if you have clock_gettime */
#undef HAVE_CLOCK_GETTIME
@@ -53,6 +56,10 @@
if you don't. */
#undef HAVE_DECL_NID_X9_62_PRIME256V1

/* Define to 1 if you have the declaration of `snmp_select_info2', and to 0 if
you don't. */
#undef HAVE_DECL_SNMP_SELECT_INFO2

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

@@ -86,6 +93,9 @@
/* Define to 1 if you have pthread_setaffinity_np */
#undef HAVE_PTHREAD_SETAFFINITY_NP

/* Define to 1 if you have the `recvmmsg' function. */
#undef HAVE_RECVMMSG

/* Define to 1 if you have the <sanitizer/common_interface_defs.h> header
file. */
#undef HAVE_SANITIZER_COMMON_INTERFACE_DEFS_H
@@ -96,6 +106,9 @@
/* Define to 1 if __sanitizer_finish_switch_fiber takes three pointers */
#undef HAVE_SANITIZER_FINISH_SWITCH_FIBER_THREE_PTRS

/* Define to 1 if you have the `sendmmsg' function. */
#undef HAVE_SENDMMSG

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



+ 189
- 134
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.1.0-alpha1.
# Generated by GNU Autoconf 2.69 for pdns-recursor 4.1.0-rc3.
#
#
# 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.1.0-alpha1'
PACKAGE_STRING='pdns-recursor 4.1.0-alpha1'
PACKAGE_VERSION='4.1.0-rc3'
PACKAGE_STRING='pdns-recursor 4.1.0-rc3'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''

@@ -668,17 +668,17 @@ NET_SNMP_CFLAGS
LIBDECAF_LIBS
LIBDECAF_FALSE
LIBDECAF_TRUE
LIBSODIUM_LIBS
LIBSODIUM_CFLAGS
LIBSODIUM_FALSE
LIBSODIUM_TRUE
LIBSODIUM_LIBS
LIBSODIUM_CFLAGS
LIBCRYPTO_LDFLAGS
LIBCRYPTO_LIBS
LIBCRYPTO_INCLUDES
BOTAN110_LIBS
BOTAN110_CFLAGS
BOTAN110_FALSE
BOTAN110_TRUE
BOTAN_LIBS
BOTAN_CFLAGS
BOTAN_FALSE
BOTAN_TRUE
HAVE_LUA_HPP_FALSE
HAVE_LUA_HPP_TRUE
LUA_FALSE
@@ -865,7 +865,7 @@ enable_reproducible
with_luajit
with_lua
enable_verbose_logging
enable_botan1_10
enable_botan
with_libcrypto
enable_libsodium
enable_libdecaf
@@ -902,8 +902,8 @@ PROTOBUF_LIBS
BOOST_ROOT
LUA_CFLAGS
LUA_LIBS
BOTAN110_CFLAGS
BOTAN110_LIBS
BOTAN_CFLAGS
BOTAN_LIBS
LIBSODIUM_CFLAGS
LIBSODIUM_LIBS
SYSTEMD_CFLAGS
@@ -1448,7 +1448,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.1.0-alpha1 to adapt to many kinds of systems.
\`configure' configures pdns-recursor 4.1.0-rc3 to adapt to many kinds of systems.

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

@@ -1518,7 +1518,7 @@ fi

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

@@ -1549,8 +1549,8 @@ Optional Features:
[default=no]
--enable-verbose-logging
enable verbose logging [default=no]
--enable-botan1.10 use Botan 1.10 [default=no]
--enable-libsodium use libsodium [default=no]
--enable-botan use Botan [default=no]
--enable-libsodium use libsodium [default=auto]
--enable-libdecaf use libdecaf [default=no]
--disable-hardening disable compiler security checks [default=no]
--enable-asan enable AddressSanitizer [default=no]
@@ -1560,7 +1560,8 @@ Optional Features:
--enable-ubsan enable Undefined Behaviour Sanitizer [default=no]
--enable-malloc-trace enable malloc-trace [default=no]
--enable-valgrind enable Valgrind support [default=no]
--enable-systemd Enable systemd support (default is DISABLED)
--enable-systemd Enable systemd support (default is DISABLED, but
will be enabled when libraries are found)

Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1603,10 +1604,9 @@ Some influential environment variables:
BOOST_ROOT Location of Boost installation
LUA_CFLAGS C compiler flags for LUA, overriding pkg-config
LUA_LIBS linker flags for LUA, overriding pkg-config
BOTAN110_CFLAGS
C compiler flags for BOTAN110, overriding pkg-config
BOTAN110_LIBS
linker flags for BOTAN110, overriding pkg-config
BOTAN_CFLAGS
C compiler flags for BOTAN, overriding pkg-config
BOTAN_LIBS linker flags for BOTAN, overriding pkg-config
LIBSODIUM_CFLAGS
C compiler flags for LIBSODIUM, overriding pkg-config
LIBSODIUM_LIBS
@@ -1682,7 +1682,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
pdns-recursor configure 4.1.0-alpha1
pdns-recursor configure 4.1.0-rc3
generated by GNU Autoconf 2.69

Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2159,52 +2159,6 @@ fi

} # ac_fn_cxx_try_link

# ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES
# -----------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly.
ac_fn_cxx_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
#ifndef $as_decl_name
#ifdef __cplusplus
(void) $as_decl_use;
#else
(void) $as_decl_name;
#endif
#endif

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
eval "$3=yes"
else
eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_cxx_check_decl

# ac_fn_cxx_check_func LINENO FUNC VAR
# ------------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2271,11 +2225,57 @@ $as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_cxx_check_func

# ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES
# -----------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly.
ac_fn_cxx_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
#ifndef $as_decl_name
#ifdef __cplusplus
(void) $as_decl_use;
#else
(void) $as_decl_name;
#endif
#endif

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
eval "$3=yes"
else
eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_cxx_check_decl
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.1.0-alpha1, which was
It was created by pdns-recursor $as_me 4.1.0-rc3, which was
generated by GNU Autoconf 2.69. Invocation command line was

$ $0 $@
@@ -3138,7 +3138,7 @@ fi

# Define the identity of the package.
PACKAGE='pdns-recursor'
VERSION='4.1.0-alpha1'
VERSION='4.1.0-rc3'


cat >>confdefs.h <<_ACEOF
@@ -15907,7 +15907,7 @@ $as_echo "#define NEED_INET_NTOP_PROTO /**/" >>confdefs.h
have_linux="yes"
;;
darwin*)
CXXFLAGS="-D__APPLE_USE_RFC_3542 -D_XOPEN_SOURCE $CXXFLAGS"
CXXFLAGS="-D__APPLE_USE_RFC_3542 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE $CXXFLAGS"
;;
freebsd*)
THREADFLAGS="-pthread"
@@ -15945,7 +15945,7 @@ fi


case "$host" in
mips* | powerpc* )
mips* | powerpc-* )
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -latomic" >&5
$as_echo_n "checking whether the linker accepts -latomic... " >&6; }
LDFLAGS="-latomic $LDFLAGS"
@@ -16201,6 +16201,18 @@ if test "$ac_res" != no; then :

fi

for ac_func in recvmmsg sendmmsg accept4
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

fi
done



# Boost Context was introduced in 1.51 (Aug 2012), but there was an immediate
@@ -16860,6 +16872,10 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines
# the same defines as GCC's).
for i in \
"defined __GNUC__ && __GNUC__ == 7 && __GNUC_MINOR__ == 2 && !defined __ICC && \
(defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \
|| defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw72" \
"defined __GNUC__ && __GNUC__ == 7 && __GNUC_MINOR__ == 2 && !defined __ICC @ gcc72" \
"defined __GNUC__ && __GNUC__ == 7 && __GNUC_MINOR__ == 1 && !defined __ICC && \
(defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \
|| defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw71" \
@@ -19112,45 +19128,44 @@ $as_echo "$enable_verbose_logging" >&6; }

# Crypto libraries

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we will be linking in Botan 1.10" >&5
$as_echo_n "checking whether we will be linking in Botan 1.10... " >&6; }
# Check whether --enable-botan1.10 was given.
if test "${enable_botan1_10+set}" = set; then :
enableval=$enable_botan1_10; enable_botan110=$enableval
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we will be linking in Botan 2.x" >&5
$as_echo_n "checking whether we will be linking in Botan 2.x... " >&6; }
# Check whether --enable-botan was given.
if test "${enable_botan+set}" = set; then :
enableval=$enable_botan; enable_botan=$enableval
else
enable_botan110=no
enable_botan=no

fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_botan110" >&5
$as_echo "$enable_botan110" >&6; }
if test "x$enable_botan110" != "xno"; then
BOTAN110_TRUE=
BOTAN110_FALSE='#'
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_botan" >&5
$as_echo "$enable_botan" >&6; }
if test "x$enable_botan" != "xno"; then
BOTAN_TRUE=
BOTAN_FALSE='#'
else
BOTAN110_TRUE='#'
BOTAN110_FALSE=
BOTAN_TRUE='#'
BOTAN_FALSE=
fi



if test "x$enable_botan110" != "xno"; then :
if test "x$enable_botan" != "xno"; then :


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

if test -n "$BOTAN110_CFLAGS"; then
pkg_cv_BOTAN110_CFLAGS="$BOTAN110_CFLAGS"
if test -n "$BOTAN_CFLAGS"; then
pkg_cv_BOTAN_CFLAGS="$BOTAN_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"botan-1.10\""; } >&5
($PKG_CONFIG --exists --print-errors "botan-1.10") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"botan-2\""; } >&5
($PKG_CONFIG --exists --print-errors "botan-2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_BOTAN110_CFLAGS=`$PKG_CONFIG --cflags "botan-1.10" 2>/dev/null`
pkg_cv_BOTAN_CFLAGS=`$PKG_CONFIG --cflags "botan-2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -19158,16 +19173,16 @@ fi
else
pkg_failed=untried
fi
if test -n "$BOTAN110_LIBS"; then
pkg_cv_BOTAN110_LIBS="$BOTAN110_LIBS"
if test -n "$BOTAN_LIBS"; then
pkg_cv_BOTAN_LIBS="$BOTAN_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"botan-1.10\""; } >&5
($PKG_CONFIG --exists --print-errors "botan-1.10") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"botan-2\""; } >&5
($PKG_CONFIG --exists --print-errors "botan-2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_BOTAN110_LIBS=`$PKG_CONFIG --libs "botan-1.10" 2>/dev/null`
pkg_cv_BOTAN_LIBS=`$PKG_CONFIG --libs "botan-2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -19188,27 +19203,27 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
BOTAN110_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "botan-1.10" 2>&1`
BOTAN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "botan-2" 2>&1`
else
BOTAN110_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "botan-1.10" 2>&1`
BOTAN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "botan-2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$BOTAN110_PKG_ERRORS" >&5
echo "$BOTAN_PKG_ERRORS" >&5

as_fn_error $? "Could not find botan 1.10" "$LINENO" 5
as_fn_error $? "Could not find botan" "$LINENO" 5

elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
as_fn_error $? "Could not find botan 1.10" "$LINENO" 5
as_fn_error $? "Could not find botan" "$LINENO" 5

else
BOTAN110_CFLAGS=$pkg_cv_BOTAN110_CFLAGS
BOTAN110_LIBS=$pkg_cv_BOTAN110_LIBS
BOTAN_CFLAGS=$pkg_cv_BOTAN_CFLAGS
BOTAN_LIBS=$pkg_cv_BOTAN_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

$as_echo "#define HAVE_BOTAN110 1" >>confdefs.h
$as_echo "#define HAVE_BOTAN 1" >>confdefs.h

fi

@@ -19510,22 +19525,15 @@ $as_echo_n "checking whether we will be linking in libsodium... " >&6; }
if test "${enable_libsodium+set}" = set; then :
enableval=$enable_libsodium; enable_libsodium=$enableval
else
enable_libsodium=no
enable_libsodium=auto
fi

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

if test "x$enable_libsodium" != "xno"; then
LIBSODIUM_TRUE=
LIBSODIUM_FALSE='#'
else
LIBSODIUM_TRUE='#'
LIBSODIUM_FALSE=
fi

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

if test -z "$LIBSODIUM_TRUE"; then :
if test "x$enable_libsodium" = "xyes" -o "x$enable_libsodium" = "xauto"; then :


pkg_failed=no
@@ -19586,15 +19594,11 @@ fi
# Put the nasty error message in config.log where it belongs
echo "$LIBSODIUM_PKG_ERRORS" >&5


as_fn_error $? "libsodium requested but not available" "$LINENO" 5

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

as_fn_error $? "libsodium requested but not available" "$LINENO" 5

:
else
LIBSODIUM_CFLAGS=$pkg_cv_LIBSODIUM_CFLAGS
LIBSODIUM_LIBS=$pkg_cv_LIBSODIUM_LIBS
@@ -19604,11 +19608,11 @@ $as_echo "yes" >&6; }

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

save_CFLAGS=$CFLAGS
save_LIBS=$LIBS
CFLAGS="$LIBSODIUM_CFLAGS $CFLAGS"
LIBS="$LIBSODIUM_LIBS $LIBS"
for ac_func in crypto_box_easy_afternm
save_CFLAGS=$CFLAGS
save_LIBS=$LIBS
CFLAGS="$LIBSODIUM_CFLAGS $CFLAGS"
LIBS="$LIBSODIUM_LIBS $LIBS"
for ac_func in crypto_box_easy_afternm
do :
ac_fn_cxx_check_func "$LINENO" "crypto_box_easy_afternm" "ac_cv_func_crypto_box_easy_afternm"
if test "x$ac_cv_func_crypto_box_easy_afternm" = xyes; then :
@@ -19619,8 +19623,27 @@ _ACEOF
fi
done

CFLAGS=$save_CFLAGS
LIBS=$save_LIBS
CFLAGS=$save_CFLAGS
LIBS=$save_LIBS

fi

fi

fi
if test "x$LIBSODIUM_LIBS" != "x"; then
LIBSODIUM_TRUE=
LIBSODIUM_FALSE='#'
else
LIBSODIUM_TRUE='#'
LIBSODIUM_FALSE=
fi

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

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

as_fn_error $? "libsodium requested but libraries were not found" "$LINENO" 5

fi

@@ -19816,6 +19839,30 @@ $as_echo "no" >&6; }
fi


ac_fn_cxx_check_decl "$LINENO" "snmp_select_info2" "ac_cv_have_decl_snmp_select_info2" "$ac_includes_default
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/definitions.h>
#include <net-snmp/types.h>
#include <net-snmp/utilities.h>
#include <net-snmp/config_api.h>
#include <net-snmp/session_api.h>

"
if test "x$ac_cv_have_decl_snmp_select_info2" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
fi

cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SNMP_SELECT_INFO2 $ac_have_decl
_ACEOF
if test $ac_have_decl = 1; then :
:
else
:
fi


fi

@@ -21388,8 +21435,8 @@ if test -z "${HAVE_LUA_HPP_TRUE}" && test -z "${HAVE_LUA_HPP_FALSE}"; then
as_fn_error $? "conditional \"HAVE_LUA_HPP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${BOTAN110_TRUE}" && test -z "${BOTAN110_FALSE}"; then
as_fn_error $? "conditional \"BOTAN110\" was never defined.
if test -z "${BOTAN_TRUE}" && test -z "${BOTAN_FALSE}"; then
as_fn_error $? "conditional \"BOTAN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${LIBSODIUM_TRUE}" && test -z "${LIBSODIUM_FALSE}"; then
@@ -21821,7 +21868,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by pdns-recursor $as_me 4.1.0-alpha1, which was
This file was extended by pdns-recursor $as_me 4.1.0-rc3, which was
generated by GNU Autoconf 2.69. Invocation command line was

CONFIG_FILES = $CONFIG_FILES
@@ -21887,7 +21934,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
pdns-recursor config.status 4.1.0-alpha1
pdns-recursor config.status 4.1.0-rc3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

@@ -23995,6 +24042,14 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: libdecaf ed25519 and ed448: no" >&5
$as_echo "$as_me: libdecaf ed25519 and ed448: no" >&6;}

fi
if test "x$BOTAN_LIBS" != "x"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: Botan gost: yes" >&5
$as_echo "$as_me: Botan gost: yes" >&6;}
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: Botan gost: no" >&5
$as_echo "$as_me: Botan gost: no" >&6;}

fi
if test "x$PROTOBUF_LIBS" != "x" -a x"$PROTOC" != "x"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: Protobuf: yes" >&5


+ 4
- 0
configure.ac View File

@@ -217,6 +217,10 @@ AS_IF([test "x$LIBDECAF_LIBS" != "x"],
[AC_MSG_NOTICE([libdecaf ed25519 and ed448: yes])],
[AC_MSG_NOTICE([libdecaf ed25519 and ed448: no])]
)
AS_IF([test "x$BOTAN_LIBS" != "x"],
[AC_MSG_NOTICE([Botan gost: yes])],
[AC_MSG_NOTICE([Botan gost: no])]
)
AS_IF([test "x$PROTOBUF_LIBS" != "x" -a x"$PROTOC" != "x"],
[AC_MSG_NOTICE([Protobuf: yes])],
[AC_MSG_NOTICE([Protobuf: no])]


+ 5
- 0
contrib/dns64.lua View File

@@ -6,6 +6,11 @@ function nodata ( dq )
return false
end -- only AAAA records

-- don't fake AAAA records if DNSSEC validation failed
if dq.validationState == pdns.validationstates.Bogus then
return false
end

dq.followupFunction = "getFakeAAAARecords"
dq.followupPrefix = prefix
dq.followupName = dq.qname


+ 4
- 5
devpollmplexer.cc View File

@@ -35,7 +35,6 @@
#include "misc.hh"
#include "syncres.hh"

#include "namespaces.hh"
#include "namespaces.hh"

class DevPollFDMultiplexer : public FDMultiplexer
@@ -47,7 +46,7 @@ public:
close(d_devpollfd);
}

virtual int run(struct timeval* tv);
virtual int run(struct timeval* tv, int timeout=500);

virtual void addFD(callbackmap_t& cbmap, int fd, callbackfunc_t toDo, const funcparam_t& parameter);
virtual void removeFD(callbackmap_t& cbmap, int fd);
@@ -113,7 +112,7 @@ void DevPollFDMultiplexer::removeFD(callbackmap_t& cbmap, int fd)
}
}

int DevPollFDMultiplexer::run(struct timeval* now)
int DevPollFDMultiplexer::run(struct timeval* now, int timeout)
{
if(d_inrun) {
throw FDMultiplexerException("FDMultiplexer::run() is not reentrant!\n");
@@ -121,7 +120,7 @@ int DevPollFDMultiplexer::run(struct timeval* now)
struct dvpoll dvp;
dvp.dp_nfds = d_readCallbacks.size() + d_writeCallbacks.size();
dvp.dp_fds = new pollfd[dvp.dp_nfds];
dvp.dp_timeout = 500;
dvp.dp_timeout = timeout;
int ret=ioctl(d_devpollfd, DP_POLL, &dvp);
gettimeofday(now,0); // MANDATORY!
@@ -151,7 +150,7 @@ int DevPollFDMultiplexer::run(struct timeval* now)
}
delete[] dvp.dp_fds;
d_inrun=false;
return 0;
return ret;
}

#if 0


+ 10
- 0
dnsmessage.proto View File

@@ -36,6 +36,14 @@ message PBDNSMessage {
UDP = 1; // User Datagram Protocol (RFC 768)
TCP = 2; // Transmission Control Protocol (RFC 793)
}
enum PolicyType {
UNKNOWN = 1; // No policy applied, or unknown type
QNAME = 2; // Policy matched on the QName
CLIENTIP = 3; // Policy matched on the client IP
RESPONSEIP = 4; // Policy matched on one of the IPs contained in the answer
NSDNAME = 5; // Policy matched on the name of one nameserver involved
NSIP = 6; // Policy matched on the IP of one nameserver involved
}
required Type type = 1;
optional bytes messageId = 2; // UUID, shared by the query and the response
optional bytes serverIdentity = 3; // UUID of the server emitting the protobuf message
@@ -69,10 +77,12 @@ message PBDNSMessage {
repeated string tags = 4; // Additional tags
optional uint32 queryTimeSec = 5; // Time of the corresponding query reception (seconds since epoch)
optional uint32 queryTimeUsec = 6; // Time of the corresponding query reception (additional micro-seconds)
optional PolicyType appliedPolicyType = 7; // Type of the filtering policy (RPZ or Lua) applied
}

optional DNSResponse response = 13;
optional bytes originalRequestorSubnet = 14; // EDNS Client Subnet value
optional string requestorId = 15; // Username of the requestor
optional bytes initialRequestId = 16; // UUID of the incoming query that initiated this outgoing query or incoming response
optional bytes deviceId = 17; // Device ID of the requestor (could be mac address IP address or e.g. IMEI)
}

+ 21
- 0
dnsname.cc View File

@@ -253,6 +253,27 @@ void DNSName::makeUsRelative(const DNSName& zone)
clear();
}

DNSName DNSName::getCommonLabels(const DNSName& other) const
{
DNSName result;

const std::vector<std::string> ours = getRawLabels();
const std::vector<std::string> others = other.getRawLabels();

for (size_t pos = 0; ours.size() > pos && others.size() > pos; pos++) {
const std::string& ourLabel = ours.at(ours.size() - pos - 1);
const std::string& otherLabel = others.at(others.size() - pos - 1);

if (!pdns_iequals(ourLabel, otherLabel)) {
break;
}

result.prependRawLabel(ourLabel);
}

return result;
}

DNSName DNSName::labelReverse() const
{
DNSName ret;


+ 1
- 0
dnsname.hh View File

@@ -94,6 +94,7 @@ public:
}
}
void makeUsRelative(const DNSName& zone);
DNSName getCommonLabels(const DNSName& other) const; //!< Return the list of common labels from the top, for example 'c.d' for 'a.b.c.d' and 'x.y.c.d'
DNSName labelReverse() const;
bool isWildcard() const;
bool isHostname() const;


+ 0
- 8
dnspacket.hh View File

@@ -21,14 +21,6 @@
*/
#ifndef DNSPACKET_HH

#if __GNUC__ == 2
#if __GNUC_MINOR__ < 95
#error Your compiler is too old! Try g++ 3.3 or higher
#else
#warning There are known problems with PowerDNS binaries compiled by gcc version 2.95 and 2.96!
#endif
#endif

#define DNSPACKET_HH

#include <cstdio>


+ 4
- 4
dnsparser.cc View File

@@ -732,13 +732,13 @@ void ageDNSPacket(char* packet, size_t length, uint32_t seconds)
return;
try
{
dnsheader dh;
memcpy((void*)&dh, (const dnsheader*)packet, sizeof(dh));
uint64_t numrecords = ntohs(dh.ancount) + ntohs(dh.nscount) + ntohs(dh.arcount);
const dnsheader* dh = reinterpret_cast<const dnsheader*>(packet);
const uint64_t dqcount = ntohs(dh->qdcount);
const uint64_t numrecords = ntohs(dh->ancount) + ntohs(dh->nscount) + ntohs(dh->arcount);
DNSPacketMangler dpm(packet, length);

uint64_t n;
for(n=0; n < ntohs(dh.qdcount) ; ++n) {
for(n=0; n < dqcount; ++n) {
dpm.skipLabel();
/* type and class */
dpm.skipBytes(4);


+ 16
- 5
dnsrecords.cc View File

@@ -45,18 +45,29 @@ void DNSResourceRecord::setContent(const string &cont) {

string DNSResourceRecord::getZoneRepresentation(bool noDot) const {
ostringstream ret;
vector<string> parts;
string last;

switch(qtype.getCode()) {
case QType::SRV:
case QType::MX:
stringtok(parts, content);
if (!parts.size())
return "";
last = *parts.rbegin();
ret << content;
if (last == ".")
break;
if (*(last.rbegin()) != '.' && !noDot)
ret << ".";
break;
case QType::CNAME:
case QType::DNAME:
case QType::NS:
case QType::PTR:
if (*(content.rbegin()) != '.') {
ret<<content;
if(!noDot)
ret<<".";
}
ret<<content;
if (*(content.rbegin()) != '.' && !noDot)
ret<<".";
break;
default:
ret<<content;


+ 31
- 1
dnssecinfra.cc View File

@@ -457,7 +457,7 @@ DSRecordContent makeDSFromDNSKey(const DNSName& qname, const DNSKEYRecordContent
}


DNSKEYRecordContent makeDNSKEYFromDNSCryptoKeyEngine(const std::shared_ptr<DNSCryptoKeyEngine> pk, uint8_t algorithm, uint16_t flags)
static DNSKEYRecordContent makeDNSKEYFromDNSCryptoKeyEngine(const std::shared_ptr<DNSCryptoKeyEngine> pk, uint8_t algorithm, uint16_t flags)
{
DNSKEYRecordContent drc;

@@ -498,6 +498,36 @@ string hashQNameWithSalt(const std::string& salt, unsigned int iterations, const
return toHash;
}

void incrementHash(std::string& raw) // I wonder if this is correct, cmouse? ;-)
{
if(raw.empty())
return;

for(string::size_type pos=raw.size(); pos; ) {
--pos;
unsigned char c = (unsigned char)raw[pos];
++c;
raw[pos] = (char) c;
if(c)
break;
}
}

void decrementHash(std::string& raw) // I wonder if this is correct, cmouse? ;-)
{
if(raw.empty())
return;

for(string::size_type pos=raw.size(); pos; ) {
--pos;
unsigned char c = (unsigned char)raw[pos];
--c;
raw[pos] = (char) c;
if(c != 0xff)
break;
}
}

DNSKEYRecordContent DNSSECPrivateKey::getDNSKEY() const
{
return makeDNSKEYFromDNSCryptoKeyEngine(getKey(), d_algorithm, d_flags);


+ 7
- 1
dnssecinfra.hh View File

@@ -106,7 +106,10 @@ class DNSCryptoKeyEngine

struct DNSSECPrivateKey
{
uint16_t getTag();
uint16_t getTag() const
{
return getDNSKEY().getTag();
}
const shared_ptr<DNSCryptoKeyEngine> getKey() const
{
@@ -155,6 +158,9 @@ uint32_t getStartOfWeek();
string hashQNameWithSalt(const NSEC3PARAMRecordContent& ns3prc, const DNSName& qname);
string hashQNameWithSalt(const std::string& salt, unsigned int iterations, const DNSName& qname);

void incrementHash(std::string& raw);
void decrementHash(std::string& raw);

void addRRSigs(DNSSECKeeper& dk, UeberBackend& db, const std::set<DNSName>& authMap, vector<DNSZoneRecord>& rrs);

void addTSIG(DNSPacketWriter& pw, TSIGRecordContent& trc, const DNSName& tsigkeyname, const string& tsigsecret, const string& tsigprevious, bool timersonly);


+ 4
- 1
dnsseckeeper.hh View File

@@ -181,6 +181,7 @@ public:
bool checkKeys(const DNSName& zname);

bool getNSEC3PARAM(const DNSName& zname, NSEC3PARAMRecordContent* n3p=0, bool* narrow=0);
bool checkNSEC3PARAM(const NSEC3PARAMRecordContent& ns3p, string& msg);
bool setNSEC3PARAM(const DNSName& zname, const NSEC3PARAMRecordContent& n3p, const bool& narrow=false);
bool unsetNSEC3PARAM(const DNSName& zname);
void clearAllCaches();
@@ -209,6 +210,8 @@ public:
void getFromMeta(const DNSName& zname, const std::string& key, std::string& value);
void getSoaEdit(const DNSName& zname, std::string& value);
bool unSecureZone(const DNSName& zone, std::string& error, std::string& info);
bool rectifyZone(const DNSName& zone, std::string& error, std::string& info, bool doTransaction);
private:


@@ -284,7 +287,7 @@ uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq);
uint32_t calculateEditSOA(const DNSZoneRecord& rr, const string& kind);
uint32_t calculateEditSOA(const SOAData& sd, const string& kind);
bool editSOA(DNSSECKeeper& dk, const DNSName& qname, DNSPacket* dp);
bool editSOARecord(DNSZoneRecord& rr, const string& kind, const DNSName& qname);
bool editSOARecord(DNSZoneRecord& rr, const string& kind);
// for SOA-EDIT-DNSUPDATE/API
uint32_t calculateIncreaseSOA(SOAData sd, const string& increaseKind, const string& editKind);
bool increaseSOARecord(DNSResourceRecord& rr, const string& increaseKind, const string& editKind);


+ 83
- 20
effective_tld_names.dat View File

@@ -399,24 +399,34 @@ tv.bo
// br : http://registro.br/dominio/categoria.html
// Submitted by registry <fneves@registro.br>
br
abc.br
adm.br
adv.br
agr.br
aju.br
am.br
aparecida.br
arq.br
art.br
ato.br
b.br
belem.br
bhz.br
bio.br
blog.br
bmd.br
boavista.br
bsb.br
campinas.br
caxias.br
cim.br
cng.br
cnt.br
com.br
contagem.br
coop.br
cri.br
cuiaba.br
def.br
ecn.br
eco.br
@@ -427,14 +437,17 @@ esp.br
etc.br
eti.br
far.br
feira.br
flog.br
floripa.br
fm.br
fnd.br
fortal.br
fot.br
fst.br
g12.br
ggf.br
goiania.br
gov.br
// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil
ac.gov.br
@@ -464,42 +477,65 @@ sc.gov.br
se.gov.br
sp.gov.br
to.gov.br
gru.br
imb.br
ind.br
inf.br
jab.br
jampa.br
jdf.br
joinville.br
jor.br
jus.br
leg.br
lel.br
londrina.br
macapa.br
maceio.br
mat.br
med.br
mil.br
morena.br
mp.br
mus.br
natal.br
net.br
niteroi.br
*.nom.br
not.br
ntr.br
odo.br
org.br
osasco.br
palmas.br
poa.br
ppg.br
pro.br
psc.br
psi.br
pvh.br
qsl.br
radio.br
rec.br
recife.br
ribeirao.br
rio.br
riobranco.br
salvador.br
sampa.br
sjc.br
slg.br
slz.br
sorocaba.br
srv.br
taxi.br
teo.br
the.br
tmp.br
trd.br
tur.br
tv.br
udi.br
vet.br
vix.br
vlog.br
@@ -6472,6 +6508,17 @@ lib.wy.us
pvt.k12.ma.us
chtr.k12.ma.us
paroch.k12.ma.us
// Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following
// see also: http://domreg.merit.edu
// see also: whois -h whois.domreg.merit.edu help
ann-arbor.mi.us
cog.mi.us
dst.mi.us
eaton.mi.us
gen.mi.us
mus.mi.us
tec.mi.us
washtenaw.mi.us

// uy : http://www.nic.org.uy/
uy
@@ -7473,9 +7520,6 @@ cheap
// chintai : 2015-06-11 CHINTAI Corporation
chintai

// chloe : 2014-10-16 Richemont DNS Inc.
chloe

// christmas : 2013-11-21 Uniregistry, Corp.
christmas

@@ -8346,9 +8390,6 @@ how
// hsbc : 2014-10-24 HSBC Holdings PLC
hsbc

// htc : 2015-04-02 HTC corporation
htc

// hughes : 2015-07-30 Hughes Satellite Systems Corporation
hughes

@@ -8802,12 +8843,6 @@ mattel
// mba : 2015-04-02 Lone Hollow, LLC
mba

// mcd : 2015-07-30 McDonald’s Corporation
mcd

// mcdonalds : 2015-07-30 McDonald’s Corporation