]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Complete rewrite the BIND 9 build system
authorOndřej Surý <ondrej@sury.org>
Tue, 7 Aug 2018 14:46:53 +0000 (16:46 +0200)
committerOndřej Surý <ondrej@isc.org>
Tue, 21 Apr 2020 12:19:48 +0000 (14:19 +0200)
The rewrite of BIND 9 build system is a large work and cannot be reasonable
split into separate merge requests.  Addition of the automake has a positive
effect on the readability and maintainability of the build system as it is more
declarative, it allows conditional and we are able to drop all of the custom
make code that BIND 9 developed over the years to overcome the deficiencies of
autoconf + custom Makefile.in files.

This squashed commit contains following changes:

- conversion (or rather fresh rewrite) of all Makefile.in files to Makefile.am
  by using automake

- the libtool is now properly integrated with automake (the way we used it
  was rather hackish as the only official way how to use libtool is via
  automake

- the dynamic module loading was rewritten from a custom patchwork to libtool's
  libltdl (which includes the patchwork to support module loading on different
  systems internally)

- conversion of the unit test executor from kyua to automake parallel driver

- conversion of the system test executor from custom make/shell to automake
  parallel driver

- The GSSAPI has been refactored, the custom SPNEGO on the basis that
  all major KRB5/GSSAPI (mit-krb5, heimdal and Windows) implementations
  support SPNEGO mechanism.

- The various defunct tests from bin/tests have been removed:
  bin/tests/optional and bin/tests/pkcs11

- The text files generated from the MD files have been removed, the
  MarkDown has been designed to be readable by both humans and computers

- The xsl header is now generated by a simple sed command instead of
  perl helper

- The <irs/platform.h> header has been removed

- cleanups of configure.ac script to make it more simpler, addition of multiple
  macros (there's still work to be done though)

- the tarball can now be prepared with `make dist`

- the system tests are partially able to run in oot build

Here's a list of unfinished work that needs to be completed in subsequent merge
requests:

- `make distcheck` doesn't yet work (because of system tests oot run is not yet
  finished)

- documentation is not yet built, there's a different merge request with docbook
  to sphinx-build rst conversion that needs to be rebased and adapted on top of
  the automake

- msvc build is non functional yet and we need to decide whether we will just
  cross-compile bind9 using mingw-w64 or fix the msvc build

- contributed dlz modules are not included neither in the autoconf nor automake

596 files changed:
.gitignore
.gitlab-ci.yml
AUTHORS [new file with mode: 0644]
CODE_OF_CONDUCT [deleted file]
CONTRIBUTING [deleted file]
COPYING [new symlink]
ChangeLog [new symlink]
HISTORY [deleted file]
Kyuafile [deleted file]
Makefile.am [new file with mode: 0644]
Makefile.tests [new file with mode: 0644]
Makefile.top [new file with mode: 0644]
NEWS [new symlink]
OPTIONS [deleted file]
PLATFORMS [deleted file]
README [deleted file]
README.md
bin/Makefile.am [new file with mode: 0644]
bin/check/Makefile.am [new file with mode: 0644]
bin/check/named-checkconf.c
bin/check/named-checkzone.c
bin/confgen/Makefile.am [new file with mode: 0644]
bin/confgen/ddns-confgen.c
bin/confgen/rndc-confgen.c
bin/confgen/util.h
bin/delv/Makefile.am [new file with mode: 0644]
bin/delv/delv.c
bin/dig/Makefile.am [new file with mode: 0644]
bin/dig/dig.c
bin/dig/dighost.c
bin/dig/dighost.h [moved from bin/dig/include/dig/dig.h with 75% similarity]
bin/dig/host.c
bin/dig/nslookup.c
bin/dnssec/Makefile.am [new file with mode: 0644]
bin/dnssec/dnssec-cds.c
bin/dnssec/dnssec-dsfromkey.c
bin/dnssec/dnssec-importkey.c
bin/dnssec/dnssec-keyfromlabel.c
bin/dnssec/dnssec-keygen.c
bin/dnssec/dnssec-revoke.c
bin/dnssec/dnssec-settime.c
bin/dnssec/dnssec-signzone.c
bin/dnssec/dnssec-verify.c
bin/dnssec/dnssectool.c
bin/dnssec/dnssectool.h
bin/named/.gitignore
bin/named/Makefile.am [new file with mode: 0644]
bin/named/bind9.xsl.h [deleted file]
bin/named/builtin.c
bin/named/controlconf.c
bin/named/convertxsl.pl [deleted file]
bin/named/include/named/globals.h
bin/named/include/named/main.h
bin/named/main.c
bin/named/server.c
bin/named/statschannel.c
bin/named/unix/dlz_dlopen_driver.c
bin/named/win32/dlz_dlopen_driver.c
bin/named/win32/include/named/ntservice.h
bin/named/win32/ntservice.c
bin/named/xsl_p.h [moved from lib/ns/version.c with 64% similarity]
bin/nsupdate/Makefile.am [new file with mode: 0644]
bin/nsupdate/nsupdate.c
bin/pkcs11/Makefile.am [new file with mode: 0644]
bin/plugins/Makefile.am [new file with mode: 0644]
bin/plugins/filter-aaaa.c
bin/rndc/Makefile.am [new file with mode: 0644]
bin/rndc/rndc.c
bin/rndc/util.h
bin/tests/.gitignore
bin/tests/Makefile.am [new file with mode: 0644]
bin/tests/bigtest/README [deleted file]
bin/tests/bigtest/buildzones.sh [deleted file]
bin/tests/bigtest/rndc.key [deleted file]
bin/tests/bigtest/tests.sh [deleted file]
bin/tests/bigtest/zones [deleted file]
bin/tests/optional/.gitignore [deleted file]
bin/tests/optional/Kchild.example.+005+33180.key [deleted file]
bin/tests/optional/Kchild.example.+005+33180.private [deleted file]
bin/tests/optional/adb_test.c [deleted file]
bin/tests/optional/backtrace_test.c [deleted file]
bin/tests/optional/byaddr_test.c [deleted file]
bin/tests/optional/byname_test.c [deleted file]
bin/tests/optional/db_test.c [deleted file]
bin/tests/optional/fsaccess_test.c [deleted file]
bin/tests/optional/gsstest.c [deleted file]
bin/tests/optional/inter_test.c [deleted file]
bin/tests/optional/lex_test.c [deleted file]
bin/tests/optional/lfsr_test.c [deleted file]
bin/tests/optional/log_test.c [deleted file]
bin/tests/optional/master_test.c [deleted file]
bin/tests/optional/mempool_test.c [deleted file]
bin/tests/optional/name_test.c [deleted file]
bin/tests/optional/nsecify.c [deleted file]
bin/tests/optional/ratelimiter_test.c [deleted file]
bin/tests/optional/rbt_test.c [deleted file]
bin/tests/optional/rbt_test.out [deleted file]
bin/tests/optional/rbt_test.txt [deleted file]
bin/tests/optional/rwlock_test.c [deleted file]
bin/tests/optional/serial_test.c [deleted file]
bin/tests/optional/shutdown_test.c [deleted file]
bin/tests/optional/sig0_test.c [deleted file]
bin/tests/optional/sock_test.c [deleted file]
bin/tests/optional/sym_test.c [deleted file]
bin/tests/optional/task_test.c [deleted file]
bin/tests/optional/timer_test.c [deleted file]
bin/tests/optional/zone_test.c [deleted file]
bin/tests/pkcs11/.gitignore [deleted file]
bin/tests/pkcs11/README [deleted file]
bin/tests/pkcs11/benchmarks/.gitignore [deleted file]
bin/tests/pkcs11/benchmarks/create.c [deleted file]
bin/tests/pkcs11/benchmarks/find.c [deleted file]
bin/tests/pkcs11/benchmarks/genrsa.c [deleted file]
bin/tests/pkcs11/benchmarks/login.c [deleted file]
bin/tests/pkcs11/benchmarks/privrsa.c [deleted file]
bin/tests/pkcs11/benchmarks/pubrsa.c [deleted file]
bin/tests/pkcs11/benchmarks/session.c [deleted file]
bin/tests/pkcs11/benchmarks/sha1.c [deleted file]
bin/tests/pkcs11/benchmarks/sign.c [deleted file]
bin/tests/pkcs11/benchmarks/verify.c [deleted file]
bin/tests/system/.gitignore
bin/tests/system/Makefile.am [new file with mode: 0644]
bin/tests/system/README
bin/tests/system/acl/setup.sh
bin/tests/system/acl/tests.sh
bin/tests/system/additional/setup.sh
bin/tests/system/additional/tests.sh
bin/tests/system/addzone/setup.sh
bin/tests/system/addzone/tests.sh
bin/tests/system/allow-query/setup.sh
bin/tests/system/allow-query/tests.sh
bin/tests/system/auth/setup.sh
bin/tests/system/auth/tests.sh
bin/tests/system/autosign/ns1/keygen.sh
bin/tests/system/autosign/ns2/keygen.sh
bin/tests/system/autosign/ns3/keygen.sh
bin/tests/system/autosign/setup.sh
bin/tests/system/autosign/tests.sh
bin/tests/system/builtin/setup.sh
bin/tests/system/builtin/tests.sh
bin/tests/system/cacheclean/setup.sh
bin/tests/system/cacheclean/tests.sh
bin/tests/system/case/setup.sh
bin/tests/system/case/tests.sh
bin/tests/system/catz/setup.sh
bin/tests/system/catz/tests.sh
bin/tests/system/cds/setup.sh
bin/tests/system/cds/tests.sh
bin/tests/system/chain/ns2/sign.sh
bin/tests/system/chain/prereq.sh [deleted file]
bin/tests/system/chain/setup.sh
bin/tests/system/chain/tests.sh
bin/tests/system/checkconf/tests.sh
bin/tests/system/checknames/setup.sh
bin/tests/system/checknames/tests.sh
bin/tests/system/checkzone/setup.sh
bin/tests/system/checkzone/tests.sh
bin/tests/system/conf.sh.common
bin/tests/system/conf.sh.in
bin/tests/system/cookie/setup.sh
bin/tests/system/cookie/tests.sh
bin/tests/system/database/setup.sh
bin/tests/system/database/tests.sh
bin/tests/system/delzone/setup.sh
bin/tests/system/delzone/tests.sh
bin/tests/system/dialup/tests.sh
bin/tests/system/digdelv/clean.sh
bin/tests/system/digdelv/prereq.sh [deleted file]
bin/tests/system/digdelv/tests.sh
bin/tests/system/dlz/prereq.sh
bin/tests/system/dlz/setup.sh
bin/tests/system/dlz/tests.sh
bin/tests/system/dlzexternal/driver/Makefile.am [new file with mode: 0644]
bin/tests/system/dlzexternal/driver/driver.c [moved from bin/tests/system/dlzexternal/driver.c with 93% similarity]
bin/tests/system/dlzexternal/driver/driver.h [moved from bin/tests/system/dlzexternal/driver.h with 100% similarity]
bin/tests/system/dlzexternal/ns1/dlzs.conf.in [deleted file]
bin/tests/system/dlzexternal/ns1/named.conf.in
bin/tests/system/dlzexternal/prereq.sh
bin/tests/system/dlzexternal/setup.sh
bin/tests/system/dlzexternal/tests.sh
bin/tests/system/dns64/ns1/sign.sh
bin/tests/system/dns64/setup.sh
bin/tests/system/dns64/tests.sh
bin/tests/system/dnssec/prereq.sh [deleted file]
bin/tests/system/dnssec/tests.sh
bin/tests/system/dnstap/setup.sh
bin/tests/system/dnstap/tests.sh
bin/tests/system/dscp/setup.sh
bin/tests/system/dscp/tests.sh
bin/tests/system/dsdigest/ns1/sign.sh
bin/tests/system/dsdigest/ns2/sign.sh
bin/tests/system/dsdigest/setup.sh
bin/tests/system/dsdigest/tests.sh
bin/tests/system/dupsigs/ns1/reset_keys.sh
bin/tests/system/dupsigs/setup.sh
bin/tests/system/dupsigs/tests.sh
bin/tests/system/dyndb/driver/Makefile.am [new file with mode: 0644]
bin/tests/system/dyndb/driver/driver.c
bin/tests/system/dyndb/ns1/named.conf.in
bin/tests/system/dyndb/prereq.sh
bin/tests/system/dyndb/setup.sh
bin/tests/system/dyndb/tests.sh
bin/tests/system/ednscompliance/setup.sh
bin/tests/system/ednscompliance/tests.sh
bin/tests/system/emptyzones/setup.sh
bin/tests/system/emptyzones/tests.sh
bin/tests/system/feature-test.c
bin/tests/system/fetchlimit/prereq.sh [deleted file]
bin/tests/system/fetchlimit/setup.sh
bin/tests/system/fetchlimit/tests.sh
bin/tests/system/filter-aaaa/conf/bad1.conf
bin/tests/system/filter-aaaa/conf/bad2.conf
bin/tests/system/filter-aaaa/conf/bad3.conf
bin/tests/system/filter-aaaa/conf/bad4.conf
bin/tests/system/filter-aaaa/conf/bad5.conf
bin/tests/system/filter-aaaa/conf/good1.conf
bin/tests/system/filter-aaaa/conf/good2.conf
bin/tests/system/filter-aaaa/conf/good3.conf
bin/tests/system/filter-aaaa/conf/good4.conf
bin/tests/system/filter-aaaa/conf/good5.conf
bin/tests/system/filter-aaaa/ns1/named1.conf.in
bin/tests/system/filter-aaaa/ns1/named2.conf.in
bin/tests/system/filter-aaaa/ns1/sign.sh
bin/tests/system/filter-aaaa/ns2/named1.conf.in
bin/tests/system/filter-aaaa/ns2/named2.conf.in
bin/tests/system/filter-aaaa/ns3/named1.conf.in
bin/tests/system/filter-aaaa/ns3/named2.conf.in
bin/tests/system/filter-aaaa/ns4/named1.conf.in
bin/tests/system/filter-aaaa/ns4/named2.conf.in
bin/tests/system/filter-aaaa/ns4/sign.sh
bin/tests/system/filter-aaaa/ns5/named.conf.in
bin/tests/system/filter-aaaa/prereq.sh
bin/tests/system/filter-aaaa/setup.sh
bin/tests/system/filter-aaaa/tests.sh
bin/tests/system/formerr/setup.sh
bin/tests/system/formerr/tests.sh
bin/tests/system/forward/prereq.sh [deleted file]
bin/tests/system/forward/setup.sh
bin/tests/system/forward/tests.sh
bin/tests/system/geoip2/prereq.sh
bin/tests/system/geoip2/setup.sh
bin/tests/system/geoip2/tests.sh
bin/tests/system/get_base_port.sh [new file with mode: 0755]
bin/tests/system/glue/setup.sh
bin/tests/system/glue/tests.sh
bin/tests/system/idna/setup.sh
bin/tests/system/idna/tests.sh
bin/tests/system/ifconfig.sh.in [moved from bin/tests/system/ifconfig.sh with 96% similarity]
bin/tests/system/include-multiplecfg/setup.sh
bin/tests/system/include-multiplecfg/tests.sh
bin/tests/system/inline/ns1/sign.sh
bin/tests/system/inline/ns3/sign.sh
bin/tests/system/inline/ns7/sign.sh
bin/tests/system/inline/ns8/sign.sh
bin/tests/system/inline/setup.sh
bin/tests/system/inline/tests.sh
bin/tests/system/integrity/setup.sh
bin/tests/system/integrity/tests.sh
bin/tests/system/ixfr/prereq.sh [deleted file]
bin/tests/system/ixfr/setup.sh
bin/tests/system/ixfr/tests.sh
bin/tests/system/kasp/tests.sh
bin/tests/system/keepalive/setup.sh
bin/tests/system/keepalive/tests.sh
bin/tests/system/legacy/build.sh
bin/tests/system/legacy/ns6/sign.sh
bin/tests/system/legacy/ns7/sign.sh
bin/tests/system/legacy/setup.sh
bin/tests/system/legacy/tests.sh
bin/tests/system/limits/setup.sh
bin/tests/system/limits/tests.sh
bin/tests/system/logfileconfig/setup.sh
bin/tests/system/logfileconfig/tests.sh
bin/tests/system/makejournal.c [moved from bin/tests/makejournal.c with 100% similarity]
bin/tests/system/masterfile/setup.sh
bin/tests/system/masterfile/tests.sh
bin/tests/system/masterformat/tests.sh
bin/tests/system/metadata/setup.sh
bin/tests/system/metadata/tests.sh
bin/tests/system/mirror/ns1/sign.sh
bin/tests/system/mirror/ns2/sign.sh
bin/tests/system/mirror/setup.sh
bin/tests/system/mirror/tests.sh
bin/tests/system/mkeys/ns1/sign.sh
bin/tests/system/mkeys/ns6/setup.sh
bin/tests/system/mkeys/setup.sh
bin/tests/system/mkeys/tests.sh
bin/tests/system/names/setup.sh
bin/tests/system/names/tests.sh
bin/tests/system/notify/setup.sh
bin/tests/system/notify/tests.sh
bin/tests/system/nslookup/setup.sh
bin/tests/system/nslookup/tests.sh
bin/tests/system/nsupdate/ns3/sign.sh
bin/tests/system/nsupdate/prereq.sh [deleted file]
bin/tests/system/nsupdate/setup.sh
bin/tests/system/nsupdate/tests.sh
bin/tests/system/nzd2nzf/clean.sh
bin/tests/system/nzd2nzf/prereq.sh [deleted file]
bin/tests/system/nzd2nzf/setup.sh
bin/tests/system/nzd2nzf/tests.sh
bin/tests/system/padding/setup.sh
bin/tests/system/padding/tests.sh
bin/tests/system/pending/ns1/sign.sh
bin/tests/system/pending/ns2/sign.sh
bin/tests/system/pending/setup.sh
bin/tests/system/pending/tests.sh
bin/tests/system/pipelined/prereq.sh [deleted file]
bin/tests/system/pipelined/setup.sh
bin/tests/system/pipelined/tests.sh
bin/tests/system/pkcs11/setup.sh
bin/tests/system/pkcs11/tests.sh
bin/tests/system/qmin/prereq.sh [deleted file]
bin/tests/system/qmin/setup.sh
bin/tests/system/qmin/tests.sh
bin/tests/system/reclimit/prereq.sh [deleted file]
bin/tests/system/reclimit/setup.sh
bin/tests/system/reclimit/tests.sh
bin/tests/system/redirect/ns1/sign.sh
bin/tests/system/redirect/ns3/sign.sh
bin/tests/system/redirect/ns5/sign.sh
bin/tests/system/redirect/setup.sh
bin/tests/system/redirect/tests.sh
bin/tests/system/resolver/ns6/keygen.sh
bin/tests/system/resolver/prereq.sh [deleted file]
bin/tests/system/resolver/setup.sh
bin/tests/system/resolver/tests.sh
bin/tests/system/rndc/setup.sh
bin/tests/system/rndc/tests.sh
bin/tests/system/rootkeysentinel/ns1/sign.sh
bin/tests/system/rootkeysentinel/ns2/sign.sh
bin/tests/system/rootkeysentinel/setup.sh
bin/tests/system/rootkeysentinel/tests.sh
bin/tests/system/rpz/ckdnsrps.sh
bin/tests/system/rpz/setup.sh
bin/tests/system/rpz/tests.sh
bin/tests/system/rpzrecurse/prereq.sh [deleted file]
bin/tests/system/rpzrecurse/setup.sh
bin/tests/system/rpzrecurse/tests.sh
bin/tests/system/rrchecker/tests.sh
bin/tests/system/rrl/setup.sh
bin/tests/system/rrl/tests.sh
bin/tests/system/rrsetorder/setup.sh
bin/tests/system/rrsetorder/tests.sh
bin/tests/system/rsabigexponent/ns1/sign.sh
bin/tests/system/rsabigexponent/ns2/sign.sh
bin/tests/system/rsabigexponent/prereq.sh [deleted file]
bin/tests/system/rsabigexponent/setup.sh
bin/tests/system/rsabigexponent/tests.sh
bin/tests/system/run.sh.in [moved from bin/tests/system/run.sh with 58% similarity, mode: 0644]
bin/tests/system/runtime/setup.sh
bin/tests/system/runtime/tests.sh
bin/tests/system/serve-stale/prereq.sh [deleted file]
bin/tests/system/serve-stale/setup.sh
bin/tests/system/serve-stale/tests.sh
bin/tests/system/sfcache/tests.sh
bin/tests/system/smartsign/tests.sh
bin/tests/system/sortlist/setup.sh
bin/tests/system/sortlist/tests.sh
bin/tests/system/spf/setup.sh
bin/tests/system/spf/tests.sh
bin/tests/system/start.pl
bin/tests/system/start.sh [deleted file]
bin/tests/system/start.sh.in [moved from bin/tests/system/stop.sh with 74% similarity, mode: 0644]
bin/tests/system/staticstub/ns3/sign.sh
bin/tests/system/staticstub/ns4/sign.sh
bin/tests/system/staticstub/setup.sh
bin/tests/system/staticstub/tests.sh
bin/tests/system/statistics/prereq.sh [deleted file]
bin/tests/system/statistics/setup.sh
bin/tests/system/statistics/tests.sh
bin/tests/system/statschannel/prereq.sh [deleted file]
bin/tests/system/statschannel/tests.sh
bin/tests/system/stop.pl
bin/tests/system/stop.sh.in [moved from bin/tests/system/tcp/prereq.sh with 76% similarity]
bin/tests/system/stress/prereq.sh [deleted file]
bin/tests/system/stress/tests.sh
bin/tests/system/stub/setup.sh
bin/tests/system/stub/tests.sh
bin/tests/system/synthfromdnssec/tests.sh
bin/tests/system/system-test-driver.sh.in [moved from bin/tests/system/system-test-driver.sh with 87% similarity, mode: 0644]
bin/tests/system/tcp/setup.sh
bin/tests/system/tcp/tests.sh
bin/tests/system/tools/tests.sh
bin/tests/system/tsig/setup.sh
bin/tests/system/tsig/tests.sh
bin/tests/system/tsiggss/prereq.sh
bin/tests/system/tsiggss/setup.sh
bin/tests/system/tsiggss/tests.sh
bin/tests/system/unknown/ns3/sign.sh
bin/tests/system/unknown/setup.sh
bin/tests/system/unknown/tests.sh
bin/tests/system/upforwd/prereq.sh [deleted file]
bin/tests/system/upforwd/setup.sh
bin/tests/system/upforwd/tests.sh
bin/tests/system/verify/setup.sh
bin/tests/system/verify/tests.sh
bin/tests/system/verify/zones/genzones.sh
bin/tests/system/views/setup.sh
bin/tests/system/views/tests.sh
bin/tests/system/wildcard/ns1/sign.sh
bin/tests/system/wildcard/setup.sh
bin/tests/system/wildcard/tests.sh
bin/tests/system/win32/makejournal.vcxproj.filters.in [moved from bin/tests/win32/makejournal.vcxproj.filters.in with 100% similarity]
bin/tests/system/win32/makejournal.vcxproj.in [moved from bin/tests/win32/makejournal.vcxproj.in with 100% similarity]
bin/tests/system/win32/makejournal.vcxproj.user [moved from bin/tests/win32/makejournal.vcxproj.user with 100% similarity]
bin/tests/system/xfer/prereq.sh [deleted file]
bin/tests/system/xfer/setup.sh
bin/tests/system/xfer/tests.sh
bin/tests/system/xferquota/setup.sh
bin/tests/system/xferquota/tests.sh
bin/tests/system/zero/prereq.sh [deleted file]
bin/tests/system/zero/setup.sh
bin/tests/system/zero/tests.sh
bin/tests/system/zonechecks/setup.sh
bin/tests/system/zonechecks/tests.sh
bin/tools/Makefile.am [new file with mode: 0644]
bin/tools/dnstap-read.c
bin/tools/mdig.c
bin/tools/named-rrchecker.c
bin/tools/nsec3hash.c
bin/win32/BINDInstall/BINDInstallDlg.cpp
bind.keys.h [deleted file]
config.h.win32
configure.ac
contrib/README
contrib/dlz/modules/include/dlz_minimal.h
contrib/kasp/README [new file with mode: 0644]
contrib/kasp/kasp.xml [new file with mode: 0644]
contrib/kasp/policy.good [new file with mode: 0644]
doc/arm/libdns.xml
lib/.gitignore
lib/Kyuafile [deleted file]
lib/Makefile.am [new file with mode: 0644]
lib/bind9/Makefile.am [new file with mode: 0644]
lib/bind9/check.c
lib/bind9/include/bind9/version.h [deleted file]
lib/bind9/version.c [deleted file]
lib/bind9/win32/libbind9.vcxproj.filters.in
lib/bind9/win32/libbind9.vcxproj.in
lib/bind9/win32/version.c [deleted file]
lib/dns/Kyuafile [deleted file]
lib/dns/Makefile.am [new file with mode: 0644]
lib/dns/dnstap.c
lib/dns/dst_api.c
lib/dns/dst_internal.h
lib/dns/dyndb.c
lib/dns/gen-unix.h
lib/dns/gen-win32.h
lib/dns/geoip2.c
lib/dns/gssapi_link.c
lib/dns/gssapictx-dummy.c [new file with mode: 0644]
lib/dns/gssapictx.c
lib/dns/include/dns/types.h
lib/dns/include/dns/version.h [deleted file]
lib/dns/include/dst/gssapi.h
lib/dns/mapapi [deleted file]
lib/dns/name.c
lib/dns/opensslecdsa_link.c
lib/dns/openssleddsa_link.c
lib/dns/opensslrsa_link.c
lib/dns/pkcs11.c
lib/dns/pkcs11ecdsa_link.c
lib/dns/pkcs11eddsa_link.c
lib/dns/pkcs11rsa_link.c
lib/dns/rbt.c
lib/dns/rbtdb.c
lib/dns/resolver.c
lib/dns/spnego.asn1 [deleted file]
lib/dns/spnego.c [deleted file]
lib/dns/spnego.h [deleted file]
lib/dns/spnego_asn1.c [deleted file]
lib/dns/spnego_asn1.pl [deleted file]
lib/dns/ssu_external.c
lib/dns/tests/Kyuafile [deleted file]
lib/dns/tests/Makefile.am [new file with mode: 0644]
lib/dns/tests/dnstap_test.c
lib/dns/tests/geoip_test.c
lib/dns/tests/keytable_test.c
lib/dns/tests/master_test.c
lib/dns/tkey.c
lib/dns/win32/libdns.vcxproj.filters.in
lib/dns/win32/libdns.vcxproj.in
lib/dns/win32/version.c [deleted file]
lib/irs/Kyuafile [deleted file]
lib/irs/Makefile.am [new file with mode: 0644]
lib/irs/context.c
lib/irs/include/irs/netdb.h [new file with mode: 0644]
lib/irs/include/irs/netdb.h.in [deleted file]
lib/irs/include/irs/platform.h.in [deleted file]
lib/irs/include/irs/version.h [deleted file]
lib/irs/tests/Kyuafile [deleted file]
lib/irs/tests/Makefile.am [new file with mode: 0644]
lib/irs/tests/resconf_test.c
lib/irs/version.c [deleted file]
lib/irs/win32/include/irs/.gitignore
lib/irs/win32/include/irs/platform.h [deleted file]
lib/irs/win32/libirs.vcxproj.filters.in
lib/irs/win32/libirs.vcxproj.in
lib/irs/win32/version.c [deleted file]
lib/isc/Kyuafile [deleted file]
lib/isc/Makefile.am [new file with mode: 0644]
lib/isc/app.c
lib/isc/assertions.c
lib/isc/hp.c
lib/isc/include/isc/assertions.h
lib/isc/include/isc/attributes.h [moved from lib/dns/version.c with 56% similarity]
lib/isc/include/isc/error.h
lib/isc/include/isc/netaddr.h
lib/isc/include/isc/platform.h.in
lib/isc/include/isc/sockaddr.h
lib/isc/include/isc/version.h [deleted file]
lib/isc/include/pk11/pk11.h
lib/isc/netaddr.c
lib/isc/netmgr/netmgr.c
lib/isc/netmgr/tcp.c
lib/isc/pthreads/include/isc/thread.h
lib/isc/random.c
lib/isc/sockaddr.c
lib/isc/tests/Kyuafile [deleted file]
lib/isc/tests/Makefile.am [new file with mode: 0644]
lib/isc/tests/ht_test.c
lib/isc/unix/net.c
lib/isc/unix/socket.c
lib/isc/version.c [deleted file]
lib/isc/win32/include/isc/platform.h.in
lib/isc/win32/include/isc/stdatomic.h
lib/isc/win32/include/isc/thread.h
lib/isc/win32/libisc.vcxproj.filters.in
lib/isc/win32/libisc.vcxproj.in
lib/isc/win32/socket.c
lib/isc/win32/unistd.h
lib/isc/win32/version.c [deleted file]
lib/isc/xoshiro128starstar.c
lib/isccc/Kyuafile [deleted file]
lib/isccc/Makefile.am [new file with mode: 0644]
lib/isccc/include/isccc/version.h [deleted file]
lib/isccc/tests/Kyuafile [deleted file]
lib/isccc/tests/Makefile.am [new file with mode: 0644]
lib/isccc/version.c [deleted file]
lib/isccc/win32/libisccc.vcxproj.filters.in
lib/isccc/win32/libisccc.vcxproj.in
lib/isccc/win32/version.c [deleted file]
lib/isccfg/Kyuafile [deleted file]
lib/isccfg/Makefile.am [new file with mode: 0644]
lib/isccfg/include/isccfg/version.h [deleted file]
lib/isccfg/tests/Kyuafile [deleted file]
lib/isccfg/tests/Makefile.am [new file with mode: 0644]
lib/isccfg/tests/duration_test.c
lib/isccfg/tests/parser_test.c
lib/isccfg/version.c [deleted file]
lib/isccfg/win32/libisccfg.vcxproj.filters.in
lib/isccfg/win32/libisccfg.vcxproj.in
lib/isccfg/win32/version.c [deleted file]
lib/ns/Kyuafile [deleted file]
lib/ns/Makefile.am [new file with mode: 0644]
lib/ns/hooks.c
lib/ns/include/ns/version.h [deleted file]
lib/ns/query.c
lib/ns/tests/Kyuafile [deleted file]
lib/ns/tests/Makefile.am [new file with mode: 0644]
lib/ns/tests/plugin_test.c
lib/ns/win32/libns.vcxproj.filters
lib/ns/win32/libns.vcxproj.in
lib/ns/win32/version.c [deleted file]
lib/samples/.gitignore
lib/samples/Makefile-postinstall.in [deleted file]
lib/samples/Makefile.am [new file with mode: 0644]
lib/samples/nsprobe.c
lib/samples/resolve.c
lib/samples/sample-async.c
lib/samples/sample-request.c
lib/samples/sample-update.c
m4/ax_bind9_lib_version.m4 [new file with mode: 0644]
m4/ax_gcc_func_attribute.m4 [new file with mode: 0644]
m4/ax_perl_module.m4 [new file with mode: 0644]
m4/ax_python_module.m4 [new file with mode: 0644]
m4/ax_tls.m4 [new file with mode: 0644]
make/.gitignore [deleted file]
make/includes.in [deleted file]
make/mkdep.in [deleted file]
make/rules.in [deleted file]
mkinstalldirs [deleted file]
unit/.gitignore [deleted file]
unit/README [deleted file]
unit/gdb [deleted file]
unit/unittest.sh.in [deleted file]
util/check-ans-prereq.sh [deleted file]
util/checklibs.sh
util/copyrights
util/merge_copyrights
util/suppressions.txt
util/xc [deleted file]
version [deleted file]
win32utils/Configure
win32utils/bind9.sln.in

index bb2e9e9a88655430d4a707a042630e8d67b04b5f..71607aa297c9b685c70effb3f1b3e44e985e47b0 100644 (file)
@@ -4,11 +4,13 @@
 *.gcno
 *.la
 *.lo
+*.log
 *.o
 *.orig
 *.plist/ # ccc-analyzer store its results in .plist directories
 *.rej
 *.so
+*.trs
 *_test
 *.ipch # vscode/intellisense precompiled header
 *~
@@ -63,3 +65,4 @@ timestamp
 /cppcheck.results
 /tsan
 /util/check-make-install
+/INSTALL
index 3792643c444eaf942767b3bde04f3543a2acdbe4..0245affc043e9558c23891200fe7b36f40c739e2 100644 (file)
@@ -32,6 +32,7 @@ variables:
   TARBALL_EXTENSION: xz
 
 stages:
+  - autoconf
   - precheck
   - build
   - unit
@@ -168,7 +169,7 @@ stages:
 .autoconf: &autoconf_job
   <<: *release_branch_triggering_rules
   <<: *base_image
-  stage: precheck
+  stage: autoconf
   script:
     - autoreconf -fi
   artifacts:
@@ -186,6 +187,7 @@ stages:
     --with-json-c \
     --prefix=$HOME/.local \
     --without-make-clean \
+    --with-python=python3 \
     $EXTRA_CONFIGURE \
     || cat config.log
 
@@ -253,8 +255,8 @@ stages:
     - *setup_interfaces
     - *setup_softhsm
   script:
-    - ( cd bin/tests/system && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
-    - test -s bin/tests/system/systests.output
+    - ( cd bin/tests/system && make -j${TEST_PARALLEL_JOBS:-1} -k check V=1 ) || cat bin/tests/system/test-suite.log
+    - test -s bin/tests/system/test-suite.log
 
 .system_test: &system_test_job
   <<: *system_test_common
@@ -313,9 +315,7 @@ stages:
   before_script:
     - *setup_softhsm
   script:
-    - make unit
-  after_script:
-    - *kyua_report_html
+    - cd lib && make -j${TEST_PARALLEL_JOBS:-1} -k check V=1
 
 .unit_test: &unit_test_job
   <<: *unit_test_common
@@ -328,16 +328,12 @@ stages:
   <<: *unit_test_common
   allow_failure: true
   after_script:
-    - *kyua_report_html
     - find lib -name 'tsan.*' -exec python3 util/parse_tsan.py {} \;
   artifacts:
     expire_in: "1 day"
     paths:
       - lib/*/tests/tsan.*
       - tsan/
-      - kyua.log
-      - kyua.results
-      - kyua_html/
     when: on_failure
 
 .cppcheck_args: &run_cppcheck |
@@ -377,7 +373,6 @@ autoreconf:
 misc:
   <<: *precheck_job
   script:
-    - sh util/check-ans-prereq.sh
     - sh util/checklibs.sh > checklibs.out
     - sh util/tabify-changes < CHANGES > CHANGES.tmp
     - diff -urNap CHANGES CHANGES.tmp
@@ -451,16 +446,14 @@ tarball-create:
   stage: precheck
   <<: *base_image
   script:
-    - source version
-    - export BIND_DIRECTORY="bind-${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
-    - git archive --prefix="${BIND_DIRECTORY}/" --output="${BIND_DIRECTORY}.tar" HEAD
-    - mkdir "${BIND_DIRECTORY}"
-    - echo "SRCID=$(git rev-list --max-count=1 HEAD | cut -b1-7)" > "${BIND_DIRECTORY}/srcid"
-    - tar --append --file="${BIND_DIRECTORY}.tar" "${BIND_DIRECTORY}/srcid"
-    - ${TARBALL_COMPRESSOR} "${BIND_DIRECTORY}.tar"
+    - *configure
+    - make -j${BUILD_PARALLEL_JOBS:-1} dist V=1
   artifacts:
     paths:
-      - bind-*.tar.${TARBALL_EXTENSION}
+      - bind-*.tar.*
+  needs:
+    - job: autoreconf
+      artifacts: true
   only:
     - tags
 
@@ -477,6 +470,7 @@ docs:
   needs:
     - job: autoreconf
       artifacts: true
+  allow_failure: true
   artifacts:
     paths:
       - doc/arm/
@@ -524,7 +518,7 @@ gcc:centos6:amd64:
   variables:
     CC: gcc
     CFLAGS: "${CFLAGS_COMMON}"
-    EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error"
+    EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error --without-python"
   <<: *centos_centos6_amd64_image
   <<: *build_job
 
@@ -805,7 +799,7 @@ gcc:tumbleweed:amd64:
   variables:
     CC: gcc
     CFLAGS: "${CFLAGS_COMMON}"
-    EXTRA_CONFIGURE: "--with-libidn2"
+    EXTRA_CONFIGURE: "--with-libidn2 --with-python"
   <<: *tumbleweed_latest_amd64_image
   <<: *build_job
 
@@ -1152,77 +1146,17 @@ system:clang:openbsd6.6:amd64:
     - schedules
     - web
 
-# Jobs for Visual Studio 2017 builds on Windows (amd64)
-
-msvc:windows:amd64:
-  <<: *windows_build_job
-  <<: *default_triggering_rules
-  variables:
-    VSCONF: Release
-
-system:msvc:windows:amd64:
-  <<: *windows_system_test_job
-  variables:
-    VSCONF: Release
-  needs:
-    - job: msvc:windows:amd64
-      artifacts: true
-
-msvc-debug:windows:amd64:
-  <<: *windows_build_job
-  variables:
-    VSCONF: Debug
-  only:
-    - schedules
-    - tags
-    - web
-
-system:msvc-debug:windows:amd64:
-  <<: *windows_system_test_job
-  variables:
-    VSCONF: Debug
-  needs:
-    - job: msvc-debug:windows:amd64
-      artifacts: true
-
 # Job producing a release tarball
 
 release:
   <<: *base_image
   stage: release
   script:
-    # Determine BIND version
-    - source version
-    - export BIND_DIRECTORY="bind-${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}"
-    # Remove redundant files and system test utilities from Windows build artifacts
-    - find Build/Release/ -name "*.pdb" -print -delete
-    - find Build/Debug/ \( -name "*.bsc" -o -name "*.idb" \) -print -delete
-    - find Build/ -regextype posix-extended -regex "Build/.*/($(find bin/tests/ -type f | sed -nE "s|^bin/tests(/system)?/win32/(.*)\.vcxproj$|\2|p" | paste -d"|" -s))\..*" -print -delete
-    # Create Windows zips
-    - openssl dgst -sha256 "${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}" | tee Build/Release/SHA256 Build/Debug/SHA256
-    - ( cd Build/Release; zip "../../BIND${BIND_DIRECTORY#bind-}.x64.zip" * )
-    - ( cd Build/Debug; zip "../../BIND${BIND_DIRECTORY#bind-}.debug.x64.zip" * )
-    # Prepare release tarball contents (tarballs + zips + documentation)
-    - mkdir -p release/doc/arm
-    - pushd release
-    - mv "../${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}" ../BIND*.zip .
-    - tar --extract --file="${BIND_DIRECTORY}.tar.${TARBALL_EXTENSION}"
-    - mv "${BIND_DIRECTORY}"/{CHANGES*,COPYRIGHT,LICENSE,README,srcid} .
-    - mv "${BIND_DIRECTORY}"/doc/arm/{Bv9ARM{*.html,.pdf},man.*,notes.{html,pdf,txt}} doc/arm/
-    - rm -rf "${BIND_DIRECTORY}"
-    - cp doc/arm/notes.html "RELEASE-NOTES-${BIND_DIRECTORY}.html"
-    - cp doc/arm/notes.pdf "RELEASE-NOTES-${BIND_DIRECTORY}.pdf"
-    - cp doc/arm/notes.txt "RELEASE-NOTES-${BIND_DIRECTORY}.txt"
-    - popd
     # Create release tarball
     - tar --create --file="${CI_COMMIT_TAG}.tar.gz" --gzip release/
   needs:
     - job: tarball-create
       artifacts: true
-    - job: msvc:windows:amd64
-      artifacts: true
-    - job: msvc-debug:windows:amd64
-      artifacts: true
   only:
     - tags
   artifacts:
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..6943d5a
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,53 @@
+Mark Andrews
+Andreas Gustafsson
+Evan Hunt
+Brian Wellington
+Bob Halley
+David Lawrence
+Michael Graff
+Michael Sawyer
+Ondřej Surý
+James Brister
+Tatuya JINMEI 神明達哉
+Francis Dupont
+Michał Kępień
+Danny Mayer
+Mukund Sivaraman
+Jeremy C. Reed
+William King
+Stephen Morris
+Witold Kręcicki
+Curtis Blackburn
+Scott Mann
+Rob Austein
+Jim Reid
+Eric Luce
+Olafur Gudmundsson
+Stephen Jacob
+Damien Neil
+Tony Finch
+Jakob Schlyter
+Petr Menšík
+Vernon Schryver
+Matt Nelson
+Shane Kerr
+Paul Ebersman
+Ray Bellis
+Shawn Routhier
+Ben Cottrell
+Tomas Hozza
+johnd
+Bill Parker
+李昶
+Kevin Chen
+Jonathan Casey
+Mary Stahl
+Mathieu Arnold
+David Hankins
+Paul Hoffman
+Paul Vixie
+Brian Conry
+Anay Panvalkar
+colleen
+Robert Edmonds
+João Damas
diff --git a/CODE_OF_CONDUCT b/CODE_OF_CONDUCT
deleted file mode 100644 (file)
index b5a630a..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-CODE OF CONDUCT
-
-BIND 9 Code of Conduct
-
-Like the technical community as a whole, the BIND 9 team and community is
-made up of a mixture of professionals and volunteers from all over the
-world, working on every aspect of the mission - including mentorship,
-teaching, and connecting people.
-
-Diversity is one of our huge strengths, but it can also lead to
-communication issues and unhappiness. To that end, we have a few ground
-rules that we ask people to adhere to. This code applies equally to the
-core development team, open source contributors and those seeking help and
-guidance.
-
-This isn't an exhaustive list of things that you can't do. Rather, take it
-in the spirit in which it's intended - a guide to make it easier to enrich
-all of us and the technical communities in which we participate.
-
-This code of conduct applies to all spaces managed by the BIND 9 project
-or Internet Systems Consortium. This includes chat, the mailing lists, the
-issue tracker, and any other fora created by the project team which the
-community uses for communication. In addition, violations of this code
-outside these spaces may affect a person's ability to participate within
-them.
-
-If you believe someone is violating the code of conduct, we ask that you
-report it by emailing conduct@isc.org. For more details please see our
-Reporting Guidelines.
-
-  * Be friendly and patient.
-  * Be welcoming. We strive to be a community that welcomes and supports
-    people of all backgrounds and identities. This includes, but is not
-    limited to members of any race, ethnicity, culture, national origin,
-    colour, immigration status, social and economic class, educational
-    level, sex, sexual orientation, gender identity and expression, age,
-    size, family status, political belief, religion, and mental and
-    physical ability.
-  * Be considerate. Your work will be used by other people, and you in
-    turn will depend on the work of others. Any decision you take will
-    affect users and colleagues, and you should take those consequences
-    into account when making decisions. Remember that we're a world-wide
-    community, so you might not be communicating in someone else's primary
-    language.
-  * Be respectful. Not all of us will agree all the time, but disagreement
-    is no excuse for poor behavior and poor manners. We might all
-    experience some frustration now and then, but we cannot allow that
-    frustration to turn into a personal attack. It's important to remember
-    that a community where people feel uncomfortable or threatened is not
-    a productive one. Members of the BIND 9 community should be respectful
-    when dealing with other members as well as with people outside the
-    BIND 9 community.
-  * Be careful in the words that you choose. We are a community of
-    professionals, and we conduct ourselves professionally. Be kind to
-    others. Do not insult or put down other participants. Harassment and
-    other exclusionary behavior aren't acceptable. This includes, but is
-    not limited to:
-      + Violent threats or language directed against another person.
-      + Discriminatory jokes and language.
-      + Posting sexually explicit or violent material.
-      + Posting (or threatening to post) other people's personally
-        identifying information ("doxing").
-      + Personal insults, especially those using racist or sexist terms.
-      + Unwelcome sexual attention.
-      + Advocating for, or encouraging, any of the above behavior.
-      + Repeated harassment of others. In general, if someone asks you to
-        stop, then stop.
-  * When we disagree, try to understand why. Disagreements, both social
-    and technical, happen all the time and BIND 9 is no exception. It is
-    important that we resolve disagreements and differing views
-    constructively. Remember that we're different. The strength of BIND 9
-    comes from its varied community, people from a wide range of
-    backgrounds. Different people have different perspectives on issues.
-    Being unable to understand why someone holds a viewpoint doesn't mean
-    that they're wrong. Don't forget that it is human to err and blaming
-    each other doesn't get us anywhere. Instead, focus on helping to
-    resolve issues and learning from mistakes.
-
-Original text courtesy of the Django Code of Conduct project.
diff --git a/CONTRIBUTING b/CONTRIBUTING
deleted file mode 100644 (file)
index 509c82c..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-CONTRIBUTING
-
-BIND Source Access and Contributor Guidelines
-
-Feb 22, 2018
-
-Contents
-
- 1. Access to source code
- 2. Reporting bugs
- 3. Contributing code
-
-Introduction
-
-Thank you for using BIND!
-
-BIND is open source software that implements the Domain Name System (DNS)
-protocols for the Internet. It is a reference implementation of those
-protocols, but it is also production-grade software, suitable for use in
-high-volume and high-reliability applications. It is by far the most
-widely used DNS software, providing a robust and stable platform on top of
-which organizations can build distributed computing systems with the
-knowledge that those systems are fully compliant with published DNS
-standards.
-
-BIND is and will always remain free and openly available. It can be used
-and modified in any way by anyone.
-
-BIND is maintained by the Internet Systems Consortium, a public-benefit
-501(c)(3) nonprofit, using a "managed open source" approach: anyone can
-see the source, but only ISC employees have commit access. Until recently,
-the source could only be seen once ISC had published a release: read
-access to the source repository was restricted just as commit access was.
-That's now changing, with the opening of a public git mirror to the BIND
-source tree (see below).
-
-At Internet Systems Consortium, we're committed to building communities
-that are welcoming and inclusive; environments where people are encouraged
-to share ideas, treat each other with respect, and collaborate towards the
-best solutions. To reinforce our commitment, the Internet Systems
-Consortium has adopted the Contributor Covenant version 1.4 as our Code of
-Conduct for BIND 9 project, as well as for the conduct of our developers
-throughout the industry.
-
-Access to source code
-
-Public BIND releases are always available from the ISC FTP site.
-
-A public-access GIT repository is also available at https://gitlab.isc.org
-. This repository is a mirror, updated several times per day, of the
-source repository maintained by ISC. It contains all the public release
-branches; upcoming releases can be viewed in their current state at any
-time. It does not contain development branches or unreviewed work in
-progress. Commits which address security vulnerablilities are withheld
-until after public disclosure.
-
-You can browse the source online via https://gitlab.isc.org/isc-projects/
-bind9
-
-To clone the repository, use:
-
-      $ git clone https://gitlab.isc.org/isc-projects/bind9.git
-
-Release branch names are of the form v9_X, where X represents the second
-number in the BIND 9 version number. So, to check out the BIND 9.12
-branch, use:
-
-      $ git checkout v9_12
-
-Whenever a branch is ready for publication, a tag will be placed of the
-form v9_X_Y. The 9.12.0 release, for instance, is tagged as v9_12_0.
-
-The branch in which the next major release is being developed is called
-master.
-
-Reporting bugs
-
-Reports of flaws in the BIND package, including software bugs, errors in
-the documentation, missing files in the tarball, suggested changes or
-requests for new features, etc, can be filed using https://gitlab.isc.org/
-isc-projects/bind9/issues.
-
-Due to a large ticket backlog, we are sometimes slow to respond,
-especially if a bug is cosmetic or if a feature request is vague or low in
-priority, but we will try at least to acknowledge legitimate bug reports
-within a week.
-
-ISC's ticketing system is publicly readable; however, you must have an
-account to file a new issue. You can either register locally or use
-credentials from an existing account at GitHub, GitLab, Google, Twitter,
-or Facebook.
-
-Reporting possible security issues
-
-If you think you may be seeing a potential security vulnerability in BIND
-(for example, a crash with REQUIRE, INSIST, or ASSERT failure), please
-report it immediately by emailing to security-officer@isc.org. Plain-text
-e-mail is not a secure choice for communications concerning undisclosed
-security issues so please encrypt your communications to us if possible,
-using the ISC Security Officer public key.
-
-Do not discuss undisclosed security vulnerabilities on any public mailing
-list. ISC has a long history of handling reported vulnerabilities promptly
-and effectively and we respect and acknowledge responsible reporters.
-
-ISC's Security Vulnerability Disclosure Policy is documented at https://
-kb.isc.org/article/AA-00861/0.
-
-If you have a crash, you may want to consult ?What to do if your BIND or
-DHCP server has crashed.?
-
-Contributing code
-
-BIND is licensed under the Mozilla Public License 2.0. Earier versions
-(BIND 9.10 and earlier) were licensed under the ISC License
-
-ISC does not require an explicit copyright assignment for patch
-contributions. However, by submitting a patch to ISC, you implicitly
-certify that you are the author of the code, that you intend to reliquish
-exclusive copyright, and that you grant permission to publish your work
-under the open source license used for the BIND version(s) to which your
-patch will be applied.
-
-BIND code
-
-Patches for BIND may be submitted directly via merge requests in ISC's
-Gitlab source repository for BIND.
-
-Patches can also be submitted as diffs against a specific version of BIND
--- preferably the current top of the master branch. Diffs may be generated
-using either git format-patch or git diff.
-
-Those wanting to write code for BIND may be interested in the developer
-information page, which includes information about BIND design and coding
-practices, including discussion of internal APIs and overall system
-architecture. (This is a work in progress, and still quite preliminary.)
-
-Every patch submitted will be reviewed by ISC engineers following our code
-review process before it is merged.
-
-It may take considerable time to review patch submissions, especially if
-they don't meet ISC style and quality guidelines. If a patch is a good
-idea, we can and will do additional work to bring it up to par, but if
-we're busy with other work, it may take us a long time to get to it.
-
-To ensure your patch is acted on as promptly as possible, please:
-
-  * Try to adhere to the BIND 9 coding style.
-  * Run make check to ensure your change hasn't caused any functional
-    regressions.
-  * Document your work, both in the patch itself and in the accompanying
-    email.
-  * In patches that make non-trivial functional changes, include system
-    tests if possible; when introducing or substantially altering a
-    library API, include unit tests. See Testing for more information.
-
-Changes to configure
-
-If you need to make changes to configure, you should not edit it directly;
-instead, edit configure.in, then run autoconf. Similarly, instead of
-editing config.h.in directly, edit configure.in and run autoheader.
-
-When submitting a patch as a diff, it's fine to omit the configure diffs
-to save space. Just send the configure.in diffs and we'll generate the new
-configure during the review process.
-
-Documentation
-
-All functional changes should be documented. There are three types of
-documentation in the BIND source tree:
-
-  * Man pages are kept alongside the source code for the commands they
-    document, in files ending in .docbook; for example, the named man page
-    is bin/named/named.docbook.
-  * The BIND 9 Administrator Reference Manual is mostly in doc/arm/
-    Bv9ARM-book.xml, plus a few other XML files that are included in it.
-  * API documentation is in the header file describing the API, in
-    Doxygen-formatted comments.
-
-It is not necessary to edit any documentation files other than these; all
-PDF, HTML, and nroff-format man page files will be updated automatically
-from the docbook and XML files after merging.
-
-Patches to improve existing documentation are also very welcome!
-
-Tests
-
-BIND is a large and complex project. We rely heavily on continuous
-automated testing and cannot merge new code without adequate test
-coverage. Please see the 'Testing' section of doc/dev/dev.md for more
-information.
-
-Thanks
-
-Thank you for your interest in contributing to the ongoing development of
-BIND.
diff --git a/COPYING b/COPYING
new file mode 120000 (symlink)
index 0000000..7a694c9
--- /dev/null
+++ b/COPYING
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
diff --git a/ChangeLog b/ChangeLog
new file mode 120000 (symlink)
index 0000000..d67d252
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1 @@
+CHANGES
\ No newline at end of file
diff --git a/HISTORY b/HISTORY
deleted file mode 100644 (file)
index 614e18d..0000000
--- a/HISTORY
+++ /dev/null
@@ -1,615 +0,0 @@
-HISTORY
-
-Functional enhancements from prior major releases of BIND 9
-
-BIND 9.16
-
-BIND 9.16 (a stable branch based on the 9.15 development branch) includes
-a number of changes from BIND 9.14 and earlier releases. New features
-include:
-
-  * New dnssec-policy statement to configure a key and signing policy for
-    zones, enabling automatic key regeneration and rollover.
-  * New network manager based on libuv.
-  * Added support for the new GeoIP2 geolocation API, libmaxminddb.
-  * Improved DNSSEC trust anchor configuration using the trust-anchors
-    statement, permitting configuration of trust anchors in DS as well as
-    DNSKEY format.
-  * YAML output for dig, mdig, and delv.
-
-BIND 9.14
-
-BIND 9.14 (a stable branch based on the 9.13 development branch) includes
-a number of changes from BIND 9.12 and earlier releases. New features
-include:
-
-  * A new "plugin" mechanism has been added to allow query functionality
-    to be extended using dynamically loadable libraries. The "filter-aaaa"
-    feature has been removed from named and is now implemented as a
-    plugin.
-  * Socket and task code has been refactored to improve performance.
-  * QNAME minimization, as described in RFC 7816, is now supported.
-  * "Root key sentinel" support, enabling validating resolvers to indicate
-    via a special query which trust anchors are configured for the root
-    zone.
-  * Secondary zones can now be configured as "mirror" zones; their
-    contents are transferred in as with traditional slave zones, but are
-    subject to DNSSEC validation and are not treated as authoritative data
-    when answering. This makes it easier to configure a local copy of the
-    root zone as described in RFC 7706.
-  * The "validate-except" option allows configuration of domains below
-    which DNSSEC validation should not be performed.
-  * The default value of "dnssec-validation" is now "auto".
-  * IDNA2008 is now supported when linking with libidn2.
-  * "named -V" now outputs the default paths for files used by named and
-    other tools.
-
-In addition, workarounds that were formerly in place to enable resolution
-of domains whose authoritative servers did not respond to EDNS queries
-have been removed. See https://dnsflagday.net for more details.
-
-Cryptographic support has been modernized. BIND now uses the best
-available pseudo-random number generator for the platform on which it's
-built. Very old versions of OpenSSL are no longer supported. Cryptography
-is now mandatory: building BIND without DNSSEC is no longer supported.
-
-Special code to support certain legacy operating systems has also been
-removed; see the file PLATFORMS.md for details of supported platforms. In
-addition to OpenSSL, BIND now requires support for IPv6, threads, and
-standard atomic operations provided by the C compiler.
-
-BIND 9.12
-
-BIND 9.12 includes a number of changes from BIND 9.11 and earlier
-releases. New features include:
-
-  * named and related libraries have been substantially refactored for
-    improved query performance -- particularly on delegation heavy zones
-    -- and for improved readability, maintainability, and testability.
-  * Code implementing the name server query processing logic has been
-    moved into a new libns library, for easier testing and use in tools
-    other than named.
-  * Cached, validated NSEC and other records can now be used to synthesize
-    NXDOMAIN responses.
-  * The DNS Response Policy Service API (DNSRPS) is now supported.
-  * Setting 'max-journal-size default' now limits the size of journal
-    files to twice the size of the zone.
-  * dnstap-read -x prints a hex dump of the wire format of each logged DNS
-    message.
-  * dnstap output files can now be configured to roll automatically when
-    reaching a given size.
-  * Log file timestamps can now also be formatted in ISO 8601 (local) or
-    ISO 8601 (UTC) formats.
-  * Logging channels and dnstap output files can now be configured to use
-    a timestamp as the suffix when rolling to a new file.
-  * 'named-checkconf -l' lists zones found in named.conf.
-  * Added support for the EDNS Padding and Keepalive options.
-  * 'new-zones-directory' option sets the location where the configuration
-    data for zones added by rndc addzone is stored.
-  * The default key algorithm in rndc-confgen is now hmac-sha256.
-  * filter-aaaa-on-v4 and filter-aaaa-on-v6 options are now available by
-    default without a configure option.
-  * The obsolete isc-hmac-fixup command has been removed.
-
-BIND 9.11
-
-BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier
-releases. New features include:
-
-  * Added support for Catalog Zones, a new method for provisioning
-    servers: a list of zones to be served is stored in a DNS zone, along
-    with their configuration parameters. Changes to the catalog zone are
-    propagated to slaves via normal AXFR/IXFR, whereupon the zones that
-    are listed in it are automatically added, deleted or reconfigured.
-  * Added support for "dnstap", a fast and flexible method of capturing
-    and logging DNS traffic.
-  * Added support for "dyndb", a new API for loading zone data from an
-    external database, developed by Red Hat for the FreeIPA project.
-  * "fetchlimit" quotas are now compiled in by default. These are for the
-    use of recursive resolvers that are are under high query load for
-    domains whose authoritative servers are nonresponsive or are
-    experiencing a denial of service attack:
-      + "fetches-per-server" limits the number of simultaneous queries
-        that can be sent to any single authoritative server. The
-        configured value is a starting point; it is automatically adjusted
-        downward if the server is partially or completely non-responsive.
-        The algorithm used to adjust the quota can be configured via the
-        "fetch-quota-params" option.
-      + "fetches-per-zone" limits the number of simultaneous queries that
-        can be sent for names within a single domain. (Note: Unlike
-        "fetches-per-server", this value is not self-tuning.)
-      + New stats counters have been added to count queries spilled due to
-        these quotas.
-  * Added a new "dnssec-keymgr" key mainenance utility, which can generate
-    or update keys as needed to ensure that a zone's keys match a defined
-    DNSSEC policy.
-  * The experimental "SIT" feature in BIND 9.10 has been renamed "COOKIE"
-    and is no longer optional. EDNS COOKIE is a mechanism enabling clients
-    to detect off-path spoofed responses, and servers to detect
-    spoofed-source queries. Clients that identify themselves using COOKIE
-    options are not subject to response rate limiting (RRL) and can
-    receive larger UDP responses.
-  * SERVFAIL responses can now be cached for a limited time (defaulting to
-    1 second, with an upper limit of 30). This can reduce the frequency of
-    retries when a query is persistently failing.
-  * Added an "nsip-wait-recurse" switch to RPZ. This causes NSIP rules to
-    be skipped if a name server IP address isn't in the cache yet; the
-    address will be looked up and the rule will be applied on future
-    queries.
-  * Added a Python RNDC module. This allows multiple commands to sent over
-    a persistent RNDC channel, which saves time.
-  * The "controls" block in named.conf can now grant read-only "rndc"
-    access to specified clients or keys. Read-only clients could, for
-    example, check "rndc status" but could not reconfigure or shut down
-    the server.
-  * "rndc" commands can now return arbitrarily large amounts of text to
-    the caller.
-  * The zone serial number of a dynamically updatable zone can now be set
-    via "rndc signing -serial ". This allows inline-signing zones to be
-    set to a specific serial number.
-  * The new "rndc nta" command can be used to set a Negative Trust Anchor
-    (NTA), disabling DNSSEC validation for a specific domain; this can be
-    used when responses from a domain are known to be failing validation
-    due to administrative error rather than because of a spoofing attack.
-    Negative trust anchors are strictly temporary; by default they expire
-    after one hour, but can be configured to last up to one week.
-  * "rndc delzone" can now be used on zones that were not originally
-    created by "rndc addzone".
-  * "rndc modzone" reconfigures a single zone, without requiring the
-    entire server to be reconfigured.
-  * "rndc showzone" displays the current configuration of a zone.
-  * "rndc managed-keys" can be used to check the status of RFC 5011
-    managed trust anchors, or to force trust anchors to be refreshed.
-  * "max-cache-size" can now be set to a percentage of available memory.
-    The default is 90%.
-  * Update forwarding performance has been improved by allowing a single
-    TCP connection to be shared by multiple updates.
-  * The EDNS Client Subnet (ECS) option is now supported for authoritative
-    servers; if a query contains an ECS option then ACLs containing
-    "geoip" or "ecs" elements can match against the the address encoded in
-    the option. This can be used to select a view for a query, so that
-    different answers can be provided depending on the client network.
-  * The EDNS EXPIRE option has been implemented on the client side,
-    allowing a slave server to set the expiration timer correctly when
-    transferring zone data from another slave server.
-  * The key generation and manipulation tools (dnssec-keygen,
-    dnssec-settime, dnssec-importkey, dnssec-keyfromlabel) now take
-    "-Psync" and "-Dsync" options to set the publication and deletion
-    times of CDS and CDNSKEY parent-synchronization records. Both named
-    and dnssec-signzone can now publish and remove these records at the
-    scheduled times.
-  * A new "minimal-any" option reduces the size of UDP responses for query
-    type ANY by returning a single arbitrarily selected RRset instead of
-    all RRsets.
-  * A new "masterfile-style" zone option controls the formatting of text
-    zone files: When set to "full", a zone file is dumped in
-    single-line-per-record format.
-  * "serial-update-method" can now be set to "date". On update, the serial
-    number will be set to the current date in YYYYMMDDNN format.
-  * "dnssec-signzone -N date" sets the serial number to YYYYMMDDNN.
-  * "named -L " causes named to send log messages to the specified file by
-    default instead of to the system log.
-  * "dig +ttlunits" prints TTL values with time-unit suffixes: w, d, h, m,
-    s for weeks, days, hours, minutes, and seconds.
-  * "dig +unknownformat" prints dig output in RFC 3597 "unknown record"
-    presentation format.
-  * "dig +ednsopt" allows dig to set arbitrary EDNS options on requests.
-  * "dig +ednsflags" allows dig to set yet-to-be-defined EDNS flags on
-    requests.
-  * "mdig" is an alternate version of dig which sends multiple pipelined
-    TCP queries to a server. Instead of waiting for a response after
-    sending a query, it sends all queries immediately and displays
-    responses in the order received.
-  * "serial-query-rate" no longer controls NOTIFY messages. These are
-    separately controlled by "notify-rate" and "startup-notify-rate".
-  * "nsupdate" now performs "check-names" processing by default on records
-    to be added. This can be disabled with "check-names no".
-  * The statistics channel now supports DEFLATE compression, reducing the
-    size of the data sent over the network when querying statistics.
-  * New counters have been added to the statistics channel to track the
-    sizes of incoming queries and outgoing responses in histogram buckets,
-    as specified in RSSAC002.
-  * A new NXDOMAIN redirect method (option "nxdomain-redirect") has been
-    added, allowing redirection to a specified DNS namespace instead of a
-    single redirect zone.
-  * When starting up, named now ensures that no other named process is
-    already running.
-  * Files created by named to store information, including "mkeys" and
-    "nzf" files, are now named after their corresponding views unless the
-    view name contains characters incompatible with use as a filename. Old
-    style filenames (based on the hash of the view name) will still work.
-
-BIND 9.10.0
-
-BIND 9.10.0 includes a number of changes from BIND 9.9 and earlier
-releases. New features include:
-
-  * DNS Response-rate limiting (DNS RRL), which blunts the impact of
-    reflection and amplification attacks, is always compiled in and no
-    longer requires a compile-time option to enable it.
-  * An experimental "Source Identity Token" (SIT) EDNS option is now
-    available. Similar to DNS Cookies as invented by Donald Eastlake 3rd,
-    these are designed to enable clients to detect off-path spoofed
-    responses, and to enable servers to detect spoofed-source queries.
-    Servers can be configured to send smaller responses to clients that
-    have not identified themselves using a SIT option, reducing the
-    effectiveness of amplification attacks. RRL processing has also been
-    updated; clients proven to be legitimate via SIT are not subject to
-    rate limiting. Use "configure --enable-sit" to enable this feature in
-    BIND.
-  * A new zone file format, "map", stores zone data in a format that can
-    be mapped directly into memory, allowing significantly faster zone
-    loading.
-  * "delv" (domain entity lookup and validation) is a new tool with
-    dig-like semantics for looking up DNS data and performing internal
-    DNSSEC validation. This allows easy validation in environments where
-    the resolver may not be trustworthy, and assists with troubleshooting
-    of DNSSEC problems. (NOTE: In previous development releases of BIND
-    9.10, this utility was called "delve". The spelling has been changed
-    to avoid confusion with the "delve" utility included with the Xapian
-    search engine.)
-  * Improved EDNS(0) processing for better resolver performance and
-    reliability over slow or lossy connections.
-  * A new "configure --with-tuning=large" option tunes certain compiled-in
-    constants and default settings to values better suited to large
-    servers with abundant memory. This can improve performance on such
-    servers, but will consume more memory and may degrade performance on
-    smaller systems.
-  * Substantial improvement in response-policy zone (RPZ) performance. Up
-    to 32 response-policy zones can be configured with minimal performance
-    loss.
-  * To improve recursive resolver performance, cache records which are
-    still being requested by clients can now be automatically refreshed
-    from the authoritative server before they expire, reducing or
-    eliminating the time window in which no answer is available in the
-    cache.
-  * New "rpz-client-ip" triggers and drop policies allowing response
-    policies based on the IP address of the client.
-  * ACLs can now be specified based on geographic location using the
-    MaxMind GeoIP databases. Use "configure --with-geoip" to enable.
-  * Zone data can now be shared between views, allowing multiple views to
-    serve the same zones authoritatively without storing multiple copies
-    in memory.
-  * New XML schema (version 3) for the statistics channel includes many
-    new statistics and uses a flattened XML tree for faster parsing. The
-    older schema is now deprecated.
-  * A new stylesheet, based on the Google Charts API, displays XML
-    statistics in charts and graphs on javascript-enabled browsers.
-  * The statistics channel can now provide data in JSON format as well as
-    XML.
-  * New stats counters track TCP and UDP queries received per zone, and
-    EDNS options received in total.
-  * The internal and export versions of the BIND libraries (libisc,
-    libdns, etc) have been unified so that external library clients can
-    use the same libraries as BIND itself.
-  * A new compile-time option, "configure --enable-native-pkcs11", allows
-    BIND 9 cryptography functions to use the PKCS#11 API natively, so that
-    BIND can drive a cryptographic hardware service module (HSM) directly
-    instead of using a modified OpenSSL as an intermediary. (Note: This
-    feature requires an HSM to have a full implementation of the PKCS#11
-    API; many current HSMs only have partial implementations. The new
-    "pkcs11-tokens" command can be used to check API completeness. Native
-    PKCS#11 is known to work with the Thales nShield HSM and with SoftHSM
-    version 2 from the Open DNSSEC project.)
-  * The new "max-zone-ttl" option enforces maximum TTLs for zones. This
-    can simplify the process of rolling DNSSEC keys by guaranteeing that
-    cached signatures will have expired within the specified amount of
-    time.
-  * "dig +subnet" sends an EDNS CLIENT-SUBNET option when querying.
-  * "dig +expire" sends an EDNS EXPIRE option when querying. When this
-    option is sent with an SOA query to a server that supports it, it will
-    report the expiry time of a slave zone.
-  * New "dnssec-coverage" tool to check DNSSEC key coverage for a zone and
-    report if a lapse in signing coverage has been inadvertently
-    scheduled.
-  * Signing algorithm flexibility and other improvements for the "rndc"
-    control channel.
-  * "named-checkzone" and "named-compilezone" can now read journal files,
-    allowing them to process dynamic zones.
-  * Multiple DLZ databases can now be configured. Individual zones can be
-    configured to be served from a specific DLZ database. DLZ databases
-    now serve zones of type "master" and "redirect".
-  * "rndc zonestatus" reports information about a specified zone.
-  * "named" now listens on IPv6 as well as IPv4 interfaces by default.
-  * "named" now preserves the capitalization of names when responding to
-    queries: for instance, a query for "example.com" may be answered with
-    "example.COM" if the name was configured that way in the zone file.
-    Some clients have a bug causing them to depend on the older behavior,
-    in which the case of the answer always matched the case of the query,
-    rather than the case of the name configured in the DNS. Such clients
-    can now be specified in the new "no-case-compress" ACL; this will
-    restore the older behavior of "named" for those clients only.
-  * new "dnssec-importkey" command allows the use of offline DNSSEC keys
-    with automatic DNSKEY management.
-  * New "named-rrchecker" tool to verify the syntactic correctness of
-    individual resource records.
-  * When re-signing a zone, the new "dnssec-signzone -Q" option drops
-    signatures from keys that are still published but are no longer
-    active.
-  * "named-checkconf -px" will print the contents of configuration files
-    with the shared secrets obscured, making it easier to share
-    configuration (e.g. when submitting a bug report) without revealing
-    private information.
-  * "rndc scan" causes named to re-scan network interfaces for changes in
-    local addresses.
-  * On operating systems with support for routing sockets, network
-    interfaces are re-scanned automatically whenever they change.
-  * "tsig-keygen" is now available as an alternate command name to use for
-    "ddns-confgen".
-
-BIND 9.9.0
-
-BIND 9.9.0 includes a number of changes from BIND 9.8 and earlier
-releases. New features include:
-
-  * Inline signing, allowing automatic DNSSEC signing of master zones
-    without modification of the zonefile, or "bump in the wire" signing in
-    slaves.
-  * NXDOMAIN redirection.
-  * New 'rndc flushtree' command clears all data under a given name from
-    the DNS cache.
-  * New 'rndc sync' command dumps pending changes in a dynamic zone to
-    disk without a freeze/thaw cycle.
-  * New 'rndc signing' command displays or clears signing status records
-    in 'auto-dnssec' zones.
-  * NSEC3 parameters for 'auto-dnssec' zones can now be set prior to
-    signing, eliminating the need to initially sign with NSEC.
-  * Startup time improvements on large authoritative servers.
-  * Slave zones are now saved in raw format by default.
-  * Several improvements to response policy zones (RPZ).
-  * Improved hardware scalability by using multiple threads to listen for
-    queries and using finer-grained client locking
-  * The 'also-notify' option now takes the same syntax as 'masters', so it
-    can used named masterlists and TSIG keys.
-  * 'dnssec-signzone -D' writes an output file containing only DNSSEC
-    data, which can be included by the primary zone file.
-  * 'dnssec-signzone -R' forces removal of signatures that are not expired
-    but were created by a key which no longer exists.
-  * 'dnssec-signzone -X' allows a separate expiration date to be specified
-    for DNSKEY signatures from other signatures.
-  * New '-L' option to dnssec-keygen, dnssec-settime, and
-    dnssec-keyfromlabel sets the default TTL for the key.
-  * dnssec-dsfromkey now supports reading from standard input, to make it
-    easier to convert DNSKEY to DS.
-  * RFC 1918 reverse zones have been added to the empty-zones table per
-    RFC 6303.
-  * Dynamic updates can now optionally set the zone's SOA serial number to
-    the current UNIX time.
-  * DLZ modules can now retrieve the source IP address of the querying
-    client.
-  * 'request-ixfr' option can now be set at the per-zone level.
-  * 'dig +rrcomments' turns on comments about DNSKEY records, indicating
-    their key ID, algorithm and function
-  * Simplified nsupdate syntax and added readline support
-
-BIND 9.8.0
-
-BIND 9.8.0 includes a number of changes from BIND 9.7 and earlier
-releases. New features include:
-
-  * Built-in trust anchor for the root zone, which can be switched on via
-    "dnssec-validation auto;"
-  * Support for DNS64.
-  * Support for response policy zones (RPZ).
-  * Support for writable DLZ zones.
-  * Improved ease of configuration of GSS/TSIG for interoperability with
-    Active Directory
-  * Support for GOST signing algorithm for DNSSEC.
-  * Removed RTT Banding from server selection algorithm.
-  * New "static-stub" zone type.
-  * Allow configuration of resolver timeouts via "resolver-query-timeout"
-    option.
-  * The DLZ "dlopen" driver is now built by default.
-  * Added a new include file with function typedefs for the DLZ "dlopen"
-    driver.
-  * Made "--with-gssapi" default.
-  * More verbose error reporting from DLZ LDAP.
-
-BIND 9.7.0
-
-BIND 9.7.0 includes a number of changes from BIND 9.6 and earlier
-releases. Most are intended to simplify DNSSEC configuration. New features
-include:
-
-  * Fully automatic signing of zones by "named".
-  * Simplified configuration of DNSSEC Lookaside Validation (DLV).
-  * Simplified configuration of Dynamic DNS, using the "ddns-confgen"
-    command line tool or the "local" update-policy option. (As a side
-    effect, this also makes it easier to configure automatic zone
-    re-signing.)
-  * New named option "attach-cache" that allows multiple views to share a
-    single cache.
-  * DNS rebinding attack prevention.
-  * New default values for dnssec-keygen parameters.
-  * Support for RFC 5011 automated trust anchor maintenance
-  * Smart signing: simplified tools for zone signing and key maintenance.
-  * The "statistics-channels" option is now available on Windows.
-  * A new DNSSEC-aware libdns API for use by non-BIND9 applications
-  * On some platforms, named and other binaries can now print out a stack
-    backtrace on assertion failure, to aid in debugging.
-  * A "tools only" installation mode on Windows, which only installs dig,
-    host, nslookup and nsupdate.
-  * Improved PKCS#11 support, including Keyper support and explicit
-    OpenSSL engine selection.
-
-BIND 9.6.0
-
-  * Full NSEC3 support
-  * Automatic zone re-signing
-  * New update-policy methods tcp-self and 6to4-self
-  * The BIND 8 resolver library, libbind, has been removed from the BIND 9
-    distribution and is now available as a separate download.
-  * Change the default pid file location from /var/run to /var/run/
-    {named,lwresd} for improved chroot/setuid support.
-
-BIND 9.5.0
-
-  * GSS-TSIG support (RFC 3645).
-  * DHCID support.
-  * Experimental http server and statistics support for named via xml.
-  * More detailed statistics counters including those supported in BIND 8.
-  * Faster ACL processing.
-  * Use Doxygen to generate internal documentation.
-  * Efficient LRU cache-cleaning mechanism.
-  * NSID support.
-
-BIND 9.4.0
-
-  * Implemented "additional section caching (or acache)", an internal
-    cache framework for additional section content to improve response
-    performance. Several configuration options were provided to control
-    the behavior.
-  * New notify type 'master-only'. Enable notify for master zones only.
-  * Accept 'notify-source' style syntax for query-source.
-  * rndc now allows addresses to be set in the server clauses.
-  * New option "allow-query-cache". This lets "allow-query" be used to
-    specify the default zone access level rather than having to have every
-    zone override the global value. "allow-query-cache" can be set at both
-    the options and view levels. If "allow-query-cache" is not set then
-    "allow-recursion" is used if set, otherwise "allow-query" is used if
-    set unless "recursion no;" is set in which case "none;" is used,
-    otherwise the default (localhost; localnets;) is used.
-  * rndc: the source address can now be specified.
-  * ixfr-from-differences now takes master and slave in addition to yes
-    and no at the options and view levels.
-  * Allow the journal's name to be changed via named.conf.
-  * 'rndc notify zone [class [view]]' resend the NOTIFY messages for the
-    specified zone.
-  * 'dig +trace' now randomly selects the next servers to try. Report if
-    there is a bad delegation.
-  * Improve check-names error messages.
-  * Make public the function to read a key file, dst_key_read_public().
-  * dig now returns the byte count for axfr/ixfr.
-  * allow-update is now settable at the options / view level.
-  * named-checkconf now checks the logging configuration.
-  * host now can turn on memory debugging flags with '-m'.
-  * Don't send notify messages to self.
-  * Perform sanity checks on NS records which refer to 'in zone' names.
-  * New zone option "notify-delay". Specify a minimum delay between sets
-    of NOTIFY messages.
-  * Extend adjusting TTL warning messages.
-  * Named and named-checkzone can now both check for non-terminal wildcard
-    records.
-  * "rndc freeze/thaw" now freezes/thaws all zones.
-  * named-checkconf now check acls to verify that they only refer to
-    existing acls.
-  * The server syntax has been extended to support a range of servers.
-  * Report differences between hints and real NS rrset and associated
-    address records.
-  * Preserve the case of domain names in rdata during zone transfers.
-  * Restructured the data locking framework using architecture dependent
-    atomic operations (when available), improving response performance on
-    multi-processor machines significantly. x86, x86_64, alpha, powerpc,
-    and mips are currently supported.
-  * UNIX domain controls are now supported.
-  * Add support for additional zone file formats for improving loading
-    performance. The masterfile-format option in named.conf can be used to
-    specify a non-default format. A separate command named-compilezone was
-    provided to generate zone files in the new format. Additionally, the
-    -I and -O options for dnssec-signzone specify the input and output
-    formats.
-  * dnssec-signzone can now randomize signature end times (dnssec-signzone
-    -j jitter).
-  * Add support for CH A record.
-  * Add additional zone data constancy checks. named-checkzone has
-    extended checking of NS, MX and SRV record and the hosts they
-    reference. named has extended post zone load checks. New zone options:
-    check-mx and integrity-check.
-  * edns-udp-size can now be overridden on a per server basis.
-  * dig can now specify the EDNS version when making a query.
-  * Added framework for handling multiple EDNS versions.
-  * Additional memory debugging support to track size and mctx arguments.
-  * Detect duplicates of UDP queries we are recursing on and drop them.
-    New stats category "duplicates".
-  * "USE INTERNAL MALLOC" is now runtime selectable.
-  * The lame cache is now done on a <qname,qclass,qtype> basis as some
-    servers only appear to be lame for certain query types.
-  * Limit the number of recursive clients that can be waiting for a single
-    query (<qname,qtype,qclass>) to resolve. New options clients-per-query
-    and max-clients-per-query.
-  * dig: report the number of extra bytes still left in the packet after
-    processing all the records.
-  * Support for IPSECKEY rdata type.
-  * Raise the UDP receive buffer size to 32k if it is less than 32k.
-  * x86 and x86_64 now have separate atomic locking implementations.
-  * named-checkconf now validates update-policy entries.
-  * Attempt to make the amount of work performed in a iteration self
-    tuning. The covers nodes clean from the cache per iteration, nodes
-    written to disk when rewriting a master file and nodes destroyed per
-    iteration when destroying a zone or a cache.
-  * ISC string copy API.
-  * Automatic empty zone creation for D.F.IP6.ARPA and friends. Note: RFC
-    1918 zones are not yet covered by this but are likely to be in a
-    future release.
-  * New options: empty-server, empty-contact, empty-zones-enable and
-    disable-empty-zone.
-  * dig now has a '-q queryname' and '+showsearch' options.
-  * host/nslookup now continue (default)/fail on SERVFAIL.
-  * dig now warns if 'RA' is not set in the answer when 'RD' was set in
-    the query. host/nslookup skip servers that fail to set 'RA' when 'RD'
-    is set unless a server is explicitly set.
-  * Integrate contributed DLZ code into named.
-  * Integrate contributed IDN code from JPNIC.
-  * libbind: corresponds to that from BIND 8.4.7.
-
-BIND 9.3.0
-
-  * DNSSEC is now DS based (RFC 3658).
-  * DNSSEC lookaside validation.
-  * check-names is now implemented.
-  * rrset-order is more complete.
-  * IPv4/IPv6 transition support, dual-stack-servers.
-  * IXFR deltas can now be generated when loading master files,
-    ixfr-from-differences.
-  * It is now possible to specify the size of a journal, max-journal-size.
-  * It is now possible to define a named set of master servers to be used
-    in masters clause, masters.
-  * The advertised EDNS UDP size can now be set, edns-udp-size.
-  * allow-v6-synthesis has been obsoleted.
-  * Zones containing MD and MF will now be rejected.
-  * dig, nslookup name. now report "Not Implemented" as NOTIMP rather than
-    NOTIMPL. This will have impact on scripts that are looking for
-    NOTIMPL.
-  * libbind: corresponds to that from BIND 8.4.5.
-
-BIND 9.2.0
-
-  * The size of the cache can now be limited using the "max-cache-size"
-    option.
-  * The server can now automatically convert RFC1886-style recursive
-    lookup requests into RFC2874-style lookups, when enabled using the new
-    option "allow-v6-synthesis". This allows stub resolvers that support
-    AAAA records but not A6 record chains or binary labels to perform
-    lookups in domains that make use of these IPv6 DNS features.
-  * Performance has been improved.
-  * The man pages now use the more portable "man" macros rather than the
-    "mandoc" macros, and are installed by "make install".
-  * The named.conf parser has been completely rewritten. It now supports
-    "include" directives in more places such as inside "view" statements,
-    and it no longer has any reserved words.
-  * The "rndc status" command is now implemented.
-  * rndc can now be configured automatically.
-  * A BIND 8 compatible stub resolver library is now included in lib/bind.
-  * OpenSSL has been removed from the distribution. This means that to use
-    DNSSEC, OpenSSL must be installed and the --with-openssl option must
-    be supplied to configure. This does not apply to the use of TSIG,
-    which does not require OpenSSL.
-  * The source distribution now builds on Windows. See win32utils/
-    readme1.txt and win32utils/win32-build.txt for details.
-  * This distribution also includes a new lightweight stub resolver
-    library and associated resolver daemon that fully support forward and
-    reverse lookups of both IPv4 and IPv6 addresses. This library is
-    considered experimental and is not a complete replacement for the BIND
-    8 resolver library. Applications that use the BIND 8 res_* functions
-    to perform DNS lookups or dynamic updates still need to be linked
-    against the BIND 8 libraries. For DNS lookups, they can also use the
-    new "getrrsetbyname()" API.
-  * BIND 9.2 is capable of acting as an authoritative server for DNSSEC
-    secured zones. This functionality is believed to be stable and
-    complete except for lacking support for verifications involving
-    wildcard records in secure zones.
-  * When acting as a caching server, BIND 9.2 can be configured to perform
-    DNSSEC secure resolution on behalf of its clients. This part of the
-    DNSSEC implementation is still considered experimental. For detailed
-    information about the state of the DNSSEC implementation, see the file
-    doc/misc/dnssec.
diff --git a/Kyuafile b/Kyuafile
deleted file mode 100644 (file)
index 70b2cff..0000000
--- a/Kyuafile
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('lib/Kyuafile')
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..77a8ad2
--- /dev/null
@@ -0,0 +1,11 @@
+include $(top_srcdir)/Makefile.top
+
+SUBDIRS = . libltdl lib bin # doc
+
+BUILT_SOURCES = bind.keys.h
+CLEANFILES = bind.keys.h
+
+bind.keys.h: bind.keys Makefile
+       ${PERL} ${top_srcdir}/util/bindkeys.pl < ${top_srcdir}/bind.keys > $@
+
+dist_sysconf_DATA = bind.keys
diff --git a/Makefile.tests b/Makefile.tests
new file mode 100644 (file)
index 0000000..3ff781d
--- /dev/null
@@ -0,0 +1,10 @@
+# Hey Emacs, this is -*- makefile-automake -*- file!
+# vim: filetype=automake
+
+AM_CPPFLAGS +=                                 \
+       $(CMOCKA_CFLAGS)                        \
+       -DTESTS=\"$(abs_srcdir)\"               \
+       -DNAMED_PLUGINDIR=\"$(libdir)/named\"
+
+LDADD =                        \
+       $(CMOCKA_LIBS)
diff --git a/Makefile.top b/Makefile.top
new file mode 100644 (file)
index 0000000..b7d711c
--- /dev/null
@@ -0,0 +1,79 @@
+# Hey Emacs, this is -*- makefile-automake -*- file!
+# vim: filetype=automake
+
+ACLOCAL_AMFLAGS = -I $(top_srcdir)/m4
+
+AM_CFLAGS =                                    \
+       $(STD_CFLAGS)
+
+AM_CPPFLAGS =                                  \
+       $(STD_CPPFLAGS)                         \
+       -include $(top_builddir)/config.h       \
+       -I$(srcdir)/include
+
+if HAVE_GSSAPI
+AM_CPPFLAGS +=                                 \
+       $(GSSAPI_CFLAGS)
+endif
+
+LIBISC_CFLAGS =                                                \
+       -I$(top_srcdir)/include                         \
+       -I$(top_srcdir)/lib/isc/unix/include            \
+       -I$(top_srcdir)/lib/isc/pthreads/include        \
+       -I$(top_srcdir)/lib/isc/include                 \
+       -I$(top_builddir)/lib/isc/include
+
+if HAVE_JSON_C
+LIBISC_CFLAGS +=                                       \
+       $(JSON_C_CFLAGS)
+endif HAVE_JSON_C
+
+if HAVE_LIBXML2
+LIBISC_CFLAGS +=                                       \
+       $(LIBXML2_CFLAGS)
+endif HAVE_LIBXML2
+
+LIBISC_LIBS = $(top_builddir)/lib/isc/libisc.la
+
+LIBDNS_CFLAGS = \
+       -I$(top_srcdir)/lib/dns/include                 \
+       -I$(top_builddir)/lib/dns/include
+
+LIBDNS_LIBS = \
+       $(top_builddir)/lib/dns/libdns.la
+
+LIBNS_CFLAGS = \
+       -I$(top_srcdir)/lib/ns/include
+
+LIBNS_LIBS = \
+       $(top_builddir)/lib/ns/libns.la
+
+LIBIRS_CFLAGS = \
+       -I$(top_srcdir)/lib/irs/include
+
+LIBIRS_LIBS = \
+       $(top_builddir)/lib/irs/libirs.la
+
+LIBISCCFG_CFLAGS = \
+       -I$(top_srcdir)/lib/isccfg/include
+
+LIBISCCFG_LIBS = \
+       $(top_builddir)/lib/isccfg/libisccfg.la
+
+LIBISCCC_CFLAGS = \
+       -I$(top_srcdir)/lib/isccc/include/
+
+LIBISCCC_LIBS = \
+       $(top_builddir)/lib/isccc/libisccc.la
+
+LIBBIND9_CFLAGS = \
+       -I$(top_srcdir)/lib/bind9/include
+
+LIBBIND9_LIBS = \
+       $(top_builddir)/lib/bind9/libbind9.la
+
+LIBLTDL_CFLAGS = \
+       -I$(top_srcdir)/libltdl
+
+LIBLTDL_LIBS = \
+       $(top_builddir)/libltdl/libltdlc.la
diff --git a/NEWS b/NEWS
new file mode 120000 (symlink)
index 0000000..d67d252
--- /dev/null
+++ b/NEWS
@@ -0,0 +1 @@
+CHANGES
\ No newline at end of file
diff --git a/OPTIONS b/OPTIONS
deleted file mode 100644 (file)
index 811cf7c..0000000
--- a/OPTIONS
+++ /dev/null
@@ -1,28 +0,0 @@
-OPTIONS
-
-Setting the STD_CDEFINES environment variable before running configure can
-be used to enable certain compile-time options that are not explicitly
-defined in configure.
-
-Some of these settings are:
-
-         Setting                            Description
-                          Overwrite memory with tag values when allocating
--DISC_MEM_DEFAULTFILL=1   or freeing it; this impairs performance but
-                          makes debugging of memory problems easier.
-                          Don't track memory allocations by file and line
--DISC_MEM_TRACKLINES=0    number; this improves performance but makes
-                          debugging more difficult.
--DISC_FACILITY=LOG_LOCAL0 Change the default syslog facility for named
--DNS_CLIENT_DROPPORT=0    Disable dropping queries from particular
-                          well-known ports:
--DCHECK_SIBLING=0         Don't check sibling glue in named-checkzone
--DCHECK_LOCAL=0           Don't check out-of-zone addresses in
-                          named-checkzone
--DNS_RUN_PID_DIR=0        Create default PID files in ${localstatedir}/run
-                          rather than ${localstatedir}/run/named/
-                          Disable the use of inline functions to implement
--DISC_BUFFER_USEINLINE=0  the isc_buffer API: this reduces performance but
-                          may be useful when debugging
--DISC_HEAP_CHECK          Test heap consistency after every heap
-                          operation; used when debugging
diff --git a/PLATFORMS b/PLATFORMS
deleted file mode 100644 (file)
index dd00403..0000000
--- a/PLATFORMS
+++ /dev/null
@@ -1,99 +0,0 @@
-PLATFORMS
-
-Supported platforms
-
-In general, this version of BIND will build and run on any POSIX-compliant
-system with a C11-compliant C compiler, BSD-style sockets with
-RFC-compliant IPv6 support, POSIX-compliant threads, the libuv
-asynchronous I/O library, and the OpenSSL cryptography library.
-
-The following C11 features are used in BIND 9:
-
-  * Atomic operations support from the compiler is needed, either in the
-    form of builtin operations, C11 atomics, or the Interlocked family of
-    functions on Windows.
-
-  * Thread Local Storage support from the compiler is needed, either in
-    the form of C11 _Thread_local/thread_local, the __thread GCC
-    extension, or the __declspec(thread) MSVC extension on Windows.
-
-BIND 9.17 requires a fairly recent version of libuv (at least 1.x). For
-some of the older systems listed below, you will have to install an
-updated libuv package from sources such as EPEL, PPA, or other native
-sources for updated packages. The other option is to build and install
-libuv from source.
-
-Certain optional BIND features have additional library dependencies. These
-include libxml2 and libjson-c for statistics, libmaxminddb for
-geolocation, libfstrm and libprotobuf-c for DNSTAP, and libidn2 for
-internationalized domain name conversion.
-
-ISC regularly tests BIND on many operating systems and architectures, but
-lacks the resources to test all of them. Consequently, ISC is only able to
-offer support on a "best effort" basis for some.
-
-Regularly tested platforms
-
-As of Mar 2020, BIND 9.17 is fully supported and regularly tested on the
-following systems:
-
-  * Debian 9, 10
-  * Ubuntu LTS 16.04, 18.04
-  * Fedora 31
-  * Red Hat Enterprise Linux / CentOS 7, 8
-  * FreeBSD 11.3, 12.1
-  * OpenBSD 6.6
-  * Alpine Linux
-
-The amd64, i386, armhf and arm64 CPU architectures are all fully
-supported.
-
-Best effort
-
-The following are platforms on which BIND is known to build and run. ISC
-makes every effort to fix bugs on these platforms, but may be unable to do
-so quickly due to lack of hardware, less familiarity on the part of
-engineering staff, and other constraints. With the exception of Windows
-Server 2012 R2, none of these are tested regularly by ISC.
-
-  * Windows Server 2012 R2, 2016 / x64
-  * Windows 10 / x64
-  * macOS 10.12+
-  * Solaris 11
-  * NetBSD
-  * Other Linux distributions still supported by their vendors, such as:
-      + Ubuntu 19.04+
-      + Gentoo
-      + Arch Linux
-  * OpenWRT/LEDE 17.01+
-  * Other CPU architectures (mips, mipsel, sparc, ...)
-
-Community maintained
-
-These systems may not all have the required dependencies for building BIND
-easily available, although it will be possible in many cases to compile
-those directly from source. The community and interested parties may wish
-to help with maintenance, and we welcome patch contributions, although we
-cannot guarantee that we will accept them. All contributions will be
-assessed against the risk of adverse effect on officially supported
-platforms.
-
-  * Platforms past or close to their respective EOL dates, such as:
-      + Ubuntu 14.04, 18.10
-      + CentOS 6
-      + Debian Jessie
-      + FreeBSD 10.x
-
-Unsupported platforms
-
-These are platforms on which BIND 9.17 is known not to build or run:
-
-  * Platforms without at least OpenSSL 1.0.2
-  * Windows 10 / x86
-  * Windows Server 2012 and older
-  * Solaris 10 and older
-  * Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
-  * Platforms that don't support atomic operations (via compiler or
-    library)
-  * Linux without NPTL (Native POSIX Thread Library)
-  * Platforms on which libuv cannot be compiled
diff --git a/README b/README
deleted file mode 100644 (file)
index 61a4764..0000000
--- a/README
+++ /dev/null
@@ -1,369 +0,0 @@
-README
-
-BIND 9
-
-Contents
-
- 1. Introduction
- 2. Reporting bugs and getting help
- 3. Contributing to BIND
- 4. BIND 9.17 features
- 5. Building BIND
- 6. macOS
- 7. Dependencies
- 8. Compile-time options
- 9. Automated testing
-10. Documentation
-11. Change log
-12. Acknowledgments
-
-Introduction
-
-BIND (Berkeley Internet Name Domain) is a complete, highly portable
-implementation of the DNS (Domain Name System) protocol.
-
-The BIND name server, named, is able to serve as an authoritative name
-server, recursive resolver, DNS forwarder, or all three simultaneously. It
-implements views for split-horizon DNS, automatic DNSSEC zone signing and
-key management, catalog zones to facilitate provisioning of zone data
-throughout a name server constellation, response policy zones (RPZ) to
-protect clients from malicious data, response rate limiting (RRL) and
-recursive query limits to reduce distributed denial of service attacks,
-and many other advanced DNS features. BIND also includes a suite of
-administrative tools, including the dig and delv DNS lookup tools,
-nsupdate for dynamic DNS zone updates, rndc for remote name server
-administration, and more.
-
-BIND 9 began as a complete re-write of the BIND architecture that was used
-in versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a
-501(c)(3) public benefit corporation dedicated to providing software and
-services in support of the Internet infrastructure, developed BIND 9 and
-is responsible for its ongoing maintenance and improvement. BIND is open
-source software licensed under the terms of the Mozilla Public License,
-version 2.0.
-
-For a summary of features introduced in past major releases of BIND, see
-the file HISTORY.
-
-For a detailed list of changes made throughout the history of BIND 9, see
-the file CHANGES. See below for details on the CHANGES file format.
-
-For up-to-date versions and release notes, see https://www.isc.org/
-download/.
-
-For information about supported platforms, see PLATFORMS.
-
-Reporting bugs and getting help
-
-To report non-security-sensitive bugs or request new features, you may
-open an Issue in the BIND 9 project on the ISC GitLab server at https://
-gitlab.isc.org/isc-projects/bind9.
-
-Please note that, unless you explicitly mark the newly created Issue as
-"confidential", it will be publicly readable. Please do not include any
-information in bug reports that you consider to be confidential unless the
-issue has been marked as such. In particular, if submitting the contents
-of your configuration file in a non-confidential Issue, it is advisable to
-obscure key secrets: this can be done automatically by using
-named-checkconf -px.
-
-If the bug you are reporting is a potential security issue, such as an
-assertion failure or other crash in named, please do NOT use GitLab to
-report it. Instead, send mail to security-officer@isc.org using our
-OpenPGP key to secure your message. (Information about OpenPGP and links
-to our key can be found at https://www.isc.org/pgpkey.) Please do not
-discuss the bug on any public mailing list.
-
-For a general overview of ISC security policies, read the Knowledge Base
-article at https://kb.isc.org/docs/aa-00861.
-
-Professional support and training for BIND are available from ISC at
-https://www.isc.org/support.
-
-To join the BIND Users mailing list, or view the archives, visit https://
-lists.isc.org/mailman/listinfo/bind-users.
-
-If you're planning on making changes to the BIND 9 source code, you may
-also want to join the BIND Workers mailing list, at https://lists.isc.org/
-mailman/listinfo/bind-workers.
-
-Contributing to BIND
-
-ISC maintains a public git repository for BIND; details can be found at
-http://www.isc.org/git/.
-
-Information for BIND contributors can be found in the following files: -
-General information: CONTRIBUTING.md - Code of Conduct: CODE_OF_CONDUCT.md
-- BIND 9 code style: doc/dev/style.md - BIND architecture and developer
-guide: doc/dev/dev.md
-
-Patches for BIND may be submitted as merge requests in the ISC GitLab
-server at at https://gitlab.isc.org/isc-projects/bind9/merge_requests.
-
-By default, external contributors don't have ability to fork BIND in the
-GitLab server, but if you wish to contribute code to BIND, you may request
-permission to do so. Thereafter, you can create git branches and directly
-submit requests that they be reviewed and merged.
-
-If you prefer, you may also submit code by opening a GitLab Issue and
-including your patch as an attachment, preferably generated by git
-format-patch.
-
-BIND 9.17 features
-
-BIND 9.17 is the newest development branch of BIND 9. It includes a number
-of changes from BIND 9.16 and earlier releases. New features include:
-
-  * New option "max-ixfr-ratio" to limit the size of outgoing IXFR
-    responses before falling back to full zone transfers.
-  * "rndc nta -d" and "rndc secroots" now include "validate-except"
-    entries when listing negative trust anchors.
-
-Building BIND
-
-Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
-basic POSIX support, and a 64-bit integer type. BIND also requires the
-libuv asynchronous I/O library, and a cryptography provider library such
-as OpenSSL or a hardware service module supporting PKCS#11. On Linux, BIND
-requires the libcap library to set process privileges, though this
-requirement can be overridden by disabling capability support at compile
-time. See Compile-time options below for details on other libraries that
-may be required to support optional features.
-
-Successful builds have been observed on many versions of Linux and UNIX,
-including RHEL/CentOS, Fedora, Debian, Ubuntu, SLES, openSUSE, Slackware,
-Alpine, FreeBSD, NetBSD, OpenBSD, macOS, Solaris, OpenIndiana, OmniOS CE,
-HP-UX, and OpenWRT.
-
-BIND is also available for Windows Server 2012 R2 and higher. See
-win32utils/build.txt for details on building for Windows systems.
-
-To build on a UNIX or Linux system, use:
-
-    $ ./configure
-    $ make
-
-If you're planning on making changes to the BIND 9 source, you should run
-make depend. If you're using Emacs, you might find make tags helpful.
-
-Several environment variables that can be set before running configure
-will affect compilation. Significant ones are:
-
-   Variable                            Description
-CC             The C compiler to use. configure tries to figure out the
-               right one for supported systems.
-               C compiler flags. Defaults to include -g and/or -O2 as
-CFLAGS         supported by the compiler. Please include '-g' if you need
-               to set CFLAGS.
-               System header file directories. Can be used to specify
-STD_CINCLUDES  where add-on thread or IPv6 support is, for example.
-               Defaults to empty string.
-               Any additional preprocessor symbols you want defined.
-STD_CDEFINES   Defaults to empty string. For a list of possible settings,
-               see the file OPTIONS.
-LDFLAGS        Linker flags. Defaults to empty string.
-BUILD_CC       Needed when cross-compiling: the native C compiler to use
-               when building for the target system.
-BUILD_CFLAGS   CFLAGS for the target system during cross-compiling.
-BUILD_CPPFLAGS CPPFLAGS for the target system during cross-compiling.
-BUILD_LDFLAGS  LDFLAGS for the target system during cross-compiling.
-BUILD_LIBS     LIBS for the target system during cross-compiling.
-
-Additional environment variables affecting the build are listed at the end
-of the configure help text, which can be obtained by running the command:
-
-$ ./configure --help
-
-macOS
-
-Building on macOS assumes that the "Command Tools for Xcode" is installed.
-This can be downloaded from https://developer.apple.com/download/more/ or,
-if you have Xcode already installed, you can run xcode-select --install.
-(Note that an Apple ID may be required to access the download page.)
-
-Compile-time options
-
-To see a full list of configuration options, run configure --help.
-
-To build shared libraries, specify --with-libtool on the configure command
-line.
-
-For the server to support DNSSEC, you need to build it with crypto
-support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
-installed. If the OpenSSL library is installed in a nonstandard location,
-specify the prefix using --with-openssl=<PREFIX> on the configure command
-line. To use a PKCS#11 hardware service module for cryptographic
-operations, specify the path to the PKCS#11 provider library using
---with-pkcs11=<PREFIX>, and configure BIND with --enable-native-pkcs11.
-
-To support the HTTP statistics channel, the server must be linked with at
-least one of the following libraries: libxml2 http://xmlsoft.org or json-c
-https://github.com/json-c/json-c. If these are installed at a nonstandard
-location, then:
-
-  * for libxml2, specify the prefix using --with-libxml2=/prefix,
-  * for json-c, adjust PKG_CONFIG_PATH.
-
-To support compression on the HTTP statistics channel, the server must be
-linked against libzlib. If this is installed in a nonstandard location,
-specify the prefix using --with-zlib=/prefix.
-
-To support storing configuration data for runtime-added zones in an LMDB
-database, the server must be linked with liblmdb. If this is installed in
-a nonstandard location, specify the prefix using with-lmdb=/prefix.
-
-To support MaxMind GeoIP2 location-based ACLs, the server must be linked
-with libmaxminddb. This is turned on by default if the library is found;
-if the library is installed in a nonstandard location, specify the prefix
-using --with-maxminddb=/prefix. GeoIP2 support can be switched off with
---disable-geoip.
-
-For DNSTAP packet logging, you must have installed libfstrm https://
-github.com/farsightsec/fstrm and libprotobuf-c https://
-developers.google.com/protocol-buffers, and BIND must be configured with
---enable-dnstap.
-
-Certain compiled-in constants and default settings can be decreased to
-values better suited to small machines, e.g. OpenWRT boxes, by specifying
---with-tuning=small on the configure command line. This will decrease
-memory usage by using smaller structures, but will degrade performance.
-
-On Linux, process capabilities are managed in user space using the libcap
-library, which can be installed on most Linux systems via the libcap-dev
-or libcap-devel package. Process capability support can also be disabled
-by configuring with --disable-linux-caps.
-
-On some platforms it is necessary to explicitly request large file support
-to handle files bigger than 2GB. This can be done by using
---enable-largefile on the configure command line.
-
-Support for the "fixed" rrset-order option can be enabled or disabled by
-specifying --enable-fixed-rrset or --disable-fixed-rrset on the configure
-command line. By default, fixed rrset-order is disabled to reduce memory
-footprint.
-
-The --enable-querytrace option causes named to log every step of
-processing every query. This should only be enabled when debugging,
-because it has a significant negative impact on query performance.
-
-make install will install named and the various BIND 9 libraries. By
-default, installation is into /usr/local, but this can be changed with the
---prefix option when running configure.
-
-You may specify the option --sysconfdir to set the directory where
-configuration files like named.conf go by default, and --localstatedir to
-set the default parent directory of run/named.pid. --sysconfdir defaults
-to $prefix/etc and --localstatedir defaults to $prefix/var.
-
-Automated testing
-
-A system test suite can be run with make test. The system tests require
-you to configure a set of virtual IP addresses on your system (this allows
-multiple servers to run locally and communicate with one another). These
-IP addresses can be configured by running the command bin/tests/system/
-ifconfig.sh up as root.
-
-Some tests require Perl and the Net::DNS and/or IO::Socket::INET6 modules,
-and will be skipped if these are not available. Some tests require Python
-and the dnspython module and will be skipped if these are not available.
-See bin/tests/system/README for further details.
-
-Unit tests are implemented using the CMocka unit testing framework. To
-build them, use configure --with-cmocka. Execution of tests is done by the
-Kyua test execution engine; if the kyua command is available, then unit
-tests can be run via make test or make unit.
-
-Documentation
-
-The BIND 9 Administrator Reference Manual is included with the source
-distribution, in DocBook XML, HTML, and PDF format, in the doc/arm
-directory.
-
-Some of the programs in the BIND 9 distribution have man pages in their
-directories. In particular, the command line options of named are
-documented in bin/named/named.8.
-
-Frequently (and not-so-frequently) asked questions and their answers can
-be found in the ISC Knowledge Base at https://kb.isc.org.
-
-Additional information on various subjects can be found in other README
-files throughout the source tree.
-
-Change log
-
-A detailed list of all changes that have been made throughout the
-development BIND 9 is included in the file CHANGES, with the most recent
-changes listed first. Change notes include tags indicating the category of
-the change that was made; these categories are:
-
-   Category                            Description
-[func]         New feature
-[bug]          General bug fix
-[security]     Fix for a significant security flaw
-[experimental] Used for new features when the syntax or other aspects of
-               the design are still in flux and may change
-[port]         Portability enhancement
-[maint]        Updates to built-in data such as root server addresses and
-               keys
-[tuning]       Changes to built-in configuration defaults and constants to
-               improve performance
-[performance]  Other changes to improve server performance
-[protocol]     Updates to the DNS protocol such as new RR types
-[test]         Changes to the automatic tests, not affecting server
-               functionality
-[cleanup]      Minor corrections and refactoring
-[doc]          Documentation
-[contrib]      Changes to the contributed tools and libraries in the
-               'contrib' subdirectory
-               Used in the master development branch to reserve change
-[placeholder]  numbers for use in other branches, e.g. when fixing a bug
-               that only exists in older releases
-
-In general, [func] and [experimental] tags will only appear in new-feature
-releases (i.e., those with version numbers ending in zero). Some new
-functionality may be backported to older releases on a case-by-case basis.
-All other change types may be applied to all currently-supported releases.
-
-Bug report identifiers
-
-Most notes in the CHANGES file include a reference to a bug report or
-issue number. Prior to 2018, these were usually of the form [RT #NNN] and
-referred to entries in the "bind9-bugs" RT database, which was not open to
-the public. More recent entries use the form [GL #NNN] or, less often, [GL
-!NNN], which, respectively, refer to issues or merge requests in the
-GitLab database. Most of these are publicly readable, unless they include
-information which is confidential or security sensitive.
-
-To look up a GitLab issue by its number, use the URL https://
-gitlab.isc.org/isc-projects/bind9/issues/NNN. To look up a merge request,
-use https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN.
-
-In rare cases, an issue or merge request number may be followed with the
-letter "P". This indicates that the information is in the private ISC
-GitLab instance, which is not visible to the public.
-
-Acknowledgments
-
-  * The original development of BIND 9 was underwritten by the following
-    organizations:
-
-      Sun Microsystems, Inc.
-      Hewlett Packard
-      Compaq Computer Corporation
-      IBM
-      Process Software Corporation
-      Silicon Graphics, Inc.
-      Network Associates, Inc.
-      U.S. Defense Information Systems Agency
-      USENIX Association
-      Stichting NLnet - NLnet Foundation
-      Nominum, Inc.
-
-  * This product includes software developed by the OpenSSL Project for
-    use in the OpenSSL Toolkit. http://www.OpenSSL.org/
-
-  * This product includes cryptographic software written by Eric Young
-    (eay@cryptsoft.com)
-
-  * This product includes software written by Tim Hudson
-    (tjh@cryptsoft.com)
index 41b7bb7b570f722d1f840a210efbc549db15aabe..c9e19a211db58bca383fed9c6657b63556011a2b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -171,14 +171,7 @@ affect compilation.  Significant ones are:
 |--------------------|-----------------------------------------------|
 |`CC`|The C compiler to use.  `configure` tries to figure out the right one for supported systems.|
 |`CFLAGS`|C compiler flags.  Defaults to include -g and/or -O2 as supported by the compiler.  Please include '-g' if you need to set `CFLAGS`. |
-|`STD_CINCLUDES`|System header file directories.  Can be used to specify where add-on thread or IPv6 support is, for example.  Defaults to empty string.|
-|`STD_CDEFINES`|Any additional preprocessor symbols you want defined.  Defaults to empty string. For a list of possible settings, see the file [OPTIONS](OPTIONS.md).|
 |`LDFLAGS`|Linker flags. Defaults to empty string.|
-|`BUILD_CC`|Needed when cross-compiling: the native C compiler to use when building for the target system.|
-|`BUILD_CFLAGS`|`CFLAGS` for the target system during cross-compiling.|
-|`BUILD_CPPFLAGS`|`CPPFLAGS` for the target system during cross-compiling.|
-|`BUILD_LDFLAGS`|`LDFLAGS` for the target system during cross-compiling.|
-|`BUILD_LIBS`|`LIBS` for the target system during cross-compiling.|
 
 Additional environment variables affecting the build are listed at the
 end of the `configure` help text, which can be obtained by running the
@@ -273,7 +266,7 @@ defaults to `$prefix/etc` and `--localstatedir` defaults to `$prefix/var`.
 
 ### <a name="testing"/> Automated testing
 
-A system test suite can be run with `make test`.  The system tests require
+A system test suite can be run with `make check`.  The system tests require
 you to configure a set of virtual IP addresses on your system (this allows
 multiple servers to run locally and communicate with one another).  These
 IP addresses can be configured by running the command
@@ -284,11 +277,9 @@ and will be skipped if these are not available. Some tests require Python
 and the `dnspython` module and will be skipped if these are not available.
 See bin/tests/system/README for further details.
 
-Unit tests are implemented using the [CMocka unit testing framework](https://cmocka.org/).
-To build them, use `configure --with-cmocka`. Execution of tests is done
-by the [Kyua test execution engine](https://github.com/jmmv/kyua); if the
-`kyua` command is available, then unit tests can be run via `make test`
-or `make unit`.
+Unit tests are implemented using the CMocka unit testing framework.  To build
+them, use `configure --with-cmocka`. Execution of tests is done by the automake
+parallel test driver; unit tests are also run by `make check`.
 
 ### <a name="doc"/> Documentation
 
diff --git a/bin/Makefile.am b/bin/Makefile.am
new file mode 100644 (file)
index 0000000..296a022
--- /dev/null
@@ -0,0 +1,5 @@
+SUBDIRS = named rndc dig delv dnssec tools nsupdate check confgen tests plugins
+
+if HAVE_PKCS11
+SUBDIRS += pkcs11
+endif
diff --git a/bin/check/Makefile.am b/bin/check/Makefile.am
new file mode 100644 (file)
index 0000000..dc0d525
--- /dev/null
@@ -0,0 +1,34 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBNS_CFLAGS)         \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBBIND9_CFLAGS)
+
+AM_CPPFLAGS +=                                         \
+       -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
+
+noinst_LTLIBRARIES = libcheck-tool.la
+
+libcheck_tool_la_SOURCES =     \
+       check-tool.h            \
+       check-tool.c
+
+LDADD =                                \
+       libcheck-tool.la        \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBNS_LIBS)           \
+       $(LIBISCCFG_LIBS)       \
+       $(LIBBIND9_LIBS)
+
+sbin_PROGRAMS = named-checkconf named-checkzone
+
+install-exec-hook:
+       ln -f $(DESTDIR)$(sbindir)/named-checkzone \
+             $(DESTDIR)$(sbindir)/named-compilezone
+
+uninstall-hook:
+       -rm -f $(DESTDIR)$(sbindir)/named-compilezone
index a503c37086e72c741cbd5e0b468fb1f2c0a4f68c..444941db797ff892a8c39a114c0d2c50e30e14f3 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/commandline.h>
 #include <isc/dir.h>
 #include <isc/hash.h>
@@ -56,8 +57,8 @@ isc_log_t *logc = NULL;
        } while (0)
 
 /*% usage */
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -655,7 +656,7 @@ main(int argc, char **argv) {
                        break;
 
                case 'v':
-                       printf(VERSION "\n");
+                       printf("%s\n", PACKAGE_VERSION);
                        exit(0);
 
                case 'x':
index c44c1b96a9287c9be96a7425b1a88a2a896580ee..0aa5a95e490dffac47c0f4d5dcb17a27445cb9bb 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdlib.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/commandline.h>
 #include <isc/dir.h>
 #include <isc/file.h>
@@ -63,8 +64,8 @@ static enum { progmode_check, progmode_compile } progmode;
                }                                                             \
        } while (0)
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -354,7 +355,7 @@ main(int argc, char **argv) {
                        break;
 
                case 'v':
-                       printf(VERSION "\n");
+                       printf("%s\n", PACKAGE_VERSION);
                        exit(0);
 
                case 'w':
diff --git a/bin/confgen/Makefile.am b/bin/confgen/Makefile.am
new file mode 100644 (file)
index 0000000..d9e917b
--- /dev/null
@@ -0,0 +1,30 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       -DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\"
+
+LDADD =                                \
+       libconfgen.la           \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)
+
+noinst_LTLIBRARIES = libconfgen.la
+
+libconfgen_la_SOURCES =                \
+       include/confgen/os.h    \
+       keygen.h                \
+       keygen.c                \
+       util.h                  \
+       util.c                  \
+       unix/os.c
+
+sbin_PROGRAMS = rndc-confgen ddns-confgen
+
+install-exec-hook:
+       ln -f $(DESTDIR)$(sbindir)/ddns-confgen \
+             $(DESTDIR)$(sbindir)/tsig-confgen
+
+uninstall-hook:
+       -rm -f $(DESTDIR)$(sbindir)/tsig-confgen
index ac3e3d068a41201284f869cea8ee3ef861e8d49a..02e3f72bc5bb8a64d6037e6a00a8055bf49dc637 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 
 #include <isc/assertions.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
@@ -57,8 +58,8 @@ const char *progname;
 static enum { progmode_keygen, progmode_confgen } progmode;
 bool verbose = false; /* needed by util.c but not used here */
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(int status) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(int status);
 
 static void
 usage(int status) {
index 90a1d7e9997d16ac064e74c370966314c171a6a5..2d7959955086e4677d179f320d144009d1966f8f 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 
 #include <isc/assertions.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
@@ -60,8 +61,8 @@ bool verbose = false;
 
 const char *keyfile, *keydef;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(int status) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(int status);
 
 static void
 usage(int status) {
index ec9b181780c880153a40922ae1ff511687a903cf..21cc8de1e9ed57a7b2259fa0d1d68f6cfdbfea1c 100644 (file)
@@ -14,6 +14,7 @@
 
 /*! \file */
 
+#include <isc/attributes.h>
 #include <isc/formatcheck.h>
 #include <isc/lang.h>
 #include <isc/platform.h>
@@ -35,9 +36,8 @@ ISC_LANG_BEGINDECLS
 void
 notify(const char *fmt, ...) ISC_FORMAT_PRINTF(1, 2);
 
-ISC_PLATFORM_NORETURN_PRE void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 ISC_LANG_ENDDECLS
 
diff --git a/bin/delv/Makefile.am b/bin/delv/Makefile.am
new file mode 100644 (file)
index 0000000..5405023
--- /dev/null
@@ -0,0 +1,21 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                         \
+       -I$(top_builddir)/include       \
+       $(LIBISC_CFLAGS)                \
+       $(LIBDNS_CFLAGS)                \
+       $(LIBISCCFG_CFLAGS)             \
+       $(LIBIRS_CFLAGS)
+
+AM_CPPFLAGS +=                         \
+       -DSYSCONFDIR=\"${sysconfdir}\"
+
+bin_PROGRAMS = delv
+
+delv_SOURCES =                         \
+       delv.c
+delv_LDADD =                           \
+       $(LIBISC_LIBS)                  \
+       $(LIBDNS_LIBS)                  \
+       $(LIBISCCFG_LIBS)               \
+       $(LIBIRS_LIBS)
index 0525b2c6fa6431a478280949612bab1a45dca7f9..994e1558deff1cb79cbb4769523e8b165a012b73 100644 (file)
@@ -28,6 +28,7 @@
 #include <unistd.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/hex.h>
@@ -205,9 +206,8 @@ usage(void) {
        exit(1);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 static void
 fatal(const char *format, ...) {
@@ -1327,7 +1327,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
                        /* handled in preparse_args() */
                        break;
                case 'v':
-                       fputs("delv " VERSION "\n", stderr);
+                       fprintf(stderr, "delv %s\n", PACKAGE_VERSION);
                        exit(0);
                /* NOTREACHED */
                default:
diff --git a/bin/dig/Makefile.am b/bin/dig/Makefile.am
new file mode 100644 (file)
index 0000000..7bcd2f5
--- /dev/null
@@ -0,0 +1,30 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBIRS_CFLAGS)        \
+       $(LIBBIND9_CFLAGS)      \
+       $(LIBIDN2_CFLAGS)
+
+LDADD =                                \
+       libdighost.la           \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBISCCFG_LIBS)       \
+       $(LIBIRS_LIBS)          \
+       $(LIBBIND9_LIBS)        \
+       $(LIBIDN2_LIBS)
+
+noinst_LTLIBRARIES = libdighost.la
+
+libdighost_la_SOURCES = \
+       dighost.h       \
+       dighost.c
+
+bin_PROGRAMS = dig host nslookup
+
+nslookup_LDADD =       \
+       $(LDADD)        \
+       $(READLINE_LIB)
index cd0127518123189c752dfddee24dcf5bb9e5d5c5..4bf9084a2443f2f9c929abfea74a4848f9e79456 100644 (file)
@@ -18,6 +18,7 @@
 #include <time.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/netaddr.h>
 #include <isc/parseint.h>
 #include <isc/platform.h>
@@ -41,7 +42,7 @@
 #include <dns/result.h>
 #include <dns/tsig.h>
 
-#include <dig/dig.h>
+#include "dighost.h"
 
 #define ADD_STRING(b, s)                                          \
        {                                                         \
@@ -109,8 +110,8 @@ usage(void) {
        fprintf(stderr, "Press <Help> for complete list of options\n");
 }
 #else  /* if TARGET_OS_IPHONE */
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -125,7 +126,7 @@ usage(void) {
 /*% version */
 static void
 version(void) {
-       fputs("DiG " VERSION "\n", stderr);
+       fprintf(stderr, "DiG %s\n", PACKAGE_VERSION);
 }
 
 /*% help */
@@ -912,7 +913,8 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
 
        if (printcmd) {
                snprintf(lookup->cmdline, sizeof(lookup->cmdline),
-                        "%s; <<>> DiG " VERSION " <<>>", first ? "\n" : "");
+                        "%s; <<>> DiG %s <<>>", first ? "\n" : "",
+                        PACKAGE_VERSION);
                i = 1;
                while (i < argc) {
                        snprintf(append, sizeof(append), " %s", argv[i++]);
@@ -2658,7 +2660,7 @@ dig_query_setup(bool is_batchfile, bool config_only, int argc, char **argv) {
 }
 
 void
-dig_startup() {
+dig_startup(void) {
        isc_result_t result;
 
        debug("dig_startup()");
@@ -2669,12 +2671,12 @@ dig_startup() {
 }
 
 void
-dig_query_start() {
+dig_query_start(void) {
        start_lookup();
 }
 
 void
-dig_shutdown() {
+dig_shutdown(void) {
        destroy_lookup(default_lookup);
        if (atomic_load(&batchname) != 0) {
                if (batchfp != stdin) {
index 4a4d0b677358d00eb9fac70245c8780ffb264d8b..7d403e9b3c1cdba23d8b45bde4c46d5806a1e0e9 100644 (file)
@@ -84,7 +84,7 @@
 
 #include <bind9/getaddresses.h>
 
-#include <dig/dig.h>
+#include "dighost.h"
 
 #if USE_PKCS11
 #include <pk11/result.h>
similarity index 75%
rename from bin/dig/include/dig/dig.h
rename to bin/dig/dighost.h
index 6460dd13c087c1c542ca03c9122406b83421a95e..9b482ce3deed6fbfa5e133d7186965f2196f32c6 100644 (file)
@@ -17,6 +17,7 @@
 #include <inttypes.h>
 #include <stdbool.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/bufferlist.h>
 #include <isc/formatcheck.h>
@@ -77,7 +78,7 @@
 ISC_LANG_BEGINDECLS
 
 typedef struct dig_lookup dig_lookup_t;
-typedef struct dig_query  dig_query_t;
+typedef struct dig_query dig_query_t;
 typedef struct dig_server dig_server_t;
 typedef ISC_LIST(dig_server_t) dig_serverlist_t;
 typedef struct dig_searchlist dig_searchlist_t;
@@ -112,76 +113,76 @@ struct dig_lookup {
                                              *   sources. */
        char textname[MXNAME];               /*% Name we're going to be
                                              * looking up */
-       char             cmdline[MXNAME];
-       dns_rdatatype_t  rdtype;
-       dns_rdatatype_t  qrdtype;
+       char cmdline[MXNAME];
+       dns_rdatatype_t rdtype;
+       dns_rdatatype_t qrdtype;
        dns_rdataclass_t rdclass;
-       bool             rdtypeset;
-       bool             rdclassset;
-       char             name_space[BUFSIZE];
-       char             oname_space[BUFSIZE];
-       isc_buffer_t     namebuf;
-       isc_buffer_t     onamebuf;
-       isc_buffer_t     renderbuf;
-       char *           sendspace;
-       dns_name_t *     name;
-       isc_interval_t   interval;
-       dns_message_t *  sendmsg;
-       dns_name_t *     oname;
+       bool rdtypeset;
+       bool rdclassset;
+       char name_space[BUFSIZE];
+       char oname_space[BUFSIZE];
+       isc_buffer_t namebuf;
+       isc_buffer_t onamebuf;
+       isc_buffer_t renderbuf;
+       char *sendspace;
+       dns_name_t *name;
+       isc_interval_t interval;
+       dns_message_t *sendmsg;
+       dns_name_t *oname;
        ISC_LINK(dig_lookup_t) link;
        ISC_LIST(dig_query_t) q;
        ISC_LIST(dig_query_t) connecting;
-       dig_query_t *     current_query;
-       dig_serverlist_t  my_server_list;
+       dig_query_t *current_query;
+       dig_serverlist_t my_server_list;
        dig_searchlist_t *origin;
-       dig_query_t *     xfr_q;
-       uint32_t          retries;
-       int               nsfound;
-       uint16_t          udpsize;
-       int16_t           edns;
-       int16_t           padding;
-       uint32_t          ixfr_serial;
-       isc_buffer_t      rdatabuf;
-       char              rdatastore[MXNAME];
-       dst_context_t *   tsigctx;
-       isc_buffer_t *    querysig;
-       uint32_t          msgcounter;
-       dns_fixedname_t   fdomain;
-       isc_sockaddr_t *  ecs_addr;
-       char *            cookie;
-       dns_ednsopt_t *   ednsopts;
-       unsigned int      ednsoptscnt;
-       isc_dscp_t        dscp;
-       unsigned int      ednsflags;
-       dns_opcode_t      opcode;
-       int               rrcomments;
-       unsigned int      eoferr;
+       dig_query_t *xfr_q;
+       uint32_t retries;
+       int nsfound;
+       uint16_t udpsize;
+       int16_t edns;
+       int16_t padding;
+       uint32_t ixfr_serial;
+       isc_buffer_t rdatabuf;
+       char rdatastore[MXNAME];
+       dst_context_t *tsigctx;
+       isc_buffer_t *querysig;
+       uint32_t msgcounter;
+       dns_fixedname_t fdomain;
+       isc_sockaddr_t *ecs_addr;
+       char *cookie;
+       dns_ednsopt_t *ednsopts;
+       unsigned int ednsoptscnt;
+       isc_dscp_t dscp;
+       unsigned int ednsflags;
+       dns_opcode_t opcode;
+       int rrcomments;
+       unsigned int eoferr;
 };
 
 /*% The dig_query structure */
 struct dig_query {
-       unsigned int  magic;
+       unsigned int magic;
        dig_lookup_t *lookup;
        bool waiting_connect, pending_free, waiting_senddone, first_pass,
                first_soa_rcvd, second_rr_rcvd, first_repeat_rcvd, recv_made,
                warn_id, timedout;
-       uint32_t      first_rr_serial;
-       uint32_t      second_rr_serial;
-       uint32_t      msg_count;
-       uint32_t      rr_count;
-       bool          ixfr_axfr;
-       char *        servname;
-       char *        userarg;
-       isc_buffer_t  recvbuf, lengthbuf, tmpsendbuf, sendbuf;
-       char *        recvspace, *tmpsendspace, lengthspace[4];
+       uint32_t first_rr_serial;
+       uint32_t second_rr_serial;
+       uint32_t msg_count;
+       uint32_t rr_count;
+       bool ixfr_axfr;
+       char *servname;
+       char *userarg;
+       isc_buffer_t recvbuf, lengthbuf, tmpsendbuf, sendbuf;
+       char *recvspace, *tmpsendspace, lengthspace[4];
        isc_socket_t *sock;
        ISC_LINK(dig_query_t) link;
        ISC_LINK(dig_query_t) clink;
        isc_sockaddr_t sockaddr;
-       isc_time_t     time_sent;
-       isc_time_t     time_recv;
-       uint64_t       byte_count;
-       isc_timer_t *  timer;
+       isc_time_t time_sent;
+       isc_time_t time_recv;
+       uint64_t byte_count;
+       isc_timer_t *timer;
 };
 
 struct dig_server {
@@ -202,38 +203,38 @@ typedef ISC_LIST(dig_lookup_t) dig_lookuplist_t;
  * Externals from dighost.c
  */
 
-extern dig_lookuplist_t            lookup_list;
-extern dig_serverlist_t            server_list;
+extern dig_lookuplist_t lookup_list;
+extern dig_serverlist_t server_list;
 extern dig_searchlistlist_t search_list;
-extern unsigned int        extrabytes;
+extern unsigned int extrabytes;
 
 extern bool check_ra, have_ipv4, have_ipv6, specified_source, usesearch,
        showsearch, yaml;
-extern in_port_t        port;
-extern unsigned int     timeout;
-extern isc_mem_t *      mctx;
-extern int              sendcount;
-extern int              ndots;
-extern int              lookup_counter;
-extern int              exitcode;
-extern isc_sockaddr_t   bind_address;
-extern char             keynametext[MXNAME];
-extern char             keyfile[MXNAME];
-extern char             keysecret[MXNAME];
+extern in_port_t port;
+extern unsigned int timeout;
+extern isc_mem_t *mctx;
+extern int sendcount;
+extern int ndots;
+extern int lookup_counter;
+extern int exitcode;
+extern isc_sockaddr_t bind_address;
+extern char keynametext[MXNAME];
+extern char keyfile[MXNAME];
+extern char keysecret[MXNAME];
 extern const dns_name_t *hmacname;
-extern unsigned int     digestbits;
-extern dns_tsigkey_t *  tsigkey;
-extern bool             validated;
-extern isc_taskmgr_t *  taskmgr;
-extern isc_task_t *     global_task;
-extern bool             free_now;
-extern bool             debugging, debugtiming, memdebugging;
-extern bool             keep_open;
+extern unsigned int digestbits;
+extern dns_tsigkey_t *tsigkey;
+extern bool validated;
+extern isc_taskmgr_t *taskmgr;
+extern isc_task_t *global_task;
+extern bool free_now;
+extern bool debugging, debugtiming, memdebugging;
+extern bool keep_open;
 
 extern char *progname;
-extern int   tries;
-extern int   fatalexit;
-extern bool  verbose;
+extern int tries;
+extern int fatalexit;
+extern bool verbose;
 
 /*
  * Routines in dighost.c.
@@ -247,15 +248,14 @@ getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
 isc_result_t
 get_reverse(char *reverse, size_t len, char *value, bool strict);
 
-ISC_PLATFORM_NORETURN_PRE void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 void
 warn(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
-ISC_PLATFORM_NORETURN_PRE void
-digexit(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+digexit(void);
 
 void
 debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
@@ -333,7 +333,7 @@ set_search_domain(char *domain);
  * Routines to be defined in dig.c, host.c, and nslookup.c. and
  * then assigned to the appropriate function pointer
  */
-extern isc_result_t (*dighost_printmessage)(dig_query_t *      query,
+extern isc_result_t (*dighost_printmessage)(dig_query_t *query,
                                            const isc_buffer_t *msgbuf,
                                            dns_message_t *msg, bool headers);
 
index c94c2de0126b08da2f697c5d7bb282241f58be8c..ad88f8bf1bfa78d4c36af83f6af175cd493ad450 100644 (file)
@@ -21,6 +21,7 @@
 #endif /* ifdef HAVE_LOCALE_H */
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/commandline.h>
 #include <isc/netaddr.h>
 #include <isc/print.h>
@@ -38,7 +39,7 @@
 #include <dns/rdatastruct.h>
 #include <dns/rdatatype.h>
 
-#include <dig/dig.h>
+#include "dighost.h"
 
 static bool short_form = true, listed_server = false;
 static bool default_lookups = true;
@@ -101,8 +102,8 @@ rcode_totext(dns_rcode_t rcode) {
        return (totext.deconsttext);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-show_usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+show_usage(void);
 
 static void
 show_usage(void) {
@@ -581,7 +582,7 @@ static const char *optstring = "46aAc:dilnm:p:rst:vVwCDN:R:TUW:";
 /*% version */
 static void
 version(void) {
-       fputs("host " VERSION "\n", stderr);
+       fprintf(stderr, "host %s\n", PACKAGE_VERSION);
 }
 
 static void
index 1bc5798f6449082a8c2d9c6ee5c898faa8e43b09..5a5a14b12afe12993108f37312cc09d27dda8887 100644 (file)
@@ -15,6 +15,7 @@
 #include <unistd.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/event.h>
@@ -35,7 +36,7 @@
 #include <dns/rdatastruct.h>
 #include <dns/rdatatype.h>
 
-#include <dig/dig.h>
+#include "dighost.h"
 
 #if defined(HAVE_READLINE)
 #if defined(HAVE_EDIT_READLINE_READLINE_H)
@@ -629,7 +630,7 @@ set_ndots(const char *value) {
 
 static void
 version(void) {
-       fputs("nslookup " VERSION "\n", stderr);
+       fprintf(stderr, "nslookup %s\n", PACKAGE_VERSION);
 }
 
 static void
@@ -879,8 +880,8 @@ get_next_command(void) {
        isc_mem_free(mctx, buf);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
diff --git a/bin/dnssec/Makefile.am b/bin/dnssec/Makefile.am
new file mode 100644 (file)
index 0000000..993d704
--- /dev/null
@@ -0,0 +1,38 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)
+
+AM_CPPFLAGS +=                                         \
+       -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
+
+noinst_LTLIBRARIES = libdnssectool.la
+
+LDADD =                                \
+       libdnssectool.la        \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)
+
+sbin_PROGRAMS = \
+       dnssec-cds              \
+       dnssec-dsfromkey        \
+       dnssec-importkey        \
+       dnssec-keyfromlabel     \
+       dnssec-keygen           \
+       dnssec-revoke           \
+       dnssec-settime          \
+       dnssec-signzone         \
+       dnssec-verify
+
+libdnssectool_la_SOURCES =     \
+       dnssectool.h            \
+       dnssectool.c
+
+dnssec_keygen_CPPFLAGS =       \
+       $(AM_CPPFLAGS)          \
+       $(LIBISCCFG_CFLAGS)
+
+dnssec_keygen_LDADD =          \
+       $(LDADD)                \
+       $(LIBISCCFG_LIBS)
index a9ba59d4f2ad189bf9b83b9cd3269bd08db8182f..e730e0ef204fdc0bbf1b987b2583b973bd580a32 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/file.h>
@@ -1020,8 +1021,8 @@ nsdiff(uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) {
        }
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -1029,7 +1030,7 @@ usage(void) {
        fprintf(stderr,
                "    %s options [options] -f <file> -d <path> <domain>\n",
                program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
        fprintf(stderr, "Options:\n"
                        "    -a <algorithm>     digest algorithm (SHA-1 / "
                        "SHA-256 / SHA-384)\n"
index f2a989c5fe9c942cc9a6a212743b74b7d97617bd..dacb8716199a2548abf328ef8e097af8ab1be4d0 100644 (file)
@@ -15,6 +15,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/hash.h>
@@ -320,8 +321,8 @@ emits(bool showall, bool cds, dns_rdata_t *rdata) {
        }
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
index f271c67c86c06c89bf9bcb402b912f6b14b82ad1..80553005bbcd85de88993c9a9088340e4c115189 100644 (file)
@@ -14,6 +14,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/hash.h>
@@ -264,15 +265,15 @@ emit(const char *dir, dns_rdata_t *rdata) {
        dst_key_free(&key);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "    %s options [-K dir] keyfile\n\n", program);
        fprintf(stderr, "    %s options -f file [keyname]\n\n", program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
        fprintf(stderr, "Options:\n");
        fprintf(stderr, "    -f file: read key from zone file\n");
        fprintf(stderr, "    -K <directory>: directory in which to store "
index 3d2d24eae8fc789965c9a35b08591cf8465fa93c..9508345b2a8c6856649600a28328815426bb7a74 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/mem.h>
 
 const char *program = "dnssec-keyfromlabel";
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "    %s -l label [options] name\n\n", program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
        fprintf(stderr, "Required options:\n");
        fprintf(stderr, "    -l label: label of the key pair\n");
        fprintf(stderr, "    name: owner of the key\n");
index 36724bec963777dd88f22421af94c6259420cca9..696892d43896a225488138e7e749ec28fb2a1136 100644 (file)
@@ -31,6 +31,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/mem.h>
@@ -70,8 +71,8 @@ const char *program = "dnssec-keygen";
 
 isc_log_t *lctx = NULL;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 progress(int p);
@@ -136,7 +137,7 @@ static void
 usage(void) {
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "    %s [options] name\n\n", program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
        fprintf(stderr, "    name: owner of the key\n");
        fprintf(stderr, "Options:\n");
        fprintf(stderr, "    -K <directory>: write keys into directory\n");
index af191012a8f291c2b8636576cd08e81b4a86cdc0..6fb1d708a58d1cbe0def849f189204dc4cb49764 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/file.h>
@@ -40,14 +41,14 @@ const char *program = "dnssec-revoke";
 
 static isc_mem_t *mctx = NULL;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "    %s [options] keyfile\n\n", program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
 #if USE_PKCS11
        fprintf(stderr,
                "    -E engine:    specify PKCS#11 provider "
index 01d37186e1c46d08460413f19933a1a93dabf723..bf76b97873d66e4036d3dc67e07843a8bcc45474 100644 (file)
@@ -18,6 +18,7 @@
 #include <time.h>
 #include <unistd.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/file.h>
@@ -44,14 +45,14 @@ const char *program = "dnssec-settime";
 
 static isc_mem_t *mctx = NULL;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "    %s [options] keyfile\n\n", program);
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
        fprintf(stderr, "General options:\n");
 #if USE_PKCS11
        fprintf(stderr,
index 4c5d28221d275cb9907512e90fe0f49854a6b756..5d6212b0a57087e24184cffcfd307968b83c8fc1 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <isc/app.h>
 #include <isc/atomic.h>
+#include <isc/attributes.h>
 #include <isc/base32.h>
 #include <isc/commandline.h>
 #include <isc/event.h>
@@ -3125,11 +3126,11 @@ print_version(FILE *fp) {
                return;
        }
 
-       fprintf(fp, "; dnssec_signzone version " VERSION "\n");
+       fprintf(fp, "; dnssec_signzone version %s\n", PACKAGE_VERSION);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -3138,7 +3139,7 @@ usage(void) {
 
        fprintf(stderr, "\n");
 
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
 
        fprintf(stderr, "Options: (default value in parenthesis) \n");
        fprintf(stderr, "\t-S:\tsmart signing: automatically finds key files\n"
index ac003ad58affb55c5083fde221951215f1af029a..8a46ebfa0927f419f6aedb51259d0c650935f683 100644 (file)
@@ -16,6 +16,7 @@
 #include <time.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base32.h>
 #include <isc/commandline.h>
 #include <isc/event.h>
@@ -137,8 +138,8 @@ loadzone(char *file, char *origin, dns_rdataclass_t rdclass, dns_db_t **db) {
        }
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -147,7 +148,7 @@ usage(void) {
 
        fprintf(stderr, "\n");
 
-       fprintf(stderr, "Version: %s\n", VERSION);
+       fprintf(stderr, "Version: %s\n", PACKAGE_VERSION);
 
        fprintf(stderr, "Options: (default value in parenthesis) \n");
        fprintf(stderr, "\t-v debuglevel (0)\n");
index 265f557e5a0de7ded1c6dd2acd92f57e0a96c253..d6039c32557c7f523392fd894942ddeb8ea42a4f 100644 (file)
@@ -112,7 +112,7 @@ vbprintf(int level, const char *fmt, ...) {
 
 void
 version(const char *name) {
-       fprintf(stderr, "%s %s\n", name, VERSION);
+       fprintf(stderr, "%s %s\n", name, PACKAGE_VERSION);
        exit(0);
 }
 
index 9471f9680743e1d57f6c539f6dd741a72d5f6ad2..483cdafdbee4245f350c19c244514bf06e077326 100644 (file)
@@ -15,6 +15,7 @@
 #include <inttypes.h>
 #include <stdbool.h>
 
+#include <isc/attributes.h>
 #include <isc/log.h>
 #include <isc/platform.h>
 #include <isc/stdtime.h>
@@ -42,9 +43,8 @@ extern uint8_t dtype[8];
 
 typedef void(fatalcallback_t)(void);
 
-ISC_PLATFORM_NORETURN_PRE void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 void
 setfatalcallback(fatalcallback_t *callback);
@@ -55,8 +55,8 @@ check_result(isc_result_t result, const char *message);
 void
 vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
 
-ISC_PLATFORM_NORETURN_PRE void
-version(const char *program) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+version(const char *program);
 
 void
 sig_format(dns_rdata_rrsig_t *sig, char *cp, unsigned int size);
index f522c748349a059bb80dddf823b0b72b2fd05ce6..ea7fb96479000fcad8e0c83c2b9434d8b4772391 100644 (file)
@@ -1,3 +1,3 @@
 .libs
 /named
-named-symtbl.c
+/xsl.c
diff --git a/bin/named/Makefile.am b/bin/named/Makefile.am
new file mode 100644 (file)
index 0000000..07d65c3
--- /dev/null
@@ -0,0 +1,109 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                         \
+       -I$(srcdir)/unix/include        \
+       -I$(top_builddir)/include       \
+       $(LIBISC_CFLAGS)                \
+       $(LIBDNS_CFLAGS)                \
+       $(LIBNS_CFLAGS)                 \
+       $(LIBISCCC_CFLAGS)              \
+       $(LIBISCCFG_CFLAGS)             \
+       $(LIBBIND9_CFLAGS)              \
+       $(LIBLTDL_CFLAGS)               \
+       $(OPENSSL_CFLAGS)               \
+       $(LIBCAP_CFLAGS)                \
+       $(LMDB_CFLAGS)                  \
+       $(MAXMINDDB_CFLAGS)             \
+       $(DNSTAP_CFLAGS)                \
+       $(ZLIB_CFLAGS)
+
+if HAVE_JSON_C
+AM_CPPFLAGS +=                         \
+       $(JSON_C_CFLAGS)
+endif HAVE_JSON_C
+
+if HAVE_LIBXML2
+AM_CPPFLAGS +=                         \
+       $(LIBXML2_CFLAGS)
+endif HAVE_LIBXML2
+
+AM_CPPFLAGS +=                                         \
+       -DNAMED_LOCALSTATEDIR=\"${localstatedir}\"      \
+       -DNAMED_SYSCONFDIR=\"${sysconfdir}\"
+
+sbin_PROGRAMS = named
+
+nodist_named_SOURCES = xsl.c
+BUILT_SOURCES = xsl.c
+CLEANFILES = xsl.c
+
+xsl.c: bind9.xsl Makefile
+       (echo 'const char xslmsg[] =' &&        \
+        $(SED) -e 's,\",\\\",g'                \
+               -e 's,^,\",'                    \
+               -e 's,$$,\",' &&                \
+        echo ";")                              \
+       < "${srcdir}/bind9.xsl" > $@
+
+named_SOURCES =                                \
+       builtin.c                       \
+       config.c                        \
+       control.c                       \
+       controlconf.c                   \
+       fuzz.c                          \
+       log.c                           \
+       logconf.c                       \
+       main.c                          \
+       server.c                        \
+       statschannel.c                  \
+       tkeyconf.c                      \
+       tsigconf.c                      \
+       zoneconf.c                      \
+       unix/dlz_dlopen_driver.c        \
+       unix/os.c                       \
+       include/named/builtin.h         \
+       include/named/config.h          \
+       include/named/control.h         \
+       include/named/fuzz.h            \
+       include/named/geoip.h           \
+       include/named/globals.h         \
+       include/named/log.h             \
+       include/named/logconf.h         \
+       include/named/main.h            \
+       include/named/server.h          \
+       include/named/smf_globals.h     \
+       include/named/statschannel.h    \
+       include/named/tkeyconf.h        \
+       include/named/tsigconf.h        \
+       include/named/types.h           \
+       include/named/zoneconf.h        \
+       unix/include/named/os.h         \
+       xsl_p.h
+
+if HAVE_GEOIP2
+AM_CPPFLAGS +=                                 \
+       -DMAXMINDDB_PREFIX=\"@MAXMINDDB_PREFIX@\"
+named_SOURCES +=       \
+       geoip.c
+endif
+
+named_LDADD =                                  \
+       $(LIBISC_LIBS)                          \
+       $(LIBDNS_LIBS)                          \
+       $(LIBNS_LIBS)                           \
+       $(LIBISCCC_LIBS)                        \
+       $(LIBISCCFG_LIBS)                       \
+       $(LIBBIND9_LIBS)                        \
+       $(LIBLTDL_LIBS)                         \
+       $(OPENSSL_LIBS)                         \
+       $(LIBCAP_LIBS)                          \
+       $(LMDB_LIBS)                            \
+       $(MAXMINDDB_LIBS)                       \
+       $(DNSTAP_LIBS)                          \
+       $(LIBXML2_LIBS)                         \
+       $(ZLIB_LIBS)
+
+if HAVE_JSON_C
+named_LDADD +=                                 \
+       $(JSON_C_LIBS)
+endif HAVE_JSON_C
diff --git a/bin/named/bind9.xsl.h b/bin/named/bind9.xsl.h
deleted file mode 100644 (file)
index 2769147..0000000
+++ /dev/null
@@ -1,1272 +0,0 @@
-/*
- * Generated by convertxsl.pl 1.14 2008/07/17 23:43:26 jinmei Exp
- * From unknown
- */
-static char xslmsg[] =
-       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-       "<!--\n"
-       " - Copyright (C) Internet Systems Consortium, Inc. (\"ISC\")\n"
-       " -\n"
-       " - This Source Code Form is subject to the terms of the Mozilla "
-       "Public\n"
-       " - License, v. 2.0. If a copy of the MPL was not distributed with "
-       "this\n"
-       " - file, You can obtain one at http://mozilla.org/MPL/2.0/.\n"
-       " -\n"
-       " - See the COPYRIGHT file distributed with this work for additional\n"
-       " - information regarding copyright ownership.\n"
-       "-->\n"
-       "\n"
-       "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" "
-       "xmlns=\"http://www.w3.org/1999/xhtml\" version=\"1.0\">\n"
-       " <xsl:output method=\"html\" indent=\"yes\" version=\"4.0\"/>\n"
-       " <xsl:template match=\"statistics[@version=&quot;3.11&quot;]\">\n"
-       " <html>\n"
-       " <head>\n"
-       " <script type=\"text/javascript\" "
-       "src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/"
-       "jquery.min.js\"></script>\n"
-       " <script type=\"text/javascript\">\n"
-       " $(function($) {\n"
-       " var wid=0;\n"
-       " $('table.zones').each(function(i) { if( $(this).width() > wid ) wid "
-       "= $(this).width(); return true; });\n"
-       " $('table.zones').css('min-width', wid );\n"
-       " $(\"h2+table,h3+table,h4+table,h2+div,h3+div,h2+script,h3+script\")."
-       "prev().append(' <a class=\"tabletoggle\" href=\"#\" "
-       "style=\"font-size:small\">Show/Hide</a>');\n"
-       " $(\".tabletoggle\").click(function(){\n"
-       " var n = $(this).closest(\"h2,h3,h4\").next();\n"
-       " if (n.is(\"script\")) { n = n.next(); }\n"
-       " if (n.is(\"div\")) { n.toggleClass(\"hidden\"); n = n.next(); }\n"
-       " if (n.is(\"table\")) { n.toggleClass(\"hidden\"); }\n"
-       " return false;\n"
-       " });\n"
-       " });\n"
-       " </script>\n"
-       "\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <script type=\"text/javascript\" "
-       "src=\"https://www.google.com/jsapi\"/>\n"
-       " <script type=\"text/javascript\">\n"
-       "\n"
-       " google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n"
-       " google.setOnLoadCallback(loadGraphs);\n"
-       "\n"
-       " var graphs=[];\n"
-       "\n"
-       " function drawChart(chart_title,target,style,data) {\n"
-       " var data = google.visualization.arrayToDataTable(data);\n"
-       "\n"
-       " var options = {\n"
-       " title: chart_title\n"
-       " };\n"
-       "\n"
-       " var chart;\n"
-       " if (style == \"barchart\") {\n"
-       " chart = new "
-       "google.visualization.BarChart(document.getElementById(target));\n"
-       " chart.draw(data, options);\n"
-       " } else if (style == \"piechart\") {\n"
-       " chart = new "
-       "google.visualization.PieChart(document.getElementById(target));\n"
-       " chart.draw(data, options);\n"
-       " }\n"
-       " }\n"
-       "\n"
-       " function loadGraphs(){\n"
-       " var g;\n"
-       "\n"
-       " while(g = graphs.shift()){\n"
-       " // alert(\"going for: \" + g.target);\n"
-       " if(g.data.length > 1){\n"
-       " drawChart(g.title,g.target,g.style,g.data);\n"
-       " }\n"
-       " }\n"
-       " }\n"
-       "\n"
-       " <xsl:if test=\"server/counters[@type=&quot;qtype&quot;]/counter\">\n"
-       " // Server Incoming Query Types\n"
-       " graphs.push({\n"
-       " 'title' : \"Server Incoming Query Types\",\n"
-       " 'target': 'chart_incoming_qtypes',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"server/counters[@type=&quot;qtype&quot;]/"
-       "counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of "
-       "select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       " </xsl:if>\n"
-       "\n"
-       " <xsl:if test=\"server/counters[@type=&quot;opcode&quot;]/counter\">\n"
-       " // Server Incoming Requests by opcode\n"
-       " graphs.push({\n"
-       " 'title' : \"Server Incoming Requests by DNS Opcode\",\n"
-       " 'target': 'chart_incoming_opcodes',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Opcode','Counter'],<xsl:for-each "
-       "select=\"server/counters[@type=&quot;opcode&quot;]/counter[. &gt; 0 "
-       "or substring(@name,1,3) != 'RES']\">['<xsl:value-of "
-       "select=\"@name\"/>',<xsl:value-of "
-       "select=\".\"/>],</xsl:for-each>]});\n"
-       " </xsl:if>\n"
-       " </script>\n"
-       " </xsl:if>\n"
-       " <style type=\"text/css\">\n"
-       " body {\n"
-       " font-family: sans-serif;\n"
-       " background-color: #ffffff;\n"
-       " color: #000000;\n"
-       " font-size: 10pt;\n"
-       " }\n"
-       "\n"
-       " .hidden{\n"
-       " display: none;\n"
-       " }\n"
-       "\n"
-       " .odd{\n"
-       " background-color: #f0f0f0;\n"
-       " }\n"
-       "\n"
-       " .even{\n"
-       " background-color: #ffffff;\n"
-       " }\n"
-       "\n"
-       " p.footer{\n"
-       " font-style:italic;\n"
-       " color: grey;\n"
-       " }\n"
-       "\n"
-       " table {\n"
-       " border-collapse: collapse;\n"
-       " border: 1px solid grey;\n"
-       " }\n"
-       "\n"
-       " table.counters{\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.counters th {\n"
-       " text-align: right;\n"
-       " border: 1px solid grey;\n"
-       " width: 150px;\n"
-       " }\n"
-       " table.counters td {\n"
-       " text-align: right;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.counters tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " table.info {\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.info th {\n"
-       " text-align: center;\n"
-       " border: 1px solid grey;\n"
-       " width: 150px;\n"
-       " }\n"
-       " table.info td {\n"
-       " text-align: center;\n"
-       " }\n"
-       " table.info tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " table.tasks {\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.tasks th {\n"
-       " text-align: center;\n"
-       " border: 1px solid grey;\n"
-       " width: 150px;\n"
-       " }\n"
-       " table.tasks td {\n"
-       " text-align: right;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.tasks td:nth-child(2) {\n"
-       " text-align: center;\n"
-       " }\n"
-       " table.tasks td:nth-child(4) {\n"
-       " text-align: center;\n"
-       " }\n"
-       " table.tasks tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " table.netstat {\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.netstat th {\n"
-       " text-align: center;\n"
-       " border: 1px solid grey;\n"
-       " width: 150px;\n"
-       " }\n"
-       " table.netstat td {\n"
-       " text-align: center;\n"
-       " }\n"
-       " table.netstat td:nth-child(4) {\n"
-       " text-align: right;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.netstat td:nth-child(7) {\n"
-       " text-align: left;\n"
-       " }\n"
-       " table.netstat tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " table.mctx {\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.mctx th {\n"
-       " text-align: center;\n"
-       " border: 1px solid grey;\n"
-       " }\n"
-       " table.mctx td {\n"
-       " text-align: right;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.mctx td:nth-child(-n+2) {\n"
-       " text-align: left;\n"
-       " width: 100px;\n"
-       " }\n"
-       " table.mctx tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " table.zones {\n"
-       " border: 1px solid grey;\n"
-       " width: 500px;\n"
-       " }\n"
-       " table.zones th {\n"
-       " text-align: center;\n"
-       " border: 1px solid grey;\n"
-       " }\n"
-       " table.zones td {\n"
-       " text-align: center;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.zones td:nth-child(1) {\n"
-       " text-align: right;\n"
-       " }\n"
-       " table.zones td:nth-child(4) {\n"
-       " text-align: right;\n"
-       " }\n"
-       "\n"
-       " .totals {\n"
-       " background-color: rgb(1,169,206);\n"
-       " color: #ffffff;\n"
-       " }\n"
-       " table.zones {\n"
-       " border: 1px solid grey;\n"
-       " }\n"
-       " table.zones td {\n"
-       " text-align: right;\n"
-       " font-family: monospace;\n"
-       " }\n"
-       " table.zones td:nth-child(2) {\n"
-       " text-align: center;\n"
-       " }\n"
-       " table.zones td:nth-child(3) {\n"
-       " text-align: left;\n"
-       " }\n"
-       " table.zones tr:hover{\n"
-       " background-color: #99ddff;\n"
-       " }\n"
-       "\n"
-       " td, th {\n"
-       " padding-right: 5px;\n"
-       " padding-left: 5px;\n"
-       " border: 1px solid grey;\n"
-       " }\n"
-       "\n"
-       " .header h1 {\n"
-       " color: rgb(1,169,206);\n"
-       " padding: 0px;\n"
-       " }\n"
-       "\n"
-       " .content {\n"
-       " background-color: #ffffff;\n"
-       " color: #000000;\n"
-       " padding: 4px;\n"
-       " }\n"
-       "\n"
-       " .item {\n"
-       " padding: 4px;\n"
-       " text-align: right;\n"
-       " }\n"
-       "\n"
-       " .value {\n"
-       " padding: 4px;\n"
-       " font-weight: bold;\n"
-       " }\n"
-       "\n"
-       "\n"
-       " h2 {\n"
-       " color: grey;\n"
-       " font-size: 14pt;\n"
-       " width:500px;\n"
-       " text-align:center;\n"
-       " }\n"
-       "\n"
-       " h3 {\n"
-       " color: #444444;\n"
-       " font-size: 12pt;\n"
-       " width:500px;\n"
-       " text-align:center;\n"
-       " }\n"
-       " h4 {\n"
-       " color: rgb(1,169,206);\n"
-       " font-size: 10pt;\n"
-       " width:500px;\n"
-       " text-align:center;\n"
-       " }\n"
-       "\n"
-       " .pie {\n"
-       " width:500px;\n"
-       " height: 500px;\n"
-       " }\n"
-       "\n"
-       " </style>\n"
-       " <title>ISC BIND 9 Statistics</title>\n"
-       " </head>\n"
-       " <body>\n"
-       " <div class=\"header\">\n"
-       " <h1>ISC Bind 9 Configuration and Statistics</h1>\n"
-       " </div>\n"
-       " <p>Alternate statistics views: <a href=\"/\">All</a>,\n"
-       " <a href=\"/xml/v3/status\">Status</a>,\n"
-       " <a href=\"/xml/v3/server\">Server</a>,\n"
-       " <a href=\"/xml/v3/zones\">Zones</a>,\n"
-       " <a href=\"/xml/v3/net\">Network</a>,\n"
-       " <a href=\"/xml/v3/tasks\">Tasks</a>,\n"
-       " <a href=\"/xml/v3/mem\">Memory</a> and\n"
-       " <a href=\"/xml/v3/traffic\">Traffic Size</a></p>\n"
-       " <hr/>\n"
-       " <h2>Server Status</h2>\n"
-       " <table class=\"info\">\n"
-       " <tr class=\"odd\">\n"
-       " <th>Boot time:</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"server/boot-time\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"even\">\n"
-       " <th>Last reconfigured:</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"server/config-time\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"odd\">\n"
-       " <th>Current time:</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"server/current-time\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"even\">\n"
-       " <th>Server version:</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"server/version\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </table>\n"
-       " <br/>\n"
-       " <xsl:if test=\"server/counters[@type=&quot;opcode&quot;]/counter[. "
-       "&gt; 0]\">\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <h2>Incoming Requests by DNS Opcode</h2>\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <div class=\"pie\" id=\"chart_incoming_opcodes\">\n"
-       " [cannot display chart]\n"
-       " </div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;opcode&quot;]/counter[. &gt; 0 "
-       "or substring(@name,1,3) != 'RES']\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class0\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class0}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " <tr>\n"
-       " <th class=\"totals\">Total:</th>\n"
-       " <td class=\"totals\">\n"
-       " <xsl:value-of "
-       "select=\"sum(server/counters[@type=&quot;opcode&quot;]/counter)\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"server/counters[@type=&quot;qtype&quot;]/counter\">\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <h3>Incoming Queries by Query Type</h3>\n"
-       " <div class=\"pie\" id=\"chart_incoming_qtypes\">\n"
-       " [cannot display chart]\n"
-       " </div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;qtype&quot;]/counter\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " <tr>\n"
-       " <th class=\"totals\">Total:</th>\n"
-       " <td class=\"totals\">\n"
-       " <xsl:value-of "
-       "select=\"sum(server/counters[@type=&quot;qtype&quot;]/counter)\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"views/view[count(counters[@type=&quot;resqtype&quot;]/counter) "
-       "&gt; 0]\">\n"
-       " <h2>Outgoing Queries per view</h2>\n"
-       " <xsl:for-each "
-       "select=\"views/view[count(counters[@type=&quot;resqtype&quot;]/"
-       "counter) &gt; 0]\">\n"
-       " <h3>View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <script type=\"text/javascript\">\n"
-       " graphs.push({\n"
-       " 'title': \"Outgoing Queries for view: <xsl:value-of "
-       "select=\"@name\"/>\",\n"
-       " 'target': 'chart_outgoing_queries_view_<xsl:value-of "
-       "select=\"@name\"/>',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"counters[@type=&quot;resqtype&quot;]/"
-       "counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of "
-       "select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       " </script>\n"
-       " <xsl:variable name=\"target\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <div class=\"pie\" id=\"chart_outgoing_queries_view_{$target}\">[no "
-       "data to display]</div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;resqtype&quot;]/counter\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class1\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class1}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:for-each>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"server/counters[@type=&quot;nsstat&quot;]/counter[.&gt;0]\">\n"
-       " <h2>Server Statistics</h2>\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <script type=\"text/javascript\">\n"
-       " graphs.push({\n"
-       " 'title' : \"Server Counters\",\n"
-       " 'target': 'chart_server_nsstat_restype',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"server/counters[@type=&quot;nsstat&quot;]/"
-       "counter[.&gt;0]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of "
-       "select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       " </script>\n"
-       " <div class=\"pie\" id=\"chart_server_nsstat_restype\">[no data to "
-       "display]</div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;nsstat&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class2\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class2}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"server/counters[@type=&quot;zonestat&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <h2>Zone Maintenance Statistics</h2>\n"
-       " <script type=\"text/javascript\">\n"
-       " graphs.push({\n"
-       " 'title' : \"Zone Maintenance Stats\",\n"
-       " 'target': 'chart_server_zone_maint',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"server/counters[@type=&quot;zonestat&quot;]/"
-       "counter[.&gt;0]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of "
-       "select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       " </script>\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <div class=\"pie\" id=\"chart_server_zone_maint\">[no data to "
-       "display]</div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;zonestat&quot;]/counter\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class3\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class3}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"server/counters[@type=&quot;resstat&quot;]/counter[.&gt;0]\">\n"
-       " <h2>Resolver Statistics (Common)</h2>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;resstat&quot;]/counter\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class4\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class4}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " <xsl:for-each select=\"views/view\">\n"
-       " <xsl:if "
-       "test=\"counters[@type=&quot;resstats&quot;]/counter[.&gt;0]\">\n"
-       " <h3>Resolver Statistics for View <xsl:value-of "
-       "select=\"@name\"/></h3>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;resstats&quot;]/counter[.&gt;0]\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class5\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class5}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " <xsl:for-each select=\"views/view\">\n"
-       " <xsl:if "
-       "test=\"counters[@type=&quot;adbstat&quot;]/counter[.&gt;0]\">\n"
-       " <h3>ADB Statistics for View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;adbstat&quot;]/counter[.&gt;0]\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class5\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class5}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " <xsl:for-each select=\"views/view\">\n"
-       " <xsl:if "
-       "test=\"counters[@type=&quot;cachestats&quot;]/counter[.&gt;0]\">\n"
-       " <h3>Cache Statistics for View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;cachestats&quot;]/counter[.&gt;0]\">\n"
-       " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class5\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class5}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " <xsl:for-each select=\"views/view\">\n"
-       " <xsl:if test=\"cache/rrset\">\n"
-       " <h3>Cache DB RRsets for View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each select=\"cache/rrset\">\n"
-       " <xsl:variable name=\"css-class6\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class6}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"counter\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " <xsl:if "
-       "test=\"traffic//udp/counters[@type=&quot;request-size&quot;]/"
-       "counter[.&gt;0] or "
-       "traffic//udp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0] or "
-       "traffic//tcp/counters[@type=&quot;request-size&quot;]/counter[.&gt;0] "
-       "or "
-       "traffic//tcp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h2>Traffic Size Statistics</h2>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"traffic//udp/counters[@type=&quot;request-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h4>UDP Requests Received</h4>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"traffic//udp/counters[@type=&quot;request-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:variable name=\"css-class7\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class7}\">\n"
-       " <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"traffic//udp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h4>UDP Responses Sent</h4>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"traffic//udp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:variable name=\"css-class7\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class7}\">\n"
-       " <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"traffic//tcp/counters[@type=&quot;request-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h4>TCP Requests Received</h4>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"traffic//tcp/counters[@type=&quot;request-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:variable name=\"css-class7\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class7}\">\n"
-       " <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"traffic//tcp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h4>TCP Responses Sent</h4>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"traffic//tcp/counters[@type=&quot;response-size&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:variable name=\"css-class7\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class7}\">\n"
-       " <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"server/counters[@type=&quot;sockstat&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <h2>Socket I/O Statistics</h2>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"server/counters[@type=&quot;sockstat&quot;]/"
-       "counter[.&gt;0]\">\n"
-       " <xsl:variable name=\"css-class7\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class7}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"views/view/zones/zone\">\n"
-       " <xsl:for-each select=\"views/view\">\n"
-       " <h3>Zones for View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <table class=\"zones\">\n"
-       " <thead><tr><th>Name</th><th>Class</th><th>Type</th><th>Serial</th></"
-       "tr></thead>\n"
-       " <tbody>\n"
-       " <xsl:for-each select=\"zones/zone\">\n"
-       " <xsl:variable name=\"css-class15\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class15}\">\n"
-       " <td><xsl:value-of select=\"@name\"/></td>\n"
-       " <td><xsl:value-of select=\"@rdataclass\"/></td>\n"
-       " <td><xsl:value-of select=\"type\"/></td>\n"
-       " <td><xsl:value-of select=\"serial\"/></td></tr>\n"
-       " </xsl:for-each>\n"
-       " </tbody>\n"
-       " </table>\n"
-       " </xsl:for-each>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h2>Received QTYPES per view/zone</h2>\n"
-       " <xsl:for-each "
-       "select=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h3>View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <xsl:variable name=\"thisview\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <xsl:for-each select=\"zones/zone\">\n"
-       " <xsl:if test=\"counters[@type=&quot;qtype&quot;]/counter[count(.) "
-       "&gt; 0]\">\n"
-       " <h4>Zone <xsl:value-of select=\"@name\"/></h4>\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <script type=\"text/javascript\">\n"
-       " graphs.push({\n"
-       " 'title': \"Query types for zone <xsl:value-of select=\"@name\"/>\",\n"
-       " 'target': 'chart_qtype_<xsl:value-of "
-       "select=\"../../@name\"/>_<xsl:value-of select=\"@name\"/>',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"counters[@type=&quot;qtype&quot;]/counter[.&gt;0 and @name "
-       "!= &quot;QryAuthAns&quot;]\">['<xsl:value-of "
-       "select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       "\n"
-       " </script>\n"
-       " <xsl:variable name=\"target\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <div class=\"pie\" id=\"chart_qtype_{$thisview}_{$target}\">[no data "
-       "to display]</div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each select=\"counters[@type=&quot;qtype&quot;]/counter\">\n"
-       " <xsl:sort select=\".\"/>\n"
-       " <xsl:variable name=\"css-class10\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class10}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " </xsl:for-each>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"views/view[zones/zone/counters[@type=&quot;rcode&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h2>Response Codes per view/zone</h2>\n"
-       " <xsl:for-each "
-       "select=\"views/view[zones/zone/counters[@type=&quot;rcode&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h3>View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <xsl:variable name=\"thisview2\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <xsl:for-each select=\"zones/zone\">\n"
-       " <xsl:if test=\"counters[@type=&quot;rcode&quot;]/counter[. &gt; "
-       "0]\">\n"
-       " <h4>Zone <xsl:value-of select=\"@name\"/></h4>\n"
-       " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
-       " <!-- Non Mozilla specific markup -->\n"
-       " <script type=\"text/javascript\">\n"
-       " graphs.push({\n"
-       " 'title': \"Response codes for zone <xsl:value-of "
-       "select=\"@name\"/>\",\n"
-       " 'target': 'chart_rescode_<xsl:value-of "
-       "select=\"../../@name\"/>_<xsl:value-of select=\"@name\"/>',\n"
-       " 'style': 'barchart',\n"
-       " 'data': [['Type','Counter'],<xsl:for-each "
-       "select=\"counters[@type=&quot;rcode&quot;]/counter[.&gt;0 and @name "
-       "!= &quot;QryAuthAns&quot;]\">['<xsl:value-of "
-       "select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n"
-       " });\n"
-       "\n"
-       " </script>\n"
-       " <xsl:variable name=\"target\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <div class=\"pie\" id=\"chart_rescode_{$thisview2}_{$target}\">[no "
-       "data to display]</div>\n"
-       " </xsl:if>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;rcode&quot;]/counter[.&gt;0 and @name "
-       "!= &quot;QryAuthAns&quot;]\">\n"
-       " <xsl:sort select=\".\"/>\n"
-       " <xsl:variable name=\"css-class11\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class11}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " </xsl:for-each>\n"
-       " </xsl:if>\n"
-       " <xsl:if "
-       "test=\"views/view[zones/zone/counters[@type=&quot;gluecache&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h2>Glue cache statistics</h2>\n"
-       " <xsl:for-each "
-       "select=\"views/view[zones/zone/counters[@type=&quot;gluecache&quot;]/"
-       "counter &gt;0]\">\n"
-       " <h3>View <xsl:value-of select=\"@name\"/></h3>\n"
-       " <xsl:variable name=\"thisview2\">\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </xsl:variable>\n"
-       " <xsl:for-each select=\"zones/zone\">\n"
-       " <xsl:if test=\"counters[@type=&quot;gluecache&quot;]/counter[. &gt; "
-       "0]\">\n"
-       " <h4>Zone <xsl:value-of select=\"@name\"/></h4>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each "
-       "select=\"counters[@type=&quot;gluecache&quot;]/counter[. &gt; 0]\">\n"
-       " <xsl:sort select=\".\"/>\n"
-       " <xsl:variable name=\"css-class11\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class11}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"@name\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " </xsl:for-each>\n"
-       " </xsl:for-each>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"socketmgr/sockets/socket\">\n"
-       " <h2>Network Status</h2>\n"
-       " <table class=\"netstat\">\n"
-       " <tr>\n"
-       " <th>ID</th>\n"
-       " <th>Name</th>\n"
-       " <th>Type</th>\n"
-       " <th>References</th>\n"
-       " <th>LocalAddress</th>\n"
-       " <th>PeerAddress</th>\n"
-       " <th>State</th>\n"
-       " </tr>\n"
-       " <xsl:for-each select=\"socketmgr/sockets/socket\">\n"
-       " <xsl:sort select=\"id\"/>\n"
-       " <xsl:variable name=\"css-class12\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class12}\">\n"
-       " <td>\n"
-       " <xsl:value-of select=\"id\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"name\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"type\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"references\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"local-address\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"peer-address\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:for-each select=\"states\">\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </xsl:for-each>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"taskmgr/thread-model/type\">\n"
-       " <h2>Task Manager Configuration</h2>\n"
-       " <table class=\"counters\">\n"
-       " <tr>\n"
-       " <th class=\"even\">Thread-Model</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"taskmgr/thread-model/type\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"odd\">\n"
-       " <th>Worker Threads</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"taskmgr/thread-model/worker-threads\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"even\">\n"
-       " <th>Default Quantum</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"taskmgr/thread-model/default-quantum\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"odd\">\n"
-       " <th>Tasks Running</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"taskmgr/thread-model/tasks-running\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " <tr class=\"even\">\n"
-       " <th>Tasks Ready</th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"taskmgr/thread-model/tasks-ready\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"taskmgr/tasks/task\">\n"
-       " <h2>Tasks</h2>\n"
-       " <table class=\"tasks\">\n"
-       " <tr>\n"
-       " <th>ID</th>\n"
-       " <th>Name</th>\n"
-       " <th>References</th>\n"
-       " <th>State</th>\n"
-       " <th>Quantum</th>\n"
-       " <th>Events</th>\n"
-       " </tr>\n"
-       " <xsl:for-each select=\"taskmgr/tasks/task\">\n"
-       " <xsl:sort select=\"name\"/>\n"
-       " <xsl:variable name=\"css-class14\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class14}\">\n"
-       " <td>\n"
-       " <xsl:value-of select=\"id\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"name\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"references\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"state\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"quantum\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"events\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"memory/summary\">\n"
-       " <h2>Memory Usage Summary</h2>\n"
-       " <table class=\"counters\">\n"
-       " <xsl:for-each select=\"memory/summary/*\">\n"
-       " <xsl:variable name=\"css-class13\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class13}\">\n"
-       " <th>\n"
-       " <xsl:value-of select=\"name()\"/>\n"
-       " </th>\n"
-       " <td>\n"
-       " <xsl:value-of select=\".\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " <br/>\n"
-       " </xsl:if>\n"
-       " <xsl:if test=\"memory/contexts/context\">\n"
-       " <h2>Memory Contexts</h2>\n"
-       " <table class=\"mctx\">\n"
-       " <tr>\n"
-       " <th>ID</th>\n"
-       " <th>Name</th>\n"
-       " <th>References</th>\n"
-       " <th>TotalUse</th>\n"
-       " <th>InUse</th>\n"
-       " <th>MaxUse</th>\n"
-       " <th>Malloced</th>\n"
-       " <th>MaxMalloced</th>\n"
-       " <th>BlockSize</th>\n"
-       " <th>Pools</th>\n"
-       " <th>HiWater</th>\n"
-       " <th>LoWater</th>\n"
-       " </tr>\n"
-       " <xsl:for-each select=\"memory/contexts/context\">\n"
-       " <xsl:sort select=\"total\" data-type=\"number\" "
-       "order=\"descending\"/>\n"
-       " <xsl:variable name=\"css-class14\">\n"
-       " <xsl:choose>\n"
-       " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
-       " <xsl:otherwise>odd</xsl:otherwise>\n"
-       " </xsl:choose>\n"
-       " </xsl:variable>\n"
-       " <tr class=\"{$css-class14}\">\n"
-       " <td>\n"
-       " <xsl:value-of select=\"id\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"name\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"references\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"total\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"inuse\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"maxinuse\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"malloced\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"maxmalloced\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"blocksize\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"pools\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"hiwater\"/>\n"
-       " </td>\n"
-       " <td>\n"
-       " <xsl:value-of select=\"lowater\"/>\n"
-       " </td>\n"
-       " </tr>\n"
-       " </xsl:for-each>\n"
-       " </table>\n"
-       " </xsl:if>\n"
-       " <hr/>\n"
-       " <p class=\"footer\">Internet Systems Consortium Inc.<br/><a "
-       "href=\"http://www.isc.org\">http://www.isc.org</a></p>\n"
-       " </body>\n"
-       " </html>\n"
-       " </xsl:template>\n"
-       "</xsl:stylesheet>\n";
index d3ab9ad4804da300e576ddb3539c0c0d2a1f27f8..6a27e5c9d2633c516d812264c00d37acd1f0db0d 100644 (file)
@@ -347,7 +347,7 @@ do_version_lookup(dns_sdblookup_t *lookup) {
                        return (put_txt(lookup, named_g_server->version));
                }
        } else {
-               return (put_txt(lookup, named_g_version));
+               return (put_txt(lookup, PACKAGE_VERSION));
        }
 }
 
index 4c0127b7a69cbdccdf0472ef9a7e7e190896d202..a3fda486d3df3654f7ce7b207a91b0546ffd7027 100644 (file)
@@ -1191,9 +1191,9 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
        if (result == ISC_R_SUCCESS) {
                int pf = isc_sockaddr_pf(&listener->address);
                if ((pf == AF_INET && isc_net_probeipv4() != ISC_R_SUCCESS) ||
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
                    (pf == AF_UNIX && isc_net_probeunix() != ISC_R_SUCCESS) ||
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif
                    (pf == AF_INET6 && isc_net_probeipv6() != ISC_R_SUCCESS))
                {
                        result = ISC_R_FAMILYNOSUPPORT;
diff --git a/bin/named/convertxsl.pl b/bin/named/convertxsl.pl
deleted file mode 100755 (executable)
index 8f78be3..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-use strict;
-use warnings;
-
-my $rev = '$Id: convertxsl.pl,v 1.14 2008/07/17 23:43:26 jinmei Exp $';
-$rev =~ s/\$//g;
-$rev =~ s/,v//g;
-$rev =~ s/Id: //;
-
-my $xsl = "unknown";
-my $lines = '';
-
-while (<>) {
-    chomp;
-    # pickout the id for comment.
-    $xsl = $_ if (/<!-- .Id:.* -->/);
-    # convert Id string to a form not recognisable by cvs.
-    $_ =~ s/<!-- .Id:(.*). -->/<!-- \\045Id: $1\\045 -->/;
-    s/[\ \t]+/ /g;
-    s/\>\ \</\>\</g;
-    s/\"/\\\"/g;
-    s/^/\t\"/;
-    s/[\ \t]+$//g;
-    s/$/\\n\"/;
-    if ($lines eq "") {
-           $lines .= $_;
-    } else {
-           $lines .= "\n" . $_;
-    }
-}
-
-$xsl =~ s/\$//g;
-$xsl =~ s/<!-- Id: //;
-$xsl =~ s/ -->.*//;
-$xsl =~ s/,v//;
-
-print "/*\n * Generated by $rev \n * From $xsl\n */\n";
-print 'static char xslmsg[] =',"\n";
-print $lines;
-
-print ';', "\n";
index eb38625f44a745b00b93bf1f86f3cf67614a8572..3b6e8d7d659f3a0183aa46385a93cfabba7bc18c 100644 (file)
@@ -65,12 +65,12 @@ EXTERN isc_socketmgr_t *named_g_socketmgr INIT(NULL);
 EXTERN isc_nm_t *named_g_nm INIT(NULL);
 EXTERN cfg_parser_t *named_g_parser INIT(NULL);
 EXTERN cfg_parser_t *named_g_addparser INIT(NULL);
-EXTERN const char *named_g_version     INIT(VERSION);
-EXTERN const char *named_g_product     INIT(PRODUCT);
-EXTERN const char *named_g_description INIT(DESCRIPTION);
-EXTERN const char *named_g_srcid       INIT(SRCID);
-EXTERN const char *named_g_configargs  INIT(CONFIGARGS);
-EXTERN const char *named_g_builder     INIT(BUILDER);
+EXTERN const char *named_g_version     INIT(PACKAGE_VERSION);
+EXTERN const char *named_g_product     INIT(PACKAGE_NAME);
+EXTERN const char *named_g_description INIT(PACKAGE_DESCRIPTION);
+EXTERN const char *named_g_srcid       INIT(PACKAGE_SRCID);
+EXTERN const char *named_g_configargs  INIT(PACKAGE_CONFIGARGS);
+EXTERN const char *named_g_builder     INIT(PACKAGE_BUILDER);
 EXTERN in_port_t named_g_port         INIT(0);
 EXTERN isc_dscp_t named_g_dscp        INIT(-1);
 
index 27b7624046bf94b96e60205c72dca9c8d149cc8a..ffd26429e8e152238540899319d3d8113dc441b1 100644 (file)
@@ -9,8 +9,9 @@
  * information regarding copyright ownership.
  */
 
-#ifndef NAMED_MAIN_H
-#define NAMED_MAIN_H 1
+#pragma once
+
+#include <isc/attributes.h>
 
 /*! \file */
 
  */
 #define NAMED_MAIN_ARGS "46A:c:d:D:E:fFgL:M:m:n:N:p:sS:t:T:U:u:vVx:X:"
 
-ISC_PLATFORM_NORETURN_PRE void
-named_main_earlyfatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+named_main_earlyfatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 void
 named_main_earlywarning(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 void
 named_main_setmemstats(const char *);
-
-#endif /* NAMED_MAIN_H */
index ec8d22100f905655c5901ab99eed6c654f818c78..b03b30c07211e23249f90cae2b37b8f02c5a1deb 100644 (file)
@@ -18,6 +18,7 @@
 #include <string.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/backtrace.h>
 #include <isc/commandline.h>
 #include <isc/dir.h>
@@ -189,9 +190,9 @@ named_main_earlyfatal(const char *format, ...) {
        exit(1);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
+ISC_NORETURN static void
 assertion_failed(const char *file, int line, isc_assertiontype_t type,
-                const char *cond) ISC_PLATFORM_NORETURN_POST;
+                const char *cond);
 
 static void
 assertion_failed(const char *file, int line, isc_assertiontype_t type,
@@ -254,10 +255,9 @@ assertion_failed(const char *file, int line, isc_assertiontype_t type,
        exit(1);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
+ISC_NORETURN static void
 library_fatal_error(const char *file, int line, const char *format,
-                   va_list args)
-       ISC_FORMAT_PRINTF(3, 0) ISC_PLATFORM_NORETURN_POST;
+                   va_list args) ISC_FORMAT_PRINTF(3, 0);
 
 static void
 library_fatal_error(const char *file, int line, const char *format,
@@ -487,16 +487,15 @@ printversion(bool verbose) {
        const cfg_obj_t *defaults = NULL, *obj = NULL;
 #endif /* if defined(HAVE_GEOIP2) */
 
-       printf("%s %s%s%s <id:%s>\n", named_g_product, named_g_version,
-              (*named_g_description != '\0') ? " " : "", named_g_description,
-              named_g_srcid);
+       printf("%s%s <id:%s>\n", PACKAGE_STRING, PACKAGE_DESCRIPTION,
+              PACKAGE_SRCID);
 
        if (!verbose) {
                return;
        }
 
        printf("running on %s\n", named_os_uname());
-       printf("built by %s with %s\n", named_g_builder, named_g_configargs);
+       printf("built by %s with %s\n", PACKAGE_BUILDER, PACKAGE_CONFIGARGS);
 #ifdef __clang__
        printf("compiled by CLANG %s\n", __VERSION__);
 #else /* ifdef __clang__ */
@@ -1049,9 +1048,8 @@ setup(void) {
 
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
-                     "starting %s %s%s%s <id:%s>", named_g_product,
-                     named_g_version, *named_g_description ? " " : "",
-                     named_g_description, named_g_srcid);
+                     "starting %s%s <id:%s>", PACKAGE_STRING,
+                     PACKAGE_DESCRIPTION, PACKAGE_SRCID);
 
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "running on %s",
@@ -1059,7 +1057,7 @@ setup(void) {
 
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "built with %s",
-                     named_g_configargs);
+                     PACKAGE_CONFIGARGS);
 
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
@@ -1228,7 +1226,6 @@ setup(void) {
         */
        /* xxdb_init(); */
 
-#ifdef ISC_DLZ_DLOPEN
        /*
         * Register the DLZ "dlopen" driver.
         */
@@ -1237,7 +1234,6 @@ setup(void) {
                named_main_earlyfatal("dlz_dlopen_init() failed: %s",
                                      isc_result_totext(result));
        }
-#endif /* ifdef ISC_DLZ_DLOPEN */
 
 #if CONTRIB_DLZ
        /*
@@ -1321,12 +1317,10 @@ cleanup(void) {
         */
        dlz_drivers_clear();
 #endif /* ifdef CONTRIB_DLZ */
-#ifdef ISC_DLZ_DLOPEN
        /*
         * Unregister "dlopen" DLZ driver.
         */
        dlz_dlopen_clear();
-#endif /* ifdef ISC_DLZ_DLOPEN */
 
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, "exiting");
@@ -1454,10 +1448,11 @@ main(int argc, char *argv[]) {
         */
        strlcat(version,
 #if defined(NO_VERSION_DATE) || !defined(__DATE__)
-               "named version: BIND " VERSION " <" SRCID ">",
-#else  /* if defined(NO_VERSION_DATE) || !defined(__DATE__) */
-               "named version: BIND " VERSION " <" SRCID "> (" __DATE__ ")",
-#endif /* if defined(NO_VERSION_DATE) || !defined(__DATE__) */
+               "named version: BIND " PACKAGE_VERSION " <" PACKAGE_SRCID ">",
+#else
+               "named version: BIND " PACKAGE_VERSION " <" PACKAGE_SRCID
+               "> (" __DATE__ ")",
+#endif
                sizeof(version));
        result = isc_file_progname(*argv, program_name, sizeof(program_name));
        if (result != ISC_R_SUCCESS) {
index 3c4f8cf9a6a65f4c5ca6e6df371f5033bd667d9e..c1851eded81f3a7a0b34dde54429da562a0204e4 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <isc/aes.h>
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/commandline.h>
 #include <isc/dir.h>
@@ -381,9 +382,8 @@ const char *empty_zones[] = {
        NULL
 };
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(named_server_t *server, const char *msg,
-      isc_result_t result) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(named_server_t *server, const char *msg, isc_result_t result);
 
 static void
 named_server_reload(isc_task_t *task, isc_event_t *event);
@@ -1633,7 +1633,6 @@ cleanup:
        return (result);
 }
 
-#ifdef HAVE_DLOPEN
 static isc_result_t
 configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx,
                const dns_dyndbctx_t *dctx) {
@@ -1660,7 +1659,6 @@ configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx,
        }
        return (result);
 }
-#endif /* ifdef HAVE_DLOPEN */
 
 static isc_result_t
 disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) {
@@ -3760,7 +3758,7 @@ configure_dnstap(const cfg_obj_t **maps, dns_view_t *view) {
        result = named_config_get(maps, "dnstap-version", &obj);
        if (result != ISC_R_SUCCESS) {
                /* not specified; use the product and version */
-               dns_dt_setversion(named_g_server->dtenv, PRODUCT " " VERSION);
+               dns_dt_setversion(named_g_server->dtenv, PACKAGE_STRING);
        } else if (result == ISC_R_SUCCESS && !cfg_obj_isvoid(obj)) {
                /* Quoted string */
                dns_dt_setversion(named_g_server->dtenv, cfg_obj_asstring(obj));
@@ -3817,7 +3815,6 @@ create_mapped_acl(void) {
        return (result);
 }
 
-#ifdef HAVE_DLOPEN
 /*%
  * A callback for the cfg_pluginlist_foreach() call in configure_view() below.
  * If registering any plugin fails, registering subsequent ones is not
@@ -3855,11 +3852,10 @@ register_one_plugin(const cfg_obj_t *config, const cfg_obj_t *obj,
 
        return (result);
 }
-#endif /* ifdef HAVE_DLOPEN */
 
 /*
- * Configure 'view' according to 'vconfig', taking defaults from 'config'
- * where values are missing in 'vconfig'.
+ * Configure 'view' according to 'vconfig', taking defaults from
+ * 'config' where values are missing in 'vconfig'.
  *
  * When configuring the default view, 'vconfig' will be NULL and the
  * global defaults in 'config' used exclusively.
@@ -5412,7 +5408,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
                (void)cfg_map_get(config, "dyndb", &dyndb_list);
        }
 
-#ifdef HAVE_DLOPEN
        for (element = cfg_list_first(dyndb_list); element != NULL;
             element = cfg_list_next(element))
        {
@@ -5428,7 +5423,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
 
                CHECK(configure_dyndb(dyndb, mctx, dctx));
        }
-#endif /* ifdef HAVE_DLOPEN */
 
        /*
         * Load plugins.
@@ -5440,7 +5434,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
                (void)cfg_map_get(config, "plugin", &plugin_list);
        }
 
-#ifdef HAVE_DLOPEN
        if (plugin_list != NULL) {
                INSIST(view->hooktable == NULL);
                CHECK(ns_hooktable_create(view->mctx,
@@ -5453,7 +5446,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
                CHECK(cfg_pluginlist_foreach(config, plugin_list, named_g_lctx,
                                             register_one_plugin, view));
        }
-#endif /* ifdef HAVE_DLOPEN */
 
        /*
         * Setup automatic empty zones.  If recursion is off then
@@ -11744,10 +11736,9 @@ named_server_status(named_server_t *server, isc_buffer_t **text) {
        isc_time_formathttptimestamp(&named_g_configtime, configtime,
                                     sizeof(configtime));
 
-       snprintf(line, sizeof(line), "version: %s %s%s%s <id:%s>%s%s%s\n",
-                named_g_product, named_g_version,
-                (*named_g_description != '\0') ? " " : "", named_g_description,
-                named_g_srcid, ob, alt, cb);
+       snprintf(line, sizeof(line), "version: %s%s <id:%s>%s%s%s\n",
+                PACKAGE_STRING, PACKAGE_DESCRIPTION, PACKAGE_SRCID, ob, alt,
+                cb);
        CHECK(putstr(text, line));
 
        result = named_os_gethostname(hostname, sizeof(hostname));
index 25bec658bf1437ae9159922030d77edbba0cfb59..b702915adaf3647f0b07552644bd716d3f0e9b2b 100644 (file)
@@ -52,7 +52,7 @@
 #define ISC_XMLCHAR (const xmlChar *)
 #endif /* HAVE_LIBXML2 */
 
-#include "bind9.xsl.h"
+#include "xsl_p.h"
 
 struct named_statschannel {
        /* Unlocked */
@@ -1988,7 +1988,7 @@ generatexml(named_server_t *server, uint32_t flags, int *buflen,
        TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR nowstr));
        TRY0(xmlTextWriterEndElement(writer)); /* current-time */
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "version"));
-       TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR named_g_version));
+       TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR PACKAGE_VERSION));
        TRY0(xmlTextWriterEndElement(writer)); /* version */
 
        if ((flags & STATS_XML_SERVER) != 0) {
@@ -2825,7 +2825,7 @@ generatejson(named_server_t *server, size_t *msglen, const char **msg,
        obj = json_object_new_string(nowstr);
        CHECKMEM(obj);
        json_object_object_add(bindstats, "current-time", obj);
-       obj = json_object_new_string(named_g_version);
+       obj = json_object_new_string(PACKAGE_VERSION);
        CHECKMEM(obj);
        json_object_object_add(bindstats, "version", obj);
 
@@ -3472,6 +3472,7 @@ render_xsl(const char *url, isc_httpdurl_t *urlinfo, const char *querystring,
           isc_httpdfree_t **freecb, void **freecb_args) {
        isc_result_t result;
        char *_headers = NULL;
+       char *p;
 
        UNUSED(url);
        UNUSED(querystring);
@@ -3530,7 +3531,8 @@ render_xsl(const char *url, isc_httpdurl_t *urlinfo, const char *querystring,
 send:
        *retcode = 200;
        *retmsg = "OK";
-       isc_buffer_reinit(b, xslmsg, strlen(xslmsg));
+       DE_CONST(xslmsg, p);
+       isc_buffer_reinit(b, p, strlen(xslmsg));
        isc_buffer_add(b, strlen(xslmsg));
 end:
        free(_headers);
index 5b0e7a55072a61415dd84f3feb3e90884eb399be..605055f66ad9f86b87aec23c58502db461a7c6db 100644 (file)
  */
 
 #include <inttypes.h>
+#include <ltdl.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif /* if HAVE_DLFCN_H */
 
 #include <isc/mem.h>
 #include <isc/print.h>
@@ -30,7 +28,6 @@
 #include <dlz/dlz_dlopen_driver.h>
 #include <named/globals.h>
 
-#ifdef ISC_DLZ_DLOPEN
 static dns_sdlzimplementation_t *dlz_dlopen = NULL;
 
 typedef struct dlopen_data {
@@ -183,13 +180,21 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
  */
 static void *
 dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) {
-       void *ptr = dlsym(cd->dl_handle, symbol);
-       if (ptr == NULL && mandatory) {
-               dlopen_log(ISC_LOG_ERROR,
-                          "dlz_dlopen: library '%s' is missing "
-                          "required symbol '%s'",
-                          cd->dl_path, symbol);
+       void *ptr = lt_dlsym((lt_dlhandle)cd->dl_handle, symbol);
+       if (ptr == NULL) {
+               const char *errmsg = lt_dlerror();
+               if (errmsg == NULL) {
+                       errmsg = "returned function pointer is NULL";
+               }
+               if (mandatory) {
+                       dlopen_log(ISC_LOG_ERROR,
+                                  "dlz_dlopen: library '%s' is missing "
+                                  "required symbol '%s': %s",
+                                  cd->dl_path, symbol, errmsg);
+               }
        }
+       /* Cleanup any errors */
+       (void)lt_dlerror();
        return (ptr);
 }
 
@@ -202,7 +207,6 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
        dlopen_data_t *cd;
        isc_mem_t *mctx = NULL;
        isc_result_t result = ISC_R_FAILURE;
-       int dlopen_flags = 0;
 
        UNUSED(driverarg);
 
@@ -214,45 +218,33 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
                return (ISC_R_FAILURE);
        }
 
-       isc_mem_create(&mctx);
+       if (lt_dlinit() != 0) {
+               return (ISC_R_FAILURE);
+       }
 
+       isc_mem_create(&mctx);
        cd = isc_mem_get(mctx, sizeof(*cd));
        memset(cd, 0, sizeof(*cd));
 
        cd->mctx = mctx;
 
        cd->dl_path = isc_mem_strdup(cd->mctx, argv[1]);
-
        cd->dlzname = isc_mem_strdup(cd->mctx, dlzname);
 
        /* Initialize the lock */
        isc_mutex_init(&cd->lock);
 
-       /* Open the library */
-       dlopen_flags = RTLD_NOW | RTLD_GLOBAL;
-
-#if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__
-       /*
-        * If RTLD_DEEPBIND is available then use it. This can avoid
-        * issues with a module using a different version of a system
-        * library than one that bind9 uses. For example, bind9 may link
-        * to MIT kerberos, but the module may use Heimdal. If we don't
-        * use RTLD_DEEPBIND then we could end up with Heimdal functions
-        * calling MIT functions, which leads to bizarre results (usually
-        * a segfault).
-        */
-       dlopen_flags |= RTLD_DEEPBIND;
-#endif /* if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__ */
-
-       cd->dl_handle = dlopen(cd->dl_path, dlopen_flags);
+       cd->dl_handle = lt_dlopenext(cd->dl_path);
        if (cd->dl_handle == NULL) {
                dlopen_log(ISC_LOG_ERROR,
-                          "dlz_dlopen failed to open library '%s' - %s",
-                          cd->dl_path, dlerror());
+                          "dlz_dlopen failed to open library '%s': %s",
+                          cd->dl_path, lt_dlerror());
                result = ISC_R_FAILURE;
                goto failed;
        }
 
+       (void)lt_dlerror();
+
        /* Find the symbols */
        cd->dlz_version =
                (dlz_dlopen_version_t *)dl_load_symbol(cd, "dlz_version", true);
@@ -330,20 +322,14 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
 
 failed:
        dlopen_log(ISC_LOG_ERROR, "dlz_dlopen of '%s' failed", dlzname);
-       if (cd->dl_path != NULL) {
-               isc_mem_free(mctx, cd->dl_path);
-       }
-       if (cd->dlzname != NULL) {
-               isc_mem_free(mctx, cd->dlzname);
-       }
-       if (dlopen_flags != 0) {
-               isc_mutex_destroy(&cd->lock);
-       }
-#ifdef HAVE_DLCLOSE
+
+       isc_mem_free(mctx, cd->dl_path);
+       isc_mem_free(mctx, cd->dlzname);
+
+       isc_mutex_destroy(&cd->lock);
        if (cd->dl_handle) {
-               dlclose(cd->dl_handle);
+               (void)lt_dlclose(cd->dl_handle);
        }
-#endif /* ifdef HAVE_DLCLOSE */
        isc_mem_put(mctx, cd, sizeof(*cd));
        isc_mem_destroy(&mctx);
        return (result);
@@ -372,11 +358,9 @@ dlopen_dlz_destroy(void *driverarg, void *dbdata) {
                isc_mem_free(cd->mctx, cd->dlzname);
        }
 
-#ifdef HAVE_DLCLOSE
        if (cd->dl_handle) {
-               dlclose(cd->dl_handle);
+               lt_dlclose(cd->dl_handle);
        }
-#endif /* ifdef HAVE_DLCLOSE */
 
        isc_mutex_destroy(&cd->lock);
 
@@ -547,17 +531,12 @@ static dns_sdlzmethods_t dlz_dlopen_methods = {
        dlopen_dlz_configure,    dlopen_dlz_ssumatch,   dlopen_dlz_addrdataset,
        dlopen_dlz_subrdataset,  dlopen_dlz_delrdataset
 };
-#endif /* ifdef ISC_DLZ_DLOPEN */
 
 /*
  * Register driver with BIND
  */
 isc_result_t
 dlz_dlopen_init(isc_mem_t *mctx) {
-#ifndef ISC_DLZ_DLOPEN
-       UNUSED(mctx);
-       return (ISC_R_NOTIMPLEMENTED);
-#else  /* ifndef ISC_DLZ_DLOPEN */
        isc_result_t result;
 
        dlopen_log(2, "Registering DLZ_dlopen driver");
@@ -576,7 +555,6 @@ dlz_dlopen_init(isc_mem_t *mctx) {
        }
 
        return (result);
-#endif /* ifndef ISC_DLZ_DLOPEN */
 }
 
 /*
@@ -584,10 +562,8 @@ dlz_dlopen_init(isc_mem_t *mctx) {
  */
 void
 dlz_dlopen_clear(void) {
-#ifdef ISC_DLZ_DLOPEN
        dlopen_log(2, "Unregistering DLZ_dlopen driver");
        if (dlz_dlopen != NULL) {
                dns_sdlzunregister(&dlz_dlopen);
        }
-#endif /* ifdef ISC_DLZ_DLOPEN */
 }
index 1a9c85e14ae2c0a492a25be00706e8b149e6fcec..cf18fc33189ac6fd1d20adf6fecc053c45874e28 100644 (file)
@@ -28,7 +28,6 @@
 #include <dlz/dlz_dlopen_driver.h>
 #include <named/globals.h>
 
-#ifdef ISC_DLZ_DLOPEN
 static dns_sdlzimplementation_t *dlz_dlopen = NULL;
 
 typedef struct dlopen_data {
@@ -530,17 +529,12 @@ static dns_sdlzmethods_t dlz_dlopen_methods = {
        dlopen_dlz_configure,    dlopen_dlz_ssumatch,   dlopen_dlz_addrdataset,
        dlopen_dlz_subrdataset,  dlopen_dlz_delrdataset
 };
-#endif /* ifdef ISC_DLZ_DLOPEN */
 
 /*
  * Register driver with BIND
  */
 isc_result_t
 dlz_dlopen_init(isc_mem_t *mctx) {
-#ifndef ISC_DLZ_DLOPEN
-       UNUSED(mctx);
-       return (ISC_R_NOTIMPLEMENTED);
-#else  /* ifndef ISC_DLZ_DLOPEN */
        isc_result_t result;
 
        dlopen_log(2, "Registering DLZ_dlopen driver");
@@ -559,7 +553,6 @@ dlz_dlopen_init(isc_mem_t *mctx) {
        }
 
        return (result);
-#endif /* ifndef ISC_DLZ_DLOPEN */
 }
 
 /*
@@ -567,10 +560,8 @@ dlz_dlopen_init(isc_mem_t *mctx) {
  */
 void
 dlz_dlopen_clear(void) {
-#ifdef ISC_DLZ_DLOPEN
        dlopen_log(2, "Unregistering DLZ_dlopen driver");
        if (dlz_dlopen != NULL) {
                dns_sdlzunregister(&dlz_dlopen);
        }
-#endif /* ifdef ISC_DLZ_DLOPEN */
 }
index 8fe6f5b32eeaa39614c4dfb72a67be662f0ad737..42c980170a78aaf9bc0bf07cf9e2fb9622c3fd41 100644 (file)
 #define BIND_SERVICE_NAME "named"
 
 void
-     ntservice_init();
+     ntservice_init(void);
 void UpdateSCM(DWORD);
 void
 ServiceControl(DWORD dwCtrlCode);
 void
-ntservice_shutdown();
+ntservice_shutdown(void);
 BOOL
-ntservice_isservice();
+ntservice_isservice(void);
 #endif /* ifndef NTSERVICE_H */
index 2aa9b812c920e10b9d0d51df2979ebae51e06d3e..d89a746c59ed3914b3af4827f9948d194224526e 100644 (file)
@@ -50,8 +50,8 @@ ntservice_init(void) {
                }
                UpdateSCM(SERVICE_RUNNING);
        } else {
-               strlcpy(ConsoleTitle, "BIND Version ", sizeof(ConsoleTitle));
-               strlcat(ConsoleTitle, VERSION, sizeof(ConsoleTitle));
+               snprintf(ConsoleTitle, sizeof(ConsoleTitle), "%s Version %s",
+                        PACKAGE_NAME, PACKAGE_VERSION);
                SetConsoleTitle(ConsoleTitle);
        }
 }
similarity index 64%
rename from lib/ns/version.c
rename to bin/named/xsl_p.h
index 7df021564c9773e8c5d1d7e38c3eff2dcdfafe16..d4d8a8ce3840b2f7c904bdd2ca44d4553598d349 100644 (file)
@@ -9,12 +9,6 @@
  * information regarding copyright ownership.
  */
 
-/*! \file */
+#pragma once
 
-#include <ns/version.h>
-
-const char ns_version[] = VERSION;
-
-const unsigned int ns_libinterface = LIBINTERFACE;
-const unsigned int ns_librevision = LIBREVISION;
-const unsigned int ns_libage = LIBAGE;
+extern const char xslmsg[];
diff --git a/bin/nsupdate/Makefile.am b/bin/nsupdate/Makefile.am
new file mode 100644 (file)
index 0000000..8e2cbaa
--- /dev/null
@@ -0,0 +1,25 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBIRS_CFLAGS)        \
+       $(LIBBIND9_CFLAGS)      \
+       $(GSSAPI_CFLAGS)        \
+       $(KRB5_CFLAGS)
+
+AM_CPPFLAGS += \
+       -DSESSION_KEYFILE=\"${localstatedir}/run/named/session.key\"
+
+LDADD =                                \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBISCCFG_LIBS)       \
+       $(LIBIRS_LIBS)          \
+       $(LIBBIND9_LIBS)        \
+       $(READLINE_LIB)         \
+       $(GSSAPI_LIBS)          \
+       $(KRB5_LIBS)
+
+bin_PROGRAMS = nsupdate
index ce3798968dd78420e7f5b4ccff20df7838cb932f..549df9979c21f3748de9bce98d264cc35f40ba30 100644 (file)
@@ -20,6 +20,7 @@
 #include <unistd.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 
 #include <irs/resconf.h>
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
 #include <dst/gssapi.h>
-#ifdef WIN32
+
+#if HAVE_KRB5_KRB5_H
 #include <krb5/krb5.h>
-#else /* ifdef WIN32 */
-#include ISC_PLATFORM_KRB5HEADER
-#endif /* ifdef WIN32 */
-#endif /* ifdef GSSAPI */
+#elif HAVE_KRB5_H
+#include <krb5.h>
+#endif
+
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+
+#endif /* HAVE_GSSAPI */
+
 #include <bind9/getaddresses.h>
 
 #if defined(HAVE_READLINE)
@@ -189,9 +199,8 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg,
 static void
 send_update(dns_name_t *zonename, isc_sockaddr_t *master);
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 static void
 debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
@@ -199,7 +208,7 @@ debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 static void
 ddebug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
 static dns_fixedname_t fkname;
 static isc_sockaddr_t *kserver = NULL;
 static char *realm = NULL;
@@ -212,7 +221,7 @@ typedef struct nsu_gssinfo {
 } nsu_gssinfo_t;
 
 static void
-failed_gssrequest();
+failed_gssrequest(void);
 static void
 start_gssrequest(dns_name_t *master);
 static void
@@ -220,7 +229,7 @@ send_gssrequest(isc_sockaddr_t *destaddr, dns_message_t *msg,
                dns_request_t **request, gss_ctx_id_t context);
 static void
 recvgss(isc_task_t *task, isc_event_t *event);
-#endif /* GSSAPI */
+#endif /* HAVE_GSSAPI */
 
 static void
 error(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
@@ -1005,7 +1014,7 @@ get_addresses(char *host, in_port_t port, isc_sockaddr_t *sockaddr,
 
 static void
 version(void) {
-       fputs("nsupdate " VERSION "\n", stderr);
+       fprintf(stderr, "nsupdate %s\n", PACKAGE_VERSION);
 }
 
 #define PARSE_ARGS_FMT "46dDML:y:ghilovk:p:Pr:R::t:Tu:V"
@@ -1228,13 +1237,13 @@ parse_args(int argc, char **argv) {
                exit(1);
        }
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
        if (usegsstsig && (keyfile != NULL || keystr != NULL)) {
                fprintf(stderr, "%s: cannot specify -g with -k or -y\n",
                        argv[0]);
                exit(1);
        }
-#else  /* ifdef GSSAPI */
+#else  /* HAVE_GSSAPI */
        if (usegsstsig) {
                fprintf(stderr,
                        "%s: cannot specify -g  or -o, "
@@ -1242,7 +1251,7 @@ parse_args(int argc, char **argv) {
                        argv[0]);
                exit(1);
        }
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 
        if (argv[isc_commandline_index] != NULL) {
                if (strcmp(argv[isc_commandline_index], "-") == 0) {
@@ -1698,7 +1707,7 @@ evaluate_zone(char *cmdline) {
 
 static uint16_t
 evaluate_realm(char *cmdline) {
-#ifdef GSSAPI
+#if HAVE_GSSAPI
        char *word;
        char buf[1024];
        int n;
@@ -1720,10 +1729,10 @@ evaluate_realm(char *cmdline) {
        }
        realm = isc_mem_strdup(gmctx, buf);
        return (STATUS_MORE);
-#else  /* ifdef GSSAPI */
+#else  /* HAVE_GSSAPI */
        UNUSED(cmdline);
        return (STATUS_SYNTAX);
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 }
 
 static uint16_t
@@ -2201,25 +2210,25 @@ do_next_command(char *cmdline) {
                return (evaluate_checknames(cmdline));
        }
        if (strcasecmp(word, "gsstsig") == 0) {
-#ifdef GSSAPI
+#if HAVE_GSSAPI
                usegsstsig = true;
                use_win2k_gsstsig = false;
-#else  /* ifdef GSSAPI */
+#else  /* HAVE_GSSAPI */
                fprintf(stderr, "gsstsig not supported\n");
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
                return (STATUS_MORE);
        }
        if (strcasecmp(word, "oldgsstsig") == 0) {
-#ifdef GSSAPI
+#if HAVE_GSSAPI
                usegsstsig = true;
                use_win2k_gsstsig = true;
-#else  /* ifdef GSSAPI */
+#else  /* HAVE_GSSAPI */
                fprintf(stderr, "gsstsig not supported\n");
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
                return (STATUS_MORE);
        }
        if (strcasecmp(word, "help") == 0) {
-               fprintf(stdout, "nsupdate " VERSION ":\n"
+               fprintf(stdout, "nsupdate " PACKAGE_VERSION ":\n"
                                "local address [port]      (set local "
                                "resolver)\n"
                                "server address [port]     (set master server "
@@ -2261,7 +2270,7 @@ do_next_command(char *cmdline) {
                return (STATUS_MORE);
        }
        if (strcasecmp(word, "version") == 0) {
-               fprintf(stdout, "nsupdate " VERSION "\n");
+               fprintf(stdout, "nsupdate " PACKAGE_VERSION "\n");
                return (STATUS_MORE);
        }
        fprintf(stderr, "incorrect section name: %s\n", word);
@@ -2770,7 +2779,7 @@ lookforsoa:
        }
        dns_rdata_freestruct(&soa);
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
        if (usegsstsig) {
                dns_name_init(&tmpzonename, NULL);
                dns_name_dup(zname, gmctx, &tmpzonename);
@@ -2781,10 +2790,10 @@ lookforsoa:
                send_update(zname, &master_servers[master_inuse]);
                setzoneclass(dns_rdataclass_none);
        }
-#else  /* ifdef GSSAPI */
+#else  /* HAVE_GSSAPI */
        send_update(zname, &master_servers[master_inuse]);
        setzoneclass(dns_rdataclass_none);
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 
        dns_message_destroy(&soaquery);
        dns_request_destroy(&request);
@@ -2838,7 +2847,7 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg,
        requests++;
 }
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
 
 /*
  * Get the realm from the users kerberos ticket if possible
@@ -2893,7 +2902,7 @@ get_ticket_realm(isc_mem_t *mctx) {
 }
 
 static void
-failed_gssrequest() {
+failed_gssrequest(void) {
        seenerror = true;
 
        dns_name_free(&tmpzonename, gmctx);
@@ -3199,7 +3208,7 @@ done:
        dns_message_destroy(&rcvmsg);
        ddebug("Out of recvgss");
 }
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 
 static void
 start_update(void) {
@@ -3298,7 +3307,7 @@ cleanup(void) {
                dns_message_destroy(&answer);
        }
 
-#ifdef GSSAPI
+#if HAVE_GSSAPI
        if (tsigkey != NULL) {
                ddebug("detach tsigkey x%p", tsigkey);
                dns_tsigkey_detach(&tsigkey);
@@ -3321,7 +3330,7 @@ cleanup(void) {
        if (dns_name_dynamic(&restart_master)) {
                dns_name_free(&restart_master, gmctx);
        }
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 
        if (sig0key != NULL) {
                dst_key_free(&sig0key);
diff --git a/bin/pkcs11/Makefile.am b/bin/pkcs11/Makefile.am
new file mode 100644 (file)
index 0000000..1bcd014
--- /dev/null
@@ -0,0 +1,13 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)
+
+LDADD =                                \
+       $(LIBISC_LIBS)
+
+bin_PROGRAMS =                 \
+       pkcs11-list             \
+       pkcs11-destroy          \
+       pkcs11-keygen           \
+       pkcs11-tokens
diff --git a/bin/plugins/Makefile.am b/bin/plugins/Makefile.am
new file mode 100644 (file)
index 0000000..c29b261
--- /dev/null
@@ -0,0 +1,12 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBNS_CFLAGS)         \
+       $(LIBISCCFG_CFLAGS)
+
+pkglib_LTLIBRARIES = filter-aaaa.la
+
+filter_aaaa_la_SOURCES = filter-aaaa.c
+filter_aaaa_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
index e787b434712600c655a7899ae7791fda3b3e75ff..d34e0754ea03f8779c93e1345b36388b88d40f73 100644 (file)
 
 /*! \file */
 
+/* aliases for the exported symbols */
+
+#define plugin_destroy filter_aaaa_LTX_plugin_destroy
+#define plugin_register filter_aaaa_LTX_plugin_register
+#define plugin_version filter_aaaa_LTX_plugin_version
+#define plugin_check   filter_aaaa_LTX_plugin_check
+
 #include <inttypes.h>
 #include <stdbool.h>
 #include <string.h>
diff --git a/bin/rndc/Makefile.am b/bin/rndc/Makefile.am
new file mode 100644 (file)
index 0000000..a668522
--- /dev/null
@@ -0,0 +1,26 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBISCCC_CFLAGS)      \
+       $(LIBBIND9_CFLAGS)
+
+AM_CPPFLAGS +=                                         \
+       -DRNDC_CONFFILE=\"${sysconfdir}/rndc.conf\"     \
+       -DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\"
+
+sbin_PROGRAMS = rndc
+
+rndc_SOURCES = \
+       rndc.c  \
+       util.c  \
+       util.h
+
+rndc_LDADD =                   \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBISCCC_LIBS)        \
+       $(LIBISCCFG_LIBS)       \
+       $(LIBBIND9_LIBS)
index f238b1d58407091a3d5c7081511a5be31dc5115a..ba91747657cf005b063f3811a4a03bdc04475776 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <isc/app.h>
 #include <isc/atomic.h>
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/file.h>
@@ -59,7 +60,7 @@ bool verbose;
 
 static const char *admin_conffile;
 static const char *admin_keyfile;
-static const char *version = VERSION;
+static const char *version = PACKAGE_VERSION;
 static const char *servername = NULL;
 static isc_sockaddr_t serveraddrs[SERVERADDRS];
 static isc_sockaddr_t local4, local6;
@@ -89,8 +90,8 @@ static bool showresult = false;
 static void
 rndc_startconnect(isc_sockaddr_t *addr, isc_task_t *task);
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(int status) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(int status);
 
 static void
 usage(int status) {
index ec9b181780c880153a40922ae1ff511687a903cf..21cc8de1e9ed57a7b2259fa0d1d68f6cfdbfea1c 100644 (file)
@@ -14,6 +14,7 @@
 
 /*! \file */
 
+#include <isc/attributes.h>
 #include <isc/formatcheck.h>
 #include <isc/lang.h>
 #include <isc/platform.h>
@@ -35,9 +36,8 @@ ISC_LANG_BEGINDECLS
 void
 notify(const char *fmt, ...) ISC_FORMAT_PRINTF(1, 2);
 
-ISC_PLATFORM_NORETURN_PRE void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 ISC_LANG_ENDDECLS
 
index 3b0c4b29cc7717d29f56e33fd661dd4f28201a08..7ec87dd31a98d09025f25caa51fc59f43290593e 100644 (file)
@@ -9,4 +9,3 @@ dlopen
 keycreate
 keydelete
 gssapi_krb
-makejournal
diff --git a/bin/tests/Makefile.am b/bin/tests/Makefile.am
new file mode 100644 (file)
index 0000000..d4008c0
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = system
diff --git a/bin/tests/bigtest/README b/bin/tests/bigtest/README
deleted file mode 100644 (file)
index 0daea5c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-
-See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
-
-       bash buildzones.sh < zones      # creates setup, run, servers/* master/*
-                                       # named.conf
-       sudo sh setup                   # configure interfaces
-       sh run                          # setup
-
-       ../named/named [-g] -c named.conf
-
-       sh tests.sh < zones
-
-       sudo sh teardown                # teardown interfaces
-
-The test server can controlled with
-
-       rndc -k rndc.key -s 127.127.0.0 -p 5300 
diff --git a/bin/tests/bigtest/buildzones.sh b/bin/tests/bigtest/buildzones.sh
deleted file mode 100644 (file)
index f8d531a..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. ../conf.sh
-
-addr=127.127.0.0
-ttl=300
-named=${NAMED}
-keygen=${KEYGEN}
-dsfromkey=${DSFROMKEY}
-
-nextaddr() {
-       OLDIF="$IFS"
-       IFS="${IFS}."
-       set $1
-       IFS="$OLDIFS"
-       _a=$1 _b=$2 _c=$3 _d=$4
-       _d=$(($_d + 1))
-       case $_d in
-       256) _c=$(($_c + 1)); _d=0;;
-       esac
-       case $_c in
-       256) _b=$(($_b + 1)); _c=0;;
-       esac
-       echo $_a.$_b.$_c.$_d
-}
-
-parent() {
-       OLDIF="$IFS"
-       IFS="${IFS}."
-       set $1
-       IFS="$OLDIFS"
-       shift
-       while [ $# -ne 0 ]
-       do
-               printf %s ${1}
-               shift
-               printf %s ${1:+.}
-               
-       done
-}
-
-blackhole() {
-       echo 'options {'
-       echo '  port 5300;'
-       echo "  listen-on { $1; };"
-       echo "  query-source $1;"
-       echo "  notify-source $1;"
-       echo "  transfer-source $1;"
-       echo '  key-directory "keys";'
-       echo "  recursion ${2:-no};"
-       echo '  pid-file "pids/'"${addr}"'.pid";'
-       echo '  blackhole { 127.127.0.0; };'
-       echo '};'
-}
-
-refuse() {
-       echo 'options {'
-       echo '  port 5300;'
-       echo "  listen-on { $1; };"
-       echo "  query-source $1;"
-       echo "  notify-source $1;"
-       echo "  transfer-source $1;"
-       echo '  key-directory "keys";'
-       echo "  recursion ${2:-no};"
-       echo '  pid-file "pids/'"${addr}"'.pid";'
-       echo '  allow-query { !127.127.0.0; any; };'
-       echo '};'
-}
-
-options() {
-       echo 'options {'
-       echo '  port 5300;'
-       echo "  listen-on { $1; };"
-       echo "  query-source $1;"
-       echo "  notify-source $1;"
-       echo "  transfer-source $1;"
-       echo '  key-directory "keys";'
-       echo "  recursion ${2:-no};"
-       echo '  pid-file "pids/'"${addr}"'.pid";'
-       echo '};'
-}
-
-controls() {
-       echo 'include "rndc.key";'
-       echo "controls { inet $addr port 9953 allow { any; } keys { "rndc-key"; }; };"
-}
-
-delay() {
-       _s=$1
-       OLDIF="$IFS"
-       IFS="${IFS}/"
-       set ${2:-.}
-       IFS="$OLDIFS"
-
-       case $1 in
-       .) _d=;;
-       *) _d=$1;;
-       esac
-       case $_s in
-       1) echo -T delay=${_d:-100};;
-       2) echo -T delay=${2:-50};;
-       3) echo -T delay=${3:-150};;
-       4) echo -T delay=${4:-250};;
-       5) echo -T delay=${5:-125};;
-       6) echo -T delay=${6:-25};;
-       7) echo -T delay=${7:-75};;
-       8) echo -T delay=${8:-125};;
-       9) echo -T delay=${9:-10};;
-       10) echo -T delay=${10:-40};;
-       11) echo -T delay=${11:-80};;
-       12) echo -T delay=${12:-90};;
-       *) echo -T delay=50;;
-       esac
-}
-
-trusted-keys () {
-       awk '$3 == "DNSKEY" {
-               b = ""; for (i=7; i <= NF; i++) { b = b $i; };
-               print "trusted-keys { \""$1"\"",$4,$5,$6,"\""b"\"; };" };'
-}
-
-signed-zone () {
-       echo "zone "'"'"${1:-.}"'"'" {"
-       echo "  type master;"
-       echo "  file "'"'"master/${2}.db"'"'";"
-       echo "  auto-dnssec maintain;"
-       echo "  allow-update { any; };"
-       echo "};"
-}
-
-unsigned-zone () {
-       echo "zone "'"'"${1:-.}"'"'" {"
-       echo "  type master;"
-       echo "  file "'"'"master/${2}.db"'"'";"
-       echo "};"
-}
-
-slave-zone () {
-       echo "zone "'"'"${zone:-.}"'"'" {"
-       echo "  type slave;"
-       echo "  masters { ${master}; };"
-       echo "};"
-}
-
-rm -rf servers master keys setup teardown run 
-mkdir -p servers
-mkdir -p master
-mkdir -p keys
-
-echo "ifconfig lo0 $addr netmask 0xffffffff alias" >> setup
-echo "ifconfig lo0 $addr -alias" >> teardown
-controls $addr > named.conf
-options $addr yes >> named.conf
-echo 'zone "." { type hint; file "master/hint.db"; };' >> named.conf
-
-while read zone servers nsfmt signed delay blackhole refuse flags
-do
-       i=1
-       case "${zone}" in
-       .) file=root zone=;;
-       *) file="$zone";;
-       esac
-       if [ "${zone}" != "" ] ; then
-               p=$(parent $zone)
-               case "${p}" in
-               "") p=root;;
-               esac
-       else
-               p=hint
-       fi
-       #echo "zone='${zone}' parent='${p}'"
-       addr=$(nextaddr $addr)
-       ns=$(printf "$nsfmt" ${i} "${zone}")
-       d=$(delay $i ${delay:-.})
-
-       echo "${zone}. ${ttl} soa ${ns}. hostmaster.${zone}${zone:+.} 1 3600 1200 604800 1200" >> master/${file}.db
-       echo "${zone}. ${ttl} ns ${ns}." >> master/${file}.db
-       echo "${ns}. ${ttl} a ${addr}" >> master/${file}.db
-       echo "${zone}. ${ttl} ns ${ns}." >> master/${p}.db
-       echo "${ns}. ${ttl} a ${addr}" >> master/${p}.db
-       if [ $signed = "S" ]; then
-               kskkey=`${keygen} -K keys -f KSK ${zone:-.}`
-               zskkey=`${keygen} -K keys ${zone:-.}`
-               if [ "${zone}" != "" ] ; then
-                       ${dsfromkey} -T ${ttl} keys/${kskkey}.key >> master/${p}.db
-               else
-                       trusted-keys <  keys/${kskkey}.key >> named.conf
-               fi
-       fi
-       echo "ifconfig lo0 $addr netmask 0xffffffff alias" >> setup
-       echo "ifconfig lo0 $addr -alias" >> teardown
-       echo "${named} -D bigtest -c servers/${addr}.conf $d $flags" >> run
-       options ${addr} > servers/${addr}.conf
-       case ${signed} in
-       S) signed-zone ${zone:-.} ${file} >> servers/${addr}.conf;;
-       P) unsigned-zone ${zone:-.} ${file} >> servers/${addr}.conf;;
-       *) echo ${signed}; exit 1;;
-       esac
-
-       # slave servers
-       while [ $i -lt $servers ]
-       do
-               master=$addr
-               i=$(($i + 1))
-               ns=$(printf "$nsfmt" ${i} "${zone}")
-               d=$(delay $i ${delay:-.})
-               addr=$(nextaddr $addr)
-               echo "${zone}. ${ttl} ns ${ns}." >> master/${file}.db
-               echo "${ns}. ${ttl} a ${addr}" >> master/${file}.db
-               echo "${zone}. ${ttl} ns ${ns}." >> master/${p}.db
-               echo "${ns}. ${ttl} a ${addr}" >> master/${p}.db
-               echo "ifconfig lo0 $addr netmask 0xffffffff alias" >> setup
-               echo "ifconfig lo0 $addr -alias" >> teardown
-               echo "${named} -D bigtest -c servers/${addr}.conf $d $flags" >> run
-               if [ $i = ${refuse:-.} ]
-               then
-                       refuse $addr > servers/${addr}.conf
-               elif [ $i = ${blackhole:-.} ]
-               then
-                       blackhole $addr > servers/${addr}.conf
-               else
-                       options $addr > servers/${addr}.conf
-               fi
-               slave-zone ${zone:-.} ${master} >> servers/${addr}.conf
-       done
-       if [ "${zone}" != "" ] ; then
-               echo "www.${zone}. ${ttl} a 127.0.0.1" >> master/${file}.db
-               echo "www.${zone}. ${ttl} aaaa ::1" >> master/${file}.db
-               echo "${zone}. ${ttl} mx 10 mail.${zone}." >> master/${file}.db
-               echo "mail.${zone}. ${ttl} a 127.0.0.1" >> master/${file}.db
-               echo "mail.${zone}. ${ttl} aaaa ::1" >> master/${file}.db
-               echo "*.big.${zone}. ${ttl} txt (" >> master/${file}.db
-               i=0
-               while [ $i -lt 150 ]
-               do
-                       echo "1234567890" >> master/${file}.db
-                       i=$(($i + 1))
-               done
-               echo ")" >> master/${file}.db
-               echo "*.medium.${zone}. ${ttl} txt (" >> master/${file}.db
-               i=0
-               while [ $i -lt 120 ]
-               do
-                       echo "1234567890" >> master/${file}.db
-                       i=$(($i + 1))
-               done
-               echo ")" >> master/${file}.db
-               echo "*.medium.${zone}. ${ttl} txt (" >> master/${file}.db
-               i=0
-               while [ $i -lt 120 ]
-               do
-                       echo "1234567890" >> master/${file}.db
-                       i=$(($i + 1))
-               done
-               echo ")" >> master/${file}.db
-       fi
-done
diff --git a/bin/tests/bigtest/rndc.key b/bin/tests/bigtest/rndc.key
deleted file mode 100644 (file)
index f279e14..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-key "rndc-key" {
-        algorithm hmac-md5;
-        secret "xxxxxxxxxxxxxxxxxxxxHg==";
-};
-
diff --git a/bin/tests/bigtest/tests.sh b/bin/tests/bigtest/tests.sh
deleted file mode 100644 (file)
index 7b3bd8f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-TOP=$( (cd ../../.. && pwd) )
-dig=${TOP}/bin/dig/dig
-
-cmd="${dig} -p 5300 @127.127.0.0 txt"
-inner() {
-       zone=$1 i=$2 to=$3
-       x=$i
-       dout=dig$x.out
-       tout=time$x.out
-       while [ $i -lt $to ]
-       do
-               case $zone in
-               .) zone=;;
-               esac
-               
-               (time -p $cmd $i.${sub}$zone > $dout ) 2> $tout
-               s=`sed -n '/real/s/[^0-9]*\([0-9]*\)\..*/\1/p' $tout`
-               case $s in
-               0);;
-               1) t1=`expr ${t1:-0} + 1`;;
-               2) t2=`expr ${t2:-0} + 1`;;
-               3) t3=`expr ${t3:-0} + 1`;;
-               *) echo $i `grep real $tout`;;
-               esac
-
-               grep "status: \(NXDOMAIN\|NOERROR\)" $dout > /dev/null || {
-                       echo $cmd $i.${sub}$zone
-                       cat $dout
-               }
-               i=`expr $i + 1`
-       done
-       if test ${t1:-0} -ne 0 -o ${t2:-0} -ne 0 -o ${t3:-0} -ne 0
-       then
-               echo "$x timeouts: t1=${t1:-0} t2=${t2:-0} t3=${t3:-0}"
-       fi
-}
-
-while read zone rest
-do
-       for sub in "" medium. big.
-       do
-               case $zone in
-               .) echo doing ${sub:-.};;
-               *) echo doing $sub$zone;;
-               esac
-               ( inner $zone 1 100) &
-               ( inner $zone 101 200) &
-               ( inner $zone 201 300) &
-               ( inner $zone 301 400) &
-               ( inner $zone 401 500) &
-               ( inner $zone 501 600) &
-               ( inner $zone 601 700) &
-               ( inner $zone 701 800) &
-               ( inner $zone 801 900) &
-               ( inner $zone 901 1000) &
-               ( inner $zone 1001 1100) &
-               ( inner $zone 1101 1200) &
-               ( inner $zone 1201 1300) &
-               ( inner $zone 1301 1400) &
-               ( inner $zone 1401 1500) &
-               ( inner $zone 1501 1600) &
-               ( inner $zone 1601 1700) &
-               wait
-       done
-done
diff --git a/bin/tests/bigtest/zones b/bin/tests/bigtest/zones
deleted file mode 100644 (file)
index 0bdcdfe..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-noedns-1.tld   1       ns%u.%s P . x x -T noedns
-dropedns-1.tld 1       ns%u.%s P . x x -T dropedns
-maxudp512-1.tld        1       ns%u.%s S . x x -T maxudp=512
-maxudp1460-1.tld       1       ns%u.%s S . x x -T maxudp=1460
-plain-1.tld    1       ns%u.%s S . x x
-noedns-3.tld   3       ns%u.%s P . 2 x -T noedns 
-dropedns-3.tld 3       ns%u.%s P . 2 x -T dropedns
-maxudp512-3.tld        3       ns%u.%s S . x x -T maxudp=512
-maxudp1460-3.tld       3       ns%u.%s S . x x -T maxudp=1460
-plain-3.tld    3       ns%u.%s S . x 3
-noedns-5.tld   5       ns%u.%s P . 3 x -T noedns
-dropedns-5.tld 5       ns%u.%s P . x x -T dropedns
-maxudp512-5.tld        5       ns%u.%s S . x x -T maxudp=512
-maxudp1460-5.tld       5       ns%u.%s S . x x -T maxudp=1460
-400ms-1.tld    5       ns%u.%s S 400/400/400/400/400 2 x
-plain-5.tld    5       ns%u.%s S . x x
-tld            12      ns%u.%s S . 5 8
-.              12      ns%u.root-servers.nil%s S . x x
diff --git a/bin/tests/optional/.gitignore b/bin/tests/optional/.gitignore
deleted file mode 100644 (file)
index 0d89a86..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/backtrace_test.dSYM/
-/backtrace_test0.dSYM/
-/nsecify
diff --git a/bin/tests/optional/Kchild.example.+005+33180.key b/bin/tests/optional/Kchild.example.+005+33180.key
deleted file mode 100644 (file)
index ab92a6a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-; This is a zone-signing key, keyid 33180, for child.example.
-; Created: 20181025104746 (Thu Oct 25 12:47:46 2018)
-; Publish: 20181025104746 (Thu Oct 25 12:47:46 2018)
-; Activate: 20181025104746 (Thu Oct 25 12:47:46 2018)
-child.example. IN DNSKEY 256 3 5 AwEAAb9eatC8ASzDnRApcZuxyBrvJRANRQjCXQ1FWK+8vEyXV5NIE9Km hKIV2wbq2tLBPfjNQz4BTJ9RmDINf1RayDlt6L+IQV1JCaDaMjd1zU3n SQK18Y7fMu0ww4AMKOnoVRbkIxa3zlA0chImXcfPE0q2AvKBYLzPfkPO cfplAuRkLcGUxdADCipNzCOakpcd5gfm9Sa2HlaXcw3gyI1WcE8=
diff --git a/bin/tests/optional/Kchild.example.+005+33180.private b/bin/tests/optional/Kchild.example.+005+33180.private
deleted file mode 100644 (file)
index 83a50df..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Private-key-format: v1.3
-Algorithm: 5 (RSASHA1)
-Modulus: v15q0LwBLMOdEClxm7HIGu8lEA1FCMJdDUVYr7y8TJdXk0gT0qaEohXbBura0sE9+M1DPgFMn1GYMg1/VFrIOW3ov4hBXUkJoNoyN3XNTedJArXxjt8y7TDDgAwo6ehVFuQjFrfOUDRyEiZdx88TSrYC8oFgvM9+Q85x+mUC5GQtwZTF0AMKKk3MI5qSlx3mB+b1JrYeVpdzDeDIjVZwTw==
-PublicExponent: AQAB
-PrivateExponent: WDsn9GU6BXGLENCK2MX3BLQN2oDDu24hiOTYJu5VwtpkPjuVKCIuNKzu9xmBGnqOIBBDWGsw8KOmEC247yOL/S53iRdBS8lI7yiqznc52RhlmrdPKXbNpVnPwil8wocw+oQYa7uvdPYxI2Yy3B/tRgUxlxSlc/LW/dr0BX2L7qr/aeOBeGSRUlCpc7tYU9a2RUaLpVxF6SlqicCpC91MAQ==
-Prime1: 466f+JL66Bl4qYnkj0s9+1N3pYmdcM9Ja1AN66X4VLslA9Cm1JEaC5V9HOptfcXUk0XYEVnKeKM2lIQnvcLG0yuQHIa+pGi7P8vgQfdaRUE=
-Prime2: 1yuUkTVRSbUWeUreEcHgeeBBJ61UshX7t07gnGgIr3artGdo2CVEb5//+2Mvj5bgjCQBvjBbmHNZrR0jKDRBTIGtqbBerOuhEN4AXdAEgY8=
-Exponent1: KzUXbJ/P973ltR7S/hKEV66WVRbRhvf/cdsGWULs5n+BXcD59/r1W19qF9OxJZ4mYjBt+ZT1pIEsuXB+7jcJbkelGJTFlwO9DTVOgJZFTkE=
-Exponent2: FTPsLertGbBIiKdB/sn2Dsx0Xy6LXAkihsu1AnSV9oRhIyPVhwcVGVLQ7Lq3YxThB648pbsqK3miapamcj3D+YAF1uTUT4Hgm0LlEll/OC0=
-Coefficient: Vulw9kmmjKc+wmOukLdzheoA2hNPDVtgiynfzHybyXdqvapCoK+ZVmNFzjO0M41ATcpvya3iX0bekMQqYnBhLURNZUIyqz2nGskOjV8I5Jg=
-Created: 20181025104746
-Publish: 20181025104746
-Activate: 20181025104746
diff --git a/bin/tests/optional/adb_test.c b/bin/tests/optional/adb_test.c
deleted file mode 100644 (file)
index b232914..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <isc/app.h>
-#include <isc/buffer.h>
-#include <isc/hash.h>
-#include <isc/print.h>
-#include <isc/socket.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/adb.h>
-#include <dns/cache.h>
-#include <dns/db.h>
-#include <dns/dispatch.h>
-#include <dns/log.h>
-#include <dns/result.h>
-#include <dns/rootns.h>
-
-typedef struct client client_t;
-struct client {
-       dns_name_t name;
-       const char *target;
-       ISC_LINK(client_t) link;
-       dns_adbfind_t *find;
-};
-
-static isc_mem_t *mctx = NULL;
-static isc_mempool_t *cmp;
-static isc_log_t *lctx;
-static isc_logconfig_t *lcfg;
-static isc_taskmgr_t *taskmgr;
-static isc_socketmgr_t *socketmgr;
-static isc_timermgr_t *timermgr;
-static dns_dispatchmgr_t *dispatchmgr;
-static isc_task_t *t1, *t2;
-static dns_view_t *view;
-static dns_db_t *rootdb;
-static ISC_LIST(client_t) clients;
-static isc_mutex_t client_lock;
-static isc_stdtime_t now;
-static dns_adb_t *adb;
-
-static void
-check_result(isc_result_t result, const char *format, ...)
-       ISC_FORMAT_PRINTF(2, 3);
-
-static void
-check_result(isc_result_t result, const char *format, ...) {
-       va_list args;
-
-       if (result == ISC_R_SUCCESS) {
-               return;
-       }
-
-       va_start(args, format);
-       vfprintf(stderr, format, args);
-       va_end(args);
-       fprintf(stderr, ": %s\n", isc_result_totext(result));
-       exit(1);
-}
-
-static client_t *
-new_client(void) {
-       client_t *client;
-
-       client = isc_mempool_get(cmp);
-       INSIST(client != NULL);
-       dns_name_init(&client->name, NULL);
-       ISC_LINK_INIT(client, link);
-       client->find = NULL;
-
-       return (client);
-}
-
-static void
-free_client(client_t **c) {
-       client_t *client;
-
-       INSIST(c != NULL);
-       client = *c;
-       *c = NULL;
-       INSIST(client != NULL);
-       dns_name_free(&client->name, mctx);
-       INSIST(!ISC_LINK_LINKED(client, link));
-       INSIST(client->find == NULL);
-
-       isc_mempool_put(cmp, client);
-}
-
-static inline void
-CLOCK(void) {
-       RUNTIME_CHECK(isc_mutex_lock(&client_lock) == ISC_R_SUCCESS);
-}
-
-static inline void
-CUNLOCK(void) {
-       RUNTIME_CHECK(isc_mutex_unlock(&client_lock) == ISC_R_SUCCESS);
-}
-
-static void
-lookup_callback(isc_task_t *task, isc_event_t *ev) {
-       client_t *client;
-
-       client = ev->ev_arg;
-       INSIST(client->find == ev->ev_sender);
-
-       printf("NAME %s:\n\tTask %p got event %p type %08x from %p, client "
-              "%p\n\terr4: %s  err6: %s\n",
-              client->target, task, ev, ev->ev_type, client->find, client,
-              isc_result_totext(client->find->result_v4),
-              isc_result_totext(client->find->result_v6));
-
-       isc_event_free(&ev);
-       ev = NULL;
-
-       CLOCK();
-
-       dns_adb_dumpfind(client->find, stderr);
-       dns_adb_destroyfind(&client->find);
-
-       ISC_LIST_UNLINK(clients, client, link);
-       free_client(&client);
-
-       CUNLOCK();
-}
-
-static void
-create_managers(void) {
-       isc_result_t result;
-
-       taskmgr = NULL;
-       result = isc_taskmgr_create(mctx, 5, 0, NULL, &taskmgr);
-       check_result(result, "isc_taskmgr_create");
-
-       timermgr = NULL;
-       result = isc_timermgr_create(mctx, &timermgr);
-       check_result(result, "isc_timermgr_create");
-
-       socketmgr = NULL;
-       result = isc_socketmgr_create(mctx, &socketmgr);
-       check_result(result, "isc_socketmgr_create");
-
-       dispatchmgr = NULL;
-       result = dns_dispatchmgr_create(mctx, &dispatchmgr);
-       check_result(result, "dns_dispatchmgr_create");
-}
-
-static void
-create_view(void) {
-       dns_cache_t *cache;
-       isc_result_t result;
-
-       /*
-        * View.
-        */
-       view = NULL;
-       result = dns_view_create(mctx, dns_rdataclass_in, "_default", &view);
-       check_result(result, "dns_view_create");
-
-       /*
-        * Cache.
-        */
-       cache = NULL;
-       result = dns_cache_create(mctx, mctx, taskmgr, timermgr,
-                                 dns_rdataclass_in, "", "rbt", 0, NULL,
-                                 &cache);
-       check_result(result, "dns_cache_create");
-       dns_view_setcache(view, cache, false);
-       dns_cache_detach(&cache);
-
-       {
-               unsigned int attrs;
-               isc_sockaddr_t any4, any6;
-               dns_dispatch_t *disp4 = NULL;
-               dns_dispatch_t *disp6 = NULL;
-
-               isc_sockaddr_any(&any4);
-               isc_sockaddr_any6(&any6);
-
-               attrs = DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_UDP;
-               RUNTIME_CHECK(dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                 taskmgr, &any4, 512, 6, 1024,
-                                                 17, 19, attrs, attrs,
-                                                 &disp4) == ISC_R_SUCCESS);
-               INSIST(disp4 != NULL);
-
-               attrs = DNS_DISPATCHATTR_IPV6 | DNS_DISPATCHATTR_UDP;
-               RUNTIME_CHECK(dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                 taskmgr, &any6, 512, 6, 1024,
-                                                 17, 19, attrs, attrs,
-                                                 &disp6) == ISC_R_SUCCESS);
-               INSIST(disp6 != NULL);
-
-               RUNTIME_CHECK(dns_view_createresolver(view, taskmgr, 10, 1,
-                                                     socketmgr, timermgr, 0,
-                                                     dispatchmgr, disp4,
-                                                     disp6) == ISC_R_SUCCESS);
-       }
-
-       rootdb = NULL;
-       result = dns_rootns_create(mctx, dns_rdataclass_in, NULL, &rootdb);
-       check_result(result, "dns_rootns_create()");
-       dns_view_sethints(view, rootdb);
-       dns_db_detach(&rootdb);
-
-       dns_view_freeze(view);
-}
-
-static void
-lookup(const char *target) {
-       dns_name_t name;
-       unsigned char namedata[256];
-       client_t *client;
-       isc_buffer_t t, namebuf;
-       isc_result_t result;
-       unsigned int options;
-
-       INSIST(target != NULL);
-
-       client = new_client();
-       isc_buffer_constinit(&t, target, strlen(target));
-       isc_buffer_add(&t, strlen(target));
-       isc_buffer_init(&namebuf, namedata, sizeof(namedata));
-       dns_name_init(&name, NULL);
-       result = dns_name_fromtext(&name, &t, dns_rootname, 0, &namebuf);
-       check_result(result, "dns_name_fromtext %s", target);
-
-       dns_name_dup(&name, mctx, &client->name);
-
-       options = 0;
-       options |= DNS_ADBFIND_INET;
-       options |= DNS_ADBFIND_INET6;
-       options |= DNS_ADBFIND_WANTEVENT;
-       options |= DNS_ADBFIND_HINTOK;
-       options |= DNS_ADBFIND_GLUEOK;
-       result = dns_adb_createfind(
-               adb, t2, lookup_callback, client, &client->name, dns_rootname,
-               0, options, now, NULL, view->dstport, 0, NULL, &client->find);
-       if (result != ISC_R_SUCCESS) {
-               printf("DNS_ADB_CREATEFIND -> %s\n", dns_result_totext(result));
-       }
-       dns_adb_dumpfind(client->find, stderr);
-
-       if ((client->find->options & DNS_ADBFIND_WANTEVENT) != 0) {
-               client->target = target;
-               ISC_LIST_APPEND(clients, client, link);
-       } else {
-               printf("NAME %s:  err4 %s, err6 %s\n", target,
-                      isc_result_totext(client->find->result_v4),
-                      isc_result_totext(client->find->result_v6));
-
-               dns_adb_destroyfind(&client->find);
-               free_client(&client);
-       }
-}
-
-int
-main(int argc, char **argv) {
-       isc_result_t result;
-       isc_logdestination_t destination;
-
-       UNUSED(argc);
-       UNUSED(argv);
-
-       dns_result_register();
-       result = isc_app_start();
-       check_result(result, "isc_app_start()");
-
-       isc_stdtime_get(&now);
-
-       isc_mutex_init(&client_lock);
-
-       ISC_LIST_INIT(clients);
-
-       /*
-        * EVERYTHING needs a memory context.
-        */
-       isc_mem_create(&mctx);
-
-       cmp = NULL;
-       isc_mempool_create(mctx, sizeof(client_t), &cmp);
-       isc_mempool_setname(cmp, "adb test clients");
-
-       isc_log_create(mctx, &lctx, &lcfg);
-       isc_log_setcontext(lctx);
-       dns_log_init(lctx);
-       dns_log_setcontext(lctx);
-
-       /*
-        * Create and install the default channel.
-        */
-       destination.file.stream = stderr;
-       destination.file.name = NULL;
-       destination.file.versions = ISC_LOG_ROLLNEVER;
-       destination.file.maximum_size = 0;
-       isc_log_createchannel(lcfg, "_default", ISC_LOG_TOFILEDESC,
-                             ISC_LOG_DYNAMIC, &destination, ISC_LOG_PRINTTIME);
-
-       result = isc_log_usechannel(lcfg, "_default", NULL, NULL);
-       check_result(result, "isc_log_usechannel()");
-
-       /*
-        * Set the initial debug level.
-        */
-       isc_log_setdebuglevel(lctx, 2);
-
-       create_managers();
-
-       t1 = NULL;
-       result = isc_task_create(taskmgr, 0, &t1);
-       check_result(result, "isc_task_create t1");
-       t2 = NULL;
-       result = isc_task_create(taskmgr, 0, &t2);
-       check_result(result, "isc_task_create t2");
-
-       printf("task 1 = %p\n", t1);
-       printf("task 2 = %p\n", t2);
-
-       create_view();
-
-       adb = view->adb;
-
-       /*
-        * Lock the entire client list here.  This will cause all events
-        * for found names to block as well.
-        */
-       CLOCK();
-       lookup("f.root-servers.net.");     /* Should be in hints */
-       lookup("www.iengines.com");        /* should fetch */
-       lookup("www.isc.org");             /* should fetch */
-       lookup("www.flame.org");           /* should fetch */
-       lookup("kechara.flame.org.");      /* should fetch */
-       lookup("moghedien.flame.org.");    /* should fetch */
-       lookup("mailrelay.flame.org.");    /* should fetch */
-       lookup("ipv4v6.flame.org.");       /* should fetch */
-       lookup("nonexistent.flame.org.");  /* should fail to be found */
-       lookup("foobar.badns.flame.org."); /* should fail utterly (NS) */
-       lookup("i.root-servers.net.");     /* Should be in hints */
-       lookup("www.firstcard.com.");
-       lookup("dns04.flame.org.");
-       CUNLOCK();
-
-       sleep(10);
-
-       dns_adb_dump(adb, stderr);
-
-       sleep(10);
-
-       CLOCK();
-       lookup("f.root-servers.net.");     /* Should be in hints */
-       lookup("www.iengines.com");        /* should fetch */
-       lookup("www.isc.org");             /* should fetch */
-       lookup("www.flame.org");           /* should fetch */
-       lookup("kechara.flame.org.");      /* should fetch */
-       lookup("moghedien.flame.org.");    /* should fetch */
-       lookup("mailrelay.flame.org.");    /* should fetch */
-       lookup("ipv4v6.flame.org.");       /* should fetch */
-       lookup("nonexistent.flame.org.");  /* should fail to be found */
-       lookup("foobar.badns.flame.org."); /* should fail utterly (NS) */
-       lookup("i.root-servers.net.");     /* Should be in hints */
-       CUNLOCK();
-
-       sleep(20);
-
-       dns_adb_dump(adb, stderr);
-
-       isc_task_detach(&t1);
-       isc_task_detach(&t2);
-
-       isc_mem_stats(mctx, stdout);
-       dns_adb_dump(adb, stderr);
-
-       isc_app_run();
-
-       dns_adb_dump(adb, stderr);
-
-       dns_view_detach(&view);
-       adb = NULL;
-
-       fprintf(stderr, "Destroying socket manager\n");
-       isc_socketmgr_destroy(&socketmgr);
-       fprintf(stderr, "Destroying timer manager\n");
-       isc_timermgr_destroy(&timermgr);
-
-       fprintf(stderr, "Destroying task manager\n");
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_log_destroy(&lctx);
-
-       isc_mempool_destroy(&cmp);
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-
-       isc_app_finish();
-
-       return (0);
-}
diff --git a/bin/tests/optional/backtrace_test.c b/bin/tests/optional/backtrace_test.c
deleted file mode 100644 (file)
index 5527835..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <isc/backtrace.h>
-#include <isc/print.h>
-#include <isc/result.h>
-
-static int
-func3() {
-       void *tracebuf[16];
-       int nframes;
-       isc_result_t result;
-
-       result = isc_backtrace_gettrace(tracebuf, 16, &nframes);
-       if (result != ISC_R_SUCCESS) {
-               printf("isc_backtrace_gettrace failed: %s\n",
-                      isc_result_totext(result));
-               return (1);
-       }
-
-       if (nframes < 4) {
-               printf("Unexpected result:\n");
-               printf("  # of frames: %d (expected: at least 4)\n", nframes);
-               return (1);
-       }
-
-       return (0);
-}
-
-static int
-func2() {
-       return (func3());
-}
-
-static int
-func1() {
-       return (func2());
-}
-
-int
-main() {
-       return (func1());
-}
diff --git a/bin/tests/optional/byaddr_test.c b/bin/tests/optional/byaddr_test.c
deleted file mode 100644 (file)
index b629d68..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/app.h>
-#include <isc/commandline.h>
-#include <isc/mem.h>
-#include <isc/netaddr.h>
-#include <isc/print.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/byaddr.h>
-#include <dns/cache.h>
-#include <dns/dispatch.h>
-#include <dns/events.h>
-#include <dns/forward.h>
-#include <dns/resolver.h>
-#include <dns/result.h>
-#include <dns/view.h>
-
-static void
-done(isc_task_t *task, isc_event_t *event) {
-       dns_byaddrevent_t *bevent;
-       dns_byaddr_t *byaddr;
-       dns_name_t *name;
-
-       REQUIRE(event->ev_type == DNS_EVENT_BYADDRDONE);
-       bevent = (dns_byaddrevent_t *)event;
-
-       UNUSED(task);
-
-       printf("byaddr event result = %s\n", isc_result_totext(bevent->result));
-
-       if (bevent->result == ISC_R_SUCCESS) {
-               for (name = ISC_LIST_HEAD(bevent->names); name != NULL;
-                    name = ISC_LIST_NEXT(name, link))
-               {
-                       char text[DNS_NAME_FORMATSIZE];
-                       dns_name_format(name, text, sizeof(text));
-                       printf("%s\n", text);
-               }
-       }
-
-       byaddr = event->ev_sender;
-       dns_byaddr_destroy(&byaddr);
-       isc_event_free(&event);
-
-       isc_app_shutdown();
-}
-
-int
-main(int argc, char *argv[]) {
-       isc_mem_t *mctx;
-       bool verbose = false;
-       unsigned int workers = 2;
-       isc_taskmgr_t *taskmgr;
-       isc_task_t *task;
-       isc_timermgr_t *timermgr;
-       dns_view_t *view;
-       int ch;
-       isc_socketmgr_t *socketmgr;
-       dns_dispatchmgr_t *dispatchmgr;
-       isc_netaddr_t na;
-       dns_byaddr_t *byaddr;
-       isc_result_t result;
-       unsigned int options = 0;
-       dns_cache_t *cache;
-
-       RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
-
-       dns_result_register();
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       while ((ch = isc_commandline_parse(argc, argv, "nvw:")) != -1) {
-               switch (ch) {
-               case 'n':
-                       /*
-                        * We only try nibbles, so do nothing for this option.
-                        */
-                       break;
-               case 'v':
-                       verbose = true;
-                       break;
-               case 'w':
-                       workers = (unsigned int)atoi(isc_commandline_argument);
-                       break;
-               }
-       }
-
-       if (verbose) {
-               printf("%u workers\n", workers);
-               printf("IPv4: %s\n", isc_result_totext(isc_net_probeipv4()));
-               printf("IPv6: %s\n", isc_result_totext(isc_net_probeipv6()));
-       }
-
-       taskmgr = NULL;
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, NULL, &taskmgr) ==
-                     ISC_R_SUCCESS);
-       task = NULL;
-       RUNTIME_CHECK(isc_task_create(taskmgr, 0, &task) == ISC_R_SUCCESS);
-       isc_task_setname(task, "byaddr", NULL);
-
-       dispatchmgr = NULL;
-       RUNTIME_CHECK(dns_dispatchmgr_create(mctx, &dispatchmgr) ==
-                     ISC_R_SUCCESS);
-
-       timermgr = NULL;
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timermgr) == ISC_R_SUCCESS);
-       socketmgr = NULL;
-       RUNTIME_CHECK(isc_socketmgr_create(mctx, &socketmgr) == ISC_R_SUCCESS);
-
-       cache = NULL;
-       RUNTIME_CHECK(dns_cache_create(mctx, mctx, taskmgr, timermgr,
-                                      dns_rdataclass_in, "", "rbt", 0, NULL,
-                                      &cache) == ISC_R_SUCCESS);
-
-       view = NULL;
-       RUNTIME_CHECK(dns_view_create(mctx, dns_rdataclass_in, "default",
-                                     &view) == ISC_R_SUCCESS);
-
-       {
-               unsigned int attrs;
-               dns_dispatch_t *disp4 = NULL;
-               dns_dispatch_t *disp6 = NULL;
-
-               if (isc_net_probeipv4() == ISC_R_SUCCESS) {
-                       isc_sockaddr_t any4;
-
-                       isc_sockaddr_any(&any4);
-
-                       attrs = DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_UDP;
-                       RUNTIME_CHECK(
-                               dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                   taskmgr, &any4, 512, 6,
-                                                   1024, 17, 19, attrs, attrs,
-                                                   &disp4) == ISC_R_SUCCESS);
-                       INSIST(disp4 != NULL);
-               }
-
-               if (isc_net_probeipv6() == ISC_R_SUCCESS) {
-                       isc_sockaddr_t any6;
-
-                       isc_sockaddr_any6(&any6);
-
-                       attrs = DNS_DISPATCHATTR_IPV6 | DNS_DISPATCHATTR_UDP;
-                       RUNTIME_CHECK(
-                               dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                   taskmgr, &any6, 512, 6,
-                                                   1024, 17, 19, attrs, attrs,
-                                                   &disp6) == ISC_R_SUCCESS);
-                       INSIST(disp6 != NULL);
-               }
-
-               RUNTIME_CHECK(dns_view_createresolver(view, taskmgr, 10, 1,
-                                                     socketmgr, timermgr, 0,
-                                                     dispatchmgr, disp4,
-                                                     disp6) == ISC_R_SUCCESS);
-
-               if (disp4 != NULL) {
-                       dns_dispatch_detach(&disp4);
-               }
-               if (disp6 != NULL) {
-                       dns_dispatch_detach(&disp6);
-               }
-       }
-
-       {
-               struct in_addr ina;
-               isc_sockaddr_t sa;
-               isc_sockaddrlist_t sal;
-
-               ISC_LIST_INIT(sal);
-               ina.s_addr = inet_addr("127.0.0.1");
-               isc_sockaddr_fromin(&sa, &ina, 53);
-               ISC_LIST_APPEND(sal, &sa, link);
-
-               RUNTIME_CHECK(dns_fwdtable_add(view->fwdtable, dns_rootname,
-                                              &sal, dns_fwdpolicy_only) ==
-                             ISC_R_SUCCESS);
-       }
-
-       dns_view_setcache(view, cache, false);
-       dns_view_freeze(view);
-
-       dns_cache_detach(&cache);
-
-       printf("address = %s\n", argv[isc_commandline_index]);
-       na.family = AF_INET;
-       if (inet_pton(AF_INET, argv[isc_commandline_index],
-                     (char *)&na.type.in) != 1) {
-               na.family = AF_INET6;
-               if (inet_pton(AF_INET6, argv[isc_commandline_index],
-                             (char *)&na.type.in6) != 1) {
-                       printf("unknown address format\n");
-                       exit(1);
-               }
-       }
-
-       result = dns_byaddr_create(mctx, &na, view, options, task, done, NULL,
-                                  &byaddr);
-       if (result != ISC_R_SUCCESS) {
-               printf("dns_byaddr_create() returned %s\n",
-                      isc_result_totext(result));
-               RUNTIME_CHECK(0);
-       }
-
-       (void)isc_app_run();
-
-       /*
-        * XXXRTH if we get a control-C before we get to isc_app_run(),
-        * we're in trouble (because we might try to destroy things before
-        * they've been created.
-        */
-
-       dns_view_detach(&view);
-
-       isc_task_shutdown(task);
-       isc_task_detach(&task);
-
-       dns_dispatchmgr_destroy(&dispatchmgr);
-
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_socketmgr_destroy(&socketmgr);
-       isc_timermgr_destroy(&timermgr);
-
-       if (verbose) {
-               isc_mem_stats(mctx, stdout);
-       }
-       isc_mem_destroy(&mctx);
-
-       isc_app_finish();
-
-       return (0);
-}
diff --git a/bin/tests/optional/byname_test.c b/bin/tests/optional/byname_test.c
deleted file mode 100644 (file)
index 1d6ab59..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <isc/app.h>
-#include <isc/commandline.h>
-#include <isc/hash.h>
-#include <isc/netaddr.h>
-#include <isc/print.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/adb.h>
-#include <dns/cache.h>
-#include <dns/dispatch.h>
-#include <dns/events.h>
-#include <dns/forward.h>
-#include <dns/log.h>
-#include <dns/resolver.h>
-#include <dns/result.h>
-
-static isc_mem_t *mctx = NULL;
-static isc_taskmgr_t *taskmgr;
-static dns_view_t *view = NULL;
-static dns_adbfind_t *find = NULL;
-static isc_task_t *task = NULL;
-static dns_fixedname_t fixed;
-static dns_fixedname_t target;
-static isc_log_t *lctx;
-static isc_logconfig_t *lcfg;
-static unsigned int level = 0;
-
-static void
-adb_callback(isc_task_t *task, isc_event_t *event);
-
-static void
-log_init(void) {
-       isc_logdestination_t destination;
-       unsigned int flags;
-
-       /*
-        * Setup a logging context.
-        */
-       isc_log_create(mctx, &lctx, &lcfg);
-       isc_log_setcontext(lctx);
-       dns_log_init(lctx);
-       dns_log_setcontext(lctx);
-
-       /*
-        * Create and install the default channel.
-        */
-       destination.file.stream = stderr;
-       destination.file.name = NULL;
-       destination.file.versions = ISC_LOG_ROLLNEVER;
-       destination.file.maximum_size = 0;
-       flags = ISC_LOG_PRINTTIME;
-       isc_log_createchannel(lcfg, "_default", ISC_LOG_TOFILEDESC,
-                             ISC_LOG_DYNAMIC, &destination, flags);
-
-       RUNTIME_CHECK(isc_log_usechannel(lcfg, "_default", NULL, NULL) ==
-                     ISC_R_SUCCESS);
-       isc_log_setdebuglevel(lctx, level);
-}
-
-static void
-print_addresses(dns_adbfind_t *adbfind) {
-       dns_adbaddrinfo_t *address;
-
-       for (address = ISC_LIST_HEAD(adbfind->list); address != NULL;
-            address = ISC_LIST_NEXT(address, publink))
-       {
-               isc_netaddr_t netaddr;
-               char text[ISC_NETADDR_FORMATSIZE];
-               isc_netaddr_fromsockaddr(&netaddr, &address->sockaddr);
-               isc_netaddr_format(&netaddr, text, sizeof(text));
-               printf("%s\n", text);
-       }
-}
-
-static void
-print_name(dns_name_t *name) {
-       char text[DNS_NAME_FORMATSIZE];
-
-       dns_name_format(name, text, sizeof(text));
-       printf("%s\n", text);
-}
-
-static void
-do_find(bool want_event) {
-       isc_result_t result;
-       bool done = false;
-       unsigned int options;
-
-       options = DNS_ADBFIND_INET | DNS_ADBFIND_INET6;
-       if (want_event) {
-               options |= DNS_ADBFIND_WANTEVENT | DNS_ADBFIND_EMPTYEVENT;
-       }
-       dns_fixedname_init(&target);
-       result = dns_adb_createfind(view->adb, task, adb_callback, NULL,
-                                   dns_fixedname_name(&fixed), dns_rootname, 0,
-                                   options, 0, dns_fixedname_name(&target), 0,
-                                   0, NULL, &find);
-       if (result == ISC_R_SUCCESS) {
-               if (!ISC_LIST_EMPTY(find->list)) {
-                       /*
-                        * We have at least some of the addresses for the
-                        * name.
-                        */
-                       INSIST((find->options & DNS_ADBFIND_WANTEVENT) == 0);
-                       print_addresses(find);
-                       done = true;
-               } else {
-                       /*
-                        * We don't know any of the addresses for this
-                        * name.
-                        */
-                       if ((find->options & DNS_ADBFIND_WANTEVENT) == 0) {
-                               /*
-                                * And ADB isn't going to send us any events
-                                * either.  This query loses.
-                                */
-                               done = true;
-                       }
-                       /*
-                        * If the DNS_ADBFIND_WANTEVENT flag was set, we'll
-                        * get an event when something happens.
-                        */
-               }
-       } else if (result == DNS_R_ALIAS) {
-               print_name(dns_fixedname_name(&target));
-               done = true;
-       } else {
-               printf("dns_adb_createfind() returned %s\n",
-                      isc_result_totext(result));
-               done = true;
-       }
-
-       if (done) {
-               if (find != NULL) {
-                       dns_adb_destroyfind(&find);
-               }
-               isc_app_shutdown();
-       }
-}
-
-static void
-adb_callback(isc_task_t *etask, isc_event_t *event) {
-       unsigned int type = event->ev_type;
-
-       REQUIRE(etask == task);
-
-       isc_event_free(&event);
-       dns_adb_destroyfind(&find);
-
-       if (type == DNS_EVENT_ADBMOREADDRESSES) {
-               do_find(false);
-       } else if (type == DNS_EVENT_ADBNOMOREADDRESSES) {
-               printf("no more addresses\n");
-               isc_app_shutdown();
-       } else {
-               printf("unexpected ADB event type %u\n", type);
-               isc_app_shutdown();
-       }
-}
-
-static void
-run(isc_task_t *xtask, isc_event_t *event) {
-       UNUSED(xtask);
-       do_find(true);
-       isc_event_free(&event);
-}
-
-int
-main(int argc, char *argv[]) {
-       bool verbose = false;
-       unsigned int workers = 2;
-       isc_timermgr_t *timermgr;
-       int ch;
-       isc_socketmgr_t *socketmgr;
-       dns_dispatchmgr_t *dispatchmgr;
-       dns_cache_t *cache;
-       isc_buffer_t b;
-
-       RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
-
-       dns_result_register();
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       while ((ch = isc_commandline_parse(argc, argv, "d:vw:")) != -1) {
-               switch (ch) {
-               case 'd':
-                       level = (unsigned int)atoi(isc_commandline_argument);
-                       break;
-               case 'v':
-                       verbose = true;
-                       break;
-               case 'w':
-                       workers = (unsigned int)atoi(isc_commandline_argument);
-                       break;
-               }
-       }
-
-       log_init();
-
-       if (verbose) {
-               printf("%u workers\n", workers);
-               printf("IPv4: %s\n", isc_result_totext(isc_net_probeipv4()));
-               printf("IPv6: %s\n", isc_result_totext(isc_net_probeipv6()));
-       }
-
-       taskmgr = NULL;
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, NULL, &taskmgr) ==
-                     ISC_R_SUCCESS);
-       task = NULL;
-       RUNTIME_CHECK(isc_task_create(taskmgr, 0, &task) == ISC_R_SUCCESS);
-       isc_task_setname(task, "byname", NULL);
-
-       dispatchmgr = NULL;
-       RUNTIME_CHECK(dns_dispatchmgr_create(mctx, &dispatchmgr) ==
-                     ISC_R_SUCCESS);
-
-       timermgr = NULL;
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timermgr) == ISC_R_SUCCESS);
-       socketmgr = NULL;
-       RUNTIME_CHECK(isc_socketmgr_create(mctx, &socketmgr) == ISC_R_SUCCESS);
-
-       cache = NULL;
-       RUNTIME_CHECK(dns_cache_create(mctx, mctx, taskmgr, timermgr,
-                                      dns_rdataclass_in, "", "rbt", 0, NULL,
-                                      &cache) == ISC_R_SUCCESS);
-
-       view = NULL;
-       RUNTIME_CHECK(dns_view_create(mctx, dns_rdataclass_in, "default",
-                                     &view) == ISC_R_SUCCESS);
-
-       {
-               unsigned int attrs;
-               dns_dispatch_t *disp4 = NULL;
-               dns_dispatch_t *disp6 = NULL;
-
-               if (isc_net_probeipv4() == ISC_R_SUCCESS) {
-                       isc_sockaddr_t any4;
-                       isc_sockaddr_any(&any4);
-
-                       attrs = DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_UDP;
-                       RUNTIME_CHECK(
-                               dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                   taskmgr, &any4, 512, 6,
-                                                   1024, 17, 19, attrs, attrs,
-                                                   &disp4) == ISC_R_SUCCESS);
-                       INSIST(disp4 != NULL);
-               }
-
-               if (isc_net_probeipv6() == ISC_R_SUCCESS) {
-                       isc_sockaddr_t any6;
-
-                       isc_sockaddr_any6(&any6);
-
-                       attrs = DNS_DISPATCHATTR_IPV6 | DNS_DISPATCHATTR_UDP;
-                       RUNTIME_CHECK(
-                               dns_dispatch_getudp(dispatchmgr, socketmgr,
-                                                   taskmgr, &any6, 512, 6,
-                                                   1024, 17, 19, attrs, attrs,
-                                                   &disp6) == ISC_R_SUCCESS);
-                       INSIST(disp6 != NULL);
-               }
-
-               RUNTIME_CHECK(dns_view_createresolver(view, taskmgr, 10, 1,
-                                                     socketmgr, timermgr, 0,
-                                                     dispatchmgr, disp4,
-                                                     disp6) == ISC_R_SUCCESS);
-
-               if (disp4 != NULL) {
-                       dns_dispatch_detach(&disp4);
-               }
-               if (disp6 != NULL) {
-                       dns_dispatch_detach(&disp6);
-               }
-       }
-
-       {
-               struct in_addr ina;
-               isc_sockaddr_t sa;
-               isc_sockaddrlist_t sal;
-
-               ISC_LIST_INIT(sal);
-               ina.s_addr = inet_addr("127.0.0.1");
-               isc_sockaddr_fromin(&sa, &ina, 53);
-               ISC_LIST_APPEND(sal, &sa, link);
-
-               REQUIRE(DNS_VIEW_VALID(view));
-               RUNTIME_CHECK(dns_fwdtable_add(view->fwdtable, dns_rootname,
-                                              &sal, dns_fwdpolicy_only) ==
-                             ISC_R_SUCCESS);
-       }
-
-       dns_view_setcache(view, cache, false);
-       dns_view_freeze(view);
-
-       dns_cache_detach(&cache);
-
-       printf("name = %s\n", argv[isc_commandline_index]);
-       isc_buffer_init(&b, argv[isc_commandline_index],
-                       strlen(argv[isc_commandline_index]));
-       isc_buffer_add(&b, strlen(argv[isc_commandline_index]));
-       dns_fixedname_init(&fixed);
-       dns_fixedname_init(&target);
-       RUNTIME_CHECK(dns_name_fromtext(dns_fixedname_name(&fixed), &b,
-                                       dns_rootname, 0,
-                                       NULL) == ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_app_onrun(mctx, task, run, NULL) == ISC_R_SUCCESS);
-
-       (void)isc_app_run();
-
-       dns_view_detach(&view);
-       isc_task_shutdown(task);
-       isc_task_detach(&task);
-
-       dns_dispatchmgr_destroy(&dispatchmgr);
-
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_socketmgr_destroy(&socketmgr);
-       isc_timermgr_destroy(&timermgr);
-
-       isc_log_destroy(&lctx);
-
-       if (verbose) {
-               isc_mem_stats(mctx, stdout);
-       }
-       isc_mem_destroy(&mctx);
-
-       isc_app_finish();
-
-       return (0);
-}
diff --git a/bin/tests/optional/db_test.c b/bin/tests/optional/db_test.c
deleted file mode 100644 (file)
index f4325ba..0000000
+++ /dev/null
@@ -1,978 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- */
-
-#include <inttypes.h>
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/commandline.h>
-#include <isc/log.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/string.h>
-#include <isc/time.h>
-#include <isc/util.h>
-
-#include <dns/db.h>
-#include <dns/dbiterator.h>
-#include <dns/dbtable.h>
-#include <dns/fixedname.h>
-#include <dns/log.h>
-#include <dns/rdataset.h>
-#include <dns/rdatasetiter.h>
-#include <dns/result.h>
-
-#define MAXHOLD            100
-#define MAXVERSIONS 100
-
-typedef struct dbinfo {
-       dns_db_t *db;
-       dns_dbversion_t *version;
-       dns_dbversion_t *wversion;
-       dns_dbversion_t *rversions[MAXVERSIONS];
-       int rcount;
-       dns_dbnode_t *hold_nodes[MAXHOLD];
-       int hold_count;
-       dns_dbiterator_t *dbiterator;
-       dns_dbversion_t *iversion;
-       int pause_every;
-       bool ascending;
-       ISC_LINK(struct dbinfo) link;
-} dbinfo;
-
-static isc_mem_t *mctx = NULL;
-static char dbtype[128];
-static dns_dbtable_t *dbtable;
-static ISC_LIST(dbinfo) dbs;
-static dbinfo *cache_dbi = NULL;
-static int pause_every = 0;
-static bool ascending = true;
-
-static void
-print_result(const char *message, isc_result_t result) {
-       if (message == NULL) {
-               message = "";
-       }
-       printf("%s%sresult %08x: %s\n", message, (*message == '\0') ? "" : " ",
-              result, isc_result_totext(result));
-}
-
-static void
-print_rdataset(dns_name_t *name, dns_rdataset_t *rdataset) {
-       isc_buffer_t text;
-       char t[1000];
-       isc_result_t result;
-       isc_region_t r;
-
-       isc_buffer_init(&text, t, sizeof(t));
-       result = dns_rdataset_totext(rdataset, name, false, false, &text);
-       isc_buffer_usedregion(&text, &r);
-       if (result == ISC_R_SUCCESS) {
-               printf("%.*s", (int)r.length, (char *)r.base);
-       } else {
-               print_result("", result);
-       }
-}
-
-static void
-print_rdatasets(dns_name_t *name, dns_rdatasetiter_t *rdsiter) {
-       isc_result_t result;
-       dns_rdataset_t rdataset;
-
-       dns_rdataset_init(&rdataset);
-       result = dns_rdatasetiter_first(rdsiter);
-       while (result == ISC_R_SUCCESS) {
-               dns_rdatasetiter_current(rdsiter, &rdataset);
-               print_rdataset(name, &rdataset);
-               dns_rdataset_disassociate(&rdataset);
-               result = dns_rdatasetiter_next(rdsiter);
-       }
-       if (result != ISC_R_NOMORE) {
-               print_result("", result);
-       }
-}
-
-static dbinfo *
-select_db(char *origintext) {
-       dns_fixedname_t forigin;
-       dns_name_t *origin;
-       isc_buffer_t source;
-       size_t len;
-       dbinfo *dbi;
-       isc_result_t result;
-
-       if (strcasecmp(origintext, "cache") == 0) {
-               if (cache_dbi == NULL) {
-                       printf("the cache does not exist\n");
-               }
-               return (cache_dbi);
-       }
-       len = strlen(origintext);
-       isc_buffer_init(&source, origintext, len);
-       isc_buffer_add(&source, len);
-       origin = dns_fixedname_initname(&forigin);
-       result = dns_name_fromtext(origin, &source, dns_rootname, 0, NULL);
-       if (result != ISC_R_SUCCESS) {
-               print_result("bad name", result);
-               return (NULL);
-       }
-
-       for (dbi = ISC_LIST_HEAD(dbs); dbi != NULL;
-            dbi = ISC_LIST_NEXT(dbi, link)) {
-               if (dns_name_compare(dns_db_origin(dbi->db), origin) == 0) {
-                       break;
-               }
-       }
-
-       return (dbi);
-}
-
-static void
-list(dbinfo *dbi, char *seektext) {
-       dns_fixedname_t fname;
-       dns_name_t *name;
-       dns_dbnode_t *node;
-       dns_rdatasetiter_t *rdsiter;
-       isc_result_t result;
-       int i;
-       size_t len;
-       dns_fixedname_t fseekname;
-       dns_name_t *seekname;
-       isc_buffer_t source;
-
-       name = dns_fixedname_initname(&fname);
-
-       if (dbi->dbiterator == NULL) {
-               INSIST(dbi->iversion == NULL);
-               if (dns_db_iszone(dbi->db)) {
-                       if (dbi->version != NULL) {
-                               dns_db_attachversion(dbi->db, dbi->version,
-                                                    &dbi->iversion);
-                       } else {
-                               dns_db_currentversion(dbi->db, &dbi->iversion);
-                       }
-               }
-
-               result = dns_db_createiterator(dbi->db, 0, &dbi->dbiterator);
-               if (result == ISC_R_SUCCESS) {
-                       if (seektext != NULL) {
-                               len = strlen(seektext);
-                               isc_buffer_init(&source, seektext, len);
-                               isc_buffer_add(&source, len);
-                               seekname = dns_fixedname_initname(&fseekname);
-                               result = dns_name_fromtext(
-                                       seekname, &source,
-                                       dns_db_origin(dbi->db), 0, NULL);
-                               if (result == ISC_R_SUCCESS) {
-                                       result = dns_dbiterator_seek(
-                                               dbi->dbiterator, seekname);
-                               }
-                       } else if (dbi->ascending) {
-                               result = dns_dbiterator_first(dbi->dbiterator);
-                       } else {
-                               result = dns_dbiterator_last(dbi->dbiterator);
-                       }
-               }
-       } else {
-               result = ISC_R_SUCCESS;
-       }
-
-       node = NULL;
-       rdsiter = NULL;
-       i = 0;
-       while (result == ISC_R_SUCCESS) {
-               result = dns_dbiterator_current(dbi->dbiterator, &node, name);
-               if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
-                       break;
-               }
-               result = dns_db_allrdatasets(dbi->db, node, dbi->iversion, 0,
-                                            &rdsiter);
-               if (result != ISC_R_SUCCESS) {
-                       dns_db_detachnode(dbi->db, &node);
-                       break;
-               }
-               print_rdatasets(name, rdsiter);
-               dns_rdatasetiter_destroy(&rdsiter);
-               dns_db_detachnode(dbi->db, &node);
-               if (dbi->ascending) {
-                       result = dns_dbiterator_next(dbi->dbiterator);
-               } else {
-                       result = dns_dbiterator_prev(dbi->dbiterator);
-               }
-               i++;
-               if (result == ISC_R_SUCCESS && i == dbi->pause_every) {
-                       printf("[more...]\n");
-                       result = dns_dbiterator_pause(dbi->dbiterator);
-                       if (result == ISC_R_SUCCESS) {
-                               return;
-                       }
-               }
-       }
-       if (result != ISC_R_NOMORE) {
-               print_result("", result);
-       }
-
-       dns_dbiterator_destroy(&dbi->dbiterator);
-       if (dbi->iversion != NULL) {
-               dns_db_closeversion(dbi->db, &dbi->iversion, false);
-       }
-}
-
-static isc_result_t
-load(const char *filename, const char *origintext, bool cache) {
-       dns_fixedname_t forigin;
-       dns_name_t *origin;
-       isc_result_t result;
-       isc_buffer_t source;
-       size_t len;
-       dbinfo *dbi;
-       unsigned int i;
-
-       dbi = isc_mem_get(mctx, sizeof(*dbi));
-
-       dbi->db = NULL;
-       dbi->version = NULL;
-       dbi->wversion = NULL;
-       for (i = 0; i < MAXVERSIONS; i++) {
-               dbi->rversions[i] = NULL;
-       }
-       dbi->hold_count = 0;
-       for (i = 0; i < MAXHOLD; i++) {
-               dbi->hold_nodes[i] = NULL;
-       }
-       dbi->dbiterator = NULL;
-       dbi->iversion = NULL;
-       dbi->pause_every = pause_every;
-       dbi->ascending = ascending;
-       ISC_LINK_INIT(dbi, link);
-
-       len = strlen(origintext);
-       isc_buffer_constinit(&source, origintext, len);
-       isc_buffer_add(&source, len);
-       origin = dns_fixedname_initname(&forigin);
-       result = dns_name_fromtext(origin, &source, dns_rootname, 0, NULL);
-       if (result != ISC_R_SUCCESS) {
-               isc_mem_put(mctx, dbi, sizeof(*dbi));
-               return (result);
-       }
-
-       result = dns_db_create(mctx, dbtype, origin,
-                              cache ? dns_dbtype_cache : dns_dbtype_zone,
-                              dns_rdataclass_in, 0, NULL, &dbi->db);
-       if (result != ISC_R_SUCCESS) {
-               isc_mem_put(mctx, dbi, sizeof(*dbi));
-               return (result);
-       }
-
-       printf("loading %s (%s)\n", filename, origintext);
-       result = dns_db_load(dbi->db, filename, dns_masterformat_text, 0);
-       if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE) {
-               dns_db_detach(&dbi->db);
-               isc_mem_put(mctx, dbi, sizeof(*dbi));
-               return (result);
-       }
-       printf("loaded\n");
-
-       if (cache) {
-               INSIST(cache_dbi == NULL);
-               dns_dbtable_adddefault(dbtable, dbi->db);
-               cache_dbi = dbi;
-       } else {
-               result = dns_dbtable_add(dbtable, dbi->db);
-               if (result != ISC_R_SUCCESS) {
-                       dns_db_detach(&dbi->db);
-                       isc_mem_put(mctx, dbi, sizeof(*dbi));
-                       return (result);
-               }
-       }
-       ISC_LIST_APPEND(dbs, dbi, link);
-
-       return (ISC_R_SUCCESS);
-}
-
-static void
-unload_all(void) {
-       dbinfo *dbi, *dbi_next;
-
-       for (dbi = ISC_LIST_HEAD(dbs); dbi != NULL; dbi = dbi_next) {
-               dbi_next = ISC_LIST_NEXT(dbi, link);
-               if (dns_db_iszone(dbi->db)) {
-                       dns_dbtable_remove(dbtable, dbi->db);
-               } else {
-                       INSIST(dbi == cache_dbi);
-                       dns_dbtable_removedefault(dbtable);
-                       cache_dbi = NULL;
-               }
-               dns_db_detach(&dbi->db);
-               ISC_LIST_UNLINK(dbs, dbi, link);
-               isc_mem_put(mctx, dbi, sizeof(*dbi));
-       }
-}
-
-#define DBI_CHECK(dbi)                                                 \
-       if ((dbi) == NULL) {                                           \
-               printf("You must first select a database with !DB\n"); \
-               continue;                                              \
-       }
-
-int
-main(int argc, char *argv[]) {
-       dns_db_t *db;
-       dns_dbnode_t *node;
-       isc_result_t result;
-       dns_name_t name;
-       dns_offsets_t offsets;
-       size_t len;
-       isc_buffer_t source, target;
-       char s[1000];
-       char b[255];
-       dns_rdataset_t rdataset, sigrdataset;
-       int ch;
-       dns_rdatatype_t type = 1;
-       bool printnode = false;
-       bool addmode = false;
-       bool delmode = false;
-       bool holdmode = false;
-       bool verbose = false;
-       bool done = false;
-       bool quiet = false;
-       bool time_lookups = false;
-       bool found_as;
-       bool find_zonecut = false;
-       bool noexact_zonecut = false;
-       int i, v;
-       dns_rdatasetiter_t *rdsiter;
-       char t1[256];
-       char t2[256];
-       isc_buffer_t tb1, tb2;
-       isc_region_t r1, r2;
-       dns_fixedname_t foundname;
-       dns_name_t *fname;
-       unsigned int options = 0, zcoptions;
-       isc_time_t start, finish;
-       const char *origintext;
-       dbinfo *dbi;
-       dns_dbversion_t *version;
-       const dns_name_t *origin;
-       dns_trust_t trust = 0;
-       unsigned int addopts;
-       isc_log_t *lctx = NULL;
-       size_t n;
-
-       dns_result_register();
-
-       isc_mem_create(&mctx);
-       RUNTIME_CHECK(dns_dbtable_create(mctx, dns_rdataclass_in, &dbtable) ==
-                     ISC_R_SUCCESS);
-
-       snprintf(dbtype, sizeof(dbtype), "rbt");
-       while ((ch = isc_commandline_parse(argc, argv, "c:d:t:z:P:Q:glpqvT")) !=
-              -1) {
-               switch (ch) {
-               case 'c':
-                       result = load(isc_commandline_argument, ".", true);
-                       if (result != ISC_R_SUCCESS) {
-                               printf("cache load(%s) %08x: %s\n",
-                                      isc_commandline_argument, result,
-                                      isc_result_totext(result));
-                       }
-                       break;
-               case 'd':
-                       n = strlcpy(dbtype, isc_commandline_argument,
-                                   sizeof(dbtype));
-                       if (n >= sizeof(dbtype)) {
-                               fprintf(stderr, "bad db type '%s'\n",
-                                       isc_commandline_argument);
-                               exit(1);
-                       }
-                       break;
-               case 'g':
-                       options |= (DNS_DBFIND_GLUEOK |
-                                   DNS_DBFIND_VALIDATEGLUE);
-                       break;
-               case 'l':
-                       isc_log_create(mctx, &lctx, NULL);
-                       isc_log_setcontext(lctx);
-                       dns_log_init(lctx);
-                       dns_log_setcontext(lctx);
-                       break;
-               case 'q':
-                       quiet = true;
-                       verbose = false;
-                       break;
-               case 'p':
-                       printnode = true;
-                       break;
-               case 'P':
-                       pause_every = atoi(isc_commandline_argument);
-                       break;
-               case 't':
-                       type = atoi(isc_commandline_argument);
-                       break;
-               case 'T':
-                       time_lookups = true;
-                       break;
-               case 'v':
-                       verbose = true;
-                       break;
-               case 'z':
-                       origintext = strrchr(isc_commandline_argument, '/');
-                       if (origintext == NULL) {
-                               origintext = isc_commandline_argument;
-                       } else {
-                               origintext++; /* Skip '/'. */
-                       }
-                       result = load(isc_commandline_argument, origintext,
-                                     false);
-                       if (result != ISC_R_SUCCESS) {
-                               printf("zone load(%s) %08x: %s\n",
-                                      isc_commandline_argument, result,
-                                      isc_result_totext(result));
-                       }
-                       break;
-               }
-       }
-
-       argc -= isc_commandline_index;
-       argv += isc_commandline_index;
-       POST(argv);
-
-       if (argc != 0) {
-               printf("ignoring trailing arguments\n");
-       }
-
-       /*
-        * Some final initialization...
-        */
-       fname = dns_fixedname_initname(&foundname);
-       dbi = NULL;
-       origin = dns_rootname;
-       version = NULL;
-
-       if (time_lookups) {
-               TIME_NOW(&start);
-       }
-
-       while (!done) {
-               if (!quiet) {
-                       printf("\n");
-               }
-               if (fgets(s, sizeof(s), stdin) == NULL) {
-                       done = true;
-                       continue;
-               }
-               len = strlen(s);
-               if (len > 0U && s[len - 1] == '\n') {
-                       s[len - 1] = '\0';
-                       len--;
-               }
-               if (verbose && dbi != NULL) {
-                       if (dbi->wversion != NULL) {
-                               printf("future version (%p)\n", dbi->wversion);
-                       }
-                       for (i = 0; i < dbi->rcount; i++) {
-                               if (dbi->rversions[i] != NULL) {
-                                       printf("open version %d (%p)\n", i,
-                                              dbi->rversions[i]);
-                               }
-                       }
-               }
-               dns_name_init(&name, offsets);
-               if (strcmp(s, "!R") == 0) {
-                       DBI_CHECK(dbi);
-                       if (dbi->rcount == MAXVERSIONS) {
-                               printf("too many open versions\n");
-                               continue;
-                       }
-                       dns_db_currentversion(dbi->db,
-                                             &dbi->rversions[dbi->rcount]);
-                       printf("opened version %d\n", dbi->rcount);
-                       dbi->version = dbi->rversions[dbi->rcount];
-                       version = dbi->version;
-                       dbi->rcount++;
-                       continue;
-               } else if (strcmp(s, "!W") == 0) {
-                       DBI_CHECK(dbi);
-                       if (dbi->wversion != NULL) {
-                               printf("using existing future version\n");
-                               dbi->version = dbi->wversion;
-                               version = dbi->version;
-                               continue;
-                       }
-                       result = dns_db_newversion(dbi->db, &dbi->wversion);
-                       if (result != ISC_R_SUCCESS) {
-                               print_result("", result);
-                       } else {
-                               printf("newversion\n");
-                       }
-                       dbi->version = dbi->wversion;
-                       version = dbi->version;
-                       continue;
-               } else if (strcmp(s, "!C") == 0) {
-                       DBI_CHECK(dbi);
-                       addmode = false;
-                       delmode = false;
-                       if (dbi->version == NULL) {
-                               continue;
-                       }
-                       if (dbi->version == dbi->wversion) {
-                               printf("closing future version\n");
-                               dbi->wversion = NULL;
-                       } else {
-                               for (i = 0; i < dbi->rcount; i++) {
-                                       if (dbi->version == dbi->rversions[i]) {
-                                               dbi->rversions[i] = NULL;
-                                               printf("closing open version "
-                                                      "%d\n",
-                                                      i);
-                                               break;
-                                       }
-                               }
-                       }
-                       dns_db_closeversion(dbi->db, &dbi->version, true);
-                       version = NULL;
-                       continue;
-               } else if (strcmp(s, "!X") == 0) {
-                       DBI_CHECK(dbi);
-                       addmode = false;
-                       delmode = false;
-                       if (dbi->version == NULL) {
-                               continue;
-                       }
-                       if (dbi->version == dbi->wversion) {
-                               printf("aborting future version\n");
-                               dbi->wversion = NULL;
-                       } else {
-                               for (i = 0; i < dbi->rcount; i++) {
-                                       if (dbi->version == dbi->rversions[i]) {
-                                               dbi->rversions[i] = NULL;
-                                               printf("closing open version "
-                                                      "%d\n",
-                                                      i);
-                                               break;
-                                       }
-                               }
-                       }
-                       dns_db_closeversion(dbi->db, &dbi->version, false);
-                       version = NULL;
-                       continue;
-               } else if (strcmp(s, "!A") == 0) {
-                       DBI_CHECK(dbi);
-                       delmode = false;
-                       if (addmode) {
-                               addmode = false;
-                       } else {
-                               addmode = true;
-                       }
-                       printf("addmode = %s\n", addmode ? "TRUE" : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!D") == 0) {
-                       DBI_CHECK(dbi);
-                       addmode = false;
-                       if (delmode) {
-                               delmode = false;
-                       } else {
-                               delmode = true;
-                       }
-                       printf("delmode = %s\n", delmode ? "TRUE" : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!H") == 0) {
-                       DBI_CHECK(dbi);
-                       if (holdmode) {
-                               holdmode = false;
-                       } else {
-                               holdmode = true;
-                       }
-                       printf("holdmode = %s\n", holdmode ? "TRUE" : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!HR") == 0) {
-                       DBI_CHECK(dbi);
-                       for (i = 0; i < dbi->hold_count; i++) {
-                               dns_db_detachnode(dbi->db, &dbi->hold_nodes[i]);
-                       }
-                       dbi->hold_count = 0;
-                       holdmode = false;
-                       printf("held nodes have been detached\n");
-                       continue;
-               } else if (strcmp(s, "!VC") == 0) {
-                       DBI_CHECK(dbi);
-                       printf("switching to current version\n");
-                       dbi->version = NULL;
-                       version = NULL;
-                       continue;
-               } else if (strstr(s, "!V") == s) {
-                       DBI_CHECK(dbi);
-                       v = atoi(&s[2]);
-                       if (v >= dbi->rcount || v < 0) {
-                               printf("unknown open version %d\n", v);
-                               continue;
-                       }
-                       if (dbi->rversions[v] == NULL) {
-                               printf("version %d is not open\n", v);
-                               continue;
-                       }
-                       printf("switching to open version %d\n", v);
-                       dbi->version = dbi->rversions[v];
-                       version = dbi->version;
-                       continue;
-               } else if (strstr(s, "!TR") == s) {
-                       trust = (unsigned int)atoi(&s[3]);
-                       printf("trust level is now %u\n", (unsigned int)trust);
-                       continue;
-               } else if (strstr(s, "!T") == s) {
-                       type = (unsigned int)atoi(&s[2]);
-                       printf("now searching for type %u\n", type);
-                       continue;
-               } else if (strcmp(s, "!G") == 0) {
-                       if ((options & DNS_DBFIND_GLUEOK) != 0) {
-                               options &= ~DNS_DBFIND_GLUEOK;
-                       } else {
-                               options |= DNS_DBFIND_GLUEOK;
-                       }
-                       printf("glue ok = %s\n",
-                              ((options & DNS_DBFIND_GLUEOK) != 0) ? "TRUE"
-                                                                   : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!GV") == 0) {
-                       if ((options & DNS_DBFIND_VALIDATEGLUE) != 0) {
-                               options &= ~DNS_DBFIND_VALIDATEGLUE;
-                       } else {
-                               options |= DNS_DBFIND_VALIDATEGLUE;
-                       }
-                       printf("validate glue = %s\n",
-                              ((options & DNS_DBFIND_VALIDATEGLUE) != 0)
-                                      ? "TRUE"
-                                      : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!WC") == 0) {
-                       if ((options & DNS_DBFIND_NOWILD) != 0) {
-                               options &= ~DNS_DBFIND_NOWILD;
-                       } else {
-                               options |= DNS_DBFIND_NOWILD;
-                       }
-                       printf("wildcard matching = %s\n",
-                              ((options & DNS_DBFIND_NOWILD) == 0) ? "TRUE"
-                                                                   : "FALSE");
-                       continue;
-               } else if (strstr(s, "!LS ") == s) {
-                       DBI_CHECK(dbi);
-                       list(dbi, &s[4]);
-                       continue;
-               } else if (strcmp(s, "!LS") == 0) {
-                       DBI_CHECK(dbi);
-                       list(dbi, NULL);
-                       continue;
-               } else if (strstr(s, "!DU ") == s) {
-                       DBI_CHECK(dbi);
-                       result = dns_db_dump(dbi->db, dbi->version, s + 4);
-                       if (result != ISC_R_SUCCESS) {
-                               printf("\n");
-                               print_result("", result);
-                       }
-                       continue;
-               } else if (strcmp(s, "!PN") == 0) {
-                       if (printnode) {
-                               printnode = false;
-                       } else {
-                               printnode = true;
-                       }
-                       printf("printnode = %s\n",
-                              printnode ? "TRUE" : "FALSE");
-                       continue;
-               } else if (strstr(s, "!P") == s) {
-                       DBI_CHECK(dbi);
-                       v = atoi(&s[2]);
-                       dbi->pause_every = v;
-                       continue;
-               } else if (strcmp(s, "!+") == 0) {
-                       DBI_CHECK(dbi);
-                       dbi->ascending = true;
-                       continue;
-               } else if (strcmp(s, "!-") == 0) {
-                       DBI_CHECK(dbi);
-                       dbi->ascending = false;
-                       continue;
-               } else if (strcmp(s, "!DB") == 0) {
-                       dbi = NULL;
-                       origin = dns_rootname;
-                       version = NULL;
-                       printf("now searching all databases\n");
-                       continue;
-               } else if (strncmp(s, "!DB ", 4) == 0) {
-                       dbi = select_db(s + 4);
-                       if (dbi != NULL) {
-                               db = dbi->db;
-                               origin = dns_db_origin(dbi->db);
-                               version = dbi->version;
-                               addmode = false;
-                               delmode = false;
-                               holdmode = false;
-                       } else {
-                               db = NULL;
-                               version = NULL;
-                               origin = dns_rootname;
-                               printf("database not found; "
-                                      "now searching all databases\n");
-                       }
-                       continue;
-               } else if (strcmp(s, "!ZC") == 0) {
-                       if (find_zonecut) {
-                               find_zonecut = false;
-                       } else {
-                               find_zonecut = true;
-                       }
-                       printf("find_zonecut = %s\n",
-                              find_zonecut ? "TRUE" : "FALSE");
-                       continue;
-               } else if (strcmp(s, "!NZ") == 0) {
-                       if (noexact_zonecut) {
-                               noexact_zonecut = false;
-                       } else {
-                               noexact_zonecut = true;
-                       }
-                       printf("noexact_zonecut = %s\n",
-                              noexact_zonecut ? "TRUE" : "FALSE");
-                       continue;
-               }
-
-               isc_buffer_init(&source, s, len);
-               isc_buffer_add(&source, len);
-               isc_buffer_init(&target, b, sizeof(b));
-               result = dns_name_fromtext(&name, &source, origin, 0, &target);
-               if (result != ISC_R_SUCCESS) {
-                       print_result("bad name: ", result);
-                       continue;
-               }
-
-               if (dbi == NULL) {
-                       zcoptions = 0;
-                       if (noexact_zonecut) {
-                               zcoptions |= DNS_DBTABLEFIND_NOEXACT;
-                       }
-                       db = NULL;
-                       result = dns_dbtable_find(dbtable, &name, zcoptions,
-                                                 &db);
-                       if (result != ISC_R_SUCCESS &&
-                           result != DNS_R_PARTIALMATCH) {
-                               if (!quiet) {
-                                       printf("\n");
-                                       print_result("", result);
-                               }
-                               continue;
-                       }
-                       isc_buffer_init(&tb1, t1, sizeof(t1));
-                       result = dns_name_totext(dns_db_origin(db), false,
-                                                &tb1);
-                       if (result != ISC_R_SUCCESS) {
-                               printf("\n");
-                               print_result("", result);
-                               dns_db_detach(&db);
-                               continue;
-                       }
-                       isc_buffer_usedregion(&tb1, &r1);
-                       printf("\ndatabase = %.*s (%s)\n", (int)r1.length,
-                              r1.base, (dns_db_iszone(db)) ? "zone" : "cache");
-               }
-               node = NULL;
-               dns_rdataset_init(&rdataset);
-               dns_rdataset_init(&sigrdataset);
-
-               if (find_zonecut && dns_db_iscache(db)) {
-                       zcoptions = options;
-                       if (noexact_zonecut) {
-                               zcoptions |= DNS_DBFIND_NOEXACT;
-                       }
-                       result = dns_db_findzonecut(db, &name, zcoptions, 0,
-                                                   &node, fname, NULL,
-                                                   &rdataset, &sigrdataset);
-               } else {
-                       result = dns_db_find(db, &name, version, type, options,
-                                            0, &node, fname, &rdataset,
-                                            &sigrdataset);
-               }
-
-               if (!quiet) {
-                       if (dbi != NULL) {
-                               printf("\n");
-                       }
-                       print_result("", result);
-               }
-
-               found_as = false;
-               switch (result) {
-               case ISC_R_SUCCESS:
-               case DNS_R_GLUE:
-               case DNS_R_CNAME:
-               case DNS_R_ZONECUT:
-                       break;
-               case DNS_R_DNAME:
-               case DNS_R_DELEGATION:
-                       found_as = true;
-                       break;
-               case DNS_R_NXRRSET:
-                       if (dns_rdataset_isassociated(&rdataset)) {
-                               break;
-                       }
-                       if (dbi != NULL) {
-                               if (holdmode) {
-                                       RUNTIME_CHECK(dbi->hold_count <
-                                                     MAXHOLD);
-                                       dbi->hold_nodes[dbi->hold_count++] =
-                                               node;
-                                       node = NULL;
-                               } else {
-                                       dns_db_detachnode(db, &node);
-                               }
-                       } else {
-                               dns_db_detachnode(db, &node);
-                               dns_db_detach(&db);
-                       }
-                       continue;
-               case DNS_R_NXDOMAIN:
-                       if (dns_rdataset_isassociated(&rdataset)) {
-                               break;
-                       }
-               /* FALLTHROUGH */
-               default:
-                       if (dbi == NULL) {
-                               dns_db_detach(&db);
-                       }
-                       if (quiet) {
-                               print_result("", result);
-                       }
-                       continue;
-               }
-               if (found_as && !quiet) {
-                       isc_buffer_init(&tb1, t1, sizeof(t1));
-                       isc_buffer_init(&tb2, t2, sizeof(t2));
-                       result = dns_name_totext(&name, false, &tb1);
-                       if (result != ISC_R_SUCCESS) {
-                               print_result("", result);
-                               dns_db_detachnode(db, &node);
-                               if (dbi == NULL) {
-                                       dns_db_detach(&db);
-                               }
-                               continue;
-                       }
-                       result = dns_name_totext(fname, false, &tb2);
-                       if (result != ISC_R_SUCCESS) {
-                               print_result("", result);
-                               dns_db_detachnode(db, &node);
-                               if (dbi == NULL) {
-                                       dns_db_detach(&db);
-                               }
-                               continue;
-                       }
-                       isc_buffer_usedregion(&tb1, &r1);
-                       isc_buffer_usedregion(&tb2, &r2);
-                       printf("found %.*s as %.*s\n", (int)r1.length, r1.base,
-                              (int)r2.length, r2.base);
-               }
-
-               if (printnode) {
-                       dns_db_printnode(db, node, stdout);
-               }
-
-               if (!found_as && type == dns_rdatatype_any) {
-                       rdsiter = NULL;
-                       result = dns_db_allrdatasets(db, node, version, 0,
-                                                    &rdsiter);
-                       if (result == ISC_R_SUCCESS) {
-                               if (!quiet) {
-                                       print_rdatasets(fname, rdsiter);
-                               }
-                               dns_rdatasetiter_destroy(&rdsiter);
-                       } else {
-                               print_result("", result);
-                       }
-               } else {
-                       if (!quiet) {
-                               print_rdataset(fname, &rdataset);
-                       }
-                       if (dns_rdataset_isassociated(&sigrdataset)) {
-                               if (!quiet) {
-                                       print_rdataset(fname, &sigrdataset);
-                               }
-                               dns_rdataset_disassociate(&sigrdataset);
-                       }
-                       if (dbi != NULL && addmode && !found_as) {
-                               rdataset.ttl++;
-                               rdataset.trust = trust;
-                               if (dns_db_iszone(db)) {
-                                       addopts = DNS_DBADD_MERGE;
-                               } else {
-                                       addopts = 0;
-                               }
-                               result = dns_db_addrdataset(db, node, version,
-                                                           0, &rdataset,
-                                                           addopts, NULL);
-                               if (result != ISC_R_SUCCESS) {
-                                       print_result("", result);
-                               }
-                               if (printnode) {
-                                       dns_db_printnode(db, node, stdout);
-                               }
-                       } else if (dbi != NULL && delmode && !found_as) {
-                               result = dns_db_deleterdataset(
-                                       db, node, version, type, 0);
-                               if (result != ISC_R_SUCCESS) {
-                                       print_result("", result);
-                               }
-                               if (printnode) {
-                                       dns_db_printnode(db, node, stdout);
-                               }
-                       }
-                       dns_rdataset_disassociate(&rdataset);
-               }
-
-               if (dbi != NULL) {
-                       if (holdmode) {
-                               RUNTIME_CHECK(dbi->hold_count < MAXHOLD);
-                               dbi->hold_nodes[dbi->hold_count++] = node;
-                               node = NULL;
-                       } else {
-                               dns_db_detachnode(db, &node);
-                       }
-               } else {
-                       dns_db_detachnode(db, &node);
-                       dns_db_detach(&db);
-               }
-       }
-
-       if (time_lookups) {
-               uint64_t usec;
-
-               TIME_NOW(&finish);
-
-               usec = isc_time_microdiff(&finish, &start);
-
-               printf("elapsed time: %lu.%06lu seconds\n",
-                      (unsigned long)(usec / 1000000),
-                      (unsigned long)(usec % 1000000));
-       }
-
-       unload_all();
-
-       dns_dbtable_detach(&dbtable);
-
-       if (lctx != NULL) {
-               isc_log_destroy(&lctx);
-       }
-
-       if (!quiet) {
-               isc_mem_stats(mctx, stdout);
-       }
-
-       return (0);
-}
diff --git a/bin/tests/optional/fsaccess_test.c b/bin/tests/optional/fsaccess_test.c
deleted file mode 100644 (file)
index 5a42210..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>  /* Non-portable. */
-#include <sys/types.h> /* Non-portable. */
-
-#include <isc/fsaccess.h>
-#include <isc/print.h>
-#include <isc/result.h>
-
-#define PATH "/tmp/fsaccess"
-
-int
-main(void) {
-       isc_fsaccess_t access;
-       isc_result_t result;
-       FILE *fp;
-       int n;
-
-       n = remove(PATH);
-       if (n != 0 && errno != ENOENT) {
-               fprintf(stderr, "unable to remove(%s)\n", PATH);
-               exit(1);
-       }
-       fp = fopen(PATH, "w");
-       if (fp == NULL) {
-               fprintf(stderr, "unable to fopen(%s)\n", PATH);
-               exit(1);
-       }
-       n = chmod(PATH, 0);
-       if (n != 0) {
-               fprintf(stderr, "unable chmod(%s, 0)\n", PATH);
-               exit(1);
-       }
-
-       access = 0;
-
-       isc_fsaccess_add(ISC_FSACCESS_OWNER | ISC_FSACCESS_GROUP,
-                        ISC_FSACCESS_READ | ISC_FSACCESS_WRITE, &access);
-
-       printf("fsaccess=%u\n", access);
-
-       isc_fsaccess_add(ISC_FSACCESS_OTHER, ISC_FSACCESS_READ, &access);
-
-       printf("fsaccess=%u\n", access);
-
-       result = isc_fsaccess_set(PATH, access);
-       if (result != ISC_R_SUCCESS) {
-               fprintf(stderr, "result = %s\n", isc_result_totext(result));
-       }
-       (void)fclose(fp);
-
-       return (0);
-}
diff --git a/bin/tests/optional/gsstest.c b/bin/tests/optional/gsstest.c
deleted file mode 100644 (file)
index dfc1052..0000000
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <isc/app.h>
-#include <isc/base64.h>
-#include <isc/log.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/sockaddr.h>
-#include <isc/socket.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/dispatch.h>
-#include <dns/dnssec.h>
-#include <dns/events.h>
-#include <dns/fixedname.h>
-#include <dns/keyvalues.h>
-#include <dns/log.h>
-#include <dns/masterdump.h>
-#include <dns/message.h>
-#include <dns/name.h>
-#include <dns/rdataset.h>
-#include <dns/request.h>
-#include <dns/resolver.h>
-#include <dns/result.h>
-#include <dns/tkey.h>
-#include <dns/tsig.h>
-#include <dns/types.h>
-#include <dns/view.h>
-
-#include <dst/result.h>
-
-#ifdef GSSAPI
-#include ISC_PLATFORM_GSSAPIHEADER
-
-#define CHECK(str, x)                                                     \
-       {                                                                 \
-               if ((x) != ISC_R_SUCCESS) {                               \
-                       fprintf(stderr, "I:%d:%s: %s\n", __LINE__, (str), \
-                               isc_result_totext(x));                    \
-                       goto end;                                         \
-               }                                                         \
-       }
-
-static dns_fixedname_t servername, gssname;
-
-static isc_mem_t *mctx;
-static dns_requestmgr_t *requestmgr;
-static isc_sockaddr_t address;
-
-static dns_tsig_keyring_t *ring;
-static dns_tsigkey_t *tsigkey = NULL;
-static gss_ctx_id_t gssctx;
-static gss_ctx_id_t *gssctxp = &gssctx;
-
-#define RUNCHECK(x) RUNTIME_CHECK((x) == ISC_R_SUCCESS)
-
-#define PORT   53
-#define TIMEOUT 30
-
-static void
-initctx1(isc_task_t *task, isc_event_t *event);
-static void
-sendquery(isc_task_t *task, isc_event_t *event);
-static void
-setup();
-
-static void
-console(isc_task_t *task, isc_event_t *event) {
-       char buf[32];
-       int c;
-
-       isc_event_t *ev = NULL;
-
-       isc_event_free(&event);
-
-       for (;;) {
-               printf("\nCommand => ");
-               c = scanf("%31s", buf);
-
-               if (c == EOF || strcmp(buf, "quit") == 0) {
-                       isc_app_shutdown();
-                       return;
-               }
-
-               if (strcmp(buf, "initctx") == 0) {
-                       ev = isc_event_allocate(mctx, (void *)1, 1, initctx1,
-                                               NULL, sizeof(*event));
-                       isc_task_send(task, &ev);
-                       return;
-               }
-
-               if (strcmp(buf, "query") == 0) {
-                       ev = isc_event_allocate(mctx, (void *)1, 1, sendquery,
-                                               NULL, sizeof(*event));
-                       isc_task_send(task, &ev);
-                       return;
-               }
-
-               printf("Unknown command\n");
-       }
-}
-
-static void
-recvresponse(isc_task_t *task, isc_event_t *event) {
-       dns_requestevent_t *reqev = (dns_requestevent_t *)event;
-       isc_result_t result, result2;
-       dns_message_t *query = NULL, *response = NULL;
-       isc_buffer_t outtoken;
-       isc_buffer_t outbuf;
-       char output[10 * 1024];
-
-       unsigned char array[DNS_NAME_MAXTEXT + 1];
-       isc_buffer_init(&outtoken, array, sizeof(array));
-
-       UNUSED(task);
-
-       REQUIRE(reqev != NULL);
-
-       query = reqev->ev_arg;
-
-       if (reqev->result != ISC_R_SUCCESS) {
-               fprintf(stderr, "I:request event result: %s\n",
-                       isc_result_totext(reqev->result));
-               goto end;
-       }
-
-       response = NULL;
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
-       CHECK("dns_message_create", result);
-
-       printf("\nReceived Response:\n");
-
-       result2 = dns_request_getresponse(reqev->request, response,
-                                         DNS_MESSAGEPARSE_PRESERVEORDER);
-       isc_buffer_init(&outbuf, output, sizeof(output));
-       result = dns_message_totext(response, &dns_master_style_debug, 0,
-                                   &outbuf);
-       CHECK("dns_message_totext", result);
-       printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
-              (char *)isc_buffer_base(&outbuf));
-
-       CHECK("dns_request_getresponse", result2);
-
-       if (response != NULL) {
-               dns_message_destroy(&response);
-       }
-
-end:
-       if (query != NULL) {
-               dns_message_destroy(&query);
-       }
-
-       if (reqev->request != NULL) {
-               dns_request_destroy(&reqev->request);
-       }
-
-       isc_event_free(&event);
-
-       event = isc_event_allocate(mctx, (void *)1, 1, console, NULL,
-                                  sizeof(*event));
-       isc_task_send(task, &event);
-       return;
-}
-
-static void
-sendquery(isc_task_t *task, isc_event_t *event) {
-       dns_request_t *request = NULL;
-       dns_message_t *message = NULL;
-       dns_name_t *qname = NULL;
-       dns_rdataset_t *qrdataset = NULL;
-       isc_result_t result;
-       dns_fixedname_t queryname;
-       isc_buffer_t buf;
-       isc_buffer_t outbuf;
-       char output[10 * 1024];
-       static char host[256];
-       int c;
-
-       isc_event_free(&event);
-
-       printf("Query => ");
-       c = scanf("%255s", host);
-       if (c == EOF) {
-               return;
-       }
-
-       dns_fixedname_init(&queryname);
-       isc_buffer_init(&buf, host, strlen(host));
-       isc_buffer_add(&buf, strlen(host));
-       result = dns_name_fromtext(dns_fixedname_name(&queryname), &buf,
-                                  dns_rootname, 0, NULL);
-       CHECK("dns_name_fromtext", result);
-
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &message);
-       if (result != ISC_R_SUCCESS) {
-               goto end;
-       }
-
-       message->opcode = dns_opcode_query;
-       message->rdclass = dns_rdataclass_in;
-       message->id = (unsigned short)(random() & 0xFFFF);
-
-       result = dns_message_gettempname(message, &qname);
-       if (result != ISC_R_SUCCESS) {
-               goto end;
-       }
-
-       result = dns_message_gettemprdataset(message, &qrdataset);
-       if (result != ISC_R_SUCCESS) {
-               goto end;
-       }
-
-       dns_name_init(qname, NULL);
-       dns_name_clone(dns_fixedname_name(&queryname), qname);
-       dns_rdataset_makequestion(qrdataset, dns_rdataclass_in,
-                                 dns_rdatatype_a);
-       ISC_LIST_APPEND(qname->list, qrdataset, link);
-       dns_message_addname(message, qname, DNS_SECTION_QUESTION);
-
-       result = dns_request_create(requestmgr, message, &address, 0, tsigkey,
-                                   TIMEOUT, task, recvresponse, message,
-                                   &request);
-       CHECK("dns_request_create", result);
-
-       printf("Submitting query:\n");
-       isc_buffer_init(&outbuf, output, sizeof(output));
-       result = dns_message_totext(message, &dns_master_style_debug, 0,
-                                   &outbuf);
-       CHECK("dns_message_totext", result);
-       printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
-              (char *)isc_buffer_base(&outbuf));
-
-       return;
-
-end:
-       if (qname != NULL) {
-               dns_message_puttempname(message, &qname);
-       }
-       if (qrdataset != NULL) {
-               dns_message_puttemprdataset(message, &qrdataset);
-       }
-       if (message != NULL) {
-               dns_message_destroy(&message);
-       }
-}
-
-static void
-initctx2(isc_task_t *task, isc_event_t *event) {
-       dns_requestevent_t *reqev = (dns_requestevent_t *)event;
-       isc_result_t result;
-       dns_message_t *query = NULL, *response = NULL;
-       isc_buffer_t outtoken;
-       unsigned char array[DNS_NAME_MAXTEXT + 1];
-       dns_rdataset_t *rdataset;
-       dns_rdatatype_t qtype;
-       dns_name_t *question_name;
-
-       UNUSED(task);
-
-       REQUIRE(reqev != NULL);
-
-       query = reqev->ev_arg;
-
-       if (reqev->result != ISC_R_SUCCESS) {
-               fprintf(stderr, "I:request event result: %s\n",
-                       isc_result_totext(reqev->result));
-               goto end;
-       }
-
-       response = NULL;
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
-       CHECK("dns_message_create", result);
-
-       result = dns_request_getresponse(reqev->request, response,
-                                        DNS_MESSAGEPARSE_PRESERVEORDER);
-       CHECK("dns_request_getresponse", result);
-
-       if (response->rcode != dns_rcode_noerror) {
-               result = ISC_RESULTCLASS_DNSRCODE + response->rcode;
-               fprintf(stderr, "I:response rcode: %s\n",
-                       isc_result_totext(result));
-               goto end;
-       }
-
-       printf("Received token from server, calling gss_init_sec_context()\n");
-       isc_buffer_init(&outtoken, array, DNS_NAME_MAXTEXT + 1);
-       result = dns_tkey_processgssresponse(
-               query, response, dns_fixedname_name(&gssname), &gssctx,
-               &outtoken, &tsigkey, ring, NULL);
-       gssctx = *gssctxp;
-       CHECK("dns_tkey_processgssresponse", result);
-       printf("Context accepted\n");
-
-       question_name = NULL;
-       dns_message_currentname(response, DNS_SECTION_ANSWER, &question_name);
-       rdataset = ISC_LIST_HEAD(question_name->list);
-       INSIST(rdataset != NULL);
-       qtype = rdataset->type;
-       if (qtype == dns_rdatatype_tkey) {
-               printf("Received TKEY response from server\n");
-               printf("Context completed\n");
-       } else {
-               printf("Did not receive TKEY response from server\n");
-               printf("Context not completed\n");
-               dns_tsigkey_detach(&tsigkey);
-               tsigkey = NULL;
-       }
-
-       dns_message_destroy(&response);
-
-end:
-       if (query != NULL) {
-               dns_message_destroy(&query);
-       }
-
-       if (reqev->request != NULL) {
-               dns_request_destroy(&reqev->request);
-       }
-
-       isc_event_free(&event);
-
-       event = isc_event_allocate(mctx, (void *)1, 1, console, NULL,
-                                  sizeof(*event));
-       isc_task_send(task, &event);
-       return;
-}
-
-static void
-initctx1(isc_task_t *task, isc_event_t *event) {
-       char gssid[512];
-       char contextname[512];
-       isc_result_t result;
-       isc_buffer_t buf;
-       dns_message_t *query;
-       dns_request_t *request;
-       int c;
-
-       isc_event_free(&event);
-
-       printf("Initctx - GSS name => ");
-       c = scanf("%511s", gssid);
-       if (c == EOF) {
-               return;
-       }
-
-       snprintf(contextname, sizeof(contextname), "gsstest.context.%d.",
-                (int)time(NULL));
-
-       printf("Initctx - context name we're using: %s\n", contextname);
-
-       printf("Negotiating GSSAPI context: ");
-       printf("%s", gssid);
-       printf("\n");
-
-       /*
-        * Setup a GSSAPI context with the server
-        */
-       dns_fixedname_init(&servername);
-       isc_buffer_init(&buf, contextname, strlen(contextname));
-       isc_buffer_add(&buf, strlen(contextname));
-       result = dns_name_fromtext(dns_fixedname_name(&servername), &buf,
-                                  dns_rootname, 0, NULL);
-       CHECK("dns_name_fromtext", result);
-
-       /* Make name happen */
-       dns_fixedname_init(&gssname);
-       isc_buffer_init(&buf, gssid, strlen(gssid));
-       isc_buffer_add(&buf, strlen(gssid));
-       result = dns_name_fromtext(dns_fixedname_name(&gssname), &buf,
-                                  dns_rootname, 0, NULL);
-       CHECK("dns_name_fromtext", result);
-
-       query = NULL;
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
-       CHECK("dns_message_create", result);
-
-       printf("Calling gss_init_sec_context()\n");
-       gssctx = GSS_C_NO_CONTEXT;
-       result = dns_tkey_buildgssquery(query, dns_fixedname_name(&servername),
-                                       dns_fixedname_name(&gssname), NULL,
-                                       36000, &gssctx, true, mctx, NULL);
-       CHECK("dns_tkey_buildgssquery", result);
-
-       printf("Sending context token to server\n");
-       request = NULL;
-       result = dns_request_create(requestmgr, query, &address, 0, NULL,
-                                   TIMEOUT, task, initctx2, query, &request);
-       CHECK("dns_request_create", result);
-
-       return;
-end:
-       event = isc_event_allocate(mctx, (void *)1, 1, console, NULL,
-                                  sizeof(*event));
-       isc_task_send(task, &event);
-       return;
-}
-
-static void
-setup(void) {
-       for (;;) {
-               char serveraddress[512];
-               struct in_addr inaddr;
-               int c;
-
-               printf("Server IP => ");
-               c = scanf("%511s", serveraddress);
-
-               if (c == EOF || strcmp(serveraddress, "quit") == 0) {
-                       isc_app_shutdown();
-                       return;
-               }
-
-               if (inet_pton(AF_INET, serveraddress, &inaddr) == 1) {
-                       isc_sockaddr_fromin(&address, &inaddr, PORT);
-                       return;
-               }
-       }
-}
-
-int
-main(int argc, char *argv[]) {
-       isc_taskmgr_t *taskmgr;
-       isc_timermgr_t *timermgr;
-       isc_socketmgr_t *socketmgr;
-       isc_socket_t *sock;
-       unsigned int attrs, attrmask;
-       isc_sockaddr_t bind_any;
-       dns_dispatchmgr_t *dispatchmgr;
-       dns_dispatch_t *dispatchv4;
-       dns_view_t *view;
-       isc_task_t *task;
-       isc_log_t *lctx = NULL;
-       isc_logconfig_t *lcfg = NULL;
-       isc_logdestination_t destination;
-
-       UNUSED(argv);
-       UNUSED(argc);
-
-       RUNCHECK(isc_app_start());
-
-       dns_result_register();
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       isc_log_create(mctx, &lctx, &lcfg);
-       isc_log_setcontext(lctx);
-       dns_log_init(lctx);
-       dns_log_setcontext(lctx);
-
-       /*
-        * Create and install the default channel.
-        */
-       destination.file.stream = stderr;
-       destination.file.name = NULL;
-       destination.file.versions = ISC_LOG_ROLLNEVER;
-       destination.file.maximum_size = 0;
-       isc_log_createchannel(lcfg, "_default", ISC_LOG_TOFILEDESC,
-                             ISC_LOG_DYNAMIC, &destination, ISC_LOG_PRINTTIME);
-
-       RUNCHECK(isc_log_usechannel(lcfg, "_default", NULL, NULL));
-
-       isc_log_setdebuglevel(lctx, 9);
-
-       RUNCHECK(dst_lib_init(mctx, NULL));
-
-       taskmgr = NULL;
-       RUNCHECK(isc_taskmgr_create(mctx, 1, 0, NULL, &taskmgr));
-       task = NULL;
-       RUNCHECK(isc_task_create(taskmgr, 0, &task));
-       timermgr = NULL;
-       RUNCHECK(isc_timermgr_create(mctx, &timermgr));
-       socketmgr = NULL;
-       RUNCHECK(isc_socketmgr_create(mctx, &socketmgr));
-       dispatchmgr = NULL;
-       RUNCHECK(dns_dispatchmgr_create(mctx, &dispatchmgr));
-       isc_sockaddr_any(&bind_any);
-       attrs = DNS_DISPATCHATTR_UDP | DNS_DISPATCHATTR_MAKEQUERY |
-               DNS_DISPATCHATTR_IPV4;
-       attrmask = DNS_DISPATCHATTR_UDP | DNS_DISPATCHATTR_TCP |
-                  DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_IPV6;
-       dispatchv4 = NULL;
-       RUNCHECK(dns_dispatch_getudp(dispatchmgr, socketmgr, taskmgr, &bind_any,
-                                    4096, 4, 2, 3, 5, attrs, attrmask,
-                                    &dispatchv4));
-       requestmgr = NULL;
-       RUNCHECK(dns_requestmgr_create(mctx, timermgr, socketmgr, taskmgr,
-                                      dispatchmgr, dispatchv4, NULL,
-                                      &requestmgr));
-
-       ring = NULL;
-       RUNCHECK(dns_tsigkeyring_create(mctx, &ring));
-
-       view = NULL;
-       RUNCHECK(dns_view_create(mctx, 0, "_test", &view));
-       dns_view_setkeyring(view, ring);
-
-       sock = NULL;
-       RUNCHECK(isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp,
-                                  &sock));
-
-       setup();
-
-       RUNCHECK(isc_app_onrun(mctx, task, console, NULL));
-
-       (void)isc_app_run();
-
-       if (tsigkey) {
-               dns_tsigkey_detach(&tsigkey);
-       }
-
-       dns_requestmgr_shutdown(requestmgr);
-       dns_requestmgr_detach(&requestmgr);
-
-       dns_dispatch_detach(&dispatchv4);
-       dns_dispatchmgr_destroy(&dispatchmgr);
-
-       isc_timermgr_destroy(&timermgr);
-
-       isc_task_detach(&task);
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_socket_detach(&sock);
-       isc_socketmgr_destroy(&socketmgr);
-
-       isc_mem_stats(mctx, stdout);
-
-       dns_view_detach(&view);
-
-       dst_lib_destroy();
-
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-
-       isc_app_finish();
-
-       return (0);
-}
-#else  /* ifdef GSSAPI */
-int
-main(int argc, char *argv[]) {
-       UNUSED(argc);
-       UNUSED(argv);
-       fprintf(stderr, "R:GSSAPIONLY\n");
-       return (0);
-}
-#endif /* ifdef GSSAPI */
diff --git a/bin/tests/optional/inter_test.c b/bin/tests/optional/inter_test.c
deleted file mode 100644 (file)
index 3d1ab92..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <stdlib.h>
-
-#include <isc/interfaceiter.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/util.h>
-
-int
-main(int argc, char **argv) {
-       isc_mem_t *mctx = NULL;
-       isc_interfaceiter_t *iter = NULL;
-       isc_interface_t ifdata;
-       isc_result_t result;
-       const char *res;
-       char buf[128];
-
-       UNUSED(argc);
-       UNUSED(argv);
-
-       isc_mem_create(&mctx);
-       result = isc_interfaceiter_create(mctx, &iter);
-       if (result != ISC_R_SUCCESS) {
-               goto cleanup;
-       }
-       result = isc_interfaceiter_first(iter);
-       while (result == ISC_R_SUCCESS) {
-               result = isc_interfaceiter_current(iter, &ifdata);
-               if (result != ISC_R_SUCCESS) {
-                       fprintf(stdout, "isc_interfaceiter_current: %s",
-                               isc_result_totext(result));
-                       continue;
-               }
-               fprintf(stdout, "%s %u %x\n", ifdata.name, ifdata.af,
-                       ifdata.flags);
-               INSIST(ifdata.af == AF_INET || ifdata.af == AF_INET6);
-               res = inet_ntop(ifdata.af, &ifdata.address.type, buf,
-                               sizeof(buf));
-               if (ifdata.address.zone != 0) {
-                       fprintf(stdout, "address = %s (zone %u)\n",
-                               res == NULL ? "BAD" : res, ifdata.address.zone);
-               } else {
-                       fprintf(stdout, "address = %s\n",
-                               res == NULL ? "BAD" : res);
-               }
-               INSIST(ifdata.address.family == ifdata.af);
-               res = inet_ntop(ifdata.af, &ifdata.netmask.type, buf,
-                               sizeof(buf));
-               fprintf(stdout, "netmask = %s\n", res == NULL ? "BAD" : res);
-               INSIST(ifdata.netmask.family == ifdata.af);
-               if ((ifdata.flags & INTERFACE_F_POINTTOPOINT) != 0) {
-                       res = inet_ntop(ifdata.af, &ifdata.dstaddress.type, buf,
-                                       sizeof(buf));
-                       fprintf(stdout, "dstaddress = %s\n",
-                               res == NULL ? "BAD" : res);
-
-                       INSIST(ifdata.dstaddress.family == ifdata.af);
-               }
-               result = isc_interfaceiter_next(iter);
-               if (result != ISC_R_SUCCESS && result != ISC_R_NOMORE) {
-                       fprintf(stdout, "isc_interfaceiter_next: %s",
-                               isc_result_totext(result));
-                       continue;
-               }
-       }
-       isc_interfaceiter_destroy(&iter);
-
-       fprintf(stdout, "\nPass 2\n\n");
-
-       result = isc_interfaceiter_create(mctx, &iter);
-       if (result != ISC_R_SUCCESS) {
-               goto cleanup;
-       }
-       result = isc_interfaceiter_first(iter);
-       while (result == ISC_R_SUCCESS) {
-               result = isc_interfaceiter_current(iter, &ifdata);
-               if (result != ISC_R_SUCCESS) {
-                       fprintf(stdout, "isc_interfaceiter_current: %s",
-                               isc_result_totext(result));
-                       continue;
-               }
-               fprintf(stdout, "%s %u %x\n", ifdata.name, ifdata.af,
-                       ifdata.flags);
-               INSIST(ifdata.af == AF_INET || ifdata.af == AF_INET6);
-               res = inet_ntop(ifdata.af, &ifdata.address.type, buf,
-                               sizeof(buf));
-               if (ifdata.address.zone != 0) {
-                       fprintf(stdout, "address = %s (zone %u)\n",
-                               res == NULL ? "BAD" : res, ifdata.address.zone);
-               } else {
-                       fprintf(stdout, "address = %s\n",
-                               res == NULL ? "BAD" : res);
-               }
-               INSIST(ifdata.address.family == ifdata.af);
-               res = inet_ntop(ifdata.af, &ifdata.netmask.type, buf,
-                               sizeof(buf));
-               fprintf(stdout, "netmask = %s\n", res == NULL ? "BAD" : res);
-               INSIST(ifdata.netmask.family == ifdata.af);
-               if ((ifdata.flags & INTERFACE_F_POINTTOPOINT) != 0) {
-                       res = inet_ntop(ifdata.af, &ifdata.dstaddress.type, buf,
-                                       sizeof(buf));
-                       fprintf(stdout, "dstaddress = %s\n",
-                               res == NULL ? "BAD" : res);
-
-                       INSIST(ifdata.dstaddress.family == ifdata.af);
-               }
-               result = isc_interfaceiter_next(iter);
-               if (result != ISC_R_SUCCESS && result != ISC_R_NOMORE) {
-                       fprintf(stdout, "isc_interfaceiter_next: %s",
-                               isc_result_totext(result));
-                       continue;
-               }
-       }
-       isc_interfaceiter_destroy(&iter);
-cleanup:
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/lex_test.c b/bin/tests/optional/lex_test.c
deleted file mode 100644 (file)
index 95aada0..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <isc/commandline.h>
-#include <isc/lex.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx;
-isc_lex_t *lex;
-
-isc_lexspecials_t specials;
-
-static void
-print_token(isc_token_t *tokenp, FILE *stream) {
-       switch (tokenp->type) {
-       case isc_tokentype_unknown:
-               fprintf(stream, "UNKNOWN");
-               break;
-       case isc_tokentype_string:
-               fprintf(stream, "STRING %.*s",
-                       (int)tokenp->value.as_region.length,
-                       tokenp->value.as_region.base);
-               break;
-       case isc_tokentype_number:
-               fprintf(stream, "NUMBER %lu", tokenp->value.as_ulong);
-               break;
-       case isc_tokentype_qstring:
-               fprintf(stream, "QSTRING \"%.*s\"",
-                       (int)tokenp->value.as_region.length,
-                       tokenp->value.as_region.base);
-               break;
-       case isc_tokentype_eol:
-               fprintf(stream, "EOL");
-               break;
-       case isc_tokentype_eof:
-               fprintf(stream, "EOF");
-               break;
-       case isc_tokentype_initialws:
-               fprintf(stream, "INITIALWS");
-               break;
-       case isc_tokentype_special:
-               fprintf(stream, "SPECIAL %c", tokenp->value.as_char);
-               break;
-       case isc_tokentype_nomore:
-               fprintf(stream, "NOMORE");
-               break;
-       default:
-               FATAL_ERROR(__FILE__, __LINE__, "Unexpected type %d",
-                           tokenp->type);
-       }
-}
-
-int
-main(int argc, char *argv[]) {
-       isc_token_t token;
-       isc_result_t result;
-       int quiet = 0;
-       int c;
-       int masterfile = 1;
-       int stats = 0;
-       unsigned int options = 0;
-       int done = 0;
-
-       while ((c = isc_commandline_parse(argc, argv, "qmcs")) != -1) {
-               switch (c) {
-               case 'q':
-                       quiet = 1;
-                       break;
-               case 'm':
-                       masterfile = 1;
-                       break;
-               case 'c':
-                       masterfile = 0;
-                       break;
-               case 's':
-                       stats = 1;
-                       break;
-               }
-       }
-
-       isc_mem_create(&mctx);
-       RUNTIME_CHECK(isc_lex_create(mctx, 256, &lex) == ISC_R_SUCCESS);
-
-       if (masterfile) {
-               /* Set up to lex DNS master file. */
-
-               specials['('] = 1;
-               specials[')'] = 1;
-               specials['"'] = 1;
-               isc_lex_setspecials(lex, specials);
-               options = ISC_LEXOPT_DNSMULTILINE | ISC_LEXOPT_ESCAPE |
-                         ISC_LEXOPT_EOF | ISC_LEXOPT_QSTRING |
-                         ISC_LEXOPT_NOMORE;
-               isc_lex_setcomments(lex, ISC_LEXCOMMENT_DNSMASTERFILE);
-       } else {
-               /* Set up to lex DNS config file. */
-
-               specials['{'] = 1;
-               specials['}'] = 1;
-               specials[';'] = 1;
-               specials['/'] = 1;
-               specials['"'] = 1;
-               specials['!'] = 1;
-               specials['*'] = 1;
-               isc_lex_setspecials(lex, specials);
-               options = ISC_LEXOPT_EOF | ISC_LEXOPT_QSTRING |
-                         ISC_LEXOPT_NUMBER | ISC_LEXOPT_NOMORE;
-               isc_lex_setcomments(lex, (ISC_LEXCOMMENT_C |
-                                         ISC_LEXCOMMENT_CPLUSPLUS |
-                                         ISC_LEXCOMMENT_SHELL));
-       }
-
-       RUNTIME_CHECK(isc_lex_openstream(lex, stdin) == ISC_R_SUCCESS);
-
-       while ((result = isc_lex_gettoken(lex, options, &token)) ==
-                      ISC_R_SUCCESS &&
-              !done)
-       {
-               if (!quiet) {
-                       char *name = isc_lex_getsourcename(lex);
-                       print_token(&token, stdout);
-                       printf(" line = %lu file = %s\n",
-                              isc_lex_getsourceline(lex),
-                              (name == NULL) ? "<none>" : name);
-               }
-               if (token.type == isc_tokentype_eof) {
-                       isc_lex_close(lex);
-               }
-               if (token.type == isc_tokentype_nomore) {
-                       done = 1;
-               }
-       }
-       if (result != ISC_R_SUCCESS) {
-               printf("Result: %s\n", isc_result_totext(result));
-       }
-
-       isc_lex_close(lex);
-       isc_lex_destroy(&lex);
-       if (!quiet && stats) {
-               isc_mem_stats(mctx, stdout);
-       }
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/lfsr_test.c b/bin/tests/optional/lfsr_test.c
deleted file mode 100644 (file)
index e9d2481..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-
-#include <isc/lfsr.h>
-#include <isc/print.h>
-#include <isc/util.h>
-
-uint32_t state[1024 * 64];
-
-int
-main(int argc, char **argv) {
-       isc_lfsr_t lfsr1, lfsr2;
-       int i;
-       uint32_t temp;
-
-       UNUSED(argc);
-       UNUSED(argv);
-
-       /*
-        * Verify that returned values are reproducible.
-        */
-       isc_lfsr_init(&lfsr1, 0, 32, 0x80000057U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr1, &state[i], 4);
-               printf("lfsr1:  state[%2d] = %08x\n", i, state[i]);
-       }
-       isc_lfsr_init(&lfsr1, 0, 32, 0x80000057U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr1, &temp, 4);
-               if (state[i] != temp) {
-                       printf("lfsr1:  state[%2d] = %08x, "
-                              "but new state is %08x\n",
-                              i, state[i], temp);
-               }
-       }
-
-       /*
-        * Now do the same with skipping.
-        */
-       isc_lfsr_init(&lfsr1, 0, 32, 0x80000057U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr1, &state[i], 4);
-               isc_lfsr_skip(&lfsr1, 32);
-               printf("lfsr1:  state[%2d] = %08x\n", i, state[i]);
-       }
-       isc_lfsr_init(&lfsr1, 0, 32, 0x80000057U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr1, &temp, 4);
-               isc_lfsr_skip(&lfsr1, 32);
-               if (state[i] != temp) {
-                       printf("lfsr1:  state[%2d] = %08x, "
-                              "but new state is %08x\n",
-                              i, state[i], temp);
-               }
-       }
-
-       /*
-        * Try to find the period of the LFSR.
-        *
-        *      x^16 + x^5 + x^3 + x^2 + 1
-        */
-       isc_lfsr_init(&lfsr2, 0, 16, 0x00008016U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr2, &state[i], 4);
-               printf("lfsr2:  state[%2d] = %08x\n", i, state[i]);
-       }
-       isc_lfsr_init(&lfsr2, 0, 16, 0x00008016U, 0, NULL, NULL);
-       for (i = 0; i < 32; i++) {
-               isc_lfsr_generate(&lfsr2, &temp, 4);
-               if (state[i] != temp) {
-                       printf("lfsr2:  state[%2d] = %08x, "
-                              "but new state is %08x\n",
-                              i, state[i], temp);
-               }
-       }
-
-       return (0);
-}
diff --git a/bin/tests/optional/log_test.c b/bin/tests/optional/log_test.c
deleted file mode 100644 (file)
index 750bccc..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/string.h>
-#include <isc/util.h>
-
-#include <dns/log.h>
-
-#define TEST_FILE     "/tmp/test_log"
-#define SYSLOG_FILE   "/var/log/daemon.log"
-#define FILE_VERSIONS 10
-
-char usage[] = "Usage: %s [-m] [-s syslog_logfile] [-r file_versions]\n";
-
-#define CHECK(expr)                                                     \
-       result = expr;                                                  \
-       if (result != ISC_R_SUCCESS) {                                  \
-               fprintf(stderr, "%s: " #expr "%s: exiting\n", progname, \
-                       isc_result_totext(result));                     \
-       }
-
-int
-main(int argc, char **argv) {
-       const char *progname, *syslog_file, *message;
-       int ch, i, file_versions, stderr_line;
-       bool show_final_mem = false;
-       isc_log_t *lctx;
-       isc_logconfig_t *lcfg;
-       isc_mem_t *mctx;
-       isc_result_t result;
-       isc_logdestination_t destination;
-       const isc_logcategory_t *category;
-       const isc_logmodule_t *module;
-
-       progname = strrchr(*argv, '/');
-       if (progname != NULL) {
-               progname++;
-       } else {
-               progname = *argv;
-       }
-
-       syslog_file = SYSLOG_FILE;
-       file_versions = FILE_VERSIONS;
-
-       while ((ch = isc_commandline_parse(argc, argv, "ms:r:")) != -1) {
-               switch (ch) {
-               case 'm':
-                       show_final_mem = true;
-                       break;
-               case 's':
-                       syslog_file = isc_commandline_argument;
-                       break;
-               case 'r':
-                       file_versions = atoi(isc_commandline_argument);
-                       if (file_versions < 0 &&
-                           file_versions != ISC_LOG_ROLLNEVER &&
-                           file_versions != ISC_LOG_ROLLINFINITE)
-                       {
-                               fprintf(stderr,
-                                       "%s: file rotations must be "
-                                       "%d (ISC_LOG_ROLLNEVER),\n\t"
-                                       "%d (ISC_LOG_ROLLINFINITE) "
-                                       "or > 0\n",
-                                       progname, ISC_LOG_ROLLNEVER,
-                                       ISC_LOG_ROLLINFINITE);
-                               exit(1);
-                       }
-                       break;
-               case '?':
-                       fprintf(stderr, usage, progname);
-                       exit(1);
-               }
-       }
-
-       argc -= isc_commandline_index;
-       argv += isc_commandline_index;
-       POST(argv);
-
-       if (argc > 0) {
-               fprintf(stderr, usage, progname);
-               exit(1);
-       }
-
-       fprintf(stderr, "EXPECT:\n%s%d%s%s%s",
-               "8 lines to stderr (first 4 numbered, #3 repeated)\n",
-               file_versions == 0 || file_versions == ISC_LOG_ROLLNEVER
-                       ? 1
-                       : file_versions > 0 ? file_versions + 1
-                                           : FILE_VERSIONS + 1,
-               " " TEST_FILE " files, and\n", "2 lines to syslog\n",
-               "lines ending with exclamation marks are errors\n\n");
-
-       isc_log_opensyslog(progname, LOG_PID, LOG_DAEMON);
-
-       mctx = NULL;
-       lctx = NULL;
-       lcfg = NULL;
-
-       isc_mem_create(&mctx);
-       isc_log_create(mctx, &lctx, &lcfg);
-
-       isc_log_settag(lcfg, progname);
-
-       isc_log_setcontext(lctx);
-       dns_log_init(lctx);
-       dns_log_setcontext(lctx);
-
-       /*
-        * Test isc_log_categorybyname and isc_log_modulebyname.
-        */
-       category = isc_log_categorybyname(lctx, "notify");
-       if (category != NULL) {
-               fprintf(stderr, "%s category found. (expected)\n",
-                       category->name);
-       } else {
-               fprintf(stderr, "notify category not found!\n");
-       }
-
-       module = isc_log_modulebyname(lctx, "xyzzy");
-       if (module != NULL) {
-               fprintf(stderr, "%s module found!\n", module->name);
-       } else {
-               fprintf(stderr, "xyzzy module not found. (expected)\n");
-       }
-
-       /*
-        * Create a file channel to test file opening, size limiting and
-        * version rolling.
-        */
-
-       destination.file.name = TEST_FILE;
-       destination.file.maximum_size = 1;
-       destination.file.versions = file_versions;
-
-       isc_log_createchannel(
-               lcfg, "file_test", ISC_LOG_TOFILE, ISC_LOG_INFO, &destination,
-               ISC_LOG_PRINTTIME | ISC_LOG_PRINTTAG | ISC_LOG_PRINTLEVEL |
-                       ISC_LOG_PRINTCATEGORY | ISC_LOG_PRINTMODULE);
-
-       /*
-        * Create a dynamic debugging channel to a file descriptor.
-        */
-       destination.file.stream = stderr;
-
-       isc_log_createchannel(lcfg, "debug_test", ISC_LOG_TOFILEDESC,
-                             ISC_LOG_DYNAMIC, &destination,
-                             ISC_LOG_PRINTTIME | ISC_LOG_PRINTLEVEL |
-                                     ISC_LOG_DEBUGONLY);
-
-       /*
-        * Test the usability of the four predefined logging channels.
-        */
-       CHECK(isc_log_usechannel(lcfg, "default_syslog",
-                                DNS_LOGCATEGORY_DATABASE,
-                                DNS_LOGMODULE_CACHE));
-       CHECK(isc_log_usechannel(lcfg, "default_stderr",
-                                DNS_LOGCATEGORY_DATABASE,
-                                DNS_LOGMODULE_CACHE));
-       CHECK(isc_log_usechannel(lcfg, "default_debug",
-                                DNS_LOGCATEGORY_DATABASE,
-                                DNS_LOGMODULE_CACHE));
-       CHECK(isc_log_usechannel(lcfg, "null", DNS_LOGCATEGORY_DATABASE, NULL));
-
-       /*
-        * Use the custom channels.
-        */
-       CHECK(isc_log_usechannel(lcfg, "file_test", DNS_LOGCATEGORY_GENERAL,
-                                DNS_LOGMODULE_DB));
-
-       CHECK(isc_log_usechannel(lcfg, "debug_test", DNS_LOGCATEGORY_GENERAL,
-                                DNS_LOGMODULE_RBTDB));
-
-       fprintf(stderr, "\n==> stderr begin\n");
-
-       /*
-        * Write to the internal default by testing both a category for which
-        * no channel has been specified and a category which was specified
-        * but not with the named module.
-        */
-       stderr_line = 1;
-
-       isc_log_write(lctx, DNS_LOGCATEGORY_SECURITY, DNS_LOGMODULE_RBT,
-                     ISC_LOG_CRITICAL, "%s (%d)",
-                     "Unspecified category and unspecified module to stderr",
-                     stderr_line++);
-       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBT,
-                     ISC_LOG_CRITICAL, "%s (%d)",
-                     "Specified category and unspecified module to stderr",
-                     stderr_line++);
-
-       /*
-        * Write to default_syslog, default_stderr and default_debug.
-        */
-       isc_log_write(lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE,
-                     ISC_LOG_WARNING, "%s (%d twice)",
-                     "Using the predefined channels to syslog+stderr",
-                     stderr_line++);
-
-       /*
-        * Write to predefined null channel.
-        */
-       isc_log_write(lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_RBTDB,
-                     ISC_LOG_INFO, "This is to null and should not appear!");
-
-       /*
-        * Reset the internal default to use syslog instead of stderr,
-        * and test it.
-        */
-       CHECK(isc_log_usechannel(lcfg, "default_syslog",
-                                ISC_LOGCATEGORY_DEFAULT, NULL));
-       isc_log_write(lctx, DNS_LOGCATEGORY_SECURITY, DNS_LOGMODULE_RBT,
-                     ISC_LOG_ERROR, "%s%s",
-                     "This message to the redefined default category should ",
-                     "be second in syslog");
-       /*
-        * Write to the file channel.
-        */
-       if (file_versions >= 0 || file_versions == ISC_LOG_ROLLINFINITE) {
-               /*
-                * If file_versions is 0 or ISC_LOG_ROLLINFINITE, write
-                * the "should not appear" and "should be in file" messages
-                * to ensure they get rolled.
-                */
-               if (file_versions <= 0) {
-                       file_versions = FILE_VERSIONS;
-               } else {
-                       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL,
-                                     DNS_LOGMODULE_DB, ISC_LOG_NOTICE,
-                                     "This should be rolled over "
-                                     "and not appear!");
-               }
-
-               for (i = file_versions - 1; i >= 0; i--) {
-                       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL,
-                                     DNS_LOGMODULE_DB, ISC_LOG_NOTICE,
-                                     "should be in file %d/%d", i,
-                                     file_versions - 1);
-               }
-
-               isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_DB,
-                             ISC_LOG_NOTICE, "should be in base file");
-       } else {
-               file_versions = FILE_VERSIONS;
-               for (i = 1; i <= file_versions; i++) {
-                       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL,
-                                     DNS_LOGMODULE_DB, ISC_LOG_NOTICE,
-                                     "This is message %d in the log file", i);
-               }
-       }
-
-       /*
-        * Write a debugging message to a category that has no
-        * debugging channels for the named module.
-        */
-       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_DB,
-                     ISC_LOG_DEBUG(1),
-                     "This debug message should not appear!");
-
-       /*
-        * Write debugging messages to a dynamic debugging channel.
-        */
-       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                     ISC_LOG_CRITICAL,
-                     "This critical message should "
-                     "not appear because the debug level is 0!");
-
-       isc_log_setdebuglevel(lctx, 3);
-
-       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                     ISC_LOG_DEBUG(1), "%s (%d)",
-                     "Dynamic debugging to stderr", stderr_line++);
-       isc_log_write(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                     ISC_LOG_DEBUG(5),
-                     "This debug level is too high and should not appear!");
-
-       /*
-        * Test out the duplicate filtering using the debug_test channel.
-        */
-       isc_log_setduplicateinterval(lcfg, 10);
-       message = "This message should appear only once on stderr";
-
-       isc_log_write1(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                      ISC_LOG_CRITICAL, "%s", message);
-       isc_log_write1(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                      ISC_LOG_CRITICAL, "%s", message);
-
-       isc_log_setduplicateinterval(lcfg, 1);
-       message = "This message should appear twice on stderr";
-
-       isc_log_write1(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                      ISC_LOG_CRITICAL, "%s", message);
-       sleep(2);
-       isc_log_write1(lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_RBTDB,
-                      ISC_LOG_CRITICAL, "%s", message);
-
-       /*
-        * Review where everything went.
-        * XXXDCL NT
-        */
-       fputc('\n', stderr);
-       if (system("head " TEST_FILE "*; rm -f " TEST_FILE "*") != 0) {
-               fprintf(stderr, "system(\"head " TEST_FILE "*; rm -f " TEST_FILE
-                               "*\") failed\n");
-               goto cleanup;
-       }
-
-       /* This is highly system specific. */
-       if (freopen(syslog_file, "r", stdin) == NULL) {
-               fprintf(stderr, "freopen(%s, \"r\", stdin) failed\n",
-                       syslog_file);
-               goto cleanup;
-       }
-       fprintf(stderr, "\n==> %s <==\n", syslog_file);
-       if (system("tail -2") != 0) {
-               fprintf(stderr, "system(\"tail -2\") failed\n");
-               goto cleanup;
-       }
-       fputc('\n', stderr);
-
-cleanup:
-       isc_log_destroy(&lctx);
-
-       if (show_final_mem) {
-               isc_mem_stats(mctx, stderr);
-       }
-
-       return (0);
-}
diff --git a/bin/tests/optional/master_test.c b/bin/tests/optional/master_test.c
deleted file mode 100644 (file)
index 50ced0f..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <isc/buffer.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/util.h>
-
-#include <dns/callbacks.h>
-#include <dns/master.h>
-#include <dns/name.h>
-#include <dns/rdataset.h>
-#include <dns/result.h>
-
-isc_mem_t *mctx;
-
-static isc_result_t
-print_dataset(void *arg, const dns_name_t *owner, dns_rdataset_t *dataset) {
-       char buf[64 * 1024];
-       isc_buffer_t target;
-       isc_result_t result;
-
-       UNUSED(arg);
-
-       isc_buffer_init(&target, buf, 64 * 1024);
-       result = dns_rdataset_totext(dataset, owner, false, false, &target);
-       if (result == ISC_R_SUCCESS) {
-               fprintf(stdout, "%.*s\n", (int)target.used,
-                       (char *)target.base);
-       } else {
-               fprintf(stdout, "dns_rdataset_totext: %s\n",
-                       dns_result_totext(result));
-       }
-
-       return (ISC_R_SUCCESS);
-}
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       dns_name_t origin;
-       isc_buffer_t source;
-       isc_buffer_t target;
-       unsigned char name_buf[255];
-       dns_rdatacallbacks_t callbacks;
-
-       UNUSED(argc);
-
-       isc_mem_create(&mctx);
-
-       if (argv[1]) {
-               isc_buffer_init(&source, argv[1], strlen(argv[1]));
-               isc_buffer_add(&source, strlen(argv[1]));
-               isc_buffer_setactive(&source, strlen(argv[1]));
-               isc_buffer_init(&target, name_buf, 255);
-               dns_name_init(&origin, NULL);
-               result = dns_name_fromtext(&origin, &source, dns_rootname, 0,
-                                          &target);
-               if (result != ISC_R_SUCCESS) {
-                       fprintf(stdout, "dns_name_fromtext: %s\n",
-                               dns_result_totext(result));
-                       exit(1);
-               }
-
-               dns_rdatacallbacks_init_stdio(&callbacks);
-               callbacks.add = print_dataset;
-
-               result = dns_master_loadfile(
-                       argv[1], &origin, &origin, dns_rdataclass_in, 0, 0,
-                       &callbacks, NULL, NULL, mctx, dns_masterformat_text, 0);
-               fprintf(stdout, "dns_master_loadfile: %s\n",
-                       dns_result_totext(result));
-       }
-       return (0);
-}
diff --git a/bin/tests/optional/mempool_test.c b/bin/tests/optional/mempool_test.c
deleted file mode 100644 (file)
index 485443c..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <isc/mem.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx;
-
-int
-main(int argc, char *argv[]) {
-       void *items1[50];
-       void *items2[50];
-       void *tmp;
-       isc_mempool_t *mp1, *mp2;
-       unsigned int i, j;
-       isc_mutex_t lock;
-
-       UNUSED(argc);
-       UNUSED(argv);
-
-       isc_mem_debugging = ISC_MEM_DEBUGRECORD;
-
-       isc_mutex_init(&lock);
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       mp1 = NULL;
-       isc_mempool_create(mctx, 24, &mp1);
-
-       mp2 = NULL;
-       isc_mempool_create(mctx, 31, &mp2);
-
-       isc_mempool_associatelock(mp1, &lock);
-       isc_mempool_associatelock(mp2, &lock);
-
-       isc_mem_stats(mctx, stderr);
-
-       isc_mempool_setfreemax(mp1, 10);
-       isc_mempool_setfillcount(mp1, 10);
-       isc_mempool_setmaxalloc(mp1, 30);
-
-       /*
-        * Allocate 30 items from the pool.  This is our max.
-        */
-       for (i = 0; i < 30; i++) {
-               items1[i] = isc_mempool_get(mp1);
-               RUNTIME_CHECK(items1[i] != NULL);
-       }
-
-       /*
-        * Try to allocate one more.  This should fail.
-        */
-       tmp = isc_mempool_get(mp1);
-       RUNTIME_CHECK(tmp == NULL);
-
-       /*
-        * Free the first 11 items.  Verify that there are 10 free items on
-        * the free list (which is our max).
-        */
-
-       for (i = 0; i < 11; i++) {
-               isc_mempool_put(mp1, items1[i]);
-               items1[i] = NULL;
-       }
-
-       RUNTIME_CHECK(isc_mempool_getfreecount(mp1) == 10);
-       RUNTIME_CHECK(isc_mempool_getallocated(mp1) == 19);
-
-       isc_mem_stats(mctx, stderr);
-
-       /*
-        * Now, beat up on mp2 for a while.  Allocate 50 items, then free
-        * them, then allocate 50 more, etc.
-        */
-       isc_mempool_setfreemax(mp2, 25);
-       isc_mempool_setfillcount(mp2, 25);
-       for (j = 0; j < 5000; j++) {
-               for (i = 0; i < 50; i++) {
-                       items2[i] = isc_mempool_get(mp2);
-                       RUNTIME_CHECK(items2[i] != NULL);
-               }
-               for (i = 0; i < 50; i++) {
-                       isc_mempool_put(mp2, items2[i]);
-                       items2[i] = NULL;
-               }
-       }
-
-       /*
-        * Free all the other items and blow away this pool.
-        */
-       for (i = 11; i < 30; i++) {
-               isc_mempool_put(mp1, items1[i]);
-               items1[i] = NULL;
-       }
-
-       isc_mempool_destroy(&mp1);
-
-       isc_mem_stats(mctx, stderr);
-
-       isc_mempool_destroy(&mp2);
-
-       isc_mem_stats(mctx, stderr);
-
-       isc_mem_destroy(&mctx);
-
-       isc_mutex_destroy(&lock);
-
-       return (0);
-}
diff --git a/bin/tests/optional/name_test.c b/bin/tests/optional/name_test.c
deleted file mode 100644 (file)
index 06afedf..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/string.h>
-#include <isc/util.h>
-
-#include <dns/fixedname.h>
-#include <dns/result.h>
-
-static void
-print_wirename(isc_region_t *name) {
-       unsigned char *ccurr, *cend;
-
-       if (name->length == 0) {
-               printf("<empty wire name>\n");
-               return;
-       }
-       ccurr = name->base;
-       cend = ccurr + name->length;
-       while (ccurr != cend) {
-               printf("%02x ", *ccurr++);
-       }
-       printf("\n");
-}
-
-static void
-print_name(dns_name_t *name) {
-       isc_result_t result;
-       isc_buffer_t source;
-       isc_region_t r;
-       char s[1000];
-
-       isc_buffer_init(&source, s, sizeof(s));
-       if (dns_name_countlabels(name) > 0) {
-               result = dns_name_totext(name, false, &source);
-       } else {
-               result = ISC_R_SUCCESS;
-       }
-       if (result == ISC_R_SUCCESS) {
-               isc_buffer_usedregion(&source, &r);
-               if (r.length > 0) {
-                       printf("%.*s\n", (int)r.length, r.base);
-               } else {
-                       printf("<empty text name>\n");
-               }
-       } else {
-               printf("error: %s\n", dns_result_totext(result));
-       }
-}
-
-int
-main(int argc, char *argv[]) {
-       char s[1000];
-       isc_result_t result;
-       dns_fixedname_t wname, wname2, oname, compname, downname;
-       isc_buffer_t source;
-       isc_region_t r;
-       dns_name_t *name, *comp, *down;
-       const dns_name_t *origin;
-       unsigned int downcase = 0;
-       size_t len;
-       bool quiet = false;
-       bool concatenate = false;
-       bool got_name = false;
-       bool check_absolute = false;
-       bool check_wildcard = false;
-       bool test_downcase = false;
-       bool inplace = false;
-       bool want_split = false;
-       unsigned int labels, split_label = 0;
-       dns_fixedname_t fprefix, fsuffix;
-       dns_name_t *prefix, *suffix;
-       int ch;
-
-       while ((ch = isc_commandline_parse(argc, argv, "acdiqs:w")) != -1) {
-               switch (ch) {
-               case 'a':
-                       check_absolute = true;
-                       break;
-               case 'c':
-                       concatenate = true;
-                       break;
-               case 'd':
-                       test_downcase = true;
-                       break;
-               case 'i':
-                       inplace = true;
-                       break;
-               case 'q':
-                       quiet = true;
-                       break;
-               case 's':
-                       want_split = true;
-                       split_label = atoi(isc_commandline_argument);
-                       break;
-               case 'w':
-                       check_wildcard = true;
-                       break;
-               }
-       }
-
-       argc -= isc_commandline_index;
-       argv += isc_commandline_index;
-
-       if (argc > 0) {
-               if (strcasecmp("none", argv[0]) == 0) {
-                       origin = NULL;
-               } else {
-                       len = strlen(argv[0]);
-                       isc_buffer_init(&source, argv[0], len);
-                       isc_buffer_add(&source, len);
-                       dns_fixedname_init(&oname);
-                       result = dns_name_fromtext(dns_fixedname_name(&oname),
-                                                  &source, dns_rootname, 0,
-                                                  NULL);
-                       if (result != 0) {
-                               fprintf(stderr,
-                                       "dns_name_fromtext() failed: %s\n",
-                                       dns_result_totext(result));
-                               exit(1);
-                       }
-                       origin = dns_fixedname_name(&oname);
-               }
-       } else if (concatenate) {
-               origin = NULL;
-       } else {
-               origin = dns_rootname;
-       }
-
-       if (argc >= 1) {
-               if (strcasecmp("none", argv[1]) == 0) {
-                       comp = NULL;
-               } else {
-                       len = strlen(argv[1]);
-                       isc_buffer_init(&source, argv[1], len);
-                       isc_buffer_add(&source, len);
-                       comp = dns_fixedname_initname(&compname);
-                       result = dns_name_fromtext(comp, &source, origin, 0,
-                                                  NULL);
-                       if (result != 0) {
-                               fprintf(stderr,
-                                       "dns_name_fromtext() failed: %s\n",
-                                       dns_result_totext(result));
-                               exit(1);
-                       }
-               }
-       } else {
-               comp = NULL;
-       }
-
-       name = dns_fixedname_initname(&wname);
-       dns_fixedname_init(&wname2);
-       while (fgets(s, sizeof(s), stdin) != NULL) {
-               len = strlen(s);
-               if (len > 0U && s[len - 1] == '\n') {
-                       s[len - 1] = '\0';
-                       len--;
-               }
-               isc_buffer_init(&source, s, len);
-               isc_buffer_add(&source, len);
-
-               if (len > 0U) {
-                       result = dns_name_fromtext(name, &source, origin,
-                                                  downcase, NULL);
-               } else {
-                       if (name == dns_fixedname_name(&wname)) {
-                               dns_fixedname_init(&wname);
-                       } else {
-                               dns_fixedname_init(&wname2);
-                       }
-                       result = ISC_R_SUCCESS;
-               }
-
-               if (result != ISC_R_SUCCESS) {
-                       printf("%s\n", dns_result_totext(result));
-                       if (name == dns_fixedname_name(&wname)) {
-                               dns_fixedname_init(&wname);
-                       } else {
-                               dns_fixedname_init(&wname2);
-                       }
-                       continue;
-               }
-
-               if (check_absolute && dns_name_countlabels(name) > 0) {
-                       if (dns_name_isabsolute(name)) {
-                               printf("absolute\n");
-                       } else {
-                               printf("relative\n");
-                       }
-               }
-               if (check_wildcard && dns_name_countlabels(name) > 0) {
-                       if (dns_name_iswildcard(name)) {
-                               printf("wildcard\n");
-                       } else {
-                               printf("not wildcard\n");
-                       }
-               }
-               dns_name_toregion(name, &r);
-               if (!quiet) {
-                       print_wirename(&r);
-                       printf("%u labels, %u bytes.\n",
-                              dns_name_countlabels(name), r.length);
-               }
-
-               if (concatenate) {
-                       if (got_name) {
-                               printf("Concatenating.\n");
-                               result = dns_name_concatenate(
-                                       dns_fixedname_name(&wname),
-                                       dns_fixedname_name(&wname2),
-                                       dns_fixedname_name(&wname2), NULL);
-                               name = dns_fixedname_name(&wname2);
-                               if (result == ISC_R_SUCCESS) {
-                                       if (check_absolute &&
-                                           dns_name_countlabels(name) > 0) {
-                                               if (dns_name_isabsolute(name)) {
-                                                       printf("absolute\n");
-                                               } else {
-                                                       printf("relative\n");
-                                               }
-                                       }
-                                       if (check_wildcard &&
-                                           dns_name_countlabels(name) > 0) {
-                                               if (dns_name_iswildcard(name)) {
-                                                       printf("wildcard\n");
-                                               } else {
-                                                       printf("not "
-                                                              "wildcard\n");
-                                               }
-                                       }
-                                       dns_name_toregion(name, &r);
-                                       if (!quiet) {
-                                               print_wirename(&r);
-                                               printf("%u labels, "
-                                                      "%u bytes.\n",
-                                                      dns_name_countlabels(
-                                                              name),
-                                                      r.length);
-                                       }
-                               } else {
-                                       printf("%s\n",
-                                              dns_result_totext(result));
-                               }
-                               got_name = false;
-                       } else {
-                               got_name = true;
-                       }
-               }
-               isc_buffer_init(&source, s, sizeof(s));
-               if (dns_name_countlabels(name) > 0) {
-                       result = dns_name_totext(name, false, &source);
-               } else {
-                       result = ISC_R_SUCCESS;
-               }
-               if (result == ISC_R_SUCCESS) {
-                       isc_buffer_usedregion(&source, &r);
-                       if (r.length > 0) {
-                               printf("%.*s\n", (int)r.length, r.base);
-                       } else {
-                               printf("<empty text name>\n");
-                       }
-                       if (!quiet) {
-                               printf("%u bytes.\n", source.used);
-                       }
-               } else {
-                       printf("%s\n", dns_result_totext(result));
-               }
-
-               if (test_downcase) {
-                       if (inplace) {
-                               down = name;
-                       } else {
-                               down = dns_fixedname_initname(&downname);
-                       }
-                       result = dns_name_downcase(name, down, NULL);
-                       INSIST(result == ISC_R_SUCCESS);
-                       if (!quiet) {
-                               dns_name_toregion(down, &r);
-                               print_wirename(&r);
-                               printf("%u labels, %u bytes.\n",
-                                      dns_name_countlabels(down), r.length);
-                       }
-                       isc_buffer_init(&source, s, sizeof(s));
-                       print_name(down);
-               }
-
-               if (comp != NULL && dns_name_countlabels(name) > 0) {
-                       int order;
-                       unsigned int nlabels;
-                       dns_namereln_t namereln;
-
-                       namereln = dns_name_fullcompare(name, comp, &order,
-                                                       &nlabels);
-                       if (!quiet) {
-                               if (order < 0) {
-                                       printf("<");
-                               } else if (order > 0) {
-                                       printf(">");
-                               } else {
-                                       printf("=");
-                               }
-                               switch (namereln) {
-                               case dns_namereln_contains:
-                                       printf(", contains");
-                                       break;
-                               case dns_namereln_subdomain:
-                                       printf(", subdomain");
-                                       break;
-                               case dns_namereln_commonancestor:
-                                       printf(", common ancestor");
-                                       break;
-                               default:
-                                       break;
-                               }
-                               if (namereln != dns_namereln_none &&
-                                   namereln != dns_namereln_equal) {
-                                       printf(", nlabels = %u", nlabels);
-                               }
-                               printf("\n");
-                       }
-                       printf("dns_name_equal() returns %s\n",
-                              dns_name_equal(name, comp) ? "TRUE" : "FALSE");
-               }
-
-               labels = dns_name_countlabels(name);
-               if (want_split && split_label < labels) {
-                       prefix = dns_fixedname_initname(&fprefix);
-                       suffix = dns_fixedname_initname(&fsuffix);
-                       printf("splitting at label %u: ", split_label);
-                       dns_name_split(name, split_label, prefix, suffix);
-                       printf("\n    prefix = ");
-                       print_name(prefix);
-                       printf("    suffix = ");
-                       print_name(suffix);
-               }
-
-               if (concatenate) {
-                       if (got_name) {
-                               name = dns_fixedname_name(&wname2);
-                       } else {
-                               name = dns_fixedname_name(&wname);
-                       }
-               }
-       }
-
-       return (0);
-}
diff --git a/bin/tests/optional/nsecify.c b/bin/tests/optional/nsecify.c
deleted file mode 100644 (file)
index c762003..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/string.h>
-
-#include <dns/db.h>
-#include <dns/dbiterator.h>
-#include <dns/fixedname.h>
-#include <dns/nsec.h>
-#include <dns/rdataset.h>
-#include <dns/rdatasetiter.h>
-#include <dns/result.h>
-
-static isc_mem_t *mctx = NULL;
-
-ISC_PLATFORM_NORETURN_PRE static inline void
-fatal(const char *message) ISC_PLATFORM_NORETURN_POST;
-
-static inline void
-fatal(const char *message) {
-       fprintf(stderr, "%s\n", message);
-       exit(1);
-}
-
-static inline void
-check_result(isc_result_t result, const char *message) {
-       if (result != ISC_R_SUCCESS) {
-               fprintf(stderr, "%s: %s\n", message, isc_result_totext(result));
-               exit(1);
-       }
-}
-
-static inline bool
-active_node(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node) {
-       dns_rdatasetiter_t *rdsiter;
-       bool active = false;
-       isc_result_t result;
-       dns_rdataset_t rdataset;
-
-       dns_rdataset_init(&rdataset);
-       rdsiter = NULL;
-       result = dns_db_allrdatasets(db, node, version, 0, &rdsiter);
-       check_result(result, "dns_db_allrdatasets()");
-       result = dns_rdatasetiter_first(rdsiter);
-       while (result == ISC_R_SUCCESS) {
-               dns_rdatasetiter_current(rdsiter, &rdataset);
-               if (rdataset.type != dns_rdatatype_nsec) {
-                       active = true;
-               }
-               dns_rdataset_disassociate(&rdataset);
-               if (!active) {
-                       result = dns_rdatasetiter_next(rdsiter);
-               } else {
-                       result = ISC_R_NOMORE;
-               }
-       }
-       if (result != ISC_R_NOMORE) {
-               fatal("rdataset iteration failed");
-       }
-       dns_rdatasetiter_destroy(&rdsiter);
-
-       if (!active) {
-               /*
-                * Make sure there is no NSEC record for this node.
-                */
-               result = dns_db_deleterdataset(db, node, version,
-                                              dns_rdatatype_nsec, 0);
-               if (result == DNS_R_UNCHANGED) {
-                       result = ISC_R_SUCCESS;
-               }
-               check_result(result, "dns_db_deleterdataset");
-       }
-
-       return (active);
-}
-
-static inline isc_result_t
-next_active(dns_db_t *db, dns_dbversion_t *version, dns_dbiterator_t *dbiter,
-           dns_name_t *name, dns_dbnode_t **nodep) {
-       isc_result_t result;
-       bool active;
-
-       do {
-               active = false;
-               result = dns_dbiterator_current(dbiter, nodep, name);
-               if (result == ISC_R_SUCCESS) {
-                       active = active_node(db, version, *nodep);
-                       if (!active) {
-                               dns_db_detachnode(db, nodep);
-                               result = dns_dbiterator_next(dbiter);
-                       }
-               }
-       } while (result == ISC_R_SUCCESS && !active);
-
-       return (result);
-}
-
-static void
-nsecify(char *filename) {
-       isc_result_t result;
-       dns_db_t *db;
-       dns_dbversion_t *wversion;
-       dns_dbnode_t *node, *nextnode;
-       const char *origintext;
-       dns_fixedname_t fname, fnextname;
-       dns_name_t *name, *nextname, *target;
-       isc_buffer_t b;
-       size_t len;
-       dns_dbiterator_t *dbiter;
-       char newfilename[1024];
-
-       name = dns_fixedname_initname(&fname);
-       nextname = dns_fixedname_initname(&fnextname);
-
-       origintext = strrchr(filename, '/');
-       if (origintext == NULL) {
-               origintext = filename;
-       } else {
-               origintext++; /* Skip '/'. */
-       }
-       len = strlen(origintext);
-       isc_buffer_constinit(&b, origintext, len);
-       isc_buffer_add(&b, len);
-       result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL);
-       check_result(result, "dns_name_fromtext()");
-
-       db = NULL;
-       result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone,
-                              dns_rdataclass_in, 0, NULL, &db);
-       check_result(result, "dns_db_create()");
-       result = dns_db_load(db, filename, dns_masterformat_text, 0);
-       if (result == DNS_R_SEENINCLUDE) {
-               result = ISC_R_SUCCESS;
-       }
-       check_result(result, "dns_db_load()");
-       wversion = NULL;
-       result = dns_db_newversion(db, &wversion);
-       check_result(result, "dns_db_newversion()");
-       dbiter = NULL;
-       result = dns_db_createiterator(db, 0, &dbiter);
-       check_result(result, "dns_db_createiterator()");
-       result = dns_dbiterator_first(dbiter);
-       check_result(result, "dns_dbiterator_first()");
-       node = NULL;
-       result = next_active(db, wversion, dbiter, name, &node);
-       while (result == ISC_R_SUCCESS) {
-               nextnode = NULL;
-               result = dns_dbiterator_next(dbiter);
-               if (result == ISC_R_SUCCESS) {
-                       result = next_active(db, wversion, dbiter, nextname,
-                                            &nextnode);
-               }
-               if (result == ISC_R_SUCCESS) {
-                       target = nextname;
-               } else if (result == ISC_R_NOMORE) {
-                       target = dns_db_origin(db);
-               } else {
-                       target = NULL; /* Make compiler happy. */
-                       fatal("db iteration failed");
-               }
-               dns_nsec_build(db, wversion, node, target, 3600); /* XXX BEW */
-               dns_db_detachnode(db, &node);
-               node = nextnode;
-       }
-       if (result != ISC_R_NOMORE) {
-               fatal("db iteration failed");
-       }
-       dns_dbiterator_destroy(&dbiter);
-       /*
-        * XXXRTH  For now, we don't increment the SOA serial.
-        */
-       dns_db_closeversion(db, &wversion, true);
-       len = strlen(filename);
-       if (len + 4 + 1 > sizeof(newfilename)) {
-               fatal("filename too long");
-       }
-       snprintf(newfilename, sizeof(newfilename), "%s.new", filename);
-       result = dns_db_dump(db, NULL, newfilename);
-       check_result(result, "dns_db_dump");
-       dns_db_detach(&db);
-}
-
-int
-main(int argc, char *argv[]) {
-       int i;
-
-       dns_result_register();
-
-       isc_mem_create(&mctx);
-
-       argc--;
-       argv++;
-
-       for (i = 0; i < argc; i++) {
-               nsecify(argv[i]);
-       }
-
-       /* isc_mem_stats(mctx, stdout); */
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/ratelimiter_test.c b/bin/tests/optional/ratelimiter_test.c
deleted file mode 100644 (file)
index fd21115..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <isc/app.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/ratelimiter.h>
-#include <isc/task.h>
-#include <isc/time.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-isc_ratelimiter_t *rlim = NULL;
-isc_taskmgr_t *taskmgr = NULL;
-isc_timermgr_t *timermgr = NULL;
-isc_task_t *g_task = NULL;
-isc_mem_t *mctx = NULL;
-
-static void
-utick(isc_task_t *task, isc_event_t *event);
-static void
-shutdown_rl(isc_task_t *task, isc_event_t *event);
-static void
-shutdown_all(isc_task_t *task, isc_event_t *event);
-
-typedef struct {
-       int milliseconds;
-       void (*fun)(isc_task_t *, isc_event_t *);
-} schedule_t;
-
-schedule_t schedule[] = { { 100, utick },       { 200, utick },
-                         { 300, utick },        { 3000, utick },
-                         { 3100, utick },       { 3200, utick },
-                         { 3300, shutdown_rl }, { 5000, utick },
-                         { 6000, shutdown_all } };
-
-#define NEVENTS (int)(sizeof(schedule) / sizeof(schedule[0]))
-
-isc_timer_t *timers[NEVENTS];
-
-static void
-ltick(isc_task_t *task, isc_event_t *event) {
-       UNUSED(task);
-       printf("** ltick%s **\n",
-              (event->ev_attributes & ISC_EVENTATTR_CANCELED) != 0 ? " ("
-                                                                     "canceled"
-                                                                     ")"
-                                                                   : "");
-       isc_event_free(&event);
-}
-
-static void
-utick(isc_task_t *task, isc_event_t *event) {
-       isc_result_t result;
-       UNUSED(task);
-       event->ev_action = ltick;
-       event->ev_sender = NULL;
-       result = isc_ratelimiter_enqueue(rlim, g_task, &event);
-       printf("enqueue: %s\n", result == ISC_R_SUCCESS ? "ok" : "failed");
-}
-
-static void
-shutdown_rl(isc_task_t *task, isc_event_t *event) {
-       UNUSED(task);
-       UNUSED(event);
-       printf("shutdown ratelimiter\n");
-       isc_ratelimiter_shutdown(rlim);
-}
-
-static void
-shutdown_all(isc_task_t *task, isc_event_t *event) {
-       int i;
-       UNUSED(task);
-       UNUSED(event);
-       printf("shutdown all\n");
-       for (i = 0; i < NEVENTS; i++) {
-               isc_timer_detach(&timers[i]);
-       }
-
-       isc_app_shutdown();
-}
-
-int
-main(int argc, char *argv[]) {
-       isc_interval_t linterval;
-       int i;
-
-       UNUSED(argc);
-       UNUSED(argv);
-
-       isc_app_start();
-       isc_interval_set(&linterval, 1, 0);
-
-       isc_mem_create(&mctx);
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, 3, 0, NULL, &taskmgr) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timermgr) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(taskmgr, 0, &g_task) == ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_ratelimiter_create(mctx, timermgr, g_task, &rlim) ==
-                     ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_ratelimiter_setinterval(rlim, &linterval) ==
-                     ISC_R_SUCCESS);
-
-       for (i = 0; i < NEVENTS; i++) {
-               isc_interval_t uinterval;
-               int ms = schedule[i].milliseconds;
-               isc_interval_set(&uinterval, ms / 1000, (ms % 1000) * 1000000);
-               timers[i] = NULL;
-               RUNTIME_CHECK(isc_timer_create(timermgr, isc_timertype_once,
-                                              NULL, &uinterval, g_task,
-                                              schedule[i].fun, NULL,
-                                              &timers[i]) == ISC_R_SUCCESS);
-       }
-
-       isc_app_run();
-
-       isc_task_destroy(&g_task);
-
-       isc_ratelimiter_detach(&rlim);
-
-       isc_timermgr_destroy(&timermgr);
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_mem_stats(mctx, stdout);
-
-       isc_app_finish();
-       return (0);
-}
diff --git a/bin/tests/optional/rbt_test.c b/bin/tests/optional/rbt_test.c
deleted file mode 100644 (file)
index 4bba655..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/commandline.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/string.h>
-#include <isc/util.h>
-
-#include <dns/fixedname.h>
-#include <dns/rbt.h>
-#include <dns/result.h>
-
-const char *progname;
-isc_mem_t *mctx;
-
-#define DNSNAMELEN 255
-
-static dns_name_t *
-create_name(char *s) {
-       int length;
-       isc_result_t result;
-       isc_buffer_t source, target;
-       static dns_name_t *name;
-
-       if (s == NULL || *s == '\0') {
-               printf("missing name argument\n");
-               return (NULL);
-       }
-
-       length = strlen(s);
-
-       isc_buffer_init(&source, s, length);
-       isc_buffer_add(&source, length);
-
-       /*
-        * It isn't really necessary in this program to create individual
-        * memory spaces for each name structure and its associated character
-        * string.  It is done here to provide a relatively easy way to test
-        * the callback from dns_rbt_deletename that is supposed to free the
-        * data associated with a node.
-        *
-        * The buffer for the actual name will immediately follow the
-        * name structure.
-        */
-       name = isc_mem_get(mctx, sizeof(*name) + DNSNAMELEN);
-
-       dns_name_init(name, NULL);
-       isc_buffer_init(&target, name + 1, DNSNAMELEN);
-
-       result = dns_name_fromtext(name, &source, dns_rootname, 0, &target);
-
-       if (result != ISC_R_SUCCESS) {
-               printf("dns_name_fromtext(%s) failed: %s\n", s,
-                      dns_result_totext(result));
-               return (NULL);
-       }
-
-       return (name);
-}
-
-static void
-delete_name(void *data, void *arg) {
-       dns_name_t *name;
-
-       UNUSED(arg);
-       name = data;
-       isc_mem_put(mctx, name, sizeof(*name) + DNSNAMELEN);
-}
-
-static void
-print_name(dns_name_t *name) {
-       isc_buffer_t target;
-       char buffer[1024];
-
-       isc_buffer_init(&target, buffer, sizeof(buffer));
-
-       /*
-        * false means absolute names have the final dot added.
-        */
-       dns_name_totext(name, false, &target);
-
-       printf("%.*s", (int)target.used, (char *)target.base);
-}
-
-static void
-detail(dns_rbt_t *rbt, dns_name_t *name) {
-       dns_name_t *foundname, *origin, *fullname;
-       dns_fixedname_t fixedfoundname, fixedorigin, fixedfullname;
-       dns_rbtnode_t *node1, *node2;
-       dns_rbtnodechain_t chain;
-       isc_result_t result;
-       bool nodes_should_match = false;
-
-       dns_rbtnodechain_init(&chain);
-
-       origin = dns_fixedname_initname(&fixedorigin);
-       fullname = dns_fixedname_initname(&fixedfullname);
-       foundname = dns_fixedname_initname(&fixedfoundname);
-
-       node1 = node2 = NULL;
-
-       printf("checking chain information for ");
-       print_name(name);
-       printf("\n");
-
-       result = dns_rbt_findnode(rbt, name, foundname, &node1, &chain,
-                                 DNS_RBTFIND_EMPTYDATA, NULL, NULL);
-
-       switch (result) {
-       case ISC_R_SUCCESS:
-               printf("  found exact.");
-               nodes_should_match = true;
-               break;
-       case DNS_R_PARTIALMATCH:
-               printf("  found parent.");
-               break;
-       case ISC_R_NOTFOUND:
-               printf("  name not found.");
-               break;
-       default:
-               printf("  unexpected result: %s\n", dns_result_totext(result));
-               return;
-       }
-
-       if (node1 != NULL && node1->data != NULL) {
-               printf("  data at node: ");
-               print_name(node1->data);
-       } else {
-               printf("  no data at node.");
-       }
-
-       if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
-               printf("\n  name from dns_rbt_findnode: ");
-               print_name(foundname);
-       }
-
-       result = dns_rbtnodechain_current(&chain, foundname, origin, &node2);
-
-       if (result == ISC_R_SUCCESS) {
-               printf("\n  name from dns_rbtnodechain_current: ");
-
-               result = dns_name_concatenate(foundname, origin, fullname,
-                                             NULL);
-               if (result == ISC_R_SUCCESS) {
-                       print_name(fullname);
-               } else {
-                       printf("%s\n", dns_result_totext(result));
-               }
-               printf("\n      (foundname = ");
-               print_name(foundname);
-               printf(", origin = ");
-               print_name(origin);
-               printf(")\n");
-               if (nodes_should_match && node1 != node2) {
-                       printf("  nodes returned from each function "
-                              "DO NOT match!\n");
-               }
-       } else {
-               printf("\n  result from dns_rbtnodechain_current: %s\n",
-                      dns_result_totext(result));
-       }
-
-       printf("  level_matches = %u, level_count = %u\n", chain.level_matches,
-              chain.level_count);
-}
-
-static void
-iterate(dns_rbt_t *rbt, bool forward) {
-       dns_name_t foundname, *origin;
-       dns_rbtnodechain_t chain;
-       dns_fixedname_t fixedorigin;
-       isc_result_t result;
-       isc_result_t (*move)(dns_rbtnodechain_t * chain, dns_name_t * name,
-                            dns_name_t * origin);
-
-       dns_rbtnodechain_init(&chain);
-
-       dns_name_init(&foundname, NULL);
-       origin = dns_fixedname_initname(&fixedorigin);
-
-       if (forward) {
-               printf("iterating forward\n");
-               move = dns_rbtnodechain_next;
-
-               result = dns_rbtnodechain_first(&chain, rbt, &foundname,
-                                               origin);
-       } else {
-               printf("iterating backward\n");
-               move = dns_rbtnodechain_prev;
-
-               result = dns_rbtnodechain_last(&chain, rbt, &foundname, origin);
-       }
-
-       if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
-               printf("start not found!\n");
-       } else {
-               for (;;) {
-                       if (result == DNS_R_NEWORIGIN) {
-                               printf("  new origin: ");
-                               print_name(origin);
-                               printf("\n");
-                       }
-
-                       if (result == ISC_R_SUCCESS ||
-                           result == DNS_R_NEWORIGIN) {
-                               print_name(&foundname);
-                               printf("\n");
-                       } else {
-                               if (result != ISC_R_NOMORE) {
-                                       printf("UNEXPECTED ITERATION ERROR: %s",
-                                              dns_result_totext(result));
-                               }
-                               break;
-                       }
-
-                       result = move(&chain, &foundname, origin);
-               }
-       }
-}
-
-#define CMDCHECK(s) (strncasecmp(command, (s), length) == 0)
-#define PRINTERR(r)             \
-       if (r != ISC_R_SUCCESS) \
-               printf("... %s\n", dns_result_totext(r));
-
-int
-main(int argc, char **argv) {
-       char *command, *arg, buffer[1024];
-       const char *whitespace;
-       dns_name_t *name, *foundname;
-       dns_fixedname_t fixedname;
-       dns_rbt_t *rbt = NULL;
-       int length, ch;
-       bool show_final_mem = false;
-       isc_result_t result;
-       void *data;
-
-       progname = strrchr(*argv, '/');
-       if (progname != NULL) {
-               progname++;
-       } else {
-               progname = *argv;
-       }
-
-       while ((ch = isc_commandline_parse(argc, argv, "m")) != -1) {
-               switch (ch) {
-               case 'm':
-                       show_final_mem = true;
-                       break;
-               }
-       }
-
-       argc -= isc_commandline_index;
-       argv += isc_commandline_index;
-       POST(argv);
-
-       if (argc > 1) {
-               printf("Usage: %s [-m]\n", progname);
-               exit(1);
-       }
-
-       setbuf(stdout, NULL);
-
-       /*
-        * So isc_mem_stats() can report any allocation leaks.
-        */
-       isc_mem_debugging = ISC_MEM_DEBUGRECORD;
-
-       isc_mem_create(&mctx);
-
-       result = dns_rbt_create(mctx, delete_name, NULL, &rbt);
-       if (result != ISC_R_SUCCESS) {
-               printf("dns_rbt_create: %s: exiting\n",
-                      dns_result_totext(result));
-               exit(1);
-       }
-
-       whitespace = " \t";
-
-       while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
-               length = strlen(buffer);
-
-               if (buffer[length - 1] != '\n') {
-                       printf("line to long (%lu max), ignored\n",
-                              (unsigned long)sizeof(buffer) - 2);
-                       continue;
-               }
-
-               buffer[length - 1] = '\0';
-
-               command = buffer + strspn(buffer, whitespace);
-
-               if (*command == '#') {
-                       continue;
-               }
-
-               arg = strpbrk(command, whitespace);
-               if (arg != NULL) {
-                       *arg++ = '\0';
-                       arg += strspn(arg, whitespace);
-               }
-
-               length = strlen(command);
-               if (*command != '\0') {
-                       if (CMDCHECK("add")) {
-                               name = create_name(arg);
-                               if (name != NULL) {
-                                       printf("adding name %s\n", arg);
-                                       result = dns_rbt_addname(rbt, name,
-                                                                name);
-                                       PRINTERR(result);
-                               }
-                       } else if (CMDCHECK("delete")) {
-                               name = create_name(arg);
-                               if (name != NULL) {
-                                       printf("deleting name %s\n", arg);
-                                       result = dns_rbt_deletename(rbt, name,
-                                                                   false);
-                                       PRINTERR(result);
-                                       delete_name(name, NULL);
-                               }
-                       } else if (CMDCHECK("nuke")) {
-                               name = create_name(arg);
-                               if (name != NULL) {
-                                       printf("nuking name %s "
-                                              "and its descendants\n",
-                                              arg);
-                                       result = dns_rbt_deletename(rbt, name,
-                                                                   true);
-                                       PRINTERR(result);
-                                       delete_name(name, NULL);
-                               }
-                       } else if (CMDCHECK("search")) {
-                               name = create_name(arg);
-                               if (name != NULL) {
-                                       printf("searching for name %s ... ",
-                                              arg);
-
-                                       foundname = dns_fixedname_initname(
-                                               &fixedname);
-                                       data = NULL;
-
-                                       result = dns_rbt_findname(
-                                               rbt, name, 0, foundname, &data);
-                                       switch (result) {
-                                       case ISC_R_SUCCESS:
-                                               printf("found exact: ");
-                                               print_name(data);
-                                               putchar('\n');
-                                               break;
-                                       case DNS_R_PARTIALMATCH:
-                                               printf("found parent: ");
-                                               print_name(data);
-                                               printf("\n\t(foundname: ");
-                                               print_name(foundname);
-                                               printf(")\n");
-                                               break;
-                                       case ISC_R_NOTFOUND:
-                                               printf("NOT FOUND!\n");
-                                               break;
-                                       case ISC_R_NOMEMORY:
-                                               printf("OUT OF MEMORY!\n");
-                                               break;
-                                       default:
-                                               printf("UNEXPECTED RESULT\n");
-                                       }
-
-                                       delete_name(name, NULL);
-                               }
-                       } else if (CMDCHECK("check")) {
-                               /*
-                                * Or "chain".  I know, I know.  Lame name.
-                                * I was having a hard time thinking of a
-                                * name (especially one that did not have
-                                * a conflicting first letter with another
-                                * command) that would differentiate this
-                                * from the search command.
-                                *
-                                * But it is just a test program, eh?
-                                */
-                               name = create_name(arg);
-                               if (name != NULL) {
-                                       detail(rbt, name);
-
-                                       delete_name(name, NULL);
-                               }
-                       } else if (CMDCHECK("forward")) {
-                               iterate(rbt, true);
-                       } else if (CMDCHECK("backward")) {
-                               iterate(rbt, false);
-                       } else if (CMDCHECK("print")) {
-                               if (arg == NULL || *arg == '\0') {
-                                       dns_rbt_printtext(rbt, NULL, stdout);
-                               } else {
-                                       printf("usage: print\n");
-                               }
-                       } else if (CMDCHECK("quit")) {
-                               if (arg == NULL || *arg == '\0') {
-                                       break;
-                               } else {
-                                       printf("usage: quit\n");
-                               }
-                       } else {
-                               printf("a(dd) NAME, d(elete) NAME, "
-                                      "s(earch) NAME, p(rint), or q(uit)\n");
-                       }
-               }
-       }
-
-       dns_rbt_destroy(&rbt);
-
-       if (show_final_mem) {
-               isc_mem_stats(mctx, stderr);
-       }
-
-       return (0);
-}
diff --git a/bin/tests/optional/rbt_test.out b/bin/tests/optional/rbt_test.out
deleted file mode 100644 (file)
index 95bf4f9..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-adding name a.vix.com
-adding name b.vix.com
-adding name c.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (RED from b)
-                       NULL
-                       NULL
-               c (RED from b)
-                       NULL
-                       NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-adding name a.b.c.d.e.f.vix.com
-adding name b.b.c.d.e.f.vix.com
-adding name c.b.c.d.e.f.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       NULL
-                       NULL
-               c (black from b)
-                       NULL
-                       b.c.d.e.f (RED from c)
-                               ++ BEG down from b.c.d.e.f
-                               b (black)
-                                       a (RED from b)
-                                               NULL
-                                               NULL
-                                       c (RED from b)
-                                               NULL
-                                               NULL
-                               -- END down from b.c.d.e.f
-                               NULL
-                               NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-adding name a.d.e.f.vix.com
-adding name q.d.e.f.vix.com
-adding name d.e.f.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       NULL
-                       NULL
-               c (black from b)
-                       NULL
-                       d.e.f (RED from c)
-                               ++ BEG down from d.e.f
-                               b.c (black)
-                                       ++ BEG down from b.c
-                                       b (black)
-                                               a (RED from b)
-                                                       NULL
-                                                       NULL
-                                               c (RED from b)
-                                                       NULL
-                                                       NULL
-                                       -- END down from b.c
-                                       a (RED from b.c)
-                                               NULL
-                                               NULL
-                                       q (RED from b.c)
-                                               NULL
-                                               NULL
-                               -- END down from d.e.f
-                               NULL
-                               NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-adding name g.h.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       NULL
-                       NULL
-               d.e.f (black from b)
-                       ++ BEG down from d.e.f
-                       b.c (black)
-                               ++ BEG down from b.c
-                               b (black)
-                                       a (RED from b)
-                                               NULL
-                                               NULL
-                                       c (RED from b)
-                                               NULL
-                                               NULL
-                               -- END down from b.c
-                               a (RED from b.c)
-                                       NULL
-                                       NULL
-                               q (RED from b.c)
-                                       NULL
-                                       NULL
-                       -- END down from d.e.f
-                       c (RED from d.e.f)
-                               NULL
-                               NULL
-                       g.h (RED from d.e.f)
-                               NULL
-                               NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-searching for name q.d.e.f.vix.com ... found exact: q.d.e.f.vix.com.
-searching for name just-parent.a.vix.com ... found parent: a.vix.com.
-       (foundname: a.vix.com.)
-searching for name no-real-parent.vix.com ... NOT FOUND!
-searching for name does.not.exist.at.all ... NOT FOUND!
-iterating forward
-  new origin: .
-vix.com
-  new origin: vix.com.
-a
-b
-c
-d.e.f
-  new origin: d.e.f.vix.com.
-a
-b.c
-  new origin: b.c.d.e.f.vix.com.
-a
-b
-c
-  new origin: d.e.f.vix.com.
-q
-  new origin: vix.com.
-g.h
-iterating backward
-  new origin: vix.com.
-g.h
-  new origin: d.e.f.vix.com.
-q
-  new origin: b.c.d.e.f.vix.com.
-c
-b
-a
-  new origin: d.e.f.vix.com.
-b.c
-a
-  new origin: vix.com.
-d.e.f
-c
-b
-a
-  new origin: .
-vix.com
-checking chain information for vix.com.
-  found exact.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: vix.com.
-      (foundname = vix.com, origin = .)
-  level_matches = 0, level_count = 0
-checking chain information for zzz.com.
-  name not found.  no data at node.
-  name from dns_rbtnodechain_current: g.h.vix.com.
-      (foundname = g.h, origin = vix.com.)
-  level_matches = 0, level_count = 1
-checking chain information for 0.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: vix.com.
-      (foundname = vix.com, origin = .)
-  level_matches = 0, level_count = 0
-checking chain information for d.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: c.vix.com.
-      (foundname = c, origin = vix.com.)
-  level_matches = 0, level_count = 1
-checking chain information for f.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: c.vix.com.
-      (foundname = c, origin = vix.com.)
-  level_matches = 0, level_count = 1
-checking chain information for a.e.f.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: c.vix.com.
-      (foundname = c, origin = vix.com.)
-  level_matches = 0, level_count = 1
-checking chain information for z.e.f.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: q.d.e.f.vix.com.
-      (foundname = q, origin = d.e.f.vix.com.)
-  level_matches = 0, level_count = 2
-checking chain information for g.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: q.d.e.f.vix.com.
-      (foundname = q, origin = d.e.f.vix.com.)
-  level_matches = 0, level_count = 2
-checking chain information for i.vix.com.
-  found parent.  no data at node.
-  name from dns_rbt_findnode: vix.com.
-  name from dns_rbtnodechain_current: g.h.vix.com.
-      (foundname = g.h, origin = vix.com.)
-  level_matches = 0, level_count = 1
-checking chain information for b.c.vix.com.
-  found parent.  data at node: c.vix.com.
-  name from dns_rbt_findnode: c.vix.com.
-  name from dns_rbtnodechain_current: c.vix.com.
-      (foundname = c, origin = vix.com.)
-  level_matches = 1, level_count = 1
-nuking name d.e.f.vix.com and its descendants
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       NULL
-                       NULL
-               g.h (black from b)
-                       c (RED from g.h)
-                               NULL
-                               NULL
-                       NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-adding name x.a.vix.com
-adding name y.x.a.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       ++ BEG down from a
-                       x (black)
-                               ++ BEG down from x
-                               y (black)
-                                       NULL
-                                       NULL
-                               -- END down from x
-                               NULL
-                               NULL
-                       -- END down from a
-                       NULL
-                       NULL
-               g.h (black from b)
-                       c (RED from g.h)
-                               NULL
-                               NULL
-                       NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-deleting name a.vix.com
-deleting name x.a.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       b (black)
-               a (black from b)
-                       ++ BEG down from a
-                       x (black)
-                               ++ BEG down from x
-                               y (black)
-                                       NULL
-                                       NULL
-                               -- END down from x
-                               NULL
-                               NULL
-                       -- END down from a
-                       NULL
-                       NULL
-               g.h (black from b)
-                       c (RED from g.h)
-                               NULL
-                               NULL
-                       NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-deleting name b.vix.com
-deleting name c.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       g.h (black)
-               a (RED from g.h)
-                       ++ BEG down from a
-                       x (black)
-                               ++ BEG down from x
-                               y (black)
-                                       NULL
-                                       NULL
-                               -- END down from x
-                               NULL
-                               NULL
-                       -- END down from a
-                       NULL
-                       NULL
-               NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-deleting name y.x.a.vix.com
-vix.com. (black)
-       ++ BEG down from vix.com.
-       g.h (black)
-               a (RED from g.h)
-                       ++ BEG down from a
-                       x (black)
-                               NULL
-                               NULL
-                       -- END down from a
-                       NULL
-                       NULL
-               NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-deleting name g.h.vix.com.
-adding name \[b100000].vix.com.
-adding name \[b010000].vix.com.
-adding name \[b001000].vix.com.
-adding name \[b000100].vix.com.
-adding name \[b000010].vix.com.
-adding name \[b000001].vix.com.
-vix.com. (black)
-       ++ BEG down from vix.com.
-       \[x80/6] (black)
-               \[x0/1] (RED from \[x80/6])
-                       ++ BEG down from \[x0/1]
-                       \[x80/5] (black)
-                               \[x0/1] (RED from \[x80/5])
-                                       ++ BEG down from \[x0/1]
-                                       \[x8/4] (black)
-                                               \[x0/1] (RED from \[x8/4])
-                                                       ++ BEG down from \[x0/1]
-                                                       \[x8/3] (black)
-                                                               \[x0/1] (RED from \[x8/3])
-                                                                       ++ BEG down from \[x0/1]
-                                                                       \[x8/2] (black)
-                                                                               \[x4/2] (RED from \[x8/2])
-                                                                                       NULL
-                                                                                       NULL
-                                                                               NULL
-                                                                       -- END down from \[x0/1]
-                                                                       NULL
-                                                                       NULL
-                                                               NULL
-                                                       -- END down from \[x0/1]
-                                                       NULL
-                                                       NULL
-                                               NULL
-                                       -- END down from \[x0/1]
-                                       NULL
-                                       NULL
-                               NULL
-                       -- END down from \[x0/1]
-                       NULL
-                       NULL
-               a (RED from \[x80/6])
-                       ++ BEG down from a
-                       x (black)
-                               NULL
-                               NULL
-                       -- END down from a
-                       NULL
-                       NULL
-       -- END down from vix.com.
-       NULL
-       NULL
-searching for name \[b000100].vix.com. ... found exact: \[x10/6].vix.com.
-adding name vix.com.
-nuking name vix.com. and its descendants
-adding name a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-adding name b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w. (black)
-       ++ BEG down from b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-       a (black)
-               NULL
-               NULL
-       -- END down from b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-       NULL
-       NULL
-adding name .
-nuking name . and its descendants
-adding name \[xFFFF/16].\[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/256].com
-adding name \[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/128].com
-\[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/128].com. (black)
-       ++ BEG down from \[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/128].com.
-       \[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/144] (black)
-               NULL
-               NULL
-       -- END down from \[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/128].com.
-       NULL
-       NULL
diff --git a/bin/tests/optional/rbt_test.txt b/bin/tests/optional/rbt_test.txt
deleted file mode 100644 (file)
index 4821c34..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-add a.vix.com
-add b.vix.com
-add c.vix.com
-print
-add a.b.c.d.e.f.vix.com
-add b.b.c.d.e.f.vix.com
-add c.b.c.d.e.f.vix.com
-print
-add a.d.e.f.vix.com
-add q.d.e.f.vix.com
-add d.e.f.vix.com
-print
-add g.h.vix.com
-print
-search q.d.e.f.vix.com
-search just-parent.a.vix.com
-search no-real-parent.vix.com
-search does.not.exist.at.all
-forward
-backward
-# existing name
-check vix.com.
-# greater than stop node, which has down pointer
-check zzz.com.
-# less than lowest in level (would be left link from stop node)
-check 0.vix.com
-# greater than stop node, no down pointer
-check d.vix.com
-# superdomain stored in existing node
-check f.vix.com
-# common ancestor stored in existing node; existing is successor
-check a.e.f.vix.com
-# common ancestor stored in existing node; existing is less but not predecessor
-check z.e.f.vix.com
-#
-check g.vix.com
-#
-check i.vix.com
-#
-check b.c.vix.com
-nuke d.e.f.vix.com
-print
-add x.a.vix.com
-add y.x.a.vix.com
-print
-delete a.vix.com
-delete x.a.vix.com
-print
-delete b.vix.com
-delete c.vix.com
-print
-delete y.x.a.vix.com
-print
-delete g.h.vix.com.
-add \[b100000].vix.com.
-add \[b010000].vix.com.
-add \[b001000].vix.com.
-add \[b000100].vix.com.
-add \[b000010].vix.com.
-add \[b000001].vix.com.
-p
-search \[b000100].vix.com.
-# zap the entire tree
-add vix.com.
-nuke vix.com.
-add a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-add b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.
-print
-add .
-# zap it again
-nuke .
-# test splitting of maximal bitstring
-add \[xFFFF/16].\[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/256].com
-add \[xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/128].com
-print
-quit
diff --git a/bin/tests/optional/rwlock_test.c b/bin/tests/optional/rwlock_test.c
deleted file mode 100644 (file)
index 587f025..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <isc/print.h>
-#include <isc/rwlock.h>
-#include <isc/string.h>
-#include <isc/thread.h>
-#include <isc/util.h>
-
-#ifdef WIN32
-#define sleep(x) Sleep(1000 * x)
-#endif /* ifdef WIN32 */
-
-isc_rwlock_t lock;
-
-static isc_threadresult_t
-#ifdef WIN32
-       WINAPI
-#endif /* ifdef WIN32 */
-       run1(void *arg) {
-       char *message = arg;
-
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       printf("%s got READ lock\n", message);
-       sleep(1);
-       printf("%s giving up READ lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       printf("%s got READ lock\n", message);
-       sleep(1);
-       printf("%s giving up READ lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       printf("%s got WRITE lock\n", message);
-       sleep(1);
-       printf("%s giving up WRITE lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       return ((isc_threadresult_t)0);
-}
-
-static isc_threadresult_t
-#ifdef WIN32
-       WINAPI
-#endif /* ifdef WIN32 */
-       run2(void *arg) {
-       char *message = arg;
-
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       printf("%s got WRITE lock\n", message);
-       sleep(1);
-       printf("%s giving up WRITE lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       printf("%s got WRITE lock\n", message);
-       sleep(1);
-       printf("%s giving up WRITE lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_write) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_rwlock_lock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       printf("%s got READ lock\n", message);
-       sleep(1);
-       printf("%s giving up READ lock\n", message);
-       RUNTIME_CHECK(isc_rwlock_unlock(&lock, isc_rwlocktype_read) ==
-                     ISC_R_SUCCESS);
-       return ((isc_threadresult_t)0);
-}
-
-int
-main(int argc, char *argv[]) {
-       unsigned int nworkers;
-       unsigned int i;
-       isc_thread_t workers[100];
-       char name[100];
-       void *dupname;
-
-       if (argc > 1) {
-               nworkers = atoi(argv[1]);
-       } else {
-               nworkers = 2;
-       }
-       if (nworkers > 100) {
-               nworkers = 100;
-       }
-       printf("%u workers\n", nworkers);
-
-       RUNTIME_CHECK(isc_rwlock_init(&lock, 5, 10) == ISC_R_SUCCESS);
-
-       for (i = 0; i < nworkers; i++) {
-               snprintf(name, sizeof(name), "%02u", i);
-               dupname = strdup(name);
-               RUNTIME_CHECK(dupname != NULL);
-               if (i != 0 && i % 3 == 0) {
-                       isc_thread_create(run1, dupname, &workers[i]);
-               } else {
-                       isc_thread_create(run2, dupname, &workers[i]);
-               }
-       }
-
-       for (i = 0; i < nworkers; i++) {
-               isc_thread_join(workers[i], NULL);
-       }
-
-       isc_rwlock_destroy(&lock);
-
-       return (0);
-}
diff --git a/bin/tests/optional/serial_test.c b/bin/tests/optional/serial_test.c
deleted file mode 100644 (file)
index bd901fd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <isc/print.h>
-#include <isc/serial.h>
-
-int
-main() {
-       uint32_t a, b;
-       char buf[1024];
-       char *s, *e;
-
-       while (fgets(buf, sizeof(buf), stdin) != NULL) {
-               buf[sizeof(buf) - 1] = '\0';
-               s = buf;
-               a = strtoul(s, &e, 0);
-               if (s == e) {
-                       continue;
-               }
-               s = e;
-               b = strtoul(s, &e, 0);
-               if (s == e) {
-                       continue;
-               }
-               fprintf(stdout, "%u %u gt:%d lt:%d ge:%d le:%d eq:%d ne:%d\n",
-                       a, b, isc_serial_gt(a, b), isc_serial_lt(a, b),
-                       isc_serial_ge(a, b), isc_serial_le(a, b),
-                       isc_serial_eq(a, b), isc_serial_ne(a, b));
-       }
-       return (0);
-}
diff --git a/bin/tests/optional/shutdown_test.c b/bin/tests/optional/shutdown_test.c
deleted file mode 100644 (file)
index 234b886..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <isc/app.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/string.h>
-#include <isc/task.h>
-#include <isc/time.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-typedef struct {
-       isc_mem_t *mctx;
-       isc_task_t *task;
-       isc_timer_t *timer;
-       unsigned int ticks;
-       char name[16];
-       bool exiting;
-       isc_task_t *peer;
-} t_info;
-
-#define MAX_TASKS      3
-#define T2_SHUTDOWNOK  (ISC_EVENTCLASS(1024) + 0)
-#define T2_SHUTDOWNDONE (ISC_EVENTCLASS(1024) + 1)
-#define FOO_EVENT      (ISC_EVENTCLASS(1024) + 2)
-
-static t_info tasks[MAX_TASKS];
-static unsigned int task_count;
-static isc_taskmgr_t *task_manager;
-static isc_timermgr_t *timer_manager;
-
-static void
-t1_shutdown(isc_task_t *task, isc_event_t *event) {
-       t_info *info = event->ev_arg;
-
-       printf("task %s (%p) t1_shutdown\n", info->name, task);
-       isc_task_detach(&info->task);
-       isc_event_free(&event);
-}
-
-static void
-t2_shutdown(isc_task_t *task, isc_event_t *event) {
-       t_info *info = event->ev_arg;
-
-       printf("task %s (%p) t2_shutdown\n", info->name, task);
-       info->exiting = true;
-       isc_event_free(&event);
-}
-
-static void
-shutdown_action(isc_task_t *task, isc_event_t *event) {
-       t_info *info = event->ev_arg;
-       isc_event_t *nevent;
-
-       INSIST(event->ev_type == ISC_TASKEVENT_SHUTDOWN);
-
-       printf("task %s (%p) shutdown\n", info->name, task);
-       if (strcmp(info->name, "0") == 0) {
-               isc_timer_detach(&info->timer);
-               nevent = isc_event_allocate(info->mctx, info, T2_SHUTDOWNOK,
-                                           t2_shutdown, &tasks[1],
-                                           sizeof(*event));
-               RUNTIME_CHECK(nevent != NULL);
-               info->exiting = true;
-               isc_task_sendanddetach(&info->peer, &nevent);
-       }
-       isc_event_free(&event);
-}
-
-static void
-foo_event(isc_task_t *task, isc_event_t *event) {
-       printf("task(%p) foo\n", task);
-       isc_event_free(&event);
-}
-
-static void
-tick(isc_task_t *task, isc_event_t *event) {
-       t_info *info = event->ev_arg;
-       isc_event_t *nevent;
-
-       INSIST(event->ev_type == ISC_TIMEREVENT_TICK);
-
-       printf("task %s (%p) tick\n", info->name, task);
-
-       info->ticks++;
-       if (strcmp(info->name, "1") == 0) {
-               if (info->ticks == 10) {
-                       isc_app_shutdown();
-               } else if (info->ticks >= 15 && info->exiting) {
-                       isc_timer_detach(&info->timer);
-                       isc_task_detach(&info->task);
-                       nevent = isc_event_allocate(
-                               info->mctx, info, T2_SHUTDOWNDONE, t1_shutdown,
-                               &tasks[0], sizeof(*event));
-                       RUNTIME_CHECK(nevent != NULL);
-                       isc_task_send(info->peer, &nevent);
-                       isc_task_detach(&info->peer);
-               }
-       } else if (strcmp(info->name, "foo") == 0) {
-               isc_timer_detach(&info->timer);
-               nevent = isc_event_allocate(info->mctx, info, FOO_EVENT,
-                                           foo_event, task, sizeof(*event));
-               RUNTIME_CHECK(nevent != NULL);
-               isc_task_sendanddetach(&task, &nevent);
-       }
-
-       isc_event_free(&event);
-}
-
-static t_info *
-new_task(isc_mem_t *mctx, const char *name) {
-       t_info *ti;
-       isc_time_t expires;
-       isc_interval_t interval;
-
-       RUNTIME_CHECK(task_count < MAX_TASKS);
-       ti = &tasks[task_count];
-       ti->mctx = mctx;
-       ti->task = NULL;
-       ti->timer = NULL;
-       ti->ticks = 0;
-       if (name != NULL) {
-               INSIST(strlen(name) < sizeof(ti->name));
-               strlcpy(ti->name, name, sizeof(ti->name));
-       } else {
-               snprintf(ti->name, sizeof(ti->name), "%u", task_count);
-       }
-       RUNTIME_CHECK(isc_task_create(task_manager, 0, &ti->task) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(ti->task, shutdown_action, ti) ==
-                     ISC_R_SUCCESS);
-
-       isc_time_settoepoch(&expires);
-       isc_interval_set(&interval, 1, 0);
-       RUNTIME_CHECK(isc_timer_create(timer_manager, isc_timertype_ticker,
-                                      &expires, &interval, ti->task, tick, ti,
-                                      &ti->timer) == ISC_R_SUCCESS);
-
-       task_count++;
-
-       return (ti);
-}
-
-int
-main(int argc, char *argv[]) {
-       unsigned int workers;
-       t_info *t1, *t2;
-       isc_task_t *task;
-       isc_mem_t *mctx, *mctx2;
-
-       RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
-
-       if (argc > 1) {
-               workers = atoi(argv[1]);
-               if (workers < 1) {
-                       workers = 1;
-               }
-               if (workers > 8192) {
-                       workers = 8192;
-               }
-       } else {
-               workers = 2;
-       }
-       printf("%u workers\n", workers);
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-       mctx2 = NULL;
-       isc_mem_create(&mctx2);
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, NULL,
-                                        &task_manager) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timer_manager) ==
-                     ISC_R_SUCCESS);
-
-       t1 = new_task(mctx, NULL);
-       t2 = new_task(mctx2, NULL);
-       isc_task_attach(t2->task, &t1->peer);
-       isc_task_attach(t1->task, &t2->peer);
-
-       /*
-        * Test run-triggered shutdown.
-        */
-       (void)new_task(mctx2, "foo");
-
-       /*
-        * Test implicit shutdown.
-        */
-       task = NULL;
-       RUNTIME_CHECK(isc_task_create(task_manager, 0, &task) == ISC_R_SUCCESS);
-       isc_task_detach(&task);
-
-       /*
-        * Test anti-zombie code.
-        */
-       RUNTIME_CHECK(isc_task_create(task_manager, 0, &task) == ISC_R_SUCCESS);
-       isc_task_detach(&task);
-
-       RUNTIME_CHECK(isc_app_run() == ISC_R_SUCCESS);
-
-       isc_taskmgr_destroy(&task_manager);
-       isc_timermgr_destroy(&timer_manager);
-
-       printf("Statistics for mctx:\n");
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-       printf("Statistics for mctx2:\n");
-       isc_mem_stats(mctx2, stdout);
-       isc_mem_destroy(&mctx2);
-
-       isc_app_finish();
-
-       return (0);
-}
diff --git a/bin/tests/optional/sig0_test.c b/bin/tests/optional/sig0_test.c
deleted file mode 100644 (file)
index 233fc59..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <isc/app.h>
-#include <isc/assertions.h>
-#include <isc/commandline.h>
-#include <isc/error.h>
-#include <isc/log.h>
-#include <isc/mem.h>
-#include <isc/mutex.h>
-#include <isc/net.h>
-#include <isc/print.h>
-#include <isc/socket.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/dnssec.h>
-#include <dns/events.h>
-#include <dns/fixedname.h>
-#include <dns/keyvalues.h>
-#include <dns/masterdump.h>
-#include <dns/message.h>
-#include <dns/name.h>
-#include <dns/rdataset.h>
-#include <dns/resolver.h>
-#include <dns/result.h>
-#include <dns/types.h>
-
-#include <dst/dst.h>
-#include <dst/result.h>
-
-#define CHECK(str, x)                                                    \
-       {                                                                \
-               if ((x) != ISC_R_SUCCESS) {                              \
-                       printf("%s: %s\n", (str), isc_result_totext(x)); \
-                       exit(-1);                                        \
-               }                                                        \
-       }
-
-isc_mutex_t lock;
-dst_key_t *key;
-isc_mem_t *mctx;
-unsigned char qdata[1024], rdata[1024];
-isc_buffer_t qbuffer, rbuffer;
-isc_taskmgr_t *taskmgr;
-isc_task_t *task1;
-isc_log_t *lctx = NULL;
-isc_logconfig_t *logconfig = NULL;
-isc_socket_t *s;
-isc_sockaddr_t address;
-char output[10 * 1024];
-isc_buffer_t outbuf;
-static const dns_master_style_t *style = &dns_master_style_debug;
-
-static void
-senddone(isc_task_t *task, isc_event_t *event) {
-       isc_socketevent_t *sevent = (isc_socketevent_t *)event;
-
-       REQUIRE(sevent != NULL);
-       REQUIRE(sevent->ev_type == ISC_SOCKEVENT_SENDDONE);
-       REQUIRE(task == task1);
-
-       printf("senddone\n");
-
-       isc_event_free(&event);
-}
-
-static void
-recvdone(isc_task_t *task, isc_event_t *event) {
-       isc_socketevent_t *sevent = (isc_socketevent_t *)event;
-       isc_buffer_t source;
-       isc_result_t result;
-       dns_message_t *response;
-
-       REQUIRE(sevent != NULL);
-       REQUIRE(sevent->ev_type == ISC_SOCKEVENT_RECVDONE);
-       REQUIRE(task == task1);
-
-       printf("recvdone\n");
-       if (sevent->result != ISC_R_SUCCESS) {
-               printf("failed\n");
-               exit(-1);
-       }
-
-       isc_buffer_init(&source, sevent->region.base, sevent->region.length);
-       isc_buffer_add(&source, sevent->n);
-
-       response = NULL;
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &response);
-       CHECK("dns_message_create", result);
-       result = dns_message_parse(response, &source, 0);
-       CHECK("dns_message_parse", result);
-
-       isc_buffer_init(&outbuf, output, sizeof(output));
-       result = dns_message_totext(response, style, 0, &outbuf);
-       CHECK("dns_message_totext", result);
-       printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
-              (char *)isc_buffer_base(&outbuf));
-
-       dns_message_destroy(&response);
-       isc_event_free(&event);
-
-       isc_app_shutdown();
-}
-
-static void
-buildquery(void) {
-       isc_result_t result;
-       dns_rdataset_t *question = NULL;
-       dns_name_t *qname = NULL;
-       isc_region_t r, inr;
-       dns_message_t *query;
-       char nametext[] = "host.example";
-       isc_buffer_t namesrc, namedst;
-       unsigned char namedata[256];
-       isc_sockaddr_t sa;
-       dns_compress_t cctx;
-
-       query = NULL;
-       result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &query);
-       CHECK("dns_message_create", result);
-       result = dns_message_setsig0key(query, key);
-       CHECK("dns_message_setsig0key", result);
-
-       result = dns_message_gettemprdataset(query, &question);
-       CHECK("dns_message_gettemprdataset", result);
-       dns_rdataset_makequestion(question, dns_rdataclass_in, dns_rdatatype_a);
-       result = dns_message_gettempname(query, &qname);
-       CHECK("dns_message_gettempname", result);
-       isc_buffer_init(&namesrc, nametext, strlen(nametext));
-       isc_buffer_add(&namesrc, strlen(nametext));
-       isc_buffer_init(&namedst, namedata, sizeof(namedata));
-       dns_name_init(qname, NULL);
-       result = dns_name_fromtext(qname, &namesrc, dns_rootname, 0, &namedst);
-       CHECK("dns_name_fromtext", result);
-       ISC_LIST_APPEND(qname->list, question, link);
-       dns_message_addname(query, qname, DNS_SECTION_QUESTION);
-
-       isc_buffer_init(&qbuffer, qdata, sizeof(qdata));
-
-       result = dns_compress_init(&cctx, -1, mctx);
-       CHECK("dns_compress_init", result);
-       result = dns_message_renderbegin(query, &cctx, &qbuffer);
-       CHECK("dns_message_renderbegin", result);
-       result = dns_message_rendersection(query, DNS_SECTION_QUESTION, 0);
-       CHECK("dns_message_rendersection(question)", result);
-       result = dns_message_rendersection(query, DNS_SECTION_ANSWER, 0);
-       CHECK("dns_message_rendersection(answer)", result);
-       result = dns_message_rendersection(query, DNS_SECTION_AUTHORITY, 0);
-       CHECK("dns_message_rendersection(auth)", result);
-       result = dns_message_rendersection(query, DNS_SECTION_ADDITIONAL, 0);
-       CHECK("dns_message_rendersection(add)", result);
-       result = dns_message_renderend(query);
-       CHECK("dns_message_renderend", result);
-       dns_compress_invalidate(&cctx);
-
-       isc_buffer_init(&outbuf, output, sizeof(output));
-       result = dns_message_totext(query, style, 0, &outbuf);
-       CHECK("dns_message_totext", result);
-       printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
-              (char *)isc_buffer_base(&outbuf));
-
-       isc_buffer_usedregion(&qbuffer, &r);
-       isc_sockaddr_any(&sa);
-       result = isc_socket_bind(s, &sa, 0);
-       CHECK("isc_socket_bind", result);
-       result = isc_socket_sendto(s, &r, task1, senddone, NULL, &address,
-                                  NULL);
-       CHECK("isc_socket_sendto", result);
-
-       inr.base = rdata;
-       inr.length = sizeof(rdata);
-       result = isc_socket_recv(s, &inr, 1, task1, recvdone, NULL);
-       CHECK("isc_socket_recv", result);
-       dns_message_destroy(&query);
-}
-
-int
-main(int argc, char *argv[]) {
-       bool verbose = false;
-       isc_socketmgr_t *socketmgr;
-       isc_timermgr_t *timermgr;
-       struct in_addr inaddr;
-       dns_fixedname_t fname;
-       dns_name_t *name;
-       isc_buffer_t b;
-       int ch;
-       isc_result_t result;
-       in_port_t port = 53;
-
-       RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
-
-       isc_mutex_init(&lock);
-
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       while ((ch = isc_commandline_parse(argc, argv, "vp:")) != -1) {
-               switch (ch) {
-               case 'v':
-                       verbose = true;
-                       break;
-               case 'p':
-                       port = (unsigned int)atoi(isc_commandline_argument);
-                       break;
-               }
-       }
-
-       RUNTIME_CHECK(dst_lib_init(mctx, NULL) == ISC_R_SUCCESS);
-
-       dns_result_register();
-       dst_result_register();
-
-       taskmgr = NULL;
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, 2, 0, NULL, &taskmgr) ==
-                     ISC_R_SUCCESS);
-       task1 = NULL;
-       RUNTIME_CHECK(isc_task_create(taskmgr, 0, &task1) == ISC_R_SUCCESS);
-
-       timermgr = NULL;
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timermgr) == ISC_R_SUCCESS);
-       socketmgr = NULL;
-       RUNTIME_CHECK(isc_socketmgr_create(mctx, &socketmgr) == ISC_R_SUCCESS);
-
-       isc_log_create(mctx, &lctx, &logconfig);
-
-       s = NULL;
-       RUNTIME_CHECK(isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp,
-                                       &s) == ISC_R_SUCCESS);
-
-       inaddr.s_addr = htonl(INADDR_LOOPBACK);
-       isc_sockaddr_fromin(&address, &inaddr, port);
-
-       name = dns_fixedname_initname(&fname);
-       isc_buffer_constinit(&b, "child.example.", strlen("child.example."));
-       isc_buffer_add(&b, strlen("child.example."));
-       result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL);
-       CHECK("dns_name_fromtext", result);
-
-       key = NULL;
-       result = dst_key_fromfile(name, 33180, DNS_KEYALG_RSASHA1,
-                                 DST_TYPE_PUBLIC | DST_TYPE_PRIVATE, NULL,
-                                 mctx, &key);
-       CHECK("dst_key_fromfile", result);
-
-       buildquery();
-
-       (void)isc_app_run();
-
-       isc_task_shutdown(task1);
-       isc_task_detach(&task1);
-       isc_taskmgr_destroy(&taskmgr);
-
-       isc_socket_detach(&s);
-       isc_socketmgr_destroy(&socketmgr);
-       isc_timermgr_destroy(&timermgr);
-
-       dst_key_free(&key);
-
-       dst_lib_destroy();
-
-       isc_log_destroy(&lctx);
-
-       if (verbose) {
-               isc_mem_stats(mctx, stdout);
-       }
-       isc_mem_destroy(&mctx);
-
-       isc_mutex_destroy(&lock);
-
-       isc_app_finish();
-
-       return (0);
-}
diff --git a/bin/tests/optional/sock_test.c b/bin/tests/optional/sock_test.c
deleted file mode 100644 (file)
index 4cdec29..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/socket.h>
-#include <isc/string.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx;
-isc_taskmgr_t *manager;
-
-static void
-my_shutdown(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-
-       printf("shutdown %s (%p)\n", name, task);
-       fflush(stdout);
-       isc_event_free(&event);
-}
-
-static void
-my_send(isc_task_t *task, isc_event_t *event) {
-       isc_socket_t *sock;
-       isc_socketevent_t *dev;
-
-       sock = event->ev_sender;
-       dev = (isc_socketevent_t *)event;
-
-       printf("my_send: %s task %p\n\t(sock %p, base %p, length %u, n %u, "
-              "result %u)\n",
-              (char *)(event->ev_arg), task, sock, dev->region.base,
-              dev->region.length, dev->n, dev->result);
-
-       if (dev->result != ISC_R_SUCCESS) {
-               isc_socket_detach(&sock);
-               isc_task_shutdown(task);
-       }
-
-       if (dev->region.base != NULL) {
-               isc_mem_put(mctx, dev->region.base, dev->region.length);
-       }
-
-       isc_event_free(&event);
-}
-
-static void
-my_recv(isc_task_t *task, isc_event_t *event) {
-       isc_socket_t *sock;
-       isc_socketevent_t *dev;
-       isc_region_t region;
-       char buf[1024];
-       char host[256];
-
-       sock = event->ev_sender;
-       dev = (isc_socketevent_t *)event;
-
-       printf("Socket %s (sock %p, base %p, length %u, n %u, result %u)\n",
-              (char *)(event->ev_arg), sock, dev->region.base,
-              dev->region.length, dev->n, dev->result);
-       if (dev->address.type.sa.sa_family == AF_INET6) {
-               inet_ntop(AF_INET6, &dev->address.type.sin6.sin6_addr, host,
-                         sizeof(host));
-               printf("\tFrom: %s port %d\n", host,
-                      ntohs(dev->address.type.sin6.sin6_port));
-       } else {
-               inet_ntop(AF_INET, &dev->address.type.sin.sin_addr, host,
-                         sizeof(host));
-               printf("\tFrom: %s port %d\n", host,
-                      ntohs(dev->address.type.sin.sin_port));
-       }
-
-       if (dev->result != ISC_R_SUCCESS) {
-               isc_socket_detach(&sock);
-
-               if (dev->region.base != NULL) {
-                       isc_mem_put(mctx, dev->region.base, dev->region.length);
-               }
-               isc_event_free(&event);
-
-               isc_task_shutdown(task);
-               return;
-       }
-
-       /*
-        * Echo the data back.
-        */
-       if (strcmp(event->ev_arg, "so2") != 0) {
-               region = dev->region;
-               snprintf(buf, sizeof(buf), "\r\nReceived: %.*s\r\n\r\n",
-                        (int)dev->n, (char *)region.base);
-               region.base = isc_mem_get(mctx, strlen(buf) + 1);
-               {
-                       region.length = strlen(buf) + 1;
-                       strlcpy((char *)region.base, buf, region.length);
-               }
-               isc_socket_send(sock, &region, task, my_send, event->ev_arg);
-       } else {
-               region = dev->region;
-               printf("\r\nReceived: %.*s\r\n\r\n", (int)dev->n,
-                      (char *)region.base);
-       }
-
-       isc_socket_recv(sock, &dev->region, 1, task, my_recv, event->ev_arg);
-
-       isc_event_free(&event);
-}
-
-static void
-my_http_get(isc_task_t *task, isc_event_t *event) {
-       isc_socket_t *sock;
-       isc_socketevent_t *dev;
-
-       sock = event->ev_sender;
-       dev = (isc_socketevent_t *)event;
-
-       printf("my_http_get: %s task %p\n\t(sock %p, base %p, length %u, "
-              "n %u, result %u)\n",
-              (char *)(event->ev_arg), task, sock, dev->region.base,
-              dev->region.length, dev->n, dev->result);
-
-       if (dev->result != ISC_R_SUCCESS) {
-               isc_socket_detach(&sock);
-               isc_task_shutdown(task);
-               if (dev->region.base != NULL) {
-                       isc_mem_put(mctx, dev->region.base, dev->region.length);
-               }
-               isc_event_free(&event);
-               return;
-       }
-
-       isc_socket_recv(sock, &dev->region, 1, task, my_recv, event->ev_arg);
-
-       isc_event_free(&event);
-}
-
-static void
-my_connect(isc_task_t *task, isc_event_t *event) {
-       isc_socket_t *sock;
-       isc_socket_connev_t *dev;
-       isc_region_t region;
-       char buf[1024];
-
-       sock = event->ev_sender;
-       dev = (isc_socket_connev_t *)event;
-
-       printf("%s: Connection result:  %u\n", (char *)(event->ev_arg),
-              dev->result);
-
-       if (dev->result != ISC_R_SUCCESS) {
-               isc_socket_detach(&sock);
-               isc_event_free(&event);
-               isc_task_shutdown(task);
-               return;
-       }
-
-       /*
-        * Send a GET string, and set up to receive (and just display)
-        * the result.
-        */
-       snprintf(buf, sizeof(buf),
-                "GET / HTTP/1.1\r\nHost: www.flame.org\r\n"
-                "Connection: Close\r\n\r\n");
-       region.base = isc_mem_get(mctx, strlen(buf) + 1);
-       {
-               region.length = strlen(buf) + 1;
-               strlcpy((char *)region.base, buf, region.length);
-       }
-
-       isc_socket_send(sock, &region, task, my_http_get, event->ev_arg);
-
-       isc_event_free(&event);
-}
-
-static void
-my_listen(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-       isc_socket_newconnev_t *dev;
-       isc_region_t region;
-       isc_socket_t *oldsock;
-       isc_task_t *newtask;
-
-       dev = (isc_socket_newconnev_t *)event;
-
-       printf("newcon %s (task %p, oldsock %p, newsock %p, result %u)\n", name,
-              task, event->ev_sender, dev->newsocket, dev->result);
-       fflush(stdout);
-
-       if (dev->result == ISC_R_SUCCESS) {
-               /*
-                * Queue another listen on this socket.
-                */
-               RUNTIME_CHECK(isc_socket_accept(event->ev_sender, task,
-                                               my_listen, event->ev_arg) ==
-                             ISC_R_SUCCESS);
-
-               region.base = isc_mem_get(mctx, 20);
-               region.length = 20;
-
-               /*
-                * Create a new task for this socket, and queue up a
-                * recv on it.
-                */
-               newtask = NULL;
-               RUNTIME_CHECK(isc_task_create(manager, 0, &newtask) ==
-                             ISC_R_SUCCESS);
-               isc_socket_recv(dev->newsocket, &region, 1, newtask, my_recv,
-                               event->ev_arg);
-               isc_task_detach(&newtask);
-       } else {
-               printf("detaching from socket %p\n", event->ev_sender);
-               oldsock = event->ev_sender;
-
-               isc_socket_detach(&oldsock);
-
-               isc_event_free(&event);
-               isc_task_shutdown(task);
-               return;
-       }
-
-       isc_event_free(&event);
-}
-
-static void
-timeout(isc_task_t *task, isc_event_t *event) {
-       isc_socket_t *sock = event->ev_arg;
-
-       printf("Timeout, canceling IO on socket %p (task %p)\n", sock, task);
-
-       isc_socket_cancel(sock, NULL, ISC_SOCKCANCEL_ALL);
-       isc_timer_detach((isc_timer_t **)&event->ev_sender);
-       isc_event_free(&event);
-}
-
-static char one[] = "1";
-static char two[] = "2";
-static char xso1[] = "so1";
-static char xso2[] = "so2";
-
-int
-main(int argc, char *argv[]) {
-       isc_task_t *t1, *t2;
-       isc_timermgr_t *timgr;
-       isc_time_t expires;
-       isc_interval_t interval;
-       isc_timer_t *ti1;
-       unsigned int workers;
-       isc_socketmgr_t *socketmgr;
-       isc_socket_t *so1, *so2;
-       isc_sockaddr_t sockaddr;
-       struct in_addr ina;
-       struct in6_addr in6a;
-       isc_result_t result;
-       int pf;
-
-       if (argc > 1) {
-               workers = atoi(argv[1]);
-               if (workers < 1) {
-                       workers = 1;
-               }
-               if (workers > 8192) {
-                       workers = 8192;
-               }
-       } else {
-               workers = 2;
-       }
-       printf("%u workers\n", workers);
-
-       if (isc_net_probeipv6() == ISC_R_SUCCESS) {
-               pf = PF_INET6;
-       } else {
-               pf = PF_INET;
-       }
-
-       /*
-        * EVERYTHING needs a memory context.
-        */
-       mctx = NULL;
-       isc_mem_create(&mctx);
-
-       /*
-        * The task manager is independent (other than memory context)
-        */
-       manager = NULL;
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, NULL, &manager) ==
-                     ISC_R_SUCCESS);
-
-       /*
-        * Timer manager depends only on the memory context as well.
-        */
-       timgr = NULL;
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timgr) == ISC_R_SUCCESS);
-
-       t1 = NULL;
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t1) == ISC_R_SUCCESS);
-       t2 = NULL;
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t2) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t1, my_shutdown, one) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t2, my_shutdown, two) ==
-                     ISC_R_SUCCESS);
-
-       printf("task 1 = %p\n", t1);
-       printf("task 2 = %p\n", t2);
-
-       socketmgr = NULL;
-       RUNTIME_CHECK(isc_socketmgr_create(mctx, &socketmgr) == ISC_R_SUCCESS);
-
-       /*
-        * Open up a listener socket.
-        */
-       so1 = NULL;
-
-       if (pf == PF_INET6) {
-               in6a = in6addr_any;
-               isc_sockaddr_fromin6(&sockaddr, &in6a, 5544);
-       } else {
-               ina.s_addr = INADDR_ANY;
-               isc_sockaddr_fromin(&sockaddr, &ina, 5544);
-       }
-       RUNTIME_CHECK(isc_socket_create(socketmgr, pf, isc_sockettype_tcp,
-                                       &so1) == ISC_R_SUCCESS);
-       result = isc_socket_bind(so1, &sockaddr, ISC_SOCKET_REUSEADDRESS);
-       RUNTIME_CHECK(result == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_socket_listen(so1, 0) == ISC_R_SUCCESS);
-
-       /*
-        * Queue up the first accept event.
-        */
-       RUNTIME_CHECK(isc_socket_accept(so1, t1, my_listen, xso1) ==
-                     ISC_R_SUCCESS);
-       isc_time_settoepoch(&expires);
-       isc_interval_set(&interval, 10, 0);
-       ti1 = NULL;
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_once, &expires,
-                                      &interval, t1, timeout, so1,
-                                      &ti1) == ISC_R_SUCCESS);
-
-       /*
-        * Open up a socket that will connect to www.flame.org, port 80.
-        * Why not.  :)
-        */
-       so2 = NULL;
-       ina.s_addr = inet_addr("204.152.184.97");
-       if (0 && pf == PF_INET6) {
-               isc_sockaddr_v6fromin(&sockaddr, &ina, 80);
-       } else {
-               isc_sockaddr_fromin(&sockaddr, &ina, 80);
-       }
-       RUNTIME_CHECK(isc_socket_create(socketmgr, isc_sockaddr_pf(&sockaddr),
-                                       isc_sockettype_tcp,
-                                       &so2) == ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_socket_connect(so2, &sockaddr, t2, my_connect,
-                                        xso2) == ISC_R_SUCCESS);
-
-       /*
-        * Detaching these is safe, since the socket will attach to the
-        * task for any outstanding requests.
-        */
-       isc_task_detach(&t1);
-       isc_task_detach(&t2);
-
-       /*
-        * Wait a short while.
-        */
-#ifndef WIN32
-       sleep(10);
-#else  /* ifndef WIN32 */
-       Sleep(10000);
-#endif /* ifndef WIN32 */
-
-       fprintf(stderr, "Destroying socket manager\n");
-       isc_socketmgr_destroy(&socketmgr);
-
-       fprintf(stderr, "Destroying timer manager\n");
-       isc_timermgr_destroy(&timgr);
-
-       fprintf(stderr, "Destroying task manager\n");
-       isc_taskmgr_destroy(&manager);
-
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/sym_test.c b/bin/tests/optional/sym_test.c
deleted file mode 100644 (file)
index 3221892..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdbool.h>
-#include <string.h>
-
-#include <isc/commandline.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/symtab.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx;
-isc_symtab_t *st;
-
-static void
-undefine_action(char *key, unsigned int type, isc_symvalue_t value, void *arg) {
-       UNUSED(arg);
-
-       INSIST(type == 1);
-       isc_mem_free(mctx, key);
-       isc_mem_free(mctx, value.as_pointer);
-}
-
-int
-main(int argc, char *argv[]) {
-       char s[1000], *cp, *key;
-       size_t len;
-       isc_result_t result;
-       isc_symvalue_t value;
-       int trace = 0;
-       int c;
-       isc_symexists_t exists_policy = isc_symexists_reject;
-       bool case_sensitive = false;
-
-       while ((c = isc_commandline_parse(argc, argv, "tarc")) != -1) {
-               switch (c) {
-               case 't':
-                       trace = 1;
-                       break;
-               case 'a':
-                       exists_policy = isc_symexists_add;
-                       break;
-               case 'r':
-                       exists_policy = isc_symexists_replace;
-                       break;
-               case 'c':
-                       case_sensitive = true;
-                       break;
-               }
-       }
-
-       isc_mem_create(&mctx);
-       RUNTIME_CHECK(isc_symtab_create(mctx, 691, undefine_action, NULL,
-                                       case_sensitive, &st) == ISC_R_SUCCESS);
-
-       while (fgets(s, sizeof(s), stdin) != NULL) {
-               len = strlen(s);
-               if (len > 0U && s[len - 1] == '\n') {
-                       s[len - 1] = '\0';
-                       len--;
-               }
-
-               cp = s;
-
-               if (cp[0] == '!') {
-                       cp++;
-                       result = isc_symtab_undefine(st, cp, 1);
-                       if (trace || result != ISC_R_SUCCESS) {
-                               printf("undefine('%s'): %s\n", cp,
-                                      isc_result_totext(result));
-                       }
-               } else {
-                       key = cp;
-                       while (*cp != '\0' && *cp != ' ' && *cp != '\t') {
-                               cp++;
-                       }
-                       if (*cp == '\0') {
-                               result = isc_symtab_lookup(st, key, 0, &value);
-                               if (trace || result != ISC_R_SUCCESS) {
-                                       printf("lookup('%s'): %s", key,
-                                              isc_result_totext(result));
-                                       if (result == ISC_R_SUCCESS) {
-                                               cp = value.as_pointer;
-                                               printf(", value == '%s'", cp);
-                                       }
-                                       printf("\n");
-                               }
-                       } else {
-                               *cp++ = '\0';
-                               key = isc_mem_strdup(mctx, key);
-                               value.as_pointer = isc_mem_strdup(mctx, cp);
-                               result = isc_symtab_define(st, key, 1, value,
-                                                          exists_policy);
-                               if (trace || result != ISC_R_SUCCESS) {
-                                       printf("define('%s', '%s'): %s\n", key,
-                                              cp, isc_result_totext(result));
-                                       if (result != ISC_R_SUCCESS) {
-                                               undefine_action(key, 1, value,
-                                                               NULL);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       isc_symtab_destroy(&st);
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/task_test.c b/bin/tests/optional/task_test.c
deleted file mode 100644 (file)
index 68adfbb..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/task.h>
-#include <isc/time.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx = NULL;
-
-static void
-my_callback(isc_task_t *task, isc_event_t *event) {
-       int i, j;
-       char *name = event->ev_arg;
-
-       j = 0;
-       for (i = 0; i < 1000000; i++) {
-               j += 100;
-       }
-       printf("task %s (%p): %d\n", name, task, j);
-       isc_event_free(&event);
-}
-
-static void
-my_shutdown(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-
-       printf("shutdown %s (%p)\n", name, task);
-       isc_event_free(&event);
-}
-
-static void
-my_tick(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-
-       printf("task %p tick %s\n", task, name);
-       isc_event_free(&event);
-}
-
-static char one[] = "1";
-static char two[] = "2";
-static char three[] = "3";
-static char four[] = "4";
-static char foo[] = "foo";
-static char bar[] = "bar";
-
-int
-main(int argc, char *argv[]) {
-       isc_taskmgr_t *manager = NULL;
-       isc_task_t *t1 = NULL, *t2 = NULL;
-       isc_task_t *t3 = NULL, *t4 = NULL;
-       isc_event_t *event;
-       unsigned int workers;
-       isc_timermgr_t *timgr;
-       isc_timer_t *ti1, *ti2;
-       struct isc_interval interval;
-
-       if (argc > 1) {
-               workers = atoi(argv[1]);
-               if (workers < 1) {
-                       workers = 1;
-               }
-               if (workers > 8192) {
-                       workers = 8192;
-               }
-       } else {
-               workers = 2;
-       }
-       printf("%u workers\n", workers);
-
-       isc_mem_create(&mctx);
-
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, workers, 0, NULL, &manager) ==
-                     ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t1) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t2) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t3) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t4) == ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_task_onshutdown(t1, my_shutdown, one) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t2, my_shutdown, two) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t3, my_shutdown, three) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t4, my_shutdown, four) ==
-                     ISC_R_SUCCESS);
-
-       timgr = NULL;
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timgr) == ISC_R_SUCCESS);
-       ti1 = NULL;
-
-       isc_interval_set(&interval, 1, 0);
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_ticker, NULL,
-                                      &interval, t1, my_tick, foo,
-                                      &ti1) == ISC_R_SUCCESS);
-
-       ti2 = NULL;
-       isc_interval_set(&interval, 1, 0);
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_ticker, NULL,
-                                      &interval, t2, my_tick, bar,
-                                      &ti2) == ISC_R_SUCCESS);
-
-       printf("task 1 = %p\n", t1);
-       printf("task 2 = %p\n", t2);
-#ifndef WIN32
-       sleep(2);
-#else  /* ifndef WIN32 */
-       Sleep(2000);
-#endif /* ifndef WIN32 */
-
-       /*
-        * Note:  (void *)1 is used as a sender here, since some compilers
-        * don't like casting a function pointer to a (void *).
-        *
-        * In a real use, it is more likely the sender would be a
-        * structure (socket, timer, task, etc) but this is just a test
-        * program.
-        */
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, one,
-                                  sizeof(*event));
-       isc_task_send(t1, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, two,
-                                  sizeof(*event));
-       isc_task_send(t2, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, three,
-                                  sizeof(*event));
-       isc_task_send(t3, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, four,
-                                  sizeof(*event));
-       isc_task_send(t4, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, two,
-                                  sizeof(*event));
-       isc_task_send(t2, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, three,
-                                  sizeof(*event));
-       isc_task_send(t3, &event);
-       event = isc_event_allocate(mctx, (void *)1, 1, my_callback, four,
-                                  sizeof(*event));
-       isc_task_send(t4, &event);
-       isc_task_purgerange(t3, NULL, ISC_EVENTTYPE_FIRSTEVENT,
-                           ISC_EVENTTYPE_LASTEVENT, NULL);
-
-       isc_task_detach(&t1);
-       isc_task_detach(&t2);
-       isc_task_detach(&t3);
-       isc_task_detach(&t4);
-
-#ifndef WIN32
-       sleep(10);
-#else  /* ifndef WIN32 */
-       Sleep(10000);
-#endif /* ifndef WIN32 */
-       printf("destroy\n");
-       isc_timer_detach(&ti1);
-       isc_timer_detach(&ti2);
-       isc_timermgr_destroy(&timgr);
-       isc_taskmgr_destroy(&manager);
-       printf("destroyed\n");
-
-       isc_mem_stats(mctx, stdout);
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/optional/timer_test.c b/bin/tests/optional/timer_test.c
deleted file mode 100644 (file)
index 39dc840..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/task.h>
-#include <isc/time.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-isc_mem_t *mctx1, *mctx2, *mctx3;
-isc_task_t *t1, *t2, *t3;
-isc_timer_t *ti1, *ti2, *ti3;
-int tick_count = 0;
-
-static void
-shutdown_task(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-
-       printf("task %p shutdown %s\n", task, name);
-       isc_event_free(&event);
-}
-
-static void
-tick(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-
-       INSIST(event->ev_type == ISC_TIMEREVENT_TICK);
-
-       printf("task %s (%p) tick\n", name, task);
-
-       tick_count++;
-       if (ti3 != NULL && tick_count % 3 == 0) {
-               isc_timer_touch(ti3);
-       }
-
-       if (ti3 != NULL && tick_count == 7) {
-               isc_time_t expires;
-               isc_interval_t interval;
-
-               isc_interval_set(&interval, 5, 0);
-               (void)isc_time_nowplusinterval(&expires, &interval);
-               isc_interval_set(&interval, 4, 0);
-               printf("*** resetting ti3 ***\n");
-               RUNTIME_CHECK(isc_timer_reset(ti3, isc_timertype_once, &expires,
-                                             &interval,
-                                             true) == ISC_R_SUCCESS);
-       }
-
-       isc_event_free(&event);
-}
-
-static void
-timeout(isc_task_t *task, isc_event_t *event) {
-       char *name = event->ev_arg;
-       const char *type;
-
-       INSIST(event->ev_type == ISC_TIMEREVENT_IDLE ||
-              event->ev_type == ISC_TIMEREVENT_LIFE);
-
-       if (event->ev_type == ISC_TIMEREVENT_IDLE) {
-               type = "idle";
-       } else {
-               type = "life";
-       }
-       printf("task %s (%p) %s timeout\n", name, task, type);
-
-       if (strcmp(name, "3") == 0) {
-               printf("*** saving task 3 ***\n");
-               isc_event_free(&event);
-               return;
-       }
-
-       isc_event_free(&event);
-       isc_task_shutdown(task);
-}
-
-static char one[] = "1";
-static char two[] = "2";
-static char three[] = "3";
-
-int
-main(int argc, char *argv[]) {
-       isc_taskmgr_t *manager = NULL;
-       isc_timermgr_t *timgr = NULL;
-       unsigned int workers;
-       isc_time_t expires, now;
-       isc_interval_t interval;
-
-       if (argc > 1) {
-               workers = atoi(argv[1]);
-               if (workers < 1) {
-                       workers = 1;
-               }
-               if (workers > 8192) {
-                       workers = 8192;
-               }
-       } else {
-               workers = 2;
-       }
-       printf("%u workers\n", workers);
-
-       isc_mem_create(&mctx1);
-       RUNTIME_CHECK(isc_taskmgr_create(mctx1, workers, 0, NULL, &manager) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_timermgr_create(mctx1, &timgr) == ISC_R_SUCCESS);
-
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t1) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t2) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_create(manager, 0, &t3) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t1, shutdown_task, one) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t2, shutdown_task, two) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_task_onshutdown(t3, shutdown_task, three) ==
-                     ISC_R_SUCCESS);
-
-       printf("task 1: %p\n", t1);
-       printf("task 2: %p\n", t2);
-       printf("task 3: %p\n", t3);
-
-       TIME_NOW(&now);
-
-       isc_interval_set(&interval, 2, 0);
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_once, NULL,
-                                      &interval, t2, timeout, two,
-                                      &ti2) == ISC_R_SUCCESS);
-
-       isc_interval_set(&interval, 1, 0);
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_ticker, NULL,
-                                      &interval, t1, tick, one,
-                                      &ti1) == ISC_R_SUCCESS);
-
-       isc_interval_set(&interval, 10, 0);
-       RUNTIME_CHECK(isc_time_add(&now, &interval, &expires) == ISC_R_SUCCESS);
-       isc_interval_set(&interval, 2, 0);
-       RUNTIME_CHECK(isc_timer_create(timgr, isc_timertype_once, &expires,
-                                      &interval, t3, timeout, three,
-                                      &ti3) == ISC_R_SUCCESS);
-
-       isc_task_detach(&t1);
-       isc_task_detach(&t2);
-       isc_task_detach(&t3);
-
-#ifndef WIN32
-       sleep(15);
-#else  /* ifndef WIN32 */
-       Sleep(15000);
-#endif /* ifndef WIN32 */
-       printf("destroy\n");
-       isc_timer_detach(&ti1);
-       isc_timer_detach(&ti2);
-       isc_timer_detach(&ti3);
-#ifndef WIN32
-       sleep(2);
-#else  /* ifndef WIN32 */
-       Sleep(2000);
-#endif /* ifndef WIN32 */
-       isc_timermgr_destroy(&timgr);
-       isc_taskmgr_destroy(&manager);
-       printf("destroyed\n");
-
-       printf("Statistics for mctx1:\n");
-       isc_mem_stats(mctx1, stdout);
-       isc_mem_destroy(&mctx1);
-
-       return (0);
-}
diff --git a/bin/tests/optional/zone_test.c b/bin/tests/optional/zone_test.c
deleted file mode 100644 (file)
index e250aab..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <stdlib.h>
-#include <sys/param.h>
-#include <sys/select.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <isc/app.h>
-#include <isc/commandline.h>
-#include <isc/mem.h>
-#include <isc/print.h>
-#include <isc/socket.h>
-#include <isc/string.h>
-#include <isc/task.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <dns/db.h>
-#include <dns/fixedname.h>
-#include <dns/rdataclass.h>
-#include <dns/rdataset.h>
-#include <dns/result.h>
-#include <dns/zone.h>
-
-static int debug = 0;
-static int quiet = 0;
-static int stats = 0;
-static isc_mem_t *mctx = NULL;
-dns_zone_t *zone = NULL;
-isc_taskmgr_t *taskmgr = NULL;
-isc_timermgr_t *timermgr = NULL;
-isc_socketmgr_t *socketmgr = NULL;
-dns_zonemgr_t *zonemgr = NULL;
-dns_zonetype_t zonetype = dns_zone_master;
-isc_sockaddr_t addr;
-
-#define ERRRET(result, function)                                        \
-       do {                                                            \
-               if (result != ISC_R_SUCCESS) {                          \
-                       fprintf(stderr, "%s() returned %s\n", function, \
-                               dns_result_totext(result));             \
-                       return;                                         \
-               }                                                       \
-       } while (0)
-
-#define ERRCONT(result, function)                               \
-       if (result != ISC_R_SUCCESS) {                          \
-               fprintf(stderr, "%s() returned %s\n", function, \
-                       dns_result_totext(result));             \
-               continue;                                       \
-       } else                                                  \
-               (void)NULL
-
-static void
-usage(void) {
-       fprintf(stderr, "usage: zone_test [-dqsSM] [-c class] [-f file] "
-                       "zone\n");
-       exit(1);
-}
-
-static void
-setup(const char *zonename, const char *filename, const char *classname) {
-       isc_result_t result;
-       dns_rdataclass_t rdclass;
-       isc_consttextregion_t region;
-       isc_buffer_t buffer;
-       dns_fixedname_t fixorigin;
-       dns_name_t *origin;
-       const char *rbt = "rbt";
-
-       if (debug) {
-               fprintf(stderr, "loading \"%s\" from \"%s\" class \"%s\"\n",
-                       zonename, filename, classname);
-       }
-       result = dns_zone_create(&zone, mctx);
-       ERRRET(result, "dns_zone_new");
-
-       dns_zone_settype(zone, zonetype);
-
-       isc_buffer_constinit(&buffer, zonename, strlen(zonename));
-       isc_buffer_add(&buffer, strlen(zonename));
-       dns_fixedname_init(&fixorigin);
-       result = dns_name_fromtext(dns_fixedname_name(&fixorigin), &buffer,
-                                  dns_rootname, 0, NULL);
-       ERRRET(result, "dns_name_fromtext");
-       origin = dns_fixedname_name(&fixorigin);
-
-       result = dns_zone_setorigin(zone, origin);
-       ERRRET(result, "dns_zone_setorigin");
-
-       dns_zone_setdbtype(zone, 1, &rbt);
-
-       result = dns_zone_setfile(zone, filename, dns_masterformat_text,
-                                 &dns_master_style_default);
-       ERRRET(result, "dns_zone_setfile");
-
-       region.base = classname;
-       region.length = strlen(classname);
-       result = dns_rdataclass_fromtext(&rdclass,
-                                        (isc_textregion_t *)(void *)&region);
-       ERRRET(result, "dns_rdataclass_fromtext");
-
-       dns_zone_setclass(zone, rdclass);
-
-       if (zonetype == dns_zone_slave) {
-               dns_zone_setmasters(zone, &addr, 1);
-       }
-
-       result = dns_zone_load(zone, false);
-       ERRRET(result, "dns_zone_load");
-
-       result = dns_zonemgr_managezone(zonemgr, zone);
-       ERRRET(result, "dns_zonemgr_managezone");
-}
-
-static void
-print_rdataset(dns_name_t *name, dns_rdataset_t *rdataset) {
-       isc_buffer_t text;
-       char t[1000];
-       isc_result_t result;
-       isc_region_t r;
-
-       isc_buffer_init(&text, t, sizeof(t));
-       result = dns_rdataset_totext(rdataset, name, false, false, &text);
-       isc_buffer_usedregion(&text, &r);
-       if (result == ISC_R_SUCCESS) {
-               printf("%.*s", (int)r.length, (char *)r.base);
-       } else {
-               printf("%s\n", dns_result_totext(result));
-       }
-}
-
-static void
-query(void) {
-       char buf[1024];
-       dns_fixedname_t name;
-       dns_fixedname_t found;
-       dns_db_t *db;
-       isc_buffer_t buffer;
-       isc_result_t result;
-       dns_rdataset_t rdataset;
-       dns_rdataset_t sigset;
-       fd_set rfdset = { { 0 } };
-
-       db = NULL;
-       result = dns_zone_getdb(zone, &db);
-       if (result != ISC_R_SUCCESS) {
-               fprintf(stderr, "%s() returned %s\n", "dns_zone_getdb",
-                       dns_result_totext(result));
-               return;
-       }
-
-       dns_fixedname_init(&found);
-       dns_rdataset_init(&rdataset);
-       dns_rdataset_init(&sigset);
-
-       do {
-               char *s;
-               fprintf(stdout, "zone_test ");
-               fflush(stdout);
-               FD_ZERO(&rfdset);
-               FD_SET(0, &rfdset);
-               select(1, &rfdset, NULL, NULL, NULL);
-               if (fgets(buf, sizeof(buf), stdin) == NULL) {
-                       fprintf(stdout, "\n");
-                       break;
-               }
-               buf[sizeof(buf) - 1] = '\0';
-
-               s = strchr(buf, '\n');
-               if (s != NULL) {
-                       *s = '\0';
-               }
-               s = strchr(buf, '\r');
-               if (s != NULL) {
-                       *s = '\0';
-               }
-               if (strcmp(buf, "dump") == 0) {
-                       dns_zone_dumptostream(zone, stdout,
-                                             dns_masterformat_text,
-                                             &dns_master_style_default, 0);
-                       continue;
-               }
-               if (strlen(buf) == 0U) {
-                       continue;
-               }
-               dns_fixedname_init(&name);
-               isc_buffer_init(&buffer, buf, strlen(buf));
-               isc_buffer_add(&buffer, strlen(buf));
-               result = dns_name_fromtext(dns_fixedname_name(&name), &buffer,
-                                          dns_rootname, 0, NULL);
-               ERRCONT(result, "dns_name_fromtext");
-
-               result = dns_db_find(db, dns_fixedname_name(&name),
-                                    NULL /*version*/, dns_rdatatype_a,
-                                    0 /*options*/, 0 /*time*/, NULL /*nodep*/,
-                                    dns_fixedname_name(&found), &rdataset,
-                                    &sigset);
-               fprintf(stderr, "%s() returned %s\n", "dns_db_find",
-                       dns_result_totext(result));
-               switch (result) {
-               case DNS_R_DELEGATION:
-                       print_rdataset(dns_fixedname_name(&found), &rdataset);
-                       break;
-               case ISC_R_SUCCESS:
-                       print_rdataset(dns_fixedname_name(&name), &rdataset);
-                       break;
-               default:
-                       break;
-               }
-
-               if (dns_rdataset_isassociated(&rdataset)) {
-                       dns_rdataset_disassociate(&rdataset);
-               }
-               if (dns_rdataset_isassociated(&sigset)) {
-                       dns_rdataset_disassociate(&sigset);
-               }
-       } while (1);
-       dns_rdataset_invalidate(&rdataset);
-       dns_db_detach(&db);
-}
-
-int
-main(int argc, char **argv) {
-       int c;
-       char *filename = NULL;
-       const char *classname = "IN";
-
-       while ((c = isc_commandline_parse(argc, argv, "cdf:m:qsMS")) != EOF) {
-               switch (c) {
-               case 'c':
-                       classname = isc_commandline_argument;
-                       break;
-               case 'd':
-                       debug++;
-                       break;
-               case 'f':
-                       if (filename != NULL) {
-                               usage();
-                       }
-                       filename = isc_commandline_argument;
-                       break;
-               case 'm':
-                       memset(&addr, 0, sizeof(addr));
-                       addr.type.sin.sin_family = AF_INET;
-                       if (inet_pton(AF_INET, isc_commandline_argument,
-                                     &addr.type.sin.sin_addr) != 1) {
-                               fprintf(stderr, "bad master address '%s'\n",
-                                       isc_commandline_argument);
-                               exit(1);
-                       }
-                       addr.type.sin.sin_port = htons(53);
-                       break;
-               case 'q':
-                       quiet++;
-                       break;
-               case 's':
-                       stats++;
-                       break;
-               case 'S':
-                       zonetype = dns_zone_slave;
-                       break;
-               case 'M':
-                       zonetype = dns_zone_master;
-                       break;
-               default:
-                       usage();
-               }
-       }
-
-       if (argv[isc_commandline_index] == NULL) {
-               usage();
-       }
-
-       RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
-       isc_mem_create(&mctx);
-       RUNTIME_CHECK(isc_taskmgr_create(mctx, 2, 0, NULL, &taskmgr) ==
-                     ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_timermgr_create(mctx, &timermgr) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(isc_socketmgr_create(mctx, &socketmgr) == ISC_R_SUCCESS);
-       RUNTIME_CHECK(dns_zonemgr_create(mctx, taskmgr, timermgr, socketmgr,
-                                        &zonemgr) == ISC_R_SUCCESS);
-       if (filename == NULL) {
-               filename = argv[isc_commandline_index];
-       }
-       setup(argv[isc_commandline_index], filename, classname);
-       query();
-       if (zone != NULL) {
-               dns_zone_detach(&zone);
-       }
-       dns_zonemgr_shutdown(zonemgr);
-       dns_zonemgr_detach(&zonemgr);
-       isc_socketmgr_destroy(&socketmgr);
-       isc_taskmgr_destroy(&taskmgr);
-       isc_timermgr_destroy(&timermgr);
-       if (!quiet && stats) {
-               isc_mem_stats(mctx, stdout);
-       }
-       isc_mem_destroy(&mctx);
-
-       return (0);
-}
diff --git a/bin/tests/pkcs11/.gitignore b/bin/tests/pkcs11/.gitignore
deleted file mode 100644 (file)
index a259902..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-create
-find
-genrsa
-login
-privrsa
-pubrsa
-random
-session
-sha1
-sign
-verify
-pkcs11-hmacmd5
-pkcs11-md5sum
diff --git a/bin/tests/pkcs11/README b/bin/tests/pkcs11/README
deleted file mode 100644 (file)
index 2b594d9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-"pkcs11-hmacmd5" is here to check for the presence of a known bug in
-the Thales nCipher PKCS#11 provider library.  To test for the bug, use
-pkcs11-hmacmd5 to hash a test vector from RFC 2104, and determine
-whether the resulting digest is is correct.  For instance:
-
-    echo -n "Hi There" | \
-        ./pkcs11-hmacmd5 -p <PIN> -k '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'
-
-...must return "9294727a3638bb1c13f48ef8158bfc9d".
-
-If any other value is returned, then the provider library is buggy,
-and theflag PK11_MD5_HMAC_REPLACE must be defined in
-lib/isc/include/pk11/site.h
-However, if the correct value is returned, then it is safe to turn
-off PK11_MD5_HMAC_REPLACE. (It is on by default.)
diff --git a/bin/tests/pkcs11/benchmarks/.gitignore b/bin/tests/pkcs11/benchmarks/.gitignore
deleted file mode 100644 (file)
index 08c0a26..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/*.dSYM/
diff --git a/bin/tests/pkcs11/benchmarks/create.c b/bin/tests/pkcs11/benchmarks/create.c
deleted file mode 100644 (file)
index 954b81c..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* create [-m module] [-s $slot] [-p pin] [-t] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE buf[1024];
-char label[16];
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_OBJECT_HANDLE *hKey;
-       CK_OBJECT_CLASS kClass = CKO_DATA;
-       CK_ULONG len = sizeof(buf);
-       CK_ATTRIBUTE kTemplate[] = {
-               { CKA_CLASS, &kClass, (CK_ULONG)sizeof(kClass) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_LABEL, (CK_BYTE_PTR)label, (CK_ULONG)sizeof(label) },
-               { CKA_VALUE, buf, (CK_ULONG)sizeof(buf) }
-       };
-       pk11_context_t pctx;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tn:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tcreate [-m module] [-s slot] [-t] [-n "
-                               "count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Allocate handles */
-       hKey = (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (hKey == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++)
-               hKey[i] = CK_INVALID_HANDLE;
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, OP_ANY, true, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       /* Randomize the buffer */
-       rv = pkcs_C_GenerateRandom(hSession, buf, len);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_GenerateRandom: Error = 0x%.8lX\n", rv);
-               goto exit_objects;
-       }
-
-       if (ontoken) {
-               kTemplate[1].pValue = &truevalue;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_objects;
-       }
-
-       for (i = 0; i < count; i++) {
-               (void)snprintf(label, sizeof(label), "obj%u", i);
-               kTemplate[3].ulValueLen = strlen(label);
-               rv = pkcs_C_CreateObject(hSession, kTemplate, 5, &hKey[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_CreateObject[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_objects;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_objects;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u created objects in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g created objects/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_objects:
-       for (i = 0; i < count; i++) {
-               /* Destroy objects */
-               if (hKey[i] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               rv = pkcs_C_DestroyObject(hSession, hKey[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr,
-                               "C_DestroyObject[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       errflg = 1;
-               }
-       }
-
-       free(hKey);
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/find.c b/bin/tests/pkcs11/benchmarks/find.c
deleted file mode 100644 (file)
index 2fb8968..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* find [-m module] [-s $slot] [-p pin] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE label[] = "foo??bar!!";
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_ATTRIBUTE sTemplate[] = {
-               { CKA_LABEL, label, (CK_ULONG)sizeof(label) },
-       };
-       CK_OBJECT_HANDLE sKey = CK_INVALID_HANDLE;
-       CK_ULONG found = 0;
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:n:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tfind [-m module] [-s slot] [-p pin] [-n "
-                               "count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, false, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_objects;
-       }
-
-       for (i = 0; !error && (i < count); i++) {
-               rv = pkcs_C_FindObjectsInit(hSession, sTemplate, 1);
-               if (rv != CKR_OK) {
-                       fprintf(stderr,
-                               "C_FindObjectsInit[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       break;
-               }
-
-               rv = pkcs_C_FindObjects(hSession, &sKey, 1, &found);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_FindObjects[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       /* no break here! */
-               }
-
-               rv = pkcs_C_FindObjectsFinal(hSession);
-               if (rv != CKR_OK) {
-                       fprintf(stderr,
-                               "C_FindObjectsFinal[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_objects;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u object searches in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g object searches/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_objects:
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/genrsa.c b/bin/tests/pkcs11/benchmarks/genrsa.c
deleted file mode 100644 (file)
index 7431598..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* genrsa [-m module] [-s $slot] [-p pin] [-t] [-b bits] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_MECHANISM mech = { CKM_RSA_PKCS_KEY_PAIR_GEN, NULL, 0 };
-       CK_OBJECT_HANDLE *pubKey;
-       CK_OBJECT_HANDLE *privKey;
-       CK_OBJECT_CLASS pubClass = CKO_PUBLIC_KEY;
-       CK_OBJECT_CLASS privClass = CKO_PRIVATE_KEY;
-       CK_KEY_TYPE kType = CKK_RSA;
-       CK_ULONG bits = 1024;
-       CK_BYTE exponent[] = { 0x01, 0x00, 0x01 };
-       CK_ATTRIBUTE pubTemplate[] = {
-               { CKA_CLASS, &pubClass, (CK_ULONG)sizeof(pubClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_VERIFY, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_MODULUS_BITS, &bits, (CK_ULONG)sizeof(bits) },
-               { CKA_PUBLIC_EXPONENT, exponent, (CK_ULONG)sizeof(exponent) }
-       };
-       CK_ATTRIBUTE privTemplate[] = {
-               { CKA_CLASS, &privClass, (CK_ULONG)sizeof(privClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_SIGN, &truevalue, (CK_ULONG)sizeof(truevalue) },
-       };
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tb:n:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'b':
-                       bits = (CK_ULONG)atoi(isc_commandline_argument);
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tgenrsa [-m module] [-s slot] [-p pin] "
-                               "[-t] [-b bits] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Allocate handles */
-       pubKey = (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (pubKey == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       privKey =
-               (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (privKey == NULL) {
-               free(pubKey);
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++) {
-               pubKey[i] = CK_INVALID_HANDLE;
-               privKey[i] = CK_INVALID_HANDLE;
-       }
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       if (ontoken) {
-               pubTemplate[2].pValue = &truevalue;
-               privTemplate[2].pValue = &truevalue;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_keys;
-       }
-
-       for (i = 0; i < count; i++) {
-               rv = pkcs_C_GenerateKeyPair(hSession, &mech, pubTemplate, 7,
-                                           privTemplate, 5, &pubKey[i],
-                                           &privKey[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr,
-                               "C_GenerateKeyPair[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_keys;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_keys;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u generated RSA in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g generated RSA/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_keys:
-       for (i = 0; i < count; i++) {
-               /* Destroy keys */
-               if (pubKey[i] == CK_INVALID_HANDLE) {
-                       goto destroy_priv;
-               }
-               rv = pkcs_C_DestroyObject(hSession, pubKey[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr,
-                               "C_DestroyObject[pub%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       errflg = 1;
-               }
-       destroy_priv:
-               if (privKey[i] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               rv = pkcs_C_DestroyObject(hSession, privKey[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr,
-                               "C_DestroyObject[priv%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       errflg = 1;
-               }
-       }
-
-       free(pubKey);
-       free(privKey);
-
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/login.c b/bin/tests/pkcs11/benchmarks/login.c
deleted file mode 100644 (file)
index aecbfa9..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* login [-m module] [-s $slot] [-p pin] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/internal.h>
-#include <pk11/pk11.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-int
-main(int argc, char *argv[]) {
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE *hSession;
-       CK_UTF8CHAR *pin = NULL;
-       char *lib_name = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       unsigned int count = 1000;
-       unsigned int i, j;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:n:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       break;
-               case 'p':
-                       pin = (CK_UTF8CHAR *)isc_commandline_argument;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tlogin [-m module] [-s slot] [-p pin] [-n "
-                               "count]\n");
-               exit(1);
-       }
-
-       /* allocate sessions */
-       hSession =
-               (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (hSession == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++)
-               hSession[i] = CK_INVALID_HANDLE;
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = (CK_UTF8CHAR *)getpass("Enter Pin: ");
-       }
-
-       rv = pkcs_C_Initialize(NULL_PTR);
-       if (rv != CKR_OK) {
-               if (rv == 0xfe) {
-                       fprintf(stderr, "Can't load or link module \"%s\"\n",
-                               pk11_get_lib_name());
-               } else {
-                       fprintf(stderr, "C_Initialize: Error = 0x%.8lX\n", rv);
-               }
-               free(hSession);
-               exit(1);
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_program;
-       }
-
-       /* loop */
-       for (i = 0; i < count; i++) {
-               /* Open sessions */
-               rv = pkcs_C_OpenSession(slot, CKF_SERIAL_SESSION, NULL_PTR,
-                                       NULL_PTR, &hSession[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_OpenSession[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_program;
-                       }
-                       break;
-               }
-
-               /* Logon */
-               rv = pkcs_C_Login(hSession[i], CKU_USER, pin,
-                                 strlen((char *)pin));
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_Login[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_program;
-                       }
-                       break;
-               }
-
-               /* Logoff */
-               rv = pkcs_C_Logout(hSession[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_Logout[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_program;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_program;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u logins in %ld.%09lds\n", i, endtime.tv_sec, endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g logins/s\n",
-                      i / ((double)endtime.tv_sec +
-                           (double)endtime.tv_nsec / 1000000000.));
-       }
-
-       for (j = 0; j < i; j++) {
-               if (hSession[j] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               /* Close sessions */
-               rv = pkcs_C_CloseSession(hSession[j]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr, "C_CloseSession[%u]: Error = 0x%.8lX\n",
-                               j, rv);
-                       errflg = 1;
-               }
-       }
-
-exit_program:
-       free(hSession);
-
-       rv = pkcs_C_Finalize(NULL_PTR);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_Finalize: Error = 0x%.8lX\n", rv);
-       }
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/privrsa.c b/bin/tests/pkcs11/benchmarks/privrsa.c
deleted file mode 100644 (file)
index 545e4f6..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* privrsa [-m module] [-s $slot] [-p pin] [-t] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE modulus[] = {
-       0x00, 0xb7, 0x9c, 0x1f, 0x05, 0xa3, 0xc2, 0x99, 0x44, 0x82, 0x20, 0x78,
-       0x43, 0x7f, 0x5f, 0x3b, 0x10, 0xd7, 0x9e, 0x61, 0x42, 0xd2, 0x7a, 0x90,
-       0x50, 0x8a, 0x99, 0x33, 0xe7, 0xca, 0xc8, 0x5f, 0x16, 0x1c, 0x56, 0xf8,
-       0xc1, 0x06, 0x2f, 0x96, 0xe7, 0x54, 0xf2, 0x85, 0x89, 0x41, 0x36, 0xf5,
-       0x4c, 0xa4, 0x0d, 0x62, 0xd3, 0x42, 0x51, 0x6b, 0x9f, 0xdc, 0x36, 0xcb,
-       0xad, 0x56, 0xf4, 0xbd, 0x2a, 0x60, 0x33, 0xb1, 0x7a, 0x99, 0xad, 0x08,
-       0x9f, 0x95, 0xe8, 0xe5, 0x14, 0xd9, 0x68, 0x79, 0xca, 0x4e, 0x72, 0xeb,
-       0xfb, 0x2c, 0xf1, 0x45, 0xd3, 0x33, 0x65, 0xe7, 0xc5, 0x11, 0xdd, 0xe7,
-       0x09, 0x83, 0x13, 0xd5, 0x17, 0x1b, 0xf4, 0xbd, 0x49, 0xdd, 0x8a, 0x3c,
-       0x3c, 0xf7, 0xa1, 0x5d, 0x7b, 0xb4, 0xd3, 0x80, 0x25, 0xf4, 0x05, 0x8f,
-       0xbc, 0x2c, 0x2a, 0x47, 0xff, 0xd1, 0xc8, 0x34, 0xbf
-};
-CK_BYTE pubexp[] = { 0x01, 0x00, 0x01 };
-CK_BYTE privexp[] = {
-       0x00, 0xae, 0x02, 0xf1, 0x47, 0xa8, 0x07, 0x02, 0xb8, 0xf1, 0xd6, 0x92,
-       0x03, 0xee, 0x50, 0x33, 0xab, 0x67, 0x9e, 0x3b, 0xb1, 0x57, 0xc7, 0x3e,
-       0xc4, 0x86, 0x46, 0x61, 0xf1, 0xf8, 0xb6, 0x63, 0x9f, 0x91, 0xe6, 0x3f,
-       0x44, 0xb8, 0x77, 0x1b, 0xbe, 0x4c, 0x3c, 0xb8, 0x9f, 0xf7, 0x45, 0x7d,
-       0xbf, 0x4f, 0xef, 0x3b, 0xcc, 0xda, 0x1a, 0x4e, 0x34, 0xa8, 0x40, 0xea,
-       0x51, 0x72, 0x8a, 0xea, 0x47, 0x06, 0x04, 0xd0, 0x62, 0x31, 0xa0, 0x6c,
-       0x09, 0x60, 0xf9, 0xc7, 0x95, 0x88, 0x4a, 0xd7, 0x19, 0xce, 0x89, 0x08,
-       0x87, 0x14, 0xef, 0xcc, 0x0a, 0xef, 0x72, 0xb9, 0x21, 0xf5, 0xf0, 0xcd,
-       0x6d, 0xe5, 0xfa, 0x15, 0x7f, 0xae, 0x33, 0x9f, 0x26, 0xac, 0x2e, 0x52,
-       0x02, 0x07, 0xfb, 0x1d, 0x4b, 0xec, 0x9a, 0x6b, 0x3b, 0x26, 0x1f, 0x52,
-       0xfc, 0x47, 0xf8, 0x66, 0x33, 0xfa, 0x50, 0x6c, 0x41
-};
-CK_BYTE prime1[] = { 0x00, 0xe8, 0x98, 0xeb, 0xa1, 0xf0, 0xce, 0xde, 0xc2, 0x74,
-                    0x01, 0x18, 0x2b, 0xd3, 0x8f, 0x58, 0xcd, 0xe9, 0x8e, 0x97,
-                    0xbe, 0xfe, 0xe8, 0x6f, 0xd6, 0x0c, 0x0a, 0x47, 0xf8, 0x56,
-                    0x84, 0x36, 0x15, 0xe6, 0x75, 0x1c, 0x69, 0x48, 0x8b, 0xf5,
-                    0x0f, 0x84, 0xd2, 0x60, 0x8b, 0xa2, 0x2a, 0xa1, 0xeb, 0xed,
-                    0xbe, 0x2d, 0xe9, 0x41, 0x0b, 0xed, 0x17, 0x7c, 0xd3, 0xa6,
-                    0x35, 0x6e, 0xa6, 0xd8, 0x21 };
-CK_BYTE prime2[] = { 0x00, 0xca, 0x15, 0x6a, 0x43, 0x5e, 0x83, 0xc9, 0x09, 0xeb,
-                    0x14, 0x1e, 0x46, 0x46, 0x97, 0xfa, 0xfa, 0x3c, 0x61, 0x7e,
-                    0xc1, 0xf8, 0x8c, 0x5e, 0xcb, 0xbf, 0xe4, 0xb9, 0x78, 0x7f,
-                    0x4f, 0xab, 0x82, 0x15, 0x53, 0xaa, 0x04, 0xee, 0x11, 0x21,
-                    0x2e, 0x23, 0x08, 0xa0, 0x14, 0x6d, 0x3a, 0x88, 0xe6, 0xf8,
-                    0xbe, 0x61, 0x38, 0x99, 0xca, 0x36, 0x0d, 0x3e, 0x42, 0x0f,
-                    0x63, 0x4d, 0x73, 0xf0, 0xdf };
-CK_BYTE exp_1[] = { 0x66, 0x2d, 0xb7, 0x65, 0xbe, 0x99, 0xc2, 0x35, 0xfe, 0x2b,
-                   0xf4, 0xe8, 0x5b, 0xd9, 0xdf, 0x13, 0x26, 0x04, 0xe4, 0x18,
-                   0x9d, 0x76, 0x92, 0x9a, 0x9f, 0x53, 0x6c, 0xe6, 0x65, 0x6b,
-                   0x53, 0x2f, 0x2f, 0xbc, 0x46, 0xac, 0xe1, 0x97, 0xca, 0x21,
-                   0xf5, 0x21, 0x4e, 0x14, 0x49, 0x3b, 0x1d, 0x42, 0xbd, 0x80,
-                   0x0c, 0x3f, 0x29, 0xba, 0x09, 0x7f, 0x85, 0xf0, 0x9c, 0x55,
-                   0x60, 0xb4, 0x9e, 0xc1 };
-CK_BYTE exp_2[] = { 0x00, 0x87, 0x22, 0x74, 0xf1, 0xe2, 0x15, 0x3c, 0x6d, 0xde,
-                   0x7e, 0x90, 0x94, 0x2c, 0x06, 0xdb, 0xb5, 0x54, 0x85, 0x59,
-                   0xcf, 0x7a, 0x56, 0xdb, 0xd9, 0x62, 0x54, 0x20, 0x56, 0xdc,
-                   0xc3, 0xb9, 0x0b, 0xff, 0x18, 0xf8, 0x7b, 0xdd, 0x7b, 0x24,
-                   0xf6, 0x06, 0x45, 0x71, 0x4e, 0xd7, 0x90, 0x2a, 0x16, 0x52,
-                   0x46, 0x75, 0x1a, 0xf5, 0x74, 0x8c, 0x5a, 0xa4, 0xc4, 0x66,
-                   0x27, 0xe0, 0x96, 0x64, 0x7f };
-CK_BYTE coeff[] = { 0x00, 0xd0, 0x1f, 0xb3, 0x47, 0x40, 0x93, 0x8b, 0x99, 0xd7,
-                   0xb5, 0xc6, 0x09, 0x82, 0x65, 0x94, 0x9d, 0x56, 0x0a, 0x05,
-                   0x55, 0x7d, 0x93, 0x04, 0xa4, 0x26, 0xee, 0x42, 0x86, 0xa3,
-                   0xf1, 0xd5, 0x7a, 0x42, 0x84, 0x3c, 0x21, 0x96, 0x9a, 0xd9,
-                   0x36, 0xd4, 0x62, 0x01, 0xb0, 0x8b, 0x77, 0xe5, 0xcc, 0x1b,
-                   0xd2, 0x12, 0xd2, 0x9c, 0x89, 0x67, 0x0c, 0x00, 0x09, 0x56,
-                   0x8c, 0x33, 0x57, 0xf9, 0x8c };
-
-char label[16];
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_OBJECT_HANDLE *hKey;
-       CK_OBJECT_CLASS kClass = CKO_PRIVATE_KEY;
-       CK_KEY_TYPE kType = CKK_RSA;
-       CK_ATTRIBUTE kTemplate[] = {
-               { CKA_CLASS, &kClass, (CK_ULONG)sizeof(kClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_LABEL, (CK_BYTE_PTR)label, (CK_ULONG)sizeof(label) },
-               { CKA_SIGN, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_MODULUS, modulus, (CK_ULONG)sizeof(modulus) },
-               { CKA_PUBLIC_EXPONENT, pubexp, (CK_ULONG)sizeof(pubexp) },
-               { CKA_PRIVATE_EXPONENT, privexp, (CK_ULONG)sizeof(privexp) },
-               { CKA_PRIME_1, prime1, (CK_ULONG)sizeof(prime1) },
-               { CKA_PRIME_2, prime2, (CK_ULONG)sizeof(prime2) },
-               { CKA_EXPONENT_1, exp_1, (CK_ULONG)sizeof(exp_1) },
-               { CKA_EXPONENT_2, exp_2, (CK_ULONG)sizeof(exp_2) },
-               { CKA_COEFFICIENT, coeff, (CK_ULONG)sizeof(coeff) }
-       };
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tn:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tprivrsa [-m module] [-s slot] [-p pin] "
-                               "[-t] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Allocate handles */
-       hKey = (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (hKey == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++)
-               hKey[i] = CK_INVALID_HANDLE;
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               free(hKey);
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       if (ontoken) {
-               kTemplate[2].pValue = &truevalue;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_objects;
-       }
-
-       for (i = 0; i < count; i++) {
-               (void)snprintf(label, sizeof(label), "obj%u", i);
-               kTemplate[4].ulValueLen = strlen(label);
-               rv = pkcs_C_CreateObject(hSession, kTemplate, 14, &hKey[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_CreateObject[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_objects;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_objects;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u private RSA keys in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g private RSA keys/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_objects:
-       for (i = 0; i < count; i++) {
-               /* Destroy objects */
-               if (hKey[i] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               rv = pkcs_C_DestroyObject(hSession, hKey[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr,
-                               "C_DestroyObject[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       errflg = 1;
-               }
-       }
-
-       free(hKey);
-
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/pubrsa.c b/bin/tests/pkcs11/benchmarks/pubrsa.c
deleted file mode 100644 (file)
index 045f01d..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* pubrsa [-m module] [-s $slot] [-p pin] [-t] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE modulus[] = {
-       0x00, 0xb7, 0x9c, 0x1f, 0x05, 0xa3, 0xc2, 0x99, 0x44, 0x82, 0x20, 0x78,
-       0x43, 0x7f, 0x5f, 0x3b, 0x10, 0xd7, 0x9e, 0x61, 0x42, 0xd2, 0x7a, 0x90,
-       0x50, 0x8a, 0x99, 0x33, 0xe7, 0xca, 0xc8, 0x5f, 0x16, 0x1c, 0x56, 0xf8,
-       0xc1, 0x06, 0x2f, 0x96, 0xe7, 0x54, 0xf2, 0x85, 0x89, 0x41, 0x36, 0xf5,
-       0x4c, 0xa4, 0x0d, 0x62, 0xd3, 0x42, 0x51, 0x6b, 0x9f, 0xdc, 0x36, 0xcb,
-       0xad, 0x56, 0xf4, 0xbd, 0x2a, 0x60, 0x33, 0xb1, 0x7a, 0x99, 0xad, 0x08,
-       0x9f, 0x95, 0xe8, 0xe5, 0x14, 0xd9, 0x68, 0x79, 0xca, 0x4e, 0x72, 0xeb,
-       0xfb, 0x2c, 0xf1, 0x45, 0xd3, 0x33, 0x65, 0xe7, 0xc5, 0x11, 0xdd, 0xe7,
-       0x09, 0x83, 0x13, 0xd5, 0x17, 0x1b, 0xf4, 0xbd, 0x49, 0xdd, 0x8a, 0x3c,
-       0x3c, 0xf7, 0xa1, 0x5d, 0x7b, 0xb4, 0xd3, 0x80, 0x25, 0xf4, 0x05, 0x8f,
-       0xbc, 0x2c, 0x2a, 0x47, 0xff, 0xd1, 0xc8, 0x34, 0xbf
-};
-CK_BYTE exponent[] = { 0x01, 0x00, 0x01 };
-
-char label[16];
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_OBJECT_HANDLE *hKey;
-       CK_OBJECT_CLASS kClass = CKO_PUBLIC_KEY;
-       CK_KEY_TYPE kType = CKK_RSA;
-       CK_ATTRIBUTE kTemplate[] = {
-               { CKA_CLASS, &kClass, (CK_ULONG)sizeof(kClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_LABEL, (CK_BYTE_PTR)label, (CK_ULONG)sizeof(label) },
-               { CKA_VERIFY, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_MODULUS, modulus, (CK_ULONG)sizeof(modulus) },
-               { CKA_PUBLIC_EXPONENT, exponent, (CK_ULONG)sizeof(exponent) }
-       };
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tn:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tpubrsa [-m module] [-s slot] [-p pin] "
-                               "[-t] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Allocate handles */
-       hKey = (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (hKey == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++)
-               hKey[i] = CK_INVALID_HANDLE;
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               free(hKey);
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       if (ontoken) {
-               kTemplate[2].pValue = &truevalue;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_objects;
-       }
-
-       for (i = 0; i < count; i++) {
-               (void)snprintf(label, sizeof(label), "obj%u", i);
-               kTemplate[4].ulValueLen = strlen(label);
-               rv = pkcs_C_CreateObject(hSession, kTemplate, 8, &hKey[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_CreateObject[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_objects;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_objects;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u public RSA keys in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g public RSA keys/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_objects:
-       for (i = 0; i < count; i++) {
-               /* Destroy objects */
-               if (hKey[i] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               rv = pkcs_C_DestroyObject(hSession, hKey[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr,
-                               "C_DestroyObject[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       errflg = 1;
-               }
-       }
-
-       free(hKey);
-
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/session.c b/bin/tests/pkcs11/benchmarks/session.c
deleted file mode 100644 (file)
index 22c13ec..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* session [-m module] [-s $slot] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/internal.h>
-#include <pk11/pk11.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-int
-main(int argc, char *argv[]) {
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE *hSession;
-       char *lib_name = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:n:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tsession [-m module] [-s slot] [-n count]\n");
-               exit(1);
-       }
-
-       /* Allocate sessions */
-       hSession =
-               (CK_SESSION_HANDLE *)malloc(count * sizeof(CK_SESSION_HANDLE));
-       if (hSession == NULL) {
-               perror("malloc");
-               exit(1);
-       }
-       for (i = 0; i < count; i++)
-               hSession[i] = CK_INVALID_HANDLE;
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       rv = pkcs_C_Initialize(NULL_PTR);
-       if (rv != CKR_OK) {
-               if (rv == 0xfe) {
-                       fprintf(stderr, "Can't load or link module \"%s\"\n",
-                               pk11_get_lib_name());
-               } else {
-                       fprintf(stderr, "C_Initialize: Error = 0x%.8lX\n", rv);
-               }
-               free(hSession);
-               exit(1);
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_program;
-       }
-
-       /* loop */
-       for (i = 0; i < count; i++) {
-               /* Open sessions */
-               rv = pkcs_C_OpenSession(slot, CKF_SERIAL_SESSION, NULL_PTR,
-                                       NULL_PTR, &hSession[i]);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_OpenSession[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       if (i == 0) {
-                               goto exit_program;
-                       }
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_program;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u sessions in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g sessions/s\n",
-                      i / ((double)endtime.tv_sec +
-                           (double)endtime.tv_nsec / 1000000000.));
-       }
-
-       for (i = 0; i < count; i++) {
-               /* Close sessions */
-               if (hSession[i] == CK_INVALID_HANDLE) {
-                       continue;
-               }
-               rv = pkcs_C_CloseSession(hSession[i]);
-               if ((rv != CKR_OK) && !errflg) {
-                       fprintf(stderr, "C_CloseSession[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       errflg = 1;
-               }
-       }
-
-exit_program:
-       free(hSession);
-
-       rv = pkcs_C_Finalize(NULL_PTR);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_Finalize: Error = 0x%.8lX\n", rv);
-       }
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/sha1.c b/bin/tests/pkcs11/benchmarks/sha1.c
deleted file mode 100644 (file)
index 578932f..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* sha1 [-m module] [-s $slot] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE buf[1024];
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_MECHANISM mech = { CKM_SHA_1, NULL, 0 };
-       CK_ULONG len = sizeof(buf);
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_DIGEST;
-       char *lib_name = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:n:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tssha1 [-m module] [-s slot] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, false, false, NULL,
-                                 slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       hSession = pctx.session;
-
-       /* Randomize the buffer */
-       rv = pkcs_C_GenerateRandom(hSession, buf, len);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_GenerateRandom: Error = 0x%.8lX\n", rv);
-               goto exit_session;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_session;
-       }
-
-       /* Initialize Digest */
-       rv = pkcs_C_DigestInit(hSession, &mech);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_DigestInit: Error = 0x%.8lX\n", rv);
-               goto exit_session;
-       }
-
-       for (i = 0; i < count; i++) {
-               /* Digest buffer */
-               rv = pkcs_C_DigestUpdate(hSession, buf, len);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_DigestUpdate[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       break;
-               }
-       }
-
-       /* Finalize Digest (unconditionally) */
-       len = 20U;
-       rv = pkcs_C_DigestFinal(hSession, buf, &len);
-       if ((rv != CKR_OK) && !error) {
-               fprintf(stderr, "C_DigestFinal: Error = 0x%.8lX\n", rv);
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_session;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%uK digested bytes in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g digested bytes/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_session:
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/sign.c b/bin/tests/pkcs11/benchmarks/sign.c
deleted file mode 100644 (file)
index 047c92c..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* signrsa [-m module] [-s $slot] [-p pin] [-t] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE modulus[] = {
-       0x00, 0xb7, 0x9c, 0x1f, 0x05, 0xa3, 0xc2, 0x99, 0x44, 0x82, 0x20, 0x78,
-       0x43, 0x7f, 0x5f, 0x3b, 0x10, 0xd7, 0x9e, 0x61, 0x42, 0xd2, 0x7a, 0x90,
-       0x50, 0x8a, 0x99, 0x33, 0xe7, 0xca, 0xc8, 0x5f, 0x16, 0x1c, 0x56, 0xf8,
-       0xc1, 0x06, 0x2f, 0x96, 0xe7, 0x54, 0xf2, 0x85, 0x89, 0x41, 0x36, 0xf5,
-       0x4c, 0xa4, 0x0d, 0x62, 0xd3, 0x42, 0x51, 0x6b, 0x9f, 0xdc, 0x36, 0xcb,
-       0xad, 0x56, 0xf4, 0xbd, 0x2a, 0x60, 0x33, 0xb1, 0x7a, 0x99, 0xad, 0x08,
-       0x9f, 0x95, 0xe8, 0xe5, 0x14, 0xd9, 0x68, 0x79, 0xca, 0x4e, 0x72, 0xeb,
-       0xfb, 0x2c, 0xf1, 0x45, 0xd3, 0x33, 0x65, 0xe7, 0xc5, 0x11, 0xdd, 0xe7,
-       0x09, 0x83, 0x13, 0xd5, 0x17, 0x1b, 0xf4, 0xbd, 0x49, 0xdd, 0x8a, 0x3c,
-       0x3c, 0xf7, 0xa1, 0x5d, 0x7b, 0xb4, 0xd3, 0x80, 0x25, 0xf4, 0x05, 0x8f,
-       0xbc, 0x2c, 0x2a, 0x47, 0xff, 0xd1, 0xc8, 0x34, 0xbf
-};
-CK_BYTE pubexp[] = { 0x01, 0x00, 0x01 };
-CK_BYTE privexp[] = {
-       0x00, 0xae, 0x02, 0xf1, 0x47, 0xa8, 0x07, 0x02, 0xb8, 0xf1, 0xd6, 0x92,
-       0x03, 0xee, 0x50, 0x33, 0xab, 0x67, 0x9e, 0x3b, 0xb1, 0x57, 0xc7, 0x3e,
-       0xc4, 0x86, 0x46, 0x61, 0xf1, 0xf8, 0xb6, 0x63, 0x9f, 0x91, 0xe6, 0x3f,
-       0x44, 0xb8, 0x77, 0x1b, 0xbe, 0x4c, 0x3c, 0xb8, 0x9f, 0xf7, 0x45, 0x7d,
-       0xbf, 0x4f, 0xef, 0x3b, 0xcc, 0xda, 0x1a, 0x4e, 0x34, 0xa8, 0x40, 0xea,
-       0x51, 0x72, 0x8a, 0xea, 0x47, 0x06, 0x04, 0xd0, 0x62, 0x31, 0xa0, 0x6c,
-       0x09, 0x60, 0xf9, 0xc7, 0x95, 0x88, 0x4a, 0xd7, 0x19, 0xce, 0x89, 0x08,
-       0x87, 0x14, 0xef, 0xcc, 0x0a, 0xef, 0x72, 0xb9, 0x21, 0xf5, 0xf0, 0xcd,
-       0x6d, 0xe5, 0xfa, 0x15, 0x7f, 0xae, 0x33, 0x9f, 0x26, 0xac, 0x2e, 0x52,
-       0x02, 0x07, 0xfb, 0x1d, 0x4b, 0xec, 0x9a, 0x6b, 0x3b, 0x26, 0x1f, 0x52,
-       0xfc, 0x47, 0xf8, 0x66, 0x33, 0xfa, 0x50, 0x6c, 0x41
-};
-CK_BYTE prime1[] = { 0x00, 0xe8, 0x98, 0xeb, 0xa1, 0xf0, 0xce, 0xde, 0xc2, 0x74,
-                    0x01, 0x18, 0x2b, 0xd3, 0x8f, 0x58, 0xcd, 0xe9, 0x8e, 0x97,
-                    0xbe, 0xfe, 0xe8, 0x6f, 0xd6, 0x0c, 0x0a, 0x47, 0xf8, 0x56,
-                    0x84, 0x36, 0x15, 0xe6, 0x75, 0x1c, 0x69, 0x48, 0x8b, 0xf5,
-                    0x0f, 0x84, 0xd2, 0x60, 0x8b, 0xa2, 0x2a, 0xa1, 0xeb, 0xed,
-                    0xbe, 0x2d, 0xe9, 0x41, 0x0b, 0xed, 0x17, 0x7c, 0xd3, 0xa6,
-                    0x35, 0x6e, 0xa6, 0xd8, 0x21 };
-CK_BYTE prime2[] = { 0x00, 0xca, 0x15, 0x6a, 0x43, 0x5e, 0x83, 0xc9, 0x09, 0xeb,
-                    0x14, 0x1e, 0x46, 0x46, 0x97, 0xfa, 0xfa, 0x3c, 0x61, 0x7e,
-                    0xc1, 0xf8, 0x8c, 0x5e, 0xcb, 0xbf, 0xe4, 0xb9, 0x78, 0x7f,
-                    0x4f, 0xab, 0x82, 0x15, 0x53, 0xaa, 0x04, 0xee, 0x11, 0x21,
-                    0x2e, 0x23, 0x08, 0xa0, 0x14, 0x6d, 0x3a, 0x88, 0xe6, 0xf8,
-                    0xbe, 0x61, 0x38, 0x99, 0xca, 0x36, 0x0d, 0x3e, 0x42, 0x0f,
-                    0x63, 0x4d, 0x73, 0xf0, 0xdf };
-CK_BYTE exp_1[] = { 0x66, 0x2d, 0xb7, 0x65, 0xbe, 0x99, 0xc2, 0x35, 0xfe, 0x2b,
-                   0xf4, 0xe8, 0x5b, 0xd9, 0xdf, 0x13, 0x26, 0x04, 0xe4, 0x18,
-                   0x9d, 0x76, 0x92, 0x9a, 0x9f, 0x53, 0x6c, 0xe6, 0x65, 0x6b,
-                   0x53, 0x2f, 0x2f, 0xbc, 0x46, 0xac, 0xe1, 0x97, 0xca, 0x21,
-                   0xf5, 0x21, 0x4e, 0x14, 0x49, 0x3b, 0x1d, 0x42, 0xbd, 0x80,
-                   0x0c, 0x3f, 0x29, 0xba, 0x09, 0x7f, 0x85, 0xf0, 0x9c, 0x55,
-                   0x60, 0xb4, 0x9e, 0xc1 };
-CK_BYTE exp_2[] = { 0x00, 0x87, 0x22, 0x74, 0xf1, 0xe2, 0x15, 0x3c, 0x6d, 0xde,
-                   0x7e, 0x90, 0x94, 0x2c, 0x06, 0xdb, 0xb5, 0x54, 0x85, 0x59,
-                   0xcf, 0x7a, 0x56, 0xdb, 0xd9, 0x62, 0x54, 0x20, 0x56, 0xdc,
-                   0xc3, 0xb9, 0x0b, 0xff, 0x18, 0xf8, 0x7b, 0xdd, 0x7b, 0x24,
-                   0xf6, 0x06, 0x45, 0x71, 0x4e, 0xd7, 0x90, 0x2a, 0x16, 0x52,
-                   0x46, 0x75, 0x1a, 0xf5, 0x74, 0x8c, 0x5a, 0xa4, 0xc4, 0x66,
-                   0x27, 0xe0, 0x96, 0x64, 0x7f };
-CK_BYTE coeff[] = { 0x00, 0xd0, 0x1f, 0xb3, 0x47, 0x40, 0x93, 0x8b, 0x99, 0xd7,
-                   0xb5, 0xc6, 0x09, 0x82, 0x65, 0x94, 0x9d, 0x56, 0x0a, 0x05,
-                   0x55, 0x7d, 0x93, 0x04, 0xa4, 0x26, 0xee, 0x42, 0x86, 0xa3,
-                   0xf1, 0xd5, 0x7a, 0x42, 0x84, 0x3c, 0x21, 0x96, 0x9a, 0xd9,
-                   0x36, 0xd4, 0x62, 0x01, 0xb0, 0x8b, 0x77, 0xe5, 0xcc, 0x1b,
-                   0xd2, 0x12, 0xd2, 0x9c, 0x89, 0x67, 0x0c, 0x00, 0x09, 0x56,
-                   0x8c, 0x33, 0x57, 0xf9, 0x8c };
-
-CK_BYTE buf[1024];
-CK_BYTE sig[128];
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_ULONG len;
-       CK_ULONG slen;
-       CK_OBJECT_HANDLE hKey = CK_INVALID_HANDLE;
-       CK_OBJECT_CLASS kClass = CKO_PRIVATE_KEY;
-       CK_KEY_TYPE kType = CKK_RSA;
-       CK_ATTRIBUTE kTemplate[] = {
-               { CKA_CLASS, &kClass, (CK_ULONG)sizeof(kClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_SIGN, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_MODULUS, modulus, (CK_ULONG)sizeof(modulus) },
-               { CKA_PUBLIC_EXPONENT, pubexp, (CK_ULONG)sizeof(pubexp) },
-               { CKA_PRIVATE_EXPONENT, privexp, (CK_ULONG)sizeof(privexp) },
-               { CKA_PRIME_1, prime1, (CK_ULONG)sizeof(prime1) },
-               { CKA_PRIME_2, prime2, (CK_ULONG)sizeof(prime2) },
-               { CKA_EXPONENT_1, exp_1, (CK_ULONG)sizeof(exp_1) },
-               { CKA_EXPONENT_2, exp_2, (CK_ULONG)sizeof(exp_2) },
-               { CKA_COEFFICIENT, coeff, (CK_ULONG)sizeof(coeff) }
-       };
-       CK_MECHANISM mech = { CKM_SHA1_RSA_PKCS, NULL, 0 };
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tn:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tsign [-m module] [-s slot] [-p pin] "
-                               "[-t] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       /* Create the private RSA key */
-       if (ontoken) {
-               kTemplate[2].pValue = &truevalue;
-       }
-
-       rv = pkcs_C_CreateObject(hSession, kTemplate, 13, &hKey);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_CreateObject: Error = 0x%.8lX\n", rv);
-               goto exit_key;
-       }
-
-       /* Randomize the buffer */
-       len = (CK_ULONG)sizeof(buf);
-       rv = pkcs_C_GenerateRandom(hSession, buf, len);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_GenerateRandom: Error = 0x%.8lX\n", rv);
-               goto exit_key;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_key;
-       }
-
-       for (i = 0; i < count; i++) {
-               /* Initialize Sign */
-               rv = pkcs_C_SignInit(hSession, &mech, hKey);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_SignInit[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       break;
-               }
-
-               /* Perform Sign */
-               slen = (CK_ULONG)sizeof(sig);
-               rv = pkcs_C_Sign(hSession, buf, len, sig, &slen);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_Sign[%u]: Error = 0x%.8lX\n", i, rv);
-                       error = 1;
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_key;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u RSA signs in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g RSA signs/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_key:
-       if (hKey != CK_INVALID_HANDLE) {
-               rv = pkcs_C_DestroyObject(hSession, hKey);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_DestroyObject: Error = 0x%.8lX\n",
-                               rv);
-               }
-       }
-
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
diff --git a/bin/tests/pkcs11/benchmarks/verify.c b/bin/tests/pkcs11/benchmarks/verify.c
deleted file mode 100644 (file)
index e559d01..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*
- * Portions copyright (c) 2008 Nominet UK.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- */
-
-/* verify [-m module] [-s $slot] [-p pin] [-t] [-n count] */
-
-/*! \file */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <isc/commandline.h>
-#include <isc/print.h>
-#include <isc/result.h>
-#include <isc/types.h>
-#include <isc/util.h>
-
-#include <pk11/pk11.h>
-#include <pk11/result.h>
-
-#ifndef HAVE_CLOCK_GETTIME
-
-#include <sys/time.h>
-
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME 0
-#endif /* ifndef CLOCK_REALTIME */
-
-static int
-clock_gettime(int32_t id, struct timespec *tp);
-
-static int
-clock_gettime(int32_t id, struct timespec *tp) {
-       struct timeval tv;
-       int result;
-
-       UNUSED(id);
-
-       result = gettimeofday(&tv, NULL);
-       if (result == 0) {
-               tp->tv_sec = tv.tv_sec;
-               tp->tv_nsec = (long)tv.tv_usec * 1000;
-       }
-       return (result);
-}
-#endif /* ifndef HAVE_CLOCK_GETTIME */
-
-CK_BYTE modulus[] = {
-       0x00, 0xb7, 0x9c, 0x1f, 0x05, 0xa3, 0xc2, 0x99, 0x44, 0x82, 0x20, 0x78,
-       0x43, 0x7f, 0x5f, 0x3b, 0x10, 0xd7, 0x9e, 0x61, 0x42, 0xd2, 0x7a, 0x90,
-       0x50, 0x8a, 0x99, 0x33, 0xe7, 0xca, 0xc8, 0x5f, 0x16, 0x1c, 0x56, 0xf8,
-       0xc1, 0x06, 0x2f, 0x96, 0xe7, 0x54, 0xf2, 0x85, 0x89, 0x41, 0x36, 0xf5,
-       0x4c, 0xa4, 0x0d, 0x62, 0xd3, 0x42, 0x51, 0x6b, 0x9f, 0xdc, 0x36, 0xcb,
-       0xad, 0x56, 0xf4, 0xbd, 0x2a, 0x60, 0x33, 0xb1, 0x7a, 0x99, 0xad, 0x08,
-       0x9f, 0x95, 0xe8, 0xe5, 0x14, 0xd9, 0x68, 0x79, 0xca, 0x4e, 0x72, 0xeb,
-       0xfb, 0x2c, 0xf1, 0x45, 0xd3, 0x33, 0x65, 0xe7, 0xc5, 0x11, 0xdd, 0xe7,
-       0x09, 0x83, 0x13, 0xd5, 0x17, 0x1b, 0xf4, 0xbd, 0x49, 0xdd, 0x8a, 0x3c,
-       0x3c, 0xf7, 0xa1, 0x5d, 0x7b, 0xb4, 0xd3, 0x80, 0x25, 0xf4, 0x05, 0x8f,
-       0xbc, 0x2c, 0x2a, 0x47, 0xff, 0xd1, 0xc8, 0x34, 0xbf
-};
-CK_BYTE exponent[] = { 0x01, 0x00, 0x01 };
-
-CK_BYTE buf[1024];
-CK_BYTE sig[128];
-
-static CK_BBOOL truevalue = TRUE;
-static CK_BBOOL falsevalue = FALSE;
-
-int
-main(int argc, char *argv[]) {
-       isc_result_t result;
-       CK_RV rv;
-       CK_SLOT_ID slot = 0;
-       CK_SESSION_HANDLE hSession = CK_INVALID_HANDLE;
-       CK_ULONG len;
-       CK_ULONG slen;
-       CK_OBJECT_HANDLE hKey = CK_INVALID_HANDLE;
-       CK_OBJECT_CLASS kClass = CKO_PUBLIC_KEY;
-       CK_KEY_TYPE kType = CKK_RSA;
-       CK_ATTRIBUTE kTemplate[] = {
-               { CKA_CLASS, &kClass, (CK_ULONG)sizeof(kClass) },
-               { CKA_KEY_TYPE, &kType, (CK_ULONG)sizeof(kType) },
-               { CKA_TOKEN, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_PRIVATE, &falsevalue, (CK_ULONG)sizeof(falsevalue) },
-               { CKA_VERIFY, &truevalue, (CK_ULONG)sizeof(truevalue) },
-               { CKA_MODULUS, modulus, (CK_ULONG)sizeof(modulus) },
-               { CKA_PUBLIC_EXPONENT, exponent, (CK_ULONG)sizeof(exponent) }
-       };
-       CK_MECHANISM mech = { CKM_SHA1_RSA_PKCS, NULL, 0 };
-       pk11_context_t pctx;
-       pk11_optype_t op_type = OP_RSA;
-       char *lib_name = NULL;
-       char *pin = NULL;
-       int error = 0;
-       int c, errflg = 0;
-       int ontoken = 0;
-       unsigned int count = 1000;
-       unsigned int i;
-       struct timespec starttime;
-       struct timespec endtime;
-
-       while ((c = isc_commandline_parse(argc, argv, ":m:s:p:tn:")) != -1) {
-               switch (c) {
-               case 'm':
-                       lib_name = isc_commandline_argument;
-                       break;
-               case 's':
-                       slot = atoi(isc_commandline_argument);
-                       op_type = OP_ANY;
-                       break;
-               case 'p':
-                       pin = isc_commandline_argument;
-                       break;
-               case 't':
-                       ontoken = 1;
-                       break;
-               case 'n':
-                       count = atoi(isc_commandline_argument);
-                       break;
-               case ':':
-                       fprintf(stderr, "Option -%c requires an operand\n",
-                               isc_commandline_option);
-                       errflg++;
-                       break;
-               case '?':
-               default:
-                       fprintf(stderr, "Unrecognised option: -%c\n",
-                               isc_commandline_option);
-                       errflg++;
-               }
-       }
-
-       if (errflg) {
-               fprintf(stderr, "Usage:\n");
-               fprintf(stderr, "\tverify [-m module] [-s slot] [-p pin] "
-                               "[-t] [-n count]\n");
-               exit(1);
-       }
-
-       pk11_result_register();
-
-       /* Initialize the CRYPTOKI library */
-       if (lib_name != NULL) {
-               pk11_set_lib_name(lib_name);
-       }
-
-       if (pin == NULL) {
-               pin = getpass("Enter Pin: ");
-       }
-
-       result = pk11_get_session(&pctx, op_type, false, true, true,
-                                 (const char *)pin, slot);
-       if ((result != ISC_R_SUCCESS) && (result != PK11_R_NORANDOMSERVICE) &&
-           (result != PK11_R_NODIGESTSERVICE) &&
-           (result != PK11_R_NOAESSERVICE))
-       {
-               fprintf(stderr, "Error initializing PKCS#11: %s\n",
-                       isc_result_totext(result));
-               exit(1);
-       }
-
-       if (pin != NULL) {
-               memset(pin, 0, strlen((char *)pin));
-       }
-
-       hSession = pctx.session;
-
-       /* Create the private RSA key */
-       if (ontoken) {
-               kTemplate[2].pValue = &truevalue;
-       }
-
-       rv = pkcs_C_CreateObject(hSession, kTemplate, 7, &hKey);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_CreateObject: Error = 0x%.8lX\n", rv);
-               error = 1;
-               goto exit_key;
-       }
-
-       /* Randomize the buffer */
-       len = (CK_ULONG)sizeof(buf);
-       rv = pkcs_C_GenerateRandom(hSession, buf, len);
-       if (rv != CKR_OK) {
-               fprintf(stderr, "C_GenerateRandom: Error = 0x%.8lX\n", rv);
-               goto exit_key;
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &starttime) < 0) {
-               perror("clock_gettime(start)");
-               goto exit_key;
-       }
-
-       for (i = 0; i < count; i++) {
-               /* Initialize Verify */
-               rv = pkcs_C_VerifyInit(hSession, &mech, hKey);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_VerifyInit[%u]: Error = 0x%.8lX\n",
-                               i, rv);
-                       error = 1;
-                       break;
-               }
-
-               /* Perform Verify */
-               slen = (CK_ULONG)sizeof(sig);
-               rv = pkcs_C_Verify(hSession, buf, len, sig, slen);
-               if ((rv != CKR_OK) && (rv != CKR_SIGNATURE_INVALID)) {
-                       fprintf(stderr, "C_Verify[%u]: Error = 0x%.8lX\n", i,
-                               rv);
-                       error = 1;
-                       break;
-               }
-       }
-
-       if (clock_gettime(CLOCK_REALTIME, &endtime) < 0) {
-               perror("clock_gettime(end)");
-               goto exit_key;
-       }
-
-       endtime.tv_sec -= starttime.tv_sec;
-       endtime.tv_nsec -= starttime.tv_nsec;
-       while (endtime.tv_nsec < 0) {
-               endtime.tv_sec -= 1;
-               endtime.tv_nsec += 1000000000;
-       }
-       printf("%u RSA verify in %ld.%09lds\n", i, endtime.tv_sec,
-              endtime.tv_nsec);
-       if (i > 0) {
-               printf("%g RSA verify/s\n",
-                      1024 * i /
-                              ((double)endtime.tv_sec +
-                               (double)endtime.tv_nsec / 1000000000.));
-       }
-
-exit_key:
-       if (hKey != CK_INVALID_HANDLE) {
-               rv = pkcs_C_DestroyObject(hSession, hKey);
-               if (rv != CKR_OK) {
-                       fprintf(stderr, "C_DestroyObject: Error = 0x%.8lX\n",
-                               rv);
-                       error = 1;
-               }
-       }
-
-       pk11_return_session(&pctx);
-       (void)pk11_finalize();
-
-       exit(error);
-}
index f51188bc289a988aedf1186b81d45c6d05d6ee89..998718e75819af4055830bc87b8ce07b2acb2fac 100644 (file)
@@ -6,6 +6,16 @@ named.pid
 named.run
 /feature-test
 /test.output.*
+/makejournal
 /systests.output
 /random.data
 parallel.mk
+/*.log
+/*.trs
+/get_base_port.state
+/get_base_port.lock
+/run.sh
+/start.sh
+/stop.sh
+/system-test-driver.sh
+/ifconfig.sh
diff --git a/bin/tests/system/Makefile.am b/bin/tests/system/Makefile.am
new file mode 100644 (file)
index 0000000..17fa9d1
--- /dev/null
@@ -0,0 +1,155 @@
+include $(top_srcdir)/Makefile.top
+
+SUBDIRS = dyndb/driver dlzexternal/driver
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)
+
+LDADD =                                \
+       $(LIBISC_LIBS)
+
+if HAVE_PERL
+
+check_PROGRAMS =               \
+       feature-test            \
+       makejournal             \
+       pipelined/pipequeries   \
+       rndc/gencheck           \
+       rpz/dnsrps              \
+       tkey/keycreate          \
+       tkey/keydelete
+
+feature_test_CPPFLAGS =                \
+       $(AM_CPPFLAGS)          \
+       $(LIBDNS_CFLAGS)
+
+makejournal_CPPFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(LIBDNS_CFLAGS)
+
+makejournal_LDADD =            \
+       $(LDADD)                \
+       $(LIBDNS_LIBS)
+
+pipelined_pipequeries_CPPFLAGS =       \
+       $(AM_CPPFLAGS)                  \
+       $(LIBDNS_CFLAGS)
+
+pipelined_pipequeries_LDADD =  \
+       $(LDADD)                \
+       $(LIBDNS_LIBS)
+
+tkey_keycreate_CPPFLAGS =      \
+       $(AM_CPPFLAGS)          \
+       $(LIBDNS_CFLAGS)
+
+tkey_keycreate_LDADD = \
+       $(LDADD)                \
+       $(LIBDNS_LIBS)
+
+tkey_keydelete_CPPFLAGS =      \
+       $(AM_CPPFLAGS)          \
+       $(LIBDNS_CFLAGS)
+
+tkey_keydelete_LDADD = \
+       $(LDADD)                \
+       $(LIBDNS_LIBS)
+
+TESTS = \
+       acl additional addzone allow-query auth autosign \
+       builtin cacheclean case catz cds \
+       checkconf checknames checkzone \
+       cookie database dlz dlzexternal \
+       dns64 dscp dsdigest dyndb \
+       ednscompliance emptyzones \
+       filter-aaaa formerr \
+       geoip2 glue idna inline integrity keepalive \
+       legacy limits logfileconfig \
+       masterfile masterformat metadata mirror mkeys \
+       names notify nslookup \
+       padding pending \
+       redirect rndc rootkeysentinel rpz \
+       rrchecker rrl rrsetorder rsabigexponent runtime \
+       sfcache smartsign sortlist \
+       spf staticstub stub synthfromdnssec \
+       tools tsig tsiggss \
+       unknown verify views wildcard \
+       xferquota zonechecks \
+       ecdsa tkey
+
+# eddsa test is broken
+# TESTS += eddsa
+
+# The "stress" test is not run by default since it creates enough
+# load on the machine to make it unusable to other users.
+# The "dialup", "delzone", and "dupsigs" tests are also not run by
+# default because they take a very long time to complete.
+# TESTS += delzone dialup dupsigs stress
+
+if HAVE_LMDB
+TESTS += nzd2nzf
+endif # HAVE_LMDB
+
+if HAVE_PERLMOD_NET_DNS
+
+TESTS +=               \
+       zero            \
+       digdelv         \
+       dnssec          \
+       fetchlimit      \
+       forward         \
+       ixfr            \
+       nsupdate        \
+       resolver        \
+       rpzrecurse      \
+       statistics      \
+       upforwd
+
+if HAVE_DNSTAP
+TESTS += dnstap
+endif
+
+if HAVE_PERLMOD_FILE_FETCH
+TESTS += statschannel
+endif HAVE_PERLMOD_FILE_FETCH
+
+if HAVE_PERLMOD_DIGEST_HMAC
+TESTS += xfer
+endif HAVE_PERLMOD_DIGEST_HMAC
+
+if HAVE_PERLMOD_TIME_HIRES
+TESTS += serve-stale
+endif HAVE_PERLMOD_TIME_HIRES
+
+if HAVE_PERLMOD_NET_DNS_NAMESERVER
+TESTS += reclimit
+endif HAVE_PERLMOD_NET_DNS_NAMESERVER
+
+endif HAVE_PERLMOD_NET_DNS
+
+if HAVE_PYTHON
+TESTS += tcp pipelined
+
+if HAVE_PYMOD_DNS
+TESTS += qmin
+
+if HAVE_PERLMOD_NET_DNS
+if HAVE_PERLMOD_NET_DNS_NAMESERVER
+TESTS += chain
+endif HAVE_PERLMOD_NET_DNS_NAMESERVER
+endif HAVE_PERLMOD_NET_DNS
+
+endif HAVE_PYMOD_DNS
+
+endif HAVE_PYTHON
+
+else !HAVE_PERL
+check:
+       echo Perl is not available, no tests were ran
+       exit 1
+endif !HAVE_PERL
+
+LOG_COMPILER = $(builddir)/system-test-driver.sh
+
+clean-local:
+       -rm -f get_base_port.state get_base_port.lock
index 2c338e1268fdfd3b10afea7fa79c7fbb05336d59..068c1107bdddad4062b35c29d0aa07e9988f91a7 100644 (file)
@@ -374,7 +374,6 @@ a run of the full test suite (e.g. the tests are started with "runall.sh").
 
 3.  Each script should start with the following lines:
 
-    SYSTEMTESTTOP=..
     . $SYSTEMTESTTOP/conf.sh
 
 "conf.sh" defines a series of environment variables together with functions
index e410e03df212b90a2c6a4ce641f3724356225748..aff35aa2be314f128b0613b078d68eae137ca764 100644 (file)
@@ -9,12 +9,11 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
-$SHELL ../genzone.sh 2 3 >ns2/example.db
-$SHELL ../genzone.sh 2 3 >ns2/tsigzone.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/example.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/tsigzone.db
 copy_setports ns2/named1.conf.in ns2/named.conf
 copy_setports ns3/named.conf.in ns3/named.conf
 copy_setports ns4/named.conf.in ns4/named.conf
index fe49a86a0e279d037181501f4d86b5dd537248d8..6f291bfc612ee8c3c3d1015aca91970cc6d4023e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
index 5f432530798f037109022dbb8d2404264008b761..557a16243c40727c88b9fbe065462af26a36ae80 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 51c09fc99d96384690dfdf5a94ece7868a5bf56e..1221e0c6c3d62a1998c185d9b2533962510d249b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 1a6579728768d6debee9e8b85cee5e1fff2e8a86..e8310f60f03747e19464bfcedc2cea95eecee922 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp -f ns1/redirect.db.1 ns1/redirect.db
index cfaee81c328c0b8333401148f30790a2b3ed051d..4ecfd732755e5fb63c5c1ad0ea6e67801604951c 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noauth +noadd +nostats +dnssec -p ${PORT}"
@@ -720,8 +719,8 @@ $RNDCCMD 10.53.0.3 addzone "test4.baz" '{ type master; file "e.db"; };' > /dev/n
 $RNDCCMD 10.53.0.3 addzone "test5.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.3 addzone '"test/.baz"' '{ type master; check-names ignore; file "e.db"; };' > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.3 addzone '"test\".baz"' '{ type master; check-names ignore; file "e.db"; };' > /dev/null 2>&1 || ret=1
-$PERL $SYSTEMTESTTOP/stop.pl addzone ns3
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} addzone ns3 || ret=1
+stop addzone ns3
+start --noclean --restart --port ${PORT} addzone ns3 || ret=1
 retry_quiet 10 _check_version_bind || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
index e23de360125b3b20deed5edc3c5c4c45358425c8..7c6dfe1fa53a586ace760bbd39bc98476690a565 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ../common/controls.conf.in ns2/controls.conf
index 479910c8250f11eac6e039412084fca6619e8422..a119220c427ffb8b63201f1f3a0489050c608c9a 100644 (file)
@@ -50,7 +50,6 @@
 # as necessary.
 #
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noauth +noadd +nostats +dnssec -p ${PORT}"
index f3826d8683746899567582bd5944fccce3b8a2bc..9fa04998dadf7b30a09f6abfa070dccd639ad129 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index fb76d0043f62b2383c7334245518d38428c76741..0cd1b721be4d451395285e5935c12f5f9f1431fc 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp -p ${PORT}"
index 47d3eefe10773d27cba3c2e3f1fc89e933fed47e..79637acd967174ab520b0a91b4b4f068d53984f5 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 9d40b7fa34805c2a1462924cafc7e97ebd6a7c98..e4b91838c1b61fb5d8a03664e8ec78e77b0a3fa0 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 # Have the child generate subdomain keys and pass DS sets to us.
index a60e852d30704864b3c4bf0b9fbfba7e89949dbf..fd26f28b4ecfba20850641d296056be7d44072a1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=autosign
index 1db502d8dca72d3cc1b1e6388999ada27e689402..e6099c14729721709de732fb406077d91830f951 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index eadf2a7f54d5a616b57809c6a37ec2ec07b9f5b1..5bde55e287a8968c980d9729c5ec6cce51627e3f 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index def2a615acccafbe9c9b2e9eb028d4bbcbfef6b1..e683db06d94bcad205e8796bba42c822b8f613cb 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index d400f38d4a358eac91498177eedc2c41b7dda46e..e4dfc600238b14c30ed83ad616733789865d090f 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index f3826d8683746899567582bd5944fccce3b8a2bc..9fa04998dadf7b30a09f6abfa070dccd639ad129 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index ed9707a5110a0d0dbd0967abf4658f2227d0e0f2..302c621eb3813d97badaa478533d6e715e53b136 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index bc5d9de9bd9b4ba97be9103a03038e030ec9e9b4..1d467ac6387aa5146968c4f26cc016d9ed5bcb37 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp -f ns1/dynamic.db.in ns1/dynamic.db
index 8160ad8d2e9e9383529c6b288898e89d7744ed28..1d75acb88806348690a145ac6c16b7cce7486e86 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
index 19e11c9daea15d78fcebe44e9997222dce00772e..285cacf7f7f4d0c2ec3db8f691648f36e611a1b1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index d534b150fd78cbf21dd8bb21731fd5a7932476e9..db533fc7a9f134ae9f5df36034d246ea6353ea10 100644 (file)
@@ -12,7 +12,6 @@
 set -e
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 dig_with_opts() {
index d720ec355433270a0c47056a93602606396dd476..75f4a8eb1f5c0da65f33a088a83701f1cba010ab 100644 (file)
@@ -11,7 +11,6 @@
 
 set -eu
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 touch empty
index 35b864e72b63930ab6846c07490ab0560aa1833c..717af19353a9bc40320e1315ed9577770f24fc6e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index d8c95d19da113b0336f25a826f91ef38b3945316..a1ea0e33ad5cc2b41e327fb1920d59e3ac721a79 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=example.
diff --git a/bin/tests/system/chain/prereq.sh b/bin/tests/system/chain/prereq.sh
deleted file mode 100644 (file)
index 964360a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if test -n "$PYTHON"
-then
-    if $PYTHON -c "import dns" 2> /dev/null
-    then
-        :
-    else
-        echo_i "This test requires the dnspython module." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires Python and the dnspython module." >&2
-    exit 1
-fi
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.69 && $Net::DNS::VERSION <= 0.74);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS versions 0.69 to 0.74 have bugs that cause this test to fail: please update." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires the perl Net::DNS library." >&2
-    exit 1
-fi
-if $PERL -e 'use Net::DNS::Nameserver;' 2>/dev/null
-then
-       :
-else
-    echo_i "This test requires the Net::DNS::Nameserver library." >&2
-    exit 1
-fi
index ae271925f70b92f06e9376a5af9cc7e443cf192a..a557b44afef924b18dfc64ee3f483c108161cd66 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index dc83fbf2241c8c54fe1d107fb5f559d605e9f4d7..d8b17cfd0a8fd8a4372fa01dbe704dda966a8c8e 100644 (file)
@@ -7,12 +7,15 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
 RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
-SEND="$PERL $SYSTEMTESTTOP/send.pl 10.53.0.4 ${EXTRAPORT1}"
+
+sendcmd() {
+    send 10.53.0.4 "${EXTRAPORT1}"
+}
+
 status=0
 n=0
 
@@ -174,29 +177,29 @@ n=`expr $n + 1`
 echo_i "checking CNAME chains in various orders ($n)"
 ret=0
 $RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | $SEND
+echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
 grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.1.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|1,1,2,2,3,4,s4,s3,s1" | $SEND
+echo "cname,cname,cname|1,1,2,2,3,4,s4,s3,s1" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
 grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.2.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|2,1,3,4,s3,s1,s2,s4" | $SEND
+echo "cname,cname,cname|2,1,3,4,s3,s1,s2,s4" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
 grep 'status: NOERROR' dig.out.3.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.3.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 4 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | $SEND
+echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.4.$n 2>&1
 grep 'status: NOERROR' dig.out.4.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.4.$n > /dev/null 2>&1 || ret=1
-echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | $SEND
+echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | sendcmd
 $RNDCCMD 10.53.0.7 null --- start test$n - step 5 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.5.$n 2>&1
@@ -204,7 +207,7 @@ grep 'status: NOERROR' dig.out.5.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.5.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 6 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|4,3,3,3,s1,s1,1,3,4" | $SEND
+echo "cname,cname,cname|4,3,3,3,s1,s1,1,3,4" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.6.$n 2>&1
 grep 'status: NOERROR' dig.out.6.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.6.$n > /dev/null 2>&1 || ret=1
@@ -215,7 +218,7 @@ n=`expr $n + 1`
 echo_i "checking that only the initial CNAME is cached ($n)"
 ret=0
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | $SEND
+echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | sendcmd
 $RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
 sleep 1
@@ -230,19 +233,19 @@ echo_i "checking DNAME chains in various orders ($n)"
 ret=0
 $RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | $SEND
+echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
 grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 3' dig.out.1.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | $SEND
+echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
 grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 3' dig.out.2.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "dname,dname|2,3,s1,s2,s3,s4,1" | $SEND
+echo "dname,dname|2,3,s1,s2,s3,s4,1" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
 grep 'status: NOERROR' dig.out.3.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 3' dig.out.3.$n > /dev/null 2>&1 || ret=1
@@ -254,19 +257,19 @@ n=`expr $n + 1`
 echo_i "checking external CNAME/DNAME chains in various orders ($n)"
 ret=0
 $RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "xname,dname|1,2,3,4,s1,s2,s3,s4" | $SEND
+echo "xname,dname|1,2,3,4,s1,s2,s3,s4" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
 grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.1.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "xname,dname|s2,2,s1,1,4,s4,3" | $SEND
+echo "xname,dname|s2,2,s1,1,4,s4,3" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
 grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
 grep 'ANSWER: 2' dig.out.2.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
-echo "xname,dname|s2,2,2,2" | $SEND
+echo "xname,dname|s2,2,2,2" | sendcmd
 $DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
 grep 'status: SERVFAIL' dig.out.3.$n > /dev/null 2>&1 || ret=1
 $RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
index 270975bfe6c5b6483d2db51245ab47009d7226f6..0b62e27b71f509410aac9ccd2a3fe5eef01c0c5d 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 28d0c4482520c6ac612b7ccab74cec69306a45c7..15f597c82910fa3a531739c910b35188639bd854 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 74f783e4d3c630d693ea4c5089f379f723fd175b..39c91ddebff868aa78c879300410f2b29cae3035 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 68144318054d36c51bc767e61ba425c81326415f..96f32bb596ae230dd090c1adff5321141691d495 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 ln -s $CHECKZONE named-compilezone
index 0ba9d5dc4674722486e82e278d6ceeb03ebb70aa..3735689f7185373a62a8ef84872d62a915fdf6bc 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index f34f86e728782a51bba494045877d674743791d2..992df5742172803cd77e91be208cb1a77843b439 100644 (file)
@@ -12,7 +12,7 @@
 testsock6() {
        if test -n "$PERL" && $PERL -e "use IO::Socket::INET6;" 2> /dev/null
        then
-               $PERL "$TOP/bin/tests/system/testsock6.pl" "$@"
+               $PERL "$TOP_SRCDIR/bin/tests/system/testsock6.pl" "$@"
        else
                false
        fi
@@ -20,7 +20,6 @@ testsock6() {
 
 export LANG=C
 
-. ${TOP}/version
 
 #
 # Common lists of system tests to run.
@@ -187,12 +186,24 @@ cat_d() {
 }
 
 digcomp() {
-    output=`$PERL $SYSTEMTESTTOP/digcomp.pl "$@"`
+    output=`$PERL $TOP_SRCDIR/bin/tests/system/digcomp.pl "$@"`
     result=$?
     [ -n "$output" ] &&  { echo "digcomp failed:"; echo "$output"; } | cat_i
     return $result
 }
 
+start() {
+    $PERL "$TOP_SRCDIR/bin/tests/system/start.pl" "$@"
+}
+
+stop() {
+    $PERL "$TOP_SRCDIR/bin/tests/system/stop.pl" "$@"
+}
+
+send() {
+    $PERL "$TOP_SRCDIR/bin/tests/system/send.pl" "$@"
+}
+
 #
 # Useful variables in test scripts
 #
index 5bd08cc8d666444feab3bbeafbb4337c525a2397..65dbdeddb2b2c757cddfe801e8b383ac9c0bcae5 100644 (file)
@@ -15,7 +15,8 @@
 #
 
 # Find the top of the BIND9 tree.
-TOP=@abs_top_builddir@
+TOP_BUILDDIR=@abs_top_builddir@
+TOP_SRCDIR=@abs_top_srcdir@
 
 # Provide TMPDIR variable for tests that need it.
 TMPDIR=${TMPDIR:-/tmp}
@@ -24,51 +25,51 @@ TMPDIR=${TMPDIR:-/tmp}
 CYGWIN=""
 
 # Load common values shared between windows and unix/linux.
-. $TOP/bin/tests/system/conf.sh.common
-
-ARPANAME=$TOP/bin/tools/arpaname
-CDS=$TOP/bin/dnssec/dnssec-cds
-CHECKCONF=$TOP/bin/check/named-checkconf
-CHECKZONE=$TOP/bin/check/named-checkzone
-DDNSCONFGEN=$TOP/bin/confgen/ddns-confgen
-DELV=$TOP/bin/delv/delv
-DIG=$TOP/bin/dig/dig
-DNSTAPREAD=$TOP/bin/tools/dnstap-read
-DSFROMKEY=$TOP/bin/dnssec/dnssec-dsfromkey
-FEATURETEST=$TOP/bin/tests/system/feature-test
+. $TOP_SRCDIR/bin/tests/system/conf.sh.common
+
+ARPANAME=$TOP_BUILDDIR/bin/tools/arpaname
+CDS=$TOP_BUILDDIR/bin/dnssec/dnssec-cds
+CHECKCONF=$TOP_BUILDDIR/bin/check/named-checkconf
+CHECKZONE=$TOP_BUILDDIR/bin/check/named-checkzone
+DDNSCONFGEN=$TOP_BUILDDIR/bin/confgen/ddns-confgen
+DELV=$TOP_BUILDDIR/bin/delv/delv
+DIG=$TOP_BUILDDIR/bin/dig/dig
+DNSTAPREAD=$TOP_BUILDDIR/bin/tools/dnstap-read
+DSFROMKEY=$TOP_BUILDDIR/bin/dnssec/dnssec-dsfromkey
+FEATURETEST=$TOP_BUILDDIR/bin/tests/system/feature-test
 FSTRM_CAPTURE=@FSTRM_CAPTURE@
-HOST=$TOP/bin/dig/host
-IMPORTKEY=$TOP/bin/dnssec/dnssec-importkey
-JOURNALPRINT=$TOP/bin/tools/named-journalprint
-KEYFRLAB=$TOP/bin/dnssec/dnssec-keyfromlabel
-KEYGEN=$TOP/bin/dnssec/dnssec-keygen
-MDIG=$TOP/bin/tools/mdig
-NAMED=$TOP/bin/named/named
-NSEC3HASH=$TOP/bin/tools/nsec3hash
-NSLOOKUP=$TOP/bin/dig/nslookup
-NSUPDATE=$TOP/bin/nsupdate/nsupdate
-NZD2NZF=$TOP/bin/tools/named-nzd2nzf
-PK11DEL="$TOP/bin/pkcs11/pkcs11-destroy -s ${SLOT:-0} -p ${HSMPIN:-1234} -w 0"
-PK11GEN="$TOP/bin/pkcs11/pkcs11-keygen -q -s ${SLOT:-0} -p ${HSMPIN:-1234}"
-PK11LIST="$TOP/bin/pkcs11/pkcs11-list -s ${SLOT:-0} -p ${HSMPIN:-1234}"
-RESOLVE=$TOP/lib/samples/resolve
-REVOKE=$TOP/bin/dnssec/dnssec-revoke
-RNDC=$TOP/bin/rndc/rndc
-RNDCCONFGEN=$TOP/bin/confgen/rndc-confgen
-RRCHECKER=$TOP/bin/tools/named-rrchecker
-SETTIME=$TOP/bin/dnssec/dnssec-settime
-SIGNER=$TOP/bin/dnssec/dnssec-signzone
-TSIGKEYGEN=$TOP/bin/confgen/tsig-keygen
-VERIFY=$TOP/bin/dnssec/dnssec-verify
-WIRETEST=$TOP/bin/tests/wire_test
-
-BIGKEY=$TOP/bin/tests/system/rsabigexponent/bigkey
-GENCHECK=$TOP/bin/tests/system/rndc/gencheck
-KEYCREATE=$TOP/bin/tests/system/tkey/keycreate
-KEYDELETE=$TOP/bin/tests/system/tkey/keydelete
-MAKEJOURNAL=$TOP/bin/tests/makejournal
-PIPEQUERIES=$TOP/bin/tests/system/pipelined/pipequeries
-SAMPLEUPDATE=$TOP/lib/samples/sample-update
+HOST=$TOP_BUILDDIR/bin/dig/host
+IMPORTKEY=$TOP_BUILDDIR/bin/dnssec/dnssec-importkey
+JOURNALPRINT=$TOP_BUILDDIR/bin/tools/named-journalprint
+KEYFRLAB=$TOP_BUILDDIR/bin/dnssec/dnssec-keyfromlabel
+KEYGEN=$TOP_BUILDDIR/bin/dnssec/dnssec-keygen
+MDIG=$TOP_BUILDDIR/bin/tools/mdig
+NAMED=$TOP_BUILDDIR/bin/named/named
+NSEC3HASH=$TOP_BUILDDIR/bin/tools/nsec3hash
+NSLOOKUP=$TOP_BUILDDIR/bin/dig/nslookup
+NSUPDATE=$TOP_BUILDDIR/bin/nsupdate/nsupdate
+NZD2NZF=$TOP_BUILDDIR/bin/tools/named-nzd2nzf
+PK11DEL="$TOP_BUILDDIR/bin/pkcs11/pkcs11-destroy -s ${SLOT:-0} -p ${HSMPIN:-1234} -w 0"
+PK11GEN="$TOP_BUILDDIR/bin/pkcs11/pkcs11-keygen -q -s ${SLOT:-0} -p ${HSMPIN:-1234}"
+PK11LIST="$TOP_BUILDDIR/bin/pkcs11/pkcs11-list -s ${SLOT:-0} -p ${HSMPIN:-1234}"
+RESOLVE=$TOP_BUILDDIR/lib/samples/resolve
+REVOKE=$TOP_BUILDDIR/bin/dnssec/dnssec-revoke
+RNDC=$TOP_BUILDDIR/bin/rndc/rndc
+RNDCCONFGEN=$TOP_BUILDDIR/bin/confgen/rndc-confgen
+RRCHECKER=$TOP_BUILDDIR/bin/tools/named-rrchecker
+SETTIME=$TOP_BUILDDIR/bin/dnssec/dnssec-settime
+SIGNER=$TOP_BUILDDIR/bin/dnssec/dnssec-signzone
+TSIGKEYGEN=$TOP_BUILDDIR/bin/confgen/tsig-keygen
+VERIFY=$TOP_BUILDDIR/bin/dnssec/dnssec-verify
+WIRETEST=$TOP_BUILDDIR/bin/tests/wire_test
+
+BIGKEY=$TOP_BUILDDIR/bin/tests/system/rsabigexponent/bigkey
+GENCHECK=$TOP_BUILDDIR/bin/tests/system/rndc/gencheck
+KEYCREATE=$TOP_BUILDDIR/bin/tests/system/tkey/keycreate
+KEYDELETE=$TOP_BUILDDIR/bin/tests/system/tkey/keydelete
+MAKEJOURNAL=$TOP_BUILDDIR/bin/tests/system/makejournal
+PIPEQUERIES=$TOP_BUILDDIR/bin/tests/system/pipelined/pipequeries
+SAMPLEUPDATE=$TOP_BUILDDIR/lib/samples/sample-update
 
 # we don't want a KRB5_CONFIG setting breaking the tests
 KRB5_CONFIG=/dev/null
@@ -123,5 +124,6 @@ MAXMINDDB_LIBS="@MAXMINDDB_LIBS@"
 HAVEGEOIP2=${MAXMINDDB_LIBS:+1}
 ZLIB_LIBS="@ZLIB_LIBS@"
 HAVEZLIB=${ZLIB_LIBS:+1}
-NZD=@NZD_TOOLS@
+LMDB_LIBS="@LMDB_LIBS@"
+NZD=${LMDB_LIBS:+1}
 CRYPTO=@CRYPTO@
index 137db93e511b0f7ac035f807a54ad3decc2d2ac4..ecc72c02769e45e0fe46448eb03e788381744d7e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 8e711039420363db7dfb031ce481b03f8aa07470..3871fd37f96cc0d3f28d825d624f5bcc120366e2 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 8aa0d68bc19dafdb4d311016630122ccfb7ac3cc..303e87e5eafe2741818ca93bc61eb1673bd2650e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named1.conf.in ns1/named.conf
index 7fa9337bca565f6276181f9af029c27e279af9b3..e70de1ac0c541d4446be3ae37e7222431e41c80b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 1405375c032b8302029776340c3d5d0dde6ff51b..20a115a4d000c6ff43c700e151b014e206ab671c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index dd0a2dec18916ac24ff8800811af9e462d228e2b..9a94212e1162d284694f0be5d32eac9f4d477434 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noauth +noadd +nostats +dnssec -p 5300"
index a910783f5cb962694174b1ea8741ceeaaee64648..a0f622fe847a32ce6809e94faac1c615ab71aaf1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index f895977f29df522e93b18128e3de956d10ea5c7e..7e0f861086777e3ec025ad05741dd6879e1affe5 100644 (file)
@@ -26,3 +26,4 @@ rm -f ./ns*/named.lock
 rm -f ./ns*/managed-keys.bind*
 rm -f ./ns2/example.db ./ns2/K* ./ns2/keyid ./ns2/keydata
 rm -f ./*/anchor.*
+rm -f ./ns2/dsset-example.
diff --git a/bin/tests/system/digdelv/prereq.sh b/bin/tests/system/digdelv/prereq.sh
deleted file mode 100644 (file)
index 3db8235..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-# shellcheck source=conf.sh
-. "$SYSTEMTESTTOP/conf.sh"
-
-set -e
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 13950f911141ffd3e006d9f021f20157b5566078..bd8aab4c44b11ebcc8e26fd45d9ee4c76c02d829 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 set -e
@@ -19,7 +18,7 @@ status=0
 n=0
 
 sendcmd() {
-    "$PERL" "$SYSTEMTESTTOP/send.pl" "${1}" "$EXTRAPORT1"
+    send "${1}" "$EXTRAPORT1"
 }
 
 dig_with_opts() {
index fb3328e409786077d296277183be6f390008ccd2..c45c2b2c4c3a4992785fb90cc942e02113b38481 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 if ! $FEATURETEST --with-dlz-filesystem; then
index 7e606316f4254da55ed07920c7131119ce8a2992..bf1af390f24b25bf965bc3a0c5934731e9d3a85a 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 78f74dc0c6c4460e4586e594e9ec2d748514e181..e0be7c0a7540ec092bfbddc3076ae93144e5edfd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/dlzexternal/driver/Makefile.am b/bin/tests/system/dlzexternal/driver/Makefile.am
new file mode 100644 (file)
index 0000000..418ec59
--- /dev/null
@@ -0,0 +1,13 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)
+
+dlzexternal_LTLIBRARIES = dlzexternal.la
+dlzexternaldir = $(abs_builddir)
+
+dlzexternal_la_SOURCES =       \
+       driver.c
+
+dlzexternal_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
similarity index 93%
rename from bin/tests/system/dlzexternal/driver.c
rename to bin/tests/system/dlzexternal/driver/driver.c
index 443f22a2237fb2b829a21813ab80971db1f257bd..1287d7956450ef90a4bb409cef088575cb5dcdb1 100644 (file)
 #include <dns/dlz_dlopen.h>
 #include <dns/types.h>
 
+/* aliases for exported symbols */
+
+#define dlz_version     dlzexternal_LTX_dlz_version
+#define dlz_create      dlzexternal_LTX_dlz_create
+#define dlz_destroy     dlzexternal_LTX_dlz_destroy
+#define dlz_findzonedb  dlzexternal_LTX_dlz_findzonedb
+#define dlz_lookup      dlzexternal_LTX_dlz_lookup
+#define dlz_allowzonexfr dlzexternal_LTX_dlz_allowzonexfr
+#define dlz_allnodes    dlzexternal_LTX_dlz_allnodes
+#define dlz_newversion  dlzexternal_LTX_dlz_newversion
+#define dlz_closeversion dlzexternal_LTX_dlz_closeversion
+#define dlz_configure   dlzexternal_LTX_dlz_configure
+#define dlz_ssumatch    dlzexternal_LTX_dlz_ssumatch
+#define dlz_addrdataset         dlzexternal_LTX_dlz_addrdataset
+#define dlz_sbrdataset  dlzexternal_LTX_dlz_sbrdataset
+#define dlz_delrdataset         dlzexternal_LTX_dlz_delrdataset
+
+dlz_dlopen_version_t dlz_version;
+dlz_dlopen_create_t dlz_create;
+dlz_dlopen_destroy_t dlz_destroy;
+dlz_dlopen_findzonedb_t dlz_findzonedb;
+dlz_dlopen_lookup_t dlz_lookup;
+dlz_dlopen_allowzonexfr_t dlz_allowzonexfr;
+dlz_dlopen_allnodes_t dlz_allnodes;
+dlz_dlopen_newversion_t dlz_newversion;
+dlz_dlopen_closeversion_t dlz_closeversion;
+dlz_dlopen_configure_t dlz_configure;
+dlz_dlopen_ssumatch_t dlz_ssumatch;
+dlz_dlopen_addrdataset_t dlz_addrdataset;
+dlz_dlopen_subrdataset_t dlz_subrdataset;
+dlz_dlopen_delrdataset_t dlz_delrdataset;
+
 #define CHECK(x)                             \
        do {                                 \
                result = (x);                \
diff --git a/bin/tests/system/dlzexternal/ns1/dlzs.conf.in b/bin/tests/system/dlzexternal/ns1/dlzs.conf.in
deleted file mode 100644 (file)
index 07bf329..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-dlz "example one" {
-       database "dlopen ../driver.@SO@ example.nil";
-};
-
-dlz "example two" {
-       database "dlopen ../driver.@SO@ alternate.nil";
-};
-
-dlz "example three" {
-       database "dlopen ../driver.@SO@ example.org";
-};
-
-dlz "unsearched1" {
-       database "dlopen ../driver.@SO@ other.nil";
-       search no;
-};
-
-dlz "unsearched2" {
-       database "dlopen ../driver.@SO@ zone.nil";
-       search no;
-};
-
-dlz redzone {
-       database "dlopen ../driver.@SO@ .";
-       search no;
-};
index 591061cb85e70806e2d6643f1b77ca3ce464506d..89b21812fb018aa4a6a6cb51803b91d0bbf2ad33 100644 (file)
@@ -34,7 +34,32 @@ controls {
        inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
 };
 
-include "dlzs.conf";
+dlz "example one" {
+       database "dlopen ../driver/dlzexternal.la example.nil";
+};
+
+dlz "example two" {
+       database "dlopen ../driver/dlzexternal.la alternate.nil";
+};
+
+dlz "example three" {
+       database "dlopen ../driver/dlzexternal.la example.org";
+};
+
+dlz "unsearched1" {
+       database "dlopen ../driver/dlzexternal.la other.nil";
+       search no;
+};
+
+dlz "unsearched2" {
+       database "dlopen ../driver/dlzexternal.la zone.nil";
+       search no;
+};
+
+dlz redzone {
+       database "dlopen ../driver/dlzexternal.la .";
+       search no;
+};
 
 zone zone.nil {
        type master;
index b3c73c33b56512050c2bfd403bd0d5bd53c41136..a0ef5dfc906631cb4261da86db73b0a64c9f8416 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $FEATURETEST --have-dlopen ||  {
index 6efd94009221e5e931287a9e1e412f95bcdbc2f3..063cdba5ab0a75d0266de1f2f4f35016908038cd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $DDNSCONFGEN -q -z example.nil > ns1/ddns.key
index b9d44057be959ce414b3ed76318fea6b6c9eb5e2..d843fa117b24207d36b1267374ef4c0063de798c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 17688fc772778fdfa65fa92dea9fa14cd412c1f5..c0c32e0418b75257287f3faf5b58256c9b4807c0 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=signed
index e088b804d92af10f14e7d3f77dd770a6a5ec1c24..f2c1131a1de527a227bce9e51bbabaee09f97a02 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index ce5287efc6c28c66a1c7891254c5e6587c173c69..fbe9ad71dcfdf86579e79d07fa1c69cc4455dfe0 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/dnssec/prereq.sh b/bin/tests/system/dnssec/prereq.sh
deleted file mode 100644 (file)
index b2e8ff2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-# shellcheck source=conf.sh
-. "$SYSTEMTESTTOP/conf.sh"
-
-set -e
-
-if "$PERL" -e 'use Net::DNS;' 2>/dev/null
-then
-    # shellcheck disable=SC2016
-    if "$PERL" -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.69 && $Net::DNS::VERSION <= 0.70);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS versions 0.69 to 0.70 have bugs that cause this test to fail: please update." >&2
-        exit 1
-    fi
-fi
-
-exit 0
index 03dd25658960d9bec258a61afae981e3cab6c451..7d70abac1e2f3eca8b9e667933383027d94d4a69 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 set -e
@@ -2058,7 +2057,7 @@ echo_i "waiting till 14s have passed since NTAs were added before restarting ns4
 $PERL -e 'my $delay = '"$start"' + 14 - time(); select(undef, undef, undef, $delay) if ($delay > 0);'
 
 if
-    $PERL "$SYSTEMTESTTOP/start.pl" --noclean --restart --port "$PORT" dnssec ns4
+    start --noclean --restart --port "$PORT" dnssec ns4
 then
     echo_i "restarted server ns4"
 else
@@ -2124,7 +2123,7 @@ echo "secure.example. regular $future" > ns4/_default.nta
 start=$($PERL -e 'print time()."\n";')
 
 if
-    $PERL "$SYSTEMTESTTOP/start.pl" --noclean --restart --port "$PORT" dnssec ns4
+    start --noclean --restart --port "$PORT" dnssec ns4
 then
     echo_i "restarted server ns4"
 else
@@ -2180,7 +2179,7 @@ echo "secure.example. forced $future" > ns4/_default.nta
 start=$($PERL -e 'print time()."\n";')
 
 if
-    $PERL "$SYSTEMTESTTOP/start.pl" --noclean --restart --port "$PORT" dnssec ns4
+    start --noclean --restart --port "$PORT" dnssec ns4
 then
     echo_i "restarted server ns4"
 else
@@ -2228,7 +2227,7 @@ echo "secure.example. forced $future" > ns4/_default.nta
 added=$($PERL -e 'print time()."\n";')
 
 if
-    $PERL "$SYSTEMTESTTOP/start.pl" --noclean --restart --port "$PORT" dnssec ns4
+    start --noclean --restart --port "$PORT" dnssec ns4
 then
     echo_i "restarted server ns4"
 else
@@ -3789,7 +3788,7 @@ grep "trust-anchor-telemetry './IN' from .* 65534" ns1/named.run > /dev/null ||
 grep "trust-anchor-telemetry './IN' from .* 65533" ns1/named.run > /dev/null && ret=1
 $PERL $SYSTEMTESTTOP/stop.pl dnssec ns1 || ret=1
 nextpart ns1/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} dnssec ns1 || ret=1
+start --noclean --restart --port ${PORT} dnssec ns1 || ret=1
 n=$(($n+1))
 test "$ret" -eq 0 || echo_i "failed"
 status=$((status+ret))
index f44ffc68c99ce2ad66711b7351a28d57029c22f2..53c207eedb8cea3cd87ea11d2c3df909adf31e16 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 9fe748d3f68a3716670e600bb783c8914dd5a0bd..d7d80a61348976570c7a94d28735166246bc2e6b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+short -p ${PORT}"
index 87951d7c9c710c2dda6becce675be345f893bbc2..60ed4a345db2329eb16bd686e52a79fd1f6a37bb 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index e8a20f5b5084d3df421121a7695552cfe7bc2df3..2d2d6d240d4dbbb0eb26b3ea6763ca4488a45327 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest -p ${PORT}"
index 9f0ef6b036a03e0554ac70581879ad0a13b54820..ccf14bcd8e3e5a3595386cbe4751b03dda916d02 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 814a8c7143b1ee1c7472480268d4ea09277112a1..4d2ea08dff76b8402a25e25c704885c89ebb7bf3 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone1=good
index e8a39a0196de57ec6867bec13eb4b3fc5071e026..e7308b015ac833473b4a35b5b4245eb9844bf41f 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 8f9eb58138f449ea5a3af08821543cacaf39829f..b254fd970ca3923f32f0233b15e0d8f9fda0d2af 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 7e0f5a421d5c2287d9d0706ddc2ef567d54b53e6..984d68ba973f97b574401384766cd4e1fea50973 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=signing.test
index ba7af73c4722b9965ccff421e3e6fefe72301871..e35a82962e86fd1572671a2baec5acb1f30e270f 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 80ddaeaf1128311f61a80d7d80892c2a3a03ec40..5ea9279ea793324518ce90f4690c86bd2564f66d 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/dyndb/driver/Makefile.am b/bin/tests/system/dyndb/driver/Makefile.am
new file mode 100644 (file)
index 0000000..c875123
--- /dev/null
@@ -0,0 +1,19 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)
+
+dyndb_LTLIBRARIES = sample.la
+dyndbdir = $(abs_builddir)
+
+sample_la_SOURCES =    \
+       db.c            \
+       driver.c        \
+       instance.c      \
+       lock.c          \
+       log.c           \
+       syncptr.c       \
+       zone.c
+
+sample_la_LDFLAGS = -avoid-version -module -shared -export-dynamic
index 4d287e0c82dd31cbe8e7f725fa603fc4290c9540..0ed2937bcec4fd3226e10b1eb0d171f714371fea 100644 (file)
 #include "log.h"
 #include "util.h"
 
+/* aliases for the exported symbols */
+
+#define dyndb_init    sample_LTX_dyndb_init
+#define dyndb_destroy sample_LTX_dyndb_destroy
+#define dyndb_version sample_LTX_dyndb_version
+
 dns_dyndb_destroy_t dyndb_destroy;
 dns_dyndb_register_t dyndb_init;
 dns_dyndb_version_t dyndb_version;
index dde4a4de1cdb93ea3ad4709a9ea588313ac287af..49828ef620669c4751a13077b377e4a26972ef27 100644 (file)
@@ -33,5 +33,5 @@ controls {
        inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
 };
 
-dyndb sample "../driver/lib/sample.so" { ipv4.example.nil. in-addr.arpa. };
-dyndb sample2 "../driver/lib/sample.so" { ipv6.example.nil. 8.b.d.0.1.0.0.2.ip6.arpa. };
+dyndb sample "../driver/sample.la" { ipv4.example.nil. in-addr.arpa. };
+dyndb sample2 "../driver/sample.la" { ipv6.example.nil. 8.b.d.0.1.0.0.2.ip6.arpa. };
index 76af4655f86183aa897d2422a97c47b82d7a8104..dcdb4b9b857403dc9fcf820402c19d50a17358e9 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $FEATURETEST --have-dlopen ||  {
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 4215b1d40eccca6f3a990faffe0e6e5c1efc1c77..313204c00c8c7c05215d64ccf682d952ba514c04 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 186dcd1bfe233d8b82de97cd6aaa0e7265225c37..515db8aaf5d8f7d5af46590dd51afa4a685a5f2e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+norec -p ${PORT}"
index e842d2c158aa1af3d3e8cdfae37730c116f0a895..69eebf319aef13cd8aff5218e18bb8bbd9821a19 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index cf53e0a2dd021b27243ae4d136727b1aa8d70569..93ee6334aee7007f54fa7cf2f037fcdca9c7891d 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 204d612bd7fad3bc8fee8c6368da8a0348a2294f..65a588f47e6b05ad961ca89de168cc84a9308e6a 100644 (file)
@@ -33,7 +33,7 @@
 #endif /* ifndef MAXHOSTNAMELEN */
 
 static void
-usage() {
+usage(void) {
        fprintf(stderr, "usage: feature-test <arg>\n");
        fprintf(stderr, "args:\n");
        fprintf(stderr, "       --edns-version\n");
@@ -103,19 +103,15 @@ main(int argc, char **argv) {
        }
 
        if (strcmp(argv[1], "--gssapi") == 0) {
-#if defined(GSSAPI)
+#if HAVE_GSSAPI
                return (0);
-#else  /* if defined(GSSAPI) */
+#else  /* HAVE_GSSAPI */
                return (1);
-#endif /* if defined(GSSAPI) */
+#endif /* HAVE_GSSAPI */
        }
 
        if (strcmp(argv[1], "--have-dlopen") == 0) {
-#if defined(HAVE_DLOPEN) && defined(ISC_DLZ_DLOPEN)
                return (0);
-#else  /* if defined(HAVE_DLOPEN) && defined(ISC_DLZ_DLOPEN) */
-               return (1);
-#endif /* if defined(HAVE_DLOPEN) && defined(ISC_DLZ_DLOPEN) */
        }
 
        if (strcmp(argv[1], "--have-geoip2") == 0) {
diff --git a/bin/tests/system/fetchlimit/prereq.sh b/bin/tests/system/fetchlimit/prereq.sh
deleted file mode 100644 (file)
index de147a4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 25d8b5d861bfd0b68341e516c73c42d705e5d174..c4e16dd4bde2f4f045c027ee4c178ef1d2b89f5c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 6d928eebc4efcfd026e16d843439668a96e3811d..027a439976c000a187f65ca57fa9c52cf096269c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGCMD="$DIG @10.53.0.3 -p ${PORT} +tcp +tries=1 +time=1"
index 3e117325e2546b52ac48c411dd53d609a162c63e..97ce0dcad74e8f7abf8b4638e80a52489f4fc005 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
        filter-aaaa { none; };
 };
index 3298bd32327c3762483cad90809fccd50b11f155..a9410aa5235621a90de6ad4a06bbee7650da1a27 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        /*
         * While this matches the defaults, it is not a good configuration
         * to have in named.conf as the two options contradict each other
index 202091fe6a5fff05d89425b45448b8f8ac7e668d..091cf147aaa98ab54e28443fb015ef90194fcd81 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 view myview {
-       plugin query "../../../plugins/lib/filter-aaaa.so" {
+       plugin query "../../../plugins/filter-aaaa.la" {
                filter-aaaa-on-v4 no;
                filter-aaaa { any; };
        };
index 759fbf7c5e4fbfb2ba546dbda519f58801cb5593..a21ac4fdfb5e9f2d1f5cb0e32a1d6ab488ef71ad 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 view myview {
-       plugin query "../../../plugins/lib/filter-aaaa.so" {
+       plugin query "../../../plugins/filter-aaaa.la" {
                filter-aaaa-on-v4 yes;
                filter-aaaa { none; };
        };
index ea807d3fbd4b413c00318afe93c7ce321c54c1e0..54c3abb9ee26dfcc442bff389526ea83c42ec67d 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
        filter-aaaa { 1.0.0.0/8; };
 };
index 953e9758256bec7ab4ab03dba3703aa30a8e04cd..9f29bfd15b735aaad8f1703fd6b73512ba34f7b5 100644 (file)
@@ -9,6 +9,6 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
 };
index 997d5e9fcbabe2f35521a477fbc79ad502452c71..93c7abdb487767c808cc10cdcf9fa704e071d429 100644 (file)
@@ -9,6 +9,6 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 break-dnssec;
 };
index 2fa677fa10520e44d84f678e3cf5baa81a0b8448..853f341aa113dcdd9e8cc076cc4901d99612ebb0 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 break-dnssec;
        filter-aaaa { 1.0.0.0/8; };
 };
index 92c7be6288153333bf000f394ed178a1d4e59bda..dad7b5bfc3e6b143095a914b51095b00bdb005f8 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-plugin query "../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
        filter-aaaa { 1.0.0.0/8; };
 };
index e88c51578968b51f2061b00dd9be3e65bfcab0b8..c26e57a5d66c3fe8a5db292970c34959db8bc84e 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 view myview {
-       plugin query "../../../plugins/lib/filter-aaaa.so" {
+       plugin query "../../../plugins/filter-aaaa.la" {
                filter-aaaa-on-v4 yes;
                filter-aaaa { 1.0.0.0/8; };
        };
index 3941dd67cdb3c379b3e6817411e1550efa67fa61..31ea7a582848d4ed7d7d8bc00f85ef3886a9f422 100644 (file)
@@ -25,7 +25,7 @@ options {
 
 acl filterees { 10.53.0.1; };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
        filter-aaaa { filterees; };
 };
index cd28f0305694cdc00bc533a0533d4f6b1fb3b342..72e10c4fb0917b039f41dd0b5e783357f2307550 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v6 yes;
        filter-aaaa { fd92:7065:b8e:ffff::1; };
 };
index 3223ffd4fa43bc5094a7c2292e2af2b2eb0ce3cc..adc29af4a333f4a60ca11731002a521a7b8ff20d 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=filter-aaaa
index 446279fba59dd90a1fd07b89e78aaec52c0e08e6..bd2063417058207975cb3da04005fa4d4244fc96 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 yes;
        filter-aaaa { 10.53.0.2; };
 };
index 4fc0cab29a198565b4bb85fe61635c0e664f2f42..831e017f6f858da0fc0bd8c2975a81d047df57d8 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v6 yes;
        filter-aaaa { fd92:7065:b8e:ffff::2; };
 };
index e757e8878b964b5064025262fc57221bb76e675e..db30e0b469669615b7e8b35b3a154f9c33220c80 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 break-dnssec;
        filter-aaaa { 10.53.0.3; };
 };
index 216a85aef67bc2a310ac09c56bec00071b437e8b..48dc568cf1a8bb55a65a2f4b76dc9a4553aa636d 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v6 break-dnssec;
        filter-aaaa { fd92:7065:b8e:ffff::3; };
 };
index 804ed0ae3b90a367fe4ef43be4132e7bed5120ed..69b7ac47d2085c008288a0a9e9096926707710f6 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 break-dnssec;
        filter-aaaa { 10.53.0.4; };
 };
index 87874d13756853ba1d4aecaa57944311857ee7db..68b43c4cee4902cc36eba366429918bf4db3583a 100644 (file)
@@ -23,7 +23,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v6 break-dnssec;
        filter-aaaa { fd92:7065:b8e:ffff::4; };
 };
index a5019690b2322778254ff8b83a7f77b59faf5e37..05780cf4c6077864431c7f189c30f2c769035434 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=filter-aaaa
index 88bdf805b9da692183c5a4c63b2484f9d32206f1..4712c5aef454a4932c95499b110319a1ed570827 100644 (file)
@@ -28,7 +28,7 @@ options {
        minimal-responses no;
 };
 
-plugin query "../../../../plugins/lib/filter-aaaa.so" {
+plugin query "../../../../plugins/filter-aaaa.la" {
        filter-aaaa-on-v4 break-dnssec;
        filter-aaaa { any; };
 };
index 7b8a7f4a91ac896654b5568f5f597167bb1e118c..ac5219b61c6f13fd7e51670ddcd00e32544606c6 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $FEATURETEST --have-dlopen ||  {
index 9e00d77cc8fcdd6f9cc58819ef16fae816e1a41c..21a33fb482d4476462b71193e23eaf474ec1dab5 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named1.conf.in ns1/named.conf
index 662c20459e6b8217194f3e8f18580657d2e785c3..0d7a1271df0eee5268e5a5c700129bcd586a2a6f 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index d8b91e87542b7353a6938b3d1958ffaf8a4fc06b..51e29ea6962b4e86bebde7a5097b885bddec2876 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/forward/prereq.sh b/bin/tests/system/forward/prereq.sh
deleted file mode 100644 (file)
index 0e299f4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 285ecc9de94543d4f4491b9c36b2848e3b451b81..5d4894ead4fc9bf34d119ad244f0301bde8b43bd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index bbfaa10243d7fe11866611bb149785905374aef8..cdd18b018e68a33f1020601543a486e5fd7a230e 100644 (file)
@@ -8,7 +8,6 @@
 # information regarding copyright ownership.
 
 #shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 dig_with_opts() (
@@ -16,7 +15,7 @@ dig_with_opts() (
 )
 
 sendcmd() (
-       "$PERL" ../send.pl 10.53.0.6 "$EXTRAPORT1"
+       send 10.53.0.6 "$EXTRAPORT1"
 )
 
 root=10.53.0.1
@@ -105,10 +104,10 @@ echo_i "checking for negative caching of forwarder response ($n)"
 ret=0
 dig_with_opts nonexist. txt @10.53.0.5 > dig.out.$n.f2 || ret=1
 grep "status: NXDOMAIN" dig.out.$n.f2 > /dev/null || ret=1
-$PERL ../stop.pl forward ns4 || ret=1
+stop forward ns4 || ret=1
 dig_with_opts nonexist. txt @10.53.0.5 > dig.out.$n.f2 || ret=1
 grep "status: NXDOMAIN" dig.out.$n.f2 > /dev/null || ret=1
-$PERL ../start.pl --restart --noclean --port "${PORT}" forward ns4 || ret=1
+start --restart --noclean --port "${PORT}" forward ns4 || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
index 2e38b774b06e3d1e3c5b8ab1ca1a26d5b540db77..8178c2a9f269ab107d883958911a3a59e9744bbd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $FEATURETEST --have-geoip2 || {
index fb51a0a0ddd417beeeb0720615b479bf33d7c05e..ef08a2152ea2ecc3c9d1e7412362b664869c2c20 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 0b2a9ab6c0faa71fd934908b710da24ea9068747..8147edb8119eb331f7d790da5913396bc49e0a53 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/get_base_port.sh b/bin/tests/system/get_base_port.sh
new file mode 100755 (executable)
index 0000000..7c1b2d3
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+# This script is a 'port' broker.  It keeps track of ports given to the
+# individual system subtests, so every test is given a unique port range.
+
+lockfile=get_base_port.lock
+statefile=get_base_port.state
+
+ephemeral_port_min=49152
+ephemeral_port_max=65535
+
+get_base_port() {
+    if ( set -o noclobber; echo "$$" > "${lockfile}" ) 2> /dev/null; then
+       trap 'rm -f "${lockfile}"; exit $?' INT TERM EXIT
+
+       base_port=$(cat "${statefile}" 2>/dev/null)
+
+       if [ -z "${base_port}" ]; then
+           base_port="${ephemeral_port_min}"
+       fi
+
+       if [ "$((base_port+100))" -gt "${ephemeral_port_max}" ]; then
+           base_port="${ephemeral_port_min}"
+       fi
+
+       echo $((base_port+100)) > get_base_port.state
+
+       # clean up after yourself, and release your trap
+       rm -f "${lockfile}"
+       trap - INT TERM EXIT
+       echo "${base_port}"
+    else
+       echo 0
+    fi
+}
+
+tries=10
+
+while [ "${tries}" -gt 0 ]; do
+    base_port=$(get_base_port)
+    if [ "${base_port}" -gt 0 ]; then
+       echo "${base_port}"
+       exit 0
+    fi
+    sleep 1
+    tries=$((tries-1))
+done
+
+exit 1
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 157e5fd40916bf81d90bc4c115f36034a9566a53..2bb2f7166ecbba0c24ce5fcc46513a6982f9b5bd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 #
index 7e606316f4254da55ed07920c7131119ce8a2992..bf1af390f24b25bf965bc3a0c5934731e9d3a85a 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 486216662d2ee0098302c0fec4982a2e635ee453..45350ae5b8c25ad8c5c2fd156a327b5d2bb420d5 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 # Set known locale for the tests
similarity index 96%
rename from bin/tests/system/ifconfig.sh
rename to bin/tests/system/ifconfig.sh.in
index fe410ecd5aedf232a0a4b844dd82afdff8333385..537eb176a986106e6c5d9ae05b11072ebc40e1c6 100755 (executable)
 #       fd92:7065:b8e:ff::{1..2}
 #
 
-SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
-. "$SYSTEMTESTTOP/conf.sh"
+top_builddir=@abs_top_builddir@
 
-export SYSTEMTESTTOP
-
-sys=$($SHELL "$TOP/config.guess")
+sys=$($SHELL "$top_builddir/config.guess")
 
 use_ip=
 case "$sys" in
@@ -227,9 +224,9 @@ case "$1" in
                                        fd92:7065:b8e:${ipv6}ff::$ns delete
                                ;;
                            *-cygwin*)
-                               echo "Please run ifconfig.bat as Administrator."
-                               exit 1
-                               ;;
+                               echo "Please run ifconfig.bat as Administrator."
+                               exit 1
+                               ;;
                            *)
                                echo "Don't know how to destroy interface.  Giving up."
                                exit 1
index 96c061bd3d5528ada13e9c85d8f42b24e3a9a5a5..44b0179e14b2e7000e0c76d6caad789f7ed0eaef 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 5651536e0af0025b99d793fc06a8ef84452cecab..f2ce745b6723b623d21c4b751270bb69d37f647a 100644 (file)
@@ -12,7 +12,6 @@
 # Test of include statement with glob expression.
 
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noadd +nostats -p ${PORT}"
index 72fc52eb4bc35b232340a5f1701ca4dc3c5e6cc8..587266d64af80fa51c6c077bb018ed421dc11024 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 7dc0bd09c1b1b332c82067822666eb1d79b09038..cd4fc846a89e0df09bbb90038c47d1d8f518e55f 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 # Fake an unsupported key
index 6ba54664079a629c65f1a7132c7ffe4a9b327b09..462cd29e2ed569e8ddc042309eeb019a0b2f56b0 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 # NOTE: The number of signing keys generated below is not coincidental.  More
index 5d36cb9650cd3e066a1052d67fc83f08c61815f2..4e8a8df03837cf48ab380502900a311fdc12dc1a 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 for zone in example01.com example02.com example03.com example04.com \
index 3411a66ba85bc7a8837bd7beaaa4bbc27ee0d03d..dd1a5f33c56a46936e61da30a3a82a203e02d9bd 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp ns1/root.db.in ns1/root.db
index 47cc07a37264359ff28036a80dc97bcc885c4668..b325137c52c220817e86bc9af2b651030b34e1dc 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +dnssec -p ${PORT}"
@@ -469,14 +468,14 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "stop bump in the wire signer server ($n)"
 ret=0
-$PERL ../stop.pl inline ns3 || ret=1
+stop inline ns3 || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
 n=`expr $n + 1`
 echo_i "restart bump in the wire signer server ($n)"
 ret=0
-$PERL ../start.pl --noclean --restart --port ${PORT} inline ns3 || ret=1
+start --noclean --restart --port ${PORT} inline ns3 || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -883,7 +882,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "stop bump in the wire signer server ($n)"
 ret=0
-$PERL ../stop.pl inline ns3 || ret=1
+stop inline ns3 || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -894,7 +893,7 @@ rm ns3/master.db.jnl
 n=`expr $n + 1`
 echo_i "restart bump in the wire signer server ($n)"
 ret=0
-$PERL ../start.pl --noclean --restart --port ${PORT} inline ns3 || ret=1
+start --noclean --restart --port ${PORT} inline ns3 || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
@@ -1343,7 +1342,7 @@ retry_quiet 10 check_done_signing || ret=1
 # flushed upon shutdown since we specifically want to avoid it.
 $PERL $SYSTEMTESTTOP/stop.pl --use-rndc --halt --port ${CONTROLPORT} inline ns3
 ensure_sigs_only_in_journal delayedkeys ns3/delayedkeys.db.signed
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} inline ns3
+start --noclean --restart --port ${PORT} inline ns3
 # At this point, the raw zone journal will not have a source serial set.  Upon
 # server startup, receive_secure_serial() will rectify that, update SOA, resign
 # it, and schedule its future resign.  This will cause "rndc zonestatus" to
@@ -1353,7 +1352,7 @@ $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} inline ns3
 $PERL $SYSTEMTESTTOP/stop.pl --use-rndc --halt --port ${CONTROLPORT} inline ns3
 ensure_sigs_only_in_journal delayedkeys ns3/delayedkeys.db.signed
 nextpart ns3/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} inline ns3
+start --noclean --restart --port ${PORT} inline ns3
 # We can now test whether the secure zone journal was correctly processed:
 # unless the records contained in it were scheduled for resigning, no resigning
 # event will be scheduled at all since the secure zone master file contains no
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 8d494d92dc46f8435204afdb02da7c6e50391027..f125ddc4a275e05e539c2108e20176fe2a156952 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
diff --git a/bin/tests/system/ixfr/prereq.sh b/bin/tests/system/ixfr/prereq.sh
deleted file mode 100644 (file)
index 0e299f4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 8c8c5fccc73b22826ddfb0b174a373d64f5dde23..8f216ee59187b667d3e9a0e6065086c0a9320c32 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
@@ -60,7 +59,7 @@ testdb sub.test. 3 61 > ns3/subtest1.db
 
 # Set up a large zone
 i=0
-$SHELL ../genzone.sh 3 > ns3/large.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 3 > ns3/large.db
 while [ $i -lt 10000 ]; do
     echo "record$i 10 IN TXT this is record %i" >> ns3/large.db
     i=$((i+1))
index 6d1fe1f2d1b0e4ba9fb81fbfc879bdc2cda49a02..ed63537b308e0240df846a9ef1f3348ee3788f93 100644 (file)
@@ -15,7 +15,6 @@
 #          in the log file - need a better approach <sdm> - until then,
 #          if you add any tests above that point, you will break the test.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 wait_for_serial() (
@@ -28,14 +27,18 @@ status=0
 n=0
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
-SENDCMD="$PERL ../send.pl 10.53.0.2 ${EXTRAPORT1}"
 RNDCCMD="$RNDC -p ${CONTROLPORT} -c ../common/rndc.conf -s"
 
+sendcmd() {
+    send 10.53.0.2 "${EXTRAPORT1}"
+}
+
+
 n=$((n+1))
 echo_i "testing initial AXFR ($n)"
 ret=0
 
-$SENDCMD <<EOF
+sendcmd <<EOF
 /SOA/
 nil.           300     SOA     ns.nil. root.nil. 1 300 300 604800 300
 /AXFR/
@@ -78,7 +81,7 @@ ret=0
 # We change the IP address of a.nil., and the TXT record at the apex.
 # Then we do a SOA-only update.
 
-$SENDCMD <<EOF
+sendcmd <<EOF
 /SOA/
 nil.           300     SOA     ns.nil. root.nil. 3 300 300 604800 300
 /IXFR/
@@ -110,7 +113,7 @@ ret=0
 
 # Provide a broken IXFR response and a working fallback AXFR response
 
-$SENDCMD <<EOF
+sendcmd <<EOF
 /SOA/
 nil.           300     SOA     ns.nil. root.nil. 4 300 300 604800 300
 /IXFR/
index 69fd81ea2718f42070dbd297c717ab0356fb2890..22dd405d4114aa0f1c86a2b55a4c1ed3f9da00f2 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 start_time="$(TZ=UTC date +%s)"
index def2a615acccafbe9c9b2e9eb028d4bbcbfef6b1..e683db06d94bcad205e8796bba42c822b8f613cb 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 7ff95a889ec736d634f1057f28f9db1b3413b6b9..0c067afc7a1ede4281f4c72b7224a2905ff3ab1b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 99dc2deb5e83a370bb3a15b495731a1f30a7cdda..21094ce9d4cc9146e24fbe6db83b0a6729e0a312 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index fd491f3b79fa63fa05e2f8d4f675cd6c02d63423..9a796db57daa2704b461e5b9734ac7d210bd3c35 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=legacy
index 51719c22c15dda478056e18203786e096d85c568..9a4ba792cc6f09555b79cec0717662535b565233 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=legacy
index 585ed65fe2d01606ab00429d07902af89c90927f..8dcb3689fea581b8ff4a24e347b82c6430a17cfd 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named1.conf.in ns1/named.conf
index 8cbbeef53b9a469a6f451d91f51bb02e77e0c7fc..772d69299818b4a477d24b5f0061fa4b72c0d5dc 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT} +tries=1 +time=2"
@@ -255,7 +254,7 @@ status=`expr $status + $ret`
 
 $PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port ${CONTROLPORT} legacy ns1
 copy_setports ns1/named2.conf.in ns1/named.conf
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} legacy ns1
+start --noclean --restart --port ${PORT} legacy ns1
 
 n=`expr $n + 1`
 echo_i "checking recursive lookup to edns 512 + no tcp + trust anchor fails ($n)"
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 5fbdd1d601bbba99de952cf295607dc050085fe7..8b7729977887768d93a00d3c0c8ebb8b74b0e523 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index d711288a9abbd4d0a5572e73bb1c962d6c81c65b..c6198b704659a0b5f80babbb0176c6dc548c2bd7 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 67d06d8ad045c1fdc187e769754c19df1152d580..b04bd1994bcad50b45de4617a6ff6988e7f4d318 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 THISDIR=`pwd`
 CONFDIR="ns1"
@@ -63,7 +62,6 @@ status=0
 n=0
 
 cd $CONFDIR
-export SYSTEMTESTTOP=../..
 
 echo_i "testing log file validity (named -g + only plain files allowed)"
 
index 85855f32289aaa55816c7ee33557715775b79665..4f1b3ae5ea548ee6c51c11402bb1d26bbf454713 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index aa7340b9c9b0788c16784073ac3128f3e4908786..2c3ebc3debab0fbdcb19795c8201ca9a79267a78 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 58485285e55ae575e545c72cdabe44a0ad4fbb74..5449c2f25e84e6088bb59d5bfa57492b0279ef08 100755 (executable)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 status=0
@@ -81,7 +80,7 @@ stomp () {
 
 restart () {
     sleep 1
-    $PERL "$SYSTEMTESTTOP/start.pl" --noclean --restart --port "${PORT}" masterformat ns3
+    start --noclean --restart --port "${PORT}" masterformat ns3
 }
 
 dig_with_opts() {
index 21e293d643dcb18b970822e0926470f0b3516308..7d3c46e01ea5e77a616bc2ff2cb1a4c7e8349387 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 pzone=parent.nil
index ddec4276180f526aa5e2f765bf3d270bd1ee79f0..9d4c843eaba9c2bc4daa48bf0b692e55e8c52e7e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 pzone=parent.nil pfile=parent.db
index ba61cc74965550b1749f461d55d0cf77da99a476..7487049a270fbb0d9c30820b91d3e4ed457eaa05 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 ( cd ../ns2 && $SHELL -e sign.sh )
index 3d2e3ce046e39651d0c2158a47b8e1ee0951a212..29be15b93e9dac42e650c644042595165370b54c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 keys_to_trust=""
index da8161767595ed64ee27c9cbc8c21308c5bc9bb8..4141130fd311de7e3146a2c83f08646ab4aaf51c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 2644eecf991ade0c7abe7db8770d65bb643efefc..8b2e7fb7fad8f997265ae965affd0140572986d1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT} -b 10.53.0.1 +dnssec +time=2 +tries=1 +multi"
@@ -224,10 +223,10 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking that loading a correctly signed mirror zone from disk succeeds ($n)"
 ret=0
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port ${CONTROLPORT} mirror ns3
+stop --use-rndc --port ${CONTROLPORT} mirror ns3
 cat ns2/verify-load.db.good.signed > ns3/verify-load.db.mirror
 nextpart ns3/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} mirror ns3
+start --noclean --restart --port ${PORT} mirror ns3
 wait_for_load verify-load ${UPDATED_SERIAL_GOOD} ns3/named.run
 $DIG $DIGOPTS @10.53.0.3 +norec verify-load SOA > dig.out.ns3.test$n 2>&1 || ret=1
 grep "ANSWER: 0" dig.out.ns3.test$n > /dev/null && ret=1
@@ -239,7 +238,7 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking that loading a journal for an incorrectly signed mirror zone fails ($n)"
 ret=0
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port ${CONTROLPORT} mirror ns3
+stop --use-rndc --port ${CONTROLPORT} mirror ns3
 cp ns3/verify-journal.db.mirror ns3/verify-ixfr.db.mirror
 cp ns3/verify-journal.db.bad.mirror.jnl ns3/verify-ixfr.db.mirror.jnl
 # Temporarily disable transfers of the "verify-ixfr" zone on ns2.  This is
@@ -254,7 +253,7 @@ sed '/^zone "verify-ixfr" {$/,/^};$/ {
 mv ns2/named.conf.modified ns2/named.conf
 rndc_reconfig ns2 10.53.0.2
 nextpart ns3/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} mirror ns3
+start --noclean --restart --port ${PORT} mirror ns3
 wait_for_load verify-ixfr ${UPDATED_SERIAL_BAD} ns3/named.run
 $DIG $DIGOPTS @10.53.0.3 +norec verify-ixfr SOA > dig.out.ns3.test$n 2>&1 || ret=1
 grep "ANSWER: 0" dig.out.ns3.test$n > /dev/null || ret=1
@@ -274,11 +273,11 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "checking that loading a journal for a correctly signed mirror zone succeeds ($n)"
 ret=0
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port ${CONTROLPORT} mirror ns3
+stop --use-rndc --port ${CONTROLPORT} mirror ns3
 cp ns3/verify-journal.db.mirror ns3/verify-ixfr.db.mirror
 cp ns3/verify-journal.db.good.mirror.jnl ns3/verify-ixfr.db.mirror.jnl
 nextpart ns3/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} mirror ns3
+start --noclean --restart --port ${PORT} mirror ns3
 wait_for_load verify-ixfr ${UPDATED_SERIAL_GOOD} ns3/named.run
 $DIG $DIGOPTS @10.53.0.3 +norec verify-ixfr SOA > dig.out.ns3.test$n 2>&1 || ret=1
 grep "ANSWER: 0" dig.out.ns3.test$n > /dev/null && ret=1
@@ -416,10 +415,10 @@ mv ns2/named.conf.modified ns2/named.conf
 rndc_reconfig ns2 10.53.0.2
 # Stop ns3, update the timestamp of the zone file to one far in the past, then
 # restart ns3.
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port ${CONTROLPORT} mirror ns3
+stop --use-rndc --port ${CONTROLPORT} mirror ns3
 touch -t 200001010000 ns3/initially-unavailable.db.mirror
 nextpart ns3/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} mirror ns3
+start --noclean --restart --port ${PORT} mirror ns3
 # Ensure named attempts to retransfer the zone due to its expiry.
 wait_for_transfer initially-unavailable
 # Ensure the expected messages were logged.
index 483ed4ed5559cad3b41c52017167be79db2f8e9a..f640a6e86c0e2c0c17f648d4a115be4e294ea4d4 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 3fead4bcf786d7fcf20eb4e30bd33dba7f0b487f..c2ef857d58c0e2c01af0795be9b9705d0764cc88 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index eb50fc726b1c1cb69d2fe0cee47f2522738d65b0..8341bcdb453b06b92e434e9096e40091f69ed2a3 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named1.conf.in ns1/named.conf
index 9cb68b0e3957c83d03481083112cfba51bb2b69a..42915bfdb253b0ee2d7f63a8f18fdddcf6268e08 100644 (file)
@@ -11,7 +11,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 #shellcheck source=conf.sh
 . "$SYSTEMTESTTOP/conf.sh"
 
@@ -299,11 +298,11 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
 echo_i "reinitialize trust anchors, add second key to bind.keys"
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns2
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns2
 rm -f ns2/managed-keys.bind*
 keyfile_to_initial_ds ns1/"$original" ns1/"$standby1" > ns2/managed.conf
 nextpart ns2/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns2
+start --noclean --restart --port "${PORT}" mkeys ns2
 
 n=$((n+1))
 echo_i "check that no key from bind.keys is marked as an initializing key ($n)"
@@ -315,11 +314,11 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
 echo_i "reinitialize trust anchors, revert to one key in bind.keys"
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns2
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns2
 rm -f ns2/managed-keys.bind*
 mv ns2/managed1.conf ns2/managed.conf
 nextpart ns2/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns2
+start --noclean --restart --port "${PORT}" mkeys ns2
 
 n=$((n+1))
 echo_i "check that standby key is now trusted ($n)"
@@ -473,10 +472,10 @@ rm -f ns1/root.db.signed.jnl
 mkeys_reconfig_on 1 || ret=1
 
 echo_i "reinitialize trust anchors"
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns2
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns2
 rm -f ns2/managed-keys.bind*
 nextpart ns2/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns2
+start --noclean --restart --port "${PORT}" mkeys ns2
 
 n=$((n+1))
 echo_i "check positive validation ($n)"
@@ -572,11 +571,11 @@ ret=0
 mkeys_refresh_on 2 || ret=1
 mkeys_status_on 2 > rndc.out.1.$n 2>&1 || ret=1
 t1=$(grep 'next refresh:' rndc.out.1.$n) || true
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns1
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns1
 rm -f ns1/root.db.signed.jnl
 cp ns1/root.db ns1/root.db.signed
 nextpart ns1/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns1
+start --noclean --restart --port "${PORT}" mkeys ns1
 wait_for_log 20 "all zones loaded" ns1/named.run || ret=1
 mkeys_refresh_on 2 || ret=1
 mkeys_status_on 2 > rndc.out.2.$n 2>&1 || ret=1
@@ -606,11 +605,11 @@ ret=0
 mkeys_refresh_on 2 || ret=1
 mkeys_status_on 2 > rndc.out.1.$n 2>&1 || ret=1
 t1=$(grep 'next refresh:' rndc.out.1.$n) || true
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns1
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns1
 rm -f ns1/root.db.signed.jnl
 cat ns1/K*.key >> ns1/root.db.signed
 nextpart ns1/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns1
+start --noclean --restart --port "${PORT}" mkeys ns1
 wait_for_log 20 "all zones loaded" ns1/named.run || ret=1
 # Less than a second may have passed since the last time ns2 received a
 # ./DNSKEY response from ns1.  Ensure keys are refreshed at a different
@@ -708,9 +707,9 @@ ret=0
 # ensure key refresh retry will be scheduled to one actual hour after the first
 # key refresh failure instead of just a few seconds, in order to prevent races
 # between the next scheduled key refresh time and startup time of restarted ns5.
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns5
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns5
 nextpart ns5/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns5
+start --noclean --restart --port "${PORT}" mkeys ns5
 wait_for_log 20 "Returned from key fetch in keyfetch_done()" ns5/named.run || ret=1
 # ns5/named.run will contain logs from both the old instance and the new
 # instance.  In order for the test to pass, both must attempt a fetch.
@@ -722,14 +721,14 @@ status=$((status+ret))
 n=$((n+1))
 echo_i "check key refreshes are resumed after root servers become available ($n)"
 ret=0
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns5
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns5
 # Prevent previous check from affecting this one
 rm -f ns5/managed-keys.bind*
 # named2.args adds "-T mkeytimers=2/20/40" to named1.args as we need to wait for
 # an "hour" until keys are refreshed again after initial failure
 cp ns5/named2.args ns5/named.args
 nextpart ns5/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns5
+start --noclean --restart --port "${PORT}" mkeys ns5
 wait_for_log 20 "Returned from key fetch in keyfetch_done() for '.': failure" ns5/named.run || ret=1
 mkeys_secroots_on 5 || ret=1
 grep '; initializing managed' ns5/named.secroots > /dev/null 2>&1 || ret=1
@@ -758,10 +757,10 @@ status=$((status+ret))
 n=$((n+1))
 echo_i "reinitialize trust anchors, add unsupported algorithm ($n)"
 ret=0
-$PERL $SYSTEMTESTTOP/stop.pl --use-rndc --port "${CONTROLPORT}" mkeys ns6
+stop --use-rndc --port "${CONTROLPORT}" mkeys ns6
 rm -f ns6/managed-keys.bind*
 nextpart ns6/named.run > /dev/null
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port "${PORT}" mkeys ns6
+start --noclean --restart --port "${PORT}" mkeys ns6
 # log when an unsupported algorithm is encountered during startup
 wait_for_log 20 "ignoring initial-key for 'unsupported.': algorithm is unsupported" ns6/named.run || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
index 3a45a7064802824c4f4fe5e10554e4b2fce4d3e0..86e4e4354900934f29c0251d267a39c2ebe19f94 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 8b88ed8243042580f66eae37213719fb4c513343..62046b346e964a59028b89c683206444b6cf5613 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+nosea +stat +noquest +nocomm +nocmd -p ${PORT}"
index e2cd0a37c0dfdb7d457ea18e66e3c5b7a889bf6b..c371293d7063f45e181e632d8bcff1c72002b375 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index d54ab0d7ceb6c93cef2a9b8192fad390a13cefd5..568639dee9ac887eca3ec9d68c54f668419fb684 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
@@ -141,12 +140,12 @@ digcomp dig.out.ns2.test$n dig.out.ns3.test$n || ret=1
 status=`expr $ret + $status`
 
 echo_i "stopping master and restarting with example4 then waiting up to 45 seconds"
-$PERL $SYSTEMTESTTOP/stop.pl notify ns2
+stop notify ns2
 
 rm -f ns2/example.db
 cp -f ns2/example4.db ns2/example.db
 
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} notify ns2
+start --noclean --restart --port ${PORT} notify ns2
 
 try=0
 while test $try -lt 45
index 8134fb6ff3e2064dcd92ea58325a71c15d8bede8..e7a21a6da13a62b879e121e5f6d31c2e9f8ab86d 100644 (file)
@@ -9,11 +9,10 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
 
-$SHELL ../genzone.sh 1 >ns1/example.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 >ns1/example.db
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 863043454f526600218eae970e0960874312140f..a055bc4b0706df3ba4c970aa9552224d6d9a5f99 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 7d627ae7cee3b8d27953080368adcbb17d306cb9..02dd6deda00d12a1f8de1568cc514a935aed2203 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=nsec3param.test.
diff --git a/bin/tests/system/nsupdate/prereq.sh b/bin/tests/system/nsupdate/prereq.sh
deleted file mode 100644 (file)
index f08c31d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.69 && $Net::DNS::VERSION <= 0.70);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS versions 0.69 to 0.70 have bugs that cause this test to fail: please update." >&2
-        exit 1
-    fi
-fi
-
-exit 0
index 5d701149b982e2a622224548c6590169b7a7c182..f0ccd9ef3e3f464d721f702bb1dfba9d9860bd54 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 #
index 72a282a31c2471e5e536940a04ea3c45154a9e75..3877ea62e6c7abb23fc86c83981ab0948edb991e 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
@@ -338,7 +337,7 @@ rm named.pid
 cd ..
 sleep 10
 if
-       $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} nsupdate ns1
+       start --noclean --restart --port ${PORT} nsupdate ns1
 then
        echo_i "restarted server ns1"
 else
@@ -520,7 +519,7 @@ sleep 3
 # that the data served by the new server process are exactly
 # those dumped to the master file by "rndc stop".
 rm -f ns1/*jnl
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} nsupdate ns1
+start --noclean --restart --port ${PORT} nsupdate ns1
 for try in 0 1 2 3 4 5 6 7 8 9; do
     iret=0
     $DIG $DIGOPTS +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd \
index 3a6ad6d9b93e04f70d6eab5e9839ba7fb82801f8..44d4f4fec47d3e52661ff878b26658b935c80745 100644 (file)
@@ -9,9 +9,9 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-rm -f */named.conf
-rm -f */named.run
-rm -f */named.memstats
+rm -f ./*/named.conf
+rm -f ./*/named.run
+rm -f ./*/named.memstats
 rm -f dig.out.*
 rm -f rndc.out*
 rm -f ns*/*.nzf
diff --git a/bin/tests/system/nzd2nzf/prereq.sh b/bin/tests/system/nzd2nzf/prereq.sh
deleted file mode 100644 (file)
index 85e0360..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if [ -z "$NZD" ]; then
-        echo_i "This test requires LMDB support (--with-lmdb)"
-        exit 255
-fi
-
-exit 0
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 34ede6e4e740c7dc22c9a17ff301c203d720169e..b70a6ffe3b343fc93252d078e4778b803ea1dfbf 100644 (file)
@@ -7,71 +7,74 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
-DIGOPTS="-p ${PORT}"
-RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
+dig_with_opts() {
+    "$DIG" -p "${PORT}" "$@"
+}
+
+rndccmd() {
+    "$RNDC" -c "$SYSTEMTESTTOP/common/rndc.conf" -p "${CONTROLPORT}" -s "$@"
+}
 
 status=0
 n=0
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "querying for non-existing zone data ($n)"
 ret=0
-$DIG $DIGOPTS @10.53.0.1 a.added.example a > dig.out.ns1.$n || ret=1
+dig_with_opts @10.53.0.1 a.added.example a > dig.out.ns1.$n || ret=1
 grep 'status: REFUSED' dig.out.ns1.$n > /dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+status=$((status+ret))
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "adding a new zone into default NZD using rndc addzone ($n)"
-$RNDCCMD 10.53.0.1 addzone "added.example { type master; file \"added.db\";
+rndccmd 10.53.0.1 addzone "added.example { type master; file \"added.db\";
 };" 2>&1 | sed 's/^/I:ns1 /' | cat_i
 sleep 2
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "querying for existing zone data ($n)"
 ret=0
-$DIG $DIGOPTS @10.53.0.1 a.added.example a > dig.out.ns1.$n || ret=1
+dig_with_opts @10.53.0.1 a.added.example a > dig.out.ns1.$n || ret=1
 grep 'status: NOERROR' dig.out.ns1.$n > /dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+status=$((status+ret))
 
 echo_i "stopping ns1"
 $PERL $SYSTEMTESTTOP/stop.pl nzd2nzf ns1
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "dumping _default.nzd to _default.nzf ($n)"
 $NZD2NZF ns1/_default.nzd > ns1/_default.nzf || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+status=$((status+ret))
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "checking that _default.nzf contains the expected content ($n)"
 grep 'zone "added.example" { type master; file "added.db"; };' ns1/_default.nzf > /dev/null || ret=1
 if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+status=$((status+ret))
 
 echo_i "deleting _default.nzd database"
 rm -f ns1/_default.nzd
 
 echo_i "starting ns1 which should migrate the .nzf to .nzd"
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} nzd2nzf ns1
+start --noclean --restart --port ${PORT} nzd2nzf ns1
 
-n=`expr $n + 1`
+n=$((n+1))
 echo_i "querying for zone data from migrated zone config ($n)"
 # retry loop in case the server restart above causes transient failures
-for try in 0 1 2 3 4 5 6 7 8 9; do
-    ret=0
-    $DIG $DIGOPTS @10.53.0.1 a.added.example a > dig.out.ns1.$n || ret=1
-    grep 'status: NOERROR' dig.out.ns1.$n > /dev/null || ret=1
-    [ "$ret" -eq 0 ] && break
-    sleep 1
-done
-n=`expr $n + 1`
+_do_query() (
+    dig_with_opts @10.53.0.1 a.added.example a > dig.out.ns1.$n &&
+    grep 'status: NOERROR' dig.out.ns1.$n > /dev/null
+)
+ret=0
+retry_quiet "10" _do_query || ret=1
+n=$((n+1))
 if [ $ret != 0 ]; then echo_i "failed"; fi
-status=`expr $status + $ret`
+status=$((status+ret))
 
 echo_i "exit status: $status"
 exit $status
index 2252b7f0f89e7dd12cf2718b0ddd9848a8a27235..a968818c78f45827cf454eb7f78ae864c0802a7a 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL ./clean.sh
index 52b60c5a03b2eef093a788f36bd789f0eba2ebfe..4815bf954ae6bc843656fa6d3bf852dfc9f8be4c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 n=0
index aa6bf6ee3275d00a738301bf5e149189cf459f3c..d63fa0371c62094bcb74cc1dc060c685556e9dba 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 53659fc02e4ea081d65c40e7b660b39bb8d6c610..0d8baf3a3a68a7b6d675acb336359aa7b8164bca 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 for domain in example example.com; do
index 9037f435ab3f82511ff2d8c0d07ced7797d561f0..183fcc36ec421d65661c83212a4ebfd0655b21a8 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index e93475874b1a350b704a59a8e06401feb11ecd47..529ea1bf34c0fa931c665295a0f020a5f7ac6900 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 # replace_data dname RR old_data new_data
diff --git a/bin/tests/system/pipelined/prereq.sh b/bin/tests/system/pipelined/prereq.sh
deleted file mode 100644 (file)
index 81c05c5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if test -n "$PYTHON"
-then
-    if $PYTHON -c "import dns" 2> /dev/null
-    then
-        :
-    else
-        echo_i "This test requires the dnspython module." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires Python and the dnspython module." >&2
-    exit 1
-fi
-
-exit 0
index 4563f04145d8af6062412db69bb255c7b5a217e5..64eb4ef2ad96d66ebf4284745c99160d73dd8f22 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 61f1ff70cd2507168235c7f2dd97e767364e0faf..3f3468004ab4ed661761f5b4a5a74f385826c9ce 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 MDIGOPTS="-p ${PORT}"
index fd642d9e5d3bf737407238221890d91a151bf7ff..946edb1b34f495b9bc4e2f9ac045e9e0c1d66150 100644 (file)
@@ -11,7 +11,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 # shellcheck source=conf.sh
 . $SYSTEMTESTTOP/conf.sh
 
index a85a08e5359f66d966c86e065e5ce936dadb6b6a..1bb115cb0ca16fec67b3ed96c6b4cc3c5beaa2b2 100644 (file)
@@ -11,7 +11,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 # shellcheck source=conf.sh
 . $SYSTEMTESTTOP/conf.sh
 
diff --git a/bin/tests/system/qmin/prereq.sh b/bin/tests/system/qmin/prereq.sh
deleted file mode 100644 (file)
index 81c05c5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if test -n "$PYTHON"
-then
-    if $PYTHON -c "import dns" 2> /dev/null
-    then
-        :
-    else
-        echo_i "This test requires the dnspython module." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires Python and the dnspython module." >&2
-    exit 1
-fi
-
-exit 0
index 009d606adea27333861c4c2a6632e6332f43608a..0ad125d62b0225ecf06b1f1573e3f4202b687995 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index ecd2bc86e9e333a0ecf910dc29b008a8416dbfc4..afb73603d9715e686598db1c7281386a08b17a1f 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
diff --git a/bin/tests/system/reclimit/prereq.sh b/bin/tests/system/reclimit/prereq.sh
deleted file mode 100644 (file)
index 3c854d2..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION <= 0.78);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS versions up to 0.78 have a bug that causes this test to fail: please update." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
-
-if $PERL -e 'use Net::DNS::Nameserver;' 2>/dev/null
-then
-    :
-else
-    echo_i "This test requires the Net::DNS::Nameserver library." >&2
-    exit 1
-fi
index d09a01250fc18aa708b2d425a3bf26cbb72c4594..c80a5c79a3bc7386a43bb0e06da33ca3fe178c56 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 9a30a20445792691deab1381c70b874c3a9e2e67..9ee737ec5be0fd55585d1b2e57c74b99ea44f328 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
index 719da48363be0c6665dbec5bf23f574aac217d85..cf295c42e8b1f8ab7f21fa809fc1bc551375c8b5 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=signed
index 719da48363be0c6665dbec5bf23f574aac217d85..cf295c42e8b1f8ab7f21fa809fc1bc551375c8b5 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=signed
index ee8197eeb3010cf6f11185313d5bc5c1d05d93d1..2236dfc93164cbc3ef4bfb22467b9c8a15bc3925 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 # We sign the zone here and move the signed zone to ns6.
index 2445f5711bade43911ae677ae184863fa60d9402..3b35510a2fb3f1893a911dd47e72d3f2b2a64376 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 810e43e8d83abfb352def843e7958bcd124232c8..e720db3b1ea9990e2314ca2f5e687dc95249a27e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 34ca7dc01a49d931ff6c169a95882cb63dfd04c4..5b6ad516d7abdcad7fecc46edb370d027b9c765d 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=ds.example.net
diff --git a/bin/tests/system/resolver/prereq.sh b/bin/tests/system/resolver/prereq.sh
deleted file mode 100644 (file)
index 171926b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION eq "0.76" || $Net::DNS::VERSION eq "0.77");' 2>/dev/null
-    then
-       :
-    else
-       echo_i "Net::DNS version 0.76 and 0.77 have a bug that causes this test to fail: please update." >&2
-       exit 1
-    fi
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
-
-exit 0
index 1e9456a3273466b239e01ce1fe8612acbb1bbd66..cf1f0f45911bd074bd9966aea25e03312751365c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp ns4/tld1.db ns4/tld.db
index 8f9e1369ec0700c0a4e9e6dcf16ded6cb86a1632..5a1faa2971878b81cd2b020c71085fd3b11f83a5 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 echo .
 
index 6b539d178198fae86b0f7ea5dbb5edf0b62fef4c..c15ac085fb0919b879f98f3de26755deb7595cd7 100644 (file)
@@ -9,14 +9,13 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
-$SHELL ../genzone.sh 2 >ns2/nil.db
-$SHELL ../genzone.sh 2 >ns2/other.db
-$SHELL ../genzone.sh 2 >ns2/static.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 >ns2/nil.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 >ns2/other.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 >ns2/static.db
 
-$SHELL ../genzone.sh 2 >ns6/huge.zone.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 >ns6/huge.zone.db
 awk 'END { for (i = 1; i <= 1000000; i++)
      printf "host%d IN A 10.53.0.6\n", i; }' < /dev/null >> ns6/huge.zone.db
 
index 2af855aa2820b23c99b3c60dc80a3e18ca4f2533..8b1534b623c2839e13d537a2be91c1ef2a7e374b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd"
@@ -645,23 +644,6 @@ sleep 1
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
-if [ -x "$PYTHON" ]; then
-    n=`expr $n + 1`
-    echo_i "test rndc python bindings ($n)"
-    ret=0
-    $PYTHON > python.out.1.test$n << EOF
-import sys
-sys.path.insert(0, '../../../../bin/python')
-from isc import *
-r = rndc(('10.53.0.5', ${CONTROLPORT}), 'hmac-sha256', '1234abcd8765')
-result = r.call('status')
-print(result['text'])
-EOF
-    grep 'server is up and running' python.out.1.test$n > /dev/null 2>&1 || ret=1
-    if [ $ret != 0 ]; then echo_i "failed"; fi
-    status=`expr $status + $ret`
-fi
-
 n=`expr $n + 1`
 echo_i "check 'rndc \"\"' is handled ($n)"
 ret=0
index cfbed026bae7fc4801ff8a9d583c8a4bd1e287af..340e02407f70d8764e6387c68ff8ed02feddd992 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 6501ce5dba0a39c65c4176a76562f143acd34ef5..e847ac33feb931db87fa752b9f09461484e0faeb 100644 (file)
@@ -15,7 +15,6 @@ newid=`expr "0000${newid}" : '.*\(.....\)$'`
 badid=`expr \( ${oldid} + 7777 \) % 65536`
 badid=`expr "0000${badid}" : '.*\(.....\)$'`
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=example.
index d5c20bb5e1b9dca24ec83242099d6c69842ae3cf..43b159c8c7e934b3f0ee14e8e8ad910c45c28c0c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 76b3db899b818aef927c36295e9ab62d78972dab..8aa5ba8d9134474942e9a628974bf162214abe2f 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 154ba0945fa7b4987610a5b3fe793eb402ac7980..adb8f7da9bd0682d8acdb8f473b851cfe0fff0b5 100644 (file)
@@ -17,7 +17,6 @@ set -e
 #      and differ from dnsrpz.conf which is used by dnsrpzd.
 
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DNSRPS_CMD=../rpz/dnsrps
index 0763ed9ace00798fd9baa34d57cf45c547c76c57..2ad1d44513d9909ef5143ae8b778cc0dcb796029 100644 (file)
@@ -13,7 +13,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 QPERF=`$SHELL qperf.sh`
index 15ae5e245b845666460a694f18d43d0cab9726ce..5a08f5e955f1e3f7fc611e757962d62082a9ff32 100644 (file)
@@ -14,7 +14,6 @@
 # touch dnsrps-off to not test with DNSRPS
 # touch dnsrps-only to not test with classic RPZ
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 ns=10.53.0
@@ -216,7 +215,7 @@ restart () {
             done
         fi
     fi
-    $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} rpz ns$1
+    start --noclean --restart --port ${PORT} rpz ns$1
     load_db
     dnsrps_loaded
     sleep 1
@@ -483,7 +482,7 @@ for mode in native dnsrps; do
       continue
     else
       echo_i "running DNSRPS sub-test"
-      $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} rpz
+      start --noclean --restart --port ${PORT} rpz
       sleep 3
     fi
     ;;
diff --git a/bin/tests/system/rpzrecurse/prereq.sh b/bin/tests/system/rpzrecurse/prereq.sh
deleted file mode 100644 (file)
index 20388be..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
-
-exit 0
index 9ab709fc9d78a7b12be33379e099fa75bdb0ad8e..267f5dc21b9a7a594839f8127c9ce85ffe90c16e 100644 (file)
@@ -13,7 +13,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 USAGE="$0: [-DNx]"
index 7b1f206389fbcded940162e8521f8ec3c2fe390b..9637a8278fcda500b8c8b62bd0cb3e813239c5df 100644 (file)
@@ -12,7 +12,6 @@
 # touch dnsrps-off to not test with DNSRPS
 # touch dnsrps-only to not test with classic RPZ
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
@@ -52,7 +51,7 @@ run_server() {
 
     echo_i "starting resolver using named.$TESTNAME.conf"
     cp -f ns2/named.$TESTNAME.conf ns2/named.conf
-    $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} rpzrecurse ns2
+    start --noclean --restart --port ${PORT} rpzrecurse ns2
     sleep 3
 }
 
@@ -134,7 +133,7 @@ for mode in native dnsrps; do
       continue
     else
       echo_i "running DNSRPS sub-test"
-      $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} rpzrecurse
+      start --noclean --restart --port ${PORT} rpzrecurse
       sleep 3
     fi
     ;;
index 29440161b5738129b7a69ecd8b83d01d3c40dd63..e5b4fe84cc6e4f0de0a6671951243d9cb0613ff3 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
@@ -39,7 +38,7 @@ EOF
 n=`expr $n + 1`
 echo_i "check conversions to canonical format ($n)"
 ret=0
-$SHELL ../genzone.sh 0 > tempzone
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 0 > tempzone
 $CHECKZONE -Dq . tempzone | sed '/^;/d' > checkzone.out$n
 while read -r name tt cl ty rest
 do
index 4563f04145d8af6062412db69bb255c7b5a217e5..64eb4ef2ad96d66ebf4284745c99160d73dd8f22 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 977950f713c8c1c528ce632bb0a5686c71734e91..dd526d7b2c5110de7a047ddd98f5ada2f4161a20 100644 (file)
@@ -9,7 +9,6 @@
 
 # test response rate limiting
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
index c63aeb10d2a345e3dba4055bab5ed62de0d54ce3..f3c0bd35198ac4b9c3a8def592eb3bbe09452dd2 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 5ff9541a38f55c6efd120766e25b94f06f1f29ad..08266af6f14bf3c7efd3bc51472541ae31589628 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+nosea +nocomm +nocmd +noquest +noadd +noauth +nocomm +nostat +short +nocookie"
@@ -251,7 +250,7 @@ fi
 
 echo_i "Re-starting slave"
 
-$PERL $SYSTEMTESTTOP/start.pl --noclean --port ${PORT} rrsetorder ns2
+start --noclean --port ${PORT} rrsetorder ns2
 
 #
 #
index cdc61327b855cbd80f0a011c2d4222481cc97228..a50cb407673da8028e8254ec3e1f508eb1fe88ec 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=.
index 0c5cbdd084401a57e0ef36d00404e0204b31ab0e..fa7aea80dc82d1789d7108a9a2f50ff2e90e93a9 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=example.
diff --git a/bin/tests/system/rsabigexponent/prereq.sh b/bin/tests/system/rsabigexponent/prereq.sh
deleted file mode 100644 (file)
index 2ee132d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $BIGKEY > /dev/null 2>&1
-then
-    rm -f Kexample.*
-else
-    echo_i "This test requires OpenSSL cryptography provider" >&2
-    echo_i "configure with --with-openssl, and make sure you disable --with-pkcs11 and --enable-native-pkcs11" >&2
-    exit 255
-fi
index 46653f5b0c8596b5ee75f7919b8a5dac155f2534..1c6233eac04721a0a2433e63011d763921c20e83 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index b53052892e2e5e26a1ac95f4cf8f66d49aa5045c..80b618b923546195c13892d735ce12d4eb910f32 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
old mode 100755 (executable)
new mode 100644 (file)
similarity index 58%
rename from bin/tests/system/run.sh
rename to bin/tests/system/run.sh.in
index 37eb737..1f38dc4
 # Run a system test.
 #
 
-SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
-. $SYSTEMTESTTOP/conf.sh
+top_builddir=@top_builddir@
+builddir=@abs_builddir@
+srcdir=@abs_srcdir@
 
+. ${builddir}/conf.sh
+
+SYSTEMTESTTOP="$(cd -P -- "${builddir}" && pwd -P)"
 export SYSTEMTESTTOP
+export builddir
+export srcdir
+
+date_with_args() (
+    date -R
+)
 
 stopservers=true
 baseport=5300
 
-if [ ${SYSTEMTEST_NO_CLEAN:-0} -eq 1 ]; then
+if [ "${SYSTEMTEST_NO_CLEAN:-0}" -eq 1 ]; then
        clean=false
 else
        clean=true
@@ -37,19 +47,36 @@ while getopts "knp:r-:" flag; do
        k) stopservers=false ;;
        n) clean=false ;;
        p) baseport=$OPTARG ;;
+       *) echo "invalid option" >&2; exit 1 ;;
     esac
 done
-shift `expr $OPTIND - 1`
+shift $((OPTIND-1))
 
 if [ $# -eq 0 ]; then
     echofail "Usage: $0 [-k] [-n] [-p <PORT>] test-directory [test-options]" >&2;
     exit 1
 fi
 
-systest=${1%%/}
+systest=$(basename "${1%%/}")
 shift
 
-if [ ! -d $systest ]; then
+if [ ! -d "${srcdir}/$systest" ]; then
+    echofail "$0: $systest: no such test" >&2
+    exit 1
+fi
+
+if [ "${srcdir}" != "${builddir}" ]; then
+    if [ ! -d common ] || [ ! -r common/.prepared ]; then
+       cp -a "${srcdir}/common" "${builddir}"
+    fi
+    if [ ! -d "$systest" ] || [ ! -r "$systest/.prepared" ]; then
+       mkdir -p "${builddir}/$systest"
+       cp -a "${srcdir}/$systest" "${builddir}/"
+       touch "$systest/.prepared"
+    fi
+fi
+
+if [ ! -d "${systest}" ]; then
     echofail "$0: $systest: no such test" >&2
     exit 1
 fi
@@ -64,14 +91,13 @@ fi
 # command line is the lowest port number in a block of "numports" consecutive
 # ports and that the highest valid port number is 65,535.
 numport=100
-minvalid=`expr 1024 + 1`
-maxvalid=`expr 65535 - $numport + 1`
+minvalid=$((1024 + 1))
+maxvalid=$((65535 - numport + 1))
 
-test "$baseport" -eq "$baseport" > /dev/null 2>&1
-if [ $? -ne 0 ]; then
+if ! [ "$baseport" -eq "$baseport" ] > /dev/null 2>&1; then
     echofail "$0: $systest: must specify a numeric value for the port" >&2
     exit 1
-elif [ $baseport -lt $minvalid -o $baseport -gt $maxvalid  ]; then
+elif [ "$baseport" -lt "$minvalid" ] || [ "$baseport" -gt "$maxvalid" ]; then
     echofail "$0: $systest: the specified port must be in the range $minvalid to $maxvalid" >&2
     exit 1
 fi
@@ -82,18 +108,18 @@ fi
 # will usually be a multiple of 10, the names are chosen so that if this is
 # true, the last digit of EXTRAPORTn is "n".
 PORT=$baseport
-EXTRAPORT1=`expr $baseport + 1`
-EXTRAPORT2=`expr $baseport + 2`
-EXTRAPORT3=`expr $baseport + 3`
-EXTRAPORT4=`expr $baseport + 4`
-EXTRAPORT5=`expr $baseport + 5`
-EXTRAPORT6=`expr $baseport + 6`
-EXTRAPORT7=`expr $baseport + 7`
-EXTRAPORT8=`expr $baseport + 8`
-CONTROLPORT=`expr $baseport + 9`
+EXTRAPORT1=$((baseport + 1))
+EXTRAPORT2=$((baseport + 2))
+EXTRAPORT3=$((baseport + 3))
+EXTRAPORT4=$((baseport + 4))
+EXTRAPORT5=$((baseport + 5))
+EXTRAPORT6=$((baseport + 6))
+EXTRAPORT7=$((baseport + 7))
+EXTRAPORT8=$((baseport + 8))
+CONTROLPORT=$((baseport + 9))
 
 LOWPORT=$baseport
-HIGHPORT=`expr $baseport + $numport - 1`
+HIGHPORT=$((baseport + numport - 1))
 
 export PORT
 export EXTRAPORT1
@@ -109,73 +135,68 @@ export CONTROLPORT
 export LOWPORT
 export HIGHPORT
 
-echostart "S:$systest:`date`"
+echostart "S:$systest:$(date_with_args)"
 echoinfo  "T:$systest:1:A"
 echoinfo  "A:$systest:System test $systest"
 echoinfo  "I:$systest:PORTRANGE:${LOWPORT} - ${HIGHPORT}"
 
-if [ x${PERL:+set} = x ]
-then
-    echowarn "I:$systest:Perl not available.  Skipping test."
-    echowarn "R:$systest:UNTESTED"
-    echoend  "E:$systest:`date $dateargs`"
-    exit 0;
-fi
-
-$PERL testsock.pl -p $PORT  || {
+$PERL ${srcdir}/testsock.pl -p "$PORT"  || {
     echowarn "I:$systest:Network interface aliases not set up.  Skipping test."
-    echowarn "R:$systest:UNTESTED"
-    echoend  "E:$systest:`date $dateargs`"
-    exit 0;
+    echowarn "R:$systest:FAIL"
+    echoend  "E:$systest:$(date_with_args)"
+    exit 1;
 }
 
 # Check for test-specific prerequisites.
-test ! -f $systest/prereq.sh || ( cd $systest && $SHELL prereq.sh "$@" )
+test ! -f "$systest/prereq.sh" || ( cd "${systest}" && $SHELL prereq.sh "$@" )
 result=$?
 
 if [ $result -eq 0 ]; then
     : prereqs ok
 else
     echowarn "I:$systest:Prerequisites missing, skipping test."
-    [ $result -eq 255 ] && echowarn "R:$systest:SKIPPED" || echowarn "R:$systest:UNTESTED"
-    echoend "E:$systest:`date $dateargs`"
+    if [ $result -eq 255 ]; then
+       echowarn "R:$systest:SKIPPED";
+    else
+       echowarn "R:$systest:UNTESTED"
+    fi
+    echoend "E:$systest:$(date_with_args)"
     exit 0
 fi
 
 # Check for PKCS#11 support
 if
-    test ! -f $systest/usepkcs11 || $SHELL cleanpkcs11.sh
+    test ! -f "$systest/usepkcs11" || $SHELL cleanpkcs11.sh
 then
     : pkcs11 ok
 else
     echowarn "I:$systest:Need PKCS#11, skipping test."
     echowarn "R:$systest:PKCS11ONLY"
-    echoend  "E:$systest:`date $dateargs`"
+    echoend  "E:$systest:$(date_with_args)"
     exit 0
 fi
 
 # Clean up files left from any potential previous runs
-if test -f $systest/clean.sh
+if test -f "$systest/clean.sh"
 then
-   ( cd $systest && $SHELL clean.sh "$@" )
+   ( cd "${systest}" && $SHELL clean.sh "$@" )
 fi
 
 # Set up any dynamically generated test data
-if test -f $systest/setup.sh
+if test -f "$systest/setup.sh"
 then
-   ( cd $systest && $SHELL setup.sh "$@" )
+   ( cd "${systest}" && $SHELL setup.sh "$@" )
 fi
 
 # Start name servers running
-$PERL start.pl --port $PORT $systest
-if [ $? -ne 0 ]; then
+if ! $PERL ${srcdir}/start.pl --port "$PORT" "$systest"; then
     echofail "R:$systest:FAIL"
-    echoend  "E:$systest:`date $dateargs`"
+    echoend  "E:$systest:$(date_with_args)"
     exit 1
 fi
 
 # Run the tests
-( cd $systest ; $SHELL tests.sh "$@" )
+( cd "${systest}" && $SHELL tests.sh "$@" )
 status=$?
 
 if $stopservers
@@ -186,17 +207,17 @@ else
 fi
 
 # Shutdown
-$PERL stop.pl $systest
+$PERL ${srcdir}/stop.pl "$systest"
 
-status=`expr $status + $?`
+status=$((status + $?))
 
 if [ $status != 0 ]; then
     echofail "R:$systest:FAIL"
     # Do not clean up - we need the evidence.
 else
-    core_dumps="$(find $systest/ -name 'core*' -or -name '*.core' | sort | tr '\n' ' ')"
-    assertion_failures=$(find $systest/ -name named.run | xargs grep "assertion failure" | wc -l)
-    sanitizer_summaries=$(find $systest/ -name 'tsan.*' | wc -l)
+    core_dumps="$(find "$systest/" -name 'core*' -or -name '*.core' | sort | tr '\n' ' ')"
+    assertion_failures=$(find "$systest/" -name named.run -print0 | xargs -0 grep "assertion failure" | wc -l)
+    sanitizer_summaries=$(find "$systest/" -name 'tsan.*' | wc -l)
     if [ -n "$core_dumps" ]; then
         echoinfo "I:$systest:Test claims success despite crashes: $core_dumps"
         echofail "R:$systest:FAIL"
@@ -205,31 +226,34 @@ else
                SYSTESTDIR="$systest"
                echoinfo "D:$systest:backtrace from $coredump start"
                binary=$(gdb --batch --core="$coredump" | sed -ne "s/Core was generated by \`//;s/ .*'.$//p;")
-               "$TOP/libtool" --mode=execute gdb \
-                              --batch \
-                              --command=run.gdb \
-                              --core="$coredump" \
-                              -- \
-                              "$binary"
+               "${top_builddir}/libtool" --mode=execute gdb \
+                                         --batch \
+                                         --command=run.gdb \
+                                         --core="$coredump" \
+                                         -- \
+                                         "$binary"
                echoinfo "D:$systest:backtrace from $coredump end"
        done
-    elif [ $assertion_failures -ne 0 ]; then
+    elif [ "$assertion_failures" -ne 0 ]; then
        SYSTESTDIR="$systest"
         echoinfo "I:$systest:Test claims success despite $assertion_failures assertion failure(s)"
-       grep "SUMMARY: " $(find $systest/ -name 'tsan.*') | sort -u | cat_d
+       find "$systest/" -name 'tsan.*' -print0 | xargs -0 grep "SUMMARY: " | sort -u | cat_d
         echofail "R:$systest:FAIL"
         # Do not clean up - we need the evidence.
-    elif [ $sanitizer_summaries -ne 0 ]; then
+    elif [ "$sanitizer_summaries" -ne 0 ]; then
         echoinfo "I:$systest:Test claims success despite $sanitizer_summaries sanitizer reports(s)"
         echofail "R:$systest:FAIL"
     else
         echopass "R:$systest:PASS"
         if $clean
         then
-            ( cd $systest && $SHELL clean.sh "$@" )
-            if test -d ../../../.git
+            ( cd "${systest}" && $SHELL clean.sh "$@" )
+           if [ "${srcdir}" != "${builddir}" ]; then
+               rm -rf "./${systest}" ## FIXME (this also removes compiled binaries)
+           fi
+            if test -d ${srcdir}/../../../.git
             then
-                git status -su --ignored $systest 2>/dev/null | \
+                git status -su --ignored "${systest}" 2>/dev/null | \
                 sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
                 -e 's|^!! \(.*/named.run\)$|I:file \1 not removed|p' \
                 -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
@@ -238,6 +262,6 @@ else
     fi
 fi
 
-echoend "E:$systest:`date $dateargs`"
+echoend "E:$systest:$(date_with_args)"
 
 exit $status
index 417ba708291b83ee119a4f638ff17dad0e49438a..c759fc6c5a82a6d9f501f9cf44e3d15e33e7a94e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh 
index e35cb70267096654b3c88ef2c619fa4ce8dfd0d9..00162731d482467cb0608620d147b5c3c45130bf 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 set -e
diff --git a/bin/tests/system/serve-stale/prereq.sh b/bin/tests/system/serve-stale/prereq.sh
deleted file mode 100644 (file)
index 7aad052..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.69 && $Net::DNS::VERSION <= 0.74);' 2>/dev/null
-    then
-        :
-    else
-        echo "I:Net::DNS versions 0.69 to 0.74 have bugs that cause this test to fail: please update." >&2
-        exit 1
-    fi
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
-if $PERL -e 'use Net::DNS::Nameserver;' 2>/dev/null
-then
-       :
-else
-       echo "I:This test requires the Net::DNS::Nameserver library." >&2
-       exit 1
-fi
-if $PERL -e 'use Time::HiRes;' 2>/dev/null
-then
-       :
-else
-       echo "I:This test requires the Time::HiRes library." >&2
-       exit 1
-fi
index 79d7238cf96d682bde40d73f72cca5cf652703ef..f0ac9e60f73fb170b8a04da198c302b2c34bc02f 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 252eeab994ca1eb592cf4f6766ebc69a30a0e5da..73e8cc8612960e6b30eaa767f7ba7dbaaa737c60 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
@@ -1056,7 +1055,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
 echo_i "start ns4"
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} serve-stale ns4
+start --noclean --restart --port ${PORT} serve-stale ns4
 
 n=$((n+1))
 echo_i "verify ancient cache statistics (serve-stale disabled) ($n)"
index c512d6eea69b3bde19fd78e6b96aedf55007bfde..51e2da143066ea05dd1fc3361fe6f4a3c6800c24 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 set -e
index 7630112dbd2d2f427f5fb4b0bb3f59195c532949..c08c1f1b7479153ee990ee01e0cf80d5d12425d1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 2fc44b0f8f2d272fe9f35257d6e22eebbdd70cd3..a20dc3f66caa4c54e7499d19a0c7bb4f51e004b5 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +noauth +nocomm +nocmd -p ${PORT}"
index 985a4bcb6979b437cea91d1f20f9b65943cb7faf..0f5767dcebb6a52429389bd976c422d9a953a516 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index dd54cf3766fbe9046df948daf2e1c0dcbf7ffb21..27af97a3568efa790240e0010c907bd2cfd42c60 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 n=1
index 1ecbd70f22694d8acde339e310ed41b9019306c8..e413e24942e93d1286524dd90d38f7dcb31077de 100755 (executable)
@@ -75,8 +75,9 @@ if (!$test) {
 }
 
 # Global variables
-my $topdir = abs_path($ENV{'SYSTEMTESTTOP'});
-my $testdir = abs_path($topdir . "/" . $test);
+my $builddir = $ENV{'builddir'};
+my $srcdir = $ENV{'srcdir'};
+my $testdir = "$builddir/$test";
 
 if (! -d $testdir) {
        die "No test directory: \"$testdir\"\n";
@@ -163,7 +164,7 @@ sub check_ns_port {
        my $tries = 0;
 
        while (1) {
-               my $return = system("$PERL $topdir/testsock.pl -p $port $options");
+               my $return = system("$PERL $srcdir/testsock.pl -p $port $options");
 
                if ($return == 0) {
                        last;
@@ -176,7 +177,7 @@ sub check_ns_port {
                        print "I:$test:server sockets not available\n";
                        print "I:$test:failed\n";
 
-                       system("$PERL $topdir/stop.pl $test"); # Is this the correct behavior?
+                       system("$PERL $srcdir/stop.pl $test"); # Is this the correct behavior?
 
                        exit 1;
                }
@@ -205,14 +206,14 @@ sub start_server {
                        print "I:$test:failed\n";
                        system "kill -9 $child" if ("$child" ne "");
                        chdir "$testdir";
-                       system "$PERL $topdir/stop.pl $test";
+                       system "$PERL $srcdir/stop.pl $test";
                        exit 1;
                }
                sleep 0.1;
        }
 
        # go back to the top level directory
-       chdir $topdir;
+       chdir $builddir;
 }
 
 sub construct_ns_command {
@@ -323,7 +324,7 @@ sub construct_ans_command {
        } elsif (-e "$testdir/$server/ans.pl") {
                $command = "$PERL ans.pl";
        } else {
-               $command = "$PERL $topdir/ans.pl 10.53.0.$n";
+               $command = "$PERL $srcdir/ans.pl 10.53.0.$n";
        }
 
        if ($options) {
@@ -384,7 +385,7 @@ sub verify_ns_server {
                        print "I:$test:server $server seems to have not started\n";
                        print "I:$test:failed\n";
 
-                       system("$PERL $topdir/stop.pl $test");
+                       system("$PERL $srcdir/stop.pl $test");
 
                        exit 1;
                }
@@ -419,7 +420,7 @@ sub verify_ns_server {
                        print "I:$test:no response from $server\n";
                        print "I:$test:failed\n";
 
-                       system("$PERL $topdir/stop.pl $test");
+                       system("$PERL $srcdir/stop.pl $test");
 
                        exit 1;
                }
diff --git a/bin/tests/system/start.sh b/bin/tests/system/start.sh
deleted file mode 100755 (executable)
index e71c7d6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
-# shellcheck source=conf.sh
-. "$SYSTEMTESTTOP/conf.sh"
-export SYSTEMTESTTOP
-
-$PERL "$SYSTEMTESTTOP/start.pl" "$@"
old mode 100755 (executable)
new mode 100644 (file)
similarity index 74%
rename from bin/tests/system/stop.sh
rename to bin/tests/system/start.sh.in
index ba1256b..676dd94
@@ -9,9 +9,10 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
+builddir=@builddir@
+srcdir=@srcdir@
+
 # shellcheck source=conf.sh
-. "$SYSTEMTESTTOP/conf.sh"
-export SYSTEMTESTTOP
+. "${builddir}/conf.sh"
 
-$PERL "$SYSTEMTESTTOP/stop.pl" "$@"
+$PERL "${srcdir}/start.pl" "$@"
index 0fe84ff66d656f5fec202da434fa92822a74dc41..cd7e13f2f47f9ddd4af53628d99b6d0a77c8095d 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=example.
index 757c8b4a98d5360aefc26cbd9d3d60ca2f5bdc08..2f5dbf05ab552229078cd024707d8916b1911f8f 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=sub.example
index 077690600e9f94b6375f3518c6c5511b0f7a187b..b2af6098912daccce2db57c9b44f0ed0868c4cb2 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 368d472f4ce6dff8f4e528a2e687e3ee0197ef5c..e487ff298c54eab9cc8bcdae461473a983b2a227 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
diff --git a/bin/tests/system/statistics/prereq.sh b/bin/tests/system/statistics/prereq.sh
deleted file mode 100644 (file)
index ec3fefe..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.76 && $Net::DNS::VERSION <= 0.77);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS version 0.76 and 0.77 have a bug that causes this test to fail: please update." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
index def2a615acccafbe9c9b2e9eb028d4bbcbfef6b1..e683db06d94bcad205e8796bba42c822b8f613cb 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 1a4c5a5778533a8954cb249a6a12c96c193edbd2..5347ade54e5a78fbc2ce7b922cbe908158d0bff0 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd"
diff --git a/bin/tests/system/statschannel/prereq.sh b/bin/tests/system/statschannel/prereq.sh
deleted file mode 100644 (file)
index f3d4fd1..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-fail=0
-
-if $PERL -e 'use File::Fetch;' 2>/dev/null
-then
-        :
-else
-    echo_i "This test requires the File::Fetch library." >&2
-    fail=1
-fi
-
-exit $fail
index 32a9da451c84a91aa1eef912a6ec425b19a2ba11..aaa221b5d779a82a765669f09731403ab4665f8b 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 # shellcheck source=conf.sh
 . "$SYSTEMTESTTOP/conf.sh"
 
index a667d446fbc4a9cc0e5ecdfba5c17a494fa79ddc..7940c23b46c11adcfec65d62da765c14ca8779d6 100644 (file)
@@ -54,8 +54,9 @@ if (!$test) {
 }
 
 # Global variables
-my $topdir = abs_path($ENV{'SYSTEMTESTTOP'});
-my $testdir = abs_path($topdir . "/" . $test);
+my $builddir = $ENV{'builddir'};
+my $srcdir = $ENV{'srcdir'};
+my $testdir = "$builddir/$test";
 
 if (! -d $testdir) {
        die "No test directory: \"$testdir\"\n";
similarity index 76%
rename from bin/tests/system/tcp/prereq.sh
rename to bin/tests/system/stop.sh.in
index 375370b71fdebdd61f2c3033339e7fe86ec13b82..1d5fb19846d5c749f864a6ea03c1bb01ecd768a0 100644 (file)
@@ -9,11 +9,10 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
+builddir=@builddir@
+srcdir=@srcdir@
 
-if ! test -n "$PYTHON"; then
-       echo_i "This test requires Python."
-       exit 1
-fi
+# shellcheck source=conf.sh
+. "${builddir}/conf.sh"
 
+$PERL "${srcdir}/stop.pl" "$@"
diff --git a/bin/tests/system/stress/prereq.sh b/bin/tests/system/stress/prereq.sh
deleted file mode 100644 (file)
index de147a4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 53c3d20db633df4ecc97a32742097834486309c2..08edd332aa55a90b536f6fbfe82143071a4b4579 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index def2a615acccafbe9c9b2e9eb028d4bbcbfef6b1..e683db06d94bcad205e8796bba42c822b8f613cb 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 730cd40603f999a17dee78c8ee70c03d55c22943..ae81f126be20069f2af3af3701114feb526c6631 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp -p ${PORT}"
@@ -56,7 +55,7 @@ digcomp knowngood.dig.out.rec dig.out.ns3 || ret=1
        $PERL $SYSTEMTESTTOP/stop.pl stub ns3
 
        echo_i "re-starting stub server"
-       $PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} stub ns3
+       start --noclean --restart --port ${PORT} stub ns3
 }
 done
 
index 1d18d612e7fcba33b693924df1d04457dda7028b..d5ea27298a74e95f97801d9100ac1392dc6c0952 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 # shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 set -e
old mode 100755 (executable)
new mode 100644 (file)
similarity index 87%
rename from bin/tests/system/system-test-driver.sh
rename to bin/tests/system/system-test-driver.sh.in
index 38710a3..6ad8380
@@ -2,6 +2,9 @@
 # shellcheck disable=SC2181
 # shellcheck disable=SC2034
 
+builddir=@abs_builddir@
+srcdir=@abs_srcdir@
+
 usage() {
     echo "$0 --test-name=NAME --log-file=PATH.log --trs-file=PATH.trs --color-tests={yes|no} --expect-failure={yes|no} --enable-hard-errors={yes|no}"
 }
@@ -17,7 +20,7 @@ fi
 
 OPTS=$(getopt --shell sh --name "$(basename "$0")" --options '' --longoptions test-name:,log-file:,trs-file:,color-tests:,expect-failure:,enable-hard-errors: -- "$@")
 
-if [ "$?" != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
+if [ "$?" -ne 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
 
 eval set -- "$OPTS"
 
@@ -62,6 +65,6 @@ fi
 
 echo "Running $TEST_PROGRAM"
 
-./run.sh -p "$(($RANDOM%32000+32000))" "$@" "$TEST_PROGRAM"
+"${builddir}/run.sh" -p "$("${srcdir}/get_base_port.sh")" "$@" "$TEST_PROGRAM"
 
 exit $?
index 7db0dec6803e008dc2a233f8e2e035e0855972ea..dc9bb97edb4fb341f9c187b1bf5af4cb5ae0a474 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 7e78d634affe8a1c7d597b1249f3746c513ad5e4..a659019678e7680e0c5571509eda9f463209e69d 100644 (file)
@@ -11,7 +11,6 @@
 
 set -e
 
-SYSTEMTESTTOP=..
 # shellcheck source=../conf.sh
 . "$SYSTEMTESTTOP/conf.sh"
 
@@ -81,7 +80,7 @@ refresh_tcp_stats() {
 # Send a command to the tool script listening on 10.53.0.6.
 send_command() {
        nextpart ans6/ans.run > /dev/null
-       echo "$*" | "${PERL}" "${SYSTEMTESTTOP}/send.pl" 10.53.0.6 "${CONTROLPORT}"
+       echo "$*" | send 10.53.0.6 "${CONTROLPORT}"
        wait_for_log_peek 10 "result=" ans6/ans.run || ret=1
        if ! nextpartpeek ans6/ans.run | grep -qF "result=OK"; then
                return 1
index 9de91de8913dd9451b8b09c116c612280c2d8b21..f49f6eeda05877c271cb91beb9168085581c3f33 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index b3e0450b4af3dc40b16e5b7611a3996edb05b955..1629d0cb71534c2248c8b3c55b89340e73f39121 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 3a720decfc7412c80842bd17116f69610414c3db..6664ae0a880dc0074d6f7fc6a3975044146874a3 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
index ba0ac9b565ef9531ce3d68805280529e37c22dc8..b552ebdc8bba7a149af4ec729a1f321d83192b17 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 # enable the tsiggss test only if gssapi was enabled
index 74d16dd0ad5701cccf3136cf1e3ca21eb14f50ae..f6623ccbf1f7b7261363be02fd231ef4fcbc1d73 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
index 7c938ef78b2005e7ebbc9cfc71824f85af5a7909..8a19050c406a8d1345d961c2da23361d507852d7 100644 (file)
@@ -11,7 +11,6 @@
 
 # tests for TSIG-GSS updates
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
index 854047aadb5a48cd6d8ec5b48815cfa59f9d2a49..709e4aad14baffb8ec0f5deb215e0e2d9f44b7f8 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 zone=example
index 26805de9b87d76007a87e969debed4b85bae5a5c..492731f9350c4c6f1b013c60e437fb396000a694 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index eeb8920ffa881360d441a7874cb37d4370a76df2..119b8640b8e85aa8a89922f937bf3256dcdf83df 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
@@ -145,7 +144,7 @@ status=`expr $status + $ret`
 
 echo_i "stop and restart slave"
 $PERL $SYSTEMTESTTOP/stop.pl unknown ns2
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} unknown ns2
+start --noclean --restart --port ${PORT} unknown ns2
 
 # server may be answering queries before zones are loaded,
 # so retry a few times if this query fails
@@ -169,7 +168,7 @@ status=`expr $status + $ret`
 
 echo_i "stop and restart inline slave"
 $PERL $SYSTEMTESTTOP/stop.pl unknown ns3
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} unknown ns3
+start --noclean --restart --port ${PORT} unknown ns3
 
 # server may be answering queries before zones are loaded,
 # so retry a few times if this query fails
diff --git a/bin/tests/system/upforwd/prereq.sh b/bin/tests/system/upforwd/prereq.sh
deleted file mode 100644 (file)
index 0e299f4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
index a59b54078a4cb8fab0f26e1abf25f28786da7fb4..64bb7feb7015d3740a4c481dbe98bcbd93a7ae8e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp -f ns1/example1.db ns1/example.db
index 3b0d7b3998eb8109a3cc0ea3597f8a58dba4b288..234fe536374e60f841f3ff294f2c43cc0eb0de32 100644 (file)
@@ -13,7 +13,6 @@
 # ns2 = slave with update forwarding disabled; not currently used
 # ns3 = slave with update forwarding enabled
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
index dcd2eb8f78c5098dd06d6289ec219c5148e84bb7..8feca6f49d641808a006d85b1535a0c7004d1c5c 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 (cd zones && $SHELL genzones.sh)
index e8b221010069707e2eb833ad93228f5322f9723e..8c852d571437e2e50eec8ba9759c9a6abedfe811 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 failed () {
        cat verify.out.$n | sed 's/^/D:/';
index 1e5dcbb9b01c7db40bdbb3ea7c982e0c5fbb6f36..250fdd1870890d51ace91fb3112e34917efb82d2 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=verify
index 05d6d65dba80b94615716f2b51afc69206218a3c..a2f54fb5e2780a620d3a7616e8faff4d5e65b083 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 cp -f ns2/example1.db ns2/example.db
index f3ce287962330f11b94dda0bd70a3f34535f85a5..b533da7722ae131c055afc6bb03996072b2015cc 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd +noauth -p ${PORT}"
index 497e2759a482fa806e61de9a4da5997d27d1e548..e28519ca1c798d91e39d45f666ad24ec92f7174e 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=../..
 . $SYSTEMTESTTOP/conf.sh
 
 SYSTESTDIR=wildcard
index d99aef773a3962d793ffc229de394c0b90bab179..9c2a601ef8bf30de7364bb20059e645c3499b0fc 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
index 92ae193f8aa4b3aabefa947a078da7991a96a763..1abdd3f742eb73baab9863938318441afb8ee1f1 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 status=0
diff --git a/bin/tests/system/xfer/prereq.sh b/bin/tests/system/xfer/prereq.sh
deleted file mode 100644 (file)
index 75cd53a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    if $PERL -e 'use Net::DNS; die if ($Net::DNS::VERSION >= 0.69 && $Net::DNS::VERSION <= 0.74);' 2>/dev/null
-    then
-        :
-    else
-        echo_i "Net::DNS versions 0.69 to 0.74 have bugs that cause this test to fail: please update." >&2
-        exit 1
-    fi
-else
-    echo_i "This test requires the Net::DNS library." >&2
-    exit 1
-fi
-
-if ! $PERL -e 'use Digest::HMAC;' 2>/dev/null
-then
-    echo_i "This test requires the Digest::HMAC Perl module." >&2
-    exit 1
-fi
index ca690373363d3200f3c9db15bb0add8925c0c21c..a2661f359bc2d40e8b85ab502f15e5aedab77597 100644 (file)
@@ -9,15 +9,14 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
-$SHELL ../genzone.sh 1 6 7 >ns1/slave.db
-$SHELL ../genzone.sh 1 6 7 >ns1/edns-expire.db
-$SHELL ../genzone.sh 2 3 >ns2/example.db
-$SHELL ../genzone.sh 2 3 >ns2/tsigzone.db
-$SHELL ../genzone.sh 6 3 >ns6/master.db
-$SHELL ../genzone.sh 7 >ns7/master2.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 6 7 >ns1/slave.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 6 7 >ns1/edns-expire.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/example.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/tsigzone.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 6 3 >ns6/master.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 7 >ns7/master2.db
 
 cp -f ns4/root.db.in ns4/root.db
 $PERL -e 'for ($i=0;$i<10000;$i++){ printf("x%u 0 in a 10.53.0.1\n", $i);}' >> ns4/root.db
index c88de9e679e2c8e5722fb5faa8213ce363d26222..731d067b278eb8aad2b7f260413dc2d7632d6879 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
@@ -249,13 +248,16 @@ fi
 
 # now we test transfers with assorted TSIG glitches
 DIGCMD="$DIG $DIGOPTS @10.53.0.4"
-SENDCMD="$PERL ../send.pl 10.53.0.5 $EXTRAPORT1"
+
+sendcmd() {
+    send 10.53.0.5 "$EXTRAPORT1"
+}
 
 echo_i "testing that incorrectly signed transfers will fail..."
 n=$((n+1))
 echo_i "initial correctly-signed transfer should succeed ($n)"
 
-$SENDCMD < ans5/goodaxfr
+sendcmd < ans5/goodaxfr
 
 # Initially, ns4 is not authoritative for anything.
 # Now that ans is up and running with the right data, we make ns4
@@ -292,7 +294,8 @@ $DIGCMD nil. TXT | grep 'initial AXFR' >/dev/null || {
 n=$((n+1))
 echo_i "unsigned transfer ($n)"
 
-$SENDCMD < ans5/unsigned
+sendcmd < ans5/unsigned
+sleep 1
 
 $RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
 
@@ -311,7 +314,7 @@ $DIGCMD nil. TXT | grep 'unsigned AXFR' >/dev/null && {
 n=$((n+1))
 echo_i "bad keydata ($n)"
 
-$SENDCMD < ans5/badkeydata
+sendcmd < ans5/badkeydata
 
 $RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
 
@@ -330,7 +333,7 @@ $DIGCMD nil. TXT | grep 'bad keydata AXFR' >/dev/null && {
 n=$((n+1))
 echo_i "partially-signed transfer ($n)"
 
-$SENDCMD < ans5/partial
+sendcmd < ans5/partial
 
 $RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
 
@@ -349,7 +352,7 @@ $DIGCMD nil. TXT | grep 'partially signed AXFR' >/dev/null && {
 n=$((n+1))
 echo_i "unknown key ($n)"
 
-$SENDCMD < ans5/unknownkey
+sendcmd < ans5/unknownkey
 
 $RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
 
@@ -368,7 +371,7 @@ $DIGCMD nil. TXT | grep 'unknown key AXFR' >/dev/null && {
 n=$((n+1))
 echo_i "incorrect key ($n)"
 
-$SENDCMD < ans5/wrongkey
+sendcmd < ans5/wrongkey
 
 $RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
 
@@ -387,7 +390,7 @@ $DIGCMD nil. TXT | grep 'incorrect key AXFR' >/dev/null && {
 n=$((n+1))
 echo_i "bad message id ($n)"
 
-$SENDCMD < ans5/badmessageid
+sendcmd < ans5/badmessageid
 
 # Uncomment to see AXFR stream with mismatching IDs.
 # $DIG $DIGOPTS @10.53.0.5 -y tsig_key:LSAnCU+Z nil. AXFR +all
@@ -444,7 +447,7 @@ tmp=0
 $DIG -p ${PORT} txt mapped @10.53.0.3 > dig.out.1.test$n
 grep "status: NOERROR," dig.out.1.test$n > /dev/null || tmp=1
 $PERL $SYSTEMTESTTOP/stop.pl xfer ns3
-$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} xfer ns3
+start --noclean --restart --port ${PORT} xfer ns3
 check_mapped () {
        $DIG -p ${PORT} txt mapped @10.53.0.3 > dig.out.2.test$n
        grep "status: NOERROR," dig.out.2.test$n > /dev/null || return 1
index 6b653493f1b8203eb9ec08c56d870666111745e4..2cabeb7bc138babe76a7a6ac1c1dc625b7b14b1f 100644 (file)
@@ -13,7 +13,6 @@
 # Set up test data for zone transfer quota tests.
 #
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $PERL setup.pl
index 919d7e25302961d26c85377b4b1fea5e5f4e190c..b5a4535077c69be51f30fcd5bf0b0fad1573f913 100755 (executable)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
diff --git a/bin/tests/system/zero/prereq.sh b/bin/tests/system/zero/prereq.sh
deleted file mode 100644 (file)
index de147a4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-SYSTEMTESTTOP=..
-. $SYSTEMTESTTOP/conf.sh
-
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
-    :
-else
-    echo "I:This test requires the Net::DNS library." >&2
-    exit 1
-fi
index 83c35ea60d99f55f625be00784061500824ec436..7ef0b8fb6b6ca349459fdc10c68e5a81afe2d443 100644 (file)
@@ -7,7 +7,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 copy_setports ns1/named.conf.in ns1/named.conf
@@ -15,4 +14,4 @@ copy_setports ns2/named.conf.in ns2/named.conf
 copy_setports ns3/named.conf.in ns3/named.conf
 copy_setports ns4/named.conf.in ns4/named.conf
 
-$SHELL ../genzone.sh 2 4 | sed -e 's/^$TTL 3600$/$TTL 0 ; force TTL to zero/' -e 's/86400.IN SOA/0 SOA/' > ns2/example.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 4 | sed -e 's/^$TTL 3600$/$TTL 0 ; force TTL to zero/' -e 's/86400.IN SOA/0 SOA/' > ns2/example.db
index 681ba118db3a9a7becb7eba9f7dc9427de529a4f..a5e4de9c4af0596aaaddcfd764fb597294fbc38b 100644 (file)
@@ -10,7 +10,6 @@
 # information regarding copyright ownership.
 
 #shellcheck source=conf.sh
-SYSTEMTESTTOP=..
 . "$SYSTEMTESTTOP/conf.sh"
 
 dig_with_opts() {
index dcd8e4c2c879bef35bac3871c92f3ffde3922246..d704d7db75f7a1d1060e6373c53929ef19a0b70e 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 $SHELL clean.sh
@@ -17,8 +16,8 @@ $SHELL clean.sh
 copy_setports ns1/named.conf.in ns1/named.conf
 copy_setports ns2/named.conf.in ns2/named.conf
 
-$SHELL ../genzone.sh 1 > ns1/master.db
-$SHELL ../genzone.sh 1 > ns1/duplicate.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 > ns1/master.db
+$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 > ns1/duplicate.db
 cp bigserial.db ns1/
 cd ns1
 touch master.db.signed
index 92da5b48242f88c7a98f1fedd6e196122fe08252..b8fcb08ddd01c6e90199f7ba405837954df31836 100644 (file)
@@ -9,7 +9,6 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-SYSTEMTESTTOP=..
 . $SYSTEMTESTTOP/conf.sh
 
 DIGOPTS="-p ${PORT}"
diff --git a/bin/tools/Makefile.am b/bin/tools/Makefile.am
new file mode 100644 (file)
index 0000000..4fb47c9
--- /dev/null
@@ -0,0 +1,54 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)
+
+LDADD =                                \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)
+
+bin_PROGRAMS =                 \
+       arpaname                \
+       named-rrchecker         \
+       mdig
+
+sbin_PROGRAMS =                        \
+       named-journalprint      \
+       nsec3hash
+
+mdig_CPPFLAGS =                        \
+       $(AM_CPPFLAGS)          \
+       $(LIBBIND9_CFLAGS)
+
+mdig_LDADD =           \
+       $(LDADD)        \
+       $(LIBBIND9_LIBS)
+
+if HAVE_DNSTAP
+bin_PROGRAMS +=                        \
+       dnstap-read
+
+dnstap_read_CPPFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(DNSTAP_CFLAGS)        \
+       -I$(top_builddir)/lib/dns
+
+dnstap_read_LDADD =            \
+       $(LDADD)                \
+       $(DNSTAP_LIBS)
+endif
+
+if HAVE_LMDB
+sbin_PROGRAMS +=                       \
+       named-nzd2nzf
+
+named_nzd2nzf_CFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(LMDB_CFLAGS)
+
+named_nzd2nzf_LDADD =          \
+       $(LDADD)                \
+       $(LMDB_LIBS)
+
+endif
index fd38fe21a0359a3821e35d582eb8541305485296..c14424512e0569e3ab64a473677746947a940853 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <protobuf-c/protobuf-c.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/hex.h>
@@ -48,7 +49,7 @@
 #include <dns/name.h>
 #include <dns/result.h>
 
-#include "lib/dns/dnstap.pb-c.h"
+#include "dnstap.pb-c.h"
 
 isc_mem_t *mctx = NULL;
 bool memrecord = false;
@@ -68,8 +69,8 @@ const char *program = "dnstap-read";
                }                                                     \
        } while (0)
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...);
 
 static void
 fatal(const char *format, ...) {
index 65264b817ed73cb816d0b596c05121c2b855ed24..b19afba4dad42b0d6f28cceb8fb0b0fda95d0b4a 100644 (file)
@@ -16,6 +16,7 @@
 #include <unistd.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/hash.h>
 #include <isc/hex.h>
@@ -782,8 +783,8 @@ sendqueries(isc_task_t *task, isc_event_t *event) {
        return;
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -893,9 +894,8 @@ help(void) {
              stdout);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...)
-       ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
 
 static void
 fatal(const char *format, ...) {
@@ -1715,7 +1715,7 @@ dash_option(const char *option, char *next, struct query *query, bool global,
                         */
                        break;
                case 'v':
-                       fputs("mDiG " VERSION "\n", stderr);
+                       fprintf(stderr, "mDiG %s\n", PACKAGE_VERSION);
                        exit(0);
                        break;
                }
@@ -1811,7 +1811,7 @@ dash_option(const char *option, char *next, struct query *query, bool global,
 }
 
 static struct query *
-clone_default_query() {
+clone_default_query(void) {
        struct query *query;
 
        query = isc_mem_allocate(mctx, sizeof(struct query));
index bc564d1250c63f00937cabc9c91d3c4827ce2321..50c66396089c72bf542aa27e164b604f3180e541 100644 (file)
@@ -12,6 +12,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/lex.h>
@@ -32,8 +33,8 @@ static isc_lex_t *lex;
 
 static isc_lexspecials_t specials;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
@@ -49,8 +50,8 @@ usage(void) {
        exit(0);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...);
 
 static void
 fatal(const char *format, ...) {
index d72e64c42b671674b807e9c9897c0c40846914e5..6ad6449119f9634e455d25e8edf781ccf1bf2d99 100644 (file)
@@ -13,6 +13,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/attributes.h>
 #include <isc/base32.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
@@ -32,8 +33,8 @@
 
 const char *program = "nsec3hash";
 
-ISC_PLATFORM_NORETURN_PRE static void
-fatal(const char *format, ...) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+fatal(const char *format, ...);
 
 static void
 fatal(const char *format, ...) {
@@ -55,7 +56,7 @@ check_result(isc_result_t result, const char *message) {
 }
 
 static void
-usage() {
+usage(void) {
        fprintf(stderr, "Usage: %s salt algorithm iterations domain\n",
                program);
        fprintf(stderr, "       %s -r algorithm flags iterations salt domain\n",
index 7172de39e92b15e98a09358e410e555de32522cc..83b9c4a2a4924dbdb09fc2c54e4c2725542b40ae 100644 (file)
@@ -151,9 +151,6 @@ const FileData installFiles[] =
        {"krb5_64.dll", FileData::BinDir, FileData::Critical, FALSE, TRUE},
 #endif
 #endif
-#ifdef HAVE_GEOIP
-       {"libgeoip.dll", FileData::BinDir, FileData::Critical, FALSE, TRUE},
-#endif
 #ifdef WITH_IDN
        {"idnkit.dll", FileData::BinDir, FileData::Critical, FALSE, TRUE},
        {"iconv.dll", FileData::BinDir, FileData::Critical, FALSE, TRUE},
diff --git a/bind.keys.h b/bind.keys.h
deleted file mode 100644 (file)
index 4d156da..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef BIND_KEYS_H
-#define BIND_KEYS_H 1
-#define TRUST_ANCHORS \
-       "\
-# The bind.keys file is used to override the built-in DNSSEC trust anchors\n\
-# which are included as part of BIND 9.  The only trust anchors it contains\n\
-# are for the DNS root zone (\".\").  Trust anchors for any other zones MUST\n\
-# be configured elsewhere; if they are configured here, they will not be\n\
-# recognized or used by named.\n\
-#\n\
-# To use the built-in root key, set \"dnssec-validation auto;\" in the\n\
-# named.conf options, or else leave \"dnssec-validation\" unset.  If\n\
-# \"dnssec-validation\" is set to \"yes\", then the keys in this file are\n\
-# ignored; keys will need to be explicitly configured in named.conf for\n\
-# validation to work.  \"auto\" is the default setting, unless named is\n\
-# built with \"configure --disable-auto-validation\", in which case the\n\
-# default is \"yes\".\n\
-#\n\
-# This file is NOT expected to be user-configured.\n\
-#\n\
-# Servers being set up for the first time can use the contents of this file\n\
-# as initializing keys; thereafter, the keys in the managed key database\n\
-# will be trusted and maintained automatically.\n\
-#\n\
-# These keys are current as of Mar 2019.  If any key fails to initialize\n\
-# correctly, it may have expired.  In that event you should replace this\n\
-# file with a current version.  The latest version of bind.keys can always\n\
-# be obtained from ISC at https://www.isc.org/bind-keys.\n\
-#\n\
-# See https://data.iana.org/root-anchors/root-anchors.xml for current trust\n\
-# anchor information for the root zone.\n\
-\n\
-trust-anchors {\n\
-        # This key (20326) was published in the root zone in 2017.\n\
-        . initial-key 257 3 8 \"AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3\n\
-                +/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv\n\
-                ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF\n\
-                0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e\n\
-                oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd\n\
-                RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN\n\
-                R1AkUTV74bU=\";\n\
-};\n\
-"
-#endif /* BIND_KEYS_H */
index d3f3d210b8680e96df72492a6cab73fdef450fbf..4f3dc96d305cf87a4db76118f3804a7f09558060 100644 (file)
@@ -57,6 +57,9 @@
 #if NTDDI_VERSION < 0x06020000
 #error Minimum Target environment is Windows 8 and Windows Server 2012
 #endif
+#if _MSC_VER <= 1910
+#error Minimum Visual Studio version is 2017 or higher
+#endif
 
 /* Define if you have the ANSI C header files.  */
 #define STDC_HEADERS 1
 
 char *getpassphrase(const char *);
 
-/*
- * Define to 1 if you want to use the DLZ "dlopen" driver
- * (which has the same name on windows even though it uses
- * LoadLibrary() instead of dlopen()).
- */
-#define ISC_DLZ_DLOPEN 1
-
 #define S_IFMT   _S_IFMT         /* file type mask */
 #define S_IFDIR  _S_IFDIR        /* directory */
 #define S_IFCHR  _S_IFCHR        /* character special */
@@ -258,7 +254,7 @@ typedef __int64 off_t;
 /*
  * Configure sensible arguments
  */
-@CONFIGARGS@
+@PACKAGE_CONFIGARGS@
 
 /*
  * Define if libxml2 is present
index 2526738c989ed7ed3f19e5b74fbcbc5cb1af15fb..592f40f169cd0ea73673064220b4ae3976b8114c 100644 (file)
@@ -7,23 +7,93 @@
 # See the COPYRIGHT file distributed with this work for additional
 # information regarding copyright ownership.
 
-AC_INIT(BIND, [9.17], [info@isc.org], [], [https://www.isc.org/downloads/])
-AC_PREREQ([2.60])
+#
+# Defining the version in m4 requires a bit of dancing around,
+# so the strings are properly concatenated, as you can't use
+# a shell variable in AC_INIT()
+#
+m4_define([bind_VERSION_MAJOR], 9)dnl
+m4_define([bind_VERSION_MINOR], 17)dnl
+m4_define([bind_VERSION_PATCH], 1)dnl
+m4_define([bind_VERSION_EXTRA], -dev)dnl
+m4_define([bind_DESCRIPTION], [(Development Release)])dnl
+m4_define([bind_SRCID], [m4_esyscmd_s([if test -f srcid; then cat srcid; else git rev-parse --short HEAD 2>/dev/null; fi])])dnl
+m4_define([bind_PKG_VERSION], [[bind_VERSION_MAJOR.bind_VERSION_MINOR.bind_VERSION_PATCH]bind_VERSION_EXTRA])dnl
+
+#
+# Autoconf initialization
+#
+AC_INIT([BIND], bind_PKG_VERSION, [info@isc.org], [], [https://www.isc.org/downloads/])
+AC_PREREQ(2.60)
+
+AC_DEFINE([PACKAGE_VERSION_MAJOR], ["][bind_VERSION_MAJOR]["], [BIND 9 Major part of the version])
+AC_DEFINE([PACKAGE_VERSION_MINOR], ["][bind_VERSION_MINOR]["], [BIND 9 Minor part of the version])
+AC_DEFINE([PACKAGE_VERSION_PATCH], ["][bind_VERSION_PATCH]["], [BIND 9 Patch part of the version])
+AC_DEFINE([PACKAGE_VERSION_EXTRA], ["][bind_VERSION_EXTRA]["], [BIND 9 Extra part of the version])
+AC_DEFINE([PACKAGE_DESCRIPTION], [m4_ifnblank(bind_DESCRIPTION, [" ]bind_DESCRIPTION["], [])], [An extra string to print after PACKAGE_STRING])
+AC_DEFINE([PACKAGE_SRCID], ["][bind_SRCID]["], [A short hash from git])
+
+# This value should be increased whenever changing the structure of
+# any object that will appear in a type 'map' master file (which
+# contains a working memory image of an RBT database), as loading 
+# an incorrect memory image produces an inconsistent and probably
+# nonfunctional database.  These structures include but are not
+# necessarily limited to dns_masterrawheader, rbtdb_file_header,
+# rbt_file_header, dns_rbtdb, dns_rbt, dns_rbtnode, rdatasetheader.
+#
+# Err on the side of caution: if anything in the RBTDB is changed,
+# bump the value.  Making map files unreadable protects the system
+# from instability; it's a feature not a bug.
+#
+# Whenever releasing a new major release of BIND9, set this value
+# back to 1.0 when releasing the first alpha.  Map files are *never*
+# compatible across major releases.
+AC_DEFINE([MAPAPI], ["2.0"], [BIND 9 MAPAPI Version])
+
+bind_CONFIGARGS="${ac_configure_args:-default}"
+AC_DEFINE_UNQUOTED([PACKAGE_CONFIGARGS], ["$bind_CONFIGARGS"], [Either 'defaults' or used ./configure options])
+
+AC_DEFINE([PACKAGE_BUILDER], ["make"], [make or Visual Studio])
+
+AC_CONFIG_SRCDIR([bin/named/main.c])
+AM_INIT_AUTOMAKE([foreign subdir-objects dist-xz -Wall -Werror])
+AM_SILENT_RULES([yes])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
 
 #
 # Enable maintainer mode by default, but allow to disable it in the CI
 #
 AM_MAINTAINER_MODE([enable])
 
-AC_CONFIG_HEADER(config.h)
-AC_CONFIG_MACRO_DIR([m4])
+# Set the library versions
+# https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
 
-AC_CANONICAL_HOST
+AX_BIND9_LIB_VERSION([bind9])
+AX_BIND9_LIB_VERSION([dns])
+AX_BIND9_LIB_VERSION([irs])
+AX_BIND9_LIB_VERSION([isc])
+AX_BIND9_LIB_VERSION([isccc])
+AX_BIND9_LIB_VERSION([isccfg])
+AX_BIND9_LIB_VERSION([ns])
 
 #
 # Enable system extensions to C and POSIX
 #
 AC_USE_SYSTEM_EXTENSIONS
+AC_CANONICAL_HOST
+
+#
+# Compiler compatibility flags
+#
+AC_PROG_CC_C99
+AC_PROG_CPP_WERROR
+
+#
+# Find the machine's endian flavor.
+#
+AC_C_BIGENDIAN
 
 #
 # Enable large file support
@@ -31,19 +101,14 @@ AC_USE_SYSTEM_EXTENSIONS
 AC_SYS_LARGEFILE
 AC_FUNC_FSEEKO
 
-LFS_CFLAGS=`getconf LFS_CFLAGS 2>/dev/null`
-LFS_LDFLAGS=`getconf LFS_LDFLAGS 2>/dev/null`
-LFS_LIBS=`getconf LFS_LIBS 2>/dev/null`
-
-AC_SUBST([LFS_CFLAGS])
-AC_SUBST([LFS_LDFLAGS])
-AC_SUBST([LFS_LIBS])
-
 # Enable RFC 3542 APIs on macOS
 AC_DEFINE([__APPLE_USE_RFC_3542], [1], [Select RFC3542 IPv6 API on macOS])
 
 AC_PROG_MAKE_SET
 
+# Checks for programs.
+m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) # call AM_PROG_AR only if available
+
 AC_PROG_LIBTOOL
 AS_IF([test -z "$LIBTOOL"],
       [AC_MSG_ERROR([The libtool script could not be found.])])
@@ -51,56 +116,76 @@ AC_PROG_INSTALL
 AC_PROG_LN_S
 AX_POSIX_SHELL
 
-AC_SUBST(STD_CINCLUDES)
-AC_SUBST(STD_CDEFINES)
-AC_SUBST(STD_CWARNINGS)
-AC_SUBST(CCOPT)
-AC_SUBST(CCNOOPT)
+# Initialize libtool
+LT_INIT([dlopen])
+
+LT_CONFIG_LTDL_DIR([libltdl])
+LTDL_INIT([recursive])
+AC_CONFIG_FILES([libltdl/Makefile])
 
 #
-# Use pkg-config
+# Set the default CFLAGS and CPPFLAGS
 #
+STD_CFLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow"
 
-PKG_PROG_PKG_CONFIG
-AS_IF([test -z "$PKG_CONFIG"],
-      [AC_MSG_ERROR([The pkg-config script could not be found or is too old.])])
+# These should be always errors
+STD_CFLAGS="$STD_CFLAGS -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes"
 
-AC_ARG_ENABLE(buffer_useinline,
-             AS_HELP_STRING([--enable-buffer-useinline],
-                            [define ISC_BUFFER_USEINLINE when compiling
-                               [default=yes]]),
-             if test yes = "${enable}"
-             then
-                     AC_DEFINE([ISC_BUFFER_USEINLINE], [1],
-                               [Define if you want to use inline buffers])
-             fi,
-             AC_DEFINE([ISC_BUFFER_USEINLINE], [1]))
+# Fortify the sources by default
+STD_CPPFLAGS="-D_FORTIFY_SOURCE=2"
 
-AC_ARG_ENABLE([warn_shadow],
-             [AS_HELP_STRING([--enable-warn-shadow],
-                             [turn on -Wshadow when compiling])])
+#
+# Additional compiler settings.
+#
+AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],
+                     [STD_CFLAGS="$STD_CFLAGS -fno-strict-aliasing"])
+AX_CHECK_COMPILE_FLAG([-fno-delete-null-pointer-checks],
+                     [STD_CFLAGS="$STD_CFLAGS -fno-delete-null-pointer-checks"])
+AX_CHECK_COMPILE_FLAG([-fdiagnostics-show-option],
+                     [STD_CFLAGS="$STD_CFLAGS -fdiagnostics-show-option"])
 
 AC_ARG_ENABLE([warn_error],
              [AS_HELP_STRING([--enable-warn-error],
-                             [turn on -Werror when compiling])])
+                             [turn on -Werror when compiling])],
+             [],[enable_warn_error=no])
+AS_IF([test "$enable_warn_error" = "yes"],
+      [STD_CFLAGS="$STD_CFLAGS -Werror"])
 
 AC_ARG_ENABLE([developer],
              [AS_HELP_STRING([--enable-developer],
                              [enable developer build settings])])
 
-XTARGETS=
 AS_IF([test "$enable_developer" = "yes"],
-      [STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1"
+      [STD_CPPFLAGS="$STD_CPPFLAGS -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1"
        test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes
        test "${enable_querytrace+set}" = set || enable_querytrace=yes
        test "${with_cmocka+set}" = set || with_cmocka=yes
        test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
-       test "${enable_warn_error+set}" = set || enable_warn_error=yes
-       test "${enable_warn_shadow+set}" = set || enable_warn_shadow=yes
        test "${with_zlib+set}" = set || with_zlib=yes
-       XTARGETS='${XTARGETS}'
+       test "${enable_warn_error+set}" = set || enable_warn_error=yes
        ])
-AC_SUBST([XTARGETS])
+
+AC_SUBST([STD_CFLAGS])
+AC_SUBST([STD_CPPFLAGS])
+
+#
+# Use pkg-config
+#
+
+PKG_PROG_PKG_CONFIG
+AS_IF([test -z "$PKG_CONFIG"],
+      [AC_MSG_ERROR([The pkg-config script could not be found or is too old.])])
+
+AC_ARG_ENABLE(buffer_useinline,
+             AS_HELP_STRING([--enable-buffer-useinline],
+                            [define ISC_BUFFER_USEINLINE when compiling
+                               [default=yes]]),
+             if test yes = "${enable}"
+             then
+                     AC_DEFINE([ISC_BUFFER_USEINLINE], [1],
+                               [Define if you want to use inline buffers])
+             fi,
+             AC_DEFINE([ISC_BUFFER_USEINLINE], [1]))
 
 AC_ARG_ENABLE([fuzzing],
              [AS_HELP_STRING([--enable-fuzzing=<afl|libfuzzer>],
@@ -155,119 +240,48 @@ no)
         ;;
 esac
 
-#
-# Make very sure that these are the first files processed by
-# config.status, since we use the processed output as the input for
-# AC_SUBST_FILE() substitutions in other files.
-#
-AC_CONFIG_FILES([make/rules make/includes])
-
-AC_PATH_PROG(AR, ar)
-ARFLAGS="cruv"
-AC_SUBST(AR)
-AC_SUBST(ARFLAGS)
-
-# The POSIX ln(1) program.  Non-POSIX systems may substitute
-# "copy" or something.
-LN=ln
-AC_SUBST(LN)
-
-case "$AR" in
-       "")
-               AC_MSG_ERROR([
-ar program not found.  Please fix your PATH to include the directory in
-which ar resides, or set AR in the environment with the full path to ar.
-])
-
-               ;;
-esac
-
 #
 # Perl is optional; it is used only by some of the system test scripts.
 # Note: the backtrace feature (see below) uses perl to build the symbol table,
 # but it still compiles without perl, in which case an empty table will be used.
 #
-AC_PATH_PROGS(PERL, perl5 perl)
-AC_SUBST(PERL)
+AC_PATH_PROGS([PERL], [perl5 perl])
+AC_SUBST([PERL])
+AM_CONDITIONAL([HAVE_PERL], [test -n "$PERL"])
 
-#
-# Python 3 is optional; it is used by the system test scripts.
-#
-testminvers='import sys
-if (sys.version_info < (3,5)):
-   exit(1)'
-
-default_with_python="python python3 python3.8 python3.7 python3.6 python3.5"
+AX_PERL_MODULE([Digest::HMAC])
+AM_CONDITIONAL([HAVE_PERLMOD_DIGEST_HMAC],
+              [test "$HAVE_PERLMOD_DIGEST__HMAC" = "yes"])
 
-AC_ARG_VAR([PYTHON], [path to python executable])
+AX_PERL_MODULE([File::Fetch])
+AM_CONDITIONAL([HAVE_PERLMOD_FILE_FETCH],
+              [test "$HAVE_PERLMOD_FILE__FETCH" = "yes"])
 
-AC_ARG_WITH([python],
-           AS_HELP_STRING([--with-python=PATH],
-                          [specify path to Python 3 interpreter]),
-           [], [with_python=$default_with_python])
+AX_PERL_MODULE([Net::DNS])
+AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS],
+              [test "$HAVE_PERLMOD_NET__DNS" = "yes"])
 
-AS_IF([test "$with_python" = "yes"],
-      [with_python=$default_with_python])
+AX_PERL_MODULE([Net::DNS::Nameserver])
+AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS_NAMESERVER],
+              [test "$HAVE_PERLMOD_NET__DNS__NAMESERVER" = "yes"])
 
-AS_IF([test "$with_python" = "no"],
-      [AC_MSG_CHECKING([for Python support])
-       unset PYTHON
-       AC_MSG_RESULT([disabled])],
-      [for p in $with_python
-       do
-        AS_CASE([$p],
-                [/*],[PYTHON="$p"])
+AX_PERL_MODULE([Time::HiRes])
+AM_CONDITIONAL([HAVE_PERLMOD_TIME_HIRES],
+              [test "$HAVE_PERLMOD_TIME__HIRES" = "yes"])
 
-        AC_PATH_PROG([PYTHON], [$p])
-        # Do not cache the result of the check from the previous line.  If the
-        # first found Python interpreter has missing module dependencies and
-        # the result of the above check is cached, subsequent module checks
-        # will erroneously keep on using the cached path to the first found
-        # Python interpreter instead of different ones.
-        unset ac_cv_path_PYTHON
-
-        AS_IF([test -z "$PYTHON"], [continue])
-
-        AC_MSG_CHECKING([if $PYTHON is Python version >= 3.5])
-        AS_IF(["$PYTHON" -c "$testminvers" 2>/dev/null],
-              [AC_MSG_RESULT([yes])],
-              [AC_MSG_RESULT([no])
-               unset PYTHON
-               continue])
+#
+# Python is optional, it is used only by some of the system test scripts.
+#
+AM_PATH_PYTHON([3.4], [], [:])
+AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"])
 
-        # Stop looking any further once we find a Python 3 interpreter
-        # satisfying all requirements.
-        break
-       done])
+AX_PYTHON_MODULE([dns])
+AM_CONDITIONAL([HAVE_PYMOD_DNS], [test "$HAVE_PYMOD_DNS" = "yes"])
 
 #
-# Make sure INSTALL uses an absolute path, else it will be wrong in all
-# Makefiles, since they use make/rules.in and INSTALL will be adjusted by
-# configure based on the location of the file where it is substituted.
-# Since in BIND9 INSTALL is only substituted into make/rules.in, an immediate
-# subdirectory of install-sh, This relative path will be wrong for all
-# directories more than one level down from install-sh.
+# xsltproc is optional, it is used only by system test scripts.
 #
-case "$INSTALL" in
-       /*)
-               ;;
-       *)
-               #
-               # Not all systems have dirname.
-               #
-               changequote({, })
-               ac_dir="`echo $INSTALL | sed 's%/[^/]*$%%'`"
-               changequote([, ])
-
-               ac_prog="`echo $INSTALL | sed 's%.*/%%'`"
-               test "X$ac_dir" = "X$ac_prog" && ac_dir=.
-               test -d "$ac_dir" && ac_dir="`(cd \"$ac_dir\" && pwd)`"
-               INSTALL="$ac_dir/$ac_prog"
-               ;;
-esac
-
-AC_PROG_CC
-AC_PROG_CC_C99
+AC_PATH_PROG([XSLTPROC], [xsltproc])
 
 #
 # Using Solaris linker with gcc on Solaris breaks Thread Local Storage
@@ -280,63 +294,25 @@ AS_CASE([$host],
                  ])
        ])
 
-#
-# CCNOOPT defaults to -O0 on gcc and disables optimization when is last
-#
-if test "X$CCNOOPT" = "X" -a "X$GCC" = "Xyes"; then
-       CCNOOPT="-O0"
-fi
-
 AC_HEADER_STDC
 
-AC_CHECK_HEADERS(fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h,,,
-[$ac_includes_default
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-])
+AC_CHECK_HEADERS([fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sys/select.h sys/param.h sys/sysctl.h net/if6.h sys/socket.h net/route.h linux/netlink.h linux/rtnetlink.h], [], [],
+                [$ac_includes_default
+                 #ifdef HAVE_SYS_PARAM_H
+                 # include <sys/param.h>
+                 #endif
+                 #ifdef HAVE_SYS_SOCKET_H
+                 # include <sys/socket.h>
+                 #endif
+                ])
 
 #
 # Check for thread local storage
 #
-AC_CHECK_HEADERS([threads.h],
-                [
-                    AC_MSG_CHECKING([for C11 Thread-Local Storage using thread_local])
-                    AC_COMPILE_IFELSE(
-                        [AC_LANG_PROGRAM(
-                             [
-                                 #include <threads.h>
-                             ],[
-                                 static thread_local int tls = 0;
-                                 return (tls);
-                             ])
-                        ],[
-                            AC_MSG_RESULT([yes])
-                            AC_DEFINE([HAVE_THREAD_LOCAL],[1],[Define if thread_local keyword is available])
-                            AC_DEFINE([HAVE_TLS],[1],[Define if Thread-Local Storage is available])
-                        ],[
-                            AC_MSG_ERROR([Thread Local Storage support required, update your toolchain to build BIND 9])
-                        ])
-                ],[
-                    AC_MSG_CHECKING([for Thread-Local Storage using __thread])
-                    AC_COMPILE_IFELSE(
-                        [AC_LANG_PROGRAM(
-                             [
-                             ],[
-                                 static __thread int tls = 0;
-                                 return (tls);
-                             ])
-                        ],[
-                            AC_MSG_RESULT([yes])
-                            AC_DEFINE([HAVE___THREAD],[1],[Define if __thread keyword is available])
-                            AC_DEFINE([HAVE_TLS],[1],[Define if Thread-Local Storage is available])
-                        ],[
-                            AC_MSG_ERROR([Thread Local Storage support required, update your toolchain to build BIND 9])
-                        ])
-                ])
+AC_CHECK_HEADERS([threads.h])
+AX_TLS([AS_IF([test "$ac_cv_tls" != "thread_local"],
+             [AC_DEFINE_UNQUOTED([thread_local], [$ac_cv_tls], [Define if the compiler uses a different keyword than thread_local for TLS variables])])],
+       [AC_MSG_ERROR([Thread Local Storage support required, update your toolchain to build BIND 9])])
 
 AC_C_CONST
 AC_C_INLINE
@@ -381,8 +357,8 @@ AC_CHECK_FUNCS(mmap)
 #
 # Older versions of HP/UX don't define seteuid() and setegid()
 #
-AC_CHECK_FUNCS(seteuid setresuid)
-AC_CHECK_FUNCS(setegid setresgid)
+AC_CHECK_FUNCS([seteuid setresuid])
+AC_CHECK_FUNCS([setegid setresgid])
 
 AC_TYPE_SIZE_T
 AC_TYPE_SSIZE_T
@@ -415,16 +391,7 @@ AC_COMPILE_IFELSE(
 #
 # check for GCC noreturn attribute
 #
-AC_MSG_CHECKING(for GCC noreturn attribute)
-AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
-       [AC_MSG_RESULT(yes)
-               ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
-               ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST __attribute__((noreturn))"],
-       [AC_MSG_RESULT(no)
-               ISC_PLATFORM_NORETURN_PRE="#define ISC_PLATFORM_NORETURN_PRE"
-               ISC_PLATFORM_NORETURN_POST="#define ISC_PLATFORM_NORETURN_POST"])
-AC_SUBST(ISC_PLATFORM_NORETURN_PRE)
-AC_SUBST(ISC_PLATFORM_NORETURN_POST)
+AX_GCC_FUNC_ATTRIBUTE([noreturn])
 
 #
 # check if we have kqueue
@@ -459,22 +426,11 @@ AC_ARG_ENABLE([devpoll],
 AS_IF([test "$enable_devpoll" = "yes"],
       [AC_CHECK_HEADERS([sys/devpoll.h devpoll.h])])
 
-#
-# Find the machine's endian flavor.
-#
-AC_C_BIGENDIAN
-
 #
 # GeoIP support?
 #
 # Should be on by default if libmaxminddb exists.
 #
-AC_ARG_WITH([geoip2],
-           [AS_HELP_STRING([--with-geoip2],
-                           [deprecated, use --with-maxminddb])],
-           [AC_MSG_WARN([--with-geoip2 is DEPRECATED and will be removed in a future release, use --with-maxminddb instead])],
-           [with_geoip2="auto"])
-
 AC_ARG_ENABLE([geoip],
              [AS_HELP_STRING([--disable-geoip],
                              [support GeoIP2 geolocation ACLs if available [default=yes]])],
@@ -483,35 +439,27 @@ AC_ARG_ENABLE([geoip],
 AC_ARG_WITH([maxminddb],
            [AS_HELP_STRING([--with-maxminddb=PATH],
                            [Build with MaxMind GeoIP2 support (auto|yes|no|path) [default=auto]])],
-           [], [with_maxminddb="$with_geoip2"])
+           [], [with_maxminddb="auto"])
 
-GEOIP2LINKSRCS=
-GEOIP2LINKOBJS=
 AS_IF([test "$enable_geoip" = "yes"],
       [AS_CASE([$with_maxminddb],
               [no],[AC_MSG_ERROR([Use '--disable-geoip' to disable the GeoIP])],
               [auto],[PKG_CHECK_MODULES([MAXMINDDB], [libmaxminddb],
                                         [AC_DEFINE([HAVE_GEOIP2], [1], [Build with GeoIP2 support])
                                          PKG_CHECK_VAR([MAXMINDDB_PREFIX], [libmaxminddb], [prefix], [], [AC_MSG_ERROR([libmaxminddb prefix not found in pkg-config; set MAXMINDDB_PREFIX in the environment])])
-                                         GEOIP2LINKSRCS='${GEOIP2LINKSRCS}'
-                                         GEOIP2LINKOBJS='${GEOIP2LINKOBJS}'
                                         ],[:])],
               [yes],[PKG_CHECK_MODULES([MAXMINDDB], [libmaxminddb],
                                        [AC_DEFINE([HAVE_GEOIP2], [1], [Build with GeoIP2 support])
                                         PKG_CHECK_VAR([MAXMINDDB_PREFIX], [libmaxminddb], [prefix], [], [AC_MSG_ERROR([libmaxminddb prefix not found in pkg-config; set MAXMINDDB_PREFIX in the environment])])
-                                        GEOIP2LINKSRCS='${GEOIP2LINKSRCS}'
-                                        GEOIP2LINKOBJS='${GEOIP2LINKOBJS}'
                                        ])],
               [ # default
                   AX_SAVE_FLAGS([maxminddb])
                   MAXMINDDB_CFLAGS="-I$with_maxminddb/include"
                   MAXMINDDB_LIBS="-L$with_maxminddb/lib"
                   CFLAGS="$CFLAGS $MAXMINDDB_CFLAGS"
-                  LDFLAGS="$LDFLAGS $MAXMINDDB_LIBS"
+                  LIBS="$LIBS $MAXMINDDB_LIBS"
                   AC_SEARCH_LIBS([MMDB_open], [maxminddb],
                                  [AC_DEFINE([HAVE_GEOIP2], [1], [Build with GeoIP2 support])
-                                  GEOIP2LINKSRCS='${GEOIP2LINKSRCS}'
-                                  GEOIP2LINKOBJS='${GEOIP2LINKOBJS}'
                                   MAXMINDDB_LIBS="$MAXMINDDB_LIBS $ac_cv_search_mmdb_open"
                                   AC_MSG_NOTICE([GeoIP2 default database path set to $with_maxminddb/share/GeoIP])
                                   AS_VAR_COPY([MAXMINDDB_PREFIX], [$with_maxminddb])
@@ -522,15 +470,10 @@ AS_IF([test "$enable_geoip" = "yes"],
        AC_ARG_VAR([MAXMINDDB_PREFIX], [value of prefix for MAXMINDDB, overriding pkg-config])
 ])
 
+AM_CONDITIONAL([HAVE_GEOIP2], [test -n "$MAXMINDDB_LIBS"])
+
 AC_SUBST([MAXMINDDB_CFLAGS])
 AC_SUBST([MAXMINDDB_LIBS])
-AC_SUBST([GEOIP2LINKSRCS])
-AC_SUBST([GEOIP2LINKOBJS])
-
-#
-# Do we have arc4random(), etc ?
-#
-AC_CHECK_FUNCS(arc4random arc4random_buf arc4random_uniform getrandom)
 
 AX_PTHREAD
 
@@ -584,7 +527,7 @@ AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np])
 AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
 
 # libuv
-AC_MSG_CHECKING(for libuv)
+AC_MSG_CHECKING([for libuv])
 PKG_CHECK_MODULES([LIBUV], [libuv >= 1.0.0], [],
                  [AC_MSG_ERROR([libuv not found])])
 AX_SAVE_FLAGS([libuv])
@@ -595,6 +538,7 @@ LIBS="$LIBS $LIBUV_LIBS"
 # Those functions are only provided in newer versions of libuv, we'll be emulating them
 # for now
 AC_CHECK_FUNCS([uv_handle_get_data uv_handle_set_data uv_import])
+AX_RESTORE_FLAGS([libuv])
 
 #
 # flockfile is usually provided by pthreads
@@ -606,8 +550,6 @@ AC_CHECK_FUNCS([flockfile getc_unlocked])
 #
 AC_CHECK_FUNCS([sysconf])
 
-AC_SUBST(ALWAYS_DEFINES)
-
 #
 # Do we want to use pthread rwlock?
 #
@@ -751,12 +693,10 @@ AX_RESTORE_FLAGS([openssl])
 AC_SUBST([OPENSSL_CFLAGS])
 AC_SUBST([OPENSSL_LIBS])
 
-PKCS11_TOOLS=
-PKCS11_TEST=
 #
 # was --enable-native-pkcs11 specified?
 #
-AC_ARG_ENABLE(native-pkcs11,
+AC_ARG_ENABLE([native-pkcs11],
              AS_HELP_STRING([--enable-native-pkcs11],
                             [use native PKCS11 for public-key crypto [default=no]]),
              [:], [enable_native_pkcs11="no"])
@@ -764,26 +704,17 @@ AC_ARG_ENABLE(native-pkcs11,
 AC_MSG_CHECKING([for PKCS11 for Public-Key Cryptography])
 AS_CASE([$enable_native_pkcs11],
        [no],[AC_MSG_RESULT([no])],
-       [yes],[PKCS11_TOOLS=pkcs11
-              PKCS11_TEST=pkcs11
-              CRYPTO=pkcs11
-              AS_IF([$use_threads],
-                    [:],
-                    [AC_MSG_ERROR([PKCS11 requires threading support])])
+       [yes],[CRYPTO=pkcs11
               AC_MSG_RESULT([yes])
               AC_CHECK_FUNCS([getpassphrase])
              ])
-AC_SUBST([PKCS11_TEST])
-AC_SUBST([PKCS11_TOOLS])
+AM_CONDITIONAL([HAVE_PKCS11], [test "$CRYPTO" = "pkcs11"])
 
 AC_SUBST([CRYPTO])
 AS_CASE([$CRYPTO],
        [pkcs11],[AC_DEFINE([USE_PKCS11], [1], [define if PKCS11 is used for Public-Key Cryptography])],
        [AC_DEFINE([USE_OPENSSL], [1], [define if OpenSSL is used for Public-Key Cryptography])])
 
-# preparation for automake
-# AM_CONDITIONAL([PKCS11_TOOLS], [test "$with_native_pkcs11" = "yes"])
-
 #
 # was --with-pkcs11 specified?
 #
@@ -797,301 +728,69 @@ AS_CASE([$with_pkcs11],
        [no|undefined],[with_pkcs11="undefined"])
 AC_DEFINE_UNQUOTED([PK11_LIB_LOCATION], ["$with_pkcs11"], [define the default PKCS11 library path])
 
-# for PKCS11 benchmarks
-
-have_clock_gt=no
-AC_CHECK_FUNC(clock_gettime,have_clock_gt=yes,)
-if test "no" = "$have_clock_gt"; then
-       AC_CHECK_LIB(rt,clock_gettime,have_clock_gt=rt,)
-fi
-
-if test "no" != "$have_clock_gt"; then
-       AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if clock_gettime is available.])
-fi
-
-if test "rt" = "$have_clock_gt"; then
-       LIBS="-lrt $LIBS"
-fi
+AC_CHECK_FUNCS([clock_gettime])
 
-AC_MSG_CHECKING(for GSSAPI library)
-AC_ARG_WITH(gssapi,
-           AS_HELP_STRING([--with-gssapi=[PATH|[/path/]krb5-config]],
+AC_ARG_WITH([gssapi],
+           [AS_HELP_STRING([--with-gssapi=[PATH|[/path/]krb5-config]],
                           [Specify path for system-supplied GSSAPI
-                               [default=auto]]),
-           use_gssapi="$withval", use_gssapi="auto")
-
-# first try using krb5-config, if that does not work then fall back to "yes" method.
-
-case "$use_gssapi" in
-*/krb5-config|krb5-config)
-    AC_MSG_RESULT(trying $use_gssapi)
-    if test krb5-config = "$use_gssapi"
-    then
-       AC_PATH_PROG(KRB5_CONFIG, $use_gssapi)
-    else
-       KRB5_CONFIG="$use_gssapi"
-    fi
-    gssapi_cflags=`$KRB5_CONFIG --cflags gssapi`
-    gssapi_libs=`$KRB5_CONFIG --libs gssapi`
-    saved_cppflags="$CPPFLAGS"
-    CPPFLAGS="$gssapi_cflags $CPPFLAGS"
-    AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
-       [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"])
-    if test "" = "$ISC_PLATFORM_GSSAPIHEADER"; then
-       AC_MSG_RESULT([krb5-config: gssapi.h not found])
-       CPPFLAGS="$saved_cppflags"
-       use_gssapi="yes"
-    else
-       AC_CHECK_HEADERS(krb5/krb5.h krb5.h,
-           [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
-       if test "" = "$ISC_PLATFORM_KRB5HEADER"; then
-           AC_MSG_RESULT([krb5-config: krb5.h not found])
-           CPPFLAGS="$saved_cppflags"
-           use_gssapi="yes"
-       else
-           CPPFLAGS="$saved_cppflags"
-           saved_libs="$LIBS"
-           LIBS=$gssapi_libs
-           AC_MSG_CHECKING([krb5-config linking as $LIBS])
-           AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()],
-               gssapi_linked=yes, gssapi_linked=no)
-           case $gssapi_linked in
-               yes) AC_MSG_RESULT([krb5-config: linked]);;
-               no)  AC_MSG_RESULT([krb5-config: could not determine proper GSSAPI linkage])
-                   use_gssapi="yes"
-                   ;;
-           esac
-           LIBS=$saved_libs
-       fi
-    fi
-    if test "yes" = "$use_gssapi"; then
-       AC_MSG_CHECKING([for GSSAPI library, non krb5-config method])
-    fi
-    ;;
-esac
-
-case "$host" in
-*darwin*)
-       if test "yes" = "$use_gssapi" -o "auto" = "$use_gssapi"
-       then
-               use_gssapi=framework
-       fi
-       ;;
-esac
-
-# gssapi is just the framework, we really require kerberos v5, so
-# look for those headers (the gssapi headers must be there, too)
-# The problem with this implementation is that it doesn't allow
-# for the specification of gssapi and krb5 headers in different locations,
-# which probably ought to be fixed although fixing might raise the issue of
-# trying to build with incompatible versions of gssapi and krb5.
-if test "yes" = "$use_gssapi" -o "auto" = "$use_gssapi"
-then
-       # first, deal with the obvious
-       if test \( -f /usr/include/kerberosv5/krb5.h -o \
-                  -f /usr/include/krb5/krb5.h -o \
-                  -f /usr/include/krb5.h \)   -a \
-               \( -f /usr/include/gssapi.h -o \
-                  -f /usr/include/gssapi/gssapi.h \)
-       then
-               use_gssapi=/usr
-       else
-           krb5dirs="/usr/local /usr/local/krb5 /usr/local/kerberosv5 /usr/local/kerberos /usr/pkg /usr/krb5 /usr/kerberosv5 /usr/kerberos /usr"
-           for d in $krb5dirs
-           do
-               if test -f $d/include/gssapi/gssapi_krb5.h -o \
-                       -f $d/include/krb5.h
-               then
-                       if test -f $d/include/gssapi/gssapi.h -o \
-                               -f $d/include/gssapi.h
-                       then
-                               use_gssapi=$d
-                               break
-                       fi
-               fi
-           done
-           if test "auto" = "$use_gssapi"
-           then
-               use_gssapi="no"
-           fi
-       fi
-fi
-
-case "$use_gssapi" in
-       no)
-               AC_MSG_RESULT(disabled)
-               USE_GSSAPI=''
-               ;;
-       yes)
-               AC_MSG_ERROR([--with-gssapi must specify a path])
-               ;;
-       */krb5-config|krb5-config)
-               USE_GSSAPI='-DGSSAPI'
-               DST_GSSAPI_INC="$gssapi_cflags"
-               DNS_GSSAPI_LIBS="$gssapi_libs"
-               ;;
-       framework)
-               USE_GSSAPI='-DGSSAPI'
-               ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <Kerberos/Kerberos.h>"
-               ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <Kerberos/Kerberos.h>"
-               DNS_GSSAPI_LIBS="-framework Kerberos"
-               AC_MSG_RESULT(framework)
-               ;;
-
-       *)
-               AC_MSG_RESULT(looking in $use_gssapi/lib)
-               USE_GSSAPI='-DGSSAPI'
-               saved_cppflags="$CPPFLAGS"
-               CPPFLAGS="-I$use_gssapi/include $CPPFLAGS"
-               AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
-                   [ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"
-                    gssapi_hack="#include <$ac_header>"])
-
-               if test "" = "$ISC_PLATFORM_GSSAPIHEADER"; then
-                   AC_MSG_ERROR([gssapi.h not found])
-               fi
-
-               AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
-                   [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"
-                    gssapi_krb5_hack="#include <$ac_header>"])
-
-               AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
-                   [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"
-                   krb5_hack="#include <$ac_header>"])
-
-               if test "" = "$ISC_PLATFORM_KRB5HEADER"; then
-                   AC_MSG_ERROR([krb5.h not found])
-               fi
-
-               #
-               # XXXDCL This probably doesn't work right on all systems.
-               # It will need to be worked on as problems become evident.
-               #
-               # Essentially the problems here relate to two different
-               # areas.  The first area is building with either KTH
-               # or MIT Kerberos, particularly when both are present on
-               # the machine.  The other is static versus dynamic linking.
-               #
-               # On the KTH vs MIT issue, Both have libkrb5 that can mess
-               # up the works if one implementation ends up trying to
-               # use the other's krb.  This is unfortunately a situation
-               # that very easily arises.
-               #
-               # Dynamic linking when the dependency information is built
-               # into MIT's libgssapi_krb5 or KTH's libgssapi magically makes
-               # all such problems go away, but when that setup is not
-               # present, because either the dynamic libraries lack
-               # dependencies or static linking is being done, then the
-               # problems start to show up.
-               saved_libs="$LIBS"
-               for TRY_LIBS in \
-                   "-lgssapi_krb5" \
-                   "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
-                   "-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv" \
-                   "-lgssapi" \
-                   "-lgssapi -lkrb5 -ldes -lcrypt -lasn1 -lroken -lcom_err" \
-                   "-lgssapi -lkrb5 -lcrypt -lasn1 -lroken -lcom_err" \
-                   "-lgssapi -lkrb5 -lgssapi_krb5 -lcrypt -lasn1 -lroken -lcom_err" \
-                   "-lgssapi -lkrb5 -lhx509 -lcrypt -lasn1 -lroken -lcom_err" \
-                   "-lgss -lkrb5"
-               do
-                   # Note that this does not include $saved_libs, because
-                   # on FreeBSD machines this configure script has added
-                   # -L/usr/local/lib to LIBS, which can make the
-                   # -lgssapi_krb5 test succeed with shared libraries even
-                   # when you are trying to build with KTH in /usr/lib.
-                   if test "/usr" = "$use_gssapi"
-                   then
-                           LIBS="$TRY_LIBS $ISC_OPENSSL_LIBS"
-                   else
-                           LIBS="-L$use_gssapi/lib $TRY_LIBS $ISC_OPENSSL_LIBS"
-                   fi
-                   AC_MSG_CHECKING(linking as $TRY_LIBS)
-                   AC_TRY_LINK([
-#include <sys/types.h>
-$gssapi_hack
-$gssapi_krb5_hack
-$krb5_hack
-                               ] , [gss_acquire_cred(NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);krb5_init_context(NULL);
-#if defined(HAVE_GSSAPI_KRB5_H) || defined(HAVE_GSSAPI_GSSAPI_KRB5_H)
-gsskrb5_register_acceptor_identity(NULL);
-#endif],
-                               gssapi_linked=yes, gssapi_linked=no)
-                   case $gssapi_linked in
-                   yes) AC_MSG_RESULT(yes); break ;;
-                   no)  AC_MSG_RESULT(no) ;;
-                   esac
-               done
-
-               CPPFLAGS="$saved_cppflags"
-
-               case $gssapi_linked in
-               no) AC_MSG_ERROR(could not determine proper GSSAPI linkage) ;;
-               esac
-
-               #
-               # XXXDCL Major kludge.  Tries to cope with KTH in /usr/lib
-               # but MIT in /usr/local/lib and trying to build with KTH.
-               # /usr/local/lib can end up earlier on the link lines.
-               # Like most kludges, this one is not only inelegant it
-               # is also likely to be the wrong thing to do at least as
-               # many times as it is the right thing.  Something better
-               # needs to be done.
-               #
-               if test "/usr" = "$use_gssapi" -a \
-                       -f /usr/local/lib/libkrb5.a; then
-                   FIX_KTH_VS_MIT=yes
-               fi
-
-               case "$FIX_KTH_VS_MIT" in
-               yes)
-                   case "$enable_static_linking" in
-                   yes) gssapi_lib_suffix=".a"  ;;
-                   *)   gssapi_lib_suffix=".so" ;;
-                   esac
-
-                   for lib in $LIBS; do
-                       case $lib in
-                       -L*)
-                           ;;
-                       -l*)
-                           new_lib=`echo $lib |
-                                    sed -e s%^-l%$use_gssapi/lib/lib% \
-                                        -e s%$%$gssapi_lib_suffix%`
-                           NEW_LIBS="$NEW_LIBS $new_lib"
-                           ;;
-                       *)
-                          AC_MSG_ERROR([KTH vs MIT Kerberos confusion!])
-                           ;;
-                       esac
-                   done
-                   LIBS="$NEW_LIBS"
-                   ;;
-               esac
-
-               DST_GSSAPI_INC="-I$use_gssapi/include"
-               DNS_GSSAPI_LIBS="$LIBS"
-
-               AC_MSG_RESULT(using GSSAPI from $use_gssapi/lib and $use_gssapi/include)
-               LIBS="$saved_libs"
-               ;;
-esac
-
-AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
-AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
-AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
-AC_SUBST(ISC_PLATFORM_KRB5HEADER)
-
-AC_SUBST(USE_GSSAPI)
-AC_SUBST(DST_GSSAPI_INC)
-AC_SUBST(DNS_GSSAPI_LIBS)
-DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS"
-
-#
-# Applications linking with libdns also need to link with these libraries.
-#
-
-AC_SUBST(DNS_CRYPTO_LIBS)
+                               [default=auto]])],
+           [], [with_gssapi="auto"])
+
+KRB5_CONFIG=
+AS_CASE([$with_gssapi],
+       [no],[AC_MSG_CHECKING([for GSSAPI support])
+             AC_MSG_RESULT([no])],
+       [yes],[AC_PATH_PROG([KRB5_CONFIG], [krb5-config])
+              AS_IF([test -z "$KRB5_CONFIG"],
+                    [AC_MSG_ERROR([krb5-config required but not found])])],
+       [auto],[AC_PATH_PROG([KRB5_CONFIG], [krb5-config])],
+       [*krb5-config*],[KRB5_CONFIG="$with_gssapi"],
+       [AC_MSG_ERROR([--with-gssapi requires yes|no|auto|/path/to/krb5-config])])
+
+GSSAPI_CFLAGS=
+GSSAPI_LIBS=
+KRB5_CFLAGS=
+KRB5_LIBS=
+AS_IF([test -n "$KRB5_CONFIG"],
+      [AC_MSG_CHECKING([for gssapi libraries])
+       AX_SAVE_FLAGS([gssapi])
+       GSSAPI_CFLAGS=`"$KRB5_CONFIG" --cflags gssapi`
+       GSSAPI_LIBS=`"$KRB5_CONFIG" --libs gssapi`
+       CFLAGS="$CFLAGS $GSSAPI_CFLAGS"
+       LIBS="$LIBS $GSSAPI_LIBS"
+       AC_MSG_RESULT([$GSSAPI_CFLAGS $GSSAPI_LIBS])
+       AC_CHECK_HEADERS([gssapi/gssapi.h], [],
+                       [AC_CHECK_HEADERS([gssapi.h], [],
+                                         [AC_MSG_ERROR([neither gssapi/gssapi.h nor gssapi.h found])])])
+       AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],
+                       [AC_CHECK_HEADERS([gssapi_krb5.h], []
+                                         [AC_MSG_ERROR([neither gssapi/gssapi_krb5.h nor gssapi_krb5.h found])])])
+       AC_CHECK_FUNCS([gss_acquire_cred],[],
+                     [AC_MSG_ERROR([linking with $GSSAPI_LIBS does not work])])
+       AX_RESTORE_FLAGS([gssapi])
+
+       AC_MSG_CHECKING([for krb5 libraries])
+       AX_SAVE_FLAGS([krb5])
+       KRB5_CFLAGS=`"$KRB5_CONFIG" --cflags krb5`
+       KRB5_LIBS=`$KRB5_CONFIG --libs krb5`
+       CFLAGS="$CFLAGS $KRB5_CFLAGS"
+       LIBS="$CFLAGS $KRB5_LIBS"
+       AC_MSG_RESULT([$KRB5_CFLAGS $KRB5_LIBS])
+       AC_CHECK_HEADERS([krb5/krb5.h], [],
+                       [AC_CHECK_HEADERS([krb5.h], [],
+                                         [AC_MSG_ERROR([neither krb5/krb5.h nor krb5 found])])])
+       AC_CHECK_FUNCS([krb5_init_context], [],
+                     [AC_MSG_ERROR([linking with $KRB5_LIBS failed])])
+       AX_RESTORE_FLAGS([krb5])
+
+       AC_DEFINE([HAVE_GSSAPI], [1], [Define to 1 if you have the Kerberos Framework available])
+       # kludge to silence compiler warnings which recommend use of GSS.framework on macOS
+       AS_CASE([$host],[*-darwin*],[CFLAGS="$CFLAGS -Wno-deprecated-declarations"])])
+AM_CONDITIONAL([HAVE_GSSAPI], [test -n "$GSSAPI_LIBS"])
+AC_SUBST([GSSAPI_CFLAGS])
+AC_SUBST([GSSAPI_LIBS])
+AC_SUBST([KRB5_CFLAGS])
+AC_SUBST([KRB5_LIBS])
 
 #
 # was --with-lmdb specified?
@@ -1129,18 +828,7 @@ AS_IF([test "$ac_lib_lmdb_found" = "yes"],
 
 AC_SUBST([LMDB_CFLAGS])
 AC_SUBST([LMDB_LIBS])
-#AM_CONDITIONAL([HAVE_LMDB], [test "$ac_lib_lmdb_found" = "yes"])
-
-NZD_TOOLS=
-NZDSRCS=
-NZDTARGETS=
-AS_IF([test -n "$LMDB_LIBS"],
-      [NZD_TOOLS="nzd"
-       NZDSRCS='${NZDSRCS}'
-       NZDTARGETS='${NZDTARGETS}'])
-AC_SUBST([NZD_TOOLS])
-AC_SUBST([NZDSRCS])
-AC_SUBST([NZDTARGETS])
+AM_CONDITIONAL([HAVE_LMDB], [test -n "$LMDB_LIBS"])
 
 #
 # was --with-libxml2 specified?
@@ -1159,14 +847,7 @@ AS_CASE([$with_libxml2],
                                 [AC_DEFINE([HAVE_LIBXML2], [1], [Use libxml2 library])])],
        [AC_MSG_ERROR([Specifying libxml2 installation path is not supported, adjust PKG_CONFIG_PATH instead])])
 
-#
-# DEPRECATED
-#
-AC_ARG_WITH([libjson],
-           [AS_HELP_STRING([--with-libjson],
-                           [deprecated, use --with-json-c])],
-           [AC_MSG_WARN([--with-libjson is DEPRECATED and will be removed in a future release, use --with-json-c instead])],
-           [with_libjson="detect"])
+AM_CONDITIONAL([HAVE_LIBXML2], [test -n "$LIBXML2_LIBS"])
 
 #
 # was --with-json-c specified?
@@ -1174,7 +855,7 @@ AC_ARG_WITH([libjson],
 AC_ARG_WITH([json-c],
            [AS_HELP_STRING([--with-json-c],
                            [build with json-c library [yes|no|detect] (default is detect)])],
-           [], [with_json_c="$with_libjson"])
+           [], [with_json_c="detect"])
 
 AS_CASE([$with_json_c],
        [no],[],
@@ -1186,14 +867,19 @@ AS_CASE([$with_json_c],
        [AC_MSG_ERROR([Specifying json-c installation path is not supported, adjust PKG_CONFIG_PATH instead])]
        )
 
+AM_CONDITIONAL([HAVE_JSON_C], [test -n "$JSON_C_LIBS"])
+
 AC_SUBST([JSON_C_CFLAGS])
 AC_SUBST([JSON_C_LIBS])
 
+#
+# was --with-zlib specified?
+#
 AC_ARG_WITH([zlib],
-           [AS_HELP_STRING([--with-zlib],
-                           [build with zlib for HTTP compression
-                            [default=yes]])],
-          [], with_zlib="auto")
+           [AS_HELP_STRING([--with-zlib],
+                           [build with zlib for HTTP compression
+                            [default=yes]])],
+           [], with_zlib="auto")
 
 AS_CASE([$with_zlib],
        [no],[],
@@ -1206,111 +892,6 @@ AS_CASE([$with_zlib],
 AC_SUBST([ZLIB_CFLAGS])
 AC_SUBST([ZLIB_LIBS])
 
-#
-# In solaris 10, SMF can manage named service
-#
-AC_CHECK_LIB(scf, smf_enable_instance)
-
-#
-# Additional compiler settings.
-#
-MKDEPCC="$CC"
-
-MKDEPCFLAGS="-M"
-AS_CASE([$host],
-       [*-solaris*],[
-           AS_IF([test "$GCC" != "yes"],
-                 [MKDEPCFLAGS="-xM"])])
-
-AS_IF([test "$GCC" = "yes"],
-      [STD_CWARNINGS="$STD_CWARNINGS -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -Wno-missing-field-initializers"]
-      )
-
-AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],
-                     [STD_CWARNINGS="$STD_CWARNINGS -fno-strict-aliasing"])
-AX_CHECK_COMPILE_FLAG([-fno-delete-null-pointer-checks],
-                     [STC_CWARNINGS="$STD_CWARNINGS -fno-delete-null-pointer-checks"])
-AS_IF([test "$enable_warn_shadow" = "yes"],
-      [AX_CHECK_COMPILE_FLAG([-Wshadow],
-                            [STD_CWARNINGS="$STD_CWARNINGS -Wshadow"])])
-AS_IF([test "$enable_warn_error" = "yes"],
-      [AX_CHECK_COMPILE_FLAG([-Werror],
-                            [STD_CWARNINGS="$STD_CWARNINGS -Werror"])])
-
-AC_SUBST([MKDEPCC])
-AC_SUBST([MKDEPCFLAGS])
-AC_SUBST([MKDEPPROG])
-
-#
-# -lxnet buys us one big porting headache...  standards, gotta love 'em.
-#
-# AC_CHECK_LIB(xnet, socket, ,
-#    AC_CHECK_LIB(socket, socket)
-# )
-#
-# Use this for now, instead:
-#
-case "$host" in
-       *-linux*)
-               ;;
-       *)
-               AC_CHECK_LIB(socket, socket)
-               AC_CHECK_LIB(nsl, inet_addr)
-               ;;
-esac
-
-#
-# Work around Solaris's select() limitations.
-#
-case "$host" in
-       *-solaris2.[[89]]|*-solaris2.1?)
-       AC_DEFINE(FD_SETSIZE, 65536,
-                 [Solaris hack to get select_large_fdset.])
-       ;;
-esac
-
-#
-# Purify support
-#
-AC_MSG_CHECKING(whether to use purify)
-AC_ARG_WITH(purify,
-           AS_HELP_STRING([--with-purify[=PATH]],[use Rational purify]),
-           use_purify="$withval", use_purify="no")
-
-case "$use_purify" in
-       no)
-               ;;
-       yes)
-               AC_PATH_PROG(purify_path, purify, purify)
-               ;;
-       *)
-               purify_path="$use_purify"
-               ;;
-esac
-
-case "$use_purify" in
-       no)
-               AC_MSG_RESULT(no)
-               PURIFY=""
-               ;;
-       *)
-               if test -f "$purify_path" || test purify = "$purify_path"; then
-                       AC_MSG_RESULT($purify_path)
-                       PURIFYFLAGS="`echo $PURIFYOPTIONS`"
-                       PURIFY="$purify_path $PURIFYFLAGS"
-               else
-                       AC_MSG_ERROR([$purify_path not found.
-
-Please choose the proper path with the following command:
-
-    configure --with-purify=PATH
-])
-               fi
-               ;;
-esac
-
-AC_SUBST(PURIFY)
-
 #
 # Google/Great Performance Tools CPU Profiler
 #
@@ -1339,39 +920,7 @@ AC_CHECK_HEADERS([execinfo.h],
                 [AC_SEARCH_LIBS([backtrace], [execinfo],
                                 [AC_CHECK_FUNCS([backtrace backtrace_symbols])])])
 
-# AM_CONDITIONAL([HAVE_BACKTRACE], [test "$ac_cv_func_backtrace" = "yes"])
-
-#
-# File name extension for static archive files, for those few places
-# where they are treated differently from dynamic ones.
-#
-O=lo
-A=la
-SA=a
-LIBTOOL_MKDEP_SED='s;\.o;\.lo;'
-LIBTOOL_MODE_COMPILE='--mode=compile'
-LIBTOOL_MODE_INSTALL='--mode=install'
-LIBTOOL_MODE_LINK='--mode=link'
-LIBTOOL_MODE_UNINSTALL='--mode=uninstall'
-INSTALL_LIBRARY='${INSTALL_PROGRAM}'
-
-AC_SUBST(O)
-AC_SUBST(A)
-AC_SUBST(SA)
-AC_SUBST(LIBTOOL_MKDEP_SED)
-AC_SUBST(LIBTOOL_MODE_COMPILE)
-AC_SUBST(LIBTOOL_MODE_INSTALL)
-AC_SUBST(LIBTOOL_MODE_LINK)
-AC_SUBST(LIBTOOL_MODE_UNINSTALL)
-AC_SUBST(INSTALL_LIBRARY)
-
-BIND9_CO_RULE=".c.$O:"
-AC_SUBST(BIND9_CO_RULE)
-
-#
-# Here begins a very long section to determine the system's networking
-# capabilities.  The order of the tests is significant.
-#
+AM_CONDITIONAL([HAVE_BACKTRACE], [test "$ac_cv_func_backtrace" = "yes"])
 
 #
 # We do the IPv6 compilation checking after libtool so that we can put
@@ -1407,7 +956,7 @@ AC_COMPILE_IFELSE(
 AC_ARG_ENABLE([tcp_fastopen],
              [AS_HELP_STRING([--disable-tcp-fastopen],
                              [disable TCP Fast Open support [default=yes]])],
-            [], [enable_tcp_fastopen="yes"])
+             [], [enable_tcp_fastopen="yes"])
 
 AS_IF([test "$enable_tcp_fastopen" = "yes"],
       [AC_DEFINE([ENABLE_TCP_FASTOPEN], [1], [define if you want TCP_FASTOPEN enabled if available])])
@@ -1478,33 +1027,6 @@ then
        AC_CHECK_HEADERS(readline/history.h)
 fi
 
-#
-# Use our own SPNEGO implementation?
-#
-AC_ARG_ENABLE(isc-spnego,
-             AS_HELP_STRING([--disable-isc-spnego],
-                            [use SPNEGO from GSSAPI library]))
-
-if test -n "$USE_GSSAPI"
-then
-       case "$enable_isc_spnego" in
-               yes|'')
-                       USE_ISC_SPNEGO='-DUSE_ISC_SPNEGO'
-                       DST_EXTRA_OBJS="$DST_EXTRA_OBJS spnego.$O"
-                       DST_EXTRA_SRCS="$DST_EXTRA_SRCS spnego.c"
-                       AC_MSG_RESULT(using SPNEGO from lib/dns)
-                       ;;
-               no)
-                       AC_MSG_RESULT(using SPNEGO from GSSAPI library)
-                       ;;
-       esac
-fi
-
-AC_SUBST(USE_ISC_SPNEGO)
-
-AC_SUBST(DST_EXTRA_OBJS)
-AC_SUBST(DST_EXTRA_SRCS)
-
 #
 # Security Stuff
 #
@@ -1544,13 +1066,6 @@ AS_IF([test "$enable_linux_caps" = "yes"],
       [AC_MSG_RESULT([no])])
 AC_SUBST([LIBCAP_LIBS])
 
-AC_CHECK_HEADERS(sys/un.h,
-ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
-,
-ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
-)
-AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
-
 case "$host" in
 *-solaris*)
        AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
 #
 # Activate "rrset-order fixed" or not?
 #
-AC_ARG_ENABLE(fixed-rrset,
-             AS_HELP_STRING([--enable-fixed-rrset],
-                            [enable fixed rrset ordering [default=no]]),
-             enable_fixed="$enableval", enable_fixed="no")
-case "$enable_fixed" in
-       yes)
-               AC_DEFINE(DNS_RDATASET_FIXED, 1,
-                         [Define to enable "rrset-order fixed" syntax.])
-               ;;
-       no)
-               ;;
-       *)
-               ;;
-esac
+AC_ARG_ENABLE([fixed-rrset],
+             [AS_HELP_STRING([--enable-fixed-rrset],
+                             [enable fixed rrset ordering [default=no]])],
+             [], [enable_fixed_rrset="no"])
+AS_IF([test "$enable_fixed_rrset" = "yes"],
+      [AC_DEFINE([DNS_RDATASET_FIXED], [1],
+                [Define to enable "rrset-order fixed" syntax.])])
 
 #
 # Activate dnstap?
 #
-AC_ARG_ENABLE(dnstap,
-             AS_HELP_STRING([--enable-dnstap],
-                            [enable dnstap support
-                               (requires fstrm, protobuf-c)]),
-             use_dnstap=$enableval, use_dnstap=no)
-
-DNSTAP=
-DNSTAPSRCS=
-DNSTAPOBJS=
-DNSTAPTARGETS=
-if test "x$use_dnstap" != "xno"; then
-       AC_ARG_WITH([protobuf-c],
-                   AS_HELP_STRING([--with-protobuf-c=path],
-                                  [Path where protobuf-c is installed, for dnstap]), [
-           # workaround for protobuf-c includes at old dir
-           # before protobuf-c-1.0.0
-           if test -f $withval/include/google/protobuf-c/protobuf-c.h
-           then
-               CFLAGS="$CFLAGS -I$withval/include/google"
-           else
-               CFLAGS="$CFLAGS -I$withval/include"
-           fi
-           LDFLAGS="$LDFLAGS -L$withval/lib"
-           AC_PATH_PROG([PROTOC_C], [protoc-c], [],
-                        [$PATH$PATH_SEPARATOR$withval/bin])
-       ], [
-           # workaround for protobuf-c includes at old dir
-           # before protobuf-c-1.0.0
-           if test -f /usr/include/google/protobuf-c/protobuf-c.h
-           then
-               CFLAGS="$CFLAGS -I/usr/include/google"
-           else
-               if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
-               then
-                   CFLAGS="$CFLAGS -I/usr/local/include/google"
-                   LDFLAGS="$LDFLAGS -L/usr/local/lib"
-               fi
-           fi
-           AC_PATH_PROG([PROTOC_C],[protoc-c])
-       ])
-       if test -z "$PROTOC_C"; then
-               AC_MSG_ERROR([The protoc-c program was not found.])
-       fi
-       AC_ARG_WITH([libfstrm], AS_HELP_STRING([--with-libfstrm=path],
-                   [Path where libfstrm is installed, for dnstap]), [
-           CFLAGS="$CFLAGS -I$withval/include"
-           LDFLAGS="$LDFLAGS -L$withval/lib"
-           AC_PATH_PROG([FSTRM_CAPTURE], [fstrm_capture], [], [$PATH$PATH_SEPARATOR$withval/bin])
-       ],[
-           AC_PATH_PROG([FSTRM_CAPTURE], [fstrm_capture])
-       ])
-
-       AC_SEARCH_LIBS([fstrm_iothr_init], [fstrm], [],
-                      AC_MSG_ERROR([The fstrm library was not found. Please install fstrm!]))
-       AC_SEARCH_LIBS([protobuf_c_message_pack], [protobuf-c], [],
-                      AC_MSG_ERROR([The protobuf-c library was not found. Please install protobuf-c!]))
-
-       AC_DEFINE(HAVE_DNSTAP, 1, [Define to 1 to enable dnstap support])
-       DNSTAP=dnstap
-       DNSTAPSRCS='${DNSTAPSRCS}'
-       DNSTAPOBJS='${DNSTAPOBJS}'
-       DNSTAPTARGETS='${DNSTAPTARGETS}'
-fi
-AC_SUBST(DNSTAP)
-AC_SUBST(DNSTAPSRCS)
-AC_SUBST(DNSTAPOBJS)
-AC_SUBST(DNSTAPTARGETS)
-
-#
-#  The following sets up how non-blocking i/o is established.
-#  cygwin and solaris 2.x (x<5) require special handling.
-#
-case "$host" in
-*-cygwin*) AC_DEFINE(PORT_NONBLOCK, O_NDELAY);;
-*-solaris2.[[01234]])
-       AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK)
-       AC_DEFINE(USE_FIONBIO_IOCTL, 1,
-                 [Defined if you need to use ioctl(FIONBIO) instead a fcntl call to make non-blocking.])
-       ;;
-*) AC_DEFINE(PORT_NONBLOCK, O_NONBLOCK,
-            [Sets which flag to pass to open/fcntl to make non-blocking (O_NDELAY/O_NONBLOCK).])
-       ;;
-esac
-#
-# Solaris 2.5.1 and earlier cannot bind() then connect() a TCP socket.
-# This prevents the source address being set.
-#
-case "$host" in
-*-solaris2.[[012345]]|*-solaris2.5.1)
-       AC_DEFINE(BROKEN_TCP_BIND_BEFORE_CONNECT, 1,
-                 [Define if you cannot bind() before connect() for TCP sockets.])
-       ;;
-esac
-#
-# The following sections deal with tools used for formatting
-# the documentation.  They are all optional, unless you are
-# a developer editing the documentation source.
-#
-
-#
-# Look for TeX.
-#
-
-AC_PATH_PROGS(LATEX, latex, latex)
-AC_SUBST(LATEX)
-
-AC_PATH_PROGS(PDFLATEX, pdflatex, pdflatex)
-AC_SUBST(PDFLATEX)
-
-AC_PATH_PROGS(DBLATEX, dblatex, dblatex)
-AC_SUBST(DBLATEX)
-
-#
-# Look for w3m
-#
-
-AC_PATH_PROGS(W3M, w3m, w3m)
-AC_SUBST(W3M)
-
-#
-# Look for pandoc
-#
-AC_PATH_PROG(PANDOC, pandoc, pandoc)
-AC_SUBST(PANDOC)
-
-
-#
-# Look for xsltproc (libxslt)
-#
-
-AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
-AC_SUBST(XSLTPROC)
-
-#
-# Look for xmllint (libxml2)
-#
-
-AC_PATH_PROG(XMLLINT, xmllint, xmllint)
-AC_SUBST(XMLLINT)
-
-#
-# Look for Doxygen
-#
+AC_ARG_ENABLE([dnstap],
+             [AS_HELP_STRING([--enable-dnstap],
+                             [enable dnstap support
+                              (requires fstrm, protobuf-c)])],
+             [], [enable_dnstap=no])
+
+AS_IF([test "$enable_dnstap" != "no"],
+      [PKG_CHECK_MODULES([DNSTAP], [libfstrm libprotobuf-c], [],
+                        [AC_MSG_FAILURE([Required libraries (fstrm, protobuf-c) were not found, please install them.])])
+       AC_PATH_PROG([PROTOC_C], [protoc-c], [])
+       AS_IF([test -z "$PROTOC_C"],
+            [AC_MSG_ERROR([protoc-c compiler not found])])
+       AC_DEFINE([HAVE_DNSTAP], 1, [Define to 1 to enable dnstap support])
+      ])
 
-AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
-AC_SUBST(DOXYGEN)
+AC_SUBST([DNSTAP_CFLAGS])
+AC_SUBST([DNSTAP_LIBS])
+AM_CONDITIONAL([HAVE_DNSTAP], [test "$enable_dnstap" != "no"])
 
 #
 # Look for curl
@@ -1885,76 +1265,6 @@ AC_SUBST(DOXYGEN)
 AC_PATH_PROG(CURL, curl, curl)
 AC_SUBST(CURL)
 
-#
-# Subroutine for searching for an ordinary file (e.g., a stylesheet)
-# in a number of directories:
-#
-#   NOM_PATH_FILE(VARIABLE, FILENAME, DIRECTORIES)
-#
-# If the file FILENAME is found in one of the DIRECTORIES, the shell
-# variable VARIABLE is defined to its absolute pathname.  Otherwise,
-# it is set to FILENAME, with no directory prefix (that's not terribly
-# useful, but looks less confusing in substitutions than leaving it
-# empty).  The variable VARIABLE will be substituted into output files.
-#
-
-AC_DEFUN([NOM_PATH_FILE], [
-$1=""
-AC_MSG_CHECKING(for $2)
-for d in $3
-do
-       f=$d/$2
-       if test -f $f
-       then
-               $1=$f
-               AC_MSG_RESULT($f)
-               break
-       fi
-done
-if test "X[$]$1" = "X"
-then
-       AC_MSG_RESULT("not found");
-       $1=$2
-fi
-AC_SUBST($1)
-])
-
-#
-# Look for Docbook-XSL stylesheets.  Location probably varies by system.
-# If it's not explicitly specified, guess where it might be found, based on
-# where SGML stuff lives on some systems (FreeBSD is the only one we're sure
-# of at the moment).
-#
-AC_MSG_CHECKING(for Docbook-XSL path)
-AC_ARG_WITH(docbook-xsl,
-           AS_HELP_STRING([--with-docbook-xsl[=PATH]],
-                          [specify path for Docbook-XSL stylesheets]),
-   docbook_path="$withval", docbook_path="auto")
-case "$docbook_path" in
-auto)
-       AC_MSG_RESULT(auto)
-       docbook_xsl_trees="/usr/pkg/share/xsl/docbook /usr/local/share/xsl/docbook-ns /usr/local/share/xsl/docbook /usr/share/xsl/docbook /usr/share/sgml/docbook/xsl-stylesheets /opt/local/share/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl-nons /usr/share/xml/docbook/stylesheet/docbook-xsl"
-       ;;
-*)
-       docbook_xsl_trees="$withval"
-       AC_MSG_RESULT($docbook_xsl_trees)
-       ;;
-esac
-
-#
-# Look for stylesheets we need.
-#
-
-NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_HTML, html/docbook.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_XHTML, xhtml/docbook.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_STYLE_MAN, manpages/docbook.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_HTML, html/chunk.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_CHUNK_XHTML, xhtml/chunk.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_HTML, html/chunktoc.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_CHUNKTOC_XHTML, xhtml/chunktoc.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_HTML, html/maketoc.xsl, $docbook_xsl_trees)
-NOM_PATH_FILE(XSLT_DOCBOOK_MAKETOC_XHTML, xhtml/maketoc.xsl, $docbook_xsl_trees)
-
 #
 # IDN support using libidn2
 #
@@ -1999,27 +1309,15 @@ AS_CASE([$with_cmocka],
        [no],[],
        [detect],[PKG_CHECK_MODULES([CMOCKA], [cmocka >= 1.0.0],
                                    [AC_DEFINE([HAVE_CMOCKA], [1], [Use CMocka])
-                                    UNITTESTS=tests],[with_cmocka=no])],
+                                    with_cmocka=yes],[with_cmocka=no])],
        [yes],[PKG_CHECK_MODULES([CMOCKA], [cmocka >= 1.0.0],
-                                [AC_DEFINE([HAVE_CMOCKA], [1], [Use CMocka])])
-                                 UNITTESTS=tests],
+                                [AC_DEFINE([HAVE_CMOCKA], [1], [Use CMocka])])],
        [AC_MSG_ERROR([Use PKG_CONFIG_PATH to specify path to CMocka library])]
        )
 AC_SUBST([CMOCKA_CFLAGS])
 AC_SUBST([CMOCKA_LIBS])
-AC_SUBST(UNITTESTS)
-
-#
-# Check for kyua execution engine if CMocka was requested
-# and bail out if execution engine was not found
-#
-AC_ARG_VAR([KYUA], [path to kyua execution engine])
-AS_IF([test "$with_cmocka" != "no"],
-      [AC_PATH_PROGS([KYUA], [kyua], [])
-       AS_IF([test -z "$KYUA"],
-            [AC_MSG_WARN([kyua test execution engine not found])])])
 
-AC_SUBST([KYUA])
+AM_CONDITIONAL([HAVE_CMOCKA], [test "$with_cmocka" = "yes"])
 
 #
 # Check for -Wl,--wrap= support
@@ -2029,19 +1327,18 @@ LD_WRAP_TESTS=false
 AC_MSG_CHECKING([for linker support for --wrap option])
 AX_SAVE_FLAGS([wrap])
 LDFLAGS="-Wl,-wrap,exit"
-AC_LINK_IFELSE(
+AC_RUN_IFELSE(
     [AC_LANG_PROGRAM([[#include <stdlib.h>
                       void __real_exit (int status);
                       void __wrap_exit (int status) { __real_exit (status); }
                      ]],
                     [[exit (1);]])],
     [LD_WRAP_TESTS=true
-     AC_DEFINE([LD_WRAP], [1], [define if the linker supports --wrap option])
      AC_MSG_RESULT([yes])],
     [AC_MSG_RESULT([no])])
 AX_RESTORE_FLAGS([wrap])
 
-AC_SUBST([LD_WRAP_TESTS])
+AM_CONDITIONAL([HAVE_LD_WRAP], [test "$LD_WRAP_TESTS" = "true"])
 
 WRAP_INTERPOSE=
 AC_MSG_CHECKING([for linker support for '-z interpose' option])
@@ -2113,103 +1410,6 @@ AC_ARG_ENABLE(auto-validation,
 AS_IF([test "$enable_auto_validation" = "no"],[validation_default=yes])
 AC_DEFINE_UNQUOTED([VALIDATION_DEFAULT], ["$validation_default"], [the default value of dnssec-validation option])
 
-#
-# Substitutions
-#
-AC_SUBST(BIND9_TOP_BUILDDIR)
-BIND9_TOP_BUILDDIR=`pwd`
-
-AC_SUBST(BIND9_ISC_BUILDINCLUDE)
-AC_SUBST(BIND9_ISCCC_BUILDINCLUDE)
-AC_SUBST(BIND9_ISCCFG_BUILDINCLUDE)
-AC_SUBST(BIND9_DNS_BUILDINCLUDE)
-AC_SUBST(BIND9_NS_BUILDINCLUDE)
-AC_SUBST(BIND9_BIND9_BUILDINCLUDE)
-AC_SUBST(BIND9_IRS_BUILDINCLUDE)
-if test "X$srcdir" != "X"; then
-       BIND9_ISC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isc/include"
-       BIND9_ISCCC_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccc/include"
-       BIND9_ISCCFG_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/isccfg/include"
-       BIND9_DNS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/dns/include"
-       BIND9_NS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/ns/include"
-       BIND9_BIND9_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/bind9/include"
-       BIND9_IRS_BUILDINCLUDE="-I${BIND9_TOP_BUILDDIR}/lib/irs/include"
-else
-       BIND9_ISC_BUILDINCLUDE=""
-       BIND9_ISCCC_BUILDINCLUDE=""
-       BIND9_ISCCFG_BUILDINCLUDE=""
-       BIND9_DNS_BUILDINCLUDE=""
-       BIND9_NS_BUILDINCLUDE=""
-       BIND9_BIND9_BUILDINCLUDE=""
-       BIND9_IRS_BUILDINCLUDE=""
-fi
-
-AC_SUBST_FILE(BIND9_MAKE_INCLUDES)
-BIND9_MAKE_INCLUDES=$BIND9_TOP_BUILDDIR/make/includes
-
-AC_SUBST_FILE(BIND9_MAKE_RULES)
-BIND9_MAKE_RULES=$BIND9_TOP_BUILDDIR/make/rules
-
-. "$srcdir/version"
-BIND9_PRODUCT="PRODUCT=\"${PRODUCT}\""
-AC_SUBST(BIND9_PRODUCT)
-BIND9_DESCRIPTION="DESCRIPTION=\"${DESCRIPTION}\""
-AC_SUBST(BIND9_DESCRIPTION)
-BIND9_VERSION="${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
-AC_SUBST(BIND9_VERSION)
-BIND9_MAJOR="MAJOR=${MAJORVER}.${MINORVER}"
-AC_SUBST(BIND9_MAJOR)
-BIND9_VERSIONSTRING="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}${DESCRIPTION:+ }${DESCRIPTION}"
-AC_SUBST(BIND9_VERSIONSTRING)
-BIND9_VERSIONSHORT="${PRODUCT} ${MAJORVER}.${MINORVER}${PATCHVER:+.}${PATCHVER}${RELEASETYPE}${RELEASEVER}${EXTENSIONS}"
-AC_SUBST(BIND9_VERSIONSHORT)
-
-BIND9_SRCID="SRCID=unset_id"
-if test -f "${srcdir}/srcid"; then
-       . "${srcdir}/srcid"
-       BIND9_SRCID="SRCID=$SRCID"
-elif test -d "${srcdir}/.git"; then
-       BIND9_SRCID="SRCID="`(cd "${srcdir}";git rev-parse --short HEAD)`
-fi
-
-AC_SUBST(BIND9_SRCID)
-
-if test -z "$ac_configure_args"; then
-       BIND9_CONFIGARGS="defaults"
-else
-       for a in $ac_configure_args
-       do
-               BIND9_CONFIGARGS="$BIND9_CONFIGARGS $a"
-       done
-fi
-BIND9_CONFIGARGS="`echo $BIND9_CONFIGARGS | sed 's/^ //'`"
-BIND9_CONFIGARGS="CONFIGARGS=${BIND9_CONFIGARGS}"
-AC_SUBST(BIND9_CONFIGARGS)
-
-AC_SUBST_FILE(LIBISC_API)
-LIBISC_API="$srcdir/lib/isc/api"
-
-AC_SUBST_FILE(LIBISCCC_API)
-LIBISCCC_API="$srcdir/lib/isccc/api"
-
-AC_SUBST_FILE(LIBISCCFG_API)
-LIBISCCFG_API="$srcdir/lib/isccfg/api"
-
-AC_SUBST_FILE(LIBDNS_API)
-LIBDNS_API="$srcdir/lib/dns/api"
-
-AC_SUBST_FILE(LIBDNS_MAPAPI)
-LIBDNS_MAPAPI="$srcdir/lib/dns/mapapi"
-
-AC_SUBST_FILE(LIBBIND9_API)
-LIBBIND9_API="$srcdir/lib/bind9/api"
-
-AC_SUBST_FILE(LIBIRS_API)
-LIBIRS_API="$srcdir/lib/irs/api"
-
-AC_SUBST_FILE(LIBNS_API)
-LIBNS_API="$srcdir/lib/ns/api"
-
 #
 # Configure any DLZ drivers.
 #
@@ -2231,99 +1431,6 @@ DLZ_DRIVER_MYSQL_INCLUDES=""
 DLZ_DRIVER_MYSQL_LIBS=""
 
 #
-# Configure support for building a shared library object
-#
-# Even when libtool is available it can't always be relied upon
-# to build an object that can be dlopen()'ed, but this is necessary
-# for building the dlzexternal system test, so we'll try it the
-# old-fashioned way.
-#
-SO="so"
-SO_CFLAGS=""
-SO_LDFLAGS=""
-SO_LD=""
-SO_TARGETS=""
-SO_STRIP="cat"
-
-AC_ARG_WITH([dlopen],
-           AS_HELP_STRING([--with-dlopen=ARG],
-                          [support dynamically loadable DLZ and DYNDB drivers]),
-           [], [with_dlopen="auto"])
-
-
-#
-# If PIC is disabled, dlopen must also be
-#
-AS_IF([test "$pic_mode" = "no"],
-      [AS_CASE([$with_dlopen],
-              [auto],[with_dlopen="no"],
-              [yes],[AC_MSG_ERROR([--with-dlopen requires PIC])])])
-
-AS_CASE([$with_dlopen],
-       [auto|yes],[
-         AC_SEARCH_LIBS([dlopen],[dl])
-         AC_CHECK_FUNCS([dlopen dlclose dlsym],
-                        [with_dlopen="yes"],
-                        [with_dlopen="no"])
-       ])
-
-AS_IF([test "$with_dlopen" = "yes"],
-      [AS_CASE([$host],
-              [*-linux*|*-gnu*],[
-                LDFLAGS="${LDFLAGS} -Wl,--export-dynamic"
-                SO_CFLAGS="-fPIC"
-                SO_LDFLAGS=""
-                SO_LDFLAGS="-Xcompiler -shared"
-                SO_LD="${CC}"
-              ],
-              [*-freebsd*|*-openbsd*|*-netbsd*],[
-                LDFLAGS="${LDFLAGS} -Wl,-E"
-                SO_CFLAGS="-fpic"
-                SO_LDFLAGS="-Xcompiler -shared"
-                SO_LD="${CC}"
-              ],
-              [*-darwin*],[
-                SO_CFLAGS="-fPIC"
-                 SO_LD="${CC}"
-                SO_LDFLAGS="-Xcompiler -dynamiclib -undefined dynamic_lookup"
-              ],
-              [*-solaris*],[
-                SO_CFLAGS="-KPIC"
-                SO_LDFLAGS="-G -z text"
-                SO_LD="ld"
-              ],
-              [ia64-hp-hpux*],[
-                SO_CFLAGS="+z"
-                SO_LDFLAGS="-b"
-                SO_LD="${CC}"
-              ],
-              [
-                SO_CFLAGS="-fPIC"
-              ])
-       AS_IF([test "$GCC" = "yes"],
-            [SO_CFLAGS="-fPIC"
-             AS_IF([test -z "$SO_LD"],
-                   [SO_LDFLAGS="-Xcompiler -shared"
-                    SO_LD="${CC}"
-                   ])
-            ])
-       # If we still don't know how to make shared objects, don't make any.
-       AS_IF([test -n "$SO_LD"],
-            [SO_TARGETS="\${SO_TARGETS}"
-             AC_DEFINE([ISC_DLZ_DLOPEN], [1],
-                       [Define to allow building of objects for dlopen().])
-            ])
-      ])
-
-CFLAGS="$CFLAGS $SO_CFLAGS"
-
-AC_SUBST(SO)
-AC_SUBST(SO_CFLAGS)
-AC_SUBST(SO_LDFLAGS)
-AC_SUBST(SO_LD)
-AC_SUBST(SO_STRIP)
-AC_SUBST(SO_TARGETS)
-
 #
 # Response policy rewriting using DNS Response Policy Service (DNSRPS)
 # interface.
@@ -2394,286 +1501,105 @@ AS_IF([test "$enable_dnsrps" != "no"],[
        AC_DEFINE([USE_DNSRPS], [1], [Enable DNS Response Policy Service API])
       ])
 
-sinclude(contrib/dlz/config.dlz.in)
-AC_MSG_CHECKING(contributed DLZ drivers)
+# FIXME
+#sinclude(contrib/dlz/config.dlz.in)
+# AC_MSG_CHECKING(contributed DLZ drivers)
+#
+# if test -n "$CONTRIB_DLZ"
+# then
+#      AC_MSG_RESULT(yes)
+#      DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
+#      AC_CONFIG_FILES([$DLZ_DRIVER_RULES
+#              contrib/dlz/modules/mysql/Makefile
+#              contrib/dlz/modules/mysqldyn/Makefile])
+# else
+#      AC_MSG_RESULT(no)
+#      DLZ_DRIVER_RULES=/dev/null
+# fi
+#
+# AC_SUBST(CONTRIB_DLZ)
+# AC_SUBST(DLZ_DRIVER_INCLUDES)
+# AC_SUBST(DLZ_DRIVER_LIBS)
+# AC_SUBST(DLZ_DRIVER_SRCS)
+# AC_SUBST(DLZ_DRIVER_OBJS)
+# AC_SUBST(DLZ_SYSTEM_TEST)
+# AC_SUBST(DLZ_DRIVER_MYSQL_INCLUDES)
+# AC_SUBST(DLZ_DRIVER_MYSQL_LIBS)
+# AC_SUBST_FILE(DLZ_DRIVER_RULES)
 
-if test -n "$CONTRIB_DLZ"
-then
-       AC_MSG_RESULT(yes)
-       DLZ_DRIVER_RULES=contrib/dlz/drivers/rules
-       AC_CONFIG_FILES([$DLZ_DRIVER_RULES
-               contrib/dlz/modules/mysql/Makefile
-               contrib/dlz/modules/mysqldyn/Makefile])
-else
-       AC_MSG_RESULT(no)
-       DLZ_DRIVER_RULES=/dev/null
-fi
+AC_CHECK_HEADERS([glob.h])
 
-AC_SUBST(CONTRIB_DLZ)
-AC_SUBST(DLZ_DRIVER_INCLUDES)
-AC_SUBST(DLZ_DRIVER_LIBS)
-AC_SUBST(DLZ_DRIVER_SRCS)
-AC_SUBST(DLZ_DRIVER_OBJS)
-AC_SUBST(DLZ_SYSTEM_TEST)
-AC_SUBST(DLZ_DRIVER_MYSQL_INCLUDES)
-AC_SUBST(DLZ_DRIVER_MYSQL_LIBS)
-AC_SUBST_FILE(DLZ_DRIVER_RULES)
+#
+# Files to configure.  These are listed here because we used to
+# specify them as arguments to AC_OUTPUT.
+#
 
-AC_CHECK_HEADERS([glob.h])
+# Top
 
-if test "yes" = "$cross_compiling"; then
-       if test -z "$BUILD_CC"; then
-               AC_MSG_ERROR([BUILD_CC not set])
-       fi
-       BUILD_CFLAGS="$BUILD_CFLAGS"
-       BUILD_CPPFLAGS="$BUILD_CPPFLAGS"
-       BUILD_LDFLAGS="$BUILD_LDFLAGS"
-       BUILD_LIBS="$BUILD_LIBS"
-else
-       BUILD_CC="$CC"
-       BUILD_CFLAGS="$CFLAGS"
-       BUILD_CPPFLAGS="$CPPFLAGS $GEN_NEED_OPTARG"
-       BUILD_LDFLAGS="$LDFLAGS"
-       BUILD_LIBS="$LIBS"
-fi
+AC_CONFIG_FILES([Makefile])
 
-NEWFLAGS=""
-for e in $BUILD_LDFLAGS ; do
-    case $e in
-       -L*)
-           case $host_os in
-               netbsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               freebsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               solaris*)
-                   ee=`echo $e | sed -e 's%^-L%-R%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               *)
-                   NEWFLAGS="$NEWFLAGS $e"
-                   ;;
-               esac
-           ;;
-       *)
-           NEWFLAGS="$NEWFLAGS $e"
-           ;;
-    esac
-done
-BUILD_LDFLAGS="$NEWFLAGS"
-
-NEWFLAGS=""
-for e in $DNS_GSSAPI_LIBS ; do
-    case $e in
-       -L*)
-           case $host_os in
-               netbsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               freebsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               solaris*)
-                   ee=`echo $e | sed -e 's%^-L%-R%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               *)
-                   NEWFLAGS="$NEWFLAGS $e"
-                   ;;
-               esac
-           ;;
-       *)
-           NEWFLAGS="$NEWFLAGS $e"
-           ;;
-    esac
-done
-DNS_GSSAPI_LIBS="$NEWFLAGS"
-
-NEWFLAGS=""
-for e in $ISC_OPENSSL_LIBS ; do
-    case $e in
-       -L*)
-           case $host_os in
-               netbsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               freebsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               solaris*)
-                   ee=`echo $e | sed -e 's%^-L%-R%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               *)
-                   NEWFLAGS="$NEWFLAGS $e"
-                   ;;
-               esac
-           ;;
-       *)
-           NEWFLAGS="$NEWFLAGS $e"
-           ;;
-    esac
-done
-ISC_OPENSSL_LIBS="$NEWFLAGS"
-
-NEWFLAGS=""
-for e in $DNS_CRYPTO_LIBS ; do
-    case $e in
-       -L*)
-           case $host_os in
-               netbsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               freebsd*)
-                   ee=`echo $e | sed -e 's%^-L%-Wl,-rpath,%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               solaris*)
-                   ee=`echo $e | sed -e 's%^-L%-R%'`
-                   NEWFLAGS="$NEWFLAGS $e $ee"
-                   ;;
-               *)
-                   NEWFLAGS="$NEWFLAGS $e"
-                   ;;
-               esac
-           ;;
-       *)
-           NEWFLAGS="$NEWFLAGS $e"
-           ;;
-    esac
-done
-DNS_CRYPTO_LIBS="$NEWFLAGS"
+# Binaries
 
-AC_SUBST(BUILD_CC)
-AC_SUBST(BUILD_CFLAGS)
-AC_SUBST(BUILD_CPPFLAGS)
-AC_SUBST(BUILD_LDFLAGS)
-AC_SUBST(BUILD_LIBS)
+AC_CONFIG_FILES([bin/Makefile
+                bin/named/Makefile
+                bin/rndc/Makefile
+                bin/dig/Makefile
+                bin/delv/Makefile
+                bin/dnssec/Makefile
+                bin/tools/Makefile
+                bin/nsupdate/Makefile
+                bin/check/Makefile
+                bin/confgen/Makefile
+                bin/pkcs11/Makefile
+                bin/plugins/Makefile])
 
-#
-# Commands to run at the end of config.status.
-# Don't just put these into configure, it won't work right if somebody
-# runs config.status directly (which autoconf allows).
-#
+# Libraries
 
-AC_CONFIG_COMMANDS(
-       [chmod],
-       [chmod a+x doc/doxygen/doxygen-input-filter])
+AC_CONFIG_FILES([lib/Makefile
+                lib/isc/Makefile
+                lib/dns/Makefile
+                lib/ns/Makefile
+                lib/irs/Makefile
+                lib/isccfg/Makefile
+                lib/isccc/Makefile
+                lib/bind9/Makefile
+                lib/samples/Makefile])
 
-#
-# Files to configure.  These are listed here because we used to
-# specify them as arguments to AC_OUTPUT.  It's (now) ok to move these
-# elsewhere if there's a good reason for doing so.
-#
-
-AC_CONFIG_FILES([
-       Makefile
-       bin/Makefile
-       bin/check/Makefile
-       bin/confgen/Makefile
-       bin/confgen/unix/Makefile
-       bin/delv/Makefile
-       bin/dig/Makefile
-       bin/dnssec/Makefile
-       bin/named/Makefile
-       bin/named/unix/Makefile
-       bin/nsupdate/Makefile
-       bin/pkcs11/Makefile
-       bin/plugins/Makefile
-       bin/rndc/Makefile
-       bin/tests/Makefile
-       bin/tests/headerdep_test.sh
-       bin/tests/optional/Makefile
-       bin/tests/pkcs11/Makefile
-       bin/tests/pkcs11/benchmarks/Makefile
-       bin/tests/system/Makefile
-       bin/tests/system/conf.sh
-       bin/tests/system/dlzexternal/Makefile
-       bin/tests/system/dlzexternal/ns1/dlzs.conf
-       bin/tests/system/dyndb/Makefile
-       bin/tests/system/dyndb/driver/Makefile
-       bin/tests/system/pipelined/Makefile
-       bin/tests/system/rndc/Makefile
-       bin/tests/system/rpz/Makefile
-       bin/tests/system/rsabigexponent/Makefile
-       bin/tests/system/tkey/Makefile
-       bin/tools/Makefile
-       contrib/scripts/check-secure-delegation.pl
-       contrib/scripts/zone-edit.sh
-       doc/Makefile
-       doc/arm/Makefile
-       doc/arm/noteversion.xml
-       doc/arm/pkgversion.xml
-       doc/arm/releaseinfo.xml
-       doc/doxygen/Doxyfile
-       doc/doxygen/Makefile
-       doc/doxygen/doxygen-input-filter
-       doc/misc/Makefile
-       doc/tex/Makefile
-       doc/tex/armstyle.sty
-       doc/xsl/Makefile
-       doc/xsl/isc-docbook-chunk.xsl
-       doc/xsl/isc-docbook-html.xsl
-       doc/xsl/isc-manpage.xsl
-       doc/xsl/isc-notes-html.xsl
-       fuzz/Makefile
-       lib/Makefile
-       lib/bind9/Makefile
-       lib/bind9/include/Makefile
-       lib/bind9/include/bind9/Makefile
-       lib/dns/Makefile
-       lib/dns/include/Makefile
-       lib/dns/include/dns/Makefile
-       lib/dns/include/dst/Makefile
-       lib/dns/tests/Makefile
-       lib/irs/Makefile
-       lib/irs/include/Makefile
-       lib/irs/include/irs/Makefile
-       lib/irs/include/irs/netdb.h
-       lib/irs/include/irs/platform.h
-       lib/irs/tests/Makefile
-       lib/isc/Makefile
-       lib/isc/include/Makefile
-       lib/isc/include/isc/Makefile
-       lib/isc/include/isc/platform.h
-       lib/isc/include/pk11/Makefile
-       lib/isc/include/pkcs11/Makefile
-       lib/isc/netmgr/Makefile
-       lib/isc/pthreads/Makefile
-       lib/isc/pthreads/include/Makefile
-       lib/isc/pthreads/include/isc/Makefile
-       lib/isc/tests/Makefile
-       lib/isc/unix/Makefile
-       lib/isc/unix/include/Makefile
-       lib/isc/unix/include/isc/Makefile
-       lib/isccc/Makefile
-       lib/isccc/include/Makefile
-       lib/isccc/include/isccc/Makefile
-       lib/isccc/tests/Makefile
-       lib/isccfg/Makefile
-       lib/isccfg/include/Makefile
-       lib/isccfg/include/isccfg/Makefile
-       lib/isccfg/tests/Makefile
-       lib/ns/Makefile
-       lib/ns/include/Makefile
-       lib/ns/include/ns/Makefile
-       lib/ns/tests/Makefile
-       lib/samples/Makefile
-       lib/samples/Makefile-postinstall
-       make/Makefile
-       make/mkdep
-       unit/unittest.sh
-       util/check-make-install
-])
+# Generated headers
+
+AC_CONFIG_FILES([lib/isc/include/isc/platform.h])
+
+# Unit Tests
+
+AC_CONFIG_FILES([lib/isc/tests/Makefile
+                lib/dns/tests/Makefile
+                lib/ns/tests/Makefile
+                lib/irs/tests/Makefile
+                lib/isccc/tests/Makefile
+                lib/isccfg/tests/Makefile])
+
+# System Tests
+
+AC_CONFIG_FILES([bin/tests/Makefile
+                bin/tests/system/Makefile
+                bin/tests/system/conf.sh
+                bin/tests/system/dyndb/driver/Makefile
+                bin/tests/system/dlzexternal/driver/Makefile])
+
+AC_CONFIG_FILES([bin/tests/system/ifconfig.sh],
+               [chmod +x bin/tests/system/ifconfig.sh])
+AC_CONFIG_FILES([bin/tests/system/run.sh],
+               [chmod +x bin/tests/system/run.sh])
+AC_CONFIG_FILES([bin/tests/system/start.sh],
+               [chmod +x bin/tests/system/start.sh])
+AC_CONFIG_FILES([bin/tests/system/stop.sh],
+               [chmod +x bin/tests/system/stop.sh])
+AC_CONFIG_FILES([bin/tests/system/system-test-driver.sh],
+               [chmod +x bin/tests/system/system-test-driver.sh])
+
+# Misc
+
+AC_CONFIG_FILES([util/check-make-install])
 
 #
 # Do it
@@ -2681,27 +1607,6 @@ AC_CONFIG_FILES([
 
 AC_OUTPUT
 
-#
-# Now that the Makefiles exist we can ensure that everything is rebuilt.
-#
-AC_ARG_WITH(make-clean,
-           AS_HELP_STRING([--with-make-clean],
-                          [run "make clean" at end of configure [yes|no]]),
-    make_clean="$withval", make_clean="yes")
-case "$make_clean" in
-yes)
-       if test "yes" != "$no_create"
-       then
-               if test "yes" = "$silent"
-               then
-                       make clean > /dev/null
-               else
-                       make clean
-               fi
-       fi
-       ;;
-esac
-
 AC_ARG_ENABLE(full-report,
              AS_HELP_STRING([--enable-full-report],
                             [report values of all configure options]))
@@ -2810,6 +1715,9 @@ report() {
     echo "-------------------------------------------------------------------------------"
     echo "Compiler: $CC"
     $CC --version 2>&1 | sed 's/^/    /'
+    echo "CFLAGS: $STD_CFLAGS $CFLAGS"
+    echo "CPPFLAGS: $STD_CPPFLAGS $CPPFLAGS"
+    echo "LDFLAGS: $LDFLAGS"
 
     if test "X$ac_unrecognized_opts" != "X"; then
        echo "Unrecognized options:"
index 15db70fe0ae99c186e4b20aed7520b285fbba587..466e11d1c729146e4121baced38833d7c643473c 100644 (file)
@@ -18,6 +18,11 @@ be fixed as time permits.
       Sample configuration for setting up a DNS-over-TLS server
       using BIND with Nginx as a TLS proxy.
 
+    - kasp/
+
+      Scripts for converting key and signature policies from OpenDNSSEC
+      KASP format to the policy.conf format used by dnssec-keymgr.
+
     - dlz/modules
 
       Dynamically linkable DLZ modules that can be configured into
index bac8ab12d19904ffacf1b97facd29718914df9f7..ff87532a8465726d86fa978d62c91f7430bd7ee4 100644 (file)
@@ -31,9 +31,9 @@
 
 #include <sys/socket.h>
 #include <sys/types.h>
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
 #include <sys/un.h>
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 #include <arpa/inet.h>
 #include <net/if.h>
 #include <netinet/in.h>
@@ -104,9 +104,9 @@ typedef struct isc_sockaddr {
                struct sockaddr     sa;
                struct sockaddr_in  sin;
                struct sockaddr_in6 sin6;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
                struct sockaddr_un sunix;
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        } type;
        unsigned int length;
        void *       link;
diff --git a/contrib/kasp/README b/contrib/kasp/README
new file mode 100644 (file)
index 0000000..fb897f1
--- /dev/null
@@ -0,0 +1,11 @@
+This directory is for tools and scripts related to the OpenDNSSEC KASP
+("key and signature policy") format. Currently it only contains
+"kasp2policy.py", a python script for converting KASP key policy
+to the "dnssec.policy" format that is used by dnssec-keymgr.
+
+This depends on PLY (python lex/yacc) and on the "isc.dnskey" module in
+bin/python/isc.
+
+Basic test:
+$ python kasp2policy.py kasp.xml > policy.out
+$ diff policy.out policy.good 
diff --git a/contrib/kasp/kasp.xml b/contrib/kasp/kasp.xml
new file mode 100644 (file)
index 0000000..d94b084
--- /dev/null
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Sample KASP file to use for testing kasp2policy.py. -->
+<KASP>
+       <Policy name="Policy1">
+         <Description>A default policy that will
+               amaze you and your friends</Description>
+               <Signatures>
+                       <Resign>PT5M</Resign>
+                       <Refresh>PT5M</Refresh>
+                       <Validity>
+                                       <Default>PT15M</Default>
+                                       <Denial>PT15M</Denial>
+                       </Validity>
+                       <Jitter>PT2M</Jitter>
+                       <InceptionOffset>PT1M</InceptionOffset>
+               </Signatures>
+
+               <Denial>
+                       <NSEC>
+                       </NSEC>
+               </Denial>
+
+               <Keys>
+                       <!-- Parameters for both KSK and ZSK -->
+                       <TTL>PT1M</TTL>
+                       <RetireSafety>PT0S</RetireSafety>
+                       <PublishSafety>PT0S</PublishSafety>
+
+                       <!-- Parameters for KSK only -->
+                       <KSK>
+                               <Algorithm length="2048">5</Algorithm>
+                               <Lifetime>PT40M</Lifetime>
+                               <Repository>softHSM</Repository>
+                               <Standby>1</Standby>
+                       </KSK>
+
+                       <!-- Parameters for ZSK only -->
+                       <ZSK>
+                               <Algorithm length="2048">5</Algorithm>
+                               <Lifetime>PT25M</Lifetime>
+                               <Repository>softHSM</Repository>
+                               <Standby>1</Standby>
+                       </ZSK>
+               </Keys>
+
+               <Zone>
+                       <PropagationDelay>PT0S</PropagationDelay>
+                       <SOA>
+                               <TTL>PT0S</TTL>
+                               <Minimum>PT0S</Minimum>
+                               <Serial>unixtime</Serial>
+                       </SOA>
+               </Zone>
+
+               <Parent>
+                       <PropagationDelay>PT8M</PropagationDelay>
+                       <DS>
+                               <TTL>PT0S</TTL>
+                       </DS>
+                       <SOA>
+                               <TTL>PT0S</TTL>
+                               <Minimum>PT0S</Minimum>
+                       </SOA>
+               </Parent>
+       </Policy>
+       <Policy name="Policy2">
+               <Description>A default policy that will amaze you and your friends</Description>
+               <Signatures>
+                       <Resign>PT7M</Resign>
+                       <Refresh>PT7M</Refresh>
+                       <Validity>
+                                       <Default>PT15M</Default>
+                                       <Denial>PT16M</Denial>
+                       </Validity>
+                       <Jitter>PT2M</Jitter>
+                       <InceptionOffset>PT1M</InceptionOffset>
+               </Signatures>
+
+               <Denial>
+                       <NSEC3>
+                               <Resalt>P120D</Resalt>
+                               <Hash>
+                                       <Algorithm>1</Algorithm>
+                                       <Iterations>5</Iterations>
+                                       <Salt length="8"/>
+                               </Hash>
+                       </NSEC3>
+               </Denial>
+
+               <Keys>
+                       <!-- Parameters for both KSK and ZSK -->
+                       <TTL>PT15M</TTL>
+                       <RetireSafety>PT0S</RetireSafety>
+                       <PublishSafety>PT0S</PublishSafety>
+
+                       <!-- Parameters for KSK only -->
+                       <KSK>
+                               <Algorithm length="2048">7</Algorithm>
+                               <Lifetime>PT45M</Lifetime>
+                               <Repository>softHSM</Repository>
+                               <Standby>1</Standby>
+                       </KSK>
+
+                       <!-- Parameters for ZSK only -->
+                       <ZSK>
+                               <Algorithm length="2048">7</Algorithm>
+                               <Lifetime>PT25M</Lifetime>
+                               <Repository>softHSM</Repository>
+                               <Standby>1</Standby>
+                       </ZSK>
+               </Keys>
+
+               <Zone>
+                       <PropagationDelay>PT0S</PropagationDelay>
+                       <SOA>
+                               <TTL>PT0S</TTL>
+                               <Minimum>PT0S</Minimum>
+                               <Serial>unixtime</Serial>
+                       </SOA>
+               </Zone>
+
+               <Parent>
+                       <PropagationDelay>PT12M</PropagationDelay>
+                       <DS>
+                               <TTL>PT0S</TTL>
+                       </DS>
+                       <SOA>
+                               <TTL>PT0S</TTL>
+                               <Minimum>PT0S</Minimum>
+                       </SOA>
+               </Parent>
+       </Policy>
+</KASP>
diff --git a/contrib/kasp/policy.good b/contrib/kasp/policy.good
new file mode 100644 (file)
index 0000000..18c6360
--- /dev/null
@@ -0,0 +1,24 @@
+# A default policy that will
+# amaze you and your friends
+policy Policy1 {
+       algorithm RSASHA1;
+       keyttl 60;
+       key-size ksk 2048;
+       key-size zsk 2048;
+       roll-period ksk 2400;
+       roll-period zsk 1500;
+       standby ksk 1;
+       standby zsk 1;
+};
+
+# A default policy that will amaze you and your friends
+policy Policy2 {
+       algorithm NSEC3RSASHA1;
+       keyttl 900;
+       key-size ksk 2048;
+       key-size zsk 2048;
+       roll-period ksk 2700;
+       roll-period zsk 1500;
+       standby ksk 1;
+       standby zsk 1;
+};
index f4758429dbcf9b2452c7141eee3bbe5d21625989..21e4f69257300f73a2b8e8958c0326b1bb000722 100644 (file)
@@ -77,10 +77,6 @@ $ <userinput>make install</userinput>
       Normal installation of BIND will also install library object
       and header files.  Root privilege is normally required.
     </para>
-    <para>
-      To see how to build your own application after the installation, see
-      <filename>lib/samples/Makefile-postinstall.in</filename>.
-    </para>
   </section>
   <section>
     <info>
index f4b58582cafe1e0ee7cc9a51cc71bc55f534ebca..8445734faf597416972386127cf6c9adc37069ad 100644 (file)
@@ -1,2 +1,3 @@
 platform.h
 netdb.h
+gen
diff --git a/lib/Kyuafile b/lib/Kyuafile
deleted file mode 100644 (file)
index 39ce986..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('dns/Kyuafile')
-include('irs/Kyuafile')
-include('isc/Kyuafile')
-include('isccc/Kyuafile')
-include('isccfg/Kyuafile')
-include('ns/Kyuafile')
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644 (file)
index 0000000..5cbaf3c
--- /dev/null
@@ -0,0 +1,3 @@
+include $(top_srcdir)/Makefile.top
+
+SUBDIRS = isc dns isccc ns isccfg bind9 irs samples
diff --git a/lib/bind9/Makefile.am b/lib/bind9/Makefile.am
new file mode 100644 (file)
index 0000000..ffba4ac
--- /dev/null
@@ -0,0 +1,30 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libbind9.la
+
+libbind9_ladir = $(includedir)/bind9
+libbind9_la_HEADERS =                  \
+       include/bind9/check.h           \
+       include/bind9/getaddresses.h
+
+libbind9_la_SOURCES =          \
+       $(libbind9_la_HEADERS)  \
+       check.c                 \
+       getaddresses.c
+
+libbind9_la_CPPFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBNS_CFLAGS)         \
+       $(LIBBIND9_CFLAGS)
+
+libbind9_la_LIBADD =           \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBNS_LIBS)           \
+       $(LIBISCCFG_LIBS)
+
+libbind9_la_LDFLAGS =          \
+       $(libbind9_VERSION_INFO)
index c1f8503b00cb23aef305e199889600c87b2ca1cd..fdb0f42378ee14244db71490d8144eca0305e1c4 100644 (file)
@@ -3899,7 +3899,6 @@ check_rpz_catz(const char *rpz_catz, const cfg_obj_t *rpz_obj,
        return (result);
 }
 
-#ifdef HAVE_DLOPEN
 /*%
  * Data structure used for the 'callback_data' argument to check_one_plugin().
  */
@@ -3947,7 +3946,6 @@ check_one_plugin(const cfg_obj_t *config, const cfg_obj_t *obj,
 
        return (ISC_R_SUCCESS);
 }
-#endif /* ifdef HAVE_DLOPEN */
 
 static isc_result_t
 check_dnstap(const cfg_obj_t *voptions, const cfg_obj_t *config,
@@ -3997,9 +3995,6 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
        const cfg_obj_t *view_ta = NULL, *global_ta = NULL;
        const cfg_obj_t *check_keys[2] = { NULL, NULL };
        const cfg_obj_t *keys = NULL;
-#ifndef HAVE_DLOPEN
-       const cfg_obj_t *dyndb = NULL;
-#endif /* ifndef HAVE_DLOPEN */
        const cfg_listelt_t *element, *element2;
        isc_symtab_t *symtab = NULL;
        isc_result_t result = ISC_R_SUCCESS;
@@ -4057,22 +4052,6 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
                }
        }
 
-#ifndef HAVE_DLOPEN
-       if (voptions != NULL) {
-               (void)cfg_map_get(voptions, "dyndb", &dyndb);
-       } else {
-               (void)cfg_map_get(config, "dyndb", &dyndb);
-       }
-
-       if (dyndb != NULL) {
-               cfg_obj_log(dyndb, logctx, ISC_LOG_ERROR,
-                           "dynamic loading of databases is not supported");
-               if (tresult != ISC_R_SUCCESS) {
-                       result = ISC_R_NOTIMPLEMENTED;
-               }
-       }
-#endif /* ifndef HAVE_DLOPEN */
-
        /*
         * Check that the response-policy and catalog-zones options
         * refer to zones that exist.
@@ -4373,7 +4352,6 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
                }
        }
 
-#ifdef HAVE_DLOPEN
        {
                struct check_one_plugin_data check_one_plugin_data = {
                        .mctx = mctx,
@@ -4389,7 +4367,6 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
                        result = tresult;
                }
        }
-#endif /* HAVE_DLOPEN */
 
 cleanup:
        if (symtab != NULL) {
diff --git a/lib/bind9/include/bind9/version.h b/lib/bind9/include/bind9/version.h
deleted file mode 100644 (file)
index aa48b89..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file bind9/version.h */
-
-#include <isc/platform.h>
-
-LIBBIND9_EXTERNAL_DATA extern const char bind9_version[];
-
-LIBBIND9_EXTERNAL_DATA extern const unsigned int bind9_libinterface;
-LIBBIND9_EXTERNAL_DATA extern const unsigned int bind9_librevision;
-LIBBIND9_EXTERNAL_DATA extern const unsigned int bind9_libage;
diff --git a/lib/bind9/version.c b/lib/bind9/version.c
deleted file mode 100644 (file)
index 6b25b6a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <bind9/version.h>
-
-const char bind9_version[] = VERSION;
-
-const unsigned int bind9_libinterface = LIBINTERFACE;
-const unsigned int bind9_librevision = LIBREVISION;
-const unsigned int bind9_libage = LIBAGE;
index 4e283308b7e8f39225284bd662c9e5b1050007ad..3ea1f2067d258bfc307e5404a6eee466e4dbf869 100644 (file)
@@ -21,9 +21,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\check.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -38,8 +35,5 @@
     <ClInclude Include="..\include\bind9\getaddresses.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\bind9\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index 4fd23e197d41d32711e7db943e35f4cb8a8b5c3e..817c378e56ea2974d9ca196f42933c7f6b94b4e8 100644 (file)
     <ClCompile Include="..\check.c" />
     <ClCompile Include="..\getaddresses.c" />
     <ClCompile Include="DLLMain.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\bind9\check.h" />
     <ClInclude Include="..\include\bind9\getaddresses.h" />
-    <ClInclude Include="..\include\bind9\version.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/lib/bind9/win32/version.c b/lib/bind9/win32/version.c
deleted file mode 100644 (file)
index 11e99d1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <bind9/version.h>
-
-LIBBIND9_EXTERNAL_DATA const char bind9_version[] = VERSION;
-
-LIBBIND9_EXTERNAL_DATA const unsigned int bind9_libinterface = LIBINTERFACE;
-LIBBIND9_EXTERNAL_DATA const unsigned int bind9_librevision = LIBREVISION;
-LIBBIND9_EXTERNAL_DATA const unsigned int bind9_libage = LIBAGE;
diff --git a/lib/dns/Kyuafile b/lib/dns/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/dns/Makefile.am b/lib/dns/Makefile.am
new file mode 100644 (file)
index 0000000..62de041
--- /dev/null
@@ -0,0 +1,352 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libdns.la
+
+nodist_libdns_ladir = $(includedir)/dns
+nodist_libdns_la_HEADERS =             \
+       include/dns/enumclass.h         \
+       include/dns/enumtype.h          \
+       include/dns/rdatastruct.h
+
+nodist_libdns_la_SOURCES =             \
+       $(nodist_libdns_la_HEADERS)     \
+       code.h
+
+BUILT_SOURCES =                                \
+       $(nodist_libdns_la_SOURCES)
+
+CLEANFILES =                           \
+       $(nodist_libdns_la_SOURCES)
+
+noinst_PROGRAMS = gen
+
+gen_SOURCES = gen.c gen-unix.h
+
+gen_CPPFLAGS =                 \
+       $(AM_CPPFLAGS)
+
+EXTRA_DIST = gen-win32.h
+
+include/dns/enumtype.h: gen Makefile
+       mkdir -p include/dns
+       $(builddir)/gen -s $(srcdir) -t > $@
+
+include/dns/enumclass.h: gen Makefile
+       mkdir -p include/dns
+       $(builddir)/gen -s $(srcdir) -c > $@
+
+include/dns/rdatastruct.h: gen rdata/rdatastructpre.h rdata/rdatastructsuf.h Makefile
+       mkdir -p include/dns
+       $(builddir)/gen -s $(srcdir) -i \
+               -P $(srcdir)/rdata/rdatastructpre.h \
+               -S $(srcdir)/rdata/rdatastructsuf.h > $@
+
+code.h: gen Makefile
+       $(builddir)/gen -s $(srcdir) > $@
+
+libdns_ladir = $(includedir)/dns
+libdns_la_HEADERS =                    \
+       include/dns/acl.h               \
+       include/dns/adb.h               \
+       include/dns/badcache.h          \
+       include/dns/bit.h               \
+       include/dns/byaddr.h            \
+       include/dns/cache.h             \
+       include/dns/callbacks.h         \
+       include/dns/catz.h              \
+       include/dns/cert.h              \
+       include/dns/client.h            \
+       include/dns/clientinfo.h        \
+       include/dns/compress.h          \
+       include/dns/db.h                \
+       include/dns/dbiterator.h        \
+       include/dns/dbtable.h           \
+       include/dns/diff.h              \
+       include/dns/dispatch.h          \
+       include/dns/dlz.h               \
+       include/dns/dlz_dlopen.h        \
+       include/dns/dns64.h             \
+       include/dns/dnsrps.h            \
+       include/dns/dnssec.h            \
+       include/dns/ds.h                \
+       include/dns/dsdigest.h          \
+       include/dns/dnstap.h            \
+       include/dns/dyndb.h             \
+       include/dns/ecs.h               \
+       include/dns/edns.h              \
+       include/dns/ecdb.h              \
+       include/dns/events.h            \
+       include/dns/fixedname.h         \
+       include/dns/forward.h           \
+       include/dns/geoip.h             \
+       include/dns/ipkeylist.h         \
+       include/dns/iptable.h           \
+       include/dns/journal.h           \
+       include/dns/kasp.h              \
+       include/dns/keydata.h           \
+       include/dns/keyflags.h          \
+       include/dns/keymgr.h            \
+       include/dns/keytable.h          \
+       include/dns/keyvalues.h         \
+       include/dns/lib.h               \
+       include/dns/librpz.h            \
+       include/dns/lookup.h            \
+       include/dns/log.h               \
+       include/dns/master.h            \
+       include/dns/masterdump.h        \
+       include/dns/message.h           \
+       include/dns/name.h              \
+       include/dns/ncache.h            \
+       include/dns/nsec.h              \
+       include/dns/nsec3.h             \
+       include/dns/nta.h               \
+       include/dns/opcode.h            \
+       include/dns/order.h             \
+       include/dns/peer.h              \
+       include/dns/portlist.h          \
+       include/dns/private.h           \
+       include/dns/rbt.h               \
+       include/dns/rcode.h             \
+       include/dns/rdata.h             \
+       include/dns/rdataclass.h        \
+       include/dns/rdatalist.h         \
+       include/dns/rdataset.h          \
+       include/dns/rdatasetiter.h      \
+       include/dns/rdataslab.h         \
+       include/dns/rdatatype.h         \
+       include/dns/request.h           \
+       include/dns/resolver.h          \
+       include/dns/result.h            \
+       include/dns/rootns.h            \
+       include/dns/rpz.h               \
+       include/dns/rriterator.h        \
+       include/dns/rrl.h               \
+       include/dns/sdb.h               \
+       include/dns/sdlz.h              \
+       include/dns/secalg.h            \
+       include/dns/secproto.h          \
+       include/dns/soa.h               \
+       include/dns/ssu.h               \
+       include/dns/stats.h             \
+       include/dns/tcpmsg.h            \
+       include/dns/time.h              \
+       include/dns/timer.h             \
+       include/dns/tkey.h              \
+       include/dns/tsec.h              \
+       include/dns/tsig.h              \
+       include/dns/ttl.h               \
+       include/dns/types.h             \
+       include/dns/update.h            \
+       include/dns/validator.h         \
+       include/dns/view.h              \
+       include/dns/xfrin.h             \
+       include/dns/zone.h              \
+       include/dns/zonekey.h           \
+       include/dns/zoneverify.h        \
+       include/dns/zt.h
+
+dstdir = $(includedir)/dst
+dst_HEADERS =                          \
+       include/dst/dst.h               \
+       include/dst/gssapi.h            \
+       include/dst/result.h
+
+libdns_la_SOURCES =                    \
+       $(libdns_la_HEADERS)            \
+       $(dst_HEADERS)                  \
+       acl.c                           \
+       adb.c                           \
+       badcache.c                      \
+       byaddr.c                        \
+       cache.c                         \
+       callbacks.c                     \
+       catz.c                          \
+       clientinfo.c                    \
+       compress.c                      \
+       db.c                            \
+       dbiterator.c                    \
+       dbtable.c                       \
+       diff.c                          \
+       dispatch.c                      \
+       dlz.c                           \
+       dns64.c                         \
+       dnsrps.c                        \
+       dnssec.c                        \
+       ds.c                            \
+       dst_api.c                       \
+       dst_internal.h                  \
+       dst_openssl.h                   \
+       dst_parse.c                     \
+       dst_parse.h                     \
+       dst_pkcs11.h                    \
+       dst_result.c                    \
+       dyndb.c                         \
+       ecs.c                           \
+       fixedname.c                     \
+       forward.c                       \
+       hmac_link.c                     \
+       ipkeylist.c                     \
+       iptable.c                       \
+       journal.c                       \
+       kasp.c                          \
+       key.c                           \
+       keydata.c                       \
+       keymgr.c                        \
+       keytable.c                      \
+       lib.c                           \
+       log.c                           \
+       lookup.c                        \
+       master.c                        \
+       masterdump.c                    \
+       message.c                       \
+       name.c                          \
+       ncache.c                        \
+       nsec.c                          \
+       nsec3.c                         \
+       nta.c                           \
+       openssl_link.c                  \
+       openssldh_link.c                \
+       order.c                         \
+       peer.c                          \
+       private.c                       \
+       portlist.c                      \
+       rbt.c                           \
+       rbtdb.h                         \
+       rbtdb.c                         \
+       rcode.c                         \
+       rdata.c                         \
+       rdatalist.c                     \
+       rdataset.c                      \
+       rdatasetiter.c                  \
+       rdataslab.c                     \
+       request.c                       \
+       resolver.c                      \
+       result.c                        \
+       rootns.c                        \
+       rpz.c                           \
+       rrl.c                           \
+       rriterator.c                    \
+       sdb.c                           \
+       sdlz.c                          \
+       soa.c                           \
+       ssu.c                           \
+       ssu_external.c                  \
+       stats.c                         \
+       tcpmsg.c                        \
+       time.c                          \
+       timer.c                         \
+       tkey.c                          \
+       tsec.c                          \
+       tsig.c                          \
+       ttl.c                           \
+       update.c                        \
+       validator.c                     \
+       view.c                          \
+       xfrin.c                         \
+       zone.c                          \
+       zoneverify.c                    \
+       zonekey.c                       \
+       zt.c                            \
+       client.c                        \
+       ecdb.c                          \
+       rdatalist_p.h                   \
+       tsig_p.h                        \
+       zone_p.h
+
+if HAVE_GSSAPI
+libdns_la_SOURCES +=                   \
+       gssapi_link.c                   \
+       gssapictx.c
+else !HAVE_GSSAPI
+libdns_la_SOURCES +=                   \
+       gssapictx-dummy.c
+endif
+
+if HAVE_PKCS11
+libdns_la_SOURCES +=           \
+       pkcs11.c                \
+       pkcs11ecdsa_link.c      \
+       pkcs11eddsa_link.c      \
+       pkcs11rsa_link.c
+else !HAVE_PKCS11
+libdns_la_SOURCES +=           \
+       opensslecdsa_link.c     \
+       openssleddsa_link.c     \
+       opensslrsa_link.c
+endif
+
+if HAVE_GEOIP2
+libdns_la_SOURCES += \
+       geoip2.c
+endif
+
+libdns_la_CPPFLAGS =           \
+       $(AM_CPPFLAGS)          \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(OPENSSL_CFLAGS)       \
+       $(LIBLTDL_CFLAGS)
+
+libdns_la_LDFLAGS =            \
+       $(libdns_VERSION_INFO)
+
+libdns_la_LIBADD =             \
+       $(LIBISC_LIBS)          \
+       $(OPENSSL_LIBS)         \
+       $(LIBLTDL_LIBS)
+
+if HAVE_JSON_C
+libdns_la_CPPFLAGS +=          \
+       $(JSON_C_CFLAGS)
+
+libdns_la_LIBADD +=            \
+       $(JSON_C_LIBS)
+endif HAVE_JSON_C
+
+if HAVE_LIBXML2
+libdns_la_CPPFLAGS +=          \
+       $(LIBXML2_CFLAGS)
+
+libdns_la_LIBADD +=            \
+       $(LIBXML2_LIBS)
+endif HAVE_LIBXML2
+
+if HAVE_GSSAPI
+libdns_la_CPPFLAGS +=          \
+       $(GSSAPI_CFLAGS)        \
+       $(KRB5_CFLAGS)
+libdns_la_LIBADD +=            \
+       $(GSSAPI_LIBS)          \
+       $(KRB5_LIBS)
+endif
+
+if HAVE_GEOIP2
+libdns_la_CPPFLAGS +=          \
+       $(MAXMINDDB_CFLAGS)
+libdns_la_LDFLAGS +=           \
+       $(MAXMINDDB_LIBS)
+endif
+
+if HAVE_DNSTAP
+nodist_libdns_la_SOURCES +=    \
+       dnstap.pb-c.h           \
+       dnstap.pb-c.c
+
+libdns_la_SOURCES +=           \
+       dnstap.c
+
+dnstap.pb-c.h dnstap.pb-c.c: dnstap.proto
+       $(PROTOC_C) --proto_path=$(srcdir) --c_out=. dnstap.proto
+
+libdns_la_CPPFLAGS += $(DNSTAP_CFLAGS)
+libdns_la_LIBADD += $(DNSTAP_LIBS)
+endif
+
+if HAVE_LMDB
+libdns_la_CPPFLAGS += $(LMDB_CFLAGS)
+libdns_la_LIBADD += $(LMDB_LIBS)
+endif
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
index 55efea3f507d8b8677085e4942c5c6621f6cf748..42de18f9e41f8656441ca78b43cd104b148cd81c 100644 (file)
@@ -135,7 +135,7 @@ typedef struct ioq {
        struct fstrm_iothr_queue *ioq;
 } dt__ioq_t;
 
-ISC_THREAD_LOCAL dt__ioq_t dt_ioq = { 0 };
+static thread_local dt__ioq_t dt_ioq = { 0 };
 
 static atomic_uint_fast32_t global_generation;
 
index 94106a3fc17639f705587eec718f2a4cbd4789fc..2466bb734f8dd53acbee65c4c230f6fa042a227f 100644 (file)
@@ -231,9 +231,9 @@ dst_lib_init(isc_mem_t *mctx, const char *engine) {
        RETERR(dst__pkcs11eddsa_init(&dst_t_func[DST_ALG_ED25519]));
        RETERR(dst__pkcs11eddsa_init(&dst_t_func[DST_ALG_ED448]));
 #endif /* USE_PKCS11 */
-#ifdef GSSAPI
+#if HAVE_GSSAPI
        RETERR(dst__gssapi_init(&dst_t_func[DST_ALG_GSSAPI]));
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
 
        dst_initialized = true;
        return (ISC_R_SUCCESS);
index 116e2d28fa96c874a4d12249e1646f958cc4b8f1..48595db66bf9032d4687574c9adb39552b346800 100644 (file)
@@ -237,10 +237,10 @@ dst__pkcs11ecdsa_init(struct dst_func **funcp);
 isc_result_t
 dst__pkcs11eddsa_init(struct dst_func **funcp);
 #endif /* USE_PKCS11 */
-#ifdef GSSAPI
+#if HAVE_GSSAPI
 isc_result_t
 dst__gssapi_init(struct dst_func **funcp);
-#endif /* GSSAPI */
+#endif /* HAVE_GSSAPI*/
 
 /*%
  * Destructors
index fdc8ea59f87dd24b207c99e530a79310b1cc41b9..93bc9c712b6af0f563c42dc52a33c6d823f51c36 100644 (file)
@@ -9,12 +9,7 @@
  * information regarding copyright ownership.
  */
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#elif _WIN32
-#include <windows.h>
-#endif /* if HAVE_DLFCN_H */
-
+#include <ltdl.h>
 #include <string.h>
 
 #include <isc/buffer.h>
@@ -83,19 +78,17 @@ impfind(const char *name) {
        return (NULL);
 }
 
-#if HAVE_DLFCN_H && HAVE_DLOPEN
 static isc_result_t
-load_symbol(void *handle, const char *filename, const char *symbol_name,
+load_symbol(lt_dlhandle handle, const char *filename, const char *symbol_name,
            void **symbolp) {
-       const char *errmsg;
        void *symbol;
 
        REQUIRE(handle != NULL);
        REQUIRE(symbolp != NULL && *symbolp == NULL);
 
-       symbol = dlsym(handle, symbol_name);
+       symbol = lt_dlsym(handle, symbol_name);
        if (symbol == NULL) {
-               errmsg = dlerror();
+               const char *errmsg = lt_dlerror();
                if (errmsg == NULL) {
                        errmsg = "returned function pointer is NULL";
                }
@@ -106,7 +99,7 @@ load_symbol(void *handle, const char *filename, const char *symbol_name,
                              symbol_name, filename, errmsg);
                return (ISC_R_FAILURE);
        }
-       dlerror();
+       (void)lt_dlerror();
 
        *symbolp = symbol;
 
@@ -117,12 +110,12 @@ static isc_result_t
 load_library(isc_mem_t *mctx, const char *filename, const char *instname,
             dyndb_implementation_t **impp) {
        isc_result_t result;
-       void *handle = NULL;
+       lt_dlhandle handle = NULL;
        dyndb_implementation_t *imp = NULL;
        dns_dyndb_register_t *register_func = NULL;
        dns_dyndb_destroy_t *destroy_func = NULL;
        dns_dyndb_version_t *version_func = NULL;
-       int version, flags;
+       int version;
 
        REQUIRE(impp != NULL && *impp == NULL);
 
@@ -130,18 +123,17 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
                      ISC_LOG_INFO, "loading DynDB instance '%s' driver '%s'",
                      instname, filename);
 
-       flags = RTLD_NOW | RTLD_LOCAL;
-#if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__
-       flags |= RTLD_DEEPBIND;
-#endif /* if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__ */
+       if (lt_dlinit() != 0) {
+               CHECK(ISC_R_FAILURE);
+       }
 
-       handle = dlopen(filename, flags);
+       handle = lt_dlopen(filename);
        if (handle == NULL) {
                CHECK(ISC_R_FAILURE);
        }
 
        /* Clear dlerror */
-       dlerror();
+       (void)lt_dlerror();
 
        CHECK(load_symbol(handle, filename, "dyndb_version",
                          (void **)&version_func));
@@ -183,7 +175,7 @@ cleanup:
                              DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
                              "failed to dynamically load instance '%s' "
                              "driver '%s': %s (%s)",
-                             instname, filename, dlerror(),
+                             instname, filename, lt_dlerror(),
                              isc_result_totext(result));
        }
        if (imp != NULL) {
@@ -191,7 +183,7 @@ cleanup:
                                     sizeof(dyndb_implementation_t));
        }
        if (result != ISC_R_SUCCESS && handle != NULL) {
-               dlclose(handle);
+               (void)lt_dlclose(handle);
        }
 
        return (result);
@@ -209,140 +201,6 @@ unload_library(dyndb_implementation_t **impp) {
        isc_mem_free(imp->mctx, imp->name);
        isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t));
 }
-#elif _WIN32
-static isc_result_t
-load_symbol(HMODULE handle, const char *filename, const char *symbol_name,
-           void **symbolp) {
-       void *symbol;
-
-       REQUIRE(handle != NULL);
-       REQUIRE(symbolp != NULL && *symbolp == NULL);
-
-       symbol = GetProcAddress(handle, symbol_name);
-       if (symbol == NULL) {
-               int errstatus = GetLastError();
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
-                             "failed to lookup symbol %s in "
-                             "dyndb module '%s': %d",
-                             symbol_name, filename, errstatus);
-               return (ISC_R_FAILURE);
-       }
-
-       *symbolp = symbol;
-
-       return (ISC_R_SUCCESS);
-}
-
-static isc_result_t
-load_library(isc_mem_t *mctx, const char *filename, const char *instname,
-            dyndb_implementation_t **impp) {
-       isc_result_t result;
-       HMODULE handle;
-       dyndb_implementation_t *imp = NULL;
-       dns_dyndb_register_t *register_func = NULL;
-       dns_dyndb_destroy_t *destroy_func = NULL;
-       dns_dyndb_version_t *version_func = NULL;
-       int version;
-
-       REQUIRE(impp != NULL && *impp == NULL);
-
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_DYNDB,
-                     ISC_LOG_INFO, "loading DynDB instance '%s' driver '%s'",
-                     instname, filename);
-
-       handle = LoadLibraryA(filename);
-       if (handle == NULL) {
-               CHECK(ISC_R_FAILURE);
-       }
-
-       CHECK(load_symbol(handle, filename, "dyndb_version",
-                         (void **)&version_func));
-
-       version = version_func(NULL);
-       if (version < (DNS_DYNDB_VERSION - DNS_DYNDB_AGE) ||
-           version > DNS_DYNDB_VERSION)
-       {
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
-                             "driver API version mismatch: %d/%d", version,
-                             DNS_DYNDB_VERSION);
-               CHECK(ISC_R_FAILURE);
-       }
-
-       CHECK(load_symbol(handle, filename, "dyndb_init",
-                         (void **)&register_func));
-       CHECK(load_symbol(handle, filename, "dyndb_destroy",
-                         (void **)&destroy_func));
-
-       imp = isc_mem_get(mctx, sizeof(dyndb_implementation_t));
-
-       imp->mctx = NULL;
-       isc_mem_attach(mctx, &imp->mctx);
-       imp->handle = handle;
-       imp->register_func = register_func;
-       imp->destroy_func = destroy_func;
-       imp->name = isc_mem_strdup(mctx, instname);
-
-       imp->inst = NULL;
-       INIT_LINK(imp, link);
-
-       *impp = imp;
-       imp = NULL;
-
-cleanup:
-       if (result != ISC_R_SUCCESS) {
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
-                             "failed to dynamically load instance '%s' "
-                             "driver '%s': %d (%s)",
-                             instname, filename, GetLastError(),
-                             isc_result_totext(result));
-       }
-       if (imp != NULL) {
-               isc_mem_putanddetach(&imp->mctx, imp,
-                                    sizeof(dyndb_implementation_t));
-       }
-       if (result != ISC_R_SUCCESS && handle != NULL) {
-               FreeLibrary(handle);
-       }
-
-       return (result);
-}
-
-static void
-unload_library(dyndb_implementation_t **impp) {
-       dyndb_implementation_t *imp;
-
-       REQUIRE(impp != NULL && *impp != NULL);
-
-       imp = *impp;
-       *impp = NULL;
-
-       isc_mem_free(imp->mctx, imp->name);
-       isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t));
-}
-#else  /* HAVE_DLFCN_H || _WIN32 */
-static isc_result_t
-load_library(isc_mem_t *mctx, const char *filename, const char *instname,
-            dyndb_implementation_t **impp) {
-       UNUSED(mctx);
-       UNUSED(filename);
-       UNUSED(instname);
-       UNUSED(impp);
-
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_DYNDB,
-                     ISC_LOG_ERROR,
-                     "dynamic database support is not implemented");
-
-       return (ISC_R_NOTIMPLEMENTED);
-}
-
-static void
-unload_library(dyndb_implementation_t **impp) {
-       UNUSED(impp);
-}
-#endif /* HAVE_DLFCN_H */
 
 isc_result_t
 dns_dyndb_load(const char *libname, const char *name, const char *parameters,
index 36f5b4729ec56edee0b666f48228ebde2608197b..86f1124c4841fdb1ed9c9cc82702938c66464fd7 100644 (file)
 #include <sys/types.h> /* Required on some systems for dirent.h. */
 #include <unistd.h>    /* XXXDCL Required for ?. */
 
-#include <isc/lang.h>
+#ifdef __cplusplus
+#define ISC_LANG_BEGINDECLS extern "C" {
+#define ISC_LANG_ENDDECLS   }
+#else /* ifdef __cplusplus */
+#define ISC_LANG_BEGINDECLS
+#define ISC_LANG_ENDDECLS
+#endif /* ifdef __cplusplus */
 
 #ifdef NEED_OPTARG
 extern char *optarg;
index 31188558a86d70ae0043fa5b009cd58d81ead1be..ad16243615a0e0d5bb0c10627f44eb7adda20961 100644 (file)
 #include <time.h>
 #include <windows.h>
 
-#include <isc/lang.h>
+#ifdef __cplusplus
+#define ISC_LANG_BEGINDECLS extern "C" {
+#define ISC_LANG_ENDDECLS   }
+#else /* ifdef __cplusplus */
+#define ISC_LANG_BEGINDECLS
+#define ISC_LANG_ENDDECLS
+#endif /* ifdef __cplusplus */
 
 int isc_commandline_index = 1; /* Index into parent argv vector. */
 int isc_commandline_option;    /* Character checked for validity. */
index 9e7e6d49f046cced442a1a7e6bb686cbd2121411..91cc5ce94d0c6a43cb38e0a9c5ce2cc83bfc4638 100644 (file)
@@ -70,7 +70,7 @@ typedef struct geoip_state {
        MMDB_entry_s entry;
 } geoip_state_t;
 
-ISC_THREAD_LOCAL geoip_state_t geoip_state = { 0 };
+static thread_local geoip_state_t geoip_state = { 0 };
 
 static void
 set_state(const MMDB_s *db, const isc_netaddr_t *addr,
index 3a939709d4fc5845ece736178cab1570cb38569e..fe3bc7562f6918c54ffa86c3dd7336134f69b32f 100644 (file)
@@ -9,9 +9,21 @@
  * information regarding copyright ownership.
  */
 
-#ifdef GSSAPI
-
+#include <inttypes.h> /* IWYU pragma: keep */
 #include <stdbool.h>
+#include <time.h> /* IWYU pragma: keep */
+
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+
+#if HAVE_GSSAPI_GSSAPI_KRB5_H
+#include <gssapi/gssapi_krb5.h>
+#elif HAVE_GSSAPI_KRB5_H
+#include <gssapi_krb5.h>
+#endif
 
 #include <isc/base64.h>
 #include <isc/buffer.h>
@@ -354,8 +366,4 @@ dst__gssapi_init(dst_func_t **funcp) {
        return (ISC_R_SUCCESS);
 }
 
-#else  /* ifdef GSSAPI */
-int gssapi_link_unneeded = 1;
-#endif /* ifdef GSSAPI */
-
 /*! \file */
diff --git a/lib/dns/gssapictx-dummy.c b/lib/dns/gssapictx-dummy.c
new file mode 100644 (file)
index 0000000..b155ef7
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include <isc/result.h>
+#include <isc/types.h>
+#include <isc/util.h>
+
+#include <dns/types.h>
+
+#include <dst/gssapi.h>
+
+isc_result_t
+dst_gssapi_acquirecred(const dns_name_t *name, bool initiate,
+                      gss_cred_id_t *cred) {
+       REQUIRE(cred != NULL && *cred == NULL);
+
+       UNUSED(name);
+       UNUSED(initiate);
+       UNUSED(cred);
+
+       return (ISC_R_NOTIMPLEMENTED);
+}
+
+bool
+dst_gssapi_identitymatchesrealmkrb5(const dns_name_t *signer,
+                                   const dns_name_t *name,
+                                   const dns_name_t *realm, bool subdomain) {
+       UNUSED(signer);
+       UNUSED(name);
+       UNUSED(realm);
+       UNUSED(subdomain);
+
+       return (false);
+}
+
+bool
+dst_gssapi_identitymatchesrealmms(const dns_name_t *signer,
+                                 const dns_name_t *name,
+                                 const dns_name_t *realm, bool subdomain) {
+       UNUSED(signer);
+       UNUSED(name);
+       UNUSED(realm);
+       UNUSED(subdomain);
+
+       return (false);
+}
+
+isc_result_t
+dst_gssapi_releasecred(gss_cred_id_t *cred) {
+       UNUSED(cred);
+
+       return (ISC_R_NOTIMPLEMENTED);
+}
+
+isc_result_t
+dst_gssapi_initctx(const dns_name_t *name, isc_buffer_t *intoken,
+                  isc_buffer_t *outtoken, gss_ctx_id_t *gssctx,
+                  isc_mem_t *mctx, char **err_message) {
+       UNUSED(name);
+       UNUSED(intoken);
+       UNUSED(outtoken);
+       UNUSED(gssctx);
+       UNUSED(mctx);
+       UNUSED(err_message);
+
+       return (ISC_R_NOTIMPLEMENTED);
+}
+
+isc_result_t
+dst_gssapi_acceptctx(gss_cred_id_t cred, const char *gssapi_keytab,
+                    isc_region_t *intoken, isc_buffer_t **outtoken,
+                    gss_ctx_id_t *ctxout, dns_name_t *principal,
+                    isc_mem_t *mctx) {
+       UNUSED(cred);
+       UNUSED(gssapi_keytab);
+       UNUSED(intoken);
+       UNUSED(outtoken);
+       UNUSED(ctxout);
+       UNUSED(principal);
+       UNUSED(mctx);
+
+       return (ISC_R_NOTIMPLEMENTED);
+}
+
+isc_result_t
+dst_gssapi_deletectx(isc_mem_t *mctx, gss_ctx_id_t *gssctx) {
+       UNUSED(mctx);
+       UNUSED(gssctx);
+       return (ISC_R_NOTIMPLEMENTED);
+}
+
+/*! \file */
index 18f1280a283ab0fea39843f9a3dd3b1203e80e33..bf75147ef3a441d1a3b42546e57c95e772eab283 100644 (file)
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
+#include <time.h>
+
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+
+#if HAVE_GSSAPI_GSSAPI_KRB5_H
+#include <gssapi/gssapi_krb5.h>
+#elif HAVE_GSSAPI_KRB5_H
+#include <gssapi_krb5.h>
+#endif
+
+#if HAVE_KRB5_KRB5_H
+#include <krb5/krb5.h>
+#elif HAVE_KRB5_H
+#include <krb5.h>
+#endif
 
 #include <isc/buffer.h>
 #include <isc/dir.h>
 
 #include "dst_internal.h"
 
-/*
- * If we're using our own SPNEGO implementation (see configure.in),
- * pull it in now.  Otherwise, we just use whatever GSSAPI supplies.
- */
-#if defined(GSSAPI) && defined(USE_ISC_SPNEGO)
-#include "spnego.h"
-#define gss_accept_sec_context gss_accept_sec_context_spnego
-#define gss_init_sec_context   gss_init_sec_context_spnego
-#endif /* if defined(GSSAPI) && defined(USE_ISC_SPNEGO) */
-
-/*
- * Solaris8 apparently needs an explicit OID set, and Solaris10 needs
- * one for anything but Kerberos.  Supplying an explicit OID set
- * doesn't appear to hurt anything in other implementations, so we
- * always use one.  If we're not using our own SPNEGO implementation,
- * we include SPNEGO's OID.
- */
-#ifdef GSSAPI
-#ifdef WIN32
-#include <krb5/krb5.h>
-#else /* ifdef WIN32 */
-#include ISC_PLATFORM_KRB5HEADER
-#endif /* ifdef WIN32 */
-
+#ifndef GSS_KRB5_MECHANISM
 static unsigned char krb5_mech_oid_bytes[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7,
                                               0x12, 0x01, 0x02, 0x02 };
+static gss_OID_desc __gss_krb5_mechanism_oid_desc = {
+       sizeof(krb5_mech_oid_bytes), krb5_mech_oid_bytes
+};
+#define GSS_KRB5_MECHANISM (&__gss_krb5_mechanism_oid_desc)
+#endif /* ifndef GSS_KRB5_MECHANISM */
 
-#ifndef USE_ISC_SPNEGO
+#ifndef GSS_SPNEGO_MECHANISM
 static unsigned char spnego_mech_oid_bytes[] = { 0x2b, 0x06, 0x01,
                                                 0x05, 0x05, 0x02 };
-#endif /* ifndef USE_ISC_SPNEGO */
-
-static gss_OID_desc mech_oid_set_array[] = {
-       { sizeof(krb5_mech_oid_bytes), krb5_mech_oid_bytes },
-#ifndef USE_ISC_SPNEGO
-       { sizeof(spnego_mech_oid_bytes), spnego_mech_oid_bytes },
-#endif /* ifndef USE_ISC_SPNEGO */
+static gss_OID_desc __gss_spnego_mechanism_oid_desc = {
+       sizeof(spnego_mech_oid_bytes), spnego_mech_oid_bytes
 };
-
-static gss_OID_set_desc mech_oid_set = { sizeof(mech_oid_set_array) /
-                                                sizeof(*mech_oid_set_array),
-                                        mech_oid_set_array };
-
-#endif /* ifdef GSSAPI */
+#define GSS_SPNEGO_MECHANISM (&__gss_spnego_mechanism_oid_desc)
+#endif /* ifndef GSS_SPNEGO_MECHANISM */
 
 #define REGION_TO_GBUFFER(r, gb)          \
        do {                              \
@@ -106,7 +98,6 @@ static gss_OID_set_desc mech_oid_set = { sizeof(mech_oid_set_array) /
                        goto out;            \
        } while (0)
 
-#ifdef GSSAPI
 static inline void
 name_to_gbuffer(const dns_name_t *name, isc_buffer_t *buffer,
                gss_buffer_desc *gbuffer) {
@@ -187,9 +178,7 @@ log_cred(const gss_cred_id_t cred) {
                        gss_error_tostring(gret, minor, buf, sizeof(buf)));
        }
 }
-#endif /* ifdef GSSAPI */
 
-#ifdef GSSAPI
 /*
  * check for the most common configuration errors.
  *
@@ -243,12 +232,43 @@ check_config(const char *gss_name) {
        }
        krb5_free_context(krb5_ctx);
 }
-#endif /* ifdef GSSAPI */
+
+static OM_uint32
+mech_oid_set_create(OM_uint32 *minor, gss_OID_set *mech_oid_set) {
+       OM_uint32 gret;
+
+       gret = gss_create_empty_oid_set(minor, mech_oid_set);
+       if (gret != GSS_S_COMPLETE) {
+               return (gret);
+       }
+
+       gret = gss_add_oid_set_member(minor, GSS_KRB5_MECHANISM, mech_oid_set);
+       if (gret != GSS_S_COMPLETE) {
+               goto release;
+       }
+
+       gret = gss_add_oid_set_member(minor, GSS_SPNEGO_MECHANISM,
+                                     mech_oid_set);
+       if (gret != GSS_S_COMPLETE) {
+               goto release;
+       }
+
+release:
+       REQUIRE(gss_release_oid_set(minor, mech_oid_set) == GSS_S_COMPLETE);
+
+       return (gret);
+}
+
+static void
+mech_oid_set_release(gss_OID_set *mech_oid_set) {
+       OM_uint32 minor;
+
+       REQUIRE(gss_release_oid_set(&minor, mech_oid_set) == GSS_S_COMPLETE);
+}
 
 isc_result_t
 dst_gssapi_acquirecred(const dns_name_t *name, bool initiate,
                       gss_cred_id_t *cred) {
-#ifdef GSSAPI
        isc_result_t result;
        isc_buffer_t namebuf;
        gss_name_t gname;
@@ -258,6 +278,7 @@ dst_gssapi_acquirecred(const dns_name_t *name, bool initiate,
        OM_uint32 lifetime;
        gss_cred_usage_t usage;
        char buf[1024];
+       gss_OID_set mech_oid_set;
 
        REQUIRE(cred != NULL && *cred == NULL);
 
@@ -301,7 +322,14 @@ dst_gssapi_acquirecred(const dns_name_t *name, bool initiate,
                usage = GSS_C_ACCEPT;
        }
 
-       gret = gss_acquire_cred(&minor, gname, GSS_C_INDEFINITE, &mech_oid_set,
+       gret = mech_oid_set_create(&minor, &mech_oid_set);
+       if (gret != GSS_S_COMPLETE) {
+               gss_log(3, "failed to create OID_set: %s",
+                       gss_error_tostring(gret, minor, buf, sizeof(buf)));
+               return (ISC_R_FAILURE);
+       }
+
+       gret = gss_acquire_cred(&minor, gname, GSS_C_INDEFINITE, mech_oid_set,
                                usage, cred, NULL, &lifetime);
 
        if (gret != GSS_S_COMPLETE) {
@@ -324,6 +352,8 @@ dst_gssapi_acquirecred(const dns_name_t *name, bool initiate,
        result = ISC_R_SUCCESS;
 
 cleanup:
+       mech_oid_set_release(&mech_oid_set);
+
        if (gname != NULL) {
                gret = gss_release_name(&minor, &gname);
                if (gret != GSS_S_COMPLETE) {
@@ -334,22 +364,12 @@ cleanup:
        }
 
        return (result);
-#else  /* ifdef GSSAPI */
-       REQUIRE(cred != NULL && *cred == NULL);
-
-       UNUSED(name);
-       UNUSED(initiate);
-       UNUSED(cred);
-
-       return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef GSSAPI */
 }
 
 bool
 dst_gssapi_identitymatchesrealmkrb5(const dns_name_t *signer,
                                    const dns_name_t *name,
                                    const dns_name_t *realm, bool subdomain) {
-#ifdef GSSAPI
        char sbuf[DNS_NAME_FORMATSIZE];
        char rbuf[DNS_NAME_FORMATSIZE];
        char *sname;
@@ -421,20 +441,12 @@ dst_gssapi_identitymatchesrealmkrb5(const dns_name_t *signer,
        }
 
        return (true);
-#else  /* ifdef GSSAPI */
-       UNUSED(signer);
-       UNUSED(name);
-       UNUSED(realm);
-       UNUSED(subdomain);
-       return (false);
-#endif /* ifdef GSSAPI */
 }
 
 bool
 dst_gssapi_identitymatchesrealmms(const dns_name_t *signer,
                                  const dns_name_t *name,
                                  const dns_name_t *realm, bool subdomain) {
-#ifdef GSSAPI
        char sbuf[DNS_NAME_FORMATSIZE];
        char rbuf[DNS_NAME_FORMATSIZE];
        char *sname;
@@ -509,18 +521,10 @@ dst_gssapi_identitymatchesrealmms(const dns_name_t *signer,
        }
 
        return (true);
-#else  /* ifdef GSSAPI */
-       UNUSED(signer);
-       UNUSED(name);
-       UNUSED(realm);
-       UNUSED(subdomain);
-       return (false);
-#endif /* ifdef GSSAPI */
 }
 
 isc_result_t
 dst_gssapi_releasecred(gss_cred_id_t *cred) {
-#ifdef GSSAPI
        OM_uint32 gret, minor;
        char buf[1024];
 
@@ -535,14 +539,8 @@ dst_gssapi_releasecred(gss_cred_id_t *cred) {
        *cred = NULL;
 
        return (ISC_R_SUCCESS);
-#else  /* ifdef GSSAPI */
-       UNUSED(cred);
-
-       return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef GSSAPI */
 }
 
-#ifdef GSSAPI
 /*
  * Format a gssapi error message info into a char ** on the given memory
  * context. This is used to return gssapi error messages back up the
@@ -564,13 +562,11 @@ gss_err_message(isc_mem_t *mctx, uint32_t major, uint32_t minor,
                (*err_message) = isc_mem_strdup(mctx, estr);
        }
 }
-#endif /* ifdef GSSAPI */
 
 isc_result_t
 dst_gssapi_initctx(const dns_name_t *name, isc_buffer_t *intoken,
                   isc_buffer_t *outtoken, gss_ctx_id_t *gssctx,
                   isc_mem_t *mctx, char **err_message) {
-#ifdef GSSAPI
        isc_region_t r;
        isc_buffer_t namebuf;
        gss_name_t gname;
@@ -652,16 +648,6 @@ out:
        }
        (void)gss_release_name(&minor, &gname);
        return (result);
-#else  /* ifdef GSSAPI */
-       UNUSED(name);
-       UNUSED(intoken);
-       UNUSED(outtoken);
-       UNUSED(gssctx);
-       UNUSED(mctx);
-       UNUSED(err_message);
-
-       return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef GSSAPI */
 }
 
 isc_result_t
@@ -669,7 +655,6 @@ dst_gssapi_acceptctx(gss_cred_id_t cred, const char *gssapi_keytab,
                     isc_region_t *intoken, isc_buffer_t **outtoken,
                     gss_ctx_id_t *ctxout, dns_name_t *principal,
                     isc_mem_t *mctx) {
-#ifdef GSSAPI
        isc_region_t r;
        isc_buffer_t namebuf;
        gss_buffer_desc gnamebuf = GSS_C_EMPTY_BUFFER, gintoken,
@@ -691,7 +676,6 @@ dst_gssapi_acceptctx(gss_cred_id_t cred, const char *gssapi_keytab,
        }
 
        if (gssapi_keytab != NULL) {
-#if defined(ISC_PLATFORM_GSSAPI_KRB5_HEADER) || defined(WIN32)
                gret = gsskrb5_register_acceptor_identity(gssapi_keytab);
                if (gret != GSS_S_COMPLETE) {
                        gss_log(3,
@@ -701,27 +685,6 @@ dst_gssapi_acceptctx(gss_cred_id_t cred, const char *gssapi_keytab,
                                gss_error_tostring(gret, 0, buf, sizeof(buf)));
                        return (DNS_R_INVALIDTKEY);
                }
-#else  /* if defined(ISC_PLATFORM_GSSAPI_KRB5_HEADER) || defined(WIN32) */
-               /*
-                * Minimize memory leakage by only setting KRB5_KTNAME
-                * if it needs to change.
-                */
-               const char *old = getenv("KRB5_KTNAME");
-               if (old == NULL || strcmp(old, gssapi_keytab) != 0) {
-                       size_t size;
-                       char *kt;
-
-                       size = strlen(gssapi_keytab) + 13;
-                       kt = malloc(size);
-                       if (kt == NULL) {
-                               return (ISC_R_NOMEMORY);
-                       }
-                       snprintf(kt, size, "KRB5_KTNAME=%s", gssapi_keytab);
-                       if (putenv(kt) != 0) {
-                               return (ISC_R_NOMEMORY);
-                       }
-               }
-#endif /* if defined(ISC_PLATFORM_GSSAPI_KRB5_HEADER) || defined(WIN32) */
        }
 
        log_cred(cred);
@@ -819,22 +782,10 @@ out:
        }
 
        return (result);
-#else  /* ifdef GSSAPI */
-       UNUSED(cred);
-       UNUSED(gssapi_keytab);
-       UNUSED(intoken);
-       UNUSED(outtoken);
-       UNUSED(ctxout);
-       UNUSED(principal);
-       UNUSED(mctx);
-
-       return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef GSSAPI */
 }
 
 isc_result_t
 dst_gssapi_deletectx(isc_mem_t *mctx, gss_ctx_id_t *gssctx) {
-#ifdef GSSAPI
        OM_uint32 gret, minor;
        char buf[1024];
 
@@ -850,16 +801,10 @@ dst_gssapi_deletectx(isc_mem_t *mctx, gss_ctx_id_t *gssctx) {
                        gss_error_tostring(gret, minor, buf, sizeof(buf)));
        }
        return (ISC_R_SUCCESS);
-#else  /* ifdef GSSAPI */
-       UNUSED(mctx);
-       UNUSED(gssctx);
-       return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef GSSAPI */
 }
 
 char *
 gss_error_tostring(uint32_t major, uint32_t minor, char *buf, size_t buflen) {
-#ifdef GSSAPI
        gss_buffer_desc msg_minor = GSS_C_EMPTY_BUFFER,
                        msg_major = GSS_C_EMPTY_BUFFER;
        OM_uint32 msg_ctx, minor_stat;
@@ -884,12 +829,6 @@ gss_error_tostring(uint32_t major, uint32_t minor, char *buf, size_t buflen) {
                (void)gss_release_buffer(&minor_stat, &msg_minor);
        }
        return (buf);
-#else  /* ifdef GSSAPI */
-       snprintf(buf, buflen, "GSSAPI error: Major = %u, Minor = %u.", major,
-                minor);
-
-       return (buf);
-#endif /* ifdef GSSAPI */
 }
 
 void
index e20e1e505c0cf9e22da54d13b4d8476789684a1f..fb90ed610d29702e82f265bcc2bd870ad1747993 100644 (file)
@@ -156,13 +156,6 @@ typedef struct dns_zonemgr   dns_zonemgr_t;
 typedef struct dns_zt       dns_zt_t;
 typedef struct dns_ipkeylist dns_ipkeylist_t;
 
-/*
- * If we are not using GSSAPI, define the types we use as opaque types here.
- */
-#ifndef GSSAPI
-typedef struct not_defined_gss_cred_id *gss_cred_id_t;
-typedef struct not_defined_gss_ctx *   gss_ctx_id_t;
-#endif /* ifndef GSSAPI */
 typedef struct dst_gssapi_signverifyctx dst_gssapi_signverifyctx_t;
 
 typedef enum { dns_hash_sha1 = 1 } dns_hash_t;
diff --git a/lib/dns/include/dns/version.h b/lib/dns/include/dns/version.h
deleted file mode 100644 (file)
index 0552e81..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file dns/version.h */
-
-#ifndef DNS_VERSION_H
-#define DNS_VERSION_H 1
-
-#include <isc/platform.h>
-
-LIBDNS_EXTERNAL_DATA extern const char dns_version[];
-LIBDNS_EXTERNAL_DATA extern const char dns_major[];
-LIBDNS_EXTERNAL_DATA extern const char dns_mapapi[];
-
-LIBDNS_EXTERNAL_DATA extern const unsigned int dns_libinterface;
-LIBDNS_EXTERNAL_DATA extern const unsigned int dns_librevision;
-LIBDNS_EXTERNAL_DATA extern const unsigned int dns_libage;
-
-#endif /* DNS_VERSION_H */
index 4248b39ace859e428c093edf990e49266da5f136..7767577f69aa47db80e3fc9199b8e4de359c3a02 100644 (file)
 #include <inttypes.h>
 #include <stdbool.h>
 
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+
 #include <isc/formatcheck.h>
 #include <isc/lang.h>
 #include <isc/platform.h>
 
 #include <dns/types.h>
 
-#ifdef GSSAPI
-#ifdef WIN32
 /*
- * MSVC does not like macros in #include lines.
+ * Define dummy opaque typedefs if we are not using GSSAPI
+ *
+ * FIXME: Make the gssapi types completely opaque and include <gssapi.h> only
+ * internally.
  */
-#include <gssapi/gssapi.h>
-#include <gssapi/gssapi_krb5.h>
-#else /* ifdef WIN32 */
-#include ISC_PLATFORM_GSSAPIHEADER
-#ifdef ISC_PLATFORM_GSSAPI_KRB5_HEADER
-#include ISC_PLATFORM_GSSAPI_KRB5_HEADER
-#endif /* ifdef ISC_PLATFORM_GSSAPI_KRB5_HEADER */
-#endif /* ifdef WIN32 */
-#ifndef GSS_SPNEGO_MECHANISM
-#define GSS_SPNEGO_MECHANISM ((void *)0)
-#endif /* ifndef GSS_SPNEGO_MECHANISM */
-#endif /* ifdef GSSAPI */
+#if !HAVE_GSSAPI
+typedef void *gss_cred_id_t;
+typedef void *gss_ctx_id_t;
+#endif
 
 ISC_LANG_BEGINDECLS
 
diff --git a/lib/dns/mapapi b/lib/dns/mapapi
deleted file mode 100644 (file)
index d7a692f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# This value should be increased whenever changing the structure of
-# any object that will appear in a type 'map' master file (which
-# contains a working memory image of an RBT database), as loading 
-# an incorrect memory image produces an inconsistent and probably
-# nonfunctional database.  These structures include but are not
-# necessarily limited to dns_masterrawheader, rbtdb_file_header,
-# rbt_file_header, dns_rbtdb, dns_rbt, dns_rbtnode, rdatasetheader.
-#
-# Err on the side of caution: if anything in the RBTDB is changed,
-# bump the value.  Making map files unreadable protects the system
-# from instability; it's a feature not a bug.
-#
-# Whenever releasing a new major release of BIND9, set this value
-# back to 1.0 when releasing the first alpha.  Map files are *never*
-# compatible across major releases.
-MAPAPI=2.0
index 831b534fb1df3bba92146d06df19f08787b7d5c7..7f581847e4af3d125c7ff65bc5ef27d381bb079b 100644 (file)
@@ -148,7 +148,7 @@ LIBDNS_EXTERNAL_DATA const dns_name_t *dns_wildcardname = &wild;
 /*
  * dns_name_t to text post-conversion procedure.
  */
-ISC_THREAD_LOCAL dns_name_totextfilter_t *totext_filter_proc = NULL;
+static thread_local dns_name_totextfilter_t *totext_filter_proc = NULL;
 
 static void
 set_offsets(const dns_name_t *name, unsigned char *offsets,
index ba9b4dd1fda63c54b1e4d9b0f98e1b9754c974c0..72f4608d99fc4fbc16ed331e7c7227b775fa4627 100644 (file)
@@ -11,8 +11,6 @@
 
 /*! \file */
 
-#if !USE_PKCS11
-
 #include <stdbool.h>
 
 #include <openssl/bn.h>
@@ -684,5 +682,3 @@ dst__opensslecdsa_init(dst_func_t **funcp) {
        }
        return (ISC_R_SUCCESS);
 }
-
-#endif /* !USE_PKCS11 */
index 524d6473bfcb1dbf840f37ce0c7a2816f8c018e1..9ccde3a1e8157a019982a1dee7a8418717236767 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-#if !USE_PKCS11
+/*! \file */
 
 #if HAVE_OPENSSL_ED25519 || HAVE_OPENSSL_ED448
 
@@ -33,7 +33,6 @@
 #include "dst_internal.h"
 #include "dst_openssl.h"
 #include "dst_parse.h"
-#include "openssl_shim.h"
 
 #define DST_RET(a)        \
        {                 \
@@ -777,7 +776,3 @@ dst__openssleddsa_init(dst_func_t **funcp) {
 }
 
 #endif /* HAVE_OPENSSL_ED25519 || HAVE_OPENSSL_ED448 */
-
-#endif /* !USE_PKCS11 */
-
-/*! \file */
index bc975be91a637873cfc02da65f51ffbed8ed3442..54542f87217a304b874cdedced8a3457d6054132 100644 (file)
@@ -9,7 +9,7 @@
  * information regarding copyright ownership.
  */
 
-#if !USE_PKCS11
+/*! \file */
 
 #include <inttypes.h>
 #include <stdbool.h>
@@ -1193,7 +1193,3 @@ dst__opensslrsa_init(dst_func_t **funcp, unsigned char algorithm) {
        }
        return (ISC_R_SUCCESS);
 }
-
-#endif /* !USE_PKCS11 */
-
-/*! \file */
index bbe847d377cd4ff269315d72d7af2fe0dc4e3fcf..285b7de049df7642773617c16a72cc53850219c1 100644 (file)
@@ -9,8 +9,6 @@
  * information regarding copyright ownership.
  */
 
-#if USE_PKCS11
-
 #include <isc/util.h>
 
 #include <pk11/internal.h>
@@ -33,6 +31,3 @@ dst__pkcs11_toresult(const char *funcname, const char *file, int line,
        }
        return (fallback);
 }
-
-#endif /* USE_PKCS11 */
-/*! \file */
index dbbdc48b653cf7db1e7ff035a9cbb71f4b7c6f83..7ad46db951d9b3cebc5efc8beca3380012afbdc8 100644 (file)
@@ -11,8 +11,6 @@
 
 /*! \file */
 
-#if USE_PKCS11
-
 #include <stdbool.h>
 
 #include <isc/mem.h>
@@ -1149,5 +1147,3 @@ dst__pkcs11ecdsa_init(dst_func_t **funcp) {
        }
        return (ISC_R_SUCCESS);
 }
-
-#endif /* USE_PKCS11 */
index 17941287324466b65828ad23900536de8024fca1..9b1061b4914fd8d4e890590ec9f702add028e999 100644 (file)
@@ -11,8 +11,6 @@
 
 /*! \file */
 
-#if USE_PKCS11
-
 #include <stdbool.h>
 
 #include <isc/mem.h>
@@ -1111,5 +1109,3 @@ dst__pkcs11eddsa_init(dst_func_t **funcp) {
        }
        return (ISC_R_SUCCESS);
 }
-
-#endif /* USE_PKCS11 */
index 5487f2986947eb04faea72438f31a1e07ba64038..fc5efe3bb8b2d79e95462b2f9d43ef44c88d5eec 100644 (file)
@@ -11,8 +11,6 @@
 
 /*! \file */
 
-#if USE_PKCS11
-
 #include <inttypes.h>
 #include <stdbool.h>
 
@@ -2061,5 +2059,3 @@ dst__pkcs11rsa_init(dst_func_t **funcp) {
        }
        return (ISC_R_SUCCESS);
 }
-
-#endif /* USE_PKCS11 */
index da38f76155d878331cab7f615381a1ff23e0ac02..7ac9b0c15c7fd329eda7851308fe1bbebea43d37 100644 (file)
@@ -40,7 +40,6 @@
 #include <dns/log.h>
 #include <dns/rbt.h>
 #include <dns/result.h>
-#include <dns/version.h>
 
 #define CHECK(x)                             \
        do {                                 \
@@ -447,7 +446,7 @@ init_file_version(void) {
 
        memset(FILE_VERSION, 0, sizeof(FILE_VERSION));
        n = snprintf(FILE_VERSION, sizeof(FILE_VERSION), "RBT Image %s %s",
-                    dns_major, dns_mapapi);
+                    PACKAGE_VERSION_MAJOR, MAPAPI);
        INSIST(n > 0 && (unsigned int)n < sizeof(FILE_VERSION));
 }
 
index a4522c1dd80bb34cf5e55b1f519a81eb7c1cf67b..2e268c7f769f160db17d3ca4c5173233b4d825c5 100644 (file)
@@ -58,7 +58,6 @@
 #include <dns/result.h>
 #include <dns/stats.h>
 #include <dns/time.h>
-#include <dns/version.h>
 #include <dns/view.h>
 #include <dns/zone.h>
 #include <dns/zonekey.h>
@@ -7711,7 +7710,7 @@ init_file_version(void) {
 
        memset(FILE_VERSION, 0, sizeof(FILE_VERSION));
        n = snprintf(FILE_VERSION, sizeof(FILE_VERSION), "RBTDB Image %s %s",
-                    dns_major, dns_mapapi);
+                    PACKAGE_VERSION_MAJOR, MAPAPI);
        INSIST(n > 0 && (unsigned int)n < sizeof(FILE_VERSION));
 }
 
index 645a3e12cb04a4b73598ce12f79eb3bf77201808..80203d95e167b520352115560e5c1b56ad2f0f71 100644 (file)
@@ -583,7 +583,7 @@ struct dns_resolver {
 #ifdef ENABLE_AFL
 bool dns_fuzzing_resolver = false;
 void
-dns_resolver_setfuzzing() {
+dns_resolver_setfuzzing(void) {
        dns_fuzzing_resolver = true;
 }
 #endif /* ifdef ENABLE_AFL */
diff --git a/lib/dns/spnego.asn1 b/lib/dns/spnego.asn1
deleted file mode 100644 (file)
index abf9b76..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
--- Copyright (C) The Internet Society 2005.  This version of
--- this module is part of RFC 4178; see the RFC itself for
--- full legal notices.
-
--- (The above copyright notice is per RFC 3978 5.6 (a), q.v.)
-
--- This is the SPNEGO ASN.1 module from RFC 4178, tweaked
--- to get the Heimdal ASN.1 compiler to accept it.
-
-SPNEGOASNOneSpec DEFINITIONS ::= BEGIN
-
-MechType ::= OBJECT IDENTIFIER
-
-MechTypeList ::= SEQUENCE OF MechType
-
-ContextFlags ::= BIT STRING {
-    delegFlag       (0),
-    mutualFlag      (1),
-    replayFlag      (2),
-    sequenceFlag    (3),
-    anonFlag        (4),
-    confFlag        (5),
-    integFlag       (6)
-}
-
-NegTokenInit ::= SEQUENCE {
-    mechTypes       [0] MechTypeList,
-    reqFlags        [1] ContextFlags  OPTIONAL,
-    mechToken       [2] OCTET STRING  OPTIONAL,
-    mechListMIC     [3] OCTET STRING  OPTIONAL
-}
-
-NegTokenResp ::= SEQUENCE {
-    negState       [0] ENUMERATED {
-       accept-completed    (0),
-       accept-incomplete   (1),
-       reject              (2),
-       request-mic         (3)
-    }                                 OPTIONAL,
-    supportedMech   [1] MechType      OPTIONAL,
-    responseToken   [2] OCTET STRING  OPTIONAL,
-    mechListMIC     [3] OCTET STRING  OPTIONAL
-}
-
-NegotiationToken ::= CHOICE {
-    negTokenInit    [0] NegTokenInit,
-    negTokenResp    [1] NegTokenResp
-}
-
-END
diff --git a/lib/dns/spnego.c b/lib/dns/spnego.c
deleted file mode 100644 (file)
index c8efafe..0000000
+++ /dev/null
@@ -1,1753 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- * \brief
- * Portable SPNEGO implementation.
- *
- * This is part of a portable implementation of the SPNEGO protocol
- * (RFCs 2478 and 4178).  This implementation uses the RFC 4178 ASN.1
- * module but is not a full implementation of the RFC 4178 protocol;
- * at the moment, we only support GSS-TSIG with Kerberos
- * authentication, so we only need enough of the SPNEGO protocol to
- * support that.
- *
- * The files that make up this portable SPNEGO implementation are:
- * \li spnego.c        (this file)
- * \li spnego.h        (API SPNEGO exports to the rest of lib/dns)
- * \li spnego.asn1     (SPNEGO ASN.1 module)
- * \li spnego_asn1.c   (routines generated from spngo.asn1)
- * \li spnego_asn1.pl  (perl script to generate spnego_asn1.c)
- *
- * Everything but the functions exported in spnego.h is static, to
- * avoid possible conflicts with other libraries (particularly Heimdal,
- * since much of this code comes from Heimdal by way of mod_auth_kerb).
- *
- * spnego_asn1.c is shipped as part of lib/dns because generating it
- * requires both Perl and the Heimdal ASN.1 compiler.  See
- * spnego_asn1.pl for further details.  We've tried to eliminate all
- * compiler warnings from the generated code, but you may see a few
- * when using a compiler version we haven't tested yet.
- */
-
-/*
- * Portions of this code were derived from mod_auth_kerb and Heimdal.
- * These packages are available from:
- *
- *   http://modauthkerb.sourceforge.net/
- *   http://www.pdc.kth.se/heimdal/
- *
- * and were released under the following licenses:
- *
- * ----------------------------------------------------------------
- *
- * Copyright (c) 2004 Masarykova universita
- * (Masaryk University, Brno, Czech Republic)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. Neither the name of the University 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 OWNER 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.
- *
- * ----------------------------------------------------------------
- *
- * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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.
- */
-
-/*
- * XXXSRA We should omit this file entirely in Makefile.in via autoconf,
- * but this will keep it from generating errors until that's written.
- */
-
-#ifdef GSSAPI
-
-/*
- * XXXSRA Some of the following files are almost certainly unnecessary,
- * but using this list (borrowed from gssapictx.c) gets rid of some
- * whacky compilation errors when building with MSVC and should be
- * harmless in any case.
- */
-
-#include <errno.h>
-#include <inttypes.h>
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include <isc/buffer.h>
-#include <isc/dir.h>
-#include <isc/lex.h>
-#include <isc/mem.h>
-#include <isc/once.h>
-#include <isc/random.h>
-#include <isc/safe.h>
-#include <isc/string.h>
-#include <isc/time.h>
-#include <isc/util.h>
-
-#include <dns/fixedname.h>
-#include <dns/keyvalues.h>
-#include <dns/log.h>
-#include <dns/name.h>
-#include <dns/rdata.h>
-#include <dns/rdataclass.h>
-#include <dns/result.h>
-#include <dns/types.h>
-
-#include <dst/gssapi.h>
-#include <dst/result.h>
-
-#include "dst_internal.h"
-
-/*
- * The API we export
- */
-#include "spnego.h"
-
-/* asn1_err.h */
-/* Generated from ../../../lib/asn1/asn1_err.et */
-
-#ifndef ERROR_TABLE_BASE_asn1
-/* these may be brought in already via gssapi_krb5.h */
-typedef enum asn1_error_number {
-       ASN1_BAD_TIMEFORMAT = 1859794432,
-       ASN1_MISSING_FIELD = 1859794433,
-       ASN1_MISPLACED_FIELD = 1859794434,
-       ASN1_TYPE_MISMATCH = 1859794435,
-       ASN1_OVERFLOW = 1859794436,
-       ASN1_OVERRUN = 1859794437,
-       ASN1_BAD_ID = 1859794438,
-       ASN1_BAD_LENGTH = 1859794439,
-       ASN1_BAD_FORMAT = 1859794440,
-       ASN1_PARSE_ERROR = 1859794441
-} asn1_error_number;
-
-#define ERROR_TABLE_BASE_asn1 1859794432
-#endif /* ifndef ERROR_TABLE_BASE_asn1 */
-
-#define __asn1_common_definitions__
-
-typedef struct octet_string {
-       size_t length;
-       void *data;
-} octet_string;
-
-typedef char *general_string;
-
-typedef char *utf8_string;
-
-typedef struct oid {
-       size_t length;
-       unsigned *components;
-} oid;
-
-/* der.h */
-
-typedef enum {
-       ASN1_C_UNIV = 0,
-       ASN1_C_APPL = 1,
-       ASN1_C_CONTEXT = 2,
-       ASN1_C_PRIVATE = 3
-} Der_class;
-
-typedef enum { PRIM = 0, CONS = 1 } Der_type;
-
-/* Universal tags */
-
-enum { UT_Boolean = 1,
-       UT_Integer = 2,
-       UT_BitString = 3,
-       UT_OctetString = 4,
-       UT_Null = 5,
-       UT_OID = 6,
-       UT_Enumerated = 10,
-       UT_Sequence = 16,
-       UT_Set = 17,
-       UT_PrintableString = 19,
-       UT_IA5String = 22,
-       UT_UTCTime = 23,
-       UT_GeneralizedTime = 24,
-       UT_VisibleString = 26,
-       UT_GeneralString = 27 };
-
-#define ASN1_INDEFINITE 0xdce0deed
-
-static int
-der_get_length(const unsigned char *p, size_t len, size_t *val, size_t *size);
-
-static int
-der_get_octet_string(const unsigned char *p, size_t len, octet_string *data,
-                    size_t *size);
-static int
-der_get_oid(const unsigned char *p, size_t len, oid *data, size_t *size);
-static int
-der_get_tag(const unsigned char *p, size_t len, Der_class *xclass,
-           Der_type *type, int *tag, size_t *size);
-
-static int
-der_match_tag(const unsigned char *p, size_t len, Der_class xclass,
-             Der_type type, int tag, size_t *size);
-static int
-der_match_tag_and_length(const unsigned char *p, size_t len, Der_class xclass,
-                        Der_type type, int tag, size_t *length_ret,
-                        size_t *size);
-
-static int
-decode_oid(const unsigned char *p, size_t len, oid *k, size_t *size);
-
-static int
-decode_enumerated(const unsigned char *p, size_t len, void *num, size_t *size);
-
-static int
-decode_octet_string(const unsigned char *, size_t, octet_string *, size_t *);
-
-static int
-der_put_int(unsigned char *p, size_t len, int val, size_t *);
-
-static int
-der_put_length(unsigned char *p, size_t len, size_t val, size_t *);
-
-static int
-der_put_octet_string(unsigned char *p, size_t len, const octet_string *data,
-                    size_t *);
-static int
-der_put_oid(unsigned char *p, size_t len, const oid *data, size_t *size);
-static int
-der_put_tag(unsigned char *p, size_t len, Der_class xclass, Der_type type,
-           int tag, size_t *);
-static int
-der_put_length_and_tag(unsigned char *, size_t, size_t, Der_class, Der_type,
-                      int, size_t *);
-
-static int
-encode_enumerated(unsigned char *p, size_t len, const void *data, size_t *);
-
-static int
-encode_octet_string(unsigned char *p, size_t len, const octet_string *k,
-                   size_t *);
-static int
-encode_oid(unsigned char *p, size_t len, const oid *k, size_t *);
-
-static void
-free_octet_string(octet_string *k);
-
-static void
-free_oid(oid *k);
-
-static size_t
-length_len(size_t len);
-
-static int
-fix_dce(size_t reallen, size_t *len);
-
-/*
- * Include stuff generated by the ASN.1 compiler.
- */
-
-#include "spnego_asn1.c"
-
-/*
- * Force the oid arrays to be uint64_t aligned to silence warnings
- * about the arrays not being properly aligned for (void *).
- */
-typedef union {
-       unsigned char b[8];
-       uint64_t _align;
-} aligned8;
-typedef union {
-       unsigned char b[16];
-       uint64_t _align[2];
-} aligned16;
-
-static aligned16 gss_krb5_mech_oid_bytes = { { 0x2a, 0x86, 0x48, 0x86, 0xf7,
-                                              0x12, 0x01, 0x02, 0x02 } };
-
-static gss_OID_desc gss_krb5_mech_oid_desc = { 9, gss_krb5_mech_oid_bytes.b };
-
-static gss_OID GSS_KRB5_MECH = &gss_krb5_mech_oid_desc;
-
-static aligned16 gss_mskrb5_mech_oid_bytes = { { 0x2a, 0x86, 0x48, 0x82, 0xf7,
-                                                0x12, 0x01, 0x02, 0x02 } };
-
-static gss_OID_desc gss_mskrb5_mech_oid_desc = { 9,
-                                                gss_mskrb5_mech_oid_bytes.b };
-
-static gss_OID GSS_MSKRB5_MECH = &gss_mskrb5_mech_oid_desc;
-
-static aligned8 gss_spnego_mech_oid_bytes = { { 0x2b, 0x06, 0x01, 0x05, 0x05,
-                                               0x02 } };
-
-static gss_OID_desc gss_spnego_mech_oid_desc = { 6,
-                                                gss_spnego_mech_oid_bytes.b };
-
-static gss_OID GSS_SPNEGO_MECH = &gss_spnego_mech_oid_desc;
-
-/* spnegokrb5_locl.h */
-
-static OM_uint32
-gssapi_spnego_encapsulate(OM_uint32 *, unsigned char *, size_t, gss_buffer_t,
-                         const gss_OID);
-
-static OM_uint32
-gssapi_spnego_decapsulate(OM_uint32 *, gss_buffer_t, unsigned char **, size_t *,
-                         const gss_OID);
-
-/* mod_auth_kerb.c */
-
-static bool
-cmp_gss_type(gss_buffer_t token, gss_OID gssoid) {
-       unsigned char *p;
-       size_t len;
-
-       if (token->length == 0U) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-
-       p = token->value;
-       if (*p++ != 0x60) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       len = *p++;
-       if (len & 0x80) {
-               if ((len & 0x7f) > 4U) {
-                       return (GSS_S_DEFECTIVE_TOKEN);
-               }
-               p += len & 0x7f;
-       }
-       if (*p++ != 0x06) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-
-       if (((OM_uint32)*p++) != gssoid->length) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-
-       return (!isc_safe_memequal(p, gssoid->elements, gssoid->length));
-}
-
-/* accept_sec_context.c */
-/*
- * SPNEGO wrapper for Kerberos5 GSS-API kouril@ics.muni.cz, 2003 (mostly
- * based on Heimdal code)
- */
-
-static OM_uint32
-code_NegTokenArg(OM_uint32 *minor_status, const NegTokenResp *resp,
-                unsigned char **outbuf, size_t *outbuf_size) {
-       OM_uint32 ret;
-       u_char *buf;
-       size_t buf_size, buf_len = 0;
-
-       buf_size = 1024;
-       buf = malloc(buf_size);
-       if (buf == NULL) {
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       do {
-               ret = encode_NegTokenResp(buf + buf_size - 1, buf_size, resp,
-                                         &buf_len);
-               if (ret == 0) {
-                       size_t tmp;
-
-                       ret = der_put_length_and_tag(
-                               buf + buf_size - buf_len - 1,
-                               buf_size - buf_len, buf_len, ASN1_C_CONTEXT,
-                               CONS, 1, &tmp);
-                       if (ret == 0) {
-                               buf_len += tmp;
-                       }
-               }
-               if (ret) {
-                       if (ret == ASN1_OVERFLOW) {
-                               u_char *tmp;
-
-                               buf_size *= 2;
-                               tmp = realloc(buf, buf_size);
-                               if (tmp == NULL) {
-                                       *minor_status = ENOMEM;
-                                       free(buf);
-                                       return (GSS_S_FAILURE);
-                               }
-                               buf = tmp;
-                       } else {
-                               *minor_status = ret;
-                               free(buf);
-                               return (GSS_S_FAILURE);
-                       }
-               }
-       } while (ret == ASN1_OVERFLOW);
-
-       *outbuf = malloc(buf_len);
-       if (*outbuf == NULL) {
-               *minor_status = ENOMEM;
-               free(buf);
-               return (GSS_S_FAILURE);
-       }
-       memmove(*outbuf, buf + buf_size - buf_len, buf_len);
-       *outbuf_size = buf_len;
-
-       free(buf);
-
-       return (GSS_S_COMPLETE);
-}
-
-static OM_uint32
-send_reject(OM_uint32 *minor_status, gss_buffer_t output_token) {
-       NegTokenResp resp;
-       OM_uint32 ret;
-
-       resp.negState = malloc(sizeof(*resp.negState));
-       if (resp.negState == NULL) {
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       *(resp.negState) = reject;
-
-       resp.supportedMech = NULL;
-       resp.responseToken = NULL;
-       resp.mechListMIC = NULL;
-
-       ret = code_NegTokenArg(minor_status, &resp,
-                              (unsigned char **)&output_token->value,
-                              &output_token->length);
-       free_NegTokenResp(&resp);
-       if (ret) {
-               return (ret);
-       }
-
-       return (GSS_S_BAD_MECH);
-}
-
-static OM_uint32
-send_accept(OM_uint32 *minor_status, gss_buffer_t output_token,
-           gss_buffer_t mech_token, const gss_OID pref) {
-       NegTokenResp resp;
-       OM_uint32 ret;
-
-       memset(&resp, 0, sizeof(resp));
-       resp.negState = malloc(sizeof(*resp.negState));
-       if (resp.negState == NULL) {
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       *(resp.negState) = accept_completed;
-
-       resp.supportedMech = malloc(sizeof(*resp.supportedMech));
-       if (resp.supportedMech == NULL) {
-               free_NegTokenResp(&resp);
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       ret = der_get_oid(pref->elements, pref->length, resp.supportedMech,
-                         NULL);
-       if (ret) {
-               free_NegTokenResp(&resp);
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       if (mech_token != NULL && mech_token->length != 0U) {
-               resp.responseToken = malloc(sizeof(*resp.responseToken));
-               if (resp.responseToken == NULL) {
-                       free_NegTokenResp(&resp);
-                       *minor_status = ENOMEM;
-                       return (GSS_S_FAILURE);
-               }
-               resp.responseToken->length = mech_token->length;
-               resp.responseToken->data = mech_token->value;
-       }
-
-       ret = code_NegTokenArg(minor_status, &resp,
-                              (unsigned char **)&output_token->value,
-                              &output_token->length);
-       if (resp.responseToken != NULL) {
-               free(resp.responseToken);
-               resp.responseToken = NULL;
-       }
-       free_NegTokenResp(&resp);
-       if (ret) {
-               return (ret);
-       }
-
-       return (GSS_S_COMPLETE);
-}
-
-OM_uint32
-gss_accept_sec_context_spnego(OM_uint32 *minor_status,
-                             gss_ctx_id_t *context_handle,
-                             const gss_cred_id_t acceptor_cred_handle,
-                             const gss_buffer_t input_token_buffer,
-                             const gss_channel_bindings_t input_chan_bindings,
-                             gss_name_t *src_name, gss_OID *mech_type,
-                             gss_buffer_t output_token, OM_uint32 *ret_flags,
-                             OM_uint32 *time_rec,
-                             gss_cred_id_t *delegated_cred_handle) {
-       NegTokenInit init_token;
-       OM_uint32 major_status = GSS_S_COMPLETE;
-       OM_uint32 minor_status2;
-       gss_buffer_desc ibuf, obuf;
-       gss_buffer_t ot = NULL;
-       gss_OID pref = GSS_KRB5_MECH;
-       unsigned char *buf;
-       size_t buf_size;
-       size_t len, taglen, ni_len;
-       int found = 0;
-       int ret;
-       unsigned i;
-
-       /*
-        * Before doing anything else, see whether this is a SPNEGO
-        * PDU.  If not, dispatch to the GSSAPI library and get out.
-        */
-
-       if (cmp_gss_type(input_token_buffer, GSS_SPNEGO_MECH)) {
-               return (gss_accept_sec_context(
-                       minor_status, context_handle, acceptor_cred_handle,
-                       input_token_buffer, input_chan_bindings, src_name,
-                       mech_type, output_token, ret_flags, time_rec,
-                       delegated_cred_handle));
-       }
-
-       /*
-        * If we get here, it's SPNEGO.
-        */
-
-       memset(&init_token, 0, sizeof(init_token));
-
-       ret = gssapi_spnego_decapsulate(minor_status, input_token_buffer, &buf,
-                                       &buf_size, GSS_SPNEGO_MECH);
-       if (ret) {
-               return (ret);
-       }
-
-       ret = der_match_tag_and_length(buf, buf_size, ASN1_C_CONTEXT, CONS, 0,
-                                      &len, &taglen);
-       if (ret) {
-               return (ret);
-       }
-
-       ret = decode_NegTokenInit(buf + taglen, len, &init_token, &ni_len);
-       if (ret) {
-               *minor_status = EINVAL; /* XXX */
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-
-       for (i = 0; !found && i < init_token.mechTypes.len; ++i) {
-               unsigned char mechbuf[17];
-               size_t mech_len;
-
-               ret = der_put_oid(mechbuf + sizeof(mechbuf) - 1,
-                                 sizeof(mechbuf), &init_token.mechTypes.val[i],
-                                 &mech_len);
-               if (ret) {
-                       free_NegTokenInit(&init_token);
-                       return (GSS_S_DEFECTIVE_TOKEN);
-               }
-               if (mech_len == GSS_KRB5_MECH->length &&
-                   isc_safe_memequal(GSS_KRB5_MECH->elements,
-                                     mechbuf + sizeof(mechbuf) - mech_len,
-                                     mech_len))
-               {
-                       found = 1;
-                       break;
-               }
-               if (mech_len == GSS_MSKRB5_MECH->length &&
-                   isc_safe_memequal(GSS_MSKRB5_MECH->elements,
-                                     mechbuf + sizeof(mechbuf) - mech_len,
-                                     mech_len))
-               {
-                       found = 1;
-                       if (i == 0) {
-                               pref = GSS_MSKRB5_MECH;
-                       }
-                       break;
-               }
-       }
-
-       if (!found) {
-               free_NegTokenInit(&init_token);
-               return (send_reject(minor_status, output_token));
-       }
-
-       if (i == 0 && init_token.mechToken != NULL) {
-               ibuf.length = init_token.mechToken->length;
-               ibuf.value = init_token.mechToken->data;
-
-               major_status = gss_accept_sec_context(
-                       minor_status, context_handle, acceptor_cred_handle,
-                       &ibuf, input_chan_bindings, src_name, mech_type, &obuf,
-                       ret_flags, time_rec, delegated_cred_handle);
-               if (GSS_ERROR(major_status)) {
-                       free_NegTokenInit(&init_token);
-                       send_reject(&minor_status2, output_token);
-                       return (major_status);
-               }
-               ot = &obuf;
-       }
-       ret = send_accept(&minor_status2, output_token, ot, pref);
-       free_NegTokenInit(&init_token);
-       if (ot != NULL && ot->length != 0U) {
-               gss_release_buffer(&minor_status2, ot);
-       }
-
-       return (ret != GSS_S_COMPLETE ? (OM_uint32)ret : major_status);
-}
-
-/* decapsulate.c */
-
-static OM_uint32
-gssapi_verify_mech_header(u_char **str, size_t total_len, const gss_OID mech) {
-       size_t len, len_len, mech_len, foo;
-       int e;
-       u_char *p = *str;
-
-       if (total_len < 1U) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       if (*p++ != 0x60) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       e = der_get_length(p, total_len - 1, &len, &len_len);
-       if (e || 1 + len_len + len != total_len) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       p += len_len;
-       if (*p++ != 0x06) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       e = der_get_length(p, total_len - 1 - len_len - 1, &mech_len, &foo);
-       if (e) {
-               return (GSS_S_DEFECTIVE_TOKEN);
-       }
-       p += foo;
-       if (mech_len != mech->length) {
-               return (GSS_S_BAD_MECH);
-       }
-       if (!isc_safe_memequal(p, mech->elements, mech->length)) {
-               return (GSS_S_BAD_MECH);
-       }
-       p += mech_len;
-       *str = p;
-       return (GSS_S_COMPLETE);
-}
-
-/*
- * Remove the GSS-API wrapping from `in_token' giving `buf and buf_size' Does
- * not copy data, so just free `in_token'.
- */
-
-static OM_uint32
-gssapi_spnego_decapsulate(OM_uint32 *minor_status,
-                         gss_buffer_t input_token_buffer, unsigned char **buf,
-                         size_t *buf_len, const gss_OID mech) {
-       u_char *p;
-       OM_uint32 ret;
-
-       p = input_token_buffer->value;
-       ret = gssapi_verify_mech_header(&p, input_token_buffer->length, mech);
-       if (ret) {
-               *minor_status = ret;
-               return (GSS_S_FAILURE);
-       }
-       *buf_len = input_token_buffer->length -
-                  (p - (u_char *)input_token_buffer->value);
-       *buf = p;
-       return (GSS_S_COMPLETE);
-}
-
-/* der_free.c */
-
-static void
-free_octet_string(octet_string *k) {
-       free(k->data);
-       k->data = NULL;
-}
-
-static void
-free_oid(oid *k) {
-       free(k->components);
-       k->components = NULL;
-}
-
-/* der_get.c */
-
-/*
- * All decoding functions take a pointer `p' to first position in which to
- * read, from the left, `len' which means the maximum number of characters we
- * are able to read, `ret' were the value will be returned and `size' where
- * the number of used bytes is stored. Either 0 or an error code is returned.
- */
-
-static int
-der_get_unsigned(const unsigned char *p, size_t len, unsigned *ret,
-                size_t *size) {
-       unsigned val = 0;
-       size_t oldlen = len;
-
-       while (len--) {
-               val = val * 256 + *p++;
-       }
-       *ret = val;
-       if (size) {
-               *size = oldlen;
-       }
-       return (0);
-}
-
-static int
-der_get_int(const unsigned char *p, size_t len, int *ret, size_t *size) {
-       int val = 0;
-       size_t oldlen = len;
-
-       if (len > 0U) {
-               val = (signed char)*p++;
-               while (--len) {
-                       val = val * 256 + *p++;
-               }
-       }
-       *ret = val;
-       if (size) {
-               *size = oldlen;
-       }
-       return (0);
-}
-
-static int
-der_get_length(const unsigned char *p, size_t len, size_t *val, size_t *size) {
-       size_t v;
-
-       if (len <= 0U) {
-               return (ASN1_OVERRUN);
-       }
-       --len;
-       v = *p++;
-       if (v < 128U) {
-               *val = v;
-               if (size) {
-                       *size = 1;
-               }
-       } else {
-               int e;
-               size_t l;
-               unsigned tmp;
-
-               if (v == 0x80U) {
-                       *val = ASN1_INDEFINITE;
-                       if (size) {
-                               *size = 1;
-                       }
-                       return (0);
-               }
-               v &= 0x7F;
-               if (len < v) {
-                       return (ASN1_OVERRUN);
-               }
-               e = der_get_unsigned(p, v, &tmp, &l);
-               if (e) {
-                       return (e);
-               }
-               *val = tmp;
-               if (size) {
-                       *size = l + 1;
-               }
-       }
-       return (0);
-}
-
-static int
-der_get_octet_string(const unsigned char *p, size_t len, octet_string *data,
-                    size_t *size) {
-       data->length = len;
-       if (len != 0U) {
-               data->data = malloc(len);
-               if (data->data == NULL) {
-                       return (ENOMEM);
-               }
-               memmove(data->data, p, len);
-       } else {
-               data->data = NULL;
-       }
-       if (size) {
-               *size = len;
-       }
-       return (0);
-}
-
-static int
-der_get_oid(const unsigned char *p, size_t len, oid *data, size_t *size) {
-       int n;
-       size_t oldlen = len;
-
-       data->components = NULL;
-       data->length = 0;
-       if (len < 1U) {
-               return (ASN1_OVERRUN);
-       }
-
-       data->components = malloc(len * sizeof(*data->components));
-       if (data->components == NULL) {
-               return (ENOMEM);
-       }
-       data->components[0] = (*p) / 40;
-       data->components[1] = (*p) % 40;
-       --len;
-       ++p;
-       for (n = 2; len > 0U; ++n) {
-               unsigned u = 0;
-
-               do {
-                       --len;
-                       u = u * 128 + (*p++ % 128);
-               } while (len > 0U && p[-1] & 0x80);
-               data->components[n] = u;
-       }
-       if (p[-1] & 0x80) {
-               free_oid(data);
-               return (ASN1_OVERRUN);
-       }
-       data->length = n;
-       if (size) {
-               *size = oldlen;
-       }
-       return (0);
-}
-
-static int
-der_get_tag(const unsigned char *p, size_t len, Der_class *xclass,
-           Der_type *type, int *tag, size_t *size) {
-       if (len < 1U) {
-               return (ASN1_OVERRUN);
-       }
-       *xclass = (Der_class)(((*p) >> 6) & 0x03);
-       *type = (Der_type)(((*p) >> 5) & 0x01);
-       *tag = (*p) & 0x1F;
-       if (size) {
-               *size = 1;
-       }
-       return (0);
-}
-
-static int
-der_match_tag(const unsigned char *p, size_t len, Der_class xclass,
-             Der_type type, int tag, size_t *size) {
-       size_t l;
-       Der_class thisclass;
-       Der_type thistype;
-       int thistag;
-       int e;
-
-       e = der_get_tag(p, len, &thisclass, &thistype, &thistag, &l);
-       if (e) {
-               return (e);
-       }
-       if (xclass != thisclass || type != thistype) {
-               return (ASN1_BAD_ID);
-       }
-       if (tag > thistag) {
-               return (ASN1_MISPLACED_FIELD);
-       }
-       if (tag < thistag) {
-               return (ASN1_MISSING_FIELD);
-       }
-       if (size) {
-               *size = l;
-       }
-       return (0);
-}
-
-static int
-der_match_tag_and_length(const unsigned char *p, size_t len, Der_class xclass,
-                        Der_type type, int tag, size_t *length_ret,
-                        size_t *size) {
-       size_t l, ret = 0;
-       int e;
-
-       e = der_match_tag(p, len, xclass, type, tag, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-       e = der_get_length(p, len, length_ret, &l);
-       if (e) {
-               return (e);
-       }
-       /* p += l; */
-       len -= l;
-       POST(len);
-       ret += l;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-}
-
-static int
-decode_enumerated(const unsigned char *p, size_t len, void *num, size_t *size) {
-       size_t ret = 0;
-       size_t l, reallen;
-       int e;
-
-       e = der_match_tag(p, len, ASN1_C_UNIV, PRIM, UT_Enumerated, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-       e = der_get_length(p, len, &reallen, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-       e = der_get_int(p, reallen, num, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-}
-
-static int
-decode_octet_string(const unsigned char *p, size_t len, octet_string *k,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-       size_t slen;
-
-       k->data = NULL;
-       k->length = 0;
-
-       e = der_match_tag(p, len, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-
-       e = der_get_length(p, len, &slen, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-       if (len < slen) {
-               return (ASN1_OVERRUN);
-       }
-
-       e = der_get_octet_string(p, slen, k, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-}
-
-static int
-decode_oid(const unsigned char *p, size_t len, oid *k, size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-       size_t slen;
-
-       e = der_match_tag(p, len, ASN1_C_UNIV, PRIM, UT_OID, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-
-       e = der_get_length(p, len, &slen, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       ret += l;
-       if (len < slen) {
-               return (ASN1_OVERRUN);
-       }
-
-       e = der_get_oid(p, slen, k, &l);
-       if (e) {
-               return (e);
-       }
-       p += l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-}
-
-static int
-fix_dce(size_t reallen, size_t *len) {
-       if (reallen == ASN1_INDEFINITE) {
-               return (1);
-       }
-       if (*len < reallen) {
-               return (-1);
-       }
-       *len = reallen;
-       return (0);
-}
-
-/* der_length.c */
-
-static size_t
-len_unsigned(unsigned val) {
-       size_t ret = 0;
-
-       do {
-               ++ret;
-               val /= 256;
-       } while (val);
-       return (ret);
-}
-
-static size_t
-length_len(size_t len) {
-       if (len < 128U) {
-               return (1);
-       } else {
-               return (len_unsigned((unsigned int)len) + 1);
-       }
-}
-
-/* der_put.c */
-
-/*
- * All encoding functions take a pointer `p' to first position in which to
- * write, from the right, `len' which means the maximum number of characters
- * we are able to write.  The function returns the number of characters
- * written in `size' (if non-NULL). The return value is 0 or an error.
- */
-
-static int
-der_put_unsigned(unsigned char *p, size_t len, unsigned val, size_t *size) {
-       unsigned char *base = p;
-
-       if (val) {
-               while (len > 0U && val) {
-                       *p-- = val % 256;
-                       val /= 256;
-                       --len;
-               }
-               if (val != 0) {
-                       return (ASN1_OVERFLOW);
-               } else {
-                       *size = base - p;
-                       return (0);
-               }
-       } else if (len < 1U) {
-               return (ASN1_OVERFLOW);
-       } else {
-               *p = 0;
-               *size = 1;
-               return (0);
-       }
-}
-
-static int
-der_put_int(unsigned char *p, size_t len, int val, size_t *size) {
-       unsigned char *base = p;
-
-       if (val >= 0) {
-               do {
-                       if (len < 1U) {
-                               return (ASN1_OVERFLOW);
-                       }
-                       *p-- = val % 256;
-                       len--;
-                       val /= 256;
-               } while (val);
-               if (p[1] >= 128) {
-                       if (len < 1U) {
-                               return (ASN1_OVERFLOW);
-                       }
-                       *p-- = 0;
-                       len--;
-                       POST(len);
-               }
-       } else {
-               val = ~val;
-               do {
-                       if (len < 1U) {
-                               return (ASN1_OVERFLOW);
-                       }
-                       *p-- = ~(val % 256);
-                       len--;
-                       val /= 256;
-               } while (val);
-               if (p[1] < 128) {
-                       if (len < 1U) {
-                               return (ASN1_OVERFLOW);
-                       }
-                       *p-- = 0xff;
-                       len--;
-                       POST(len);
-               }
-       }
-       *size = base - p;
-       return (0);
-}
-
-static int
-der_put_length(unsigned char *p, size_t len, size_t val, size_t *size) {
-       if (len < 1U) {
-               return (ASN1_OVERFLOW);
-       }
-       if (val < 128U) {
-               *p = (unsigned char)val;
-               *size = 1;
-               return (0);
-       } else {
-               size_t l;
-               int e;
-
-               e = der_put_unsigned(p, len - 1, (unsigned int)val, &l);
-               if (e) {
-                       return (e);
-               }
-               p -= l;
-               *p = 0x80 | (unsigned char)l;
-               *size = l + 1;
-               return (0);
-       }
-}
-
-static int
-der_put_octet_string(unsigned char *p, size_t len, const octet_string *data,
-                    size_t *size) {
-       if (len < data->length) {
-               return (ASN1_OVERFLOW);
-       }
-       p -= data->length;
-       len -= data->length;
-       POST(len);
-       memmove(p + 1, data->data, data->length);
-       *size = data->length;
-       return (0);
-}
-
-static int
-der_put_oid(unsigned char *p, size_t len, const oid *data, size_t *size) {
-       unsigned char *base = p;
-       size_t n;
-
-       for (n = data->length; n >= 3u; --n) {
-               unsigned u = data->components[n - 1];
-
-               if (len < 1U) {
-                       return (ASN1_OVERFLOW);
-               }
-               *p-- = u % 128;
-               u /= 128;
-               --len;
-               while (u > 0) {
-                       if (len < 1U) {
-                               return (ASN1_OVERFLOW);
-                       }
-                       *p-- = 128 + u % 128;
-                       u /= 128;
-                       --len;
-               }
-       }
-       if (len < 1U) {
-               return (ASN1_OVERFLOW);
-       }
-       *p-- = 40 * data->components[0] + data->components[1];
-       *size = base - p;
-       return (0);
-}
-
-static int
-der_put_tag(unsigned char *p, size_t len, Der_class xclass, Der_type type,
-           int tag, size_t *size) {
-       if (len < 1U) {
-               return (ASN1_OVERFLOW);
-       }
-       *p = (xclass << 6) | (type << 5) | tag; /* XXX */
-       *size = 1;
-       return (0);
-}
-
-static int
-der_put_length_and_tag(unsigned char *p, size_t len, size_t len_val,
-                      Der_class xclass, Der_type type, int tag, size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       e = der_put_length(p, len, len_val, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       ret += l;
-       e = der_put_tag(p, len, xclass, type, tag, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       *size = ret;
-       return (0);
-}
-
-static int
-encode_enumerated(unsigned char *p, size_t len, const void *data,
-                 size_t *size) {
-       unsigned num = *(const unsigned *)data;
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       e = der_put_int(p, len, num, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       ret += l;
-       e = der_put_length_and_tag(p, len, l, ASN1_C_UNIV, PRIM, UT_Enumerated,
-                                  &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       *size = ret;
-       return (0);
-}
-
-static int
-encode_octet_string(unsigned char *p, size_t len, const octet_string *k,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       e = der_put_octet_string(p, len, k, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       ret += l;
-       e = der_put_length_and_tag(p, len, l, ASN1_C_UNIV, PRIM, UT_OctetString,
-                                  &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       *size = ret;
-       return (0);
-}
-
-static int
-encode_oid(unsigned char *p, size_t len, const oid *k, size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       e = der_put_oid(p, len, k, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       ret += l;
-       e = der_put_length_and_tag(p, len, l, ASN1_C_UNIV, PRIM, UT_OID, &l);
-       if (e) {
-               return (e);
-       }
-       p -= l;
-       len -= l;
-       POST(p);
-       POST(len);
-       ret += l;
-       *size = ret;
-       return (0);
-}
-
-/* encapsulate.c */
-
-static void
-gssapi_encap_length(size_t data_len, size_t *len, size_t *total_len,
-                   const gss_OID mech) {
-       size_t len_len;
-
-       *len = 1 + 1 + mech->length + data_len;
-
-       len_len = length_len(*len);
-
-       *total_len = 1 + len_len + *len;
-}
-
-static u_char *
-gssapi_mech_make_header(u_char *p, size_t len, const gss_OID mech) {
-       int e;
-       size_t len_len, foo;
-
-       *p++ = 0x60;
-       len_len = length_len(len);
-       e = der_put_length(p + len_len - 1, len_len, len, &foo);
-       if (e || foo != len_len) {
-               return (NULL);
-       }
-       p += len_len;
-       *p++ = 0x06;
-       *p++ = mech->length;
-       memmove(p, mech->elements, mech->length);
-       p += mech->length;
-       return (p);
-}
-
-/*
- * Give it a krb5_data and it will encapsulate with extra GSS-API wrappings.
- */
-
-static OM_uint32
-gssapi_spnego_encapsulate(OM_uint32 *minor_status, unsigned char *buf,
-                         size_t buf_size, gss_buffer_t output_token,
-                         const gss_OID mech) {
-       size_t len, outer_len;
-       u_char *p;
-
-       gssapi_encap_length(buf_size, &len, &outer_len, mech);
-
-       output_token->length = outer_len;
-       output_token->value = malloc(outer_len);
-       if (output_token->value == NULL) {
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-       p = gssapi_mech_make_header(output_token->value, len, mech);
-       if (p == NULL) {
-               if (output_token->length != 0U) {
-                       gss_release_buffer(minor_status, output_token);
-               }
-               return (GSS_S_FAILURE);
-       }
-       memmove(p, buf, buf_size);
-       return (GSS_S_COMPLETE);
-}
-
-/* init_sec_context.c */
-/*
- * SPNEGO wrapper for Kerberos5 GSS-API kouril@ics.muni.cz, 2003 (mostly
- * based on Heimdal code)
- */
-
-static int
-add_mech(MechTypeList *mech_list, gss_OID mech) {
-       MechType *tmp;
-       int ret;
-
-       tmp = realloc(mech_list->val, (mech_list->len + 1) * sizeof(*tmp));
-       if (tmp == NULL) {
-               return (ENOMEM);
-       }
-       mech_list->val = tmp;
-
-       ret = der_get_oid(mech->elements, mech->length,
-                         &mech_list->val[mech_list->len], NULL);
-       if (ret) {
-               return (ret);
-       }
-
-       mech_list->len++;
-       return (0);
-}
-
-/*
- * return the length of the mechanism in token or -1
- * (which implies that the token was bad - GSS_S_DEFECTIVE_TOKEN
- */
-
-static ssize_t
-gssapi_krb5_get_mech(const u_char *ptr, size_t total_len,
-                    const u_char **mech_ret) {
-       size_t len, len_len, mech_len, foo;
-       const u_char *p = ptr;
-       int e;
-
-       if (total_len < 1U) {
-               return (-1);
-       }
-       if (*p++ != 0x60) {
-               return (-1);
-       }
-       e = der_get_length(p, total_len - 1, &len, &len_len);
-       if (e || 1 + len_len + len != total_len) {
-               return (-1);
-       }
-       p += len_len;
-       if (*p++ != 0x06) {
-               return (-1);
-       }
-       e = der_get_length(p, total_len - 1 - len_len - 1, &mech_len, &foo);
-       if (e) {
-               return (-1);
-       }
-       p += foo;
-       *mech_ret = p;
-       return (mech_len);
-}
-
-static OM_uint32
-spnego_initial(OM_uint32 *minor_status,
-              const gss_cred_id_t initiator_cred_handle,
-              gss_ctx_id_t *context_handle, const gss_name_t target_name,
-              const gss_OID mech_type, OM_uint32 req_flags, OM_uint32 time_req,
-              const gss_channel_bindings_t input_chan_bindings,
-              const gss_buffer_t input_token, gss_OID *actual_mech_type,
-              gss_buffer_t output_token, OM_uint32 *ret_flags,
-              OM_uint32 *time_rec) {
-       NegTokenInit token_init;
-       OM_uint32 major_status, minor_status2;
-       gss_buffer_desc krb5_output_token = GSS_C_EMPTY_BUFFER;
-       unsigned char *buf = NULL;
-       size_t buf_size;
-       size_t len;
-       int ret;
-
-       (void)mech_type;
-
-       memset(&token_init, 0, sizeof(token_init));
-
-       ret = add_mech(&token_init.mechTypes, GSS_KRB5_MECH);
-       if (ret) {
-               *minor_status = ret;
-               ret = GSS_S_FAILURE;
-               goto end;
-       }
-
-       major_status = gss_init_sec_context(
-               minor_status, initiator_cred_handle, context_handle,
-               target_name, GSS_KRB5_MECH, req_flags, time_req,
-               input_chan_bindings, input_token, actual_mech_type,
-               &krb5_output_token, ret_flags, time_rec);
-       if (GSS_ERROR(major_status)) {
-               ret = major_status;
-               goto end;
-       }
-       if (krb5_output_token.length > 0U) {
-               token_init.mechToken = malloc(sizeof(*token_init.mechToken));
-               if (token_init.mechToken == NULL) {
-                       *minor_status = ENOMEM;
-                       ret = GSS_S_FAILURE;
-                       goto end;
-               }
-               token_init.mechToken->data = krb5_output_token.value;
-               token_init.mechToken->length = krb5_output_token.length;
-       }
-       /*
-        * The MS implementation of SPNEGO seems to not like the mechListMIC
-        * field, so we omit it (it's optional anyway)
-        */
-
-       buf_size = 1024;
-       buf = malloc(buf_size);
-       if (buf == NULL) {
-               *minor_status = ENOMEM;
-               ret = GSS_S_FAILURE;
-               goto end;
-       }
-
-       do {
-               ret = encode_NegTokenInit(buf + buf_size - 1, buf_size,
-                                         &token_init, &len);
-               if (ret == 0) {
-                       size_t tmp;
-
-                       ret = der_put_length_and_tag(
-                               buf + buf_size - len - 1, buf_size - len, len,
-                               ASN1_C_CONTEXT, CONS, 0, &tmp);
-                       if (ret == 0) {
-                               len += tmp;
-                       }
-               }
-               if (ret) {
-                       if (ret == ASN1_OVERFLOW) {
-                               u_char *tmp;
-
-                               buf_size *= 2;
-                               tmp = realloc(buf, buf_size);
-                               if (tmp == NULL) {
-                                       *minor_status = ENOMEM;
-                                       ret = GSS_S_FAILURE;
-                                       goto end;
-                               }
-                               buf = tmp;
-                       } else {
-                               *minor_status = ret;
-                               ret = GSS_S_FAILURE;
-                               goto end;
-                       }
-               }
-       } while (ret == ASN1_OVERFLOW);
-
-       ret = gssapi_spnego_encapsulate(minor_status, buf + buf_size - len, len,
-                                       output_token, GSS_SPNEGO_MECH);
-       if (ret == GSS_S_COMPLETE) {
-               ret = major_status;
-       }
-
-end:
-       if (token_init.mechToken != NULL) {
-               free(token_init.mechToken);
-               token_init.mechToken = NULL;
-       }
-       free_NegTokenInit(&token_init);
-       if (krb5_output_token.length != 0U) {
-               gss_release_buffer(&minor_status2, &krb5_output_token);
-       }
-       if (buf) {
-               free(buf);
-       }
-
-       return (ret);
-}
-
-static OM_uint32
-spnego_reply(OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle,
-            gss_ctx_id_t *context_handle, const gss_name_t target_name,
-            const gss_OID mech_type, OM_uint32 req_flags, OM_uint32 time_req,
-            const gss_channel_bindings_t input_chan_bindings,
-            const gss_buffer_t input_token, gss_OID *actual_mech_type,
-            gss_buffer_t output_token, OM_uint32 *ret_flags,
-            OM_uint32 *time_rec) {
-       OM_uint32 ret;
-       NegTokenResp resp;
-       unsigned char *buf;
-       size_t buf_size;
-       u_char oidbuf[17];
-       size_t oidlen;
-       gss_buffer_desc sub_token;
-       ssize_t mech_len;
-       const u_char *p;
-       size_t len, taglen;
-
-       (void)mech_type;
-
-       output_token->length = 0;
-       output_token->value = NULL;
-
-       /*
-        * SPNEGO doesn't include gss wrapping on SubsequentContextToken
-        * like the Kerberos 5 mech does. But lets check for it anyway.
-        */
-
-       mech_len = gssapi_krb5_get_mech(input_token->value, input_token->length,
-                                       &p);
-
-       if (mech_len < 0) {
-               buf = input_token->value;
-               buf_size = input_token->length;
-       } else if ((size_t)mech_len == GSS_KRB5_MECH->length &&
-                  isc_safe_memequal(GSS_KRB5_MECH->elements, p, mech_len))
-       {
-               return (gss_init_sec_context(
-                       minor_status, initiator_cred_handle, context_handle,
-                       target_name, GSS_KRB5_MECH, req_flags, time_req,
-                       input_chan_bindings, input_token, actual_mech_type,
-                       output_token, ret_flags, time_rec));
-       } else if ((size_t)mech_len == GSS_SPNEGO_MECH->length &&
-                  isc_safe_memequal(GSS_SPNEGO_MECH->elements, p, mech_len))
-       {
-               ret = gssapi_spnego_decapsulate(minor_status, input_token, &buf,
-                                               &buf_size, GSS_SPNEGO_MECH);
-               if (ret) {
-                       return (ret);
-               }
-       } else {
-               return (GSS_S_BAD_MECH);
-       }
-
-       ret = der_match_tag_and_length(buf, buf_size, ASN1_C_CONTEXT, CONS, 1,
-                                      &len, &taglen);
-       if (ret) {
-               return (ret);
-       }
-
-       if (len > buf_size - taglen) {
-               return (ASN1_OVERRUN);
-       }
-
-       ret = decode_NegTokenResp(buf + taglen, len, &resp, NULL);
-       if (ret) {
-               free_NegTokenResp(&resp);
-               *minor_status = ENOMEM;
-               return (GSS_S_FAILURE);
-       }
-
-       if (resp.negState == NULL || *(resp.negState) == reject ||
-           resp.supportedMech == NULL)
-       {
-               free_NegTokenResp(&resp);
-               return (GSS_S_BAD_MECH);
-       }
-
-       ret = der_put_oid(oidbuf + sizeof(oidbuf) - 1, sizeof(oidbuf),
-                         resp.supportedMech, &oidlen);
-       if (ret || oidlen != GSS_KRB5_MECH->length ||
-           !isc_safe_memequal(oidbuf + sizeof(oidbuf) - oidlen,
-                              GSS_KRB5_MECH->elements, oidlen))
-       {
-               free_NegTokenResp(&resp);
-               return (GSS_S_BAD_MECH);
-       }
-
-       if (resp.responseToken != NULL) {
-               sub_token.length = resp.responseToken->length;
-               sub_token.value = resp.responseToken->data;
-       } else {
-               sub_token.length = 0;
-               sub_token.value = NULL;
-       }
-
-       ret = gss_init_sec_context(minor_status, initiator_cred_handle,
-                                  context_handle, target_name, GSS_KRB5_MECH,
-                                  req_flags, time_req, input_chan_bindings,
-                                  &sub_token, actual_mech_type, output_token,
-                                  ret_flags, time_rec);
-       if (ret) {
-               free_NegTokenResp(&resp);
-               return (ret);
-       }
-
-       /*
-        * XXXSRA I don't think this limited implementation ever needs
-        * to check the MIC -- our preferred mechanism (Kerberos)
-        * authenticates its own messages and is the only mechanism
-        * we'll accept, so if the mechanism negotiation completes
-        * successfully, we don't need the MIC.  See RFC 4178.
-        */
-
-       free_NegTokenResp(&resp);
-       return (ret);
-}
-
-OM_uint32
-gss_init_sec_context_spnego(
-       OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle,
-       gss_ctx_id_t *context_handle, const gss_name_t target_name,
-       const gss_OID mech_type, OM_uint32 req_flags, OM_uint32 time_req,
-       const gss_channel_bindings_t input_chan_bindings,
-       const gss_buffer_t input_token, gss_OID *actual_mech_type,
-       gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec) {
-       /* Dirty trick to suppress compiler warnings */
-
-       /* Figure out whether we're starting over or processing a reply */
-
-       if (input_token == GSS_C_NO_BUFFER || input_token->length == 0U) {
-               return (spnego_initial(minor_status, initiator_cred_handle,
-                                      context_handle, target_name, mech_type,
-                                      req_flags, time_req, input_chan_bindings,
-                                      input_token, actual_mech_type,
-                                      output_token, ret_flags, time_rec));
-       } else {
-               return (spnego_reply(minor_status, initiator_cred_handle,
-                                    context_handle, target_name, mech_type,
-                                    req_flags, time_req, input_chan_bindings,
-                                    input_token, actual_mech_type,
-                                    output_token, ret_flags, time_rec));
-       }
-}
-
-#endif /* GSSAPI */
diff --git a/lib/dns/spnego.h b/lib/dns/spnego.h
deleted file mode 100644 (file)
index 2753dfc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- * \brief
- * Entry points into portable SPNEGO implementation.
- * See spnego.c for information on the SPNEGO implementation itself.
- */
-
-#ifndef _SPNEGO_H_
-#define _SPNEGO_H_
-
-/*%
- * Wrapper for GSSAPI gss_init_sec_context(), using portable SPNEGO
- * implementation instead of the one that's part of the GSSAPI
- * library.  Takes arguments identical to the standard GSSAPI
- * function, uses standard gss_init_sec_context() to handle
- * everything inside the SPNEGO wrapper.
- */
-OM_uint32
-gss_init_sec_context_spnego(OM_uint32 *, const gss_cred_id_t, gss_ctx_id_t *,
-                           const gss_name_t, const gss_OID, OM_uint32,
-                           OM_uint32, const gss_channel_bindings_t,
-                           const gss_buffer_t, gss_OID *, gss_buffer_t,
-                           OM_uint32 *, OM_uint32 *);
-
-/*%
- * Wrapper for GSSAPI gss_accept_sec_context(), using portable SPNEGO
- * implementation instead of the one that's part of the GSSAPI
- * library.  Takes arguments identical to the standard GSSAPI
- * function.  Checks the OID of the input token to see if it's SPNEGO;
- * if so, processes it, otherwise hands the call off to the standard
- * gss_accept_sec_context() function.
- */
-OM_uint32
-gss_accept_sec_context_spnego(OM_uint32 *, gss_ctx_id_t *, const gss_cred_id_t,
-                             const gss_buffer_t, const gss_channel_bindings_t,
-                             gss_name_t *, gss_OID *, gss_buffer_t,
-                             OM_uint32 *, OM_uint32 *, gss_cred_id_t *);
-
-#endif /* ifndef _SPNEGO_H_ */
diff --git a/lib/dns/spnego_asn1.c b/lib/dns/spnego_asn1.c
deleted file mode 100644 (file)
index 142cf3e..0000000
+++ /dev/null
@@ -1,983 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file
- * \brief Method routines generated from SPNEGO ASN.1 module.
- * See spnego_asn1.pl for details.  Do not edit.
- */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-#ifndef __asn1_h__
-#define __asn1_h__
-
-#ifndef __asn1_common_definitions__
-#define __asn1_common_definitions__
-
-typedef struct octet_string {
-       size_t length;
-       void *data;
-} octet_string;
-
-typedef char *general_string;
-
-typedef char *utf8_string;
-
-typedef struct oid {
-       size_t length;
-       unsigned *components;
-} oid;
-
-#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R)                             \
-       do {                                                              \
-               (BL) = length_##T((S));                                   \
-               (B) = malloc((BL));                                       \
-               if ((B) == NULL) {                                        \
-                       (R) = ENOMEM;                                     \
-               } else {                                                  \
-                       (R) = encode_##T(((unsigned char *)(B)) + (BL)-1, \
-                                        (BL), (S), (L));                 \
-                       if ((R) != 0) {                                   \
-                               free((B));                                \
-                               (B) = NULL;                               \
-                       }                                                 \
-               }                                                         \
-       } while (0)
-
-#endif /* ifndef __asn1_common_definitions__ */
-
-/*
- * MechType ::= OBJECT IDENTIFIER
- */
-
-typedef oid MechType;
-
-static int
-encode_MechType(unsigned char *, size_t, const MechType *, size_t *);
-static int
-decode_MechType(const unsigned char *, size_t, MechType *, size_t *);
-static void
-free_MechType(MechType *);
-/* unused declaration: length_MechType */
-/* unused declaration: copy_MechType */
-
-/*
- * MechTypeList ::= SEQUENCE OF MechType
- */
-
-typedef struct MechTypeList {
-       unsigned int len;
-       MechType *val;
-} MechTypeList;
-
-static int
-encode_MechTypeList(unsigned char *, size_t, const MechTypeList *, size_t *);
-static int
-decode_MechTypeList(const unsigned char *, size_t, MechTypeList *, size_t *);
-static void
-free_MechTypeList(MechTypeList *);
-/* unused declaration: length_MechTypeList */
-/* unused declaration: copy_MechTypeList */
-
-/*
- * ContextFlags ::= BIT STRING { delegFlag(0), mutualFlag(1), replayFlag(2),
- * sequenceFlag(3), anonFlag(4), confFlag(5), integFlag(6) }
- */
-
-typedef struct ContextFlags {
-       unsigned int delegFlag : 1;
-       unsigned int mutualFlag : 1;
-       unsigned int replayFlag : 1;
-       unsigned int sequenceFlag : 1;
-       unsigned int anonFlag : 1;
-       unsigned int confFlag : 1;
-       unsigned int integFlag : 1;
-} ContextFlags;
-
-static int
-encode_ContextFlags(unsigned char *, size_t, const ContextFlags *, size_t *);
-static int
-decode_ContextFlags(const unsigned char *, size_t, ContextFlags *, size_t *);
-static void
-free_ContextFlags(ContextFlags *);
-/* unused declaration: length_ContextFlags */
-/* unused declaration: copy_ContextFlags */
-/* unused declaration: ContextFlags2int */
-/* unused declaration: int2ContextFlags */
-/* unused declaration: asn1_ContextFlags_units */
-
-/*
- * NegTokenInit ::= SEQUENCE { mechTypes[0]    MechTypeList, reqFlags[1]
- * ContextFlags OPTIONAL, mechToken[2]    OCTET STRING OPTIONAL,
- * mechListMIC[3]  OCTET STRING OPTIONAL }
- */
-
-typedef struct NegTokenInit {
-       MechTypeList mechTypes;
-       ContextFlags *reqFlags;
-       octet_string *mechToken;
-       octet_string *mechListMIC;
-} NegTokenInit;
-
-static int
-encode_NegTokenInit(unsigned char *, size_t, const NegTokenInit *, size_t *);
-static int
-decode_NegTokenInit(const unsigned char *, size_t, NegTokenInit *, size_t *);
-static void
-free_NegTokenInit(NegTokenInit *);
-/* unused declaration: length_NegTokenInit */
-/* unused declaration: copy_NegTokenInit */
-
-/*
- * NegTokenResp ::= SEQUENCE { negState[0]       ENUMERATED {
- * accept-completed(0), accept-incomplete(1), reject(2), request-mic(3) }
- * OPTIONAL, supportedMech[1]  MechType OPTIONAL, responseToken[2]  OCTET
- * STRING OPTIONAL, mechListMIC[3]    OCTET STRING OPTIONAL }
- */
-
-typedef struct NegTokenResp {
-       enum { accept_completed = 0,
-              accept_incomplete = 1,
-              reject = 2,
-              request_mic = 3 } *
-               negState;
-
-       MechType *supportedMech;
-       octet_string *responseToken;
-       octet_string *mechListMIC;
-} NegTokenResp;
-
-static int
-encode_NegTokenResp(unsigned char *, size_t, const NegTokenResp *, size_t *);
-static int
-decode_NegTokenResp(const unsigned char *, size_t, NegTokenResp *, size_t *);
-static void
-free_NegTokenResp(NegTokenResp *);
-/* unused declaration: length_NegTokenResp */
-/* unused declaration: copy_NegTokenResp */
-
-#endif /* __asn1_h__ */
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-#define BACK                \
-       if (e)              \
-               return (e); \
-       p -= l;             \
-       len -= l;           \
-       ret += l;           \
-       POST(p);            \
-       POST(len);          \
-       POST(ret)
-
-static int
-encode_MechType(unsigned char *p, size_t len, const MechType *data,
-               size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       e = encode_oid(p, len, data, &l);
-       BACK;
-       *size = ret;
-       return (0);
-}
-
-#define FORW               \
-       if (e)             \
-               goto fail; \
-       p += l;            \
-       len -= l;          \
-       ret += l;          \
-       POST(p);           \
-       POST(len);         \
-       POST(ret)
-
-static int
-decode_MechType(const unsigned char *p, size_t len, MechType *data,
-               size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       memset(data, 0, sizeof(*data));
-       e = decode_oid(p, len, data, &l);
-       FORW;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-fail:
-       free_MechType(data);
-       return (e);
-}
-
-static void
-free_MechType(MechType *data) {
-       free_oid(data);
-}
-
-/* unused function: length_MechType */
-
-/* unused function: copy_MechType */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-static int
-encode_MechTypeList(unsigned char *p, size_t len, const MechTypeList *data,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int i, e;
-
-       for (i = (data)->len - 1; i >= 0; --i) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_MechType(p, len, &(data)->val[i], &l);
-               BACK;
-               ret += oldret;
-       }
-       e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
-                                  &l);
-       BACK;
-       *size = ret;
-       return (0);
-}
-
-static int
-decode_MechTypeList(const unsigned char *p, size_t len, MechTypeList *data,
-                   size_t *size) {
-       size_t ret = 0, reallen;
-       size_t l;
-       int e;
-
-       memset(data, 0, sizeof(*data));
-       reallen = 0;
-       e = der_match_tag_and_length(p, len, ASN1_C_UNIV, CONS, UT_Sequence,
-                                    &reallen, &l);
-       FORW;
-       if (len < reallen) {
-               return (ASN1_OVERRUN);
-       }
-       len = reallen;
-       {
-               size_t origlen = len;
-               size_t oldret = ret;
-               ret = 0;
-               (data)->len = 0;
-               (data)->val = NULL;
-               while (ret < origlen) {
-                       void *old = (data)->val;
-                       (data)->len++;
-                       (data)->val =
-                               realloc((data)->val,
-                                       sizeof(*((data)->val)) * (data)->len);
-                       if ((data)->val == NULL) {
-                               (data)->val = old;
-                               (data)->len--;
-                               return (ENOMEM);
-                       }
-                       e = decode_MechType(p, len,
-                                           &(data)->val[(data)->len - 1], &l);
-                       FORW;
-                       len = origlen - ret;
-               }
-               ret += oldret;
-       }
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-fail:
-       free_MechTypeList(data);
-       return (e);
-}
-
-static void
-free_MechTypeList(MechTypeList *data) {
-       while ((data)->len) {
-               free_MechType(&(data)->val[(data)->len - 1]);
-               (data)->len--;
-       }
-       free((data)->val);
-       (data)->val = NULL;
-}
-
-/* unused function: length_MechTypeList */
-
-/* unused function: copy_MechTypeList */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-static int
-encode_ContextFlags(unsigned char *p, size_t len, const ContextFlags *data,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       {
-               unsigned char c = 0;
-               *p-- = c;
-               len--;
-               ret++;
-               c = 0;
-               *p-- = c;
-               len--;
-               ret++;
-               c = 0;
-               *p-- = c;
-               len--;
-               ret++;
-               c = 0;
-               if (data->integFlag) {
-                       c |= 1 << 1;
-               }
-               if (data->confFlag) {
-                       c |= 1 << 2;
-               }
-               if (data->anonFlag) {
-                       c |= 1 << 3;
-               }
-               if (data->sequenceFlag) {
-                       c |= 1 << 4;
-               }
-               if (data->replayFlag) {
-                       c |= 1 << 5;
-               }
-               if (data->mutualFlag) {
-                       c |= 1 << 6;
-               }
-               if (data->delegFlag) {
-                       c |= 1 << 7;
-               }
-               *p-- = c;
-               *p-- = 0;
-               len -= 2;
-               ret += 2;
-       }
-
-       e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_BitString,
-                                  &l);
-       BACK;
-       *size = ret;
-       return (0);
-}
-
-static int
-decode_ContextFlags(const unsigned char *p, size_t len, ContextFlags *data,
-                   size_t *size) {
-       size_t ret = 0, reallen;
-       size_t l;
-       int e;
-
-       memset(data, 0, sizeof(*data));
-       reallen = 0;
-       e = der_match_tag_and_length(p, len, ASN1_C_UNIV, PRIM, UT_BitString,
-                                    &reallen, &l);
-       FORW;
-       if (len < reallen) {
-               return (ASN1_OVERRUN);
-       }
-       p++;
-       len--;
-       POST(len);
-       reallen--;
-       ret++;
-       data->delegFlag = (*p >> 7) & 1;
-       data->mutualFlag = (*p >> 6) & 1;
-       data->replayFlag = (*p >> 5) & 1;
-       data->sequenceFlag = (*p >> 4) & 1;
-       data->anonFlag = (*p >> 3) & 1;
-       data->confFlag = (*p >> 2) & 1;
-       data->integFlag = (*p >> 1) & 1;
-       ret += reallen;
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-fail:
-       free_ContextFlags(data);
-       return (e);
-}
-
-static void
-free_ContextFlags(ContextFlags *data) {
-       (void)data;
-}
-
-/* unused function: length_ContextFlags */
-
-/* unused function: copy_ContextFlags */
-
-/* unused function: ContextFlags2int */
-
-/* unused function: int2ContextFlags */
-
-/* unused variable: ContextFlags_units */
-
-/* unused function: asn1_ContextFlags_units */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-static int
-encode_NegTokenInit(unsigned char *p, size_t len, const NegTokenInit *data,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       if ((data)->mechListMIC) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_octet_string(p, len, (data)->mechListMIC, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       if ((data)->mechToken) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_octet_string(p, len, (data)->mechToken, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       if ((data)->reqFlags) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_ContextFlags(p, len, (data)->reqFlags, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_MechTypeList(p, len, &(data)->mechTypes, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
-                                  &l);
-       BACK;
-       *size = ret;
-       return (0);
-}
-
-static int
-decode_NegTokenInit(const unsigned char *p, size_t len, NegTokenInit *data,
-                   size_t *size) {
-       size_t ret = 0, reallen;
-       size_t l;
-       int e;
-
-       memset(data, 0, sizeof(*data));
-       reallen = 0;
-       e = der_match_tag_and_length(p, len, ASN1_C_UNIV, CONS, UT_Sequence,
-                                    &reallen, &l);
-       FORW;
-       {
-               int dce_fix;
-               if ((dce_fix = fix_dce(reallen, &len)) < 0) {
-                       e = ASN1_BAD_FORMAT;
-                       goto fail;
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 0, &l);
-                       FORW;
-                       {
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               e = ASN1_BAD_FORMAT;
-                                               goto fail;
-                                       }
-                                       e = decode_MechTypeList(
-                                               p, len, &(data)->mechTypes, &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 1, &l);
-                       if (e) {
-                               (data)->reqFlags = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               e = ASN1_BAD_FORMAT;
-                                               goto fail;
-                                       }
-                                       (data)->reqFlags = malloc(
-                                               sizeof(*(data)->reqFlags));
-                                       if ((data)->reqFlags == NULL) {
-                                               e = ENOMEM;
-                                               goto fail;
-                                       }
-                                       e = decode_ContextFlags(
-                                               p, len, (data)->reqFlags, &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 2, &l);
-                       if (e) {
-                               (data)->mechToken = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               e = ASN1_BAD_FORMAT;
-                                               goto fail;
-                                       }
-                                       (data)->mechToken = malloc(
-                                               sizeof(*(data)->mechToken));
-                                       if ((data)->mechToken == NULL) {
-                                               e = ENOMEM;
-                                               goto fail;
-                                       }
-                                       e = decode_octet_string(
-                                               p, len, (data)->mechToken, &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 3, &l);
-                       if (e) {
-                               (data)->mechListMIC = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               e = ASN1_BAD_FORMAT;
-                                               goto fail;
-                                       }
-                                       (data)->mechListMIC = malloc(
-                                               sizeof(*(data)->mechListMIC));
-                                       if ((data)->mechListMIC == NULL) {
-                                               e = ENOMEM;
-                                               goto fail;
-                                       }
-                                       e = decode_octet_string(
-                                               p, len, (data)->mechListMIC,
-                                               &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               if (dce_fix) {
-                       e = der_match_tag_and_length(p, len, (Der_class)0,
-                                                    (Der_type)0, 0, &reallen,
-                                                    &l);
-                       FORW;
-               }
-       }
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-fail:
-       free_NegTokenInit(data);
-       return (e);
-}
-
-static void
-free_NegTokenInit(NegTokenInit *data) {
-       free_MechTypeList(&(data)->mechTypes);
-       if ((data)->reqFlags) {
-               free_ContextFlags((data)->reqFlags);
-               free((data)->reqFlags);
-               (data)->reqFlags = NULL;
-       }
-       if ((data)->mechToken) {
-               free_octet_string((data)->mechToken);
-               free((data)->mechToken);
-               (data)->mechToken = NULL;
-       }
-       if ((data)->mechListMIC) {
-               free_octet_string((data)->mechListMIC);
-               free((data)->mechListMIC);
-               (data)->mechListMIC = NULL;
-       }
-}
-
-/* unused function: length_NegTokenInit */
-
-/* unused function: copy_NegTokenInit */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-static int
-encode_NegTokenResp(unsigned char *p, size_t len, const NegTokenResp *data,
-                   size_t *size) {
-       size_t ret = 0;
-       size_t l;
-       int e;
-
-       if ((data)->mechListMIC) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_octet_string(p, len, (data)->mechListMIC, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       if ((data)->responseToken) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_octet_string(p, len, (data)->responseToken, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       if ((data)->supportedMech) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_MechType(p, len, (data)->supportedMech, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       if ((data)->negState) {
-               size_t oldret = ret;
-               ret = 0;
-               e = encode_enumerated(p, len, (data)->negState, &l);
-               BACK;
-               e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0,
-                                          &l);
-               BACK;
-               ret += oldret;
-       }
-       e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
-                                  &l);
-       BACK;
-       *size = ret;
-       return (0);
-}
-
-static int
-decode_NegTokenResp(const unsigned char *p, size_t len, NegTokenResp *data,
-                   size_t *size) {
-       size_t ret = 0, reallen;
-       size_t l;
-       int e;
-
-       /* cppcheck-suppress uninitvar */
-       memset(data, 0, sizeof(*data));
-       reallen = 0;
-       e = der_match_tag_and_length(p, len, ASN1_C_UNIV, CONS, UT_Sequence,
-                                    &reallen, &l);
-       FORW;
-       {
-               int dce_fix;
-               if ((dce_fix = fix_dce(reallen, &len)) < 0) {
-                       return (ASN1_BAD_FORMAT);
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 0, &l);
-                       if (e) {
-                               (data)->negState = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               return (ASN1_BAD_FORMAT);
-                                       }
-                                       (data)->negState = malloc(
-                                               sizeof(*(data)->negState));
-                                       if ((data)->negState == NULL) {
-                                               return (ENOMEM);
-                                       }
-                                       e = decode_enumerated(
-                                               p, len, (data)->negState, &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 1, &l);
-                       if (e) {
-                               (data)->supportedMech = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               return (ASN1_BAD_FORMAT);
-                                       }
-                                       (data)->supportedMech = malloc(
-                                               sizeof(*(data)->supportedMech));
-                                       if ((data)->supportedMech == NULL) {
-                                               return (ENOMEM);
-                                       }
-                                       e = decode_MechType(
-                                               p, len, (data)->supportedMech,
-                                               &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 2, &l);
-                       if (e) {
-                               (data)->responseToken = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               return (ASN1_BAD_FORMAT);
-                                       }
-                                       (data)->responseToken = malloc(
-                                               sizeof(*(data)->responseToken));
-                                       if ((data)->responseToken == NULL) {
-                                               return (ENOMEM);
-                                       }
-                                       e = decode_octet_string(
-                                               p, len, (data)->responseToken,
-                                               &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               {
-                       size_t newlen, oldlen;
-
-                       e = der_match_tag(p, len, ASN1_C_CONTEXT, CONS, 3, &l);
-                       if (e) {
-                               (data)->mechListMIC = NULL;
-                       } else {
-                               p += l;
-                               len -= l;
-                               ret += l;
-                               e = der_get_length(p, len, &newlen, &l);
-                               FORW;
-                               {
-                                       int mydce_fix;
-                                       oldlen = len;
-                                       if ((mydce_fix = fix_dce(newlen,
-                                                                &len)) < 0) {
-                                               return (ASN1_BAD_FORMAT);
-                                       }
-                                       (data)->mechListMIC = malloc(
-                                               sizeof(*(data)->mechListMIC));
-                                       if ((data)->mechListMIC == NULL) {
-                                               return (ENOMEM);
-                                       }
-                                       e = decode_octet_string(
-                                               p, len, (data)->mechListMIC,
-                                               &l);
-                                       FORW;
-                                       if (mydce_fix) {
-                                               e = der_match_tag_and_length(
-                                                       p, len, (Der_class)0,
-                                                       (Der_type)0, 0,
-                                                       &reallen, &l);
-                                               FORW;
-                                       } else {
-                                               len = oldlen - newlen;
-                                       }
-                               }
-                       }
-               }
-               if (dce_fix) {
-                       e = der_match_tag_and_length(p, len, (Der_class)0,
-                                                    (Der_type)0, 0, &reallen,
-                                                    &l);
-                       FORW;
-               }
-       }
-       if (size) {
-               *size = ret;
-       }
-       return (0);
-fail:
-       free_NegTokenResp(data);
-       return (e);
-}
-
-static void
-free_NegTokenResp(NegTokenResp *data) {
-       if ((data)->negState) {
-               free((data)->negState);
-               (data)->negState = NULL;
-       }
-       if ((data)->supportedMech) {
-               free_MechType((data)->supportedMech);
-               free((data)->supportedMech);
-               (data)->supportedMech = NULL;
-       }
-       if ((data)->responseToken) {
-               free_octet_string((data)->responseToken);
-               free((data)->responseToken);
-               (data)->responseToken = NULL;
-       }
-       if ((data)->mechListMIC) {
-               free_octet_string((data)->mechListMIC);
-               free((data)->mechListMIC);
-               (data)->mechListMIC = NULL;
-       }
-}
-
-/* unused function: length_NegTokenResp */
-
-/* unused function: copy_NegTokenResp */
-
-/* Generated from spnego.asn1 */
-/* Do not edit */
-
-/* CHOICE */
-/* unused variable: asn1_NegotiationToken_dummy_holder */
diff --git a/lib/dns/spnego_asn1.pl b/lib/dns/spnego_asn1.pl
deleted file mode 100644 (file)
index 66f7b73..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/bin/bin/perl -w
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-# Our SPNEGO implementation uses some functions generated by the
-# Heimdal ASN.1 compiler, which this script then whacks a bit to make
-# them work properly in this stripped down implementation.  We don't
-# want to require our users to have a copy of the compiler, so we ship
-# the output of this script, but we need to keep the script around in
-# any case to cope with future changes to the SPNEGO ASN.1 code, so we
-# might as well supply the script for users who want it.
-
-# Overall plan: run the ASN.1 compiler, run each of its output files
-# through indent, fix up symbols and whack everything to be static.
-# We use indent for two reasons: (1) to whack the Heimdal compiler's
-# output into something closer to ISC's coding standard, and (2) to
-# make it easier for this script to parse the result.
-
-# Output from this script is C code which we expect to be #included
-# into another C file, which is why everything generated by this
-# script is marked "static".  The intent is to minimize the number of
-# extern symbols exported by the SPNEGO implementation, to avoid
-# potential conflicts with the GSSAPI libraries.
-
-###
-
-# Filename of the ASN.1 specification.  Hardcoded for the moment
-# since this script is intended for compiling exactly one module.
-
-my $asn1_source = $ENV{ASN1_SOURCE} || "spnego.asn1";
-
-# Heimdal ASN.1 compiler.  This script was written using the version
-# from Heimdal 0.7.1.  To build this, download a copy of
-# heimdal-0.7.1.tar.gz, configure and build with the default options,
-# then look for the compiler in heimdal-0.7.1/lib/asn1/asn1_compile.
-
-my $asn1_compile = $ENV{ASN1_COMPILE} || "asn1_compile";
-
-# BSD indent program.  This script was written using the version of
-# indent that comes with FreeBSD 4.11-STABLE.  The GNU project, as
-# usual, couldn't resist the temptation to monkey with indent's
-# command line syntax, so this probably won't work with GNU indent.
-
-my $indent = $ENV{INDENT} || "indent";
-
-###
-
-# Step 1: run the compiler.  Input is the ASN.1 file.  Outputs are a
-# header file (name specified on command line without the .h suffix),
-# a file called "asn1_files" listing the names of the other output
-# files, and a set of files containing C code generated by the
-# compiler for each data type that the compiler found.
-
-if (! -r $asn1_source || system($asn1_compile, $asn1_source, "asn1")) {
-    die("Couldn't compile ASN.1 source file $asn1_source\n");
-}
-
-my @files = ("asn1.h");
-
-open(F, "asn1_files")
-    or die("Couldn't open asn1_files: $!\n");
-push(@files, split)
-    while (<F>);
-close(F);
-
-unlink("asn1_files");
-
-###
-
-# Step 2: generate header block.
-
-print(q~/*
- * Copyright (C) 2006  Internet Systems Consortium, Inc. ("ISC")
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* $Id: spnego_asn1.pl,v 1.4 2007/06/19 23:47:16 tbox Exp $ */
-
-/*! \file
- * \brief Method routines generated from SPNEGO ASN.1 module.
- * See spnego_asn1.pl for details.  Do not edit.
- */
-
-~);
-
-###
-
-# Step 3: read and process each generated file, then delete it.
-
-my $output;
-
-for my $file (@files) {
-
-    my $is_static = 0;
-
-    system($indent, "-di1", "-ldi1", $file) == 0
-       or die("Couldn't indent $file");
-
-    unlink("$file.BAK");
-
-    open(F, $file)
-       or die("Couldn't open $file: $!");
-
-    while (<F>) {
-
-       # Symbol name fixups
-
-       s/heim_general_string/general_string/g;
-       s/heim_octet_string/octet_string/g;
-       s/heim_oid/oid/g;
-       s/heim_utf8_string/utf8_string/g;
-
-       # Convert all externs to statics
-
-       if (/^static/) {
-           $is_static = 1;
-       }
-
-       if (!/^typedef/ &&
-           !$is_static &&
-           /^[A-Za-z_][0-9A-Za-z_]*[ \t]*($|[^:0-9A-Za-z_])/) {
-           $_ = "static " . $_;
-           $is_static = 1;
-       }
-
-       if (/[{};]/) {
-           $is_static = 0;
-       }
-
-       # Suppress file inclusion, pass anything else through
-
-       if (!/#include/) {
-           $output .= $_;
-       }
-    }
-
-    close(F);
-    unlink($file);
-}
-
-# Step 4: Delete unused stuff to avoid code bloat and compiler warnings.
-
-my @unused_functions = qw(ContextFlags2int
-                         int2ContextFlags
-                         asn1_ContextFlags_units
-                         length_NegTokenInit
-                         copy_NegTokenInit
-                         length_NegTokenResp
-                         copy_NegTokenResp
-                         length_MechTypeList
-                         length_MechType
-                         copy_MechTypeList
-                         length_ContextFlags
-                         copy_ContextFlags
-                         copy_MechType);
-
-$output =~ s<^static [^\n]+\n$_\(.+?^}></* unused function: $_ */\n>ms
-    foreach (@unused_functions);
-
-$output =~ s<^static .+$_\(.*\);$></* unused declaration: $_ */>m
-    foreach (@unused_functions);
-
-$output =~ s<^static struct units ContextFlags_units\[\].+?^};>
-            </* unused variable: ContextFlags_units */>ms;
-
-$output =~ s<^static int asn1_NegotiationToken_dummy_holder = 1;>
-            </* unused variable: asn1_NegotiationToken_dummy_holder */>ms;
-
-$output =~ s<^static void\nfree_ContextFlags\(ContextFlags \* data\)\n{\n>
-            <$&\t(void)data;\n>ms;
-
-# Step 5: Write the result.
-
-print($output);
-
index f690beea3107111f19c699ab785cc44380b1f78f..a1f0a3736a2dc0c39b7c70e05d61e9a6f77ea38f 100644 (file)
 #include <stdbool.h>
 #include <unistd.h>
 
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
 #include <sys/socket.h>
 #include <sys/un.h>
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 
 #include <isc/magic.h>
 #include <isc/mem.h>
@@ -58,7 +58,7 @@ ssu_e_log(int level, const char *fmt, ...) {
 static int
 ux_socket_connect(const char *path) {
        int fd = -1;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        struct sockaddr_un addr;
 
        REQUIRE(path != NULL);
@@ -94,7 +94,7 @@ ux_socket_connect(const char *path) {
                close(fd);
                return (-1);
        }
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        return (fd);
 }
 
diff --git a/lib/dns/tests/Kyuafile b/lib/dns/tests/Kyuafile
deleted file mode 100644 (file)
index a3066a6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='acl_test'}
-tap_test_program{name='db_test'}
-tap_test_program{name='dbdiff_test'}
-tap_test_program{name='dbiterator_test'}
-tap_test_program{name='dbversion_test'}
-tap_test_program{name='dh_test'}
-tap_test_program{name='dispatch_test'}
-tap_test_program{name='dnstap_test'}
-tap_test_program{name='dst_test'}
-tap_test_program{name='geoip_test'}
-tap_test_program{name='keytable_test'}
-tap_test_program{name='master_test'}
-tap_test_program{name='name_test'}
-tap_test_program{name='nsec3_test'}
-tap_test_program{name='peer_test'}
-tap_test_program{name='private_test'}
-tap_test_program{name='rbt_serialize_test', is_exclusive=true}
-tap_test_program{name='rbt_test'}
-tap_test_program{name='rdata_test'}
-tap_test_program{name='rdataset_test'}
-tap_test_program{name='rdatasetstats_test'}
-tap_test_program{name='resolver_test'}
-tap_test_program{name='result_test'}
-tap_test_program{name='rsa_test'}
-tap_test_program{name='sigs_test'}
-tap_test_program{name='time_test'}
-tap_test_program{name='tsig_test'}
-tap_test_program{name='update_test'}
-tap_test_program{name='zonemgr_test'}
-tap_test_program{name='zt_test'}
diff --git a/lib/dns/tests/Makefile.am b/lib/dns/tests/Makefile.am
new file mode 100644 (file)
index 0000000..8a890bf
--- /dev/null
@@ -0,0 +1,96 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                         \
+       $(LIBISC_CFLAGS)                \
+       $(LIBDNS_CFLAGS)                \
+       $(KRB5_CFLAGS)                  \
+       -DSRCDIR=\"$(abs_srcdir)\"      \
+       -DBUILDDIR=\"$(abs_builddir)\"
+
+LDADD +=                       \
+       libdnstest.la           \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)
+
+noinst_LTLIBRARIES = libdnstest.la
+libdnstest_la_SOURCES = dnstest.c dnstest.h
+
+check_PROGRAMS =               \
+       acl_test                \
+       db_test                 \
+       dbdiff_test             \
+       dbiterator_test         \
+       dbversion_test          \
+       dh_test                 \
+       dispatch_test           \
+       dst_test                \
+       geoip_test              \
+       keytable_test           \
+       name_test               \
+       nsec3_test              \
+       peer_test               \
+       private_test            \
+       rbt_serialize_test      \
+       rbt_test                \
+       rdata_test              \
+       rdataset_test           \
+       rdatasetstats_test      \
+       resolver_test           \
+       result_test             \
+       rsa_test                \
+       sigs_test               \
+       time_test               \
+       tsig_test               \
+       update_test             \
+       zonemgr_test            \
+       zt_test
+
+TESTS = $(check_PROGRAMS)
+
+if HAVE_PERL
+
+check_PROGRAMS +=              \
+       master_test
+
+EXTRA_master_test_DEPENDENCIES = testdata/master/master12.data testdata/master/master13.data testdata/master/master14.data
+CLEANFILES = $(EXTRA_master_test_DEPENDENCIES)
+
+testdata/master/master12.data: testdata/master/master12.data.in
+       mkdir -p testdata/master
+       $(PERL) -w $(srcdir)/mkraw.pl < testdata/master/master12.data.in > $@
+
+testdata/master/master13.data: testdata/master/master13.data.in
+       mkdir -p testdata/master
+       $(PERL) -w $(srcdir)/mkraw.pl < testdata/master/master13.data.in > $@
+
+testdata/master/master14.data: testdata/master/master14.data.in
+       mkdir -p testdata/master
+       $(PERL) -w $(srcdir)/mkraw.pl < testdata/master/master14.data.in > $@
+
+endif
+
+if HAVE_GEOIP2
+check_PROGRAMS +=              \
+       geoip_test
+
+geoip_test_CPPFLAGS =          \
+       $(AM_CPPFLAGS)          \
+       $(MAXMINDDB_CFLAGS)
+
+geoip_test_LDADD =             \
+       $(LDADD)                \
+       $(MAXMINDDB_LIBS)
+endif
+
+if HAVE_DNSTAP
+check_PROGRAMS +=              \
+       dnstap_test
+
+dnstap_test_CPPFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(DNSTAP_CFLAGS)
+dnstap_test_LDADD =            \
+       $(LDADD)                \
+       $(DNSTAP_LIBS)
+endif
index 165c8f7aa85dabe98936f882fa476cdd3fa352b1..39c46b9ddc806f5949e25ce741a42df379d0bbe1 100644 (file)
@@ -67,7 +67,7 @@ _teardown(void **state) {
 }
 
 static void
-cleanup() {
+cleanup(void) {
        (void)isc_file_remove(TAPFILE);
        (void)isc_file_remove(TAPSOCK);
 }
index eca6f9b824b0c8214ffc62e9d97612a1d5d811e7..d9d32f4304c8a8ce55d183cff390f593be0f3cfc 100644 (file)
@@ -22,6 +22,7 @@
 
 #define UNIT_TESTING
 #include <cmocka.h>
+#include <maxminddb.h>
 
 #include <isc/print.h>
 #include <isc/string.h>
 
 #include <dns/geoip.h>
 
-#include "dnstest.h"
-
-#if defined(HAVE_GEOIP2)
-#include <maxminddb.h>
-
 #include "../geoip2.c"
+#include "dnstest.h"
 
 /* Use GeoIP2 databases from the 'geoip2' system test */
 #define TEST_GEOIP_DATA "../../../bin/tests/system/geoip2/data"
@@ -396,11 +393,9 @@ domain(void **state) {
        match = do_lookup_string("10.53.0.5", dns_geoip_domain_name, "five.es");
        assert_true(match);
 }
-#endif /* HAVE_GEOIP2 */
 
 int
 main(void) {
-#if defined(HAVE_GEOIP2)
        const struct CMUnitTest tests[] = {
                cmocka_unit_test(baseline),   cmocka_unit_test(country),
                cmocka_unit_test(country_v6), cmocka_unit_test(city),
@@ -410,9 +405,6 @@ main(void) {
        };
 
        return (cmocka_run_group_tests(tests, _setup, _teardown));
-#else  /* if defined(HAVE_GEOIP2) */
-       print_message("1..0 # Skip GeoIP not enabled\n");
-#endif /* if defined(HAVE_GEOIP2) */
 }
 
 #else /* HAVE_CMOCKA */
index 40fd712cc441253f4dd2e6220939331376f5ded0..881553660d3825e7c907e2b7456f7c663c202079 100644 (file)
@@ -172,7 +172,7 @@ create_dsstruct(dns_name_t *name, uint16_t flags, uint8_t proto, uint8_t alg,
 
 /* Common setup: create a keytable and ntatable to test with a few keys */
 static void
-create_tables() {
+create_tables(void) {
        isc_result_t result;
        unsigned char digest[ISC_MAX_MD_SIZE];
        dns_rdata_ds_t ds;
@@ -215,7 +215,7 @@ create_tables() {
 }
 
 static void
-destroy_tables() {
+destroy_tables(void) {
        if (ntatable != NULL) {
                dns_ntatable_detach(&ntatable);
        }
index 74709a85ea5139e96925dde2f062222ee0264654..9b8913057eb4b28fd83c421795a0ac706066552d 100644 (file)
@@ -23,6 +23,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/dir.h>
 #include <isc/print.h>
 #include <isc/string.h>
 #include <isc/util.h>
@@ -140,7 +141,8 @@ setup_master(void (*warn)(struct dns_rdatacallbacks *, const char *, ...),
 }
 
 static isc_result_t
-test_master(const char *testfile, dns_masterformat_t format,
+test_master(const char *workdir, const char *testfile,
+           dns_masterformat_t format,
            void (*warn)(struct dns_rdatacallbacks *, const char *, ...),
            void (*error)(struct dns_rdatacallbacks *, const char *, ...)) {
        isc_result_t result;
@@ -161,9 +163,17 @@ test_master(const char *testfile, dns_masterformat_t format,
                callbacks.error = error;
        }
 
+       if (workdir != NULL) {
+               result = isc_dir_chdir(workdir);
+               if (result != ISC_R_SUCCESS) {
+                       return (result);
+               }
+       }
+
        result = dns_master_loadfile(testfile, &dns_origin, &dns_origin,
                                     dns_rdataclass_in, true, 0, &callbacks,
                                     NULL, NULL, dt_mctx, format, 0);
+
        return (result);
 }
 
@@ -183,7 +193,7 @@ load_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master1.data",
+       result = test_master(SRCDIR, "testdata/master/master1.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -198,7 +208,7 @@ unexpected_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master2.data",
+       result = test_master(SRCDIR, "testdata/master/master2.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_UNEXPECTEDEND);
 }
@@ -214,7 +224,7 @@ noowner_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master3.data",
+       result = test_master(SRCDIR, "testdata/master/master3.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, DNS_R_NOOWNER);
 }
@@ -230,7 +240,7 @@ nottl_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master4.data",
+       result = test_master(SRCDIR, "testdata/master/master4.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -246,7 +256,7 @@ badclass_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master5.data",
+       result = test_master(SRCDIR, "testdata/master/master5.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, DNS_R_BADCLASS);
 }
@@ -261,7 +271,7 @@ toobig_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master15.data",
+       result = test_master(SRCDIR, "testdata/master/master15.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_NOSPACE);
 }
@@ -276,7 +286,7 @@ maxrdata_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master16.data",
+       result = test_master(SRCDIR, "testdata/master/master16.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -291,7 +301,7 @@ dnskey_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master6.data",
+       result = test_master(SRCDIR, "testdata/master/master6.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -309,7 +319,7 @@ dnsnokey_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master7.data",
+       result = test_master(SRCDIR, "testdata/master/master7.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_UNEXPECTEDEND);
 }
@@ -324,7 +334,7 @@ include_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master8.data",
+       result = test_master(SRCDIR, "testdata/master/master8.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, DNS_R_SEENINCLUDE);
 }
@@ -343,6 +353,9 @@ master_includelist_test(void **state) {
        result = setup_master(nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 
+       result = isc_dir_chdir(SRCDIR);
+       assert_int_equal(result, ISC_R_SUCCESS);
+
        result = dns_master_loadfile(
                "testdata/master/master8.data", &dns_origin, &dns_origin,
                dns_rdataclass_in, 0, true, &callbacks, include_callback,
@@ -365,7 +378,7 @@ includefail_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master9.data",
+       result = test_master(SRCDIR, "testdata/master/master9.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, DNS_R_BADCLASS);
 }
@@ -380,7 +393,7 @@ blanklines_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master10.data",
+       result = test_master(SRCDIR, "testdata/master/master10.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -396,7 +409,7 @@ leadingzero_test(void **state) {
 
        UNUSED(state);
 
-       result = test_master("testdata/master/master11.data",
+       result = test_master(SRCDIR, "testdata/master/master11.data",
                             dns_masterformat_text, nullmsg, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
 }
@@ -447,21 +460,21 @@ loadraw_test(void **state) {
        UNUSED(state);
 
        /* Raw format version 0 */
-       result = test_master("testdata/master/master12.data",
+       result = test_master(BUILDDIR, "testdata/master/master12.data",
                             dns_masterformat_raw, nullmsg, nullmsg);
        assert_string_equal(isc_result_totext(result), "success");
        assert_true(headerset);
        assert_int_equal(header.flags, 0);
 
        /* Raw format version 1, no source serial  */
-       result = test_master("testdata/master/master13.data",
+       result = test_master(BUILDDIR, "testdata/master/master13.data",
                             dns_masterformat_raw, nullmsg, nullmsg);
        assert_string_equal(isc_result_totext(result), "success");
        assert_true(headerset);
        assert_int_equal(header.flags, 0);
 
        /* Raw format version 1, source serial == 2011120101 */
-       result = test_master("testdata/master/master14.data",
+       result = test_master(BUILDDIR, "testdata/master/master14.data",
                             dns_masterformat_raw, nullmsg, nullmsg);
        assert_string_equal(isc_result_totext(result), "success");
        assert_true(headerset);
@@ -501,10 +514,16 @@ dumpraw_test(void **state) {
                               dns_rdataclass_in, 0, NULL, &db);
        assert_int_equal(result, ISC_R_SUCCESS);
 
+       result = isc_dir_chdir(SRCDIR);
+       assert_int_equal(result, ISC_R_SUCCESS);
+
        result = dns_db_load(db, "testdata/master/master1.data",
                             dns_masterformat_text, 0);
        assert_int_equal(result, ISC_R_SUCCESS);
 
+       result = isc_dir_chdir(BUILDDIR);
+       assert_int_equal(result, ISC_R_SUCCESS);
+
        dns_db_currentversion(db, &version);
 
        result = dns_master_dump(dt_mctx, db, version,
@@ -512,7 +531,7 @@ dumpraw_test(void **state) {
                                 dns_masterformat_raw, NULL);
        assert_int_equal(result, ISC_R_SUCCESS);
 
-       result = test_master("test.dump", dns_masterformat_raw, nullmsg,
+       result = test_master(NULL, "test.dump", dns_masterformat_raw, nullmsg,
                             nullmsg);
        assert_string_equal(isc_result_totext(result), "success");
        assert_true(headerset);
@@ -528,7 +547,7 @@ dumpraw_test(void **state) {
                                 dns_masterformat_raw, &header);
        assert_int_equal(result, ISC_R_SUCCESS);
 
-       result = test_master("test.dump", dns_masterformat_raw, nullmsg,
+       result = test_master(NULL, "test.dump", dns_masterformat_raw, nullmsg,
                             nullmsg);
        assert_string_equal(isc_result_totext(result), "success");
        assert_true(headerset);
@@ -573,7 +592,7 @@ neworigin_test(void **state) {
        UNUSED(state);
 
        warn_expect_value = "record with inherited owner";
-       result = test_master("testdata/master/master17.data",
+       result = test_master(SRCDIR, "testdata/master/master17.data",
                             dns_masterformat_text, warn_expect, nullmsg);
        assert_int_equal(result, ISC_R_SUCCESS);
        assert_true(warn_expect_result);
index 1e6fa5ae4c2d35fc5bebefa438ca0429ff02c592..97209ff7b1e3d3df0b4a7e00f128e7c15bbab2fd 100644 (file)
 #include <inttypes.h>
 #include <stdbool.h>
 
+#if HAVE_GSSAPI
+#if HAVE_GSSAPI_GSSAPI_H
+#include <gssapi/gssapi.h>
+#elif HAVE_GSSAPI_H
+#include <gssapi.h>
+#endif
+#endif /* HAVE_GSSAPI */
+
 #include <isc/buffer.h>
 #include <isc/md.h>
 #include <isc/mem.h>
@@ -574,9 +582,9 @@ process_gsstkey(dns_message_t *msg, dns_name_t *name, dns_rdata_tkey_t *tkeyin,
                        dns_tsigkey_detach(&tsigkey);
                }
        } else if (tsigkey == NULL) {
-#ifdef GSSAPI
+#if HAVE_GSSAPI
                OM_uint32 gret, minor, lifetime;
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
                uint32_t expire;
 
                RETERR(dst_key_fromgssapi(name, gss_ctx, ring->mctx, &dstkey,
@@ -586,12 +594,12 @@ process_gsstkey(dns_message_t *msg, dns_name_t *name, dns_rdata_tkey_t *tkeyin,
                 * is smaller.
                 */
                expire = now + 3600;
-#ifdef GSSAPI
+#if HAVE_GSSAPI
                gret = gss_context_time(&minor, gss_ctx, &lifetime);
                if (gret == GSS_S_COMPLETE && now + lifetime < expire) {
                        expire = now + lifetime;
                }
-#endif /* ifdef GSSAPI */
+#endif /* HAVE_GSSAPI */
                RETERR(dns_tsigkey_createfromkey(
                        name, &tkeyin->algorithm, dstkey, true, principal, now,
                        expire, ring->mctx, ring, &tsigkey));
index 89811c148d072ff3bb3e5968ec65fa04c4366efb..33f16d4e84ddb2b871c23a15de0beb707e193ba1 100644 (file)
@@ -27,9 +27,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Library Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Library Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\acl.c">
       <Filter>Library Source Files</Filter>
     </ClCompile>
     <ClInclude Include="..\include\dns\validator.h">
       <Filter>Library Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\dns\version.h">
-      <Filter>Library Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\dns\view.h">
       <Filter>Library Header Files</Filter>
     </ClInclude>
index 3a5cd719c0c25a41f428b17e6b25ca03b282733f..b8e8438d2a33c6afd40f1d4d8e0e47464f66a1a2 100644 (file)
     <ClCompile Include="..\zoneverify.c" />
     <ClCompile Include="..\zt.c" />
     <ClCompile Include="DLLMain.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\code.h" />
diff --git a/lib/dns/win32/version.c b/lib/dns/win32/version.c
deleted file mode 100644 (file)
index 19fc7db..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <dns/version.h>
-
-LIBDNS_EXTERNAL_DATA const char dns_version[] = VERSION;
-LIBDNS_EXTERNAL_DATA const char dns_major[] = MAJOR;
-LIBDNS_EXTERNAL_DATA const char dns_mapapi[] = MAPAPI;
-
-LIBDNS_EXTERNAL_DATA const unsigned int dns_libinterface = LIBINTERFACE;
-LIBDNS_EXTERNAL_DATA const unsigned int dns_librevision = LIBREVISION;
-LIBDNS_EXTERNAL_DATA const unsigned int dns_libage = LIBAGE;
diff --git a/lib/irs/Kyuafile b/lib/irs/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/irs/Makefile.am b/lib/irs/Makefile.am
new file mode 100644 (file)
index 0000000..cb70243
--- /dev/null
@@ -0,0 +1,40 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libirs.la
+
+libirs_ladir = $(includedir)/irs
+libirs_la_HEADERS =            \
+       include/irs/context.h   \
+       include/irs/dnsconf.h   \
+       include/irs/netdb.h     \
+       include/irs/resconf.h   \
+       include/irs/types.h
+
+libirs_la_SOURCES =            \
+       $(libirs_la_HEADERS)    \
+       context.c               \
+       dnsconf.c               \
+       gai_strerror.c          \
+       getaddrinfo.c           \
+       getnameinfo.c           \
+       resconf.c
+
+libirs_la_CPPFLAGS =           \
+       $(AM_CPPFLAGS)          \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)     \
+       $(LIBIRS_CFLAGS)
+
+libirs_la_LIBADD =             \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBISCCFG_LIBS)
+
+libirs_la_LDFLAGS =            \
+       $(libirs_VERSION_INFO)
+
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
index 267383baabb33f9c550702a5ebd821a431ec661c..7ac891e635df9cdff8783120451f0d4852c6e3f7 100644 (file)
@@ -42,7 +42,7 @@
 #define DNS_CONF "/etc/dns.conf"
 #endif /* ifndef DNS_CONF */
 
-ISC_THREAD_LOCAL irs_context_t *irs_context = NULL;
+static thread_local irs_context_t *irs_context = NULL;
 
 struct irs_context {
        /*
diff --git a/lib/irs/include/irs/netdb.h b/lib/irs/include/irs/netdb.h
new file mode 100644 (file)
index 0000000..bf89777
--- /dev/null
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+/*! \file */
+
+#ifndef IRS_NETDB_H
+#define IRS_NETDB_H 1
+
+#include <netdb.h>  /* Contractual provision. */
+#include <stddef.h> /* Required on FreeBSD (and  others?) for size_t. */
+
+/*
+ * Undefine all #defines we are interested in as <netdb.h> may or may not have
+ * defined them.
+ */
+
+/*
+ * Error return codes from gethostbyname() and gethostbyaddr()
+ * (left in extern int h_errno).
+ */
+
+#undef NETDB_INTERNAL
+#undef NETDB_SUCCESS
+#undef HOST_NOT_FOUND
+#undef TRY_AGAIN
+#undef NO_RECOVERY
+#undef NO_DATA
+#undef NO_ADDRESS
+
+#define NETDB_INTERNAL -1 /* see errno */
+#define NETDB_SUCCESS  0  /* no problem */
+#define HOST_NOT_FOUND 1  /* Authoritative Answer Host not found */
+#define TRY_AGAIN      2  /* Non-Authoritive Host not found, or SERVERFAIL */
+#define NO_RECOVERY    3  /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
+#define NO_DATA               4  /* Valid name, no data record of requested type */
+#define NO_ADDRESS     NO_DATA /* no address, look for MX record */
+
+/*
+ * Error return codes from getaddrinfo().  EAI_INSECUREDATA is our own extension
+ * and it's very unlikely to be already defined, but undef it just in case; it
+ * at least doesn't do any harm.
+ */
+
+#undef EAI_ADDRFAMILY
+#undef EAI_AGAIN
+#undef EAI_BADFLAGS
+#undef EAI_FAIL
+#undef EAI_FAMILY
+#undef EAI_MEMORY
+#undef EAI_NODATA
+#undef EAI_NONAME
+#undef EAI_SERVICE
+#undef EAI_SOCKTYPE
+#undef EAI_SYSTEM
+#undef EAI_BADHINTS
+#undef EAI_PROTOCOL
+#undef EAI_OVERFLOW
+#undef EAI_INSECUREDATA
+#undef EAI_MAX
+
+#define EAI_ADDRFAMILY  1  /* address family for hostname not supported */
+#define EAI_AGAIN       2  /* temporary failure in name resolution */
+#define EAI_BADFLAGS    3  /* invalid value for ai_flags */
+#define EAI_FAIL        4  /* non-recoverable failure in name resolution */
+#define EAI_FAMILY      5  /* ai_family not supported */
+#define EAI_MEMORY      6  /* memory allocation failure */
+#define EAI_NODATA      7  /* no address associated with hostname */
+#define EAI_NONAME      8  /* hostname nor servname provided, or not known */
+#define EAI_SERVICE     9  /* servname not supported for ai_socktype */
+#define EAI_SOCKTYPE    10 /* ai_socktype not supported */
+#define EAI_SYSTEM      11 /* system error returned in errno */
+#define EAI_BADHINTS    12
+#define EAI_PROTOCOL    13
+#define EAI_OVERFLOW    14
+#define EAI_INSECUREDATA 15
+#define EAI_MAX                 16
+
+/*
+ * Flag values for getaddrinfo()
+ */
+#undef AI_PASSIVE
+#undef AI_CANONNAME
+#undef AI_NUMERICHOST
+
+#define AI_PASSIVE     0x00000001
+#define AI_CANONNAME   0x00000002
+#define AI_NUMERICHOST 0x00000004
+
+/*
+ * Flag values for getipnodebyname()
+ */
+#undef AI_V4MAPPED
+#undef AI_ALL
+#undef AI_ADDRCONFIG
+#undef AI_DEFAULT
+
+#define AI_V4MAPPED   0x00000008
+#define AI_ALL       0x00000010
+#define AI_ADDRCONFIG 0x00000020
+#define AI_DEFAULT    (AI_V4MAPPED | AI_ADDRCONFIG)
+
+/*
+ * Constants for getnameinfo()
+ */
+#undef NI_MAXHOST
+#undef NI_MAXSERV
+
+#define NI_MAXHOST 1025
+#define NI_MAXSERV 32
+
+/*
+ * Flag values for getnameinfo()
+ */
+#undef NI_NOFQDN
+#undef NI_NUMERICHOST
+#undef NI_NAMEREQD
+#undef NI_NUMERICSERV
+#undef NI_DGRAM
+#undef NI_NUMERICSCOPE
+
+#define NI_NOFQDN      0x00000001
+#define NI_NUMERICHOST 0x00000002
+#define NI_NAMEREQD    0x00000004
+#define NI_NUMERICSERV 0x00000008
+#define NI_DGRAM       0x00000010
+
+/*
+ * Define to map into irs_ namespace.
+ */
+
+#define IRS_NAMESPACE
+
+#ifdef IRS_NAMESPACE
+
+/*
+ * Use our versions not the ones from the C library.
+ */
+
+#ifdef getnameinfo
+#undef getnameinfo
+#endif
+#define getnameinfo irs_getnameinfo
+
+#ifdef getaddrinfo
+#undef getaddrinfo
+#endif
+#define getaddrinfo irs_getaddrinfo
+
+#ifdef freeaddrinfo
+#undef freeaddrinfo
+#endif
+#define freeaddrinfo irs_freeaddrinfo
+
+#ifdef gai_strerror
+#undef gai_strerror
+#endif
+#define gai_strerror irs_gai_strerror
+
+int
+getaddrinfo(const char *hostname, const char *servname,
+           const struct addrinfo *hints, struct addrinfo **res);
+
+int
+getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
+           socklen_t hostlen, char *serv, socklen_t servlen, int flags);
+
+void
+freeaddrinfo(struct addrinfo *ai);
+
+const char *
+gai_strerror(int ecode);
+
+#endif /* IRS_NAMESPACE */
+
+/*
+ * Tell Emacs to use C mode on this file.
+ * Local variables:
+ * mode: c
+ * End:
+ */
+
+#endif /* IRS_NETDB_H */
diff --git a/lib/irs/include/irs/netdb.h.in b/lib/irs/include/irs/netdb.h.in
deleted file mode 100644 (file)
index 4089f9e..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#ifndef IRS_NETDB_H
-#define IRS_NETDB_H 1
-
-#include <stddef.h>    /* Required on FreeBSD (and  others?) for size_t. */
-#include <netdb.h>     /* Contractual provision. */
-
-/*
- * Undefine all #defines we are interested in as <netdb.h> may or may not have
- * defined them.
- */
-
-/*
- * Error return codes from gethostbyname() and gethostbyaddr()
- * (left in extern int h_errno).
- */
-
-#undef NETDB_INTERNAL
-#undef NETDB_SUCCESS
-#undef HOST_NOT_FOUND
-#undef TRY_AGAIN
-#undef NO_RECOVERY
-#undef NO_DATA
-#undef NO_ADDRESS
-
-#define        NETDB_INTERNAL  -1      /* see errno */
-#define        NETDB_SUCCESS   0       /* no problem */
-#define        HOST_NOT_FOUND  1 /* Authoritative Answer Host not found */
-#define        TRY_AGAIN       2 /* Non-Authoritive Host not found, or SERVERFAIL */
-#define        NO_RECOVERY     3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
-#define        NO_DATA         4 /* Valid name, no data record of requested type */
-#define        NO_ADDRESS      NO_DATA         /* no address, look for MX record */
-
-/*
- * Error return codes from getaddrinfo().  EAI_INSECUREDATA is our own extension
- * and it's very unlikely to be already defined, but undef it just in case; it
- * at least doesn't do any harm.
- */
-
-#undef EAI_ADDRFAMILY
-#undef EAI_AGAIN
-#undef EAI_BADFLAGS
-#undef EAI_FAIL
-#undef EAI_FAMILY
-#undef EAI_MEMORY
-#undef EAI_NODATA
-#undef EAI_NONAME
-#undef EAI_SERVICE
-#undef EAI_SOCKTYPE
-#undef EAI_SYSTEM
-#undef EAI_BADHINTS
-#undef EAI_PROTOCOL
-#undef EAI_OVERFLOW
-#undef EAI_INSECUREDATA
-#undef EAI_MAX
-
-#define        EAI_ADDRFAMILY   1      /* address family for hostname not supported */
-#define        EAI_AGAIN        2      /* temporary failure in name resolution */
-#define        EAI_BADFLAGS     3      /* invalid value for ai_flags */
-#define        EAI_FAIL         4      /* non-recoverable failure in name resolution */
-#define        EAI_FAMILY       5      /* ai_family not supported */
-#define        EAI_MEMORY       6      /* memory allocation failure */
-#define        EAI_NODATA       7      /* no address associated with hostname */
-#define        EAI_NONAME       8      /* hostname nor servname provided, or not known */
-#define        EAI_SERVICE      9      /* servname not supported for ai_socktype */
-#define        EAI_SOCKTYPE    10      /* ai_socktype not supported */
-#define        EAI_SYSTEM      11      /* system error returned in errno */
-#define EAI_BADHINTS   12
-#define EAI_PROTOCOL   13
-#define EAI_OVERFLOW   14
-#define EAI_INSECUREDATA 15
-#define EAI_MAX                16
-
-/*
- * Flag values for getaddrinfo()
- */
-#undef AI_PASSIVE
-#undef AI_CANONNAME
-#undef AI_NUMERICHOST
-
-#define        AI_PASSIVE      0x00000001
-#define        AI_CANONNAME    0x00000002
-#define AI_NUMERICHOST 0x00000004
-
-/*
- * Flag values for getipnodebyname()
- */
-#undef AI_V4MAPPED
-#undef AI_ALL
-#undef AI_ADDRCONFIG
-#undef AI_DEFAULT
-
-#define AI_V4MAPPED    0x00000008
-#define AI_ALL         0x00000010
-#define AI_ADDRCONFIG  0x00000020
-#define AI_DEFAULT     (AI_V4MAPPED|AI_ADDRCONFIG)
-
-/*
- * Constants for getnameinfo()
- */
-#undef NI_MAXHOST
-#undef NI_MAXSERV
-
-#define        NI_MAXHOST      1025
-#define        NI_MAXSERV      32
-
-/*
- * Flag values for getnameinfo()
- */
-#undef NI_NOFQDN
-#undef NI_NUMERICHOST
-#undef NI_NAMEREQD
-#undef NI_NUMERICSERV
-#undef NI_DGRAM
-#undef NI_NUMERICSCOPE
-
-#define        NI_NOFQDN       0x00000001
-#define        NI_NUMERICHOST  0x00000002
-#define        NI_NAMEREQD     0x00000004
-#define        NI_NUMERICSERV  0x00000008
-#define        NI_DGRAM        0x00000010
-
-/*
- * Define to map into irs_ namespace.
- */
-
-#define IRS_NAMESPACE
-
-#ifdef IRS_NAMESPACE
-
-/*
- * Use our versions not the ones from the C library.
- */
-
-#ifdef getnameinfo
-#undef getnameinfo
-#endif
-#define getnameinfo irs_getnameinfo
-
-#ifdef getaddrinfo
-#undef getaddrinfo
-#endif
-#define getaddrinfo irs_getaddrinfo
-
-#ifdef freeaddrinfo
-#undef freeaddrinfo
-#endif
-#define freeaddrinfo irs_freeaddrinfo
-
-#ifdef gai_strerror
-#undef gai_strerror
-#endif
-#define gai_strerror irs_gai_strerror
-
-int
-getaddrinfo(const char *hostname, const char *servname,
-           const struct addrinfo *hints, struct addrinfo **res);
-
-int
-getnameinfo(const struct sockaddr *sa, socklen_t salen,
-           char *host, socklen_t hostlen,
-           char *serv, socklen_t servlen,
-           int flags);
-
-void freeaddrinfo (struct addrinfo *ai);
-
-const char *
-gai_strerror(int ecode);
-
-#endif /* IRS_NAMESPACE */
-
-/*
- * Tell Emacs to use C mode on this file.
- * Local variables:
- * mode: c
- * End:
- */
-
-#endif /* IRS_NETDB_H */
diff --git a/lib/irs/include/irs/platform.h.in b/lib/irs/include/irs/platform.h.in
deleted file mode 100644 (file)
index 5599374..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#ifndef IRS_PLATFORM_H
-#define IRS_PLATFORM_H 1
-
-/*****
- ***** Platform-dependent defines.
- *****/
-
-#define LIBIRS_EXTERNAL_DATA
-
-/*
- * Tell Emacs to use C mode on this file.
- * Local Variables:
- * mode: c
- * End:
- */
-
-#endif /* IRS_PLATFORM_H */
diff --git a/lib/irs/include/irs/version.h b/lib/irs/include/irs/version.h
deleted file mode 100644 (file)
index b980b4b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <irs/platform.h>
-
-LIBIRS_EXTERNAL_DATA extern const char irs_version[];
-
-LIBIRS_EXTERNAL_DATA extern const unsigned int irs_libinterface;
-LIBIRS_EXTERNAL_DATA extern const unsigned int irs_librevision;
-LIBIRS_EXTERNAL_DATA extern const unsigned int irs_libage;
diff --git a/lib/irs/tests/Kyuafile b/lib/irs/tests/Kyuafile
deleted file mode 100644 (file)
index 466f1bf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='resconf_test'}
diff --git a/lib/irs/tests/Makefile.am b/lib/irs/tests/Makefile.am
new file mode 100644 (file)
index 0000000..5dc892c
--- /dev/null
@@ -0,0 +1,15 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBIRS_CFLAGS)
+
+LDADD +=                       \
+       $(LIBISC_LIBS)          \
+       $(LIBIRS_LIBS)
+
+check_PROGRAMS = \
+       resconf_test
+
+TESTS = $(check_PROGRAMS)
index 7304a4ba6ce806aeea491654cd870585be30502d..2cb81f6c0902ed46d9044a253503a9ab26fa52d7 100644 (file)
@@ -32,7 +32,7 @@
 static isc_mem_t *mctx = NULL;
 
 static void
-setup_test() {
+setup_test(void) {
        isc_mem_create(&mctx);
 
        /*
diff --git a/lib/irs/version.c b/lib/irs/version.c
deleted file mode 100644 (file)
index 694d964..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <irs/version.h>
-
-const char irs_version[] = VERSION;
-
-const unsigned int irs_libinterface = LIBINTERFACE;
-const unsigned int irs_librevision = LIBREVISION;
-const unsigned int irs_libage = LIBAGE;
index a705f39f346e29a524caf140a90b41958c59d335..734ffcd9b4ef62d4bb58f625d078a8b315cb9fe5 100644 (file)
@@ -1,2 +1 @@
 !netdb.h
-!platform.h
diff --git a/lib/irs/win32/include/irs/platform.h b/lib/irs/win32/include/irs/platform.h
deleted file mode 100644 (file)
index 1520601..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#ifndef IRS_PLATFORM_H
-#define IRS_PLATFORM_H 1
-
-/*****
-***** Platform-dependent defines.
-*****/
-
-#ifdef LIBIRS_EXPORTS
-#define LIBIRS_EXTERNAL_DATA __declspec(dllexport)
-#else /* ifdef LIBIRS_EXPORTS */
-#define LIBIRS_EXTERNAL_DATA __declspec(dllimport)
-#endif /* ifdef LIBIRS_EXPORTS */
-
-/*
- * Tell Emacs to use C mode on this file.
- * Local Variables:
- * mode: c
- * End:
- */
-
-#endif /* IRS_PLATFORM_H */
index 0ffbc07357726ea53b797d4fc2d0d1229a3a753f..670a65c18fef2ada05857728184d63c1fe38fda1 100644 (file)
@@ -21,9 +21,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\context.c">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClInclude Include="..\include\irs\netdb.h.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\irs\platform.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\irs\resconf.h">
       <Filter>Header Files</Filter>
     </ClInclude>
     <ClInclude Include="..\include\irs\types.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\irs\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
   </ItemGroup>
 </Project>
index 7ca472a6c7be9c2ced7b087dd2c30210e8d62049..0f24284d8e667b12e0b565bb88000dc7b9ccabbc 100644 (file)
     <ClCompile Include="..\getnameinfo.c" />
     <ClCompile Include="DLLMain.c" />
     <ClCompile Include="resconf.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\irs\context.h" />
     <ClInclude Include="..\include\irs\dnsconf.h" />
     <ClInclude Include="..\include\irs\netdb.h" />
-    <ClInclude Include="..\include\irs\platform.h" />
     <ClInclude Include="..\include\irs\resconf.h" />
     <ClInclude Include="..\include\irs\types.h" />
-    <ClInclude Include="..\include\irs\version.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/lib/irs/win32/version.c b/lib/irs/win32/version.c
deleted file mode 100644 (file)
index 76179c1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <irs/version.h>
-
-LIBIRS_EXTERNAL_DATA const char irs_version[] = VERSION;
-
-LIBIRS_EXTERNAL_DATA const unsigned int irs_libinterface = LIBINTERFACE;
-LIBIRS_EXTERNAL_DATA const unsigned int irs_librevision = LIBREVISION;
-LIBIRS_EXTERNAL_DATA const unsigned int irs_libage = LIBAGE;
diff --git a/lib/isc/Kyuafile b/lib/isc/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/isc/Makefile.am b/lib/isc/Makefile.am
new file mode 100644 (file)
index 0000000..cb6d6b7
--- /dev/null
@@ -0,0 +1,251 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libisc.la
+
+libisc_ladir = $(includedir)/isc
+libisc_la_HEADERS =                    \
+       include/isc/aes.h               \
+       include/isc/app.h               \
+       include/isc/assertions.h        \
+       include/isc/astack.h            \
+       include/isc/atomic.h            \
+       include/isc/attributes.h        \
+       include/isc/backtrace.h         \
+       include/isc/base32.h            \
+       include/isc/base64.h            \
+       include/isc/bind9.h             \
+       include/isc/buffer.h            \
+       include/isc/bufferlist.h        \
+       include/isc/commandline.h       \
+       include/isc/counter.h           \
+       include/isc/crc64.h             \
+       include/isc/deprecated.h        \
+       include/isc/endian.h            \
+       include/isc/errno.h             \
+       include/isc/error.h             \
+       include/isc/event.h             \
+       include/isc/eventclass.h        \
+       include/isc/file.h              \
+       include/isc/formatcheck.h       \
+       include/isc/fsaccess.h          \
+       include/isc/fuzz.h              \
+       include/isc/glob.h              \
+       include/isc/hash.h              \
+       include/isc/heap.h              \
+       include/isc/hex.h               \
+       include/isc/hmac.h              \
+       include/isc/hp.h                \
+       include/isc/ht.h                \
+       include/isc/httpd.h             \
+       include/isc/interfaceiter.h     \
+       include/isc/iterated_hash.h     \
+       include/isc/lang.h              \
+       include/isc/lex.h               \
+       include/isc/lfsr.h              \
+       include/isc/lib.h               \
+       include/isc/likely.h            \
+       include/isc/list.h              \
+       include/isc/log.h               \
+       include/isc/magic.h             \
+       include/isc/md.h                \
+       include/isc/mem.h               \
+       include/isc/meminfo.h           \
+       include/isc/mutexatomic.h       \
+       include/isc/mutexblock.h        \
+       include/isc/netaddr.h           \
+       include/isc/netmgr.h            \
+       include/isc/netscope.h          \
+       include/isc/nonce.h             \
+       include/isc/os.h                \
+       include/isc/parseint.h          \
+       include/isc/pool.h              \
+       include/isc/portset.h           \
+       include/isc/platform.h          \
+       include/isc/print.h             \
+       include/isc/queue.h             \
+       include/isc/quota.h             \
+       include/isc/radix.h             \
+       include/isc/random.h            \
+       include/isc/ratelimiter.h       \
+       include/isc/refcount.h          \
+       include/isc/regex.h             \
+       include/isc/region.h            \
+       include/isc/resource.h          \
+       include/isc/result.h            \
+       include/isc/resultclass.h       \
+       include/isc/rwlock.h            \
+       include/isc/safe.h              \
+       include/isc/serial.h            \
+       include/isc/siphash.h           \
+       include/isc/sockaddr.h          \
+       include/isc/socket.h            \
+       include/isc/stats.h             \
+       include/isc/stdio.h             \
+       include/isc/strerr.h            \
+       include/isc/string.h            \
+       include/isc/symtab.h            \
+       include/isc/task.h              \
+       include/isc/taskpool.h          \
+       include/isc/timer.h             \
+       include/isc/tm.h                \
+       include/isc/types.h             \
+       include/isc/util.h              \
+       pthreads/include/isc/condition.h\
+       pthreads/include/isc/mutex.h    \
+       pthreads/include/isc/once.h     \
+       pthreads/include/isc/thread.h   \
+       unix/include/isc/align.h        \
+       unix/include/isc/dir.h          \
+       unix/include/isc/netdb.h        \
+       unix/include/isc/net.h          \
+       unix/include/isc/offset.h       \
+       unix/include/isc/stat.h         \
+       unix/include/isc/stdatomic.h    \
+       unix/include/isc/stdtime.h      \
+       unix/include/isc/syslog.h       \
+       unix/include/isc/time.h
+
+pk11dir = $(includedir)/pk11
+pk11_HEADERS =                         \
+       include/pk11/constants.h        \
+       include/pk11/internal.h         \
+       include/pk11/pk11.h             \
+       include/pk11/result.h           \
+       include/pk11/site.h
+
+pkcs11dir = $(includedir)/pkcs11
+pkcs11_HEADERS =               \
+       include/pkcs11/pkcs11.h
+
+libisc_la_SOURCES =            \
+       $(libisc_la_HEADERS)    \
+       $(pk11_HEADERS)         \
+       $(pkcs11_HEADERS)       \
+       netmgr/netmgr-int.h     \
+       netmgr/netmgr.c         \
+       netmgr/tcp.c            \
+       netmgr/tcpdns.c         \
+       netmgr/udp.c            \
+       netmgr/uv-compat.c      \
+       netmgr/uv-compat.h      \
+       netmgr/uverr2result.c   \
+       unix/pk11_api.c         \
+       unix/dir.c              \
+       unix/errno.c            \
+       unix/errno2result.c     \
+       unix/file.c             \
+       unix/fsaccess.c         \
+       unix/interfaceiter.c    \
+       unix/meminfo.c          \
+       unix/net.c              \
+       unix/os.c               \
+       unix/resource.c         \
+       unix/socket.c           \
+       unix/stdio.c            \
+       unix/stdtime.c          \
+       unix/syslog.c           \
+       unix/time.c             \
+       pk11.c                  \
+       pk11_result.c           \
+       aes.c                   \
+       app.c                   \
+       assertions.c            \
+       astack.c                \
+       backtrace.c             \
+       base32.c                \
+       base64.c                \
+       bind9.c                 \
+       buffer.c                \
+       bufferlist.c            \
+       commandline.c           \
+       counter.c               \
+       crc64.c                 \
+       entropy.c               \
+       error.c                 \
+       event.c                 \
+       glob.c                  \
+       hash.c                  \
+       hp.c                    \
+       ht.c                    \
+       heap.c                  \
+       hex.c                   \
+       hmac.c                  \
+       httpd.c                 \
+       iterated_hash.c         \
+       lex.c                   \
+       lfsr.c                  \
+       lib.c                   \
+       log.c                   \
+       md.c                    \
+       mem.c                   \
+       mutexblock.c            \
+       netaddr.c               \
+       netscope.c              \
+       nonce.c                 \
+       openssl_shim.c          \
+       queue.c                 \
+       openssl_shim.h          \
+       pool.c                  \
+       parseint.c              \
+       portset.c               \
+       quota.c                 \
+       radix.c                 \
+       random.c                \
+       ratelimiter.c           \
+       region.c                \
+       regex.c                 \
+       result.c                \
+       rwlock.c                \
+       safe.c                  \
+       serial.c                \
+       siphash.c               \
+       sockaddr.c              \
+       stats.c                 \
+       string.c                \
+       symtab.c                \
+       task.c                  \
+       taskpool.c              \
+       timer.c                 \
+       tm.c                    \
+       pthreads/condition.c    \
+       pthreads/mutex.c        \
+       pthreads/thread.c       \
+       entropy_private.h       \
+       mem_p.h                 \
+       task_p.h                \
+       timer_p.h
+
+libisc_la_CPPFLAGS =           \
+       $(AM_CPPFLAGS)          \
+       $(LIBISC_CFLAGS)        \
+       $(LIBUV_CFLAGS)         \
+       $(OPENSSL_CFLAGS)       \
+       $(ZLIB_CFLAGS)
+
+libisc_la_LDFLAGS =            \
+       $(libisc_VERSION_INFO)
+
+libisc_la_LIBADD =             \
+       $(LIBUV_LIBS)           \
+       $(OPENSSL_LIBS)         \
+       $(ZLIB_LIBS)
+
+if HAVE_JSON_C
+libisc_la_CPPFLAGS +=          \
+       $(JSON_C_CFLAGS)
+
+libisc_la_LIBADD +=            \
+       $(JSON_C_LIBS)
+endif HAVE_JSON_C
+
+if HAVE_LIBXML2
+libisc_la_CPPFLAGS +=          \
+       $(LIBXML2_CFLAGS)
+
+libisc_la_LIBADD +=            \
+       $(LIBXML2_LIBS)
+endif HAVE_LIBXML2
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
index 28f46568c72c5f0c4f69a7db4234198f8c09ab0e..3211d7785faca0f6f27c9ca9b8f36c98c1965afe 100644 (file)
@@ -369,7 +369,7 @@ isc_app_run(void) {
 }
 
 bool
-isc_app_isrunning() {
+isc_app_isrunning(void) {
        return (atomic_load_acquire(&is_running));
 }
 
index c2ca5f46a132d00958d0e9f2d5a78bf66aa12fff..0215fd3a67300ac6e49cd3ad999a2c70a2e95f0a 100644 (file)
@@ -96,16 +96,17 @@ default_callback(const char *file, int line, isc_assertiontype_t type,
                 const char *cond) {
        void *tracebuf[BACKTRACE_MAXFRAME];
        int nframes;
-       const char *logsuffix = ".";
+       bool have_backtrace = false;
        isc_result_t result;
 
        result = isc_backtrace_gettrace(tracebuf, BACKTRACE_MAXFRAME, &nframes);
        if (result == ISC_R_SUCCESS && nframes > 0) {
-               logsuffix = ", back trace";
+               have_backtrace = true;
        }
 
        fprintf(stderr, "%s:%d: %s(%s) failed%s\n", file, line,
-               isc_assertion_typetotext(type), cond, logsuffix);
+               isc_assertion_typetotext(type), cond,
+               (have_backtrace) ? ", back trace" : ".");
 
        if (result == ISC_R_SUCCESS) {
 #if HAVE_BACKTRACE_SYMBOLS
index 2eb7827d592c4dd9ad6453e0fd1e95081688a09a..b19366da96ae3773d9009f58fe3e43d2de8c2210 100644 (file)
@@ -66,7 +66,7 @@ static int isc__hp_max_retired = HP_MAX_THREADS * HP_MAX_HPS;
 
 static atomic_int_fast32_t tid_v_base = ATOMIC_VAR_INIT(0);
 
-ISC_THREAD_LOCAL int tid_v = TID_UNKNOWN;
+static thread_local int tid_v = TID_UNKNOWN;
 
 typedef struct retirelist {
        int size;
@@ -82,7 +82,7 @@ struct isc_hp {
 };
 
 static inline int
-tid() {
+tid(void) {
        if (tid_v == TID_UNKNOWN) {
                tid_v = atomic_fetch_add(&tid_v_base, 1);
                REQUIRE(tid_v < isc__hp_max_threads);
index 2c409eb7ffe33824a13cdc252e1520f9c4e35991..a688b62b8ded38c05b8a2c8438a6be171e7b2f7d 100644 (file)
@@ -12,9 +12,9 @@
 /*! \file isc/assertions.h
  */
 
-#ifndef ISC_ASSERTIONS_H
-#define ISC_ASSERTIONS_H 1
+#pragma once
 
+#include <isc/attributes.h>
 #include <isc/lang.h>
 #include <isc/likely.h>
 #include <isc/platform.h>
@@ -33,10 +33,9 @@ typedef void (*isc_assertioncallback_t)(const char *, int, isc_assertiontype_t,
                                        const char *);
 
 /* coverity[+kill] */
-ISC_PLATFORM_NORETURN_PRE
+ISC_NORETURN
 void
-isc_assertion_failed(const char *, int, isc_assertiontype_t,
-                    const char *) ISC_PLATFORM_NORETURN_POST;
+isc_assertion_failed(const char *, int, isc_assertiontype_t, const char *);
 
 void isc_assertion_setcallback(isc_assertioncallback_t);
 
@@ -68,5 +67,3 @@ isc_assertion_typetotext(isc_assertiontype_t type);
                 0)))
 
 ISC_LANG_ENDDECLS
-
-#endif /* ISC_ASSERTIONS_H */
similarity index 56%
rename from lib/dns/version.c
rename to lib/isc/include/isc/attributes.h
index 629a5847ae0a4f499837ec15cc4edfcca09d66f0..8f291f4969340c0cddf5e27431dc4f0e56fdd095 100644 (file)
@@ -9,14 +9,18 @@
  * information regarding copyright ownership.
  */
 
-/*! \file */
+#pragma once
 
-#include <dns/version.h>
+#ifdef _WIN32
+#define __attribute__(attribute) /* do nothing */
+#else
+#define __declspec(modifier) /* do nothing */
+#endif
 
-const char dns_version[] = VERSION;
-const char dns_major[] = MAJOR;
-const char dns_mapapi[] = MAPAPI;
-
-const unsigned int dns_libinterface = LIBINTERFACE;
-const unsigned int dns_librevision = LIBREVISION;
-const unsigned int dns_libage = LIBAGE;
+#if HAVE_FUNC_ATTRIBUTE_NORETURN
+#define ISC_NORETURN __attribute__((noreturn))
+#elif _WIN32
+#define ISC_NORETURN __declspec(noreturn)
+#else
+#define ISC_NORETURN
+#endif
index 316fea41fbd23b497f455183c014aaa6ca1e0ff6..be1449e1997e45dcfe7e81be4cecf5e7690cc77a 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <stdarg.h>
 
+#include <isc/attributes.h>
 #include <isc/formatcheck.h>
 #include <isc/lang.h>
 #include <isc/likely.h>
@@ -37,14 +38,12 @@ isc_error_unexpected(const char *, int, const char *, ...)
        ISC_FORMAT_PRINTF(3, 4);
 
 /*% fatal error */
-ISC_PLATFORM_NORETURN_PRE void
-isc_error_fatal(const char *, int, const char *, ...)
-       ISC_FORMAT_PRINTF(3, 4) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+isc_error_fatal(const char *, int, const char *, ...) ISC_FORMAT_PRINTF(3, 4);
 
 /*% runtimecheck error */
-ISC_PLATFORM_NORETURN_PRE void
-isc_error_runtimecheck(const char *, int,
-                      const char *) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+isc_error_runtimecheck(const char *, int, const char *);
 
 #define ISC_ERROR_RUNTIMECHECK(cond) \
        ((void)(ISC_LIKELY(cond) ||  \
index aa6efe06a051205e3355f3aa50883e67da2c6da4..a84979224c4c61a73fb0d023bea6da68edea4e69 100644 (file)
 #include <isc/net.h>
 #include <isc/types.h>
 
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
 #include <sys/types.h>
 #include <sys/un.h>
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 
 ISC_LANG_BEGINDECLS
 
@@ -33,9 +33,9 @@ struct isc_netaddr {
        union {
                struct in_addr  in;
                struct in6_addr in6;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
                char un[sizeof(((struct sockaddr_un *)0)->sun_path)];
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        } type;
        uint32_t zone;
 };
index 68c0103834bcffc0671ac3736f539765927011c4..dcda32d25138033555953414ad151cba6aa97630 100644 (file)
  *** Miscellaneous.
  ***/
 
-/*
- * Defined to <gssapi.h> or <gssapi/gssapi.h> for how to include
- * the GSSAPI header.
- */
-@ISC_PLATFORM_GSSAPIHEADER@
-
-/*
- * Defined to <gssapi_krb5.h> or <gssapi/gssapi_krb5.h> for how to
- * include the GSSAPI KRB5 header.
- */
-@ISC_PLATFORM_GSSAPI_KRB5_HEADER@
-
-/*
- * Defined to <krb5.h> or <krb5/krb5.h> for how to include
- * the KRB5 header.
- */
-@ISC_PLATFORM_KRB5HEADER@
-
-/*
- * Define if the platform has <sys/un.h>.
- */
-@ISC_PLATFORM_HAVESYSUNH@
-
-/*
- * Defines for the noreturn attribute.
- */
-@ISC_PLATFORM_NORETURN_PRE@
-@ISC_PLATFORM_NORETURN_POST@
-
 /***
  ***   Windows dll support.
  ***/
index 846c86cb2651227528ef056b5758a204dc9be60f..f677fee63373a4115b72a939821c4618a0f930d3 100644 (file)
@@ -19,9 +19,9 @@
 #include <isc/lang.h>
 #include <isc/net.h>
 #include <isc/types.h>
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
 #include <sys/un.h>
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 
 struct isc_sockaddr {
        union {
@@ -29,9 +29,9 @@ struct isc_sockaddr {
                struct sockaddr_in      sin;
                struct sockaddr_in6     sin6;
                struct sockaddr_storage ss;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
                struct sockaddr_un sunix;
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        } type;
        unsigned int length; /* XXXRTH beginning? */
        ISC_LINK(struct isc_sockaddr) link;
diff --git a/lib/isc/include/isc/version.h b/lib/isc/include/isc/version.h
deleted file mode 100644 (file)
index 77bf076..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file isc/version.h */
-
-#include <isc/platform.h>
-
-LIBISC_EXTERNAL_DATA extern const char isc_version[];
-
-LIBISC_EXTERNAL_DATA extern const unsigned int isc_libinterface;
-LIBISC_EXTERNAL_DATA extern const unsigned int isc_librevision;
-LIBISC_EXTERNAL_DATA extern const unsigned int isc_libage;
index d1c7761c203591229eb6a54551c2a2bf272afa60..20ec2b280cc1de8d5c8f4d977fd231f5faaa4ea7 100644 (file)
@@ -9,14 +9,14 @@
  * information regarding copyright ownership.
  */
 
-#ifndef PK11_PK11_H
-#define PK11_PK11_H 1
+#pragma once
 
 /*! \file pk11/pk11.h */
 
 #include <stdbool.h>
 #include <unistd.h>
 
+#include <isc/attributes.h>
 #include <isc/lang.h>
 #include <isc/magic.h>
 #include <isc/types.h>
@@ -134,9 +134,9 @@ isc_result_t
 pk11_parse_uri(pk11_object_t *obj, const char *label, isc_mem_t *mctx,
               pk11_optype_t optype);
 
-ISC_PLATFORM_NORETURN_PRE void
+ISC_NORETURN void
 pk11_error_fatalcheck(const char *file, int line, const char *funcname,
-                     CK_RV rv) ISC_PLATFORM_NORETURN_POST;
+                     CK_RV rv);
 
 void
 pk11_dump_tokens(void);
@@ -284,5 +284,3 @@ pkcs_C_GenerateRandom(CK_SESSION_HANDLE hSession, CK_BYTE_PTR RandomData,
                      CK_ULONG ulRandomLen);
 
 ISC_LANG_ENDDECLS
-
-#endif /* PK11_PK11_H */
index ed3fd13bb2942886510f7b5cd44d0476160497a9..8d3ee2e4f14dbb5070759343d62766745e29b7ee 100644 (file)
@@ -49,13 +49,13 @@ isc_netaddr_equal(const isc_netaddr_t *a, const isc_netaddr_t *b) {
                        return (false);
                }
                break;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        case AF_UNIX:
                if (strcmp(a->type.un, b->type.un) != 0) {
                        return (false);
                }
                break;
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        default:
                return (false);
        }
@@ -142,7 +142,7 @@ isc_netaddr_totext(const isc_netaddr_t *netaddr, isc_buffer_t *target) {
        case AF_INET6:
                type = &netaddr->type.in6;
                break;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        case AF_UNIX:
                alen = strlen(netaddr->type.un);
                if (alen > isc_buffer_availablelength(target)) {
@@ -152,7 +152,7 @@ isc_netaddr_totext(const isc_netaddr_t *netaddr, isc_buffer_t *target) {
                                  (const unsigned char *)(netaddr->type.un),
                                  alen);
                return (ISC_R_SUCCESS);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        default:
                return (ISC_R_FAILURE);
        }
@@ -312,7 +312,7 @@ isc_netaddr_fromin6(isc_netaddr_t *netaddr, const struct in6_addr *ina6) {
 
 isc_result_t
 isc_netaddr_frompath(isc_netaddr_t *netaddr, const char *path) {
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        if (strlen(path) > sizeof(netaddr->type.un) - 1) {
                return (ISC_R_NOSPACE);
        }
@@ -322,11 +322,11 @@ isc_netaddr_frompath(isc_netaddr_t *netaddr, const char *path) {
        strlcpy(netaddr->type.un, path, sizeof(netaddr->type.un));
        netaddr->zone = 0;
        return (ISC_R_SUCCESS);
-#else  /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#else  /* ifndef _WIN32 */
        UNUSED(netaddr);
        UNUSED(path);
        return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 }
 
 void
@@ -355,12 +355,12 @@ isc_netaddr_fromsockaddr(isc_netaddr_t *t, const isc_sockaddr_t *s) {
                memmove(&t->type.in6, &s->type.sin6.sin6_addr, 16);
                t->zone = s->type.sin6.sin6_scope_id;
                break;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        case AF_UNIX:
                memmove(t->type.un, s->type.sunix.sun_path, sizeof(t->type.un));
                t->zone = 0;
                break;
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        default:
                INSIST(0);
                ISC_UNREACHABLE();
index 53882c5d0b12f0436ff1bb4a0ef2849bc314be28..180d3336f9d527c4b6908cf23880b140df00c70c 100644 (file)
@@ -116,7 +116,7 @@ static const isc_statscounter_t unixstatsindex[] = {
  * request using async_cb.
  */
 
-ISC_THREAD_LOCAL int isc__nm_tid_v = ISC_NETMGR_TID_UNKNOWN;
+static thread_local int isc__nm_tid_v = ISC_NETMGR_TID_UNKNOWN;
 
 static void
 nmsocket_maybe_destroy(isc_nmsocket_t *sock);
@@ -130,12 +130,12 @@ static void
 process_queue(isc__networker_t *worker, isc_queue_t *queue);
 
 int
-isc_nm_tid() {
+isc_nm_tid(void) {
        return (isc__nm_tid_v);
 }
 
 bool
-isc__nm_in_netthread() {
+isc__nm_in_netthread(void) {
        return (isc__nm_tid_v >= 0);
 }
 
index ed951c5d71023f0a0e52cacb521158e7b551774d..4f73620d8e7b67109243a88491549984470a04a7 100644 (file)
@@ -36,7 +36,7 @@
 static atomic_uint_fast32_t last_tcpquota_log = ATOMIC_VAR_INIT(0);
 
 static bool
-can_log_tcp_quota() {
+can_log_tcp_quota(void) {
        isc_stdtime_t now, last;
 
        isc_stdtime_get(&now);
index 79f3e96ce2cbfcf1bc1890cd4ac68f78c1e00296..9dd30d58c25c17e04b3443c026db93a95df33ce9 100644 (file)
@@ -9,12 +9,14 @@
  * information regarding copyright ownership.
  */
 
-#ifndef ISC_THREAD_H
-#define ISC_THREAD_H 1
+#pragma once
 
 /*! \file */
 
 #include <pthread.h>
+#if HAVE_THREADS_H
+#include <threads.h>
+#endif
 
 #if defined(HAVE_PTHREAD_NP_H)
 #include <pthread_np.h>
@@ -50,23 +52,4 @@ isc_thread_setaffinity(int cpu);
 
 #define isc_thread_self (unsigned long)pthread_self
 
-/***
- *** Thread-Local Storage
- ***/
-
-#if defined(HAVE_TLS)
-#if defined(HAVE_THREAD_LOCAL)
-#include <threads.h>
-#define ISC_THREAD_LOCAL static thread_local
-#elif defined(HAVE___THREAD)
-#define ISC_THREAD_LOCAL static __thread
-#else /* if defined(HAVE_THREAD_LOCAL) */
-#error "Unknown method for defining a TLS variable!"
-#endif /* if defined(HAVE_THREAD_LOCAL) */
-#else  /* if defined(HAVE_TLS) */
-#error "Thread-local storage support is required!"
-#endif /* if defined(HAVE_TLS) */
-
 ISC_LANG_ENDDECLS
-
-#endif /* ISC_THREAD_H */
index 02b92260db29bd3b1498cdd0f577bfa3a61e6042..aec88370ad08a9a56b4562b2e60d890870f3b288 100644 (file)
@@ -60,7 +60,7 @@
  */
 #include "xoshiro128starstar.c"
 
-ISC_THREAD_LOCAL isc_once_t isc_random_once = ISC_ONCE_INIT;
+static thread_local isc_once_t isc_random_once = ISC_ONCE_INIT;
 
 static void
 isc_random_initialize(void) {
index 6fb4c69cf7acd60acdd5aa0166b1c1417b785778..84727392810f6f4913fe611edd302a5f88964b92 100644 (file)
@@ -137,7 +137,7 @@ isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
                snprintf(pbuf, sizeof(pbuf), "%u",
                         ntohs(sockaddr->type.sin6.sin6_port));
                break;
-#ifdef ISC_PLAFORM_HAVESYSUNH
+#ifndef _WIN32
        case AF_UNIX:
                plen = strlen(sockaddr->type.sunix.sun_path);
                if (plen >= isc_buffer_availablelength(target)) {
@@ -154,7 +154,7 @@ isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
                avail.base[0] = '\0';
 
                return (ISC_R_SUCCESS);
-#endif /* ifdef ISC_PLAFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32  */
        default:
                return (ISC_R_FAILURE);
        }
@@ -465,7 +465,7 @@ isc_sockaddr_isnetzero(const isc_sockaddr_t *sockaddr) {
 
 isc_result_t
 isc_sockaddr_frompath(isc_sockaddr_t *sockaddr, const char *path) {
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        if (strlen(path) >= sizeof(sockaddr->type.sunix.sun_path)) {
                return (ISC_R_NOSPACE);
        }
@@ -475,11 +475,11 @@ isc_sockaddr_frompath(isc_sockaddr_t *sockaddr, const char *path) {
        strlcpy(sockaddr->type.sunix.sun_path, path,
                sizeof(sockaddr->type.sunix.sun_path));
        return (ISC_R_SUCCESS);
-#else  /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#else  /* ifndef _WIN32 */
        UNUSED(sockaddr);
        UNUSED(path);
        return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 }
 
 isc_result_t
@@ -493,11 +493,11 @@ isc_sockaddr_fromsockaddr(isc_sockaddr_t *isa, const struct sockaddr *sa) {
        case AF_INET6:
                length = sizeof(isa->type.sin6);
                break;
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        case AF_UNIX:
                length = sizeof(isa->type.sunix);
                break;
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
        default:
                return (ISC_R_NOTIMPLEMENTED);
        }
diff --git a/lib/isc/tests/Kyuafile b/lib/isc/tests/Kyuafile
deleted file mode 100644 (file)
index d07b11f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='aes_test'}
-tap_test_program{name='buffer_test'}
-tap_test_program{name='counter_test'}
-tap_test_program{name='errno_test'}
-tap_test_program{name='file_test'}
-tap_test_program{name='hash_test'}
-tap_test_program{name='heap_test'}
-tap_test_program{name='hmac_test'}
-tap_test_program{name='ht_test'}
-tap_test_program{name='lex_test'}
-tap_test_program{name='md_test'}
-tap_test_program{name='mem_test'}
-tap_test_program{name='netaddr_test'}
-tap_test_program{name='parse_test'}
-tap_test_program{name='pool_test'}
-tap_test_program{name='radix_test'}
-tap_test_program{name='quota_test'}
-tap_test_program{name='regex_test'}
-tap_test_program{name='result_test'}
-tap_test_program{name='safe_test'}
-tap_test_program{name='siphash_test'}
-tap_test_program{name='sockaddr_test'}
-tap_test_program{name='socket_test'}
-tap_test_program{name='symtab_test'}
-tap_test_program{name='task_test'}
-tap_test_program{name='taskpool_test'}
-tap_test_program{name='time_test'}
-tap_test_program{name='timer_test'}
diff --git a/lib/isc/tests/Makefile.am b/lib/isc/tests/Makefile.am
new file mode 100644 (file)
index 0000000..9a0dc87
--- /dev/null
@@ -0,0 +1,65 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)
+
+LDADD +=                       \
+       libisctest.la           \
+       $(LIBISC_LIBS)
+
+noinst_LTLIBRARIES = libisctest.la
+libisctest_la_SOURCES = isctest.c isctest.h
+
+check_PROGRAMS =       \
+       aes_test        \
+       buffer_test     \
+       counter_test    \
+       crc64_test      \
+       errno_test      \
+       file_test       \
+       hash_test       \
+       heap_test       \
+       hmac_test       \
+       ht_test         \
+       lex_test        \
+       md_test         \
+       mem_test        \
+       netaddr_test    \
+       parse_test      \
+       pool_test       \
+       quota_test      \
+       radix_test      \
+       random_test     \
+       regex_test      \
+       result_test     \
+       safe_test       \
+       sockaddr_test   \
+       socket_test     \
+       symtab_test     \
+       task_test       \
+       taskpool_test   \
+       time_test       \
+       timer_test
+
+TESTS = $(check_PROGRAMS)
+
+hmac_test_CPPFLAGS =   \
+       $(AM_CPPFLAGS)  \
+       $(OPENSSL_CFLAGS)
+
+hmac_test_LDADD =      \
+       $(LDADD)        \
+       $(OPENSSL_LIBS)
+
+md_test_CPPFLAGS =     \
+       $(AM_CPPFLAGS)  \
+       $(OPENSSL_CFLAGS)
+
+md_test_LDADD =                \
+       $(LDADD)        \
+       $(OPENSSL_LIBS)
+
+random_test_LDADD =    \
+       $(LDADD)        \
+       -lm
index 4c07c02730e1b4b4fa6d915ed40ba6d0cd1ee3d2..212735b66d0ce8c8d2e84860dd24bd4ebb28d8fd 100644 (file)
@@ -195,7 +195,7 @@ test_ht_full(int bits, uintptr_t count) {
 }
 
 static void
-test_ht_iterator() {
+test_ht_iterator(void) {
        isc_ht_t *ht = NULL;
        isc_result_t result;
        isc_ht_iter_t *iter = NULL;
index bf11cccaf53f87546ebb1254e700f47f733ec073..8dcbec049dd9701cc3ef5e0255e08f91c27ee37d 100644 (file)
@@ -191,9 +191,9 @@ static void
 initialize_action(void) {
        ipv4_result = try_proto(PF_INET);
        ipv6_result = try_proto(PF_INET6);
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        unix_result = try_proto(PF_UNIX);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 }
 
 static void
@@ -418,7 +418,7 @@ make_nonblock(int fd) {
        ret = ioctl(fd, FIONBIO, (char *)&on);
 #else  /* ifdef USE_FIONBIO_IOCTL */
        flags = fcntl(fd, F_GETFL, 0);
-       flags |= PORT_NONBLOCK;
+       flags |= O_NONBLOCK;
        ret = fcntl(fd, F_SETFL, flags);
 #endif /* ifdef USE_FIONBIO_IOCTL */
 
index da2b7d015353dd4732d15c2c616f7442c39ca5bc..2a749e4c9950ee88f0815769cda0fa7fac7ac2c8 100644 (file)
@@ -33,6 +33,7 @@
 #include <fcntl.h>
 #include <stddef.h>
 #include <stdlib.h>
+#include <sys/un.h>
 #include <unistd.h>
 
 #include <isc/app.h>
@@ -58,9 +59,6 @@
 #include <isc/thread.h>
 #include <isc/util.h>
 
-#ifdef ISC_PLATFORM_HAVESYSUNH
-#include <sys/un.h>
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
 #ifdef HAVE_KQUEUE
 #include <sys/event.h>
 #endif /* ifdef HAVE_KQUEUE */
@@ -1002,7 +1000,7 @@ make_nonblock(int fd) {
        ret = ioctl(fd, FIONBIO, (char *)&on);
 #else  /* ifdef USE_FIONBIO_IOCTL */
        flags = fcntl(fd, F_GETFL, 0);
-       flags |= PORT_NONBLOCK;
+       flags |= O_NONBLOCK;
        ret = fcntl(fd, F_SETFL, flags);
 #endif /* ifdef USE_FIONBIO_IOCTL */
 
@@ -4199,7 +4197,7 @@ isc_socket_sendto2(isc_socket_t *sock0, isc_region_t *region, isc_task_t *task,
 
 void
 isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        int s;
        struct stat sb;
        char strbuf[ISC_STRERRORSIZE];
@@ -4324,16 +4322,16 @@ isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
        }
 cleanup:
        close(s);
-#else  /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#else  /* ifndef _WIN32 */
        UNUSED(sockaddr);
        UNUSED(active);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 }
 
 isc_result_t
 isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
                    uint32_t owner, uint32_t group) {
-#ifdef ISC_PLATFORM_HAVESYSUNH
+#ifndef _WIN32
        isc_result_t result = ISC_R_SUCCESS;
        char strbuf[ISC_STRERRORSIZE];
        char path[sizeof(sockaddr->type.sunix.sun_path)];
@@ -4375,13 +4373,13 @@ isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
                result = ISC_R_FAILURE;
        }
        return (result);
-#else  /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#else  /* ifndef _WIN32 */
        UNUSED(sockaddr);
        UNUSED(perm);
        UNUSED(owner);
        UNUSED(group);
        return (ISC_R_NOTIMPLEMENTED);
-#endif /* ifdef ISC_PLATFORM_HAVESYSUNH */
+#endif /* ifndef _WIN32 */
 }
 
 isc_result_t
@@ -5280,7 +5278,7 @@ static isc_once_t hasreuseport_once = ISC_ONCE_INIT;
 static bool hasreuseport = false;
 
 static void
-init_hasreuseport() {
+init_hasreuseport(void) {
 /*
  * SO_REUSEPORT works very differently on *BSD and on Linux (because why not).
  * We only want to use it on Linux, if it's available. On BSD we want to dup()
@@ -5318,7 +5316,7 @@ init_hasreuseport() {
 }
 
 bool
-isc_socket_hasreuseport() {
+isc_socket_hasreuseport(void) {
        RUNTIME_CHECK(isc_once_do(&hasreuseport_once, init_hasreuseport) ==
                      ISC_R_SUCCESS);
        return (hasreuseport);
diff --git a/lib/isc/version.c b/lib/isc/version.c
deleted file mode 100644 (file)
index 025bb5f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <isc/version.h>
-
-const char isc_version[] = VERSION;
-
-const unsigned int isc_libinterface = LIBINTERFACE;
-const unsigned int isc_librevision = LIBREVISION;
-const unsigned int isc_libage = LIBAGE;
index cce2bb513e11a6b86bd231c6095e2b7226624358..41eecd94aa371ad80903266e6f7777e1520f1045 100644 (file)
  ***** Platform-dependent defines.
  *****/
 
-#if _MSC_VER > 1400
-#define HAVE_TLS 1
-#define HAVE___DECLSPEC_THREAD 1
-#endif
-
 /*
  * Some compatibility cludges
  */
 
-#if defined(_WIN32) || defined(_WIN64)
 /* We are on Windows */
-# define strtok_r strtok_s
+#define strtok_r strtok_s
 
 #define ISC_STRERRORSIZE 128
 
 typedef uint32_t socklen_t;
 #endif
 
-#endif
-
-/*
- * Remove __attribute__ ((foo)) on Windows
- */
-
-#define __attribute__(attribute) /* do nothing */
-
 /*
  * Limits
  */
@@ -66,17 +52,6 @@ typedef uint32_t socklen_t;
 
 #undef MSG_TRUNC
 
-/*
- * Define if the platform has <sys/un.h>.
- */
-#undef ISC_PLATFORM_HAVESYSUNH
-
-/*
- * Defines for the noreturn attribute.
- */
-#define ISC_PLATFORM_NORETURN_PRE __declspec(noreturn)
-#define ISC_PLATFORM_NORETURN_POST
-
 /*
  * Set up a macro for importing and exporting from the DLL
  */
index eb22a80665fa06703b2b9e5f1a89bc8d6fa2bca5..aa028ceae2dd5764ce68af1db3d510183b760e08 100644 (file)
@@ -105,7 +105,7 @@ typedef uintptr_t volatile atomic_uintptr_t;
 #endif /* ifdef _WIN64 */
 
 static inline void
-atomic_store_abort() {
+atomic_store_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -159,7 +159,7 @@ atomic_store_abort() {
 #endif /* ifdef _WIN64 */
 
 static inline int8_t
-atomic_load_abort() {
+atomic_load_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -220,7 +220,7 @@ atomic_load_abort() {
 #endif /* ifdef _WIN64 */
 
 static inline int8_t
-atomic_add_abort() {
+atomic_add_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -281,7 +281,7 @@ atomic_add_abort() {
 #endif /* ifdef _WIN64 */
 
 static inline int8_t
-atomic_and_abort() {
+atomic_and_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -336,7 +336,7 @@ atomic_and_abort() {
 #endif /* ifdef _WIN64 */
 
 static inline int8_t
-atomic_or_abort() {
+atomic_or_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -451,7 +451,7 @@ atomic_compare_exchange_strong_explicit64(atomic_int_fast64_t *obj,
 }
 
 static inline bool
-atomic_compare_exchange_abort() {
+atomic_compare_exchange_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
@@ -486,7 +486,7 @@ atomic_compare_exchange_abort() {
                                              memory_order_seq_cst)
 
 static inline bool
-atomic_exchange_abort() {
+atomic_exchange_abort(void) {
        INSIST(0);
        ISC_UNREACHABLE();
 }
index 9ce612217a5eeb95e544722bbddc82cb12f66166..304d149a537b2c5e036c3d153cf53c7eff40268f 100644 (file)
@@ -87,11 +87,7 @@ isc_thread_setaffinity(int cpu);
 
 #define isc_thread_yield() Sleep(0)
 
-#if HAVE___DECLSPEC_THREAD
-#define ISC_THREAD_LOCAL static __declspec(thread)
-#else /* if HAVE___DECLSPEC_THREAD */
-#error "Thread-local storage support is required!"
-#endif /* if HAVE___DECLSPEC_THREAD */
+#define thread_local __declspec(thread)
 
 ISC_LANG_ENDDECLS
 
index 5e8d0b40bd0005aeec5edec93423523a6aeaa0a3..249e5271e3a4f36b350449169124fa3a92f224cb 100644 (file)
     <ClInclude Include="..\include\isc\util.h">
       <Filter>Library Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\isc\version.h">
-      <Filter>Library Header Files</Filter>
-    </ClInclude>
 @IF PKCS11
     <ClInclude Include="..\include\pk11\constants.h">
       <Filter>Library Header Files</Filter>
     <ClCompile Include="time.c">
       <Filter>Win32 Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Win32 Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="win32os.c">
       <Filter>Win32 Source Files</Filter>
     </ClCompile>
index b9c09da842b74975b786ca11125e671c3ca1446a..aafc24a27648ea16f919048bec2a65628f0ff8b1 100644 (file)
@@ -372,7 +372,6 @@ copy InstallFiles ..\Build\Release\
     <ClInclude Include="..\include\isc\tm.h" />
     <ClInclude Include="..\include\isc\types.h" />
     <ClInclude Include="..\include\isc\util.h" />
-    <ClInclude Include="..\include\isc\version.h" />
 @IF PKCS11
     <ClInclude Include="..\include\pk11\constants.h" />
     <ClInclude Include="..\include\pk11\internal.h" />
@@ -499,7 +498,6 @@ copy InstallFiles ..\Build\Release\
     <ClCompile Include="syslog.c" />
     <ClCompile Include="thread.c" />
     <ClCompile Include="time.c" />
-    <ClCompile Include="version.c" />
     <ClCompile Include="win32os.c" />
 @IF PKCS11
     <ClCompile Include="pk11_api.c" />
index c93a635654e060409b15b95807cd86b264d33b18..487515e003bb458f1744820da7c0ae7494368a1f 100644 (file)
@@ -3672,7 +3672,7 @@ isc_socket_socketevent(isc_mem_t *mctx, void *sender, isc_eventtype_t eventtype,
 }
 
 bool
-isc_socket_hasreuseport() {
+isc_socket_hasreuseport(void) {
        return (false);
 }
 
index aa68088ecf380fd12bc0bd29f6441199b560ba41..0df49d3b1e1b8bf76992acc357f683966723b83e 100644 (file)
@@ -10,8 +10,7 @@
  */
 
 /* None of these are defined in NT, so define them for our use */
-#define O_NONBLOCK    1
-#define PORT_NONBLOCK O_NONBLOCK
+#define O_NONBLOCK 1
 
 /*
  * fcntl() commands
diff --git a/lib/isc/win32/version.c b/lib/isc/win32/version.c
deleted file mode 100644 (file)
index 6a2a5af..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <isc/version.h>
-
-LIBISC_EXTERNAL_DATA const char isc_version[] = VERSION;
-
-LIBISC_EXTERNAL_DATA const unsigned int isc_libinterface = LIBINTERFACE;
-LIBISC_EXTERNAL_DATA const unsigned int isc_librevision = LIBREVISION;
-LIBISC_EXTERNAL_DATA const unsigned int isc_libage = LIBAGE;
index 88f9a9c7d19d5f57567ef97ad3a4dbf12cc56681..ba14e48dada6b3e942112237c0212d8509d6afe6 100644 (file)
@@ -34,7 +34,7 @@
  *
  * The state must be seeded so that it is not everywhere zero.
  */
-ISC_THREAD_LOCAL uint32_t seed[4] = { 0 };
+static thread_local uint32_t seed[4] = { 0 };
 
 static inline uint32_t
 rotl(const uint32_t x, int k) {
diff --git a/lib/isccc/Kyuafile b/lib/isccc/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/isccc/Makefile.am b/lib/isccc/Makefile.am
new file mode 100644 (file)
index 0000000..017f822
--- /dev/null
@@ -0,0 +1,42 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libisccc.la
+
+libisccc_ladir = $(includedir)/isccc
+libisccc_la_HEADERS =                  \
+       include/isccc/alist.h           \
+       include/isccc/base64.h          \
+       include/isccc/cc.h              \
+       include/isccc/ccmsg.h           \
+       include/isccc/events.h          \
+       include/isccc/result.h          \
+       include/isccc/sexpr.h           \
+       include/isccc/symtab.h          \
+       include/isccc/symtype.h         \
+       include/isccc/types.h           \
+       include/isccc/util.h
+
+libisccc_la_SOURCES =          \
+       $(libisccc_la_HEADERS)  \
+       alist.c                 \
+       base64.c                \
+       cc.c                    \
+       ccmsg.c                 \
+       result.c                \
+       sexpr.c                 \
+       symtab.c
+
+libisccc_la_CPPFLAGS =         \
+       $(AM_CPPFLAGS)          \
+       $(LIBISC_CFLAGS)        \
+       $(LIBISCCC_CFLAGS)
+
+libisccc_la_LIBADD =   \
+       $(LIBISC_LIBS)
+
+libisccc_la_LDFLAGS =          \
+       $(libisccc_VERSION_INFO)
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
diff --git a/lib/isccc/include/isccc/version.h b/lib/isccc/include/isccc/version.h
deleted file mode 100644 (file)
index 4a1036c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file isccc/version.h */
-
-#include <isc/platform.h>
-
-LIBISCCC_EXTERNAL_DATA extern const char isccc_version[];
-
-LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_libinterface;
-LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_librevision;
-LIBISCCC_EXTERNAL_DATA extern const unsigned int isccc_libage;
diff --git a/lib/isccc/tests/Kyuafile b/lib/isccc/tests/Kyuafile
deleted file mode 100644 (file)
index ce23ab8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='result_test'}
diff --git a/lib/isccc/tests/Makefile.am b/lib/isccc/tests/Makefile.am
new file mode 100644 (file)
index 0000000..000e5c8
--- /dev/null
@@ -0,0 +1,15 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBISCCC_CFLAGS)
+
+LDADD +=                       \
+       $(LIBISC_LIBS)          \
+       $(LIBISCCC_LIBS)
+
+check_PROGRAMS =       \
+       result_test
+
+TESTS = $(check_PROGRAMS)
diff --git a/lib/isccc/version.c b/lib/isccc/version.c
deleted file mode 100644 (file)
index 25e26a8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <isccc/version.h>
-
-const char isccc_version[] = VERSION;
-
-const unsigned int isccc_libinterface = LIBINTERFACE;
-const unsigned int isccc_librevision = LIBREVISION;
-const unsigned int isccc_libage = LIBAGE;
index 1d1ff1037254ebff4bfc682e7df46b104ba015f8..dda104217a5b6f8dd791b6a4efb13632132468f0 100644 (file)
@@ -21,9 +21,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\alist.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -80,8 +77,5 @@
     <ClInclude Include="..\include\isccc\util.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\isccc\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
   </ItemGroup>
 </Project>
index 98f1305afa2e14714e1a84eebe49eafe8b74b41d..2ad7474781c0c912fa1bfcbee1da2eb011c82b59 100644 (file)
     <ClCompile Include="..\sexpr.c" />
     <ClCompile Include="..\symtab.c" />
     <ClCompile Include="DLLMain.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\isccc\alist.h" />
     <ClInclude Include="..\include\isccc\symtype.h" />
     <ClInclude Include="..\include\isccc\types.h" />
     <ClInclude Include="..\include\isccc\util.h" />
-    <ClInclude Include="..\include\isccc\version.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/lib/isccc/win32/version.c b/lib/isccc/win32/version.c
deleted file mode 100644 (file)
index acbbcd0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <isccc/version.h>
-
-LIBISCCC_EXTERNAL_DATA const char isccc_version[] = VERSION;
-
-LIBISCCC_EXTERNAL_DATA const unsigned int isccc_libinterface = LIBINTERFACE;
-LIBISCCC_EXTERNAL_DATA const unsigned int isccc_librevision = LIBREVISION;
-LIBISCCC_EXTERNAL_DATA const unsigned int isccc_libage = LIBAGE;
diff --git a/lib/isccfg/Kyuafile b/lib/isccfg/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/isccfg/Makefile.am b/lib/isccfg/Makefile.am
new file mode 100644 (file)
index 0000000..bd337f6
--- /dev/null
@@ -0,0 +1,39 @@
+include $(top_srcdir)/Makefile.top
+
+lib_LTLIBRARIES = libisccfg.la
+
+libisccfg_ladir = $(includedir)/isccfg
+libisccfg_la_HEADERS =                 \
+       include/isccfg/aclconf.h        \
+       include/isccfg/cfg.h            \
+       include/isccfg/dnsconf.h        \
+       include/isccfg/grammar.h        \
+       include/isccfg/kaspconf.h       \
+       include/isccfg/log.h            \
+       include/isccfg/namedconf.h
+
+libisccfg_la_SOURCES =                 \
+       $(libisccfg_la_HEADERS)         \
+       aclconf.c                       \
+       dnsconf.c                       \
+       kaspconf.c                      \
+       log.c                           \
+       namedconf.c                     \
+       parser.c
+
+libisccfg_la_CPPFLAGS =                        \
+       $(AM_CPPFLAGS)                  \
+       $(LIBISCCFG_CFLAGS)             \
+       $(LIBISC_CFLAGS)                \
+       $(LIBDNS_CFLAGS)
+
+libisccfg_la_LIBADD =  \
+       $(LIBISC_LIBS)  \
+       $(LIBDNS_LIBS)
+
+libisccfg_la_LDFLAGS =         \
+       $(libisccfg_VERSION_INFO)
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
diff --git a/lib/isccfg/include/isccfg/version.h b/lib/isccfg/include/isccfg/version.h
deleted file mode 100644 (file)
index 30ca02d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file isccfg/version.h */
-
-#include <isc/platform.h>
-
-LIBISCCFG_EXTERNAL_DATA extern const char cfg_version[];
-
-LIBISCCFG_EXTERNAL_DATA extern const unsigned int cfg_libinterface;
-LIBISCCFG_EXTERNAL_DATA extern const unsigned int cfg_librevision;
-LIBISCCFG_EXTERNAL_DATA extern const unsigned int cfg_libage;
diff --git a/lib/isccfg/tests/Kyuafile b/lib/isccfg/tests/Kyuafile
deleted file mode 100644 (file)
index 89d5035..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='duration_test'}
-tap_test_program{name='parser_test'}
diff --git a/lib/isccfg/tests/Makefile.am b/lib/isccfg/tests/Makefile.am
new file mode 100644 (file)
index 0000000..9f31441
--- /dev/null
@@ -0,0 +1,17 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBISCCFG_CFLAGS)
+
+LDADD +=                       \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBISCCFG_LIBS)
+
+check_PROGRAMS = \
+       parser_test
+
+TESTS = $(check_PROGRAMS)
index 44234152a5bb00fae0f2b63d8ff1bea75724a52f..6c7e20898fe07a55b5dae1e858e307662b0b138c 100644 (file)
@@ -54,7 +54,7 @@ static isc_logcategory_t categories[] = { { "", 0 },
                                          { NULL, 0 } };
 
 static void
-cleanup() {
+cleanup(void) {
        if (lctx != NULL) {
                isc_log_destroy(&lctx);
        }
@@ -64,7 +64,7 @@ cleanup() {
 }
 
 static isc_result_t
-setup() {
+setup(void) {
        isc_result_t result;
 
        isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
index f5ac432462bbf66ed8c2fedbdb5ee1cd05228c81..e2189277045192be58f796dd5eef5a7c741c5b29 100644 (file)
@@ -54,7 +54,7 @@ static isc_logcategory_t categories[] = { { "", 0 },
                                          { NULL, 0 } };
 
 static void
-cleanup() {
+cleanup(void) {
        if (lctx != NULL) {
                isc_log_destroy(&lctx);
        }
@@ -64,7 +64,7 @@ cleanup() {
 }
 
 static isc_result_t
-setup() {
+setup(void) {
        isc_result_t result;
 
        isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
diff --git a/lib/isccfg/version.c b/lib/isccfg/version.c
deleted file mode 100644 (file)
index 21b65bd..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <isccfg/version.h>
-
-const char cfg_version[] = VERSION;
-
-const unsigned int cfg_libinterface = LIBINTERFACE;
-const unsigned int cfg_librevision = LIBREVISION;
-const unsigned int cfg_libage = LIBAGE;
index 91d4202d7ed4852981a34bd385bdbe8ab528117d..70aebf1879256617482f5450737cb7ef9be451ec 100644 (file)
@@ -21,9 +21,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\aclconf.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -65,8 +62,5 @@
     <ClInclude Include="..\include\isccfg\namedconf.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\isccfg\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
   </ItemGroup>
 </Project>
index 8f2b38c973de7729b89cc63175eed08eceb2d468..07571f91ca5834b9943f4e7239164483436f56ff 100644 (file)
     <ClCompile Include="..\namedconf.c" />
     <ClCompile Include="..\parser.c" />
     <ClCompile Include="DLLMain.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\isccfg\aclconf.h" />
     <ClInclude Include="..\include\isccfg\kaspconf.h" />
     <ClInclude Include="..\include\isccfg\log.h" />
     <ClInclude Include="..\include\isccfg\namedconf.h" />
-    <ClInclude Include="..\include\isccfg\version.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/lib/isccfg/win32/version.c b/lib/isccfg/win32/version.c
deleted file mode 100644 (file)
index a656676..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#include <versions.h>
-
-#include <isccfg/version.h>
-
-LIBISCCFG_EXTERNAL_DATA const char cfg_version[] = VERSION;
-
-LIBISCCFG_EXTERNAL_DATA const unsigned int cfg_libinterface = LIBINTERFACE;
-LIBISCCFG_EXTERNAL_DATA const unsigned int cfg_librevision = LIBREVISION;
-LIBISCCFG_EXTERNAL_DATA const unsigned int cfg_libage = LIBAGE;
diff --git a/lib/ns/Kyuafile b/lib/ns/Kyuafile
deleted file mode 100644 (file)
index 0739e3a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-include('tests/Kyuafile')
diff --git a/lib/ns/Makefile.am b/lib/ns/Makefile.am
new file mode 100644 (file)
index 0000000..adafb78
--- /dev/null
@@ -0,0 +1,59 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                         \
+       -DNAMED_PLUGINDIR=\"$(libdir)/named\"
+
+lib_LTLIBRARIES = libns.la
+
+libns_ladir = $(includedir)/ns
+
+libns_la_HEADERS =                     \
+       include/ns/client.h             \
+       include/ns/hooks.h              \
+       include/ns/interfacemgr.h       \
+       include/ns/lib.h                \
+       include/ns/listenlist.h         \
+       include/ns/log.h                \
+       include/ns/notify.h             \
+       include/ns/query.h              \
+       include/ns/server.h             \
+       include/ns/sortlist.h           \
+       include/ns/stats.h              \
+       include/ns/types.h              \
+       include/ns/update.h             \
+       include/ns/xfrout.h
+
+libns_la_SOURCES =             \
+       $(libns_la_HEADERS)     \
+       client.c                \
+       hooks.c                 \
+       interfacemgr.c          \
+       lib.c                   \
+       listenlist.c            \
+       log.c                   \
+       notify.c                \
+       query.c                 \
+       server.c                \
+       sortlist.c              \
+       stats.c                 \
+       update.c                \
+       xfrout.c
+
+libns_la_CPPFLAGS =                            \
+       $(AM_CPPFLAGS)                          \
+       $(LIBISC_CFLAGS)                        \
+       $(LIBDNS_CFLAGS)                        \
+       $(LIBNS_CFLAGS)                         \
+       $(LIBLTDL_CFLAGS)
+
+libns_la_LIBADD =      \
+       $(LIBISC_LIBS)  \
+       $(LIBDNS_LIBS)  \
+       $(LIBLTDL_LIBS)
+
+libns_la_LDFLAGS =             \
+       $(libns_VERSION_INFO)
+
+if HAVE_CMOCKA
+SUBDIRS = tests
+endif
index 8719acefacca60569684869fa2f4db41e104e8ad..a95f54b7a84d9d3d07b16d7dda0235227a030bde 100644 (file)
 /*! \file */
 
 #include <errno.h>
+#include <ltdl.h>
 #include <stdio.h>
 #include <string.h>
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#elif _WIN32
-#include <windows.h>
-#endif /* if HAVE_DLFCN_H */
-
 #include <isc/errno.h>
 #include <isc/list.h>
 #include <isc/log.h>
@@ -95,7 +90,6 @@ ns_plugin_expandpath(const char *src, char *dst, size_t dstsize) {
        }
 }
 
-#if HAVE_DLFCN_H && HAVE_DLOPEN
 static isc_result_t
 load_symbol(void *handle, const char *modpath, const char *symbol_name,
            void **symbolp) {
@@ -111,10 +105,10 @@ load_symbol(void *handle, const char *modpath, const char *symbol_name,
         * this ensures that we'll report the correct error condition
         * if there is one.)
         */
-       dlerror();
-       symbol = dlsym(handle, symbol_name);
+       lt_dlerror();
+       symbol = lt_dlsym(handle, symbol_name);
        if (symbol == NULL) {
-               const char *errmsg = dlerror();
+               const char *errmsg = lt_dlerror();
                if (errmsg == NULL) {
                        errmsg = "returned function pointer is NULL";
                }
@@ -134,24 +128,23 @@ load_symbol(void *handle, const char *modpath, const char *symbol_name,
 static isc_result_t
 load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
        isc_result_t result;
-       void *handle = NULL;
+       lt_dlhandle handle = NULL;
        ns_plugin_t *plugin = NULL;
        ns_plugin_check_t *check_func = NULL;
        ns_plugin_register_t *register_func = NULL;
        ns_plugin_destroy_t *destroy_func = NULL;
        ns_plugin_version_t *version_func = NULL;
-       int version, flags;
+       int version;
 
        REQUIRE(pluginp != NULL && *pluginp == NULL);
 
-       flags = RTLD_LAZY | RTLD_LOCAL;
-#if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__
-       flags |= RTLD_DEEPBIND;
-#endif /* if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__ */
+       if (lt_dlinit() != 0) {
+               return (ISC_R_FAILURE);
+       }
 
-       handle = dlopen(modpath, flags);
+       handle = lt_dlopen(modpath);
        if (handle == NULL) {
-               const char *errmsg = dlerror();
+               const char *errmsg = lt_dlerror();
                if (errmsg == NULL) {
                        errmsg = "unknown error";
                }
@@ -210,127 +203,8 @@ cleanup:
                                             sizeof(*plugin));
                }
 
-               (void)dlclose(handle);
-       }
-
-       return (result);
-}
-
-static void
-unload_plugin(ns_plugin_t **pluginp) {
-       ns_plugin_t *plugin = NULL;
-
-       REQUIRE(pluginp != NULL && *pluginp != NULL);
-
-       plugin = *pluginp;
-       *pluginp = NULL;
-
-       isc_log_write(ns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_HOOKS,
-                     ISC_LOG_DEBUG(1), "unloading plugin '%s'",
-                     plugin->modpath);
-
-       if (plugin->inst != NULL) {
-               plugin->destroy_func(&plugin->inst);
-       }
-       if (plugin->handle != NULL) {
-               (void)dlclose(plugin->handle);
-       }
-       if (plugin->modpath != NULL) {
-               isc_mem_free(plugin->mctx, plugin->modpath);
-       }
-
-       isc_mem_putanddetach(&plugin->mctx, plugin, sizeof(*plugin));
-}
-#elif _WIN32
-static isc_result_t
-load_symbol(HMODULE handle, const char *modpath, const char *symbol_name,
-           void **symbolp) {
-       void *symbol = NULL;
-
-       REQUIRE(handle != NULL);
-       REQUIRE(symbolp != NULL && *symbolp == NULL);
-
-       symbol = GetProcAddress(handle, symbol_name);
-       if (symbol == NULL) {
-               int errstatus = GetLastError();
-               isc_log_write(ns_lctx, NS_LOGCATEGORY_GENERAL,
-                             NS_LOGMODULE_HOOKS, ISC_LOG_ERROR,
-                             "failed to look up symbol %s in "
-                             "plugin '%s': %d",
-                             symbol_name, modpath, errstatus);
-               return (ISC_R_FAILURE);
-       }
-
-       *symbolp = symbol;
-
-       return (ISC_R_SUCCESS);
-}
-
-static isc_result_t
-load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
-       isc_result_t result;
-       HMODULE handle;
-       ns_plugin_t *plugin = NULL;
-       ns_plugin_register_t *register_func = NULL;
-       ns_plugin_destroy_t *destroy_func = NULL;
-       ns_plugin_version_t *version_func = NULL;
-       int version;
-
-       REQUIRE(pluginp != NULL && *pluginp == NULL);
-
-       handle = LoadLibraryA(modpath);
-       if (handle == NULL) {
-               CHECK(ISC_R_FAILURE);
-       }
-
-       CHECK(load_symbol(handle, modpath, "plugin_version",
-                         (void **)&version_func));
-
-       version = version_func();
-       if (version < (NS_PLUGIN_VERSION - NS_PLUGIN_AGE) ||
-           version > NS_PLUGIN_VERSION)
-       {
-               isc_log_write(ns_lctx, NS_LOGCATEGORY_GENERAL,
-                             NS_LOGMODULE_HOOKS, ISC_LOG_ERROR,
-                             "plugin API version mismatch: %d/%d", version,
-                             NS_PLUGIN_VERSION);
-               CHECK(ISC_R_FAILURE);
-       }
-
-       CHECK(load_symbol(handle, modpath, "plugin_register",
-                         (void **)&register_func));
-       CHECK(load_symbol(handle, modpath, "plugin_destroy",
-                         (void **)&destroy_func));
-
-       plugin = isc_mem_get(mctx, sizeof(*plugin));
-       memset(plugin, 0, sizeof(*plugin));
-       isc_mem_attach(mctx, &plugin->mctx);
-       plugin->handle = handle;
-       plugin->modpath = isc_mem_strdup(plugin->mctx, modpath);
-       plugin->register_func = register_func;
-       plugin->destroy_func = destroy_func;
-
-       ISC_LINK_INIT(plugin, link);
-
-       *pluginp = plugin;
-       plugin = NULL;
-
-cleanup:
-       if (result != ISC_R_SUCCESS) {
-               isc_log_write(ns_lctx, NS_LOGCATEGORY_GENERAL,
-                             NS_LOGMODULE_HOOKS, ISC_LOG_ERROR,
-                             "failed to dynamically load "
-                             "plugin '%s': %d (%s)",
-                             modpath, GetLastError(),
-                             isc_result_totext(result));
-
-               if (plugin != NULL) {
-                       isc_mem_putanddetach(&plugin->mctx, plugin,
-                                            sizeof(*plugin));
-               }
-
                if (handle != NULL) {
-                       FreeLibrary(handle);
+                       (void)lt_dlclose(handle);
                }
        }
 
@@ -354,33 +228,14 @@ unload_plugin(ns_plugin_t **pluginp) {
                plugin->destroy_func(&plugin->inst);
        }
        if (plugin->handle != NULL) {
-               FreeLibrary(plugin->handle);
+               (void)lt_dlclose(plugin->handle);
        }
-
        if (plugin->modpath != NULL) {
                isc_mem_free(plugin->mctx, plugin->modpath);
        }
 
        isc_mem_putanddetach(&plugin->mctx, plugin, sizeof(*plugin));
 }
-#else  /* HAVE_DLFCN_H || _WIN32 */
-static isc_result_t
-load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
-       UNUSED(mctx);
-       UNUSED(modpath);
-       UNUSED(pluginp);
-
-       isc_log_write(ns_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_HOOKS,
-                     ISC_LOG_ERROR, "plugin support is not implemented");
-
-       return (ISC_R_NOTIMPLEMENTED);
-}
-
-static void
-unload_plugin(ns_plugin_t **pluginp) {
-       UNUSED(pluginp);
-}
-#endif /* HAVE_DLFCN_H */
 
 isc_result_t
 ns_plugin_register(const char *modpath, const char *parameters, const void *cfg,
diff --git a/lib/ns/include/ns/version.h b/lib/ns/include/ns/version.h
deleted file mode 100644 (file)
index bcb9331..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file include/ns/version.h */
-
-#include <isc/platform.h>
-
-LIBNS_EXTERNAL_DATA extern const char ns_version[];
-
-LIBNS_EXTERNAL_DATA extern const unsigned int ns_libinterface;
-LIBNS_EXTERNAL_DATA extern const unsigned int ns_librevision;
-LIBNS_EXTERNAL_DATA extern const unsigned int ns_libage;
index 46f1b59c892fe480c44b07a3b4d3b42e7df18dc9..8f1a8b11624b29e21cb5e44edcb80d46e6ea1fe7 100644 (file)
@@ -5782,7 +5782,7 @@ static atomic_uint_fast32_t last_soft, last_hard;
 #ifdef ISC_MUTEX_ATOMICS
 static isc_once_t last_once = ISC_ONCE_INIT;
 static void
-last_init() {
+last_init(void) {
        atomic_init(&last_soft, 0);
        atomic_init(&last_hard, 0);
 }
diff --git a/lib/ns/tests/Kyuafile b/lib/ns/tests/Kyuafile
deleted file mode 100644 (file)
index adf0b88..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-syntax(2)
-test_suite('bind9')
-
-tap_test_program{name='listenlist_test'}
-tap_test_program{name='notify_test'}
-tap_test_program{name='plugin_test'}
-tap_test_program{name='query_test'}
diff --git a/lib/ns/tests/Makefile.am b/lib/ns/tests/Makefile.am
new file mode 100644 (file)
index 0000000..76145db
--- /dev/null
@@ -0,0 +1,45 @@
+include $(top_srcdir)/Makefile.top
+include $(top_srcdir)/Makefile.tests
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBNS_CFLAGS)
+
+LDADD +=                       \
+       libnstest.la            \
+       $(LIBISC_LIBS)          \
+       $(LIBDNS_LIBS)          \
+       $(LIBNS_LIBS)
+
+check_LTLIBRARIES = libnstest.la
+libnstest_la_SOURCES = nstest.c nstest.h
+check_PROGRAMS =               \
+       listenlist_test         \
+       plugin_test
+
+TESTS = $(check_PROGRAMS)
+
+if HAVE_LD_WRAP
+
+check_PROGRAMS +=      \
+       notify_test     \
+       query_test
+
+notify_test_SOURCES =  \
+       notify_test.c   \
+       wrap.c
+
+notify_test_LDFLAGS =                  \
+       $(LDFLAGS)                      \
+       -Wl,--wrap=isc_nmhandle_unref
+
+query_test_SOURCES =   \
+       query_test.c    \
+       wrap.c
+
+query_test_LDFLAGS =                   \
+       $(LDFLAGS)                      \
+       -Wl,--wrap=isc_nmhandle_unref
+
+endif
index 2e6c6240e22314ba09e795e04397ef7eddcae011..02f39508c3fcb466ab638ccca6bbd81600cadcc4 100644 (file)
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/attributes.h>
 #include <isc/mem.h>
 #include <isc/platform.h>
 #include <isc/result.h>
 #include <isc/types.h>
 #include <isc/util.h>
 
-ISC_PLATFORM_NORETURN_PRE void
-_fail(const char *const file, const int line) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN void
+_fail(const char *const file, const int line);
 
 #include <ns/hooks.h>
 
index 2931412cbf76b21cd0f1ed016cda21396ea449e2..ac8950d63741b3e2ad917fa7dea7c0b2c73100d6 100644 (file)
@@ -60,9 +60,6 @@
     <ClCompile Include="DLLMain.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="version.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\ns\client.h">
     <ClInclude Include="..\include\ns\update.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\ns\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\ns\xfrout.h">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index c7728e7a3d6d18ea945a89a72484fd716359a04c..125699e16ebcfd1b0d35b29b80137f9fc3b243ff 100644 (file)
     <ClCompile Include="..\update.c" />
     <ClCompile Include="..\xfrout.c" />
     <ClCompile Include="DLLMain.c" />
-    <ClCompile Include="version.c" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\include\ns\client.h" />
     <ClInclude Include="..\include\ns\stats.h" />
     <ClInclude Include="..\include\ns\types.h" />
     <ClInclude Include="..\include\ns\update.h" />
-    <ClInclude Include="..\include\ns\version.h" />
     <ClInclude Include="..\include\ns\xfrout.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/lib/ns/win32/version.c b/lib/ns/win32/version.c
deleted file mode 100644 (file)
index f506fa1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-/*! \file */
-
-#include <versions.h>
-
-#include <ns/version.h>
-
-LIBNS_EXTERNAL_DATA const char ns_version[] = VERSION;
-LIBNS_EXTERNAL_DATA const char ns_major[] = MAJOR;
-LIBNS_EXTERNAL_DATA const char ns_mapapi[] = MAPAPI;
-
-LIBNS_EXTERNAL_DATA const unsigned int ns_libinterface = LIBINTERFACE;
-LIBNS_EXTERNAL_DATA const unsigned int ns_librevision = LIBREVISION;
-LIBNS_EXTERNAL_DATA const unsigned int ns_libage = LIBAGE;
index b132e8906073c990ed72b0a462f66dcdb3a6822c..3d14fb96000a29437de046659b13171224128af0 100644 (file)
@@ -1,4 +1,3 @@
-Makefile-postinstall
 nsprobe
 process
 resolve
diff --git a/lib/samples/Makefile-postinstall.in b/lib/samples/Makefile-postinstall.in
deleted file mode 100644 (file)
index f87f4c9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-srcdir =       @srcdir@
-#prefix =      @prefix@
-#exec_prefix = @exec_prefix@
-
-CDEFINES =
-CWARNINGS =
-
-DNSLIBS =      -ldns @DNS_CRYPTO_LIBS@
-ISCLIBS =      -lisc @OPENSSL_LIBS@ @LIBXML2_LIBS@
-ISCCFGLIBS =   -lisccfg
-IRSLIBS =      -lirs
-
-LIBS =         ${DNSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @LIBS@
-
-SUBDIRS =
-
-TARGETS =      sample@EXEEXT@ sample-async@EXEEXT@ sample-gai@EXEEXT@ \
-               sample-update@EXEEXT@ sample-request@EXEEXT@ nsprobe@EXEEXT@
-
-OBJS =         sample.@O@ sample-async.@O@ sample-gai.@O@ sample-update.@O@ \
-               sample-request.@O@ nsprobe.@O@
-
-SRCS =         sample.c sample-async.c sample-gai.c sample-update.c \
-               sample-request.c nsprobe.c
-
-@BIND9_MAKE_RULES@
-
-# The following two may depend on BIND9_MAKE_RULES
-CINCLUDES =    -I@export_includedir@
-LDFLAGS =      -L@export_libdir@
-
-sample@EXEEXT@: sample.@O@ ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       sample.@O@ ${LIBS}
-
-sample-async@EXEEXT@: sample-async.@O@ ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       sample-async.@O@ ${LIBS}
-
-sample-gai@EXEEXT@: sample-gai.@O@ ${IRSDEPLIBS} ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       sample-gai.@O@ ${IRSLIBS} ${LIBS}
-
-sample-update@EXEEXT@: sample-update.@O@ ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       sample-update.@O@ ${LIBS}
-
-sample-request@EXEEXT@: sample-request.@O@ ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       sample-request.@O@ ${LIBS}
-
-nsprobe@EXEEXT@: nsprobe.@O@ ${DEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-       nsprobe.@O@ ${LIBS}
-
-clean distclean maintainer-clean::
-       rm -f ${TARGETS}
diff --git a/lib/samples/Makefile.am b/lib/samples/Makefile.am
new file mode 100644 (file)
index 0000000..6f18fcd
--- /dev/null
@@ -0,0 +1,32 @@
+include $(top_srcdir)/Makefile.top
+
+AM_CPPFLAGS +=                 \
+       $(LIBISC_CFLAGS)        \
+       $(LIBDNS_CFLAGS)        \
+       $(LIBIRS_CFLAGS)
+
+noinst_PROGRAMS =              \
+       resolve                 \
+       sample-async            \
+       sample-gai              \
+       sample-update           \
+       sample-request          \
+       nsprobe
+
+resolve_SOURCES = resolve.c
+resolve_LDADD = $(LIBISC_LIBS) $(LIBIRS_LIBS) $(LIBDNS_LIBS)
+
+sample_async_SOURCES = sample-async.c
+sample_async_LDADD = $(LIBISC_LIBS) $(LIBDNS_LIBS)
+
+sample_gai_SOURCES = sample-gai.c
+sample_gai_LDADD = $(LIBIRS_LIBS)
+
+sample_update_SOURCES = sample-update.c
+sample_update_LDADD = $(LIBISC_LIBS) $(LIBDNS_LIBS)
+
+sample_request_SOURCES = sample-request.c
+sample_request_LDADD = $(LIBISC_LIBS) $(LIBDNS_LIBS)
+
+nsprobe_SOURCES = nsprobe.c
+nsprobe_LDADD = $(LIBISC_LIBS) $(LIBDNS_LIBS)
index 5ac09c8b67316ed114f0da759cc27c113d3571f3..debf75165abe44ece04578950954753b16c0ad94 100644 (file)
@@ -22,6 +22,7 @@
 #include <string.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/lib.h>
@@ -1038,8 +1039,8 @@ cleanup:
        return (result);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
index 1466635083353169f4704a3a38130bc991066ea9..cdfe07f1044b6ec5cb29f0966ba67a23ea65ca49 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
@@ -79,8 +80,8 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner) {
        return (ISC_R_SUCCESS);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
index 302d31212df81e056e0ce0e213d6337d2b61c8ef..769a5382e77fedc7620c3904a5202a592d8039fd 100644 (file)
@@ -23,6 +23,7 @@
 #include <string.h>
 
 #include <isc/app.h>
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/lib.h>
@@ -252,8 +253,8 @@ cleanup:
        return (result);
 }
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
index d3290c4b5576da581815d4e3266a1bb3942a4807..8c15c8d5c3f84f099923a69a7bce6747e088b6b3 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <isc/attributes.h>
 #include <isc/base64.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
@@ -50,8 +51,8 @@
 static isc_mem_t *mctx;
 static dns_fixedname_t fixedqname;
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
index 1ed3d7bd45740eabe0fa479c568328d45373e4f4..4d46590b825de072f61ee2b79213801ae7854a47 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <isc/attributes.h>
 #include <isc/buffer.h>
 #include <isc/commandline.h>
 #include <isc/lex.h>
@@ -68,8 +69,8 @@ update_addordelete(isc_mem_t *mctx, char *cmdline, bool isdelete,
 static void
 evaluate_prereq(isc_mem_t *mctx, char *cmdline, dns_name_t *name);
 
-ISC_PLATFORM_NORETURN_PRE static void
-usage(void) ISC_PLATFORM_NORETURN_POST;
+ISC_NORETURN static void
+usage(void);
 
 static void
 usage(void) {
diff --git a/m4/ax_bind9_lib_version.m4 b/m4/ax_bind9_lib_version.m4
new file mode 100644 (file)
index 0000000..dd08f6b
--- /dev/null
@@ -0,0 +1,10 @@
+AC_DEFUN([AX_BIND9_LIB_VERSION],
+         [AS_IF([test -z "$SED"],
+                [AC_PROG_SED])
+          AS_IF([test -z "$SED"],
+                [AC_MSG_ERROR([sed not found, but required, set \$SED to sed])])
+          ax_bind9_lib$1_current=`$SED -n "s,^LIBINTERFACE = \(.*\),\1,p" "$srcdir/lib/$1/api"`
+          ax_bind9_lib$1_revision=`$SED -n "s,^LIBREVISION = \(.*\),\1,p" "$srcdir/lib/$1/api"`
+          ax_bind9_lib$1_age=`$SED -n "s,^LIBAGE = \(.*\),\1,p" "$srcdir/lib/$1/api"`
+          AC_SUBST([lib$1_VERSION_INFO],["-version-info $ax_bind9_lib$1_current:$ax_bind9_lib$1_revision:$ax_bind9_lib$1_age]")
+         ])
diff --git a/m4/ax_gcc_func_attribute.m4 b/m4/ax_gcc_func_attribute.m4
new file mode 100644 (file)
index 0000000..c926439
--- /dev/null
@@ -0,0 +1,242 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_gcc_func_attribute.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_GCC_FUNC_ATTRIBUTE(ATTRIBUTE)
+#
+# DESCRIPTION
+#
+#   This macro checks if the compiler supports one of GCC's function
+#   attributes; many other compilers also provide function attributes with
+#   the same syntax. Compiler warnings are used to detect supported
+#   attributes as unsupported ones are ignored by default so quieting
+#   warnings when using this macro will yield false positives.
+#
+#   The ATTRIBUTE parameter holds the name of the attribute to be checked.
+#
+#   If ATTRIBUTE is supported define HAVE_FUNC_ATTRIBUTE_<ATTRIBUTE>.
+#
+#   The macro caches its result in the ax_cv_have_func_attribute_<attribute>
+#   variable.
+#
+#   The macro currently supports the following function attributes:
+#
+#    alias
+#    aligned
+#    alloc_size
+#    always_inline
+#    artificial
+#    cold
+#    const
+#    constructor
+#    constructor_priority for constructor attribute with priority
+#    deprecated
+#    destructor
+#    dllexport
+#    dllimport
+#    error
+#    externally_visible
+#    fallthrough
+#    flatten
+#    format
+#    format_arg
+#    gnu_format
+#    gnu_inline
+#    hot
+#    ifunc
+#    leaf
+#    malloc
+#    noclone
+#    noinline
+#    nonnull
+#    noreturn
+#    nothrow
+#    optimize
+#    pure
+#    sentinel
+#    sentinel_position
+#    unused
+#    used
+#    visibility
+#    warning
+#    warn_unused_result
+#    weak
+#    weakref
+#
+#   Unsupported function attributes will be tested with a prototype
+#   returning an int and not accepting any arguments and the result of the
+#   check might be wrong or meaningless so use with care.
+#
+# LICENSE
+#
+#   Copyright (c) 2013 Gabriele Svelto <gabriele.svelto@gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 10
+
+AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
+    AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
+
+    AC_CACHE_CHECK([for __attribute__(($1))], [ac_var], [
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([
+            m4_case([$1],
+                [alias], [
+                    int foo( void ) { return 0; }
+                    int bar( void ) __attribute__(($1("foo")));
+                ],
+                [aligned], [
+                    int foo( void ) __attribute__(($1(32)));
+                ],
+                [alloc_size], [
+                    void *foo(int a) __attribute__(($1(1)));
+                ],
+                [always_inline], [
+                    inline __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [artificial], [
+                    inline __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [cold], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [const], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [constructor_priority], [
+                    int foo( void ) __attribute__((__constructor__(65535/2)));
+                ],
+                [constructor], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [deprecated], [
+                    int foo( void ) __attribute__(($1("")));
+                ],
+                [destructor], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [dllexport], [
+                    __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [dllimport], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [error], [
+                    int foo( void ) __attribute__(($1("")));
+                ],
+                [externally_visible], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [fallthrough], [
+                    int foo( void ) {switch (0) { case 1: __attribute__(($1)); case 2: break ; }};
+                ],
+                [flatten], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [format], [
+                    int foo(const char *p, ...) __attribute__(($1(printf, 1, 2)));
+                ],
+                [gnu_format], [
+                    int foo(const char *p, ...) __attribute__((format(gnu_printf, 1, 2)));
+                ],
+                [format_arg], [
+                    char *foo(const char *p) __attribute__(($1(1)));
+                ],
+                [gnu_inline], [
+                    inline __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [hot], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [ifunc], [
+                    int my_foo( void ) { return 0; }
+                    static int (*resolve_foo(void))(void) { return my_foo; }
+                    int foo( void ) __attribute__(($1("resolve_foo")));
+                ],
+                [leaf], [
+                    __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [malloc], [
+                    void *foo( void ) __attribute__(($1));
+                ],
+                [noclone], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [noinline], [
+                    __attribute__(($1)) int foo( void ) { return 0; }
+                ],
+                [nonnull], [
+                    int foo(char *p) __attribute__(($1(1)));
+                ],
+                [noreturn], [
+                    void foo( void ) __attribute__(($1));
+                ],
+                [nothrow], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [optimize], [
+                    __attribute__(($1(3))) int foo( void ) { return 0; }
+                ],
+                [pure], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [sentinel], [
+                    int foo(void *p, ...) __attribute__(($1));
+                ],
+                [sentinel_position], [
+                    int foo(void *p, ...) __attribute__(($1(1)));
+                ],
+                [returns_nonnull], [
+                    void *foo( void ) __attribute__(($1));
+                ],
+                [unused], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [used], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [visibility], [
+                    int foo_def( void ) __attribute__(($1("default")));
+                    int foo_hid( void ) __attribute__(($1("hidden")));
+                    int foo_int( void ) __attribute__(($1("internal")));
+                    int foo_pro( void ) __attribute__(($1("protected")));
+                ],
+                [warning], [
+                    int foo( void ) __attribute__(($1("")));
+                ],
+                [warn_unused_result], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [weak], [
+                    int foo( void ) __attribute__(($1));
+                ],
+                [weakref], [
+                    static int foo( void ) { return 0; }
+                    static int bar( void ) __attribute__(($1("foo")));
+                ],
+                [
+                 m4_warn([syntax], [Unsupported attribute $1, the test may fail])
+                 int foo( void ) __attribute__(($1));
+                ]
+            )], [])
+            ],
+            dnl GCC doesn't exit with an error if an unknown attribute is
+            dnl provided but only outputs a warning, so accept the attribute
+            dnl only if no warning were issued.
+            [AS_IF([test -s conftest.err],
+                [AS_VAR_SET([ac_var], [no])],
+                [AS_VAR_SET([ac_var], [yes])])],
+            [AS_VAR_SET([ac_var], [no])])
+    ])
+
+    AS_IF([test yes = AS_VAR_GET([ac_var])],
+        [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_FUNC_ATTRIBUTE_$1), 1,
+            [Define to 1 if the system has the `$1' function attribute])], [])
+
+    AS_VAR_POPDEF([ac_var])
+])
diff --git a/m4/ax_perl_module.m4 b/m4/ax_perl_module.m4
new file mode 100644 (file)
index 0000000..9b636e6
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# SYNOPSIS
+#
+#   AX_PERL_MODULE(MODULE[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   Checks for Perl module.
+#
+# LICENSE
+#
+#   Copyright (c) 2020 Internet Systems Consortium
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+AC_DEFUN([AX_PERL_MODULE],[
+    AC_MSG_CHECKING([for perl module: $1])
+    $PERL "-M$1" -e exit >/dev/null 2>&1
+    AS_IF([test $? -eq 0],
+          [AC_MSG_RESULT([yes])
+           eval AS_TR_CPP(HAVE_PERLMOD_$1)=yes
+           $2
+          ],
+          [AC_MSG_RESULT([no])
+           eval AS_TR_CPP(HAVE_PERLMOD_$1)=no
+           $3
+          ])
+    ])
diff --git a/m4/ax_python_module.m4 b/m4/ax_python_module.m4
new file mode 100644 (file)
index 0000000..db1db90
--- /dev/null
@@ -0,0 +1,32 @@
+#
+# SYNOPSIS
+#
+#   AX_PYTHON_MODULE(MODULE[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   Checks for Python module.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Andrew Collier
+#             (c) 2020 Internet Systems Consortium
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+AC_DEFUN([AX_PYTHON_MODULE],[
+    AC_MSG_CHECKING([for python module: $1])
+    $PYTHON -c "import $1" >/dev/null 2>&1
+    AS_IF([test $? -eq 0],
+          [AC_MSG_RESULT([yes])
+           eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
+           $2
+          ],
+          [AC_MSG_RESULT([no])
+           eval AS_TR_CPP(HAVE_PYMOD_$1)=no
+           $3
+          ])
+    ])
diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4
new file mode 100644 (file)
index 0000000..fb184fe
--- /dev/null
@@ -0,0 +1,71 @@
+# ===========================================================================
+#          https://www.gnu.org/software/autoconf-archive/ax_tls.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_TLS([action-if-found], [action-if-not-found])
+#
+# DESCRIPTION
+#
+#   Provides a test for the compiler support of thread local storage (TLS)
+#   extensions. Defines TLS if it is found. Currently knows about C++11,
+#   GCC/ICC, and MSVC. I think SunPro uses the same as GCC, and Borland
+#   apparently supports either.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Alan Woodland <ajw05@aber.ac.uk>
+#   Copyright (c) 2010 Diego Elio Petteno` <flameeyes@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 15
+
+AC_DEFUN([AX_TLS], [
+  AC_MSG_CHECKING([for thread local storage (TLS) class])
+  AC_CACHE_VAL([ac_cv_tls],
+   [for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do
+       AS_CASE([$ax_tls_keyword],
+          [none], [ac_cv_tls=none ; break],
+          [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+              [#include <stdlib.h>],
+              [static  $ax_tls_keyword  int bar;]
+            )],
+            [ac_cv_tls=$ax_tls_keyword ; break],
+            [ac_cv_tls=none]
+          )]
+        )
+    done ]
+  )
+  AC_MSG_RESULT([$ac_cv_tls])
+
+  AS_IF([test "$ac_cv_tls" != "none"],
+    [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class, define it to that here])
+     m4_ifnblank([$1],[$1],[[:]])],
+    [m4_ifnblank([$2],[$2],[[:]])])
+])
diff --git a/make/.gitignore b/make/.gitignore
deleted file mode 100644 (file)
index d46289b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-includes
-rules
-mkdep
diff --git a/make/includes.in b/make/includes.in
deleted file mode 100644 (file)
index 48cdaf7..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-# Search for machine-generated header files in the build tree,
-# and for normal headers in the source tree (${top_srcdir}).
-# We only need to look in OS-specific subdirectories for the
-# latter case, because there are no machine-generated OS-specific
-# headers.
-
-ISC_INCLUDES = @BIND9_ISC_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/isc \
-       -I${top_srcdir}/lib/isc/include \
-       -I${top_srcdir}/lib/isc/unix/include \
-       -I${top_srcdir}/lib/isc/pthreads/include
-
-ISCCC_INCLUDES = @BIND9_ISCCC_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/isccc/include
-
-ISCCFG_INCLUDES = @BIND9_ISCCFG_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/isccfg/include
-
-DNS_INCLUDES = @BIND9_DNS_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/dns/include
-
-NS_INCLUDES = @BIND9_NS_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/ns/include
-
-IRS_INCLUDES = @BIND9_IRS_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/irs/include
-
-BIND9_INCLUDES = @BIND9_BIND9_BUILDINCLUDE@ \
-       -I${top_srcdir}/lib/bind9/include
-
-TEST_INCLUDES = \
-       -I${top_srcdir}/lib/tests/include
diff --git a/make/mkdep.in b/make/mkdep.in
deleted file mode 100644 (file)
index 2ba9495..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/bin/sh -
-
-##
-## Modified to handle -vpath <path> option by Michael Graff, ISC.
-## The purpose of this is to allow this script to run outside of the
-## source directory, for instance when running configure with
-##   ../bind9-mainline/configure
-## and still have "make depend" work.
-##
-
-## ++Copyright++ 1987
-## -
-## Copyright (c) 1987 Regents of the University of California.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions
-## are met:
-## 1. Redistributions of source code must retain the above copyright
-##    notice, this list of conditions and the following disclaimer.
-## 2. 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.
-## 3. Neither the name of the University 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 REGENTS 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 REGENTS 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.
-## -
-## Portions Copyright (c) 1993 by Digital Equipment Corporation.
-##
-## Permission to use, copy, modify, and distribute this software for any
-## purpose with or without fee is hereby granted, provided that the above
-## copyright notice and this permission notice appear in all copies, and that
-## the name of Digital Equipment Corporation not be used in advertising or
-## publicity pertaining to distribution of the document or software without
-## specific, written prior permission.
-##
-## THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
-## WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-## OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
-## CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-## SOFTWARE.
-## -
-## --Copyright--
-
-#
-#      @(#)mkdep.sh    5.12 (Berkeley) 6/30/88
-#
-
-MAKE=Makefile                  # default makefile name is "Makefile"
-
-while :
-       do case "$1" in
-               # -vpath allows one to select a virtual path for .c files
-               -vpath)
-                       VPATH=$2;
-                       shift; shift ;;
-               # -f allows you to select a makefile name
-               -f)
-                       MAKE=$2
-                       shift; shift ;;
-
-               # the -p flag produces "program: program.c" style dependencies
-               # so .o's don't get produced
-               -p)
-                       SED='s;\.o;;'
-                       shift ;;
-               *)
-                       break ;;
-       esac
-done
-
-if [ $# = 0 ] ; then
-       echo 'usage: mkdep [-vpath path] [-p] [-f makefile] [flags] file ...'
-       exit 1
-fi
-
-if [ ! -w $MAKE ]; then
-       echo "mkdep: no writeable file \"$MAKE\""
-       exit 1
-fi
-
-TMP=mkdep$$
-
-trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
-
-cp $MAKE ${MAKE}.bak
-
-sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
-
-cat << _EOF_ >> $TMP
-# DO NOT DELETE THIS LINE -- mkdep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-
-_EOF_
-
-# If your compiler doesn't have -M, add it.  If you can't, the next two
-# lines will try and replace the "cc -M".  The real problem is that this
-# hack can't deal with anything that requires a search path, and doesn't
-# even try for anything using bracket (<>) syntax.
-#
-# egrep '^#include[    ]*".*"' /dev/null $* |
-# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
-
-if [ X"${VPATH}" != X ] ; then
-    for arg in $* ; do
-       case "$arg" in
-           -*)
-               newargs="$newargs $arg"
-               ;;
-           *)
-               newargs="$newargs $VPATH/$arg"
-               ;;
-       esac
-    done
-else
-    newargs="$*";
-fi
-
-MKDEPPROG="@MKDEPPROG@"
-if [ X"${MKDEPPROG}" != X ]; then
-    @SHELL@ -c "${MKDEPPROG} ${newargs}"
-else
-    @MKDEPCC@ @MKDEPCFLAGS@ ${newargs} |
-    sed "
-       s; \\./; ;g
-       s; \\\\; ;g
-       @LIBTOOL_MKDEP_SED@
-       $SED" |
-    awk '$1 ~ /:$/ {
-               if (rec != "")
-                        print rec;
-               if (NF == 1)
-                       rec = $1;
-               else
-                       rec = $1 " " $2;
-               for (i = 3; i <= NF; i++) {
-                       if (length(rec $i) > 76) {
-                               print rec " \\";
-                               rec = "    " $i;
-                       } else {
-                               rec = rec " " $i;
-                       }
-               }
-               next;
-       }
-       {
-               for (i = 1; i <= NF; i++) {
-                       if (length(rec $i) > 76) {
-                               print rec, "\\";
-                               rec =  "    " $i;
-                       } else {
-                               rec = rec " " $i;
-                       }
-               }
-       }
-    END {
-       print rec
-    }' >> $TMP
-fi
-
-cat << _EOF_ >> $TMP
-
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
-_EOF_
-
-# copy to preserve permissions
-cp $TMP $MAKE
-rm -f ${MAKE}.bak $TMP
-exit 0
diff --git a/make/rules.in b/make/rules.in
deleted file mode 100644 (file)
index e2658bf..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-###
-### Common Makefile rules for BIND 9.
-###
-
-###
-### Paths
-###
-### Note: paths that vary by Makefile MUST NOT be listed
-### here, or they won't get expanded correctly.
-
-prefix =       @prefix@
-exec_prefix =  @exec_prefix@
-bindir =       @bindir@
-sbindir =      @sbindir@
-includedir =   @includedir@
-libdir =       @libdir@
-sysconfdir =   @sysconfdir@
-localstatedir =        @localstatedir@
-mandir =       @mandir@
-datarootdir =   @datarootdir@
-
-plugindir =    ${libdir}/named
-
-DESTDIR =
-
-@SET_MAKE@
-
-top_builddir = @BIND9_TOP_BUILDDIR@
-
-###
-### All
-###
-### Makefile may define:
-###    PREREQS
-###    TARGETS
-
-all: ${PREREQS} subdirs ${TARGETS} testdirs
-
-###
-### Subdirectories
-###
-### Makefile may define:
-###    SUBDIRS
-###    DEPDIRS
-
-ALL_SUBDIRS = ${SUBDIRS} nulldir
-ALL_TESTDIRS = ${TESTDIRS} nulldir
-
-#
-# We use a single-colon rule so that additional dependencies of
-# subdirectories can be specified after the inclusion of this file.
-# The "depend" and "testdirs" targets are treated the same way.
-#
-subdirs:
-       @for i in ${ALL_SUBDIRS}; do \
-               if [ "$$i" != "nulldir" -a -d $$i ]; then \
-                       echo "making all in `pwd`/$$i"; \
-                       (cd $$i; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" all) || exit 1; \
-               fi; \
-       done
-
-#
-# Tests are built after the targets instead of before
-#
-testdirs: subdirs ${TARGETS}
-       @for i in ${ALL_TESTDIRS}; do \
-               if [ "$$i" != "nulldir" -a -d $$i ]; then \
-                       echo "making all in `pwd`/$$i"; \
-                       (cd $$i; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" all) || exit 1; \
-               fi; \
-       done
-
-install:: all
-
-install uninstall clean distclean maintainer-clean doc docclean man manclean::
-       @for i in ${ALL_SUBDIRS} ${ALL_TESTDIRS}; do \
-               if [ "$$i" != "nulldir" -a -d $$i -a -f $$i/Makefile ]; then \
-                       echo "making $@ in `pwd`/$$i"; \
-                       (cd $$i; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" $@) || exit 1; \
-               fi; \
-       done
-
-###
-### C Programs
-###
-### Makefile must define
-###    CC
-### Makefile may define
-###    CFLAGS
-###    LDFLAGS
-###    CINCLUDES
-###    CDEFINES
-###    CWARNINGS
-### User may define externally
-###     EXT_CFLAGS
-
-CC =           @CC@
-CFLAGS =       @CFLAGS@
-LDFLAGS =      @LDFLAGS@
-STD_CINCLUDES =        @STD_CINCLUDES@
-STD_CDEFINES = @STD_CDEFINES@
-STD_CWARNINGS =        @STD_CWARNINGS@
-
-BUILD_CC = @BUILD_CC@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
-BUILD_LIBS = @BUILD_LIBS@
-
-LFS_CFLAGS = @LFS_CFLAGS@
-LFS_LDFLAGS = @LFS_LDFLAGS@
-LFS_LIBS = @LFS_LIBS@
-
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-
-JSON_C_CFLAGS = @JSON_C_CFLAGS@
-JSON_C_LIBS = @JSON_C_LIBS@
-
-LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
-LIBXML2_LIBS = @LIBXML2_LIBS@
-
-LMDB_CFLAGS = @LMDB_CFLAGS@
-LMDB_LIBS = @LMDB_LIBS@
-
-MAXMINDDB_CFLAGS = @MAXMINDDB_CFLAGS@
-MAXMINDDB_LIBS = @MAXMINDDB_LIBS@
-
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-
-.SUFFIXES:
-.SUFFIXES: .c .@O@
-
-ALWAYS_INCLUDES = -include ${top_builddir}/config.h -I${top_builddir} -I${top_srcdir}
-ALWAYS_DEFINES = @ALWAYS_DEFINES@
-ALWAYS_WARNINGS =
-
-ALL_CPPFLAGS = \
-       ${ALWAYS_INCLUDES} ${CINCLUDES} ${STD_CINCLUDES} \
-       ${ALWAYS_DEFINES} ${CDEFINES} ${STD_CDEFINES}
-
-ALL_CFLAGS = ${EXT_CFLAGS} ${ALL_CPPFLAGS} ${CFLAGS} \
-       ${ALWAYS_WARNINGS} ${STD_CWARNINGS} ${CWARNINGS}
-
-@BIND9_CO_RULE@
-       ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c $<
-
-SHELL = @SHELL@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_MODE_COMPILE = ${LIBTOOL} @LIBTOOL_MODE_COMPILE@
-LIBTOOL_MODE_INSTALL = ${LIBTOOL} @LIBTOOL_MODE_INSTALL@
-LIBTOOL_MODE_LINK = ${LIBTOOL} @LIBTOOL_MODE_LINK@
-LIBTOOL_MODE_UNINSTALL = ${LIBTOOL} @LIBTOOL_MODE_UNINSTALL@
-PURIFY = @PURIFY@
-
-MKDEP = ${SHELL} ${top_builddir}/make/mkdep
-
-###
-### This is a template compound command to build an executable binary with
-### an internal symbol table.
-### This process is tricky.  We first link all objects including a tentative
-### empty symbol table, then get a tentative list of symbols from the resulting
-### binary ($@tmp0).  Next, we re-link all objects, but this time with the
-### symbol table just created ($tmp@1).  The set of symbols should be the same,
-### but the corresponding addresses would be changed due to the difference on
-### the size of symbol tables.  So we create the symbol table and re-create the
-### objects once again.  Finally, we check the symbol table embedded in the
-### final binaryis consistent with the binary itself; otherwise the process is
-### terminated.
-###
-### To minimize the overhead of creating symbol tables, the autoconf switch
-### --enable-symtable takes an argument so that the symbol table can be created
-### on a per application basis: unless the argument is set to "all", the symbol
-### table is created only when a shell (environment) variable "MAKE_SYMTABLE" is
-### set to a non-null value in the rule to build the executable binary.
-###
-### Each Makefile.in that uses this macro is expected to define "LIBS" and
-### "NOSYMLIBS"; the former includes libisc with an empty symbol table, and
-### the latter includes libisc without the definition of a symbol table.
-### The rule to make the executable binary will look like this
-### binary@EXEEXT@: ${OBJS}
-###     #export MAKE_SYMTABLE="yes"; \  <- enable if symtable is always needed
-###    export BASEOBJS="${OBJS}"; \
-###    ${FINALBUILDCMD}
-###
-### Normally, ${LIBS} includes all necessary libraries to build the binary;
-### there are some exceptions however, where the rule lists some of the
-### necessary libraries explicitly in addition to (or instead of) ${LIBS},
-### like this:
-### binary@EXEEXT@: ${OBJS}
-###     cc -o $@ ${OBJS} ${OTHERLIB1} ${OTHERLIB2} ${LIBS}
-### in order to modify such a rule to use this compound command, a separate
-### variable "LIBS0" should be deinfed for the explicitly listed libraries,
-### while making sure ${LIBS} still includes libisc.  So the above rule would
-### be modified as follows:
-### binary@EXEEXT@: ${OBJS}
-###    export BASEOBJS="${OBJS}"; \
-###    export LIBS0="${OTHERLIB1} ${OTHERLIB2}"; \
-###     ${FINALBUILDCMD}
-### See bin/check/Makefile.in for a complete example of the use of LIBS0.
-###
-FINALBUILDCMD = ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${ALL_CFLAGS} ${LDFLAGS} \
-               -o $@ $${BASEOBJS} $${LIBS0} ${LIBS}; \
-
-cleandir: distclean
-superclean: maintainer-clean
-
-clean distclean maintainer-clean::
-       rm -f *.@O@ *.o *.lo *.la core *.core *-symtbl.c *tmp0 *tmp1 *tmp2
-       rm -rf .depend .libs
-
-distclean maintainer-clean::
-       rm -f Makefile
-
-depend:
-       @for i in ${ALL_SUBDIRS} ${ALL_TESTDIRS}; do \
-               if [ "$$i" != "nulldir" -a -d $$i ]; then \
-                       echo "making depend in `pwd`/$$i"; \
-                       (cd $$i; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" $@) || exit 1; \
-               fi; \
-       done
-       @if [ X"${srcdir}" != X. ] ; then \
-               if [ X"${SRCS}" != X -a X"${PSRCS}" != X ] ; then \
-                       echo ${MKDEP} -vpath ${srcdir} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${MKDEP} -vpath ${srcdir} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       echo ${MKDEP} -vpath ${srcdir} -ap ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${MKDEP} -vpath ${srcdir} -ap ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${DEPENDEXTRA} \
-               elif [ X"${SRCS}" != X ] ; then \
-                       echo ${MKDEP} -vpath ${srcdir} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${MKDEP} -vpath ${srcdir} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${DEPENDEXTRA} \
-               elif [ X"${PSRCS}" != X ] ; then \
-                       echo ${MKDEP} -vpath ${srcdir} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${MKDEP} -vpath ${srcdir} -p ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${DEPENDEXTRA} \
-               fi \
-       else \
-               if [ X"${SRCS}" != X -a X"${PSRCS}" != X ] ; then \
-                       echo ${MKDEP} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${MKDEP} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       echo ${MKDEP} -ap ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${MKDEP} -ap ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${DEPENDEXTRA} \
-               elif [ X"${SRCS}" != X ] ; then \
-                       echo ${MKDEP} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${MKDEP} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${SRCS}; \
-                       ${DEPENDEXTRA} \
-               elif [ X"${PSRCS}" != X ] ; then \
-                       echo ${MKDEP} ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${MKDEP} -p ${ALL_CPPFLAGS} ${ALL_CFLAGS} ${PSRCS}; \
-                       ${DEPENDEXTRA} \
-               fi \
-       fi
-
-FORCE:
-
-###
-### Libraries
-###
-
-AR =           @AR@
-ARFLAGS =      @ARFLAGS@
-RANLIB =       @RANLIB@
-
-###
-### Installation
-###
-
-INSTALL =              @INSTALL@
-INSTALL_PROGRAM =      @INSTALL_PROGRAM@
-LINK_PROGRAM =         @LN_S@
-INSTALL_SCRIPT =       @INSTALL_SCRIPT@
-INSTALL_DATA =         @INSTALL_DATA@
-INSTALL_LIBRARY =      @INSTALL_LIBRARY@
-
-###
-### Programs used when generating documentation.  It's ok for these
-### not to exist when not generating documentation.
-###
-
-XSLTPROC =             @XSLTPROC@ --novalid --xinclude --nonet
-XMLLINT =              @XMLLINT@
-PERL =                 @PERL@
-LATEX =                        @LATEX@
-PDFLATEX =             @PDFLATEX@
-DBLATEX =              @DBLATEX@
-W3M =                  @W3M@
-PANDOC =               @PANDOC@
-
-###
-### DocBook -> HTML
-### DocBook -> man page
-###
-
-.SUFFIXES: .docbook .html .1 .2 .3 .4 .5 .6 .7 .8
-
-.docbook.html:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-docbook-html.xsl $<
-
-.docbook.1:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.2:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.3:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.4:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.5:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.6:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.7:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
-.docbook.8:
-       ${XSLTPROC} -o $@ ${top_srcdir}/doc/xsl/isc-manpage.xsl $<
-
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100644 (file)
index f945dbf..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-
-for file
-do
-   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-   shift
-
-   pathcomp=
-   for d
-   do
-     pathcomp="$pathcomp$d"
-     case "$pathcomp" in
-       -* ) pathcomp=./$pathcomp ;;
-     esac
-
-     if test ! -d "$pathcomp"; then
-        echo "mkdir $pathcomp" 1>&2
-
-        mkdir "$pathcomp" || lasterr=$?
-
-        if test ! -d "$pathcomp"; then
-         errstatus=$lasterr
-        fi
-     fi
-
-     pathcomp="$pathcomp/"
-   done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
diff --git a/unit/.gitignore b/unit/.gitignore
deleted file mode 100644 (file)
index db27d5b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-!config.h
-Makefile
-atf
-unittest.sh
diff --git a/unit/README b/unit/README
deleted file mode 100644 (file)
index 9cdcf9b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Unit tests for BIND 9 are based on the CMocka testing framework and
-the Kyua test execution engine.
-
-If your distribution of choice doesn't include packages for kyua or cmocka, the
-sources can be found here:
-
- * Kyua 0.13 - https://github.com/jmmv/kyua/releases
- * CMocka 1.0 - https://cmocka.org/files/
diff --git a/unit/gdb b/unit/gdb
deleted file mode 100755 (executable)
index 68ccc10..0000000
--- a/unit/gdb
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-# `kyua debug` command does not work with libtool (see
-# https://github.com/jmmv/kyua/issues/207).  On some distributions `kyua debug`
-# runs the first `gdb` it finds in $PATH, but on Debian and Ubuntu it looks for
-# `/usr/bin/gdb`.  This script expects `gdb` to be moved to `gdb.orig` and
-# executed from there.
-coredump="$6"
-binary=$(gdb.orig --batch --core="${coredump}" 2>/dev/null | sed -ne "s/Core was generated by \`\(.*\)'./\1/p")
-# GDB 6.3 from OpenBSD 6.6 does not tell the full path of the broken binary.
-# We need to fix it. Either the binary or it's libtool script will do.
-if [ ! -e "${binary}" ]; then
-       binary="$(find "${TOP}" -name "${binary}" | head -n 1)"
-fi
-
-# $TOP points to BIND sources and should be set on `kyua debug` invocation.
-"${TOP}/libtool" --mode=execute gdb.orig \
-       --batch \
-       --command="${TOP}/bin/tests/system/run.gdb" \
-       --core="${coredump}" \
-       -- \
-       "${binary}"
diff --git a/unit/unittest.sh.in b/unit/unittest.sh.in
deleted file mode 100755 (executable)
index 8224fef..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-
-# Find the top of the BIND9 tree.
-export TOP=@abs_top_builddir@
-KYUA=@KYUA@
-UNITTESTS=@UNITTESTS@
-CMOCKA_MESSAGE_OUTPUT=TAP
-export CMOCKA_MESSAGE_OUTPUT
-GDB="$(command -v gdb)"
-
-kyua_report() {
-       ${KYUA} --logfile /dev/null report --results-file "${KYUA_RESULT:-LATEST}"
-}
-
-clear_kyua_work_dir() {
-       KYUA_WORK_DIR="$(grep -i -m1 "failed" "${1}" | sed -n 's|.*\(/tmp/kyua\.[A-Za-z0-9]*\).*|\1|p')"
-       if [ -n "${CI}" ] && [ -d "${KYUA_WORK_DIR}" ]; then
-               find "${KYUA_WORK_DIR}" \( -name 'core*' -o -name '*.core' \) -exec mv -v {} . \;
-               rm -rf "${KYUA_WORK_DIR}"
-       fi
-}
-
-status=0
-if [ -n "${UNITTESTS}" ] && [ -f Kyuafile ]
-then
-       echo "S:unit:$(date)"
-       echo "T:unit:1:A"
-       echo "I:unit tests (using kyua)"
-
-       ${KYUA} -v parallelism="${TEST_PARALLEL_JOBS:-1}" --logfile kyua.log --loglevel debug test --results-file "${KYUA_RESULT:-NEW}"
-       status=$?
-
-       kyua_report
-
-       clear_kyua_work_dir kyua.log
-
-       # Use kyua-debug(1) facility to gather additional data on failed tests.
-       # Some runs will just show verbose information from the run, some will
-       # show backtrace via gdb(1).
-       USER_ID=$(id -u)
-       BROKEN_TESTS=$(kyua_report | awk '$2 == "->" && ( $3 == "broken:" || $3 == "failed:" ) { print $1 }')
-       # Conditions for getting kyua debug info and GDB backtrace: runs under CI
-       # (safety), GDB present, root privileges, failed tests.
-       if [ -n "${CI}" ] && [ -n "${GDB}" ] && [ "${USER_ID:-1}" -eq 0 ] && [ -n "${BROKEN_TESTS}" ]; then
-               if [ "$(uname -s)" = "Linux" ] && ! sysctl -n "kernel.core_pattern" | grep -xq "core.%p"; then
-                       echo "I:*** kernel.core_pattern is not set to 'core.%p'"
-                       echo "I:*** kyua may not be able to find core dumps for broken tests"
-               fi
-               if [ "$(uname -s)" = "FreeBSD" ] && ! sysctl -n "kern.corefile" | grep -xq "core.%P"; then
-                       echo "I:*** kern.corefile is not set to 'core.%P'"
-                       echo "I:*** kyua may not be able to find core dumps for broken tests"
-               fi
-               # kyua debug command misidentifies broken binaries when libtool
-               # is used (see https://github.com/jmmv/kyua/issues/207).
-               # Here we try to "trick" kyua to use our custom gdb script instead
-               # of using gdb(1) directly. Hence this part needs to be run as root
-               # and, for safety reasons, only in the CI.
-               mv "${GDB}" "${GDB}.orig"
-               cp "${TOP}/unit/gdb" "${GDB}"
-               i=1
-               for test in ${BROKEN_TESTS}; do
-                       echo
-                       echo "----- $test -----"
-                       KYUA_DEBUG_LOG="kyua.debug.log.${i}"
-                       ${KYUA} debug "${test}" 2>&1 | tee "${KYUA_DEBUG_LOG}"
-                       clear_kyua_work_dir "${KYUA_DEBUG_LOG}"
-                       i=$((i + 1))
-               done
-               mv "${GDB}.orig" "${GDB}"
-       fi
-
-       if [ "${status}" -eq 0 ]
-       then
-               rm -f kyua.log
-               echo "R:PASS"
-       else
-               echo "R:FAIL:status:${status}"
-       fi
-       echo "E:unit:$(date)"
-fi
-exit ${status}
diff --git a/util/check-ans-prereq.sh b/util/check-ans-prereq.sh
deleted file mode 100644 (file)
index 6c21d5c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-status=0
-
-for testscript in bin/tests/system/*/tests.sh; do
-       testdir="$(dirname "${testscript}")"
-       prereq="${testdir}/prereq.sh"
-       if [ -e "${prereq}" ] || [ -e "${prereq}.in" ]; then
-               continue
-       fi
-       if find "${testdir}" -type d -name "ans*" | grep -Eq "/ans[0-9]+$"; then
-               echo "missing ${prereq}"
-               status=1
-       fi
-done
-
-exit ${status}
index b5b89390e2f3fb146b1706638c5f8386c13fdcba..7a07ef07d8ad5a310cf60242667fa23b5e67bb98 100755 (executable)
@@ -17,7 +17,7 @@ status=0
 list=`git grep -l snprintf lib bin |
       grep '\.c$' |
       grep -vE -e '(lib/bind|lib/dns/rdata|lib/dns/gen.c)' \
-              -e '(lib/isc/win32/time.c|dlzexternal/driver.c)' |
+              -e '(lib/isc/win32/time.c|dlzexternal/driver/driver.c)' |
       xargs grep -EL "(isc/print.h|print_p.h)" 2> /dev/null`
 [ -n "$list" ] && {
     status=1
index e132f70d0f93a26f41e59e9b53ec8e4e1ea1b9ea..bcd70b5cfdcc74dc739ce4c12158d625a8161aa5 100644 (file)
@@ -1,18 +1,14 @@
 ./.gitlab-ci.yml                               X       2018,2019,2020
 ./.pylintrc                                    X       2020
 ./.uncrustify.cfg                              X       2018,2019,2020
+./AUTHORS                                      X       2020
 ./CHANGES                                      X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./CODE_OF_CONDUCT                              X       2019,2020
-./CONTRIBUTING                                 X       2017,2018,2019,2020
+./COPYING                                      X       2020
 ./COPYRIGHT                                    TXT.TOP 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./HISTORY                                      X       2010,2013,2016,2017,2018,2019,2020
-./Kyuafile                                     X       2017,2018,2019,2020
 ./LICENSE                                      X       2016,2018,2019,2020
-./OPTIONS                                      X       2017,2018,2019,2020
-./PLATFORMS                                    X       2018,2019,2020
-./README                                       X       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./aclocal.m4                                   X       1999,2000,2001,2012,2014,2018,2019,2020
-./autogen.sh                                   SH      2015,2016,2018,2019,2020
+./Makefile.tests                               X       2020
+./Makefile.top                                 X       2020
+./NEWS                                         X       2020
 ./bin/check/check-tool.c                       C       2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/check/check-tool.h                       C       2000,2001,2002,2004,2005,2007,2010,2011,2013,2014,2016,2018,2019,2020
 ./bin/check/named-checkconf.8                  MAN     DOCBOOK
 ./bin/dig/dig.docbook                          SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/dig.html                             HTML    DOCBOOK
 ./bin/dig/dighost.c                            C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
+./bin/dig/dighost.h                            C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/host.1                               MAN     DOCBOOK
 ./bin/dig/host.c                               C       2000,2001,2002,2003,2004,2005,2006,2007,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/host.docbook                         SGML    2000,2001,2002,2004,2005,2007,2008,2009,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/host.html                            HTML    DOCBOOK
-./bin/dig/include/dig/dig.h                    C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/nslookup.1                           MAN     DOCBOOK
 ./bin/dig/nslookup.c                           C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dig/nslookup.docbook                     SGML    2004,2005,2006,2007,2010,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dnssec/win32/dnssectool.vcxproj.in       X       2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dnssec/win32/dnssectool.vcxproj.user     X       2013,2018,2019,2020
 ./bin/dnssec/win32/dsfromkey.vcxproj.filters.in        X       2013,2015,2018,2019,2020
+./bin/dnssec/win32/dsfromkey.vcxproj.in                X       2013,2018,2019,2020
 ./bin/dnssec/win32/dsfromkey.vcxproj.user      X       2013,2018,2019,2020
 ./bin/dnssec/win32/importkey.vcxproj.filters.in        X       2013,2015,2018,2019,2020
 ./bin/dnssec/win32/importkey.vcxproj.in                X       2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dnssec/win32/verify.vcxproj.in           X       2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/dnssec/win32/verify.vcxproj.user         X       2013,2018,2019,2020
 ./bin/named/bind9.xsl                          SGML    2006,2007,2008,2009,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./bin/named/bind9.xsl.h                                X       2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/builtin.c                          C       2001,2002,2003,2004,2005,2007,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/config.c                           C       2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/control.c                          C       2001,2002,2003,2004,2005,2006,2007,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/controlconf.c                      C       2001,2002,2003,2004,2005,2006,2007,2008,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./bin/named/convertxsl.pl                      PERL    2006,2007,2008,2012,2014,2016,2018,2019,2020
 ./bin/named/fuzz.c                             C       2016,2017,2018,2019,2020
 ./bin/named/geoip.c                            C       2013,2014,2016,2017,2018,2019,2020
 ./bin/named/include/dlz/dlz_dlopen_driver.h    C       2011,2016,2018,2019,2020
 ./bin/named/win32/named.vcxproj.user           X       2013,2018,2019,2020
 ./bin/named/win32/ntservice.c                  C       1999,2000,2001,2002,2004,2006,2007,2009,2011,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/win32/os.c                         C       1999,2000,2001,2002,2004,2005,2007,2008,2009,2012,2013,2014,2015,2016,2017,2018,2019,2020
+./bin/named/xsl_p.h                            X       2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/named/zoneconf.c                         C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/nsupdate/nsupdate.1                      MAN     DOCBOOK
 ./bin/nsupdate/nsupdate.c                      C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/rndc/win32/rndcutil.vcxproj.filters.in   X       2013,2015,2018,2019,2020
 ./bin/rndc/win32/rndcutil.vcxproj.in           X       2013,2015,2016,2017,2018,2019,2020
 ./bin/rndc/win32/rndcutil.vcxproj.user         X       2013,2018,2019,2020
-./bin/tests/bigtest/README                     TXT.BRIEF       2013,2016,2018,2019,2020
-./bin/tests/bigtest/buildzones.sh              SH      2013,2016,2018,2019,2020
-./bin/tests/bigtest/rndc.key                   X       2013,2018,2019,2020
-./bin/tests/bigtest/tests.sh                   SH      2013,2016,2018,2019,2020
-./bin/tests/bigtest/zones                      X       2013,2018,2019,2020
 ./bin/tests/cfg_test.c                         C       2001,2002,2004,2005,2007,2009,2010,2011,2015,2016,2018,2019,2020
 ./bin/tests/fromhex.pl                         PERL    2015,2016,2018,2019,2020
 ./bin/tests/headerdep_test.sh.in               SH      2000,2001,2004,2007,2012,2016,2018,2019,2020
-./bin/tests/makejournal.c                      C       2013,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/Kchild.example.+005+33180.key     X       2018,2019,2020
-./bin/tests/optional/Kchild.example.+005+33180.private X       2018,2019,2020
-./bin/tests/optional/adb_test.c                        C       1999,2000,2001,2004,2005,2007,2009,2011,2012,2013,2015,2016,2018,2019,2020
-./bin/tests/optional/backtrace_test.c          C       2009,2013,2015,2016,2018,2019,2020
-./bin/tests/optional/byaddr_test.c             C       2000,2001,2002,2004,2005,2007,2012,2015,2016,2018,2019,2020
-./bin/tests/optional/byname_test.c             C       2000,2001,2004,2005,2007,2009,2012,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/db_test.c                 C       1999,2000,2001,2004,2005,2007,2008,2009,2011,2012,2013,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/fsaccess_test.c           C       2000,2001,2004,2005,2007,2012,2015,2016,2018,2019,2020
-./bin/tests/optional/gsstest.c                 C       2018,2019,2020
-./bin/tests/optional/inter_test.c              C       2000,2001,2003,2004,2005,2007,2008,2015,2016,2018,2019,2020
-./bin/tests/optional/lex_test.c                        C       1998,1999,2000,2001,2004,2005,2007,2015,2016,2018,2019,2020
-./bin/tests/optional/lfsr_test.c               C       1999,2000,2001,2004,2005,2007,2015,2016,2018,2019,2020
-./bin/tests/optional/log_test.c                        C       1999,2000,2001,2004,2007,2011,2014,2015,2016,2018,2019,2020
-./bin/tests/optional/master_test.c             C       1999,2000,2001,2004,2007,2009,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/mempool_test.c            C       1999,2000,2001,2004,2007,2016,2018,2019,2020
-./bin/tests/optional/name_test.c               C       1998,1999,2000,2001,2003,2004,2005,2007,2009,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/nsecify.c                 C       1999,2000,2001,2003,2004,2007,2008,2009,2011,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/ratelimiter_test.c                C       1999,2000,2001,2004,2007,2015,2016,2018,2019,2020
-./bin/tests/optional/rbt_test.c                        C       1999,2000,2001,2004,2005,2007,2009,2011,2012,2014,2015,2016,2018,2019,2020
-./bin/tests/optional/rbt_test.out              X       1999,2000,2001,2018,2019,2020
-./bin/tests/optional/rbt_test.txt              SH      1999,2000,2001,2004,2007,2012,2016,2018,2019
-./bin/tests/optional/rwlock_test.c             C       1998,1999,2000,2001,2004,2005,2007,2013,2016,2017,2018,2019,2020
-./bin/tests/optional/serial_test.c             C       1999,2000,2001,2003,2004,2007,2015,2016,2018,2019,2020
-./bin/tests/optional/shutdown_test.c           C       1998,1999,2000,2001,2004,2007,2011,2013,2016,2017,2018,2019,2020
-./bin/tests/optional/sig0_test.c               C       2000,2001,2004,2005,2007,2008,2009,2012,2015,2016,2018,2019,2020
-./bin/tests/optional/sock_test.c               C       1998,1999,2000,2001,2004,2007,2008,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./bin/tests/optional/sym_test.c                        C       1998,1999,2000,2001,2004,2005,2007,2015,2016,2018,2019,2020
-./bin/tests/optional/task_test.c               C       1998,1999,2000,2001,2004,2007,2013,2014,2015,2016,2018,2019,2020
-./bin/tests/optional/timer_test.c              C       1998,1999,2000,2001,2004,2007,2013,2014,2015,2016,2018,2019,2020
-./bin/tests/optional/zone_test.c               C       1999,2000,2001,2002,2004,2005,2007,2009,2012,2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/README                      X       2014,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/create.c         C       2014,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/find.c           C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/genrsa.c         C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/login.c          C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/privrsa.c                C       2014,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/pubrsa.c         C       2014,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/session.c                C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/sha1.c           C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/sign.c           C       2014,2015,2016,2018,2019,2020
-./bin/tests/pkcs11/benchmarks/verify.c         C       2014,2015,2016,2018,2019,2020
 ./bin/tests/prepare-softhsm2.sh                        SH      2020
 ./bin/tests/startperf/README                   X       2011,2018,2019,2020
 ./bin/tests/startperf/clean.sh                 SH      2011,2012,2016,2018,2019,2020
 ./bin/tests/system/chain/ans4/ans.py           PYTHON  2017,2018,2019,2020
 ./bin/tests/system/chain/clean.sh              SH      2011,2012,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/chain/ns2/sign.sh           SH      2017,2018,2019,2020
-./bin/tests/system/chain/prereq.sh             SH      2017,2018,2019,2020
 ./bin/tests/system/chain/setup.sh              SH      2017,2018,2019,2020
 ./bin/tests/system/chain/tests.sh              SH      2011,2012,2016,2017,2018,2019,2020
 ./bin/tests/system/checkconf/clean.sh          SH      2011,2012,2013,2014,2016,2018,2019,2020
 ./bin/tests/system/digdelv/ans7/ans.pl         PERL    2020
 ./bin/tests/system/digdelv/clean.sh            SH      2015,2016,2018,2019,2020
 ./bin/tests/system/digdelv/ns2/sign.sh         SH      2018,2019,2020
-./bin/tests/system/digdelv/prereq.sh           SH      2018,2019,2020
 ./bin/tests/system/digdelv/setup.sh            SH      2018,2019,2020
 ./bin/tests/system/digdelv/tests.sh            SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/digdelv/yamlget.py          PYTHON  2019,2020
 ./bin/tests/system/dlz/setup.sh                        SH      2018,2019,2020
 ./bin/tests/system/dlz/tests.sh                        SH      2010,2011,2012,2013,2015,2016,2018,2019,2020
 ./bin/tests/system/dlzexternal/clean.sh                SH      2010,2012,2014,2015,2016,2018,2019,2020
-./bin/tests/system/dlzexternal/driver.c                C       2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./bin/tests/system/dlzexternal/driver.h                C       2011,2016,2018,2019,2020
+./bin/tests/system/dlzexternal/driver/driver.c C       2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
+./bin/tests/system/dlzexternal/driver/driver.h C       2011,2016,2018,2019,2020
 ./bin/tests/system/dlzexternal/prereq.sh       SH      2010,2011,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/dlzexternal/setup.sh                SH      2010,2012,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/dlzexternal/tests.sh                SH      2010,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/dnssec/ns7/named.nosoa      TXT.BRIEF       2010,2016,2018,2019,2020
 ./bin/tests/system/dnssec/ns7/sign.sh          SH      2014,2016,2017,2018,2019,2020
 ./bin/tests/system/dnssec/ntadiff.pl           PERL    2015,2016,2018,2019,2020
-./bin/tests/system/dnssec/prereq.sh            SH      2000,2001,2002,2004,2006,2007,2009,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/dnssec/setup.sh             SH      2000,2001,2004,2007,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/dnssec/signer/general/Kexample.com.+005+07065.key   X       2018,2019,2020
 ./bin/tests/system/dnssec/signer/general/Kexample.com.+005+07065.private       X       2018,2019,2020
 ./bin/tests/system/feature-test.c              C       2016,2017,2018,2019,2020
 ./bin/tests/system/fetchlimit/ans4/ans.pl      PERL    2019,2020
 ./bin/tests/system/fetchlimit/clean.sh         SH      2015,2016,2018,2019,2020
-./bin/tests/system/fetchlimit/prereq.sh                SH      2018,2019,2020
 ./bin/tests/system/fetchlimit/setup.sh         SH      2015,2016,2018,2019,2020
 ./bin/tests/system/fetchlimit/tests.sh         SH      2015,2016,2018,2019,2020
 ./bin/tests/system/filter-aaaa/clean.sh                SH      2010,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/forward/clean.sh            SH      2000,2001,2004,2007,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/forward/ns1/example.db      X       2000,2001,2018,2019
 ./bin/tests/system/forward/ns2/example.db      X       2000,2001,2018,2019
-./bin/tests/system/forward/prereq.sh           SH      2019,2020
 ./bin/tests/system/forward/setup.sh            SH      2018,2019,2020
 ./bin/tests/system/forward/tests.sh            SH      2000,2001,2004,2007,2011,2012,2013,2014,2016,2018,2019,2020
 ./bin/tests/system/genzone.sh                  SH      2001,2002,2003,2004,2007,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/geoip2/prereq.sh            SH      2019,2020
 ./bin/tests/system/geoip2/setup.sh             SH      2019,2020
 ./bin/tests/system/geoip2/tests.sh             SH      2019,2020
+./bin/tests/system/get_base_port.sh            SH      2020
 ./bin/tests/system/glue/clean.sh               SH      2000,2001,2004,2007,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/glue/fi.good                        X       2000,2001,2018,2019,2020
 ./bin/tests/system/glue/noglue.good            X       2000,2001,2018,2019,2020
 ./bin/tests/system/idna/setup.sh               SH      2018,2019,2020
 ./bin/tests/system/idna/tests.sh               SH      2018,2019,2020
 ./bin/tests/system/ifconfig.bat                        BAT     2016,2018,2019,2020
-./bin/tests/system/ifconfig.sh                 SH      2000,2001,2002,2003,2004,2007,2008,2009,2010,2012,2013,2016,2018,2019,2020
+./bin/tests/system/ifconfig.sh.in              X       2000,2001,2002,2003,2004,2007,2008,2009,2010,2012,2013,2016,2018,2019,2020
 ./bin/tests/system/include-multiplecfg/clean.sh        SH      2020
 ./bin/tests/system/include-multiplecfg/setup.sh        SH      2020
 ./bin/tests/system/include-multiplecfg/tests.sh        SH      2020
 ./bin/tests/system/ixfr/ans2/startme           X       2011,2018,2019,2020
 ./bin/tests/system/ixfr/clean.sh               SH      2001,2004,2007,2011,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/ixfr/ixfr-stats.good                X       2019,2020
-./bin/tests/system/ixfr/prereq.sh              SH      2001,2004,2007,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/ixfr/setup.sh               SH      2001,2004,2007,2011,2012,2013,2014,2016,2018,2019,2020
 ./bin/tests/system/ixfr/tests.sh               SH      2001,2004,2007,2011,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/kasp/README                 TXT.BRIEF       2019,2020
 ./bin/tests/system/logfileconfig/ns1/named.versconf    X       2016,2018,2019,2020
 ./bin/tests/system/logfileconfig/setup.sh      SH      2011,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/logfileconfig/tests.sh      SH      2011,2012,2013,2014,2016,2017,2018,2019,2020
+./bin/tests/system/makejournal.c               C       2013,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/masterfile/clean.sh         SH      2001,2004,2007,2010,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/masterfile/knowngood.dig.out        X       2001,2004,2012,2018,2019,2020
 ./bin/tests/system/masterfile/setup.sh         SH      2018,2019,2020
 ./bin/tests/system/nsupdate/ns8/machine.ccache X       2018,2019,2020
 ./bin/tests/system/nsupdate/ns9/dns.keytab     X       2018,2019,2020
 ./bin/tests/system/nsupdate/ns9/machine.ccache X       2018,2019,2020
-./bin/tests/system/nsupdate/prereq.sh          SH      2014,2015,2016,2018,2019,2020
 ./bin/tests/system/nsupdate/setup.sh           SH      2000,2001,2004,2007,2009,2010,2011,2012,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/nsupdate/tests.sh           SH      2000,2001,2004,2007,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/nsupdate/update_test.pl     PERL    2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/nsupdate/verylarge.in       X       2013,2018,2019,2020
 ./bin/tests/system/nzd2nzf/clean.sh            SH      2016,2018,2019,2020
-./bin/tests/system/nzd2nzf/prereq.sh           SH      2016,2018,2019,2020
 ./bin/tests/system/nzd2nzf/setup.sh            SH      2016,2018,2019,2020
 ./bin/tests/system/nzd2nzf/tests.sh            SH      2016,2018,2019,2020
 ./bin/tests/system/org.isc.bind.system         SH      2010,2012,2013,2016,2018,2019,2020
 ./bin/tests/system/pipelined/input             X       2014,2015,2018,2019,2020
 ./bin/tests/system/pipelined/inputb            X       2014,2015,2018,2019,2020
 ./bin/tests/system/pipelined/pipequeries.c     C       2014,2015,2015,2016,2017,2018,2019,2020
-./bin/tests/system/pipelined/prereq.sh         SH      2020
 ./bin/tests/system/pipelined/ref               X       2014,2015,2018,2019,2020
 ./bin/tests/system/pipelined/refb              X       2014,2015,2018,2019,2020
 ./bin/tests/system/pipelined/setup.sh          SH      2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/qmin/ans3/ans.py            PYTHON  2018,2019,2020
 ./bin/tests/system/qmin/ans4/ans.py            PYTHON  2018,2019,2020
 ./bin/tests/system/qmin/clean.sh               SH      2018,2019,2020
-./bin/tests/system/qmin/prereq.sh              SH      2018,2019,2020
 ./bin/tests/system/qmin/setup.sh               SH      2018,2019,2020
 ./bin/tests/system/qmin/tests.sh               SH      2018,2019,2020
 ./bin/tests/system/reclimit/README             TXT.BRIEF       2014,2016,2017,2018,2019,2020
 ./bin/tests/system/reclimit/ans4/ans.pl                PERL    2018,2019,2020
 ./bin/tests/system/reclimit/ans7/ans.pl                PERL    2014,2016,2018,2019,2020
 ./bin/tests/system/reclimit/clean.sh           SH      2014,2016,2018,2019,2020
-./bin/tests/system/reclimit/prereq.sh          SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/reclimit/setup.sh           SH      2014,2016,2018,2019,2020
 ./bin/tests/system/reclimit/tests.sh           SH      2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/redirect/clean.sh           SH      2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/resolver/clean.sh           SH      2008,2009,2010,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/resolver/ns4/named.noaa     TXT.BRIEF       2010,2016,2018,2019,2020
 ./bin/tests/system/resolver/ns6/keygen.sh      SH      2010,2012,2014,2016,2017,2018,2019,2020
-./bin/tests/system/resolver/prereq.sh          SH      2000,2001,2004,2007,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/resolver/setup.sh           SH      2010,2011,2012,2013,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/resolver/tests.sh           SH      2000,2001,2004,2007,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rndc/clean.sh               SH      2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rpzrecurse/ans5/ans.pl      PERL    2016,2018,2019,2020
 ./bin/tests/system/rpzrecurse/clean.sh         SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rpzrecurse/ns2/named.conf.header.in X       2015,2016,2017,2018,2019,2020
-./bin/tests/system/rpzrecurse/prereq.sh                SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rpzrecurse/setup.sh         SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rpzrecurse/testgen.pl       PERL    2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rpzrecurse/tests.sh         SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/rsabigexponent/ns2/Xexample.+005+51829.private      X       2012,2018,2019,2020
 ./bin/tests/system/rsabigexponent/ns2/dsset-example.in X       2012,2018,2019,2020
 ./bin/tests/system/rsabigexponent/ns2/sign.sh  SH      2012,2014,2016,2018,2019,2020
-./bin/tests/system/rsabigexponent/prereq.sh    SH      2012,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/rsabigexponent/setup.sh     SH      2012,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/rsabigexponent/tests.sh     SH      2012,2016,2018,2019,2020
 ./bin/tests/system/run.gdb                     X       2019,2020
-./bin/tests/system/run.sh                      SH      2000,2001,2004,2007,2010,2012,2014,2015,2016,2017,2018,2019,2020
+./bin/tests/system/run.sh.in                   X       2000,2001,2004,2007,2010,2012,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/runall.sh                   SH      2000,2001,2004,2007,2010,2011,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/runsequential.sh            SH      2018,2019,2020
 ./bin/tests/system/runtime/README              TXT.BRIEF       2014,2016,2018,2019,2020
 ./bin/tests/system/send.pl                     PERL    2001,2004,2007,2011,2012,2016,2018,2019,2020
 ./bin/tests/system/serve-stale/ans2/ans.pl     PERL    2017,2018,2019,2020
 ./bin/tests/system/serve-stale/clean.sh                SH      2017,2018,2019,2020
-./bin/tests/system/serve-stale/prereq.sh       SH      2017,2018,2019,2020
 ./bin/tests/system/serve-stale/setup.sh                SH      2017,2018,2019,2020
 ./bin/tests/system/serve-stale/tests.sh                SH      2017,2018,2019,2020
 ./bin/tests/system/setup.sh                    SH      2000,2001,2004,2007,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/spf/setup.sh                        SH      2018,2019,2020
 ./bin/tests/system/spf/tests.sh                        SH      2013,2014,2016,2018,2019,2020
 ./bin/tests/system/start.pl                    SH      2001,2004,2005,2006,2007,2008,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./bin/tests/system/start.sh                    SH      2000,2001,2004,2007,2012,2016,2018,2019,2020
+./bin/tests/system/start.sh.in                 X       2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/staticstub/clean.sh         SH      2010,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/staticstub/knowngood.dig.out.rec    X       2010,2013,2018,2019,2020
 ./bin/tests/system/staticstub/ns3/sign.sh      SH      2010,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/staticstub/tests.sh         SH      2010,2011,2012,2013,2015,2016,2018,2019,2020
 ./bin/tests/system/statistics/ans4/ans.pl      PERL    2012,2016,2018,2019,2020
 ./bin/tests/system/statistics/clean.sh         SH      2012,2014,2015,2016,2018,2019,2020
-./bin/tests/system/statistics/prereq.sh                SH      2012,2014,2016,2018,2019,2020
 ./bin/tests/system/statistics/setup.sh         SH      2018,2019,2020
 ./bin/tests/system/statistics/tests.sh         SH      2012,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/statschannel/clean.sh       SH      2015,2016,2017,2018,2019,2020
 ./bin/tests/system/statschannel/fetch.pl       PERL    2015,2016,2018,2019,2020
 ./bin/tests/system/statschannel/mem-xml.pl     PERL    2017,2018,2019,2020
 ./bin/tests/system/statschannel/ns2/sign.sh    SH      2019,2020
-./bin/tests/system/statschannel/prereq.sh      SH      2015,2016,2018,2019,2020
 ./bin/tests/system/statschannel/server-json.pl PERL    2015,2016,2017,2018,2019,2020
 ./bin/tests/system/statschannel/server-xml.pl  PERL    2015,2016,2017,2018,2019,2020
 ./bin/tests/system/statschannel/setup.sh       SH      2018,2019,2020
 ./bin/tests/system/statschannel/zones-json.pl  PERL    2019,2020
 ./bin/tests/system/statschannel/zones-xml.pl   PERL    2019,2020
 ./bin/tests/system/stop.pl                     SH      2001,2004,2005,2006,2007,2012,2016,2017,2018,2019,2020
-./bin/tests/system/stop.sh                     SH      2000,2001,2004,2007,2012,2016,2018,2019,2020
+./bin/tests/system/stop.sh.in                  X       2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/stopall.sh                  SH      2018,2019,2020
 ./bin/tests/system/stress/clean.sh             SH      2000,2001,2004,2007,2012,2014,2016,2018,2019,2020
-./bin/tests/system/stress/prereq.sh            SH      2015,2016,2018,2019,2020
 ./bin/tests/system/stress/setup.pl             PERL    2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/stress/setup.sh             SH      2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/stress/tests.sh             SH      2000,2001,2004,2007,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/synthfromdnssec/ns1/sign.sh SH      2017,2018,2019,2020
 ./bin/tests/system/synthfromdnssec/setup.sh    SH      2017,2018,2019,2020
 ./bin/tests/system/synthfromdnssec/tests.sh    SH      2017,2018,2019,2020
-./bin/tests/system/system-test-driver.sh       X       2019,2020
+./bin/tests/system/system-test-driver.sh.in    X       2020
 ./bin/tests/system/tcp/ans6/ans.py             PYTHON  2019,2020
 ./bin/tests/system/tcp/clean.sh                        SH      2014,2016,2018,2019,2020
-./bin/tests/system/tcp/prereq.sh               SH      2019,2020
 ./bin/tests/system/tcp/setup.sh                        SH      2018,2019,2020
 ./bin/tests/system/tcp/tests.sh                        SH      2014,2016,2018,2019,2020
 ./bin/tests/system/testcrypto.sh               SH      2014,2016,2017,2018,2019,2020
 ./bin/tests/system/upforwd/knowngood.after2    X       2000,2001,2018,2019,2020
 ./bin/tests/system/upforwd/knowngood.before    X       2000,2001,2018,2019,2020
 ./bin/tests/system/upforwd/knowngood.ns2.before        X       2000,2001,2018,2019,2020
-./bin/tests/system/upforwd/prereq.sh           SH      2012,2014,2016,2018,2019,2020
 ./bin/tests/system/upforwd/setup.sh            SH      2000,2001,2004,2007,2011,2012,2014,2016,2017,2018,2019,2020
 ./bin/tests/system/upforwd/tests.sh            SH      2000,2001,2004,2007,2011,2012,2013,2014,2016,2018,2019,2020
 ./bin/tests/system/verify/clean.sh             SH      2012,2014,2016,2018,2019,2020
 ./bin/tests/system/win32/keydelete.vcxproj.filters.in  X       2016,2018,2019,2020
 ./bin/tests/system/win32/keydelete.vcxproj.in  X       2016,2017,2018,2019,2020
 ./bin/tests/system/win32/keydelete.vcxproj.user        X       2016,2018,2019,2020
+./bin/tests/system/win32/makejournal.vcxproj.filters.in        X       2016,2018,2019,2020
+./bin/tests/system/win32/makejournal.vcxproj.in        X       2016,2017,2018,2019,2020
+./bin/tests/system/win32/makejournal.vcxproj.user      X       2016,2018,2019,2020
 ./bin/tests/system/win32/pipequeries.vcxproj.filters.in        X       2016,2018,2019,2020
 ./bin/tests/system/win32/pipequeries.vcxproj.in        X       2016,2017,2018,2019,2020
 ./bin/tests/system/win32/pipequeries.vcxproj.user      X       2016,2018,2019,2020
 ./bin/tests/system/xfer/dig2.good              X       2000,2001,2003,2004,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./bin/tests/system/xfer/knowngood.mapped       X       2016,2018,2019,2020
 ./bin/tests/system/xfer/ns4/named.conf.base    X       2011,2013,2016,2018,2019,2020
-./bin/tests/system/xfer/prereq.sh              SH      2011,2012,2014,2016,2018,2019,2020
 ./bin/tests/system/xfer/setup.sh               SH      2001,2002,2004,2007,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/xfer/tests.sh               SH      2000,2001,2004,2005,2007,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/xferquota/clean.sh          SH      2000,2001,2004,2007,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/system/xferquota/tests.sh          SH      2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./bin/tests/system/zero/ans5/ans.pl            PERL    2016,2018,2019,2020
 ./bin/tests/system/zero/clean.sh               SH      2013,2014,2015,2016,2018,2019,2020
-./bin/tests/system/zero/prereq.sh              SH      2018,2019,2020
 ./bin/tests/system/zero/setup.sh               SH      2013,2014,2016,2018,2019,2020
 ./bin/tests/system/zero/tests.sh               SH      2013,2016,2017,2018,2019,2020
 ./bin/tests/system/zonechecks/clean.sh         SH      2004,2007,2012,2014,2015,2016,2018,2019,2020
 ./bin/tests/win32/inter_test.vcxproj.filters.in        X       2013,2015,2018,2019,2020
 ./bin/tests/win32/inter_test.vcxproj.in                X       2013,2015,2016,2017,2018,2019,2020
 ./bin/tests/win32/inter_test.vcxproj.user      X       2013,2018,2019,2020
-./bin/tests/win32/makejournal.vcxproj.filters.in       X       2016,2018,2019,2020
-./bin/tests/win32/makejournal.vcxproj.in       X       2016,2017,2018,2019,2020
-./bin/tests/win32/makejournal.vcxproj.user     X       2016,2018,2019,2020
 ./bin/tests/win32/rwlock_test.vcxproj.filters.in       X       2013,2015,2018,2019,2020
 ./bin/tests/win32/rwlock_test.vcxproj.in       X       2013,2015,2016,2017,2018,2019,2020
 ./bin/tests/win32/rwlock_test.vcxproj.user     X       2013,2018,2019,2020
 ./bin/win32/BINDInstall/res/BINDInstall.rc2    X       2001,2018,2019,2020
 ./bin/win32/BINDInstall/resource.h             X       2001,2005,2009,2018,2019,2020
 ./bind.keys                                    X       2009,2010,2011,2017,2018,2019,2020
-./bind.keys.h                                  X       2009,2010,2011,2012,2014,2017,2018,2019,2020
-./config.guess                                 X       1998,1999,2000,2001,2004,2009,2013,2018,2019,2020
-./config.h.in                                  X       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./config.h.win32                               C       1999,2000,2001,2004,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./config.sub                                   X       1998,1999,2000,2001,2004,2013,2018,2019,2020
-./config.threads.in                            X       2005,2006,2010,2011,2012,2013,2018,2019,2020
 ./conftools/perllib/dnsconf/DNSConf-macros.h   C       2000,2001,2004,2007,2016,2018,2019,2020
 ./conftools/perllib/dnsconf/DNSConf.i          C       2000,2001,2004,2007,2016,2018,2019,2020
 ./conftools/perllib/dnsconf/Makefile.PL                PERL    2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./contrib/dlz/modules/wildcard/dlz_wildcard_dynamic.c  X       2013,2015,2016,2018,2019,2020
 ./contrib/dlz/modules/wildcard/testing/named.conf      X       2013,2018,2019
 ./contrib/dnspriv/nginx.conf                   SH      2017,2018,2019
+./contrib/kasp/README                          X       2020
+./contrib/kasp/kasp.xml                                X       2020
+./contrib/kasp/policy.good                     X       2020
 ./contrib/scripts/catzhash.py                  X       2020
 ./contrib/scripts/check-secure-delegation.pl.in        PERL    2010,2012,2014,2016,2018,2019,2020
 ./contrib/scripts/check5011.pl                 X       2013,2014,2017,2018,2019,2020
 ./fuzz/dns_rdata_fromwire_text.c               C       2019,2020
 ./fuzz/fuzz.h                                  C       2018,2019,2020
 ./fuzz/main.c                                  C       2018,2019,2020
-./install-sh                                   X       1998,1999,2000,2001,2018,2019,2020
-./lib/Kyuafile                                 X       2017,2018,2019,2020
 ./lib/bind9/api                                        X       2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/bind9/check.c                            C       2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/bind9/getaddresses.c                     C       2001,2002,2004,2005,2007,2014,2015,2016,2017,2018,2019,2020
 ./lib/bind9/include/bind9/check.h              C       2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/bind9/include/bind9/getaddresses.h       C       2001,2004,2005,2006,2007,2009,2016,2017,2018,2019,2020
-./lib/bind9/include/bind9/version.h            C       2001,2004,2005,2006,2007,2016,2018,2019,2020
-./lib/bind9/version.c                          C       2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/bind9/win32/DLLMain.c                    C       2001,2004,2007,2016,2018,2019,2020
 ./lib/bind9/win32/libbind9.def                 X       2001,2018,2019,2020
 ./lib/bind9/win32/libbind9.vcxproj.filters.in  X       2013,2015,2016,2018,2019,2020
 ./lib/bind9/win32/libbind9.vcxproj.in          X       2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/bind9/win32/libbind9.vcxproj.user                X       2013,2018,2019,2020
-./lib/bind9/win32/version.c                    C       1998,1999,2000,2001,2004,2007,2016,2018,2019,2020
-./lib/dns/Kyuafile                             X       2017,2018,2019,2020
 ./lib/dns/acl.c                                        C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2011,2013,2014,2016,2017,2018,2019,2020
 ./lib/dns/adb.c                                        C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/api                                  X       1999,2000,2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/gen.c                                        C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/geoip2.c                             C       2019,2020
 ./lib/dns/gssapi_link.c                                C       2000,2001,2002,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2018,2019,2020
+./lib/dns/gssapictx-dummy.c                    C       2020
 ./lib/dns/gssapictx.c                          C       2000,2001,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/hmac_link.c                          C.NAI   1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/include/dns/acl.h                    C       1999,2000,2001,2002,2004,2005,2006,2007,2009,2011,2013,2014,2016,2017,2018,2019,2020
 ./lib/dns/include/dns/types.h                  C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/include/dns/update.h                 C       2011,2015,2016,2018,2019,2020
 ./lib/dns/include/dns/validator.h              C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2013,2014,2016,2018,2019,2020
-./lib/dns/include/dns/version.h                        C       2001,2004,2005,2006,2007,2012,2013,2016,2018,2019,2020
 ./lib/dns/include/dns/view.h                   C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/include/dns/xfrin.h                  C       1999,2000,2001,2003,2004,2005,2006,2007,2009,2013,2016,2018,2019,2020
 ./lib/dns/include/dns/zone.h                   C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/lib.c                                        C       1999,2000,2001,2004,2005,2007,2009,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/log.c                                        C       1999,2000,2001,2003,2004,2005,2006,2007,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/lookup.c                             C       2000,2001,2003,2004,2005,2007,2013,2016,2018,2019,2020
-./lib/dns/mapapi                               X       2013,2017,2018,2019,2020
 ./lib/dns/master.c                             C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/masterdump.c                         C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/message.c                            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/sdb.c                                        C       2000,2001,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/sdlz.c                               C.PORTION       1999,2000,2001,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/soa.c                                        C       2000,2001,2004,2005,2007,2009,2016,2018,2019,2020
-./lib/dns/spnego.asn1                          X       2006,2018,2019,2020
-./lib/dns/spnego.c                             C       2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./lib/dns/spnego.h                             C       2006,2007,2016,2018,2019,2020
-./lib/dns/spnego_asn1.c                                C       2006,2007,2012,2013,2015,2016,2018,2019,2020
-./lib/dns/spnego_asn1.pl                       PERL    2006,2007,2012,2016,2018,2019,2020
 ./lib/dns/ssu.c                                        C       2000,2001,2003,2004,2005,2006,2007,2008,2010,2011,2013,2014,2016,2017,2018,2019,2020
 ./lib/dns/ssu_external.c                       C       2011,2012,2013,2016,2017,2018,2019,2020
 ./lib/dns/stats.c                              C       2000,2001,2004,2005,2007,2008,2009,2012,2016,2018,2019,2020
 ./lib/dns/tcpmsg.c                             C       1999,2000,2001,2004,2005,2006,2007,2015,2016,2018,2019,2020
 ./lib/dns/tests/Kdh.+002+18602.key             X       2014,2018,2019,2020
 ./lib/dns/tests/Krsa.+005+29235.key            X       2016,2018,2019,2020
-./lib/dns/tests/Kyuafile                       X       2017,2018,2019,2020
 ./lib/dns/tests/acl_test.c                     C       2016,2018,2019,2020
 ./lib/dns/tests/db_test.c                      C       2013,2015,2016,2017,2018,2019,2020
 ./lib/dns/tests/dbdiff_test.c                  C       2011,2012,2016,2017,2018,2019,2020
 ./lib/dns/ttl.c                                        C       1999,2000,2001,2004,2005,2007,2011,2012,2013,2014,2016,2017,2018,2019,2020
 ./lib/dns/update.c                             C       2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/validator.c                          C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./lib/dns/version.c                            C       1998,1999,2000,2001,2004,2005,2007,2012,2013,2016,2018,2019,2020
 ./lib/dns/view.c                               C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/win32/DLLMain.c                      C       2001,2004,2007,2016,2018,2019,2020
 ./lib/dns/win32/gen.vcxproj.filters.in         X       2013,2015,2018,2019,2020
 ./lib/dns/win32/libdns.vcxproj.filters.in      X       2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/win32/libdns.vcxproj.in              X       2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/win32/libdns.vcxproj.user            X       2013,2018,2019,2020
-./lib/dns/win32/version.c                      C       1998,1999,2000,2001,2004,2007,2013,2016,2018,2019,2020
 ./lib/dns/xfrin.c                              C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/zone.c                               C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/dns/zone_p.h                             C       2018,2019,2020
 ./lib/dns/zonekey.c                            C       2001,2003,2004,2005,2007,2016,2018,2019,2020
 ./lib/dns/zoneverify.c                         C       2018,2019,2020
 ./lib/dns/zt.c                                 C       1999,2000,2001,2002,2004,2005,2006,2007,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./lib/irs/Kyuafile                             X       2017,2018,2019,2020
 ./lib/irs/api                                  X       2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/irs/context.c                            C       2009,2014,2016,2018,2019,2020
 ./lib/irs/dnsconf.c                            C       2009,2012,2016,2018,2019,2020
 ./lib/irs/getnameinfo.c                                C       2009,2011,2012,2013,2014,2016,2017,2018,2019,2020
 ./lib/irs/include/irs/context.h                        C       2009,2016,2018,2019,2020
 ./lib/irs/include/irs/dnsconf.h                        C       2009,2016,2018,2019,2020
-./lib/irs/include/irs/netdb.h.in               C       2009,2016,2017,2018,2019,2020
-./lib/irs/include/irs/platform.h.in            C       2009,2016,2018,2019,2020
+./lib/irs/include/irs/netdb.h                  C       2009,2016,2017,2018,2019,2020
 ./lib/irs/include/irs/resconf.h                        C       2009,2014,2016,2018,2019,2020
 ./lib/irs/include/irs/types.h                  C       2009,2016,2018,2019,2020
-./lib/irs/include/irs/version.h                        C       2009,2016,2018,2019,2020
 ./lib/irs/resconf.c                            C       2009,2011,2012,2014,2015,2016,2017,2018,2019,2020
-./lib/irs/tests/Kyuafile                       X       2017,2018,2019,2020
 ./lib/irs/tests/resconf_test.c                 C       2016,2018,2019,2020
 ./lib/irs/tests/testdata/domain.conf           CONF-SH 2016,2018,2019
 ./lib/irs/tests/testdata/nameserver-v4.conf    CONF-SH 2016,2018,2019
 ./lib/irs/tests/testdata/sortlist-v4.conf      CONF-SH 2016,2018,2019
 ./lib/irs/tests/testdata/timeout.conf          CONF-SH 2016,2018,2019
 ./lib/irs/tests/testdata/unknown.conf          CONF-SH 2016,2018,2019
-./lib/irs/version.c                            C       2009,2016,2018,2019,2020
 ./lib/irs/win32/DLLMain.c                      C       2014,2016,2018,2019,2020
 ./lib/irs/win32/include/irs/netdb.h            C       2014,2016,2017,2018,2019,2020
-./lib/irs/win32/include/irs/platform.h         C       2014,2016,2018,2019,2020
 ./lib/irs/win32/libirs.def                     X       2014,2018,2019,2020
 ./lib/irs/win32/libirs.vcxproj.filters.in      X       2014,2015,2016,2018,2019,2020
 ./lib/irs/win32/libirs.vcxproj.in              X       2014,2015,2016,2017,2018,2019,2020
 ./lib/irs/win32/libirs.vcxproj.user            X       2014,2018,2019,2020
 ./lib/irs/win32/resconf.c                      C       2018,2019,2020
-./lib/irs/win32/version.c                      C       2014,2016,2018,2019,2020
-./lib/isc/Kyuafile                             X       2017,2018,2019,2020
 ./lib/isc/aes.c                                        C       2014,2016,2017,2018,2019,2020
 ./lib/isc/api                                  X       1999,2000,2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/app.c                                        C       1999,2000,2001,2002,2003,2004,2005,2007,2008,2009,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/include/isc/assertions.h             C       1997,1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2016,2017,2018,2019,2020
 ./lib/isc/include/isc/astack.h                 C       2019,2020
 ./lib/isc/include/isc/atomic.h                 C       2018,2019,2020
+./lib/isc/include/isc/attributes.h             C       2020
 ./lib/isc/include/isc/backtrace.h              C       2009,2016,2018,2019,2020
 ./lib/isc/include/isc/base32.h                 C       2008,2014,2016,2018,2019,2020
 ./lib/isc/include/isc/base64.h                 C       1999,2000,2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isc/include/isc/tm.h                     C       2014,2016,2018,2019,2020
 ./lib/isc/include/isc/types.h                  C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2012,2013,2014,2016,2017,2018,2019,2020
 ./lib/isc/include/isc/util.h                   C       1998,1999,2000,2001,2004,2005,2006,2007,2010,2011,2012,2015,2016,2017,2018,2019,2020
-./lib/isc/include/isc/version.h                        C       2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isc/include/pk11/constants.h             C       2014,2016,2017,2018,2019,2020
 ./lib/isc/include/pk11/internal.h              C       2014,2016,2018,2019,2020
 ./lib/isc/include/pk11/pk11.h                  C       2014,2016,2018,2019,2020
 ./lib/isc/netscope.c                           C       2002,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isc/nonce.c                              C       2018,2019,2020
 ./lib/isc/openssl_shim.c                       C       2018,2019,2020
-./lib/isc/openssl_shim.h                       C       2018,2019,2020
+./lib/isc/openssl_shim.h                       C       2020
 ./lib/isc/parseint.c                           C       2001,2002,2003,2004,2005,2007,2012,2016,2018,2019,2020
 ./lib/isc/pk11.c                               C       2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/pk11_result.c                                C       2014,2015,2016,2018,2019,2020
 ./lib/isc/task.c                               C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/task_p.h                             C       2018,2019,2020
 ./lib/isc/taskpool.c                           C       1999,2000,2001,2004,2005,2007,2011,2012,2013,2016,2018,2019,2020
-./lib/isc/tests/Kyuafile                       X       2017,2018,2019,2020
 ./lib/isc/tests/aes_test.c                     C       2014,2016,2018,2019,2020
 ./lib/isc/tests/buffer_test.c                  C       2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/tests/counter_test.c                 C       2014,2016,2018,2019,2020
 ./lib/isc/unix/stdtime.c                       C       1999,2000,2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/isc/unix/syslog.c                                C       2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/isc/unix/time.c                          C       1998,1999,2000,2001,2003,2004,2005,2006,2007,2008,2011,2012,2014,2015,2016,2017,2018,2019,2020
-./lib/isc/version.c                            C       1998,1999,2000,2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/isc/win32/DLLMain.c                      C       2001,2004,2007,2016,2018,2019,2020
 ./lib/isc/win32/condition.c                    C       1998,1999,2000,2001,2004,2006,2007,2016,2018,2019,2020
 ./lib/isc/win32/dir.c                          C       1999,2000,2001,2004,2007,2008,2009,2011,2012,2013,2016,2017,2018,2019,2020
 ./lib/isc/win32/thread.c                       C       1998,1999,2000,2001,2004,2005,2007,2016,2017,2018,2019,2020
 ./lib/isc/win32/time.c                         C       1998,1999,2000,2001,2003,2004,2006,2007,2008,2009,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isc/win32/unistd.h                       C       2000,2001,2004,2007,2008,2009,2016,2018,2019,2020
-./lib/isc/win32/version.c                      C       1998,1999,2000,2001,2004,2007,2016,2018,2019,2020
 ./lib/isc/win32/win32os.c                      C       2002,2004,2007,2013,2014,2015,2016,2018,2019,2020
 ./lib/isc/xoshiro128starstar.c                 C.PORTION       2018,2019,2020
-./lib/isccc/Kyuafile                           X       2018,2019,2020
 ./lib/isccc/alist.c                            C.NOM   2001,2004,2005,2007,2015,2016,2018,2019,2020
 ./lib/isccc/api                                        X       2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccc/base64.c                           C.NOM   2001,2004,2005,2007,2013,2016,2018,2019,2020
 ./lib/isccc/include/isccc/symtype.h            C.NOM   2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isccc/include/isccc/types.h              C.NOM   2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isccc/include/isccc/util.h               C.NOM   2001,2004,2005,2006,2007,2014,2016,2018,2019,2020
-./lib/isccc/include/isccc/version.h            C       2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isccc/result.c                           C.NOM   2001,2003,2004,2005,2007,2015,2016,2018,2019,2020
 ./lib/isccc/sexpr.c                            C.NOM   2001,2004,2005,2007,2014,2015,2016,2018,2019,2020
 ./lib/isccc/symtab.c                           C.NOM   2001,2004,2005,2007,2016,2018,2019,2020
-./lib/isccc/tests/Kyuafile                     X       2018,2019,2020
 ./lib/isccc/tests/result_test.c                        C       2018,2019,2020
-./lib/isccc/version.c                          C       1998,1999,2000,2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/isccc/win32/DLLMain.c                    C       2001,2004,2007,2016,2018,2019,2020
 ./lib/isccc/win32/libisccc.def                 X       2001,2016,2018,2019,2020
 ./lib/isccc/win32/libisccc.vcxproj.filters.in  X       2013,2015,2016,2018,2019,2020
 ./lib/isccc/win32/libisccc.vcxproj.in          X       2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccc/win32/libisccc.vcxproj.user                X       2013,2018,2019,2020
-./lib/isccc/win32/version.c                    C       2001,2004,2007,2016,2018,2019,2020
-./lib/isccfg/Kyuafile                          X       2017,2018,2019,2020
 ./lib/isccfg/aclconf.c                         C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccfg/api                               X       2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccfg/dnsconf.c                         C       2009,2016,2018,2019,2020
 ./lib/isccfg/include/isccfg/kaspconf.h         C       2019,2020
 ./lib/isccfg/include/isccfg/log.h              C       2001,2004,2005,2006,2007,2009,2016,2018,2019,2020
 ./lib/isccfg/include/isccfg/namedconf.h                C       2002,2004,2005,2006,2007,2009,2010,2014,2016,2018,2019,2020
-./lib/isccfg/include/isccfg/version.h          C       2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isccfg/kaspconf.c                                C       2019,2020
 ./lib/isccfg/log.c                             C       2001,2004,2005,2006,2007,2016,2018,2019,2020
 ./lib/isccfg/namedconf.c                       C       2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccfg/parser.c                          C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./lib/isccfg/tests/Kyuafile                    X       2017,2018,2019,2020
 ./lib/isccfg/tests/duration_test.c             C       2019,2020
 ./lib/isccfg/tests/parser_test.c               C       2016,2018,2019,2020
-./lib/isccfg/version.c                         C       1998,1999,2000,2001,2004,2005,2007,2016,2018,2019,2020
 ./lib/isccfg/win32/DLLMain.c                   C       2001,2004,2007,2016,2018,2019,2020
 ./lib/isccfg/win32/libisccfg.def               X       2001,2002,2005,2009,2010,2011,2013,2014,2015,2016,2018,2019,2020
 ./lib/isccfg/win32/libisccfg.vcxproj.filters.in        X       2013,2014,2015,2016,2018,2019,2020
 ./lib/isccfg/win32/libisccfg.vcxproj.in                X       2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/isccfg/win32/libisccfg.vcxproj.user      X       2013,2018,2019,2020
-./lib/isccfg/win32/version.c                   C       1998,1999,2000,2001,2004,2007,2016,2018,2019,2020
-./lib/ns/Kyuafile                              X       2017,2018,2019,2020
 ./lib/ns/api                                   X       2017,2018,2019,2020
 ./lib/ns/client.c                              C       2017,2018,2019,2020
 ./lib/ns/hooks.c                               C       2018,2019,2020
 ./lib/ns/include/ns/stats.h                    C       2017,2018,2019,2020
 ./lib/ns/include/ns/types.h                    C       2017,2018,2019,2020
 ./lib/ns/include/ns/update.h                   C       2017,2018,2019,2020
-./lib/ns/include/ns/version.h                  C       2017,2018,2019,2020
 ./lib/ns/include/ns/xfrout.h                   C       2017,2018,2019,2020
 ./lib/ns/interfacemgr.c                                C       2017,2018,2019,2020
 ./lib/ns/lib.c                                 C       2017,2018,2019,2020
 ./lib/ns/server.c                              C       2017,2018,2019,2020
 ./lib/ns/sortlist.c                            C       2017,2018,2019,2020
 ./lib/ns/stats.c                               C       2017,2018,2019,2020
-./lib/ns/tests/Kyuafile                                X       2017,2018,2019,2020
 ./lib/ns/tests/listenlist_test.c               C       2017,2018,2019,2020
 ./lib/ns/tests/notify_test.c                   C       2017,2018,2019,2020
 ./lib/ns/tests/nstest.c                                C       2017,2018,2019,2020
 ./lib/ns/tests/testdata/notify/notify1.msg     X       2017,2018,2019,2020
 ./lib/ns/tests/wrap.c                          C       2019,2020
 ./lib/ns/update.c                              C       2017,2018,2019,2020
-./lib/ns/version.c                             C       2017,2018,2019,2020
 ./lib/ns/win32/DLLMain.c                       C       2017,2018,2019,2020
 ./lib/ns/win32/libns.def                       X       2017,2018,2019,2020
 ./lib/ns/win32/libns.vcxproj.filters           X       2017,2018,2019,2020
 ./lib/ns/win32/libns.vcxproj.in                        X       2017,2018,2019,2020
 ./lib/ns/win32/libns.vcxproj.user              X       2017,2018,2019,2020
-./lib/ns/win32/version.c                       C       2017,2018,2019,2020
 ./lib/ns/xfrout.c                              C       2017,2018,2019,2020
-./lib/samples/Makefile-postinstall.in          MAKE    2009,2012,2013,2014,2016,2017,2018,2019,2020
 ./lib/samples/nsprobe.c                                C       2009,2010,2011,2012,2013,2014,2015,2016,2018,2019,2020
 ./lib/samples/resolve.c                                C       2009,2012,2013,2014,2015,2016,2017,2018,2019,2020
 ./lib/samples/rootkey.sh                       SH      2013,2016,2018,2019,2020
 ./lib/win32/bindevt/bindevt.vcxproj.filters.in X       2013,2015,2018,2019,2020
 ./lib/win32/bindevt/bindevt.vcxproj.in         X       2013,2014,2015,2016,2018,2019,2020
 ./lib/win32/bindevt/bindevt.vcxproj.user       X       2013,2018,2019,2020
-./ltmain.sh                                    X       1999,2000,2001,2003,2004,2006,2009,2012,2018,2019,2020
-./make/includes.in                             MAKE    1999,2000,2001,2004,2005,2007,2012,2014,2016,2017,2018,2019,2020
-./make/mkdep.in                                        X       1999,2000,2001,2006,2011,2014,2018,2019,2020
-./make/rules.in                                        MAKE    1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./mkinstalldirs                                        X       1996,2018,2019,2020
-./unit/README                                  X       2011,2013,2018,2019,2020
-./unit/gdb                                     X       2020
-./unit/unittest.sh.in                          X       2011,2012,2015,2018,2019,2020
 ./util/COPYRIGHT                               X       1996,1997,1998,1999,2000,2001,2004,2007,2016,2018,2019,2020
 ./util/COPYRIGHT.BRIEF                         X       1996,1997,1998,1999,2000,2001,2004,2016,2018,2019,2020
 ./util/COPYRIGHT.BSDI                          X       2000,2001,2004,2007,2016,2018,2019,2020
 ./util/api-checker.sh                          SH      2020
 ./util/bindkeys.pl                             PERL    2009,2010,2011,2012,2014,2016,2017,2018,2019,2020
 ./util/branchsync.sh                           SH      2013,2016,2018,2019,2020
-./util/check-ans-prereq.sh                     SH      2019,2020
 ./util/check-categories.sh                     SH      2015,2016,2017,2018,2019,2020
 ./util/check-changes                           PERL    2002,2004,2007,2012,2016,2018,2019,2020
 ./util/check-cocci                             X       2018,2019,2020
 ./util/update-drafts.pl                                PERL    2000,2001,2004,2007,2012,2016,2018,2019,2020
 ./util/update_branches                         PERL    2005,2007,2012,2016,2018,2019,2020
 ./util/update_copyrights                       PERL    1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2010,2012,2013,2014,2015,2016,2017,2018,2019,2020
-./util/xc                                      SH      2012,2013,2016,2018,2019,2020
-./version                                      X       1998,1999,2000,2001,2003,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2016,2017,2018,2019,2020
 ./win32utils/Configure                         PERL    2013,2014,2015,2016,2017,2018,2019,2020
 ./win32utils/GeoIP.diff                                X       2013,2018,2019,2020
 ./win32utils/bind9.sln.in                      X       2013,2014,2015,2016,2017,2018,2019,2020
index d00fb9e5aecb0a6a01bc36dd471d1c16133bd4af..9f5b09447e3310f2da0c6b81703db1e3eb1a1acf 100644 (file)
@@ -36,8 +36,9 @@ while (<CHANGES>) {
               /\.git/ |                # git directory
               /\.gitignore |   # .gitignore files
               /\.gitattributes |   # .gitattributes files
-              /\.clang-format |   # .clang-format files
-              Makefile.in  |   # build system doesn't need to have copyright
+              /\.clang-format  |   # .clang-format files
+              /ChangeLog       |   #
+              Makefile.(am|in) |   # build system doesn't need to have copyright
               /m4/ |           # build system doesn't need to have copyright
               /configure   |   # build system doesn't need to have copyright
               /fuzz/.*\.in/ |  # ignore fuzz corpus
@@ -112,7 +113,7 @@ while (<CHANGES>) {
            $file_types{$_} = "CONF-SH";
        } elsif ($base =~ /\.md$/) {
            $file_types{$_} = "MKD";
-       } elsif ($base =~ /(\/\.(gitignore|gitattributes)|Kyuafile|\.(gif|jpg))$/i) {
+       } elsif ($base =~ /(\/\.(gitignore|gitattributes)|\.(gif|jpg))$/i) {
            $file_types{$_} = "X";
        } elsif ($base =~ /\.(def|dep|dsp|dsw|mak|sln)$/i) {
            $file_types{$_} = "X";
index ea5ff3b2920307821a4464e0b4e63438fe8174aa..bb86dd6fb286e1a3b22289ff104b082b91af9ea8 100644 (file)
@@ -1,3 +1,5 @@
 unmatchedSuppression:*
 preprocessorErrorDirective:*
 unknownMacro:*
+uselessAssignmentPtrArg:libltdl/loaders/preopen.c:201
+deallocret:libltdl/lt__alloc.c:78
diff --git a/util/xc b/util/xc
deleted file mode 100755 (executable)
index 73b7b11..0000000
--- a/util/xc
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# See the COPYRIGHT file distributed with this work for additional
-# information regarding copyright ownership.
-
-#
-#      test cross compiler
-#
-
-chmod=
-next=0
-for t in ${BUILD_CC} gcc cc
-do
-       type $t > /dev/null 2>&1 && cc=$t && break
-done
-for i in "$@"
-do
-       [ $next = 1 ] && chmod="$i"
-       case "$i" in
-       -o) next=1;;
-       *) next=0;;
-       esac
-done
-if ${cc:-false} "$@" 
-then
-       [ "$chmod" != "" ] && chmod a-x "$chmod"
-       exit 0;
-else
-       exit 1;
-fi
diff --git a/version b/version
deleted file mode 100644 (file)
index 66268e7..0000000
--- a/version
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file must follow /bin/sh rules.  It is imported directly via
-# configure.
-#
-PRODUCT=BIND
-DESCRIPTION="(Development Release)"
-MAJORVER=9
-MINORVER=17
-PATCHVER=1
-RELEASETYPE=
-RELEASEVER=
-EXTENSIONS=
index d3c839540cacbddc11837ce49e63b3c6f27f4784..f15680f4007c6322b1c41937b182280a73c2f466 100644 (file)
@@ -112,8 +112,8 @@ my @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
                    "..\\bin\\tests\\win32\\backtrace_test.vcxproj.filters",
                    "..\\bin\\tests\\win32\\inter_test.vcxproj",
                    "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
-                   "..\\bin\\tests\\win32\\makejournal.vcxproj",
-                   "..\\bin\\tests\\win32\\makejournal.vcxproj.filters",
+                   "..\\bin\\tests\\system\\win32\\makejournal.vcxproj",
+                   "..\\bin\\tests\\system\\win32\\makejournal.vcxproj.filters",
                    "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
                    "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
                    "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
@@ -173,7 +173,7 @@ my @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
 
 my %configdefh;
 
-my @substdefh = ("CONFIGARGS",
+my @substdefh = ("PACKAGE_CONFIGARGS",
                  "DNS_RDATASET_FIXED",
                  "HAVE_GEOIP2",
                  "HAVE_LIBXML2",
@@ -290,7 +290,6 @@ my @substvar = ("BIND9_VERSION",
                 "MACHINE",
                 "OPENSSL_PATH",
                 "PLATFORM",
-                "PKCS11_TOOLS",
                 "PLATFORM_TOOLSET",
                 "prefix",
                 "PSSUSPEND",
@@ -614,19 +613,19 @@ sub appargs {
     # escape backslashes and double quotes
     $arg =~ s/([\\"])/\\$1/g;
     $arg =~ s/([\s])/\\\\$1/g;
-    if (defined($configdefh{"CONFIGARGS"})) {
-        $configdefh{"CONFIGARGS"} .= " " . $arg;
+    if (defined($configdefh{"PACKAGE_CONFIGARGS"})) {
+        $configdefh{"PACKAGE_CONFIGARGS"} .= " " . $arg;
     } else {
-        $configdefh{"CONFIGARGS"} = $arg;
+        $configdefh{"PACKAGE_CONFIGARGS"} = $arg;
     }
 }
 
-if (!$configdefh{"CONFIGARGS"}) {
+if (!$configdefh{"PACKAGE_CONFIGARGS"}) {
     # CONFIGARGS default is "default"
-    $configdefh{"CONFIGARGS"} = "\"default\"";
+    $configdefh{"PACKAGE_CONFIGARGS"} = "\"default\"";
 } else {
-    my $val = $configdefh{"CONFIGARGS"};
-    $configdefh{"CONFIGARGS"} = "\"'$val'\"";
+    my $val = $configdefh{"PACKAGE_CONFIGARGS"};
+    $configdefh{"PACKAGE_CONFIGARGS"} = "\"'$val'\"";
 }
 
 # parse enable/disable
@@ -1618,7 +1617,6 @@ if ($cryptolib ne "") {
 # with-pkcs11
 if ($use_pkcs11 ne "no") {
     $configcond{"PKCS11"} = 1;
-    $configvar{"PKCS11_TOOLS"} = "pkcs11";
     $configdefd{"PK11_LIB_LOCATION"} = "PK11_LIB_LOCATION=\"$pkcs11_path\"";
 }
 
index e126677ffcff288965488c74d661bc3e2fb7ec8e..b7de279f1972b3f26f519dbf3e7e19d933361901 100644 (file)
@@ -519,7 +519,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer_test", "..\bin\tests\
 EndProject
 @END XTESTS
 @IF STESTS
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makejournal", "..\bin\tests\win32\makejournal.vcxproj", "{31715139-2C27-47D2-8394-71B71A8AC3D5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makejournal", "..\bin\tests\system\win32\makejournal.vcxproj", "{31715139-2C27-47D2-8394-71B71A8AC3D5}"
        ProjectSection(ProjectDependencies) = postProject
                {A3F71D12-F38A-4C77-8D87-8E8854CA74A1} = {A3F71D12-F38A-4C77-8D87-8E8854CA74A1}
                {3840E563-D180-4761-AA9C-E6155F02EAFF} = {3840E563-D180-4761-AA9C-E6155F02EAFF}