diff options
author | Riccardo Spagni <ric@spagni.net> | 2015-12-30 12:57:50 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2015-12-30 12:57:50 +0200 |
commit | 2d43ae806359c89818c0519d81a65ded768746d8 (patch) | |
tree | c5ca4144a8f721efb0b4d051ee604f2694e6df64 /external | |
parent | no longer need to pass the size to rapidjson (diff) | |
download | monero-2d43ae806359c89818c0519d81a65ded768746d8.tar.xz |
update unbound, fix unbound openssl issue on OS X
Diffstat (limited to 'external')
101 files changed, 4803 insertions, 3175 deletions
diff --git a/external/unbound/CMakeLists.txt b/external/unbound/CMakeLists.txt index 47010e1b3..63ce2d228 100644 --- a/external/unbound/CMakeLists.txt +++ b/external/unbound/CMakeLists.txt @@ -30,6 +30,15 @@ cmake_minimum_required(VERSION 2.8.7) project(unbound C) +if (APPLE) + if (not OpenSSL_DIR) + EXECUTE_PROCESS(COMMAND brew --prefix openssl + OUTPUT_VARIABLE OPENSSL_ROOT_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + message(STATUS "Using OpenSSL found at ${OPENSSL_ROOT_DIR}") + endif() +endif() + find_package(OpenSSL REQUIRED) find_package(Threads) diff --git a/external/unbound/Makefile.in b/external/unbound/Makefile.in index 20829d899..293e63c0a 100644 --- a/external/unbound/Makefile.in +++ b/external/unbound/Makefile.in @@ -38,6 +38,7 @@ UNBOUND_VERSION_MINOR=@UNBOUND_VERSION_MINOR@ UNBOUND_VERSION_MICRO=@UNBOUND_VERSION_MICRO@ ALLTARGET=@ALLTARGET@ INSTALLTARGET=@INSTALLTARGET@ +SSLLIB=@SSLLIB@ # _unbound.la if pyunbound enabled. PYUNBOUND_TARGET=@PYUNBOUND_TARGET@ @@ -132,7 +133,7 @@ compat/memcmp.c compat/memmove.c compat/snprintf.c compat/strlcat.c \ compat/strlcpy.c compat/strptime.c compat/getentropy_linux.c \ compat/getentropy_osx.c compat/getentropy_solaris.c compat/getentropy_win.c \ compat/explicit_bzero.c compat/arc4random.c compat/arc4random_uniform.c \ -compat/arc4_lock.c compat/sha512.c compat/reallocarray.c +compat/arc4_lock.c compat/sha512.c compat/reallocarray.c compat/isblank.c COMPAT_OBJ=$(LIBOBJS:.o=.lo) COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo) COMPAT_OBJ_WITHOUT_CTIMEARC4=$(LIBOBJ_WITHOUT_CTIMEARC4:.o=.lo) @@ -242,7 +243,7 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) -COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) +COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) LINK_LIB=$(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(staticexe) -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined @@ -295,22 +296,22 @@ longtest: tests lib: libunbound.la unbound.h libunbound.la: $(LIBUNBOUND_OBJ_LINK) - $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) -lssl $(LIBS) + $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) $(SSLLIB) $(LIBS) unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) unbound-anchor$(EXEEXT): $(UBANCHOR_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(UBANCHOR_OBJ_LINK) -L. -L.libs -lunbound -lexpat -lssl $(LIBS) + $(LINK) -o $@ $(UBANCHOR_OBJ_LINK) -L. -L.libs -lunbound -lexpat $(SSLLIB) $(LIBS) unbound-service-install$(EXEEXT): $(SVCINST_OBJ_LINK) $(LINK) -o $@ $(SVCINST_OBJ_LINK) $(LIBS) @@ -322,37 +323,37 @@ anchor-update$(EXEEXT): $(ANCHORUPD_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) unittest$(EXEEXT): $(UNITTEST_OBJ_LINK) - $(LINK) -o $@ $(UNITTEST_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) testbound$(EXEEXT): $(TESTBOUND_OBJ_LINK) - $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) lock-verify$(EXEEXT): $(LOCKVERIFY_OBJ_LINK) - $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) petal$(EXEEXT): $(PETAL_OBJ_LINK) - $(LINK) -o $@ $(PETAL_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(PETAL_OBJ_LINK) $(SSLLIB) $(LIBS) pktview$(EXEEXT): $(PKTVIEW_OBJ_LINK) - $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) - $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) $(LIBS) -L. -L.libs -lunbound streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) - $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) perf$(EXEEXT): $(PERF_OBJ_LINK) - $(LINK) -o $@ $(PERF_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) - $(LINK) -o $@ $(DELAYER_OBJ_LINK) -lssl $(LIBS) + $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) signit$(EXEEXT): testcode/signit.c - $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ testcode/signit.c $(LDFLAGS) -lldns -lssl $(LIBS) + $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) unbound.h: $(srcdir)/libunbound/unbound.h sed -e 's/@''UNBOUND_VERSION_MAJOR@/$(UNBOUND_VERSION_MAJOR)/' -e 's/@''UNBOUND_VERSION_MINOR@/$(UNBOUND_VERSION_MINOR)/' -e 's/@''UNBOUND_VERSION_MICRO@/$(UNBOUND_VERSION_MICRO)/' < $(srcdir)/libunbound/unbound.h > $@ @@ -566,7 +567,7 @@ DEPEND_TARGET2=Makefile.in # then, remove srcdir from the (generated) parser and lexer. # and mention the .lo depend: - (cd $(srcdir) ; $(CC) $(DEPFLAG) $(CPPFLAGS) $(CFLAGS) $(ALL_SRC) $(COMPAT_SRC)) | \ + (cd $(srcdir) ; $(CC) $(DEPFLAG) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ $(ALL_SRC) $(COMPAT_SRC)) | \ sed -e 's!'$$HOME'[^ ]* !!g' -e 's!'$$HOME'[^ ]*$$!!g' \ -e 's!/usr[^ ]* !!g' -e 's!/usr[^ ]*$$!!g' \ -e 's!/opt[^ ]* !!g' -e 's!/opt[^ ]*$$!!g' | \ @@ -644,7 +645,7 @@ iterator.lo iterator.o: $(srcdir)/iterator/iterator.c config.h $(srcdir)/iterato $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/config_file.h $(srcdir)/util/random.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h iter_delegpt.lo iter_delegpt.o: $(srcdir)/iterator/iter_delegpt.c config.h $(srcdir)/iterator/iter_delegpt.h \ $(srcdir)/util/log.h $(srcdir)/services/cache/dns.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h \ @@ -727,8 +728,7 @@ outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c confi $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/dnstap/dnstap.h \ - + $(srcdir)/sldns/sbuffer.h $(srcdir)/dnstap/dnstap.h alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -776,14 +776,12 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/wire2str.h random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ @@ -818,8 +816,7 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/val $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \ $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/services/modstack.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kcache.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/autotrust.h \ @@ -844,18 +841,16 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/ val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h -val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/validator.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h +val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/validator.h \ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \ @@ -867,17 +862,15 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/valida $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/sbuffer.h val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/validator.h \ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -895,11 +888,6 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h -dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/dnstap/dnstap.pb-c.h -dnstap.pb-c.lo dnstap.pb-c.o: $(srcdir)/dnstap/dnstap.pb-c.c $(srcdir)/dnstap/dnstap.pb-c.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -908,8 +896,7 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h $(srcdir)/util $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ @@ -947,38 +934,35 @@ unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/lo acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h \ +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1002,35 +986,33 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/mini_event.h \ - $(srcdir)/util/rbtree.h + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/libworker.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c \ + $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1046,12 +1028,12 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound.h \ @@ -1059,14 +1041,13 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ @@ -1141,19 +1122,18 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbou $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/services/localzone.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/sldns/sbuffer.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/netevent.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/services/localzone.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/str2wire.h +libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/services/outside_network.h $(srcdir)/util/netevent.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h \ + $(srcdir)/util/random.h $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/str2wire.h unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.h \ @@ -1164,21 +1144,18 @@ streamtcp.lo streamtcp.o: $(srcdir)/testcode/streamtcp.c config.h $(srcdir)/util $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h -unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \ - $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h +unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ - -petal.lo petal.o: $(srcdir)/testcode/petal.c config.h \ - + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h +petal.lo petal.o: $(srcdir)/testcode/petal.c config.h pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ @@ -1191,8 +1168,7 @@ win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/winsock_event.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/util/winsock_event.h w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \ $(srcdir)/winrc/w_inst.h @@ -1200,14 +1176,11 @@ unbound-service-remove.lo unbound-service-remove.o: $(srcdir)/winrc/unbound-serv $(srcdir)/winrc/w_inst.h anchor-update.lo anchor-update.o: $(srcdir)/winrc/anchor-update.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/wire2str.h -keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/rrdef.h \ - +keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/rrdef.h sbuffer.lo sbuffer.o: $(srcdir)/sldns/sbuffer.c config.h $(srcdir)/sldns/sbuffer.h wire2str.lo wire2str.o: $(srcdir)/sldns/wire2str.c config.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/sldns/keyraw.h parse.lo parse.o: $(srcdir)/sldns/parse.c config.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/sldns/sbuffer.h parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/parseutil.h @@ -1227,8 +1200,7 @@ snprintf.lo snprintf.o: $(srcdir)/compat/snprintf.c config.h strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \ - +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c @@ -1238,3 +1210,4 @@ arc4random_uniform.lo arc4random_uniform.o: $(srcdir)/compat/arc4random_uniform. arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c config.h $(srcdir)/util/locks.h sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h reallocarray.lo reallocarray.o: $(srcdir)/compat/reallocarray.c config.h +isblank.lo isblank.o: $(srcdir)/compat/isblank.c config.h diff --git a/external/unbound/acx_nlnetlabs.m4 b/external/unbound/acx_nlnetlabs.m4 index decf0f586..be184d2c0 100644 --- a/external/unbound/acx_nlnetlabs.m4 +++ b/external/unbound/acx_nlnetlabs.m4 @@ -2,7 +2,11 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 27 +# Version 31 +# 2015-12-11 FLTO check for new OSX, clang. +# 2015-11-18 spelling check fix. +# 2015-11-05 ACX_SSL_CHECKS no longer adds -ldl needlessly. +# 2015-08-28 ACX_CHECK_PIE and ACX_CHECK_RELRO_NOW added. # 2015-03-17 AHX_CONFIG_REALLOCARRAY added # 2013-09-19 FLTO help text improved. # 2013-07-18 Enable ACX_CHECK_COMPILER_FLAG to test for -Wstrict-prototypes @@ -23,7 +27,7 @@ # 2010-07-02 Add check for ss_family (for minix). # 2010-04-26 Fix to use CPPFLAGS for CHECK_COMPILER_FLAGS. # 2010-03-01 Fix RPATH using CONFIG_COMMANDS to run at the very end. -# 2010-02-18 WITH_SSL outputs the LIBSSL_LDFLAGS, LIBS, CPPFLAGS seperate, -ldl +# 2010-02-18 WITH_SSL outputs the LIBSSL_LDFLAGS, LIBS, CPPFLAGS separate, -ldl # 2010-02-01 added ACX_CHECK_MEMCMP_SIGNED, AHX_MEMCMP_BROKEN # 2010-01-20 added AHX_COONFIG_STRLCAT # 2009-07-14 U_CHAR detection improved for windows crosscompile. @@ -94,6 +98,8 @@ # ACX_CHECK_MEMCMP_SIGNED - check if memcmp uses signed characters. # AHX_MEMCMP_BROKEN - replace memcmp func for CHECK_MEMCMP_SIGNED. # ACX_CHECK_SS_FAMILY - check for sockaddr_storage.ss_family +# ACX_CHECK_PIE - add --enable-pie option and check if works +# ACX_CHECK_RELRO_NOW - add --enable-relro-now option and check it # dnl Escape backslashes as \\, for C:\ paths, for the C preprocessor defines. @@ -418,7 +424,7 @@ AC_DEFUN([ACX_CHECK_FLTO], [ BAKCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -flto" AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [ - if $CC $CFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + if $CC $CFLAGS -o conftest conftest.c 2>&1 | $GREP -e "warning: no debug symbols in executable" -e "warning: object" >/dev/null; then CFLAGS="$BAKCFLAGS" AC_MSG_RESULT(no) else @@ -712,12 +718,6 @@ AC_DEFUN([ACX_SSL_CHECKS], [ fi AC_SUBST(HAVE_SSL) AC_SUBST(RUNTIME_PATH) - # openssl engine functionality needs dlopen(). - BAKLIBS="$LIBS" - AC_SEARCH_LIBS([dlopen], [dl]) - if test "$LIBS" != "$BAKLIBS"; then - LIBSSL_LIBS="$LIBSSL_LIBS -ldl" - fi fi AC_CHECK_HEADERS([openssl/ssl.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_HEADERS([openssl/err.h],,, [AC_INCLUDES_DEFAULT]) @@ -1386,4 +1386,46 @@ AC_DEFUN([ACX_CHECK_SS_FAMILY], #endif ]) ]) +dnl Check if CC and linker support -fPIE and -pie. +dnl If so, sets them in CFLAGS / LDFLAGS. +AC_DEFUN([ACX_CHECK_PIE], [ + AC_ARG_ENABLE([pie], AS_HELP_STRING([--enable-pie], [Enable Position-Independent Executable (eg. to fully benefit from ASLR, small performance penalty)])) + AS_IF([test "x$enable_pie" = "xyes"], [ + AC_MSG_CHECKING([if $CC supports PIE]) + BAKLDFLAGS="$LDFLAGS" + BAKCFLAGS="$CFLAGS" + LDFLAGS="$LDFLAGS -pie" + CFLAGS="$CFLAGS -fPIE" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [ + if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + LDFLAGS="$BAKLDFLAGS" + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + fi + rm -f conftest conftest.c conftest.o + ], [LDFLAGS="$BAKLDFLAGS" ; CFLAGS="$BAKCFLAGS" ; AC_MSG_RESULT(no)]) + ]) +]) + +dnl Check if linker supports -Wl,-z,relro,-z,now. +dnl If so, adds it to LDFLAGS. +AC_DEFUN([ACX_CHECK_RELRO_NOW], [ + AC_ARG_ENABLE([relro_now], AS_HELP_STRING([--enable-relro-now], [Enable full relocation binding at load-time (RELRO NOW, to protect GOT and .dtor areas)])) + AS_IF([test "x$enable_relro_now" = "xyes"], [ + AC_MSG_CHECKING([if $CC supports -Wl,-z,relro,-z,now]) + BAKLDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-z,relro,-z,now" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [ + if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + LDFLAGS="$BAKLDFLAGS" + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + fi + rm -f conftest conftest.c conftest.o + ], [LDFLAGS="$BAKLDFLAGS" ; AC_MSG_RESULT(no)]) + ]) +]) + dnl End of file diff --git a/external/unbound/ax_pthread.m4 b/external/unbound/ax_pthread.m4 index 47fe233b2..ff7d2a67e 100644 --- a/external/unbound/ax_pthread.m4 +++ b/external/unbound/ax_pthread.m4 @@ -82,7 +82,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 20 +#serial 21 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) - AC_MSG_RESULT($ax_pthread_ok) + AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -164,6 +164,20 @@ case ${host_os} in ;; esac +# Clang doesn't consider unrecognized options an error unless we specify +# -Werror. We throw in some extra Clang-specific options to ensure that +# this doesn't happen for GCC, which also accepts -Werror. + +AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) +save_CFLAGS="$CFLAGS" +ax_pthread_extra_flags="-Werror" +CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], + [AC_MSG_RESULT([yes])], + [ax_pthread_extra_flags= + AC_MSG_RESULT([no])]) +CFLAGS="$save_CFLAGS" + if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do @@ -178,7 +192,7 @@ for flag in $ax_pthread_flags; do ;; pthread-config) - AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" @@ -193,7 +207,7 @@ for flag in $ax_pthread_flags; do save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -219,7 +233,7 @@ for flag in $ax_pthread_flags; do LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" - AC_MSG_RESULT($ax_pthread_ok) + AC_MSG_RESULT([$ax_pthread_ok]) if test "x$ax_pthread_ok" = xyes; then break; fi @@ -245,9 +259,9 @@ if test "x$ax_pthread_ok" = xyes; then [attr_name=$attr; break], []) done - AC_MSG_RESULT($attr_name) + AC_MSG_RESULT([$attr_name]) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi @@ -261,24 +275,25 @@ if test "x$ax_pthread_ok" = xyes; then if test "$GCC" = "yes"; then flag="-D_REENTRANT" else + # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac - AC_MSG_RESULT(${flag}) + AC_MSG_RESULT([$flag]) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - ax_cv_PTHREAD_PRIO_INHERIT, [ - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])], + [ax_cv_PTHREAD_PRIO_INHERIT], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], + [[int i = PTHREAD_PRIO_INHERIT;]])], [ax_cv_PTHREAD_PRIO_INHERIT=yes], [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" @@ -301,13 +316,13 @@ fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else ax_pthread_ok=no diff --git a/external/unbound/compat/arc4random.c b/external/unbound/compat/arc4random.c index 27a626b7b..2c859f184 100644 --- a/external/unbound/compat/arc4random.c +++ b/external/unbound/compat/arc4random.c @@ -26,7 +26,9 @@ #include <fcntl.h> #include <limits.h> #include <signal.h> +#ifdef HAVE_STDINT_H #include <stdint.h> +#endif #include <stdlib.h> #include <string.h> #include <unistd.h> diff --git a/external/unbound/compat/getentropy_linux.c b/external/unbound/compat/getentropy_linux.c index 76f0f9df5..37d86a8f1 100644 --- a/external/unbound/compat/getentropy_linux.c +++ b/external/unbound/compat/getentropy_linux.c @@ -46,7 +46,12 @@ #include <errno.h> #include <unistd.h> #include <time.h> + +#if defined(HAVE_SSL) #include <openssl/sha.h> +#elif defined(HAVE_NETTLE) +#include <nettle/sha.h> +#endif #include <linux/types.h> #include <linux/random.h> @@ -67,9 +72,21 @@ HD(b); \ } while (0) +#if defined(HAVE_SSL) +#define CRYPTO_SHA512_CTX SHA512_CTX +#define CRYPTO_SHA512_INIT(x) SHA512_Init(x) +#define CRYPTO_SHA512_FINAL(r, c) SHA512_Final(r, c) #define HR(x, l) (SHA512_Update(&ctx, (char *)(x), (l))) #define HD(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (x))) #define HF(x) (SHA512_Update(&ctx, (char *)&(x), sizeof (void*))) +#elif defined(HAVE_NETTLE) +#define CRYPTO_SHA512_CTX struct sha512_ctx +#define CRYPTO_SHA512_INIT(x) sha512_init(x) +#define CRYPTO_SHA512_FINAL(r, c) sha512_digest(c, SHA512_DIGEST_SIZE, r) +#define HR(x, l) (sha512_update(&ctx, (l), (uint8_t *)(x))) +#define HD(x) (sha512_update(&ctx, sizeof (x), (uint8_t *)&(x))) +#define HF(x) (sha512_update(&ctx, sizeof (void*), (uint8_t *)&(x))) +#endif int getentropy(void *buf, size_t len); @@ -122,7 +139,7 @@ getentropy(void *buf, size_t len) * Try to use sysctl CTL_KERN, KERN_RANDOM, RANDOM_UUID. * sysctl is a failsafe API, so it guarantees a result. This * should work inside a chroot, or when file descriptors are - * exhuasted. + * exhausted. * * However this can fail if the Linux kernel removes support * for sysctl. Starting in 2007, there have been efforts to @@ -337,7 +354,7 @@ getentropy_fallback(void *buf, size_t len) struct rusage ru; sigset_t sigset; struct stat st; - SHA512_CTX ctx; + CRYPTO_SHA512_CTX ctx; static pid_t lastpid; pid_t pid; size_t i, ii, m; @@ -354,7 +371,7 @@ getentropy_fallback(void *buf, size_t len) } for (i = 0; i < len; ) { int j; - SHA512_Init(&ctx); + CRYPTO_SHA512_INIT(&ctx); for (j = 0; j < repeat; j++) { HX((e = gettimeofday(&tv, NULL)) == -1, tv); if (e != -1) { @@ -526,7 +543,7 @@ getentropy_fallback(void *buf, size_t len) # endif #endif /* HAVE_GETAUXVAL */ - SHA512_Final(results, &ctx); + CRYPTO_SHA512_FINAL(results, &ctx); memcpy((char*)buf + i, results, min(sizeof(results), len - i)); i += min(sizeof(results), len - i); } diff --git a/external/unbound/compat/getentropy_solaris.c b/external/unbound/compat/getentropy_solaris.c index 838957382..810098a8d 100644 --- a/external/unbound/compat/getentropy_solaris.c +++ b/external/unbound/compat/getentropy_solaris.c @@ -30,7 +30,9 @@ #include <sys/stat.h> #include <sys/time.h> #include <stdlib.h> +#ifdef HAVE_STDINT_H #include <stdint.h> +#endif #include <stdio.h> #include <termios.h> #include <fcntl.h> @@ -39,10 +41,14 @@ #include <errno.h> #include <unistd.h> #include <time.h> +#ifdef HAVE_SYS_SHA2_H #include <sys/sha2.h> #define SHA512_Init SHA512Init #define SHA512_Update SHA512Update #define SHA512_Final SHA512Final +#else +#include "openssl/sha.h" +#endif #include <sys/vfs.h> #include <sys/statfs.h> diff --git a/external/unbound/compat/isblank.c b/external/unbound/compat/isblank.c new file mode 100644 index 000000000..8feabed45 --- /dev/null +++ b/external/unbound/compat/isblank.c @@ -0,0 +1,45 @@ +/* isblank - compatibility implementation of isblank + * + * Copyright (c) 2015, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +/* return true for a blank character: space or tab */ +int isblank(int c); + +/* implementation of isblank. unsigned char is the argument */ +int +isblank(int c) +{ + return (c==' ' || c=='\t'); +} diff --git a/external/unbound/compat/reallocarray.c b/external/unbound/compat/reallocarray.c index 04d5d71c8..c969bd067 100644 --- a/external/unbound/compat/reallocarray.c +++ b/external/unbound/compat/reallocarray.c @@ -18,7 +18,10 @@ #include "config.h" #include <sys/types.h> #include <errno.h> +#ifdef HAVE_STDINT_H #include <stdint.h> +#endif +#include <limits.h> #include <stdlib.h> /* diff --git a/external/unbound/compat/sha512.c b/external/unbound/compat/sha512.c index ac046abb7..744b7ac7b 100644 --- a/external/unbound/compat/sha512.c +++ b/external/unbound/compat/sha512.c @@ -70,7 +70,7 @@ unsigned char *SHA512(void *data, unsigned int data_len, unsigned char *digest); * Please make sure that your system defines BYTE_ORDER. If your * architecture is little-endian, make sure it also defines * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are - * equivilent. + * equivalent. * * If your system does not define the above, then you can do so by * hand like this: diff --git a/external/unbound/compat/snprintf.c b/external/unbound/compat/snprintf.c index 066355703..97cd7061f 100644 --- a/external/unbound/compat/snprintf.c +++ b/external/unbound/compat/snprintf.c @@ -42,6 +42,7 @@ #ifdef HAVE_STDINT_H #include <stdint.h> #endif +#include <limits.h> /* for test */ /* #define SNPRINTF_TEST 1 */ @@ -428,7 +429,7 @@ print_num_llp(char** at, size_t* left, int* ret, void* value, char buf[PRINT_DEC_BUFSZ]; int negative = 0; int zero = (value == 0); -#if defined(UINTPTR_MAX) && defined(UINT32_MAX) && (UINTPTR_MAX == UINT32_MAX) +#if defined(SIZE_MAX) && defined(UINT32_MAX) && (UINT32_MAX == SIZE_MAX || INT32_MAX == SIZE_MAX) /* avoid warning about upcast on 32bit systems */ unsigned long long llvalue = (unsigned long)value; #else diff --git a/external/unbound/config.h.cmake.in b/external/unbound/config.h.cmake.in index 377bcd97f..c64c3babb 100644 --- a/external/unbound/config.h.cmake.in +++ b/external/unbound/config.h.cmake.in @@ -97,6 +97,10 @@ don't. */ #cmakedefine HAVE_DECL_STRLCPY +/* Define to 1 if you have the declaration of `XML_StopParser', and to 0 if + you don't. */ +#cmakedefine HAVE_DECL_XML_STOPPARSER + /* Define to 1 if you have the <dlfcn.h> header file. */ #cmakedefine HAVE_DLFCN_H @@ -154,6 +158,9 @@ /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #cmakedefine HAVE_FSEEKO +/* Define to 1 if you have the `fsync' function. */ +#cmakedefine HAVE_FSYNC + /* Whether getaddrinfo is available */ #cmakedefine HAVE_GETADDRINFO @@ -208,6 +215,9 @@ /* Define to 1 if you have the <iphlpapi.h> header file. */ #cmakedefine HAVE_IPHLPAPI_H +/* Define to 1 if you have the `isblank' function. */ +#undef HAVE_ISBLANK + /* Define to 1 if you have the `kill' function. */ #cmakedefine HAVE_KILL @@ -235,6 +245,9 @@ /* Define to 1 if you have the <netinet/in.h> header file. */ #cmakedefine HAVE_NETINET_IN_H +/* Use libnettle for crypto */ +#cmakedefine HAVE_NETTLE + /* Use libnss for crypto */ #cmakedefine HAVE_NSS @@ -283,7 +296,7 @@ /* Define to 1 if you have the `recvmsg' function. */ #cmakedefine HAVE_RECVMSG -/* Define to 1 if you have the `sbrk' function. */ +/* define if you have the sbrk() call */ #cmakedefine HAVE_SBRK /* Define to 1 if you have the `sendmsg' function. */ @@ -538,6 +551,9 @@ /* The size of `time_t', as computed by sizeof. */ #undef SIZEOF_TIME_T +/* define if (v)snprintf does not return length needed, (but length used) */ +#undef SNPRINTF_RET_BROKEN + /* Define to 1 if you have the ANSI C header files. */ #cmakedefine STDC_HEADERS @@ -861,13 +877,13 @@ #endif -#ifndef HAVE_SNPRINTF +#if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) #define snprintf snprintf_unbound #define vsnprintf vsnprintf_unbound #include <stdarg.h> int snprintf (char *str, size_t count, const char *fmt, ...); int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); -#endif /* HAVE_SNPRINTF */ +#endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ #ifndef HAVE_INET_PTON @@ -964,6 +980,11 @@ int memcmp(const void *x, const void *y, size_t n); char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_ISBLANK +#define isblank unbound_isblank +int isblank(int c); +#endif + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; diff --git a/external/unbound/config.h.in b/external/unbound/config.h.in index 7576e1509..3364395c4 100644 --- a/external/unbound/config.h.in +++ b/external/unbound/config.h.in @@ -94,6 +94,10 @@ don't. */ #undef HAVE_DECL_STRLCPY +/* Define to 1 if you have the declaration of `XML_StopParser', and to 0 if + you don't. */ +#undef HAVE_DECL_XML_STOPPARSER + /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H @@ -151,6 +155,9 @@ /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO +/* Define to 1 if you have the `fsync' function. */ +#undef HAVE_FSYNC + /* Whether getaddrinfo is available */ #undef HAVE_GETADDRINFO @@ -205,6 +212,9 @@ /* Define to 1 if you have the <iphlpapi.h> header file. */ #undef HAVE_IPHLPAPI_H +/* Define to 1 if you have the `isblank' function. */ +#undef HAVE_ISBLANK + /* Define to 1 if you have the `kill' function. */ #undef HAVE_KILL @@ -232,6 +242,9 @@ /* Define to 1 if you have the <netinet/in.h> header file. */ #undef HAVE_NETINET_IN_H +/* Use libnettle for crypto */ +#undef HAVE_NETTLE + /* Use libnss for crypto */ #undef HAVE_NSS @@ -280,7 +293,7 @@ /* Define to 1 if you have the `recvmsg' function. */ #undef HAVE_RECVMSG -/* Define to 1 if you have the `sbrk' function. */ +/* define if you have the sbrk() call */ #undef HAVE_SBRK /* Define to 1 if you have the `sendmsg' function. */ @@ -535,6 +548,9 @@ /* The size of `time_t', as computed by sizeof. */ #undef SIZEOF_TIME_T +/* define if (v)snprintf does not return length needed, (but length used) */ +#undef SNPRINTF_RET_BROKEN + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS @@ -848,15 +864,13 @@ #define MAXHOSTNAMELEN 256 #endif - -#ifndef HAVE_SNPRINTF +#if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) #define snprintf snprintf_unbound #define vsnprintf vsnprintf_unbound #include <stdarg.h> int snprintf (char *str, size_t count, const char *fmt, ...); int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); -#endif /* HAVE_SNPRINTF */ - +#endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ #ifndef HAVE_INET_PTON #define inet_pton inet_pton_unbound @@ -952,6 +966,11 @@ int memcmp(const void *x, const void *y, size_t n); char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_ISBLANK +#define isblank unbound_isblank +int isblank(int c); +#endif + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; diff --git a/external/unbound/configure b/external/unbound/configure index e2b1bdec4..2e0e34cf4 100755 --- a/external/unbound/configure +++ b/external/unbound/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.5.5. +# Generated by GNU Autoconf 2.69 for unbound 1.5.8. # # Report bugs to <unbound-bugs@nlnetlabs.nl>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.5.5' -PACKAGE_STRING='unbound 1.5.5' +PACKAGE_VERSION='1.5.8' +PACKAGE_STRING='unbound 1.5.8' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl' PACKAGE_URL='' @@ -661,6 +661,7 @@ CHECKLOCK_OBJ staticexe UNBOUND_EVENT_UNINSTALL UNBOUND_EVENT_INSTALL +SSLLIB HAVE_SSL CONFIG_DATE NETBSD_LINTFLAGS @@ -683,6 +684,7 @@ PYTHON_LDFLAGS PYTHON_CPPFLAGS PYTHON PYTHON_VERSION +PTHREAD_CFLAGS_ONLY PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC @@ -804,6 +806,8 @@ with_username enable_checking enable_debug enable_flto +enable_pie +enable_relro_now enable_shared enable_static with_pic @@ -821,6 +825,7 @@ with_solaris_threads with_pyunbound with_pythonmodule with_nss +with_nettle with_ssl enable_sha2 enable_gost @@ -1389,7 +1394,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 unbound 1.5.5 to adapt to many kinds of systems. +\`configure' configures unbound 1.5.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1454,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.5.5:";; + short | recursive ) echo "Configuration of unbound 1.5.8:";; esac cat <<\_ACEOF @@ -1465,6 +1470,10 @@ Optional Features: --enable-checking Enable warnings, asserts, makefile-dependencies --enable-debug same as enable-checking --disable-flto Disable link-time optimization (gcc specific option) + --enable-pie Enable Position-Independent Executable (eg. to fully + benefit from ASLR, small performance penalty) + --enable-relro-now Enable full relocation binding at load-time (RELRO + NOW, to protect GOT and .dtor areas) --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -1528,6 +1537,7 @@ Optional Packages: --with-pythonmodule build Python module, or --without-pythonmodule to disable script engine. (default=no) --with-nss=path use libnss instead of openssl, installed at path. + --with-nettle=path use libnettle as crypto library, installed at path. --with-ssl=pathname enable SSL (will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr) @@ -1629,7 +1639,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.5.5 +unbound configure 1.5.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2338,7 +2348,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 unbound $as_me 1.5.5, which was +It was created by unbound $as_me 1.5.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2690,11 +2700,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=5 -UNBOUND_VERSION_MICRO=5 +UNBOUND_VERSION_MICRO=8 LIBUNBOUND_CURRENT=5 -LIBUNBOUND_REVISION=7 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=3 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2738,6 +2748,10 @@ LIBUNBOUND_AGE=3 # 1.5.2 had 5:5:3 # 1.5.3 had 5:6:3 # 1.5.4 had 5:7:3 +# 1.5.5 had 5:8:3 +# 1.5.6 had 5:9:3 +# 1.5.7 had 5:10:3 +# 1.5.8 had 5:11:3 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -5859,7 +5873,7 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : - if $CC $CFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + if $CC $CFLAGS -o conftest conftest.c 2>&1 | $GREP -e "warning: no debug symbols in executable" -e "warning: object" >/dev/null; then CFLAGS="$BAKCFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -5879,6 +5893,96 @@ rm -f core conftest.err conftest.$ac_objext \ fi + # Check whether --enable-pie was given. +if test "${enable_pie+set}" = set; then : + enableval=$enable_pie; +fi + + if test "x$enable_pie" = "xyes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports PIE" >&5 +$as_echo_n "checking if $CC supports PIE... " >&6; } + BAKLDFLAGS="$LDFLAGS" + BAKCFLAGS="$CFLAGS" + LDFLAGS="$LDFLAGS -pie" + CFLAGS="$CFLAGS -fPIE" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + LDFLAGS="$BAKLDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + rm -f conftest conftest.c conftest.o + +else + LDFLAGS="$BAKLDFLAGS" ; CFLAGS="$BAKCFLAGS" ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + + + # Check whether --enable-relro_now was given. +if test "${enable_relro_now+set}" = set; then : + enableval=$enable_relro_now; +fi + + if test "x$enable_relro_now" = "xyes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wl,-z,relro,-z,now" >&5 +$as_echo_n "checking if $CC supports -Wl,-z,relro,-z,now... " >&6; } + BAKLDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-z,relro,-z,now" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + if $CC $CFLAGS $LDFLAGS -o conftest conftest.c 2>&1 | grep "warning: no debug symbols in executable" >/dev/null; then + LDFLAGS="$BAKLDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + rm -f conftest conftest.c conftest.o + +else + LDFLAGS="$BAKLDFLAGS" ; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : @@ -15421,6 +15525,37 @@ case ${host_os} in ;; esac +# Clang doesn't consider unrecognized options an error unless we specify +# -Werror. We throw in some extra Clang-specific options to ensure that +# this doesn't happen for GCC, which also accepts -Werror. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5 +$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; } +save_CFLAGS="$CFLAGS" +ax_pthread_extra_flags="-Werror" +CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void); +int +main () +{ +foo() + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + ax_pthread_extra_flags= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS="$save_CFLAGS" + if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do @@ -15490,7 +15625,7 @@ $as_echo_n "checking for the pthreads library -l$flag... " >&6; } save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -15588,12 +15723,13 @@ $as_echo_n "checking if more special flags are required for pthreads... " >&6; } if test "$GCC" = "yes"; then flag="-D_REENTRANT" else + # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 -$as_echo "${flag}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5 +$as_echo "$flag" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi @@ -15606,8 +15742,7 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - - #include <pthread.h> +#include <pthread.h> int main () { @@ -15739,6 +15874,43 @@ _ACEOF fi + if echo "$CFLAGS" | grep -e "-pthread" >/dev/null; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread unused during linking" >&5 +$as_echo_n "checking if -pthread unused during linking... " >&6; } + # catch clang warning 'argument unused during compilation' + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + +int main(void) {return 0;} + +_ACEOF + pthread_unused="yes" + # first compile + echo "$CC $CFLAGS -c conftest.c -o conftest.o" >&5 + $CC $CFLAGS -c conftest.c -o conftest.o 2>&5 >&5 + if test $? = 0; then + # then link + echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&5 + $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&5 >&5 + if test $? -ne 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS=`echo "$CFLAGS" | sed -e 's/-pthread//'` + PTHREAD_CFLAGS_ONLY="-pthread" + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi # endif cc successful + rm -f conftest conftest.c conftest.o + fi # endif -pthread in CFLAGS + + : else ax_pthread_ok=no @@ -16101,7 +16273,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu as_fn_error $? "Python version >= 2.4.0 is required" "$LINENO" 5 fi - PY_MAJOR_VERSION="`$PYTHON -c "import sys; print(sys.version_info.major)"`" + PY_MAJOR_VERSION="`$PYTHON -c \"import sys; print(sys.version_info[0])\"`" # Have Python @@ -16309,13 +16481,44 @@ $as_echo "#define HAVE_NSS 1" >>confdefs.h CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" fi LIBS="$LIBS -lnss3 -lnspr4" + SSLLIB="" + + +fi + + +# libnettle +USE_NETTLE="no" + +# Check whether --with-nettle was given. +if test "${with_nettle+set}" = set; then : + withval=$with_nettle; + USE_NETTLE="yes" + +$as_echo "#define HAVE_NETTLE 1" >>confdefs.h + + if test "$withval" != "" -a "$withval" != "yes"; then + CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" + LDFLAGS="$LDFLAGS -L$withval/lib" + + if test "x$enable_rpath" = xyes; then + if echo "$withval/lib" | grep "^/" >/dev/null; then + RUNTIME_PATH="$RUNTIME_PATH -R$withval/lib" + fi + fi + + else + CPPFLAGS="$CPPFLAGS -I/usr/include/nettle" + fi + LIBS="$LIBS -lhogweed -lnettle -lgmp" + SSLLIB="" fi # openssl -if test $USE_NSS = "no"; then +if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then # Check whether --with-ssl was given. @@ -16484,67 +16687,6 @@ rm -f core conftest.err conftest.$ac_objext \ fi - # openssl engine functionality needs dlopen(). - BAKLIBS="$LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dl; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : - break -fi -done -if ${ac_cv_search_dlopen+:} false; then : - -else - ac_cv_search_dlopen=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - - if test "$LIBS" != "$BAKLIBS"; then - LIBSSL_LIBS="$LIBSSL_LIBS -ldl" - fi fi for ac_header in openssl/ssl.h do : @@ -16682,6 +16824,7 @@ fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext +SSLLIB="-lssl" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5 $as_echo_n "checking for LibreSSL... " >&6; } if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then @@ -16879,6 +17022,7 @@ _ACEOF fi + # Check whether --enable-sha2 was given. if test "${enable_sha2+set}" = set; then : enableval=$enable_sha2; @@ -16902,7 +17046,7 @@ if test "${enable_gost+set}" = set; then : fi use_gost="no" -if test $USE_NSS = "no"; then +if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then case "$enable_gost" in no) ;; @@ -17055,7 +17199,7 @@ case "$enable_ecdsa" in no) ;; *) - if test $USE_NSS = "no"; then + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then ac_fn_c_check_func "$LINENO" "ECDSA_sign" "ac_cv_func_ECDSA_sign" if test "x$ac_cv_func_ECDSA_sign" = xyes; then : @@ -17546,6 +17690,20 @@ fi done +ac_fn_c_check_decl "$LINENO" "XML_StopParser" "ac_cv_have_decl_XML_StopParser" "$ac_includes_default +#include <expat.h> + +" +if test "x$ac_cv_have_decl_XML_StopParser" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_XML_STOPPARSER $ac_have_decl +_ACEOF + # set static linking if requested @@ -18003,7 +18161,7 @@ if test "$ac_res" != no; then : fi -for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid sbrk chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent +for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -18062,6 +18220,33 @@ fi done +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5 +$as_echo_n "checking for sbrk... " >&6; } +# catch the warning of deprecated sbrk +old_cflags="$CFLAGS" +CFLAGS="$CFLAGS -Werror" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + +int main(void) { void* cur = sbrk(0); printf("%u\n", (unsigned)(size_t)((char*)cur - (char*)sbrk(0))); return 0; } + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SBRK 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS="$old_cflags" + # check if setreuid en setregid fail, on MacOSX10.4(darwin8). if echo $build_os | grep darwin8 > /dev/null; then @@ -18124,6 +18309,48 @@ esac fi +# test if snprintf return the proper length +if test "x$ac_cv_func_snprintf" = xyes; then + if test c${cross_compiling} = cno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct snprintf return value" >&5 +$as_echo_n "checking for correct snprintf return value... " >&6; } + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + +int main(void) { return !(snprintf(NULL, 0, "test") == 4); } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define SNPRINTF_RET_BROKEN /**/" >>confdefs.h + + case " $LIBOBJS " in + *" snprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" + ;; +esac + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat" if test "x$ac_cv_func_strlcat" = xyes; then : $as_echo "#define HAVE_STRLCAT 1" >>confdefs.h @@ -18180,6 +18407,20 @@ esac fi +ac_fn_c_check_func "$LINENO" "isblank" "ac_cv_func_isblank" +if test "x$ac_cv_func_isblank" = xyes; then : + $as_echo "#define HAVE_ISBLANK 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" isblank.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS isblank.$ac_objext" + ;; +esac + +fi + + LIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray" @@ -18920,7 +19161,7 @@ _ACEOF -version=1.5.5 +version=1.5.8 date=`date +'%b %e, %Y'` @@ -19435,7 +19676,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 unbound $as_me 1.5.5, which was +This file was extended by unbound $as_me 1.5.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19501,7 +19742,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="\\ -unbound config.status 1.5.5 +unbound config.status 1.5.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/external/unbound/configure.ac b/external/unbound/configure.ac index 5ad39c7d5..d3f4ef672 100644 --- a/external/unbound/configure.ac +++ b/external/unbound/configure.ac @@ -10,14 +10,14 @@ sinclude(dnstap/dnstap.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[5]) -m4_define([VERSION_MICRO],[5]) +m4_define([VERSION_MICRO],[8]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=5 -LIBUNBOUND_REVISION=7 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=3 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -61,6 +61,10 @@ LIBUNBOUND_AGE=3 # 1.5.2 had 5:5:3 # 1.5.3 had 5:6:3 # 1.5.4 had 5:7:3 +# 1.5.5 had 5:8:3 +# 1.5.6 had 5:9:3 +# 1.5.7 had 5:10:3 +# 1.5.8 had 5:11:3 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -246,6 +250,8 @@ case "$debug_enabled" in ;; esac ACX_CHECK_FLTO +ACX_CHECK_PIE +ACX_CHECK_RELRO_NOW AC_C_INLINE ACX_CHECK_FORMAT_ATTRIBUTE @@ -412,6 +418,36 @@ if test x_$withval != x_no; then CC="$PTHREAD_CC" ub_have_pthreads=yes AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include <pthread.h>]) + + if echo "$CFLAGS" | grep -e "-pthread" >/dev/null; then + AC_MSG_CHECKING([if -pthread unused during linking]) + # catch clang warning 'argument unused during compilation' + AC_LANG_CONFTEST([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT +[[ +int main(void) {return 0;} +]])]) + pthread_unused="yes" + # first compile + echo "$CC $CFLAGS -c conftest.c -o conftest.o" >&AS_MESSAGE_LOG_FD + $CC $CFLAGS -c conftest.c -o conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD + if test $? = 0; then + # then link + echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&AS_MESSAGE_LOG_FD + $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD + if test $? -ne 0; then + AC_MSG_RESULT(yes) + CFLAGS=`echo "$CFLAGS" | sed -e 's/-pthread//'` + PTHREAD_CFLAGS_ONLY="-pthread" + AC_SUBST(PTHREAD_CFLAGS_ONLY) + else + AC_MSG_RESULT(no) + fi + else + AC_MSG_RESULT(no) + fi # endif cc successful + rm -f conftest conftest.c conftest.o + fi # endif -pthread in CFLAGS + ]) fi @@ -475,7 +511,7 @@ if test x_$ub_test_python != x_no; then AC_ERROR([Python version >= 2.4.0 is required]) fi - PY_MAJOR_VERSION="`$PYTHON -c "import sys; print(sys.version_info.major)"`" + [PY_MAJOR_VERSION="`$PYTHON -c \"import sys; print(sys.version_info[0])\"`"] AC_SUBST(PY_MAJOR_VERSION) # Have Python AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) @@ -558,13 +594,34 @@ AC_ARG_WITH([nss], AC_HELP_STRING([--with-nss=path], CPPFLAGS="-I/usr/include/nspr4 $CPPFLAGS" fi LIBS="$LIBS -lnss3 -lnspr4" + SSLLIB="" + ] +) + +# libnettle +USE_NETTLE="no" +AC_ARG_WITH([nettle], AC_HELP_STRING([--with-nettle=path], + [use libnettle as crypto library, installed at path.]), + [ + USE_NETTLE="yes" + AC_DEFINE(HAVE_NETTLE, 1, [Use libnettle for crypto]) + if test "$withval" != "" -a "$withval" != "yes"; then + CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" + LDFLAGS="$LDFLAGS -L$withval/lib" + ACX_RUNTIME_PATH_ADD([$withval/lib]) + else + CPPFLAGS="$CPPFLAGS -I/usr/include/nettle" + fi + LIBS="$LIBS -lhogweed -lnettle -lgmp" + SSLLIB="" ] ) # openssl -if test $USE_NSS = "no"; then +if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then ACX_WITH_SSL ACX_LIB_SSL +SSLLIB="-lssl" AC_MSG_CHECKING([for LibreSSL]) if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then AC_MSG_RESULT([yes]) @@ -599,6 +656,7 @@ AC_INCLUDES_DEFAULT #include <openssl/evp.h> ]) fi +AC_SUBST(SSLLIB) AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) @@ -710,7 +768,7 @@ AC_MSG_RESULT($ac_cv_c_gost_works) AC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support])) use_gost="no" -if test $USE_NSS = "no"; then +if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then case "$enable_gost" in no) ;; @@ -724,7 +782,7 @@ case "$enable_gost" in fi ;; esac -fi dnl !USE_NSS +fi dnl !USE_NSS && !USE_NETTLE AC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support])) use_ecdsa="no" @@ -732,7 +790,7 @@ case "$enable_ecdsa" in no) ;; *) - if test $USE_NSS = "no"; then + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade or rerun with --disable-ecdsa])]) AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade or rerun with --disable-ecdsa])]) AC_CHECK_DECLS([NID_X9_62_prime256v1, NID_secp384r1], [], [AC_MSG_ERROR([OpenSSL does not support the ECDSA curves: please upgrade or rerun with --disable-ecdsa])], [AC_INCLUDES_DEFAULT @@ -878,6 +936,9 @@ if test x_$found_libexpat != x_yes; then AC_ERROR([Could not find libexpat, expat.h]) fi AC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT +#include <expat.h> +]) # set static linking if requested AC_SUBST(staticexe) @@ -982,10 +1043,23 @@ AC_INCLUDES_DEFAULT #endif ]) AC_SEARCH_LIBS([setusercontext], [util]) -AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid sbrk chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent]) +AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync]) AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) +AC_MSG_CHECKING([for sbrk]) +# catch the warning of deprecated sbrk +old_cflags="$CFLAGS" +CFLAGS="$CFLAGS -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT +[[ +int main(void) { void* cur = sbrk(0); printf("%u\n", (unsigned)(size_t)((char*)cur - (char*)sbrk(0))); return 0; } +]])], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SBRK, 1, [define if you have the sbrk() call]) + ], [AC_MSG_RESULT(no)]) +CFLAGS="$old_cflags" + # check if setreuid en setregid fail, on MacOSX10.4(darwin8). if echo $build_os | grep darwin8 > /dev/null; then AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) @@ -994,10 +1068,25 @@ AC_REPLACE_FUNCS(inet_aton) AC_REPLACE_FUNCS(inet_pton) AC_REPLACE_FUNCS(inet_ntop) AC_REPLACE_FUNCS(snprintf) +# test if snprintf return the proper length +if test "x$ac_cv_func_snprintf" = xyes; then + if test c${cross_compiling} = cno; then + AC_MSG_CHECKING([for correct snprintf return value]) + AC_RUN_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT +[[ +int main(void) { return !(snprintf(NULL, 0, "test") == 4); } +]])], [AC_MSG_RESULT(yes)], [ + AC_MSG_RESULT(no) + AC_DEFINE([SNPRINTF_RET_BROKEN], [], [define if (v)snprintf does not return length needed, (but length used)]) + AC_LIBOBJ(snprintf) + ]) + fi +fi AC_REPLACE_FUNCS(strlcat) AC_REPLACE_FUNCS(strlcpy) AC_REPLACE_FUNCS(memmove) AC_REPLACE_FUNCS(gmtime_r) +AC_REPLACE_FUNCS(isblank) dnl without CTIME, ARC4-functions and without reallocarray. LIBOBJ_WITHOUT_CTIMEARC4="$LIBOBJS" AC_SUBST(LIBOBJ_WITHOUT_CTIMEARC4) @@ -1232,7 +1321,13 @@ AHX_CONFIG_FORMAT_ATTRIBUTE AHX_CONFIG_UNUSED_ATTRIBUTE AHX_CONFIG_FSEEKO AHX_CONFIG_MAXHOSTNAMELEN -AHX_CONFIG_SNPRINTF(unbound) +#if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) +#define snprintf snprintf_unbound +#define vsnprintf vsnprintf_unbound +#include <stdarg.h> +int snprintf (char *str, size_t count, const char *fmt, ...); +int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); +#endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ AHX_CONFIG_INET_PTON(unbound) AHX_CONFIG_INET_NTOP(unbound) AHX_CONFIG_INET_ATON(unbound) @@ -1255,6 +1350,11 @@ AHX_MEMCMP_BROKEN(unbound) char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_ISBLANK +#define isblank unbound_isblank +int isblank(int c); +#endif + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; diff --git a/external/unbound/configure_checks.cmake b/external/unbound/configure_checks.cmake index 6b812858e..84c02ac94 100644 --- a/external/unbound/configure_checks.cmake +++ b/external/unbound/configure_checks.cmake @@ -71,6 +71,7 @@ check_function_exists(inet_ntop HAVE_INET_NTOP) check_function_exists(inet_pton HAVE_INET_PTON) check_function_exists(initgroups HAVE_INITGROUPS) check_function_exists(ioctlsocket HAVE_IOCTLSOCKET) +check_function_exists(isblank HAVE_ISBLANK) check_function_exists(kill HAVE_KILL) check_function_exists(localtime_r HAVE_LOCALTIME_R) check_function_exists(malloc HAVE_MALLOC) @@ -211,7 +212,7 @@ set(UNBOUND_PIDFILE "${CMAKE_INSTALL_PREFIX}/etc/unbound/unbound.pid" # Copied from configure.ac. set(WINVER 0x0502) -set(PACKAGE_VERSION "1.4.23") +set(PACKAGE_VERSION "1.5.8") set(PACKAGE_NAME "${PROJECT_NAME}") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(MAXSYSLOGMSGLEN 10240) diff --git a/external/unbound/contrib/aaaa-filter-iterator.patch b/external/unbound/contrib/aaaa-filter-iterator.patch index 8e03d7c99..71a57b46f 100644 --- a/external/unbound/contrib/aaaa-filter-iterator.patch +++ b/external/unbound/contrib/aaaa-filter-iterator.patch @@ -312,7 +312,7 @@ + /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. - * This state is reponsible for iterating through a list of + * This state is responsible for iterating through a list of @@ -309,6 +320,13 @@ struct iter_qstate { */ int refetch_glue; diff --git a/external/unbound/contrib/create_unbound_ad_servers.cmd b/external/unbound/contrib/create_unbound_ad_servers.cmd index e5ada0bf4..91d18db3e 100644 --- a/external/unbound/contrib/create_unbound_ad_servers.cmd +++ b/external/unbound/contrib/create_unbound_ad_servers.cmd @@ -1,33 +1,33 @@ -@Echo off -rem Convert the Yoyo.org anti-ad server listing -rem into an unbound dns spoof redirection list. -rem Written by Y.Voinov (c) 2014 - -rem Note: Wget required! - -rem Variables -set prefix="C:\Program Files (x86)" -set dst_dir=%prefix%\Unbound -set work_dir=%TEMP% -set list_addr="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=" - -rem Check Wget installed -for /f "delims=" %%a in ('where wget') do @set wget=%%a -if /I "%wget%"=="" echo Wget not found. If installed, add path to PATH environment variable. & exit 1 -echo Wget found: %wget% - -"%wget%" -O %work_dir%\yoyo_ad_servers %list_addr% - -del /Q /F /S %dst_dir%\unbound_ad_servers - -for /F "eol=; tokens=*" %%a in (%work_dir%\yoyo_ad_servers) do ( -echo local-zone: %%a redirect>>%dst_dir%\unbound_ad_servers -echo local-data: "%%a A 127.0.0.1">>%dst_dir%\unbound_ad_servers -) - -echo Done. -rem then add an include line to your unbound.conf pointing to the full path of -rem the unbound_ad_servers file: -rem -rem include: $dst_dir/unbound_ad_servers -rem +@Echo off
+rem Convert the Yoyo.org anti-ad server listing
+rem into an unbound dns spoof redirection list.
+rem Written by Y.Voinov (c) 2014
+
+rem Note: Wget required!
+
+rem Variables
+set prefix="C:\Program Files (x86)"
+set dst_dir=%prefix%\Unbound
+set work_dir=%TEMP%
+set list_addr="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D="
+
+rem Check Wget installed
+for /f "delims=" %%a in ('where wget') do @set wget=%%a
+if /I "%wget%"=="" echo Wget not found. If installed, add path to PATH environment variable. & exit 1
+echo Wget found: %wget%
+
+"%wget%" -O %work_dir%\yoyo_ad_servers %list_addr%
+
+del /Q /F /S %dst_dir%\unbound_ad_servers
+
+for /F "eol=; tokens=*" %%a in (%work_dir%\yoyo_ad_servers) do (
+echo local-zone: %%a redirect>>%dst_dir%\unbound_ad_servers
+echo local-data: "%%a A 127.0.0.1">>%dst_dir%\unbound_ad_servers
+)
+
+echo Done.
+rem then add an include line to your unbound.conf pointing to the full path of
+rem the unbound_ad_servers file:
+rem
+rem include: $dst_dir/unbound_ad_servers
+rem
diff --git a/external/unbound/contrib/unbound.spec_fedora b/external/unbound/contrib/unbound.spec_fedora index f8b2e7512..e7e9ac073 100644 --- a/external/unbound/contrib/unbound.spec_fedora +++ b/external/unbound/contrib/unbound.spec_fedora @@ -273,7 +273,7 @@ fi - Change make/configure lines to attempt to fix -lphtread linking issue * Thu Feb 18 2010 Paul Wouters <paul@xelerance.com> - 1.4.1-2 -- Removed dependancy for dnssec-conf +- Removed dependency for dnssec-conf - Added ISC DLV key (formerly in dnssec-conf) - Fixup old DLV locations in unbound.conf file via %%post - Fix parent child disagreement handling and no-ipv6 present [svn r1953] @@ -312,7 +312,7 @@ fi - Re-enabled glob.patch * Wed May 20 2009 Paul Wouters <paul@xelerance.com> - 1.2.1-7 -- unbound-iterator.patch was not commited +- unbound-iterator.patch was not committed * Wed May 20 2009 Paul Wouters <paul@xelerance.com> - 1.2.1-6 - Fix for https://bugzilla.redhat.com/show_bug.cgi?id=499793 @@ -338,11 +338,11 @@ fi * Wed Jan 14 2009 Paul Wouters <paul@xelerance.com - 1.2.0-1 - Updated to 1.2.0 -- Added dependancy on minimum SSL for CVE-2008-5077 -- Added dependancy on bc for unbound-munin +- Added dependency on minimum SSL for CVE-2008-5077 +- Added dependency on bc for unbound-munin - Added minimum requirement of libevent 1.4.5. Crashes with older versions (note: libevent is stale in EL-4 and not in EL-5, needs fixing there) -- Removed dependancy on selinux-policy (will get used when available) +- Removed dependency on selinux-policy (will get used when available) - Enable options as per draft-wijngaards-dnsext-resolver-side-mitigation-00.txt - Enable unwanted-reply-threshold to mitigate against a Kaminsky attack - Enable val-clean-additional to drop addition unsigned data from signed @@ -423,7 +423,7 @@ fi - Build against ldns-1.3.0 * Wed May 21 2008 Paul Wouters <paul@xelerance.com> - 1.0.0-1 -- Split of -devel package, fixed dependancies, make rpmlint happy +- Split of -devel package, fixed dependencies, make rpmlint happy * Thu Apr 25 2008 Wouter Wijngaards <wouter@nlnetlabs.nl> - 0.12 - Using parts from ports collection entry by Jaap Akkerhuis. diff --git a/external/unbound/daemon/remote.c b/external/unbound/daemon/remote.c index 300948b32..d533e0867 100644 --- a/external/unbound/daemon/remote.c +++ b/external/unbound/daemon/remote.c @@ -208,12 +208,14 @@ daemon_remote_create(struct config_file* cfg) return NULL; } /* no SSLv2, SSLv3 because has defects */ - if(!(SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)){ + if((SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) + != SSL_OP_NO_SSLv2){ log_crypto_err("could not set SSL_OP_NO_SSLv2"); daemon_remote_delete(rc); return NULL; } - if(!(SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)){ + if((SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) + != SSL_OP_NO_SSLv3){ log_crypto_err("could not set SSL_OP_NO_SSLv3"); daemon_remote_delete(rc); return NULL; @@ -1259,8 +1261,6 @@ struct del_info { size_t len; /** labels */ int labs; - /** now */ - time_t now; /** time to invalidate to */ time_t expired; /** number of rrsets removed */ @@ -1289,7 +1289,7 @@ infra_del_host(struct lruhash_entry* e, void* arg) d->timeout_AAAA = 0; d->timeout_other = 0; rtt_init(&d->rtt); - if(d->ttl >= inf->now) { + if(d->ttl > inf->expired) { d->ttl = inf->expired; inf->num_keys++; } @@ -1318,7 +1318,6 @@ do_flush_infra(SSL* ssl, struct worker* worker, char* arg) inf.name = 0; inf.len = 0; inf.labs = 0; - inf.now = *worker->env.now; inf.expired = *worker->env.now; inf.expired -= 3; /* handle 3 seconds skew between threads */ inf.num_rrsets = 0; @@ -1349,7 +1348,7 @@ zone_del_rrset(struct lruhash_entry* e, void* arg) if(dname_subdomain_c(k->rk.dname, inf->name)) { struct packed_rrset_data* d = (struct packed_rrset_data*)e->data; - if(d->ttl >= inf->now) { + if(d->ttl > inf->expired) { d->ttl = inf->expired; inf->num_rrsets++; } @@ -1365,7 +1364,7 @@ zone_del_msg(struct lruhash_entry* e, void* arg) struct msgreply_entry* k = (struct msgreply_entry*)e->key; if(dname_subdomain_c(k->key.qname, inf->name)) { struct reply_info* d = (struct reply_info*)e->data; - if(d->ttl >= inf->now) { + if(d->ttl > inf->expired) { d->ttl = inf->expired; inf->num_msgs++; } @@ -1381,7 +1380,7 @@ zone_del_kcache(struct lruhash_entry* e, void* arg) struct key_entry_key* k = (struct key_entry_key*)e->key; if(dname_subdomain_c(k->name, inf->name)) { struct key_entry_data* d = (struct key_entry_data*)e->data; - if(d->ttl >= inf->now) { + if(d->ttl > inf->expired) { d->ttl = inf->expired; inf->num_keys++; } @@ -1404,7 +1403,6 @@ do_flush_zone(SSL* ssl, struct worker* worker, char* arg) inf.name = nm; inf.len = nmlen; inf.labs = nmlabs; - inf.now = *worker->env.now; inf.expired = *worker->env.now; inf.expired -= 3; /* handle 3 seconds skew between threads */ inf.num_rrsets = 0; @@ -1474,7 +1472,6 @@ do_flush_bogus(SSL* ssl, struct worker* worker) struct del_info inf; /* what we do is to set them all expired */ inf.worker = worker; - inf.now = *worker->env.now; inf.expired = *worker->env.now; inf.expired -= 3; /* handle 3 seconds skew between threads */ inf.num_rrsets = 0; @@ -1550,7 +1547,6 @@ do_flush_negative(SSL* ssl, struct worker* worker) struct del_info inf; /* what we do is to set them all expired */ inf.worker = worker; - inf.now = *worker->env.now; inf.expired = *worker->env.now; inf.expired -= 3; /* handle 3 seconds skew between threads */ inf.num_rrsets = 0; @@ -2283,11 +2279,17 @@ do_list_local_data(SSL* ssl, struct worker* worker) for(i=0; i<d->count + d->rrsig_count; i++) { if(!packed_rr_to_string(p->rrset, i, 0, s, slen)) { - if(!ssl_printf(ssl, "BADRR\n")) + if(!ssl_printf(ssl, "BADRR\n")) { + lock_rw_unlock(&z->lock); + lock_rw_unlock(&zones->lock); return; + } } - if(!ssl_printf(ssl, "%s\n", s)) + if(!ssl_printf(ssl, "%s\n", s)) { + lock_rw_unlock(&z->lock); + lock_rw_unlock(&zones->lock); return; + } } } } diff --git a/external/unbound/daemon/unbound.c b/external/unbound/daemon/unbound.c index 8e07c3895..0ceee538c 100644 --- a/external/unbound/daemon/unbound.c +++ b/external/unbound/daemon/unbound.c @@ -180,6 +180,8 @@ static void usage() SSLeay_version(SSLEAY_VERSION) #elif defined(HAVE_NSS) NSS_GetVersion() +#elif defined(HAVE_NETTLE) + "nettle" #endif ); printf("linked modules:"); @@ -450,6 +452,9 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, /* endpwent below, in case we need pwd for setusercontext */ } #endif +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg); +#endif /* init syslog (as root) if needed, before daemonize, otherwise * a fork error could not be printed since daemonize closed stderr.*/ diff --git a/external/unbound/daemon/worker.c b/external/unbound/daemon/worker.c index 79aec4d3a..c90a65998 100644 --- a/external/unbound/daemon/worker.c +++ b/external/unbound/daemon/worker.c @@ -866,11 +866,16 @@ worker_handle_request(struct comm_point* c, void* arg, int error, goto send_reply; } if((ret=parse_edns_from_pkt(c->buffer, &edns)) != 0) { + struct edns_data reply_edns; verbose(VERB_ALGO, "worker parse edns: formerror."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); - sldns_buffer_rewind(c->buffer); - LDNS_QR_SET(sldns_buffer_begin(c->buffer)); + memset(&reply_edns, 0, sizeof(reply_edns)); + reply_edns.edns_present = 1; + reply_edns.udp_size = EDNS_ADVERTISED_SIZE; LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), ret); + error_encode(c->buffer, ret, &qinfo, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), &reply_edns); server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } diff --git a/external/unbound/dns64/dns64.c b/external/unbound/dns64/dns64.c index 63cc8084e..0de3f6643 100644 --- a/external/unbound/dns64/dns64.c +++ b/external/unbound/dns64/dns64.c @@ -618,8 +618,10 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, dd->rr_ttl = (time_t*)&dd->rr_data[dd->count]; for(i = 0; i < fd->count; ++i) { if (fd->rr_len[i] != 6 || fd->rr_data[i][0] != 0 - || fd->rr_data[i][1] != 4) + || fd->rr_data[i][1] != 4) { + *dd_out = NULL; return; + } dd->rr_len[i] = 18; dd->rr_data[i] = (uint8_t*)&dd->rr_ttl[dd->count] + 18*i; @@ -638,6 +640,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, */ if(!dk) { log_err("no key"); + *dd_out = NULL; return; } @@ -646,6 +649,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, if(!dk->rk.dname) { log_err("out of memory"); + *dd_out = NULL; return; } diff --git a/external/unbound/dnstap/dnstap.proto b/external/unbound/dnstap/dnstap.proto index 3504d99ed..32871f409 100644 --- a/external/unbound/dnstap/dnstap.proto +++ b/external/unbound/dnstap/dnstap.proto @@ -105,7 +105,7 @@ message Message { enum Type { // AUTH_QUERY is a DNS query message received from a resolver by an - // authoritative name server, from the perspective of the authorative + // authoritative name server, from the perspective of the authoritative // name server. AUTH_QUERY = 1; diff --git a/external/unbound/doc/Changelog b/external/unbound/doc/Changelog index 35f67c113..3b9d50653 100644 --- a/external/unbound/doc/Changelog +++ b/external/unbound/doc/Changelog @@ -1,3 +1,175 @@ +15 December 2015: Ralph + - Fix #729: omit use of escape sequences in echo since they are not + portable (unbound-control-setup). + +11 December 2015: Wouter + - remove NULL-checks before free, patch from Michael McConville. + - updated ax_pthread.m4 to version 21 with clang support, this + removes a warning from compilation. + - OSX portability, detect if sbrk is deprecated. + - OSX clang, stop -pthread unused during link stage warnings. + - OSX clang new flto check. + +10 December 2015: Wouter + - 1.5.7 release + - trunk has 1.5.8 in development. + +8 December 2015: Wouter + - Fixup 724 for unbound-control. + +7 December 2015: Ralph + - Do not minimise forwarded requests. + +4 December 2015: Wouter + - Removed unneeded whitespace from example.conf. + +3 December 2015: Ralph + - (after rc1 tag) + - Committed fix to qname minimisation and unit test case for it. + +3 December 2015: Wouter + - iana portlist update. + - 1.5.7rc1 prerelease tag. + +2 December 2015: Wouter + - Fixup 724: Fix PCA prompt for unbound-service-install.exe. + re-enable stdout printout. + - For 724: Add Changelog to windows binary dist. + +1 December 2015: Ralph + - Qname minimisation review fixes + +1 December 2015: Wouter + - Fixup 724 fix for fname_after_chroot() calls. + - Remove stdout printout for unbound-service-install.exe + - .gitignore for git users. + +30 November 2015: Ralph + - Implemented qname minimisation + +30 November 2015: Wouter + - Fix for #724: conf syntax to read files from run dir (on Windows). + +25 November 2015: Wouter + - Fix for #720, fix unbound-control-setup windows batch file. + +24 November 2015: Wouter + - Fix #720: add windows scripts to zip bundle. + - iana portlist update. + +20 November 2015: Wouter + - Added assert on rrset cache correctness. + - Fix that malformed EDNS query gets a response without malformed EDNS. + +18 November 2015: Wouter + - newer acx_nlnetlabs.m4. + - spelling fixes from Igor Sobrado Delgado. + +17 November 2015: Wouter + - Fix #594. libunbound: optionally use libnettle for crypto. + Contributed by Luca Bruno. Added --with-nettle for use with + --with-libunbound-only. + - refactor nsec3 hash implementation to be more library-portable. + - iana portlist update. + - Fixup DER encoded DSA signatures for libnettle. + +16 November 2015: Wouter + - Fix for lenient accept of reverse order DNAME and CNAME. + +6 November 2015: Wouter + - Change example.conf: ftp.internic.net to https://www.internic.net + +5 November 2015: Wouter + - ACX_SSL_CHECKS no longer adds -ldl needlessly. + +3 November 2015: Wouter + - Fix #718: Fix unbound-control-setup with support for env + without HEREDOC bash support. + +29 October 2015: Wouter + - patch from Doug Hogan for SSL_OP_NO_SSLvx options. + - Fix #716: nodata proof with empty non-terminals and wildcards. + +28 October 2015: Wouter + - Fix checklock testcode for linux threads on exit. + +27 October 2015: Wouter + - isblank() compat implementation. + - detect libexpat without xml_StopParser function. + - portability fixes. + - portability, replace snprintf if return value broken. + +23 October 2015: Wouter + - Fix #714: Document config to block private-address for IPv4 + mapped IPv6 addresses. + +22 October 2015: Wouter + - Fix #712: unbound-anchor appears to not fsync root.key. + +20 October 2015: Wouter + - 1.5.6 release. + - trunk tracks development of 1.5.7. + +15 October 2015: Wouter + - Fix segfault in the dns64 module in the formaterror error path. + - Fix sldns_wire2str_rdata_scan for malformed RRs. + - tag for 1.5.6rc1 release. + +14 October 2015: Wouter + - ANY responses include DNAME records if present, as per Evan Hunt's + remark in dnsop. + - Fix manpage to suggest using SIGTERM to terminate the server. + +9 October 2015: Wouter + - Default for ssl-port is port 853, the temporary port assignment + for secure domain name system traffic. + If you used to rely on the older default of port 443, you have + to put a clause in unbound.conf for that. The new value is likely + going to be the standardised port number for this traffic. + - iana portlist update. + +6 October 2015: Wouter + - 1.5.5 release. + - trunk tracks the development of 1.5.6. + +28 September 2015: Wouter + - MAX_TARGET_COUNT increased to 64, to fix up sporadic resolution + failures. + - tag for 1.5.5rc1 release. + - makedist.sh: pgp sig echo commands. + +25 September 2015: Wouter + - Fix unbound-control flush that does not succeed in removing data. + +22 September 2015: Wouter + - Fix config globbed include chroot treatment, this fixes reload of + globs (patch from Dag-Erling Smørgrav). + - iana portlist update. + - Fix #702: New IPs for for h.root-servers.net. + - Remove confusion comment from canonical_compare() function. + - Fix #705: ub_ctx_set_fwd() return value mishandled on windows. + - testbound selftest also works in non-debug mode. + - Fix minor error in unbound.conf.5.in + - Fix unbound.conf(5) access-control description for precedence + and default. + +31 August 2015: Wouter + - changed windows setup compression to be more transparent. + +28 August 2015: Wouter + - Fix #697: Get PY_MAJOR_VERSION failure at configure for python + 2.4 to 2.6. + - Feature #699: --enable-pie option to that builds PIE binary. + - Feature #700: --enable-relro-now option that enables full read-only + relocation. + +24 August 2015: Wouter + - Fix deadlock for local data add and zone add when unbound-control + list_local_data printout is interrupted. + - iana portlist update. + - Change default of harden-algo-downgrade to off. This is lenient + for algorithm rollover. + 13 August 2015: Wouter - 5011 implementation does not insist on all algorithms, when harden-algo-downgrade is turned off. @@ -693,7 +865,7 @@ existence in 4592. NSEC empty non-terminals exist and thus the RCODE should have been NOERROR. If this occurs, and the RRsets are secure, we set the RCODE to NOERROR and the security status - of the reponse is also considered secure. + of the response is also considered secure. 14 February 2014: Wouter - Works on Minix (3.2.1). @@ -1465,7 +1637,7 @@ - Fix getaddrinfowithincludes on windows with fedora16 mingw32-gcc. - Fix warnings with gcc 4.6 in compat/inet_ntop.c. - Fix warning unused in compat/strptime.c. - - Fix malloc detection and double defintion. + - Fix malloc detection and double definition. 2 December 2011: Wouter - configure generated with autoconf 2.68. @@ -4910,7 +5082,7 @@ - Advertise builtin select libevent alternative when no libevent is found. - signit can generate NSEC3 hashes, for generating tests. - - multiple nsec3 paramaters in message test. + - multiple nsec3 parameters in message test. - too high nsec3 iterations becomes insecure test. 21 September 2007: Wouter @@ -4981,7 +5153,7 @@ - testbound can replay a TCP query (set MATCH TCP in the QUERY). - DS and noDS referral validation test. - if you configure many trust anchors, parent trust anchors can - securely deny existance of child trust anchors, if validated. + securely deny existence of child trust anchors, if validated. - not all *.name NSECs are present because a wildcard was matched, and *.name NSECs can prove nodata for empty nonterminals. Also, for wildcard name NSECs, check they are not from the parent @@ -5288,7 +5460,7 @@ 17 July 2007: Wouter - forward zone options in config file. - - forward per zone in iterator. takes precendence over stubs. + - forward per zone in iterator. takes precedence over stubs. - fixup commithooks. - removed forward-to and forward-to-port features, subsumed by new forward zones. @@ -5389,7 +5561,7 @@ ldns and libevent are linked statically. Default is off. - make install and make uninstall. Works with static-exe and without. installation of unbound binary and manual pages. - - alignement problem fix on solaris 64. + - alignment problem fix on solaris 64. - fixup address in case of TCP error. 12 June 2007: Wouter @@ -5472,7 +5644,7 @@ - removed FLAG_CD from message and rrset caches. This was useful for an agnostic forwarder, but not for a sophisticated (trust value per rrset enabled) cache. - - iterator reponse typing. + - iterator response typing. - iterator cname handle. - iterator prime start. - subquery work. @@ -5492,7 +5664,7 @@ - Acknowledge use of unbound-java code in iterator. Nicer readme. - services/cache/dns.c DNS Cache. Hybrid cache uses msgcache and rrset cache from module environment. - - packed rrset key has type and class as easily accessable struct + - packed rrset key has type and class as easily accessible struct members. They are still kept in network format for fast msg encode. - dns cache find_delegation routine. - iterator main functions setup. @@ -5576,7 +5748,7 @@ - EDNS read from query, used to make reply smaller. - advertised edns value constants. - EDNS BADVERS response, if asked for too high edns version. - - EDNS extended error reponses once the EDNS record from the query + - EDNS extended error responses once the EDNS record from the query has successfully been parsed. 4 May 2007: Wouter diff --git a/external/unbound/doc/example.conf.in b/external/unbound/doc/example.conf.in index 90491119e..af8f92bd3 100644 --- a/external/unbound/doc/example.conf.in +++ b/external/unbound/doc/example.conf.in @@ -8,7 +8,7 @@ #Use this to include other text into the file. #include: "otherfile.conf" -# The server clause sets the main parameters. +# The server clause sets the main parameters. server: # whitespace is not necessary, but looks cleaner. @@ -40,7 +40,7 @@ server: # interface: 2001:DB8::5 # enable this feature to copy the source address of queries to reply. - # Socket options are not supported on all platforms. experimental. + # Socket options are not supported on all platforms. experimental. # interface-automatic: no # port to answer queries from @@ -84,10 +84,10 @@ server: # buffer size for UDP port 53 outgoing (SO_SNDBUF socket option). # 0 is system default. Use 4m to handle spikes on very busy servers. # so-sndbuf: 0 - + # use SO_REUSEPORT to distribute queries over threads. # so-reuseport: no - + # use IP_TRANSPARENT so the interface: addresses can be non-local # and you can config non-existing IPs that are going to work later on # ip-transparent: no @@ -105,7 +105,7 @@ server: # msg-buffer-size: 65552 # the amount of memory to use for the message cache. - # plain value in bytes or you can append k, m or G. default is "4Mb". + # plain value in bytes or you can append k, m or G. default is "4Mb". # msg-cache-size: 4m # the number of slabs to use for the message cache. @@ -118,12 +118,12 @@ server: # if very busy, 50% queries run to completion, 50% get timeout in msec # jostle-timeout: 200 - + # msec to wait before close of port on timeout UDP. 0 disables. # delay-close: 0 # the amount of memory to use for the RRset cache. - # plain value in bytes or you can append k, m or G. default is "4Mb". + # plain value in bytes or you can append k, m or G. default is "4Mb". # rrset-cache-size: 4m # the number of slabs to use for the RRset cache. @@ -145,7 +145,7 @@ server: # the time to live (TTL) value for cached roundtrip times, lameness and # EDNS version information for hosts. In seconds. # infra-host-ttl: 900 - + # minimum wait time for responses, increase if uplink is long. In msec. # infra-cache-min-rtt: 50 @@ -195,8 +195,8 @@ server: # # If chroot is enabled, you should pass the configfile (from the # commandline) as a full path from the original root. After the - # chroot has been performed the now defunct portion of the config - # file path is removed to be able to reread the config after a reload. + # chroot has been performed the now defunct portion of the config + # file path is removed to be able to reread the config after a reload. # # All other file paths (working dir, logfile, roothints, and # key files) can be specified in several ways: @@ -205,7 +205,7 @@ server: # o as an absolute path relative to the original root. # In the last case the path is adjusted to remove the unused portion. # - # The pid file can be absolute and outside of the chroot, it is + # The pid file can be absolute and outside of the chroot, it is # written just prior to performing the chroot and dropping permissions. # # Additionally, unbound may need to access /dev/random (for entropy). @@ -219,22 +219,22 @@ server: # If you give "" no privileges are dropped. # username: "@UNBOUND_USERNAME@" - # the working directory. The relative files in this config are + # the working directory. The relative files in this config are # relative to this directory. If you give "" the working directory # is not changed. # directory: "@UNBOUND_RUN_DIR@" - # the log file, "" means log to stderr. + # the log file, "" means log to stderr. # Use of this option sets use-syslog to "no". # logfile: "" - # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to + # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to # log to, with identity "unbound". If yes, it overrides the logfile. - # use-syslog: yes + # use-syslog: yes # print UTC timestamp in ascii to logfile, default is epoch in seconds. # log-time-ascii: no - + # print one line with time, IP, name, type, class for every query. # log-queries: no @@ -242,7 +242,7 @@ server: # pidfile: "@UNBOUND_PIDFILE@" # file to read root hints from. - # get one from ftp://FTP.INTERNIC.NET/domain/named.cache + # get one from https://www.internic.net/domain/named.cache # root-hints: "" # enable to not answer id.server and hostname.bind queries. @@ -258,8 +258,8 @@ server: # version: "" # the target fetch policy. - # series of integers describing the policy per dependency depth. - # The number of values in the list determines the maximum dependency + # series of integers describing the policy per dependency depth. + # The number of values in the list determines the maximum dependency # depth the recursor will pursue before giving up. Each integer means: # -1 : fetch all targets opportunistically, # 0: fetch on demand, @@ -267,17 +267,17 @@ server: # Enclose the list of numbers between quotes (""). # target-fetch-policy: "3 2 1 0 0" - # Harden against very small EDNS buffer sizes. + # Harden against very small EDNS buffer sizes. # harden-short-bufsize: no # Harden against unseemly large queries. # harden-large-queries: no - # Harden against out of zone rrsets, to avoid spoofing attempts. + # Harden against out of zone rrsets, to avoid spoofing attempts. # harden-glue: yes # Harden against receiving dnssec-stripped data. If you turn it - # off, failing to validate dnskey data for a trustanchor will + # off, failing to validate dnskey data for a trustanchor will # trigger insecure mode for that zone (like without a trustanchor). # Default on, which insists on dnssec data for trust-anchored zones. # harden-dnssec-stripped: yes @@ -287,27 +287,32 @@ server: # Harden the referral path by performing additional queries for # infrastructure data. Validates the replies (if possible). - # Default off, because the lookups burden the server. Experimental + # Default off, because the lookups burden the server. Experimental # implementation of draft-wijngaards-dnsext-resolver-side-mitigation. # harden-referral-path: no # Harden against algorithm downgrade when multiple algorithms are # advertised in the DS record. If no, allows the weakest algorithm # to validate the zone. - # harden-algo-downgrade: yes + # harden-algo-downgrade: no + + # Sent minimum amount of information to upstream servers to enhance + # privacy. Only sent minimum required labels of the QNAME and set QTYPE + # to NS when possible. + # qname-minimisation: no # Use 0x20-encoded random bits in the query to foil spoof attempts. # This feature is an experimental implementation of draft dns-0x20. # use-caps-for-id: no - + # Domains (and domains in them) without support for dns-0x20 and # the fallback fails because they keep sending different answers. # caps-whitelist: "licdn.com" - # Enforce privacy of these addresses. Strips them away from answers. - # It may cause DNSSEC validation to additionally mark it as bogus. - # Protects against 'DNS Rebinding' (uses browser as network proxy). - # Only 'private-domain' and 'local-data' names are allowed to have + # Enforce privacy of these addresses. Strips them away from answers. + # It may cause DNSSEC validation to additionally mark it as bogus. + # Protects against 'DNS Rebinding' (uses browser as network proxy). + # Only 'private-domain' and 'local-data' names are allowed to have # these private addresses. No default. # private-address: 10.0.0.0/8 # private-address: 172.16.0.0/12 @@ -315,6 +320,7 @@ server: # private-address: 169.254.0.0/16 # private-address: fd00::/8 # private-address: fe80::/10 + # private-address: ::ffff:0:0/96 # Allow the domain (and its subdomains) to contain private addresses. # local-data statements are allowed to contain private addresses too. @@ -373,7 +379,7 @@ server: # Zone file format, with DS and DNSKEY entries. # Note this gets out of date, use auto-trust-anchor-file please. # trust-anchor-file: "" - + # Trusted key for validation. DS or DNSKEY. specify the RR on a # single line, surrounded by "". TTL is ignored. class is IN default. # Note this gets out of date, use auto-trust-anchor-file please. @@ -383,7 +389,7 @@ server: # File with trusted keys for validation. Specify more than one file # with several entries, one file per entry. Like trust-anchor-file - # but has a different file format. Format is BIND-9 style format, + # but has a different file format. Format is BIND-9 style format, # the trusted-keys { name flag proto algo "key"; }; clauses are read. # you need external update procedures to track changes in keys. # trusted-keys-file: "" @@ -408,7 +414,7 @@ server: # Should additional section of secure message also be kept clean of # unsecure data. Useful to shield the users of this validator from - # potential bogus data in the additional section. All unsigned data + # potential bogus data in the additional section. All unsigned data # in the additional section is removed from secure messages. # val-clean-additional: yes @@ -433,7 +439,7 @@ server: # A message with an NSEC3 with larger count is marked insecure. # List in ascending order the keysize and count values. # val-nsec3-keysize-iterations: "1024 150 2048 500 4096 2500" - + # instruct the auto-trust-anchor-file probing to add anchors after ttl. # add-holddown: 2592000 # 30 days @@ -448,7 +454,7 @@ server: # permit-small-holddown: no # the amount of memory to use for the key cache. - # plain value in bytes or you can append k, m or G. default is "4Mb". + # plain value in bytes or you can append k, m or G. default is "4Mb". # key-cache-size: 4m # the number of slabs to use for the key cache. @@ -457,7 +463,7 @@ server: # key-cache-slabs: 4 # the amount of memory to use for the negative cache (used for DLV). - # plain value in bytes or you can append k, m or G. default is "1Mb". + # plain value in bytes or you can append k, m or G. default is "1Mb". # neg-cache-size: 1m # By default, for a number of zones a small default 'nothing here' @@ -501,7 +507,7 @@ server: # local-zone: "b.e.f.ip6.arpa." nodefault # local-zone: "8.b.d.0.1.0.0.2.ip6.arpa." nodefault # And for 64.100.in-addr.arpa. to 127.100.in-addr.arpa. - + # if unbound is running service for the local host then it is useful # to perform lan-wide lookups to the upstream, and unblock the # long list of local-zones above. If this unbound is a dns server @@ -512,7 +518,7 @@ server: # a number of locally served zones can be configured. # local-zone: <zone> <type> # local-data: "<resource record string>" - # o deny serves local data (if any), else, drops queries. + # o deny serves local data (if any), else, drops queries. # o refuse serves local data (if any), else, replies with error. # o static serves local data, else, nxdomain or nodata answer. # o transparent gives local data, but resolves normally for other names @@ -525,7 +531,7 @@ server: # defaults are localhost address, reverse for 127.0.0.1 and ::1 # and nxdomain for AS112 zones. If you configure one of these zones # the default content is omitted, or you can omit it with 'nodefault'. - # + # # If you configure local-data without specifying local-zone, by # default a transparent local-zone is created for the data. # @@ -552,7 +558,7 @@ server: # default is "" (disabled). requires restart to take effect. # ssl-service-key: "path/to/privatekeyfile.key" # ssl-service-pem: "path/to/publiccertfile.pem" - # ssl-port: 443 + # ssl-port: 853 # request upstream over SSL (with plain DNS inside the SSL stream). # Default is no. Can be turned on and off with unbound-control. @@ -571,7 +577,7 @@ server: # ratelimit-size: 4m # ratelimit cache slabs, reduces lock contention if equal to cpucount. # ratelimit-slabs: 4 - + # 0 blocks when ratelimited, otherwise let 1/xth traffic through # ratelimit-factor: 10 @@ -590,7 +596,7 @@ python: # Script file to load # python-script: "@UNBOUND_SHARE_DIR@/ubmodule-tst.py" -# Remote control config section. +# Remote control config section. remote-control: # Enable remote control with unbound-control(8) here. # set up the keys and certificates with unbound-control-setup. @@ -621,9 +627,9 @@ remote-control: # control-cert-file: "@UNBOUND_RUN_DIR@/unbound_control.pem" # Stub zones. -# Create entries like below, to make all queries for 'example.com' and -# 'example.org' go to the given list of nameservers. list zero or more -# nameservers by hostname or by ipaddress. If you set stub-prime to yes, +# Create entries like below, to make all queries for 'example.com' and +# 'example.org' go to the given list of nameservers. list zero or more +# nameservers by hostname or by ipaddress. If you set stub-prime to yes, # the list is treated as priming hints (default is no). # With stub-first yes, it attempts without the stub if it fails. # Consider adding domain-insecure: name and local-zone: name nodefault diff --git a/external/unbound/doc/unbound-control.8.in b/external/unbound/doc/unbound-control.8.in index 9c7a7cf00..12d309dda 100644 --- a/external/unbound/doc/unbound-control.8.in +++ b/external/unbound/doc/unbound-control.8.in @@ -169,7 +169,7 @@ therefore not flushed. The option must end with a ':' and whitespace must be between the option and the value. Some values may not have an effect if set this way, the new values are not written to the config file, not all options are supported. This is different from the set_option call -in libunbound, where all values work because unbound has not been inited. +in libunbound, where all values work because unbound has not been initialized. .IP The values that work are: statistics\-interval, statistics\-cumulative, do\-not\-query\-localhost, harden\-short\-bufsize, harden\-large\-queries, diff --git a/external/unbound/doc/unbound.conf.5.in b/external/unbound/doc/unbound.conf.5.in index cfbedd7d0..70291443b 100644 --- a/external/unbound/doc/unbound.conf.5.in +++ b/external/unbound/doc/unbound.conf.5.in @@ -296,7 +296,7 @@ trust (very large) TTL values. .TP .B cache\-min\-ttl: \fI<seconds> Time to live minimum for RRsets and messages in the cache. Default is 0. -If the the minimum kicks in, the data is cached for longer than the domain +If the minimum kicks in, the data is cached for longer than the domain owner intended, and thus less queries are made to look up the data. Zero makes sure the data in the cache is as the domain owner intended, higher values, especially more than an hour or so, can lead to trouble as @@ -362,7 +362,7 @@ The public key certificate pem file for the ssl service. Default is "", turned off. .TP .B ssl\-port: \fI<number> -The port number on which to provide TCP SSL service, default 443, only +The port number on which to provide TCP SSL service, default 853, only interfaces configured with that port number as @number get the SSL service. .TP .B do\-daemonize: \fI<yes or no> @@ -373,6 +373,7 @@ a daemon. Default is yes. The netblock is given as an IP4 or IP6 address with /size appended for a classless network block. The action can be \fIdeny\fR, \fIrefuse\fR, \fIallow\fR, \fIallow_snoop\fR, \fIdeny_non_local\fR or \fIrefuse_non_local\fR. +The most specific netblock match is used, if none match \fIdeny\fR is used. .IP The action \fIdeny\fR stops queries from hosts from that netblock. .IP @@ -443,6 +444,8 @@ requires privileges, then a reload will fail; a restart is needed. .TP .B directory: \fI<directory> Sets the working directory for the program. Default is "@UNBOUND_RUN_DIR@". +On Windows the string "%EXECUTABLE%" tries to change to the directory +that unbound.exe resides in. .TP .B logfile: \fI<filename> If "" is given, logging goes to stderr, or nowhere once daemonized. @@ -480,7 +483,7 @@ kill \-HUP `cat @UNBOUND_PIDFILE@` .fi triggers a reload, .nf -kill \-QUIT `cat @UNBOUND_PIDFILE@` +kill \-TERM `cat @UNBOUND_PIDFILE@` .fi gracefully terminates. .TP @@ -567,7 +570,7 @@ to increase the max depth that is checked to. .B harden\-algo\-downgrade: \fI<yes or no> Harden against algorithm downgrade when multiple algorithms are advertised in the DS record. If no, allows the weakest algorithm to -validate the zone. Default is yes. Zone signers must produce zones +validate the zone. Default is no. Zone signers must produce zones that allow this feature to work, but sometimes they do not, and turning this option off avoids that validation failure. .TP @@ -584,23 +587,30 @@ queries. For domains that do not support 0x20 and also fail with fallback because they keep sending different answers, like some load balancers. Can be given multiple times, for different domains. .TP +.B qname\-minimisation: \fI<yes or no> +Send minimum amount of information to upstream servers to enhance privacy. +Only sent minimum required labels of the QNAME and set QTYPE to NS when +possible. Best effort approach, full QNAME and original QTYPE will be sent when +upstream replies with a RCODE other than NOERROR. Default is off. +.TP .B private\-address: \fI<IP address or subnet> Give IPv4 of IPv6 addresses or classless subnets. These are addresses -on your private network, and are not allowed to be returned for public -internet names. Any occurence of such addresses are removed from -DNS answers. Additionally, the DNSSEC validator may mark the answers -bogus. This protects against so\-called DNS Rebinding, where a user browser -is turned into a network proxy, allowing remote access through the browser -to other parts of your private network. Some names can be allowed to -contain your private addresses, by default all the \fBlocal\-data\fR -that you configured is allowed to, and you can specify additional -names using \fBprivate\-domain\fR. No private addresses are enabled -by default. We consider to enable this for the RFC1918 private IP -address space by default in later releases. That would enable private -addresses for 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 -fd00::/8 and fe80::/10, since the RFC standards say these addresses -should not be visible on the public internet. Turning on 127.0.0.0/8 -would hinder many spamblocklists as they use that. +on your private network, and are not allowed to be returned for +public internet names. Any occurrence of such addresses are removed +from DNS answers. Additionally, the DNSSEC validator may mark the +answers bogus. This protects against so\-called DNS Rebinding, where +a user browser is turned into a network proxy, allowing remote access +through the browser to other parts of your private network. Some names +can be allowed to contain your private addresses, by default all the +\fBlocal\-data\fR that you configured is allowed to, and you can specify +additional names using \fBprivate\-domain\fR. No private addresses are +enabled by default. We consider to enable this for the RFC1918 private +IP address space by default in later releases. That would enable private +addresses for 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 +fd00::/8 and fe80::/10, since the RFC standards say these addresses +should not be visible on the public internet. Turning on 127.0.0.0/8 +would hinder many spamblocklists as they use that. Adding ::ffff:0:0/96 +stops IPv4-mapped IPv6 addresses from bypassing the filter. .TP .B private\-domain: \fI<domain name> Allow this domain, and all its subdomains to contain private addresses. @@ -745,7 +755,7 @@ Instruct the validator to remove data from the additional section of secure messages that are not signed properly. Messages that are insecure, bogus, indeterminate or unchecked are not affected. Default is yes. Use this setting to protect the users that rely on this validator for authentication from -protentially bad data in the additional section. +potentially bad data in the additional section. .TP .B val\-log\-level: \fI<number> Have the validator print validation failures to the log. Regardless of @@ -1032,7 +1042,7 @@ If set to 0, all queries are dropped for domains where the limit is exceeded. If set to another value, 1 in that number is allowed through to complete. Default is 10, allowing 1/10 traffic to flow normally. This can make ordinary queries complete (if repeatedly queried for), -and enter the cache, whilst also mitigiting the traffic flow by the +and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 .B ratelimit\-for\-domain: \fI<domain> <number qps> diff --git a/external/unbound/iterator/iter_hints.c b/external/unbound/iterator/iter_hints.c index 25cae0723..d7f8158d1 100644 --- a/external/unbound/iterator/iter_hints.c +++ b/external/unbound/iterator/iter_hints.c @@ -135,7 +135,7 @@ compile_time_root_prime(int do_ip4, int do_ip6) if(!ah(dp, "E.ROOT-SERVERS.NET.", "192.203.230.10")) goto failed; if(!ah(dp, "F.ROOT-SERVERS.NET.", "192.5.5.241")) goto failed; if(!ah(dp, "G.ROOT-SERVERS.NET.", "192.112.36.4")) goto failed; - if(!ah(dp, "H.ROOT-SERVERS.NET.", "128.63.2.53")) goto failed; + if(!ah(dp, "H.ROOT-SERVERS.NET.", "198.97.190.53")) goto failed; if(!ah(dp, "I.ROOT-SERVERS.NET.", "192.36.148.17")) goto failed; if(!ah(dp, "J.ROOT-SERVERS.NET.", "192.58.128.30")) goto failed; if(!ah(dp, "K.ROOT-SERVERS.NET.", "193.0.14.129")) goto failed; @@ -148,7 +148,7 @@ compile_time_root_prime(int do_ip4, int do_ip6) if(!ah(dp, "C.ROOT-SERVERS.NET.", "2001:500:2::c")) goto failed; if(!ah(dp, "D.ROOT-SERVERS.NET.", "2001:500:2d::d")) goto failed; if(!ah(dp, "F.ROOT-SERVERS.NET.", "2001:500:2f::f")) goto failed; - if(!ah(dp, "H.ROOT-SERVERS.NET.", "2001:500:1::803f:235")) goto failed; + if(!ah(dp, "H.ROOT-SERVERS.NET.", "2001:500:1::53")) goto failed; if(!ah(dp, "I.ROOT-SERVERS.NET.", "2001:7fe::53")) goto failed; if(!ah(dp, "J.ROOT-SERVERS.NET.", "2001:503:c27::2:30")) goto failed; if(!ah(dp, "K.ROOT-SERVERS.NET.", "2001:7fd::1")) goto failed; diff --git a/external/unbound/iterator/iter_scrub.c b/external/unbound/iterator/iter_scrub.c index cc05867c0..8a3fc170c 100644 --- a/external/unbound/iterator/iter_scrub.c +++ b/external/unbound/iterator/iter_scrub.c @@ -405,7 +405,43 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, /* Follow the CNAME chain. */ if(rrset->type == LDNS_RR_TYPE_CNAME) { + struct rrset_parse* nx = rrset->rrset_all_next; uint8_t* oldsname = sname; + /* see if the next one is a DNAME, if so, swap them */ + if(nx && nx->section == LDNS_SECTION_ANSWER && + nx->type == LDNS_RR_TYPE_DNAME && + nx->rr_count == 1 && + pkt_strict_sub(pkt, sname, nx->dname)) { + /* there is a DNAME after this CNAME, it + * is in the ANSWER section, and the DNAME + * applies to the name we cover */ + /* check if the alias of the DNAME equals + * this CNAME */ + uint8_t alias[LDNS_MAX_DOMAINLEN+1]; + size_t aliaslen = 0; + uint8_t* t = NULL; + size_t tlen = 0; + if(synth_cname(sname, snamelen, nx, alias, + &aliaslen, pkt) && + parse_get_cname_target(rrset, &t, &tlen) && + dname_pkt_compare(pkt, alias, t) == 0) { + /* the synthesized CNAME equals the + * current CNAME. This CNAME is the + * one that the DNAME creates, and this + * CNAME is better capitalised */ + verbose(VERB_ALGO, "normalize: re-order of DNAME and its CNAME"); + if(prev) prev->rrset_all_next = nx; + else msg->rrset_first = nx; + if(nx->rrset_all_next == NULL) + msg->rrset_last = rrset; + rrset->rrset_all_next = + nx->rrset_all_next; + nx->rrset_all_next = rrset; + prev = nx; + } + } + + /* move to next name in CNAME chain */ if(!parse_get_cname_target(rrset, &sname, &snamelen)) return 0; prev = rrset; @@ -638,7 +674,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, * children of the originating zone. The idea here is that, * as far as we know, the server that we contacted is ONLY * authoritative for the originating zone. It, of course, MAY - * be authoriative for any other zones, and of course, MAY + * be authoritative for any other zones, and of course, MAY * NOT be authoritative for some subdomains of the originating * zone. */ prev = NULL; diff --git a/external/unbound/iterator/iter_utils.c b/external/unbound/iterator/iter_utils.c index bc94ef682..58e62fbeb 100644 --- a/external/unbound/iterator/iter_utils.c +++ b/external/unbound/iterator/iter_utils.c @@ -255,7 +255,7 @@ iter_filter_unsuitable(struct iter_env* iter_env, struct module_env* env, return -1; /* server is lame */ else if(rtt >= USEFUL_SERVER_TOP_TIMEOUT) /* server is unresponsive, - * we used to return TOP_TIMOUT, but fairly useless, + * we used to return TOP_TIMEOUT, but fairly useless, * because if == TOP_TIMEOUT is dropped because * blacklisted later, instead, remove it here, so * other choices (that are not blacklisted) can be @@ -306,7 +306,7 @@ iter_fill_rtt(struct iter_env* iter_env, struct module_env* env, return got_it; } -/** filter the addres list, putting best targets at front, +/** filter the address list, putting best targets at front, * returns number of best targets (or 0, no suitable targets) */ static int iter_filter_order(struct iter_env* iter_env, struct module_env* env, diff --git a/external/unbound/iterator/iterator.c b/external/unbound/iterator/iterator.c index 96918fa97..b1bf902d5 100644 --- a/external/unbound/iterator/iterator.c +++ b/external/unbound/iterator/iterator.c @@ -64,6 +64,7 @@ #include "util/random.h" #include "sldns/rrdef.h" #include "sldns/wire2str.h" +#include "sldns/str2wire.h" #include "sldns/parseutil.h" #include "sldns/sbuffer.h" @@ -81,6 +82,21 @@ iter_init(struct module_env* env, int id) log_err("iterator: could not apply configuration settings."); return 0; } + if(env->cfg->qname_minimisation) { + uint8_t dname[LDNS_MAX_DOMAINLEN+1]; + size_t len = sizeof(dname); + if(sldns_str2wire_dname_buf("ip6.arpa.", dname, &len) != 0) { + log_err("ip6.arpa. parse error"); + return 0; + } + iter_env->ip6arpa_dname = (uint8_t*)malloc(len); + if(!iter_env->ip6arpa_dname) { + log_err("malloc failure"); + return 0; + } + memcpy(iter_env->ip6arpa_dname, dname, len); + } + return 1; } @@ -101,6 +117,7 @@ iter_deinit(struct module_env* env, int id) if(!env || !env->modinfo[id]) return; iter_env = (struct iter_env*)env->modinfo[id]; + free(iter_env->ip6arpa_dname); free(iter_env->target_fetch_policy); priv_delete(iter_env->priv); donotq_delete(iter_env->donotq); @@ -145,6 +162,12 @@ iter_new(struct module_qstate* qstate, int id) /* Start with the (current) qname. */ iq->qchase = qstate->qinfo; outbound_list_init(&iq->outlist); + if (qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; + else + iq->minimisation_state = DONOT_MINIMISE_STATE; + + memset(&iq->qinfo_out, 0, sizeof(struct query_info)); return 1; } @@ -176,7 +199,7 @@ next_state(struct iter_qstate* iq, enum iter_state nextstate) /** * Transition an event to its final state. Final states always either return * a result up the module chain, or reactivate a dependent event. Which - * final state to transtion to is set in the module state for the event when + * final state to transition to is set in the module state for the event when * it was created, and depends on the original purpose of the event. * * The response is stored in the qstate->buf buffer. @@ -506,7 +529,7 @@ target_count_increase(struct iter_qstate* iq, int num) /** * Generate a subrequest. * Generate a local request event. Local events are tied to this module, and - * have a correponding (first tier) event that is waiting for this event to + * have a corresponding (first tier) event that is waiting for this event to * resolve to continue. * * @param qname The query name for this request. @@ -590,6 +613,11 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, subiq->qchase = subq->qinfo; subiq->chase_flags = subq->query_flags; subiq->refetch_glue = 0; + if(qstate->env->cfg->qname_minimisation) + subiq->minimisation_state = INIT_MINIMISE_STATE; + else + subiq->minimisation_state = DONOT_MINIMISE_STATE; + memset(&subiq->qinfo_out, 0, sizeof(struct query_info)); } return 1; } @@ -1042,6 +1070,8 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, iq->query_restart_count++; iq->sent_count = 0; sock_list_insert(&qstate->reply_origin, NULL, 0, qstate->region); + if(qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; return next_state(iq, INIT_REQUEST_STATE); } @@ -1062,6 +1092,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } iq->refetch_glue = 0; + iq->minimisation_state = DONOT_MINIMISE_STATE; /* the request has been forwarded. * forwarded requests need to be immediately sent to the * next state, QUERYTARGETS. */ @@ -1599,6 +1630,8 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, iq->refetch_glue = 1; iq->query_restart_count++; iq->sent_count = 0; + if(qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; return next_state(iq, INIT_REQUEST_STATE); } } @@ -1975,9 +2008,78 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, } } + if(iq->minimisation_state == INIT_MINIMISE_STATE) { + /* (Re)set qinfo_out to (new) delegation point, except + * when qinfo_out is already a subdomain of dp. This happens + * when resolving ip6.arpa dnames. */ + if(!(iq->qinfo_out.qname_len + && dname_subdomain_c(iq->qchase.qname, + iq->qinfo_out.qname) + && dname_subdomain_c(iq->qinfo_out.qname, + iq->dp->name))) { + iq->qinfo_out.qname = iq->dp->name; + iq->qinfo_out.qname_len = iq->dp->namelen; + iq->qinfo_out.qtype = LDNS_RR_TYPE_NS; + iq->qinfo_out.qclass = iq->qchase.qclass; + } + + iq->minimisation_state = MINIMISE_STATE; + } + if(iq->minimisation_state == MINIMISE_STATE) { + int labdiff = dname_count_labels(iq->qchase.qname) - + dname_count_labels(iq->qinfo_out.qname); + + iq->qinfo_out.qname = iq->qchase.qname; + iq->qinfo_out.qname_len = iq->qchase.qname_len; + + /* Special treatment for ip6.arpa lookups. + * Reverse IPv6 dname has 34 labels, increment the IP part + * (usually first 32 labels) by 8 labels (7 more than the + * default 1 label increment). */ + if(labdiff <= 32 && + dname_subdomain_c(iq->qchase.qname, ie->ip6arpa_dname)) { + labdiff -= 7; + /* Small chance of zone cut after first label. Stop + * minimising */ + if(labdiff <= 1) + labdiff = 0; + } + + if(labdiff > 1) { + verbose(VERB_QUERY, "removing %d labels", labdiff-1); + dname_remove_labels(&iq->qinfo_out.qname, + &iq->qinfo_out.qname_len, + labdiff-1); + } + if(labdiff < 1 || + (labdiff < 2 && iq->qchase.qtype == LDNS_RR_TYPE_DS)) + /* Stop minimising this query, resolve "as usual" */ + iq->minimisation_state = DONOT_MINIMISE_STATE; + else { + struct dns_msg* msg = dns_cache_lookup(qstate->env, + iq->qinfo_out.qname, iq->qinfo_out.qname_len, + iq->qinfo_out.qtype, iq->qinfo_out.qclass, + qstate->query_flags, qstate->region, + qstate->env->scratch); + if(msg && msg->rep->an_numrrsets == 0 + && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NOERROR) + /* no need to send query if it is already + * cached as NOERROR/NODATA */ + return 1; + } + + } + if(iq->minimisation_state == SKIP_MINIMISE_STATE) + /* Do not increment qname, continue incrementing next + * iteration */ + iq->minimisation_state = MINIMISE_STATE; + if(iq->minimisation_state == DONOT_MINIMISE_STATE) + iq->qinfo_out = iq->qchase; + /* We have a valid target. */ if(verbosity >= VERB_QUERY) { - log_query_info(VERB_QUERY, "sending query:", &iq->qchase); + log_query_info(VERB_QUERY, "sending query:", &iq->qinfo_out); log_name_addr(VERB_QUERY, "sending to target:", iq->dp->name, &target->addr, target->addrlen); verbose(VERB_ALGO, "dnssec status: %s%s", @@ -1986,8 +2088,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, } fptr_ok(fptr_whitelist_modenv_send_query(qstate->env->send_query)); outq = (*qstate->env->send_query)( - iq->qchase.qname, iq->qchase.qname_len, - iq->qchase.qtype, iq->qchase.qclass, + iq->qinfo_out.qname, iq->qinfo_out.qname_len, + iq->qinfo_out.qtype, iq->qinfo_out.qclass, iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), EDNS_DO|BIT_CD, iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted( ie, iq), &target->addr, target->addrlen, iq->dp->name, @@ -2042,6 +2144,9 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, enum response_type type; iq->num_current_queries--; if(iq->response == NULL) { + /* Don't increment qname when QNAME minimisation is enabled */ + if (qstate->env->cfg->qname_minimisation) + iq->minimisation_state = SKIP_MINIMISE_STATE; iq->chase_to_rd = 0; iq->dnssec_lame_query = 0; verbose(VERB_ALGO, "query response was timeout"); @@ -2142,6 +2247,15 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, sock_list_insert(&qstate->reply_origin, &qstate->reply->addr, qstate->reply->addrlen, qstate->region); + if(iq->minimisation_state != DONOT_MINIMISE_STATE) { + /* Best effort qname-minimisation. + * Stop minimising and send full query when RCODE + * is not NOERROR */ + if(FLAGS_GET_RCODE(iq->response->rep->flags) != + LDNS_RCODE_NOERROR) + iq->minimisation_state = DONOT_MINIMISE_STATE; + return next_state(iq, QUERYTARGETS_STATE); + } return final_state(iq); } else if(type == RESPONSE_TYPE_REFERRAL) { /* REFERRAL type responses get a reset of the @@ -2201,6 +2315,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, * point to the referral. */ iq->deleg_msg = iq->response; iq->dp = delegpt_from_message(iq->response, qstate->region); + if (qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; if(!iq->dp) return error_response(qstate, id, LDNS_RCODE_SERVFAIL); if(!cache_fill_missing(qstate->env, iq->qchase.qclass, @@ -2280,6 +2396,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* set the current request's qname to the new value. */ iq->qchase.qname = sname; iq->qchase.qname_len = snamelen; + if (qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; /* Clear the query state, since this is a query restart. */ iq->deleg_msg = NULL; iq->dp = NULL; @@ -2353,6 +2471,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* LAME, THROWAWAY and "unknown" all end up here. * Recycle to the QUERYTARGETS state to hopefully try a * different target. */ + if (qstate->env->cfg->qname_minimisation) + iq->minimisation_state = DONOT_MINIMISE_STATE; return next_state(iq, QUERYTARGETS_STATE); } @@ -2968,7 +3088,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, prs->flags &= ~BIT_CD; /* normalize and sanitize: easy to delete items from linked lists */ - if(!scrub_message(pkt, prs, &iq->qchase, iq->dp->name, + if(!scrub_message(pkt, prs, &iq->qinfo_out, iq->dp->name, qstate->env->scratch, qstate->env, ie)) { /* if 0x20 enabled, start fallback, but we have no message */ if(event == module_event_capsfail && !iq->caps_fallback) { diff --git a/external/unbound/iterator/iterator.h b/external/unbound/iterator/iterator.h index aaf0fb383..b7aa82ebe 100644 --- a/external/unbound/iterator/iterator.h +++ b/external/unbound/iterator/iterator.h @@ -54,7 +54,7 @@ struct iter_priv; struct rbtree_t; /** max number of targets spawned for a query and its subqueries */ -#define MAX_TARGET_COUNT 32 +#define MAX_TARGET_COUNT 64 /** max number of query restarts. Determines max number of CNAME chain. */ #define MAX_RESTART_COUNT 8 /** max number of referrals. Makes sure resolver does not run away */ @@ -112,6 +112,32 @@ struct iter_env { * array of max_dependency_depth+1 size. */ int* target_fetch_policy; + + /** ip6.arpa dname in wireformat, used for qname-minimisation */ + uint8_t* ip6arpa_dname; +}; + +/** + * QNAME minimisation state + */ +enum minimisation_state { + /** + * (Re)start minimisation. Outgoing QNAME should be set to dp->name. + * State entered on new query or after following refferal or CNAME. + */ + INIT_MINIMISE_STATE = 0, + /** + * QNAME minimisataion ongoing. Increase QNAME on every iteration. + */ + MINIMISE_STATE, + /** + * Don't increment QNAME this iteration + */ + SKIP_MINIMISE_STATE, + /** + * Send out full QNAME + original QTYPE + */ + DONOT_MINIMISE_STATE, }; /** @@ -322,6 +348,15 @@ struct iter_qstate { /** list of pending queries to authoritative servers. */ struct outbound_list outlist; + + /** QNAME minimisation state */ + enum minimisation_state minimisation_state; + + /** + * The query info that is sent upstream. Will be a subset of qchase + * when qname minimisation is enabled. + */ + struct query_info qinfo_out; }; /** diff --git a/external/unbound/libunbound/libunbound.c b/external/unbound/libunbound/libunbound.c index a3a1d21a8..17f50e8e8 100644 --- a/external/unbound/libunbound/libunbound.c +++ b/external/unbound/libunbound/libunbound.c @@ -68,6 +68,9 @@ #ifdef HAVE_SYS_WAIT_H #include <sys/wait.h> #endif +#ifdef HAVE_TIME_H +#include <time.h> +#endif #if defined(UB_ON_WINDOWS) && defined (HAVE_WINDOWS_H) #include <windows.h> @@ -955,7 +958,7 @@ ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname) while (ptr) { numserv++; if((retval=ub_ctx_set_fwd(ctx, - ptr->IpAddress.String)!=0)) { + ptr->IpAddress.String))!=0) { free(info); return retval; } diff --git a/external/unbound/libunbound/python/Makefile b/external/unbound/libunbound/python/Makefile index 01b057731..9a98ef5b5 100644 --- a/external/unbound/libunbound/python/Makefile +++ b/external/unbound/libunbound/python/Makefile @@ -36,7 +36,7 @@ help: @echo "Please use \`make <target>' where <target> is one of" @echo " testenv to make test environment and run bash " - @echo " usefull in case you don't want to install unbound but want to test examples" + @echo " useful in case you don't want to install unbound but want to test examples" @echo " doc to make documentation" @echo " clean clean all" diff --git a/external/unbound/libunbound/python/doc/install.rst b/external/unbound/libunbound/python/doc/install.rst index f638ed18e..a073a5c66 100644 --- a/external/unbound/libunbound/python/doc/install.rst +++ b/external/unbound/libunbound/python/doc/install.rst @@ -22,7 +22,7 @@ You need GNU make to compile sources; SWIG and Python devel libraries to compile **Testing** -If the compilation is successfull, you can test the python LDNS extension module by:: +If the compilation is successful, you can test the python LDNS extension module by:: > cd contrib/python > make testenv diff --git a/external/unbound/libunbound/python/doc/modules/unbound.rst b/external/unbound/libunbound/python/doc/modules/unbound.rst index 21f4a12d8..77e4cd1a1 100644 --- a/external/unbound/libunbound/python/doc/modules/unbound.rst +++ b/external/unbound/libunbound/python/doc/modules/unbound.rst @@ -42,7 +42,7 @@ Class ub_result False, if validation failed or domain queried has no security info. It is possible to get a result with no data (havedata is false), - and secure is true. This means that the non-existance of the data + and secure is true. This means that the non-existence of the data was cryptographically proven (with signatures). .. attribute:: bogus diff --git a/external/unbound/libunbound/python/examples/dnssec-valid.py b/external/unbound/libunbound/python/examples/dnssec-valid.py index 386f4c277..c5517efc6 100644 --- a/external/unbound/libunbound/python/examples/dnssec-valid.py +++ b/external/unbound/libunbound/python/examples/dnssec-valid.py @@ -44,7 +44,7 @@ ctx.debugout(fw) ctx.debuglevel(2) if os.path.isfile("keys"): - ctx.add_ta_file("keys") #read public keys for DNSSEC verificatio + ctx.add_ta_file("keys") #read public keys for DNSSEC verification status, result = ctx.resolve("www.nic.cz", RR_TYPE_A, RR_CLASS_IN) if status == 0 and result.havedata: diff --git a/external/unbound/libunbound/python/libunbound.i b/external/unbound/libunbound/python/libunbound.i index 3c0e45b7d..50a9b67ac 100644 --- a/external/unbound/libunbound/python/libunbound.i +++ b/external/unbound/libunbound/python/libunbound.i @@ -1,5 +1,5 @@ /* - * libounbound.i: pyUnbound module (libunbound wrapper for Python) + * libunbound.i: pyUnbound module (libunbound wrapper for Python) * * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) @@ -455,7 +455,7 @@ Result: ['74.125.43.147', '74.125.43.99', '74.125.43.103', '74.125.43.104'] #_UB_CTX_METHODS# def zone_print(self): - """Print local zones using debougout""" + """Print local zones using debugout""" _unbound.ub_ctx_print_local_zones(self) def zone_add(self,zonename,zonetype): diff --git a/external/unbound/ltmain.sh b/external/unbound/ltmain.sh index 63ae69dc6..6fdf4ba81 100644 --- a/external/unbound/ltmain.sh +++ b/external/unbound/ltmain.sh @@ -4394,7 +4394,7 @@ EOF { /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then + have already dealt with, above (including dump-script), then report an error. Otherwise, targets might begin to believe they are allowed to use options in the LTWRAPPER_OPTION_PREFIX namespace. The first time any user complains about this, we'll diff --git a/external/unbound/makedist.sh b/external/unbound/makedist.sh index 23c89fc3d..5f19dfb68 100755 --- a/external/unbound/makedist.sh +++ b/external/unbound/makedist.sh @@ -328,10 +328,10 @@ if [ "$DOWIN" = "yes" ]; then $strip unbound-service-install.exe $strip unbound-service-remove.exe cd tmp.$$ - cp ../doc/example.conf example.conf - cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt . + cp ../doc/example.conf ../doc/Changelog . + cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt ../contrib/create_unbound_ad_servers.cmd ../contrib/warmup.cmd ../contrib/unbound_cache.cmd . # zipfile - zip ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf unbound-website.url + zip ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog info "Testing $file" (cd .. ; zip -T $file ) # installer @@ -451,6 +451,10 @@ tar czf ../unbound-$version.tar.gz unbound-$version || error_cleanup "Failed to cleanup storehash unbound-$version.tar.gz +echo "create unbound-$version.tar.gz.asc with:" +echo " gpg --armor --detach-sign unbound-$version.tar.gz" +echo " gpg --armor --detach-sign unbound-$version.zip" +echo " gpg --armor --detach-sign unbound_setup_$version.exe" info "Unbound distribution created successfully." diff --git a/external/unbound/pythonmod/doc/examples/example4.rst b/external/unbound/pythonmod/doc/examples/example4.rst index 6cc484797..b665351e8 100644 --- a/external/unbound/pythonmod/doc/examples/example4.rst +++ b/external/unbound/pythonmod/doc/examples/example4.rst @@ -24,7 +24,7 @@ DNS query and word lookup Let's define the following format od DNS queries: ``word1[.]word2[.] ... wordN[.]{en,cs}[._dict_.cz.]``. Word lookup is done by simple ``dict`` lookup from broken DNS request. -Query name is divided into a list of labels. This list is accesible as qname_list attribute. +Query name is divided into a list of labels. This list is accessible as qname_list attribute. :: aword = ' '.join(qstate.qinfo.qname_list[0:-4]) #skip last four labels diff --git a/external/unbound/pythonmod/doc/modules/config.rst b/external/unbound/pythonmod/doc/modules/config.rst index 1277bcedd..43333bdae 100644 --- a/external/unbound/pythonmod/doc/modules/config.rst +++ b/external/unbound/pythonmod/doc/modules/config.rst @@ -311,7 +311,7 @@ config_file .. attribute:: local_data - Local data RRs configged. + Local data RRs configured. .. attribute:: remote_control_enable diff --git a/external/unbound/pythonmod/doc/modules/env.rst b/external/unbound/pythonmod/doc/modules/env.rst index 42dbbd1cf..eae4c73c7 100644 --- a/external/unbound/pythonmod/doc/modules/env.rst +++ b/external/unbound/pythonmod/doc/modules/env.rst @@ -68,7 +68,7 @@ Module event .. data:: module_event_error - Error occured. + Error occurred. Security status ~~~~~~~~~~~~~~~~ diff --git a/external/unbound/pythonmod/doc/modules/struct.rst b/external/unbound/pythonmod/doc/modules/struct.rst index c41e10b73..669f36d91 100644 --- a/external/unbound/pythonmod/doc/modules/struct.rst +++ b/external/unbound/pythonmod/doc/modules/struct.rst @@ -347,12 +347,12 @@ DNSMessage .. method:: __init__(self, rr_name, rr_type, rr_class = RR_CLASS_IN, query_flags = 0, default_ttl = 0) - Prepares an answer (DNS packet) from qiven information. Query flags are combination of PKT_xx contants. + Prepares an answer (DNS packet) from given information. Query flags are combination of PKT_xx constants. .. method:: set_return_msg(self, qstate) This method fills qstate return message according to the given informations. - It takes lists of RRs in each section of answer, created necessray RRsets in wire format and store the result in :attr:`qstate.return_msg`. + It takes lists of RRs in each section of answer, created necessary RRsets in wire format and store the result in :attr:`qstate.return_msg`. Returns 1 if OK. .. attribute:: rr_name diff --git a/external/unbound/pythonmod/doc/usecase.rst b/external/unbound/pythonmod/doc/usecase.rst index 7a77349f1..2975740bb 100644 --- a/external/unbound/pythonmod/doc/usecase.rst +++ b/external/unbound/pythonmod/doc/usecase.rst @@ -9,7 +9,7 @@ Synchronized with database engine, for example *MySQL*. Firewall control ---------------- -Control firewall (e.g. enable incomming SSH connection) with DNS query signed with private key. +Control firewall (e.g. enable incoming SSH connection) with DNS query signed with private key. So firewall can blocks every service during normal operation. Scriptable DNS-based blacklist (DNS-BL_) diff --git a/external/unbound/services/cache/dns.c b/external/unbound/services/cache/dns.c index ba81afde4..e14e636db 100644 --- a/external/unbound/services/cache/dns.c +++ b/external/unbound/services/cache/dns.c @@ -656,8 +656,9 @@ fill_any(struct module_env* env, time_t now = *env->now; struct dns_msg* msg = NULL; uint16_t lookup[] = {LDNS_RR_TYPE_A, LDNS_RR_TYPE_AAAA, - LDNS_RR_TYPE_MX, LDNS_RR_TYPE_SOA, LDNS_RR_TYPE_NS, 0}; - int i, num=5; /* number of RR types to look up */ + LDNS_RR_TYPE_MX, LDNS_RR_TYPE_SOA, LDNS_RR_TYPE_NS, + LDNS_RR_TYPE_DNAME, 0}; + int i, num=6; /* number of RR types to look up */ log_assert(lookup[num] == 0); for(i=0; i<num; i++) { diff --git a/external/unbound/services/cache/rrset.c b/external/unbound/services/cache/rrset.c index 2c8552953..2f6a1b506 100644 --- a/external/unbound/services/cache/rrset.c +++ b/external/unbound/services/cache/rrset.c @@ -190,6 +190,7 @@ rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref, uint16_t rrset_type = ntohs(k->rk.type); int equal = 0; log_assert(ref->id != 0 && k->id != 0); + log_assert(k->rk.dname != NULL); /* looks up item with a readlock - no editing! */ if((e=slabhash_lookup(&r->table, h, k, 0)) != 0) { /* return id and key as they will be used in the cache diff --git a/external/unbound/sldns/parseutil.h b/external/unbound/sldns/parseutil.h index dfa1c2a2b..c5238bc10 100644 --- a/external/unbound/sldns/parseutil.h +++ b/external/unbound/sldns/parseutil.h @@ -56,13 +56,13 @@ time_t sldns_mktime_from_utc(const struct tm *tm); /** * The function interprets time as the number of seconds since epoch - * with respect to now using serial arithmitics (rfc1982). + * with respect to now using serial arithmetics (rfc1982). * That number of seconds is then converted to broken-out time information. * This is especially usefull when converting the inception and expiration * fields of RRSIG records. * * \param[in] time number of seconds since epoch (midnight, January 1st, 1970) - * to be intepreted as a serial arithmitics number relative to now. + * to be intepreted as a serial arithmetics number relative to now. * \param[in] now number of seconds since epoch (midnight, January 1st, 1970) * to which the time value is compared to determine the final value. * \param[out] result the struct with the broken-out time information diff --git a/external/unbound/sldns/rrdef.h b/external/unbound/sldns/rrdef.h index 678d2bc79..ab65943a5 100644 --- a/external/unbound/sldns/rrdef.h +++ b/external/unbound/sldns/rrdef.h @@ -342,7 +342,7 @@ enum sldns_enum_rdf_type /** A <character-string> encoding of the value field as specified * [RFC1035], Section 5.1., encoded as remaining rdata. - * For CAA. + * For CAA, URI. */ LDNS_RDF_TYPE_LONG_STR, diff --git a/external/unbound/sldns/wire2str.c b/external/unbound/sldns/wire2str.c index cec3bc7b0..5cbd78eed 100644 --- a/external/unbound/sldns/wire2str.c +++ b/external/unbound/sldns/wire2str.c @@ -697,6 +697,9 @@ int sldns_wire2str_rdata_scan(uint8_t** d, size_t* dlen, char** s, } w += n; } + if(*dlen != 0) { + goto failed; + } return w; } diff --git a/external/unbound/smallapp/unbound-anchor.c b/external/unbound/smallapp/unbound-anchor.c index 92bfa8428..81bb896f7 100644 --- a/external/unbound/smallapp/unbound-anchor.c +++ b/external/unbound/smallapp/unbound-anchor.c @@ -95,7 +95,7 @@ * signed yet; avoids attacks on system clock). The * last-successful-RFC5011-probe (if available) has to be more than 30 days * in the past (otherwise, RFC5011 should have worked). This keeps - * unneccesary https traffic down. If the main certificate is expired, it + * unnecessary https traffic down. If the main certificate is expired, it * fails. * * The dates on the keys in the xml are checked (uses the libexpat xml @@ -1520,7 +1520,11 @@ xml_entitydeclhandler(void *userData, const XML_Char *ATTR_UNUSED(publicId), const XML_Char *ATTR_UNUSED(notationName)) { +#if HAVE_DECL_XML_STOPPARSER (void)XML_StopParser((XML_Parser)userData, XML_FALSE); +#else + (void)userData; +#endif } /** @@ -1828,6 +1832,12 @@ write_unsigned_root(const char* root_anchor_file) root_anchor_file); if(verb && errno != 0) printf("%s\n", strerror(errno)); } + fflush(out); +#ifdef HAVE_FSYNC + fsync(fileno(out)); +#else + FlushFileBuffers((HANDLE)_fileno(out)); +#endif fclose(out); } @@ -1854,6 +1864,12 @@ write_root_anchor(const char* root_anchor_file, BIO* ds) root_anchor_file); if(verb && errno != 0) printf("%s\n", strerror(errno)); } + fflush(out); +#ifdef HAVE_FSYNC + fsync(fileno(out)); +#else + FlushFileBuffers((HANDLE)_fileno(out)); +#endif fclose(out); } diff --git a/external/unbound/smallapp/unbound-checkconf.c b/external/unbound/smallapp/unbound-checkconf.c index 0524edeaa..ec0771306 100644 --- a/external/unbound/smallapp/unbound-checkconf.c +++ b/external/unbound/smallapp/unbound-checkconf.c @@ -335,7 +335,9 @@ morechecks(struct config_file* cfg, const char* fname) if(cfg->edns_buffer_size > cfg->msg_buffer_size) fatal_exit("edns-buffer-size larger than msg-buffer-size, " "answers will not fit in processing buffer"); - +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg); +#endif if(cfg->chrootdir && cfg->chrootdir[0] && cfg->chrootdir[strlen(cfg->chrootdir)-1] == '/') fatal_exit("chootdir %s has trailing slash '/' please remove.", diff --git a/external/unbound/smallapp/unbound-control-setup.sh.in b/external/unbound/smallapp/unbound-control-setup.sh.in index 682ab260a..0d759f441 100644 --- a/external/unbound/smallapp/unbound-control-setup.sh.in +++ b/external/unbound/smallapp/unbound-control-setup.sh.in @@ -107,16 +107,15 @@ else fi # create self-signed cert for server -cat >request.cfg <<EOF -[req] -default_bits=$BITS -default_md=$HASH -prompt=no -distinguished_name=req_distinguished_name - -[req_distinguished_name] -commonName=$SERVERNAME -EOF +echo "[req]" > request.cfg +echo "default_bits=$BITS" >> request.cfg +echo "default_md=$HASH" >> request.cfg +echo "prompt=no" >> request.cfg +echo "distinguished_name=req_distinguished_name" >> request.cfg +echo "" >> request.cfg +echo "[req_distinguished_name]" >> request.cfg +echo "commonName=$SERVERNAME" >> request.cfg + test -f request.cfg || error "could not create request.cfg" echo "create $SVR_BASE.pem (self signed certificate)" @@ -125,16 +124,15 @@ openssl req -key $SVR_BASE.key -config request.cfg -new -x509 -days $DAYS -out openssl x509 -in $SVR_BASE.pem -addtrust serverAuth -out $SVR_BASE"_trust.pem" # create client request and sign it, piped -cat >request.cfg <<EOF -[req] -default_bits=$BITS -default_md=$HASH -prompt=no -distinguished_name=req_distinguished_name - -[req_distinguished_name] -commonName=$CLIENTNAME -EOF +echo "[req]" > request.cfg +echo "default_bits=$BITS" >> request.cfg +echo "default_md=$HASH" >> request.cfg +echo "prompt=no" >> request.cfg +echo "distinguished_name=req_distinguished_name" >> request.cfg +echo "" >> request.cfg +echo "[req_distinguished_name]" >> request.cfg +echo "commonName=$CLIENTNAME" >> request.cfg + test -f request.cfg || error "could not create request.cfg" echo "create $CTL_BASE.pem (signed client certificate)" diff --git a/external/unbound/smallapp/unbound-control.c b/external/unbound/smallapp/unbound-control.c index 571b4d0b0..fac73b099 100644 --- a/external/unbound/smallapp/unbound-control.c +++ b/external/unbound/smallapp/unbound-control.c @@ -156,10 +156,12 @@ setup_ctx(struct config_file* cfg) ctx = SSL_CTX_new(SSLv23_client_method()); if(!ctx) ssl_err("could not allocate SSL_CTX pointer"); - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)) + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) + != SSL_OP_NO_SSLv2) ssl_err("could not set SSL_OP_NO_SSLv2"); if(cfg->remote_control_use_cert) { - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)) + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) + != SSL_OP_NO_SSLv3) ssl_err("could not set SSL_OP_NO_SSLv3"); if(!SSL_CTX_use_certificate_chain_file(ctx,c_cert) || !SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM) @@ -361,6 +363,9 @@ go(const char* cfgfile, char* svr, int quiet, int argc, char* argv[]) fatal_exit("could not read config file"); if(!cfg->remote_control_enable) log_warn("control-enable is 'no' in the config file."); +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg); +#endif ctx = setup_ctx(cfg); /* contact server */ diff --git a/external/unbound/testcode/checklocks.c b/external/unbound/testcode/checklocks.c index 5815e4fd0..dab98491e 100644 --- a/external/unbound/testcode/checklocks.c +++ b/external/unbound/testcode/checklocks.c @@ -430,7 +430,7 @@ finish_acquire_lock(struct thr_check* thr, struct checked_lock* lock, * @param timedfunc: the pthread_mutex_timedlock or similar function. * Uses absolute timeout value. * @param arg: what to pass to tryfunc and timedlock. - * @param exclusive: if lock must be exlusive (only one allowed). + * @param exclusive: if lock must be exclusive (only one allowed). * @param getwr: if attempts to get writelock (or readlock) for rwlocks. */ static void @@ -502,6 +502,8 @@ void checklock_rdlock(enum check_lock_type type, struct checked_lock* lock, const char* func, const char* file, int line) { + if(key_deleted) + return; log_assert(type == check_lock_rwlock); checklock_lockit(type, lock, func, file, line, @@ -520,6 +522,8 @@ void checklock_wrlock(enum check_lock_type type, struct checked_lock* lock, const char* func, const char* file, int line) { + if(key_deleted) + return; log_assert(type == check_lock_rwlock); checklock_lockit(type, lock, func, file, line, try_wr, timed_wr, &lock->u.rwlock, 0, 1); @@ -555,6 +559,8 @@ void checklock_lock(enum check_lock_type type, struct checked_lock* lock, const char* func, const char* file, int line) { + if(key_deleted) + return; log_assert(type != check_lock_rwlock); switch(type) { case check_lock_mutex: @@ -577,8 +583,10 @@ void checklock_unlock(enum check_lock_type type, struct checked_lock* lock, const char* func, const char* file, int line) { - struct thr_check *thr = (struct thr_check*)pthread_getspecific( - thr_debug_key); + struct thr_check *thr; + if(key_deleted) + return; + thr = (struct thr_check*)pthread_getspecific(thr_debug_key); checktype(type, lock, func, file, line); if(!thr) lock_error(lock, func, file, line, "no thread info"); @@ -755,7 +763,8 @@ static void lock_debug_info(struct checked_lock* lock) { if(!lock) return; - log_info("+++ Lock %x, %d %d create %s %s %d", (int)lock, + log_info("+++ Lock %llx, %d %d create %s %s %d", + (unsigned long long)(size_t)lock, lock->create_thread, lock->create_instance, lock->create_func, lock->create_file, lock->create_line); log_info("lock type: %s", @@ -790,8 +799,9 @@ thread_debug_info(struct thr_check* thr) struct checked_lock* l = NULL; if(!thr) return; log_info("pthread id is %x", (int)thr->id); - log_info("thread func is %x", (int)thr->func); - log_info("thread arg is %x (%d)", (int)thr->arg, + log_info("thread func is %llx", (unsigned long long)(size_t)thr->func); + log_info("thread arg is %llx (%d)", + (unsigned long long)(size_t)thr->arg, (thr->arg?*(int*)thr->arg:0)); log_info("thread num is %d", thr->num); log_info("locks created %d", thr->locks_created); @@ -801,7 +811,8 @@ thread_debug_info(struct thr_check* thr) w = thr->waiting; f = thr->holding_first; l = thr->holding_last; - log_info("thread waiting for a lock: %s %x", w?"yes":"no", (int)w); + log_info("thread waiting for a lock: %s %llx", w?"yes":"no", + (unsigned long long)(size_t)w); lock_debug_info(w); log_info("thread holding first: %s, last: %s", f?"yes":"no", l?"yes":"no"); diff --git a/external/unbound/testcode/fake_event.c b/external/unbound/testcode/fake_event.c index 4335a8f22..e371cfdaa 100644 --- a/external/unbound/testcode/fake_event.c +++ b/external/unbound/testcode/fake_event.c @@ -569,7 +569,7 @@ do_infra_rtt(struct replay_runtime* runtime) free(dp); } -/** perform exponential backoff on the timout */ +/** perform exponential backoff on the timeout */ static void expon_timeout_backoff(struct replay_runtime* runtime) { diff --git a/external/unbound/testcode/lock_verify.c b/external/unbound/testcode/lock_verify.c index a46d5d99e..786d523c3 100644 --- a/external/unbound/testcode/lock_verify.c +++ b/external/unbound/testcode/lock_verify.c @@ -44,6 +44,9 @@ */ #include "config.h" +#ifdef HAVE_TIME_H +#include <time.h> +#endif #include "util/log.h" #include "util/rbtree.h" #include "util/locks.h" diff --git a/external/unbound/testcode/replay.c b/external/unbound/testcode/replay.c index 01b17a7f7..22670eb93 100644 --- a/external/unbound/testcode/replay.c +++ b/external/unbound/testcode/replay.c @@ -499,8 +499,7 @@ replay_scenario_delete(struct replay_scenario* scen) struct replay_range* rng, *rngn; if(!scen) return; - if(scen->title) - free(scen->title); + free(scen->title); mom = scen->mom_first; while(mom) { momn = mom->mom_next; @@ -909,118 +908,127 @@ macro_assign(rbtree_t* store, char* name, char* value) return x->value != NULL; } +/* testbound assert function for selftest. counts the number of tests */ +#define tb_assert(x) \ + do { if(!(x)) fatal_exit("%s:%d: %s: assertion %s failed", \ + __FILE__, __LINE__, __func__, #x); \ + num_asserts++; \ + } while(0); + void testbound_selftest(void) { /* test the macro store */ rbtree_t* store = macro_store_create(); char* v; int r; - log_assert(store); + int num_asserts = 0; + tb_assert(store); v = macro_lookup(store, "bla"); - log_assert(strcmp(v, "") == 0); + tb_assert(strcmp(v, "") == 0); free(v); v = macro_lookup(store, "vlerk"); - log_assert(strcmp(v, "") == 0); + tb_assert(strcmp(v, "") == 0); free(v); r = macro_assign(store, "bla", "waarde1"); - log_assert(r); + tb_assert(r); v = macro_lookup(store, "vlerk"); - log_assert(strcmp(v, "") == 0); + tb_assert(strcmp(v, "") == 0); free(v); v = macro_lookup(store, "bla"); - log_assert(strcmp(v, "waarde1") == 0); + tb_assert(strcmp(v, "waarde1") == 0); free(v); r = macro_assign(store, "vlerk", "kanteel"); - log_assert(r); + tb_assert(r); v = macro_lookup(store, "bla"); - log_assert(strcmp(v, "waarde1") == 0); + tb_assert(strcmp(v, "waarde1") == 0); free(v); v = macro_lookup(store, "vlerk"); - log_assert(strcmp(v, "kanteel") == 0); + tb_assert(strcmp(v, "kanteel") == 0); free(v); r = macro_assign(store, "bla", "ww"); - log_assert(r); + tb_assert(r); v = macro_lookup(store, "bla"); - log_assert(strcmp(v, "ww") == 0); + tb_assert(strcmp(v, "ww") == 0); free(v); - log_assert( macro_length("}") == 1); - log_assert( macro_length("blabla}") == 7); - log_assert( macro_length("bla${zoink}bla}") == 7+8); - log_assert( macro_length("bla${zoink}${bla}bla}") == 7+8+6); + tb_assert( macro_length("}") == 1); + tb_assert( macro_length("blabla}") == 7); + tb_assert( macro_length("bla${zoink}bla}") == 7+8); + tb_assert( macro_length("bla${zoink}${bla}bla}") == 7+8+6); v = macro_process(store, NULL, ""); - log_assert( v && strcmp(v, "") == 0); + tb_assert( v && strcmp(v, "") == 0); free(v); v = macro_process(store, NULL, "${}"); - log_assert( v && strcmp(v, "") == 0); + tb_assert( v && strcmp(v, "") == 0); free(v); v = macro_process(store, NULL, "blabla ${} dinges"); - log_assert( v && strcmp(v, "blabla dinges") == 0); + tb_assert( v && strcmp(v, "blabla dinges") == 0); free(v); v = macro_process(store, NULL, "1${$bla}2${$bla}3"); - log_assert( v && strcmp(v, "1ww2ww3") == 0); + tb_assert( v && strcmp(v, "1ww2ww3") == 0); free(v); v = macro_process(store, NULL, "it is ${ctime 123456}"); - log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); r = macro_assign(store, "t1", "123456"); - log_assert(r); + tb_assert(r); v = macro_process(store, NULL, "it is ${ctime ${$t1}}"); - log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); v = macro_process(store, NULL, "it is ${ctime $t1}"); - log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); r = macro_assign(store, "x", "1"); - log_assert(r); + tb_assert(r); r = macro_assign(store, "y", "2"); - log_assert(r); + tb_assert(r); v = macro_process(store, NULL, "${$x + $x}"); - log_assert( v && strcmp(v, "2") == 0); + tb_assert( v && strcmp(v, "2") == 0); free(v); v = macro_process(store, NULL, "${$x - $x}"); - log_assert( v && strcmp(v, "0") == 0); + tb_assert( v && strcmp(v, "0") == 0); free(v); v = macro_process(store, NULL, "${$y * $y}"); - log_assert( v && strcmp(v, "4") == 0); + tb_assert( v && strcmp(v, "4") == 0); free(v); v = macro_process(store, NULL, "${32 / $y + $x + $y}"); - log_assert( v && strcmp(v, "19") == 0); + tb_assert( v && strcmp(v, "19") == 0); free(v); v = macro_process(store, NULL, "${32 / ${$y+$y} + ${${100*3}/3}}"); - log_assert( v && strcmp(v, "108") == 0); + tb_assert( v && strcmp(v, "108") == 0); free(v); v = macro_process(store, NULL, "${1 2 33 2 1}"); - log_assert( v && strcmp(v, "1 2 33 2 1") == 0); + tb_assert( v && strcmp(v, "1 2 33 2 1") == 0); free(v); v = macro_process(store, NULL, "${123 3 + 5}"); - log_assert( v && strcmp(v, "123 8") == 0); + tb_assert( v && strcmp(v, "123 8") == 0); free(v); v = macro_process(store, NULL, "${123 glug 3 + 5}"); - log_assert( v && strcmp(v, "123 glug 8") == 0); + tb_assert( v && strcmp(v, "123 glug 8") == 0); free(v); macro_store_delete(store); + printf("selftest successful (%d checks).\n", num_asserts); } diff --git a/external/unbound/testcode/testbound.c b/external/unbound/testcode/testbound.c index fa361c4ea..d908150a0 100644 --- a/external/unbound/testcode/testbound.c +++ b/external/unbound/testcode/testbound.c @@ -35,7 +35,7 @@ */ /** * \file - * Exits with code 1 on a failure. 0 if all unit tests are successfull. + * Exits with code 1 on a failure. 0 if all unit tests are successful. */ #include "config.h" @@ -284,10 +284,9 @@ main(int argc, char* argv[]) case 's': free(pass_argv[1]); testbound_selftest(); - printf("selftest successful\n"); exit(0); case '2': -#if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS)) && defined(USE_SHA2) +#if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) printf("SHA256 supported\n"); exit(0); #else diff --git a/external/unbound/testcode/testpkts.h b/external/unbound/testcode/testpkts.h index 864f33fee..5c000546f 100644 --- a/external/unbound/testcode/testpkts.h +++ b/external/unbound/testcode/testpkts.h @@ -214,7 +214,7 @@ void delete_entry(struct entry* list); * @param in: file to read from. Filepos must be at the start of a new line. * @param name: name of the file for prettier errors. * @param pstate: file parse state with lineno, default_ttl, - * oirigin and prev_rr name. + * origin and prev_rr name. * @param skip_whitespace: skip leftside whitespace. * @return: The entry read (malloced) or NULL if no entry could be read. */ diff --git a/external/unbound/testcode/unitlruhash.c b/external/unbound/testcode/unitlruhash.c index 32d29d0af..28fc617f4 100644 --- a/external/unbound/testcode/unitlruhash.c +++ b/external/unbound/testcode/unitlruhash.c @@ -359,7 +359,7 @@ testlookup_unlim(struct lruhash* table, testdata_t** ref) static void test_long_table(struct lruhash* table) { - /* assuming it all fits in the hastable, this check will work */ + /* assuming it all fits in the hashtable, this check will work */ testdata_t* ref[HASHTESTMAX * 100]; size_t i; memset(ref, 0, sizeof(ref)); diff --git a/external/unbound/testcode/unitmain.c b/external/unbound/testcode/unitmain.c index 09ebba329..0b32dcd86 100644 --- a/external/unbound/testcode/unitmain.c +++ b/external/unbound/testcode/unitmain.c @@ -36,7 +36,7 @@ /** * \file * Unit test main program. Calls all the other unit tests. - * Exits with code 1 on a failure. 0 if all unit tests are successfull. + * Exits with code 1 on a failure. 0 if all unit tests are successful. */ #include "config.h" diff --git a/external/unbound/testcode/unitslabhash.c b/external/unbound/testcode/unitslabhash.c index b4a5048e6..783468883 100644 --- a/external/unbound/testcode/unitslabhash.c +++ b/external/unbound/testcode/unitslabhash.c @@ -242,7 +242,7 @@ testlookup_unlim(struct slabhash* table, testdata_t** ref) static void test_long_table(struct slabhash* table) { - /* assuming it all fits in the hastable, this check will work */ + /* assuming it all fits in the hashtable, this check will work */ testdata_t* ref[HASHTESTMAX * 100]; size_t i; memset(ref, 0, sizeof(ref)); diff --git a/external/unbound/testcode/unitverify.c b/external/unbound/testcode/unitverify.c index 078af0a9c..9cb0eb99e 100644 --- a/external/unbound/testcode/unitverify.c +++ b/external/unbound/testcode/unitverify.c @@ -504,12 +504,12 @@ verify_test(void) verifytest_file("testdata/test_signatures.6", "20080416005004"); verifytest_file("testdata/test_signatures.7", "20070829144150"); verifytest_file("testdata/test_signatures.8", "20070829144150"); -#if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS)) && defined(USE_SHA2) +#if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) verifytest_file("testdata/test_sigs.rsasha256", "20070829144150"); verifytest_file("testdata/test_sigs.sha1_and_256", "20070829144150"); verifytest_file("testdata/test_sigs.rsasha256_draft", "20090101000000"); #endif -#if (defined(HAVE_EVP_SHA512) || defined(HAVE_NSS)) && defined(USE_SHA2) +#if (defined(HAVE_EVP_SHA512) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) verifytest_file("testdata/test_sigs.rsasha512_draft", "20070829144150"); #endif verifytest_file("testdata/test_sigs.hinfo", "20090107100022"); diff --git a/external/unbound/util/config_file.c b/external/unbound/util/config_file.c index 3ef545a7b..cc7d99086 100644 --- a/external/unbound/util/config_file.c +++ b/external/unbound/util/config_file.c @@ -100,7 +100,7 @@ config_create(void) cfg->tcp_upstream = 0; cfg->ssl_service_key = NULL; cfg->ssl_service_pem = NULL; - cfg->ssl_port = 443; + cfg->ssl_port = 853; cfg->ssl_upstream = 0; cfg->use_syslog = 1; cfg->log_time_ascii = 0; @@ -174,7 +174,7 @@ config_create(void) cfg->harden_dnssec_stripped = 1; cfg->harden_below_nxdomain = 0; cfg->harden_referral_path = 0; - cfg->harden_algo_downgrade = 1; + cfg->harden_algo_downgrade = 0; cfg->use_caps_bits_for_id = 0; cfg->caps_whitelist = NULL; cfg->private_address = NULL; @@ -240,6 +240,7 @@ config_create(void) cfg->ratelimit_for_domain = NULL; cfg->ratelimit_below_domain = NULL; cfg->ratelimit_factor = 10; + cfg->qname_minimisation = 0; return cfg; error_exit: config_delete(cfg); @@ -473,6 +474,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_MEMSIZE("ratelimit-size:", ratelimit_size) else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) + else S_YNO("qname-minimisation:", qname_minimisation) /* val_sig_skew_min and max are copied into val_env during init, * so this does not update val_env with set_option */ else if(strcmp(opt, "val-sig-skew-min:") == 0) @@ -747,6 +749,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "ratelimit-factor", ratelimit_factor) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) else O_DEC(opt, "val-sig-skew-max", val_sig_skew_max) + else O_YNO(opt, "qname-minimisation", qname_minimisation) /* not here: * outgoing-permit, outgoing-avoid - have list of ports * local-zone - zones and nodefault variables @@ -1555,6 +1558,28 @@ w_lookup_reg_str(const char* key, const char* name) } return result; } + +void w_config_adjust_directory(struct config_file* cfg) +{ + if(cfg->directory && cfg->directory[0]) { + TCHAR dirbuf[2*MAX_PATH+4]; + if(strcmp(cfg->directory, "%EXECUTABLE%") == 0) { + /* get executable path, and if that contains + * directories, snip off the filename part */ + dirbuf[0] = 0; + if(!GetModuleFileName(NULL, dirbuf, MAX_PATH)) + log_err("could not GetModuleFileName"); + if(strrchr(dirbuf, '\\')) { + (strrchr(dirbuf, '\\'))[0] = 0; + } else log_err("GetModuleFileName had no path"); + if(dirbuf[0]) { + /* adjust directory for later lookups to work*/ + free(cfg->directory); + cfg->directory = memdup(dirbuf, strlen(dirbuf)+1); + } + } + } +} #endif /* UB_ON_WINDOWS */ void errinf(struct module_qstate* qstate, const char* str) diff --git a/external/unbound/util/config_file.h b/external/unbound/util/config_file.h index 99b15e06e..8fa163ed7 100644 --- a/external/unbound/util/config_file.h +++ b/external/unbound/util/config_file.h @@ -283,7 +283,7 @@ struct config_file { struct config_str2list* local_zones; /** local zones nodefault list */ struct config_strlist* local_zones_nodefault; - /** local data RRs configged */ + /** local data RRs configured */ struct config_strlist* local_data; /** unblock lan zones (reverse lookups for 10/8 and so on) */ int unblock_lan_zones; @@ -364,6 +364,8 @@ struct config_file { struct config_str2list* ratelimit_below_domain; /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ int ratelimit_factor; + /** minimise outgoing QNAME and hide original QTYPE if possible */ + int qname_minimisation; }; /** from cfg username, after daemonise setup performed */ @@ -739,6 +741,9 @@ void ub_c_error_msg(const char* fmt, ...) ATTR_FORMAT(printf, 1, 2); * exist on an error (logged with log_err) was encountered. */ char* w_lookup_reg_str(const char* key, const char* name); + +/** Modify directory in options for module file name */ +void w_config_adjust_directory(struct config_file* cfg); #endif /* UB_ON_WINDOWS */ #endif /* UTIL_CONFIG_FILE_H */ diff --git a/external/unbound/util/configlexer.c b/external/unbound/util/configlexer.c index 3ce3c0de3..a9fe54121 100644 --- a/external/unbound/util/configlexer.c +++ b/external/unbound/util/configlexer.c @@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 175 -#define YY_END_OF_BUFFER 176 +#define YY_NUM_RULES 176 +#define YY_END_OF_BUFFER 177 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,201 +372,202 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1752] = +static yyconst flex_int16_t yy_accept[1771] = { 0, - 1, 1, 157, 157, 161, 161, 165, 165, 169, 169, - 1, 1, 176, 173, 1, 155, 155, 174, 2, 174, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 157, - 158, 158, 159, 174, 161, 162, 162, 163, 174, 168, - 165, 166, 166, 167, 174, 169, 170, 170, 171, 174, - 172, 156, 2, 160, 174, 172, 173, 0, 1, 2, - 2, 2, 2, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 157, 0, 161, 0, 168, 0, - 165, 169, 0, 172, 0, 2, 2, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 172, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 172, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 70, 173, 173, 173, - 173, 173, 173, 6, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 172, 173, - 173, 173, 173, 173, 30, 173, 173, 173, 173, 173, - 173, 173, 173, 136, 173, 12, 13, 173, 15, 14, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 129, - 173, 173, 173, 173, 173, 173, 3, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 164, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 33, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 34, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 85, - 164, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 84, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 68, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 20, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 31, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 32, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 22, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 149, 173, 173, 173, - 173, 173, 173, 26, 173, 27, 173, 173, 173, 71, - 173, 72, 173, 69, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 5, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 87, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 23, - 173, 173, 173, 173, 173, 113, 112, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 35, 173, 173, 173, 173, 173, 173, 173, 173, 74, - 73, 173, 173, 173, 173, 173, 173, 173, 109, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 53, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 57, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 111, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 4, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 105, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 122, 173, 106, 173, 134, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 21, 173, 173, - 173, 173, 76, 173, 77, 75, 173, 173, 173, 173, - 173, 173, 173, 83, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 107, 173, 173, 173, 173, - 133, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 67, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 28, 173, 173, - 17, 173, 173, 173, 16, 173, 92, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 42, 44, 173, 173, 173, 173, 173, 173, 173, - - 173, 137, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 78, 173, 173, 173, 173, - 173, 173, 82, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 86, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 128, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 96, 173, 100, 173, 173, 173, - 173, 81, 173, 173, 63, 173, 120, 173, 173, 173, - 173, 135, 173, 173, 173, 173, 173, 173, 173, 142, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 99, 173, 173, 173, 173, 173, 45, 46, 173, - 29, 52, 101, 173, 114, 110, 173, 173, 38, 173, - 103, 173, 173, 173, 173, 173, 7, 173, 173, 66, - 173, 173, 173, 151, 173, 119, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 88, 141, 173, 173, 173, 173, 173, - 173, 173, 173, 130, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 102, 173, - - 37, 39, 173, 173, 173, 173, 173, 173, 65, 173, - 173, 173, 150, 173, 173, 173, 173, 124, 18, 19, - 173, 173, 173, 173, 173, 173, 173, 62, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 126, 123, - 173, 173, 173, 173, 173, 173, 173, 173, 36, 173, - 173, 173, 173, 173, 173, 173, 11, 173, 173, 173, - 173, 173, 173, 173, 173, 10, 173, 173, 173, 173, - 154, 173, 40, 173, 132, 125, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 95, 94, 173, - 173, 127, 121, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 47, 173, 131, 173, 173, 173, 173, 173, 173, - 173, 41, 173, 173, 173, 89, 91, 115, 173, 173, - 173, 93, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 138, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 24, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 140, 173, 173, 118, - 173, 173, 173, 173, 173, 173, 173, 50, 173, 25, - 173, 9, 173, 173, 173, 173, 173, 116, 54, 173, - - 173, 173, 98, 173, 173, 173, 173, 173, 173, 173, - 139, 79, 173, 173, 173, 173, 56, 60, 55, 173, - 48, 173, 8, 173, 173, 152, 173, 173, 97, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 61, - 59, 173, 49, 173, 108, 173, 117, 173, 173, 90, - 43, 173, 173, 173, 173, 173, 173, 80, 58, 51, - 153, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 64, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - 173, 173, 173, 173, 173, 173, 104, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 145, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 143, - 173, 146, 147, 173, 173, 173, 173, 173, 144, 148, - 0 + 1, 1, 158, 158, 162, 162, 166, 166, 170, 170, + 1, 1, 177, 174, 1, 156, 156, 175, 2, 175, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 158, 159, 159, 160, 175, 162, 163, 163, 164, 175, + 169, 166, 167, 167, 168, 175, 170, 171, 171, 172, + 175, 173, 157, 2, 161, 175, 173, 174, 0, 1, + 2, 2, 2, 2, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 158, 0, 162, 0, + 169, 0, 166, 170, 0, 173, 0, 2, 2, 173, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 173, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 173, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 71, 174, 174, 174, 174, 174, 174, 7, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 173, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 173, 174, 174, 174, 174, 174, + 31, 174, 174, 174, 174, 174, 174, 174, 174, 137, + 174, 13, 14, 174, 16, 15, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 130, 174, 174, 174, 174, + 174, 174, 174, 3, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 173, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 165, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 34, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 35, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 86, 165, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 85, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 69, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 21, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 32, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 33, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 23, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 150, 174, 174, 174, + 174, 174, 174, 27, 174, 28, 174, 174, 174, 72, + 174, 73, 174, 70, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 6, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 88, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 24, + 174, 174, 174, 174, 174, 114, 113, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 36, 174, 174, 174, 174, 174, 174, 174, 174, + 75, 74, 174, 174, 174, 174, 174, 174, 174, 110, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 54, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 58, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 112, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 5, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 106, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 123, 174, 107, 174, 135, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 22, + 174, 174, 174, 174, 77, 174, 78, 76, 174, 174, + 174, 174, 174, 174, 174, 84, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 108, 174, 174, + 174, 174, 134, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 68, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 29, 174, 174, 18, 174, 174, 174, 17, 174, 93, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 43, 45, 174, 174, 174, 174, + 174, 174, 174, 174, 138, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 79, 174, + 174, 174, 174, 174, 174, 83, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 87, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 129, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 97, 174, + 101, 174, 174, 174, 174, 82, 174, 174, 64, 174, + + 121, 174, 174, 174, 174, 136, 174, 174, 174, 174, + 174, 174, 174, 143, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 100, 174, 174, 174, 174, + 174, 46, 47, 174, 30, 53, 102, 174, 115, 111, + 174, 174, 39, 174, 104, 174, 174, 174, 174, 174, + 8, 174, 174, 67, 174, 174, 174, 174, 152, 174, + 120, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 89, 142, + 174, 174, 174, 174, 174, 174, 174, 174, 131, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 103, 174, 38, 40, 174, 174, 174, + 174, 174, 174, 66, 174, 174, 174, 174, 151, 174, + 174, 174, 174, 125, 19, 20, 174, 174, 174, 174, + 174, 174, 174, 63, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 127, 124, 174, 174, 174, 174, + 174, 174, 174, 174, 37, 174, 174, 174, 174, 174, + 174, 174, 12, 174, 174, 174, 174, 174, 174, 174, + 174, 11, 174, 174, 174, 174, 174, 155, 174, 41, + 174, 133, 126, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 96, 95, 174, 174, 128, 122, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 48, 174, + 132, 174, 174, 174, 174, 174, 174, 174, 174, 42, + 174, 174, 174, 90, 92, 116, 174, 174, 174, 94, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 139, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 25, 174, 174, 174, 4, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 141, 174, 174, 119, 174, + + 174, 174, 174, 174, 174, 174, 51, 174, 26, 174, + 10, 174, 174, 174, 174, 174, 117, 55, 174, 174, + 174, 99, 174, 174, 174, 174, 174, 174, 174, 140, + 80, 174, 174, 174, 174, 57, 61, 56, 174, 49, + 174, 9, 174, 174, 153, 174, 174, 98, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 62, 60, + 174, 50, 174, 109, 174, 118, 174, 174, 91, 44, + 174, 174, 174, 174, 174, 174, 81, 59, 52, 154, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 65, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 105, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 146, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 144, 174, + 147, 148, 174, 174, 174, 174, 174, 145, 149, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -609,1182 +610,1192 @@ static yyconst flex_int32_t yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1766] = +static yyconst flex_int16_t yy_base[1785] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2487, 2363, 50, 3475, 3475, 3475, 129, 94, + 87, 108, 2403, 1986, 50, 3503, 3503, 3503, 129, 94, 70, 104, 130, 90, 92, 115, 127, 95, 84, 111, - 137, 148, 50, 170, 150, 157, 160, 140, 166, 2236, - 3475, 3475, 3475, 70, 2188, 3475, 3475, 3475, 42, 1913, - 1777, 3475, 3475, 3475, 192, 1681, 3475, 3475, 3475, 141, - 1627, 3475, 198, 3475, 202, 122, 1553, 208, 120, 0, - 219, 0, 0, 103, 201, 203, 206, 164, 212, 204, - 214, 125, 215, 225, 217, 221, 224, 227, 229, 230, - 236, 237, 244, 228, 246, 249, 248, 253, 254, 173, - - 255, 259, 260, 261, 262, 265, 264, 270, 263, 274, - 276, 277, 278, 284, 290, 286, 287, 291, 158, 293, - 299, 295, 303, 305, 1394, 315, 1200, 319, 1040, 327, - 776, 615, 320, 539, 335, 339, 0, 317, 332, 340, - 334, 296, 325, 336, 338, 346, 343, 350, 354, 375, - 355, 342, 357, 49, 359, 360, 353, 366, 368, 364, - 371, 372, 370, 369, 391, 377, 393, 402, 394, 387, - 405, 401, 409, 412, 410, 398, 413, 414, 415, 416, - 418, 420, 422, 423, 424, 427, 428, 435, 431, 439, - 433, 450, 436, 432, 452, 459, 461, 460, 457, 448, - - 458, 468, 465, 476, 472, 464, 473, 474, 475, 483, - 488, 489, 491, 480, 486, 494, 498, 495, 505, 493, - 508, 506, 515, 503, 512, 513, 514, 516, 518, 520, - 519, 521, 531, 522, 528, 529, 532, 535, 538, 542, - 545, 544, 550, 552, 555, 557, 558, 560, 563, 561, - 564, 565, 571, 578, 574, 575, 581, 576, 582, 583, - 593, 595, 585, 587, 589, 596, 599, 597, 619, 605, - 608, 609, 613, 612, 616, 628, 614, 624, 625, 626, - 647, 629, 639, 648, 645, 646, 657, 650, 652, 656, - 659, 658, 662, 663, 664, 665, 667, 675, 679, 677, - - 689, 682, 690, 691, 693, 695, 696, 704, 685, 700, - 701, 703, 710, 712, 702, 714, 3475, 718, 705, 716, - 720, 721, 722, 3475, 725, 727, 728, 730, 731, 732, - 738, 735, 737, 743, 744, 746, 749, 750, 751, 771, - 755, 752, 762, 760, 756, 773, 758, 780, 769, 778, - 785, 782, 786, 788, 789, 791, 792, 795, 809, 794, - 796, 802, 803, 813, 805, 816, 818, 819, 820, 822, - 830, 824, 827, 832, 840, 843, 845, 851, 833, 847, - 849, 855, 856, 857, 839, 863, 861, 864, 865, 869, - 867, 872, 876, 874, 879, 880, 887, 875, 889, 881, - - 836, 895, 893, 898, 900, 891, 902, 904, 910, 907, - 908, 909, 922, 913, 924, 916, 927, 933, 669, 915, - 929, 923, 935, 936, 937, 938, 939, 943, 944, 946, - 952, 940, 949, 956, 954, 963, 951, 964, 966, 969, - 970, 971, 972, 980, 973, 974, 984, 982, 987, 986, - 990, 988, 997, 995, 3475, 1005, 999, 1001, 1002, 1007, - 1008, 1010, 1036, 3475, 1012, 3475, 3475, 1011, 3475, 3475, - 1014, 1016, 1017, 1024, 1059, 1025, 1029, 1018, 1031, 1033, - 1037, 1038, 1042, 1049, 1051, 1062, 1046, 1052, 1056, 1068, - 1069, 1064, 1073, 1080, 1082, 1088, 1089, 1087, 1086, 1093, - - 1094, 1095, 1098, 1097, 1096, 1100, 1106, 1110, 1107, 3475, - 1108, 1109, 1111, 1118, 1116, 1121, 3475, 1053, 1122, 1120, - 1123, 1128, 1129, 1130, 1133, 1134, 1135, 1136, 1142, 1138, - 1140, 1147, 1151, 1153, 1155, 1157, 1158, 1162, 1163, 1164, - 1171, 1169, 1168, 1174, 1178, 1175, 1180, 1182, 1177, 1185, - 1183, 1188, 1190, 1191, 1213, 1193, 1194, 1196, 1199, 1198, - 1201, 1205, 1206, 1208, 1220, 1226, 1227, 1207, 1230, 1232, - 1242, 1239, 1236, 1246, 1243, 1249, 1252, 1250, 1254, 1256, - 1258, 1260, 1263, 3475, 1269, 1268, 1266, 1273, 1274, 1272, - 1217, 1275, 1276, 1278, 1280, 1282, 1281, 1292, 3475, 1288, - - 1293, 1289, 1294, 1297, 1298, 1301, 1305, 1313, 1309, 3475, - 1317, 1314, 1320, 1319, 1321, 1324, 1325, 1326, 1327, 1329, - 1331, 1330, 1335, 1343, 1340, 1333, 1345, 1338, 1350, 1352, - 1353, 1354, 1355, 1357, 1358, 1362, 1364, 1368, 1370, 1367, - 1378, 1371, 1374, 1379, 1384, 1381, 1383, 1385, 1386, 3475, - 442, 1387, 1393, 1389, 1400, 1402, 1398, 1405, 1406, 1407, - 1412, 1413, 1396, 1414, 1416, 1419, 1422, 1424, 1423, 1425, - 1427, 1431, 1433, 1434, 1436, 1439, 1441, 1442, 1444, 1445, - 1451, 1450, 1452, 1453, 1456, 1457, 1458, 1460, 1462, 1465, - 1470, 1466, 1473, 3475, 1479, 1475, 1476, 1472, 1478, 1495, - - 1487, 1496, 1488, 1491, 1498, 1502, 1499, 1505, 1507, 1509, - 1511, 1512, 1513, 1519, 1520, 1517, 1521, 1523, 1527, 1524, - 3475, 1529, 1530, 1534, 1543, 1536, 1540, 1546, 1544, 1547, - 1548, 1556, 1549, 1561, 3475, 1563, 1557, 1551, 1568, 1569, - 1572, 1574, 1576, 1577, 1578, 1580, 1581, 1584, 1582, 1587, - 1591, 3475, 1595, 1599, 1596, 1607, 1603, 1592, 1604, 1606, - 1608, 1609, 1618, 1610, 1614, 1617, 1619, 1620, 1616, 1622, - 1623, 1626, 1625, 1633, 3475, 1640, 1642, 1644, 1643, 1646, - 1654, 1653, 1650, 1655, 1656, 1658, 1659, 1662, 1663, 1665, - 1666, 1667, 1671, 1672, 1673, 1670, 1690, 1668, 1691, 1679, - - 1692, 1678, 1694, 1677, 1699, 1707, 1708, 1705, 3475, 1710, - 1711, 1712, 1713, 1714, 1720, 1722, 1716, 1718, 1723, 1724, - 1725, 1739, 1726, 1728, 1732, 1736, 1730, 1738, 1741, 1752, - 1742, 1757, 1746, 1748, 1758, 1763, 3475, 1740, 1771, 1768, - 1772, 1764, 1779, 3475, 1775, 3475, 1778, 1780, 1790, 3475, - 1787, 3475, 1789, 3475, 1791, 1795, 1777, 1797, 1798, 1799, - 1800, 1802, 1803, 1805, 1807, 1808, 1809, 1811, 1816, 3475, - 1810, 1817, 1824, 1827, 1814, 1818, 1826, 1820, 1837, 1836, - 1847, 1833, 1848, 1844, 1846, 1849, 3475, 1850, 1851, 1854, - 1856, 1857, 1864, 1862, 1861, 1868, 1865, 1869, 1882, 1878, - - 1871, 1880, 1881, 1883, 1891, 1884, 1887, 1894, 1895, 1885, - 1896, 1897, 1898, 1902, 1905, 1909, 1906, 1908, 1910, 3475, - 1915, 1919, 1922, 1921, 1911, 3475, 3475, 1924, 1932, 1936, - 1937, 1938, 1925, 1939, 1940, 1950, 1943, 1946, 1952, 1954, - 1955, 1956, 1957, 1958, 1959, 1961, 1962, 1963, 1971, 1970, - 3475, 1979, 1973, 1986, 1984, 1975, 1992, 1985, 1993, 3475, - 3475, 1989, 1994, 1999, 2000, 2006, 2004, 2003, 3475, 2005, - 2008, 2009, 2010, 2011, 2013, 2018, 2023, 2027, 2028, 2024, - 2032, 2033, 2029, 2035, 2034, 2036, 2037, 2040, 2047, 2052, - 3475, 2049, 2056, 2053, 2057, 2059, 2060, 2061, 2064, 2066, - - 2063, 2067, 2071, 2078, 2074, 2077, 2079, 2081, 2084, 2086, - 2090, 2087, 2097, 2098, 3475, 2105, 2093, 2107, 2094, 2109, - 2112, 2115, 2114, 2103, 2116, 2117, 2106, 2118, 2122, 2124, - 2129, 2125, 3475, 2131, 2135, 2132, 2141, 2142, 2138, 2143, - 2146, 2149, 3475, 2152, 2158, 2154, 2155, 2161, 2160, 2163, - 2166, 2167, 2169, 2170, 2171, 2176, 2177, 2179, 2180, 2182, - 2184, 2183, 2186, 2193, 2196, 2191, 2200, 2203, 2206, 2216, - 2213, 2201, 2207, 2222, 2218, 2220, 2221, 2210, 2228, 2225, - 2231, 2229, 3475, 2234, 2238, 2243, 2245, 2232, 2240, 2248, - 2249, 2250, 3475, 2251, 3475, 2254, 3475, 2257, 2261, 2258, - - 2262, 2263, 2264, 2268, 2265, 2279, 2273, 3475, 2276, 2267, - 2275, 2280, 3475, 2291, 3475, 3475, 2282, 2286, 2298, 2292, - 2294, 2299, 2303, 3475, 2304, 2296, 2305, 2308, 2307, 2310, - 2312, 2313, 2314, 2315, 2318, 3475, 2321, 2330, 2319, 2327, - 3475, 2320, 2340, 2323, 2341, 2331, 2342, 2343, 2344, 2345, - 2355, 2351, 2352, 3475, 2353, 2354, 2358, 2359, 2361, 2369, - 2366, 2373, 2367, 2376, 2378, 2377, 2370, 3475, 2384, 2387, - 3475, 2383, 2390, 2391, 3475, 2393, 3475, 2394, 2397, 2395, - 2402, 2404, 2405, 2409, 2398, 2415, 2401, 2413, 2422, 2416, - 2418, 3475, 3475, 2428, 2423, 2430, 2433, 2425, 2431, 2435, - - 2442, 3475, 2436, 2439, 2443, 2445, 2446, 2447, 2448, 2453, - 2450, 2455, 2457, 2456, 2458, 3475, 2463, 2459, 2468, 2467, - 2469, 2471, 3475, 2473, 2475, 2476, 2479, 2484, 2490, 2495, - 2499, 2496, 2501, 2503, 2505, 2506, 2508, 2511, 2512, 3475, - 2480, 2514, 2515, 2517, 2518, 2520, 2519, 2523, 2528, 2529, - 2521, 2533, 3475, 2530, 2535, 2537, 2543, 2538, 2546, 2547, - 2548, 2551, 2552, 2554, 2555, 2556, 2558, 2561, 2562, 2563, - 2565, 2567, 2575, 2578, 3475, 2568, 3475, 2576, 2583, 2591, - 2589, 3475, 2587, 2592, 3475, 2593, 3475, 2594, 2595, 2596, - 2604, 3475, 2607, 2599, 2608, 2610, 2611, 2612, 2614, 3475, - - 2617, 2620, 2619, 2624, 2626, 2627, 2628, 2630, 2633, 2639, - 2636, 3475, 2635, 2640, 2648, 2644, 2647, 3475, 3475, 2653, - 3475, 3475, 3475, 2656, 3475, 3475, 2657, 2659, 3475, 2661, - 3475, 2668, 2664, 2666, 2667, 2669, 3475, 2671, 2673, 3475, - 2675, 2676, 2677, 3475, 2679, 3475, 2680, 2684, 2681, 2688, - 2691, 2697, 2699, 2700, 2687, 2701, 2702, 2703, 2704, 2706, - 2708, 2710, 2711, 2716, 2717, 2718, 2720, 2721, 2722, 2723, - 2724, 2732, 2741, 3475, 3475, 2725, 2733, 2727, 2735, 2738, - 2743, 2746, 2752, 3475, 2757, 2750, 2754, 2758, 2748, 2760, - 2765, 2767, 2769, 2775, 2762, 2772, 2771, 2774, 3475, 2776, - - 3475, 3475, 2777, 2779, 2784, 2785, 2788, 2789, 3475, 2792, - 2799, 2791, 3475, 2802, 2803, 2808, 2810, 3475, 3475, 3475, - 2811, 2805, 2814, 2813, 2815, 2816, 2817, 3475, 2819, 2821, - 2824, 2828, 2831, 2833, 2841, 2837, 2839, 2845, 3475, 3475, - 2851, 2848, 2849, 2847, 2840, 2850, 2857, 2853, 3475, 2860, - 2859, 2861, 2864, 2866, 2867, 2869, 3475, 2870, 2871, 2876, - 2880, 2872, 2883, 2884, 2885, 3475, 2887, 2886, 2893, 2888, - 3475, 2900, 3475, 2905, 3475, 3475, 2894, 2906, 2908, 2910, - 2913, 2916, 2902, 2917, 2923, 2922, 2924, 3475, 3475, 2919, - 2932, 3475, 3475, 2926, 2929, 2930, 2933, 2935, 2937, 2938, - - 2939, 2940, 2941, 2945, 2950, 2951, 2952, 2954, 2955, 2958, - 2961, 3475, 2960, 3475, 2965, 2968, 2969, 2962, 2970, 2974, - 2975, 3475, 2977, 2976, 2979, 3475, 3475, 3475, 2989, 2990, - 2992, 3475, 2993, 2996, 2982, 2995, 3003, 2997, 3011, 2999, - 3010, 3475, 3000, 3007, 3013, 3014, 3017, 3020, 3021, 3023, - 3025, 3027, 3029, 3032, 3034, 3037, 3475, 3039, 3035, 3041, - 3043, 3045, 3046, 3048, 3050, 3052, 3054, 3056, 3058, 3060, - 3061, 3062, 3063, 3070, 3069, 3074, 3475, 3078, 3075, 3475, - 3079, 3083, 3080, 3089, 3091, 3093, 3095, 3475, 3099, 3475, - 3101, 3475, 3104, 3096, 3105, 3107, 3108, 3475, 3475, 3109, - - 3112, 3115, 3475, 3116, 3118, 3119, 3122, 3123, 3124, 3126, - 3475, 3475, 3127, 3129, 3133, 3135, 3475, 3475, 3475, 3143, - 3475, 3144, 3475, 3150, 3146, 3475, 3152, 3153, 3475, 3136, - 3156, 3158, 3134, 3161, 3162, 3164, 3165, 3163, 3167, 3475, - 3475, 3172, 3475, 3174, 3475, 3178, 3475, 3175, 3179, 3475, - 3475, 3186, 3184, 3185, 3188, 3191, 3189, 3475, 3475, 3475, - 3475, 3192, 3193, 3195, 3197, 3194, 3199, 3200, 3202, 3204, - 3201, 3206, 3214, 3218, 3220, 3226, 3222, 3475, 3223, 3227, - 3229, 3233, 3230, 3232, 3231, 3234, 3237, 3239, 3240, 3241, - 3242, 3249, 3251, 3257, 3259, 3261, 3262, 3255, 3268, 3272, - - 3269, 3265, 3273, 3280, 3277, 3278, 3475, 3281, 3279, 3282, - 3287, 3288, 3285, 3283, 3293, 3303, 3305, 3299, 3295, 3308, - 3309, 3311, 3312, 3315, 3313, 3475, 3317, 3319, 3321, 3323, - 3325, 3327, 3328, 3329, 3334, 3336, 3338, 3345, 3341, 3475, - 3349, 3475, 3475, 3350, 3339, 3351, 3353, 3357, 3475, 3475, - 3475, 3383, 3390, 3397, 3404, 3411, 94, 3418, 3425, 3432, - 3439, 3446, 3453, 3460, 3467 + 137, 148, 50, 170, 122, 150, 157, 160, 140, 166, + 1934, 3503, 3503, 3503, 70, 1883, 3503, 3503, 3503, 42, + 1800, 1768, 3503, 3503, 3503, 192, 1510, 3503, 3503, 3503, + 141, 849, 3503, 198, 3503, 202, 197, 811, 210, 120, + 0, 223, 0, 0, 103, 203, 180, 205, 164, 206, + 213, 210, 125, 216, 224, 218, 226, 227, 229, 230, + 231, 238, 248, 244, 240, 250, 253, 233, 249, 258, + + 264, 261, 265, 266, 267, 270, 269, 276, 277, 278, + 173, 280, 283, 284, 285, 289, 295, 281, 291, 297, + 301, 302, 303, 306, 308, 309, 668, 250, 392, 319, + 382, 327, 363, 322, 333, 243, 339, 343, 0, 336, + 340, 346, 314, 342, 338, 344, 347, 353, 351, 360, + 363, 384, 364, 349, 366, 49, 358, 369, 372, 370, + 375, 373, 376, 377, 379, 380, 394, 400, 407, 408, + 406, 395, 414, 412, 423, 424, 420, 421, 422, 410, + 425, 411, 429, 426, 435, 432, 436, 438, 441, 442, + 449, 445, 446, 450, 458, 451, 452, 454, 467, 471, + + 472, 468, 459, 469, 481, 479, 487, 473, 475, 486, + 483, 489, 495, 500, 498, 501, 490, 503, 504, 505, + 510, 516, 512, 513, 515, 522, 521, 524, 523, 525, + 527, 529, 530, 531, 533, 537, 536, 540, 543, 546, + 535, 548, 550, 551, 558, 564, 559, 565, 566, 568, + 570, 573, 571, 574, 581, 582, 583, 590, 584, 587, + 588, 595, 596, 597, 605, 602, 598, 601, 599, 608, + 610, 611, 630, 616, 618, 620, 624, 623, 628, 639, + 635, 636, 637, 640, 659, 647, 650, 662, 653, 660, + 673, 661, 663, 666, 672, 674, 680, 675, 677, 678, + + 683, 685, 694, 688, 701, 689, 699, 704, 702, 706, + 708, 715, 711, 712, 713, 714, 716, 722, 720, 723, + 3503, 728, 726, 730, 731, 733, 734, 3503, 735, 736, + 737, 744, 743, 745, 749, 759, 742, 748, 758, 761, + 762, 763, 764, 766, 786, 769, 767, 776, 772, 773, + 790, 626, 795, 782, 788, 784, 798, 801, 803, 804, + 805, 806, 774, 814, 807, 810, 816, 818, 831, 815, + 820, 822, 833, 834, 835, 841, 839, 843, 845, 855, + 847, 857, 858, 838, 860, 862, 868, 867, 864, 861, + 875, 872, 873, 876, 882, 874, 880, 890, 886, 893, + + 897, 898, 878, 899, 889, 900, 907, 908, 906, 910, + 911, 915, 917, 924, 920, 918, 922, 935, 926, 928, + 937, 929, 940, 947, 948, 936, 949, 944, 945, 952, + 953, 956, 957, 954, 959, 961, 970, 964, 967, 974, + 975, 979, 972, 980, 981, 982, 985, 991, 987, 995, + 993, 996, 997, 1001, 1002, 1005, 1009, 1004, 1017, 1010, + 3503, 1021, 1020, 1022, 1012, 1023, 1014, 1027, 1053, 3503, + 1028, 3503, 3503, 1029, 3503, 3503, 1033, 1035, 1036, 1044, + 1076, 1045, 1037, 1038, 1048, 1057, 1047, 1059, 1049, 1066, + 1068, 1069, 1070, 1061, 1073, 1079, 1084, 1082, 1086, 1091, + + 1099, 1105, 1106, 1090, 1102, 1103, 1107, 1109, 1112, 1113, + 1110, 1119, 1114, 1121, 1123, 3503, 1124, 1125, 1128, 1126, + 1135, 1130, 1138, 3503, 1132, 1139, 1137, 1143, 1146, 1147, + 1148, 1150, 1151, 1152, 1155, 1156, 1159, 1160, 1161, 1177, + 1178, 1162, 1174, 1176, 1179, 1181, 1182, 1190, 1186, 1187, + 1191, 1197, 1194, 1196, 1199, 1200, 1203, 1201, 1206, 1208, + 1209, 1231, 1212, 1210, 1213, 1211, 1218, 1219, 1221, 1224, + 1217, 1239, 1241, 1237, 1227, 1243, 1249, 1250, 1258, 1253, + 1256, 1260, 1263, 1267, 1271, 1262, 1269, 1272, 1278, 1281, + 3503, 1287, 1286, 1273, 1280, 1290, 1279, 1288, 1294, 1296, + + 1297, 1299, 1300, 1301, 1311, 3503, 1305, 1307, 1308, 1312, + 1313, 1316, 1320, 1326, 1333, 1309, 3503, 1335, 1336, 1338, + 1331, 1332, 1339, 1342, 1343, 1344, 1348, 1350, 1351, 1347, + 1358, 1360, 1361, 1349, 1366, 1356, 1368, 1371, 1372, 1373, + 1375, 1376, 1379, 1377, 1381, 1389, 1395, 1383, 1397, 1386, + 1392, 1399, 1404, 1401, 1403, 1402, 1407, 3503, 158, 1408, + 1409, 1410, 1418, 1420, 1423, 1426, 1425, 1427, 1429, 1433, + 1416, 1436, 1437, 1443, 1440, 1438, 1445, 1446, 1449, 1450, + 1452, 1414, 1453, 1455, 1462, 1459, 1463, 1460, 1469, 1461, + 1472, 1474, 1475, 1476, 1477, 1480, 1481, 1484, 1483, 1485, + + 1486, 3503, 1497, 1493, 1494, 1491, 1503, 1514, 1500, 1515, + 1504, 1512, 1523, 1524, 1522, 1526, 1528, 1530, 1532, 1506, + 1533, 1540, 1541, 1538, 1542, 1544, 1547, 1534, 3503, 1550, + 1549, 1552, 1556, 1568, 1555, 1557, 1566, 1559, 1561, 1571, + 1578, 1572, 1581, 3503, 1582, 1583, 1575, 1590, 1584, 1592, + 1593, 1600, 1586, 1597, 1595, 1605, 1607, 1601, 1609, 1611, + 3503, 1617, 1621, 1620, 1627, 1614, 1613, 1624, 1629, 1626, + 1630, 1636, 1634, 1637, 1633, 1638, 1639, 1641, 1642, 1644, + 1647, 1643, 1650, 3503, 1664, 1649, 1660, 1669, 1651, 1675, + 1672, 1673, 1674, 1677, 1678, 1680, 1679, 1681, 1682, 1687, + + 1683, 1690, 1691, 1692, 1689, 1694, 1688, 1709, 1698, 1710, + 1700, 1711, 1712, 1713, 1725, 1726, 1722, 3503, 1728, 1724, + 1729, 1730, 1731, 1737, 1739, 1735, 1740, 1741, 1743, 1745, + 1752, 1746, 1749, 1753, 1755, 1756, 1748, 1758, 1760, 1763, + 1766, 1776, 1764, 1778, 1779, 1782, 3503, 1783, 1786, 1789, + 1791, 1790, 1798, 3503, 1781, 3503, 1797, 1804, 1811, 3503, + 1808, 3503, 1813, 3503, 1814, 1815, 1809, 1796, 1818, 1820, + 1819, 1823, 1826, 1827, 1829, 1830, 1831, 1833, 1837, 3503, + 1836, 1839, 1843, 1840, 1838, 1847, 1848, 1849, 1859, 1850, + 1865, 1856, 1868, 1864, 1871, 1866, 3503, 1862, 1873, 1875, + + 1877, 1882, 1884, 1889, 1881, 1891, 1880, 1892, 1898, 1901, + 1899, 1903, 1904, 1906, 1912, 1908, 1909, 1916, 1913, 1910, + 1919, 1920, 1921, 1925, 1923, 1932, 1926, 1929, 1930, 3503, + 1933, 1941, 1943, 1945, 1942, 3503, 3503, 1948, 1952, 1959, + 1944, 1953, 1961, 1963, 1965, 1971, 1968, 1969, 1970, 1973, + 1976, 1981, 1977, 1978, 1984, 1979, 1988, 1982, 1998, 1992, + 1994, 3503, 2005, 2003, 2011, 2008, 2007, 2015, 2009, 2016, + 3503, 3503, 2018, 2017, 2020, 2023, 2029, 2028, 2031, 3503, + 2032, 2033, 2034, 2035, 2036, 2045, 2043, 2046, 2048, 2050, + 2051, 2053, 2055, 2056, 2062, 2059, 2060, 2063, 2073, 2074, + + 2080, 3503, 2076, 2082, 2083, 2084, 2087, 2086, 2088, 2092, + 2090, 2091, 2093, 2101, 2107, 2094, 2104, 2105, 2110, 2106, + 2114, 2117, 2118, 2124, 2127, 3503, 2133, 2120, 2134, 2121, + 2132, 2135, 2142, 2139, 2140, 2141, 2143, 2145, 2144, 2148, + 2149, 2154, 2150, 3503, 2157, 2168, 2156, 2162, 2164, 2172, + 2176, 2174, 2178, 3503, 2179, 2185, 2181, 2182, 2188, 2187, + 2190, 2193, 2191, 2196, 2192, 2203, 2199, 2197, 2207, 2205, + 2209, 2210, 2212, 2213, 2227, 2219, 2232, 2216, 2224, 2234, + 2240, 2246, 2247, 2233, 2236, 2249, 2243, 2250, 2251, 2252, + 2258, 2256, 2262, 2260, 3503, 2261, 2265, 2268, 2270, 2271, + + 2273, 2275, 2276, 2274, 3503, 2281, 3503, 2284, 3503, 2285, + 2288, 2289, 2290, 2292, 2293, 2294, 2295, 2306, 2302, 3503, + 2303, 2305, 2308, 2311, 3503, 2314, 3503, 3503, 2307, 2318, + 2324, 2321, 2325, 2068, 2328, 3503, 2214, 2329, 2330, 2333, + 2334, 2335, 2336, 2339, 2337, 2340, 2341, 3503, 2345, 2344, + 2353, 2354, 3503, 2343, 2359, 2356, 2362, 2364, 2365, 2368, + 2369, 2372, 2379, 2375, 2376, 3503, 2377, 2381, 2386, 2388, + 2378, 2383, 2399, 2397, 2398, 2401, 2405, 2404, 2407, 2408, + 3503, 2410, 2418, 3503, 2409, 2391, 2412, 3503, 2419, 3503, + 2421, 2424, 2426, 2429, 2431, 2432, 2434, 2435, 2436, 2437, + + 2443, 2445, 2447, 2446, 3503, 3503, 2449, 2450, 2453, 2457, + 2460, 2461, 2462, 2464, 3503, 2465, 2468, 2469, 2470, 2471, + 2475, 2478, 2481, 2482, 2474, 2483, 2477, 2487, 3503, 2484, + 2491, 2495, 2496, 2497, 2498, 3503, 2500, 2501, 2505, 2502, + 2508, 2510, 2513, 2523, 2520, 2525, 2527, 2529, 2530, 2532, + 2535, 2536, 3503, 2537, 2539, 2540, 2544, 2545, 2541, 2548, + 2552, 2557, 2546, 2550, 2565, 3503, 2554, 2558, 2560, 2562, + 2571, 2567, 2573, 2576, 2577, 2579, 2580, 2582, 2583, 2584, + 2585, 2589, 2590, 2591, 2595, 2593, 2601, 2599, 3503, 2598, + 3503, 2610, 2611, 2614, 2615, 3503, 2613, 2617, 3503, 2620, + + 3503, 2622, 2629, 2621, 2631, 3503, 2636, 2623, 2638, 2633, + 2640, 2627, 2642, 3503, 2644, 2647, 2652, 2653, 2649, 2656, + 2655, 2657, 2660, 2666, 2662, 3503, 2663, 2667, 2676, 2673, + 2678, 3503, 3503, 2674, 3503, 3503, 3503, 2683, 3503, 3503, + 2684, 2686, 3503, 2688, 3503, 2695, 2691, 2693, 2694, 2696, + 3503, 2698, 2700, 3503, 2697, 2707, 2703, 2704, 3503, 2712, + 3503, 2708, 2715, 2714, 2718, 2725, 2727, 2730, 2720, 2722, + 2731, 2733, 2734, 2736, 2735, 2738, 2739, 2742, 2744, 2747, + 2749, 2751, 2752, 2750, 2753, 2754, 2757, 2762, 3503, 3503, + 2763, 2766, 2767, 2771, 2769, 2774, 2775, 2776, 3503, 2780, + + 2781, 2785, 2782, 2786, 2787, 2795, 2788, 2799, 2801, 2800, + 2802, 2803, 2806, 3503, 2808, 3503, 3503, 2809, 2810, 2815, + 2816, 2812, 2819, 3503, 2820, 2821, 2833, 2824, 3503, 2839, + 2828, 2841, 2843, 3503, 3503, 3503, 2844, 2834, 2846, 2848, + 2849, 2850, 2851, 3503, 2852, 2857, 2858, 2860, 2865, 2871, + 2866, 2868, 2877, 2879, 3503, 3503, 2885, 2882, 2883, 2872, + 2874, 2884, 2890, 2887, 3503, 2891, 2893, 2896, 2897, 2898, + 2900, 2903, 3503, 2902, 2904, 2908, 2914, 2910, 2916, 2917, + 2918, 3503, 2920, 2922, 2926, 2928, 2931, 3503, 2932, 3503, + 2937, 3503, 3503, 2934, 2938, 2940, 2945, 2948, 2950, 2941, + + 2951, 2957, 2956, 2958, 3503, 3503, 2960, 2968, 3503, 3503, + 2953, 2964, 2961, 2967, 2972, 2974, 2975, 2976, 2977, 2980, + 2982, 2985, 2988, 2978, 2989, 2990, 2991, 2992, 3503, 2997, + 3503, 2995, 3003, 3004, 3005, 3006, 3010, 3007, 3016, 3503, + 3017, 3018, 3019, 3503, 3503, 3503, 3022, 3023, 3028, 3503, + 3029, 3031, 3032, 3033, 3036, 3035, 3043, 3039, 3046, 3503, + 3042, 3047, 3049, 3051, 3050, 3056, 3057, 3058, 3060, 3063, + 3068, 3069, 3071, 3073, 3503, 3075, 3077, 3079, 3503, 3080, + 3082, 3083, 3085, 3087, 3090, 3091, 3092, 3094, 3095, 3098, + 3099, 3100, 3106, 3108, 3111, 3503, 3114, 3115, 3503, 3116, + + 3117, 3122, 3124, 3129, 3133, 3130, 3503, 3137, 3503, 3138, + 3503, 3141, 3142, 3143, 3145, 3146, 3503, 3503, 3147, 3149, + 3153, 3503, 3154, 3150, 3157, 3160, 3161, 3163, 3164, 3503, + 3503, 3165, 3167, 3171, 3168, 3503, 3503, 3503, 3174, 3503, + 3177, 3503, 3183, 3180, 3503, 3187, 3188, 3503, 3189, 3191, + 3193, 3195, 3196, 3197, 3199, 3200, 3198, 3202, 3503, 3503, + 3209, 3503, 3213, 3503, 3215, 3503, 3210, 3223, 3503, 3503, + 3221, 3219, 3225, 3226, 3228, 3227, 3503, 3503, 3503, 3503, + 3231, 3229, 3234, 3232, 3236, 3237, 3238, 3240, 3242, 3239, + 3252, 3256, 3244, 3250, 3264, 3258, 3503, 3260, 3262, 3271, + + 3273, 3270, 3267, 3274, 3276, 3277, 3278, 3279, 3282, 3283, + 3289, 3285, 3286, 3295, 3297, 3298, 3299, 3310, 3307, 3308, + 3309, 3311, 3317, 3313, 3314, 3503, 3316, 3319, 3320, 3322, + 3323, 3326, 3325, 3333, 3336, 3340, 3341, 3342, 3347, 3343, + 3349, 3351, 3352, 3353, 3503, 3354, 3355, 3358, 3362, 3363, + 3365, 3366, 3367, 3374, 3369, 3379, 3383, 3380, 3503, 3386, + 3503, 3503, 3388, 3371, 3375, 3396, 3398, 3503, 3503, 3503, + 3411, 3418, 3425, 3432, 3439, 94, 3446, 3453, 3460, 3467, + 3474, 3481, 3488, 3495 } ; -static yyconst flex_int16_t yy_def[1766] = +static yyconst flex_int16_t yy_def[1785] = { 0, - 1751, 1, 1752, 1752, 1753, 1753, 1754, 1754, 1755, 1755, - 1756, 1756, 1751, 1757, 1751, 1751, 1751, 1751, 1758, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1759, - 1751, 1751, 1751, 1759, 1760, 1751, 1751, 1751, 1760, 1761, - 1751, 1751, 1751, 1751, 1761, 1762, 1751, 1751, 1751, 1762, - 1763, 1751, 1764, 1751, 1763, 1763, 1757, 1757, 1751, 1765, - 1758, 1765, 1758, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1759, 1759, 1760, 1760, 1761, 1761, - 1751, 1762, 1762, 1763, 1763, 1764, 1764, 1763, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1763, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1763, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1763, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1763, 1757, - 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1751, 1751, 1757, 1751, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1763, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1763, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1751, 1757, 1757, 1757, 1751, - 1757, 1751, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1751, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1751, 1757, 1751, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, - 1757, 1757, 1751, 1757, 1751, 1751, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, - 1751, 1757, 1757, 1757, 1751, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1751, 1757, 1751, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1751, 1757, 1751, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1751, 1751, 1757, - 1751, 1751, 1751, 1757, 1751, 1751, 1757, 1757, 1751, 1757, - 1751, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1751, - 1757, 1757, 1757, 1751, 1757, 1751, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1751, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - - 1751, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1751, 1751, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, - 1751, 1757, 1751, 1757, 1751, 1751, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1751, 1757, - 1757, 1751, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1751, 1751, 1751, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1751, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1751, - 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1751, 1751, 1757, - - 1757, 1757, 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1751, 1751, 1757, 1757, 1757, 1757, 1751, 1751, 1751, 1757, - 1751, 1757, 1751, 1757, 1757, 1751, 1757, 1757, 1751, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1751, 1757, 1751, 1757, 1751, 1757, 1751, 1757, 1757, 1751, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1751, 1751, - 1751, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - - 1757, 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1751, 1757, 1757, 1757, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1751, - 1757, 1751, 1751, 1757, 1757, 1757, 1757, 1757, 1751, 1751, - 0, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751, 1751 + 1770, 1, 1771, 1771, 1772, 1772, 1773, 1773, 1774, 1774, + 1775, 1775, 1770, 1776, 1770, 1770, 1770, 1770, 1777, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1778, 1770, 1770, 1770, 1778, 1779, 1770, 1770, 1770, 1779, + 1780, 1770, 1770, 1770, 1770, 1780, 1781, 1770, 1770, 1770, + 1781, 1782, 1770, 1783, 1770, 1782, 1782, 1776, 1776, 1770, + 1784, 1777, 1784, 1777, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1778, 1778, 1779, 1779, + 1780, 1780, 1770, 1781, 1781, 1782, 1782, 1783, 1783, 1782, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1782, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1770, 1770, 1776, 1770, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1782, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1770, + 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1776, 1770, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1770, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, + 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1770, 1776, 1776, 1776, 1770, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + 1770, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1770, 1776, + + 1770, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1770, 1770, 1776, 1770, 1770, 1770, 1776, 1770, 1770, + 1776, 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1776, 1776, + 1770, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1770, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1770, 1770, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1770, 1776, + 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1770, + 1776, 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1770, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1770, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1770, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1776, + 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, + 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, + 1770, 1776, 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1770, + 1776, 1770, 1776, 1776, 1770, 1776, 1776, 1770, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, + 1776, 1770, 1776, 1770, 1776, 1770, 1776, 1776, 1770, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1770, 1770, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, + 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 0, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770 } ; -static yyconst flex_int16_t yy_nxt[3515] = +static yyconst flex_int16_t yy_nxt[3543] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 14, - 35, 36, 37, 38, 39, 14, 14, 14, 14, 41, - 42, 43, 41, 42, 43, 127, 46, 47, 127, 44, - 48, 69, 44, 46, 47, 70, 49, 48, 57, 58, - 59, 68, 68, 49, 51, 52, 53, 54, 60, 18, - 57, 58, 59, 125, 125, 55, 51, 52, 53, 54, - 60, 18, 68, 104, 221, 74, 75, 55, 15, 16, - 17, 62, 63, 64, 67, 67, 68, 67, 67, 65, - - 67, 95, 68, 76, 68, 67, 85, 68, 66, 15, - 16, 17, 62, 63, 64, 68, 68, 77, 139, 87, - 65, 69, 94, 68, 78, 70, 86, 68, 88, 66, - 72, 79, 72, 72, 135, 72, 89, 68, 96, 68, - 72, 73, 68, 90, 132, 132, 91, 80, 138, 68, - 97, 81, 68, 92, 82, 93, 83, 84, 98, 148, - 68, 101, 68, 110, 99, 102, 121, 111, 100, 68, - 68, 122, 68, 118, 114, 119, 68, 112, 68, 123, - 113, 103, 68, 124, 115, 68, 192, 105, 116, 117, - 120, 106, 171, 129, 144, 129, 129, 107, 129, 72, - - 108, 72, 72, 134, 72, 134, 134, 109, 134, 67, - 137, 67, 67, 68, 67, 68, 68, 140, 68, 67, - 72, 142, 72, 72, 68, 72, 68, 68, 146, 68, - 72, 73, 150, 68, 143, 141, 68, 68, 145, 68, - 68, 68, 68, 152, 147, 156, 149, 157, 68, 68, - 151, 162, 159, 153, 154, 160, 68, 155, 68, 163, - 68, 68, 158, 164, 166, 68, 68, 68, 167, 161, - 170, 68, 68, 68, 68, 68, 68, 68, 173, 169, - 172, 177, 68, 165, 168, 174, 68, 179, 68, 68, - 68, 180, 176, 175, 178, 181, 68, 187, 68, 68, - - 189, 183, 68, 68, 184, 68, 182, 68, 68, 185, - 188, 68, 196, 194, 186, 68, 203, 68, 125, 125, - 190, 191, 127, 132, 132, 127, 193, 197, 129, 135, - 129, 129, 199, 129, 195, 198, 134, 68, 134, 134, - 72, 134, 72, 72, 68, 72, 68, 201, 68, 200, - 68, 137, 68, 207, 68, 68, 204, 210, 68, 208, - 209, 202, 68, 205, 211, 68, 68, 68, 218, 68, - 206, 68, 68, 219, 220, 222, 68, 223, 68, 224, - 68, 68, 68, 68, 68, 230, 212, 68, 229, 68, - 235, 213, 226, 225, 228, 227, 214, 233, 234, 68, - - 236, 215, 232, 68, 231, 68, 68, 216, 217, 238, - 68, 237, 241, 68, 68, 239, 243, 68, 242, 244, - 240, 68, 68, 246, 68, 68, 68, 68, 68, 245, - 68, 247, 68, 249, 68, 68, 68, 252, 251, 68, - 68, 255, 259, 68, 68, 68, 248, 68, 68, 253, - 250, 68, 262, 261, 135, 254, 265, 263, 257, 258, - 68, 256, 68, 260, 68, 266, 267, 264, 269, 135, - 68, 68, 68, 68, 270, 275, 68, 68, 274, 273, - 68, 272, 276, 277, 68, 68, 68, 68, 68, 268, - 282, 271, 68, 280, 279, 68, 283, 284, 68, 278, - - 68, 68, 285, 68, 286, 68, 68, 68, 287, 289, - 68, 281, 292, 288, 290, 68, 291, 68, 68, 293, - 68, 294, 296, 295, 68, 68, 68, 68, 68, 301, - 68, 68, 68, 68, 68, 297, 303, 307, 306, 300, - 68, 68, 298, 68, 68, 305, 299, 68, 302, 304, - 68, 135, 308, 311, 68, 317, 68, 68, 309, 315, - 316, 310, 68, 313, 68, 318, 314, 68, 312, 68, - 68, 324, 68, 68, 326, 68, 68, 68, 322, 323, - 325, 319, 321, 68, 320, 330, 68, 68, 68, 328, - 68, 327, 332, 68, 68, 68, 333, 68, 334, 68, - - 340, 68, 335, 329, 339, 68, 331, 68, 68, 68, - 336, 68, 341, 337, 346, 338, 344, 68, 342, 343, - 68, 135, 345, 348, 68, 68, 68, 133, 68, 357, - 347, 68, 356, 349, 350, 362, 68, 68, 68, 360, - 68, 68, 358, 351, 359, 352, 353, 354, 361, 363, - 355, 68, 365, 366, 367, 370, 364, 68, 68, 68, - 68, 368, 68, 372, 68, 369, 373, 374, 68, 68, - 68, 68, 379, 371, 68, 68, 68, 68, 380, 68, - 376, 68, 375, 518, 377, 378, 383, 68, 385, 68, - 382, 68, 386, 381, 68, 387, 389, 68, 388, 384, - - 390, 68, 68, 68, 392, 68, 391, 68, 68, 395, - 393, 396, 68, 68, 68, 68, 68, 68, 397, 400, - 394, 398, 68, 401, 68, 399, 68, 404, 68, 402, - 68, 405, 68, 68, 68, 403, 407, 68, 406, 68, - 68, 408, 68, 68, 68, 417, 410, 68, 415, 68, - 68, 414, 416, 409, 413, 68, 68, 411, 68, 412, - 421, 68, 68, 68, 68, 418, 423, 68, 68, 433, - 68, 419, 68, 422, 68, 435, 420, 131, 424, 434, - 432, 68, 425, 68, 426, 68, 437, 431, 436, 427, - 68, 428, 68, 439, 68, 438, 440, 68, 68, 429, - - 68, 68, 441, 68, 68, 445, 68, 135, 68, 430, - 446, 449, 442, 443, 68, 68, 450, 68, 451, 448, - 444, 68, 447, 454, 455, 68, 452, 453, 68, 456, - 68, 68, 68, 458, 68, 460, 68, 463, 466, 68, - 457, 464, 68, 467, 68, 68, 459, 468, 68, 465, - 461, 68, 68, 462, 469, 68, 470, 68, 471, 68, - 497, 68, 475, 68, 473, 474, 472, 68, 68, 68, - 479, 478, 476, 68, 477, 68, 68, 68, 480, 68, - 482, 68, 485, 488, 68, 483, 68, 68, 68, 484, - 481, 68, 68, 68, 490, 489, 491, 486, 487, 68, - - 494, 68, 498, 68, 493, 68, 495, 68, 502, 496, - 68, 499, 68, 500, 68, 501, 68, 505, 492, 68, - 68, 68, 68, 507, 506, 68, 508, 68, 68, 509, - 504, 512, 503, 510, 68, 68, 68, 513, 511, 68, - 516, 68, 514, 520, 517, 68, 519, 68, 68, 68, - 68, 68, 68, 521, 525, 68, 68, 515, 68, 530, - 526, 68, 532, 68, 68, 522, 68, 523, 68, 524, - 527, 531, 533, 529, 528, 68, 68, 534, 68, 536, - 535, 68, 68, 68, 68, 68, 68, 540, 539, 542, - 541, 538, 68, 545, 68, 537, 68, 543, 68, 135, - - 68, 549, 68, 544, 548, 546, 550, 68, 547, 68, - 552, 68, 555, 68, 68, 556, 554, 68, 553, 68, - 68, 551, 68, 68, 68, 557, 68, 559, 68, 68, - 68, 572, 558, 571, 570, 569, 68, 68, 560, 567, - 568, 68, 580, 68, 584, 68, 583, 561, 68, 68, - 68, 586, 130, 562, 68, 582, 585, 563, 68, 581, - 564, 68, 588, 68, 68, 68, 589, 565, 68, 587, - 566, 68, 573, 574, 68, 575, 68, 591, 576, 590, - 68, 68, 595, 577, 592, 68, 621, 593, 594, 578, - 579, 596, 68, 599, 68, 600, 601, 598, 68, 68, - - 68, 68, 602, 597, 603, 68, 68, 68, 68, 68, - 68, 610, 68, 604, 605, 607, 608, 612, 68, 68, - 68, 68, 68, 68, 615, 606, 611, 609, 68, 614, - 68, 617, 68, 68, 68, 68, 619, 616, 613, 622, - 68, 68, 68, 618, 620, 68, 68, 68, 68, 628, - 68, 627, 68, 623, 68, 624, 633, 631, 636, 68, - 637, 626, 625, 68, 629, 68, 630, 68, 632, 68, - 68, 638, 634, 635, 68, 68, 68, 643, 644, 641, - 68, 68, 640, 68, 645, 648, 68, 68, 639, 68, - 68, 650, 68, 651, 135, 68, 642, 68, 646, 647, - - 68, 653, 68, 68, 652, 68, 68, 649, 68, 664, - 68, 68, 128, 68, 654, 668, 656, 68, 68, 68, - 68, 665, 671, 657, 655, 68, 667, 669, 658, 68, - 659, 670, 68, 666, 660, 672, 661, 673, 68, 68, - 677, 662, 68, 675, 68, 702, 663, 674, 68, 680, - 679, 68, 681, 676, 68, 68, 678, 682, 68, 683, - 685, 68, 68, 686, 68, 689, 68, 690, 68, 687, - 68, 694, 68, 688, 691, 68, 696, 684, 68, 695, - 68, 68, 692, 697, 68, 68, 68, 68, 68, 693, - 68, 700, 68, 68, 68, 705, 703, 698, 699, 709, - - 68, 68, 708, 701, 68, 68, 68, 704, 707, 68, - 68, 713, 706, 68, 714, 715, 712, 68, 717, 710, - 718, 68, 716, 711, 720, 68, 68, 722, 721, 68, - 723, 68, 68, 68, 719, 724, 68, 68, 68, 68, - 728, 68, 68, 68, 730, 68, 731, 68, 726, 732, - 68, 725, 68, 734, 735, 68, 727, 68, 733, 729, - 738, 736, 68, 737, 68, 68, 68, 68, 739, 68, - 68, 743, 744, 746, 68, 749, 68, 750, 742, 68, - 68, 740, 68, 68, 741, 747, 68, 745, 748, 752, - 68, 68, 756, 68, 751, 68, 68, 68, 68, 68, - - 754, 68, 753, 755, 758, 68, 126, 764, 68, 765, - 68, 757, 68, 761, 68, 766, 759, 68, 68, 68, - 762, 763, 767, 760, 68, 68, 68, 772, 68, 770, - 775, 68, 768, 769, 68, 68, 68, 68, 779, 68, - 771, 773, 777, 68, 780, 68, 68, 774, 68, 783, - 781, 68, 776, 68, 68, 778, 68, 68, 786, 782, - 785, 788, 68, 68, 68, 68, 784, 790, 68, 68, - 68, 791, 68, 787, 68, 794, 789, 68, 68, 792, - 793, 795, 68, 799, 68, 68, 803, 68, 68, 796, - 68, 68, 798, 797, 802, 807, 805, 800, 801, 68, - - 68, 804, 808, 68, 806, 814, 809, 68, 68, 811, - 68, 68, 813, 812, 68, 815, 816, 68, 810, 68, - 818, 68, 817, 68, 68, 68, 823, 824, 820, 68, - 819, 68, 68, 68, 825, 68, 68, 826, 821, 68, - 831, 68, 68, 822, 827, 833, 68, 832, 68, 828, - 836, 829, 68, 830, 837, 68, 68, 834, 68, 68, - 68, 68, 838, 68, 835, 68, 840, 844, 68, 68, - 841, 839, 846, 68, 848, 68, 845, 842, 847, 850, - 68, 68, 849, 852, 68, 843, 68, 854, 68, 68, - 68, 853, 68, 68, 68, 856, 68, 859, 858, 68, - - 857, 851, 863, 68, 68, 861, 864, 68, 68, 855, - 862, 68, 860, 865, 866, 68, 68, 870, 68, 68, - 68, 68, 68, 868, 867, 873, 68, 869, 68, 68, - 68, 68, 68, 879, 68, 68, 874, 68, 68, 135, - 871, 877, 875, 883, 872, 68, 876, 886, 880, 878, - 885, 887, 68, 882, 68, 68, 68, 890, 68, 881, - 884, 892, 68, 888, 889, 68, 68, 68, 68, 893, - 68, 68, 891, 894, 68, 68, 898, 68, 68, 68, - 68, 901, 68, 68, 68, 68, 895, 909, 897, 68, - 68, 68, 899, 133, 896, 900, 902, 904, 903, 905, - - 906, 907, 68, 68, 68, 913, 68, 908, 910, 911, - 915, 68, 914, 912, 917, 918, 916, 68, 919, 68, - 68, 920, 68, 68, 68, 68, 68, 925, 68, 922, - 68, 926, 68, 927, 68, 68, 68, 68, 68, 923, - 68, 921, 68, 932, 68, 924, 933, 928, 68, 929, - 68, 68, 68, 68, 68, 931, 938, 934, 68, 935, - 68, 930, 944, 936, 68, 941, 942, 937, 940, 68, - 68, 939, 950, 945, 943, 68, 68, 947, 131, 946, - 68, 948, 951, 68, 68, 952, 955, 68, 953, 68, - 68, 68, 68, 958, 949, 957, 954, 959, 960, 68, - - 961, 68, 68, 68, 964, 956, 962, 68, 963, 68, - 68, 68, 68, 969, 68, 68, 967, 68, 971, 68, - 68, 68, 68, 68, 966, 974, 68, 968, 68, 68, - 68, 973, 68, 976, 965, 970, 68, 979, 68, 68, - 977, 972, 975, 978, 980, 68, 981, 983, 68, 68, - 982, 985, 984, 986, 987, 989, 68, 991, 68, 68, - 68, 68, 68, 68, 994, 988, 68, 992, 68, 68, - 990, 1000, 997, 68, 68, 998, 68, 68, 995, 1001, - 68, 68, 1002, 68, 1005, 1003, 993, 999, 996, 1006, - 68, 1007, 68, 68, 68, 68, 68, 68, 1012, 68, - - 1011, 1008, 1004, 68, 1014, 1015, 68, 68, 68, 68, - 68, 1009, 1016, 1010, 68, 1017, 1023, 68, 68, 1013, - 68, 68, 68, 68, 1020, 130, 1021, 68, 1018, 1019, - 1022, 68, 1027, 68, 68, 1033, 68, 68, 1024, 1032, - 1025, 1029, 1030, 1026, 68, 1031, 1028, 1034, 68, 68, - 68, 68, 68, 1035, 1043, 68, 1038, 1042, 68, 1037, - 1039, 1041, 68, 1040, 68, 1036, 68, 68, 68, 68, - 68, 68, 1051, 68, 68, 68, 1054, 1045, 1044, 1053, - 1048, 1047, 68, 68, 1046, 68, 1059, 68, 1050, 1052, - 1055, 68, 1056, 1061, 1049, 1057, 68, 68, 68, 1064, - - 1058, 68, 1062, 1060, 68, 68, 68, 1063, 1066, 1068, - 1065, 68, 68, 1072, 1067, 68, 68, 68, 68, 1069, - 68, 68, 68, 68, 1076, 68, 1077, 1078, 1079, 1070, - 68, 1071, 1073, 1074, 1080, 68, 68, 1075, 1083, 68, - 68, 68, 1089, 1085, 68, 68, 68, 68, 68, 68, - 1082, 1093, 68, 1081, 1084, 1092, 1086, 1087, 1090, 68, - 1088, 68, 1094, 1095, 68, 68, 1091, 1097, 68, 68, - 1096, 68, 68, 68, 1099, 68, 68, 1098, 68, 68, - 1100, 1103, 1108, 68, 1101, 1109, 68, 1104, 1102, 68, - 68, 68, 1113, 68, 1107, 1106, 68, 1115, 68, 68, - - 1105, 1116, 68, 1117, 1118, 68, 68, 1110, 1111, 68, - 68, 1112, 1120, 1119, 1122, 68, 1114, 68, 68, 68, - 1124, 68, 1126, 1121, 68, 1125, 68, 68, 68, 68, - 68, 1123, 1134, 1136, 68, 1131, 68, 68, 1127, 1128, - 1129, 68, 1138, 68, 68, 1130, 1141, 68, 1132, 1133, - 68, 1135, 1140, 68, 68, 68, 1146, 1139, 68, 1142, - 1143, 68, 1137, 1144, 68, 1150, 68, 68, 1153, 1149, - 68, 1154, 68, 68, 1152, 68, 1145, 1148, 68, 68, - 1155, 68, 68, 68, 1147, 1159, 1151, 1156, 68, 68, - 1162, 68, 68, 1158, 68, 68, 68, 1168, 68, 1157, - - 128, 1160, 1166, 68, 1167, 68, 1163, 1171, 68, 1165, - 1174, 1164, 68, 68, 1161, 68, 1169, 1175, 68, 68, - 1178, 1170, 68, 1176, 1172, 68, 1173, 1177, 68, 1181, - 68, 1180, 68, 68, 68, 1186, 1183, 68, 1188, 1179, - 68, 68, 1182, 68, 68, 1184, 68, 1185, 126, 1190, - 68, 1191, 68, 1189, 1192, 68, 1193, 68, 1195, 1187, - 68, 68, 68, 68, 1194, 1196, 68, 1197, 1199, 68, - 68, 1198, 1202, 68, 68, 68, 68, 68, 1200, 68, - 68, 1201, 1208, 1204, 1207, 68, 1209, 68, 68, 1211, - 1203, 68, 68, 1205, 68, 1206, 1214, 1213, 68, 1210, - - 1212, 1215, 1216, 68, 68, 1219, 68, 1221, 68, 1217, - 68, 68, 1218, 1222, 1223, 68, 68, 68, 1226, 68, - 68, 1220, 68, 1224, 68, 68, 68, 68, 1225, 1227, - 68, 68, 68, 68, 1229, 68, 1230, 1231, 1235, 68, - 1228, 1232, 68, 68, 1236, 1243, 1239, 1233, 1238, 1237, - 1234, 1240, 68, 68, 68, 68, 68, 68, 1242, 1244, - 1245, 1241, 1248, 68, 68, 68, 68, 68, 1249, 1253, - 68, 68, 1250, 68, 1246, 68, 1256, 1247, 68, 68, - 1252, 68, 68, 1257, 1251, 68, 1254, 1258, 68, 68, - 68, 1259, 1262, 1255, 1264, 68, 68, 1260, 1263, 68, - - 1261, 1265, 68, 68, 1266, 68, 68, 68, 1267, 68, - 68, 1270, 1271, 68, 68, 1275, 68, 68, 1280, 1269, - 1277, 68, 1268, 1274, 1272, 68, 1276, 68, 68, 1278, - 68, 1279, 1273, 1282, 68, 68, 1283, 68, 1281, 1285, - 68, 1287, 68, 68, 1286, 68, 1288, 68, 68, 1289, - 1284, 68, 1291, 1292, 68, 68, 1294, 68, 68, 68, - 68, 1290, 68, 1297, 1300, 68, 1301, 68, 68, 68, - 68, 68, 1296, 1293, 1303, 68, 1299, 1298, 1295, 68, - 68, 68, 1302, 68, 1312, 68, 1751, 68, 68, 1305, - 1313, 68, 68, 1310, 1304, 1307, 68, 1328, 1306, 1308, - - 1309, 1314, 68, 1317, 1311, 1315, 1318, 68, 68, 1316, - 1319, 68, 1321, 68, 1322, 68, 1323, 68, 68, 1325, - 68, 1320, 1326, 68, 68, 1329, 68, 68, 1331, 68, - 68, 68, 68, 68, 1334, 68, 1335, 1324, 1333, 1337, - 68, 68, 68, 1327, 1340, 68, 1330, 68, 1332, 68, - 68, 1336, 1339, 1343, 1344, 68, 1338, 1346, 68, 68, - 68, 1348, 1342, 68, 68, 1341, 68, 68, 68, 1345, - 68, 1351, 1349, 68, 68, 68, 1350, 68, 1355, 68, - 68, 1353, 1360, 1751, 1357, 1347, 1358, 68, 68, 1356, - 68, 1354, 1352, 1359, 1361, 68, 1364, 1363, 1365, 68, - - 1362, 68, 1366, 68, 68, 68, 68, 68, 68, 1371, - 1367, 68, 1372, 1369, 1368, 1374, 68, 1370, 1375, 68, - 68, 1377, 68, 68, 68, 1376, 68, 1381, 1373, 68, - 1384, 68, 68, 1382, 1378, 1383, 68, 1379, 68, 68, - 68, 1385, 68, 1380, 1388, 68, 1391, 68, 68, 1751, - 1390, 68, 68, 1387, 1392, 1395, 68, 1394, 1386, 68, - 68, 1397, 1389, 1393, 1396, 68, 1398, 1399, 68, 68, - 1401, 68, 1402, 68, 1400, 1403, 68, 1404, 68, 68, - 68, 68, 1410, 68, 1409, 68, 1407, 68, 68, 68, - 1413, 68, 68, 68, 1405, 1408, 68, 1414, 1415, 68, - - 68, 1406, 1418, 68, 1412, 1417, 1411, 1416, 1419, 68, - 1420, 68, 68, 68, 68, 68, 68, 1422, 68, 1428, - 68, 1426, 68, 68, 1421, 1423, 1424, 1425, 68, 68, - 68, 1429, 68, 68, 68, 68, 68, 68, 1427, 68, - 1437, 1438, 1432, 1439, 68, 68, 1434, 68, 1431, 1430, - 68, 1435, 1440, 68, 1433, 68, 1436, 1441, 68, 1445, - 68, 1443, 68, 1442, 68, 1448, 68, 1444, 1449, 68, - 68, 1450, 68, 1451, 68, 1446, 1447, 68, 1453, 68, - 1457, 68, 1458, 68, 68, 1452, 68, 68, 68, 68, - 1454, 68, 1459, 1455, 1465, 1466, 68, 68, 1456, 1460, - - 68, 68, 1461, 68, 68, 1469, 1462, 1463, 1470, 1464, - 1471, 68, 1467, 1473, 68, 68, 1472, 68, 1468, 1475, - 68, 1476, 68, 68, 1477, 68, 68, 68, 68, 68, - 1480, 68, 1481, 68, 1474, 1479, 68, 1483, 1485, 1478, - 68, 1486, 1488, 68, 1489, 68, 1484, 1482, 1490, 68, - 1492, 68, 68, 68, 1491, 1487, 1493, 68, 1494, 68, - 68, 68, 68, 68, 1495, 68, 1496, 1498, 1497, 68, - 1499, 68, 68, 68, 1500, 1502, 68, 1501, 68, 68, - 1507, 68, 68, 68, 68, 1505, 1504, 1506, 68, 1503, - 1508, 1512, 68, 1513, 1514, 68, 68, 68, 68, 68, - - 68, 1509, 1516, 1510, 1515, 68, 68, 1511, 1517, 1519, - 1751, 1518, 68, 1521, 68, 1520, 1522, 68, 68, 1524, - 68, 1526, 68, 1525, 1527, 68, 1523, 1528, 68, 68, - 1531, 68, 1529, 1532, 68, 68, 68, 1534, 68, 1535, - 1533, 68, 68, 1530, 68, 68, 1538, 68, 1542, 68, - 68, 68, 68, 68, 1546, 1536, 1537, 68, 1547, 1544, - 1539, 1541, 68, 68, 68, 1540, 68, 68, 1549, 1543, - 68, 1545, 68, 68, 68, 1555, 1552, 68, 1548, 1557, - 68, 68, 68, 1559, 1550, 1558, 68, 68, 68, 68, - 1553, 68, 1551, 1554, 68, 1556, 1562, 1560, 1563, 1561, - - 1564, 68, 68, 1567, 68, 68, 1566, 68, 68, 68, - 1569, 68, 68, 1568, 1571, 68, 1565, 1570, 1575, 68, - 1573, 1577, 68, 68, 1580, 68, 68, 1574, 1572, 68, - 1581, 1578, 68, 68, 1579, 68, 1576, 68, 1582, 68, - 1588, 68, 1586, 1585, 68, 1590, 68, 68, 1583, 68, - 1592, 68, 1584, 68, 1591, 68, 1595, 68, 68, 1598, - 68, 1599, 68, 1589, 68, 1587, 68, 1593, 68, 1603, - 68, 1596, 68, 68, 68, 68, 1594, 1608, 1601, 1606, - 1597, 68, 68, 1600, 1604, 1611, 68, 68, 1602, 1612, - 68, 68, 68, 1605, 1607, 68, 1614, 1616, 1609, 1610, - - 1617, 68, 1618, 68, 1619, 68, 1613, 68, 68, 1615, - 1621, 68, 1620, 68, 1622, 1623, 68, 68, 1626, 68, - 68, 68, 1624, 1629, 68, 1627, 1625, 68, 68, 1628, - 68, 68, 1630, 1631, 68, 68, 68, 1751, 68, 68, - 1640, 68, 1632, 1638, 1641, 68, 68, 68, 68, 1633, - 1634, 1642, 1635, 1636, 1643, 68, 68, 1637, 68, 1639, - 1644, 1645, 68, 1647, 68, 68, 1649, 1650, 68, 1651, - 68, 1652, 1646, 68, 68, 68, 68, 68, 1658, 68, - 1648, 1655, 1656, 1659, 68, 1660, 68, 68, 1653, 1661, - 68, 68, 1663, 1664, 1657, 1654, 68, 68, 68, 1662, - - 68, 68, 1666, 68, 68, 68, 68, 68, 1670, 68, - 1665, 68, 68, 68, 68, 1678, 68, 1669, 68, 1667, - 1672, 1668, 1679, 1680, 1674, 1671, 68, 1675, 1673, 1677, - 68, 1681, 68, 1684, 68, 68, 1688, 1676, 68, 68, - 1689, 68, 68, 68, 68, 68, 68, 1683, 1685, 68, - 1686, 68, 68, 68, 68, 1682, 1690, 1691, 1687, 1698, - 1693, 68, 1692, 68, 1695, 1696, 1699, 68, 1694, 68, - 1701, 68, 1697, 68, 68, 1706, 1702, 68, 1703, 1704, - 68, 68, 1700, 1707, 68, 68, 1705, 1711, 1708, 68, - 68, 68, 68, 68, 68, 68, 1709, 68, 1714, 68, - - 68, 1718, 1719, 1713, 1710, 68, 1721, 68, 1712, 1751, - 1715, 68, 1717, 1716, 1720, 68, 1722, 68, 1724, 1726, - 68, 68, 1723, 68, 68, 68, 1725, 68, 1727, 68, - 1728, 68, 1730, 68, 1732, 68, 1733, 68, 1736, 68, - 68, 68, 1739, 1729, 1731, 1740, 68, 1751, 68, 1742, - 68, 68, 1734, 68, 1735, 1741, 1743, 68, 1737, 1738, - 1744, 68, 68, 68, 1749, 68, 1745, 1746, 1750, 68, - 1747, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1748, 40, 40, 40, 40, 40, 40, 40, - 45, 45, 45, 45, 45, 45, 45, 50, 50, 50, - - 50, 50, 50, 50, 56, 56, 56, 56, 56, 56, - 56, 61, 61, 61, 61, 61, 61, 61, 71, 71, - 1751, 71, 71, 71, 71, 125, 125, 1751, 1751, 1751, - 125, 125, 127, 127, 1751, 1751, 127, 1751, 127, 129, - 1751, 1751, 1751, 1751, 1751, 129, 132, 132, 1751, 1751, - 1751, 132, 132, 134, 1751, 1751, 1751, 1751, 1751, 134, - 136, 136, 1751, 136, 136, 136, 136, 72, 72, 1751, - 72, 72, 72, 72, 13, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751 + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 14, 14, 14, 14, 42, + 43, 44, 42, 43, 44, 129, 47, 48, 129, 45, + 49, 70, 45, 47, 48, 71, 50, 49, 58, 59, + 60, 69, 69, 50, 52, 53, 54, 55, 61, 18, + 58, 59, 60, 127, 127, 56, 52, 53, 54, 55, + 61, 18, 69, 105, 224, 75, 76, 56, 15, 16, + 17, 63, 64, 65, 68, 68, 69, 68, 68, 66, + + 68, 96, 69, 77, 69, 68, 86, 69, 67, 15, + 16, 17, 63, 64, 65, 69, 69, 78, 141, 88, + 66, 70, 95, 69, 79, 71, 87, 69, 89, 67, + 73, 80, 73, 73, 69, 73, 90, 69, 97, 69, + 73, 74, 69, 91, 134, 134, 92, 81, 111, 69, + 98, 82, 69, 93, 83, 94, 84, 85, 99, 150, + 69, 102, 69, 112, 100, 103, 123, 113, 101, 69, + 137, 124, 69, 120, 116, 121, 69, 114, 69, 125, + 115, 104, 69, 126, 117, 69, 184, 106, 118, 119, + 122, 107, 69, 131, 146, 131, 131, 108, 131, 73, + + 109, 73, 73, 136, 73, 136, 136, 110, 136, 137, + 139, 68, 143, 68, 68, 69, 68, 69, 69, 142, + 144, 68, 69, 140, 73, 69, 73, 73, 69, 73, + 69, 152, 147, 145, 73, 74, 69, 148, 69, 69, + 149, 69, 69, 69, 154, 69, 158, 151, 159, 153, + 69, 164, 69, 127, 127, 137, 69, 156, 155, 157, + 69, 69, 69, 161, 160, 69, 162, 166, 168, 170, + 69, 165, 169, 69, 172, 171, 69, 69, 69, 69, + 163, 69, 69, 173, 175, 179, 174, 167, 69, 69, + 69, 176, 69, 69, 181, 69, 69, 69, 182, 177, + + 178, 69, 190, 69, 192, 191, 180, 69, 186, 69, + 183, 187, 185, 69, 69, 69, 188, 197, 69, 189, + 69, 69, 129, 199, 193, 129, 69, 194, 131, 195, + 131, 131, 200, 131, 135, 196, 134, 134, 198, 201, + 136, 205, 136, 136, 73, 136, 73, 73, 137, 73, + 69, 202, 69, 204, 69, 139, 69, 203, 69, 69, + 210, 69, 206, 69, 133, 69, 211, 213, 212, 207, + 69, 208, 69, 214, 225, 69, 69, 221, 69, 209, + 222, 69, 69, 223, 69, 69, 226, 69, 69, 69, + 233, 69, 69, 232, 132, 215, 69, 228, 227, 229, + + 216, 237, 230, 231, 130, 217, 69, 69, 236, 234, + 218, 235, 69, 238, 239, 241, 219, 220, 69, 69, + 69, 244, 69, 69, 69, 240, 69, 242, 243, 245, + 246, 247, 69, 69, 69, 69, 69, 69, 69, 248, + 250, 69, 251, 252, 69, 253, 249, 69, 69, 254, + 69, 255, 256, 69, 69, 259, 263, 69, 69, 257, + 265, 69, 69, 69, 69, 267, 69, 270, 258, 266, + 69, 69, 261, 262, 271, 260, 269, 264, 273, 69, + 137, 69, 268, 69, 69, 69, 274, 69, 279, 278, + 277, 69, 276, 69, 281, 69, 280, 272, 69, 69, + + 282, 69, 69, 275, 286, 283, 284, 69, 287, 288, + 69, 289, 69, 69, 290, 69, 69, 69, 291, 293, + 285, 294, 69, 296, 69, 69, 298, 69, 69, 300, + 292, 295, 299, 69, 69, 69, 69, 69, 297, 69, + 305, 69, 69, 69, 310, 69, 307, 69, 69, 69, + 304, 311, 69, 301, 302, 69, 303, 309, 69, 306, + 69, 308, 69, 69, 312, 319, 320, 315, 316, 321, + 69, 69, 313, 317, 318, 314, 69, 69, 69, 322, + 69, 328, 69, 69, 330, 69, 69, 326, 323, 327, + 329, 324, 325, 69, 69, 69, 69, 335, 332, 69, + + 69, 331, 69, 338, 337, 339, 333, 69, 69, 69, + 69, 69, 345, 69, 69, 334, 336, 69, 344, 346, + 69, 340, 69, 69, 341, 351, 349, 342, 69, 343, + 69, 347, 137, 348, 350, 69, 69, 353, 69, 362, + 69, 352, 69, 361, 354, 355, 367, 69, 69, 69, + 365, 69, 69, 363, 356, 364, 357, 358, 359, 69, + 366, 360, 69, 444, 370, 69, 372, 371, 369, 375, + 368, 69, 69, 69, 69, 69, 374, 377, 69, 373, + 128, 376, 378, 379, 69, 69, 69, 69, 384, 69, + 69, 381, 69, 380, 382, 69, 385, 69, 383, 388, + + 69, 69, 391, 387, 390, 386, 69, 395, 394, 393, + 392, 69, 389, 69, 69, 396, 69, 397, 69, 398, + 69, 400, 401, 69, 69, 69, 69, 69, 69, 406, + 405, 399, 69, 403, 69, 69, 409, 404, 69, 407, + 69, 410, 69, 69, 402, 69, 69, 69, 69, 69, + 412, 419, 413, 408, 69, 69, 69, 69, 415, 411, + 69, 69, 421, 418, 420, 414, 423, 416, 417, 422, + 69, 69, 424, 69, 69, 69, 69, 427, 69, 69, + 429, 69, 425, 439, 69, 69, 137, 441, 69, 428, + 455, 426, 430, 440, 69, 438, 69, 431, 69, 432, + + 69, 437, 69, 443, 433, 442, 434, 69, 445, 446, + 69, 448, 447, 69, 435, 69, 69, 69, 69, 69, + 451, 456, 69, 69, 436, 452, 69, 69, 69, 449, + 69, 457, 69, 454, 69, 450, 453, 464, 460, 462, + 458, 459, 461, 69, 463, 69, 69, 69, 469, 466, + 69, 69, 470, 69, 472, 69, 473, 69, 475, 69, + 465, 137, 474, 467, 471, 477, 468, 69, 476, 69, + 69, 478, 69, 69, 69, 481, 69, 479, 480, 69, + 69, 483, 485, 482, 69, 69, 69, 69, 69, 486, + 69, 488, 69, 484, 69, 491, 489, 494, 69, 487, + + 490, 69, 69, 500, 492, 69, 493, 495, 496, 69, + 69, 69, 69, 497, 504, 499, 501, 502, 69, 69, + 69, 506, 69, 69, 503, 507, 505, 69, 508, 69, + 69, 511, 69, 513, 69, 498, 69, 512, 69, 514, + 69, 69, 515, 510, 519, 509, 516, 69, 69, 69, + 520, 517, 69, 518, 523, 521, 69, 69, 524, 69, + 69, 69, 525, 527, 69, 69, 69, 526, 69, 69, + 522, 69, 532, 69, 528, 529, 69, 537, 533, 69, + 539, 534, 69, 530, 69, 531, 69, 69, 536, 535, + 540, 69, 69, 69, 69, 538, 542, 69, 541, 69, + + 543, 546, 547, 69, 549, 69, 545, 69, 69, 69, + 548, 544, 550, 69, 137, 552, 69, 69, 553, 555, + 556, 69, 69, 551, 69, 557, 69, 554, 562, 69, + 559, 561, 69, 69, 69, 69, 563, 558, 560, 69, + 69, 69, 565, 566, 567, 69, 564, 69, 69, 69, + 69, 579, 578, 577, 576, 574, 69, 69, 575, 69, + 69, 69, 587, 590, 568, 69, 592, 588, 591, 69, + 569, 69, 593, 69, 570, 589, 594, 571, 69, 595, + 69, 69, 69, 596, 572, 69, 597, 573, 69, 580, + 581, 69, 582, 599, 69, 583, 69, 602, 69, 601, + + 584, 598, 69, 69, 600, 609, 585, 586, 605, 603, + 606, 69, 607, 608, 69, 69, 604, 69, 69, 69, + 610, 69, 69, 611, 69, 69, 69, 612, 619, 614, + 617, 69, 615, 69, 618, 69, 69, 69, 69, 613, + 69, 616, 69, 623, 69, 621, 622, 69, 625, 69, + 69, 69, 624, 627, 620, 69, 630, 626, 69, 69, + 69, 628, 69, 69, 69, 629, 636, 69, 69, 635, + 631, 69, 69, 69, 69, 632, 639, 641, 646, 634, + 633, 637, 640, 638, 644, 645, 69, 643, 69, 69, + 69, 69, 642, 69, 69, 651, 649, 652, 69, 69, + + 648, 653, 69, 69, 656, 647, 69, 658, 69, 69, + 659, 137, 69, 69, 650, 69, 655, 654, 69, 661, + 69, 69, 69, 69, 69, 69, 657, 660, 672, 69, + 69, 69, 662, 69, 664, 676, 69, 673, 675, 69, + 679, 665, 663, 69, 680, 677, 666, 678, 667, 69, + 674, 69, 668, 69, 669, 69, 681, 688, 683, 670, + 685, 69, 69, 684, 671, 69, 682, 687, 69, 686, + 69, 689, 69, 694, 69, 69, 690, 693, 691, 69, + 697, 69, 699, 69, 69, 69, 695, 696, 698, 702, + 69, 69, 69, 69, 704, 700, 692, 703, 69, 69, + + 69, 705, 69, 701, 706, 707, 69, 708, 69, 69, + 709, 69, 69, 69, 713, 711, 710, 69, 717, 69, + 69, 69, 716, 69, 69, 69, 715, 712, 69, 721, + 722, 714, 69, 723, 727, 720, 718, 719, 69, 725, + 726, 724, 728, 69, 69, 69, 729, 69, 69, 730, + 69, 69, 731, 732, 69, 69, 69, 733, 737, 69, + 69, 69, 69, 69, 734, 739, 735, 740, 69, 741, + 69, 744, 69, 69, 736, 742, 743, 738, 69, 746, + 69, 747, 745, 69, 69, 69, 748, 69, 69, 69, + 752, 69, 753, 69, 755, 69, 758, 751, 69, 749, + + 756, 69, 759, 750, 69, 757, 754, 69, 761, 69, + 760, 69, 765, 69, 69, 69, 69, 762, 763, 69, + 69, 69, 69, 764, 767, 773, 69, 774, 69, 792, + 69, 766, 69, 768, 770, 69, 771, 69, 69, 69, + 775, 69, 772, 776, 769, 69, 779, 781, 69, 69, + 69, 777, 69, 778, 784, 69, 786, 69, 69, 788, + 780, 69, 69, 782, 69, 69, 789, 69, 783, 790, + 785, 69, 69, 69, 69, 69, 794, 787, 791, 795, + 797, 69, 800, 793, 69, 799, 69, 69, 69, 69, + 796, 798, 69, 69, 803, 69, 69, 69, 69, 801, + + 804, 802, 808, 69, 812, 69, 69, 811, 805, 69, + 809, 807, 69, 806, 814, 69, 69, 810, 69, 813, + 816, 817, 135, 815, 69, 818, 69, 69, 820, 821, + 823, 819, 830, 822, 69, 69, 69, 824, 69, 825, + 69, 827, 69, 826, 69, 69, 69, 832, 833, 829, + 69, 828, 69, 69, 69, 834, 69, 841, 835, 69, + 840, 69, 69, 831, 69, 836, 842, 69, 69, 69, + 837, 69, 838, 69, 839, 846, 843, 845, 69, 847, + 69, 848, 844, 69, 69, 851, 850, 69, 849, 854, + 69, 852, 856, 69, 69, 69, 69, 857, 69, 855, + + 858, 860, 69, 862, 69, 69, 859, 69, 853, 69, + 863, 864, 69, 69, 866, 867, 861, 69, 865, 69, + 869, 69, 868, 69, 873, 69, 69, 871, 874, 69, + 872, 870, 69, 69, 876, 877, 69, 875, 69, 69, + 880, 69, 69, 883, 878, 69, 69, 879, 69, 69, + 69, 69, 889, 69, 69, 69, 69, 887, 881, 69, + 884, 69, 69, 69, 893, 882, 885, 895, 888, 886, + 898, 896, 69, 890, 892, 897, 69, 901, 894, 891, + 899, 69, 902, 900, 69, 69, 69, 69, 903, 69, + 69, 69, 69, 69, 69, 69, 904, 908, 911, 69, + + 69, 69, 69, 69, 69, 905, 69, 919, 907, 909, + 69, 918, 69, 910, 913, 906, 914, 912, 915, 916, + 917, 69, 69, 69, 69, 69, 920, 923, 921, 924, + 926, 922, 927, 928, 69, 929, 69, 69, 69, 930, + 69, 69, 69, 69, 935, 925, 932, 69, 936, 69, + 937, 69, 69, 69, 931, 69, 933, 69, 69, 943, + 69, 69, 934, 942, 69, 69, 938, 69, 69, 133, + 69, 939, 69, 951, 941, 69, 69, 944, 69, 940, + 945, 949, 948, 953, 946, 950, 947, 952, 69, 955, + 69, 69, 954, 69, 69, 69, 958, 962, 69, 956, + + 959, 69, 69, 69, 957, 966, 963, 964, 69, 69, + 69, 967, 132, 960, 968, 961, 69, 969, 970, 971, + 69, 69, 965, 69, 972, 69, 69, 69, 974, 973, + 69, 69, 69, 976, 980, 69, 975, 978, 69, 69, + 982, 69, 69, 69, 977, 69, 979, 985, 69, 69, + 69, 69, 69, 984, 987, 69, 990, 991, 981, 69, + 69, 69, 69, 983, 986, 989, 988, 997, 69, 994, + 992, 69, 998, 996, 69, 1000, 69, 69, 69, 993, + 69, 995, 1002, 69, 1003, 69, 1005, 69, 999, 69, + 1001, 1011, 69, 69, 69, 130, 69, 1008, 1004, 1006, + + 1009, 69, 1013, 69, 69, 1017, 1012, 1016, 1014, 1007, + 69, 69, 1010, 69, 1018, 69, 69, 1015, 69, 1023, + 69, 69, 69, 1022, 69, 69, 1025, 1026, 69, 1019, + 1027, 69, 69, 69, 1020, 69, 1021, 69, 69, 1034, + 1028, 69, 69, 1024, 69, 69, 128, 1031, 1033, 1032, + 1038, 1029, 1030, 69, 69, 69, 69, 69, 1035, 1044, + 69, 1036, 1040, 1037, 69, 69, 1041, 1045, 1039, 1042, + 1043, 69, 1047, 69, 1048, 69, 1046, 69, 1053, 1054, + 69, 69, 69, 69, 1050, 69, 1052, 1051, 69, 69, + 69, 69, 1049, 69, 69, 1056, 69, 1062, 69, 1065, + + 69, 1055, 1058, 1057, 69, 1059, 69, 1063, 1061, 1064, + 69, 1066, 1071, 1068, 1060, 69, 1069, 69, 1073, 69, + 69, 69, 1076, 69, 1070, 1067, 1074, 69, 69, 69, + 69, 1078, 69, 1072, 1077, 69, 1084, 1079, 1080, 1075, + 69, 69, 1081, 69, 69, 69, 69, 69, 69, 1088, + 1082, 1089, 1090, 1091, 1083, 69, 1085, 69, 69, 1095, + 69, 1086, 69, 69, 1087, 69, 1092, 69, 69, 1101, + 1097, 69, 69, 1094, 69, 69, 1096, 1098, 1093, 1099, + 69, 1104, 1235, 1102, 1105, 69, 69, 1100, 69, 1106, + 1103, 1107, 69, 1109, 69, 69, 69, 1108, 69, 69, + + 69, 1111, 69, 69, 69, 69, 69, 1110, 1112, 1115, + 1113, 1116, 1120, 69, 1121, 1114, 69, 69, 69, 69, + 1119, 1125, 69, 1118, 1117, 1127, 69, 1122, 1128, 69, + 69, 1130, 69, 69, 1129, 1123, 69, 1124, 1126, 69, + 1132, 1134, 1131, 1136, 69, 69, 69, 69, 1137, 1138, + 1133, 69, 69, 69, 69, 69, 69, 69, 1135, 1148, + 69, 69, 69, 1139, 1140, 1141, 69, 1150, 69, 69, + 1142, 1146, 1143, 1144, 69, 1145, 69, 1147, 1152, 1153, + 69, 1155, 1151, 1154, 69, 1156, 69, 1149, 69, 1158, + 69, 69, 1162, 69, 69, 1165, 1161, 69, 1166, 69, + + 69, 1164, 69, 69, 69, 69, 1160, 1167, 69, 69, + 1157, 69, 1159, 1163, 1168, 69, 1171, 69, 1172, 69, + 1175, 69, 69, 1169, 69, 69, 69, 1170, 69, 1173, + 1179, 69, 1176, 1237, 1180, 1174, 69, 1178, 1181, 69, + 1177, 1187, 1182, 1184, 69, 69, 69, 1183, 69, 1185, + 1186, 1188, 69, 1189, 1191, 69, 1194, 1190, 69, 69, + 1193, 69, 69, 69, 69, 1199, 1196, 1195, 69, 1201, + 69, 1192, 69, 69, 69, 1197, 1203, 69, 1204, 1205, + 69, 1206, 69, 69, 1202, 69, 69, 69, 69, 1198, + 1200, 1208, 1209, 69, 1210, 1211, 69, 69, 1212, 1215, + + 69, 69, 69, 1207, 69, 69, 69, 69, 1213, 1214, + 1220, 1217, 1221, 1222, 69, 69, 1224, 69, 69, 69, + 69, 1216, 1218, 69, 1219, 1229, 69, 1225, 1223, 1227, + 69, 1232, 1228, 69, 1230, 1226, 69, 69, 1234, 1236, + 69, 69, 69, 1239, 1231, 69, 69, 69, 69, 69, + 1233, 69, 69, 69, 1240, 69, 69, 69, 1249, 1242, + 1243, 1238, 1248, 1244, 1245, 69, 69, 1241, 69, 1252, + 1253, 69, 1246, 1247, 69, 1251, 69, 69, 1256, 1255, + 69, 69, 1257, 1250, 69, 1258, 1261, 69, 69, 69, + 69, 69, 1262, 69, 1254, 69, 1263, 1266, 69, 1259, + + 69, 1267, 1770, 69, 1260, 1268, 1270, 1265, 1264, 69, + 69, 69, 1272, 69, 1271, 1269, 69, 69, 1276, 69, + 69, 69, 69, 1282, 69, 1273, 1274, 1279, 1277, 1275, + 69, 69, 1278, 69, 1281, 1280, 69, 1284, 69, 1285, + 1283, 69, 1289, 69, 69, 1291, 69, 69, 69, 69, + 1288, 1286, 1293, 1290, 1294, 69, 1296, 69, 69, 69, + 1299, 69, 69, 1287, 1301, 69, 1292, 1297, 1295, 69, + 1302, 1300, 69, 69, 69, 1306, 69, 69, 1298, 1305, + 69, 69, 69, 69, 1303, 1308, 69, 69, 1311, 69, + 69, 1304, 1314, 69, 69, 69, 69, 1310, 1315, 69, + + 1317, 1316, 1307, 69, 1309, 1312, 1313, 69, 69, 69, + 69, 1326, 69, 69, 69, 1318, 1327, 69, 1319, 1320, + 69, 1324, 69, 1331, 1332, 69, 1322, 1321, 1329, 1323, + 1328, 1325, 69, 1330, 1333, 69, 1335, 69, 1336, 69, + 1337, 69, 69, 1339, 69, 1334, 1340, 69, 69, 69, + 1343, 69, 69, 69, 1342, 1345, 69, 69, 69, 1347, + 69, 1338, 69, 1348, 69, 1349, 69, 1341, 1351, 69, + 69, 1344, 69, 1352, 69, 1346, 1354, 69, 1358, 69, + 1350, 1353, 1359, 69, 1361, 69, 1355, 1357, 69, 69, + 1363, 69, 69, 1356, 69, 69, 69, 69, 1360, 1366, + + 1364, 69, 69, 69, 1365, 69, 1370, 69, 1375, 1368, + 69, 69, 1372, 69, 1362, 1376, 1373, 1371, 1369, 1374, + 1367, 1380, 69, 69, 1379, 69, 69, 69, 1381, 69, + 1377, 1378, 69, 69, 69, 69, 1382, 1386, 1384, 69, + 1383, 69, 1389, 69, 1385, 69, 1387, 1390, 69, 1391, + 69, 1392, 69, 1388, 69, 1396, 69, 1393, 1395, 69, + 1397, 69, 1398, 1399, 69, 69, 1394, 69, 69, 69, + 1400, 1403, 69, 1406, 69, 69, 1770, 1405, 69, 69, + 1407, 1401, 1402, 1410, 1409, 69, 69, 1413, 69, 1404, + 69, 1408, 1412, 1411, 1414, 69, 69, 1416, 69, 1417, + + 69, 1415, 1418, 69, 1419, 69, 69, 69, 69, 69, + 69, 1424, 69, 1422, 1426, 69, 69, 1770, 1425, 69, + 69, 1420, 1423, 1429, 69, 1430, 69, 69, 1421, 1431, + 69, 1428, 69, 1427, 69, 1433, 1434, 69, 1435, 69, + 1432, 1436, 69, 69, 1437, 69, 69, 69, 69, 1444, + 69, 69, 1438, 1442, 69, 1439, 69, 1440, 1441, 69, + 1445, 69, 69, 69, 69, 69, 69, 1443, 1455, 69, + 1453, 1454, 1448, 1456, 69, 69, 1447, 1450, 69, 69, + 1446, 69, 1451, 69, 1452, 1449, 69, 69, 69, 1464, + 1461, 1465, 69, 69, 69, 1457, 1458, 69, 69, 69, + + 69, 1459, 1466, 1460, 1467, 1463, 1462, 69, 1474, 1468, + 1473, 69, 69, 69, 69, 69, 1469, 1470, 69, 1472, + 69, 69, 69, 1471, 69, 1481, 1482, 69, 69, 1476, + 1475, 69, 69, 69, 1477, 1485, 69, 1487, 1478, 1479, + 69, 1480, 1484, 1483, 1488, 69, 69, 1486, 1770, 1489, + 1490, 69, 1492, 69, 1493, 69, 69, 1494, 69, 1491, + 69, 69, 69, 69, 69, 1497, 1498, 1496, 1495, 69, + 69, 1500, 69, 1507, 1502, 1503, 1505, 69, 69, 1501, + 69, 1499, 1506, 69, 69, 1508, 69, 1504, 1509, 69, + 1510, 69, 1511, 1514, 69, 69, 69, 69, 1512, 69, + + 1513, 1515, 69, 69, 1516, 69, 1519, 1517, 69, 69, + 69, 1518, 69, 1524, 69, 69, 69, 1770, 1522, 1523, + 69, 1521, 69, 1520, 1525, 1529, 69, 1531, 69, 69, + 69, 1530, 69, 1526, 69, 1533, 1527, 1532, 69, 1528, + 69, 1534, 1536, 69, 69, 1539, 69, 1535, 1540, 69, + 69, 1542, 69, 69, 1537, 1543, 1544, 69, 1538, 1545, + 69, 1546, 69, 69, 1549, 69, 1541, 1550, 69, 69, + 69, 1547, 69, 69, 1551, 1553, 69, 1548, 1552, 69, + 69, 1556, 1554, 1555, 69, 1560, 69, 69, 69, 69, + 69, 1557, 69, 1564, 69, 1565, 1562, 69, 1559, 1558, + + 69, 69, 69, 69, 69, 1567, 1561, 69, 1563, 69, + 1568, 1570, 1573, 1566, 1575, 69, 69, 69, 69, 69, + 1576, 1579, 69, 1571, 1572, 1574, 1577, 1569, 69, 69, + 69, 69, 1580, 1578, 69, 69, 1586, 1581, 1582, 1585, + 69, 69, 1583, 69, 69, 69, 1588, 69, 69, 1587, + 1594, 69, 1589, 1592, 69, 69, 1584, 1596, 69, 69, + 1599, 69, 69, 69, 1590, 1593, 1591, 1600, 69, 69, + 69, 1601, 69, 1597, 1598, 69, 1595, 1605, 1604, 1607, + 69, 69, 1609, 69, 1602, 69, 1611, 69, 1603, 69, + 1610, 69, 69, 1614, 69, 69, 1617, 69, 1618, 69, + + 1608, 1606, 69, 69, 69, 1622, 69, 69, 1615, 1612, + 69, 69, 69, 1627, 1613, 1620, 1625, 1616, 69, 1623, + 69, 1619, 1630, 69, 1621, 1631, 69, 69, 69, 69, + 1624, 1626, 1770, 1633, 69, 1636, 69, 1628, 1629, 1635, + 1637, 69, 69, 1634, 1638, 69, 1632, 1639, 1640, 69, + 69, 1641, 1642, 69, 69, 69, 1645, 69, 69, 69, + 1648, 69, 69, 1646, 1644, 69, 69, 1647, 1643, 69, + 1649, 1650, 69, 69, 1651, 69, 69, 69, 1659, 69, + 69, 1657, 1660, 69, 1661, 1662, 69, 1652, 1653, 69, + 1654, 1655, 69, 1663, 1664, 69, 1656, 1658, 1666, 69, + + 69, 69, 1669, 69, 1670, 69, 1665, 69, 69, 69, + 69, 69, 69, 1677, 69, 1667, 1674, 1675, 1770, 1668, + 1678, 69, 69, 1672, 1679, 69, 1680, 69, 1683, 1676, + 1673, 69, 1671, 69, 1681, 69, 1682, 69, 69, 69, + 69, 69, 1685, 69, 69, 1684, 69, 1689, 69, 69, + 69, 69, 69, 1697, 69, 1688, 69, 1686, 1687, 1691, + 1698, 1690, 69, 1692, 69, 1694, 1693, 1696, 69, 1699, + 69, 1703, 69, 1700, 69, 1695, 69, 1702, 1707, 69, + 1708, 1701, 69, 69, 1704, 69, 69, 1705, 69, 69, + 69, 69, 1710, 1706, 69, 69, 1709, 69, 69, 1720, + + 1717, 69, 1712, 1714, 1715, 1711, 1718, 69, 1713, 69, + 69, 69, 1721, 1716, 1722, 1723, 1719, 1725, 1726, 69, + 69, 69, 69, 69, 1730, 69, 69, 1727, 69, 69, + 1724, 69, 69, 1733, 69, 69, 1737, 69, 69, 1732, + 1728, 1770, 1729, 1738, 1731, 69, 1740, 1736, 69, 1741, + 1734, 1735, 69, 69, 69, 69, 1739, 1742, 1745, 69, + 1743, 69, 1746, 69, 69, 69, 69, 69, 1747, 1749, + 69, 1751, 1752, 1744, 69, 69, 1755, 69, 69, 69, + 1758, 69, 1748, 69, 1750, 1759, 69, 69, 1760, 1753, + 1761, 69, 69, 1754, 1762, 69, 1756, 1757, 69, 1763, + + 69, 1770, 1766, 1764, 1770, 1765, 1767, 1768, 69, 1769, + 69, 41, 41, 41, 41, 41, 41, 41, 46, 46, + 46, 46, 46, 46, 46, 51, 51, 51, 51, 51, + 51, 51, 57, 57, 57, 57, 57, 57, 57, 62, + 62, 62, 62, 62, 62, 62, 72, 72, 1770, 72, + 72, 72, 72, 127, 127, 1770, 1770, 1770, 127, 127, + 129, 129, 1770, 1770, 129, 1770, 129, 131, 1770, 1770, + 1770, 1770, 1770, 131, 134, 134, 1770, 1770, 1770, 134, + 134, 136, 1770, 1770, 1770, 1770, 1770, 136, 138, 138, + 1770, 138, 138, 138, 138, 73, 73, 1770, 73, 73, + + 73, 73, 13, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770 } ; -static yyconst flex_int16_t yy_chk[3515] = +static yyconst flex_int16_t yy_chk[3543] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 4, 4, 4, 49, 5, 5, 49, 3, + 3, 3, 4, 4, 4, 50, 5, 5, 50, 3, 5, 15, 4, 6, 6, 15, 5, 6, 9, 9, - 9, 154, 33, 6, 7, 7, 7, 7, 9, 7, - 10, 10, 10, 44, 44, 7, 8, 8, 8, 8, - 10, 8, 21, 33, 154, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1757, 20, 29, 20, 20, 11, + 9, 156, 33, 6, 7, 7, 7, 7, 9, 7, + 10, 10, 10, 45, 45, 7, 8, 8, 8, 8, + 10, 8, 21, 33, 156, 21, 21, 8, 11, 11, + 11, 11, 11, 11, 1776, 20, 29, 20, 20, 11, 20, 29, 24, 21, 25, 20, 24, 28, 11, 12, - 12, 12, 12, 12, 12, 74, 22, 22, 74, 25, - 12, 69, 28, 30, 22, 69, 24, 26, 26, 12, - 19, 22, 19, 19, 66, 19, 26, 82, 30, 27, - 19, 19, 23, 27, 60, 60, 27, 23, 66, 31, - 31, 23, 38, 27, 23, 27, 23, 23, 31, 82, - 32, 32, 35, 35, 31, 32, 38, 35, 31, 36, - 119, 38, 37, 37, 36, 37, 78, 35, 39, 39, - 35, 32, 34, 39, 36, 100, 119, 34, 36, 36, - 37, 34, 100, 55, 78, 55, 55, 34, 55, 63, - - 34, 63, 63, 65, 63, 65, 65, 34, 65, 68, - 63, 68, 68, 75, 68, 76, 80, 75, 77, 68, - 71, 77, 71, 71, 79, 71, 81, 83, 80, 85, - 71, 71, 84, 86, 77, 76, 87, 84, 79, 88, - 94, 89, 90, 85, 81, 89, 83, 90, 91, 92, - 84, 93, 92, 86, 87, 92, 93, 88, 95, 94, - 97, 96, 91, 95, 96, 98, 99, 101, 96, 92, - 99, 102, 103, 104, 105, 109, 107, 106, 102, 98, - 101, 106, 108, 95, 97, 103, 110, 108, 111, 112, - 113, 108, 105, 104, 107, 109, 114, 115, 116, 117, - - 117, 111, 115, 118, 112, 120, 110, 122, 142, 113, - 116, 121, 122, 121, 114, 123, 142, 124, 126, 126, - 117, 118, 128, 133, 133, 128, 120, 123, 130, 138, - 130, 130, 138, 130, 121, 124, 135, 143, 135, 135, - 136, 135, 136, 136, 139, 136, 141, 140, 144, 139, - 145, 136, 140, 146, 152, 147, 143, 148, 146, 146, - 147, 141, 148, 144, 149, 157, 149, 151, 151, 153, - 145, 155, 156, 152, 153, 155, 160, 156, 158, 157, - 159, 164, 163, 161, 162, 162, 149, 150, 161, 166, - 166, 150, 159, 158, 160, 159, 150, 164, 165, 170, - - 167, 150, 163, 165, 162, 167, 169, 150, 150, 168, - 176, 167, 171, 172, 168, 169, 173, 171, 172, 174, - 170, 173, 175, 176, 174, 177, 178, 179, 180, 175, - 181, 177, 182, 179, 183, 184, 185, 182, 181, 186, - 187, 185, 188, 189, 194, 191, 178, 188, 193, 183, - 180, 190, 191, 190, 651, 184, 194, 192, 187, 187, - 200, 186, 192, 189, 195, 195, 196, 193, 197, 199, - 201, 196, 198, 197, 198, 202, 206, 203, 201, 200, - 202, 199, 203, 204, 205, 207, 208, 209, 204, 196, - 209, 198, 214, 207, 206, 210, 210, 211, 215, 205, - - 211, 212, 212, 213, 213, 220, 216, 218, 214, 216, - 217, 208, 219, 215, 217, 224, 218, 219, 222, 220, - 221, 221, 223, 222, 225, 226, 227, 223, 228, 228, - 229, 231, 230, 232, 234, 224, 230, 234, 233, 227, - 235, 236, 225, 233, 237, 232, 226, 238, 229, 231, - 239, 134, 235, 237, 240, 242, 242, 241, 236, 241, - 241, 236, 243, 239, 244, 243, 240, 245, 238, 246, - 247, 248, 248, 250, 250, 249, 251, 252, 246, 247, - 249, 244, 245, 253, 244, 254, 255, 256, 258, 252, - 254, 251, 256, 257, 259, 260, 257, 263, 257, 264, - - 261, 265, 258, 253, 260, 261, 255, 262, 266, 268, - 259, 267, 262, 259, 267, 259, 265, 270, 263, 264, - 271, 272, 266, 268, 274, 273, 277, 132, 275, 271, - 267, 269, 270, 269, 269, 276, 278, 279, 280, 274, - 276, 282, 272, 269, 273, 269, 269, 269, 275, 277, - 269, 283, 279, 280, 281, 284, 278, 285, 286, 281, - 284, 282, 288, 286, 289, 283, 287, 287, 290, 287, - 292, 291, 292, 285, 293, 294, 295, 296, 293, 297, - 289, 419, 288, 419, 290, 291, 296, 298, 297, 300, - 295, 299, 298, 294, 302, 299, 301, 309, 300, 296, - - 302, 301, 303, 304, 304, 305, 303, 306, 307, 307, - 305, 308, 310, 311, 315, 312, 308, 319, 309, 312, - 306, 310, 313, 313, 314, 311, 316, 316, 320, 314, - 318, 318, 321, 322, 323, 315, 320, 325, 319, 326, - 327, 321, 328, 329, 330, 331, 323, 332, 329, 333, - 331, 328, 330, 322, 327, 334, 335, 325, 336, 326, - 335, 337, 338, 339, 342, 332, 337, 341, 345, 343, - 347, 333, 344, 336, 343, 344, 334, 131, 338, 343, - 342, 349, 339, 340, 340, 346, 346, 341, 345, 340, - 350, 340, 348, 348, 352, 347, 349, 351, 353, 340, - - 354, 355, 350, 356, 357, 354, 360, 358, 361, 340, - 355, 358, 351, 352, 362, 363, 359, 365, 360, 357, - 353, 359, 356, 363, 364, 364, 361, 362, 366, 365, - 367, 368, 369, 367, 370, 369, 372, 371, 373, 373, - 366, 371, 371, 374, 374, 379, 368, 375, 401, 372, - 370, 385, 375, 370, 376, 376, 377, 377, 378, 380, - 401, 381, 382, 378, 380, 381, 379, 382, 383, 384, - 386, 385, 383, 387, 384, 386, 388, 389, 387, 391, - 389, 390, 390, 393, 392, 389, 394, 398, 393, 389, - 388, 395, 396, 400, 395, 394, 396, 391, 392, 397, - - 398, 399, 402, 406, 397, 403, 399, 402, 406, 400, - 404, 403, 405, 404, 407, 405, 408, 409, 396, 410, - 411, 412, 409, 411, 410, 414, 412, 420, 416, 413, - 408, 415, 407, 413, 413, 422, 415, 416, 414, 417, - 418, 421, 417, 421, 418, 418, 420, 423, 424, 425, - 426, 427, 432, 422, 426, 428, 429, 417, 430, 431, - 427, 433, 433, 437, 431, 423, 435, 424, 434, 425, - 428, 432, 434, 430, 429, 436, 438, 435, 439, 437, - 436, 440, 441, 442, 443, 445, 446, 441, 440, 443, - 442, 439, 444, 446, 448, 438, 447, 444, 450, 449, - - 452, 450, 451, 445, 449, 447, 451, 454, 448, 453, - 453, 457, 456, 458, 459, 457, 454, 456, 453, 460, - 461, 452, 462, 468, 465, 458, 471, 460, 472, 473, - 478, 474, 459, 473, 472, 471, 474, 476, 461, 465, - 468, 477, 476, 479, 480, 480, 479, 462, 463, 481, - 482, 482, 129, 463, 483, 478, 481, 463, 487, 477, - 463, 484, 484, 485, 488, 518, 485, 463, 489, 483, - 463, 475, 475, 475, 486, 475, 492, 487, 475, 486, - 490, 491, 491, 475, 488, 493, 518, 489, 490, 475, - 475, 492, 494, 495, 495, 496, 497, 494, 499, 498, - - 496, 497, 498, 493, 499, 500, 501, 502, 505, 504, - 503, 506, 506, 500, 501, 503, 504, 508, 507, 509, - 511, 512, 508, 513, 512, 502, 507, 505, 515, 511, - 514, 514, 520, 516, 519, 521, 516, 513, 509, 519, - 522, 523, 524, 515, 516, 525, 526, 527, 528, 525, - 530, 524, 531, 520, 529, 521, 530, 528, 533, 532, - 534, 523, 522, 533, 526, 534, 527, 535, 529, 536, - 537, 535, 531, 532, 538, 539, 540, 540, 541, 538, - 543, 542, 537, 541, 542, 545, 544, 546, 536, 549, - 545, 547, 547, 548, 548, 551, 539, 550, 543, 544, - - 552, 550, 553, 554, 549, 556, 557, 546, 558, 556, - 560, 559, 127, 561, 551, 560, 553, 562, 563, 568, - 564, 557, 563, 554, 552, 555, 559, 561, 555, 591, - 555, 562, 565, 558, 555, 564, 555, 565, 566, 567, - 568, 555, 569, 566, 570, 591, 555, 565, 573, 571, - 570, 572, 572, 567, 571, 575, 569, 572, 574, 572, - 573, 576, 578, 574, 577, 577, 579, 578, 580, 575, - 581, 582, 582, 576, 579, 583, 585, 572, 587, 583, - 586, 585, 580, 586, 590, 588, 589, 592, 593, 581, - 594, 589, 595, 597, 596, 594, 592, 587, 588, 598, - - 600, 602, 597, 590, 598, 601, 603, 593, 596, 604, - 605, 603, 595, 606, 604, 605, 602, 607, 607, 600, - 608, 609, 606, 601, 611, 608, 612, 612, 611, 611, - 612, 614, 613, 615, 609, 613, 616, 617, 618, 619, - 617, 620, 622, 621, 619, 626, 620, 623, 615, 621, - 628, 614, 625, 623, 624, 624, 616, 627, 622, 618, - 627, 625, 629, 626, 630, 631, 632, 633, 628, 634, - 635, 632, 633, 635, 636, 638, 637, 639, 631, 640, - 638, 629, 639, 642, 630, 636, 643, 634, 637, 641, - 641, 644, 645, 646, 640, 647, 645, 648, 649, 652, - - 643, 654, 642, 644, 647, 653, 125, 655, 663, 656, - 657, 646, 655, 652, 656, 657, 648, 658, 659, 660, - 653, 654, 658, 649, 661, 662, 664, 663, 665, 661, - 666, 666, 659, 660, 667, 669, 668, 670, 670, 671, - 662, 664, 668, 672, 671, 673, 674, 665, 675, 674, - 672, 676, 667, 677, 678, 669, 679, 680, 677, 673, - 676, 679, 682, 681, 683, 684, 675, 681, 685, 686, - 687, 682, 688, 678, 689, 685, 680, 690, 692, 683, - 684, 686, 691, 690, 698, 693, 695, 696, 697, 687, - 699, 695, 689, 688, 693, 699, 697, 691, 692, 701, - - 703, 696, 700, 704, 698, 705, 700, 700, 702, 702, - 705, 707, 704, 703, 706, 706, 707, 708, 701, 709, - 709, 710, 708, 711, 712, 713, 714, 715, 711, 716, - 710, 714, 715, 717, 716, 718, 720, 717, 712, 719, - 719, 722, 723, 713, 718, 722, 724, 720, 726, 718, - 725, 718, 727, 718, 725, 725, 729, 723, 728, 730, - 731, 733, 726, 738, 724, 67, 728, 732, 732, 737, - 729, 727, 734, 734, 737, 736, 733, 730, 736, 739, - 739, 740, 738, 741, 741, 731, 742, 743, 743, 744, - 745, 742, 746, 747, 749, 745, 748, 748, 747, 750, - - 746, 740, 753, 751, 758, 750, 754, 753, 755, 744, - 751, 754, 749, 755, 756, 757, 759, 760, 760, 756, - 761, 762, 764, 758, 757, 763, 765, 759, 769, 766, - 763, 767, 768, 768, 770, 771, 764, 773, 772, 61, - 761, 766, 764, 772, 762, 774, 765, 776, 769, 767, - 774, 776, 776, 771, 777, 779, 778, 779, 780, 770, - 773, 781, 783, 777, 778, 782, 781, 784, 785, 782, - 786, 787, 780, 783, 788, 789, 787, 790, 791, 792, - 798, 790, 796, 793, 794, 795, 784, 798, 786, 804, - 802, 800, 788, 56, 785, 789, 791, 793, 792, 794, - - 795, 796, 797, 799, 801, 802, 803, 797, 799, 800, - 804, 805, 803, 801, 806, 807, 805, 808, 808, 806, - 807, 810, 810, 811, 812, 813, 814, 815, 817, 812, - 818, 815, 815, 816, 816, 819, 820, 821, 823, 813, - 824, 811, 827, 821, 825, 814, 822, 817, 826, 818, - 828, 822, 838, 829, 831, 820, 827, 823, 833, 824, - 834, 819, 833, 825, 830, 830, 831, 826, 829, 832, - 835, 828, 838, 834, 832, 836, 842, 836, 51, 835, - 840, 836, 839, 839, 841, 840, 843, 845, 841, 857, - 847, 843, 848, 848, 836, 847, 842, 849, 851, 851, - - 853, 853, 849, 855, 857, 845, 855, 856, 856, 858, - 859, 860, 861, 862, 862, 863, 860, 864, 864, 865, - 866, 867, 871, 868, 859, 867, 875, 861, 869, 872, - 876, 866, 878, 869, 858, 863, 873, 873, 877, 874, - 871, 865, 868, 872, 874, 882, 875, 877, 880, 879, - 876, 879, 878, 880, 881, 883, 884, 885, 885, 881, - 883, 886, 888, 889, 889, 882, 890, 886, 891, 892, - 884, 893, 892, 895, 894, 892, 893, 897, 890, 894, - 896, 898, 895, 901, 898, 896, 888, 892, 891, 899, - 900, 900, 902, 903, 899, 904, 906, 910, 905, 907, - - 904, 901, 897, 905, 907, 908, 908, 909, 911, 912, - 913, 902, 909, 903, 914, 910, 916, 915, 917, 906, - 918, 916, 919, 925, 913, 50, 914, 921, 911, 912, - 915, 922, 921, 924, 923, 928, 928, 933, 917, 925, - 918, 923, 924, 919, 929, 924, 922, 929, 930, 931, - 932, 934, 935, 930, 937, 937, 933, 936, 938, 932, - 934, 935, 936, 934, 939, 931, 940, 941, 942, 943, - 944, 945, 945, 946, 947, 948, 948, 939, 938, 947, - 942, 941, 950, 949, 940, 953, 952, 956, 944, 946, - 948, 952, 949, 954, 943, 949, 955, 958, 954, 957, - - 950, 962, 955, 953, 957, 959, 963, 956, 959, 962, - 958, 964, 965, 966, 959, 968, 967, 970, 966, 963, - 971, 972, 973, 974, 971, 975, 972, 973, 974, 964, - 976, 965, 967, 968, 975, 977, 980, 970, 978, 978, - 979, 983, 984, 980, 981, 982, 985, 984, 986, 987, - 977, 988, 988, 976, 979, 987, 981, 982, 985, 989, - 983, 992, 989, 990, 990, 994, 986, 993, 993, 995, - 992, 996, 997, 998, 995, 1001, 999, 994, 1000, 1002, - 996, 999, 1003, 1003, 997, 1004, 1005, 1000, 998, 1006, - 1004, 1007, 1008, 1008, 1002, 1001, 1009, 1010, 1010, 1012, - - 1000, 1011, 1011, 1012, 1013, 1017, 1019, 1005, 1006, 1013, - 1014, 1007, 1016, 1014, 1018, 1024, 1009, 1016, 1027, 1018, - 1020, 1020, 1022, 1017, 1021, 1021, 1023, 1022, 1025, 1026, - 1028, 1019, 1027, 1029, 1029, 1024, 1030, 1032, 1023, 1023, - 1023, 1031, 1031, 1034, 1036, 1023, 1035, 1035, 1025, 1026, - 1039, 1028, 1034, 1037, 1038, 1040, 1040, 1032, 1041, 1036, - 1037, 1042, 1030, 1038, 1044, 1045, 1046, 1047, 1048, 1044, - 1045, 1049, 1049, 1048, 1047, 1050, 1039, 1042, 1051, 1052, - 1050, 1053, 1054, 1055, 1041, 1054, 1046, 1051, 1056, 1057, - 1057, 1058, 1059, 1053, 1060, 1062, 1061, 1063, 1063, 1052, - - 45, 1055, 1061, 1066, 1062, 1064, 1058, 1065, 1065, 1060, - 1068, 1059, 1067, 1072, 1056, 1068, 1064, 1069, 1069, 1073, - 1071, 1064, 1078, 1070, 1066, 1071, 1067, 1070, 1070, 1074, - 1075, 1073, 1076, 1077, 1074, 1079, 1076, 1080, 1081, 1072, - 1079, 1082, 1075, 1081, 1088, 1077, 1084, 1078, 40, 1084, - 1085, 1085, 1089, 1082, 1086, 1086, 1087, 1087, 1089, 1080, - 1090, 1091, 1092, 1094, 1088, 1090, 1096, 1091, 1094, 1098, - 1100, 1092, 1099, 1099, 1101, 1102, 1103, 1105, 1096, 1110, - 1104, 1098, 1105, 1101, 1104, 1107, 1106, 1111, 1109, 1109, - 1100, 1106, 1112, 1102, 1117, 1103, 1111, 1110, 1118, 1107, - - 1109, 1112, 1114, 1114, 1120, 1119, 1121, 1121, 1126, 1117, - 1119, 1122, 1118, 1122, 1123, 1123, 1125, 1127, 1127, 1129, - 1128, 1120, 1130, 1125, 1131, 1132, 1133, 1134, 1126, 1128, - 1135, 1139, 1142, 1137, 1130, 1144, 1131, 1132, 1137, 1140, - 1129, 1133, 1138, 1146, 1138, 1146, 1142, 1134, 1140, 1139, - 1135, 1143, 1143, 1145, 1147, 1148, 1149, 1150, 1145, 1147, - 1148, 1144, 1151, 1152, 1153, 1155, 1156, 1151, 1152, 1157, - 1157, 1158, 1153, 1159, 1149, 14, 1160, 1150, 1161, 1163, - 1156, 1160, 1167, 1161, 1155, 1162, 1158, 1162, 1164, 1166, - 1165, 1163, 1165, 1159, 1167, 1172, 1169, 1164, 1166, 1170, - - 1164, 1169, 1173, 1174, 1170, 1176, 1178, 1180, 1172, 1179, - 1185, 1176, 1178, 1187, 1181, 1182, 1182, 1183, 1187, 1174, - 1184, 1184, 1173, 1181, 1179, 1188, 1183, 1186, 1190, 1185, - 1191, 1186, 1180, 1189, 1189, 1195, 1190, 1198, 1188, 1194, - 1194, 1196, 1196, 1199, 1195, 1197, 1197, 1200, 1203, 1198, - 1191, 1204, 1200, 1201, 1201, 1205, 1204, 1206, 1207, 1208, - 1209, 1199, 1211, 1207, 1210, 1210, 1211, 1212, 1214, 1213, - 1215, 1218, 1206, 1203, 1213, 1217, 1209, 1208, 1205, 1220, - 1219, 1221, 1212, 1222, 1224, 1224, 13, 1225, 1226, 1215, - 1225, 1227, 1241, 1221, 1214, 1218, 1228, 1241, 1217, 1219, - - 1220, 1226, 1229, 1229, 1222, 1227, 1230, 1230, 1232, 1228, - 1231, 1231, 1233, 1233, 1234, 1234, 1235, 1235, 1236, 1237, - 1237, 1232, 1238, 1238, 1239, 1242, 1242, 1243, 1244, 1244, - 1245, 1247, 1246, 1251, 1247, 1248, 1248, 1236, 1246, 1249, - 1249, 1250, 1254, 1239, 1252, 1252, 1243, 1255, 1245, 1256, - 1258, 1248, 1251, 1256, 1257, 1257, 1250, 1259, 1259, 1260, - 1261, 1261, 1255, 1262, 1263, 1254, 1264, 1265, 1266, 1258, - 1267, 1264, 1262, 1268, 1269, 1270, 1263, 1271, 1268, 1272, - 1276, 1266, 1273, 0, 1270, 1260, 1271, 1273, 1278, 1269, - 1274, 1267, 1265, 1272, 1274, 1279, 1279, 1278, 1280, 1283, - - 1276, 1281, 1281, 1280, 1284, 1286, 1288, 1289, 1290, 1288, - 1281, 1294, 1289, 1284, 1283, 1291, 1291, 1286, 1293, 1293, - 1295, 1295, 1296, 1297, 1298, 1294, 1299, 1299, 1290, 1301, - 1303, 1303, 1302, 1301, 1296, 1302, 1304, 1297, 1305, 1306, - 1307, 1304, 1308, 1298, 1307, 1309, 1310, 1313, 1311, 0, - 1309, 1310, 1314, 1306, 1311, 1315, 1316, 1314, 1305, 1317, - 1315, 1317, 1308, 1313, 1316, 1320, 1320, 1324, 1324, 1327, - 1328, 1328, 1330, 1330, 1327, 1332, 1333, 1333, 1334, 1335, - 1332, 1336, 1341, 1338, 1339, 1339, 1336, 1341, 1342, 1343, - 1345, 1345, 1347, 1349, 1334, 1338, 1348, 1347, 1348, 1355, - - 1350, 1335, 1351, 1351, 1343, 1350, 1342, 1349, 1352, 1352, - 1353, 1353, 1354, 1356, 1357, 1358, 1359, 1355, 1360, 1361, - 1361, 1359, 1362, 1363, 1354, 1356, 1357, 1358, 1364, 1365, - 1366, 1362, 1367, 1368, 1369, 1370, 1371, 1376, 1360, 1378, - 1370, 1371, 1365, 1372, 1372, 1377, 1367, 1379, 1364, 1363, - 1380, 1368, 1373, 1373, 1366, 1381, 1369, 1376, 1382, 1380, - 1389, 1378, 1386, 1377, 1383, 1383, 1387, 1379, 1385, 1385, - 1388, 1386, 1390, 1387, 1395, 1381, 1382, 1391, 1389, 1392, - 1393, 1393, 1394, 1397, 1396, 1388, 1398, 1394, 1400, 1403, - 1390, 1404, 1395, 1391, 1404, 1405, 1405, 1406, 1392, 1396, - - 1407, 1408, 1397, 1412, 1410, 1408, 1398, 1400, 1410, 1403, - 1411, 1411, 1406, 1414, 1414, 1415, 1412, 1422, 1407, 1416, - 1416, 1417, 1417, 1421, 1421, 1424, 1423, 1425, 1426, 1427, - 1424, 1429, 1425, 1430, 1415, 1423, 1431, 1427, 1430, 1422, - 1432, 1431, 1433, 1433, 1434, 1434, 1429, 1426, 1435, 1436, - 1437, 1437, 1445, 1435, 1436, 1432, 1438, 1438, 1441, 1444, - 1442, 1443, 1446, 1441, 1442, 1448, 1443, 1445, 1444, 1447, - 1446, 1451, 1450, 1452, 1447, 1450, 1453, 1448, 1454, 1455, - 1455, 1456, 1458, 1459, 1462, 1453, 1452, 1454, 1460, 1451, - 1456, 1461, 1461, 1462, 1463, 1463, 1464, 1465, 1468, 1467, - - 1470, 1458, 1465, 1459, 1464, 1469, 1477, 1460, 1467, 1469, - 0, 1468, 1472, 1472, 1483, 1470, 1474, 1474, 1478, 1478, - 1479, 1480, 1480, 1479, 1481, 1481, 1477, 1482, 1482, 1484, - 1485, 1490, 1483, 1486, 1486, 1485, 1487, 1490, 1494, 1491, - 1487, 1495, 1496, 1484, 1491, 1497, 1495, 1498, 1499, 1499, - 1500, 1501, 1502, 1503, 1503, 1494, 1494, 1504, 1504, 1501, - 1496, 1498, 1505, 1506, 1507, 1497, 1508, 1509, 1506, 1500, - 1510, 1502, 1513, 1511, 1518, 1513, 1509, 1515, 1505, 1516, - 1516, 1517, 1519, 1518, 1507, 1517, 1520, 1521, 1524, 1523, - 1510, 1525, 1508, 1511, 1535, 1515, 1521, 1519, 1523, 1520, - - 1524, 1529, 1530, 1530, 1531, 1533, 1529, 1536, 1534, 1538, - 1533, 1540, 1543, 1531, 1535, 1537, 1525, 1534, 1539, 1544, - 1537, 1541, 1541, 1539, 1545, 1545, 1546, 1538, 1536, 1547, - 1546, 1543, 1548, 1549, 1544, 1550, 1540, 1551, 1547, 1552, - 1553, 1553, 1551, 1550, 1554, 1555, 1555, 1559, 1548, 1556, - 1558, 1558, 1549, 1560, 1556, 1561, 1561, 1562, 1563, 1564, - 1564, 1565, 1565, 1554, 1566, 1552, 1567, 1559, 1568, 1569, - 1569, 1562, 1570, 1571, 1572, 1573, 1560, 1574, 1567, 1572, - 1563, 1575, 1574, 1566, 1570, 1576, 1576, 1579, 1568, 1578, - 1578, 1581, 1583, 1571, 1573, 1582, 1581, 1583, 1575, 1575, - - 1584, 1584, 1585, 1585, 1586, 1586, 1579, 1587, 1594, 1582, - 1589, 1589, 1587, 1591, 1591, 1593, 1593, 1595, 1596, 1596, - 1597, 1600, 1594, 1601, 1601, 1597, 1595, 1602, 1604, 1600, - 1605, 1606, 1602, 1604, 1607, 1608, 1609, 0, 1610, 1613, - 1614, 1614, 1605, 1610, 1615, 1615, 1633, 1616, 1630, 1606, - 1607, 1616, 1608, 1608, 1620, 1620, 1622, 1609, 1625, 1613, - 1622, 1624, 1624, 1627, 1627, 1628, 1630, 1631, 1631, 1632, - 1632, 1633, 1625, 1634, 1635, 1638, 1636, 1637, 1639, 1639, - 1628, 1636, 1637, 1642, 1642, 1644, 1644, 1648, 1634, 1646, - 1646, 1649, 1649, 1652, 1638, 1635, 1653, 1654, 1652, 1648, - - 1655, 1657, 1654, 1656, 1662, 1663, 1666, 1664, 1662, 1665, - 1653, 1667, 1668, 1671, 1669, 1670, 1670, 1657, 1672, 1655, - 1664, 1656, 1671, 1672, 1666, 1663, 1673, 1667, 1665, 1669, - 1674, 1673, 1675, 1676, 1677, 1679, 1681, 1668, 1676, 1680, - 1682, 1681, 1683, 1685, 1684, 1682, 1686, 1675, 1677, 1687, - 1679, 1688, 1689, 1690, 1691, 1674, 1683, 1684, 1680, 1691, - 1686, 1692, 1685, 1693, 1688, 1689, 1692, 1698, 1687, 1694, - 1694, 1695, 1690, 1696, 1697, 1699, 1695, 1702, 1696, 1697, - 1699, 1701, 1693, 1700, 1700, 1703, 1698, 1704, 1701, 1705, - 1706, 1709, 1704, 1708, 1710, 1714, 1702, 1713, 1708, 1711, - - 1712, 1712, 1713, 1706, 1703, 1715, 1715, 1719, 1705, 0, - 1709, 1718, 1711, 1710, 1714, 1716, 1716, 1717, 1718, 1720, - 1720, 1721, 1717, 1722, 1723, 1725, 1719, 1724, 1721, 1727, - 1722, 1728, 1724, 1729, 1727, 1730, 1728, 1731, 1731, 1732, - 1733, 1734, 1734, 1723, 1725, 1735, 1735, 0, 1736, 1737, - 1737, 1745, 1729, 1739, 1730, 1736, 1738, 1738, 1732, 1733, - 1739, 1741, 1744, 1746, 1747, 1747, 1741, 1744, 1748, 1748, - 1745, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1746, 1752, 1752, 1752, 1752, 1752, 1752, 1752, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1754, 1754, 1754, - - 1754, 1754, 1754, 1754, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1758, 1758, - 0, 1758, 1758, 1758, 1758, 1759, 1759, 0, 0, 0, - 1759, 1759, 1760, 1760, 0, 0, 1760, 0, 1760, 1761, - 0, 0, 0, 0, 0, 1761, 1762, 1762, 0, 0, - 0, 1762, 1762, 1763, 0, 0, 0, 0, 0, 1763, - 1764, 1764, 0, 1764, 1764, 1764, 1764, 1765, 1765, 0, - 1765, 1765, 1765, 1765, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, - 1751, 1751, 1751, 1751 + 12, 12, 12, 12, 12, 75, 22, 22, 75, 25, + 12, 70, 28, 30, 22, 70, 24, 26, 26, 12, + 19, 22, 19, 19, 35, 19, 26, 83, 30, 27, + 19, 19, 23, 27, 61, 61, 27, 23, 35, 31, + 31, 23, 39, 27, 23, 27, 23, 23, 31, 83, + 32, 32, 36, 36, 31, 32, 39, 36, 31, 37, + 659, 39, 38, 38, 37, 38, 79, 36, 40, 40, + 36, 32, 34, 40, 37, 111, 111, 34, 37, 37, + 38, 34, 77, 56, 79, 56, 56, 34, 56, 64, + + 34, 64, 64, 66, 64, 66, 66, 34, 66, 67, + 64, 69, 77, 69, 69, 76, 69, 78, 80, 76, + 78, 69, 82, 67, 72, 81, 72, 72, 84, 72, + 86, 85, 80, 78, 72, 72, 85, 81, 87, 88, + 82, 89, 90, 91, 86, 98, 90, 84, 91, 85, + 92, 94, 95, 128, 128, 136, 94, 88, 87, 89, + 93, 99, 96, 93, 92, 97, 93, 96, 97, 98, + 100, 95, 97, 102, 100, 99, 101, 103, 104, 105, + 93, 107, 106, 101, 103, 107, 102, 96, 108, 109, + 110, 104, 112, 118, 109, 113, 114, 115, 109, 105, + + 106, 116, 117, 119, 119, 118, 108, 117, 113, 120, + 110, 114, 112, 121, 122, 123, 115, 123, 124, 116, + 125, 126, 130, 124, 119, 130, 143, 120, 132, 121, + 132, 132, 125, 132, 134, 122, 135, 135, 123, 126, + 137, 143, 137, 137, 138, 137, 138, 138, 140, 138, + 145, 140, 141, 142, 144, 138, 146, 141, 142, 147, + 148, 154, 144, 149, 133, 148, 148, 150, 149, 145, + 157, 146, 150, 151, 157, 151, 153, 153, 155, 147, + 154, 158, 160, 155, 159, 162, 158, 161, 163, 164, + 164, 165, 166, 163, 131, 151, 152, 160, 159, 161, + + 152, 167, 161, 162, 129, 152, 167, 172, 166, 164, + 152, 165, 168, 168, 169, 170, 152, 152, 171, 169, + 170, 173, 180, 182, 174, 169, 173, 171, 172, 174, + 175, 176, 177, 178, 179, 175, 176, 181, 184, 177, + 179, 183, 180, 181, 186, 182, 178, 185, 187, 183, + 188, 184, 185, 189, 190, 188, 191, 192, 193, 186, + 193, 191, 194, 196, 197, 195, 198, 198, 187, 194, + 195, 203, 190, 190, 199, 189, 197, 192, 200, 199, + 202, 204, 196, 200, 201, 208, 201, 209, 205, 204, + 203, 206, 202, 205, 207, 211, 206, 199, 210, 207, + + 208, 212, 217, 201, 212, 209, 210, 213, 213, 214, + 215, 215, 214, 216, 216, 218, 219, 220, 217, 219, + 211, 220, 221, 222, 223, 224, 224, 225, 222, 226, + 218, 221, 225, 227, 226, 229, 228, 230, 223, 231, + 231, 232, 233, 234, 236, 235, 233, 241, 237, 236, + 230, 237, 238, 227, 228, 239, 229, 235, 240, 232, + 242, 234, 243, 244, 238, 244, 244, 240, 241, 245, + 245, 247, 239, 242, 243, 239, 246, 248, 249, 246, + 250, 251, 251, 253, 253, 252, 254, 249, 247, 250, + 252, 247, 248, 255, 256, 257, 259, 258, 255, 260, + + 261, 254, 258, 261, 260, 261, 256, 262, 263, 264, + 267, 269, 265, 268, 266, 257, 259, 265, 264, 266, + 270, 262, 271, 272, 263, 271, 269, 263, 274, 263, + 275, 267, 276, 268, 270, 278, 277, 272, 352, 275, + 279, 271, 273, 274, 273, 273, 280, 281, 282, 283, + 278, 280, 284, 276, 273, 277, 273, 273, 273, 286, + 279, 273, 287, 352, 283, 289, 285, 284, 282, 288, + 281, 285, 290, 292, 288, 293, 287, 290, 294, 286, + 127, 289, 291, 291, 295, 291, 296, 298, 296, 299, + 300, 293, 297, 292, 294, 301, 297, 302, 295, 300, + + 304, 306, 302, 299, 301, 298, 303, 306, 305, 304, + 303, 307, 300, 305, 309, 307, 308, 308, 310, 309, + 311, 311, 312, 313, 314, 315, 316, 312, 317, 317, + 316, 310, 319, 314, 318, 320, 320, 315, 323, 318, + 322, 322, 324, 325, 313, 326, 327, 329, 330, 331, + 324, 332, 325, 319, 337, 333, 332, 334, 327, 323, + 338, 335, 334, 331, 333, 326, 336, 329, 330, 335, + 339, 336, 337, 340, 341, 342, 343, 340, 344, 347, + 342, 346, 338, 348, 349, 350, 363, 349, 348, 341, + 363, 339, 343, 348, 354, 347, 356, 344, 345, 345, + + 355, 346, 351, 351, 345, 350, 345, 353, 353, 354, + 357, 356, 355, 358, 345, 359, 360, 361, 362, 365, + 359, 364, 366, 68, 345, 360, 364, 370, 367, 357, + 368, 365, 371, 362, 372, 358, 361, 372, 368, 370, + 366, 367, 369, 369, 371, 373, 374, 375, 376, 374, + 384, 377, 376, 376, 378, 378, 379, 379, 381, 381, + 373, 62, 380, 375, 377, 383, 375, 380, 382, 382, + 383, 384, 385, 390, 386, 387, 389, 385, 386, 388, + 387, 389, 391, 388, 392, 393, 396, 391, 394, 392, + 403, 394, 397, 390, 395, 395, 394, 398, 399, 393, + + 394, 405, 398, 403, 396, 400, 397, 399, 400, 401, + 402, 404, 406, 401, 407, 402, 404, 405, 409, 407, + 408, 409, 410, 411, 406, 410, 408, 412, 411, 413, + 416, 414, 415, 416, 417, 401, 414, 415, 419, 417, + 420, 422, 418, 413, 421, 412, 418, 418, 426, 421, + 422, 419, 423, 420, 424, 423, 428, 429, 424, 424, + 425, 427, 425, 427, 430, 431, 434, 426, 432, 433, + 423, 435, 432, 436, 428, 429, 438, 437, 433, 439, + 439, 434, 437, 430, 443, 431, 440, 441, 436, 435, + 440, 442, 444, 445, 446, 438, 442, 447, 441, 449, + + 443, 446, 447, 448, 449, 451, 445, 450, 452, 453, + 448, 444, 450, 454, 455, 452, 458, 456, 453, 455, + 456, 457, 460, 451, 465, 457, 467, 454, 462, 459, + 459, 460, 463, 462, 464, 466, 463, 458, 459, 468, + 471, 474, 465, 466, 467, 477, 464, 478, 479, 483, + 484, 480, 479, 478, 477, 471, 480, 482, 474, 487, + 485, 489, 482, 485, 468, 469, 487, 483, 486, 486, + 469, 488, 488, 494, 469, 484, 489, 469, 490, 490, + 491, 492, 493, 491, 469, 495, 492, 469, 481, 481, + 481, 496, 481, 494, 498, 481, 497, 497, 499, 496, + + 481, 493, 504, 500, 495, 504, 481, 481, 500, 498, + 501, 501, 502, 503, 505, 506, 499, 502, 503, 507, + 505, 508, 511, 506, 509, 510, 513, 507, 514, 509, + 512, 512, 510, 514, 513, 515, 517, 518, 520, 508, + 519, 511, 522, 519, 525, 517, 518, 521, 521, 527, + 523, 526, 520, 523, 515, 528, 526, 522, 529, 530, + 531, 523, 532, 533, 534, 525, 532, 535, 536, 531, + 527, 537, 538, 539, 542, 528, 535, 537, 542, 530, + 529, 533, 536, 534, 540, 541, 543, 539, 544, 540, + 541, 545, 538, 546, 547, 547, 545, 548, 549, 550, + + 544, 549, 548, 551, 552, 543, 553, 554, 554, 552, + 555, 555, 556, 558, 546, 557, 551, 550, 559, 557, + 560, 561, 564, 566, 563, 565, 553, 556, 563, 571, + 567, 568, 558, 569, 560, 567, 570, 564, 566, 575, + 570, 561, 559, 562, 571, 568, 562, 569, 562, 574, + 565, 572, 562, 573, 562, 576, 572, 578, 573, 562, + 575, 577, 578, 574, 562, 580, 572, 577, 581, 576, + 579, 579, 582, 581, 586, 583, 579, 580, 579, 584, + 584, 587, 586, 585, 588, 594, 582, 583, 585, 589, + 589, 597, 595, 590, 592, 587, 579, 590, 593, 592, + + 598, 593, 596, 588, 594, 595, 599, 596, 600, 601, + 597, 602, 603, 604, 601, 599, 598, 607, 605, 608, + 609, 616, 604, 605, 610, 611, 603, 600, 612, 610, + 611, 602, 613, 612, 616, 609, 607, 608, 614, 614, + 615, 613, 618, 621, 622, 615, 618, 618, 619, 619, + 620, 623, 619, 620, 624, 625, 626, 621, 625, 630, + 627, 634, 628, 629, 622, 627, 623, 628, 636, 629, + 631, 632, 632, 633, 624, 630, 631, 626, 635, 634, + 637, 635, 633, 638, 639, 640, 636, 641, 642, 644, + 640, 643, 641, 645, 643, 648, 646, 639, 650, 637, + + 644, 646, 647, 638, 651, 645, 642, 647, 649, 649, + 648, 652, 653, 654, 656, 655, 653, 650, 651, 657, + 660, 661, 662, 652, 655, 663, 682, 664, 671, 682, + 663, 654, 664, 656, 660, 665, 661, 667, 666, 668, + 665, 669, 662, 666, 657, 670, 669, 671, 672, 673, + 676, 667, 675, 668, 674, 674, 676, 677, 678, 678, + 670, 679, 680, 672, 681, 683, 679, 684, 673, 680, + 675, 686, 688, 690, 685, 687, 684, 677, 681, 685, + 687, 689, 690, 683, 691, 689, 692, 693, 694, 695, + 686, 688, 696, 697, 693, 699, 698, 700, 701, 691, + + 694, 692, 698, 706, 703, 704, 705, 701, 695, 703, + 699, 697, 709, 696, 705, 707, 711, 700, 720, 704, + 707, 708, 57, 706, 712, 708, 708, 710, 710, 711, + 713, 709, 720, 712, 715, 713, 714, 714, 716, 715, + 717, 717, 718, 716, 719, 721, 728, 722, 723, 719, + 724, 718, 722, 723, 725, 724, 726, 728, 725, 727, + 727, 731, 730, 721, 732, 726, 730, 735, 733, 736, + 726, 738, 726, 739, 726, 734, 731, 733, 737, 734, + 734, 735, 732, 740, 742, 738, 737, 747, 736, 741, + 741, 739, 743, 743, 745, 746, 749, 745, 753, 742, + + 746, 748, 748, 750, 750, 751, 747, 755, 740, 754, + 751, 752, 752, 758, 754, 755, 749, 756, 753, 757, + 757, 759, 756, 760, 762, 767, 766, 759, 763, 762, + 760, 758, 764, 763, 765, 766, 768, 764, 770, 765, + 769, 769, 771, 772, 767, 775, 773, 768, 772, 774, + 776, 777, 777, 778, 779, 782, 780, 775, 770, 781, + 773, 786, 783, 789, 781, 771, 773, 783, 776, 774, + 786, 785, 787, 778, 780, 785, 785, 789, 782, 779, + 787, 788, 790, 788, 791, 792, 793, 790, 791, 794, + 795, 797, 796, 798, 799, 801, 792, 796, 799, 800, + + 807, 805, 802, 803, 804, 793, 806, 807, 795, 797, + 809, 806, 811, 798, 801, 794, 802, 800, 803, 804, + 805, 808, 810, 812, 813, 814, 808, 811, 809, 812, + 814, 810, 815, 816, 817, 817, 820, 815, 816, 819, + 819, 821, 822, 823, 824, 813, 821, 826, 824, 824, + 825, 825, 827, 828, 820, 829, 822, 830, 832, 831, + 837, 833, 823, 830, 831, 834, 826, 835, 836, 52, + 838, 827, 839, 839, 829, 840, 843, 832, 841, 828, + 833, 837, 836, 841, 834, 838, 835, 840, 842, 843, + 844, 845, 842, 855, 846, 848, 846, 849, 849, 844, + + 846, 850, 852, 851, 845, 853, 850, 851, 868, 857, + 853, 855, 51, 846, 857, 848, 858, 858, 859, 861, + 861, 867, 852, 859, 863, 863, 865, 866, 866, 865, + 869, 871, 870, 868, 872, 872, 867, 870, 873, 874, + 874, 875, 876, 877, 869, 878, 871, 877, 881, 879, + 885, 882, 884, 876, 879, 883, 883, 884, 873, 886, + 887, 888, 890, 875, 878, 882, 881, 890, 892, 887, + 885, 889, 891, 889, 898, 893, 894, 891, 896, 886, + 893, 888, 895, 895, 896, 899, 899, 900, 892, 901, + 894, 903, 907, 905, 902, 46, 903, 902, 898, 900, + + 902, 904, 905, 906, 908, 909, 904, 908, 906, 901, + 909, 911, 902, 910, 910, 912, 913, 907, 914, 915, + 916, 917, 920, 914, 915, 919, 917, 918, 918, 911, + 919, 921, 922, 923, 912, 925, 913, 924, 927, 926, + 920, 928, 929, 916, 926, 931, 41, 923, 925, 924, + 931, 921, 922, 932, 935, 933, 941, 934, 927, 938, + 938, 928, 933, 929, 939, 942, 934, 939, 932, 934, + 935, 940, 941, 943, 942, 944, 940, 945, 946, 947, + 947, 948, 949, 946, 944, 950, 945, 944, 951, 953, + 954, 956, 943, 952, 958, 949, 955, 955, 14, 958, + + 957, 948, 951, 950, 960, 952, 961, 956, 954, 957, + 959, 959, 963, 960, 953, 964, 960, 963, 965, 967, + 966, 969, 968, 965, 961, 959, 966, 968, 970, 974, + 973, 970, 975, 964, 969, 976, 977, 970, 973, 967, + 978, 977, 974, 979, 981, 982, 983, 984, 985, 982, + 975, 983, 984, 985, 976, 987, 978, 986, 988, 989, + 989, 979, 990, 991, 981, 992, 986, 993, 994, 995, + 991, 996, 997, 988, 995, 998, 990, 992, 987, 993, + 1134, 998, 1134, 996, 999, 999, 1000, 994, 1003, 1000, + 997, 1001, 1001, 1004, 1004, 1005, 1006, 1003, 1008, 1007, + + 1009, 1006, 1011, 1012, 1010, 1013, 1016, 1005, 1007, 1010, + 1008, 1011, 1014, 1014, 1015, 1009, 1017, 1018, 1020, 1015, + 1013, 1019, 1019, 1012, 1011, 1021, 1021, 1016, 1022, 1022, + 1023, 1024, 1028, 1030, 1023, 1017, 1024, 1018, 1020, 1025, + 1027, 1029, 1025, 1031, 1031, 1027, 1029, 1032, 1032, 1033, + 1028, 1034, 1035, 1036, 1033, 1037, 1039, 1038, 1030, 1040, + 1040, 1041, 1043, 1034, 1034, 1034, 1042, 1042, 1047, 1045, + 1034, 1038, 1035, 1036, 1048, 1037, 1049, 1039, 1045, 1046, + 1046, 1048, 1043, 1047, 1050, 1049, 1052, 1041, 1051, 1051, + 1053, 1055, 1056, 1057, 1058, 1059, 1055, 1056, 1060, 1060, + + 1059, 1058, 1061, 1063, 1065, 1062, 1053, 1061, 1064, 1068, + 1050, 1067, 1052, 1057, 1062, 1066, 1065, 1070, 1066, 1069, + 1069, 1071, 1072, 1063, 1073, 1074, 1137, 1064, 1078, 1067, + 1073, 1076, 1070, 1137, 1074, 1068, 1079, 1072, 1075, 1075, + 1071, 1080, 1076, 1077, 1077, 1084, 1080, 1076, 1085, 1078, + 1079, 1081, 1081, 1082, 1083, 1087, 1086, 1082, 1082, 1083, + 1085, 1086, 1088, 1089, 1090, 1091, 1088, 1087, 1092, 1093, + 1091, 1084, 1094, 1096, 1093, 1089, 1096, 1097, 1097, 1098, + 1098, 1099, 1099, 1100, 1094, 1101, 1104, 1102, 1103, 1090, + 1092, 1101, 1102, 1106, 1103, 1104, 1108, 1110, 1106, 1111, + + 1111, 1112, 1113, 1100, 1114, 1115, 1116, 1117, 1108, 1110, + 1116, 1113, 1117, 1118, 1119, 1121, 1121, 1122, 1118, 1129, + 1123, 1112, 1114, 1124, 1115, 1126, 1126, 1121, 1119, 1123, + 1130, 1131, 1124, 1132, 1129, 1122, 1131, 1133, 1133, 1135, + 1135, 1138, 1139, 1139, 1130, 1140, 1141, 1142, 1143, 1145, + 1132, 1144, 1146, 1147, 1140, 1154, 1150, 1149, 1150, 1142, + 1143, 1138, 1149, 1144, 1145, 1151, 1152, 1141, 1156, 1154, + 1155, 1155, 1146, 1147, 1157, 1152, 1158, 1159, 1158, 1157, + 1160, 1161, 1159, 1151, 1162, 1160, 1163, 1164, 1165, 1167, + 1171, 1163, 1164, 1168, 1156, 1172, 1165, 1169, 1169, 1161, + + 1170, 1170, 13, 1186, 1162, 1171, 1173, 1168, 1167, 1174, + 1175, 1173, 1175, 1176, 1174, 1172, 1178, 1177, 1178, 1179, + 1180, 1185, 1182, 1186, 1187, 1176, 1177, 1182, 1179, 1177, + 1183, 1189, 1180, 1191, 1185, 1183, 1192, 1189, 1193, 1191, + 1187, 1194, 1195, 1195, 1196, 1197, 1197, 1198, 1199, 1200, + 1194, 1192, 1199, 1196, 1200, 1201, 1202, 1202, 1204, 1203, + 1207, 1207, 1208, 1193, 1209, 1209, 1198, 1203, 1201, 1210, + 1210, 1208, 1211, 1212, 1213, 1214, 1214, 1216, 1204, 1213, + 1217, 1218, 1219, 1220, 1211, 1217, 1225, 1221, 1220, 1227, + 1222, 1212, 1223, 1223, 1224, 1226, 1230, 1219, 1224, 1228, + + 1226, 1225, 1216, 1231, 1218, 1221, 1222, 1232, 1233, 1234, + 1235, 1237, 1237, 1238, 1240, 1227, 1238, 1239, 1228, 1230, + 1241, 1234, 1242, 1242, 1243, 1243, 1232, 1231, 1240, 1233, + 1239, 1235, 1245, 1241, 1244, 1244, 1246, 1246, 1247, 1247, + 1248, 1248, 1249, 1250, 1250, 1245, 1251, 1251, 1252, 1254, + 1255, 1255, 1256, 1259, 1254, 1257, 1257, 1258, 1263, 1259, + 1260, 1249, 1264, 1260, 1261, 1261, 1267, 1252, 1262, 1262, + 1268, 1256, 1269, 1263, 1270, 1258, 1265, 1265, 1270, 1272, + 1261, 1264, 1271, 1271, 1273, 1273, 1267, 1269, 1274, 1275, + 1275, 1276, 1277, 1268, 1278, 1279, 1280, 1281, 1272, 1278, + + 1276, 1282, 1283, 1284, 1277, 1286, 1282, 1285, 1287, 1280, + 1290, 1288, 1284, 1287, 1274, 1288, 1285, 1283, 1281, 1286, + 1279, 1294, 1292, 1293, 1293, 1297, 1294, 1295, 1295, 1298, + 1290, 1292, 1300, 1304, 1302, 1308, 1295, 1302, 1298, 1312, + 1297, 1303, 1305, 1305, 1300, 1310, 1303, 1307, 1307, 1308, + 1309, 1309, 1311, 1304, 1313, 1313, 1315, 1310, 1312, 1316, + 1315, 1319, 1316, 1317, 1317, 1318, 1311, 1321, 1320, 1322, + 1318, 1321, 1323, 1324, 1325, 1327, 0, 1323, 1324, 1328, + 1325, 1319, 1320, 1329, 1328, 1330, 1334, 1334, 1329, 1322, + 1331, 1327, 1331, 1330, 1338, 1338, 1341, 1342, 1342, 1344, + + 1344, 1341, 1346, 1347, 1347, 1348, 1349, 1346, 1350, 1355, + 1352, 1353, 1353, 1350, 1356, 1357, 1358, 0, 1355, 1356, + 1362, 1348, 1352, 1360, 1360, 1362, 1364, 1363, 1349, 1363, + 1365, 1358, 1369, 1357, 1370, 1365, 1366, 1366, 1367, 1367, + 1364, 1368, 1368, 1371, 1369, 1372, 1373, 1375, 1374, 1376, + 1376, 1377, 1370, 1374, 1378, 1371, 1379, 1372, 1373, 1380, + 1377, 1381, 1384, 1382, 1383, 1385, 1386, 1375, 1387, 1387, + 1385, 1386, 1380, 1388, 1388, 1391, 1379, 1382, 1392, 1393, + 1378, 1395, 1383, 1394, 1384, 1381, 1396, 1397, 1398, 1398, + 1395, 1400, 1400, 1401, 1403, 1391, 1392, 1402, 1404, 1405, + + 1407, 1393, 1401, 1394, 1402, 1397, 1396, 1406, 1409, 1403, + 1408, 1408, 1410, 1409, 1411, 1412, 1404, 1405, 1413, 1407, + 1415, 1418, 1419, 1406, 1422, 1419, 1420, 1420, 1421, 1411, + 1410, 1423, 1425, 1426, 1412, 1423, 1428, 1426, 1413, 1415, + 1431, 1418, 1422, 1421, 1427, 1427, 1438, 1425, 0, 1428, + 1430, 1430, 1432, 1432, 1433, 1433, 1437, 1437, 1439, 1431, + 1440, 1441, 1442, 1443, 1445, 1440, 1441, 1439, 1438, 1446, + 1447, 1443, 1448, 1451, 1446, 1447, 1449, 1449, 1451, 1445, + 1452, 1442, 1450, 1450, 1460, 1452, 1461, 1448, 1453, 1453, + 1454, 1454, 1457, 1460, 1458, 1459, 1462, 1457, 1458, 1464, + + 1459, 1461, 1463, 1466, 1462, 1467, 1466, 1463, 1468, 1469, + 1470, 1464, 1471, 1471, 1474, 1472, 1475, 0, 1469, 1470, + 1476, 1468, 1478, 1467, 1472, 1477, 1477, 1479, 1479, 1480, + 1481, 1478, 1483, 1474, 1484, 1481, 1475, 1480, 1485, 1476, + 1486, 1483, 1485, 1487, 1489, 1489, 1494, 1484, 1491, 1491, + 1495, 1495, 1496, 1500, 1486, 1496, 1497, 1497, 1487, 1498, + 1498, 1499, 1499, 1501, 1502, 1511, 1494, 1503, 1503, 1502, + 1504, 1500, 1507, 1513, 1504, 1508, 1512, 1501, 1507, 1514, + 1508, 1512, 1511, 1511, 1515, 1516, 1516, 1517, 1518, 1519, + 1524, 1513, 1520, 1520, 1521, 1521, 1518, 1522, 1515, 1514, + + 1523, 1525, 1526, 1527, 1528, 1523, 1517, 1532, 1519, 1530, + 1524, 1526, 1530, 1522, 1533, 1533, 1534, 1535, 1536, 1538, + 1534, 1537, 1537, 1527, 1528, 1532, 1535, 1525, 1539, 1541, + 1542, 1543, 1538, 1536, 1547, 1548, 1548, 1539, 1541, 1547, + 1549, 1551, 1542, 1552, 1553, 1554, 1551, 1556, 1555, 1549, + 1557, 1558, 1552, 1555, 1561, 1557, 1543, 1559, 1559, 1562, + 1563, 1563, 1565, 1564, 1553, 1556, 1554, 1564, 1566, 1567, + 1568, 1565, 1569, 1561, 1562, 1570, 1558, 1569, 1568, 1571, + 1571, 1572, 1573, 1573, 1566, 1574, 1576, 1576, 1567, 1577, + 1574, 1578, 1580, 1580, 1581, 1582, 1583, 1583, 1584, 1584, + + 1572, 1570, 1585, 1586, 1587, 1588, 1588, 1589, 1581, 1577, + 1590, 1591, 1592, 1593, 1578, 1586, 1591, 1582, 1593, 1589, + 1594, 1585, 1595, 1595, 1587, 1597, 1597, 1598, 1600, 1601, + 1590, 1592, 0, 1600, 1602, 1603, 1603, 1594, 1594, 1602, + 1604, 1604, 1606, 1601, 1605, 1605, 1598, 1606, 1608, 1608, + 1610, 1610, 1612, 1612, 1613, 1614, 1615, 1615, 1616, 1619, + 1620, 1620, 1624, 1616, 1614, 1621, 1623, 1619, 1613, 1625, + 1621, 1623, 1626, 1627, 1624, 1628, 1629, 1632, 1633, 1633, + 1635, 1629, 1634, 1634, 1635, 1639, 1639, 1625, 1626, 1641, + 1627, 1627, 1644, 1641, 1643, 1643, 1628, 1632, 1646, 1646, + + 1647, 1649, 1650, 1650, 1651, 1651, 1644, 1652, 1653, 1654, + 1657, 1655, 1656, 1658, 1658, 1647, 1655, 1656, 0, 1649, + 1661, 1661, 1667, 1653, 1663, 1663, 1665, 1665, 1671, 1657, + 1654, 1672, 1652, 1671, 1667, 1668, 1668, 1673, 1674, 1676, + 1675, 1682, 1673, 1681, 1684, 1672, 1683, 1681, 1685, 1686, + 1687, 1690, 1688, 1689, 1689, 1676, 1693, 1674, 1675, 1683, + 1690, 1682, 1694, 1684, 1691, 1686, 1685, 1688, 1692, 1691, + 1696, 1695, 1698, 1692, 1699, 1687, 1695, 1694, 1700, 1703, + 1701, 1693, 1702, 1700, 1696, 1701, 1704, 1698, 1705, 1706, + 1707, 1708, 1703, 1699, 1709, 1710, 1702, 1712, 1713, 1713, + + 1710, 1711, 1705, 1707, 1708, 1704, 1711, 1714, 1706, 1715, + 1716, 1717, 1714, 1709, 1715, 1716, 1712, 1718, 1719, 1719, + 1720, 1721, 1718, 1722, 1723, 1724, 1725, 1720, 1727, 1723, + 1717, 1728, 1729, 1727, 1730, 1731, 1731, 1733, 1732, 1725, + 1721, 0, 1722, 1732, 1724, 1734, 1734, 1730, 1735, 1735, + 1728, 1729, 1736, 1737, 1738, 1740, 1733, 1736, 1739, 1739, + 1737, 1741, 1740, 1742, 1743, 1744, 1746, 1747, 1741, 1743, + 1748, 1746, 1747, 1738, 1749, 1750, 1750, 1751, 1752, 1753, + 1753, 1755, 1742, 1764, 1744, 1754, 1754, 1765, 1755, 1748, + 1756, 1756, 1758, 1749, 1757, 1757, 1751, 1752, 1760, 1758, + + 1763, 0, 1764, 1760, 0, 1763, 1765, 1766, 1766, 1767, + 1767, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775, + 1775, 1775, 1775, 1775, 1775, 1775, 1777, 1777, 0, 1777, + 1777, 1777, 1777, 1778, 1778, 0, 0, 0, 1778, 1778, + 1779, 1779, 0, 0, 1779, 0, 1779, 1780, 0, 0, + 0, 0, 0, 1780, 1781, 1781, 0, 0, 0, 1781, + 1781, 1782, 0, 0, 0, 0, 0, 1782, 1783, 1783, + 0, 1783, 1783, 1783, 1783, 1784, 1784, 0, 1784, 1784, + + 1784, 1784, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770 } ; static yy_state_type yy_last_accepting_state; @@ -1932,6 +1943,10 @@ static void config_start_include_glob(const char* filename) #endif ; memset(&g, 0, sizeof(g)); + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } r = glob(filename, flags, NULL, &g); if(r) { /* some error */ @@ -1977,7 +1992,7 @@ static void config_end_include(void) #endif #define YY_NO_INPUT 1 -#line 177 "./util/configlexer.lex" +#line 181 "./util/configlexer.lex" #ifndef YY_NO_UNPUT #define YY_NO_UNPUT 1 #endif @@ -1985,7 +2000,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1987 "<stdout>" +#line 2002 "<stdout>" #define INITIAL 0 #define quotedstring 1 @@ -2170,9 +2185,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 197 "./util/configlexer.lex" +#line 201 "./util/configlexer.lex" -#line 2174 "<stdout>" +#line 2189 "<stdout>" if ( !(yy_init) ) { @@ -2231,13 +2246,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1752 ) + if ( yy_current_state >= 1771 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3475 ); + while ( yy_base[yy_current_state] != 3503 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2263,819 +2278,824 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 198 "./util/configlexer.lex" +#line 202 "./util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 200 "./util/configlexer.lex" +#line 204 "./util/configlexer.lex" { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 203 "./util/configlexer.lex" +#line 207 "./util/configlexer.lex" { YDVAR(0, VAR_SERVER) } YY_BREAK case 4: YY_RULE_SETUP -#line 204 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_THREADS) } +#line 208 "./util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION) } YY_BREAK case 5: YY_RULE_SETUP -#line 205 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERBOSITY) } +#line 209 "./util/configlexer.lex" +{ YDVAR(1, VAR_NUM_THREADS) } YY_BREAK case 6: YY_RULE_SETUP -#line 206 "./util/configlexer.lex" -{ YDVAR(1, VAR_PORT) } +#line 210 "./util/configlexer.lex" +{ YDVAR(1, VAR_VERBOSITY) } YY_BREAK case 7: YY_RULE_SETUP -#line 207 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_RANGE) } +#line 211 "./util/configlexer.lex" +{ YDVAR(1, VAR_PORT) } YY_BREAK case 8: YY_RULE_SETUP -#line 208 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } +#line 212 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_RANGE) } YY_BREAK case 9: YY_RULE_SETUP -#line 209 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } +#line 213 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } YY_BREAK case 10: YY_RULE_SETUP -#line 210 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } +#line 214 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } YY_BREAK case 11: YY_RULE_SETUP -#line 211 "./util/configlexer.lex" -{ YDVAR(1, VAR_INCOMING_NUM_TCP) } +#line 215 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } YY_BREAK case 12: YY_RULE_SETUP -#line 212 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP4) } +#line 216 "./util/configlexer.lex" +{ YDVAR(1, VAR_INCOMING_NUM_TCP) } YY_BREAK case 13: YY_RULE_SETUP -#line 213 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP6) } +#line 217 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP4) } YY_BREAK case 14: YY_RULE_SETUP -#line 214 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_UDP) } +#line 218 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP6) } YY_BREAK case 15: YY_RULE_SETUP -#line 215 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_TCP) } +#line 219 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_UDP) } YY_BREAK case 16: YY_RULE_SETUP -#line 216 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_UPSTREAM) } +#line 220 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_TCP) } YY_BREAK case 17: YY_RULE_SETUP -#line 217 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } +#line 221 "./util/configlexer.lex" +{ YDVAR(1, VAR_TCP_UPSTREAM) } YY_BREAK case 18: YY_RULE_SETUP -#line 218 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } +#line 222 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 19: YY_RULE_SETUP -#line 219 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } +#line 223 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 20: YY_RULE_SETUP -#line 220 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } +#line 224 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 21: YY_RULE_SETUP -#line 221 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +#line 225 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 22: YY_RULE_SETUP -#line 222 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +#line 226 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 23: YY_RULE_SETUP -#line 223 "./util/configlexer.lex" +#line 227 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 24: YY_RULE_SETUP -#line 224 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +#line 228 "./util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 25: YY_RULE_SETUP -#line 225 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +#line 229 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 26: YY_RULE_SETUP -#line 226 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +#line 230 "./util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 27: YY_RULE_SETUP -#line 227 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +#line 231 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 28: YY_RULE_SETUP -#line 228 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +#line 232 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 29: YY_RULE_SETUP -#line 229 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +#line 233 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 30: YY_RULE_SETUP -#line 230 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +#line 234 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 31: YY_RULE_SETUP -#line 231 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +#line 235 "./util/configlexer.lex" +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 32: YY_RULE_SETUP -#line 232 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +#line 236 "./util/configlexer.lex" +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 33: YY_RULE_SETUP -#line 233 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +#line 237 "./util/configlexer.lex" +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 34: YY_RULE_SETUP -#line 234 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +#line 238 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 35: YY_RULE_SETUP -#line 235 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +#line 239 "./util/configlexer.lex" +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 36: YY_RULE_SETUP -#line 236 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +#line 240 "./util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 37: YY_RULE_SETUP -#line 237 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +#line 241 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 38: YY_RULE_SETUP -#line 238 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +#line 242 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 39: YY_RULE_SETUP -#line 239 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +#line 243 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 40: YY_RULE_SETUP -#line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +#line 244 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 41: YY_RULE_SETUP -#line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +#line 245 "./util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 42: YY_RULE_SETUP -#line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +#line 246 "./util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 43: YY_RULE_SETUP -#line 243 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +#line 247 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 44: YY_RULE_SETUP -#line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +#line 248 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 45: YY_RULE_SETUP -#line 245 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +#line 249 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 46: YY_RULE_SETUP -#line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +#line 250 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 47: YY_RULE_SETUP -#line 247 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +#line 251 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 48: YY_RULE_SETUP -#line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +#line 252 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 49: YY_RULE_SETUP -#line 249 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +#line 253 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 50: YY_RULE_SETUP -#line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +#line 254 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 51: YY_RULE_SETUP -#line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +#line 255 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 52: YY_RULE_SETUP -#line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +#line 256 "./util/configlexer.lex" +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 53: YY_RULE_SETUP -#line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +#line 257 "./util/configlexer.lex" +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 54: YY_RULE_SETUP -#line 254 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +#line 258 "./util/configlexer.lex" +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 55: YY_RULE_SETUP -#line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +#line 259 "./util/configlexer.lex" +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 56: YY_RULE_SETUP -#line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +#line 260 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 57: YY_RULE_SETUP -#line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +#line 261 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 58: YY_RULE_SETUP -#line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +#line 262 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 59: YY_RULE_SETUP -#line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +#line 263 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 60: YY_RULE_SETUP -#line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +#line 264 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 61: YY_RULE_SETUP -#line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +#line 265 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 62: YY_RULE_SETUP -#line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +#line 266 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 63: YY_RULE_SETUP -#line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +#line 267 "./util/configlexer.lex" +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 64: YY_RULE_SETUP -#line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +#line 268 "./util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 65: YY_RULE_SETUP -#line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +#line 269 "./util/configlexer.lex" +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 66: YY_RULE_SETUP -#line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +#line 270 "./util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 67: YY_RULE_SETUP -#line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +#line 271 "./util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 68: YY_RULE_SETUP -#line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +#line 272 "./util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 69: YY_RULE_SETUP -#line 269 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +#line 273 "./util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 70: YY_RULE_SETUP -#line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +#line 274 "./util/configlexer.lex" +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 71: YY_RULE_SETUP -#line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +#line 275 "./util/configlexer.lex" +{ YDVAR(1, VAR_NAME) } YY_BREAK case 72: YY_RULE_SETUP -#line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +#line 276 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 73: YY_RULE_SETUP -#line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +#line 277 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 74: YY_RULE_SETUP -#line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +#line 278 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 75: YY_RULE_SETUP -#line 275 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +#line 279 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 76: YY_RULE_SETUP -#line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +#line 280 "./util/configlexer.lex" +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 77: YY_RULE_SETUP -#line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +#line 281 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 78: YY_RULE_SETUP -#line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +#line 282 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 79: YY_RULE_SETUP -#line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +#line 283 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 80: YY_RULE_SETUP -#line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +#line 284 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 81: YY_RULE_SETUP -#line 281 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +#line 285 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 82: YY_RULE_SETUP -#line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +#line 286 "./util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 83: YY_RULE_SETUP -#line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +#line 287 "./util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 84: YY_RULE_SETUP -#line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +#line 288 "./util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 85: YY_RULE_SETUP -#line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +#line 289 "./util/configlexer.lex" +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 86: YY_RULE_SETUP -#line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +#line 290 "./util/configlexer.lex" +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 87: YY_RULE_SETUP -#line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +#line 291 "./util/configlexer.lex" +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 88: YY_RULE_SETUP -#line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +#line 292 "./util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 89: YY_RULE_SETUP -#line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +#line 293 "./util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 90: YY_RULE_SETUP -#line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +#line 294 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 91: YY_RULE_SETUP -#line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +#line 295 "./util/configlexer.lex" +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 92: YY_RULE_SETUP -#line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +#line 296 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 93: YY_RULE_SETUP -#line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +#line 297 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 94: YY_RULE_SETUP -#line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +#line 298 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 95: YY_RULE_SETUP -#line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +#line 299 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 96: YY_RULE_SETUP -#line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +#line 300 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 97: YY_RULE_SETUP -#line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +#line 301 "./util/configlexer.lex" +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 98: YY_RULE_SETUP -#line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +#line 302 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 99: YY_RULE_SETUP -#line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +#line 303 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 100: YY_RULE_SETUP -#line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +#line 304 "./util/configlexer.lex" +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 101: YY_RULE_SETUP -#line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +#line 305 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 102: YY_RULE_SETUP -#line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +#line 306 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 103: YY_RULE_SETUP -#line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +#line 307 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 104: YY_RULE_SETUP -#line 304 "./util/configlexer.lex" +#line 308 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } + YY_BREAK +case 105: +YY_RULE_SETUP +#line 309 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 306 "./util/configlexer.lex" +#line 311 "./util/configlexer.lex" { YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 307 "./util/configlexer.lex" +#line 312 "./util/configlexer.lex" { YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 308 "./util/configlexer.lex" +#line 313 "./util/configlexer.lex" { YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 309 "./util/configlexer.lex" +#line 314 "./util/configlexer.lex" { YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 310 "./util/configlexer.lex" +#line 315 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 311 "./util/configlexer.lex" +#line 316 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 312 "./util/configlexer.lex" +#line 317 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 313 "./util/configlexer.lex" +#line 318 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 314 "./util/configlexer.lex" +#line 319 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 315 "./util/configlexer.lex" +#line 320 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 316 "./util/configlexer.lex" +#line 321 "./util/configlexer.lex" { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 317 "./util/configlexer.lex" +#line 322 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 318 "./util/configlexer.lex" +#line 323 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 319 "./util/configlexer.lex" +#line 324 "./util/configlexer.lex" { YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 320 "./util/configlexer.lex" +#line 325 "./util/configlexer.lex" { YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 321 "./util/configlexer.lex" +#line 326 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 322 "./util/configlexer.lex" +#line 327 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 323 "./util/configlexer.lex" +#line 328 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 324 "./util/configlexer.lex" +#line 329 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 325 "./util/configlexer.lex" +#line 330 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 326 "./util/configlexer.lex" +#line 331 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 327 "./util/configlexer.lex" +#line 332 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 328 "./util/configlexer.lex" +#line 333 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 329 "./util/configlexer.lex" +#line 334 "./util/configlexer.lex" { YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 330 "./util/configlexer.lex" +#line 335 "./util/configlexer.lex" { YDVAR(0, VAR_PYTHON) } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 331 "./util/configlexer.lex" +#line 336 "./util/configlexer.lex" { YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 332 "./util/configlexer.lex" +#line 337 "./util/configlexer.lex" { YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 333 "./util/configlexer.lex" +#line 338 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 334 "./util/configlexer.lex" +#line 339 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 335 "./util/configlexer.lex" +#line 340 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 336 "./util/configlexer.lex" +#line 341 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 337 "./util/configlexer.lex" +#line 342 "./util/configlexer.lex" { YDVAR(0, VAR_DNSTAP) } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 338 "./util/configlexer.lex" +#line 343 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 339 "./util/configlexer.lex" +#line 344 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 340 "./util/configlexer.lex" +#line 345 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 341 "./util/configlexer.lex" +#line 346 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 342 "./util/configlexer.lex" +#line 347 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 343 "./util/configlexer.lex" +#line 348 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 344 "./util/configlexer.lex" +#line 349 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 346 "./util/configlexer.lex" +#line 351 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 348 "./util/configlexer.lex" +#line 353 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 350 "./util/configlexer.lex" +#line 355 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 352 "./util/configlexer.lex" +#line 357 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 354 "./util/configlexer.lex" +#line 359 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 356 "./util/configlexer.lex" +#line 361 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT) } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 357 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 358 "./util/configlexer.lex" +#line 363 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 364 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 360 "./util/configlexer.lex" +#line 365 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 366 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK -case 155: -/* rule 155 can match eol */ +case 156: +/* rule 156 can match eol */ YY_RULE_SETUP -#line 362 "./util/configlexer.lex" +#line 367 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 156: +case 157: YY_RULE_SETUP -#line 365 "./util/configlexer.lex" +#line 370 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 366 "./util/configlexer.lex" +#line 371 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 371 "./util/configlexer.lex" +#line 376 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 158: -/* rule 158 can match eol */ +case 159: +/* rule 159 can match eol */ YY_RULE_SETUP -#line 372 "./util/configlexer.lex" +#line 377 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 374 "./util/configlexer.lex" +#line 379 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3088,34 +3108,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 160: +case 161: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" +#line 391 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 387 "./util/configlexer.lex" +#line 392 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 392 "./util/configlexer.lex" +#line 397 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 162: -/* rule 162 can match eol */ +case 163: +/* rule 163 can match eol */ YY_RULE_SETUP -#line 393 "./util/configlexer.lex" +#line 398 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 395 "./util/configlexer.lex" +#line 400 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3128,38 +3148,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 164: +case 165: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" +#line 412 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 409 "./util/configlexer.lex" +#line 414 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 413 "./util/configlexer.lex" +#line 418 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 166: -/* rule 166 can match eol */ +case 167: +/* rule 167 can match eol */ YY_RULE_SETUP -#line 414 "./util/configlexer.lex" +#line 419 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 415 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 168: +case 169: YY_RULE_SETUP -#line 416 "./util/configlexer.lex" +#line 421 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3167,27 +3187,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 421 "./util/configlexer.lex" +#line 426 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 425 "./util/configlexer.lex" +#line 430 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 170: -/* rule 170 can match eol */ +case 171: +/* rule 171 can match eol */ YY_RULE_SETUP -#line 426 "./util/configlexer.lex" +#line 431 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 428 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3197,7 +3217,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 434 "./util/configlexer.lex" +#line 439 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3209,33 +3229,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 172: +case 173: YY_RULE_SETUP -#line 445 "./util/configlexer.lex" +#line 450 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 173: +case 174: YY_RULE_SETUP -#line 449 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 174: +case 175: YY_RULE_SETUP -#line 453 "./util/configlexer.lex" +#line 458 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 175: +case 176: YY_RULE_SETUP -#line 457 "./util/configlexer.lex" +#line 462 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3237 "<stdout>" +#line 3257 "<stdout>" case YY_END_OF_BUFFER: { @@ -3525,7 +3545,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1752 ) + if ( yy_current_state >= 1771 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3553,11 +3573,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1752 ) + if ( yy_current_state >= 1771 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1751); + yy_is_jam = (yy_current_state == 1770); return yy_is_jam ? 0 : yy_current_state; } @@ -4190,7 +4210,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 457 "./util/configlexer.lex" +#line 462 "./util/configlexer.lex" diff --git a/external/unbound/util/configlexer.lex b/external/unbound/util/configlexer.lex index a776c766f..6637943e4 100644 --- a/external/unbound/util/configlexer.lex +++ b/external/unbound/util/configlexer.lex @@ -126,6 +126,10 @@ static void config_start_include_glob(const char* filename) #endif ; memset(&g, 0, sizeof(g)); + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } r = glob(filename, flags, NULL, &g); if(r) { /* some error */ @@ -201,6 +205,7 @@ SQANY [^\'\n\r\\]|\\. /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } server{COLON} { YDVAR(0, VAR_SERVER) } +qname-minimisation{COLON} { YDVAR(1, VAR_QNAME_MINIMISATION) } num-threads{COLON} { YDVAR(1, VAR_NUM_THREADS) } verbosity{COLON} { YDVAR(1, VAR_VERBOSITY) } port{COLON} { YDVAR(1, VAR_PORT) } diff --git a/external/unbound/util/configparser.c b/external/unbound/util/configparser.c index a571f5c7f..50346f6ee 100644 --- a/external/unbound/util/configparser.c +++ b/external/unbound/util/configparser.c @@ -285,7 +285,8 @@ extern int yydebug; VAR_RATELIMIT_FACTOR = 413, VAR_CAPS_WHITELIST = 414, VAR_CACHE_MAX_NEGATIVE_TTL = 415, - VAR_PERMIT_SMALL_HOLDDOWN = 416 + VAR_PERMIT_SMALL_HOLDDOWN = 416, + VAR_QNAME_MINIMISATION = 417 }; #endif /* Tokens. */ @@ -448,6 +449,7 @@ extern int yydebug; #define VAR_CAPS_WHITELIST 414 #define VAR_CACHE_MAX_NEGATIVE_TTL 415 #define VAR_PERMIT_SMALL_HOLDDOWN 416 +#define VAR_QNAME_MINIMISATION 417 @@ -461,7 +463,7 @@ typedef union YYSTYPE /* Line 387 of yacc.c */ -#line 465 "util/configparser.c" +#line 467 "util/configparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -489,7 +491,7 @@ int yyparse (); /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ -#line 493 "util/configparser.c" +#line 495 "util/configparser.c" #ifdef short # undef short @@ -709,20 +711,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 303 +#define YYLAST 305 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 162 +#define YYNTOKENS 163 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 167 +#define YYNNTS 168 /* YYNRULES -- Number of rules. */ -#define YYNRULES 319 +#define YYNRULES 321 /* YYNRULES -- Number of states. */ -#define YYNSTATES 470 +#define YYNSTATES 473 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 416 +#define YYMAXUTOK 417 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -771,7 +773,7 @@ static const yytype_uint8 yytranslate[] = 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161 + 155, 156, 157, 158, 159, 160, 161, 162 }; #if YYDEBUG @@ -792,147 +794,149 @@ static const yytype_uint16 yyprhs[] = 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263, - 265, 268, 269, 271, 273, 275, 277, 279, 281, 284, - 285, 287, 289, 291, 293, 296, 299, 302, 305, 308, - 311, 314, 317, 320, 323, 326, 329, 332, 335, 338, - 341, 344, 347, 350, 353, 356, 359, 362, 365, 368, - 371, 374, 377, 380, 383, 386, 389, 392, 395, 398, - 401, 404, 407, 410, 413, 416, 419, 422, 425, 428, - 431, 434, 437, 440, 443, 446, 449, 452, 455, 458, - 461, 464, 467, 470, 473, 476, 479, 482, 485, 488, - 491, 494, 497, 500, 503, 506, 509, 512, 515, 518, - 521, 524, 527, 530, 533, 536, 540, 543, 546, 549, - 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, - 582, 585, 588, 591, 594, 597, 600, 604, 607, 610, - 613, 616, 619, 622, 625, 628, 631, 634, 638, 642, - 645, 648, 651, 654, 657, 660, 663, 666, 669, 672, - 674, 677, 678, 680, 682, 684, 686, 688, 690, 692, - 694, 697, 700, 703, 706, 709, 712, 715, 718, 720, - 723, 724, 726, 728, 730, 732, 734, 736, 738, 740, - 742, 744, 746, 748, 751, 754, 757, 760, 763, 766, - 769, 772, 775, 778, 781, 784, 786, 789, 790, 792 + 265, 267, 270, 271, 273, 275, 277, 279, 281, 283, + 286, 287, 289, 291, 293, 295, 298, 301, 304, 307, + 310, 313, 316, 319, 322, 325, 328, 331, 334, 337, + 340, 343, 346, 349, 352, 355, 358, 361, 364, 367, + 370, 373, 376, 379, 382, 385, 388, 391, 394, 397, + 400, 403, 406, 409, 412, 415, 418, 421, 424, 427, + 430, 433, 436, 439, 442, 445, 448, 451, 454, 457, + 460, 463, 466, 469, 472, 475, 478, 481, 484, 487, + 490, 493, 496, 499, 502, 505, 508, 511, 514, 517, + 520, 523, 526, 529, 532, 535, 538, 542, 545, 548, + 551, 554, 557, 560, 563, 566, 569, 572, 575, 578, + 581, 584, 587, 590, 593, 596, 599, 602, 606, 609, + 612, 615, 618, 621, 624, 627, 630, 633, 636, 640, + 644, 647, 650, 653, 656, 659, 662, 665, 668, 671, + 674, 677, 679, 682, 683, 685, 687, 689, 691, 693, + 695, 697, 699, 702, 705, 708, 711, 714, 717, 720, + 723, 725, 728, 729, 731, 733, 735, 737, 739, 741, + 743, 745, 747, 749, 751, 753, 756, 759, 762, 765, + 768, 771, 774, 777, 780, 783, 786, 789, 791, 794, + 795, 797 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 163, 0, -1, -1, 163, 164, -1, 165, 166, -1, - 168, 169, -1, 171, 172, -1, 325, 326, -1, 299, - 300, -1, 310, 311, -1, 11, -1, 166, 167, -1, - -1, 174, -1, 175, -1, 179, -1, 182, -1, 188, - -1, 189, -1, 190, -1, 191, -1, 180, -1, 201, - -1, 202, -1, 203, -1, 204, -1, 205, -1, 224, - -1, 225, -1, 226, -1, 230, -1, 231, -1, 185, - -1, 232, -1, 233, -1, 236, -1, 234, -1, 235, - -1, 238, -1, 239, -1, 240, -1, 253, -1, 214, - -1, 215, -1, 216, -1, 217, -1, 241, -1, 256, - -1, 210, -1, 212, -1, 257, -1, 263, -1, 264, - -1, 265, -1, 186, -1, 223, -1, 273, -1, 274, - -1, 211, -1, 268, -1, 198, -1, 181, -1, 206, - -1, 254, -1, 260, -1, 242, -1, 255, -1, 276, - -1, 277, -1, 187, -1, 176, -1, 197, -1, 246, - -1, 177, -1, 183, -1, 184, -1, 207, -1, 208, - -1, 275, -1, 244, -1, 248, -1, 249, -1, 178, - -1, 278, -1, 227, -1, 252, -1, 199, -1, 213, - -1, 258, -1, 259, -1, 262, -1, 267, -1, 209, - -1, 269, -1, 270, -1, 271, -1, 218, -1, 222, - -1, 250, -1, 251, -1, 219, -1, 243, -1, 266, - -1, 200, -1, 192, -1, 193, -1, 194, -1, 195, - -1, 196, -1, 279, -1, 280, -1, 281, -1, 220, - -1, 228, -1, 229, -1, 282, -1, 283, -1, 237, - -1, 245, -1, 221, -1, 284, -1, 286, -1, 285, - -1, 287, -1, 288, -1, 289, -1, 247, -1, 261, - -1, 272, -1, 38, -1, 169, 170, -1, -1, 290, - -1, 291, -1, 292, -1, 294, -1, 293, -1, 44, - -1, 172, 173, -1, -1, 295, -1, 296, -1, 297, - -1, 298, -1, 13, 10, -1, 12, 10, -1, 76, - 10, -1, 79, 10, -1, 97, 10, -1, 14, 10, - -1, 16, 10, -1, 67, 10, -1, 15, 10, -1, - 80, 10, -1, 81, 10, -1, 31, 10, -1, 60, - 10, -1, 75, 10, -1, 17, 10, -1, 18, 10, - -1, 19, 10, -1, 20, 10, -1, 123, 10, -1, - 124, 10, -1, 125, 10, -1, 126, 10, -1, 127, - 10, -1, 77, 10, -1, 66, 10, -1, 102, 10, - -1, 122, 10, -1, 21, 10, -1, 22, 10, -1, - 23, 10, -1, 24, 10, -1, 25, 10, -1, 68, - 10, -1, 82, 10, -1, 83, 10, -1, 110, 10, - -1, 54, 10, -1, 64, 10, -1, 55, 10, -1, - 103, 10, -1, 48, 10, -1, 49, 10, -1, 50, - 10, -1, 51, 10, -1, 114, 10, -1, 118, 10, - -1, 119, 10, -1, 152, 10, -1, 115, 10, -1, - 61, 10, -1, 26, 10, -1, 27, 10, -1, 28, - 10, -1, 99, 10, -1, 133, 10, -1, 134, 10, - -1, 29, 10, -1, 30, 10, -1, 32, 10, -1, - 33, 10, -1, 35, 10, -1, 36, 10, -1, 34, - 10, -1, 135, 10, -1, 41, 10, -1, 42, 10, - -1, 43, 10, -1, 52, 10, -1, 71, 10, -1, - 120, 10, -1, 85, 10, -1, 151, 10, -1, 78, - 10, -1, 159, 10, -1, 86, 10, -1, 87, 10, - -1, 116, 10, -1, 117, 10, -1, 101, 10, -1, - 47, 10, -1, 69, 10, -1, 72, 10, 10, -1, - 53, 10, -1, 56, 10, -1, 106, 10, -1, 107, - 10, -1, 70, 10, -1, 160, 10, -1, 108, 10, - -1, 57, 10, -1, 58, 10, -1, 59, 10, -1, - 121, 10, -1, 109, 10, -1, 65, 10, -1, 112, - 10, -1, 113, 10, -1, 111, 10, -1, 161, 10, - -1, 62, 10, -1, 63, 10, -1, 84, 10, -1, - 73, 10, 10, -1, 74, 10, -1, 98, 10, -1, - 130, 10, -1, 131, 10, -1, 132, 10, -1, 136, - 10, -1, 137, 10, -1, 153, 10, -1, 155, 10, - -1, 154, 10, -1, 156, 10, 10, -1, 157, 10, - 10, -1, 158, 10, -1, 37, 10, -1, 39, 10, - -1, 40, 10, -1, 129, 10, -1, 100, 10, -1, - 37, 10, -1, 45, 10, -1, 46, 10, -1, 128, - 10, -1, 88, -1, 300, 301, -1, -1, 302, -1, - 304, -1, 303, -1, 306, -1, 307, -1, 308, -1, - 309, -1, 305, -1, 89, 10, -1, 91, 10, -1, - 90, 10, -1, 96, 10, -1, 92, 10, -1, 93, - 10, -1, 94, 10, -1, 95, 10, -1, 138, -1, - 311, 312, -1, -1, 313, -1, 314, -1, 315, -1, - 316, -1, 317, -1, 318, -1, 319, -1, 320, -1, - 321, -1, 322, -1, 323, -1, 324, -1, 139, 10, - -1, 140, 10, -1, 141, 10, -1, 142, 10, -1, - 143, 10, -1, 144, 10, -1, 145, 10, -1, 146, - 10, -1, 147, 10, -1, 148, 10, -1, 149, 10, - -1, 150, 10, -1, 104, -1, 326, 327, -1, -1, - 328, -1, 105, 10, -1 + 164, 0, -1, -1, 164, 165, -1, 166, 167, -1, + 169, 170, -1, 172, 173, -1, 327, 328, -1, 301, + 302, -1, 312, 313, -1, 11, -1, 167, 168, -1, + -1, 175, -1, 176, -1, 180, -1, 183, -1, 189, + -1, 190, -1, 191, -1, 192, -1, 181, -1, 202, + -1, 203, -1, 204, -1, 205, -1, 206, -1, 225, + -1, 226, -1, 227, -1, 231, -1, 232, -1, 186, + -1, 233, -1, 234, -1, 237, -1, 235, -1, 236, + -1, 239, -1, 240, -1, 241, -1, 254, -1, 215, + -1, 216, -1, 217, -1, 218, -1, 242, -1, 257, + -1, 211, -1, 213, -1, 258, -1, 264, -1, 265, + -1, 266, -1, 187, -1, 224, -1, 274, -1, 275, + -1, 212, -1, 269, -1, 199, -1, 182, -1, 207, + -1, 255, -1, 261, -1, 243, -1, 256, -1, 277, + -1, 278, -1, 188, -1, 177, -1, 198, -1, 247, + -1, 178, -1, 184, -1, 185, -1, 208, -1, 209, + -1, 276, -1, 245, -1, 249, -1, 250, -1, 179, + -1, 279, -1, 228, -1, 253, -1, 200, -1, 214, + -1, 259, -1, 260, -1, 263, -1, 268, -1, 210, + -1, 270, -1, 271, -1, 272, -1, 219, -1, 223, + -1, 251, -1, 252, -1, 220, -1, 244, -1, 267, + -1, 201, -1, 193, -1, 194, -1, 195, -1, 196, + -1, 197, -1, 280, -1, 281, -1, 282, -1, 221, + -1, 229, -1, 230, -1, 283, -1, 284, -1, 238, + -1, 246, -1, 222, -1, 285, -1, 287, -1, 286, + -1, 288, -1, 289, -1, 290, -1, 248, -1, 262, + -1, 273, -1, 291, -1, 38, -1, 170, 171, -1, + -1, 292, -1, 293, -1, 294, -1, 296, -1, 295, + -1, 44, -1, 173, 174, -1, -1, 297, -1, 298, + -1, 299, -1, 300, -1, 13, 10, -1, 12, 10, + -1, 76, 10, -1, 79, 10, -1, 97, 10, -1, + 14, 10, -1, 16, 10, -1, 67, 10, -1, 15, + 10, -1, 80, 10, -1, 81, 10, -1, 31, 10, + -1, 60, 10, -1, 75, 10, -1, 17, 10, -1, + 18, 10, -1, 19, 10, -1, 20, 10, -1, 123, + 10, -1, 124, 10, -1, 125, 10, -1, 126, 10, + -1, 127, 10, -1, 77, 10, -1, 66, 10, -1, + 102, 10, -1, 122, 10, -1, 21, 10, -1, 22, + 10, -1, 23, 10, -1, 24, 10, -1, 25, 10, + -1, 68, 10, -1, 82, 10, -1, 83, 10, -1, + 110, 10, -1, 54, 10, -1, 64, 10, -1, 55, + 10, -1, 103, 10, -1, 48, 10, -1, 49, 10, + -1, 50, 10, -1, 51, 10, -1, 114, 10, -1, + 118, 10, -1, 119, 10, -1, 152, 10, -1, 115, + 10, -1, 61, 10, -1, 26, 10, -1, 27, 10, + -1, 28, 10, -1, 99, 10, -1, 133, 10, -1, + 134, 10, -1, 29, 10, -1, 30, 10, -1, 32, + 10, -1, 33, 10, -1, 35, 10, -1, 36, 10, + -1, 34, 10, -1, 135, 10, -1, 41, 10, -1, + 42, 10, -1, 43, 10, -1, 52, 10, -1, 71, + 10, -1, 120, 10, -1, 85, 10, -1, 151, 10, + -1, 78, 10, -1, 159, 10, -1, 86, 10, -1, + 87, 10, -1, 116, 10, -1, 117, 10, -1, 101, + 10, -1, 47, 10, -1, 69, 10, -1, 72, 10, + 10, -1, 53, 10, -1, 56, 10, -1, 106, 10, + -1, 107, 10, -1, 70, 10, -1, 160, 10, -1, + 108, 10, -1, 57, 10, -1, 58, 10, -1, 59, + 10, -1, 121, 10, -1, 109, 10, -1, 65, 10, + -1, 112, 10, -1, 113, 10, -1, 111, 10, -1, + 161, 10, -1, 62, 10, -1, 63, 10, -1, 84, + 10, -1, 73, 10, 10, -1, 74, 10, -1, 98, + 10, -1, 130, 10, -1, 131, 10, -1, 132, 10, + -1, 136, 10, -1, 137, 10, -1, 153, 10, -1, + 155, 10, -1, 154, 10, -1, 156, 10, 10, -1, + 157, 10, 10, -1, 158, 10, -1, 162, 10, -1, + 37, 10, -1, 39, 10, -1, 40, 10, -1, 129, + 10, -1, 100, 10, -1, 37, 10, -1, 45, 10, + -1, 46, 10, -1, 128, 10, -1, 88, -1, 302, + 303, -1, -1, 304, -1, 306, -1, 305, -1, 308, + -1, 309, -1, 310, -1, 311, -1, 307, -1, 89, + 10, -1, 91, 10, -1, 90, 10, -1, 96, 10, + -1, 92, 10, -1, 93, 10, -1, 94, 10, -1, + 95, 10, -1, 138, -1, 313, 314, -1, -1, 315, + -1, 316, -1, 317, -1, 318, -1, 319, -1, 320, + -1, 321, -1, 322, -1, 323, -1, 324, -1, 325, + -1, 326, -1, 139, 10, -1, 140, 10, -1, 141, + 10, -1, 142, 10, -1, 143, 10, -1, 144, 10, + -1, 145, 10, -1, 146, 10, -1, 147, 10, -1, + 148, 10, -1, 149, 10, -1, 150, 10, -1, 104, + -1, 328, 329, -1, -1, 330, -1, 105, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 127, 127, 127, 128, 128, 129, 129, 130, 130, - 134, 139, 140, 141, 141, 141, 142, 142, 143, 143, - 143, 144, 144, 144, 145, 145, 145, 146, 146, 147, - 147, 148, 148, 149, 149, 150, 150, 151, 151, 152, - 152, 153, 153, 154, 154, 154, 155, 155, 155, 156, - 156, 156, 157, 157, 158, 158, 159, 159, 160, 160, - 161, 161, 161, 162, 162, 163, 163, 164, 164, 164, - 165, 165, 166, 166, 167, 167, 168, 168, 168, 169, - 169, 170, 170, 171, 171, 172, 172, 173, 173, 174, - 174, 174, 175, 175, 176, 176, 176, 177, 177, 177, - 178, 178, 178, 179, 179, 179, 180, 180, 180, 181, - 181, 181, 182, 182, 182, 183, 183, 184, 184, 185, - 185, 185, 186, 186, 187, 187, 188, 188, 189, 191, - 203, 204, 205, 205, 205, 205, 205, 207, 219, 220, - 221, 221, 221, 221, 223, 232, 241, 252, 261, 270, - 279, 292, 307, 316, 325, 334, 343, 352, 361, 370, - 379, 388, 397, 406, 415, 422, 429, 438, 447, 461, - 470, 479, 486, 493, 500, 508, 515, 522, 529, 536, - 544, 552, 560, 567, 574, 583, 592, 599, 606, 614, - 622, 632, 642, 655, 666, 674, 687, 696, 705, 714, - 724, 732, 745, 754, 762, 771, 779, 792, 801, 808, - 818, 828, 838, 848, 858, 868, 878, 888, 895, 902, - 909, 918, 927, 936, 943, 953, 970, 977, 995, 1008, - 1021, 1030, 1039, 1048, 1057, 1067, 1077, 1086, 1095, 1102, - 1111, 1120, 1129, 1138, 1146, 1159, 1167, 1191, 1198, 1213, - 1223, 1233, 1240, 1247, 1256, 1265, 1273, 1286, 1299, 1312, - 1321, 1331, 1338, 1345, 1354, 1364, 1374, 1381, 1388, 1397, - 1402, 1403, 1404, 1404, 1404, 1405, 1405, 1405, 1406, 1406, - 1408, 1418, 1427, 1434, 1444, 1451, 1458, 1465, 1472, 1477, - 1478, 1479, 1479, 1480, 1480, 1481, 1481, 1482, 1483, 1484, - 1485, 1486, 1487, 1489, 1497, 1504, 1512, 1520, 1527, 1534, - 1543, 1552, 1561, 1570, 1579, 1588, 1593, 1594, 1595, 1597 + 0, 128, 128, 128, 129, 129, 130, 130, 131, 131, + 135, 140, 141, 142, 142, 142, 143, 143, 144, 144, + 144, 145, 145, 145, 146, 146, 146, 147, 147, 148, + 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, + 153, 154, 154, 155, 155, 155, 156, 156, 156, 157, + 157, 157, 158, 158, 159, 159, 160, 160, 161, 161, + 162, 162, 162, 163, 163, 164, 164, 165, 165, 165, + 166, 166, 167, 167, 168, 168, 169, 169, 169, 170, + 170, 171, 171, 172, 172, 173, 173, 174, 174, 175, + 175, 175, 176, 176, 177, 177, 177, 178, 178, 178, + 179, 179, 179, 180, 180, 180, 181, 181, 181, 182, + 182, 182, 183, 183, 183, 184, 184, 185, 185, 186, + 186, 186, 187, 187, 188, 188, 189, 189, 190, 190, + 192, 204, 205, 206, 206, 206, 206, 206, 208, 220, + 221, 222, 222, 222, 222, 224, 233, 242, 253, 262, + 271, 280, 293, 308, 317, 326, 335, 344, 353, 362, + 371, 380, 389, 398, 407, 416, 423, 430, 439, 448, + 462, 471, 480, 487, 494, 501, 509, 516, 523, 530, + 537, 545, 553, 561, 568, 575, 584, 593, 600, 607, + 615, 623, 633, 643, 656, 667, 675, 688, 697, 706, + 715, 725, 733, 746, 755, 763, 772, 780, 793, 802, + 809, 819, 829, 839, 849, 859, 869, 879, 889, 896, + 903, 910, 919, 928, 937, 944, 954, 971, 978, 996, + 1009, 1022, 1031, 1040, 1049, 1058, 1068, 1078, 1087, 1096, + 1103, 1112, 1121, 1130, 1139, 1147, 1160, 1168, 1192, 1199, + 1214, 1224, 1234, 1241, 1248, 1257, 1266, 1274, 1287, 1300, + 1313, 1322, 1332, 1342, 1349, 1356, 1365, 1375, 1385, 1392, + 1399, 1408, 1413, 1414, 1415, 1415, 1415, 1416, 1416, 1416, + 1417, 1417, 1419, 1429, 1438, 1445, 1455, 1462, 1469, 1476, + 1483, 1488, 1489, 1490, 1490, 1491, 1491, 1492, 1492, 1493, + 1494, 1495, 1496, 1497, 1498, 1500, 1508, 1515, 1523, 1531, + 1538, 1545, 1554, 1563, 1572, 1581, 1590, 1599, 1604, 1605, + 1606, 1608 }; #endif @@ -998,17 +1002,17 @@ static const char *const yytname[] = "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR", "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", - "VAR_PERMIT_SMALL_HOLDDOWN", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_port", "server_interface", - "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_tcp_upstream", + "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "$accept", + "toplevelvars", "toplevelvar", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", + "server_num_threads", "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_extended_statistics", + "server_port", "server_interface", "server_outgoing_interface", + "server_outgoing_range", "server_outgoing_port_permit", + "server_outgoing_port_avoid", "server_outgoing_num_tcp", + "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", + "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream", "server_ssl_upstream", "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", "server_log_queries", @@ -1050,15 +1054,16 @@ static const char *const yytname[] = "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall", "server_ratelimit", "server_ratelimit_size", "server_ratelimit_slabs", "server_ratelimit_for_domain", - "server_ratelimit_below_domain", "server_ratelimit_factor", "stub_name", - "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name", - "forward_host", "forward_addr", "forward_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "server_ratelimit_below_domain", "server_ratelimit_factor", + "server_qname_minimisation", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc", + "rc_control_enable", "rc_control_port", "rc_control_interface", + "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", + "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path", + "dt_dnstap_send_identity", "dt_dnstap_send_version", + "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -1090,28 +1095,28 @@ static const yytype_uint16 yytoknum[] = 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416 + 415, 416, 417 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 162, 163, 163, 164, 164, 164, 164, 164, 164, - 165, 166, 166, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, - 169, 169, 170, 170, 170, 170, 170, 171, 172, 172, - 173, 173, 173, 173, 174, 175, 176, 177, 178, 179, + 0, 163, 164, 164, 165, 165, 165, 165, 165, 165, + 166, 167, 167, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 169, 170, 170, 171, 171, 171, 171, 171, 172, 173, + 173, 174, 174, 174, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, @@ -1124,11 +1129,12 @@ static const yytype_uint16 yyr1[] = 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 311, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 326, 327, 328 + 300, 301, 302, 302, 303, 303, 303, 303, 303, 303, + 303, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 313, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 328, + 329, 330 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1147,8 +1153,8 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1156,16 +1162,17 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1173,8 +1180,8 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 10, 129, 137, 269, 315, 288, 3, - 12, 131, 139, 271, 290, 317, 4, 5, 6, 8, + 2, 0, 1, 10, 130, 138, 271, 317, 290, 3, + 12, 132, 140, 273, 292, 319, 4, 5, 6, 8, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1186,62 +1193,63 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, - 14, 70, 73, 82, 15, 21, 61, 16, 74, 75, - 32, 54, 69, 17, 18, 19, 20, 104, 105, 106, - 107, 108, 71, 60, 86, 103, 22, 23, 24, 25, - 26, 62, 76, 77, 92, 48, 58, 49, 87, 42, - 43, 44, 45, 96, 100, 112, 119, 97, 55, 27, - 28, 29, 84, 113, 114, 30, 31, 33, 34, 36, - 37, 35, 117, 38, 39, 40, 46, 65, 101, 79, - 118, 72, 126, 80, 81, 98, 99, 85, 41, 63, - 66, 47, 50, 88, 89, 64, 127, 90, 51, 52, - 53, 102, 91, 59, 93, 94, 95, 128, 56, 57, - 78, 67, 68, 83, 109, 110, 111, 115, 116, 120, - 122, 121, 123, 124, 125, 0, 0, 0, 0, 0, - 130, 132, 133, 134, 136, 135, 0, 0, 0, 0, - 138, 140, 141, 142, 143, 0, 0, 0, 0, 0, - 0, 0, 0, 270, 272, 274, 273, 279, 275, 276, - 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 289, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 0, 316, 318, - 145, 144, 149, 152, 150, 158, 159, 160, 161, 171, - 172, 173, 174, 175, 194, 195, 196, 200, 201, 155, - 202, 203, 206, 204, 205, 208, 209, 210, 223, 184, - 185, 186, 187, 211, 226, 180, 182, 227, 233, 234, - 235, 156, 193, 243, 244, 181, 238, 168, 151, 176, - 224, 230, 212, 0, 0, 247, 157, 146, 167, 216, - 147, 153, 154, 177, 178, 245, 214, 218, 219, 148, - 248, 197, 222, 169, 183, 228, 229, 232, 237, 179, - 241, 239, 240, 188, 192, 220, 221, 189, 190, 213, - 236, 170, 162, 163, 164, 165, 166, 249, 250, 251, - 198, 199, 207, 252, 253, 215, 191, 254, 256, 255, - 0, 0, 259, 217, 231, 242, 260, 261, 262, 264, - 263, 265, 266, 267, 268, 280, 282, 281, 284, 285, - 286, 287, 283, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 319, 225, 246, 257, 258 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 13, 14, 70, 73, 82, 15, 21, 61, 16, 74, + 75, 32, 54, 69, 17, 18, 19, 20, 104, 105, + 106, 107, 108, 71, 60, 86, 103, 22, 23, 24, + 25, 26, 62, 76, 77, 92, 48, 58, 49, 87, + 42, 43, 44, 45, 96, 100, 112, 119, 97, 55, + 27, 28, 29, 84, 113, 114, 30, 31, 33, 34, + 36, 37, 35, 117, 38, 39, 40, 46, 65, 101, + 79, 118, 72, 126, 80, 81, 98, 99, 85, 41, + 63, 66, 47, 50, 88, 89, 64, 127, 90, 51, + 52, 53, 102, 91, 59, 93, 94, 95, 128, 56, + 57, 78, 67, 68, 83, 109, 110, 111, 115, 116, + 120, 122, 121, 123, 124, 125, 129, 0, 0, 0, + 0, 0, 131, 133, 134, 135, 137, 136, 0, 0, + 0, 0, 139, 141, 142, 143, 144, 0, 0, 0, + 0, 0, 0, 0, 0, 272, 274, 276, 275, 281, + 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 291, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, + 318, 320, 146, 145, 150, 153, 151, 159, 160, 161, + 162, 172, 173, 174, 175, 176, 195, 196, 197, 201, + 202, 156, 203, 204, 207, 205, 206, 209, 210, 211, + 224, 185, 186, 187, 188, 212, 227, 181, 183, 228, + 234, 235, 236, 157, 194, 244, 245, 182, 239, 169, + 152, 177, 225, 231, 213, 0, 0, 248, 158, 147, + 168, 217, 148, 154, 155, 178, 179, 246, 215, 219, + 220, 149, 249, 198, 223, 170, 184, 229, 230, 233, + 238, 180, 242, 240, 241, 189, 193, 221, 222, 190, + 191, 214, 237, 171, 163, 164, 165, 166, 167, 250, + 251, 252, 199, 200, 208, 253, 254, 216, 192, 255, + 257, 256, 0, 0, 260, 218, 232, 243, 261, 262, + 263, 264, 266, 265, 267, 268, 269, 270, 282, 284, + 283, 286, 287, 288, 289, 285, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 321, 226, + 247, 258, 259 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 9, 10, 16, 138, 11, 17, 260, 12, - 18, 270, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 261, 262, - 263, 264, 265, 271, 272, 273, 274, 13, 19, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 14, 20, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 15, 21, 318, 319 + -1, 1, 9, 10, 16, 139, 11, 17, 262, 12, + 18, 272, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 263, + 264, 265, 266, 267, 273, 274, 275, 276, 13, 19, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 14, + 20, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 15, 21, 320, 321 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1252,17 +1260,18 @@ static const yytype_int16 yypact[] = -81, 116, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -12, 89, 47, -13, 22, -80, 16, 17, 18, 23, 24, 78, 107, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 140, 141, - 142, 143, 145, 146, 147, 148, 149, 163, 164, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, -81, -81, + 121, 122, 123, 124, 125, 126, 127, 128, 141, 142, + 143, 145, 146, 147, 148, 149, 163, 164, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 209, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, @@ -1273,29 +1282,29 @@ static const yytype_int16 yypact[] = -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, 262, 263, 264, + 265, 266, -81, -81, -81, -81, -81, -81, 267, 268, + 269, 270, -81, -81, -81, -81, -81, 271, 272, 273, + 274, 275, 276, 277, 278, -81, -81, -81, -81, -81, + -81, -81, -81, -81, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, 291, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, 260, 261, 262, 263, 264, - -81, -81, -81, -81, -81, -81, 265, 266, 267, 268, - -81, -81, -81, -81, -81, 269, 270, 271, 272, 273, - 274, 275, 276, -81, -81, -81, -81, -81, -81, -81, - -81, -81, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, 289, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, 292, 293, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, 290, 291, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, 294, 295, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - 292, 293, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81 + -81, -81, -81 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1317,7 +1326,7 @@ static const yytype_int8 yypgoto[] = -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81 + -81, -81, -81, -81, -81, -81, -81, -81 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1328,35 +1337,35 @@ static const yytype_uint16 yytable[] = { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 317, 320, 321, 322, 47, - 48, 49, 0, 323, 324, 50, 51, 52, 53, 54, + 42, 43, 44, 45, 46, 319, 322, 323, 324, 47, + 48, 49, 0, 325, 326, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 275, 276, 277, 278, - 279, 280, 281, 282, 266, 91, 92, 93, 325, 94, - 95, 96, 267, 268, 97, 98, 99, 100, 101, 102, + 85, 86, 87, 88, 89, 90, 277, 278, 279, 280, + 281, 282, 283, 284, 268, 91, 92, 93, 327, 94, + 95, 96, 269, 270, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 2, 326, 119, 120, - 121, 122, 123, 124, 125, 126, 255, 3, 256, 257, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 127, + 113, 114, 115, 116, 117, 118, 2, 328, 119, 120, + 121, 122, 123, 124, 125, 126, 257, 3, 258, 259, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 336, 337, 338, 339, 4, 340, 341, 342, 343, 344, - 5, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 345, 346, 269, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 258, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 6, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 259, 387, - 7, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 8, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469 + 138, 338, 339, 340, 4, 341, 342, 343, 344, 345, + 5, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 346, 347, 271, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 260, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 6, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 261, 388, + 7, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 8, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472 }; #define yypact_value_is_default(Yystate) \ @@ -1382,7 +1391,7 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, 136, 137, 37, 11, 39, 40, 10, 10, 10, 10, 10, 10, 10, 10, 10, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 10, 10, 10, 10, 38, 10, 10, 10, 10, 10, + 162, 10, 10, 10, 38, 10, 10, 10, 10, 10, 44, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 10, 10, 128, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 100, @@ -1397,16 +1406,16 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 163, 0, 11, 38, 44, 88, 104, 138, 164, - 165, 168, 171, 299, 310, 325, 166, 169, 172, 300, - 311, 326, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 164, 0, 11, 38, 44, 88, 104, 138, 165, + 166, 169, 172, 301, 312, 327, 167, 170, 173, 302, + 313, 328, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 43, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, @@ -1417,7 +1426,7 @@ static const yytype_uint16 yystos[] = 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, 131, 132, 133, 134, 135, 136, 137, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 167, 174, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 168, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -1429,13 +1438,14 @@ static const yytype_uint16 yystos[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 37, 39, 40, 100, 129, - 170, 290, 291, 292, 293, 294, 37, 45, 46, 128, - 173, 295, 296, 297, 298, 89, 90, 91, 92, 93, - 94, 95, 96, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 105, 327, 328, + 285, 286, 287, 288, 289, 290, 291, 37, 39, 40, + 100, 129, 171, 292, 293, 294, 295, 296, 37, 45, + 46, 128, 174, 297, 298, 299, 300, 89, 90, 91, + 92, 93, 94, 95, 96, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 105, + 329, 330, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1450,7 +1460,7 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -2252,15 +2262,15 @@ yyreduce: { case 10: /* Line 1792 of yacc.c */ -#line 135 "./util/configparser.y" +#line 136 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } break; - case 129: + case 130: /* Line 1792 of yacc.c */ -#line 192 "./util/configparser.y" +#line 193 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2273,9 +2283,9 @@ yyreduce: } break; - case 137: + case 138: /* Line 1792 of yacc.c */ -#line 208 "./util/configparser.y" +#line 209 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2288,9 +2298,9 @@ yyreduce: } break; - case 144: + case 145: /* Line 1792 of yacc.c */ -#line 224 "./util/configparser.y" +#line 225 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2300,9 +2310,9 @@ yyreduce: } break; - case 145: + case 146: /* Line 1792 of yacc.c */ -#line 233 "./util/configparser.y" +#line 234 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2312,9 +2322,9 @@ yyreduce: } break; - case 146: + case 147: /* Line 1792 of yacc.c */ -#line 242 "./util/configparser.y" +#line 243 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) @@ -2326,9 +2336,9 @@ yyreduce: } break; - case 147: + case 148: /* Line 1792 of yacc.c */ -#line 253 "./util/configparser.y" +#line 254 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2338,9 +2348,9 @@ yyreduce: } break; - case 148: + case 149: /* Line 1792 of yacc.c */ -#line 262 "./util/configparser.y" +#line 263 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2350,9 +2360,9 @@ yyreduce: } break; - case 149: + case 150: /* Line 1792 of yacc.c */ -#line 271 "./util/configparser.y" +#line 272 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2362,9 +2372,9 @@ yyreduce: } break; - case 150: + case 151: /* Line 1792 of yacc.c */ -#line 280 "./util/configparser.y" +#line 281 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2378,9 +2388,9 @@ yyreduce: } break; - case 151: + case 152: /* Line 1792 of yacc.c */ -#line 293 "./util/configparser.y" +#line 294 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2396,9 +2406,9 @@ yyreduce: } break; - case 152: + case 153: /* Line 1792 of yacc.c */ -#line 308 "./util/configparser.y" +#line 309 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2408,9 +2418,9 @@ yyreduce: } break; - case 153: + case 154: /* Line 1792 of yacc.c */ -#line 317 "./util/configparser.y" +#line 318 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, @@ -2420,9 +2430,9 @@ yyreduce: } break; - case 154: + case 155: /* Line 1792 of yacc.c */ -#line 326 "./util/configparser.y" +#line 327 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, @@ -2432,9 +2442,9 @@ yyreduce: } break; - case 155: + case 156: /* Line 1792 of yacc.c */ -#line 335 "./util/configparser.y" +#line 336 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2444,9 +2454,9 @@ yyreduce: } break; - case 156: + case 157: /* Line 1792 of yacc.c */ -#line 344 "./util/configparser.y" +#line 345 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2456,9 +2466,9 @@ yyreduce: } break; - case 157: + case 158: /* Line 1792 of yacc.c */ -#line 353 "./util/configparser.y" +#line 354 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2468,9 +2478,9 @@ yyreduce: } break; - case 158: + case 159: /* Line 1792 of yacc.c */ -#line 362 "./util/configparser.y" +#line 363 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2480,9 +2490,9 @@ yyreduce: } break; - case 159: + case 160: /* Line 1792 of yacc.c */ -#line 371 "./util/configparser.y" +#line 372 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2492,9 +2502,9 @@ yyreduce: } break; - case 160: + case 161: /* Line 1792 of yacc.c */ -#line 380 "./util/configparser.y" +#line 381 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2504,9 +2514,9 @@ yyreduce: } break; - case 161: + case 162: /* Line 1792 of yacc.c */ -#line 389 "./util/configparser.y" +#line 390 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2516,9 +2526,9 @@ yyreduce: } break; - case 162: + case 163: /* Line 1792 of yacc.c */ -#line 398 "./util/configparser.y" +#line 399 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2528,9 +2538,9 @@ yyreduce: } break; - case 163: + case 164: /* Line 1792 of yacc.c */ -#line 407 "./util/configparser.y" +#line 408 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2540,9 +2550,9 @@ yyreduce: } break; - case 164: + case 165: /* Line 1792 of yacc.c */ -#line 416 "./util/configparser.y" +#line 417 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_key); @@ -2550,9 +2560,9 @@ yyreduce: } break; - case 165: + case 166: /* Line 1792 of yacc.c */ -#line 423 "./util/configparser.y" +#line 424 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->ssl_service_pem); @@ -2560,9 +2570,9 @@ yyreduce: } break; - case 166: + case 167: /* Line 1792 of yacc.c */ -#line 430 "./util/configparser.y" +#line 431 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2572,9 +2582,9 @@ yyreduce: } break; - case 167: + case 168: /* Line 1792 of yacc.c */ -#line 439 "./util/configparser.y" +#line 440 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2584,9 +2594,9 @@ yyreduce: } break; - case 168: + case 169: /* Line 1792 of yacc.c */ -#line 448 "./util/configparser.y" +#line 449 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2601,9 +2611,9 @@ yyreduce: } break; - case 169: + case 170: /* Line 1792 of yacc.c */ -#line 462 "./util/configparser.y" +#line 463 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2613,9 +2623,9 @@ yyreduce: } break; - case 170: + case 171: /* Line 1792 of yacc.c */ -#line 471 "./util/configparser.y" +#line 472 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2625,9 +2635,9 @@ yyreduce: } break; - case 171: + case 172: /* Line 1792 of yacc.c */ -#line 480 "./util/configparser.y" +#line 481 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -2635,9 +2645,9 @@ yyreduce: } break; - case 172: + case 173: /* Line 1792 of yacc.c */ -#line 487 "./util/configparser.y" +#line 488 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -2645,9 +2655,9 @@ yyreduce: } break; - case 173: + case 174: /* Line 1792 of yacc.c */ -#line 494 "./util/configparser.y" +#line 495 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -2655,9 +2665,9 @@ yyreduce: } break; - case 174: + case 175: /* Line 1792 of yacc.c */ -#line 501 "./util/configparser.y" +#line 502 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -2666,9 +2676,9 @@ yyreduce: } break; - case 175: + case 176: /* Line 1792 of yacc.c */ -#line 509 "./util/configparser.y" +#line 510 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -2676,9 +2686,9 @@ yyreduce: } break; - case 176: + case 177: /* Line 1792 of yacc.c */ -#line 516 "./util/configparser.y" +#line 517 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) @@ -2686,9 +2696,9 @@ yyreduce: } break; - case 177: + case 178: /* Line 1792 of yacc.c */ -#line 523 "./util/configparser.y" +#line 524 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dlv_anchor_file); @@ -2696,9 +2706,9 @@ yyreduce: } break; - case 178: + case 179: /* Line 1792 of yacc.c */ -#line 530 "./util/configparser.y" +#line 531 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2706,9 +2716,9 @@ yyreduce: } break; - case 179: + case 180: /* Line 1792 of yacc.c */ -#line 537 "./util/configparser.y" +#line 538 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2717,9 +2727,9 @@ yyreduce: } break; - case 180: + case 181: /* Line 1792 of yacc.c */ -#line 545 "./util/configparser.y" +#line 546 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2728,9 +2738,9 @@ yyreduce: } break; - case 181: + case 182: /* Line 1792 of yacc.c */ -#line 553 "./util/configparser.y" +#line 554 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2739,9 +2749,9 @@ yyreduce: } break; - case 182: + case 183: /* Line 1792 of yacc.c */ -#line 561 "./util/configparser.y" +#line 562 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) @@ -2749,9 +2759,9 @@ yyreduce: } break; - case 183: + case 184: /* Line 1792 of yacc.c */ -#line 568 "./util/configparser.y" +#line 569 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) @@ -2759,9 +2769,9 @@ yyreduce: } break; - case 184: + case 185: /* Line 1792 of yacc.c */ -#line 575 "./util/configparser.y" +#line 576 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2771,9 +2781,9 @@ yyreduce: } break; - case 185: + case 186: /* Line 1792 of yacc.c */ -#line 584 "./util/configparser.y" +#line 585 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2783,9 +2793,9 @@ yyreduce: } break; - case 186: + case 187: /* Line 1792 of yacc.c */ -#line 593 "./util/configparser.y" +#line 594 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2793,9 +2803,9 @@ yyreduce: } break; - case 187: + case 188: /* Line 1792 of yacc.c */ -#line 600 "./util/configparser.y" +#line 601 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2803,9 +2813,9 @@ yyreduce: } break; - case 188: + case 189: /* Line 1792 of yacc.c */ -#line 607 "./util/configparser.y" +#line 608 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) @@ -2814,9 +2824,9 @@ yyreduce: } break; - case 189: + case 190: /* Line 1792 of yacc.c */ -#line 615 "./util/configparser.y" +#line 616 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) @@ -2825,9 +2835,9 @@ yyreduce: } break; - case 190: + case 191: /* Line 1792 of yacc.c */ -#line 623 "./util/configparser.y" +#line 624 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2838,9 +2848,9 @@ yyreduce: } break; - case 191: + case 192: /* Line 1792 of yacc.c */ -#line 633 "./util/configparser.y" +#line 634 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2851,9 +2861,9 @@ yyreduce: } break; - case 192: + case 193: /* Line 1792 of yacc.c */ -#line 643 "./util/configparser.y" +#line 644 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2867,9 +2877,9 @@ yyreduce: } break; - case 193: + case 194: /* Line 1792 of yacc.c */ -#line 656 "./util/configparser.y" +#line 657 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2881,9 +2891,9 @@ yyreduce: } break; - case 194: + case 195: /* Line 1792 of yacc.c */ -#line 667 "./util/configparser.y" +#line 668 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) @@ -2892,9 +2902,9 @@ yyreduce: } break; - case 195: + case 196: /* Line 1792 of yacc.c */ -#line 675 "./util/configparser.y" +#line 676 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2908,9 +2918,9 @@ yyreduce: } break; - case 196: + case 197: /* Line 1792 of yacc.c */ -#line 688 "./util/configparser.y" +#line 689 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2920,9 +2930,9 @@ yyreduce: } break; - case 197: + case 198: /* Line 1792 of yacc.c */ -#line 697 "./util/configparser.y" +#line 698 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2932,9 +2942,9 @@ yyreduce: } break; - case 198: + case 199: /* Line 1792 of yacc.c */ -#line 706 "./util/configparser.y" +#line 707 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2944,9 +2954,9 @@ yyreduce: } break; - case 199: + case 200: /* Line 1792 of yacc.c */ -#line 715 "./util/configparser.y" +#line 716 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2957,9 +2967,9 @@ yyreduce: } break; - case 200: + case 201: /* Line 1792 of yacc.c */ -#line 725 "./util/configparser.y" +#line 726 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) @@ -2968,9 +2978,9 @@ yyreduce: } break; - case 201: + case 202: /* Line 1792 of yacc.c */ -#line 733 "./util/configparser.y" +#line 734 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2984,9 +2994,9 @@ yyreduce: } break; - case 202: + case 203: /* Line 1792 of yacc.c */ -#line 746 "./util/configparser.y" +#line 747 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2996,9 +3006,9 @@ yyreduce: } break; - case 203: + case 204: /* Line 1792 of yacc.c */ -#line 755 "./util/configparser.y" +#line 756 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " @@ -3007,9 +3017,9 @@ yyreduce: } break; - case 204: + case 205: /* Line 1792 of yacc.c */ -#line 763 "./util/configparser.y" +#line 764 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3019,9 +3029,9 @@ yyreduce: } break; - case 205: + case 206: /* Line 1792 of yacc.c */ -#line 772 "./util/configparser.y" +#line 773 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " @@ -3030,9 +3040,9 @@ yyreduce: } break; - case 206: + case 207: /* Line 1792 of yacc.c */ -#line 780 "./util/configparser.y" +#line 781 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3046,9 +3056,9 @@ yyreduce: } break; - case 207: + case 208: /* Line 1792 of yacc.c */ -#line 793 "./util/configparser.y" +#line 794 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3058,9 +3068,9 @@ yyreduce: } break; - case 208: + case 209: /* Line 1792 of yacc.c */ -#line 802 "./util/configparser.y" +#line 803 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -3068,9 +3078,9 @@ yyreduce: } break; - case 209: + case 210: /* Line 1792 of yacc.c */ -#line 809 "./util/configparser.y" +#line 810 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3081,9 +3091,9 @@ yyreduce: } break; - case 210: + case 211: /* Line 1792 of yacc.c */ -#line 819 "./util/configparser.y" +#line 820 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3094,9 +3104,9 @@ yyreduce: } break; - case 211: + case 212: /* Line 1792 of yacc.c */ -#line 829 "./util/configparser.y" +#line 830 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3107,9 +3117,9 @@ yyreduce: } break; - case 212: + case 213: /* Line 1792 of yacc.c */ -#line 839 "./util/configparser.y" +#line 840 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3120,9 +3130,9 @@ yyreduce: } break; - case 213: + case 214: /* Line 1792 of yacc.c */ -#line 849 "./util/configparser.y" +#line 850 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3133,9 +3143,9 @@ yyreduce: } break; - case 214: + case 215: /* Line 1792 of yacc.c */ -#line 859 "./util/configparser.y" +#line 860 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3146,9 +3156,9 @@ yyreduce: } break; - case 215: + case 216: /* Line 1792 of yacc.c */ -#line 869 "./util/configparser.y" +#line 870 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3159,9 +3169,9 @@ yyreduce: } break; - case 216: + case 217: /* Line 1792 of yacc.c */ -#line 879 "./util/configparser.y" +#line 880 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3172,9 +3182,9 @@ yyreduce: } break; - case 217: + case 218: /* Line 1792 of yacc.c */ -#line 889 "./util/configparser.y" +#line 890 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str))) @@ -3182,9 +3192,9 @@ yyreduce: } break; - case 218: + case 219: /* Line 1792 of yacc.c */ -#line 896 "./util/configparser.y" +#line 897 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) @@ -3192,9 +3202,9 @@ yyreduce: } break; - case 219: + case 220: /* Line 1792 of yacc.c */ -#line 903 "./util/configparser.y" +#line 904 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) @@ -3202,9 +3212,9 @@ yyreduce: } break; - case 220: + case 221: /* Line 1792 of yacc.c */ -#line 910 "./util/configparser.y" +#line 911 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3214,9 +3224,9 @@ yyreduce: } break; - case 221: + case 222: /* Line 1792 of yacc.c */ -#line 919 "./util/configparser.y" +#line 920 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3226,9 +3236,9 @@ yyreduce: } break; - case 222: + case 223: /* Line 1792 of yacc.c */ -#line 928 "./util/configparser.y" +#line 929 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3238,9 +3248,9 @@ yyreduce: } break; - case 223: + case 224: /* Line 1792 of yacc.c */ -#line 937 "./util/configparser.y" +#line 938 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -3248,9 +3258,9 @@ yyreduce: } break; - case 224: + case 225: /* Line 1792 of yacc.c */ -#line 944 "./util/configparser.y" +#line 945 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3261,9 +3271,9 @@ yyreduce: } break; - case 225: + case 226: /* Line 1792 of yacc.c */ -#line 954 "./util/configparser.y" +#line 955 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -3281,9 +3291,9 @@ yyreduce: } break; - case 226: + case 227: /* Line 1792 of yacc.c */ -#line 971 "./util/configparser.y" +#line 972 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -3291,9 +3301,9 @@ yyreduce: } break; - case 227: + case 228: /* Line 1792 of yacc.c */ -#line 978 "./util/configparser.y" +#line 979 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3312,9 +3322,9 @@ yyreduce: } break; - case 228: + case 229: /* Line 1792 of yacc.c */ -#line 996 "./util/configparser.y" +#line 997 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3328,9 +3338,9 @@ yyreduce: } break; - case 229: + case 230: /* Line 1792 of yacc.c */ -#line 1009 "./util/configparser.y" +#line 1010 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -3344,9 +3354,9 @@ yyreduce: } break; - case 230: + case 231: /* Line 1792 of yacc.c */ -#line 1022 "./util/configparser.y" +#line 1023 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3356,9 +3366,9 @@ yyreduce: } break; - case 231: + case 232: /* Line 1792 of yacc.c */ -#line 1031 "./util/configparser.y" +#line 1032 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3368,9 +3378,9 @@ yyreduce: } break; - case 232: + case 233: /* Line 1792 of yacc.c */ -#line 1040 "./util/configparser.y" +#line 1041 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3380,9 +3390,9 @@ yyreduce: } break; - case 233: + case 234: /* Line 1792 of yacc.c */ -#line 1049 "./util/configparser.y" +#line 1050 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3392,9 +3402,9 @@ yyreduce: } break; - case 234: + case 235: /* Line 1792 of yacc.c */ -#line 1058 "./util/configparser.y" +#line 1059 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3405,9 +3415,9 @@ yyreduce: } break; - case 235: + case 236: /* Line 1792 of yacc.c */ -#line 1068 "./util/configparser.y" +#line 1069 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3418,9 +3428,9 @@ yyreduce: } break; - case 236: + case 237: /* Line 1792 of yacc.c */ -#line 1078 "./util/configparser.y" +#line 1079 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3430,9 +3440,9 @@ yyreduce: } break; - case 237: + case 238: /* Line 1792 of yacc.c */ -#line 1087 "./util/configparser.y" +#line 1088 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3442,9 +3452,9 @@ yyreduce: } break; - case 238: + case 239: /* Line 1792 of yacc.c */ -#line 1096 "./util/configparser.y" +#line 1097 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -3452,9 +3462,9 @@ yyreduce: } break; - case 239: + case 240: /* Line 1792 of yacc.c */ -#line 1103 "./util/configparser.y" +#line 1104 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3464,9 +3474,9 @@ yyreduce: } break; - case 240: + case 241: /* Line 1792 of yacc.c */ -#line 1112 "./util/configparser.y" +#line 1113 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3476,9 +3486,9 @@ yyreduce: } break; - case 241: + case 242: /* Line 1792 of yacc.c */ -#line 1121 "./util/configparser.y" +#line 1122 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3488,9 +3498,9 @@ yyreduce: } break; - case 242: + case 243: /* Line 1792 of yacc.c */ -#line 1130 "./util/configparser.y" +#line 1131 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3501,9 +3511,9 @@ yyreduce: } break; - case 243: + case 244: /* Line 1792 of yacc.c */ -#line 1139 "./util/configparser.y" +#line 1140 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -3512,9 +3522,9 @@ yyreduce: } break; - case 244: + case 245: /* Line 1792 of yacc.c */ -#line 1147 "./util/configparser.y" +#line 1148 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3528,9 +3538,9 @@ yyreduce: } break; - case 245: + case 246: /* Line 1792 of yacc.c */ -#line 1160 "./util/configparser.y" +#line 1161 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) @@ -3539,9 +3549,9 @@ yyreduce: } break; - case 246: + case 247: /* Line 1792 of yacc.c */ -#line 1168 "./util/configparser.y" +#line 1169 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -3566,9 +3576,9 @@ yyreduce: } break; - case 247: + case 248: /* Line 1792 of yacc.c */ -#line 1192 "./util/configparser.y" +#line 1193 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -3576,9 +3586,9 @@ yyreduce: } break; - case 248: + case 249: /* Line 1792 of yacc.c */ -#line 1199 "./util/configparser.y" +#line 1200 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3594,9 +3604,9 @@ yyreduce: } break; - case 249: + case 250: /* Line 1792 of yacc.c */ -#line 1214 "./util/configparser.y" +#line 1215 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3607,9 +3617,9 @@ yyreduce: } break; - case 250: + case 251: /* Line 1792 of yacc.c */ -#line 1224 "./util/configparser.y" +#line 1225 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3620,9 +3630,9 @@ yyreduce: } break; - case 251: + case 252: /* Line 1792 of yacc.c */ -#line 1234 "./util/configparser.y" +#line 1235 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); @@ -3630,9 +3640,9 @@ yyreduce: } break; - case 252: + case 253: /* Line 1792 of yacc.c */ -#line 1241 "./util/configparser.y" +#line 1242 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dns64_prefix); @@ -3640,9 +3650,9 @@ yyreduce: } break; - case 253: + case 254: /* Line 1792 of yacc.c */ -#line 1248 "./util/configparser.y" +#line 1249 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3652,9 +3662,9 @@ yyreduce: } break; - case 254: + case 255: /* Line 1792 of yacc.c */ -#line 1257 "./util/configparser.y" +#line 1258 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3664,9 +3674,9 @@ yyreduce: } break; - case 255: + case 256: /* Line 1792 of yacc.c */ -#line 1266 "./util/configparser.y" +#line 1267 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size)) @@ -3675,9 +3685,9 @@ yyreduce: } break; - case 256: + case 257: /* Line 1792 of yacc.c */ -#line 1274 "./util/configparser.y" +#line 1275 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3691,9 +3701,9 @@ yyreduce: } break; - case 257: + case 258: /* Line 1792 of yacc.c */ -#line 1287 "./util/configparser.y" +#line 1288 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { @@ -3707,9 +3717,9 @@ yyreduce: } break; - case 258: + case 259: /* Line 1792 of yacc.c */ -#line 1300 "./util/configparser.y" +#line 1301 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { @@ -3723,9 +3733,9 @@ yyreduce: } break; - case 259: + case 260: /* Line 1792 of yacc.c */ -#line 1313 "./util/configparser.y" +#line 1314 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3735,9 +3745,22 @@ yyreduce: } break; - case 260: + case 261: +/* Line 1792 of yacc.c */ +#line 1323 "./util/configparser.y" + { + OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 262: /* Line 1792 of yacc.c */ -#line 1322 "./util/configparser.y" +#line 1333 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->stubs->name) @@ -3748,9 +3771,9 @@ yyreduce: } break; - case 261: + case 263: /* Line 1792 of yacc.c */ -#line 1332 "./util/configparser.y" +#line 1343 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -3758,9 +3781,9 @@ yyreduce: } break; - case 262: + case 264: /* Line 1792 of yacc.c */ -#line 1339 "./util/configparser.y" +#line 1350 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -3768,9 +3791,9 @@ yyreduce: } break; - case 263: + case 265: /* Line 1792 of yacc.c */ -#line 1346 "./util/configparser.y" +#line 1357 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3780,9 +3803,9 @@ yyreduce: } break; - case 264: + case 266: /* Line 1792 of yacc.c */ -#line 1355 "./util/configparser.y" +#line 1366 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3793,9 +3816,9 @@ yyreduce: } break; - case 265: + case 267: /* Line 1792 of yacc.c */ -#line 1365 "./util/configparser.y" +#line 1376 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->forwards->name) @@ -3806,9 +3829,9 @@ yyreduce: } break; - case 266: + case 268: /* Line 1792 of yacc.c */ -#line 1375 "./util/configparser.y" +#line 1386 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -3816,9 +3839,9 @@ yyreduce: } break; - case 267: + case 269: /* Line 1792 of yacc.c */ -#line 1382 "./util/configparser.y" +#line 1393 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -3826,9 +3849,9 @@ yyreduce: } break; - case 268: + case 270: /* Line 1792 of yacc.c */ -#line 1389 "./util/configparser.y" +#line 1400 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3838,17 +3861,17 @@ yyreduce: } break; - case 269: + case 271: /* Line 1792 of yacc.c */ -#line 1398 "./util/configparser.y" +#line 1409 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 280: + case 282: /* Line 1792 of yacc.c */ -#line 1409 "./util/configparser.y" +#line 1420 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3859,9 +3882,9 @@ yyreduce: } break; - case 281: + case 283: /* Line 1792 of yacc.c */ -#line 1419 "./util/configparser.y" +#line 1430 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3871,9 +3894,9 @@ yyreduce: } break; - case 282: + case 284: /* Line 1792 of yacc.c */ -#line 1428 "./util/configparser.y" +#line 1439 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) @@ -3881,9 +3904,9 @@ yyreduce: } break; - case 283: + case 285: /* Line 1792 of yacc.c */ -#line 1435 "./util/configparser.y" +#line 1446 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3894,9 +3917,9 @@ yyreduce: } break; - case 284: + case 286: /* Line 1792 of yacc.c */ -#line 1445 "./util/configparser.y" +#line 1456 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3904,9 +3927,9 @@ yyreduce: } break; - case 285: + case 287: /* Line 1792 of yacc.c */ -#line 1452 "./util/configparser.y" +#line 1463 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3914,9 +3937,9 @@ yyreduce: } break; - case 286: + case 288: /* Line 1792 of yacc.c */ -#line 1459 "./util/configparser.y" +#line 1470 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3924,9 +3947,9 @@ yyreduce: } break; - case 287: + case 289: /* Line 1792 of yacc.c */ -#line 1466 "./util/configparser.y" +#line 1477 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3934,17 +3957,17 @@ yyreduce: } break; - case 288: + case 290: /* Line 1792 of yacc.c */ -#line 1473 "./util/configparser.y" +#line 1484 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } break; - case 303: + case 305: /* Line 1792 of yacc.c */ -#line 1490 "./util/configparser.y" +#line 1501 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3953,9 +3976,9 @@ yyreduce: } break; - case 304: + case 306: /* Line 1792 of yacc.c */ -#line 1498 "./util/configparser.y" +#line 1509 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_socket_path); @@ -3963,9 +3986,9 @@ yyreduce: } break; - case 305: + case 307: /* Line 1792 of yacc.c */ -#line 1505 "./util/configparser.y" +#line 1516 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3974,9 +3997,9 @@ yyreduce: } break; - case 306: + case 308: /* Line 1792 of yacc.c */ -#line 1513 "./util/configparser.y" +#line 1524 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3985,9 +4008,9 @@ yyreduce: } break; - case 307: + case 309: /* Line 1792 of yacc.c */ -#line 1521 "./util/configparser.y" +#line 1532 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_identity); @@ -3995,9 +4018,9 @@ yyreduce: } break; - case 308: + case 310: /* Line 1792 of yacc.c */ -#line 1528 "./util/configparser.y" +#line 1539 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dnstap_version); @@ -4005,9 +4028,9 @@ yyreduce: } break; - case 309: + case 311: /* Line 1792 of yacc.c */ -#line 1535 "./util/configparser.y" +#line 1546 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4017,9 +4040,9 @@ yyreduce: } break; - case 310: + case 312: /* Line 1792 of yacc.c */ -#line 1544 "./util/configparser.y" +#line 1555 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4029,9 +4052,9 @@ yyreduce: } break; - case 311: + case 313: /* Line 1792 of yacc.c */ -#line 1553 "./util/configparser.y" +#line 1564 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4041,9 +4064,9 @@ yyreduce: } break; - case 312: + case 314: /* Line 1792 of yacc.c */ -#line 1562 "./util/configparser.y" +#line 1573 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4053,9 +4076,9 @@ yyreduce: } break; - case 313: + case 315: /* Line 1792 of yacc.c */ -#line 1571 "./util/configparser.y" +#line 1582 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4065,9 +4088,9 @@ yyreduce: } break; - case 314: + case 316: /* Line 1792 of yacc.c */ -#line 1580 "./util/configparser.y" +#line 1591 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -4077,17 +4100,17 @@ yyreduce: } break; - case 315: + case 317: /* Line 1792 of yacc.c */ -#line 1589 "./util/configparser.y" +#line 1600 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; - case 319: + case 321: /* Line 1792 of yacc.c */ -#line 1598 "./util/configparser.y" +#line 1609 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -4097,7 +4120,7 @@ yyreduce: /* Line 1792 of yacc.c */ -#line 4101 "util/configparser.c" +#line 4124 "util/configparser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4329,7 +4352,7 @@ yyreturn: /* Line 2055 of yacc.c */ -#line 1603 "./util/configparser.y" +#line 1614 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/external/unbound/util/configparser.h b/external/unbound/util/configparser.h index ca2daeefd..53e5adcb6 100644 --- a/external/unbound/util/configparser.h +++ b/external/unbound/util/configparser.h @@ -204,7 +204,8 @@ extern int yydebug; VAR_RATELIMIT_FACTOR = 413, VAR_CAPS_WHITELIST = 414, VAR_CACHE_MAX_NEGATIVE_TTL = 415, - VAR_PERMIT_SMALL_HOLDDOWN = 416 + VAR_PERMIT_SMALL_HOLDDOWN = 416, + VAR_QNAME_MINIMISATION = 417 }; #endif /* Tokens. */ @@ -367,6 +368,7 @@ extern int yydebug; #define VAR_CAPS_WHITELIST 414 #define VAR_CACHE_MAX_NEGATIVE_TTL 415 #define VAR_PERMIT_SMALL_HOLDDOWN 416 +#define VAR_QNAME_MINIMISATION 417 @@ -380,7 +382,7 @@ typedef union YYSTYPE /* Line 2058 of yacc.c */ -#line 384 "util/configparser.h" +#line 386 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/external/unbound/util/configparser.y b/external/unbound/util/configparser.y index d6db3c86f..abc0bb0d7 100644 --- a/external/unbound/util/configparser.y +++ b/external/unbound/util/configparser.y @@ -122,6 +122,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN +%token VAR_QNAME_MINIMISATION %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -186,7 +187,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_ratelimit_size | server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | server_caps_whitelist | server_cache_max_negative_ttl | - server_permit_small_holddown + server_permit_small_holddown | server_qname_minimisation ; stubstart: VAR_STUB_ZONE { @@ -1318,6 +1319,16 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG free($2); } ; +server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG + { + OUTYY(("P(server_qname_minimisation:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation = + (strcmp($2, "yes")==0); + free($2); + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); diff --git a/external/unbound/util/data/packed_rrset.c b/external/unbound/util/data/packed_rrset.c index 0a5c9d327..66399085a 100644 --- a/external/unbound/util/data/packed_rrset.c +++ b/external/unbound/util/data/packed_rrset.c @@ -57,11 +57,9 @@ ub_packed_rrset_parsedelete(struct ub_packed_rrset_key* pkey, { if(!pkey) return; - if(pkey->entry.data) - free(pkey->entry.data); + free(pkey->entry.data); pkey->entry.data = NULL; - if(pkey->rk.dname) - free(pkey->rk.dname); + free(pkey->rk.dname); pkey->rk.dname = NULL; pkey->id = 0; alloc_special_release(alloc, pkey); diff --git a/external/unbound/util/iana_ports.inc b/external/unbound/util/iana_ports.inc index 91dd39abe..b09a9ad95 100644 --- a/external/unbound/util/iana_ports.inc +++ b/external/unbound/util/iana_ports.inc @@ -660,6 +660,7 @@ 833, 847, 848, +853, 860, 861, 862, @@ -3840,6 +3841,9 @@ 4404, 4405, 4406, +4412, +4413, +4416, 4425, 4426, 4430, @@ -4570,6 +4574,7 @@ 7070, 7071, 7080, +7088, 7095, 7099, 7100, @@ -5381,6 +5386,7 @@ 38203, 39681, 40000, +40023, 40841, 40842, 40843, diff --git a/external/unbound/util/locks.c b/external/unbound/util/locks.c index 509895d02..adfb6c062 100644 --- a/external/unbound/util/locks.c +++ b/external/unbound/util/locks.c @@ -232,7 +232,7 @@ void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg) 0, /* default flags, run immediately */ NULL); /* do not store thread identifier anywhere */ #else - /* the begintheadex routine setups for the C lib; aligns stack */ + /* the beginthreadex routine setups for the C lib; aligns stack */ *thr=(ub_thread_t)_beginthreadex(NULL, 0, (void*)func, arg, 0, NULL); #endif if(*thr == NULL) { diff --git a/external/unbound/util/mini_event.c b/external/unbound/util/mini_event.c index 40dca375a..98d15f677 100644 --- a/external/unbound/util/mini_event.c +++ b/external/unbound/util/mini_event.c @@ -261,12 +261,9 @@ void event_base_free(struct event_base* base) { if(!base) return; - if(base->times) - free(base->times); - if(base->fds) - free(base->fds); - if(base->signals) - free(base->signals); + free(base->times); + free(base->fds); + free(base->signals); free(base); } diff --git a/external/unbound/util/net_help.c b/external/unbound/util/net_help.c index 07605b19f..eb03cd0ae 100644 --- a/external/unbound/util/net_help.c +++ b/external/unbound/util/net_help.c @@ -619,12 +619,14 @@ void* listen_sslctx_create(char* key, char* pem, char* verifypem) return NULL; } /* no SSLv2, SSLv3 because has defects */ - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)){ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) + != SSL_OP_NO_SSLv2){ log_crypto_err("could not set SSL_OP_NO_SSLv2"); SSL_CTX_free(ctx); return NULL; } - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)){ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) + != SSL_OP_NO_SSLv3){ log_crypto_err("could not set SSL_OP_NO_SSLv3"); SSL_CTX_free(ctx); return NULL; @@ -690,12 +692,14 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem) log_crypto_err("could not allocate SSL_CTX pointer"); return NULL; } - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2)) { + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) + != SSL_OP_NO_SSLv2) { log_crypto_err("could not set SSL_OP_NO_SSLv2"); SSL_CTX_free(ctx); return NULL; } - if(!(SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3)) { + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) + != SSL_OP_NO_SSLv3) { log_crypto_err("could not set SSL_OP_NO_SSLv3"); SSL_CTX_free(ctx); return NULL; diff --git a/external/unbound/util/random.c b/external/unbound/util/random.c index 71f0ba53e..8332960b4 100644 --- a/external/unbound/util/random.c +++ b/external/unbound/util/random.c @@ -68,6 +68,8 @@ /* nss3 */ #include "secport.h" #include "pk11pub.h" +#elif defined(HAVE_NETTLE) +#include "yarrow.h" #endif /** @@ -76,7 +78,7 @@ */ #define MAX_VALUE 0x7fffffff -#ifndef HAVE_NSS +#if defined(HAVE_SSL) void ub_systemseed(unsigned int ATTR_UNUSED(seed)) { @@ -110,7 +112,7 @@ ub_random_max(struct ub_randstate* state, long int x) return (long)arc4random_uniform((uint32_t)x); } -#else +#elif defined(HAVE_NSS) /* not much to remember for NSS since we use its pk11_random, placeholder */ struct ub_randstate { @@ -144,6 +146,72 @@ long int ub_random(struct ub_randstate* ATTR_UNUSED(state)) return x & MAX_VALUE; } +#elif defined(HAVE_NETTLE) + +/** + * libnettle implements a Yarrow-256 generator (SHA256 + AES), + * and we have to ensure it is seeded before use. + */ +struct ub_randstate { + struct yarrow256_ctx ctx; + int seeded; +}; + +void ub_systemseed(unsigned int ATTR_UNUSED(seed)) +{ +/** + * We seed on init and not here, as we need the ctx to re-seed. + * This also means that re-seeding is not supported. + */ + log_err("Re-seeding not supported, generator untouched"); +} + +struct ub_randstate* ub_initstate(unsigned int seed, + struct ub_randstate* ATTR_UNUSED(from)) +{ + struct ub_randstate* s = (struct ub_randstate*)calloc(1, sizeof(*s)); + uint8_t buf[YARROW256_SEED_FILE_SIZE]; + if(!s) { + log_err("malloc failure in random init"); + return NULL; + } + /* Setup Yarrow context */ + yarrow256_init(&s->ctx, 0, NULL); + + if(getentropy(buf, sizeof(buf)) != -1) { + /* got entropy */ + yarrow256_seed(&s->ctx, YARROW256_SEED_FILE_SIZE, buf); + s->seeded = yarrow256_is_seeded(&s->ctx); + } else { + /* Stretch the uint32 input seed and feed it to Yarrow */ + uint32_t v = seed; + size_t i; + for(i=0; i < (YARROW256_SEED_FILE_SIZE/sizeof(seed)); i++) { + memmove(buf+i*sizeof(seed), &v, sizeof(seed)); + v = v*seed + (uint32_t)i; + } + yarrow256_seed(&s->ctx, YARROW256_SEED_FILE_SIZE, buf); + s->seeded = yarrow256_is_seeded(&s->ctx); + } + + return s; +} + +long int ub_random(struct ub_randstate* s) +{ + /* random 31 bit value. */ + long int x = 0; + if (!s || !s->seeded) { + log_err("Couldn't generate randomness, Yarrow-256 generator not yet seeded"); + } else { + yarrow256_random(&s->ctx, sizeof(x), (uint8_t *)&x); + } + return x & MAX_VALUE; +} +#endif /* HAVE_SSL or HAVE_NSS or HAVE_NETTLE */ + + +#if defined(HAVE_NSS) || defined(HAVE_NETTLE) long int ub_random_max(struct ub_randstate* state, long int x) { @@ -155,12 +223,11 @@ ub_random_max(struct ub_randstate* state, long int x) v = ub_random(state); return (v % x); } -#endif /* HAVE_NSS */ +#endif /* HAVE_NSS or HAVE_NETTLE */ void ub_randfree(struct ub_randstate* s) { - if(s) - free(s); + free(s); /* user app must do RAND_cleanup(); */ } diff --git a/external/unbound/util/rbtree.c b/external/unbound/util/rbtree.c index a898f13f0..ee5446f6c 100644 --- a/external/unbound/util/rbtree.c +++ b/external/unbound/util/rbtree.c @@ -68,7 +68,7 @@ static void rbtree_insert_fixup(rbtree_t *rbtree, rbnode_t *node); static void rbtree_delete_fixup(rbtree_t* rbtree, rbnode_t* child, rbnode_t* child_parent); /* - * Creates a new red black tree, intializes and returns a pointer to it. + * Creates a new red black tree, initializes and returns a pointer to it. * * Return NULL on failure. * diff --git a/external/unbound/util/rtt.h b/external/unbound/util/rtt.h index d6da98606..07e65ee1d 100644 --- a/external/unbound/util/rtt.h +++ b/external/unbound/util/rtt.h @@ -96,7 +96,7 @@ int rtt_notimeout(const struct rtt_info* rtt); void rtt_update(struct rtt_info* rtt, int ms); /** - * Update the statistics with a new timout expired observation. + * Update the statistics with a new timeout expired observation. * @param rtt: round trip statistics structure. * @param orig: original rtt time given for the query that timed out. * Used to calculate the maximum responsible backed off time that diff --git a/external/unbound/util/storage/lookup3.c b/external/unbound/util/storage/lookup3.c index de288587b..ddcb56e74 100644 --- a/external/unbound/util/storage/lookup3.c +++ b/external/unbound/util/storage/lookup3.c @@ -356,7 +356,7 @@ uint32_t hashlittle( const void *key, size_t length, uint32_t initval) * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash - * noticably faster for short strings (like English words). + * noticeably faster for short strings (like English words). */ #ifndef VALGRIND @@ -544,7 +544,7 @@ void hashlittle2( * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash - * noticably faster for short strings (like English words). + * noticeably faster for short strings (like English words). */ #ifndef VALGRIND @@ -725,7 +725,7 @@ uint32_t hashbig( const void *key, size_t length, uint32_t initval) * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash - * noticably faster for short strings (like English words). + * noticeably faster for short strings (like English words). */ #ifndef VALGRIND @@ -858,7 +858,7 @@ void driver2() { for (j=0; j<8; ++j) /*------------------------ for each input bit, */ { - for (m=1; m<8; ++m) /*------------ for serveral possible initvals, */ + for (m=1; m<8; ++m) /*------------ for several possible initvals, */ { for (l=0; l<HASHSTATE; ++l) e[l]=f[l]=g[l]=h[l]=x[l]=y[l]=~((uint32_t)0); diff --git a/external/unbound/util/tube.c b/external/unbound/util/tube.c index 2106a078c..053547438 100644 --- a/external/unbound/util/tube.c +++ b/external/unbound/util/tube.c @@ -118,10 +118,8 @@ void tube_remove_bg_listen(struct tube* tube) comm_point_delete(tube->listen_com); tube->listen_com = NULL; } - if(tube->cmd_msg) { - free(tube->cmd_msg); - tube->cmd_msg = NULL; - } + free(tube->cmd_msg); + tube->cmd_msg = NULL; } void tube_remove_bg_write(struct tube* tube) diff --git a/external/unbound/util/tube.h b/external/unbound/util/tube.h index 9ec50af38..6cc60502b 100644 --- a/external/unbound/util/tube.h +++ b/external/unbound/util/tube.h @@ -83,7 +83,7 @@ struct tube { /** background write queue, commpoint to write results back */ struct comm_point* res_com; - /** are we curently writing a result, 0 if not, else bytecount into + /** are we currently writing a result, 0 if not, else bytecount into * the res_list first entry. */ size_t res_write; /** list of outstanding results to be written back */ diff --git a/external/unbound/util/winsock_event.c b/external/unbound/util/winsock_event.c index 38661a5e1..40b79821a 100644 --- a/external/unbound/util/winsock_event.c +++ b/external/unbound/util/winsock_event.c @@ -459,12 +459,9 @@ void event_base_free(struct event_base *base) verbose(VERB_CLIENT, "winsock_event event_base_free"); if(!base) return; - if(base->items) - free(base->items); - if(base->times) - free(base->times); - if(base->signals) - free(base->signals); + free(base->items); + free(base->times); + free(base->signals); free(base); } diff --git a/external/unbound/util/winsock_event.h b/external/unbound/util/winsock_event.h index f64265743..d386a699f 100644 --- a/external/unbound/util/winsock_event.h +++ b/external/unbound/util/winsock_event.h @@ -201,7 +201,7 @@ struct event { int stick_events; /** true if this event is a signaling WSAEvent by the user. - * User created and user closed WSAEvent. Only signaled/unsigneled, + * User created and user closed WSAEvent. Only signaled/unsignaled, * no read/write/distinctions needed. */ int is_signal; /** used during callbacks to see which events were just checked */ diff --git a/external/unbound/validator/autotrust.c b/external/unbound/validator/autotrust.c index e63b086e6..f8c9c8c63 100644 --- a/external/unbound/validator/autotrust.c +++ b/external/unbound/validator/autotrust.c @@ -1195,6 +1195,14 @@ void autr_write_file(struct module_env* env, struct trust_anchor* tp) fatal_exit("could not completely write: %s", fname); return; } + if(fflush(out) != 0) + log_err("could not fflush(%s): %s", fname, strerror(errno)); +#ifdef HAVE_FSYNC + if(fsync(fileno(out)) != 0) + log_err("could not fsync(%s): %s", fname, strerror(errno)); +#else + FlushFileBuffers((HANDLE)_fileno(out)); +#endif if(fclose(out) != 0) { fatal_exit("could not complete write: %s: %s", fname, strerror(errno)); @@ -2162,7 +2170,7 @@ int autr_process_prime(struct module_env* env, struct val_env* ve, if(!verify_dnskey(env, ve, tp, dnskey_rrset)) { verbose(VERB_ALGO, "autotrust: dnskey did not verify."); /* only increase failure count if this is not the first prime, - * this means there was a previous succesful probe */ + * this means there was a previous successful probe */ if(tp->autr->last_success) { tp->autr->query_failed += 1; autr_write_file(env, tp); diff --git a/external/unbound/validator/val_neg.c b/external/unbound/validator/val_neg.c index b1ff8d9a1..ab31f483e 100644 --- a/external/unbound/validator/val_neg.c +++ b/external/unbound/validator/val_neg.c @@ -38,7 +38,7 @@ * * This file contains helper functions for the validator module. * The functions help with aggressive negative caching. - * This creates new denials of existance, and proofs for absence of types + * This creates new denials of existence, and proofs for absence of types * from cached NSEC records. */ #include "config.h" diff --git a/external/unbound/validator/val_neg.h b/external/unbound/validator/val_neg.h index 967d1a70f..bf3a2471c 100644 --- a/external/unbound/validator/val_neg.h +++ b/external/unbound/validator/val_neg.h @@ -38,7 +38,7 @@ * * This file contains helper functions for the validator module. * The functions help with aggressive negative caching. - * This creates new denials of existance, and proofs for absence of types + * This creates new denials of existence, and proofs for absence of types * from cached NSEC records. */ diff --git a/external/unbound/validator/val_nsec.c b/external/unbound/validator/val_nsec.c index bdfe3c8fa..f104a347c 100644 --- a/external/unbound/validator/val_nsec.c +++ b/external/unbound/validator/val_nsec.c @@ -1,5 +1,5 @@ /* - * validator/val_nsec.c - validator NSEC denial of existance functions. + * validator/val_nsec.c - validator NSEC denial of existence functions. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * @@ -38,7 +38,7 @@ * * This file contains helper functions for the validator module. * The functions help with NSEC checking, the different NSEC proofs - * for denial of existance, and proofs for presence of types. + * for denial of existence, and proofs for presence of types. */ #include "config.h" #include "validator/val_nsec.h" @@ -279,7 +279,7 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, return sec_status_insecure; } - /* NSEC proof did not conlusively point to DS or no DS */ + /* NSEC proof did not conclusively point to DS or no DS */ return sec_status_unchecked; } @@ -340,6 +340,28 @@ int nsec_proves_nodata(struct ub_packed_rrset_key* nsec, *wc = ce; return 1; } + } else { + /* See if the next owner name covers a wildcard + * empty non-terminal. */ + while (dname_strict_subdomain_c(nm, nsec->rk.dname)) { + /* wildcard does not apply if qname below + * the name that exists under the '*' */ + if (dname_subdomain_c(qinfo->qname, nm)) + break; + /* but if it is a wildcard and qname is below + * it, then the wildcard applies. The wildcard + * is an empty nonterminal. nodata proven. */ + if (dname_is_wild(nm)) { + size_t ce_len = ln; + uint8_t* ce = nm; + dname_remove_label(&ce, &ce_len); + if(dname_strict_subdomain_c(qinfo->qname, ce)) { + *wc = ce; + return 1; + } + } + dname_remove_label(&nm, &ln); + } } /* Otherwise, this NSEC does not prove ENT and is not a diff --git a/external/unbound/validator/val_nsec.h b/external/unbound/validator/val_nsec.h index f680d08c0..c031c9a3b 100644 --- a/external/unbound/validator/val_nsec.h +++ b/external/unbound/validator/val_nsec.h @@ -1,5 +1,5 @@ /* - * validator/val_nsec.h - validator NSEC denial of existance functions. + * validator/val_nsec.h - validator NSEC denial of existence functions. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * @@ -38,7 +38,7 @@ * * This file contains helper functions for the validator module. * The functions help with NSEC checking, the different NSEC proofs - * for denial of existance, and proofs for presence of types. + * for denial of existence, and proofs for presence of types. */ #ifndef VALIDATOR_VAL_NSEC_H @@ -54,7 +54,7 @@ struct key_entry_key; /** * Check DS absence. * There is a NODATA reply to a DS that needs checking. - * NSECs can prove this is not a delegation point, or sucessfully prove + * NSECs can prove this is not a delegation point, or successfully prove * that there is no DS. Or this fails. * * @param env: module env for rrsig verification routines. diff --git a/external/unbound/validator/val_nsec3.c b/external/unbound/validator/val_nsec3.c index 80ca4d0ba..22867d170 100644 --- a/external/unbound/validator/val_nsec3.c +++ b/external/unbound/validator/val_nsec3.c @@ -1,5 +1,5 @@ /* - * validator/val_nsec3.c - validator NSEC3 denial of existance functions. + * validator/val_nsec3.c - validator NSEC3 denial of existence functions. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * @@ -38,18 +38,12 @@ * * This file contains helper functions for the validator module. * The functions help with NSEC3 checking, the different NSEC3 proofs - * for denial of existance, and proofs for presence of types. + * for denial of existence, and proofs for presence of types. */ #include "config.h" #include <ctype.h> -#ifdef HAVE_OPENSSL_SSL_H -#include "openssl/ssl.h" -#endif -#ifdef HAVE_NSS -/* nss3 */ -#include "sechash.h" -#endif #include "validator/val_nsec3.h" +#include "validator/val_secalgo.h" #include "validator/validator.h" #include "validator/val_kentry.h" #include "services/cache/rrset.h" @@ -370,8 +364,8 @@ filter_next(struct nsec3_filter* filter, size_t* rrsetnum, int* rrnum) /** * Start iterating over NSEC3 records. * @param filter: the filter structure, must have been filter_init-ed. - * @param rrsetnum: can be undefined on call, inited. - * @param rrnum: can be undefined on call, inited. + * @param rrsetnum: can be undefined on call, initialised. + * @param rrnum: can be undefined on call, initialised. * @return first rrset of an NSEC3, together with rrnum this points to * the first RR to examine. Is NULL on empty list. */ @@ -545,46 +539,24 @@ nsec3_get_hashed(sldns_buffer* buf, uint8_t* nm, size_t nmlen, int algo, query_dname_tolower(sldns_buffer_begin(buf)); sldns_buffer_write(buf, salt, saltlen); sldns_buffer_flip(buf); - switch(algo) { -#if defined(HAVE_EVP_SHA1) || defined(HAVE_NSS) - case NSEC3_HASH_SHA1: -#ifdef HAVE_SSL - hash_len = SHA_DIGEST_LENGTH; -#else - hash_len = SHA1_LENGTH; -#endif - if(hash_len > max) - return 0; -# ifdef HAVE_SSL - (void)SHA1((unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf), - (unsigned char*)res); -# else - (void)HASH_HashBuf(HASH_AlgSHA1, (unsigned char*)res, - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf)); -# endif - for(i=0; i<iter; i++) { - sldns_buffer_clear(buf); - sldns_buffer_write(buf, res, hash_len); - sldns_buffer_write(buf, salt, saltlen); - sldns_buffer_flip(buf); -# ifdef HAVE_SSL - (void)SHA1( - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf), - (unsigned char*)res); -# else - (void)HASH_HashBuf(HASH_AlgSHA1, - (unsigned char*)res, - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf)); -# endif - } - break; -#endif /* HAVE_EVP_SHA1 or NSS */ - default: - log_err("nsec3 hash of unknown algo %d", algo); + hash_len = nsec3_hash_algo_size_supported(algo); + if(hash_len == 0) { + log_err("nsec3 hash of unknown algo %d", algo); + return 0; + } + if(hash_len > max) + return 0; + if(!secalgo_nsec3_hash(algo, (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf), (unsigned char*)res)) + return 0; + for(i=0; i<iter; i++) { + sldns_buffer_clear(buf); + sldns_buffer_write(buf, res, hash_len); + sldns_buffer_write(buf, salt, saltlen); + sldns_buffer_flip(buf); + if(!secalgo_nsec3_hash(algo, + (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf), (unsigned char*)res)) return 0; } return hash_len; @@ -607,50 +579,24 @@ nsec3_calc_hash(struct regional* region, sldns_buffer* buf, query_dname_tolower(sldns_buffer_begin(buf)); sldns_buffer_write(buf, salt, saltlen); sldns_buffer_flip(buf); - switch(algo) { -#if defined(HAVE_EVP_SHA1) || defined(HAVE_NSS) - case NSEC3_HASH_SHA1: -#ifdef HAVE_SSL - c->hash_len = SHA_DIGEST_LENGTH; -#else - c->hash_len = SHA1_LENGTH; -#endif - c->hash = (uint8_t*)regional_alloc(region, - c->hash_len); - if(!c->hash) - return 0; -# ifdef HAVE_SSL - (void)SHA1((unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf), - (unsigned char*)c->hash); -# else - (void)HASH_HashBuf(HASH_AlgSHA1, - (unsigned char*)c->hash, - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf)); -# endif - for(i=0; i<iter; i++) { - sldns_buffer_clear(buf); - sldns_buffer_write(buf, c->hash, c->hash_len); - sldns_buffer_write(buf, salt, saltlen); - sldns_buffer_flip(buf); -# ifdef HAVE_SSL - (void)SHA1( - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf), - (unsigned char*)c->hash); -# else - (void)HASH_HashBuf(HASH_AlgSHA1, - (unsigned char*)c->hash, - (unsigned char*)sldns_buffer_begin(buf), - (unsigned long)sldns_buffer_limit(buf)); -# endif - } - break; -#endif /* HAVE_EVP_SHA1 or NSS */ - default: - log_err("nsec3 hash of unknown algo %d", algo); - return -1; + c->hash_len = nsec3_hash_algo_size_supported(algo); + if(c->hash_len == 0) { + log_err("nsec3 hash of unknown algo %d", algo); + return -1; + } + c->hash = (uint8_t*)regional_alloc(region, c->hash_len); + if(!c->hash) + return 0; + (void)secalgo_nsec3_hash(algo, (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf), (unsigned char*)c->hash); + for(i=0; i<iter; i++) { + sldns_buffer_clear(buf); + sldns_buffer_write(buf, c->hash, c->hash_len); + sldns_buffer_write(buf, salt, saltlen); + sldns_buffer_flip(buf); + (void)secalgo_nsec3_hash(algo, + (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf), (unsigned char*)c->hash); } return 1; } diff --git a/external/unbound/validator/val_nsec3.h b/external/unbound/validator/val_nsec3.h index d619d672d..69ba78d83 100644 --- a/external/unbound/validator/val_nsec3.h +++ b/external/unbound/validator/val_nsec3.h @@ -1,5 +1,5 @@ /* - * validator/val_nsec3.h - validator NSEC3 denial of existance functions. + * validator/val_nsec3.h - validator NSEC3 denial of existence functions. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * @@ -38,7 +38,7 @@ * * This file contains helper functions for the validator module. * The functions help with NSEC3 checking, the different NSEC3 proofs - * for denial of existance, and proofs for presence of types. + * for denial of existence, and proofs for presence of types. * * NSEC3 * 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 @@ -256,7 +256,7 @@ int nsec3_hash_cmp(const void* c1, const void* c2); * Used internally by the nsec3 proof functions in this file. * published to enable unit testing of hash algorithms and cache. * - * @param table: the cache table. Must be inited at start. + * @param table: the cache table. Must be initialised at start. * @param region: scratch region to use for allocation. * This region holds the tree, if you wipe the region, reinit the tree. * @param buf: temporary buffer. diff --git a/external/unbound/validator/val_secalgo.c b/external/unbound/validator/val_secalgo.c index 8ed403dfc..7c8d7b287 100644 --- a/external/unbound/validator/val_secalgo.c +++ b/external/unbound/validator/val_secalgo.c @@ -44,12 +44,13 @@ /* packed_rrset on top to define enum types (forced by c99 standard) */ #include "util/data/packed_rrset.h" #include "validator/val_secalgo.h" +#include "validator/val_nsec3.h" #include "util/log.h" #include "sldns/rrdef.h" #include "sldns/keyraw.h" #include "sldns/sbuffer.h" -#if !defined(HAVE_SSL) && !defined(HAVE_NSS) +#if !defined(HAVE_SSL) && !defined(HAVE_NSS) && !defined(HAVE_NETTLE) #error "Need crypto library to do digital signature cryptography" #endif @@ -71,10 +72,36 @@ #include <openssl/engine.h> #endif +/* return size of digest if supported, or 0 otherwise */ +size_t +nsec3_hash_algo_size_supported(int id) +{ + switch(id) { + case NSEC3_HASH_SHA1: + return SHA_DIGEST_LENGTH; + default: + return 0; + } +} + +/* perform nsec3 hash. return false on failure */ +int +secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, + unsigned char* res) +{ + switch(algo) { + case NSEC3_HASH_SHA1: + (void)SHA1(buf, len, res); + return 1; + default: + return 0; + } +} + /** * Return size of DS digest according to its hash algorithm. * @param algo: DS digest algo. - * @return size in bytes of digest, or 0 if not supported. + * @return size in bytes of digest, or 0 if not supported. */ size_t ds_digest_size_supported(int algo) @@ -565,6 +592,32 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, /* nspr4 */ #include "prerror.h" +/* return size of digest if supported, or 0 otherwise */ +size_t +nsec3_hash_algo_size_supported(int id) +{ + switch(id) { + case NSEC3_HASH_SHA1: + return SHA1_LENGTH; + default: + return 0; + } +} + +/* perform nsec3 hash. return false on failure */ +int +secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, + unsigned char* res) +{ + switch(algo) { + case NSEC3_HASH_SHA1: + (void)HASH_HashBuf(HASH_AlgSHA1, res, buf, (unsigned long)len); + return 1; + default: + return 0; + } +} + size_t ds_digest_size_supported(int algo) { @@ -1069,5 +1122,466 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, return sec_status_bogus; } +#elif defined(HAVE_NETTLE) + +#include "sha.h" +#include "bignum.h" +#include "macros.h" +#include "rsa.h" +#include "dsa.h" +#include "asn1.h" +#ifdef USE_ECDSA +#include "ecdsa.h" +#include "ecc-curve.h" +#endif + +static int +_digest_nettle(int algo, uint8_t* buf, size_t len, + unsigned char* res) +{ + switch(algo) { + case SHA1_DIGEST_SIZE: + { + struct sha1_ctx ctx; + sha1_init(&ctx); + sha1_update(&ctx, len, buf); + sha1_digest(&ctx, SHA1_DIGEST_SIZE, res); + return 1; + } + case SHA256_DIGEST_SIZE: + { + struct sha256_ctx ctx; + sha256_init(&ctx); + sha256_update(&ctx, len, buf); + sha256_digest(&ctx, SHA256_DIGEST_SIZE, res); + return 1; + } + case SHA384_DIGEST_SIZE: + { + struct sha384_ctx ctx; + sha384_init(&ctx); + sha384_update(&ctx, len, buf); + sha384_digest(&ctx, SHA384_DIGEST_SIZE, res); + return 1; + } + case SHA512_DIGEST_SIZE: + { + struct sha512_ctx ctx; + sha512_init(&ctx); + sha512_update(&ctx, len, buf); + sha512_digest(&ctx, SHA512_DIGEST_SIZE, res); + return 1; + } + default: + break; + } + return 0; +} + +/* return size of digest if supported, or 0 otherwise */ +size_t +nsec3_hash_algo_size_supported(int id) +{ + switch(id) { + case NSEC3_HASH_SHA1: + return SHA1_DIGEST_SIZE; + default: + return 0; + } +} + +/* perform nsec3 hash. return false on failure */ +int +secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, + unsigned char* res) +{ + switch(algo) { + case NSEC3_HASH_SHA1: + return _digest_nettle(SHA1_DIGEST_SIZE, (uint8_t*)buf, len, + res); + default: + return 0; + } +} + +/** + * Return size of DS digest according to its hash algorithm. + * @param algo: DS digest algo. + * @return size in bytes of digest, or 0 if not supported. + */ +size_t +ds_digest_size_supported(int algo) +{ + switch(algo) { + case LDNS_SHA1: + return SHA1_DIGEST_SIZE; +#ifdef USE_SHA2 + case LDNS_SHA256: + return SHA256_DIGEST_SIZE; +#endif +#ifdef USE_ECDSA + case LDNS_SHA384: + return SHA384_DIGEST_SIZE; +#endif + /* GOST not supported */ + case LDNS_HASH_GOST: + default: + break; + } + return 0; +} + +int +secalgo_ds_digest(int algo, unsigned char* buf, size_t len, + unsigned char* res) +{ + switch(algo) { + case LDNS_SHA1: + return _digest_nettle(SHA1_DIGEST_SIZE, buf, len, res); +#if defined(USE_SHA2) + case LDNS_SHA256: + return _digest_nettle(SHA256_DIGEST_SIZE, buf, len, res); +#endif +#ifdef USE_ECDSA + case LDNS_SHA384: + return _digest_nettle(SHA384_DIGEST_SIZE, buf, len, res); + +#endif + case LDNS_HASH_GOST: + default: + verbose(VERB_QUERY, "unknown DS digest algorithm %d", + algo); + break; + } + return 0; +} + +int +dnskey_algo_id_is_supported(int id) +{ + /* uses libnettle */ + switch(id) { + case LDNS_DSA: + case LDNS_DSA_NSEC3: + case LDNS_RSASHA1: + case LDNS_RSASHA1_NSEC3: +#ifdef USE_SHA2 + case LDNS_RSASHA256: + case LDNS_RSASHA512: +#endif +#ifdef USE_ECDSA + case LDNS_ECDSAP256SHA256: + case LDNS_ECDSAP384SHA384: +#endif + return 1; + case LDNS_RSAMD5: /* RFC 6725 deprecates RSAMD5 */ + case LDNS_ECC_GOST: + default: + return 0; + } +} + +static char * +_verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, + unsigned int sigblock_len, unsigned char* key, unsigned int keylen) +{ + uint8_t digest[SHA1_DIGEST_SIZE]; + uint8_t key_t; + int res = 0; + size_t offset; + struct dsa_public_key pubkey; + struct dsa_signature signature; + unsigned int expected_len; + + /* Extract DSA signature from the record */ + nettle_dsa_signature_init(&signature); + /* Signature length: 41 bytes - RFC 2536 sec. 3 */ + if(sigblock_len == 41) { + if(key[0] != sigblock[0]) + return "invalid T value in DSA signature or pubkey"; + nettle_mpz_set_str_256_u(signature.r, 20, sigblock+1); + nettle_mpz_set_str_256_u(signature.s, 20, sigblock+1+20); + } else { + /* DER encoded, decode the ASN1 notated R and S bignums */ + /* SEQUENCE { r INTEGER, s INTEGER } */ + struct asn1_der_iterator i, seq; + if(asn1_der_iterator_first(&i, sigblock_len, + (uint8_t*)sigblock) != ASN1_ITERATOR_CONSTRUCTED + || i.type != ASN1_SEQUENCE) + return "malformed DER encoded DSA signature"; + /* decode this element of i using the seq iterator */ + if(asn1_der_decode_constructed(&i, &seq) != + ASN1_ITERATOR_PRIMITIVE || seq.type != ASN1_INTEGER) + return "malformed DER encoded DSA signature"; + if(!asn1_der_get_bignum(&seq, signature.r, 20*8)) + return "malformed DER encoded DSA signature"; + if(asn1_der_iterator_next(&seq) != ASN1_ITERATOR_PRIMITIVE + || seq.type != ASN1_INTEGER) + return "malformed DER encoded DSA signature"; + if(!asn1_der_get_bignum(&seq, signature.s, 20*8)) + return "malformed DER encoded DSA signature"; + if(asn1_der_iterator_next(&i) != ASN1_ITERATOR_END) + return "malformed DER encoded DSA signature"; + } + + /* Validate T values constraints - RFC 2536 sec. 2 & sec. 3 */ + key_t = key[0]; + if (key_t > 8) { + return "invalid T value in DSA pubkey"; + } + + /* Pubkey minimum length: 21 bytes - RFC 2536 sec. 2 */ + if (keylen < 21) { + return "DSA pubkey too short"; + } + + expected_len = 1 + /* T */ + 20 + /* Q */ + (64 + key_t*8) + /* P */ + (64 + key_t*8) + /* G */ + (64 + key_t*8); /* Y */ + if (keylen != expected_len ) { + return "invalid DSA pubkey length"; + } + + /* Extract DSA pubkey from the record */ + nettle_dsa_public_key_init(&pubkey); + offset = 1; + nettle_mpz_set_str_256_u(pubkey.q, 20, key+offset); + offset += 20; + nettle_mpz_set_str_256_u(pubkey.p, (64 + key_t*8), key+offset); + offset += (64 + key_t*8); + nettle_mpz_set_str_256_u(pubkey.g, (64 + key_t*8), key+offset); + offset += (64 + key_t*8); + nettle_mpz_set_str_256_u(pubkey.y, (64 + key_t*8), key+offset); + + /* Digest content of "buf" and verify its DSA signature in "sigblock"*/ + res = _digest_nettle(SHA1_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= dsa_sha1_verify_digest(&pubkey, digest, &signature); + + /* Clear and return */ + nettle_dsa_signature_clear(&signature); + nettle_dsa_public_key_clear(&pubkey); + if (!res) + return "DSA signature verification failed"; + else + return NULL; +} + +static char * +_verify_nettle_rsa(sldns_buffer* buf, unsigned int digest_size, char* sigblock, + unsigned int sigblock_len, uint8_t* key, unsigned int keylen) +{ + uint16_t exp_len = 0; + size_t exp_offset = 0, mod_offset = 0; + struct rsa_public_key pubkey; + mpz_t signature; + int res = 0; + + /* RSA pubkey parsing as per RFC 3110 sec. 2 */ + if( keylen <= 1) { + return "null RSA key"; + } + if (key[0] != 0) { + /* 1-byte length */ + exp_len = key[0]; + exp_offset = 1; + } else { + /* 1-byte NUL + 2-bytes exponent length */ + if (keylen < 3) { + return "incorrect RSA key length"; + } + exp_len = READ_UINT16(key+1); + if (exp_len == 0) + return "null RSA exponent length"; + exp_offset = 3; + } + /* Check that we are not over-running input length */ + if (keylen < exp_offset + exp_len + 1) { + return "RSA key content shorter than expected"; + } + mod_offset = exp_offset + exp_len; + nettle_rsa_public_key_init(&pubkey); + pubkey.size = keylen - mod_offset; + nettle_mpz_set_str_256_u(pubkey.e, exp_len, &key[exp_offset]); + nettle_mpz_set_str_256_u(pubkey.n, pubkey.size, &key[mod_offset]); + + /* Digest content of "buf" and verify its RSA signature in "sigblock"*/ + nettle_mpz_init_set_str_256_u(signature, sigblock_len, (uint8_t*)sigblock); + switch (digest_size) { + case SHA1_DIGEST_SIZE: + { + uint8_t digest[SHA1_DIGEST_SIZE]; + res = _digest_nettle(SHA1_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= rsa_sha1_verify_digest(&pubkey, digest, signature); + break; + } + case SHA256_DIGEST_SIZE: + { + uint8_t digest[SHA256_DIGEST_SIZE]; + res = _digest_nettle(SHA256_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= rsa_sha256_verify_digest(&pubkey, digest, signature); + break; + } + case SHA512_DIGEST_SIZE: + { + uint8_t digest[SHA512_DIGEST_SIZE]; + res = _digest_nettle(SHA512_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= rsa_sha512_verify_digest(&pubkey, digest, signature); + break; + } + default: + break; + } + + /* Clear and return */ + nettle_rsa_public_key_clear(&pubkey); + mpz_clear(signature); + if (!res) { + return "RSA signature verification failed"; + } else { + return NULL; + } +} + +#ifdef USE_ECDSA +static char * +_verify_nettle_ecdsa(sldns_buffer* buf, unsigned int digest_size, unsigned char* sigblock, + unsigned int sigblock_len, unsigned char* key, unsigned int keylen) +{ + int res = 0; + struct ecc_point pubkey; + struct dsa_signature signature; + + /* Always matched strength, as per RFC 6605 sec. 1 */ + if (sigblock_len != 2*digest_size || keylen != 2*digest_size) { + return "wrong ECDSA signature length"; + } + + /* Parse ECDSA signature as per RFC 6605 sec. 4 */ + nettle_dsa_signature_init(&signature); + switch (digest_size) { + case SHA256_DIGEST_SIZE: + { + uint8_t digest[SHA256_DIGEST_SIZE]; + mpz_t x, y; + nettle_ecc_point_init(&pubkey, &nettle_secp_256r1); + nettle_mpz_init_set_str_256_u(x, SHA256_DIGEST_SIZE, key); + nettle_mpz_init_set_str_256_u(y, SHA256_DIGEST_SIZE, key+SHA256_DIGEST_SIZE); + nettle_mpz_set_str_256_u(signature.r, SHA256_DIGEST_SIZE, sigblock); + nettle_mpz_set_str_256_u(signature.s, SHA256_DIGEST_SIZE, sigblock+SHA256_DIGEST_SIZE); + res = _digest_nettle(SHA256_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= nettle_ecc_point_set(&pubkey, x, y); + res &= nettle_ecdsa_verify (&pubkey, SHA256_DIGEST_SIZE, digest, &signature); + mpz_clear(x); + mpz_clear(y); + break; + } + case SHA384_DIGEST_SIZE: + { + uint8_t digest[SHA384_DIGEST_SIZE]; + mpz_t x, y; + nettle_ecc_point_init(&pubkey, &nettle_secp_384r1); + nettle_mpz_init_set_str_256_u(x, SHA384_DIGEST_SIZE, key); + nettle_mpz_init_set_str_256_u(y, SHA384_DIGEST_SIZE, key+SHA384_DIGEST_SIZE); + nettle_mpz_set_str_256_u(signature.r, SHA384_DIGEST_SIZE, sigblock); + nettle_mpz_set_str_256_u(signature.s, SHA384_DIGEST_SIZE, sigblock+SHA384_DIGEST_SIZE); + res = _digest_nettle(SHA384_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), + (unsigned int)sldns_buffer_limit(buf), (unsigned char*)digest); + res &= nettle_ecc_point_set(&pubkey, x, y); + res &= nettle_ecdsa_verify (&pubkey, SHA384_DIGEST_SIZE, digest, &signature); + mpz_clear(x); + mpz_clear(y); + nettle_ecc_point_clear(&pubkey); + break; + } + default: + return "unknown ECDSA algorithm"; + } + + /* Clear and return */ + nettle_dsa_signature_clear(&signature); + if (!res) + return "ECDSA signature verification failed"; + else + return NULL; +} +#endif + +/** + * Check a canonical sig+rrset and signature against a dnskey + * @param buf: buffer with data to verify, the first rrsig part and the + * canonicalized rrset. + * @param algo: DNSKEY algorithm. + * @param sigblock: signature rdata field from RRSIG + * @param sigblock_len: length of sigblock data. + * @param key: public key data from DNSKEY RR. + * @param keylen: length of keydata. + * @param reason: bogus reason in more detail. + * @return secure if verification succeeded, bogus on crypto failure, + * unchecked on format errors and alloc failures. + */ +enum sec_status +verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, + unsigned int sigblock_len, unsigned char* key, unsigned int keylen, + char** reason) +{ + unsigned int digest_size = 0; + + if (sigblock_len == 0 || keylen == 0) { + *reason = "null signature"; + return sec_status_bogus; + } + + switch(algo) { + case LDNS_DSA: + case LDNS_DSA_NSEC3: + *reason = _verify_nettle_dsa(buf, sigblock, sigblock_len, key, keylen); + if (*reason != NULL) + return sec_status_bogus; + else + return sec_status_secure; + + case LDNS_RSASHA1: + case LDNS_RSASHA1_NSEC3: + digest_size = (digest_size ? digest_size : SHA1_DIGEST_SIZE); +#ifdef USE_SHA2 + case LDNS_RSASHA256: + digest_size = (digest_size ? digest_size : SHA256_DIGEST_SIZE); + case LDNS_RSASHA512: + digest_size = (digest_size ? digest_size : SHA512_DIGEST_SIZE); + +#endif + *reason = _verify_nettle_rsa(buf, digest_size, (char*)sigblock, + sigblock_len, key, keylen); + if (*reason != NULL) + return sec_status_bogus; + else + return sec_status_secure; + +#ifdef USE_ECDSA + case LDNS_ECDSAP256SHA256: + digest_size = (digest_size ? digest_size : SHA256_DIGEST_SIZE); + case LDNS_ECDSAP384SHA384: + digest_size = (digest_size ? digest_size : SHA384_DIGEST_SIZE); + *reason = _verify_nettle_ecdsa(buf, digest_size, sigblock, + sigblock_len, key, keylen); + if (*reason != NULL) + return sec_status_bogus; + else + return sec_status_secure; +#endif + case LDNS_RSAMD5: + case LDNS_ECC_GOST: + default: + *reason = "unable to verify signature, unknown algorithm"; + return sec_status_bogus; + } +} -#endif /* HAVE_SSL or HAVE_NSS */ +#endif /* HAVE_SSL or HAVE_NSS or HAVE_NETTLE */ diff --git a/external/unbound/validator/val_secalgo.h b/external/unbound/validator/val_secalgo.h index 085fbc5a4..589f1f11d 100644 --- a/external/unbound/validator/val_secalgo.h +++ b/external/unbound/validator/val_secalgo.h @@ -44,6 +44,21 @@ #define VALIDATOR_VAL_SECALGO_H struct sldns_buffer; +/** Return size of nsec3 hash algorithm, 0 if not supported */ +size_t nsec3_hash_algo_size_supported(int id); + +/** + * Hash a single hash call of an NSEC3 hash algorithm. + * Iterations and salt are done by the caller. + * @param algo: nsec3 hash algorithm. + * @param buf: the buffer to digest + * @param len: length of buffer to digest. + * @param res: result stored here (must have sufficient space). + * @return false on failure. +*/ +int secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, + unsigned char* res); + /** * Return size of DS digest according to its hash algorithm. * @param algo: DS digest algo. diff --git a/external/unbound/validator/val_sigcrypt.c b/external/unbound/validator/val_sigcrypt.c index 7c643cab1..1dd07b420 100644 --- a/external/unbound/validator/val_sigcrypt.c +++ b/external/unbound/validator/val_sigcrypt.c @@ -57,7 +57,7 @@ #include "sldns/wire2str.h" #include <ctype.h> -#if !defined(HAVE_SSL) && !defined(HAVE_NSS) +#if !defined(HAVE_SSL) && !defined(HAVE_NSS) && !defined(HAVE_NETTLE) #error "Need crypto library to do digital signature cryptography" #endif @@ -795,10 +795,6 @@ canonical_compare(struct ub_packed_rrset_key* rrset, size_t i, size_t j) if(i==j) return 0; - /* in case rdata-len is to be compared for canonical order - c = memcmp(d->rr_data[i], d->rr_data[j], 2); - if(c != 0) - return c; */ switch(type) { /* These RR types have only a name as RDATA. diff --git a/external/unbound/validator/val_utils.h b/external/unbound/validator/val_utils.h index cdb87697e..051824aba 100644 --- a/external/unbound/validator/val_utils.h +++ b/external/unbound/validator/val_utils.h @@ -391,7 +391,7 @@ int val_favorite_ds_algo(struct ub_packed_rrset_key* ds_rrset); * Find DS denial message in cache. Saves new qstate allocation and allows * the validator to use partial content which is not enough to construct a * message for network (or user) consumption. Without SOA for example, - * which is a common occurence in the unbound code since the referrals contain + * which is a common occurrence in the unbound code since the referrals contain * NSEC/NSEC3 rrs without the SOA element, thus do not allow synthesis of a * full negative reply, but do allow synthesis of sufficient proof. * @param env: query env with caches and time. diff --git a/external/unbound/validator/validator.c b/external/unbound/validator/validator.c index f8b429e52..db4383bed 100644 --- a/external/unbound/validator/validator.c +++ b/external/unbound/validator/validator.c @@ -749,7 +749,7 @@ validate_nodata_response(struct module_env* env, struct val_env* ve, /* Since we are here, there must be nothing in the ANSWER section to * validate. */ /* (Note: CNAME/DNAME responses will not directly get here -- - * instead, they are chased down into indiviual CNAME validations, + * instead, they are chased down into individual CNAME validations, * and at the end of the cname chain a POSITIVE, or CNAME_NOANSWER * validation.) */ @@ -1597,7 +1597,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) target_key_name) != 0) { /* check if there is a cache entry : pick up an NSEC if * there is no DS, check if that NSEC has DS-bit unset, and - * thus can disprove the secure delagation we seek. + * thus can disprove the secure delegation we seek. * We can then use that NSEC even in the absence of a SOA * record that would be required by the iterator to supply * a completely protocol-correct response. @@ -1829,7 +1829,7 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, * @return true if there is no DLV. * false: processing is finished for the validator operate(). * This function may exit in three ways: - * o no DLV (agressive cache), so insecure. (true) + * o no DLV (aggressive cache), so insecure. (true) * o error - stop processing (false) * o DLV lookup was started, stop processing (false) */ diff --git a/external/unbound/winrc/setup.nsi b/external/unbound/winrc/setup.nsi index bf47165f3..513b30015 100644 --- a/external/unbound/winrc/setup.nsi +++ b/external/unbound/winrc/setup.nsi @@ -1,6 +1,8 @@ # The NSIS (http://nsis.sourceforge.net) install script. # This script is BSD licensed. -SetCompressor /solid /final lzma + +# use the default compression to help anti-virus in scanning us +#SetCompressor /solid /final lzma !include LogicLib.nsh !include MUI2.nsh @@ -92,6 +94,7 @@ section "-hidden.postinstall" File "unbound-website.url" File "service.conf" File "..\doc\example.conf" + File "..\doc\Changelog" # Store Root Key choice SectionGetFlags ${SectionRootKey} $R0 @@ -178,6 +181,7 @@ section "un.Unbound" Delete "$INSTDIR\unbound-website.url" Delete "$INSTDIR\service.conf" Delete "$INSTDIR\example.conf" + Delete "$INSTDIR\Changelog" Delete "$INSTDIR\root.key" RMDir "$INSTDIR" diff --git a/external/unbound/winrc/unbound-control-setup.cmd b/external/unbound/winrc/unbound-control-setup.cmd index 13617927a..ddf4a06e0 100644 --- a/external/unbound/winrc/unbound-control-setup.cmd +++ b/external/unbound/winrc/unbound-control-setup.cmd @@ -1,164 +1,164 @@ -@Echo off -rem -rem unbound-control-setup.cmd - set up SSL certificates for unbound-control -rem -rem Copyright (c) 2008, NLnet Labs. All rights reserved. -rem Modified for Windows by Y.Voinov (c) 2014 -rem -rem This software is open source. -rem -rem Redistribution and use in source and binary forms, with or without -rem modification, are permitted provided that the following conditions -rem are met: -rem -rem Redistributions of source code must retain the above copyright notice, -rem this list of conditions and the following disclaimer. -rem -rem Redistributions in binary form must reproduce the above copyright notice, -rem this list of conditions and the following disclaimer in the documentation -rem and/or other materials provided with the distribution. -rem -rem Neither the name of the NLNET LABS nor the names of its contributors may -rem be used to endorse or promote products derived from this software without -rem specific prior written permission. -rem -rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -rem HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -rem TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -rem PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -rem LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -rem NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -rem SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -rem settings: - -rem directory for files -set prefix="C:\Program Files (x86)" -set DESTDIR=%prefix%\Unbound - -rem issuer and subject name for certificates -set SERVERNAME=unbound -set CLIENTNAME=unbound-control - -rem validity period for certificates -set DAYS=7200 - -rem size of keys in bits -set BITS=1536 - -rem hash algorithm -set HASH=sha256 - -rem base name for unbound server keys -set SVR_BASE=unbound_server - -rem base name for unbound-control keys -set CTL_BASE=unbound_control - -rem end of options - -rem Check OpenSSL installed -for /f "delims=" %%a in ('where openssl') do @set SSL_PROGRAM=%%a -if /I "%SSL_PROGRAM%"=="" echo SSL not found. If installed, add path to PATH environment variable. & exit 1 -echo SSL found: %SSL_PROGRAM% - -set arg=%1 -if /I "%arg%" == "-h" goto help -if /I "%arg%"=="-d" set DESTDIR=%2 - -rem go!: -echo setup in directory %DESTDIR% -cd %$DESTDIR% - -rem create certificate keys; do not recreate if they already exist. -if exist $SVR_BASE.key ( -echo %SVR_BASE%.key exists -goto next -) -echo generating %SVR_BASE%.key -"%SSL_PROGRAM%" genrsa -out %SVR_BASE%.key %BITS% || echo could not genrsa && exit 1 - -:next -if exist %CTL_BASE%.key ( -echo %CTL_BASE%.key exists -goto next2 -) -echo generating %CTL_BASE%.key -"%SSL_PROGRAM%" genrsa -out %CTL_BASE%.key %BITS% || echo could not genrsa && exit 1 - -:next2 -rem create self-signed cert for server -if exist request.cfg (del /F /Q /S request.cfg) -echo [req]>>request.cfg -echo default_bits=%BITS%>>request.cfg -echo default_md=%HASH%>>request.cfg -echo prompt=no>>request.cfg -echo distinguished_name=req_distinguished_name>>request.cfg -echo.>>request.cfg -echo [req_distinguished_name]>>request.cfg -echo commonName=%SERVERNAME%>>request.cfg - -if not exist request.cfg ( -echo could not create request.cfg -exit 1 -) - -echo create %SVR_BASE%.pem (self signed certificate) -"%SSL_PROGRAM%" req -key %SVR_BASE%.key -config request.cfg -new -x509 -days %DAYS% -out %SVR_BASE%.pem || echo could not create %SVR_BASE%.pem && exit 1 -rem create trusted usage pem -"%SSL_PROGRAM%" x509 -in %SVR_BASE%.pem -addtrust serverAuth -out %SVR_BASE%_trust.pem - -rem create client request and sign it -if exist request.cfg (del /F /Q /S request.cfg) -echo [req]>>request.cfg -echo default_bits=%BITS%>>request.cfg -echo default_md=%HASH%>>request.cfg -echo prompt=no>>request.cfg -echo distinguished_name=req_distinguished_name>>request.cfg -echo.>>request.cfg -echo [req_distinguished_name]>>request.cfg -echo commonName=%CLIENTNAME%>>request.cfg - -if not exist request.cfg ( -echo could not create request.cfg -exit 1 -) - -echo create %CTL_BASE%.pem (signed client certificate) -"%SSL_PROGRAM%" req -key %CTL_BASE%.key -config request.cfg -new | "%SSL_PROGRAM%" x509 -req -days %DAYS% -CA %SVR_BASE%_trust.pem -CAkey %SVR_BASE%.key -CAcreateserial -%HASH% -out %CTL_BASE%.pem - -if not exist %CTL_BASE%.pem ( -echo could not create %CTL_BASE%.pem -exit 1 -) -rem create trusted usage pem -rem "%SSL_PROGRAM%" x509 -in %CTL_BASE%.pem -addtrust clientAuth -out %CTL_BASE%_trust.pem - -rem see details with "%SSL_PROGRAM%" x509 -noout -text < %SVR_BASE%.pem -rem echo "create %CTL_BASE%_browser.pfx (web client certificate)" -rem echo "create webbrowser PKCSrem12 .PFX certificate file. In Firefox import in:" -rem echo "preferences - advanced - encryption - view certificates - your certs" -rem echo "empty password is used, simply click OK on the password dialog box." -rem "%SSL_PROGRAM%" pkcs12 -export -in %CTL_BASE%_trust.pem -inkey %CTL_BASE%.key -name "unbound remote control client cert" -out %CTL_BASE%_browser.pfx -password "pass:" || echo could not create browser certificate && exit 1 - -rem remove crap -del /F /Q /S request.cfg -del /F /Q /S %CTL_BASE%_trust.pem -del /F /Q /S %SVR_BASE%_trust.pem -del /F /Q /S %SVR_BASE%_trust.srl - -echo Setup success. Certificates created. Enable in unbound.conf file to use - -exit 0 - -:help -echo unbound-control-setup.cmd - setup SSL keys for unbound-control -echo -d dir use directory to store keys and certificates. -echo default: %DESTDIR% -echo please run this command using the same user id that the -echo unbound daemon uses, it needs read privileges. -exit 1 +@Echo off
+rem
+rem unbound-control-setup.cmd - set up SSL certificates for unbound-control
+rem
+rem Copyright (c) 2008, NLnet Labs. All rights reserved.
+rem Modified for Windows by Y.Voinov (c) 2014
+rem
+rem This software is open source.
+rem
+rem Redistribution and use in source and binary forms, with or without
+rem modification, are permitted provided that the following conditions
+rem are met:
+rem
+rem Redistributions of source code must retain the above copyright notice,
+rem this list of conditions and the following disclaimer.
+rem
+rem Redistributions in binary form must reproduce the above copyright notice,
+rem this list of conditions and the following disclaimer in the documentation
+rem and/or other materials provided with the distribution.
+rem
+rem Neither the name of the NLNET LABS nor the names of its contributors may
+rem be used to endorse or promote products derived from this software without
+rem specific prior written permission.
+rem
+rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+rem HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+rem TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+rem PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+rem LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+rem NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+rem SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+rem settings:
+
+rem directory for files
+set prefix="C:\Program Files (x86)"
+set DESTDIR=%prefix%\Unbound
+
+rem issuer and subject name for certificates
+set SERVERNAME=unbound
+set CLIENTNAME=unbound-control
+
+rem validity period for certificates
+set DAYS=7200
+
+rem size of keys in bits
+set BITS=1536
+
+rem hash algorithm
+set HASH=sha256
+
+rem base name for unbound server keys
+set SVR_BASE=unbound_server
+
+rem base name for unbound-control keys
+set CTL_BASE=unbound_control
+
+rem end of options
+
+rem Check OpenSSL installed
+for /f "delims=" %%a in ('where openssl') do @set SSL_PROGRAM=%%a
+if /I "%SSL_PROGRAM%"=="" echo SSL not found. If installed, add path to PATH environment variable. & exit 1
+echo SSL found: %SSL_PROGRAM%
+
+set arg=%1
+if /I "%arg%" == "-h" goto help
+if /I "%arg%"=="-d" set DESTDIR=%2
+
+rem go!:
+echo setup in directory %DESTDIR%
+cd %DESTDIR%
+
+rem create certificate keys; do not recreate if they already exist.
+if exist %SVR_BASE%.key (
+echo %SVR_BASE%.key exists
+goto next
+)
+echo generating %SVR_BASE%.key
+"%SSL_PROGRAM%" genrsa -out %SVR_BASE%.key %BITS% || echo could not genrsa && exit 1
+
+:next
+if exist %CTL_BASE%.key (
+echo %CTL_BASE%.key exists
+goto next2
+)
+echo generating %CTL_BASE%.key
+"%SSL_PROGRAM%" genrsa -out %CTL_BASE%.key %BITS% || echo could not genrsa && exit 1
+
+:next2
+rem create self-signed cert for server
+if exist request.cfg (del /F /Q /S request.cfg)
+echo [req]>>request.cfg
+echo default_bits=%BITS%>>request.cfg
+echo default_md=%HASH%>>request.cfg
+echo prompt=no>>request.cfg
+echo distinguished_name=req_distinguished_name>>request.cfg
+echo.>>request.cfg
+echo [req_distinguished_name]>>request.cfg
+echo commonName=%SERVERNAME%>>request.cfg
+
+if not exist request.cfg (
+echo could not create request.cfg
+exit 1
+)
+
+echo create %SVR_BASE%.pem (self signed certificate)
+"%SSL_PROGRAM%" req -key %SVR_BASE%.key -config request.cfg -new -x509 -days %DAYS% -out %SVR_BASE%.pem || echo could not create %SVR_BASE%.pem && exit 1
+rem create trusted usage pem
+"%SSL_PROGRAM%" x509 -in %SVR_BASE%.pem -addtrust serverAuth -out %SVR_BASE%_trust.pem
+
+rem create client request and sign it
+if exist request.cfg (del /F /Q /S request.cfg)
+echo [req]>>request.cfg
+echo default_bits=%BITS%>>request.cfg
+echo default_md=%HASH%>>request.cfg
+echo prompt=no>>request.cfg
+echo distinguished_name=req_distinguished_name>>request.cfg
+echo.>>request.cfg
+echo [req_distinguished_name]>>request.cfg
+echo commonName=%CLIENTNAME%>>request.cfg
+
+if not exist request.cfg (
+echo could not create request.cfg
+exit 1
+)
+
+echo create %CTL_BASE%.pem (signed client certificate)
+"%SSL_PROGRAM%" req -key %CTL_BASE%.key -config request.cfg -new | "%SSL_PROGRAM%" x509 -req -days %DAYS% -CA %SVR_BASE%_trust.pem -CAkey %SVR_BASE%.key -CAcreateserial -%HASH% -out %CTL_BASE%.pem
+
+if not exist %CTL_BASE%.pem (
+echo could not create %CTL_BASE%.pem
+exit 1
+)
+rem create trusted usage pem
+rem "%SSL_PROGRAM%" x509 -in %CTL_BASE%.pem -addtrust clientAuth -out %CTL_BASE%_trust.pem
+
+rem see details with "%SSL_PROGRAM%" x509 -noout -text < %SVR_BASE%.pem
+rem echo "create %CTL_BASE%_browser.pfx (web client certificate)"
+rem echo "create webbrowser PKCSrem12 .PFX certificate file. In Firefox import in:"
+rem echo "preferences - advanced - encryption - view certificates - your certs"
+rem echo "empty password is used, simply click OK on the password dialog box."
+rem "%SSL_PROGRAM%" pkcs12 -export -in %CTL_BASE%_trust.pem -inkey %CTL_BASE%.key -name "unbound remote control client cert" -out %CTL_BASE%_browser.pfx -password "pass:" || echo could not create browser certificate && exit 1
+
+rem remove crap
+del /F /Q /S request.cfg
+del /F /Q /S %CTL_BASE%_trust.pem
+del /F /Q /S %SVR_BASE%_trust.pem
+del /F /Q /S %SVR_BASE%_trust.srl
+
+echo Setup success. Certificates created. Enable in unbound.conf file to use
+
+exit 0
+
+:help
+echo unbound-control-setup.cmd - setup SSL keys for unbound-control
+echo -d dir use directory to store keys and certificates.
+echo default: %DESTDIR%
+echo please run this command using the same user id that the
+echo unbound daemon uses, it needs read privileges.
+exit 1
diff --git a/external/unbound/winrc/vista_admin.manifest b/external/unbound/winrc/vista_admin.manifest index 560801440..32eb1d6aa 100644 --- a/external/unbound/winrc/vista_admin.manifest +++ b/external/unbound/winrc/vista_admin.manifest @@ -13,4 +13,23 @@ </ms_asmv2:requestedPrivileges> </ms_asmv2:security> </ms_asmv2:trustInfo> + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> + <application> + <!--This Id value indicates the application supports Windows Vista/Server + 2008 functionality --> + <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> + <!--This Id value indicates the application supports Windows 7/Server 2008 + R2 functionality--> + <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> + <!--This Id value indicates the application supports Windows 8/Server 2012 + functionality--> + <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> + <!-- This Id value indicates the application supports Windows Blue/Server + 2012 R2 functionality--> + <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> + <!-- This Id value indicates the application supports Windows Threshold + functionality ; Windows 10 --> + <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> + </application> + </compatibility> </assembly> diff --git a/external/unbound/winrc/win_svc.c b/external/unbound/winrc/win_svc.c index 57a160d6a..9d6926dbe 100644 --- a/external/unbound/winrc/win_svc.c +++ b/external/unbound/winrc/win_svc.c @@ -333,15 +333,17 @@ service_init(int r, struct daemon** d, struct config_file** c) verbose(VERB_QUERY, "winservice - apply settings"); /* apply settings and init */ verbosity = cfg->verbosity + service_cmdline_verbose; + w_config_adjust_directory(cfg); if(cfg->directory && cfg->directory[0]) { - if(chdir(cfg->directory)) { + char* dir = cfg->directory; + if(chdir(dir)) { log_err("could not chdir to %s: %s", - cfg->directory, strerror(errno)); + dir, strerror(errno)); if(errno != ENOENT) return 0; log_warn("could not change directory - continuing"); } else - verbose(VERB_QUERY, "chdir to %s", cfg->directory); + verbose(VERB_QUERY, "chdir to %s", dir); } log_init(cfg->logfile, cfg->use_syslog, cfg->chrootdir); if(!r) report_status(SERVICE_START_PENDING, NO_ERROR, 2400); |