Compare commits

..
1236 changed files with 76686 additions and 35582 deletions
-1
View File
@@ -62,4 +62,3 @@ unit/atf-src/test-programs/sh_helpers
.project .project
.cproject .cproject
.settings .settings
kyua.log
+18 -55
View File
@@ -4,13 +4,11 @@ variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9 CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9
CCACHE_DIR: "/ccache" CCACHE_DIR: "/ccache"
SOFTHSM2_CONF: "/var/tmp/softhsm2/softhsm2.conf"
stages: stages:
- precheck - precheck
- build - build
- test - test
- push
.centos-centos6-amd64: &centos_centos6_amd64_image .centos-centos6-amd64: &centos_centos6_amd64_image
image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64" image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64"
@@ -116,27 +114,20 @@ stages:
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}" - test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
# - ./autogen.sh # - ./autogen.sh
script: script:
- ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr --prefix=$HOME/.local --without-make-clean $EXTRA_CONFIGURE || cat config.log - ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr $EXTRA_CONFIGURE
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1 - make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
artifacts: artifacts:
paths:
- doc/
expire_in: '1 hour' expire_in: '1 hour'
untracked: true untracked: true
.install_test: &install_test_job
stage: test
before_script:
- mkdir $HOME/.local
script:
- make install
.system_test: &system_test_job .system_test: &system_test_job
stage: test stage: test
before_script: before_script:
- rm -rf .ccache - rm -rf .ccache
- bash -x bin/tests/system/ifconfig.sh up - bash -x bin/tests/system/ifconfig.sh up
- bash -x util/prepare-softhsm2.sh - export SOFTHSM_CONF="/tmp/softhsm.conf"
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
script: script:
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 ) - ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
- test -s bin/tests/system/systests.output - test -s bin/tests/system/systests.output
@@ -149,7 +140,9 @@ stages:
stage: test stage: test
before_script: before_script:
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results" - export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
- bash -x util/prepare-softhsm2.sh - export SOFTHSM_CONF="/tmp/softhsm.conf"
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
script: script:
- make unit - make unit
after_script: after_script:
@@ -172,8 +165,6 @@ precheck:debian:sid:amd64:
- perl -w util/merge_copyrights - perl -w util/merge_copyrights
- diff -urNap util/copyrights util/newcopyrights - diff -urNap util/copyrights util/newcopyrights
- rm util/newcopyrights - rm util/newcopyrights
- perl -w util/update_copyrights < util/copyrights
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
- xmllint --noout --nonet `git ls-files '*.xml' '*.docbook'` - xmllint --noout --nonet `git ls-files '*.xml' '*.docbook'`
- xmllint --noout --nonet --html `git ls-files '*.html'` - xmllint --noout --nonet --html `git ls-files '*.html'`
artifacts: artifacts:
@@ -183,29 +174,6 @@ precheck:debian:sid:amd64:
expire_in: '1 week' expire_in: '1 week'
when: on_failure when: on_failure
docs:debian:sid:amd64:
<<: *debian_sid_amd64_image
stage: test
dependencies:
- build:debian:sid:amd64
script:
- make -C doc/misc docbook
- make -C doc/arm Bv9ARM.html
artifacts:
paths:
- doc/arm/
expire_in: '1 month'
push:docs:
<<: *debian_sid_amd64_image
stage: push
dependencies: []
script:
- curl -X POST -F token=$GITLAB_PAGES_DOCS_TRIGGER_TOKEN -F ref=master $GITLAB_PAGES_DOCS_TRIGGER_URL
only:
- master@isc-projects/bind9
- /^v9_.*$/@isc-projects/bind9
#build:debian:jessie:amd64: #build:debian:jessie:amd64:
# <<: *debian_jessie_amd64_image # <<: *debian_jessie_amd64_image
# <<: *build_job # <<: *build_job
@@ -246,18 +214,18 @@ build:centos:centos7:amd64:
<<: *centos_centos7_amd64_image <<: *centos_centos7_amd64_image
<<: *build_job <<: *build_job
build:clang:debian:stretch:amd64: build:clang:debian:sid:amd64:
variables: variables:
CC: clang CC: clang-6.0
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g" CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
<<: *debian_stretch_amd64_image EXTRA_CONFIGURE: "--with-libidn2"
<<: *debian_sid_amd64_image
<<: *build_job <<: *build_job
build:debian:jessie:amd64: build:debian:jessie:amd64:
variables: variables:
CC: gcc CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g" CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: --without-cmocka
<<: *debian_jessie_amd64_image <<: *debian_jessie_amd64_image
<<: *build_job <<: *build_job
@@ -276,11 +244,12 @@ build:debian:sid:amd64:
<<: *debian_sid_amd64_image <<: *debian_sid_amd64_image
<<: *build_job <<: *build_job
build:clang:debian:stretch:i386: build:clang:debian:sid:i386:
variables: variables:
CC: clang CC: clang-6.0
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g" CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
<<: *debian_stretch_i386_image EXTRA_CONFIGURE: "--with-libidn2"
<<: *debian_sid_i386_image
<<: *build_job <<: *build_job
build:debian:sid:i386: build:debian:sid:i386:
@@ -321,11 +290,11 @@ unittest:debian:sid:amd64:
dependencies: dependencies:
- build:debian:sid:amd64 - build:debian:sid:amd64
unittest:clang:debian:stretch:amd64: unittest:clang:debian:sid:amd64:
<<: *debian_stretch_amd64_image <<: *debian_sid_amd64_image
<<: *unit_test_job <<: *unit_test_job
dependencies: dependencies:
- build:clang:debian:stretch:amd64 - build:clang:debian:sid:amd64
unittest:debian:sid:i386: unittest:debian:sid:i386:
<<: *debian_sid_i386_image <<: *debian_sid_i386_image
@@ -369,12 +338,6 @@ systemtest:debian:sid:i386:
dependencies: dependencies:
- build:debian:sid:i386 - build:debian:sid:i386
install:debian:sid:amd64:
<<: *debian_sid_amd64_image
<<: *install_test_job
dependencies:
- build:debian:sid:amd64
pkcs11:build:debian:sid:amd64: pkcs11:build:debian:sid:amd64:
variables: variables:
CC: gcc CC: gcc
-4
View File
@@ -9,10 +9,6 @@ email to [security-officer@isc.org](security-officer@isc.org).
(Summarize the bug encountered concisely.) (Summarize the bug encountered concisely.)
### BIND version used
(Paste the output of `named -V`.)
### Steps to reproduce ### Steps to reproduce
(How one can reproduce the issue - this is very important.) (How one can reproduce the issue - this is very important.)
-32
View File
@@ -1,32 +0,0 @@
## Release Checklist
- [ ] (Manager) Check for the presence of a milestone for the release.
- If there is a milestone, are all the issues for the milestone resolved? (other than this checklist).
- [ ] (Manager) Inform Support/Marketing of impending release (and give estimated release dates).
- (SwEng) Prepare the sources for tarball generation.
- [ ] Ensure that there are no outstanding merge requests in the private repository (subscription version only).
- [ ] Update API files for libraries with new version information.
- [ ] Change software version and library versions in configure.in (new major release only).
- [ ] Ensure Kyua and ATF files are correct.
- [ ] Rebuild configure using autoconf on docs.isc.org.
- [ ] Update CHANGES.
- [ ] Update CHANGES.SE (subscription branch only).
- [ ] Update "version".
- [ ] Update "readme.md".
- [ ] Ensure the release notes are correct for this release (content, formatting, etc.).
- [ ] Build documentation on docs.isc.org.
- [ ] Commit changes and make sure the gitlab-ci tests are passing.
- [ ] Push the changes and tag ("alphatag" is an optional string such as "b1", "rc1" etc.). (```git tag -u <DEVELOPER_KEYID> -a -s -m "BIND 9.X.Y[alphatag]" v9_X_Y[alphatag]```)
- [ ] If this is the first tag for a release (e.g. beta), create a release branch named `release_v9_X_Y` (this allows development to continue on the release branch whilst release engineering continues).
- [ ] (SwEng) Run the "make release" Jenkins job to produce the tarballs and zips.
- [ ] (SwEng) Ask QA to sanity check the tarball and zips (passing to them the number of the Jenkins job).
- [ ] (QA) Sanity check the tarballs.
- [ ] (QA) Request the signature on the tarballs.
- [ ] (QA) Check signatures on tarballs.
- [ ] (QA) Tell Support to handle notification of release.
- [ ] (Support) Make tarballs and signatures available to download.
- [ ] (Manager) Update [https://wiki.isc.org/bin/view/Main/BindReleaseDates](BIND release dates page) when public announcement has been made.
- [ ] (Manager) Inform marketing of the release
- [ ] (SwEng) Update DEB and RPM packages
- [ ] (SwEng) Merge the automatically prepared `prep 9.X.Y` commit which updates `version` and documentation on the release branch into the relevant maintenance branch (`v9_X`)
-1434
View File
File diff suppressed because it is too large Load Diff
+2 -271
View File
@@ -1,270 +1,3 @@
5081. [func] Use per-worker queues in task manager, make task
runners CPU-affine. [GL #659]
5080. [func] Improvements to "rndc nta" user interface:
- catch and report invalid command line options
- when removing an NTA from all views, do not
abort with an error if the NTA was not found
in one of the views
- include the view name in "rndc nta -dump"
output, for consistency with the add and remove
actions
Thanks to Tony Finch. [GL !816]
5079. [func] Disable IDN processing in dig and nslookup
when not on a tty. [GL #653]
5078. [cleanup] Require python components to be explicitly disabled if
python is not available on unix platforms. [GL #601]
5077. [cleanup] Remove ip6.int support (-i) from dig and mdig.
[GL !969]
5076. [bug] "require-server-cookie" was not effective if
"rate-limit" was configured. [GL #617]
5075. [bug] Refresh nameservers from cache when sending final
query in qname minimization. [GL #16]
5074. [cleanup] Remove vector socket functions - isc_socket_recvv(),
isc_socket_sendtov(), isc_socket_sendtov2(),
isc_socket_sendv() - in order to simplify socket code.
[GL #645]
5073. [bug] Destroy a task first when destroying rpzs and catzs.
[GL #84]
5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its
behavior for auto-reallocated buffers. [GL #644]
5071. [bug] Comparision of NXT records was broken. [GL #631]
5070. [bug] Record types which support a empty rdata field were
not handling the empty rdata field case. [GL #638]
5069. [bug] Fix a hang on in RPZ when named is shutdown during RPZ
zone update. [GL !907]
5068. [bug] Fix a race in RPZ with min-update-interval set to 0.
[GL #643]
5067. [bug] Don't minimize qname when sending the query
to a forwarder. [GL #361]
5066. [cleanup] Allow unquoted strings to be used as a zone names
in response-policy statements. [GL #641]
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
5064. [test] Initalize TZ environment variable before calling
dns_test_begin in dnstap_test. [GL #624]
5063. [test] In statschannel test try a few times before failing
when checking if the compressed output is the same as
uncompressed. [GL !909]
5062. [func] Use non-crypto-secure PRNG to generate nonces for
cookies. [GL !887]
5061. [protocol] Add support for EID and NIMLOC. [GL #626]
5060. [bug] GID, UID and UINFO could not be loaded using unknown
record format. [GL #627]
5059. [bug] Display a per-view list of zones in the web interface.
[GL #427]
5058. [func] Replace old message digest and hmac APIs with more
generic isc_md and isc_hmac APIs, and convert their
respective tests to cmocka. [GL #305]
5057. [protocol] Add support for ATMA. [GL #619]
5056. [placeholder]
5055. [func] A default list of primary servers for the root zone is
now built into named, allowing the "masters" statement
to be omitted when configuring an IANA root zone
mirror. [GL #564]
5054. [func] Attempts to use mirror zones with recursion disabled
are now considered a configuration error. [GL #564]
5053. [func] The only valid zone-level NOTIFY settings for mirror
zones are now "notify no;" and "notify explicit;".
[GL #564]
5052. [func] Mirror zones are now configured using "type mirror;"
rather than "mirror yes;". [GL #564]
5051. [doc] Documentation incorrectly stated that the
"server-addresses" static-stub zone option accepts
custom port numbers. [GL #582]
5050. [bug] The libirs version of getaddrinfo() was unable to parse
scoped IPv6 addresses present in /etc/resolv.conf.
[GL #187]
5049. [cleanup] QNAME minimization has been deeply refactored. [GL #16]
5048. [func] Add configure option to enable and enforce FIPS mode
in BIND 9. [GL #506]
5047. [bug] Messages logged for certain query processing failures
now include a more specific error description if it is
available. [GL #572]
5046. [bug] named could crash during shutdown if an RPZ
reload was in progress. [RT #46210]
5045. [func] Remove support for DNSSEC algorithms 3 (DSA)
and 6 (DSA-NSEC3-SHA1). [GL #22]
5044. [cleanup] If "dnssec-enable" is no, then "dnssec-validation"
now also defaults to no. [GL #388]
5043. [bug] Fix creating and validating EdDSA signatures. [GL #579]
5042. [test] Make the chained delegations in reclimit behave
like they would in a regular name server. [GL #578]
5041. [test] The chain test contains a incomplete delegation.
[GL #568]
5040. [func] Extended dnstap so that it can log UPDATE requests
and responses as separate message types. Thanks
to Greg Rabil. [GL #570]
5039. [bug] Named could fail to preserve owner name case of new
RRset. [GL #420]
5038. [bug] Chaosnet addresses were compared incorrectly.
[GL #562]
5037. [func] "allow-recursion-on" and "allow-query-cache-on"
each now default to the other if only one of them
is set, in order to be more consistent with the way
"allow-recursion" and "allow-query-cache" work.
Also we now ensure that both query-cache ACLs are
checked when determining cache access. [GL #319]
5036. [cleanup] Fixed a spacing/formatting error in some RPZ-related
error messages in the log. [GL !805]
5035. [test] Fixed errors that prevented the DNSRPS subtests
from running in the rpz and rpzrecurse system
tests. [GL #503]
5034. [bug] A race between threads could prevent zone maintenance
scheduled immediately after zone load from being
performed. [GL #542]
5033. [bug] When adding NTAs to multiple views using "rndc nta",
the text returned via rndc was incorrectly terminated
after the first line, making it look as if only one
NTA had been added. Also, it was not possible to
differentiate between views with the same name but
different classes; this has been corrected with the
addition of a "-class" option. [GL #105]
5032. [func] Add krb5-selfsub and ms-selfsub update policy rules.
[GL #511]
5031. [cleanup] Various defines in platform.h has been either dropped
if always or never triggered on supported platforms
or replaced with config.h equivalents if the defines
didn't have any impact on public headers. Workarounds
for LinuxThreads have been removed because NPTL is
available since Linux kernel 2.6.0. [GL #525]
5030. [bug] Align CMSG buffers to a 64-bit boundary, fixes crash
on architectures with strict alignment. [GL #521]
--- 9.13.3 released ---
5029. [func] Workarounds for servers that misbehave when queried
with EDNS have been removed, because these broken
servers and the workarounds for their noncompliance
cause unnecessary delays, increase code complexity,
and prevent deployment of new DNS features. See
https://dnsflagday.net for further details. [GL #150]
5028. [bug] Spread the initial RRSIG expiration times over the
entire working sig-validity-interval when signing a
zone in named to even out re-signing and transfer
loads. [GL #418]
5027. [func] Set SO_SNDBUF size on sockets. [GL #74]
5026. [bug] rndc reconfig should not touch already loaded zones.
[GL #276]
5025. [cleanup] Remove isc_keyboard family of functions. [GL #178]
5024. [func] Replace custom assembly for atomic operations with
atomic support from the compiler. The code will now use
C11 stdatomic, or __atomic, or __sync builtins with GCC
or Clang compilers, and Interlocked functions with MSVC.
[GL #10]
5023. [cleanup] Remove wrappers that try to fix broken or incomplete
implementations of IPv6, pthreads and other core
functionality required and used by BIND. [GL #192]
5022. [doc] Update ms-self, ms-subdomain, krb5-self, and
krb5-subdomain documentation. [GL !708]
5021. [bug] dig returned a non-zero exit code when it received a
reply over TCP after a retry. [GL #487]
5020. [func] RNG uses thread-local storage instead of locks, if
supported by platform. [GL #496]
5019. [cleanup] A message is now logged when ixfr-from-differences is
set at zone level for an inline-signed zone. [GL #470]
5018. [bug] Fix incorrect sizeof arguments in lib/isc/pk11.c.
[GL !588]
5017. [bug] lib/isc/pk11.c failed to unlink the session before
releasing the lock which is unsafe. [GL !589]
5016. [bug] Named could assert with overlapping filter-aaaa and
dns64 acls. [GL #445]
5015. [bug] Reloading all zones caused zone maintenance to cease
for inline-signed zones. [GL #435]
5014. [bug] Signatures loaded from the journal for the signed
version of an inline-signed zone were not scheduled for
refresh. [GL #482]
5013. [bug] A referral response with a non-empty ANSWER section was
inadvertently being treated as an error. [GL #390]
5012. [bug] Fix lock order reversal in pk11_initialize. [GL !590]
5011. [func] Remove support for unthreaded named. [GL #478]
5010. [func] New "validate-except" option specifies a list of
domains beneath which DNSSEC validation should not
be performed. [GL #237]
5009. [bug] Upon an OpenSSL failure, the first error in the OpenSSL
error queue was not logged. [GL #476]
5008. [bug] "rndc signing -nsec3param ..." requests were silently
ignored for zones which were not yet loaded or
transferred. [GL #468]
5007. [cleanup] Replace custom ISC boolean and integer data types
with C99 stdint.h and stdbool.h types. [GL #9]
5006. [cleanup] Code preparing a delegation response was extracted from
query_delegation() and query_zone_delegation() into a
separate function in order to decrease code
duplication. [GL #431]
5005. [bug] dnssec-verify, and dnssec-signzone at the verification 5005. [bug] dnssec-verify, and dnssec-signzone at the verification
step, failed on some validly signed zones. [GL #442] step, failed on some validly signed zones. [GL #442]
@@ -284,14 +17,12 @@
5000. [bug] named_server_servestale() could leave the server in 5000. [bug] named_server_servestale() could leave the server in
exclusive mode if an error occured. [GL #441] exclusive mode if an error occured. [GL #441]
4999. [cleanup] Remove custom printf implementation in lib/isc/print.c. 4999. [cleanup] Remove custom printf implementaion in lib/isc/print.c.
[GL #261] [GL #261]
4998. [test] Make resolver and cacheclean tests more civilized. 4998. [test] Make resolver and cacheclean tests more civilized.
4997. [security] named could crash during recursive processing 4997. [placeholder]
of DNAME records when "deny-answer-aliases" was
in use. (CVE-2018-5740) [GL #387]
4996. [bug] dig: Handle malformed +ednsopt option. [GL #403] 4996. [bug] dig: Handle malformed +ednsopt option. [GL #403]
+1 -2
View File
@@ -14,7 +14,7 @@ top_builddir = @top_builddir@
VERSION=@BIND9_VERSION@ VERSION=@BIND9_VERSION@
SUBDIRS = make unit lib fuzz bin doc SUBDIRS = make unit lib bin doc
TARGETS = TARGETS =
PREREQS = bind.keys.h PREREQS = bind.keys.h
@@ -90,7 +90,6 @@ force-test: test-force
test-force: test-force:
status=0; \ status=0; \
(cd fuzz && ${MAKE} check) || status=1; \
(cd bin/tests && ${MAKE} ${MAKEDEFS} test) || status=1; \ (cd bin/tests && ${MAKE} ${MAKEDEFS} test) || status=1; \
(test -f ${top_builddir}/unit/unittest.sh && \ (test -f ${top_builddir}/unit/unittest.sh && \
$(SHELL) ${top_builddir}/unit/unittest.sh) || status=1; \ $(SHELL) ${top_builddir}/unit/unittest.sh) || status=1; \
+4 -9
View File
@@ -1,11 +1,9 @@
Supported platforms Supported platforms
In general, this version of BIND will build and run on any POSIX-compliant In general, this version of BIND will build and run on any POSIX-compliant
system with a C99-compliant C compiler, BSD-style sockets with system with a C99-compliant C compiler, BSD-style sockets, and the OpenSSL
RFC-compliant IPv6 support, POSIX-compliant threads, and the OpenSSL cryptography library. To build with multiprocessing support, a
cryptography library. Atomic operations support from the compiler is C11-compliant C compiler will be needed for standard atomics.
needed, either in the form of builtin operations, C11 atomics or the
Interlocked family of functions on Windows.
ISC regularly tests BIND on many operating systems and architectures, but 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 lacks the resources to test all of them. Consequently, ISC is only able to
@@ -55,7 +53,4 @@ These are platforms on which BIND is known not to build or run:
* Platforms without at least OpenSSL 1.0.2 * Platforms without at least OpenSSL 1.0.2
* Windows 10 / x86 * Windows 10 / x86
* Windows Server 2012 and older * Windows Server 2012
* Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
* Platforms that don't support atomic operations (via compiler or
library)
+4 -40
View File
@@ -11,11 +11,9 @@
## Supported platforms ## Supported platforms
In general, this version of BIND will build and run on any POSIX-compliant In general, this version of BIND will build and run on any POSIX-compliant
system with a C99-compliant C compiler, BSD-style sockets with RFC-compliant system with a C99-compliant C compiler, BSD-style sockets, and the OpenSSL
IPv6 support, POSIX-compliant threads, and the OpenSSL cryptography library. cryptography library. To build with multiprocessing support, a
Atomic operations support from the compiler is needed, either in the form of C11-compliant C compiler will be needed for standard atomics.
builtin operations, C11 atomics or the Interlocked family of functions on
Windows.
ISC regularly tests BIND on many operating systems and architectures, but 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 lacks the resources to test all of them. Consequently, ISC is only able to
@@ -63,38 +61,4 @@ These are platforms on which BIND is known *not* to build or run:
* Platforms without at least OpenSSL 1.0.2 * Platforms without at least OpenSSL 1.0.2
* Windows 10 / x86 * Windows 10 / x86
* Windows Server 2012 and older * Windows Server 2012
* 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)
## Platform quirks
### ARM
If the compilation ends with following error:
```
Error: selected processor does not support `yield' in ARM mode
```
You will need to set `-march` compiler option to `native`, so the compiler
recognizes `yield` assembler instruction. The proper way to set `-march=native`
would be to put it into `CFLAGS`, e.g. run `./configure` like this:
`CFLAGS="-march=native -Os -g" ./configure` plus your usual options.
If that doesn't work, you can enforce the minimum CPU and FPU (taken from Debian
armhf documentation):
* The lowest worthwhile CPU implementation is Armv7-A, therefore the recommended
build option is `-march=armv7-a`.
* FPU should be set at VFPv3-D16 as they represent the miminum specification of
the processors to support here, therefore the recommended build option is
`-mfpu=vfpv3-d16`.
The configure command should look like this:
```
CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -Os -g" ./configure
```
+12 -19
View File
@@ -104,7 +104,8 @@ BIND 9.13 features
BIND 9.13 is the newest development branch of BIND 9. It includes a number BIND 9.13 is the newest development branch of BIND 9. It includes a number
of changes from BIND 9.12 and earlier releases. New features include: of changes from BIND 9.12 and earlier releases. New features include:
* QNAME minimization, as described in RFC 7816, is now supported. * The default value of "dnssec-validation" is now "auto".
* Support for IDNA2008 when linking with libidn2.
* "Root key sentinel" support, enabling validating resolvers to indicate * "Root key sentinel" support, enabling validating resolvers to indicate
via a special query which trust anchors are configured for the root via a special query which trust anchors are configured for the root
zone. zone.
@@ -113,24 +114,12 @@ of changes from BIND 9.12 and earlier releases. New features include:
subject to DNSSEC validation and are not treated as authoritative data subject to DNSSEC validation and are not treated as authoritative data
when answering. This makes it easier to configure a local copy of the when answering. This makes it easier to configure a local copy of the
root zone as described in RFC 7706. 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.
In addition, workarounds that were formerly in place to enable resolution In addition, cryptographic support has been modernized. BIND now uses the
of domains whose authoritative servers did not respond to EDNS queries best available pseudo-random number generator for the platform on which
have been removed. See https://dnsflagday.net for more details. it's built. Very old versions of OpenSSL are no longer supported.
Cryptography is now mandatory; building BIND without DNSSEC is now longer
Cryptographic support has been modernized. BIND now uses the best supported.
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 now 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.
Building BIND Building BIND
@@ -138,7 +127,7 @@ Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
basic POSIX support, and a 64-bit integer type. Successful builds have basic POSIX support, and a 64-bit integer type. Successful builds have
been observed on many versions of Linux and UNIX, including RedHat, been observed on many versions of Linux and UNIX, including RedHat,
Fedora, Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS Fedora, Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS
X, Solaris, HP-UX, and OpenWRT. X, Solaris, HP-UX, AIX, SCO OpenServer, and OpenWRT.
BIND requires a cryptography provider library such as OpenSSL or a BIND requires a cryptography provider library such as OpenSSL or a
hardware service module supporting PKCS#11. On Linux, BIND requires the hardware service module supporting PKCS#11. On Linux, BIND requires the
@@ -264,6 +253,10 @@ specifying --enable-fixed-rrset or --disable-fixed-rrset on the configure
command line. By default, fixed rrset-order is disabled to reduce memory command line. By default, fixed rrset-order is disabled to reduce memory
footprint. footprint.
If your operating system has integrated support for IPv6, it will be used
automatically. If you have installed KAME IPv6 separately, use --with-kame
[=PATH] to specify its location.
make install will install named and the various BIND 9 libraries. By 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 default, installation is into /usr/local, but this can be changed with the
--prefix option when running configure. --prefix option when running configure.
+9 -19
View File
@@ -122,7 +122,8 @@ BIND 9.13 is the newest development branch of BIND 9. It includes a
number of changes from BIND 9.12 and earlier releases. New features number of changes from BIND 9.12 and earlier releases. New features
include: include:
* QNAME minimization, as described in RFC 7816, is now supported. * The default value of "dnssec-validation" is now "auto".
* Support for IDNA2008 when linking with `libidn2`.
* "Root key sentinel" support, enabling validating resolvers to indicate * "Root key sentinel" support, enabling validating resolvers to indicate
via a special query which trust anchors are configured for the root zone. via a special query which trust anchors are configured for the root zone.
* Secondary zones can now be configured as "mirror" zones; their contents * Secondary zones can now be configured as "mirror" zones; their contents
@@ -130,35 +131,20 @@ include:
DNSSEC validation and are not treated as authoritative data when DNSSEC validation and are not treated as authoritative data when
answering. This makes it easier to configure a local copy of the root answering. This makes it easier to configure a local copy of the root
zone as described in RFC 7706. 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`.
In addition, workarounds that were formerly in place to enable resolution In addition, cryptographic support has been modernized. BIND now uses the
of domains whose authoritative servers did not respond to EDNS queries
have been removed. See [https://dnsflagday.net](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 best available pseudo-random number generator for the platform on which
it's built. Very old versions of OpenSSL are no longer supported. it's built. Very old versions of OpenSSL are no longer supported.
Cryptography is now mandatory: building BIND without DNSSEC is now Cryptography is now mandatory; building BIND without DNSSEC is now
longer supported. longer supported.
Special code to support certain legacy operating systems has also
been removed; see the file [PLATFORMS.md](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.
### <a name="build"/> Building BIND ### <a name="build"/> Building BIND
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler, Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
basic POSIX support, and a 64-bit integer type. Successful builds have been basic POSIX support, and a 64-bit integer type. Successful builds have been
observed on many versions of Linux and UNIX, including RedHat, Fedora, observed on many versions of Linux and UNIX, including RedHat, Fedora,
Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X, Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X,
Solaris, HP-UX, and OpenWRT. Solaris, HP-UX, AIX, SCO OpenServer, and OpenWRT.
BIND requires a cryptography provider library such as OpenSSL or a BIND requires a cryptography provider library such as OpenSSL or a
hardware service module supporting PKCS#11. On Linux, BIND requires hardware service module supporting PKCS#11. On Linux, BIND requires
@@ -282,6 +268,10 @@ specifying `--enable-fixed-rrset` or `--disable-fixed-rrset` on the
configure command line. By default, fixed rrset-order is disabled to configure command line. By default, fixed rrset-order is disabled to
reduce memory footprint. reduce memory footprint.
If your operating system has integrated support for IPv6, it will be used
automatically. If you have installed KAME IPv6 separately, use
`--with-kame[=PATH]` to specify its location.
`make install` will install `named` and the various BIND 9 libraries. By `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 default, installation is into /usr/local, but this can be changed with the
`--prefix` option when running `configure`. `--prefix` option when running `configure`.
+131
View File
@@ -0,0 +1,131 @@
/*
* 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 */
/***
*** This file is not to be included by any public header files, because
*** it does not get installed.
***/
@TOP@
/** define on DEC OSF to enable 4.4BSD style sa_len support */
#undef _SOCKADDR_LEN
/** define if your system needs pthread_init() before using pthreads */
#undef NEED_PTHREAD_INIT
/** define if your system has sigwait() */
#undef HAVE_SIGWAIT
/** define if sigwait() is the UnixWare flavor */
#undef HAVE_UNIXWARE_SIGWAIT
/** define on Solaris to get sigwait() to work using pthreads semantics */
#undef _POSIX_PTHREAD_SEMANTICS
/** define if LinuxThreads is in use */
#undef HAVE_LINUXTHREADS
/** define if sysconf() is available */
#undef HAVE_SYSCONF
/** define if sysctlbyname() is available */
#undef HAVE_SYSCTLBYNAME
/** define if catgets() is available */
#undef HAVE_CATGETS
/** define if getifaddrs() exists */
#undef HAVE_GETIFADDRS
/** define if you have the NET_RT_IFLIST sysctl variable and sys/sysctl.h */
#undef HAVE_IFLIST_SYSCTL
/** define if tzset() is available */
#undef HAVE_TZSET
/** define if struct addrinfo exists */
#undef HAVE_ADDRINFO
/** define if getaddrinfo() exists */
#undef HAVE_GETADDRINFO
/** define if gai_strerror() exists */
#undef HAVE_GAISTRERROR
/**
* define if pthread_setconcurrency() should be called to tell the
* OS how many threads we might want to run.
*/
#undef CALL_PTHREAD_SETCONCURRENCY
/** define if IPv6 is not disabled */
#undef WANT_IPV6
/** define if flockfile() is available */
#undef HAVE_FLOCKFILE
/** define if getc_unlocked() is available */
#undef HAVE_GETCUNLOCKED
/** Shut up warnings about sputaux in stdio.h on BSD/OS pre-4.1 */
#undef SHUTUP_SPUTAUX
#ifdef SHUTUP_SPUTAUX
struct __sFILE;
extern __inline int __sputaux(int _c, struct __sFILE *_p);
#endif
/** Shut up warnings about missing sigwait prototype on BSD/OS 4.0* */
#undef SHUTUP_SIGWAIT
#ifdef SHUTUP_SIGWAIT
int sigwait(const unsigned int *set, int *sig);
#endif
/** Shut up warnings from gcc -Wcast-qual on BSD/OS 4.1. */
#undef SHUTUP_STDARG_CAST
#if defined(SHUTUP_STDARG_CAST) && defined(__GNUC__)
#include <stdarg.h> /** Grr. Must be included *every time*. */
/**
* The silly continuation line is to keep configure from
* commenting out the #undef.
*/
#undef \
va_start
#define va_start(ap, last) \
do { \
union { const void *konst; long *var; } _u; \
_u.konst = &(last); \
ap = (va_list)(_u.var + __va_words(__typeof(last))); \
} while (0)
#endif /** SHUTUP_STDARG_CAST && __GNUC__ */
/** define if the system has a random number generating device */
#undef PATH_RANDOMDEV
/** define if pthread_attr_getstacksize() is available */
#undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
/** define if pthread_attr_setstacksize() is available */
#undef HAVE_PTHREAD_ATTR_SETSTACKSIZE
/** define if you have strerror in the C library. */
#undef HAVE_STRERROR
/* Define to the length type used by the socket API (socklen_t, size_t, int). */
#undef ISC_SOCKADDR_LEN_T
/* Define if threads need PTHREAD_SCOPE_SYSTEM */
#undef NEED_PTHREAD_SCOPE_SYSTEM
/* Define to 1 if you have the uname library function. */
#undef HAVE_UNAME
Vendored
-1
View File
@@ -289,7 +289,6 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR ])dnl PKG_CHECK_VAR
m4_include([m4/ax_check_openssl.m4]) m4_include([m4/ax_check_openssl.m4])
m4_include([m4/ax_pthread.m4])
m4_include([m4/libtool.m4]) m4_include([m4/libtool.m4])
m4_include([m4/ltoptions.m4]) m4_include([m4/ltoptions.m4])
m4_include([m4/ltsugar.m4]) m4_include([m4/ltsugar.m4])
+2 -2
View File
@@ -88,12 +88,12 @@ install:: named-checkconf@EXEEXT@ named-checkzone@EXEEXT@ installdirs
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkconf@EXEEXT@ ${DESTDIR}${sbindir} ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkconf@EXEEXT@ ${DESTDIR}${sbindir}
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkzone@EXEEXT@ ${DESTDIR}${sbindir} ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named-checkzone@EXEEXT@ ${DESTDIR}${sbindir}
(cd ${DESTDIR}${sbindir}; rm -f named-compilezone@EXEEXT@; ${LINK_PROGRAM} named-checkzone@EXEEXT@ named-compilezone@EXEEXT@) (cd ${DESTDIR}${sbindir}; rm -f named-compilezone@EXEEXT@; ${LINK_PROGRAM} named-checkzone@EXEEXT@ named-compilezone@EXEEXT@)
for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8 || exit 1; done for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8; done
(cd ${DESTDIR}${mandir}/man8; rm -f named-compilezone.8; ${LINK_PROGRAM} named-checkzone.8 named-compilezone.8) (cd ${DESTDIR}${mandir}/man8; rm -f named-compilezone.8; ${LINK_PROGRAM} named-checkzone.8 named-compilezone.8)
uninstall:: uninstall::
rm -f ${DESTDIR}${mandir}/man8/named-compilezone.8 rm -f ${DESTDIR}${mandir}/man8/named-compilezone.8
for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m || exit 1; done for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m ; done
rm -f ${DESTDIR}${sbindir}/named-compilezone@EXEEXT@ rm -f ${DESTDIR}${sbindir}/named-compilezone@EXEEXT@
${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-checkconf@EXEEXT@ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-checkconf@EXEEXT@
${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-checkzone@EXEEXT@ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/named-checkzone@EXEEXT@
+64 -45
View File
@@ -14,9 +14,7 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <inttypes.h>
#ifdef _WIN32 #ifdef _WIN32
#include <Winsock2.h> #include <Winsock2.h>
@@ -62,6 +60,14 @@
#define CHECK_LOCAL 1 #define CHECK_LOCAL 1
#endif #endif
#ifdef HAVE_ADDRINFO
#ifdef HAVE_GETADDRINFO
#ifdef HAVE_GAISTRERROR
#define USE_GETADDRINFO
#endif
#endif
#endif
#define CHECK(r) \ #define CHECK(r) \
do { \ do { \
result = (r); \ result = (r); \
@@ -82,15 +88,15 @@ static const char *dbtype[] = { "rbt" };
int debug = 0; int debug = 0;
const char *journal = NULL; const char *journal = NULL;
bool nomerge = true; isc_boolean_t nomerge = ISC_TRUE;
#if CHECK_LOCAL #if CHECK_LOCAL
bool docheckmx = true; isc_boolean_t docheckmx = ISC_TRUE;
bool dochecksrv = true; isc_boolean_t dochecksrv = ISC_TRUE;
bool docheckns = true; isc_boolean_t docheckns = ISC_TRUE;
#else #else
bool docheckmx = false; isc_boolean_t docheckmx = ISC_FALSE;
bool dochecksrv = false; isc_boolean_t dochecksrv = ISC_FALSE;
bool docheckns = false; isc_boolean_t docheckns = ISC_FALSE;
#endif #endif
dns_zoneopt_t zone_options = DNS_ZONEOPT_CHECKNS | dns_zoneopt_t zone_options = DNS_ZONEOPT_CHECKNS |
DNS_ZONEOPT_CHECKMX | DNS_ZONEOPT_CHECKMX |
@@ -136,7 +142,7 @@ add(char *key, int value) {
if (symtab == NULL) { if (symtab == NULL) {
result = isc_symtab_create(sym_mctx, 100, freekey, sym_mctx, result = isc_symtab_create(sym_mctx, 100, freekey, sym_mctx,
false, &symtab); ISC_FALSE, &symtab);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return; return;
} }
@@ -152,31 +158,32 @@ add(char *key, int value) {
isc_mem_free(sym_mctx, key); isc_mem_free(sym_mctx, key);
} }
static bool static isc_boolean_t
logged(char *key, int value) { logged(char *key, int value) {
isc_result_t result; isc_result_t result;
if (symtab == NULL) if (symtab == NULL)
return (false); return (ISC_FALSE);
result = isc_symtab_lookup(symtab, key, value, NULL); result = isc_symtab_lookup(symtab, key, value, NULL);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
return (true); return (ISC_TRUE);
return (false); return (ISC_FALSE);
} }
static bool static isc_boolean_t
checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner, checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
dns_rdataset_t *a, dns_rdataset_t *aaaa) dns_rdataset_t *a, dns_rdataset_t *aaaa)
{ {
#ifdef USE_GETADDRINFO
dns_rdataset_t *rdataset; dns_rdataset_t *rdataset;
dns_rdata_t rdata = DNS_RDATA_INIT; dns_rdata_t rdata = DNS_RDATA_INIT;
struct addrinfo hints, *ai, *cur; struct addrinfo hints, *ai, *cur;
char namebuf[DNS_NAME_FORMATSIZE + 1]; char namebuf[DNS_NAME_FORMATSIZE + 1];
char ownerbuf[DNS_NAME_FORMATSIZE]; char ownerbuf[DNS_NAME_FORMATSIZE];
char addrbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:123.123.123.123")]; char addrbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:123.123.123.123")];
bool answer = true; isc_boolean_t answer = ISC_TRUE;
bool match; isc_boolean_t match;
const char *type; const char *type;
void *ptr = NULL; void *ptr = NULL;
int result; int result;
@@ -225,7 +232,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
ownerbuf, namebuf, ownerbuf, namebuf,
cur->ai_canonname); cur->ai_canonname);
/* XXX950 make fatal for 9.5.0 */ /* XXX950 make fatal for 9.5.0 */
/* answer = false; */ /* answer = ISC_FALSE; */
add(namebuf, ERR_IS_CNAME); add(namebuf, ERR_IS_CNAME);
} }
break; break;
@@ -241,7 +248,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
add(namebuf, ERR_NO_ADDRESSES); add(namebuf, ERR_NO_ADDRESSES);
} }
/* XXX950 make fatal for 9.5.0 */ /* XXX950 make fatal for 9.5.0 */
return (true); return (ISC_TRUE);
default: default:
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) { if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
@@ -250,7 +257,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
namebuf, gai_strerror(result)); namebuf, gai_strerror(result));
add(namebuf, ERR_LOOKUP_FAILURE); add(namebuf, ERR_LOOKUP_FAILURE);
} }
return (true); return (ISC_TRUE);
} }
/* /*
@@ -261,13 +268,13 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
result = dns_rdataset_first(a); result = dns_rdataset_first(a);
while (result == ISC_R_SUCCESS) { while (result == ISC_R_SUCCESS) {
dns_rdataset_current(a, &rdata); dns_rdataset_current(a, &rdata);
match = false; match = ISC_FALSE;
for (cur = ai; cur != NULL; cur = cur->ai_next) { for (cur = ai; cur != NULL; cur = cur->ai_next) {
if (cur->ai_family != AF_INET) if (cur->ai_family != AF_INET)
continue; continue;
ptr = &((struct sockaddr_in *)(cur->ai_addr))->sin_addr; ptr = &((struct sockaddr_in *)(cur->ai_addr))->sin_addr;
if (memcmp(ptr, rdata.data, rdata.length) == 0) { if (memcmp(ptr, rdata.data, rdata.length) == 0) {
match = true; match = ISC_TRUE;
break; break;
} }
} }
@@ -279,7 +286,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
addrbuf, sizeof(addrbuf))); addrbuf, sizeof(addrbuf)));
add(namebuf, ERR_EXTRA_A); add(namebuf, ERR_EXTRA_A);
/* XXX950 make fatal for 9.5.0 */ /* XXX950 make fatal for 9.5.0 */
/* answer = false; */ /* answer = ISC_FALSE; */
} }
dns_rdata_reset(&rdata); dns_rdata_reset(&rdata);
result = dns_rdataset_next(a); result = dns_rdataset_next(a);
@@ -291,13 +298,13 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
result = dns_rdataset_first(aaaa); result = dns_rdataset_first(aaaa);
while (result == ISC_R_SUCCESS) { while (result == ISC_R_SUCCESS) {
dns_rdataset_current(aaaa, &rdata); dns_rdataset_current(aaaa, &rdata);
match = false; match = ISC_FALSE;
for (cur = ai; cur != NULL; cur = cur->ai_next) { for (cur = ai; cur != NULL; cur = cur->ai_next) {
if (cur->ai_family != AF_INET6) if (cur->ai_family != AF_INET6)
continue; continue;
ptr = &((struct sockaddr_in6 *)(cur->ai_addr))->sin6_addr; ptr = &((struct sockaddr_in6 *)(cur->ai_addr))->sin6_addr;
if (memcmp(ptr, rdata.data, rdata.length) == 0) { if (memcmp(ptr, rdata.data, rdata.length) == 0) {
match = true; match = ISC_TRUE;
break; break;
} }
} }
@@ -309,7 +316,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
addrbuf, sizeof(addrbuf))); addrbuf, sizeof(addrbuf)));
add(namebuf, ERR_EXTRA_AAAA); add(namebuf, ERR_EXTRA_AAAA);
/* XXX950 make fatal for 9.5.0. */ /* XXX950 make fatal for 9.5.0. */
/* answer = false; */ /* answer = ISC_FALSE; */
} }
dns_rdata_reset(&rdata); dns_rdata_reset(&rdata);
result = dns_rdataset_next(aaaa); result = dns_rdataset_next(aaaa);
@@ -320,7 +327,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
* Check that all addresses appear in the glue. * Check that all addresses appear in the glue.
*/ */
if (!logged(namebuf, ERR_MISSING_GLUE)) { if (!logged(namebuf, ERR_MISSING_GLUE)) {
bool missing_glue = false; isc_boolean_t missing_glue = ISC_FALSE;
for (cur = ai; cur != NULL; cur = cur->ai_next) { for (cur = ai; cur != NULL; cur = cur->ai_next) {
switch (cur->ai_family) { switch (cur->ai_family) {
case AF_INET: case AF_INET:
@@ -336,7 +343,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
default: default:
continue; continue;
} }
match = false; match = ISC_FALSE;
if (dns_rdataset_isassociated(rdataset)) if (dns_rdataset_isassociated(rdataset))
result = dns_rdataset_first(rdataset); result = dns_rdataset_first(rdataset);
else else
@@ -344,7 +351,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
while (result == ISC_R_SUCCESS && !match) { while (result == ISC_R_SUCCESS && !match) {
dns_rdataset_current(rdataset, &rdata); dns_rdataset_current(rdataset, &rdata);
if (memcmp(ptr, rdata.data, rdata.length) == 0) if (memcmp(ptr, rdata.data, rdata.length) == 0)
match = true; match = ISC_TRUE;
dns_rdata_reset(&rdata); dns_rdata_reset(&rdata);
result = dns_rdataset_next(rdataset); result = dns_rdataset_next(rdataset);
} }
@@ -355,8 +362,8 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
inet_ntop(cur->ai_family, ptr, inet_ntop(cur->ai_family, ptr,
addrbuf, sizeof(addrbuf))); addrbuf, sizeof(addrbuf)));
/* XXX950 make fatal for 9.5.0. */ /* XXX950 make fatal for 9.5.0. */
/* answer = false; */ /* answer = ISC_FALSE; */
missing_glue = true; missing_glue = ISC_TRUE;
} }
} }
if (missing_glue) if (missing_glue)
@@ -364,16 +371,20 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
} }
freeaddrinfo(ai); freeaddrinfo(ai);
return (answer); return (answer);
#else
return (ISC_TRUE);
#endif
} }
static bool static isc_boolean_t
checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) { checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
#ifdef USE_GETADDRINFO
struct addrinfo hints, *ai, *cur; struct addrinfo hints, *ai, *cur;
char namebuf[DNS_NAME_FORMATSIZE + 1]; char namebuf[DNS_NAME_FORMATSIZE + 1];
char ownerbuf[DNS_NAME_FORMATSIZE]; char ownerbuf[DNS_NAME_FORMATSIZE];
int result; int result;
int level = ISC_LOG_ERROR; int level = ISC_LOG_ERROR;
bool answer = true; isc_boolean_t answer = ISC_TRUE;
memset(&hints, 0, sizeof(hints)); memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_CANONNAME; hints.ai_flags = AI_CANONNAME;
@@ -417,7 +428,7 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
add(namebuf, ERR_IS_MXCNAME); add(namebuf, ERR_IS_MXCNAME);
} }
if (level == ISC_LOG_ERROR) if (level == ISC_LOG_ERROR)
answer = false; answer = ISC_FALSE;
} }
} }
freeaddrinfo(ai); freeaddrinfo(ai);
@@ -435,7 +446,7 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
add(namebuf, ERR_NO_ADDRESSES); add(namebuf, ERR_NO_ADDRESSES);
} }
/* XXX950 make fatal for 9.5.0. */ /* XXX950 make fatal for 9.5.0. */
return (true); return (ISC_TRUE);
default: default:
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) { if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
@@ -444,18 +455,22 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
namebuf, gai_strerror(result)); namebuf, gai_strerror(result));
add(namebuf, ERR_LOOKUP_FAILURE); add(namebuf, ERR_LOOKUP_FAILURE);
} }
return (true); return (ISC_TRUE);
} }
#else
return (ISC_TRUE);
#endif
} }
static bool static isc_boolean_t
checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) { checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
#ifdef USE_GETADDRINFO
struct addrinfo hints, *ai, *cur; struct addrinfo hints, *ai, *cur;
char namebuf[DNS_NAME_FORMATSIZE + 1]; char namebuf[DNS_NAME_FORMATSIZE + 1];
char ownerbuf[DNS_NAME_FORMATSIZE]; char ownerbuf[DNS_NAME_FORMATSIZE];
int result; int result;
int level = ISC_LOG_ERROR; int level = ISC_LOG_ERROR;
bool answer = true; isc_boolean_t answer = ISC_TRUE;
memset(&hints, 0, sizeof(hints)); memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_CANONNAME; hints.ai_flags = AI_CANONNAME;
@@ -498,7 +513,7 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
add(namebuf, ERR_IS_SRVCNAME); add(namebuf, ERR_IS_SRVCNAME);
} }
if (level == ISC_LOG_ERROR) if (level == ISC_LOG_ERROR)
answer = false; answer = ISC_FALSE;
} }
} }
freeaddrinfo(ai); freeaddrinfo(ai);
@@ -516,7 +531,7 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
add(namebuf, ERR_NO_ADDRESSES); add(namebuf, ERR_NO_ADDRESSES);
} }
/* XXX950 make fatal for 9.5.0. */ /* XXX950 make fatal for 9.5.0. */
return (true); return (ISC_TRUE);
default: default:
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) { if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
@@ -525,8 +540,11 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
namebuf, gai_strerror(result)); namebuf, gai_strerror(result));
add(namebuf, ERR_LOOKUP_FAILURE); add(namebuf, ERR_LOOKUP_FAILURE);
} }
return (true); return (ISC_TRUE);
} }
#else
return (ISC_TRUE);
#endif
} }
isc_result_t isc_result_t
@@ -632,7 +650,7 @@ check_ttls(dns_zone_t *zone, dns_ttl_t maxttl) {
if (dbiter != NULL) if (dbiter != NULL)
dns_dbiterator_destroy(&dbiter); dns_dbiterator_destroy(&dbiter);
if (version != NULL) if (version != NULL)
dns_db_closeversion(db, &version, false); dns_db_closeversion(db, &version, ISC_FALSE);
if (db != NULL) if (db != NULL)
dns_db_detach(&db); dns_db_detach(&db);
@@ -679,7 +697,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
CHECK(dns_rdataclass_fromtext(&rdclass, &region)); CHECK(dns_rdataclass_fromtext(&rdclass, &region));
dns_zone_setclass(zone, rdclass); dns_zone_setclass(zone, rdclass);
dns_zone_setoption(zone, zone_options, true); dns_zone_setoption(zone, zone_options, ISC_TRUE);
dns_zone_setoption(zone, DNS_ZONEOPT_NOMERGE, nomerge); dns_zone_setoption(zone, DNS_ZONEOPT_NOMERGE, nomerge);
dns_zone_setmaxttl(zone, maxttl); dns_zone_setmaxttl(zone, maxttl);
@@ -691,7 +709,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
if (dochecksrv) if (dochecksrv)
dns_zone_setchecksrv(zone, checksrv); dns_zone_setchecksrv(zone, checksrv);
CHECK(dns_zone_load(zone, false)); CHECK(dns_zone_load(zone));
/* /*
* When loading map files we can't catch oversize TTLs during * When loading map files we can't catch oversize TTLs during
@@ -716,7 +734,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
isc_result_t isc_result_t
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename, dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
dns_masterformat_t fileformat, const dns_master_style_t *style, dns_masterformat_t fileformat, const dns_master_style_t *style,
const uint32_t rawversion) const isc_uint32_t rawversion)
{ {
isc_result_t result; isc_result_t result;
FILE *output = stdout; FILE *output = stdout;
@@ -771,3 +789,4 @@ DestroySockets(void) {
WSACleanup(); WSACleanup();
} }
#endif #endif
+5 -8
View File
@@ -15,9 +15,6 @@
/*! \file */ /*! \file */
#include <inttypes.h>
#include <stdbool.h>
#include <isc/lang.h> #include <isc/lang.h>
#include <isc/stdio.h> #include <isc/stdio.h>
#include <isc/types.h> #include <isc/types.h>
@@ -39,7 +36,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
isc_result_t isc_result_t
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename, dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
dns_masterformat_t fileformat, const dns_master_style_t *style, dns_masterformat_t fileformat, const dns_master_style_t *style,
const uint32_t rawversion); const isc_uint32_t rawversion);
#ifdef _WIN32 #ifdef _WIN32
void InitSockets(void); void InitSockets(void);
@@ -48,10 +45,10 @@ void DestroySockets(void);
extern int debug; extern int debug;
extern const char *journal; extern const char *journal;
extern bool nomerge; extern isc_boolean_t nomerge;
extern bool docheckmx; extern isc_boolean_t docheckmx;
extern bool docheckns; extern isc_boolean_t docheckns;
extern bool dochecksrv; extern isc_boolean_t dochecksrv;
extern dns_zoneopt_t zone_options; extern dns_zoneopt_t zone_options;
ISC_LANG_ENDDECLS ISC_LANG_ENDDECLS
+22 -23
View File
@@ -15,7 +15,6 @@
#include <config.h> #include <config.h>
#include <errno.h> #include <errno.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
@@ -92,18 +91,18 @@ directory_callback(const char *clausename, const cfg_obj_t *obj, void *arg) {
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }
static bool static isc_boolean_t
get_maps(const cfg_obj_t **maps, const char *name, const cfg_obj_t **obj) { get_maps(const cfg_obj_t **maps, const char *name, const cfg_obj_t **obj) {
int i; int i;
for (i = 0;; i++) { for (i = 0;; i++) {
if (maps[i] == NULL) if (maps[i] == NULL)
return (false); return (ISC_FALSE);
if (cfg_map_get(maps[i], name, obj) == ISC_R_SUCCESS) if (cfg_map_get(maps[i], name, obj) == ISC_R_SUCCESS)
return (true); return (ISC_TRUE);
} }
} }
static bool static isc_boolean_t
get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) { get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
const cfg_listelt_t *element; const cfg_listelt_t *element;
const cfg_obj_t *checknames; const cfg_obj_t *checknames;
@@ -114,14 +113,14 @@ get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
for (i = 0;; i++) { for (i = 0;; i++) {
if (maps[i] == NULL) if (maps[i] == NULL)
return (false); return (ISC_FALSE);
checknames = NULL; checknames = NULL;
result = cfg_map_get(maps[i], "check-names", &checknames); result = cfg_map_get(maps[i], "check-names", &checknames);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
continue; continue;
if (checknames != NULL && !cfg_obj_islist(checknames)) { if (checknames != NULL && !cfg_obj_islist(checknames)) {
*obj = checknames; *obj = checknames;
return (true); return (ISC_TRUE);
} }
for (element = cfg_list_first(checknames); for (element = cfg_list_first(checknames);
element != NULL; element != NULL;
@@ -136,7 +135,7 @@ get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
continue; continue;
} }
*obj = cfg_tuple_get(value, "mode"); *obj = cfg_tuple_get(value, "mode");
return (true); return (ISC_TRUE);
} }
} }
} }
@@ -169,7 +168,7 @@ configure_hint(const char *zfile, const char *zclass, isc_mem_t *mctx) {
static isc_result_t static isc_result_t
configure_zone(const char *vclass, const char *view, configure_zone(const char *vclass, const char *view,
const cfg_obj_t *zconfig, const cfg_obj_t *vconfig, const cfg_obj_t *zconfig, const cfg_obj_t *vconfig,
const cfg_obj_t *config, isc_mem_t *mctx, bool list) const cfg_obj_t *config, isc_mem_t *mctx, isc_boolean_t list)
{ {
int i = 0; int i = 0;
isc_result_t result; isc_result_t result;
@@ -421,7 +420,7 @@ configure_zone(const char *vclass, const char *view,
/*% configure a view */ /*% configure a view */
static isc_result_t static isc_result_t
configure_view(const char *vclass, const char *view, const cfg_obj_t *config, configure_view(const char *vclass, const char *view, const cfg_obj_t *config,
const cfg_obj_t *vconfig, isc_mem_t *mctx, bool list) const cfg_obj_t *vconfig, isc_mem_t *mctx, isc_boolean_t list)
{ {
const cfg_listelt_t *element; const cfg_listelt_t *element;
const cfg_obj_t *voptions; const cfg_obj_t *voptions;
@@ -470,7 +469,7 @@ config_getclass(const cfg_obj_t *classobj, dns_rdataclass_t defclass,
/*% load zones from the configuration */ /*% load zones from the configuration */
static isc_result_t static isc_result_t
load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx, load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx,
bool list_zones) isc_boolean_t list_zones)
{ {
const cfg_listelt_t *element; const cfg_listelt_t *element;
const cfg_obj_t *views; const cfg_obj_t *views;
@@ -538,12 +537,12 @@ main(int argc, char **argv) {
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
isc_result_t result; isc_result_t result;
int exit_status = 0; int exit_status = 0;
bool load_zones = false; isc_boolean_t load_zones = ISC_FALSE;
bool list_zones = false; isc_boolean_t list_zones = ISC_FALSE;
bool print = false; isc_boolean_t print = ISC_FALSE;
unsigned int flags = 0; unsigned int flags = 0;
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
/* /*
* Process memory debugging argument first. * Process memory debugging argument first.
@@ -567,7 +566,7 @@ main(int argc, char **argv) {
break; break;
} }
} }
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS); RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
@@ -578,11 +577,11 @@ main(int argc, char **argv) {
break; break;
case 'j': case 'j':
nomerge = false; nomerge = ISC_FALSE;
break; break;
case 'l': case 'l':
list_zones = true; list_zones = ISC_TRUE;
break; break;
case 'm': case 'm':
@@ -598,7 +597,7 @@ main(int argc, char **argv) {
break; break;
case 'p': case 'p':
print = true; print = ISC_TRUE;
break; break;
case 'v': case 'v':
@@ -610,10 +609,10 @@ main(int argc, char **argv) {
break; break;
case 'z': case 'z':
load_zones = true; load_zones = ISC_TRUE;
docheckmx = false; docheckmx = ISC_FALSE;
docheckns = false; docheckns = ISC_FALSE;
dochecksrv = false; dochecksrv = ISC_FALSE;
break; break;
case '?': case '?':
+23 -25
View File
@@ -14,9 +14,7 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <inttypes.h>
#include <isc/app.h> #include <isc/app.h>
#include <isc/commandline.h> #include <isc/commandline.h>
@@ -108,10 +106,10 @@ main(int argc, char **argv) {
dns_masterformat_t inputformat = dns_masterformat_text; dns_masterformat_t inputformat = dns_masterformat_text;
dns_masterformat_t outputformat = dns_masterformat_text; dns_masterformat_t outputformat = dns_masterformat_text;
dns_masterrawheader_t header; dns_masterrawheader_t header;
uint32_t rawversion = 1, serialnum = 0; isc_uint32_t rawversion = 1, serialnum = 0;
dns_ttl_t maxttl = 0; dns_ttl_t maxttl = 0;
bool snset = false; isc_boolean_t snset = ISC_FALSE;
bool logdump = false; isc_boolean_t logdump = ISC_FALSE;
FILE *errout = stdout; FILE *errout = stdout;
char *endp; char *endp;
@@ -161,7 +159,7 @@ main(int argc, char **argv) {
#define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0) #define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0)
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((c = isc_commandline_parse(argc, argv, while ((c = isc_commandline_parse(argc, argv,
"c:df:hi:jJ:k:L:l:m:n:qr:s:t:o:vw:DF:M:S:T:W:")) "c:df:hi:jJ:k:L:l:m:n:qr:s:t:o:vw:DF:M:S:T:W:"))
@@ -179,33 +177,33 @@ main(int argc, char **argv) {
if (ARGCMP("full")) { if (ARGCMP("full")) {
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY | zone_options |= DNS_ZONEOPT_CHECKINTEGRITY |
DNS_ZONEOPT_CHECKSIBLING; DNS_ZONEOPT_CHECKSIBLING;
docheckmx = true; docheckmx = ISC_TRUE;
docheckns = true; docheckns = ISC_TRUE;
dochecksrv = true; dochecksrv = ISC_TRUE;
} else if (ARGCMP("full-sibling")) { } else if (ARGCMP("full-sibling")) {
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY; zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING; zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
docheckmx = true; docheckmx = ISC_TRUE;
docheckns = true; docheckns = ISC_TRUE;
dochecksrv = true; dochecksrv = ISC_TRUE;
} else if (ARGCMP("local")) { } else if (ARGCMP("local")) {
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY; zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
zone_options |= DNS_ZONEOPT_CHECKSIBLING; zone_options |= DNS_ZONEOPT_CHECKSIBLING;
docheckmx = false; docheckmx = ISC_FALSE;
docheckns = false; docheckns = ISC_FALSE;
dochecksrv = false; dochecksrv = ISC_FALSE;
} else if (ARGCMP("local-sibling")) { } else if (ARGCMP("local-sibling")) {
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY; zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING; zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
docheckmx = false; docheckmx = ISC_FALSE;
docheckns = false; docheckns = ISC_FALSE;
dochecksrv = false; dochecksrv = ISC_FALSE;
} else if (ARGCMP("none")) { } else if (ARGCMP("none")) {
zone_options &= ~DNS_ZONEOPT_CHECKINTEGRITY; zone_options &= ~DNS_ZONEOPT_CHECKINTEGRITY;
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING; zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
docheckmx = false; docheckmx = ISC_FALSE;
docheckns = false; docheckns = ISC_FALSE;
dochecksrv = false; dochecksrv = ISC_FALSE;
} else { } else {
fprintf(stderr, "invalid argument to -i: %s\n", fprintf(stderr, "invalid argument to -i: %s\n",
isc_commandline_argument); isc_commandline_argument);
@@ -222,12 +220,12 @@ main(int argc, char **argv) {
break; break;
case 'j': case 'j':
nomerge = false; nomerge = ISC_FALSE;
break; break;
case 'J': case 'J':
journal = isc_commandline_argument; journal = isc_commandline_argument;
nomerge = false; nomerge = ISC_FALSE;
break; break;
case 'k': case 'k':
@@ -248,7 +246,7 @@ main(int argc, char **argv) {
break; break;
case 'L': case 'L':
snset = true; snset = ISC_TRUE;
endp = NULL; endp = NULL;
serialnum = strtol(isc_commandline_argument, &endp, 0); serialnum = strtol(isc_commandline_argument, &endp, 0);
if (*endp != '\0') { if (*endp != '\0') {
@@ -507,7 +505,7 @@ main(int argc, char **argv) {
strcmp(output_filename, "/dev/fd/1") == 0 || strcmp(output_filename, "/dev/fd/1") == 0 ||
strcmp(output_filename, "/dev/stdout") == 0)) { strcmp(output_filename, "/dev/stdout") == 0)) {
errout = stderr; errout = stderr;
logdump = false; logdump = ISC_FALSE;
} }
if (isc_commandline_index + 2 != argc) if (isc_commandline_index + 2 != argc)
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -99,7 +99,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>cd ..\..\..\Build\$(Configuration) <Command>cd ..\..\..\Build\$(Configuration)
@@ -105,7 +105,7 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
+9 -9
View File
@@ -19,15 +19,15 @@
#include <config.h> #include <config.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h>
#include <isc/assertions.h> #include <isc/assertions.h>
#include <isc/base64.h> #include <isc/base64.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/commandline.h> #include <isc/commandline.h>
#include <isc/file.h> #include <isc/file.h>
#include <isc/keyboard.h>
#include <isc/mem.h> #include <isc/mem.h>
#include <isc/net.h> #include <isc/net.h>
#include <isc/print.h> #include <isc/print.h>
@@ -56,7 +56,7 @@
static char program[256]; static char program[256];
const char *progname; const char *progname;
static enum { progmode_keygen, progmode_confgen} progmode; static enum { progmode_keygen, progmode_confgen} progmode;
bool verbose = false; /* needed by util.c but not used here */ isc_boolean_t verbose = ISC_FALSE; /* needed by util.c but not used here */
ISC_PLATFORM_NORETURN_PRE static void ISC_PLATFORM_NORETURN_PRE static void
usage(int status) ISC_PLATFORM_NORETURN_POST; usage(int status) ISC_PLATFORM_NORETURN_POST;
@@ -87,8 +87,8 @@ Usage:\n\
int int
main(int argc, char **argv) { main(int argc, char **argv) {
isc_result_t result = ISC_R_SUCCESS; isc_result_t result = ISC_R_SUCCESS;
bool show_final_mem = false; isc_boolean_t show_final_mem = ISC_FALSE;
bool quiet = false; isc_boolean_t quiet = ISC_FALSE;
isc_buffer_t key_txtbuffer; isc_buffer_t key_txtbuffer;
char key_txtsecret[256]; char key_txtsecret[256];
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
@@ -124,13 +124,13 @@ main(int argc, char **argv) {
if (PROGCMP("tsig-keygen")) { if (PROGCMP("tsig-keygen")) {
progmode = progmode_keygen; progmode = progmode_keygen;
quiet = true; quiet = ISC_TRUE;
} else if (PROGCMP("ddns-confgen")) } else if (PROGCMP("ddns-confgen"))
progmode = progmode_confgen; progmode = progmode_confgen;
else else
INSIST(0); INSIST(0);
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, while ((ch = isc_commandline_parse(argc, argv,
"a:hk:Mmr:qs:y:z:")) != -1) { "a:hk:Mmr:qs:y:z:")) != -1) {
@@ -155,11 +155,11 @@ main(int argc, char **argv) {
isc_mem_debugging = ISC_MEM_DEBUGTRACE; isc_mem_debugging = ISC_MEM_DEBUGTRACE;
break; break;
case 'm': case 'm':
show_final_mem = true; show_final_mem = ISC_TRUE;
break; break;
case 'q': case 'q':
if (progmode == progmode_confgen) if (progmode == progmode_confgen)
quiet = true; quiet = ISC_TRUE;
else else
usage(1); usage(1);
break; break;
+2
View File
@@ -20,6 +20,7 @@
#include <isc/base64.h> #include <isc/base64.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/file.h> #include <isc/file.h>
#include <isc/keyboard.h>
#include <isc/mem.h> #include <isc/mem.h>
#include <isc/print.h> #include <isc/print.h>
#include <isc/result.h> #include <isc/result.h>
@@ -191,3 +192,4 @@ write_key_file(const char *keyfile, const char *user,
fatal("fclose(%s) failed\n", keyfile); fatal("fclose(%s) failed\n", keyfile);
fprintf(stderr, "wrote key file \"%s\"\n", keyfile); fprintf(stderr, "wrote key file \"%s\"\n", keyfile);
} }
+9 -9
View File
@@ -22,15 +22,15 @@
#include <config.h> #include <config.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h>
#include <isc/assertions.h> #include <isc/assertions.h>
#include <isc/base64.h> #include <isc/base64.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/commandline.h> #include <isc/commandline.h>
#include <isc/file.h> #include <isc/file.h>
#include <isc/keyboard.h>
#include <isc/mem.h> #include <isc/mem.h>
#include <isc/net.h> #include <isc/net.h>
#include <isc/print.h> #include <isc/print.h>
@@ -57,7 +57,7 @@
static char program[256]; static char program[256];
const char *progname; const char *progname;
bool verbose = false; isc_boolean_t verbose = ISC_FALSE;
const char *keyfile, *keydef; const char *keyfile, *keydef;
@@ -87,7 +87,7 @@ Usage:\n\
int int
main(int argc, char **argv) { main(int argc, char **argv) {
bool show_final_mem = false; isc_boolean_t show_final_mem = ISC_FALSE;
isc_buffer_t key_txtbuffer; isc_buffer_t key_txtbuffer;
char key_txtsecret[256]; char key_txtsecret[256];
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
@@ -104,7 +104,7 @@ main(int argc, char **argv) {
struct in6_addr addr6_dummy; struct in6_addr addr6_dummy;
char *chrootdir = NULL; char *chrootdir = NULL;
char *user = NULL; char *user = NULL;
bool keyonly = false; isc_boolean_t keyonly = ISC_FALSE;
int len; int len;
keydef = keyfile = RNDC_KEYFILE; keydef = keyfile = RNDC_KEYFILE;
@@ -119,14 +119,14 @@ main(int argc, char **argv) {
serveraddr = DEFAULT_SERVER; serveraddr = DEFAULT_SERVER;
port = DEFAULT_PORT; port = DEFAULT_PORT;
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, while ((ch = isc_commandline_parse(argc, argv,
"aA:b:c:hk:Mmp:r:s:t:u:Vy")) != -1) "aA:b:c:hk:Mmp:r:s:t:u:Vy")) != -1)
{ {
switch (ch) { switch (ch) {
case 'a': case 'a':
keyonly = true; keyonly = ISC_TRUE;
break; break;
case 'A': case 'A':
algname = isc_commandline_argument; algname = isc_commandline_argument;
@@ -153,7 +153,7 @@ main(int argc, char **argv) {
break; break;
case 'm': case 'm':
show_final_mem = true; show_final_mem = ISC_TRUE;
break; break;
case 'p': case 'p':
port = strtol(isc_commandline_argument, &p, 10); port = strtol(isc_commandline_argument, &p, 10);
@@ -177,7 +177,7 @@ main(int argc, char **argv) {
user = isc_commandline_argument; user = isc_commandline_argument;
break; break;
case 'V': case 'V':
verbose = true; verbose = ISC_TRUE;
break; break;
case '?': case '?':
if (isc_commandline_option != '?') { if (isc_commandline_option != '?') {
+2 -2
View File
@@ -15,15 +15,15 @@
#include <config.h> #include <config.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <isc/boolean.h>
#include <isc/print.h> #include <isc/print.h>
#include "util.h" #include "util.h"
extern bool verbose; extern isc_boolean_t verbose;
extern const char *progname; extern const char *progname;
void void
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>cd ..\..\..\Build\$(Configuration) <Command>cd ..\..\..\Build\$(Configuration)
@@ -106,7 +106,7 @@ copy /Y ddns-confgen.ilk tsig-keygen.ilk
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>cd ..\..\..\Build\$(Configuration) <Command>cd ..\..\..\Build\$(Configuration)
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+74 -76
View File
@@ -24,9 +24,7 @@
#include <netdb.h> #include <netdb.h>
#endif #endif
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <inttypes.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
@@ -96,40 +94,40 @@ static const char *port = "53";
static isc_sockaddr_t *srcaddr4 = NULL, *srcaddr6 = NULL; static isc_sockaddr_t *srcaddr4 = NULL, *srcaddr6 = NULL;
static isc_sockaddr_t a4, a6; static isc_sockaddr_t a4, a6;
static char *curqname = NULL, *qname = NULL; static char *curqname = NULL, *qname = NULL;
static bool classset = false; static isc_boolean_t classset = ISC_FALSE;
static dns_rdatatype_t qtype = dns_rdatatype_none; static dns_rdatatype_t qtype = dns_rdatatype_none;
static bool typeset = false; static isc_boolean_t typeset = ISC_FALSE;
static unsigned int styleflags = 0; static unsigned int styleflags = 0;
static uint32_t splitwidth = 0xffffffff; static isc_uint32_t splitwidth = 0xffffffff;
static bool static isc_boolean_t
showcomments = true, showcomments = ISC_TRUE,
showdnssec = true, showdnssec = ISC_TRUE,
showtrust = true, showtrust = ISC_TRUE,
rrcomments = true, rrcomments = ISC_TRUE,
noclass = false, noclass = ISC_FALSE,
nocrypto = false, nocrypto = ISC_FALSE,
nottl = false, nottl = ISC_FALSE,
multiline = false, multiline = ISC_FALSE,
short_form = false, short_form = ISC_FALSE,
print_unknown_format = false; print_unknown_format = ISC_FALSE;
static bool static isc_boolean_t
resolve_trace = false, resolve_trace = ISC_FALSE,
validator_trace = false, validator_trace = ISC_FALSE,
message_trace = false; message_trace = ISC_FALSE;
static bool static isc_boolean_t
use_ipv4 = true, use_ipv4 = ISC_TRUE,
use_ipv6 = true; use_ipv6 = ISC_TRUE;
static bool static isc_boolean_t
cdflag = false, cdflag = ISC_FALSE,
no_sigs = false, no_sigs = ISC_FALSE,
root_validation = true, root_validation = ISC_TRUE,
dlv_validation = true; dlv_validation = ISC_TRUE;
static bool use_tcp = false; static isc_boolean_t use_tcp = ISC_FALSE;
static char *anchorfile = NULL; static char *anchorfile = NULL;
static char *trust_anchor = NULL; static char *trust_anchor = NULL;
@@ -146,10 +144,10 @@ static char anchortext[] = MANAGED_KEYS;
* Static function prototypes * Static function prototypes
*/ */
static isc_result_t static isc_result_t
get_reverse(char *reverse, size_t len, char *value, bool strict); get_reverse(char *reverse, size_t len, char *value, isc_boolean_t strict);
static isc_result_t static isc_result_t
parse_uint(uint32_t *uip, const char *value, uint32_t max, parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
const char *desc); const char *desc);
static void static void
@@ -410,7 +408,7 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
{ {
isc_result_t result = ISC_R_SUCCESS; isc_result_t result = ISC_R_SUCCESS;
static dns_trust_t trust; static dns_trust_t trust;
static bool first = true; static isc_boolean_t first = ISC_TRUE;
isc_buffer_t target; isc_buffer_t target;
isc_region_t r; isc_region_t r;
char *t = NULL; char *t = NULL;
@@ -432,7 +430,7 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
putchar('\n'); putchar('\n');
print_status(rdataset); print_status(rdataset);
trust = rdataset->trust; trust = rdataset->trust;
first = false; first = ISC_FALSE;
} }
do { do {
@@ -568,7 +566,7 @@ convert_name(dns_fixedname_t *fn, dns_name_t **name, const char *text) {
static isc_result_t static isc_result_t
key_fromconfig(const cfg_obj_t *key, dns_client_t *client) { key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
dns_rdata_dnskey_t keystruct; dns_rdata_dnskey_t keystruct;
uint32_t flags, proto, alg; isc_uint32_t flags, proto, alg;
const char *keystr, *keynamestr; const char *keystr, *keynamestr;
unsigned char keydata[4096]; unsigned char keydata[4096];
isc_buffer_t keydatabuf; isc_buffer_t keydatabuf;
@@ -578,7 +576,7 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
dns_fixedname_t fkeyname; dns_fixedname_t fkeyname;
dns_name_t *keyname; dns_name_t *keyname;
isc_result_t result; isc_result_t result;
bool match_root = false, match_dlv = false; isc_boolean_t match_root = ISC_FALSE, match_dlv = ISC_FALSE;
keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name")); keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name"));
CHECK(convert_name(&fkeyname, &keyname, keynamestr)); CHECK(convert_name(&fkeyname, &keyname, keynamestr));
@@ -623,9 +621,9 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
if (alg > 0xff) if (alg > 0xff)
CHECK(ISC_R_RANGE); CHECK(ISC_R_RANGE);
keystruct.flags = (uint16_t)flags; keystruct.flags = (isc_uint16_t)flags;
keystruct.protocol = (uint8_t)proto; keystruct.protocol = (isc_uint8_t)proto;
keystruct.algorithm = (uint8_t)alg; keystruct.algorithm = (isc_uint8_t)alg;
isc_buffer_init(&keydatabuf, keydata, sizeof(keydata)); isc_buffer_init(&keydatabuf, keydata, sizeof(keydata));
isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata)); isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata));
@@ -780,7 +778,7 @@ addserver(dns_client_t *client) {
struct in6_addr in6; struct in6_addr in6;
isc_sockaddr_t *sa; isc_sockaddr_t *sa;
isc_sockaddrlist_t servers; isc_sockaddrlist_t servers;
uint32_t destport; isc_uint32_t destport;
isc_result_t result; isc_result_t result;
dns_name_t *name = NULL; dns_name_t *name = NULL;
@@ -871,7 +869,7 @@ findserver(dns_client_t *client) {
irs_resconf_t *resconf = NULL; irs_resconf_t *resconf = NULL;
isc_sockaddrlist_t *nameservers; isc_sockaddrlist_t *nameservers;
isc_sockaddr_t *sa, *next; isc_sockaddr_t *sa, *next;
uint32_t destport; isc_uint32_t destport;
result = parse_uint(&destport, port, 0xffff, "port"); result = parse_uint(&destport, port, 0xffff, "port");
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
@@ -946,9 +944,9 @@ cleanup:
} }
static isc_result_t static isc_result_t
parse_uint(uint32_t *uip, const char *value, uint32_t max, parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
const char *desc) { const char *desc) {
uint32_t n; isc_uint32_t n;
isc_result_t result = isc_parse_uint32(&n, value, 10); isc_result_t result = isc_parse_uint32(&n, value, 10);
if (result == ISC_R_SUCCESS && n > max) if (result == ISC_R_SUCCESS && n > max)
result = ISC_R_RANGE; result = ISC_R_RANGE;
@@ -965,7 +963,7 @@ static void
plus_option(char *option) { plus_option(char *option) {
isc_result_t result; isc_result_t result;
char *cmd, *value, *last = NULL; char *cmd, *value, *last = NULL;
bool state = true; isc_boolean_t state = ISC_TRUE;
INSIST(option != NULL); INSIST(option != NULL);
@@ -976,7 +974,7 @@ plus_option(char *option) {
} }
if (strncasecmp(cmd, "no", 2)==0) { if (strncasecmp(cmd, "no", 2)==0) {
cmd += 2; cmd += 2;
state = false; state = ISC_FALSE;
} }
value = strtok_r(NULL, "\0", &last); value = strtok_r(NULL, "\0", &last);
@@ -1003,7 +1001,7 @@ plus_option(char *option) {
break; break;
case 'l': /* class */ case 'l': /* class */
FULLCHECK("class"); FULLCHECK("class");
noclass = !state; noclass = ISC_TF(!state);
break; break;
case 'o': /* comments */ case 'o': /* comments */
FULLCHECK("comments"); FULLCHECK("comments");
@@ -1011,7 +1009,7 @@ plus_option(char *option) {
break; break;
case 'r': /* crypto */ case 'r': /* crypto */
FULLCHECK("crypto"); FULLCHECK("crypto");
nocrypto = !state; nocrypto = ISC_TF(!state);
break; break;
default: default:
goto invalid_option; goto invalid_option;
@@ -1084,10 +1082,10 @@ plus_option(char *option) {
FULLCHECK("short"); FULLCHECK("short");
short_form = state; short_form = state;
if (short_form) { if (short_form) {
multiline = false; multiline = ISC_FALSE;
showcomments = false; showcomments = ISC_FALSE;
showtrust = false; showtrust = ISC_FALSE;
showdnssec = false; showdnssec = ISC_FALSE;
} }
break; break;
case 'p': /* split */ case 'p': /* split */
@@ -1139,7 +1137,7 @@ plus_option(char *option) {
break; break;
case 't': /* ttl */ case 't': /* ttl */
FULLCHECK("ttl"); FULLCHECK("ttl");
nottl = !state; nottl = ISC_TF(!state);
break; break;
default: default:
goto invalid_option; goto invalid_option;
@@ -1167,11 +1165,11 @@ plus_option(char *option) {
* options: "46a:b:c:d:himp:q:t:vx:"; * options: "46a:b:c:d:himp:q:t:vx:";
*/ */
static const char *single_dash_opts = "46himv"; static const char *single_dash_opts = "46himv";
static bool static isc_boolean_t
dash_option(char *option, char *next, bool *open_type_class) { dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
char opt, *value; char opt, *value;
isc_result_t result; isc_result_t result;
bool value_from_next; isc_boolean_t value_from_next;
isc_textregion_t tr; isc_textregion_t tr;
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
@@ -1179,7 +1177,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
struct in_addr in4; struct in_addr in4;
struct in6_addr in6; struct in6_addr in6;
in_port_t srcport; in_port_t srcport;
uint32_t num; isc_uint32_t num;
char *hash; char *hash;
while (strpbrk(option, single_dash_opts) == &option[0]) { while (strpbrk(option, single_dash_opts) == &option[0]) {
@@ -1195,7 +1193,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
fatal("IPv4 networking not available"); fatal("IPv4 networking not available");
if (use_ipv6) { if (use_ipv6) {
isc_net_disableipv6(); isc_net_disableipv6();
use_ipv6 = false; use_ipv6 = ISC_FALSE;
} }
break; break;
case '6': case '6':
@@ -1203,7 +1201,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
fatal("IPv6 networking not available"); fatal("IPv6 networking not available");
if (use_ipv4) { if (use_ipv4) {
isc_net_disableipv4(); isc_net_disableipv4();
use_ipv4 = false; use_ipv4 = ISC_FALSE;
} }
break; break;
case 'h': case 'h':
@@ -1211,9 +1209,9 @@ dash_option(char *option, char *next, bool *open_type_class) {
exit(0); exit(0);
/* NOTREACHED */ /* NOTREACHED */
case 'i': case 'i':
no_sigs = true; no_sigs = ISC_TRUE;
dlv_validation = false; dlv_validation = ISC_FALSE;
root_validation = false; root_validation = ISC_FALSE;
break; break;
case 'm': case 'm':
/* handled in preparse_args() */ /* handled in preparse_args() */
@@ -1228,14 +1226,14 @@ dash_option(char *option, char *next, bool *open_type_class) {
if (strlen(option) > 1U) if (strlen(option) > 1U)
option = &option[1]; option = &option[1];
else else
return (false); return (ISC_FALSE);
} }
opt = option[0]; opt = option[0];
if (strlen(option) > 1U) { if (strlen(option) > 1U) {
value_from_next = false; value_from_next = ISC_FALSE;
value = &option[1]; value = &option[1];
} else { } else {
value_from_next = true; value_from_next = ISC_TRUE;
value = next; value = next;
} }
if (value == NULL) if (value == NULL)
@@ -1281,13 +1279,13 @@ dash_option(char *option, char *next, bool *open_type_class) {
if (classset) if (classset)
warn("extra query class"); warn("extra query class");
*open_type_class = false; *open_type_class = ISC_FALSE;
tr.base = value; tr.base = value;
tr.length = strlen(value); tr.length = strlen(value);
result = dns_rdataclass_fromtext(&rdclass, result = dns_rdataclass_fromtext(&rdclass,
(isc_textregion_t *)&tr); (isc_textregion_t *)&tr);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
classset = true; classset = ISC_TRUE;
else if (rdclass != dns_rdataclass_in) else if (rdclass != dns_rdataclass_in)
warn("ignoring non-IN query class"); warn("ignoring non-IN query class");
else else
@@ -1312,7 +1310,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
fatal("out of memory"); fatal("out of memory");
return (value_from_next); return (value_from_next);
case 't': case 't':
*open_type_class = false; *open_type_class = ISC_FALSE;
tr.base = value; tr.base = value;
tr.length = strlen(value); tr.length = strlen(value);
result = dns_rdatatype_fromtext(&rdtype, result = dns_rdatatype_fromtext(&rdtype,
@@ -1324,13 +1322,13 @@ dash_option(char *option, char *next, bool *open_type_class) {
rdtype == dns_rdatatype_axfr) rdtype == dns_rdatatype_axfr)
fatal("Transfer not supported"); fatal("Transfer not supported");
qtype = rdtype; qtype = rdtype;
typeset = true; typeset = ISC_TRUE;
} else } else
warn("ignoring invalid type"); warn("ignoring invalid type");
return (value_from_next); return (value_from_next);
case 'x': case 'x':
result = get_reverse(textname, sizeof(textname), value, result = get_reverse(textname, sizeof(textname), value,
false); ISC_FALSE);
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
if (curqname != NULL) { if (curqname != NULL) {
isc_mem_free(mctx, curqname); isc_mem_free(mctx, curqname);
@@ -1342,7 +1340,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
if (typeset) if (typeset)
warn("extra query type"); warn("extra query type");
qtype = dns_rdatatype_ptr; qtype = dns_rdatatype_ptr;
typeset = true; typeset = ISC_TRUE;
} else { } else {
fprintf(stderr, "Invalid IP address %s\n", value); fprintf(stderr, "Invalid IP address %s\n", value);
exit(1); exit(1);
@@ -1354,7 +1352,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
usage(); usage();
} }
/* NOTREACHED */ /* NOTREACHED */
return (false); return (ISC_FALSE);
} }
/* /*
@@ -1363,7 +1361,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
*/ */
static void static void
preparse_args(int argc, char **argv) { preparse_args(int argc, char **argv) {
bool ipv4only = false, ipv6only = false; isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
char *option; char *option;
for (argc--, argv++; argc > 0; argc--, argv++) { for (argc--, argv++; argc > 0; argc--, argv++) {
@@ -1380,13 +1378,13 @@ preparse_args(int argc, char **argv) {
if (ipv6only) { if (ipv6only) {
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
} }
ipv4only = true; ipv4only = ISC_TRUE;
break; break;
case '6': case '6':
if (ipv4only) { if (ipv4only) {
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
} }
ipv6only = true; ipv6only = ISC_TRUE;
break; break;
} }
option = &option[1]; option = &option[1];
@@ -1406,7 +1404,7 @@ parse_args(int argc, char **argv) {
isc_textregion_t tr; isc_textregion_t tr;
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
bool open_type_class = true; isc_boolean_t open_type_class = ISC_TRUE;
for (; argc > 0; argc--, argv++) { for (; argc > 0; argc--, argv++) {
if (argv[0][0] == '@') { if (argv[0][0] == '@') {
@@ -1445,7 +1443,7 @@ parse_args(int argc, char **argv) {
rdtype == dns_rdatatype_axfr) rdtype == dns_rdatatype_axfr)
fatal("Transfer not supported"); fatal("Transfer not supported");
qtype = rdtype; qtype = rdtype;
typeset = true; typeset = ISC_TRUE;
continue; continue;
} }
result = dns_rdataclass_fromtext(&rdclass, result = dns_rdataclass_fromtext(&rdclass,
@@ -1514,7 +1512,7 @@ reverse_octets(const char *in, char **p, char *end) {
} }
static isc_result_t static isc_result_t
get_reverse(char *reverse, size_t len, char *value, bool strict) { get_reverse(char *reverse, size_t len, char *value, isc_boolean_t strict) {
int r; int r;
isc_result_t result; isc_result_t result;
isc_netaddr_t addr; isc_netaddr_t addr;
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+3 -3
View File
@@ -101,12 +101,12 @@ install:: dig@EXEEXT@ host@EXEEXT@ nslookup@EXEEXT@ installdirs
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} \
nslookup@EXEEXT@ ${DESTDIR}${bindir} nslookup@EXEEXT@ ${DESTDIR}${bindir}
for m in ${MANPAGES}; do \ for m in ${MANPAGES}; do \
${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man1 || exit 1; \ ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man1; \
done done
uninstall:: uninstall::
for m in ${MANPAGES}; do \ for m in ${MANPAGES}; do \
rm -f ${DESTDIR}${mandir}/man1/$$m || exit 1; \ rm -f ${DESTDIR}${mandir}/man1/$$m ; \
done done
${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${bindir}/nslookup@EXEEXT@ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${bindir}/nslookup@EXEEXT@
${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${bindir}/host@EXEEXT@ ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${bindir}/host@EXEEXT@
+145 -165
View File
@@ -12,9 +12,6 @@
/*! \file */ /*! \file */
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
#include <ctype.h> #include <ctype.h>
@@ -64,10 +61,10 @@ static int addresscount = 0;
static char domainopt[DNS_NAME_MAXTEXT]; static char domainopt[DNS_NAME_MAXTEXT];
static char hexcookie[81]; static char hexcookie[81];
static bool short_form = false, printcmd = true, static isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
plusquest = false, pluscomm = false, ip6_int = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
ipv4only = false, ipv6only = false; ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
static uint32_t splitwidth = 0xffffffff; static isc_uint32_t splitwidth = 0xffffffff;
/*% opcode text */ /*% opcode text */
static const char * const opcodetext[] = { static const char * const opcodetext[] = {
@@ -153,6 +150,7 @@ help(void) {
" -b address[#port] (bind to source address/port)\n" " -b address[#port] (bind to source address/port)\n"
" -c class (specify query class)\n" " -c class (specify query class)\n"
" -f filename (batch mode)\n" " -f filename (batch mode)\n"
" -i (use IP6.INT for IPv6 reverse lookups)\n"
" -k keyfile (specify tsig key file)\n" " -k keyfile (specify tsig key file)\n"
" -m (enable memory usage debugging)\n" " -m (enable memory usage debugging)\n"
" -p port (specify port number)\n" " -p port (specify port number)\n"
@@ -192,10 +190,8 @@ help(void) {
" +[no]fail (Don't try next server on SERVFAIL)\n" " +[no]fail (Don't try next server on SERVFAIL)\n"
" +[no]header-only (Send query without a question section)\n" " +[no]header-only (Send query without a question section)\n"
" +[no]identify (ID responders in short answers)\n" " +[no]identify (ID responders in short answers)\n"
#ifdef HAVE_LIBIDN2 " +[no]idnin (Parse IDN names)\n"
" +[no]idnin (Parse IDN names [default=on on tty])\n" " +[no]idnout (Convert IDN response)\n"
" +[no]idnout (Convert IDN response [default=on on tty])\n"
#endif
" +[no]ignore (Don't revert to TCP for TC responses.)\n" " +[no]ignore (Don't revert to TCP for TC responses.)\n"
" +[no]keepalive (Request EDNS TCP keepalive)\n" " +[no]keepalive (Request EDNS TCP keepalive)\n"
" +[no]keepopen (Keep the TCP socket open between queries)\n" " +[no]keepopen (Keep the TCP socket open between queries)\n"
@@ -244,7 +240,7 @@ help(void) {
*/ */
static void static void
received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) { received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
uint64_t diff; isc_uint64_t diff;
time_t tnow; time_t tnow;
struct tm tmnow; struct tm tmnow;
#ifdef WIN32 #ifdef WIN32
@@ -263,9 +259,6 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
else else
printf(";; Query time: %ld msec\n", (long) diff / 1000); printf(";; Query time: %ld msec\n", (long) diff / 1000);
printf(";; SERVER: %s(%s)\n", fromtext, query->servname); printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
if (query->servssldigest != NULL) {
printf(";; DNSoTLS cert digest: %s\n", query->servssldigest);
}
time(&tnow); time(&tnow);
#if !defined(WIN32) #if !defined(WIN32)
(void)localtime_r(&tnow, &tmnow); (void)localtime_r(&tnow, &tmnow);
@@ -288,7 +281,7 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
#endif #endif
if (query->lookup->doing_xfr) { if (query->lookup->doing_xfr) {
printf(";; XFR size: %u records (messages %u, " printf(";; XFR size: %u records (messages %u, "
"bytes %" PRIu64 ")\n", "bytes %" ISC_PRINT_QUADFORMAT "u)\n",
query->rr_count, query->msg_count, query->rr_count, query->msg_count,
query->byte_count); query->byte_count);
} else { } else {
@@ -306,18 +299,18 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
} else if (query->lookup->identify && !short_form) { } else if (query->lookup->identify && !short_form) {
diff = isc_time_microdiff(&query->time_recv, &query->time_sent); diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
if (query->lookup->use_usec) if (query->lookup->use_usec)
printf(";; Received %" PRIu64 " bytes " printf(";; Received %" ISC_PRINT_QUADFORMAT "u bytes "
"from %s(%s) in %ld us\n\n", "from %s(%s) in %ld us\n\n",
query->lookup->doing_xfr query->lookup->doing_xfr
? query->byte_count ? query->byte_count
: (uint64_t)bytes, : (isc_uint64_t)bytes,
fromtext, query->userarg, (long) diff); fromtext, query->userarg, (long) diff);
else else
printf(";; Received %" PRIu64 " bytes " printf(";; Received %" ISC_PRINT_QUADFORMAT "u bytes "
"from %s(%s) in %ld ms\n\n", "from %s(%s) in %ld ms\n\n",
query->lookup->doing_xfr query->lookup->doing_xfr
? query->byte_count ? query->byte_count
: (uint64_t)bytes, : (isc_uint64_t)bytes,
fromtext, query->userarg, (long) diff / 1000); fromtext, query->userarg, (long) diff / 1000);
} }
} }
@@ -339,7 +332,7 @@ trying(char *frm, dig_lookup_t *lookup) {
static isc_result_t static isc_result_t
say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) { say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
isc_result_t result; isc_result_t result;
uint64_t diff; isc_uint64_t diff;
char store[sizeof(" in 18446744073709551616 us.")]; char store[sizeof(" in 18446744073709551616 us.")];
unsigned int styleflags = 0; unsigned int styleflags = 0;
@@ -367,11 +360,10 @@ say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
diff = isc_time_microdiff(&query->time_recv, &query->time_sent); diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
ADD_STRING(buf, " from server "); ADD_STRING(buf, " from server ");
ADD_STRING(buf, query->servname); ADD_STRING(buf, query->servname);
if (query->lookup->use_usec) { if (query->lookup->use_usec)
snprintf(store, sizeof(store), " in %" PRIu64 " us.", diff); snprintf(store, sizeof(store), " in %" ISC_PLATFORM_QUADFORMAT "u us.", diff);
} else { else
snprintf(store, sizeof(store), " in %" PRIu64 " ms.", diff / 1000); snprintf(store, sizeof(store), " in %" ISC_PLATFORM_QUADFORMAT "u ms.", diff / 1000);
}
ADD_STRING(buf, store); ADD_STRING(buf, store);
} }
ADD_STRING(buf, "\n"); ADD_STRING(buf, "\n");
@@ -429,7 +421,7 @@ short_answer(dns_message_t *msg, dns_messagetextflag_t flags,
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }
static bool static isc_boolean_t
isdotlocal(dns_message_t *msg) { isdotlocal(dns_message_t *msg) {
isc_result_t result; isc_result_t result;
static unsigned char local_ndata[] = { "\005local\0" }; static unsigned char local_ndata[] = { "\005local\0" };
@@ -444,16 +436,16 @@ isdotlocal(dns_message_t *msg) {
dns_name_t *name = NULL; dns_name_t *name = NULL;
dns_message_currentname(msg, DNS_SECTION_QUESTION, &name); dns_message_currentname(msg, DNS_SECTION_QUESTION, &name);
if (dns_name_issubdomain(name, &local)) if (dns_name_issubdomain(name, &local))
return (true); return (ISC_TRUE);
} }
return (false); return (ISC_FALSE);
} }
/* /*
* Callback from dighost.c to print the reply from a server * Callback from dighost.c to print the reply from a server
*/ */
static isc_result_t static isc_result_t
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) { printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
isc_result_t result; isc_result_t result;
dns_messagetextflag_t flags; dns_messagetextflag_t flags;
isc_buffer_t *buf = NULL; isc_buffer_t *buf = NULL;
@@ -697,7 +689,7 @@ cleanup:
static void static void
printgreeting(int argc, char **argv, dig_lookup_t *lookup) { printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
int i; int i;
static bool first = true; static isc_boolean_t first = ISC_TRUE;
char append[MXNAME]; char append[MXNAME];
if (printcmd) { if (printcmd) {
@@ -724,7 +716,7 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
";; global options:%s%s\n", ";; global options:%s%s\n",
short_form ? " +short" : "", short_form ? " +short" : "",
printcmd ? " +cmd" : ""); printcmd ? " +cmd" : "");
first = false; first = ISC_FALSE;
strlcat(lookup->cmdline, append, strlcat(lookup->cmdline, append,
sizeof(lookup->cmdline)); sizeof(lookup->cmdline));
} }
@@ -739,13 +731,13 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
*/ */
static void static void
plus_option(char *option, bool is_batchfile, plus_option(char *option, isc_boolean_t is_batchfile,
dig_lookup_t *lookup) dig_lookup_t *lookup)
{ {
isc_result_t result; isc_result_t result;
char *cmd, *value, *last = NULL, *code, *extra; char *cmd, *value, *last = NULL, *code, *extra;
uint32_t num; isc_uint32_t num;
bool state = true; isc_boolean_t state = ISC_TRUE;
size_t n; size_t n;
INSIST(option != NULL); INSIST(option != NULL);
@@ -756,7 +748,7 @@ plus_option(char *option, bool is_batchfile,
} }
if (strncasecmp(cmd, "no", 2)==0) { if (strncasecmp(cmd, "no", 2)==0) {
cmd += 2; cmd += 2;
state = false; state = ISC_FALSE;
} }
/* parse the rest of the string */ /* parse the rest of the string */
value = strtok_r(NULL, "", &last); value = strtok_r(NULL, "", &last);
@@ -863,7 +855,7 @@ plus_option(char *option, bool is_batchfile,
case 'l': /* class */ case 'l': /* class */
/* keep +cl for backwards compatibility */ /* keep +cl for backwards compatibility */
FULLCHECK2("cl", "class"); FULLCHECK2("cl", "class");
lookup->noclass = !state; lookup->noclass = ISC_TF(!state);
break; break;
case 'm': /* cmd */ case 'm': /* cmd */
FULLCHECK("cmd"); FULLCHECK("cmd");
@@ -899,7 +891,7 @@ plus_option(char *option, bool is_batchfile,
break; break;
case 'r': case 'r':
FULLCHECK("crypto"); FULLCHECK("crypto");
lookup->nocrypto = !state; lookup->nocrypto = ISC_TF(!state);
break; break;
default: default:
goto invalid_option; goto invalid_option;
@@ -923,18 +915,6 @@ plus_option(char *option, bool is_batchfile,
case 'o': /* domain ... but treat "do" as synonym for dnssec */ case 'o': /* domain ... but treat "do" as synonym for dnssec */
if (cmd[2] == '\0') if (cmd[2] == '\0')
goto dnssec; goto dnssec;
if (cmd[2] == 't') {
FULLCHECK("dot");
if (!is_batchfile) {
lookup->tcp_mode = true;
lookup->dot_mode = state;
lookup->dot_mode_set = true;
if (!explicit_port) {
port = 853;
}
}
break;
}
FULLCHECK("domain"); FULLCHECK("domain");
if (value == NULL) if (value == NULL)
goto need_value; goto need_value;
@@ -1024,7 +1004,7 @@ plus_option(char *option, bool is_batchfile,
code = NULL; code = NULL;
if (value != NULL) { if (value != NULL) {
code = strtok_r(value, code = strtok_r(value,
":", ":",
&last); &last);
} }
if (code == NULL) { if (code == NULL) {
@@ -1182,17 +1162,17 @@ plus_option(char *option, bool is_batchfile,
FULLCHECK("nssearch"); FULLCHECK("nssearch");
lookup->ns_search_only = state; lookup->ns_search_only = state;
if (state) { if (state) {
lookup->trace_root = true; lookup->trace_root = ISC_TRUE;
lookup->recurse = true; lookup->recurse = ISC_TRUE;
lookup->identify = true; lookup->identify = ISC_TRUE;
lookup->stats = false; lookup->stats = ISC_FALSE;
lookup->comments = false; lookup->comments = ISC_FALSE;
lookup->section_additional = false; lookup->section_additional = ISC_FALSE;
lookup->section_authority = false; lookup->section_authority = ISC_FALSE;
lookup->section_question = false; lookup->section_question = ISC_FALSE;
lookup->rdtype = dns_rdatatype_ns; lookup->rdtype = dns_rdatatype_ns;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
short_form = true; short_form = ISC_TRUE;
lookup->rrcomments = 0; lookup->rrcomments = 0;
} }
break; break;
@@ -1250,7 +1230,7 @@ plus_option(char *option, bool is_batchfile,
warn("Couldn't parse padding"); warn("Couldn't parse padding");
goto exit_or_usage; goto exit_or_usage;
} }
lookup->padding = (uint16_t)num; lookup->padding = (isc_uint16_t)num;
break; break;
case 'q': case 'q':
switch (cmd[1]) { switch (cmd[1]) {
@@ -1326,13 +1306,13 @@ plus_option(char *option, bool is_batchfile,
FULLCHECK("short"); FULLCHECK("short");
short_form = state; short_form = state;
if (state) { if (state) {
printcmd = false; printcmd = ISC_FALSE;
lookup->section_additional = false; lookup->section_additional = ISC_FALSE;
lookup->section_answer = true; lookup->section_answer = ISC_TRUE;
lookup->section_authority = false; lookup->section_authority = ISC_FALSE;
lookup->section_question = false; lookup->section_question = ISC_FALSE;
lookup->comments = false; lookup->comments = ISC_FALSE;
lookup->stats = false; lookup->stats = ISC_FALSE;
lookup->rrcomments = -1; lookup->rrcomments = -1;
} }
break; break;
@@ -1426,7 +1406,7 @@ plus_option(char *option, bool is_batchfile,
FULLCHECK("tcp"); FULLCHECK("tcp");
if (!is_batchfile) { if (!is_batchfile) {
lookup->tcp_mode = state; lookup->tcp_mode = state;
lookup->tcp_mode_set = true; lookup->tcp_mode_set = ISC_TRUE;
} }
break; break;
default: default:
@@ -1459,17 +1439,17 @@ plus_option(char *option, bool is_batchfile,
lookup->trace = state; lookup->trace = state;
lookup->trace_root = state; lookup->trace_root = state;
if (state) { if (state) {
lookup->recurse = false; lookup->recurse = ISC_FALSE;
lookup->identify = true; lookup->identify = ISC_TRUE;
lookup->comments = false; lookup->comments = ISC_FALSE;
lookup->rrcomments = 0; lookup->rrcomments = 0;
lookup->stats = false; lookup->stats = ISC_FALSE;
lookup->section_additional = false; lookup->section_additional = ISC_FALSE;
lookup->section_authority = true; lookup->section_authority = ISC_TRUE;
lookup->section_question = false; lookup->section_question = ISC_FALSE;
lookup->dnssec = true; lookup->dnssec = ISC_TRUE;
lookup->sendcookie = true; lookup->sendcookie = ISC_TRUE;
usesearch = false; usesearch = ISC_FALSE;
} }
break; break;
case 'i': /* tries */ case 'i': /* tries */
@@ -1503,12 +1483,12 @@ plus_option(char *option, bool is_batchfile,
case 0: case 0:
case 'i': /* ttlid */ case 'i': /* ttlid */
FULLCHECK2("ttl", "ttlid"); FULLCHECK2("ttl", "ttlid");
lookup->nottl = !state; lookup->nottl = ISC_TF(!state);
break; break;
case 'u': /* ttlunits */ case 'u': /* ttlunits */
FULLCHECK("ttlunits"); FULLCHECK("ttlunits");
lookup->nottl = false; lookup->nottl = ISC_FALSE;
lookup->ttlunits = state; lookup->ttlunits = ISC_TF(state);
break; break;
default: default:
goto invalid_option; goto invalid_option;
@@ -1530,7 +1510,7 @@ plus_option(char *option, bool is_batchfile,
FULLCHECK("vc"); FULLCHECK("vc");
if (!is_batchfile) { if (!is_batchfile) {
lookup->tcp_mode = state; lookup->tcp_mode = state;
lookup->tcp_mode_set = true; lookup->tcp_mode_set = ISC_TRUE;
} }
break; break;
case 'z': /* zflag */ case 'z': /* zflag */
@@ -1556,19 +1536,19 @@ plus_option(char *option, bool is_batchfile,
} }
/*% /*%
* #true returned if value was used * #ISC_TRUE returned if value was used
*/ */
static const char *single_dash_opts = "46dhimnuv"; static const char *single_dash_opts = "46dhimnuv";
static const char *dash_opts = "46bcdfhikmnptvyx"; static const char *dash_opts = "46bcdfhikmnptvyx";
static bool static isc_boolean_t
dash_option(char *option, char *next, dig_lookup_t **lookup, dash_option(char *option, char *next, dig_lookup_t **lookup,
bool *open_type_class, bool *need_clone, isc_boolean_t *open_type_class, isc_boolean_t *need_clone,
bool config_only, int argc, char **argv, isc_boolean_t config_only, int argc, char **argv,
bool *firstarg) isc_boolean_t *firstarg)
{ {
char opt, *value, *ptr, *ptr2, *ptr3, *last; char opt, *value, *ptr, *ptr2, *ptr3, *last;
isc_result_t result; isc_result_t result;
bool value_from_next; isc_boolean_t value_from_next;
isc_textregion_t tr; isc_textregion_t tr;
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
@@ -1577,7 +1557,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
struct in6_addr in6; struct in6_addr in6;
in_port_t srcport; in_port_t srcport;
char *hash, *cmd; char *hash, *cmd;
uint32_t num; isc_uint32_t num;
while (strpbrk(option, single_dash_opts) == &option[0]) { while (strpbrk(option, single_dash_opts) == &option[0]) {
/* /*
@@ -1590,21 +1570,21 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
case '4': case '4':
if (have_ipv4) { if (have_ipv4) {
isc_net_disableipv6(); isc_net_disableipv6();
have_ipv6 = false; have_ipv6 = ISC_FALSE;
} else { } else {
fatal("can't find IPv4 networking"); fatal("can't find IPv4 networking");
/* NOTREACHED */ /* NOTREACHED */
return (false); return (ISC_FALSE);
} }
break; break;
case '6': case '6':
if (have_ipv6) { if (have_ipv6) {
isc_net_disableipv4(); isc_net_disableipv4();
have_ipv4 = false; have_ipv4 = ISC_FALSE;
} else { } else {
fatal("can't find IPv6 networking"); fatal("can't find IPv6 networking");
/* NOTREACHED */ /* NOTREACHED */
return (false); return (ISC_FALSE);
} }
break; break;
case 'd': case 'd':
@@ -1612,17 +1592,17 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
if (ptr != &option[1]) { if (ptr != &option[1]) {
cmd = option; cmd = option;
FULLCHECK("debug"); FULLCHECK("debug");
debugging = true; debugging = ISC_TRUE;
return (false); return (ISC_FALSE);
} else } else
debugging = true; debugging = ISC_TRUE;
break; break;
case 'h': case 'h':
help(); help();
exit(0); exit(0);
break; break;
case 'i': case 'i':
/* deprecated */ ip6_int = ISC_TRUE;
break; break;
case 'm': /* memdebug */ case 'm': /* memdebug */
/* memdebug is handled in preparse_args() */ /* memdebug is handled in preparse_args() */
@@ -1631,7 +1611,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
/* deprecated */ /* deprecated */
break; break;
case 'u': case 'u':
(*lookup)->use_usec = true; (*lookup)->use_usec = ISC_TRUE;
break; break;
case 'v': case 'v':
version(); version();
@@ -1641,14 +1621,14 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
if (strlen(option) > 1U) if (strlen(option) > 1U)
option = &option[1]; option = &option[1];
else else
return (false); return (ISC_FALSE);
} }
opt = option[0]; opt = option[0];
if (strlen(option) > 1U) { if (strlen(option) > 1U) {
value_from_next = false; value_from_next = ISC_FALSE;
value = &option[1]; value = &option[1];
} else { } else {
value_from_next = true; value_from_next = ISC_TRUE;
value = next; value = next;
} }
if (value == NULL) if (value == NULL)
@@ -1678,20 +1658,20 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
} }
if (hash != NULL) if (hash != NULL)
*hash = '#'; *hash = '#';
specified_source = true; specified_source = ISC_TRUE;
return (value_from_next); return (value_from_next);
case 'c': case 'c':
if ((*lookup)->rdclassset) { if ((*lookup)->rdclassset) {
fprintf(stderr, ";; Warning, extra class option\n"); fprintf(stderr, ";; Warning, extra class option\n");
} }
*open_type_class = false; *open_type_class = ISC_FALSE;
tr.base = value; tr.base = value;
tr.length = (unsigned int) strlen(value); tr.length = (unsigned int) strlen(value);
result = dns_rdataclass_fromtext(&rdclass, result = dns_rdataclass_fromtext(&rdclass,
(isc_textregion_t *)&tr); (isc_textregion_t *)&tr);
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
(*lookup)->rdclass = rdclass; (*lookup)->rdclass = rdclass;
(*lookup)->rdclassset = true; (*lookup)->rdclassset = ISC_TRUE;
} else } else
fprintf(stderr, ";; Warning, ignoring " fprintf(stderr, ";; Warning, ignoring "
"invalid class %s\n", "invalid class %s\n",
@@ -1707,30 +1687,29 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
result = parse_uint(&num, value, MAXPORT, "port number"); result = parse_uint(&num, value, MAXPORT, "port number");
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fatal("Couldn't parse port number"); fatal("Couldn't parse port number");
explicit_port = true;
port = num; port = num;
return (value_from_next); return (value_from_next);
case 'q': case 'q':
if (!config_only) { if (!config_only) {
if (*need_clone) if (*need_clone)
(*lookup) = clone_lookup(default_lookup, (*lookup) = clone_lookup(default_lookup,
true); ISC_TRUE);
*need_clone = true; *need_clone = ISC_TRUE;
strlcpy((*lookup)->textname, value, strlcpy((*lookup)->textname, value,
sizeof((*lookup)->textname)); sizeof((*lookup)->textname));
(*lookup)->trace_root = ((*lookup)->trace || (*lookup)->trace_root = ISC_TF((*lookup)->trace ||
(*lookup)->ns_search_only); (*lookup)->ns_search_only);
(*lookup)->new_search = true; (*lookup)->new_search = ISC_TRUE;
if (*firstarg) { if (*firstarg) {
printgreeting(argc, argv, *lookup); printgreeting(argc, argv, *lookup);
*firstarg = false; *firstarg = ISC_FALSE;
} }
ISC_LIST_APPEND(lookup_list, (*lookup), link); ISC_LIST_APPEND(lookup_list, (*lookup), link);
debug("looking up %s", (*lookup)->textname); debug("looking up %s", (*lookup)->textname);
} }
return (value_from_next); return (value_from_next);
case 't': case 't':
*open_type_class = false; *open_type_class = ISC_FALSE;
if (strncasecmp(value, "ixfr=", 5) == 0) { if (strncasecmp(value, "ixfr=", 5) == 0) {
rdtype = dns_rdatatype_ixfr; rdtype = dns_rdatatype_ixfr;
result = ISC_R_SUCCESS; result = ISC_R_SUCCESS;
@@ -1750,9 +1729,9 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
"extra type option\n"); "extra type option\n");
} }
if (rdtype == dns_rdatatype_ixfr) { if (rdtype == dns_rdatatype_ixfr) {
uint32_t serial; isc_uint32_t serial;
(*lookup)->rdtype = dns_rdatatype_ixfr; (*lookup)->rdtype = dns_rdatatype_ixfr;
(*lookup)->rdtypeset = true; (*lookup)->rdtypeset = ISC_TRUE;
result = parse_uint(&serial, &value[5], result = parse_uint(&serial, &value[5],
MAXSERIAL, "serial number"); MAXSERIAL, "serial number");
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
@@ -1761,19 +1740,19 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
(*lookup)->section_question = plusquest; (*lookup)->section_question = plusquest;
(*lookup)->comments = pluscomm; (*lookup)->comments = pluscomm;
if (!(*lookup)->tcp_mode_set) if (!(*lookup)->tcp_mode_set)
(*lookup)->tcp_mode = true; (*lookup)->tcp_mode = ISC_TRUE;
} else { } else {
(*lookup)->rdtype = rdtype; (*lookup)->rdtype = rdtype;
if (!config_only) if (!config_only)
(*lookup)->rdtypeset = true; (*lookup)->rdtypeset = ISC_TRUE;
if (rdtype == dns_rdatatype_axfr) { if (rdtype == dns_rdatatype_axfr) {
(*lookup)->section_question = plusquest; (*lookup)->section_question = plusquest;
(*lookup)->comments = pluscomm; (*lookup)->comments = pluscomm;
} else if (rdtype == dns_rdatatype_any) { } else if (rdtype == dns_rdatatype_any) {
if (!(*lookup)->tcp_mode_set) if (!(*lookup)->tcp_mode_set)
(*lookup)->tcp_mode = true; (*lookup)->tcp_mode = ISC_TRUE;
} }
(*lookup)->ixfr_serial = false; (*lookup)->ixfr_serial = ISC_FALSE;
} }
} else } else
fprintf(stderr, ";; Warning, ignoring " fprintf(stderr, ";; Warning, ignoring "
@@ -1801,23 +1780,24 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
return (value_from_next); return (value_from_next);
case 'x': case 'x':
if (*need_clone) if (*need_clone)
*lookup = clone_lookup(default_lookup, true); *lookup = clone_lookup(default_lookup, ISC_TRUE);
*need_clone = true; *need_clone = ISC_TRUE;
if (get_reverse(textname, sizeof(textname), value, if (get_reverse(textname, sizeof(textname), value,
false) == ISC_R_SUCCESS) { ip6_int, ISC_FALSE) == ISC_R_SUCCESS) {
strlcpy((*lookup)->textname, textname, strlcpy((*lookup)->textname, textname,
sizeof((*lookup)->textname)); sizeof((*lookup)->textname));
debug("looking up %s", (*lookup)->textname); debug("looking up %s", (*lookup)->textname);
(*lookup)->trace_root = ((*lookup)->trace || (*lookup)->trace_root = ISC_TF((*lookup)->trace ||
(*lookup)->ns_search_only); (*lookup)->ns_search_only);
(*lookup)->ip6_int = ip6_int;
if (!(*lookup)->rdtypeset) if (!(*lookup)->rdtypeset)
(*lookup)->rdtype = dns_rdatatype_ptr; (*lookup)->rdtype = dns_rdatatype_ptr;
if (!(*lookup)->rdclassset) if (!(*lookup)->rdclassset)
(*lookup)->rdclass = dns_rdataclass_in; (*lookup)->rdclass = dns_rdataclass_in;
(*lookup)->new_search = true; (*lookup)->new_search = ISC_TRUE;
if (*firstarg) { if (*firstarg) {
printgreeting(argc, argv, *lookup); printgreeting(argc, argv, *lookup);
*firstarg = false; *firstarg = ISC_FALSE;
} }
ISC_LIST_APPEND(lookup_list, *lookup, link); ISC_LIST_APPEND(lookup_list, *lookup, link);
} else { } else {
@@ -1831,7 +1811,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
usage(); usage();
} }
/* NOTREACHED */ /* NOTREACHED */
return (false); return (ISC_FALSE);
} }
/*% /*%
@@ -1858,19 +1838,19 @@ preparse_args(int argc, char **argv) {
while (strpbrk(option, single_dash_opts) == &option[0]) { while (strpbrk(option, single_dash_opts) == &option[0]) {
switch (option[0]) { switch (option[0]) {
case 'm': case 'm':
memdebugging = true; memdebugging = ISC_TRUE;
isc_mem_debugging = ISC_MEM_DEBUGTRACE | isc_mem_debugging = ISC_MEM_DEBUGTRACE |
ISC_MEM_DEBUGRECORD; ISC_MEM_DEBUGRECORD;
break; break;
case '4': case '4':
if (ipv6only) if (ipv6only)
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
ipv4only = true; ipv4only = ISC_TRUE;
break; break;
case '6': case '6':
if (ipv4only) if (ipv4only)
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
ipv6only = true; ipv6only = ISC_TRUE;
break; break;
} }
option = &option[1]; option = &option[1];
@@ -1895,16 +1875,16 @@ split_batchline(char *batchline, char **bargv, int len, const char *msg) {
} }
static void static void
parse_args(bool is_batchfile, bool config_only, parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
int argc, char **argv) int argc, char **argv)
{ {
isc_result_t result; isc_result_t result;
isc_textregion_t tr; isc_textregion_t tr;
bool firstarg = true; isc_boolean_t firstarg = ISC_TRUE;
dig_lookup_t *lookup = NULL; dig_lookup_t *lookup = NULL;
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
bool open_type_class = true; isc_boolean_t open_type_class = ISC_TRUE;
char batchline[MXNAME]; char batchline[MXNAME];
int bargc; int bargc;
char *bargv[64]; char *bargv[64];
@@ -1914,7 +1894,7 @@ parse_args(bool is_batchfile, bool config_only,
char *homedir; char *homedir;
char rcfile[PATH_MAX]; char rcfile[PATH_MAX];
#endif #endif
bool need_clone = true; isc_boolean_t need_clone = ISC_TRUE;
/* /*
* The semantics for parsing the args is a bit complex; if * The semantics for parsing the args is a bit complex; if
@@ -1931,9 +1911,9 @@ parse_args(bool is_batchfile, bool config_only,
if (!is_batchfile) { if (!is_batchfile) {
debug("making new lookup"); debug("making new lookup");
default_lookup = make_empty_lookup(); default_lookup = make_empty_lookup();
default_lookup->adflag = true; default_lookup->adflag = ISC_TRUE;
default_lookup->edns = 0; default_lookup->edns = 0;
default_lookup->sendcookie = true; default_lookup->sendcookie = ISC_TRUE;
#ifndef NOPOSIX #ifndef NOPOSIX
/* /*
@@ -1958,7 +1938,7 @@ parse_args(bool is_batchfile, bool config_only,
".digrc argv"); ".digrc argv");
bargv[0] = argv[0]; bargv[0] = argv[0];
argv0 = argv[0]; argv0 = argv[0];
parse_args(true, true, parse_args(ISC_TRUE, ISC_TRUE,
bargc, (char **)bargv); bargc, (char **)bargv);
} }
fclose(batchfp); fclose(batchfp);
@@ -1968,8 +1948,8 @@ parse_args(bool is_batchfile, bool config_only,
if (is_batchfile && !config_only) { if (is_batchfile && !config_only) {
/* Processing '-f batchfile'. */ /* Processing '-f batchfile'. */
lookup = clone_lookup(default_lookup, true); lookup = clone_lookup(default_lookup, ISC_TRUE);
need_clone = false; need_clone = ISC_FALSE;
} else { } else {
lookup = default_lookup; lookup = default_lookup;
} }
@@ -2052,10 +2032,10 @@ parse_args(bool is_batchfile, bool config_only,
"extra type option\n"); "extra type option\n");
} }
if (rdtype == dns_rdatatype_ixfr) { if (rdtype == dns_rdatatype_ixfr) {
uint32_t serial; isc_uint32_t serial;
lookup->rdtype = lookup->rdtype =
dns_rdatatype_ixfr; dns_rdatatype_ixfr;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
result = parse_uint(&serial, result = parse_uint(&serial,
&rv[0][5], &rv[0][5],
MAXSERIAL, MAXSERIAL,
@@ -2068,10 +2048,10 @@ parse_args(bool is_batchfile, bool config_only,
plusquest; plusquest;
lookup->comments = pluscomm; lookup->comments = pluscomm;
if (!lookup->tcp_mode_set) if (!lookup->tcp_mode_set)
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
} else { } else {
lookup->rdtype = rdtype; lookup->rdtype = rdtype;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
if (rdtype == if (rdtype ==
dns_rdatatype_axfr) { dns_rdatatype_axfr) {
lookup->section_question = lookup->section_question =
@@ -2081,8 +2061,8 @@ parse_args(bool is_batchfile, bool config_only,
if (rdtype == if (rdtype ==
dns_rdatatype_any && dns_rdatatype_any &&
!lookup->tcp_mode_set) !lookup->tcp_mode_set)
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
lookup->ixfr_serial = false; lookup->ixfr_serial = ISC_FALSE;
} }
continue; continue;
} }
@@ -2094,7 +2074,7 @@ parse_args(bool is_batchfile, bool config_only,
"extra class option\n"); "extra class option\n");
} }
lookup->rdclass = rdclass; lookup->rdclass = rdclass;
lookup->rdclassset = true; lookup->rdclassset = ISC_TRUE;
continue; continue;
} }
} }
@@ -2102,16 +2082,16 @@ parse_args(bool is_batchfile, bool config_only,
if (!config_only) { if (!config_only) {
if (need_clone) if (need_clone)
lookup = clone_lookup(default_lookup, lookup = clone_lookup(default_lookup,
true); ISC_TRUE);
need_clone = true; need_clone = ISC_TRUE;
strlcpy(lookup->textname, rv[0], strlcpy(lookup->textname, rv[0],
sizeof(lookup->textname)); sizeof(lookup->textname));
lookup->trace_root = (lookup->trace || lookup->trace_root = ISC_TF(lookup->trace ||
lookup->ns_search_only); lookup->ns_search_only);
lookup->new_search = true; lookup->new_search = ISC_TRUE;
if (firstarg) { if (firstarg) {
printgreeting(argc, argv, lookup); printgreeting(argc, argv, lookup);
firstarg = false; firstarg = ISC_FALSE;
} }
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
debug("looking up %s", lookup->textname); debug("looking up %s", lookup->textname);
@@ -2147,7 +2127,7 @@ parse_args(bool is_batchfile, bool config_only,
"batch argv"); "batch argv");
bargv[0] = argv[0]; bargv[0] = argv[0];
argv0 = argv[0]; argv0 = argv[0];
parse_args(true, false, bargc, (char **)bargv); parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
return; return;
} }
return; return;
@@ -2157,17 +2137,17 @@ parse_args(bool is_batchfile, bool config_only,
*/ */
if ((lookup_list.head == NULL) && !config_only) { if ((lookup_list.head == NULL) && !config_only) {
if (need_clone) if (need_clone)
lookup = clone_lookup(default_lookup, true); lookup = clone_lookup(default_lookup, ISC_TRUE);
need_clone = true; need_clone = ISC_TRUE;
lookup->trace_root = (lookup->trace || lookup->trace_root = ISC_TF(lookup->trace ||
lookup->ns_search_only); lookup->ns_search_only);
lookup->new_search = true; lookup->new_search = ISC_TRUE;
strlcpy(lookup->textname, ".", sizeof(lookup->textname)); strlcpy(lookup->textname, ".", sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_ns; lookup->rdtype = dns_rdatatype_ns;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
if (firstarg) { if (firstarg) {
printgreeting(argc, argv, lookup); printgreeting(argc, argv, lookup);
firstarg = false; firstarg = ISC_FALSE;
} }
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
} }
@@ -2204,7 +2184,7 @@ query_finished(void) {
debug("batch line %s", batchline); debug("batch line %s", batchline);
bargc = split_batchline(batchline, bargv, 14, "batch argv"); bargc = split_batchline(batchline, bargv, 14, "batch argv");
bargv[0] = argv0; bargv[0] = argv0;
parse_args(true, false, bargc, (char **)bargv); parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
start_lookup(); start_lookup();
} else { } else {
batchname = NULL; batchname = NULL;
@@ -2241,7 +2221,7 @@ void dig_setup(int argc, char **argv)
setup_system(ipv4only, ipv6only); setup_system(ipv4only, ipv6only);
} }
void dig_query_setup(bool is_batchfile, bool config_only, void dig_query_setup(isc_boolean_t is_batchfile, isc_boolean_t config_only,
int argc, char **argv) int argc, char **argv)
{ {
debug("dig_query_setup"); debug("dig_query_setup");
@@ -2253,7 +2233,7 @@ void dig_query_setup(bool is_batchfile, bool config_only,
setup_text_key(); setup_text_key();
if (domainopt[0] != '\0') { if (domainopt[0] != '\0') {
set_search_domain(domainopt); set_search_domain(domainopt);
usesearch = true; usesearch = ISC_TRUE;
} }
} }
@@ -2290,7 +2270,7 @@ int
main(int argc, char **argv) { main(int argc, char **argv) {
dig_setup(argc, argv); dig_setup(argc, argv);
dig_query_setup(false, false, argc, argv); dig_query_setup(ISC_FALSE, ISC_FALSE, argc, argv);
dig_startup(); dig_startup();
dig_shutdown(); dig_shutdown();
+16 -18
View File
@@ -271,6 +271,17 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>-i</term>
<listitem>
<para>
Do reverse IPv6 lookups using the obsolete RFC 1886 IP6.INT
domain, which is no longer in use. Obsolete bit string
label queries (RFC 2874) are not attempted.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>-k <replaceable class="parameter">keyfile</replaceable></term> <term>-k <replaceable class="parameter">keyfile</replaceable></term>
<listitem> <listitem>
@@ -383,7 +394,8 @@
<literal>94.2.0.192.in-addr.arpa</literal> and sets the <literal>94.2.0.192.in-addr.arpa</literal> and sets the
query type and class to PTR and IN respectively. IPv6 query type and class to PTR and IN respectively. IPv6
addresses are looked up using nibble format under the addresses are looked up using nibble format under the
IP6.ARPA domain. IP6.ARPA domain (but see also the <option>-i</option>
option).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@@ -777,13 +789,7 @@
<para> <para>
Process [do not process] IDN domain names on input. Process [do not process] IDN domain names on input.
This requires IDN SUPPORT to have been enabled at This requires IDN SUPPORT to have been enabled at
compile time. compile time. The default is to process IDN input.
</para>
<para>
The default is to process IDN input when standard output
is a tty. The IDN processing on input is disabled when
dig output is redirected to files, pipes, and other
non-tty file descriptors.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@@ -794,13 +800,7 @@
<para> <para>
Convert [do not convert] puny code on output. Convert [do not convert] puny code on output.
This requires IDN SUPPORT to have been enabled at This requires IDN SUPPORT to have been enabled at
compile time. compile time. The default is to convert output.
</para>
<para>
The default is to process puny code on output when
standard output is a tty. The puny code processing on
output is disabled when dig output is redirected to
files, pipes, and other non-tty file descriptors.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@@ -1330,9 +1330,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
reply from the server. reply from the server.
If you'd like to turn off the IDN support for some reason, use If you'd like to turn off the IDN support for some reason, use
parameters <parameter>+noidnin</parameter> and parameters <parameter>+noidnin</parameter> and
<parameter>+noidnout</parameter> or define <parameter>+noidnout</parameter>.
the <envar>IDN_DISABLE</envar> environment variable.
</para> </para>
</refsection> </refsection>
+344 -326
View File
File diff suppressed because it is too large Load Diff
+87 -88
View File
@@ -12,9 +12,6 @@
/*! \file */ /*! \file */
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <limits.h> #include <limits.h>
@@ -29,6 +26,7 @@
#include <isc/string.h> #include <isc/string.h>
#include <isc/util.h> #include <isc/util.h>
#include <isc/task.h> #include <isc/task.h>
#include <isc/stdlib.h>
#include <dns/byaddr.h> #include <dns/byaddr.h>
#include <dns/fixedname.h> #include <dns/fixedname.h>
@@ -42,14 +40,14 @@
#include <dig/dig.h> #include <dig/dig.h>
static bool short_form = true, listed_server = false; static isc_boolean_t short_form = ISC_TRUE, listed_server = ISC_FALSE;
static bool default_lookups = true; static isc_boolean_t default_lookups = ISC_TRUE;
static int seen_error = -1; static int seen_error = -1;
static bool list_addresses = true; static isc_boolean_t list_addresses = ISC_TRUE;
static bool list_almost_all = false; static isc_boolean_t list_almost_all = ISC_FALSE;
static dns_rdatatype_t list_type = dns_rdatatype_a; static dns_rdatatype_t list_type = dns_rdatatype_a;
static bool printed_server = false; static isc_boolean_t printed_server = ISC_FALSE;
static bool ipv4only = false, ipv6only = false; static isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
static const char *opcodetext[] = { static const char *opcodetext[] = {
"QUERY", "QUERY",
@@ -143,6 +141,7 @@ show_usage(void) {
" -c specifies query class for non-IN data\n" " -c specifies query class for non-IN data\n"
" -C compares SOA records on authoritative nameservers\n" " -C compares SOA records on authoritative nameservers\n"
" -d is equivalent to -v\n" " -d is equivalent to -v\n"
" -i IP6.INT reverse lookups\n"
" -l lists all hosts in a domain, using AXFR\n" " -l lists all hosts in a domain, using AXFR\n"
" -m set memory debugging flag (trace|record|usage)\n" " -m set memory debugging flag (trace|record|usage)\n"
" -N changes the number of dots allowed before root lookup is done\n" " -N changes the number of dots allowed before root lookup is done\n"
@@ -225,7 +224,7 @@ say_message(dns_name_t *name, const char *msg, dns_rdata_t *rdata,
static isc_result_t static isc_result_t
printsection(dns_message_t *msg, dns_section_t sectionid, printsection(dns_message_t *msg, dns_section_t sectionid,
const char *section_name, bool headers, const char *section_name, isc_boolean_t headers,
dig_query_t *query) dig_query_t *query)
{ {
dns_name_t *name, *print_name; dns_name_t *name, *print_name;
@@ -236,13 +235,13 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
isc_region_t r; isc_region_t r;
dns_name_t empty_name; dns_name_t empty_name;
char tbuf[4096]; char tbuf[4096];
bool first; isc_boolean_t first;
bool no_rdata; isc_boolean_t no_rdata;
if (sectionid == DNS_SECTION_QUESTION) if (sectionid == DNS_SECTION_QUESTION)
no_rdata = true; no_rdata = ISC_TRUE;
else else
no_rdata = false; no_rdata = ISC_FALSE;
if (headers) if (headers)
printf(";; %s SECTION:\n", section_name); printf(";; %s SECTION:\n", section_name);
@@ -260,7 +259,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
dns_message_currentname(msg, sectionid, &name); dns_message_currentname(msg, sectionid, &name);
isc_buffer_init(&target, tbuf, sizeof(tbuf)); isc_buffer_init(&target, tbuf, sizeof(tbuf));
first = true; first = ISC_TRUE;
print_name = name; print_name = name;
for (rdataset = ISC_LIST_HEAD(name->list); for (rdataset = ISC_LIST_HEAD(name->list);
@@ -284,7 +283,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
if (!short_form) { if (!short_form) {
result = dns_rdataset_totext(rdataset, result = dns_rdataset_totext(rdataset,
print_name, print_name,
false, ISC_FALSE,
no_rdata, no_rdata,
&target); &target);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
@@ -292,7 +291,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
#ifdef USEINITALWS #ifdef USEINITALWS
if (first) { if (first) {
print_name = &empty_name; print_name = &empty_name;
first = false; first = ISC_FALSE;
} }
#else #else
UNUSED(first); /* Shut up compiler. */ UNUSED(first); /* Shut up compiler. */
@@ -351,7 +350,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
static isc_result_t static isc_result_t
printrdata(dns_message_t *msg, dns_rdataset_t *rdataset, printrdata(dns_message_t *msg, dns_rdataset_t *rdataset,
const dns_name_t *owner, const char *set_name, const dns_name_t *owner, const char *set_name,
bool headers) isc_boolean_t headers)
{ {
isc_buffer_t target; isc_buffer_t target;
isc_result_t result; isc_result_t result;
@@ -364,7 +363,7 @@ printrdata(dns_message_t *msg, dns_rdataset_t *rdataset,
isc_buffer_init(&target, tbuf, sizeof(tbuf)); isc_buffer_init(&target, tbuf, sizeof(tbuf));
result = dns_rdataset_totext(rdataset, owner, false, false, result = dns_rdataset_totext(rdataset, owner, ISC_FALSE, ISC_FALSE,
&target); &target);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
@@ -401,8 +400,8 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
} }
static isc_result_t static isc_result_t
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) { printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
bool did_flag = false; isc_boolean_t did_flag = ISC_FALSE;
dns_rdataset_t *opt, *tsig = NULL; dns_rdataset_t *opt, *tsig = NULL;
const dns_name_t *tsigname; const dns_name_t *tsigname;
isc_result_t result = ISC_R_SUCCESS; isc_result_t result = ISC_R_SUCCESS;
@@ -425,7 +424,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
sizeof(sockstr)); sizeof(sockstr));
printf("Address: %s\n", sockstr); printf("Address: %s\n", sockstr);
printf("Aliases: \n\n"); printf("Aliases: \n\n");
printed_server = true; printed_server = ISC_TRUE;
} }
if (msg->rcode != 0) { if (msg->rcode != 0) {
@@ -457,22 +456,22 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
dns_name_copy(query->lookup->name, name, NULL); dns_name_copy(query->lookup->name, name, NULL);
chase_cnamechain(msg, name); chase_cnamechain(msg, name);
dns_name_format(name, namestr, sizeof(namestr)); dns_name_format(name, namestr, sizeof(namestr));
lookup = clone_lookup(query->lookup, false); lookup = clone_lookup(query->lookup, ISC_FALSE);
if (lookup != NULL) { if (lookup != NULL) {
strlcpy(lookup->textname, namestr, strlcpy(lookup->textname, namestr,
sizeof(lookup->textname)); sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_aaaa; lookup->rdtype = dns_rdatatype_aaaa;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
lookup->origin = NULL; lookup->origin = NULL;
lookup->retries = tries; lookup->retries = tries;
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
} }
lookup = clone_lookup(query->lookup, false); lookup = clone_lookup(query->lookup, ISC_FALSE);
if (lookup != NULL) { if (lookup != NULL) {
strlcpy(lookup->textname, namestr, strlcpy(lookup->textname, namestr,
sizeof(lookup->textname)); sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_mx; lookup->rdtype = dns_rdatatype_mx;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
lookup->origin = NULL; lookup->origin = NULL;
lookup->retries = tries; lookup->retries = tries;
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
@@ -486,31 +485,31 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
printf(";; flags: "); printf(";; flags: ");
if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) {
printf("qr"); printf("qr");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) {
printf("%saa", did_flag ? " " : ""); printf("%saa", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {
printf("%stc", did_flag ? " " : ""); printf("%stc", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {
printf("%srd", did_flag ? " " : ""); printf("%srd", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) {
printf("%sra", did_flag ? " " : ""); printf("%sra", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) {
printf("%sad", did_flag ? " " : ""); printf("%sad", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
} }
if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) { if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) {
printf("%scd", did_flag ? " " : ""); printf("%scd", did_flag ? " " : "");
did_flag = true; did_flag = ISC_TRUE;
POST(did_flag); POST(did_flag);
} }
printf("; QUERY: %u, ANSWER: %u, " printf("; QUERY: %u, ANSWER: %u, "
@@ -533,7 +532,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
!short_form) { !short_form) {
printf("\n"); printf("\n");
result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION", result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION",
true, query); ISC_TRUE, query);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
} }
@@ -541,7 +540,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
if (!short_form) if (!short_form)
printf("\n"); printf("\n");
result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER", result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER",
!short_form, query); ISC_TF(!short_form), query);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
} }
@@ -550,7 +549,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
!short_form) { !short_form) {
printf("\n"); printf("\n");
result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY", result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY",
true, query); ISC_TRUE, query);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
} }
@@ -558,14 +557,14 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
!short_form) { !short_form) {
printf("\n"); printf("\n");
result = printsection(msg, DNS_SECTION_ADDITIONAL, result = printsection(msg, DNS_SECTION_ADDITIONAL,
"ADDITIONAL", true, query); "ADDITIONAL", ISC_TRUE, query);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
} }
if ((tsig != NULL) && !short_form) { if ((tsig != NULL) && !short_form) {
printf("\n"); printf("\n");
result = printrdata(msg, tsig, tsigname, result = printrdata(msg, tsig, tsigname,
"PSEUDOSECTION TSIG", true); "PSEUDOSECTION TSIG", ISC_TRUE);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (result); return (result);
} }
@@ -600,7 +599,7 @@ pre_parse_args(int argc, char **argv) {
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) { while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
switch (c) { switch (c) {
case 'm': case 'm':
memdebugging = true; memdebugging = ISC_TRUE;
if (strcasecmp("trace", isc_commandline_argument) == 0) if (strcasecmp("trace", isc_commandline_argument) == 0)
isc_mem_debugging |= ISC_MEM_DEBUGTRACE; isc_mem_debugging |= ISC_MEM_DEBUGTRACE;
else if (strcasecmp("record", else if (strcasecmp("record",
@@ -614,12 +613,12 @@ pre_parse_args(int argc, char **argv) {
case '4': case '4':
if (ipv6only) if (ipv6only)
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
ipv4only = true; ipv4only = ISC_TRUE;
break; break;
case '6': case '6':
if (ipv4only) if (ipv4only)
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
ipv6only = true; ipv6only = ISC_TRUE;
break; break;
case 'a': break; case 'a': break;
case 'A': break; case 'A': break;
@@ -640,8 +639,8 @@ pre_parse_args(int argc, char **argv) {
case 'C': break; case 'C': break;
case 'D': case 'D':
if (debugging) if (debugging)
debugtiming = true; debugtiming = ISC_TRUE;
debugging = true; debugging = ISC_TRUE;
break; break;
case 'N': break; case 'N': break;
case 'R': break; case 'R': break;
@@ -651,12 +650,12 @@ pre_parse_args(int argc, char **argv) {
show_usage(); show_usage();
} }
} }
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
isc_commandline_index = 1; isc_commandline_index = 1;
} }
static void static void
parse_args(bool is_batchfile, int argc, char **argv) { parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
char hostname[MXNAME]; char hostname[MXNAME];
dig_lookup_t *lookup; dig_lookup_t *lookup;
int c; int c;
@@ -665,30 +664,30 @@ parse_args(bool is_batchfile, int argc, char **argv) {
isc_result_t result = ISC_R_SUCCESS; isc_result_t result = ISC_R_SUCCESS;
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
uint32_t serial = 0; isc_uint32_t serial = 0;
UNUSED(is_batchfile); UNUSED(is_batchfile);
lookup = make_empty_lookup(); lookup = make_empty_lookup();
lookup->servfail_stops = false; lookup->servfail_stops = ISC_FALSE;
lookup->comments = false; lookup->comments = ISC_FALSE;
short_form = !verbose; short_form = !verbose;
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) { while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
switch (c) { switch (c) {
case 'l': case 'l':
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
lookup->rdtype = dns_rdatatype_axfr; lookup->rdtype = dns_rdatatype_axfr;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
fatalexit = 3; fatalexit = 3;
break; break;
case 'v': case 'v':
case 'd': case 'd':
short_form = false; short_form = ISC_FALSE;
break; break;
case 'r': case 'r':
lookup->recurse = false; lookup->recurse = ISC_FALSE;
break; break;
case 't': case 't':
if (strncasecmp(isc_commandline_argument, if (strncasecmp(isc_commandline_argument,
@@ -713,23 +712,23 @@ parse_args(bool is_batchfile, int argc, char **argv) {
if (!lookup->rdtypeset || if (!lookup->rdtypeset ||
lookup->rdtype != dns_rdatatype_axfr) lookup->rdtype != dns_rdatatype_axfr)
lookup->rdtype = rdtype; lookup->rdtype = rdtype;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
if (rdtype == dns_rdatatype_axfr) { if (rdtype == dns_rdatatype_axfr) {
/* -l -t any -v */ /* -l -t any -v */
list_type = dns_rdatatype_any; list_type = dns_rdatatype_any;
short_form = false; short_form = ISC_FALSE;
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
} else if (rdtype == dns_rdatatype_ixfr) { } else if (rdtype == dns_rdatatype_ixfr) {
lookup->ixfr_serial = serial; lookup->ixfr_serial = serial;
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
list_type = rdtype; list_type = rdtype;
} else if (rdtype == dns_rdatatype_any) { } else if (rdtype == dns_rdatatype_any) {
if (!lookup->tcp_mode_set) if (!lookup->tcp_mode_set)
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
} else } else
list_type = rdtype; list_type = rdtype;
list_addresses = false; list_addresses = ISC_FALSE;
default_lookups = false; default_lookups = ISC_FALSE;
break; break;
case 'c': case 'c':
tr.base = isc_commandline_argument; tr.base = isc_commandline_argument;
@@ -743,25 +742,25 @@ parse_args(bool is_batchfile, int argc, char **argv) {
isc_commandline_argument); isc_commandline_argument);
} else { } else {
lookup->rdclass = rdclass; lookup->rdclass = rdclass;
lookup->rdclassset = true; lookup->rdclassset = ISC_TRUE;
} }
default_lookups = false; default_lookups = ISC_FALSE;
break; break;
case 'A': case 'A':
list_almost_all = true; list_almost_all = ISC_TRUE;
/* FALL THROUGH */ /* FALL THROUGH */
case 'a': case 'a':
if (!lookup->rdtypeset || if (!lookup->rdtypeset ||
lookup->rdtype != dns_rdatatype_axfr) lookup->rdtype != dns_rdatatype_axfr)
lookup->rdtype = dns_rdatatype_any; lookup->rdtype = dns_rdatatype_any;
list_type = dns_rdatatype_any; list_type = dns_rdatatype_any;
list_addresses = false; list_addresses = ISC_FALSE;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
short_form = false; short_form = ISC_FALSE;
default_lookups = false; default_lookups = ISC_FALSE;
break; break;
case 'i': case 'i':
/* deprecated */ lookup->ip6_int = ISC_TRUE;
break; break;
case 'n': case 'n':
/* deprecated */ /* deprecated */
@@ -787,23 +786,23 @@ parse_args(bool is_batchfile, int argc, char **argv) {
tries = 2; tries = 2;
break; break;
case 'T': case 'T':
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
lookup->tcp_mode_set = true; lookup->tcp_mode_set = ISC_TRUE;
break; break;
case 'U': case 'U':
lookup->tcp_mode = false; lookup->tcp_mode = ISC_FALSE;
lookup->tcp_mode_set = true; lookup->tcp_mode_set = ISC_TRUE;
break; break;
case 'C': case 'C':
debug("showing all SOAs"); debug("showing all SOAs");
lookup->rdtype = dns_rdatatype_ns; lookup->rdtype = dns_rdatatype_ns;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
lookup->rdclass = dns_rdataclass_in; lookup->rdclass = dns_rdataclass_in;
lookup->rdclassset = true; lookup->rdclassset = ISC_TRUE;
lookup->ns_search_only = true; lookup->ns_search_only = ISC_TRUE;
lookup->trace_root = true; lookup->trace_root = ISC_TRUE;
lookup->identify_previous_line = true; lookup->identify_previous_line = ISC_TRUE;
default_lookups = false; default_lookups = ISC_FALSE;
break; break;
case 'N': case 'N':
debug("setting NDOTS to %s", debug("setting NDOTS to %s",
@@ -820,7 +819,7 @@ parse_args(bool is_batchfile, int argc, char **argv) {
/* Handled by pre_parse_args(). */ /* Handled by pre_parse_args(). */
break; break;
case 's': case 's':
lookup->servfail_stops = true; lookup->servfail_stops = ISC_TRUE;
break; break;
} }
} }
@@ -835,22 +834,22 @@ parse_args(bool is_batchfile, int argc, char **argv) {
if (argc > isc_commandline_index + 1) { if (argc > isc_commandline_index + 1) {
set_nameserver(argv[isc_commandline_index+1]); set_nameserver(argv[isc_commandline_index+1]);
debug("server is %s", argv[isc_commandline_index+1]); debug("server is %s", argv[isc_commandline_index+1]);
listed_server = true; listed_server = ISC_TRUE;
} else } else
check_ra = true; check_ra = ISC_TRUE;
lookup->pending = false; lookup->pending = ISC_FALSE;
if (get_reverse(store, sizeof(store), hostname, true) if (get_reverse(store, sizeof(store), hostname,
== ISC_R_SUCCESS) { lookup->ip6_int, ISC_TRUE) == ISC_R_SUCCESS) {
strlcpy(lookup->textname, store, sizeof(lookup->textname)); strlcpy(lookup->textname, store, sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_ptr; lookup->rdtype = dns_rdatatype_ptr;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
default_lookups = false; default_lookups = ISC_FALSE;
} else { } else {
strlcpy(lookup->textname, hostname, sizeof(lookup->textname)); strlcpy(lookup->textname, hostname, sizeof(lookup->textname));
usesearch = true; usesearch = ISC_TRUE;
} }
lookup->new_search = true; lookup->new_search = ISC_TRUE;
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
} }
@@ -879,7 +878,7 @@ main(int argc, char **argv) {
check_result(result, "isc_app_start"); check_result(result, "isc_app_start");
setup_libs(); setup_libs();
setup_system(ipv4only, ipv6only); setup_system(ipv4only, ipv6only);
parse_args(false, argc, argv); parse_args(ISC_FALSE, argc, argv);
if (keyfile[0] != 0) if (keyfile[0] != 0)
setup_file_key(); setup_file_key();
else if (keysecret[0] != 0) else if (keysecret[0] != 0)
+13 -1
View File
@@ -179,6 +179,18 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>-i</term>
<listitem>
<para>
Obsolete.
Use the IP6.INT domain for reverse lookups of IPv6
addresses as defined in RFC1886 and deprecated in RFC4159.
The default is to use IP6.ARPA as specified in RFC3596.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>-l</term> <term>-l</term>
<listitem> <listitem>
@@ -377,7 +389,7 @@
<command>host</command> appropriately converts character encoding of <command>host</command> appropriately converts character encoding of
domain name before sending a request to DNS server or displaying a domain name before sending a request to DNS server or displaying a
reply from the server. reply from the server.
If you'd like to turn off the IDN support for some reason, define If you'd like to turn off the IDN support for some reason, defines
the <envar>IDN_DISABLE</envar> environment variable. the <envar>IDN_DISABLE</envar> environment variable.
The IDN support is disabled if the variable is set when The IDN support is disabled if the variable is set when
<command>host</command> runs. <command>host</command> runs.
+43 -42
View File
@@ -14,13 +14,11 @@
/*! \file */ /*! \file */
#include <inttypes.h>
#include <stdbool.h>
#include <dns/rdatalist.h> #include <dns/rdatalist.h>
#include <dst/dst.h> #include <dst/dst.h>
#include <isc/boolean.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/bufferlist.h> #include <isc/bufferlist.h>
#include <isc/formatcheck.h> #include <isc/formatcheck.h>
@@ -83,7 +81,7 @@ typedef struct dig_searchlist dig_searchlist_t;
/*% The dig_lookup structure */ /*% The dig_lookup structure */
struct dig_lookup { struct dig_lookup {
bool isc_boolean_t
pending, /*%< Pending a successful answer */ pending, /*%< Pending a successful answer */
waiting_connect, waiting_connect,
doing_xfr, doing_xfr,
@@ -101,10 +99,9 @@ struct dig_lookup {
zflag, zflag,
trace, /*% dig +trace */ trace, /*% dig +trace */
trace_root, /*% initial query for either +trace or +nssearch */ trace_root, /*% initial query for either +trace or +nssearch */
dot_mode,
dot_mode_set,
tcp_mode, tcp_mode,
tcp_mode_set, tcp_mode_set,
ip6_int,
comments, comments,
stats, stats,
section_question, section_question,
@@ -142,8 +139,8 @@ struct dig_lookup {
dns_rdatatype_t rdtype; dns_rdatatype_t rdtype;
dns_rdatatype_t qrdtype; dns_rdatatype_t qrdtype;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
bool rdtypeset; isc_boolean_t rdtypeset;
bool rdclassset; isc_boolean_t rdclassset;
char name_space[BUFSIZE]; char name_space[BUFSIZE];
char oname_space[BUFSIZE]; char oname_space[BUFSIZE];
isc_buffer_t namebuf; isc_buffer_t namebuf;
@@ -161,17 +158,17 @@ struct dig_lookup {
dig_serverlist_t my_server_list; dig_serverlist_t my_server_list;
dig_searchlist_t *origin; dig_searchlist_t *origin;
dig_query_t *xfr_q; dig_query_t *xfr_q;
uint32_t retries; isc_uint32_t retries;
int nsfound; int nsfound;
uint16_t udpsize; isc_uint16_t udpsize;
int16_t edns; isc_int16_t edns;
int16_t padding; isc_int16_t padding;
uint32_t ixfr_serial; isc_uint32_t ixfr_serial;
isc_buffer_t rdatabuf; isc_buffer_t rdatabuf;
char rdatastore[MXNAME]; char rdatastore[MXNAME];
dst_context_t *tsigctx; dst_context_t *tsigctx;
isc_buffer_t *querysig; isc_buffer_t *querysig;
uint32_t msgcounter; isc_uint32_t msgcounter;
dns_fixedname_t fdomain; dns_fixedname_t fdomain;
isc_sockaddr_t *ecs_addr; isc_sockaddr_t *ecs_addr;
char *cookie; char *cookie;
@@ -187,7 +184,7 @@ struct dig_lookup {
/*% The dig_query structure */ /*% The dig_query structure */
struct dig_query { struct dig_query {
dig_lookup_t *lookup; dig_lookup_t *lookup;
bool waiting_connect, isc_boolean_t waiting_connect,
pending_free, pending_free,
waiting_senddone, waiting_senddone,
first_pass, first_pass,
@@ -197,27 +194,30 @@ struct dig_query {
recv_made, recv_made,
warn_id, warn_id,
timedout; timedout;
uint32_t first_rr_serial; isc_uint32_t first_rr_serial;
uint32_t second_rr_serial; isc_uint32_t second_rr_serial;
uint32_t msg_count; isc_uint32_t msg_count;
uint32_t rr_count; isc_uint32_t rr_count;
bool ixfr_axfr; isc_boolean_t ixfr_axfr;
char *servname; char *servname;
char *servssldigest;
char *userarg; char *userarg;
isc_bufferlist_t sendlist,
recvlist,
lengthlist;
isc_buffer_t recvbuf, isc_buffer_t recvbuf,
lengthbuf, lengthbuf,
tmpsendbuf, slbuf;
sendbuf; char *recvspace,
char *recvspace, *tmpsendspace, lengthspace[4],
lengthspace[4]; slspace[4];
isc_socket_t *sock; isc_socket_t *sock;
ISC_LINK(dig_query_t) link; ISC_LINK(dig_query_t) link;
ISC_LINK(dig_query_t) clink; ISC_LINK(dig_query_t) clink;
isc_sockaddr_t sockaddr; isc_sockaddr_t sockaddr;
isc_time_t time_sent; isc_time_t time_sent;
isc_time_t time_recv; isc_time_t time_recv;
uint64_t byte_count; isc_uint64_t byte_count;
isc_buffer_t sendbuf;
isc_timer_t *timer; isc_timer_t *timer;
}; };
@@ -244,8 +244,8 @@ extern dig_serverlist_t server_list;
extern dig_searchlistlist_t search_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, extern isc_boolean_t check_ra, have_ipv4, have_ipv6, specified_source,
usesearch, showsearch, explicit_port; usesearch, showsearch;
extern in_port_t port; extern in_port_t port;
extern unsigned int timeout; extern unsigned int timeout;
extern isc_mem_t *mctx; extern isc_mem_t *mctx;
@@ -260,17 +260,17 @@ extern char keysecret[MXNAME];
extern const dns_name_t *hmacname; extern const dns_name_t *hmacname;
extern unsigned int digestbits; extern unsigned int digestbits;
extern dns_tsigkey_t *tsigkey; extern dns_tsigkey_t *tsigkey;
extern bool validated; extern isc_boolean_t validated;
extern isc_taskmgr_t *taskmgr; extern isc_taskmgr_t *taskmgr;
extern isc_task_t *global_task; extern isc_task_t *global_task;
extern bool free_now; extern isc_boolean_t free_now;
extern bool debugging, debugtiming, memdebugging; extern isc_boolean_t debugging, debugtiming, memdebugging;
extern bool keep_open; extern isc_boolean_t keep_open;
extern char *progname; extern char *progname;
extern int tries; extern int tries;
extern int fatalexit; extern int fatalexit;
extern bool verbose; extern isc_boolean_t verbose;
/* /*
* Routines in dighost.c. * Routines in dighost.c.
@@ -282,7 +282,8 @@ int
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp); getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
isc_result_t isc_result_t
get_reverse(char *reverse, size_t len, char *value, bool strict); get_reverse(char *reverse, size_t len, char *value, isc_boolean_t ip6_int,
isc_boolean_t strict);
ISC_PLATFORM_NORETURN_PRE void ISC_PLATFORM_NORETURN_PRE void
fatal(const char *format, ...) fatal(const char *format, ...)
@@ -301,7 +302,7 @@ debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
void void
check_result(isc_result_t result, const char *msg); check_result(isc_result_t result, const char *msg);
bool isc_boolean_t
setup_lookup(dig_lookup_t *lookup); setup_lookup(dig_lookup_t *lookup);
void void
@@ -323,14 +324,14 @@ void
setup_libs(void); setup_libs(void);
void void
setup_system(bool ipv4only, bool ipv6only); setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only);
isc_result_t isc_result_t
parse_uint(uint32_t *uip, const char *value, uint32_t max, parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
const char *desc); const char *desc);
isc_result_t isc_result_t
parse_xint(uint32_t *uip, const char *value, uint32_t max, parse_xint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
const char *desc); const char *desc);
isc_result_t isc_result_t
@@ -340,13 +341,13 @@ void
parse_hmac(const char *hmacstr); parse_hmac(const char *hmacstr);
dig_lookup_t * dig_lookup_t *
requeue_lookup(dig_lookup_t *lookold, bool servers); requeue_lookup(dig_lookup_t *lookold, isc_boolean_t servers);
dig_lookup_t * dig_lookup_t *
make_empty_lookup(void); make_empty_lookup(void);
dig_lookup_t * dig_lookup_t *
clone_lookup(dig_lookup_t *lookold, bool servers); clone_lookup(dig_lookup_t *lookold, isc_boolean_t servers);
dig_server_t * dig_server_t *
make_server(const char *servname, const char *userarg); make_server(const char *servname, const char *userarg);
@@ -375,7 +376,7 @@ set_search_domain(char *domain);
* then assigned to the appropriate function pointer * then assigned to the appropriate function pointer
*/ */
extern isc_result_t extern isc_result_t
(*dighost_printmessage)(dig_query_t *query, dns_message_t *msg, bool headers); (*dighost_printmessage)(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers);
/*%< /*%<
* Print the final result of the lookup. * Print the final result of the lookup.
*/ */
@@ -417,7 +418,7 @@ dig_setup(int argc, char **argv);
* Call to supply new parameters for the next lookup * Call to supply new parameters for the next lookup
*/ */
void void
dig_query_setup(bool, bool, int argc, char **argv); dig_query_setup(isc_boolean_t, isc_boolean_t, int argc, char **argv);
/*%< /*%<
* set the main application event cycle running * set the main application event cycle running
+92 -88
View File
@@ -11,8 +11,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@@ -55,18 +53,18 @@
#endif #endif
#endif #endif
static bool short_form = true, static isc_boolean_t short_form = ISC_TRUE,
tcpmode = false, tcpmode_set = false, tcpmode = ISC_FALSE, tcpmode_set = ISC_FALSE,
identify = false, stats = true, identify = ISC_FALSE, stats = ISC_TRUE,
comments = true, section_question = true, comments = ISC_TRUE, section_question = ISC_TRUE,
section_answer = true, section_authority = true, section_answer = ISC_TRUE, section_authority = ISC_TRUE,
section_additional = true, recurse = true, section_additional = ISC_TRUE, recurse = ISC_TRUE,
aaonly = false, nofail = true, aaonly = ISC_FALSE, nofail = ISC_TRUE,
default_lookups = true, a_noanswer = false; default_lookups = ISC_TRUE, a_noanswer = ISC_FALSE;
static bool interactive; static isc_boolean_t interactive;
static bool in_use = false; static isc_boolean_t in_use = ISC_FALSE;
static char defclass[MXRD] = "IN"; static char defclass[MXRD] = "IN";
static char deftype[MXRD] = "A"; static char deftype[MXRD] = "A";
static isc_event_t *global_event = NULL; static isc_event_t *global_event = NULL;
@@ -215,7 +213,7 @@ printrdata(dns_rdata_t *rdata) {
isc_result_t result; isc_result_t result;
isc_buffer_t *b = NULL; isc_buffer_t *b = NULL;
unsigned int size = 1024; unsigned int size = 1024;
bool done = false; isc_boolean_t done = ISC_FALSE;
if (rdata->type < N_KNOWN_RRTYPES) if (rdata->type < N_KNOWN_RRTYPES)
printf("%s", rtypetext[rdata->type]); printf("%s", rtypetext[rdata->type]);
@@ -230,7 +228,7 @@ printrdata(dns_rdata_t *rdata) {
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
printf("%.*s\n", (int)isc_buffer_usedlength(b), printf("%.*s\n", (int)isc_buffer_usedlength(b),
(char *)isc_buffer_base(b)); (char *)isc_buffer_base(b));
done = true; done = ISC_TRUE;
} else if (result != ISC_R_NOSPACE) } else if (result != ISC_R_NOSPACE)
check_result(result, "dns_rdata_totext"); check_result(result, "dns_rdata_totext");
isc_buffer_free(&b); isc_buffer_free(&b);
@@ -239,7 +237,7 @@ printrdata(dns_rdata_t *rdata) {
} }
static isc_result_t static isc_result_t
printsection(dig_query_t *query, dns_message_t *msg, bool headers, printsection(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers,
dns_section_t section) { dns_section_t section) {
isc_result_t result, loopresult; isc_result_t result, loopresult;
dns_name_t *name; dns_name_t *name;
@@ -306,7 +304,7 @@ printsection(dig_query_t *query, dns_message_t *msg, bool headers,
} }
static isc_result_t static isc_result_t
detailsection(dig_query_t *query, dns_message_t *msg, bool headers, detailsection(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers,
dns_section_t section) { dns_section_t section) {
isc_result_t result, loopresult; isc_result_t result, loopresult;
dns_name_t *name; dns_name_t *name;
@@ -431,7 +429,7 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
} }
static isc_result_t static isc_result_t
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) { printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
char servtext[ISC_SOCKADDR_FORMATSIZE]; char servtext[ISC_SOCKADDR_FORMATSIZE];
/* I've we've gotten this far, we've reached a server. */ /* I've we've gotten this far, we've reached a server. */
@@ -450,10 +448,10 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
if (!short_form) { if (!short_form) {
puts("------------"); puts("------------");
/* detailheader(query, msg);*/ /* detailheader(query, msg);*/
detailsection(query, msg, true, DNS_SECTION_QUESTION); detailsection(query, msg, ISC_TRUE, DNS_SECTION_QUESTION);
detailsection(query, msg, true, DNS_SECTION_ANSWER); detailsection(query, msg, ISC_TRUE, DNS_SECTION_ANSWER);
detailsection(query, msg, true, DNS_SECTION_AUTHORITY); detailsection(query, msg, ISC_TRUE, DNS_SECTION_AUTHORITY);
detailsection(query, msg, true, DNS_SECTION_ADDITIONAL); detailsection(query, msg, ISC_TRUE, DNS_SECTION_ADDITIONAL);
puts("------------"); puts("------------");
} }
@@ -481,12 +479,12 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
dns_name_copy(query->lookup->name, name, NULL); dns_name_copy(query->lookup->name, name, NULL);
chase_cnamechain(msg, name); chase_cnamechain(msg, name);
dns_name_format(name, namestr, sizeof(namestr)); dns_name_format(name, namestr, sizeof(namestr));
lookup = clone_lookup(query->lookup, false); lookup = clone_lookup(query->lookup, ISC_FALSE);
if (lookup != NULL) { if (lookup != NULL) {
strlcpy(lookup->textname, namestr, strlcpy(lookup->textname, namestr,
sizeof(lookup->textname)); sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_aaaa; lookup->rdtype = dns_rdatatype_aaaa;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
lookup->origin = NULL; lookup->origin = NULL;
lookup->retries = tries; lookup->retries = tries;
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
@@ -500,7 +498,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
printsection(query, msg, headers, DNS_SECTION_ANSWER); printsection(query, msg, headers, DNS_SECTION_ANSWER);
else { else {
if (default_lookups && query->lookup->rdtype == dns_rdatatype_a) if (default_lookups && query->lookup->rdtype == dns_rdatatype_a)
a_noanswer = true; a_noanswer = ISC_TRUE;
else if (!default_lookups || else if (!default_lookups ||
(query->lookup->rdtype == dns_rdatatype_aaaa && (query->lookup->rdtype == dns_rdatatype_aaaa &&
@@ -522,7 +520,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
} }
static void static void
show_settings(bool full, bool serv_only) { show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
dig_server_t *srv; dig_server_t *srv;
isc_sockaddr_t sockaddr; isc_sockaddr_t sockaddr;
dig_searchlist_t *listent; dig_searchlist_t *listent;
@@ -567,7 +565,7 @@ show_settings(bool full, bool serv_only) {
printf("\n"); printf("\n");
} }
static bool static isc_boolean_t
testtype(char *typetext) { testtype(char *typetext) {
isc_result_t result; isc_result_t result;
isc_textregion_t tr; isc_textregion_t tr;
@@ -577,14 +575,14 @@ testtype(char *typetext) {
tr.length = strlen(typetext); tr.length = strlen(typetext);
result = dns_rdatatype_fromtext(&rdtype, &tr); result = dns_rdatatype_fromtext(&rdtype, &tr);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
return (true); return (ISC_TRUE);
else { else {
printf("unknown query type: %s\n", typetext); printf("unknown query type: %s\n", typetext);
return (false); return (ISC_FALSE);
} }
} }
static bool static isc_boolean_t
testclass(char *typetext) { testclass(char *typetext) {
isc_result_t result; isc_result_t result;
isc_textregion_t tr; isc_textregion_t tr;
@@ -594,24 +592,24 @@ testclass(char *typetext) {
tr.length = strlen(typetext); tr.length = strlen(typetext);
result = dns_rdataclass_fromtext(&rdclass, &tr); result = dns_rdataclass_fromtext(&rdclass, &tr);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
return (true); return (ISC_TRUE);
else { else {
printf("unknown query class: %s\n", typetext); printf("unknown query class: %s\n", typetext);
return (false); return (ISC_FALSE);
} }
} }
static void static void
set_port(const char *value) { set_port(const char *value) {
uint32_t n; isc_uint32_t n;
isc_result_t result = parse_uint(&n, value, 65535, "port"); isc_result_t result = parse_uint(&n, value, 65535, "port");
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
port = (uint16_t) n; port = (isc_uint16_t) n;
} }
static void static void
set_timeout(const char *value) { set_timeout(const char *value) {
uint32_t n; isc_uint32_t n;
isc_result_t result = parse_uint(&n, value, UINT_MAX, "timeout"); isc_result_t result = parse_uint(&n, value, UINT_MAX, "timeout");
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
timeout = n; timeout = n;
@@ -619,7 +617,7 @@ set_timeout(const char *value) {
static void static void
set_tries(const char *value) { set_tries(const char *value) {
uint32_t n; isc_uint32_t n;
isc_result_t result = parse_uint(&n, value, INT_MAX, "tries"); isc_result_t result = parse_uint(&n, value, INT_MAX, "tries");
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
tries = n; tries = n;
@@ -627,7 +625,7 @@ set_tries(const char *value) {
static void static void
set_ndots(const char *value) { set_ndots(const char *value) {
uint32_t n; isc_uint32_t n;
isc_result_t result = parse_uint(&n, value, 128, "ndots"); isc_result_t result = parse_uint(&n, value, 128, "ndots");
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
ndots = n; ndots = n;
@@ -646,7 +644,7 @@ setoption(char *opt) {
((l >= N) && (l < sizeof(A)) && (strncasecmp(opt, A, l) == 0)) ((l >= N) && (l < sizeof(A)) && (strncasecmp(opt, A, l) == 0))
if (CHECKOPT("all", 3)) { if (CHECKOPT("all", 3)) {
show_settings(true, false); show_settings(ISC_TRUE, ISC_FALSE);
} else if (strncasecmp(opt, "class=", 6) == 0) { } else if (strncasecmp(opt, "class=", 6) == 0) {
if (testclass(&opt[6])) if (testclass(&opt[6]))
strlcpy(defclass, &opt[6], sizeof(defclass)); strlcpy(defclass, &opt[6], sizeof(defclass));
@@ -656,41 +654,41 @@ setoption(char *opt) {
} else if (strncasecmp(opt, "type=", 5) == 0) { } else if (strncasecmp(opt, "type=", 5) == 0) {
if (testtype(&opt[5])) { if (testtype(&opt[5])) {
strlcpy(deftype, &opt[5], sizeof(deftype)); strlcpy(deftype, &opt[5], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "ty=", 3) == 0) { } else if (strncasecmp(opt, "ty=", 3) == 0) {
if (testtype(&opt[3])) { if (testtype(&opt[3])) {
strlcpy(deftype, &opt[3], sizeof(deftype)); strlcpy(deftype, &opt[3], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "querytype=", 10) == 0) { } else if (strncasecmp(opt, "querytype=", 10) == 0) {
if (testtype(&opt[10])) { if (testtype(&opt[10])) {
strlcpy(deftype, &opt[10], sizeof(deftype)); strlcpy(deftype, &opt[10], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "query=", 6) == 0) { } else if (strncasecmp(opt, "query=", 6) == 0) {
if (testtype(&opt[6])) { if (testtype(&opt[6])) {
strlcpy(deftype, &opt[6], sizeof(deftype)); strlcpy(deftype, &opt[6], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "qu=", 3) == 0) { } else if (strncasecmp(opt, "qu=", 3) == 0) {
if (testtype(&opt[3])) { if (testtype(&opt[3])) {
strlcpy(deftype, &opt[3], sizeof(deftype)); strlcpy(deftype, &opt[3], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "q=", 2) == 0) { } else if (strncasecmp(opt, "q=", 2) == 0) {
if (testtype(&opt[2])) { if (testtype(&opt[2])) {
strlcpy(deftype, &opt[2], sizeof(deftype)); strlcpy(deftype, &opt[2], sizeof(deftype));
default_lookups = false; default_lookups = ISC_FALSE;
} }
} else if (strncasecmp(opt, "domain=", 7) == 0) { } else if (strncasecmp(opt, "domain=", 7) == 0) {
strlcpy(domainopt, &opt[7], sizeof(domainopt)); strlcpy(domainopt, &opt[7], sizeof(domainopt));
set_search_domain(domainopt); set_search_domain(domainopt);
usesearch = true; usesearch = ISC_TRUE;
} else if (strncasecmp(opt, "do=", 3) == 0) { } else if (strncasecmp(opt, "do=", 3) == 0) {
strlcpy(domainopt, &opt[3], sizeof(domainopt)); strlcpy(domainopt, &opt[3], sizeof(domainopt));
set_search_domain(domainopt); set_search_domain(domainopt);
usesearch = true; usesearch = ISC_TRUE;
} else if (strncasecmp(opt, "port=", 5) == 0) { } else if (strncasecmp(opt, "port=", 5) == 0) {
set_port(&opt[5]); set_port(&opt[5]);
} else if (strncasecmp(opt, "po=", 3) == 0) { } else if (strncasecmp(opt, "po=", 3) == 0) {
@@ -700,43 +698,43 @@ setoption(char *opt) {
} else if (strncasecmp(opt, "t=", 2) == 0) { } else if (strncasecmp(opt, "t=", 2) == 0) {
set_timeout(&opt[2]); set_timeout(&opt[2]);
} else if (CHECKOPT("recurse", 3)) { } else if (CHECKOPT("recurse", 3)) {
recurse = true; recurse = ISC_TRUE;
} else if (CHECKOPT("norecurse", 5)) { } else if (CHECKOPT("norecurse", 5)) {
recurse = false; recurse = ISC_FALSE;
} else if (strncasecmp(opt, "retry=", 6) == 0) { } else if (strncasecmp(opt, "retry=", 6) == 0) {
set_tries(&opt[6]); set_tries(&opt[6]);
} else if (strncasecmp(opt, "ret=", 4) == 0) { } else if (strncasecmp(opt, "ret=", 4) == 0) {
set_tries(&opt[4]); set_tries(&opt[4]);
} else if (CHECKOPT("defname", 3)) { } else if (CHECKOPT("defname", 3)) {
usesearch = true; usesearch = ISC_TRUE;
} else if (CHECKOPT("nodefname", 5)) { } else if (CHECKOPT("nodefname", 5)) {
usesearch = false; usesearch = ISC_FALSE;
} else if (CHECKOPT("vc", 2)) { } else if (CHECKOPT("vc", 2)) {
tcpmode = true; tcpmode = ISC_TRUE;
tcpmode_set = true; tcpmode_set = ISC_TRUE;
} else if (CHECKOPT("novc", 4)) { } else if (CHECKOPT("novc", 4)) {
tcpmode = false; tcpmode = ISC_FALSE;
tcpmode_set = true; tcpmode_set = ISC_TRUE;
} else if (CHECKOPT("debug", 3)) { } else if (CHECKOPT("debug", 3)) {
short_form = false; short_form = ISC_FALSE;
showsearch = true; showsearch = ISC_TRUE;
} else if (CHECKOPT("nodebug", 5)) { } else if (CHECKOPT("nodebug", 5)) {
short_form = true; short_form = ISC_TRUE;
showsearch = false; showsearch = ISC_FALSE;
} else if (CHECKOPT("d2", 2)) { } else if (CHECKOPT("d2", 2)) {
debugging = true; debugging = ISC_TRUE;
} else if (CHECKOPT("nod2", 4)) { } else if (CHECKOPT("nod2", 4)) {
debugging = false; debugging = ISC_FALSE;
} else if (CHECKOPT("search", 3)) { } else if (CHECKOPT("search", 3)) {
usesearch = true; usesearch = ISC_TRUE;
} else if (CHECKOPT("nosearch", 5)) { } else if (CHECKOPT("nosearch", 5)) {
usesearch = false; usesearch = ISC_FALSE;
} else if (CHECKOPT("sil", 3)) { } else if (CHECKOPT("sil", 3)) {
/* deprecation_msg = false; */ /* deprecation_msg = ISC_FALSE; */
} else if (CHECKOPT("fail", 3)) { } else if (CHECKOPT("fail", 3)) {
nofail=false; nofail=ISC_FALSE;
} else if (CHECKOPT("nofail", 5)) { } else if (CHECKOPT("nofail", 5)) {
nofail=true; nofail=ISC_TRUE;
} else if (strncasecmp(opt, "ndots=", 6) == 0) { } else if (strncasecmp(opt, "ndots=", 6) == 0) {
set_ndots(&opt[6]); set_ndots(&opt[6]);
} else { } else {
@@ -755,7 +753,7 @@ addlookup(char *opt) {
debug("addlookup()"); debug("addlookup()");
a_noanswer = false; a_noanswer = ISC_FALSE;
tr.base = deftype; tr.base = deftype;
tr.length = strlen(deftype); tr.length = strlen(deftype);
@@ -772,21 +770,21 @@ addlookup(char *opt) {
rdclass = dns_rdataclass_in; rdclass = dns_rdataclass_in;
} }
lookup = make_empty_lookup(); lookup = make_empty_lookup();
if (get_reverse(store, sizeof(store), opt, true) if (get_reverse(store, sizeof(store), opt, lookup->ip6_int, ISC_TRUE)
== ISC_R_SUCCESS) { == ISC_R_SUCCESS) {
strlcpy(lookup->textname, store, sizeof(lookup->textname)); strlcpy(lookup->textname, store, sizeof(lookup->textname));
lookup->rdtype = dns_rdatatype_ptr; lookup->rdtype = dns_rdatatype_ptr;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
} else { } else {
strlcpy(lookup->textname, opt, sizeof(lookup->textname)); strlcpy(lookup->textname, opt, sizeof(lookup->textname));
lookup->rdtype = rdtype; lookup->rdtype = rdtype;
lookup->rdtypeset = true; lookup->rdtypeset = ISC_TRUE;
} }
lookup->rdclass = rdclass; lookup->rdclass = rdclass;
lookup->rdclassset = true; lookup->rdclassset = ISC_TRUE;
lookup->trace = false; lookup->trace = ISC_FALSE;
lookup->trace_root = lookup->trace; lookup->trace_root = lookup->trace;
lookup->ns_search_only = false; lookup->ns_search_only = ISC_FALSE;
lookup->identify = identify; lookup->identify = identify;
lookup->recurse = recurse; lookup->recurse = recurse;
lookup->aaonly = aaonly; lookup->aaonly = aaonly;
@@ -794,7 +792,7 @@ addlookup(char *opt) {
lookup->udpsize = 0; lookup->udpsize = 0;
lookup->comments = comments; lookup->comments = comments;
if (lookup->rdtype == dns_rdatatype_any && !tcpmode_set) if (lookup->rdtype == dns_rdatatype_any && !tcpmode_set)
lookup->tcp_mode = true; lookup->tcp_mode = ISC_TRUE;
else else
lookup->tcp_mode = tcpmode; lookup->tcp_mode = tcpmode;
lookup->stats = stats; lookup->stats = stats;
@@ -802,9 +800,9 @@ addlookup(char *opt) {
lookup->section_answer = section_answer; lookup->section_answer = section_answer;
lookup->section_authority = section_authority; lookup->section_authority = section_authority;
lookup->section_additional = section_additional; lookup->section_additional = section_additional;
lookup->new_search = true; lookup->new_search = ISC_TRUE;
if (nofail) if (nofail)
lookup->servfail_stops = false; lookup->servfail_stops = ISC_FALSE;
ISC_LIST_INIT(lookup->q); ISC_LIST_INIT(lookup->q);
ISC_LINK_INIT(lookup, link); ISC_LINK_INIT(lookup, link);
ISC_LIST_APPEND(lookup_list, lookup, link); ISC_LIST_APPEND(lookup_list, lookup, link);
@@ -828,11 +826,11 @@ do_next_command(char *input) {
(strcasecmp(ptr, "lserver") == 0)) { (strcasecmp(ptr, "lserver") == 0)) {
isc_app_block(); isc_app_block();
set_nameserver(arg); set_nameserver(arg);
check_ra = false; check_ra = ISC_FALSE;
isc_app_unblock(); isc_app_unblock();
show_settings(true, true); show_settings(ISC_TRUE, ISC_TRUE);
} else if (strcasecmp(ptr, "exit") == 0) { } else if (strcasecmp(ptr, "exit") == 0) {
in_use = false; in_use = ISC_FALSE;
} else if (strcasecmp(ptr, "help") == 0 || } else if (strcasecmp(ptr, "help") == 0 ||
strcasecmp(ptr, "?") == 0) { strcasecmp(ptr, "?") == 0) {
printf("The '%s' command is not yet implemented.\n", ptr); printf("The '%s' command is not yet implemented.\n", ptr);
@@ -869,7 +867,7 @@ get_next_command(void) {
ptr = fgets(buf, COMMSIZE, stdin); ptr = fgets(buf, COMMSIZE, stdin);
isc_app_unblock(); isc_app_unblock();
if (ptr == NULL) { if (ptr == NULL) {
in_use = false; in_use = ISC_FALSE;
} else } else
do_next_command(ptr); do_next_command(ptr);
#ifdef HAVE_READLINE #ifdef HAVE_READLINE
@@ -881,9 +879,9 @@ get_next_command(void) {
static void static void
parse_args(int argc, char **argv) { parse_args(int argc, char **argv) {
bool have_lookup = false; isc_boolean_t have_lookup = ISC_FALSE;
usesearch = true; usesearch = ISC_TRUE;
for (argc--, argv++; argc > 0; argc--, argv++) { for (argc--, argv++; argc > 0; argc--, argv++) {
debug("main parsing %s", argv[0]); debug("main parsing %s", argv[0]);
if (argv[0][0] == '-') { if (argv[0][0] == '-') {
@@ -893,15 +891,15 @@ parse_args(int argc, char **argv) {
} else if (argv[0][1] != 0) { } else if (argv[0][1] != 0) {
setoption(&argv[0][1]); setoption(&argv[0][1]);
} else } else
have_lookup = true; have_lookup = ISC_TRUE;
} else { } else {
if (!have_lookup) { if (!have_lookup) {
have_lookup = true; have_lookup = ISC_TRUE;
in_use = true; in_use = ISC_TRUE;
addlookup(argv[0]); addlookup(argv[0]);
} else { } else {
set_nameserver(argv[0]); set_nameserver(argv[0]);
check_ra = false; check_ra = ISC_FALSE;
} }
} }
} }
@@ -923,6 +921,12 @@ flush_lookup_list(void) {
ISC_SOCKCANCEL_ALL); ISC_SOCKCANCEL_ALL);
isc_socket_detach(&q->sock); isc_socket_detach(&q->sock);
} }
if (ISC_LINK_LINKED(&q->recvbuf, link))
ISC_LIST_DEQUEUE(q->recvlist, &q->recvbuf,
link);
if (ISC_LINK_LINKED(&q->lengthbuf, link))
ISC_LIST_DEQUEUE(q->lengthlist, &q->lengthbuf,
link);
isc_buffer_invalidate(&q->recvbuf); isc_buffer_invalidate(&q->recvbuf);
isc_buffer_invalidate(&q->lengthbuf); isc_buffer_invalidate(&q->lengthbuf);
qp = q; qp = q;
@@ -966,13 +970,13 @@ int
main(int argc, char **argv) { main(int argc, char **argv) {
isc_result_t result; isc_result_t result;
interactive = isatty(0); interactive = ISC_TF(isatty(0));
ISC_LIST_INIT(lookup_list); ISC_LIST_INIT(lookup_list);
ISC_LIST_INIT(server_list); ISC_LIST_INIT(server_list);
ISC_LIST_INIT(search_list); ISC_LIST_INIT(search_list);
check_ra = true; check_ra = ISC_TRUE;
/* setup dighost callbacks */ /* setup dighost callbacks */
dighost_printmessage = printmessage; dighost_printmessage = printmessage;
@@ -986,7 +990,7 @@ main(int argc, char **argv) {
setup_libs(); setup_libs();
progname = argv[0]; progname = argv[0];
setup_system(false, false); setup_system(ISC_FALSE, ISC_FALSE);
parse_args(argc, argv); parse_args(argc, argv);
if (keyfile[0] != 0) if (keyfile[0] != 0)
setup_file_key(); setup_file_key();
@@ -1000,7 +1004,7 @@ main(int argc, char **argv) {
else else
result = isc_app_onrun(mctx, global_task, getinput, NULL); result = isc_app_onrun(mctx, global_task, getinput, NULL);
check_result(result, "isc_app_onrun"); check_result(result, "isc_app_onrun");
in_use = !in_use; in_use = ISC_TF(!in_use);
(void)isc_app_run(); (void)isc_app_run();
-16
View File
@@ -478,22 +478,6 @@ nslookup -query=hinfo -timeout=10
</para> </para>
</refsection> </refsection>
<refsection><info><title>IDN SUPPORT</title></info>
<para>
If <command>nslookup</command> has been built with IDN (internationalized
domain name) support, it can accept and display non-ASCII domain names.
<command>nslookup</command> appropriately converts character encoding of
domain name before sending a request to DNS server or displaying a
reply from the server.
If you'd like to turn off the IDN support for some reason, define
the <envar>IDN_DISABLE</envar> environment variable.
The IDN support is disabled if the variable is set when
<command>nslookup</command> runs or when the standard output is not
a tty.
</para>
</refsection>
<refsection><info><title>FILES</title></info> <refsection><info><title>FILES</title></info>
<para><filename>/etc/resolv.conf</filename> <para><filename>/etc/resolv.conf</filename>
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIBD@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@READLINE_LIBD@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIB@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@READLINE_LIB@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+4 -4
View File
@@ -115,12 +115,12 @@ installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8 $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
install:: ${TARGETS} installdirs install:: ${TARGETS} installdirs
for t in ${TARGETS}; do ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} $$t ${DESTDIR}${sbindir} || exit 1; done for t in ${TARGETS}; do ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} $$t ${DESTDIR}${sbindir}; done
for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8 || exit 1; done for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8; done
uninstall:: uninstall::
for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m || exit 1; done for m in ${MANPAGES}; do rm -f ${DESTDIR}${mandir}/man8/$$m ; done
for t in ${TARGETS}; do ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/$$t || exit 1; done for t in ${TARGETS}; do ${LIBTOOL_MODE_UNINSTALL} rm -f ${DESTDIR}${sbindir}/$$t ; done
clean distclean:: clean distclean::
rm -f ${TARGETS} rm -f ${TARGETS}
+45 -47
View File
@@ -19,8 +19,6 @@
#include <config.h> #include <config.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <isc/buffer.h> #include <isc/buffer.h>
@@ -62,7 +60,7 @@
#include "dnssectool.h" #include "dnssectool.h"
#ifndef PATH_MAX #ifndef PATH_MAX
#define PATH_MAX 1024 /* WIN32, and others don't define this. */ #define PATH_MAX 1024 /* AIX, WIN32, and others don't define this. */
#endif #endif
const char *program = "dnssec-cds"; const char *program = "dnssec-cds";
@@ -86,7 +84,7 @@ static dns_rdataclass_t rdclass = dns_rdataclass_in;
* List of digest types used by ds_from_cdnskey(), filled in by add_dtype() * List of digest types used by ds_from_cdnskey(), filled in by add_dtype()
* from -a arguments. The size of the array is an arbitrary limit. * from -a arguments. The size of the array is an arbitrary limit.
*/ */
static uint8_t dtype[8]; static isc_uint8_t dtype[8];
static const char *startstr = NULL; /* from which we derive notbefore */ static const char *startstr = NULL; /* from which we derive notbefore */
static isc_stdtime_t notbefore = 0; /* restrict sig inception times */ static isc_stdtime_t notbefore = 0; /* restrict sig inception times */
@@ -129,7 +127,7 @@ static int nkey; /* number of child zone DNSKEY records */
typedef struct keyinfo { typedef struct keyinfo {
dns_rdata_t rdata; dns_rdata_t rdata;
dst_key_t *dst; dst_key_t *dst;
uint8_t algo; isc_uint8_t algo;
dns_keytag_t tag; dns_keytag_t tag;
} keyinfo_t; } keyinfo_t;
@@ -260,7 +258,7 @@ load_db(const char *filename, dns_db_t **dbp, dns_dbnode_t **nodep) {
isc_result_totext(result)); isc_result_totext(result));
} }
result = dns_db_findnode(*dbp, name, false, nodep); result = dns_db_findnode(*dbp, name, ISC_FALSE, nodep);
if (result != ISC_R_SUCCESS) { if (result != ISC_R_SUCCESS) {
fatal("can't find %s node in %s", namestr, filename); fatal("can't find %s node in %s", namestr, filename);
} }
@@ -314,7 +312,7 @@ get_dsset_name(char *filename, size_t size,
} }
isc_buffer_putstr(&buf, prefix); isc_buffer_putstr(&buf, prefix);
result = dns_name_tofilenametext(name, false, &buf); result = dns_name_tofilenametext(name, ISC_FALSE, &buf);
check_result(result, "dns_name_tofilenametext()"); check_result(result, "dns_name_tofilenametext()");
if (isc_buffer_availablelength(&buf) == 0) { if (isc_buffer_availablelength(&buf) == 0) {
fatal("%s: pathname too long", path); fatal("%s: pathname too long", path);
@@ -402,7 +400,7 @@ formatset(dns_rdataset_t *rdataset) {
static void static void
write_parent_set(const char *path, const char *inplace, write_parent_set(const char *path, const char *inplace,
bool nsupdate, dns_rdataset_t *rdataset) isc_boolean_t nsupdate, dns_rdataset_t *rdataset)
{ {
isc_result_t result; isc_result_t result;
isc_buffer_t *buf = NULL; isc_buffer_t *buf = NULL;
@@ -469,7 +467,7 @@ typedef enum { LOOSE, TIGHT } strictness_t;
/* /*
* Find out if any (C)DS record matches a particular (C)DNSKEY. * Find out if any (C)DS record matches a particular (C)DNSKEY.
*/ */
static bool static isc_boolean_t
match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness) match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
{ {
isc_result_t result; isc_result_t result;
@@ -483,7 +481,7 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
dns_rdata_t dsrdata = DNS_RDATA_INIT; dns_rdata_t dsrdata = DNS_RDATA_INIT;
dns_rdata_t newdsrdata = DNS_RDATA_INIT; dns_rdata_t newdsrdata = DNS_RDATA_INIT;
dns_rdatatype_t keytype; dns_rdatatype_t keytype;
bool c; isc_boolean_t c;
dns_rdataset_current(dsset, &dsrdata); dns_rdataset_current(dsset, &dsrdata);
result = dns_rdata_tostruct(&dsrdata, &ds, NULL); result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
@@ -513,13 +511,13 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
vbprintf(1, "found matching %s %d %d %d\n", vbprintf(1, "found matching %s %d %d %d\n",
c ? "CDS" : "DS", c ? "CDS" : "DS",
ds.key_tag, ds.algorithm, ds.digest_type); ds.key_tag, ds.algorithm, ds.digest_type);
return (true); return (ISC_TRUE);
} else if (strictness == TIGHT) { } else if (strictness == TIGHT) {
vbprintf(0, "key does not match %s %d %d %d " vbprintf(0, "key does not match %s %d %d %d "
"when it looks like it should\n", "when it looks like it should\n",
c ? "CDS" : "DS", c ? "CDS" : "DS",
ds.key_tag, ds.algorithm, ds.digest_type); ds.key_tag, ds.algorithm, ds.digest_type);
return (false); return (ISC_FALSE);
} }
} }
@@ -530,7 +528,7 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
? "CDNSKEY" : "DNSKEY", ? "CDNSKEY" : "DNSKEY",
ki->tag, ki->algo); ki->tag, ki->algo);
return (false); return (ISC_FALSE);
} }
/* /*
@@ -619,12 +617,12 @@ free_keytable(keyinfo_t **keytable_p) {
* otherwise the key algorithm. This is used by the signature coverage * otherwise the key algorithm. This is used by the signature coverage
* check functions below. * check functions below.
*/ */
static uint8_t * static isc_uint8_t *
matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset, matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
dns_rdataset_t *sigset) dns_rdataset_t *sigset)
{ {
isc_result_t result; isc_result_t result;
uint8_t *algo; isc_uint8_t *algo;
int i; int i;
algo = isc_mem_get(mctx, nkey); algo = isc_mem_get(mctx, nkey);
@@ -670,7 +668,7 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
} }
result = dns_dnssec_verify(name, rdataset, ki->dst, result = dns_dnssec_verify(name, rdataset, ki->dst,
false, 0, mctx, ISC_FALSE, 0, mctx,
&sigrdata, NULL); &sigrdata, NULL);
if (result != ISC_R_SUCCESS && if (result != ISC_R_SUCCESS &&
@@ -706,13 +704,13 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
* Consume the result of matching_sigs(). When checking records * Consume the result of matching_sigs(). When checking records
* fetched from the child zone, any working signature is enough. * fetched from the child zone, any working signature is enough.
*/ */
static bool static isc_boolean_t
signed_loose(uint8_t *algo) { signed_loose(isc_uint8_t *algo) {
bool ok = false; isc_boolean_t ok = ISC_FALSE;
int i; int i;
for (i = 0; i < nkey; i++) { for (i = 0; i < nkey; i++) {
if (algo[i] != 0) { if (algo[i] != 0) {
ok = true; ok = ISC_TRUE;
} }
} }
isc_mem_put(mctx, algo, nkey); isc_mem_put(mctx, algo, nkey);
@@ -725,10 +723,10 @@ signed_loose(uint8_t *algo) {
* key algorithm in the DS RRset must have a signature in the DNSKEY * key algorithm in the DS RRset must have a signature in the DNSKEY
* RRset. * RRset.
*/ */
static bool static isc_boolean_t
signed_strict(dns_rdataset_t *dsset, uint8_t *algo) { signed_strict(dns_rdataset_t *dsset, isc_uint8_t *algo) {
isc_result_t result; isc_result_t result;
bool all_ok = true; isc_boolean_t all_ok = ISC_TRUE;
for (result = dns_rdataset_first(dsset); for (result = dns_rdataset_first(dsset);
result == ISC_R_SUCCESS; result == ISC_R_SUCCESS;
@@ -736,23 +734,23 @@ signed_strict(dns_rdataset_t *dsset, uint8_t *algo) {
{ {
dns_rdata_t dsrdata = DNS_RDATA_INIT; dns_rdata_t dsrdata = DNS_RDATA_INIT;
dns_rdata_ds_t ds; dns_rdata_ds_t ds;
bool ds_ok; isc_boolean_t ds_ok;
int i; int i;
dns_rdataset_current(dsset, &dsrdata); dns_rdataset_current(dsset, &dsrdata);
result = dns_rdata_tostruct(&dsrdata, &ds, NULL); result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
check_result(result, "dns_rdata_tostruct(DS)"); check_result(result, "dns_rdata_tostruct(DS)");
ds_ok = false; ds_ok = ISC_FALSE;
for (i = 0; i < nkey; i++) { for (i = 0; i < nkey; i++) {
if (algo[i] == ds.algorithm) { if (algo[i] == ds.algorithm) {
ds_ok = true; ds_ok = ISC_TRUE;
} }
} }
if (!ds_ok) { if (!ds_ok) {
vbprintf(0, "missing signature for algorithm %d " vbprintf(0, "missing signature for algorithm %d "
"(key %d)\n", ds.algorithm, ds.key_tag); "(key %d)\n", ds.algorithm, ds.key_tag);
all_ok = false; all_ok = ISC_FALSE;
} }
} }
@@ -850,14 +848,14 @@ ds_from_cdnskey(dns_rdatalist_t *dslist, isc_buffer_t *buf,
*/ */
static int static int
cmp_dtype(const void *ap, const void *bp) { cmp_dtype(const void *ap, const void *bp) {
int a = *(const uint8_t *)ap; int a = *(const isc_uint8_t *)ap;
int b = *(const uint8_t *)bp; int b = *(const isc_uint8_t *)bp;
return (a - b); return (a - b);
} }
static void static void
add_dtype(const char *dn) { add_dtype(const char *dn) {
uint8_t dt; isc_uint8_t dt;
unsigned i, n; unsigned i, n;
dt = strtodsdigest(dn); dt = strtodsdigest(dn);
@@ -874,7 +872,7 @@ add_dtype(const char *dn) {
static void static void
make_new_ds_set(ds_maker_func_t *ds_from_rdata, make_new_ds_set(ds_maker_func_t *ds_from_rdata,
uint32_t ttl, dns_rdataset_t *rdset) isc_uint32_t ttl, dns_rdataset_t *rdset)
{ {
unsigned int size = 16; unsigned int size = 16;
for (;;) { for (;;) {
@@ -936,14 +934,14 @@ rdata_cmp(const void *rdata1, const void *rdata2) {
* Ensure that every key identified by the DS RRset has the same set of * Ensure that every key identified by the DS RRset has the same set of
* digest types. * digest types.
*/ */
static bool static isc_boolean_t
consistent_digests(dns_rdataset_t *dsset) { consistent_digests(dns_rdataset_t *dsset) {
isc_result_t result; isc_result_t result;
dns_rdata_t *arrdata; dns_rdata_t *arrdata;
dns_rdata_ds_t *ds; dns_rdata_ds_t *ds;
dns_keytag_t key_tag; dns_keytag_t key_tag;
uint8_t algorithm; isc_uint8_t algorithm;
bool match; isc_boolean_t match;
int i, j, n, d; int i, j, n, d;
/* /*
@@ -997,7 +995,7 @@ consistent_digests(dns_rdataset_t *dsset) {
/* /*
* Check subsequent keys match the first one * Check subsequent keys match the first one
*/ */
match = true; match = ISC_TRUE;
while (i < n) { while (i < n) {
key_tag = ds[i].key_tag; key_tag = ds[i].key_tag;
algorithm = ds[i].algorithm; algorithm = ds[i].algorithm;
@@ -1006,7 +1004,7 @@ consistent_digests(dns_rdataset_t *dsset) {
ds[i+j].algorithm != algorithm || ds[i+j].algorithm != algorithm ||
ds[i+j].digest_type != ds[j].digest_type) ds[i+j].digest_type != ds[j].digest_type)
{ {
match = false; match = ISC_FALSE;
} }
} }
i += d; i += d;
@@ -1041,7 +1039,7 @@ print_diff(const char *cmd, dns_rdataset_t *rdataset) {
} }
static void static void
update_diff(const char *cmd, uint32_t ttl, update_diff(const char *cmd, isc_uint32_t ttl,
dns_rdataset_t *addset, dns_rdataset_t *delset) dns_rdataset_t *addset, dns_rdataset_t *delset)
{ {
isc_result_t result; isc_result_t result;
@@ -1049,7 +1047,7 @@ update_diff(const char *cmd, uint32_t ttl,
dns_dbnode_t *node; dns_dbnode_t *node;
dns_dbversion_t *ver; dns_dbversion_t *ver;
dns_rdataset_t diffset; dns_rdataset_t diffset;
uint32_t save; isc_uint32_t save;
db = NULL; db = NULL;
result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone, result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone,
@@ -1061,7 +1059,7 @@ update_diff(const char *cmd, uint32_t ttl,
check_result(result, "dns_db_newversion()"); check_result(result, "dns_db_newversion()");
node = NULL; node = NULL;
result = dns_db_findnode(db, name, true, &node); result = dns_db_findnode(db, name, ISC_TRUE, &node);
check_result(result, "dns_db_findnode()"); check_result(result, "dns_db_findnode()");
dns_rdataset_init(&diffset); dns_rdataset_init(&diffset);
@@ -1085,12 +1083,12 @@ update_diff(const char *cmd, uint32_t ttl,
} }
dns_db_detachnode(db, &node); dns_db_detachnode(db, &node);
dns_db_closeversion(db, &ver, false); dns_db_closeversion(db, &ver, ISC_FALSE);
dns_db_detach(&db); dns_db_detach(&db);
} }
static void static void
nsdiff(uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) { nsdiff(isc_uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) {
if (ttl == 0) { if (ttl == 0) {
vbprintf(1, "warning: no TTL in nsupdate script\n"); vbprintf(1, "warning: no TTL in nsupdate script\n");
} }
@@ -1138,9 +1136,9 @@ main(int argc, char *argv[]) {
const char *ds_path = NULL; const char *ds_path = NULL;
const char *inplace = NULL; const char *inplace = NULL;
isc_result_t result; isc_result_t result;
bool prefer_cdnskey = false; isc_boolean_t prefer_cdnskey = ISC_FALSE;
bool nsupdate = false; isc_boolean_t nsupdate = ISC_FALSE;
uint32_t ttl = 0; isc_uint32_t ttl = 0;
int ch; int ch;
char *endp; char *endp;
@@ -1154,7 +1152,7 @@ main(int argc, char *argv[]) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
#define OPTIONS "a:c:Dd:f:i:ms:T:uv:V" #define OPTIONS "a:c:Dd:f:i:ms:T:uv:V"
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
@@ -1166,7 +1164,7 @@ main(int argc, char *argv[]) {
rdclass = strtoclass(isc_commandline_argument); rdclass = strtoclass(isc_commandline_argument);
break; break;
case 'D': case 'D':
prefer_cdnskey = true; prefer_cdnskey = ISC_TRUE;
break; break;
case 'd': case 'd':
ds_path = isc_commandline_argument; ds_path = isc_commandline_argument;
@@ -1199,7 +1197,7 @@ main(int argc, char *argv[]) {
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
break; break;
case 'u': case 'u':
nsupdate = true; nsupdate = ISC_TRUE;
break; break;
case 'V': case 'V':
/* Does not return. */ /* Does not return. */
+21 -23
View File
@@ -13,8 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <isc/buffer.h> #include <isc/buffer.h>
@@ -50,7 +48,7 @@
#include "dnssectool.h" #include "dnssectool.h"
#ifndef PATH_MAX #ifndef PATH_MAX
#define PATH_MAX 1024 /* WIN32, and others don't define this. */ #define PATH_MAX 1024 /* AIX, WIN32, and others don't define this. */
#endif #endif
const char *program = "dnssec-dsfromkey"; const char *program = "dnssec-dsfromkey";
@@ -60,8 +58,8 @@ static dns_rdataclass_t rdclass;
static dns_fixedname_t fixed; static dns_fixedname_t fixed;
static dns_name_t *name = NULL; static dns_name_t *name = NULL;
static isc_mem_t *mctx = NULL; static isc_mem_t *mctx = NULL;
static uint32_t ttl; static isc_uint32_t ttl;
static bool emitttl = false; static isc_boolean_t emitttl = ISC_FALSE;
static isc_result_t static isc_result_t
initname(char *setname) { initname(char *setname) {
@@ -120,7 +118,7 @@ loadset(const char *filename, dns_rdataset_t *rdataset) {
isc_result_totext(result)); isc_result_totext(result));
} }
result = dns_db_findnode(db, name, false, &node); result = dns_db_findnode(db, name, ISC_FALSE, &node);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fatal("can't find %s node in %s", setname, filename); fatal("can't find %s node in %s", setname, filename);
@@ -161,7 +159,7 @@ loadkeyset(char *dirname, dns_rdataset_t *rdataset) {
return (ISC_R_NOSPACE); return (ISC_R_NOSPACE);
isc_buffer_putstr(&buf, "keyset-"); isc_buffer_putstr(&buf, "keyset-");
result = dns_name_tofilenametext(name, false, &buf); result = dns_name_tofilenametext(name, ISC_FALSE, &buf);
check_result(result, "dns_name_tofilenametext()"); check_result(result, "dns_name_tofilenametext()");
if (isc_buffer_availablelength(&buf) == 0) if (isc_buffer_availablelength(&buf) == 0)
return (ISC_R_NOSPACE); return (ISC_R_NOSPACE);
@@ -235,8 +233,8 @@ logkey(dns_rdata_t *rdata)
} }
static void static void
emit(unsigned int dtype, bool showall, char *lookaside, emit(unsigned int dtype, isc_boolean_t showall, char *lookaside,
bool cds, dns_rdata_t *rdata) isc_boolean_t cds, dns_rdata_t *rdata)
{ {
isc_result_t result; isc_result_t result;
unsigned char buf[DNS_DS_BUFFERSIZE]; unsigned char buf[DNS_DS_BUFFERSIZE];
@@ -265,7 +263,7 @@ emit(unsigned int dtype, bool showall, char *lookaside,
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fatal("can't build record"); fatal("can't build record");
result = dns_name_totext(name, false, &nameb); result = dns_name_totext(name, ISC_FALSE, &nameb);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fatal("can't print name"); fatal("can't print name");
@@ -354,10 +352,10 @@ main(int argc, char **argv) {
char *endp; char *endp;
int ch; int ch;
unsigned int dtype = DNS_DSDIGEST_SHA1; unsigned int dtype = DNS_DSDIGEST_SHA1;
bool cds = false; isc_boolean_t cds = ISC_FALSE;
bool both = true; isc_boolean_t both = ISC_TRUE;
bool usekeyset = false; isc_boolean_t usekeyset = ISC_FALSE;
bool showall = false; isc_boolean_t showall = ISC_FALSE;
isc_result_t result; isc_result_t result;
isc_log_t *log = NULL; isc_log_t *log = NULL;
dns_rdataset_t rdataset; dns_rdataset_t rdataset;
@@ -377,31 +375,31 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
#define OPTIONS "12Aa:Cc:d:Ff:K:l:sT:v:hV" #define OPTIONS "12Aa:Cc:d:Ff:K:l:sT:v:hV"
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
switch (ch) { switch (ch) {
case '1': case '1':
dtype = DNS_DSDIGEST_SHA1; dtype = DNS_DSDIGEST_SHA1;
both = false; both = ISC_FALSE;
break; break;
case '2': case '2':
dtype = DNS_DSDIGEST_SHA256; dtype = DNS_DSDIGEST_SHA256;
both = false; both = ISC_FALSE;
break; break;
case 'A': case 'A':
showall = true; showall = ISC_TRUE;
break; break;
case 'a': case 'a':
dtype = strtodsdigest(isc_commandline_argument); dtype = strtodsdigest(isc_commandline_argument);
both = false; both = ISC_FALSE;
break; break;
case 'C': case 'C':
if (lookaside != NULL) if (lookaside != NULL)
fatal("lookaside and CDS are mutually" fatal("lookaside and CDS are mutually"
" exclusive"); " exclusive");
cds = true; cds = ISC_TRUE;
break; break;
case 'c': case 'c':
classname = isc_commandline_argument; classname = isc_commandline_argument;
@@ -427,10 +425,10 @@ main(int argc, char **argv) {
fatal("lookaside must be a non-empty string"); fatal("lookaside must be a non-empty string");
break; break;
case 's': case 's':
usekeyset = true; usekeyset = ISC_TRUE;
break; break;
case 'T': case 'T':
emitttl = true; emitttl = ISC_TRUE;
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
break; break;
case 'v': case 'v':
@@ -468,7 +466,7 @@ main(int argc, char **argv) {
/* When not using -f, -A is implicit */ /* When not using -f, -A is implicit */
if (filename == NULL) if (filename == NULL)
showall = true; showall = ISC_TRUE;
if (argc < isc_commandline_index + 1 && filename == NULL) if (argc < isc_commandline_index + 1 && filename == NULL)
fatal("the key file name was not specified"); fatal("the key file name was not specified");
+9 -10
View File
@@ -13,7 +13,6 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <isc/buffer.h> #include <isc/buffer.h>
@@ -49,7 +48,7 @@
#include "dnssectool.h" #include "dnssectool.h"
#ifndef PATH_MAX #ifndef PATH_MAX
#define PATH_MAX 1024 /* WIN32, and others don't define this. */ #define PATH_MAX 1024 /* AIX, WIN32, and others don't define this. */
#endif #endif
const char *program = "dnssec-importkey"; const char *program = "dnssec-importkey";
@@ -59,13 +58,13 @@ static dns_rdataclass_t rdclass;
static dns_fixedname_t fixed; static dns_fixedname_t fixed;
static dns_name_t *name = NULL; static dns_name_t *name = NULL;
static isc_mem_t *mctx = NULL; static isc_mem_t *mctx = NULL;
static bool setpub = false, setdel = false; static isc_boolean_t setpub = ISC_FALSE, setdel = ISC_FALSE;
static bool setttl = false; static isc_boolean_t setttl = ISC_FALSE;
static isc_stdtime_t pub = 0, del = 0; static isc_stdtime_t pub = 0, del = 0;
static dns_ttl_t ttl = 0; static dns_ttl_t ttl = 0;
static isc_stdtime_t syncadd = 0, syncdel = 0; static isc_stdtime_t syncadd = 0, syncdel = 0;
static bool setsyncadd = false; static isc_boolean_t setsyncadd = ISC_FALSE;
static bool setsyncdel = false; static isc_boolean_t setsyncdel = ISC_FALSE;
static isc_result_t static isc_result_t
initname(char *setname) { initname(char *setname) {
@@ -125,7 +124,7 @@ loadset(const char *filename, dns_rdataset_t *rdataset) {
isc_result_totext(result)); isc_result_totext(result));
} }
result = dns_db_findnode(db, name, false, &node); result = dns_db_findnode(db, name, ISC_FALSE, &node);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fatal("can't find %s node in %s", setname, filename); fatal("can't find %s node in %s", setname, filename);
@@ -227,7 +226,7 @@ emit(const char *dir, dns_rdata_t *rdata) {
dst_key_free(&tmp); dst_key_free(&tmp);
} }
dst_key_setexternal(key, true); dst_key_setexternal(key, ISC_TRUE);
if (setpub) if (setpub)
dst_key_settime(key, DST_TIME_PUBLISH, pub); dst_key_settime(key, DST_TIME_PUBLISH, pub);
if (setdel) if (setdel)
@@ -316,7 +315,7 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
#define CMDLINE_FLAGS "D:f:hK:L:P:v:V" #define CMDLINE_FLAGS "D:f:hK:L:P:v:V"
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
@@ -347,7 +346,7 @@ main(int argc, char **argv) {
break; break;
case 'L': case 'L':
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
setttl = true; setttl = ISC_TRUE;
break; break;
case 'P': case 'P':
/* -Psync ? */ /* -Psync ? */
+30 -28
View File
@@ -14,8 +14,6 @@
#include <config.h> #include <config.h>
#include <ctype.h> #include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <isc/buffer.h> #include <isc/buffer.h>
@@ -64,8 +62,8 @@ usage(void) {
fprintf(stderr, " name: owner of the key\n"); fprintf(stderr, " name: owner of the key\n");
fprintf(stderr, "Other options:\n"); fprintf(stderr, "Other options:\n");
fprintf(stderr, " -a algorithm: \n" fprintf(stderr, " -a algorithm: \n"
" RSA | RSAMD5 | DH | RSASHA1 |\n" " RSA | RSAMD5 | DH | DSA | RSASHA1 |\n"
" NSEC3RSASHA1 |\n" " NSEC3DSA | NSEC3RSASHA1 |\n"
" RSASHA256 | RSASHA512 |\n" " RSASHA256 | RSASHA512 |\n"
" ECDSAP256SHA256 | ECDSAP384SHA384\n"); " ECDSAP256SHA256 | ECDSAP384SHA384\n");
fprintf(stderr, " -3: use NSEC3-capable algorithm\n"); fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
@@ -129,9 +127,9 @@ main(int argc, char **argv) {
dst_key_t *key = NULL; dst_key_t *key = NULL;
dns_fixedname_t fname; dns_fixedname_t fname;
dns_name_t *name; dns_name_t *name;
uint16_t flags = 0, kskflag = 0, revflag = 0; isc_uint16_t flags = 0, kskflag = 0, revflag = 0;
dns_secalg_t alg; dns_secalg_t alg;
bool oldstyle = false; isc_boolean_t oldstyle = ISC_FALSE;
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
int ch; int ch;
int protocol = -1, signatory = 0; int protocol = -1, signatory = 0;
@@ -148,20 +146,20 @@ main(int argc, char **argv) {
isc_stdtime_t inactive = 0, deltime = 0; isc_stdtime_t inactive = 0, deltime = 0;
isc_stdtime_t now; isc_stdtime_t now;
int prepub = -1; int prepub = -1;
bool setpub = false, setact = false; isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
bool setrev = false, setinact = false; isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
bool setdel = false, setttl = false; isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
bool unsetpub = false, unsetact = false; isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
bool unsetrev = false, unsetinact = false; isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
bool unsetdel = false; isc_boolean_t unsetdel = ISC_FALSE;
bool genonly = false; isc_boolean_t genonly = ISC_FALSE;
bool use_nsec3 = false; isc_boolean_t use_nsec3 = ISC_FALSE;
bool avoid_collisions = true; isc_boolean_t avoid_collisions = ISC_TRUE;
bool exact; isc_boolean_t exact;
unsigned char c; unsigned char c;
isc_stdtime_t syncadd = 0, syncdel = 0; isc_stdtime_t syncadd = 0, syncdel = 0;
bool unsetsyncadd = false, setsyncadd = false; isc_boolean_t unsetsyncadd = ISC_FALSE, setsyncadd = ISC_FALSE;
bool unsetsyncdel = false, setsyncdel = false; isc_boolean_t unsetsyncdel = ISC_FALSE, setsyncdel = ISC_FALSE;
if (argc == 1) if (argc == 1)
usage(); usage();
@@ -173,7 +171,7 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
isc_stdtime_get(&now); isc_stdtime_get(&now);
@@ -181,13 +179,13 @@ main(int argc, char **argv) {
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
switch (ch) { switch (ch) {
case '3': case '3':
use_nsec3 = true; use_nsec3 = ISC_TRUE;
break; break;
case 'a': case 'a':
algname = isc_commandline_argument; algname = isc_commandline_argument;
break; break;
case 'C': case 'C':
oldstyle = true; oldstyle = ISC_TRUE;
break; break;
case 'c': case 'c':
classname = isc_commandline_argument; classname = isc_commandline_argument;
@@ -217,7 +215,7 @@ main(int argc, char **argv) {
break; break;
case 'L': case 'L':
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
setttl = true; setttl = ISC_TRUE;
break; break;
case 'l': case 'l':
label = isc_mem_strdup(mctx, isc_commandline_argument); label = isc_mem_strdup(mctx, isc_commandline_argument);
@@ -240,10 +238,10 @@ main(int argc, char **argv) {
fatal("-v must be followed by a number"); fatal("-v must be followed by a number");
break; break;
case 'y': case 'y':
avoid_collisions = false; avoid_collisions = ISC_FALSE;
break; break;
case 'G': case 'G':
genonly = true; genonly = ISC_TRUE;
break; break;
case 'P': case 'P':
/* -Psync ? */ /* -Psync ? */
@@ -402,9 +400,13 @@ main(int argc, char **argv) {
if (use_nsec3) { if (use_nsec3) {
switch (alg) { switch (alg) {
case DST_ALG_DSA:
alg = DST_ALG_NSEC3DSA;
break;
case DST_ALG_RSASHA1: case DST_ALG_RSASHA1:
alg = DST_ALG_NSEC3RSASHA1; alg = DST_ALG_NSEC3RSASHA1;
break; break;
case DST_ALG_NSEC3DSA:
case DST_ALG_NSEC3RSASHA1: case DST_ALG_NSEC3RSASHA1:
case DST_ALG_RSASHA256: case DST_ALG_RSASHA256:
case DST_ALG_RSASHA512: case DST_ALG_RSASHA512:
@@ -440,14 +442,14 @@ main(int argc, char **argv) {
"prepublication interval."); "prepublication interval.");
if (!setpub && !setact) { if (!setpub && !setact) {
setpub = setact = true; setpub = setact = ISC_TRUE;
publish = now; publish = now;
activate = now + prepub; activate = now + prepub;
} else if (setpub && !setact) { } else if (setpub && !setact) {
setact = true; setact = ISC_TRUE;
activate = publish + prepub; activate = publish + prepub;
} else if (setact && !setpub) { } else if (setact && !setpub) {
setpub = true; setpub = ISC_TRUE;
publish = activate - prepub; publish = activate - prepub;
} }
@@ -530,7 +532,7 @@ main(int argc, char **argv) {
"You can use dnssec-settime -D to " "You can use dnssec-settime -D to "
"change this.\n", program, keystr); "change this.\n", program, keystr);
setpub = setact = true; setpub = setact = ISC_TRUE;
} }
if (nametype == NULL) { if (nametype == NULL) {
+3 -3
View File
@@ -106,7 +106,7 @@
<para> <para>
Selects the cryptographic algorithm. The value of Selects the cryptographic algorithm. The value of
<option>algorithm</option> must be one of RSAMD5, RSASHA1, <option>algorithm</option> must be one of RSAMD5, RSASHA1,
NSEC3RSASHA1, RSASHA256, RSASHA512, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
</para> </para>
<para> <para>
@@ -119,9 +119,9 @@
<para> <para>
These values are case insensitive. In some cases, abbreviations These values are case insensitive. In some cases, abbreviations
are supported, such as ECDSA256 for ECDSAP256SHA256 and are supported, such as ECDSA256 for ECDSAP256SHA256 and
ECDSA384 for ECDSAP384SHA384. If RSASHA1 is specified ECDSA384 for ECDSAP384SHA384. If RSASHA1 or DSA is specified
along with the <option>-3</option> option, then NSEC3RSASHA1 along with the <option>-3</option> option, then NSEC3RSASHA1
will be used instead. or NSEC3DSA will be used instead.
</para> </para>
<para> <para>
As of BIND 9.12.0, this option is mandatory except when using As of BIND 9.12.0, this option is mandatory except when using
+62 -38
View File
@@ -28,8 +28,6 @@
#include <config.h> #include <config.h>
#include <ctype.h> #include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@@ -79,8 +77,8 @@ usage(void) {
fprintf(stderr, "Options:\n"); fprintf(stderr, "Options:\n");
fprintf(stderr, " -K <directory>: write keys into directory\n"); fprintf(stderr, " -K <directory>: write keys into directory\n");
fprintf(stderr, " -a <algorithm>:\n"); fprintf(stderr, " -a <algorithm>:\n");
fprintf(stderr, " RSA | RSAMD5 | RSASHA1 | NSEC3RSASHA1" fprintf(stderr, " RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1"
" |\n"); " | NSEC3DSA |\n");
fprintf(stderr, " RSASHA256 | RSASHA512 |\n"); fprintf(stderr, " RSASHA256 | RSASHA512 |\n");
fprintf(stderr, " ECDSAP256SHA256 | ECDSAP384SHA384 |\n"); fprintf(stderr, " ECDSAP256SHA256 | ECDSAP384SHA384 |\n");
fprintf(stderr, " ED25519 | ED448 | DH\n"); fprintf(stderr, " ED25519 | ED448 | DH\n");
@@ -92,6 +90,10 @@ usage(void) {
fprintf(stderr, " RSASHA256:\t[1024..%d]\n", MAX_RSA); fprintf(stderr, " RSASHA256:\t[1024..%d]\n", MAX_RSA);
fprintf(stderr, " RSASHA512:\t[1024..%d]\n", MAX_RSA); fprintf(stderr, " RSASHA512:\t[1024..%d]\n", MAX_RSA);
fprintf(stderr, " DH:\t\t[128..4096]\n"); fprintf(stderr, " DH:\t\t[128..4096]\n");
fprintf(stderr, " DSA:\t\t[512..1024] and divisible by 64\n");
fprintf(stderr, " NSEC3DSA:\t[512..1024] and divisible "
"by 64\n");
fprintf(stderr, " ECCGOST:\tignored\n");
fprintf(stderr, " ECDSAP256SHA256:\tignored\n"); fprintf(stderr, " ECDSAP256SHA256:\tignored\n");
fprintf(stderr, " ECDSAP384SHA384:\tignored\n"); fprintf(stderr, " ECDSAP384SHA384:\tignored\n");
fprintf(stderr, " ED25519:\tignored\n"); fprintf(stderr, " ED25519:\tignored\n");
@@ -157,6 +159,11 @@ usage(void) {
exit (-1); exit (-1);
} }
static isc_boolean_t
dsa_size_ok(int size) {
return (ISC_TF(size >= 512 && size <= 1024 && size % 64 == 0));
}
static void static void
progress(int p) progress(int p)
{ {
@@ -191,10 +198,10 @@ main(int argc, char **argv) {
dst_key_t *key = NULL; dst_key_t *key = NULL;
dns_fixedname_t fname; dns_fixedname_t fname;
dns_name_t *name; dns_name_t *name;
uint16_t flags = 0, kskflag = 0, revflag = 0; isc_uint16_t flags = 0, kskflag = 0, revflag = 0;
dns_secalg_t alg; dns_secalg_t alg;
bool conflict = false, null_key = false; isc_boolean_t conflict = ISC_FALSE, null_key = ISC_FALSE;
bool oldstyle = false; isc_boolean_t oldstyle = ISC_FALSE;
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
int ch, generator = 0, param = 0; int ch, generator = 0, param = 0;
int protocol = -1, size = -1, signatory = 0; int protocol = -1, size = -1, signatory = 0;
@@ -211,24 +218,24 @@ main(int argc, char **argv) {
int options = DST_TYPE_PRIVATE | DST_TYPE_PUBLIC; int options = DST_TYPE_PRIVATE | DST_TYPE_PUBLIC;
int dbits = 0; int dbits = 0;
dns_ttl_t ttl = 0; dns_ttl_t ttl = 0;
bool use_nsec3 = false; isc_boolean_t use_nsec3 = ISC_FALSE;
isc_stdtime_t publish = 0, activate = 0, revokekey = 0; isc_stdtime_t publish = 0, activate = 0, revokekey = 0;
isc_stdtime_t inactive = 0, deltime = 0; isc_stdtime_t inactive = 0, deltime = 0;
isc_stdtime_t now; isc_stdtime_t now;
int prepub = -1; int prepub = -1;
bool setpub = false, setact = false; isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
bool setrev = false, setinact = false; isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
bool setdel = false, setttl = false; isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
bool unsetpub = false, unsetact = false; isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
bool unsetrev = false, unsetinact = false; isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
bool unsetdel = false; isc_boolean_t unsetdel = ISC_FALSE;
bool genonly = false; isc_boolean_t genonly = ISC_FALSE;
bool quiet = false; isc_boolean_t quiet = ISC_FALSE;
bool show_progress = false; isc_boolean_t show_progress = ISC_FALSE;
unsigned char c; unsigned char c;
isc_stdtime_t syncadd = 0, syncdel = 0; isc_stdtime_t syncadd = 0, syncdel = 0;
bool setsyncadd = false; isc_boolean_t setsyncadd = ISC_FALSE;
bool setsyncdel = false; isc_boolean_t setsyncdel = ISC_FALSE;
if (argc == 1) if (argc == 1)
usage(); usage();
@@ -238,7 +245,7 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
/* /*
* Process memory debugging argument first. * Process memory debugging argument first.
@@ -263,7 +270,7 @@ main(int argc, char **argv) {
break; break;
} }
} }
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS); RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
@@ -272,7 +279,7 @@ main(int argc, char **argv) {
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
switch (ch) { switch (ch) {
case '3': case '3':
use_nsec3 = true; use_nsec3 = ISC_TRUE;
break; break;
case 'a': case 'a':
algname = isc_commandline_argument; algname = isc_commandline_argument;
@@ -283,7 +290,7 @@ main(int argc, char **argv) {
fatal("-b requires a non-negative number"); fatal("-b requires a non-negative number");
break; break;
case 'C': case 'C':
oldstyle = true; oldstyle = ISC_TRUE;
break; break;
case 'c': case 'c':
classname = isc_commandline_argument; classname = isc_commandline_argument;
@@ -299,7 +306,7 @@ main(int argc, char **argv) {
case 'e': case 'e':
fprintf(stderr, fprintf(stderr,
"phased-out option -e " "phased-out option -e "
"(was 'use (RSA) large exponent')\n"); "(was 'use (RSA) large exponent)\n");
break; break;
case 'f': case 'f':
c = (unsigned char)(isc_commandline_argument[0]); c = (unsigned char)(isc_commandline_argument[0]);
@@ -331,7 +338,7 @@ main(int argc, char **argv) {
break; break;
case 'L': case 'L':
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
setttl = true; setttl = ISC_TRUE;
break; break;
case 'n': case 'n':
nametype = isc_commandline_argument; nametype = isc_commandline_argument;
@@ -345,7 +352,7 @@ main(int argc, char **argv) {
"[0..255]"); "[0..255]");
break; break;
case 'q': case 'q':
quiet = true; quiet = ISC_TRUE;
break; break;
case 'r': case 'r':
fatal("The -r option has been deprecated.\n" fatal("The -r option has been deprecated.\n"
@@ -382,7 +389,7 @@ main(int argc, char **argv) {
/* already the default */ /* already the default */
break; break;
case 'G': case 'G':
genonly = true; genonly = ISC_TRUE;
break; break;
case 'P': case 'P':
/* -Psync ? */ /* -Psync ? */
@@ -476,7 +483,7 @@ main(int argc, char **argv) {
} }
if (!isatty(0)) if (!isatty(0))
quiet = true; quiet = ISC_TRUE;
ret = dst_lib_init(mctx, engine); ret = dst_lib_init(mctx, engine);
if (ret != ISC_R_SUCCESS) if (ret != ISC_R_SUCCESS)
@@ -533,12 +540,17 @@ main(int argc, char **argv) {
if (use_nsec3) { if (use_nsec3) {
switch (alg) { switch (alg) {
case DST_ALG_DSA:
alg = DST_ALG_NSEC3DSA;
break;
case DST_ALG_RSASHA1: case DST_ALG_RSASHA1:
alg = DST_ALG_NSEC3RSASHA1; alg = DST_ALG_NSEC3RSASHA1;
break; break;
case DST_ALG_NSEC3DSA:
case DST_ALG_NSEC3RSASHA1: case DST_ALG_NSEC3RSASHA1:
case DST_ALG_RSASHA256: case DST_ALG_RSASHA256:
case DST_ALG_RSASHA512: case DST_ALG_RSASHA512:
case DST_ALG_ECCGOST:
case DST_ALG_ECDSA256: case DST_ALG_ECDSA256:
case DST_ALG_ECDSA384: case DST_ALG_ECDSA384:
case DST_ALG_ED25519: case DST_ALG_ED25519:
@@ -584,6 +596,7 @@ main(int argc, char **argv) {
" to %d\n", size); " to %d\n", size);
} }
break; break;
case DST_ALG_ECCGOST:
case DST_ALG_ECDSA256: case DST_ALG_ECDSA256:
case DST_ALG_ECDSA384: case DST_ALG_ECDSA384:
case DST_ALG_ED25519: case DST_ALG_ED25519:
@@ -601,14 +614,14 @@ main(int argc, char **argv) {
"prepublication interval."); "prepublication interval.");
if (!setpub && !setact) { if (!setpub && !setact) {
setpub = setact = true; setpub = setact = ISC_TRUE;
publish = now; publish = now;
activate = now + prepub; activate = now + prepub;
} else if (setpub && !setact) { } else if (setpub && !setact) {
setact = true; setact = ISC_TRUE;
activate = publish + prepub; activate = publish + prepub;
} else if (setact && !setpub) { } else if (setact && !setpub) {
setpub = true; setpub = ISC_TRUE;
publish = activate - prepub; publish = activate - prepub;
} }
@@ -694,7 +707,7 @@ main(int argc, char **argv) {
"You can use dnssec-settime -D to " "You can use dnssec-settime -D to "
"change this.\n", program, keystr); "change this.\n", program, keystr);
setpub = setact = true; setpub = setact = ISC_TRUE;
} }
switch (alg) { switch (alg) {
@@ -713,6 +726,14 @@ main(int argc, char **argv) {
if (size != 0 && (size < 128 || size > 4096)) if (size != 0 && (size < 128 || size > 4096))
fatal("DH key size %d out of range", size); fatal("DH key size %d out of range", size);
break; break;
case DNS_KEYALG_DSA:
case DNS_KEYALG_NSEC3DSA:
if (size != 0 && !dsa_size_ok(size))
fatal("invalid DSS key size: %d", size);
break;
case DST_ALG_ECCGOST:
size = 256;
break;
case DST_ALG_ECDSA256: case DST_ALG_ECDSA256:
size = 256; size = 256;
break; break;
@@ -785,28 +806,31 @@ main(int argc, char **argv) {
case DNS_KEYALG_NSEC3RSASHA1: case DNS_KEYALG_NSEC3RSASHA1:
case DNS_KEYALG_RSASHA256: case DNS_KEYALG_RSASHA256:
case DNS_KEYALG_RSASHA512: case DNS_KEYALG_RSASHA512:
show_progress = true; show_progress = ISC_TRUE;
break; break;
case DNS_KEYALG_DH: case DNS_KEYALG_DH:
param = generator; param = generator;
break; break;
case DNS_KEYALG_DSA:
case DNS_KEYALG_NSEC3DSA:
case DST_ALG_ECCGOST:
case DST_ALG_ECDSA256: case DST_ALG_ECDSA256:
case DST_ALG_ECDSA384: case DST_ALG_ECDSA384:
case DST_ALG_ED25519: case DST_ALG_ED25519:
case DST_ALG_ED448: case DST_ALG_ED448:
show_progress = true; show_progress = ISC_TRUE;
break; break;
} }
if ((flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY) if ((flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY)
null_key = true; null_key = ISC_TRUE;
isc_buffer_init(&buf, filename, sizeof(filename) - 1); isc_buffer_init(&buf, filename, sizeof(filename) - 1);
do { do {
conflict = false; conflict = ISC_FALSE;
if (!quiet && show_progress) { if (!quiet && show_progress) {
fprintf(stderr, "Generating key pair."); fprintf(stderr, "Generating key pair.");
@@ -927,7 +951,7 @@ main(int argc, char **argv) {
* or another key being revoked. * or another key being revoked.
*/ */
if (key_collision(key, name, directory, mctx, NULL)) { if (key_collision(key, name, directory, mctx, NULL)) {
conflict = true; conflict = ISC_TRUE;
if (null_key) { if (null_key) {
dst_key_free(&key); dst_key_free(&key);
break; break;
@@ -948,7 +972,7 @@ main(int argc, char **argv) {
dst_key_free(&key); dst_key_free(&key);
} }
} while (conflict == true); } while (conflict == ISC_TRUE);
if (conflict) if (conflict)
fatal("cannot generate a null key due to possible key ID " fatal("cannot generate a null key due to possible key ID "
+3 -3
View File
@@ -123,7 +123,7 @@
<para> <para>
Selects the cryptographic algorithm. For DNSSEC keys, the value Selects the cryptographic algorithm. For DNSSEC keys, the value
of <option>algorithm</option> must be one of RSAMD5, RSASHA1, of <option>algorithm</option> must be one of RSAMD5, RSASHA1,
NSEC3RSASHA1, RSASHA256, RSASHA512, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
TKEY, the value must be DH (Diffie Hellman); specifying TKEY, the value must be DH (Diffie Hellman); specifying
his value will automatically set the <option>-T KEY</option> his value will automatically set the <option>-T KEY</option>
@@ -132,9 +132,9 @@
<para> <para>
These values are case insensitive. In some cases, abbreviations These values are case insensitive. In some cases, abbreviations
are supported, such as ECDSA256 for ECDSAP256SHA256 and are supported, such as ECDSA256 for ECDSAP256SHA256 and
ECDSA384 for ECDSAP384SHA384. If RSASHA1 is specified ECDSA384 for ECDSAP384SHA384. If RSASHA1 or DSA is specified
along with the <option>-3</option> option, then NSEC3RSASHA1 along with the <option>-3</option> option, then NSEC3RSASHA1
will be used instead. or NSEC3DSA will be used instead.
</para> </para>
<para> <para>
This parameter <emphasis>must</emphasis> be specified except This parameter <emphasis>must</emphasis> be specified except
+8 -10
View File
@@ -13,8 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@@ -82,11 +80,11 @@ main(int argc, char **argv) {
char *endp; char *endp;
int ch; int ch;
dst_key_t *key = NULL; dst_key_t *key = NULL;
uint32_t flags; isc_uint32_t flags;
isc_buffer_t buf; isc_buffer_t buf;
bool force = false; isc_boolean_t force = ISC_FALSE;
bool removefile = false; isc_boolean_t removefile = ISC_FALSE;
bool id = false; isc_boolean_t id = ISC_FALSE;
if (argc == 1) if (argc == 1)
usage(); usage();
@@ -100,7 +98,7 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:V")) != -1) { while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:V")) != -1) {
switch (ch) { switch (ch) {
@@ -108,7 +106,7 @@ main(int argc, char **argv) {
engine = isc_commandline_argument; engine = isc_commandline_argument;
break; break;
case 'f': case 'f':
force = true; force = ISC_TRUE;
break; break;
case 'K': case 'K':
/* /*
@@ -122,10 +120,10 @@ main(int argc, char **argv) {
} }
break; break;
case 'r': case 'r':
removefile = true; removefile = ISC_TRUE;
break; break;
case 'R': case 'R':
id = true; id = ISC_TRUE;
break; break;
case 'v': case 'v':
verbose = strtol(isc_commandline_argument, &endp, 0); verbose = strtol(isc_commandline_argument, &endp, 0);
+49 -51
View File
@@ -13,8 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
@@ -104,7 +102,7 @@ usage(void) {
} }
static void static void
printtime(dst_key_t *key, int type, const char *tag, bool epoch, printtime(dst_key_t *key, int type, const char *tag, isc_boolean_t epoch,
FILE *stream) FILE *stream)
{ {
isc_result_t result; isc_result_t result;
@@ -143,29 +141,29 @@ main(int argc, char **argv) {
dns_name_t *name = NULL; dns_name_t *name = NULL;
dns_secalg_t alg = 0; dns_secalg_t alg = 0;
unsigned int size = 0; unsigned int size = 0;
uint16_t flags = 0; isc_uint16_t flags = 0;
int prepub = -1; int prepub = -1;
dns_ttl_t ttl = 0; dns_ttl_t ttl = 0;
isc_stdtime_t now; isc_stdtime_t now;
isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0; isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0;
isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0; isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0;
bool setpub = false, setact = false; isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
bool setrev = false, setinact = false; isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
bool setdel = false, setttl = false; isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
bool unsetpub = false, unsetact = false; isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
bool unsetrev = false, unsetinact = false; isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
bool unsetdel = false; isc_boolean_t unsetdel = ISC_FALSE;
bool printcreate = false, printpub = false; isc_boolean_t printcreate = ISC_FALSE, printpub = ISC_FALSE;
bool printact = false, printrev = false; isc_boolean_t printact = ISC_FALSE, printrev = ISC_FALSE;
bool printinact = false, printdel = false; isc_boolean_t printinact = ISC_FALSE, printdel = ISC_FALSE;
bool force = false; isc_boolean_t force = ISC_FALSE;
bool epoch = false; isc_boolean_t epoch = ISC_FALSE;
bool changed = false; isc_boolean_t changed = ISC_FALSE;
isc_log_t *log = NULL; isc_log_t *log = NULL;
isc_stdtime_t syncadd = 0, syncdel = 0; isc_stdtime_t syncadd = 0, syncdel = 0;
bool unsetsyncadd = false, setsyncadd = false; isc_boolean_t unsetsyncadd = ISC_FALSE, setsyncadd = ISC_FALSE;
bool unsetsyncdel = false, setsyncdel = false; isc_boolean_t unsetsyncdel = ISC_FALSE, setsyncdel = ISC_FALSE;
bool printsyncadd = false, printsyncdel = false; isc_boolean_t printsyncadd = ISC_FALSE, printsyncdel = ISC_FALSE;
if (argc == 1) if (argc == 1)
usage(); usage();
@@ -181,7 +179,7 @@ main(int argc, char **argv) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
isc_stdtime_get(&now); isc_stdtime_get(&now);
@@ -192,51 +190,51 @@ main(int argc, char **argv) {
engine = isc_commandline_argument; engine = isc_commandline_argument;
break; break;
case 'f': case 'f':
force = true; force = ISC_TRUE;
break; break;
case 'p': case 'p':
p = isc_commandline_argument; p = isc_commandline_argument;
if (!strcasecmp(p, "all")) { if (!strcasecmp(p, "all")) {
printcreate = true; printcreate = ISC_TRUE;
printpub = true; printpub = ISC_TRUE;
printact = true; printact = ISC_TRUE;
printrev = true; printrev = ISC_TRUE;
printinact = true; printinact = ISC_TRUE;
printdel = true; printdel = ISC_TRUE;
printsyncadd = true; printsyncadd = ISC_TRUE;
printsyncdel = true; printsyncdel = ISC_TRUE;
break; break;
} }
do { do {
switch (*p++) { switch (*p++) {
case 'C': case 'C':
printcreate = true; printcreate = ISC_TRUE;
break; break;
case 'P': case 'P':
if (!strncmp(p, "sync", 4)) { if (!strncmp(p, "sync", 4)) {
p += 4; p += 4;
printsyncadd = true; printsyncadd = ISC_TRUE;
break; break;
} }
printpub = true; printpub = ISC_TRUE;
break; break;
case 'A': case 'A':
printact = true; printact = ISC_TRUE;
break; break;
case 'R': case 'R':
printrev = true; printrev = ISC_TRUE;
break; break;
case 'I': case 'I':
printinact = true; printinact = ISC_TRUE;
break; break;
case 'D': case 'D':
if (!strncmp(p, "sync", 4)) { if (!strncmp(p, "sync", 4)) {
p += 4; p += 4;
printsyncdel = true; printsyncdel = ISC_TRUE;
break; break;
} }
printdel = true; printdel = ISC_TRUE;
break; break;
case ' ': case ' ':
break; break;
@@ -247,7 +245,7 @@ main(int argc, char **argv) {
} while (*p != '\0'); } while (*p != '\0');
break; break;
case 'u': case 'u':
epoch = true; epoch = ISC_TRUE;
break; break;
case 'K': case 'K':
/* /*
@@ -263,7 +261,7 @@ main(int argc, char **argv) {
break; break;
case 'L': case 'L':
ttl = strtottl(isc_commandline_argument); ttl = strtottl(isc_commandline_argument);
setttl = true; setttl = ISC_TRUE;
break; break;
case 'v': case 'v':
verbose = strtol(isc_commandline_argument, &endp, 0); verbose = strtol(isc_commandline_argument, &endp, 0);
@@ -277,7 +275,7 @@ main(int argc, char **argv) {
fatal("-P sync specified more than " fatal("-P sync specified more than "
"once"); "once");
changed = true; changed = ISC_TRUE;
syncadd = strtotime(isc_commandline_argument, syncadd = strtotime(isc_commandline_argument,
now, now, &setsyncadd); now, now, &setsyncadd);
unsetsyncadd = !setsyncadd; unsetsyncadd = !setsyncadd;
@@ -287,7 +285,7 @@ main(int argc, char **argv) {
if (setpub || unsetpub) if (setpub || unsetpub)
fatal("-P specified more than once"); fatal("-P specified more than once");
changed = true; changed = ISC_TRUE;
pub = strtotime(isc_commandline_argument, pub = strtotime(isc_commandline_argument,
now, now, &setpub); now, now, &setpub);
unsetpub = !setpub; unsetpub = !setpub;
@@ -296,7 +294,7 @@ main(int argc, char **argv) {
if (setact || unsetact) if (setact || unsetact)
fatal("-A specified more than once"); fatal("-A specified more than once");
changed = true; changed = ISC_TRUE;
act = strtotime(isc_commandline_argument, act = strtotime(isc_commandline_argument,
now, now, &setact); now, now, &setact);
unsetact = !setact; unsetact = !setact;
@@ -305,7 +303,7 @@ main(int argc, char **argv) {
if (setrev || unsetrev) if (setrev || unsetrev)
fatal("-R specified more than once"); fatal("-R specified more than once");
changed = true; changed = ISC_TRUE;
rev = strtotime(isc_commandline_argument, rev = strtotime(isc_commandline_argument,
now, now, &setrev); now, now, &setrev);
unsetrev = !setrev; unsetrev = !setrev;
@@ -314,7 +312,7 @@ main(int argc, char **argv) {
if (setinact || unsetinact) if (setinact || unsetinact)
fatal("-I specified more than once"); fatal("-I specified more than once");
changed = true; changed = ISC_TRUE;
inact = strtotime(isc_commandline_argument, inact = strtotime(isc_commandline_argument,
now, now, &setinact); now, now, &setinact);
unsetinact = !setinact; unsetinact = !setinact;
@@ -326,7 +324,7 @@ main(int argc, char **argv) {
fatal("-D sync specified more than " fatal("-D sync specified more than "
"once"); "once");
changed = true; changed = ISC_TRUE;
syncdel = strtotime(isc_commandline_argument, syncdel = strtotime(isc_commandline_argument,
now, now, &setsyncdel); now, now, &setsyncdel);
unsetsyncdel = !setsyncdel; unsetsyncdel = !setsyncdel;
@@ -337,7 +335,7 @@ main(int argc, char **argv) {
if (setdel || unsetdel) if (setdel || unsetdel)
fatal("-D specified more than once"); fatal("-D specified more than once");
changed = true; changed = ISC_TRUE;
del = strtotime(isc_commandline_argument, del = strtotime(isc_commandline_argument,
now, now, &setdel); now, now, &setdel);
unsetdel = !setdel; unsetdel = !setdel;
@@ -448,7 +446,7 @@ main(int argc, char **argv) {
"before it is scheduled to be " "before it is scheduled to be "
"inactive.\n", program); "inactive.\n", program);
changed = setpub = setact = true; changed = setpub = setact = ISC_TRUE;
} else { } else {
if (prepub < 0) if (prepub < 0)
prepub = 0; prepub = 0;
@@ -460,10 +458,10 @@ main(int argc, char **argv) {
"prepublication interval."); "prepublication interval.");
if (setpub && !setact) { if (setpub && !setact) {
setact = true; setact = ISC_TRUE;
act = pub + prepub; act = pub + prepub;
} else if (setact && !setpub) { } else if (setact && !setpub) {
setpub = true; setpub = ISC_TRUE;
pub = act - prepub; pub = act - prepub;
} }
@@ -594,11 +592,11 @@ main(int argc, char **argv) {
if (force && !changed) { if (force && !changed) {
dst_key_settime(key, DST_TIME_PUBLISH, now); dst_key_settime(key, DST_TIME_PUBLISH, now);
dst_key_settime(key, DST_TIME_ACTIVATE, now); dst_key_settime(key, DST_TIME_ACTIVATE, now);
changed = true; changed = ISC_TRUE;
} }
if (!changed && setttl) if (!changed && setttl)
changed = true; changed = ISC_TRUE;
/* /*
* Print out time values, if -p was used. * Print out time values, if -p was used.
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -13,7 +13,6 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
@@ -32,6 +31,7 @@
#include <isc/rwlock.h> #include <isc/rwlock.h>
#include <isc/serial.h> #include <isc/serial.h>
#include <isc/stdio.h> #include <isc/stdio.h>
#include <isc/stdlib.h>
#include <isc/string.h> #include <isc/string.h>
#include <isc/time.h> #include <isc/time.h>
#include <isc/util.h> #include <isc/util.h>
@@ -78,8 +78,8 @@ static dns_db_t *gdb; /* The database */
static dns_dbversion_t *gversion; /* The database version */ static dns_dbversion_t *gversion; /* The database version */
static dns_rdataclass_t gclass; /* The class */ static dns_rdataclass_t gclass; /* The class */
static dns_name_t *gorigin; /* The database origin */ static dns_name_t *gorigin; /* The database origin */
static bool ignore_kskflag = false; static isc_boolean_t ignore_kskflag = ISC_FALSE;
static bool keyset_kskonly = false; static isc_boolean_t keyset_kskonly = ISC_FALSE;
/*% /*%
* Load the zone file from disk * Load the zone file from disk
@@ -198,7 +198,7 @@ main(int argc, char *argv[]) {
break; break;
} }
} }
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
check_result(isc_app_start(), "isc_app_start"); check_result(isc_app_start(), "isc_app_start");
result = isc_mem_create(0, 0, &mctx); result = isc_mem_create(0, 0, &mctx);
@@ -210,7 +210,7 @@ main(int argc, char *argv[]) {
#endif #endif
dns_result_register(); dns_result_register();
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
switch (ch) { switch (ch) {
@@ -241,11 +241,11 @@ main(int argc, char *argv[]) {
break; break;
case 'x': case 'x':
keyset_kskonly = true; keyset_kskonly = ISC_TRUE;
break; break;
case 'z': case 'z':
ignore_kskflag = true; ignore_kskflag = ISC_TRUE;
break; break;
case '?': case '?':
@@ -319,7 +319,7 @@ main(int argc, char *argv[]) {
result = dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, NULL, result = dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, NULL,
mctx, ignore_kskflag, keyset_kskonly); mctx, ignore_kskflag, keyset_kskonly);
dns_db_closeversion(gdb, &gversion, false); dns_db_closeversion(gdb, &gversion, ISC_FALSE);
dns_db_detach(&gdb); dns_db_detach(&gdb);
cleanup_logging(&log); cleanup_logging(&log);
+22 -24
View File
@@ -17,8 +17,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef _WIN32 #ifdef _WIN32
@@ -223,10 +221,10 @@ time_units(isc_stdtime_t offset, char *suffix, const char *str) {
return(0); /* silence compiler warning */ return(0); /* silence compiler warning */
} }
static inline bool static inline isc_boolean_t
isnone(const char *str) { isnone(const char *str) {
return ((strcasecmp(str, "none") == 0) || return (ISC_TF((strcasecmp(str, "none") == 0) ||
(strcasecmp(str, "never") == 0)); (strcasecmp(str, "never") == 0)));
} }
dns_ttl_t dns_ttl_t
@@ -246,10 +244,10 @@ strtottl(const char *str) {
} }
isc_stdtime_t isc_stdtime_t
strtotime(const char *str, int64_t now, int64_t base, strtotime(const char *str, isc_int64_t now, isc_int64_t base,
bool *setp) isc_boolean_t *setp)
{ {
int64_t val, offset; isc_int64_t val, offset;
isc_result_t result; isc_result_t result;
const char *orig = str; const char *orig = str;
char *endp; char *endp;
@@ -257,12 +255,12 @@ strtotime(const char *str, int64_t now, int64_t base,
if (isnone(str)) { if (isnone(str)) {
if (setp != NULL) if (setp != NULL)
*setp = false; *setp = ISC_FALSE;
return ((isc_stdtime_t) 0); return ((isc_stdtime_t) 0);
} }
if (setp != NULL) if (setp != NULL)
*setp = true; *setp = ISC_TRUE;
if ((str[0] == '0' || str[0] == '-') && str[1] == '\0') if ((str[0] == '0' || str[0] == '-') && str[1] == '\0')
return ((isc_stdtime_t) 0); return ((isc_stdtime_t) 0);
@@ -399,23 +397,23 @@ set_keyversion(dst_key_t *key) {
} }
} }
bool isc_boolean_t
key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir, key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
isc_mem_t *mctx, bool *exact) isc_mem_t *mctx, isc_boolean_t *exact)
{ {
isc_result_t result; isc_result_t result;
bool conflict = false; isc_boolean_t conflict = ISC_FALSE;
dns_dnsseckeylist_t matchkeys; dns_dnsseckeylist_t matchkeys;
dns_dnsseckey_t *key = NULL; dns_dnsseckey_t *key = NULL;
uint16_t id, oldid; isc_uint16_t id, oldid;
uint32_t rid, roldid; isc_uint32_t rid, roldid;
dns_secalg_t alg; dns_secalg_t alg;
char filename[NAME_MAX]; char filename[ISC_DIR_NAMEMAX];
isc_buffer_t fileb; isc_buffer_t fileb;
isc_stdtime_t now; isc_stdtime_t now;
if (exact != NULL) if (exact != NULL)
*exact = false; *exact = ISC_FALSE;
id = dst_key_id(dstkey); id = dst_key_id(dstkey);
rid = dst_key_rid(dstkey); rid = dst_key_rid(dstkey);
@@ -431,7 +429,7 @@ key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
result = dst_key_buildfilename(dstkey, DST_TYPE_PRIVATE, result = dst_key_buildfilename(dstkey, DST_TYPE_PRIVATE,
dir, &fileb); dir, &fileb);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
return (true); return (ISC_TRUE);
return (isc_file_exists(filename)); return (isc_file_exists(filename));
} }
@@ -439,7 +437,7 @@ key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
isc_stdtime_get(&now); isc_stdtime_get(&now);
result = dns_dnssec_findmatchingkeys(name, dir, now, mctx, &matchkeys); result = dns_dnssec_findmatchingkeys(name, dir, now, mctx, &matchkeys);
if (result == ISC_R_NOTFOUND) if (result == ISC_R_NOTFOUND)
return (false); return (ISC_FALSE);
while (!ISC_LIST_EMPTY(matchkeys) && !conflict) { while (!ISC_LIST_EMPTY(matchkeys) && !conflict) {
key = ISC_LIST_HEAD(matchkeys); key = ISC_LIST_HEAD(matchkeys);
@@ -450,7 +448,7 @@ key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
roldid = dst_key_rid(key->key); roldid = dst_key_rid(key->key);
if (oldid == rid || roldid == id || id == oldid) { if (oldid == rid || roldid == id || id == oldid) {
conflict = true; conflict = ISC_TRUE;
if (id != oldid) { if (id != oldid) {
if (verbose > 1) if (verbose > 1)
fprintf(stderr, "Key ID %d could " fprintf(stderr, "Key ID %d could "
@@ -458,7 +456,7 @@ key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
id, oldid); id, oldid);
} else { } else {
if (exact != NULL) if (exact != NULL)
*exact = true; *exact = ISC_TRUE;
if (verbose > 1) if (verbose > 1)
fprintf(stderr, "Key ID %d exists\n", fprintf(stderr, "Key ID %d exists\n",
id); id);
@@ -480,7 +478,7 @@ key_collision(dst_key_t *dstkey, dns_name_t *name, const char *dir,
return (conflict); return (conflict);
} }
bool isc_boolean_t
isoptarg(const char *arg, char **argv, void(*usage)(void)) { isoptarg(const char *arg, char **argv, void(*usage)(void)) {
if (!strcasecmp(isc_commandline_argument, arg)) { if (!strcasecmp(isc_commandline_argument, arg)) {
if (argv[isc_commandline_index] == NULL) { if (argv[isc_commandline_index] == NULL) {
@@ -492,9 +490,9 @@ isoptarg(const char *arg, char **argv, void(*usage)(void)) {
isc_commandline_argument = argv[isc_commandline_index]; isc_commandline_argument = argv[isc_commandline_index];
/* skip to next arguement */ /* skip to next arguement */
isc_commandline_index++; isc_commandline_index++;
return (true); return (ISC_TRUE);
} }
return (false); return (ISC_FALSE);
} }
#ifdef _WIN32 #ifdef _WIN32
+5 -8
View File
@@ -13,9 +13,6 @@
#ifndef DNSSECTOOL_H #ifndef DNSSECTOOL_H
#define DNSSECTOOL_H 1 #define DNSSECTOOL_H 1
#include <inttypes.h>
#include <stdbool.h>
#include <isc/log.h> #include <isc/log.h>
#include <isc/stdtime.h> #include <isc/stdtime.h>
#include <dns/rdatastruct.h> #include <dns/rdatastruct.h>
@@ -52,8 +49,8 @@ cleanup_logging(isc_log_t **logp);
dns_ttl_t strtottl(const char *str); dns_ttl_t strtottl(const char *str);
isc_stdtime_t isc_stdtime_t
strtotime(const char *str, int64_t now, int64_t base, strtotime(const char *str, isc_int64_t now, isc_int64_t base,
bool *setp); isc_boolean_t *setp);
unsigned int unsigned int
strtodsdigest(const char *str); strtodsdigest(const char *str);
@@ -70,11 +67,11 @@ check_keyversion(dst_key_t *key, char *keystr);
void void
set_keyversion(dst_key_t *key); set_keyversion(dst_key_t *key);
bool isc_boolean_t
key_collision(dst_key_t *key, dns_name_t *name, const char *dir, key_collision(dst_key_t *key, dns_name_t *name, const char *dir,
isc_mem_t *mctx, bool *exact); isc_mem_t *mctx, isc_boolean_t *exact);
bool isc_boolean_t
isoptarg(const char *arg, char **argv, void (*usage)(void)); isoptarg(const char *arg, char **argv, void (*usage)(void));
#ifdef _WIN32 #ifdef _WIN32
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
@IF PYTHON @IF PYTHON
<PostBuildEvent> <PostBuildEvent>
@@ -113,7 +113,7 @@ set PYTHONPATH=.
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
@IF PYTHON @IF PYTHON
<PostBuildEvent> <PostBuildEvent>
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -69,7 +69,7 @@
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@@ -99,7 +99,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -69,7 +69,7 @@
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@@ -99,7 +99,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -69,7 +69,7 @@
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@@ -99,7 +99,7 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
-48
View File
@@ -198,25 +198,6 @@
background-color: #99ddff; background-color: #99ddff;
} }
table.zones {
border: 1px solid grey;
width: 500px;
}
table.zones th {
text-align: center;
border: 1px solid grey;
}
table.zones td {
text-align: center;
font-family: monospace;
}
table.zones td:nth-child(1) {
text-align: right;
}
table.zones td:nth-child(4) {
text-align: right;
}
.totals { .totals {
background-color: rgb(1,169,206); background-color: rgb(1,169,206);
color: #ffffff; color: #ffffff;
@@ -724,35 +705,6 @@
</table> </table>
<br/> <br/>
</xsl:if> </xsl:if>
<xsl:for-each select="views/view">
<xsl:if test="zones/zone">
<h3>Zones for View <xsl:value-of select="@name"/></h3>
<table class="zones">
<tr>
<th>Name</th>
<th>Class</th>
<th>Type</th>
<th>Serial</th>
</tr>
<xsl:for-each select="zones/zone">
<tr>
<td>
<xsl:value-of select="@name"/>
</td>
<td>
<xsl:value-of select="@rdataclass"/>
</td>
<td>
<xsl:value-of select="type"/>
</td>
<td>
<xsl:value-of select="serial"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
<xsl:if test="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]"> <xsl:if test="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]">
<h2>Received QTYPES per view/zone</h2> <h2>Received QTYPES per view/zone</h2>
<xsl:for-each select="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]"> <xsl:for-each select="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]">
-48
View File
@@ -203,25 +203,6 @@ static char xslmsg[] =
" background-color: #99ddff;\n" " background-color: #99ddff;\n"
" }\n" " }\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" " .totals {\n"
" background-color: rgb(1,169,206);\n" " background-color: rgb(1,169,206);\n"
" color: #ffffff;\n" " color: #ffffff;\n"
@@ -729,35 +710,6 @@ static char xslmsg[] =
" </table>\n" " </table>\n"
" <br/>\n" " <br/>\n"
" </xsl:if>\n" " </xsl:if>\n"
" <xsl:for-each select=\"views/view\">\n"
" <xsl:if test=\"zones/zone\">\n"
" <h3>Zones for View <xsl:value-of select=\"@name\"/></h3>\n"
" <table class=\"zones\">\n"
" <tr>\n"
" <th>Name</th>\n"
" <th>Class</th>\n"
" <th>Type</th>\n"
" <th>Serial</th>\n"
" </tr>\n"
" <xsl:for-each select=\"zones/zone\">\n"
" <tr>\n"
" <td>\n"
" <xsl:value-of select=\"@name\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"@rdataclass\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"type\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"serial\"/>\n"
" </td>\n"
" </tr>\n"
" </xsl:for-each>\n"
" </table>\n"
" </xsl:if>\n"
" </xsl:for-each>\n"
" <xsl:if test=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]\">\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" " <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" " <xsl:for-each select=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]\">\n"
+21 -40
View File
@@ -13,7 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdlib.h> #include <stdlib.h>
#include <isc/buffer.h> #include <isc/buffer.h>
@@ -301,21 +300,6 @@ view \"_bind\" chaos {\n\
MANAGED_KEYS MANAGED_KEYS
"# END MANAGED KEYS\n\ "# END MANAGED KEYS\n\
\n\
masters " DEFAULT_IANA_ROOT_ZONE_MASTERS " {\n\
2001:500:84::b; # b.root-servers.net\n\
2001:500:2f::f; # f.root-servers.net\n\
2001:7fd::1; # k.root-servers.net\n\
2620:0:2830:202::132; # xfr.cjr.dns.icann.org\n\
2620:0:2d0:202::132; # xfr.lax.dns.icann.org\n\
192.228.79.201; # b.root-servers.net\n\
192.33.4.12; # c.root-servers.net\n\
192.5.5.241; # f.root-servers.net\n\
192.112.36.4; # g.root-servers.net\n\
193.0.14.129; # k.root-servers.net\n\
192.0.47.132; # xfr.cjr.dns.icann.org\n\
192.0.32.132; # xfr.lax.dns.icann.org\n\
};\n\
"; ";
isc_result_t isc_result_t
@@ -447,8 +431,6 @@ named_config_getzonetype(const cfg_obj_t *zonetypeobj) {
strcasecmp(str, "slave") == 0) strcasecmp(str, "slave") == 0)
{ {
ztype = dns_zone_slave; ztype = dns_zone_slave;
} else if (strcasecmp(str, "mirror") == 0) {
ztype = dns_zone_mirror;
} else if (strcasecmp(str, "stub") == 0) { } else if (strcasecmp(str, "stub") == 0) {
ztype = dns_zone_stub; ztype = dns_zone_stub;
} else if (strcasecmp(str, "static-stub") == 0) { } else if (strcasecmp(str, "static-stub") == 0) {
@@ -465,7 +447,7 @@ isc_result_t
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list, named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
in_port_t defport, isc_mem_t *mctx, in_port_t defport, isc_mem_t *mctx,
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp, isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
uint32_t *countp) isc_uint32_t *countp)
{ {
int count, i = 0; int count, i = 0;
const cfg_obj_t *addrlist; const cfg_obj_t *addrlist;
@@ -485,8 +467,8 @@ named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
portobj = cfg_tuple_get(list, "port"); portobj = cfg_tuple_get(list, "port");
if (cfg_obj_isuint32(portobj)) { if (cfg_obj_isuint32(portobj)) {
uint32_t val = cfg_obj_asuint32(portobj); isc_uint32_t val = cfg_obj_asuint32(portobj);
if (val > UINT16_MAX) { if (val > ISC_UINT16_MAX) {
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR, cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
"port '%u' out of range", val); "port '%u' out of range", val);
return (ISC_R_RANGE); return (ISC_R_RANGE);
@@ -556,7 +538,7 @@ named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
void void
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp, named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
isc_dscp_t **dscpsp, uint32_t count) isc_dscp_t **dscpsp, isc_uint32_t count)
{ {
INSIST(addrsp != NULL && *addrsp != NULL); INSIST(addrsp != NULL && *addrsp != NULL);
INSIST(dscpsp == NULL || *dscpsp != NULL); INSIST(dscpsp == NULL || *dscpsp != NULL);
@@ -570,9 +552,9 @@ named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
} }
} }
isc_result_t static isc_result_t
named_config_getmastersdef(const cfg_obj_t *cctx, const char *name, get_masters_def(const cfg_obj_t *cctx, const char *name,
const cfg_obj_t **ret) const cfg_obj_t **ret)
{ {
isc_result_t result; isc_result_t result;
const cfg_obj_t *masters = NULL; const cfg_obj_t *masters = NULL;
@@ -602,9 +584,9 @@ isc_result_t
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
isc_mem_t *mctx, dns_ipkeylist_t *ipkl) isc_mem_t *mctx, dns_ipkeylist_t *ipkl)
{ {
uint32_t addrcount = 0, dscpcount = 0, keycount = 0, i = 0; isc_uint32_t addrcount = 0, dscpcount = 0, keycount = 0, i = 0;
uint32_t listcount = 0, l = 0, j; isc_uint32_t listcount = 0, l = 0, j;
uint32_t stackcount = 0, pushed = 0; isc_uint32_t stackcount = 0, pushed = 0;
isc_result_t result; isc_result_t result;
const cfg_listelt_t *element; const cfg_listelt_t *element;
const cfg_obj_t *addrlist; const cfg_obj_t *addrlist;
@@ -648,8 +630,8 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
dscpobj = cfg_tuple_get(list, "dscp"); dscpobj = cfg_tuple_get(list, "dscp");
if (cfg_obj_isuint32(portobj)) { if (cfg_obj_isuint32(portobj)) {
uint32_t val = cfg_obj_asuint32(portobj); isc_uint32_t val = cfg_obj_asuint32(portobj);
if (val > UINT16_MAX) { if (val > ISC_UINT16_MAX) {
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR, cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
"port '%u' out of range", val); "port '%u' out of range", val);
result = ISC_R_RANGE; result = ISC_R_RANGE;
@@ -693,7 +675,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
/* Grow lists? */ /* Grow lists? */
if (listcount == l) { if (listcount == l) {
void * tmp; void * tmp;
uint32_t newlen = listcount + 16; isc_uint32_t newlen = listcount + 16;
size_t newsize, oldsize; size_t newsize, oldsize;
newsize = newlen * sizeof(*lists); newsize = newlen * sizeof(*lists);
@@ -714,8 +696,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
break; break;
if (j < l) if (j < l)
continue; continue;
tresult = named_config_getmastersdef(config, listname, tresult = get_masters_def(config, listname, &list);
&list);
if (tresult == ISC_R_NOTFOUND) { if (tresult == ISC_R_NOTFOUND) {
cfg_obj_log(addr, named_g_lctx, ISC_LOG_ERROR, cfg_obj_log(addr, named_g_lctx, ISC_LOG_ERROR,
"masters \"%s\" not found", listname); "masters \"%s\" not found", listname);
@@ -729,7 +710,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
/* Grow stack? */ /* Grow stack? */
if (stackcount == pushed) { if (stackcount == pushed) {
void * tmp; void * tmp;
uint32_t newlen = stackcount + 16; isc_uint32_t newlen = stackcount + 16;
size_t newsize, oldsize; size_t newsize, oldsize;
newsize = newlen * sizeof(*stack); newsize = newlen * sizeof(*stack);
@@ -757,7 +738,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
if (i == addrcount) { if (i == addrcount) {
void * tmp; void * tmp;
uint32_t newlen = addrcount + 16; isc_uint32_t newlen = addrcount + 16;
size_t newsize, oldsize; size_t newsize, oldsize;
newsize = newlen * sizeof(isc_sockaddr_t); newsize = newlen * sizeof(isc_sockaddr_t);
@@ -930,7 +911,7 @@ named_config_getport(const cfg_obj_t *config, in_port_t *portp) {
result = named_config_get(maps, "port", &portobj); result = named_config_get(maps, "port", &portobj);
INSIST(result == ISC_R_SUCCESS); INSIST(result == ISC_R_SUCCESS);
if (cfg_obj_asuint32(portobj) >= UINT16_MAX) { if (cfg_obj_asuint32(portobj) >= ISC_UINT16_MAX) {
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR, cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
"port '%u' out of range", "port '%u' out of range",
cfg_obj_asuint32(portobj)); cfg_obj_asuint32(portobj));
@@ -970,7 +951,7 @@ struct keyalgorithms {
enum { hmacnone, hmacmd5, hmacsha1, hmacsha224, enum { hmacnone, hmacmd5, hmacsha1, hmacsha224,
hmacsha256, hmacsha384, hmacsha512 } hmac; hmacsha256, hmacsha384, hmacsha512 } hmac;
unsigned int type; unsigned int type;
uint16_t size; isc_uint16_t size;
} algorithms[] = { } algorithms[] = {
{ "hmac-md5", hmacmd5, DST_ALG_HMACMD5, 128 }, { "hmac-md5", hmacmd5, DST_ALG_HMACMD5, 128 },
{ "hmac-md5.sig-alg.reg.int", hmacmd5, DST_ALG_HMACMD5, 0 }, { "hmac-md5.sig-alg.reg.int", hmacmd5, DST_ALG_HMACMD5, 0 },
@@ -985,18 +966,18 @@ struct keyalgorithms {
isc_result_t isc_result_t
named_config_getkeyalgorithm(const char *str, const dns_name_t **name, named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
uint16_t *digestbits) isc_uint16_t *digestbits)
{ {
return (named_config_getkeyalgorithm2(str, name, NULL, digestbits)); return (named_config_getkeyalgorithm2(str, name, NULL, digestbits));
} }
isc_result_t isc_result_t
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name, named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
unsigned int *typep, uint16_t *digestbits) unsigned int *typep, isc_uint16_t *digestbits)
{ {
int i; int i;
size_t len = 0; size_t len = 0;
uint16_t bits; isc_uint16_t bits;
isc_result_t result; isc_result_t result;
for (i = 0; algorithms[i].str != NULL; i++) { for (i = 0; algorithms[i].str != NULL; i++) {
+9 -10
View File
@@ -14,7 +14,6 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <isc/app.h> #include <isc/app.h>
#include <isc/event.h> #include <isc/event.h>
@@ -60,9 +59,9 @@ getcommand(isc_lex_t *lex, char **cmdp) {
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }
static inline bool static inline isc_boolean_t
command_compare(const char *str, const char *command) { command_compare(const char *str, const char *command) {
return (strcasecmp(str, command) == 0); return ISC_TF(strcasecmp(str, command) == 0);
} }
/*% /*%
@@ -70,7 +69,7 @@ command_compare(const char *str, const char *command) {
* when a control channel message is received. * when a control channel message is received.
*/ */
isc_result_t isc_result_t
named_control_docommand(isccc_sexpr_t *message, bool readonly, named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
isc_buffer_t **text) isc_buffer_t **text)
{ {
isccc_sexpr_t *data; isccc_sexpr_t *data;
@@ -185,7 +184,7 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
*/ */
#endif #endif
/* Do not flush master files */ /* Do not flush master files */
named_server_flushonshutdown(named_g_server, false); named_server_flushonshutdown(named_g_server, ISC_FALSE);
named_os_shutdownmsg(cmdline, *text); named_os_shutdownmsg(cmdline, *text);
isc_app_shutdown(); isc_app_shutdown();
result = ISC_R_SUCCESS; result = ISC_R_SUCCESS;
@@ -202,7 +201,7 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
if (named_smf_got_instance == 1 && named_smf_chroot == 0) if (named_smf_got_instance == 1 && named_smf_chroot == 0)
named_smf_want_disable = 1; named_smf_want_disable = 1;
#endif #endif
named_server_flushonshutdown(named_g_server, true); named_server_flushonshutdown(named_g_server, ISC_TRUE);
named_os_shutdownmsg(cmdline, *text); named_os_shutdownmsg(cmdline, *text);
isc_app_shutdown(); isc_app_shutdown();
result = ISC_R_SUCCESS; result = ISC_R_SUCCESS;
@@ -224,9 +223,9 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
} else if (command_compare(command, NAMED_COMMAND_FLUSH)) { } else if (command_compare(command, NAMED_COMMAND_FLUSH)) {
result = named_server_flushcache(named_g_server, lex); result = named_server_flushcache(named_g_server, lex);
} else if (command_compare(command, NAMED_COMMAND_FLUSHNAME)) { } else if (command_compare(command, NAMED_COMMAND_FLUSHNAME)) {
result = named_server_flushnode(named_g_server, lex, false); result = named_server_flushnode(named_g_server, lex, ISC_FALSE);
} else if (command_compare(command, NAMED_COMMAND_FLUSHTREE)) { } else if (command_compare(command, NAMED_COMMAND_FLUSHTREE)) {
result = named_server_flushnode(named_g_server, lex, true); result = named_server_flushnode(named_g_server, lex, ISC_TRUE);
} else if (command_compare(command, NAMED_COMMAND_STATUS)) { } else if (command_compare(command, NAMED_COMMAND_STATUS)) {
result = named_server_status(named_g_server, text); result = named_server_status(named_g_server, text);
} else if (command_compare(command, NAMED_COMMAND_TSIGLIST)) { } else if (command_compare(command, NAMED_COMMAND_TSIGLIST)) {
@@ -234,11 +233,11 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
} else if (command_compare(command, NAMED_COMMAND_TSIGDELETE)) { } else if (command_compare(command, NAMED_COMMAND_TSIGDELETE)) {
result = named_server_tsigdelete(named_g_server, lex, text); result = named_server_tsigdelete(named_g_server, lex, text);
} else if (command_compare(command, NAMED_COMMAND_FREEZE)) { } else if (command_compare(command, NAMED_COMMAND_FREEZE)) {
result = named_server_freeze(named_g_server, true, lex, result = named_server_freeze(named_g_server, ISC_TRUE, lex,
text); text);
} else if (command_compare(command, NAMED_COMMAND_UNFREEZE) || } else if (command_compare(command, NAMED_COMMAND_UNFREEZE) ||
command_compare(command, NAMED_COMMAND_THAW)) { command_compare(command, NAMED_COMMAND_THAW)) {
result = named_server_freeze(named_g_server, false, lex, result = named_server_freeze(named_g_server, ISC_FALSE, lex,
text); text);
} else if (command_compare(command, NAMED_COMMAND_SCAN)) { } else if (command_compare(command, NAMED_COMMAND_SCAN)) {
result = ISC_R_SUCCESS; result = ISC_R_SUCCESS;
+37 -36
View File
@@ -13,9 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <isc/base64.h> #include <isc/base64.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/event.h> #include <isc/event.h>
@@ -68,7 +65,7 @@ typedef ISC_LIST(controllistener_t) controllistenerlist_t;
struct controlkey { struct controlkey {
char * keyname; char * keyname;
uint32_t algorithm; isc_uint32_t algorithm;
isc_region_t secret; isc_region_t secret;
ISC_LINK(controlkey_t) link; ISC_LINK(controlkey_t) link;
}; };
@@ -76,12 +73,12 @@ struct controlkey {
struct controlconnection { struct controlconnection {
isc_socket_t * sock; isc_socket_t * sock;
isccc_ccmsg_t ccmsg; isccc_ccmsg_t ccmsg;
bool ccmsg_valid; isc_boolean_t ccmsg_valid;
bool sending; isc_boolean_t sending;
isc_timer_t * timer; isc_timer_t * timer;
isc_buffer_t * buffer; isc_buffer_t * buffer;
controllistener_t * listener; controllistener_t * listener;
uint32_t nonce; isc_uint32_t nonce;
ISC_LINK(controlconnection_t) link; ISC_LINK(controlconnection_t) link;
}; };
@@ -92,22 +89,22 @@ struct controllistener {
isc_sockaddr_t address; isc_sockaddr_t address;
isc_socket_t * sock; isc_socket_t * sock;
dns_acl_t * acl; dns_acl_t * acl;
bool listening; isc_boolean_t listening;
bool exiting; isc_boolean_t exiting;
controlkeylist_t keys; controlkeylist_t keys;
controlconnectionlist_t connections; controlconnectionlist_t connections;
isc_sockettype_t type; isc_sockettype_t type;
uint32_t perm; isc_uint32_t perm;
uint32_t owner; isc_uint32_t owner;
uint32_t group; isc_uint32_t group;
bool readonly; isc_boolean_t readonly;
ISC_LINK(controllistener_t) link; ISC_LINK(controllistener_t) link;
}; };
struct named_controls { struct named_controls {
named_server_t *server; named_server_t *server;
controllistenerlist_t listeners; controllistenerlist_t listeners;
bool shuttingdown; isc_boolean_t shuttingdown;
isccc_symtab_t *symtab; isccc_symtab_t *symtab;
}; };
@@ -205,8 +202,8 @@ shutdown_listener(controllistener_t *listener) {
NAMED_LOGMODULE_CONTROL, ISC_LOG_NOTICE, NAMED_LOGMODULE_CONTROL, ISC_LOG_NOTICE,
"stopping command channel on %s", socktext); "stopping command channel on %s", socktext);
if (listener->type == isc_sockettype_unix) if (listener->type == isc_sockettype_unix)
isc_socket_cleanunix(&listener->address, true); isc_socket_cleanunix(&listener->address, ISC_TRUE);
listener->exiting = true; listener->exiting = ISC_TRUE;
} }
for (conn = ISC_LIST_HEAD(listener->connections); for (conn = ISC_LIST_HEAD(listener->connections);
@@ -224,7 +221,7 @@ shutdown_listener(controllistener_t *listener) {
maybe_free_listener(listener); maybe_free_listener(listener);
} }
static bool static isc_boolean_t
address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) { address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) {
dns_aclenv_t *env = dns_aclenv_t *env =
ns_interfacemgr_getaclenv(named_g_server->interfacemgr); ns_interfacemgr_getaclenv(named_g_server->interfacemgr);
@@ -235,7 +232,11 @@ address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) {
isc_netaddr_fromsockaddr(&netaddr, sockaddr); isc_netaddr_fromsockaddr(&netaddr, sockaddr);
result = dns_acl_match(&netaddr, NULL, acl, env, &match, NULL); result = dns_acl_match(&netaddr, NULL, acl, env, &match, NULL);
return (result == ISC_R_SUCCESS && match > 0); if (result != ISC_R_SUCCESS || match <= 0) {
return (ISC_FALSE);
} else {
return (ISC_TRUE);
}
} }
static isc_result_t static isc_result_t
@@ -249,7 +250,7 @@ control_accept(controllistener_t *listener) {
"isc_socket_accept() failed: %s", "isc_socket_accept() failed: %s",
isc_result_totext(result)); isc_result_totext(result));
else else
listener->listening = true; listener->listening = ISC_TRUE;
return (result); return (result);
} }
@@ -282,7 +283,7 @@ control_senddone(isc_task_t *task, isc_event_t *event) {
UNUSED(task); UNUSED(task);
conn->sending = false; conn->sending = ISC_FALSE;
if (sevent->result != ISC_R_SUCCESS && if (sevent->result != ISC_R_SUCCESS &&
sevent->result != ISC_R_CANCELED) sevent->result != ISC_R_CANCELED)
@@ -328,7 +329,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
controlkey_t *key = NULL; controlkey_t *key = NULL;
isccc_sexpr_t *request = NULL; isccc_sexpr_t *request = NULL;
isccc_sexpr_t *response = NULL; isccc_sexpr_t *response = NULL;
uint32_t algorithm; isc_uint32_t algorithm;
isccc_region_t secret; isccc_region_t secret;
isc_stdtime_t now; isc_stdtime_t now;
isc_buffer_t b; isc_buffer_t b;
@@ -339,7 +340,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
isccc_sexpr_t *_ctrl = NULL; isccc_sexpr_t *_ctrl = NULL;
isccc_time_t sent; isccc_time_t sent;
isccc_time_t exp; isccc_time_t exp;
uint32_t nonce; isc_uint32_t nonce;
isccc_sexpr_t *data = NULL; isccc_sexpr_t *data = NULL;
REQUIRE(event->ev_type == ISCCC_EVENT_CCMSG); REQUIRE(event->ev_type == ISCCC_EVENT_CCMSG);
@@ -519,7 +520,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
result = isc_socket_send(conn->sock, &r, task, control_senddone, conn); result = isc_socket_send(conn->sock, &r, task, control_senddone, conn);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
goto cleanup_response; goto cleanup_response;
conn->sending = true; conn->sending = ISC_TRUE;
isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret)); isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
isccc_sexpr_free(&request); isccc_sexpr_free(&request);
@@ -539,7 +540,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
cleanup: cleanup:
isc_socket_detach(&conn->sock); isc_socket_detach(&conn->sock);
isccc_ccmsg_invalidate(&conn->ccmsg); isccc_ccmsg_invalidate(&conn->ccmsg);
conn->ccmsg_valid = false; conn->ccmsg_valid = ISC_FALSE;
maybe_free_connection(conn); maybe_free_connection(conn);
maybe_free_listener(listener); maybe_free_listener(listener);
} }
@@ -572,8 +573,8 @@ newconnection(controllistener_t *listener, isc_socket_t *sock) {
/* Set a 32 KiB upper limit on incoming message. */ /* Set a 32 KiB upper limit on incoming message. */
isccc_ccmsg_setmaxsize(&conn->ccmsg, 32768); isccc_ccmsg_setmaxsize(&conn->ccmsg, 32768);
conn->ccmsg_valid = true; conn->ccmsg_valid = ISC_TRUE;
conn->sending = false; conn->sending = ISC_FALSE;
conn->buffer = NULL; conn->buffer = NULL;
conn->timer = NULL; conn->timer = NULL;
isc_interval_set(&interval, 60, 0); isc_interval_set(&interval, 60, 0);
@@ -620,7 +621,7 @@ control_newconn(isc_task_t *task, isc_event_t *event) {
UNUSED(task); UNUSED(task);
listener->listening = false; listener->listening = ISC_FALSE;
if (nevent->result != ISC_R_SUCCESS) { if (nevent->result != ISC_R_SUCCESS) {
if (nevent->result == ISC_R_CANCELED) { if (nevent->result == ISC_R_CANCELED) {
@@ -684,7 +685,7 @@ controls_shutdown(named_controls_t *controls) {
void void
named_controls_shutdown(named_controls_t *controls) { named_controls_shutdown(named_controls_t *controls) {
controls_shutdown(controls); controls_shutdown(controls);
controls->shuttingdown = true; controls->shuttingdown = ISC_TRUE;
} }
static isc_result_t static isc_result_t
@@ -1090,7 +1091,7 @@ update_listener(named_controls_t *cp, controllistener_t **listenerp,
socktext, isc_result_totext(result)); socktext, isc_result_totext(result));
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) { if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) {
uint32_t perm, owner, group; isc_uint32_t perm, owner, group;
perm = cfg_obj_asuint32(cfg_tuple_get(control, "perm")); perm = cfg_obj_asuint32(cfg_tuple_get(control, "perm"));
owner = cfg_obj_asuint32(cfg_tuple_get(control, "owner")); owner = cfg_obj_asuint32(cfg_tuple_get(control, "owner"));
group = cfg_obj_asuint32(cfg_tuple_get(control, "group")); group = cfg_obj_asuint32(cfg_tuple_get(control, "group"));
@@ -1137,14 +1138,14 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
listener->task = cp->server->task; listener->task = cp->server->task;
listener->address = *addr; listener->address = *addr;
listener->sock = NULL; listener->sock = NULL;
listener->listening = false; listener->listening = ISC_FALSE;
listener->exiting = false; listener->exiting = ISC_FALSE;
listener->acl = NULL; listener->acl = NULL;
listener->type = type; listener->type = type;
listener->perm = 0; listener->perm = 0;
listener->owner = 0; listener->owner = 0;
listener->group = 0; listener->group = 0;
listener->readonly = false; listener->readonly = ISC_FALSE;
ISC_LINK_INIT(listener, link); ISC_LINK_INIT(listener, link);
ISC_LIST_INIT(listener->keys); ISC_LIST_INIT(listener->keys);
ISC_LIST_INIT(listener->connections); ISC_LIST_INIT(listener->connections);
@@ -1207,7 +1208,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
} }
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) if (result == ISC_R_SUCCESS && type == isc_sockettype_unix)
isc_socket_cleanunix(&listener->address, false); isc_socket_cleanunix(&listener->address, ISC_FALSE);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
result = isc_socket_create(named_g_socketmgr, result = isc_socket_create(named_g_socketmgr,
@@ -1218,7 +1219,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
#ifndef ISC_ALLOW_MAPPED #ifndef ISC_ALLOW_MAPPED
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
isc_socket_ipv6only(listener->sock, true); isc_socket_ipv6only(listener->sock, ISC_TRUE);
#endif #endif
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
@@ -1249,7 +1250,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
} else { } else {
if (listener != NULL) { if (listener != NULL) {
listener->exiting = true; listener->exiting = ISC_TRUE;
free_listener(listener); free_listener(listener);
} }
@@ -1509,7 +1510,7 @@ named_controls_create(named_server_t *server, named_controls_t **ctrlsp) {
return (ISC_R_NOMEMORY); return (ISC_R_NOMEMORY);
controls->server = server; controls->server = server;
ISC_LIST_INIT(controls->listeners); ISC_LIST_INIT(controls->listeners);
controls->shuttingdown = false; controls->shuttingdown = ISC_FALSE;
controls->symtab = NULL; controls->symtab = NULL;
result = isccc_cc_createsymtab(&controls->symtab); result = isccc_cc_createsymtab(&controls->symtab);
if (result != ISC_R_SUCCESS) { if (result != ISC_R_SUCCESS) {
+25 -30
View File
@@ -9,10 +9,7 @@
* information regarding copyright ownership. * information regarding copyright ownership.
*/ */
#include <config.h> #include "config.h"
#include <inttypes.h>
#include <stdbool.h>
#include <named/fuzz.h> #include <named/fuzz.h>
@@ -36,6 +33,10 @@
#include <unistd.h> #include <unistd.h>
#include <pthread.h> #include <pthread.h>
#ifndef __AFL_LOOP
#error To use American Fuzzy Lop you have to set CC to afl-clang-fast!!!
#endif
/* /*
* We are using pthreads directly because we might be using it with * We are using pthreads directly because we might be using it with
* unthreaded version of BIND, where all thread functions are * unthreaded version of BIND, where all thread functions are
@@ -43,7 +44,7 @@
*/ */
static pthread_cond_t cond; static pthread_cond_t cond;
static pthread_mutex_t mutex; static pthread_mutex_t mutex;
static bool ready; static isc_boolean_t ready;
/* /*
* In "client:" mode, this thread reads fuzzed query messages from AFL * In "client:" mode, this thread reads fuzzed query messages from AFL
@@ -57,6 +58,7 @@ fuzz_thread_client(void *arg) {
char *port; char *port;
struct sockaddr_in servaddr; struct sockaddr_in servaddr;
int sockfd; int sockfd;
int loop;
void *buf; void *buf;
UNUSED(arg); UNUSED(arg);
@@ -98,18 +100,14 @@ fuzz_thread_client(void *arg) {
* Processing fuzzed packets 100,000 times before shutting down * Processing fuzzed packets 100,000 times before shutting down
* the app. * the app.
*/ */
#ifdef __AFL_LOOP for (loop = 0; loop < 100000; loop++) {
for (int loop = 0; loop < 100000; loop++) {
#else
{
#endif
ssize_t length; ssize_t length;
ssize_t sent; ssize_t sent;
length = read(0, buf, 65536); length = read(0, buf, 65536);
if (length <= 0) { if (length <= 0) {
usleep(1000000); usleep(1000000);
goto next; continue;
} }
/* /*
@@ -124,17 +122,17 @@ fuzz_thread_client(void *arg) {
free(buf); free(buf);
close(sockfd); close(sockfd);
named_server_flushonshutdown(named_g_server, named_server_flushonshutdown(named_g_server,
false); ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
return (NULL); return (NULL);
} }
raise(SIGSTOP); raise(SIGSTOP);
goto next; continue;
} }
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
ready = false; ready = ISC_FALSE;
sent = sendto(sockfd, buf, length, 0, sent = sendto(sockfd, buf, length, 0,
(struct sockaddr *) &servaddr, sizeof(servaddr)); (struct sockaddr *) &servaddr, sizeof(servaddr));
@@ -150,13 +148,12 @@ fuzz_thread_client(void *arg) {
pthread_cond_wait(&cond, &mutex); pthread_cond_wait(&cond, &mutex);
RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0);
next: ;
} }
free(buf); free(buf);
close(sockfd); close(sockfd);
named_server_flushonshutdown(named_g_server, false); named_server_flushonshutdown(named_g_server, ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
return (NULL); return (NULL);
@@ -203,7 +200,7 @@ fuzz_thread_resolver(void *arg) {
* have to be updated. 0x8d, 0xf6 at the start is the ID field * have to be updated. 0x8d, 0xf6 at the start is the ID field
* which will be made to match the query. * which will be made to match the query.
*/ */
const uint8_t dnskey_wf[] = { const isc_uint8_t dnskey_wf[] = {
0x8d, 0xf6, 0x84, 0x00, 0x00, 0x01, 0x00, 0x02, 0x8d, 0xf6, 0x84, 0x00, 0x00, 0x01, 0x00, 0x02,
0x00, 0x00, 0x00, 0x01, 0x07, 0x65, 0x78, 0x61, 0x00, 0x00, 0x00, 0x01, 0x07, 0x65, 0x78, 0x61,
0x6d, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x30, 0x00, 0x6d, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x30, 0x00,
@@ -285,12 +282,12 @@ fuzz_thread_resolver(void *arg) {
int sockfd; int sockfd;
int listenfd; int listenfd;
int loop; int loop;
uint16_t qtype; isc_uint16_t qtype;
char *buf, *rbuf; char *buf, *rbuf;
char *nameptr; char *nameptr;
unsigned int i; unsigned int i;
uint8_t llen; isc_uint8_t llen;
uint64_t seed; isc_uint64_t seed;
UNUSED(arg); UNUSED(arg);
@@ -388,7 +385,7 @@ fuzz_thread_resolver(void *arg) {
close(sockfd); close(sockfd);
close(listenfd); close(listenfd);
named_server_flushonshutdown(named_g_server, named_server_flushonshutdown(named_g_server,
false); ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
return (NULL); return (NULL);
} }
@@ -402,7 +399,7 @@ fuzz_thread_resolver(void *arg) {
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
ready = false; ready = ISC_FALSE;
/* Use a unique query ID. */ /* Use a unique query ID. */
seed = 1664525 * seed + 1013904223; seed = 1664525 * seed + 1013904223;
@@ -552,7 +549,7 @@ fuzz_thread_resolver(void *arg) {
* "example." * "example."
*/ */
if ((nameptr - buf) < (length - 2)) { if ((nameptr - buf) < (length - 2)) {
uint8_t hb, lb; isc_uint8_t hb, lb;
hb = *nameptr++; hb = *nameptr++;
lb = *nameptr++; lb = *nameptr++;
qtype = (hb << 8) | lb; qtype = (hb << 8) | lb;
@@ -583,10 +580,9 @@ fuzz_thread_resolver(void *arg) {
free(rbuf); free(rbuf);
close(sockfd); close(sockfd);
close(listenfd); close(listenfd);
named_server_flushonshutdown(named_g_server, false); named_server_flushonshutdown(named_g_server, ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
#ifdef __AFL_LOOP
/* /*
* This is here just for the signature, that's how AFL detects * This is here just for the signature, that's how AFL detects
* if it's a 'persistent mode' binary. It has to occur somewhere * if it's a 'persistent mode' binary. It has to occur somewhere
@@ -595,7 +591,6 @@ fuzz_thread_resolver(void *arg) {
* in persistent mode if it's present. * in persistent mode if it's present.
*/ */
__AFL_LOOP(0); __AFL_LOOP(0);
#endif
return (NULL); return (NULL);
} }
@@ -692,7 +687,7 @@ fuzz_thread_tcp(void *arg) {
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
ready = false; ready = ISC_FALSE;
yes = 1; yes = 1;
sockfd = socket(AF_INET, SOCK_STREAM, 0); sockfd = socket(AF_INET, SOCK_STREAM, 0);
@@ -723,7 +718,7 @@ fuzz_thread_tcp(void *arg) {
free(buf); free(buf);
close(sockfd); close(sockfd);
named_server_flushonshutdown(named_g_server, false); named_server_flushonshutdown(named_g_server, ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
return (NULL); return (NULL);
@@ -740,7 +735,7 @@ void
named_fuzz_notify(void) { named_fuzz_notify(void) {
#ifdef ENABLE_AFL #ifdef ENABLE_AFL
if (getenv("AFL_CMIN")) { if (getenv("AFL_CMIN")) {
named_server_flushonshutdown(named_g_server, false); named_server_flushonshutdown(named_g_server, ISC_FALSE);
isc_app_shutdown(); isc_app_shutdown();
return; return;
} }
@@ -749,7 +744,7 @@ named_fuzz_notify(void) {
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
ready = true; ready = ISC_TRUE;
RUNTIME_CHECK(pthread_cond_signal(&cond) == 0); RUNTIME_CHECK(pthread_cond_signal(&cond) == 0);
RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0); RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0);
+4 -12
View File
@@ -15,15 +15,11 @@
/*! \file */ /*! \file */
#include <inttypes.h>
#include <isccfg/cfg.h> #include <isccfg/cfg.h>
#include <dns/types.h> #include <dns/types.h>
#include <dns/zone.h> #include <dns/zone.h>
#define DEFAULT_IANA_ROOT_ZONE_MASTERS "_default_iana_root_zone_masters"
isc_result_t isc_result_t
named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf); named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf);
@@ -53,15 +49,11 @@ isc_result_t
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list, named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
in_port_t defport, isc_mem_t *mctx, in_port_t defport, isc_mem_t *mctx,
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp, isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
uint32_t *countp); isc_uint32_t *countp);
void void
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp, named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
isc_dscp_t **dscpsp, uint32_t count); isc_dscp_t **dscpsp, isc_uint32_t count);
isc_result_t
named_config_getmastersdef(const cfg_obj_t *cctx, const char *name,
const cfg_obj_t **ret);
isc_result_t isc_result_t
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
@@ -72,10 +64,10 @@ named_config_getport(const cfg_obj_t *config, in_port_t *portp);
isc_result_t isc_result_t
named_config_getkeyalgorithm(const char *str, const dns_name_t **name, named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
uint16_t *digestbits); isc_uint16_t *digestbits);
isc_result_t isc_result_t
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name, named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
unsigned int *typep, uint16_t *digestbits); unsigned int *typep, isc_uint16_t *digestbits);
isc_result_t isc_result_t
named_config_getdscp(const cfg_obj_t *config, isc_dscp_t *dscpp); named_config_getdscp(const cfg_obj_t *config, isc_dscp_t *dscpp);
+1 -3
View File
@@ -17,8 +17,6 @@
* The name server command channel. * The name server command channel.
*/ */
#include <stdbool.h>
#include <isccc/types.h> #include <isccc/types.h>
#include <isccfg/aclconf.h> #include <isccfg/aclconf.h>
@@ -103,7 +101,7 @@ named_controls_shutdown(named_controls_t *controls);
*/ */
isc_result_t isc_result_t
named_control_docommand(isccc_sexpr_t *message, bool readonly, named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
isc_buffer_t **text); isc_buffer_t **text);
#endif /* NAMED_CONTROL_H */ #endif /* NAMED_CONTROL_H */
+9 -11
View File
@@ -14,8 +14,6 @@
/*! \file */ /*! \file */
#include <stdbool.h>
#include <isc/rwlock.h> #include <isc/rwlock.h>
#include <isc/log.h> #include <isc/log.h>
#include <isc/net.h> #include <isc/net.h>
@@ -53,7 +51,7 @@ EXTERN dns_dispatchmgr_t * named_g_dispatchmgr INIT(NULL);
EXTERN unsigned int named_g_cpus_detected INIT(1); EXTERN unsigned int named_g_cpus_detected INIT(1);
#ifdef ENABLE_AFL #ifdef ENABLE_AFL
EXTERN bool named_g_run_done INIT(false); EXTERN isc_boolean_t named_g_run_done INIT(ISC_FALSE);
#endif #endif
/* /*
* XXXRTH We're going to want multiple timer managers eventually. One * XXXRTH We're going to want multiple timer managers eventually. One
@@ -96,7 +94,7 @@ EXTERN const char * named_g_keyfile INIT(NAMED_SYSCONFDIR
EXTERN dns_tsigkey_t * named_g_sessionkey INIT(NULL); EXTERN dns_tsigkey_t * named_g_sessionkey INIT(NULL);
EXTERN dns_name_t named_g_sessionkeyname; EXTERN dns_name_t named_g_sessionkeyname;
EXTERN bool named_g_conffileset INIT(false); EXTERN isc_boolean_t named_g_conffileset INIT(ISC_FALSE);
EXTERN cfg_aclconfctx_t * named_g_aclconfctx INIT(NULL); EXTERN cfg_aclconfctx_t * named_g_aclconfctx INIT(NULL);
/* /*
@@ -110,11 +108,11 @@ EXTERN isc_resourcevalue_t named_g_initopenfiles INIT(0);
/* /*
* Misc. * Misc.
*/ */
EXTERN bool named_g_coreok INIT(true); EXTERN isc_boolean_t named_g_coreok INIT(ISC_TRUE);
EXTERN const char * named_g_chrootdir INIT(NULL); EXTERN const char * named_g_chrootdir INIT(NULL);
EXTERN bool named_g_foreground INIT(false); EXTERN isc_boolean_t named_g_foreground INIT(ISC_FALSE);
EXTERN bool named_g_logstderr INIT(false); EXTERN isc_boolean_t named_g_logstderr INIT(ISC_FALSE);
EXTERN bool named_g_nosyslog INIT(false); EXTERN isc_boolean_t named_g_nosyslog INIT(ISC_FALSE);
EXTERN const char * named_g_logfile INIT(NULL); EXTERN const char * named_g_logfile INIT(NULL);
EXTERN const char * named_g_defaultsessionkeyfile EXTERN const char * named_g_defaultsessionkeyfile
@@ -123,7 +121,7 @@ EXTERN const char * named_g_defaultsessionkeyfile
EXTERN const char * named_g_defaultlockfile INIT(NAMED_LOCALSTATEDIR EXTERN const char * named_g_defaultlockfile INIT(NAMED_LOCALSTATEDIR
"/run/named/" "/run/named/"
"named.lock"); "named.lock");
EXTERN bool named_g_forcelock INIT(false); EXTERN isc_boolean_t named_g_forcelock INIT(ISC_FALSE);
#if NAMED_RUN_PID_DIR #if NAMED_RUN_PID_DIR
EXTERN const char * named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR EXTERN const char * named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR
@@ -148,8 +146,8 @@ EXTERN const char * named_g_engine INIT(NULL);
EXTERN isc_time_t named_g_boottime; EXTERN isc_time_t named_g_boottime;
EXTERN isc_time_t named_g_configtime; EXTERN isc_time_t named_g_configtime;
EXTERN bool named_g_memstatistics INIT(false); EXTERN isc_boolean_t named_g_memstatistics INIT(ISC_FALSE);
EXTERN bool named_g_keepstderr INIT(false); EXTERN isc_boolean_t named_g_keepstderr INIT(ISC_FALSE);
EXTERN unsigned int named_g_tat_interval INIT(24*3600); EXTERN unsigned int named_g_tat_interval INIT(24*3600);
+1 -1
View File
@@ -34,7 +34,7 @@
#define NAMED_LOGMODULE_CONTROL (&named_g_modules[2]) #define NAMED_LOGMODULE_CONTROL (&named_g_modules[2])
isc_result_t isc_result_t
named_log_init(bool safe); named_log_init(isc_boolean_t safe);
/*% /*%
* Initialize the logging system and set up an initial default * Initialize the logging system and set up an initial default
* logging default configuration that will be used until the * logging default configuration that will be used until the
+11 -14
View File
@@ -14,9 +14,6 @@
/*! \file */ /*! \file */
#include <inttypes.h>
#include <stdbool.h>
#include <isc/log.h> #include <isc/log.h>
#include <isc/magic.h> #include <isc/magic.h>
#include <isc/quota.h> #include <isc/quota.h>
@@ -56,9 +53,9 @@ struct named_server {
char * secrootsfile; /*%< Secroots file name */ char * secrootsfile; /*%< Secroots file name */
char * bindkeysfile; /*%< bind.keys file name */ char * bindkeysfile; /*%< bind.keys file name */
char * recfile; /*%< Recursive file name */ char * recfile; /*%< Recursive file name */
bool version_set; /*%< User has set version */ isc_boolean_t version_set; /*%< User has set version */
char * version; /*%< User-specified version */ char * version; /*%< User-specified version */
bool hostname_set; /*%< User has set hostname */ isc_boolean_t hostname_set; /*%< User has set hostname */
char * hostname; /*%< User-specified hostname */ char * hostname; /*%< User-specified hostname */
/* Server data structures. */ /* Server data structures. */
@@ -73,13 +70,13 @@ struct named_server {
isc_timer_t * pps_timer; isc_timer_t * pps_timer;
isc_timer_t * tat_timer; isc_timer_t * tat_timer;
uint32_t interface_interval; isc_uint32_t interface_interval;
uint32_t heartbeat_interval; isc_uint32_t heartbeat_interval;
isc_mutex_t reload_event_lock; isc_mutex_t reload_event_lock;
isc_event_t * reload_event; isc_event_t * reload_event;
bool flushonshutdown; isc_boolean_t flushonshutdown;
named_cachelist_t cachelist; /*%< Possibly shared caches */ named_cachelist_t cachelist; /*%< Possibly shared caches */
isc_stats_t * zonestats; /*% Zone management stats */ isc_stats_t * zonestats; /*% Zone management stats */
@@ -96,8 +93,8 @@ struct named_server {
char *session_keyfile; char *session_keyfile;
dns_name_t *session_keyname; dns_name_t *session_keyname;
unsigned int session_keyalg; unsigned int session_keyalg;
uint16_t session_keybits; isc_uint16_t session_keybits;
bool interface_auto; isc_boolean_t interface_auto;
unsigned char secret[32]; /*%< Server Cookie Secret */ unsigned char secret[32]; /*%< Server Cookie Secret */
ns_cookiealg_t cookiealg; ns_cookiealg_t cookiealg;
@@ -140,7 +137,7 @@ named_server_scan_interfaces(named_server_t *server);
*/ */
void void
named_server_flushonshutdown(named_server_t *server, bool flush); named_server_flushonshutdown(named_server_t *server, isc_boolean_t flush);
/*%< /*%<
* Inform the server that the zones should be flushed to disk on shutdown. * Inform the server that the zones should be flushed to disk on shutdown.
*/ */
@@ -237,7 +234,7 @@ named_server_flushcache(named_server_t *server, isc_lex_t *lex);
*/ */
isc_result_t isc_result_t
named_server_flushnode(named_server_t *server, isc_lex_t *lex, named_server_flushnode(named_server_t *server, isc_lex_t *lex,
bool tree); isc_boolean_t tree);
/*% /*%
* Report the server's status. * Report the server's status.
@@ -262,7 +259,7 @@ named_server_tsigdelete(named_server_t *server, isc_lex_t *lex,
* Enable or disable updates for a zone. * Enable or disable updates for a zone.
*/ */
isc_result_t isc_result_t
named_server_freeze(named_server_t *server, bool freeze, named_server_freeze(named_server_t *server, isc_boolean_t freeze,
isc_lex_t *lex, isc_buffer_t **text); isc_lex_t *lex, isc_buffer_t **text);
/*% /*%
@@ -342,7 +339,7 @@ named_server_zonestatus(named_server_t *server, isc_lex_t *lex,
*/ */
isc_result_t isc_result_t
named_server_nta(named_server_t *server, isc_lex_t *lex, named_server_nta(named_server_t *server, isc_lex_t *lex,
bool readonly, isc_buffer_t **text); isc_boolean_t readonly, isc_buffer_t **text);
/*% /*%
* Generates a test sequence that is only for use in system tests. The * Generates a test sequence that is only for use in system tests. The
+3 -5
View File
@@ -14,8 +14,6 @@
/*! \file */ /*! \file */
#include <stdbool.h>
#include <isc/lang.h> #include <isc/lang.h>
#include <isc/types.h> #include <isc/types.h>
@@ -43,13 +41,13 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
* \li 'zone' to be initialized. * \li 'zone' to be initialized.
*/ */
bool isc_boolean_t
named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig); named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig);
/*%< /*%<
* If 'zone' can be safely reconfigured according to the configuration * If 'zone' can be safely reconfigured according to the configuration
* data in 'zconfig', return true. If the configuration data is so * data in 'zconfig', return ISC_TRUE. If the configuration data is so
* different from the current zone state that the zone needs to be destroyed * different from the current zone state that the zone needs to be destroyed
* and recreated, return false. * and recreated, return ISC_FALSE.
*/ */
isc_result_t isc_result_t
+1 -1
View File
@@ -50,7 +50,7 @@ static isc_logmodule_t modules[] = {
}; };
isc_result_t isc_result_t
named_log_init(bool safe) { named_log_init(isc_boolean_t safe) {
isc_result_t result; isc_result_t result;
isc_logconfig_t *lcfg = NULL; isc_logconfig_t *lcfg = NULL;
+6 -9
View File
@@ -13,9 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <isc/file.h> #include <isc/file.h>
#include <isc/offset.h> #include <isc/offset.h>
#include <isc/print.h> #include <isc/print.h>
@@ -139,10 +136,10 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig) {
cfg_tuple_get(fileobj, "versions"); cfg_tuple_get(fileobj, "versions");
const cfg_obj_t *suffixobj = const cfg_obj_t *suffixobj =
cfg_tuple_get(fileobj, "suffix"); cfg_tuple_get(fileobj, "suffix");
int32_t versions = ISC_LOG_ROLLNEVER; isc_int32_t versions = ISC_LOG_ROLLNEVER;
isc_log_rollsuffix_t suffix = isc_log_rollsuffix_increment; isc_log_rollsuffix_t suffix = isc_log_rollsuffix_increment;
isc_offset_t size = 0; isc_offset_t size = 0;
uint64_t maxoffset; isc_uint64_t maxoffset;
/* /*
* isc_offset_t is a signed integer type, so the maximum * isc_offset_t is a signed integer type, so the maximum
@@ -305,8 +302,8 @@ named_logconfig(isc_logconfig_t *logconfig, const cfg_obj_t *logstmt) {
const cfg_obj_t *channels = NULL; const cfg_obj_t *channels = NULL;
const cfg_obj_t *categories = NULL; const cfg_obj_t *categories = NULL;
const cfg_listelt_t *element; const cfg_listelt_t *element;
bool default_set = false; isc_boolean_t default_set = ISC_FALSE;
bool unmatched_set = false; isc_boolean_t unmatched_set = ISC_FALSE;
const cfg_obj_t *catname; const cfg_obj_t *catname;
if (logconfig != NULL) if (logconfig != NULL)
@@ -331,12 +328,12 @@ named_logconfig(isc_logconfig_t *logconfig, const cfg_obj_t *logstmt) {
if (!default_set) { if (!default_set) {
catname = cfg_tuple_get(category, "name"); catname = cfg_tuple_get(category, "name");
if (strcmp(cfg_obj_asstring(catname), "default") == 0) if (strcmp(cfg_obj_asstring(catname), "default") == 0)
default_set = true; default_set = ISC_TRUE;
} }
if (!unmatched_set) { if (!unmatched_set) {
catname = cfg_tuple_get(category, "name"); catname = cfg_tuple_get(category, "name");
if (strcmp(cfg_obj_asstring(catname), "unmatched") == 0) if (strcmp(cfg_obj_asstring(catname), "unmatched") == 0)
unmatched_set = true; unmatched_set = ISC_TRUE;
} }
} }
+85 -90
View File
@@ -14,8 +14,6 @@
#include <config.h> #include <config.h>
#include <ctype.h> #include <ctype.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@@ -109,9 +107,9 @@ LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_hour;
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_day; LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_day;
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_month; LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_month;
static bool want_stats = false; static isc_boolean_t want_stats = ISC_FALSE;
static char program_name[NAME_MAX] = "named"; static char program_name[ISC_DIR_NAMEMAX] = "named";
static char absolute_conffile[PATH_MAX]; static char absolute_conffile[ISC_DIR_PATHMAX];
static char saved_command_line[512]; static char saved_command_line[512];
static char version[512]; static char version[512];
static unsigned int maxsocks = 0; static unsigned int maxsocks = 0;
@@ -120,25 +118,22 @@ static int maxudp = 0;
/* /*
* -T options: * -T options:
*/ */
static bool clienttest = false; static isc_boolean_t clienttest = ISC_FALSE;
static bool dropedns = false; static isc_boolean_t dropedns = ISC_FALSE;
static bool ednsformerr = false; static isc_boolean_t noedns = ISC_FALSE;
static bool ednsnotimp = false; static isc_boolean_t nosoa = ISC_FALSE;
static bool ednsrefused = false; static isc_boolean_t noaa = ISC_FALSE;
static bool fixedlocal = false;
static bool noaa = false;
static bool noedns = false;
static bool nonearest = false;
static bool nosoa = false;
static bool notcp = false;
static bool sigvalinsecs = false;
static unsigned int delay = 0; static unsigned int delay = 0;
static isc_boolean_t nonearest = ISC_FALSE;
static isc_boolean_t notcp = ISC_FALSE;
static isc_boolean_t fixedlocal = ISC_FALSE;
static isc_boolean_t sigvalinsecs = ISC_FALSE;
/* /*
* -4 and -6 * -4 and -6
*/ */
static bool disable6 = false; static isc_boolean_t disable6 = ISC_FALSE;
static bool disable4 = false; static isc_boolean_t disable4 = ISC_FALSE;
void void
named_main_earlywarning(const char *format, ...) { named_main_earlywarning(const char *format, ...) {
@@ -341,7 +336,7 @@ save_command_line(int argc, char *argv[]) {
char *dst; char *dst;
char *eob; char *eob;
const char truncated[] = "..."; const char truncated[] = "...";
bool quoted = false; isc_boolean_t quoted = ISC_FALSE;
dst = saved_command_line; dst = saved_command_line;
eob = saved_command_line + sizeof(saved_command_line); eob = saved_command_line + sizeof(saved_command_line);
@@ -361,10 +356,10 @@ save_command_line(int argc, char *argv[]) {
*src == '-' || *src == '_' || *src == '-' || *src == '_' ||
*src == '.' || *src == '/') { *src == '.' || *src == '/') {
*dst++ = *src++; *dst++ = *src++;
quoted = false; quoted = ISC_FALSE;
} else { } else {
*dst++ = '\\'; *dst++ = '\\';
quoted = true; quoted = ISC_TRUE;
} }
} }
} }
@@ -395,25 +390,25 @@ parse_int(char *arg, const char *desc) {
static struct flag_def { static struct flag_def {
const char *name; const char *name;
unsigned int value; unsigned int value;
bool negate; isc_boolean_t negate;
} mem_debug_flags[] = { } mem_debug_flags[] = {
{ "none", 0, false }, { "none", 0, ISC_FALSE },
{ "trace", ISC_MEM_DEBUGTRACE, false }, { "trace", ISC_MEM_DEBUGTRACE, ISC_FALSE },
{ "record", ISC_MEM_DEBUGRECORD, false }, { "record", ISC_MEM_DEBUGRECORD, ISC_FALSE },
{ "usage", ISC_MEM_DEBUGUSAGE, false }, { "usage", ISC_MEM_DEBUGUSAGE, ISC_FALSE },
{ "size", ISC_MEM_DEBUGSIZE, false }, { "size", ISC_MEM_DEBUGSIZE, ISC_FALSE },
{ "mctx", ISC_MEM_DEBUGCTX, false }, { "mctx", ISC_MEM_DEBUGCTX, ISC_FALSE },
{ NULL, 0, false } { NULL, 0, ISC_FALSE }
}, mem_context_flags[] = { }, mem_context_flags[] = {
{ "external", ISC_MEMFLAG_INTERNAL, true }, { "external", ISC_MEMFLAG_INTERNAL, ISC_TRUE },
{ "fill", ISC_MEMFLAG_FILL, false }, { "fill", ISC_MEMFLAG_FILL, ISC_FALSE },
{ "nofill", ISC_MEMFLAG_FILL, true }, { "nofill", ISC_MEMFLAG_FILL, ISC_TRUE },
{ NULL, 0, false } { NULL, 0, ISC_FALSE }
}; };
static void static void
set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) { set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) {
bool clear = false; isc_boolean_t clear = ISC_FALSE;
for (;;) { for (;;) {
const struct flag_def *def; const struct flag_def *def;
@@ -426,7 +421,7 @@ set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) {
if (arglen == (int)strlen(def->name) && if (arglen == (int)strlen(def->name) &&
memcmp(arg, def->name, arglen) == 0) { memcmp(arg, def->name, arglen) == 0) {
if (def->value == 0) if (def->value == 0)
clear = true; clear = ISC_TRUE;
if (def->negate) if (def->negate)
*ret &= ~(def->value); *ret &= ~(def->value);
else else
@@ -484,35 +479,29 @@ parse_T_opt(char *option) {
* expected and assert otherwise. * expected and assert otherwise.
*/ */
if (!strcmp(option, "clienttest")) { if (!strcmp(option, "clienttest")) {
clienttest = true; clienttest = ISC_TRUE;
} else if (!strncmp(option, "delay=", 6)) { } else if (!strncmp(option, "delay=", 6)) {
delay = atoi(option + 6); delay = atoi(option + 6);
} else if (!strcmp(option, "dropedns")) { } else if (!strcmp(option, "dropedns")) {
dropedns = true; dropedns = ISC_TRUE;
} else if (!strncmp(option, "dscp=", 5)) { } else if (!strncmp(option, "dscp=", 5)) {
isc_dscp_check_value = atoi(option + 5); isc_dscp_check_value = atoi(option + 5);
} else if (!strcmp(option, "ednsformerr")) {
ednsformerr = true;
} else if (!strcmp(option, "ednsnotimp")) {
ednsnotimp = true;
} else if (!strcmp(option, "ednsrefused")) {
ednsrefused = true;
} else if (!strcmp(option, "fixedlocal")) { } else if (!strcmp(option, "fixedlocal")) {
fixedlocal = true; fixedlocal = ISC_TRUE;
} else if (!strcmp(option, "keepstderr")) { } else if (!strcmp(option, "keepstderr")) {
named_g_keepstderr = true; named_g_keepstderr = ISC_TRUE;
} else if (!strcmp(option, "noaa")) { } else if (!strcmp(option, "noaa")) {
noaa = true; noaa = ISC_TRUE;
} else if (!strcmp(option, "noedns")) { } else if (!strcmp(option, "noedns")) {
noedns = true; noedns = ISC_TRUE;
} else if (!strcmp(option, "nonearest")) { } else if (!strcmp(option, "nonearest")) {
nonearest = true; nonearest = ISC_TRUE;
} else if (!strcmp(option, "nosoa")) { } else if (!strcmp(option, "nosoa")) {
nosoa = true; nosoa = ISC_TRUE;
} else if (!strcmp(option, "nosyslog")) { } else if (!strcmp(option, "nosyslog")) {
named_g_nosyslog = true; named_g_nosyslog = ISC_TRUE;
} else if (!strcmp(option, "notcp")) { } else if (!strcmp(option, "notcp")) {
notcp = true; notcp = ISC_TRUE;
} else if (!strcmp(option, "maxudp512")) { } else if (!strcmp(option, "maxudp512")) {
maxudp = 512; maxudp = 512;
} else if (!strcmp(option, "maxudp1460")) { } else if (!strcmp(option, "maxudp1460")) {
@@ -552,11 +541,11 @@ parse_T_opt(char *option) {
named_main_earlyfatal("bad mkeytimer"); named_main_earlyfatal("bad mkeytimer");
} }
} else if (!strcmp(option, "sigvalinsecs")) { } else if (!strcmp(option, "sigvalinsecs")) {
sigvalinsecs = true; sigvalinsecs = ISC_TRUE;
} else if (!strncmp(option, "tat=", 4)) { } else if (!strncmp(option, "tat=", 4)) {
named_g_tat_interval = atoi(option + 4); named_g_tat_interval = atoi(option + 4);
} else { } else {
fprintf(stderr, "unknown -T flag '%s'\n", option); fprintf(stderr, "unknown -T flag '%s\n", option);
} }
} }
@@ -572,7 +561,7 @@ parse_command_line(int argc, char *argv[]) {
* NAMED_MAIN_ARGS is defined in main.h, so that it can be used * NAMED_MAIN_ARGS is defined in main.h, so that it can be used
* both by named and by ntservice hooks. * both by named and by ntservice hooks.
*/ */
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, while ((ch = isc_commandline_parse(argc, argv,
NAMED_MAIN_ARGS)) != -1) NAMED_MAIN_ARGS)) != -1)
{ {
@@ -585,7 +574,7 @@ parse_command_line(int argc, char *argv[]) {
named_main_earlyfatal("IPv4 not supported " named_main_earlyfatal("IPv4 not supported "
"by OS"); "by OS");
isc_net_disableipv6(); isc_net_disableipv6();
disable6 = true; disable6 = ISC_TRUE;
break; break;
case '6': case '6':
if (disable6) if (disable6)
@@ -595,14 +584,14 @@ parse_command_line(int argc, char *argv[]) {
named_main_earlyfatal("IPv6 not supported " named_main_earlyfatal("IPv6 not supported "
"by OS"); "by OS");
isc_net_disableipv4(); isc_net_disableipv4();
disable4 = true; disable4 = ISC_TRUE;
break; break;
case 'A': case 'A':
parse_fuzz_arg(); parse_fuzz_arg();
break; break;
case 'c': case 'c':
named_g_conffile = isc_commandline_argument; named_g_conffile = isc_commandline_argument;
named_g_conffileset = true; named_g_conffileset = ISC_TRUE;
break; break;
case 'd': case 'd':
named_g_debuglevel = parse_int(isc_commandline_argument, named_g_debuglevel = parse_int(isc_commandline_argument,
@@ -615,11 +604,11 @@ parse_command_line(int argc, char *argv[]) {
named_g_engine = isc_commandline_argument; named_g_engine = isc_commandline_argument;
break; break;
case 'f': case 'f':
named_g_foreground = true; named_g_foreground = ISC_TRUE;
break; break;
case 'g': case 'g':
named_g_foreground = true; named_g_foreground = ISC_TRUE;
named_g_logstderr = true; named_g_logstderr = ISC_TRUE;
break; break;
case 'L': case 'L':
named_g_logfile = isc_commandline_argument; named_g_logfile = isc_commandline_argument;
@@ -648,7 +637,7 @@ parse_command_line(int argc, char *argv[]) {
break; break;
case 's': case 's':
/* XXXRTH temporary syntax */ /* XXXRTH temporary syntax */
want_stats = true; want_stats = ISC_TRUE;
break; break;
case 'S': case 'S':
maxsocks = parse_int(isc_commandline_argument, maxsocks = parse_int(isc_commandline_argument,
@@ -735,7 +724,7 @@ parse_command_line(int argc, char *argv[]) {
/* Obsolete. No longer in use. Ignore. */ /* Obsolete. No longer in use. Ignore. */
break; break;
case 'X': case 'X':
named_g_forcelock = true; named_g_forcelock = ISC_TRUE;
if (strcasecmp(isc_commandline_argument, "none") != 0) if (strcasecmp(isc_commandline_argument, "none") != 0)
named_g_defaultlockfile = named_g_defaultlockfile =
isc_commandline_argument; isc_commandline_argument;
@@ -793,7 +782,10 @@ create_managers(void) {
named_g_udpdisp = 1; named_g_udpdisp = 1;
#else #else
if (named_g_udpdisp == 0) { if (named_g_udpdisp == 0) {
named_g_udpdisp = named_g_cpus_detected; if (named_g_cpus_detected == 1)
named_g_udpdisp = 1;
else
named_g_udpdisp = named_g_cpus_detected - 1;
} }
if (named_g_udpdisp > named_g_cpus) if (named_g_udpdisp > named_g_cpus)
named_g_udpdisp = named_g_cpus; named_g_udpdisp = named_g_cpus;
@@ -821,7 +813,7 @@ create_managers(void) {
} }
result = isc_socketmgr_create2(named_g_mctx, &named_g_socketmgr, result = isc_socketmgr_create2(named_g_mctx, &named_g_socketmgr,
maxsocks, named_g_udpdisp); maxsocks);
if (result != ISC_R_SUCCESS) { if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__, UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_socketmgr_create() failed: %s", "isc_socketmgr_create() failed: %s",
@@ -930,7 +922,7 @@ setup(void) {
*/ */
named_os_minprivs(); named_os_minprivs();
result = named_log_init(named_g_username != NULL); result = named_log_init(ISC_TF(named_g_username != NULL));
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
named_main_earlyfatal("named_log_init() failed: %s", named_main_earlyfatal("named_log_init() failed: %s",
isc_result_totext(result)); isc_result_totext(result));
@@ -1000,6 +992,7 @@ setup(void) {
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"compiled by Solaris Studio %x", __SUNPRO_C); "compiled by Solaris Studio %x", __SUNPRO_C);
#endif #endif
#ifdef OPENSSL
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"compiled with OpenSSL version: %s", "compiled with OpenSSL version: %s",
@@ -1016,6 +1009,7 @@ setup(void) {
"linked to OpenSSL version: %s", "linked to OpenSSL version: %s",
SSLeay_version(SSLEAY_VERSION)); SSLeay_version(SSLEAY_VERSION));
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */ #endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
#endif
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
@@ -1041,6 +1035,10 @@ setup(void) {
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"linked to zlib version: %s", zlibVersion()); "linked to zlib version: %s", zlibVersion());
#endif #endif
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"threads support is enabled");
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"----------------------------------------------------"); "----------------------------------------------------");
@@ -1086,8 +1084,8 @@ setup(void) {
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE, NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
"adjusted limit on open files from " "adjusted limit on open files from "
"%" PRIu64 " to " "%" ISC_PRINT_QUADFORMAT "u to "
"%" PRIu64, "%" ISC_PRINT_QUADFORMAT "u",
old_openfiles, named_g_initopenfiles); old_openfiles, named_g_initopenfiles);
} }
@@ -1154,33 +1152,27 @@ setup(void) {
* Modify server context according to command line options * Modify server context according to command line options
*/ */
if (clienttest) if (clienttest)
ns_server_setoption(sctx, NS_SERVER_CLIENTTEST, true); ns_server_setoption(sctx, NS_SERVER_CLIENTTEST, ISC_TRUE);
if (disable4)
ns_server_setoption(sctx, NS_SERVER_DISABLE4, true);
if (disable6)
ns_server_setoption(sctx, NS_SERVER_DISABLE6, true);
if (dropedns) if (dropedns)
ns_server_setoption(sctx, NS_SERVER_DROPEDNS, true); ns_server_setoption(sctx, NS_SERVER_DROPEDNS, ISC_TRUE);
if (ednsformerr) /* STD13 server */
ns_server_setoption(sctx, NS_SERVER_EDNSFORMERR, true);
if (ednsnotimp)
ns_server_setoption(sctx, NS_SERVER_EDNSNOTIMP, true);
if (ednsrefused)
ns_server_setoption(sctx, NS_SERVER_EDNSREFUSED, true);
if (fixedlocal)
ns_server_setoption(sctx, NS_SERVER_FIXEDLOCAL, true);
if (noaa)
ns_server_setoption(sctx, NS_SERVER_NOAA, true);
if (noedns) if (noedns)
ns_server_setoption(sctx, NS_SERVER_NOEDNS, true); ns_server_setoption(sctx, NS_SERVER_NOEDNS, ISC_TRUE);
if (nonearest)
ns_server_setoption(sctx, NS_SERVER_NONEAREST, true);
if (nosoa) if (nosoa)
ns_server_setoption(sctx, NS_SERVER_NOSOA, true); ns_server_setoption(sctx, NS_SERVER_NOSOA, ISC_TRUE);
if (noaa)
ns_server_setoption(sctx, NS_SERVER_NOAA, ISC_TRUE);
if (nonearest)
ns_server_setoption(sctx, NS_SERVER_NONEAREST, ISC_TRUE);
if (notcp) if (notcp)
ns_server_setoption(sctx, NS_SERVER_NOTCP, true); ns_server_setoption(sctx, NS_SERVER_NOTCP, ISC_TRUE);
if (fixedlocal)
ns_server_setoption(sctx, NS_SERVER_FIXEDLOCAL, ISC_TRUE);
if (disable4)
ns_server_setoption(sctx, NS_SERVER_DISABLE4, ISC_TRUE);
if (disable6)
ns_server_setoption(sctx, NS_SERVER_DISABLE6, ISC_TRUE);
if (sigvalinsecs) if (sigvalinsecs)
ns_server_setoption(sctx, NS_SERVER_SIGVALINSECS, true); ns_server_setoption(sctx, NS_SERVER_SIGVALINSECS, ISC_TRUE);
named_g_server->sctx->delay = delay; named_g_server->sctx->delay = delay;
} }
@@ -1332,6 +1324,9 @@ main(int argc, char *argv[]) {
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
named_main_earlyfatal("program name too long"); named_main_earlyfatal("program name too long");
if (result != ISC_R_SUCCESS)
named_main_earlyfatal("failed to build internal symbol table");
isc_assertion_setcallback(assertion_failed); isc_assertion_setcallback(assertion_failed);
isc_error_setfatal(library_fatal_error); isc_error_setfatal(library_fatal_error);
isc_error_setunexpected(library_unexpected_error); isc_error_setunexpected(library_unexpected_error);
+33 -30
View File
@@ -10,12 +10,12 @@
.\" Title: named.conf .\" Title: named.conf
.\" Author: .\" Author:
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\" Date: 2018-06-21 .\" Date: 2018-05-29
.\" Manual: BIND9 .\" Manual: BIND9
.\" Source: ISC .\" Source: ISC
.\" Language: English .\" Language: English
.\" .\"
.TH "NAMED\&.CONF" "5" "2018\-06\-21" "ISC" "BIND9" .TH "NAMED\&.CONF" "5" "2018\-05\-29" "ISC" "BIND9"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
@@ -231,9 +231,9 @@ options {
coresize ( default | unlimited | \fIsizeval\fR ); coresize ( default | unlimited | \fIsizeval\fR );
datasize ( default | unlimited | \fIsizeval\fR ); datasize ( default | unlimited | \fIsizeval\fR );
deny\-answer\-addresses { \fIaddress_match_element\fR; \&.\&.\&. } [ deny\-answer\-addresses { \fIaddress_match_element\fR; \&.\&.\&. } [
except\-from { \fIstring\fR; \&.\&.\&. } ]; except\-from { \fIquoted_string\fR; \&.\&.\&. } ];
deny\-answer\-aliases { \fIstring\fR; \&.\&.\&. } [ except\-from { \fIstring\fR; \&.\&.\&. deny\-answer\-aliases { \fIquoted_string\fR; \&.\&.\&. } [ except\-from {
} ]; \fIquoted_string\fR; \&.\&.\&. } ];
dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR ); dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR );
directory \fIquoted_string\fR; directory \fIquoted_string\fR;
disable\-algorithms \fIstring\fR { \fIstring\fR; disable\-algorithms \fIstring\fR { \fIstring\fR;
@@ -264,12 +264,14 @@ options {
dnssec\-secure\-to\-insecure \fIboolean\fR; dnssec\-secure\-to\-insecure \fIboolean\fR;
dnssec\-update\-mode ( maintain | no\-resign ); dnssec\-update\-mode ( maintain | no\-resign );
dnssec\-validation ( yes | no | auto ); dnssec\-validation ( yes | no | auto );
dnstap { ( all | auth | client | forwarder | resolver ) [ ( query | dnstap { ( all | auth | client | forwarder |
response ) ]; \&.\&.\&. }; resolver ) [ ( query | response ) ]; \&.\&.\&. };
dnstap\-identity ( \fIquoted_string\fR | none | hostname ); dnstap\-identity ( \fIquoted_string\fR | none |
dnstap\-output ( file | unix ) \fIquoted_string\fR [ size ( unlimited | hostname );
\fIsize\fR ) ] [ versions ( unlimited | \fIinteger\fR ) ] [ suffix ( dnstap\-output ( file | unix ) \fIquoted_string\fR [
increment | timestamp ) ]; size ( unlimited | \fIsize\fR ) ] [ versions (
unlimited | \fIinteger\fR ) ] [ suffix ( increment
| timestamp ) ];
dnstap\-version ( \fIquoted_string\fR | none ); dnstap\-version ( \fIquoted_string\fR | none );
dscp \fIinteger\fR; dscp \fIinteger\fR;
dual\-stack\-servers [ port \fIinteger\fR ] { ( \fIquoted_string\fR [ port dual\-stack\-servers [ port \fIinteger\fR ] { ( \fIquoted_string\fR [ port
@@ -367,7 +369,7 @@ options {
preferred\-glue \fIstring\fR; preferred\-glue \fIstring\fR;
prefetch \fIinteger\fR [ \fIinteger\fR ]; prefetch \fIinteger\fR [ \fIinteger\fR ];
provide\-ixfr \fIboolean\fR; provide\-ixfr \fIboolean\fR;
qname\-minimization ( strict | relaxed | disabled | off ); qname\-minimization ( strict | relaxed | disabled );
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port ( query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ] \fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ]; port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
@@ -418,7 +420,7 @@ options {
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
} ]; } ];
root\-delegation\-only [ exclude { \fIstring\fR; \&.\&.\&. } ]; root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
root\-key\-sentinel \fIboolean\fR; root\-key\-sentinel \fIboolean\fR;
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. }; \fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
@@ -468,7 +470,6 @@ options {
use\-v4\-udp\-ports { \fIportrange\fR; \&.\&.\&. }; use\-v4\-udp\-ports { \fIportrange\fR; \&.\&.\&. };
use\-v6\-udp\-ports { \fIportrange\fR; \&.\&.\&. }; use\-v6\-udp\-ports { \fIportrange\fR; \&.\&.\&. };
v6\-bias \fIinteger\fR; v6\-bias \fIinteger\fR;
validate\-except { \fIstring\fR; \&.\&.\&. };
version ( \fIquoted_string\fR | none ); version ( \fIquoted_string\fR | none );
zero\-no\-soa\-ttl \fIboolean\fR; zero\-no\-soa\-ttl \fIboolean\fR;
zero\-no\-soa\-ttl\-cache \fIboolean\fR; zero\-no\-soa\-ttl\-cache \fIboolean\fR;
@@ -596,9 +597,9 @@ view \fIstring\fR [ \fIclass\fR ] {
cleaning\-interval \fIinteger\fR; cleaning\-interval \fIinteger\fR;
clients\-per\-query \fIinteger\fR; clients\-per\-query \fIinteger\fR;
deny\-answer\-addresses { \fIaddress_match_element\fR; \&.\&.\&. } [ deny\-answer\-addresses { \fIaddress_match_element\fR; \&.\&.\&. } [
except\-from { \fIstring\fR; \&.\&.\&. } ]; except\-from { \fIquoted_string\fR; \&.\&.\&. } ];
deny\-answer\-aliases { \fIstring\fR; \&.\&.\&. } [ except\-from { \fIstring\fR; \&.\&.\&. deny\-answer\-aliases { \fIquoted_string\fR; \&.\&.\&. } [ except\-from {
} ]; \fIquoted_string\fR; \&.\&.\&. } ];
dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR ); dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR );
disable\-algorithms \fIstring\fR { \fIstring\fR; disable\-algorithms \fIstring\fR { \fIstring\fR;
\&.\&.\&. }; \&.\&.\&. };
@@ -632,8 +633,8 @@ view \fIstring\fR [ \fIclass\fR ] {
dnssec\-secure\-to\-insecure \fIboolean\fR; dnssec\-secure\-to\-insecure \fIboolean\fR;
dnssec\-update\-mode ( maintain | no\-resign ); dnssec\-update\-mode ( maintain | no\-resign );
dnssec\-validation ( yes | no | auto ); dnssec\-validation ( yes | no | auto );
dnstap { ( all | auth | client | forwarder | resolver ) [ ( query | dnstap { ( all | auth | client | forwarder |
response ) ]; \&.\&.\&. }; resolver ) [ ( query | response ) ]; \&.\&.\&. };
dual\-stack\-servers [ port \fIinteger\fR ] { ( \fIquoted_string\fR [ port dual\-stack\-servers [ port \fIinteger\fR ] { ( \fIquoted_string\fR [ port
\fIinteger\fR ] [ dscp \fIinteger\fR ] | \fIipv4_address\fR [ port \fIinteger\fR ] [ dscp \fIinteger\fR ] | \fIipv4_address\fR [ port
\fIinteger\fR ] [ dscp \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] [ dscp \fIinteger\fR ] | \fIipv6_address\fR [ port
@@ -711,7 +712,7 @@ view \fIstring\fR [ \fIclass\fR ] {
preferred\-glue \fIstring\fR; preferred\-glue \fIstring\fR;
prefetch \fIinteger\fR [ \fIinteger\fR ]; prefetch \fIinteger\fR [ \fIinteger\fR ];
provide\-ixfr \fIboolean\fR; provide\-ixfr \fIboolean\fR;
qname\-minimization ( strict | relaxed | disabled | off ); qname\-minimization ( strict | relaxed | disabled );
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port ( query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ] \fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ]; port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
@@ -757,7 +758,7 @@ view \fIstring\fR [ \fIclass\fR ] {
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
} ]; } ];
root\-delegation\-only [ exclude { \fIstring\fR; \&.\&.\&. } ]; root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
root\-key\-sentinel \fIboolean\fR; root\-key\-sentinel \fIboolean\fR;
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. }; \fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
@@ -819,7 +820,6 @@ view \fIstring\fR [ \fIclass\fR ] {
update\-check\-ksk \fIboolean\fR; update\-check\-ksk \fIboolean\fR;
use\-alt\-transfer\-source \fIboolean\fR; use\-alt\-transfer\-source \fIboolean\fR;
v6\-bias \fIinteger\fR; v6\-bias \fIinteger\fR;
validate\-except { \fIstring\fR; \&.\&.\&. };
zero\-no\-soa\-ttl \fIboolean\fR; zero\-no\-soa\-ttl \fIboolean\fR;
zero\-no\-soa\-ttl\-cache \fIboolean\fR; zero\-no\-soa\-ttl\-cache \fIboolean\fR;
zone \fIstring\fR [ \fIclass\fR ] { zone \fIstring\fR [ \fIclass\fR ] {
@@ -884,6 +884,7 @@ view \fIstring\fR [ \fIclass\fR ] {
max\-zone\-ttl ( unlimited | \fIttlval\fR ); max\-zone\-ttl ( unlimited | \fIttlval\fR );
min\-refresh\-time \fIinteger\fR; min\-refresh\-time \fIinteger\fR;
min\-retry\-time \fIinteger\fR; min\-retry\-time \fIinteger\fR;
mirror \fIboolean\fR;
multi\-master \fIboolean\fR; multi\-master \fIboolean\fR;
notify ( explicit | master\-only | \fIboolean\fR ); notify ( explicit | master\-only | \fIboolean\fR );
notify\-delay \fIinteger\fR; notify\-delay \fIinteger\fR;
@@ -898,8 +899,9 @@ view \fIstring\fR [ \fIclass\fR ] {
request\-expire \fIboolean\fR; request\-expire \fIboolean\fR;
request\-ixfr \fIboolean\fR; request\-ixfr \fIboolean\fR;
serial\-update\-method ( date | increment | unixtime ); serial\-update\-method ( date | increment | unixtime );
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ); \&.\&.\&. }; server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ) [
server\-names { \fIstring\fR; \&.\&.\&. }; port \fIinteger\fR ]; \&.\&.\&. };
server\-names { \fIquoted_string\fR; \&.\&.\&. };
sig\-signing\-nodes \fIinteger\fR; sig\-signing\-nodes \fIinteger\fR;
sig\-signing\-signatures \fIinteger\fR; sig\-signing\-signatures \fIinteger\fR;
sig\-signing\-type \fIinteger\fR; sig\-signing\-type \fIinteger\fR;
@@ -909,7 +911,7 @@ view \fIstring\fR [ \fIclass\fR ] {
transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port ( transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port (
\fIinteger\fR | * ) ] [ dscp \fIinteger\fR ]; \fIinteger\fR | * ) ] [ dscp \fIinteger\fR ];
try\-tcp\-refresh \fIboolean\fR; try\-tcp\-refresh \fIboolean\fR;
type ( primary | master | secondary | slave | mirror | type ( primary | master | secondary | slave |
delegation\-only | forward | hint | redirect | delegation\-only | forward | hint | redirect |
static\-stub | stub ); static\-stub | stub );
update\-check\-ksk \fIboolean\fR; update\-check\-ksk \fIboolean\fR;
@@ -992,6 +994,7 @@ zone \fIstring\fR [ \fIclass\fR ] {
max\-zone\-ttl ( unlimited | \fIttlval\fR ); max\-zone\-ttl ( unlimited | \fIttlval\fR );
min\-refresh\-time \fIinteger\fR; min\-refresh\-time \fIinteger\fR;
min\-retry\-time \fIinteger\fR; min\-retry\-time \fIinteger\fR;
mirror \fIboolean\fR;
multi\-master \fIboolean\fR; multi\-master \fIboolean\fR;
notify ( explicit | master\-only | \fIboolean\fR ); notify ( explicit | master\-only | \fIboolean\fR );
notify\-delay \fIinteger\fR; notify\-delay \fIinteger\fR;
@@ -1004,8 +1007,9 @@ zone \fIstring\fR [ \fIclass\fR ] {
request\-expire \fIboolean\fR; request\-expire \fIboolean\fR;
request\-ixfr \fIboolean\fR; request\-ixfr \fIboolean\fR;
serial\-update\-method ( date | increment | unixtime ); serial\-update\-method ( date | increment | unixtime );
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ); \&.\&.\&. }; server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ) [ port
server\-names { \fIstring\fR; \&.\&.\&. }; \fIinteger\fR ]; \&.\&.\&. };
server\-names { \fIquoted_string\fR; \&.\&.\&. };
sig\-signing\-nodes \fIinteger\fR; sig\-signing\-nodes \fIinteger\fR;
sig\-signing\-signatures \fIinteger\fR; sig\-signing\-signatures \fIinteger\fR;
sig\-signing\-type \fIinteger\fR; sig\-signing\-type \fIinteger\fR;
@@ -1015,9 +1019,8 @@ zone \fIstring\fR [ \fIclass\fR ] {
transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port ( \fIinteger\fR | * ) transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port ( \fIinteger\fR | * )
] [ dscp \fIinteger\fR ]; ] [ dscp \fIinteger\fR ];
try\-tcp\-refresh \fIboolean\fR; try\-tcp\-refresh \fIboolean\fR;
type ( primary | master | secondary | slave | mirror | type ( primary | master | secondary | slave | delegation\-only |
delegation\-only | forward | hint | redirect | static\-stub | forward | hint | redirect | static\-stub | stub );
stub );
update\-check\-ksk \fIboolean\fR; update\-check\-ksk \fIboolean\fR;
update\-policy ( local | { ( deny | grant ) \fIstring\fR ( 6to4\-self | update\-policy ( local | { ( deny | grant ) \fIstring\fR ( 6to4\-self |
external | krb5\-self | krb5\-subdomain | ms\-self | ms\-subdomain external | krb5\-self | krb5\-subdomain | ms\-self | ms\-subdomain
+39 -38
View File
@@ -13,7 +13,7 @@
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf"> <refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
<info> <info>
<date>2018-10-23</date> <date>2018-05-29</date>
</info> </info>
<refentryinfo> <refentryinfo>
<corpname>ISC</corpname> <corpname>ISC</corpname>
@@ -192,7 +192,6 @@ options {
] [ dscp <replaceable>integer</replaceable> ]; ] [ dscp <replaceable>integer</replaceable> ];
alt-transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> | alt-transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> |
* ) ] [ dscp <replaceable>integer</replaceable> ]; * ) ] [ dscp <replaceable>integer</replaceable> ];
answer-cookie <replaceable>boolean</replaceable>;
attach-cache <replaceable>string</replaceable>; attach-cache <replaceable>string</replaceable>;
auth-nxdomain <replaceable>boolean</replaceable>; // default changed auth-nxdomain <replaceable>boolean</replaceable>; // default changed
auto-dnssec ( allow | maintain | off ); auto-dnssec ( allow | maintain | off );
@@ -225,9 +224,9 @@ options {
coresize ( default | unlimited | <replaceable>sizeval</replaceable> ); coresize ( default | unlimited | <replaceable>sizeval</replaceable> );
datasize ( default | unlimited | <replaceable>sizeval</replaceable> ); datasize ( default | unlimited | <replaceable>sizeval</replaceable> );
deny-answer-addresses { <replaceable>address_match_element</replaceable>; ... } [ deny-answer-addresses { <replaceable>address_match_element</replaceable>; ... } [
except-from { <replaceable>string</replaceable>; ... } ]; except-from { <replaceable>quoted_string</replaceable>; ... } ];
deny-answer-aliases { <replaceable>string</replaceable>; ... } [ except-from { <replaceable>string</replaceable>; ... deny-answer-aliases { <replaceable>quoted_string</replaceable>; ... } [ except-from {
} ]; <replaceable>quoted_string</replaceable>; ... } ];
dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> ); dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> );
directory <replaceable>quoted_string</replaceable>; directory <replaceable>quoted_string</replaceable>;
disable-algorithms <replaceable>string</replaceable> { <replaceable>string</replaceable>; disable-algorithms <replaceable>string</replaceable> { <replaceable>string</replaceable>;
@@ -258,12 +257,14 @@ options {
dnssec-secure-to-insecure <replaceable>boolean</replaceable>; dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
dnssec-update-mode ( maintain | no-resign ); dnssec-update-mode ( maintain | no-resign );
dnssec-validation ( yes | no | auto ); dnssec-validation ( yes | no | auto );
dnstap { ( all | auth | client | forwarder | resolver | update ) [ dnstap { ( all | auth | client | forwarder |
( query | response ) ]; ... }; resolver ) [ ( query | response ) ]; ... };
dnstap-identity ( <replaceable>quoted_string</replaceable> | none | hostname ); dnstap-identity ( <replaceable>quoted_string</replaceable> | none |
dnstap-output ( file | unix ) <replaceable>quoted_string</replaceable> [ size ( unlimited | hostname );
<replaceable>size</replaceable> ) ] [ versions ( unlimited | <replaceable>integer</replaceable> ) ] [ suffix ( dnstap-output ( file | unix ) <replaceable>quoted_string</replaceable> [
increment | timestamp ) ]; size ( unlimited | <replaceable>size</replaceable> ) ] [ versions (
unlimited | <replaceable>integer</replaceable> ) ] [ suffix ( increment
| timestamp ) ];
dnstap-version ( <replaceable>quoted_string</replaceable> | none ); dnstap-version ( <replaceable>quoted_string</replaceable> | none );
dscp <replaceable>integer</replaceable>; dscp <replaceable>integer</replaceable>;
dual-stack-servers [ port <replaceable>integer</replaceable> ] { ( <replaceable>quoted_string</replaceable> [ port dual-stack-servers [ port <replaceable>integer</replaceable> ] { ( <replaceable>quoted_string</replaceable> [ port
@@ -361,7 +362,7 @@ options {
preferred-glue <replaceable>string</replaceable>; preferred-glue <replaceable>string</replaceable>;
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ]; prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
provide-ixfr <replaceable>boolean</replaceable>; provide-ixfr <replaceable>boolean</replaceable>;
qname-minimization ( strict | relaxed | disabled | off ); qname-minimization ( strict | relaxed | disabled );
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port ( query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ] <replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ]; port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
@@ -412,7 +413,7 @@ options {
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable> dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
} ]; } ];
root-delegation-only [ exclude { <replaceable>string</replaceable>; ... } ]; root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
root-key-sentinel <replaceable>boolean</replaceable>; root-key-sentinel <replaceable>boolean</replaceable>;
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... }; <replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
@@ -462,7 +463,6 @@ options {
use-v4-udp-ports { <replaceable>portrange</replaceable>; ... }; use-v4-udp-ports { <replaceable>portrange</replaceable>; ... };
use-v6-udp-ports { <replaceable>portrange</replaceable>; ... }; use-v6-udp-ports { <replaceable>portrange</replaceable>; ... };
v6-bias <replaceable>integer</replaceable>; v6-bias <replaceable>integer</replaceable>;
validate-except { <replaceable>string</replaceable>; ... };
version ( <replaceable>quoted_string</replaceable> | none ); version ( <replaceable>quoted_string</replaceable> | none );
zero-no-soa-ttl <replaceable>boolean</replaceable>; zero-no-soa-ttl <replaceable>boolean</replaceable>;
zero-no-soa-ttl-cache <replaceable>boolean</replaceable>; zero-no-soa-ttl-cache <replaceable>boolean</replaceable>;
@@ -574,9 +574,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
cleaning-interval <replaceable>integer</replaceable>; cleaning-interval <replaceable>integer</replaceable>;
clients-per-query <replaceable>integer</replaceable>; clients-per-query <replaceable>integer</replaceable>;
deny-answer-addresses { <replaceable>address_match_element</replaceable>; ... } [ deny-answer-addresses { <replaceable>address_match_element</replaceable>; ... } [
except-from { <replaceable>string</replaceable>; ... } ]; except-from { <replaceable>quoted_string</replaceable>; ... } ];
deny-answer-aliases { <replaceable>string</replaceable>; ... } [ except-from { <replaceable>string</replaceable>; ... deny-answer-aliases { <replaceable>quoted_string</replaceable>; ... } [ except-from {
} ]; <replaceable>quoted_string</replaceable>; ... } ];
dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> ); dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> );
disable-algorithms <replaceable>string</replaceable> { <replaceable>string</replaceable>; disable-algorithms <replaceable>string</replaceable> { <replaceable>string</replaceable>;
... }; ... };
@@ -610,8 +610,8 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
dnssec-secure-to-insecure <replaceable>boolean</replaceable>; dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
dnssec-update-mode ( maintain | no-resign ); dnssec-update-mode ( maintain | no-resign );
dnssec-validation ( yes | no | auto ); dnssec-validation ( yes | no | auto );
dnstap { ( all | auth | client | forwarder | resolver | update ) [ dnstap { ( all | auth | client | forwarder |
( query | response ) ]; ... }; resolver ) [ ( query | response ) ]; ... };
dual-stack-servers [ port <replaceable>integer</replaceable> ] { ( <replaceable>quoted_string</replaceable> [ port dual-stack-servers [ port <replaceable>integer</replaceable> ] { ( <replaceable>quoted_string</replaceable> [ port
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] | <replaceable>ipv4_address</replaceable> [ port <replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] | <replaceable>ipv4_address</replaceable> [ port
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port
@@ -689,7 +689,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
preferred-glue <replaceable>string</replaceable>; preferred-glue <replaceable>string</replaceable>;
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ]; prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
provide-ixfr <replaceable>boolean</replaceable>; provide-ixfr <replaceable>boolean</replaceable>;
qname-minimization ( strict | relaxed | disabled | off ); qname-minimization ( strict | relaxed | disabled );
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port ( query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ] <replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ]; port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
@@ -735,7 +735,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable> dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
} ]; } ];
root-delegation-only [ exclude { <replaceable>string</replaceable>; ... } ]; root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
root-key-sentinel <replaceable>boolean</replaceable>; root-key-sentinel <replaceable>boolean</replaceable>;
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... }; <replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
@@ -797,7 +797,6 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
update-check-ksk <replaceable>boolean</replaceable>; update-check-ksk <replaceable>boolean</replaceable>;
use-alt-transfer-source <replaceable>boolean</replaceable>; use-alt-transfer-source <replaceable>boolean</replaceable>;
v6-bias <replaceable>integer</replaceable>; v6-bias <replaceable>integer</replaceable>;
validate-except { <replaceable>string</replaceable>; ... };
zero-no-soa-ttl <replaceable>boolean</replaceable>; zero-no-soa-ttl <replaceable>boolean</replaceable>;
zero-no-soa-ttl-cache <replaceable>boolean</replaceable>; zero-no-soa-ttl-cache <replaceable>boolean</replaceable>;
zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] { zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
@@ -862,6 +861,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> ); max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
min-refresh-time <replaceable>integer</replaceable>; min-refresh-time <replaceable>integer</replaceable>;
min-retry-time <replaceable>integer</replaceable>; min-retry-time <replaceable>integer</replaceable>;
mirror <replaceable>boolean</replaceable>;
multi-master <replaceable>boolean</replaceable>; multi-master <replaceable>boolean</replaceable>;
notify ( explicit | master-only | <replaceable>boolean</replaceable> ); notify ( explicit | master-only | <replaceable>boolean</replaceable> );
notify-delay <replaceable>integer</replaceable>; notify-delay <replaceable>integer</replaceable>;
@@ -876,8 +876,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
request-expire <replaceable>boolean</replaceable>; request-expire <replaceable>boolean</replaceable>;
request-ixfr <replaceable>boolean</replaceable>; request-ixfr <replaceable>boolean</replaceable>;
serial-update-method ( date | increment | unixtime ); serial-update-method ( date | increment | unixtime );
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ); ... }; server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ) [
server-names { <replaceable>string</replaceable>; ... }; port <replaceable>integer</replaceable> ]; ... };
server-names { <replaceable>quoted_string</replaceable>; ... };
sig-signing-nodes <replaceable>integer</replaceable>; sig-signing-nodes <replaceable>integer</replaceable>;
sig-signing-signatures <replaceable>integer</replaceable>; sig-signing-signatures <replaceable>integer</replaceable>;
sig-signing-type <replaceable>integer</replaceable>; sig-signing-type <replaceable>integer</replaceable>;
@@ -887,15 +888,15 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port (
<replaceable>integer</replaceable> | * ) ] [ dscp <replaceable>integer</replaceable> ]; <replaceable>integer</replaceable> | * ) ] [ dscp <replaceable>integer</replaceable> ];
try-tcp-refresh <replaceable>boolean</replaceable>; try-tcp-refresh <replaceable>boolean</replaceable>;
type ( primary | master | secondary | slave | mirror | type ( primary | master | secondary | slave |
delegation-only | forward | hint | redirect | delegation-only | forward | hint | redirect |
static-stub | stub ); static-stub | stub );
update-check-ksk <replaceable>boolean</replaceable>; update-check-ksk <replaceable>boolean</replaceable>;
update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> ( update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> (
6to4-self | external | krb5-self | krb5-selfsub | 6to4-self | external | krb5-self | krb5-subdomain |
krb5-subdomain | ms-self | ms-selfsub | ms-subdomain | ms-self | ms-subdomain | name | self | selfsub |
name | self | selfsub | selfwild | subdomain | tcp-self selfwild | subdomain | tcp-self | wildcard | zonesub )
| wildcard | zonesub ) [ <replaceable>string</replaceable> ] <replaceable>rrtypelist</replaceable>; ... }; [ <replaceable>string</replaceable> ] <replaceable>rrtypelist</replaceable>; ... };
use-alt-transfer-source <replaceable>boolean</replaceable>; use-alt-transfer-source <replaceable>boolean</replaceable>;
zero-no-soa-ttl <replaceable>boolean</replaceable>; zero-no-soa-ttl <replaceable>boolean</replaceable>;
zone-statistics ( full | terse | none | <replaceable>boolean</replaceable> ); zone-statistics ( full | terse | none | <replaceable>boolean</replaceable> );
@@ -966,6 +967,7 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> ); max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
min-refresh-time <replaceable>integer</replaceable>; min-refresh-time <replaceable>integer</replaceable>;
min-retry-time <replaceable>integer</replaceable>; min-retry-time <replaceable>integer</replaceable>;
mirror <replaceable>boolean</replaceable>;
multi-master <replaceable>boolean</replaceable>; multi-master <replaceable>boolean</replaceable>;
notify ( explicit | master-only | <replaceable>boolean</replaceable> ); notify ( explicit | master-only | <replaceable>boolean</replaceable> );
notify-delay <replaceable>integer</replaceable>; notify-delay <replaceable>integer</replaceable>;
@@ -978,8 +980,9 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
request-expire <replaceable>boolean</replaceable>; request-expire <replaceable>boolean</replaceable>;
request-ixfr <replaceable>boolean</replaceable>; request-ixfr <replaceable>boolean</replaceable>;
serial-update-method ( date | increment | unixtime ); serial-update-method ( date | increment | unixtime );
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ); ... }; server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ) [ port
server-names { <replaceable>string</replaceable>; ... }; <replaceable>integer</replaceable> ]; ... };
server-names { <replaceable>quoted_string</replaceable>; ... };
sig-signing-nodes <replaceable>integer</replaceable>; sig-signing-nodes <replaceable>integer</replaceable>;
sig-signing-signatures <replaceable>integer</replaceable>; sig-signing-signatures <replaceable>integer</replaceable>;
sig-signing-type <replaceable>integer</replaceable>; sig-signing-type <replaceable>integer</replaceable>;
@@ -989,15 +992,13 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> | * ) transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> | * )
] [ dscp <replaceable>integer</replaceable> ]; ] [ dscp <replaceable>integer</replaceable> ];
try-tcp-refresh <replaceable>boolean</replaceable>; try-tcp-refresh <replaceable>boolean</replaceable>;
type ( primary | master | secondary | slave | mirror | type ( primary | master | secondary | slave | delegation-only |
delegation-only | forward | hint | redirect | static-stub | forward | hint | redirect | static-stub | stub );
stub );
update-check-ksk <replaceable>boolean</replaceable>; update-check-ksk <replaceable>boolean</replaceable>;
update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> ( 6to4-self | update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> ( 6to4-self |
external | krb5-self | krb5-selfsub | krb5-subdomain | ms-self external | krb5-self | krb5-subdomain | ms-self | ms-subdomain
| ms-selfsub | ms-subdomain | name | self | selfsub | selfwild | name | self | selfsub | selfwild | subdomain | tcp-self |
| subdomain | tcp-self | wildcard | zonesub ) [ <replaceable>string</replaceable> ] wildcard | zonesub ) [ <replaceable>string</replaceable> ] <replaceable>rrtypelist</replaceable>; ... };
<replaceable>rrtypelist</replaceable>; ... };
use-alt-transfer-source <replaceable>boolean</replaceable>; use-alt-transfer-source <replaceable>boolean</replaceable>;
zero-no-soa-ttl <replaceable>boolean</replaceable>; zero-no-soa-ttl <replaceable>boolean</replaceable>;
zone-statistics ( full | terse | none | <replaceable>boolean</replaceable> ); zone-statistics ( full | terse | none | <replaceable>boolean</replaceable> );
+31 -28
View File
@@ -212,9 +212,9 @@ options
coresize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br> coresize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
datasize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br> datasize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
deny-answer-addresses { <em class="replaceable"><code>address_match_element</code></em>; ... } [<br> deny-answer-addresses { <em class="replaceable"><code>address_match_element</code></em>; ... } [<br>
    except-from { <em class="replaceable"><code>string</code></em>; ... } ];<br>     except-from { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
deny-answer-aliases { <em class="replaceable"><code>string</code></em>; ... } [ except-from { <em class="replaceable"><code>string</code></em>; ...<br> deny-answer-aliases { <em class="replaceable"><code>quoted_string</code></em>; ... } [ except-from {<br>
    } ];<br>     <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br> dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br>
directory <em class="replaceable"><code>quoted_string</code></em>;<br> directory <em class="replaceable"><code>quoted_string</code></em>;<br>
disable-algorithms <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>string</code></em>;<br> disable-algorithms <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>string</code></em>;<br>
@@ -245,12 +245,14 @@ options
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br> dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
dnssec-update-mode ( maintain | no-resign );<br> dnssec-update-mode ( maintain | no-resign );<br>
dnssec-validation ( yes | no | auto );<br> dnssec-validation ( yes | no | auto );<br>
dnstap { ( all | auth | client | forwarder | resolver ) [ ( query |<br> dnstap { ( all | auth | client | forwarder |<br>
    response ) ]; ... };<br>     resolver ) [ ( query | response ) ]; ... };<br>
dnstap-identity ( <em class="replaceable"><code>quoted_string</code></em> | none | hostname );<br> dnstap-identity ( <em class="replaceable"><code>quoted_string</code></em> | none |<br>
dnstap-output ( file | unix ) <em class="replaceable"><code>quoted_string</code></em> [ size ( unlimited |<br>     hostname );<br>
    <em class="replaceable"><code>size</code></em> ) ] [ versions ( unlimited | <em class="replaceable"><code>integer</code></em> ) ] [ suffix (<br> dnstap-output ( file | unix ) <em class="replaceable"><code>quoted_string</code></em> [<br>
    increment | timestamp ) ];<br>     size ( unlimited | <em class="replaceable"><code>size</code></em> ) ] [ versions (<br>
    unlimited | <em class="replaceable"><code>integer</code></em> ) ] [ suffix ( increment<br>
    | timestamp ) ];<br>
dnstap-version ( <em class="replaceable"><code>quoted_string</code></em> | none );<br> dnstap-version ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
dscp <em class="replaceable"><code>integer</code></em>;<br> dscp <em class="replaceable"><code>integer</code></em>;<br>
dual-stack-servers [ port <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>quoted_string</code></em> [ port<br> dual-stack-servers [ port <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>quoted_string</code></em> [ port<br>
@@ -348,7 +350,7 @@ options
preferred-glue <em class="replaceable"><code>string</code></em>;<br> preferred-glue <em class="replaceable"><code>string</code></em>;<br>
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br> prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br> provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
qname-minimization ( strict | relaxed | disabled | off );<br> qname-minimization ( strict | relaxed | disabled );<br>
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br> query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
    <em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>     <em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
    port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>     port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
@@ -399,7 +401,7 @@ options
    nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>     nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
    dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>     dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
    } ];<br>     } ];<br>
root-delegation-only [ exclude { <em class="replaceable"><code>string</code></em>; ... } ];<br> root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br> root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br> rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
    <em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>     <em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
@@ -449,7 +451,6 @@ options
use-v4-udp-ports { <em class="replaceable"><code>portrange</code></em>; ... };<br> use-v4-udp-ports { <em class="replaceable"><code>portrange</code></em>; ... };<br>
use-v6-udp-ports { <em class="replaceable"><code>portrange</code></em>; ... };<br> use-v6-udp-ports { <em class="replaceable"><code>portrange</code></em>; ... };<br>
v6-bias <em class="replaceable"><code>integer</code></em>;<br> v6-bias <em class="replaceable"><code>integer</code></em>;<br>
validate-except { <em class="replaceable"><code>string</code></em>; ... };<br>
version ( <em class="replaceable"><code>quoted_string</code></em> | none );<br> version ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
zero-no-soa-ttl <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl <em class="replaceable"><code>boolean</code></em>;<br>
zero-no-soa-ttl-cache <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl-cache <em class="replaceable"><code>boolean</code></em>;<br>
@@ -565,9 +566,9 @@ view
cleaning-interval <em class="replaceable"><code>integer</code></em>;<br> cleaning-interval <em class="replaceable"><code>integer</code></em>;<br>
clients-per-query <em class="replaceable"><code>integer</code></em>;<br> clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
deny-answer-addresses { <em class="replaceable"><code>address_match_element</code></em>; ... } [<br> deny-answer-addresses { <em class="replaceable"><code>address_match_element</code></em>; ... } [<br>
    except-from { <em class="replaceable"><code>string</code></em>; ... } ];<br>     except-from { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
deny-answer-aliases { <em class="replaceable"><code>string</code></em>; ... } [ except-from { <em class="replaceable"><code>string</code></em>; ...<br> deny-answer-aliases { <em class="replaceable"><code>quoted_string</code></em>; ... } [ except-from {<br>
    } ];<br>     <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br> dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br>
disable-algorithms <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>string</code></em>;<br> disable-algorithms <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>string</code></em>;<br>
    ... };<br>     ... };<br>
@@ -601,8 +602,8 @@ view
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br> dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
dnssec-update-mode ( maintain | no-resign );<br> dnssec-update-mode ( maintain | no-resign );<br>
dnssec-validation ( yes | no | auto );<br> dnssec-validation ( yes | no | auto );<br>
dnstap { ( all | auth | client | forwarder | resolver ) [ ( query |<br> dnstap { ( all | auth | client | forwarder |<br>
    response ) ]; ... };<br>     resolver ) [ ( query | response ) ]; ... };<br>
dual-stack-servers [ port <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>quoted_string</code></em> [ port<br> dual-stack-servers [ port <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>quoted_string</code></em> [ port<br>
    <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>     <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>
    <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port<br>     <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port<br>
@@ -680,7 +681,7 @@ view
preferred-glue <em class="replaceable"><code>string</code></em>;<br> preferred-glue <em class="replaceable"><code>string</code></em>;<br>
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br> prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br> provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
qname-minimization ( strict | relaxed | disabled | off );<br> qname-minimization ( strict | relaxed | disabled );<br>
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br> query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
    <em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>     <em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
    port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>     port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
@@ -726,7 +727,7 @@ view
    nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>     nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
    dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>     dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
    } ];<br>     } ];<br>
root-delegation-only [ exclude { <em class="replaceable"><code>string</code></em>; ... } ];<br> root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br> root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br> rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
    <em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>     <em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
@@ -788,7 +789,6 @@ view
update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br> update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br>
use-alt-transfer-source <em class="replaceable"><code>boolean</code></em>;<br> use-alt-transfer-source <em class="replaceable"><code>boolean</code></em>;<br>
v6-bias <em class="replaceable"><code>integer</code></em>;<br> v6-bias <em class="replaceable"><code>integer</code></em>;<br>
validate-except { <em class="replaceable"><code>string</code></em>; ... };<br>
zero-no-soa-ttl <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl <em class="replaceable"><code>boolean</code></em>;<br>
zero-no-soa-ttl-cache <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl-cache <em class="replaceable"><code>boolean</code></em>;<br>
zone <em class="replaceable"><code>string</code></em> [ <em class="replaceable"><code>class</code></em> ] {<br> zone <em class="replaceable"><code>string</code></em> [ <em class="replaceable"><code>class</code></em> ] {<br>
@@ -853,6 +853,7 @@ view
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br> max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br> min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
min-retry-time <em class="replaceable"><code>integer</code></em>;<br> min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
mirror <em class="replaceable"><code>boolean</code></em>;<br>
multi-master <em class="replaceable"><code>boolean</code></em>;<br> multi-master <em class="replaceable"><code>boolean</code></em>;<br>
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br> notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
notify-delay <em class="replaceable"><code>integer</code></em>;<br> notify-delay <em class="replaceable"><code>integer</code></em>;<br>
@@ -867,8 +868,9 @@ view
request-expire <em class="replaceable"><code>boolean</code></em>;<br> request-expire <em class="replaceable"><code>boolean</code></em>;<br>
request-ixfr <em class="replaceable"><code>boolean</code></em>;<br> request-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
serial-update-method ( date | increment | unixtime );<br> serial-update-method ( date | increment | unixtime );<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ); ... };<br> server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ) [<br>
server-names { <em class="replaceable"><code>string</code></em>; ... };<br>     port <em class="replaceable"><code>integer</code></em> ]; ... };<br>
server-names { <em class="replaceable"><code>quoted_string</code></em>; ... };<br>
sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br> sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br> sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-type <em class="replaceable"><code>integer</code></em>;<br> sig-signing-type <em class="replaceable"><code>integer</code></em>;<br>
@@ -878,7 +880,7 @@ view
transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port (<br> transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port (<br>
    <em class="replaceable"><code>integer</code></em> | * ) ] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>     <em class="replaceable"><code>integer</code></em> | * ) ] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br> try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br>
type ( primary | master | secondary | slave | mirror |<br> type ( primary | master | secondary | slave |<br>
    delegation-only | forward | hint | redirect |<br>     delegation-only | forward | hint | redirect |<br>
    static-stub | stub );<br>     static-stub | stub );<br>
update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br> update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br>
@@ -958,6 +960,7 @@ zone
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br> max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br> min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
min-retry-time <em class="replaceable"><code>integer</code></em>;<br> min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
mirror <em class="replaceable"><code>boolean</code></em>;<br>
multi-master <em class="replaceable"><code>boolean</code></em>;<br> multi-master <em class="replaceable"><code>boolean</code></em>;<br>
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br> notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
notify-delay <em class="replaceable"><code>integer</code></em>;<br> notify-delay <em class="replaceable"><code>integer</code></em>;<br>
@@ -970,8 +973,9 @@ zone
request-expire <em class="replaceable"><code>boolean</code></em>;<br> request-expire <em class="replaceable"><code>boolean</code></em>;<br>
request-ixfr <em class="replaceable"><code>boolean</code></em>;<br> request-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
serial-update-method ( date | increment | unixtime );<br> serial-update-method ( date | increment | unixtime );<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ); ... };<br> server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ) [ port<br>
server-names { <em class="replaceable"><code>string</code></em>; ... };<br>     <em class="replaceable"><code>integer</code></em> ]; ... };<br>
server-names { <em class="replaceable"><code>quoted_string</code></em>; ... };<br>
sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br> sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br> sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-type <em class="replaceable"><code>integer</code></em>;<br> sig-signing-type <em class="replaceable"><code>integer</code></em>;<br>
@@ -981,9 +985,8 @@ zone
transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port ( <em class="replaceable"><code>integer</code></em> | * )<br> transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port ( <em class="replaceable"><code>integer</code></em> | * )<br>
    ] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>     ] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br> try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br>
type ( primary | master | secondary | slave | mirror |<br> type ( primary | master | secondary | slave | delegation-only |<br>
    delegation-only | forward | hint | redirect | static-stub |<br>     forward | hint | redirect | static-stub | stub );<br>
    stub );<br>
update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br> update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br>
update-policy ( local | { ( deny | grant ) <em class="replaceable"><code>string</code></em> ( 6to4-self |<br> update-policy ( local | { ( deny | grant ) <em class="replaceable"><code>string</code></em> ( 6to4-self |<br>
    external | krb5-self | krb5-subdomain | ms-self | ms-subdomain<br>     external | krb5-self | krb5-subdomain | ms-self | ms-subdomain<br>
+613 -849
View File
File diff suppressed because it is too large Load Diff
+69 -73
View File
@@ -13,9 +13,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/httpd.h> #include <isc/httpd.h>
#include <isc/json.h> #include <isc/json.h>
@@ -70,7 +67,7 @@ stats_dumparg {
void *arg; /* type dependent argument */ void *arg; /* type dependent argument */
int ncounters; /* for general statistics */ int ncounters; /* for general statistics */
int *counterindices; /* for general statistics */ int *counterindices; /* for general statistics */
uint64_t *countervalues; /* for general statistics */ isc_uint64_t *countervalues; /* for general statistics */
isc_result_t result; isc_result_t result;
} stats_dumparg_t; } stats_dumparg_t;
@@ -94,7 +91,6 @@ user_zonetype( dns_zone_t *zone ) {
{ dns_zone_none, "none" }, { dns_zone_none, "none" },
{ dns_zone_master, "master" }, { dns_zone_master, "master" },
{ dns_zone_slave, "slave" }, { dns_zone_slave, "slave" },
{ dns_zone_mirror, "mirror" },
{ dns_zone_stub, "stub" }, { dns_zone_stub, "stub" },
{ dns_zone_staticstub, "static-stub" }, { dns_zone_staticstub, "static-stub" },
{ dns_zone_key, "key" }, { dns_zone_key, "key" },
@@ -1052,7 +1048,7 @@ init_desc(void) {
* Dump callback functions. * Dump callback functions.
*/ */
static void static void
generalstat_dump(isc_statscounter_t counter, uint64_t val, void *arg) { generalstat_dump(isc_statscounter_t counter, isc_uint64_t val, void *arg) {
stats_dumparg_t *dumparg = arg; stats_dumparg_t *dumparg = arg;
REQUIRE(counter < dumparg->ncounters); REQUIRE(counter < dumparg->ncounters);
@@ -1062,10 +1058,10 @@ generalstat_dump(isc_statscounter_t counter, uint64_t val, void *arg) {
static isc_result_t static isc_result_t
dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg, dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
const char *category, const char **desc, int ncounters, const char *category, const char **desc, int ncounters,
int *indices, uint64_t *values, int options) int *indices, isc_uint64_t *values, int options)
{ {
int i, idx; int i, idx;
uint64_t value; isc_uint64_t value;
stats_dumparg_t dumparg; stats_dumparg_t dumparg;
FILE *fp; FILE *fp;
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
@@ -1110,7 +1106,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
switch (dumparg.type) { switch (dumparg.type) {
case isc_statsformat_file: case isc_statsformat_file:
fp = arg; fp = arg;
fprintf(fp, "%20" PRIu64 " %s\n", fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n",
value, desc[idx]); value, desc[idx]);
break; break;
case isc_statsformat_xml: case isc_statsformat_xml:
@@ -1138,7 +1134,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
ISC_XMLCHAR ISC_XMLCHAR
"counter")); "counter"));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, value)); "%" ISC_PRINT_QUADFORMAT "u", value));
TRY0(xmlTextWriterEndElement(writer)); TRY0(xmlTextWriterEndElement(writer));
/* </counter> */ /* </counter> */
@@ -1155,7 +1151,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
ISC_XMLCHAR ISC_XMLCHAR
desc[idx])); desc[idx]));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, value)); "%" ISC_PRINT_QUADFORMAT "u", value));
TRY0(xmlTextWriterEndElement(writer)); TRY0(xmlTextWriterEndElement(writer));
/* counter */ /* counter */
} }
@@ -1183,7 +1179,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
} }
static void static void
rdtypestat_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) { rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
char typebuf[64]; char typebuf[64];
const char *typestr; const char *typestr;
stats_dumparg_t *dumparg = arg; stats_dumparg_t *dumparg = arg;
@@ -1207,7 +1203,7 @@ rdtypestat_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
switch (dumparg->type) { switch (dumparg->type) {
case isc_statsformat_file: case isc_statsformat_file:
fp = dumparg->arg; fp = dumparg->arg;
fprintf(fp, "%20" PRIu64 " %s\n", val, typestr); fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, typestr);
break; break;
case isc_statsformat_xml: case isc_statsformat_xml:
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
@@ -1219,7 +1215,7 @@ rdtypestat_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
ISC_XMLCHAR typestr)); ISC_XMLCHAR typestr));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, "%" ISC_PRINT_QUADFORMAT "u",
val)); val));
TRY0(xmlTextWriterEndElement(writer)); /* type */ TRY0(xmlTextWriterEndElement(writer)); /* type */
@@ -1247,13 +1243,13 @@ rdtypestat_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
} }
static void static void
rdatasetstats_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) { rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
stats_dumparg_t *dumparg = arg; stats_dumparg_t *dumparg = arg;
FILE *fp; FILE *fp;
char typebuf[64]; char typebuf[64];
const char *typestr; const char *typestr;
bool nxrrset = false; isc_boolean_t nxrrset = ISC_FALSE;
bool stale = false; isc_boolean_t stale = ISC_FALSE;
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
xmlTextWriterPtr writer; xmlTextWriterPtr writer;
int xmlrc; int xmlrc;
@@ -1277,16 +1273,16 @@ rdatasetstats_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXRRSET) if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXRRSET)
!= 0) != 0)
nxrrset = true; nxrrset = ISC_TRUE;
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_STALE) if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_STALE)
!= 0) != 0)
stale = true; stale = ISC_TRUE;
switch (dumparg->type) { switch (dumparg->type) {
case isc_statsformat_file: case isc_statsformat_file:
fp = dumparg->arg; fp = dumparg->arg;
fprintf(fp, "%20" PRIu64 " %s%s%s\n", val, fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s%s%s\n", val,
stale ? "#" : "", nxrrset ? "!" : "", typestr); stale ? "#" : "", nxrrset ? "!" : "", typestr);
break; break;
case isc_statsformat_xml: case isc_statsformat_xml:
@@ -1302,7 +1298,7 @@ rdatasetstats_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter")); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, "%" ISC_PRINT_QUADFORMAT "u",
val)); val));
TRY0(xmlTextWriterEndElement(writer)); /* counter */ TRY0(xmlTextWriterEndElement(writer)); /* counter */
@@ -1333,7 +1329,7 @@ rdatasetstats_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
} }
static void static void
opcodestat_dump(dns_opcode_t code, uint64_t val, void *arg) { opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) {
FILE *fp; FILE *fp;
isc_buffer_t b; isc_buffer_t b;
char codebuf[64]; char codebuf[64];
@@ -1353,7 +1349,7 @@ opcodestat_dump(dns_opcode_t code, uint64_t val, void *arg) {
switch (dumparg->type) { switch (dumparg->type) {
case isc_statsformat_file: case isc_statsformat_file:
fp = dumparg->arg; fp = dumparg->arg;
fprintf(fp, "%20" PRIu64 " %s\n", val, codebuf); fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, codebuf);
break; break;
case isc_statsformat_xml: case isc_statsformat_xml:
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
@@ -1362,7 +1358,7 @@ opcodestat_dump(dns_opcode_t code, uint64_t val, void *arg) {
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name", TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
ISC_XMLCHAR codebuf )); ISC_XMLCHAR codebuf ));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, "%" ISC_PRINT_QUADFORMAT "u",
val)); val));
TRY0(xmlTextWriterEndElement(writer)); /* counter */ TRY0(xmlTextWriterEndElement(writer)); /* counter */
#endif #endif
@@ -1390,7 +1386,7 @@ opcodestat_dump(dns_opcode_t code, uint64_t val, void *arg) {
} }
static void static void
rcodestat_dump(dns_rcode_t code, uint64_t val, void *arg) { rcodestat_dump(dns_rcode_t code, isc_uint64_t val, void *arg) {
FILE *fp; FILE *fp;
isc_buffer_t b; isc_buffer_t b;
char codebuf[64]; char codebuf[64];
@@ -1410,7 +1406,7 @@ rcodestat_dump(dns_rcode_t code, uint64_t val, void *arg) {
switch (dumparg->type) { switch (dumparg->type) {
case isc_statsformat_file: case isc_statsformat_file:
fp = dumparg->arg; fp = dumparg->arg;
fprintf(fp, "%20" PRIu64 " %s\n", val, codebuf); fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, codebuf);
break; break;
case isc_statsformat_xml: case isc_statsformat_xml:
#ifdef HAVE_LIBXML2 #ifdef HAVE_LIBXML2
@@ -1419,7 +1415,7 @@ rcodestat_dump(dns_rcode_t code, uint64_t val, void *arg) {
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name", TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
ISC_XMLCHAR codebuf )); ISC_XMLCHAR codebuf ));
TRY0(xmlTextWriterWriteFormatString(writer, TRY0(xmlTextWriterWriteFormatString(writer,
"%" PRIu64, "%" ISC_PRINT_QUADFORMAT "u",
val)); val));
TRY0(xmlTextWriterEndElement(writer)); /* counter */ TRY0(xmlTextWriterEndElement(writer)); /* counter */
#endif #endif
@@ -1464,7 +1460,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
isc_result_t result; isc_result_t result;
char buf[1024 + 32]; /* sufficiently large for zone name and class */ char buf[1024 + 32]; /* sufficiently large for zone name and class */
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
uint32_t serial; isc_uint32_t serial;
xmlTextWriterPtr writer = arg; xmlTextWriterPtr writer = arg;
dns_zonestat_level_t statlevel; dns_zonestat_level_t statlevel;
int xmlrc; int xmlrc;
@@ -1508,8 +1504,8 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
isc_stats_t *zonestats; isc_stats_t *zonestats;
isc_stats_t *gluecachestats; isc_stats_t *gluecachestats;
dns_stats_t *rcvquerystats; dns_stats_t *rcvquerystats;
uint64_t nsstat_values[ns_statscounter_max]; isc_uint64_t nsstat_values[ns_statscounter_max];
uint64_t gluecachestats_values[dns_gluecachestatscounter_max]; isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
zonestats = dns_zone_getrequeststats(zone); zonestats = dns_zone_getrequeststats(zone);
if (zonestats != NULL) { if (zonestats != NULL) {
@@ -1582,7 +1578,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
} }
static isc_result_t static isc_result_t
generatexml(named_server_t *server, uint32_t flags, generatexml(named_server_t *server, isc_uint32_t flags,
int *buflen, xmlChar **buf) int *buflen, xmlChar **buf)
{ {
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"]; char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
@@ -1595,17 +1591,17 @@ generatexml(named_server_t *server, uint32_t flags,
dns_view_t *view; dns_view_t *view;
stats_dumparg_t dumparg; stats_dumparg_t dumparg;
dns_stats_t *cacherrstats; dns_stats_t *cacherrstats;
uint64_t nsstat_values[ns_statscounter_max]; isc_uint64_t nsstat_values[ns_statscounter_max];
uint64_t resstat_values[dns_resstatscounter_max]; isc_uint64_t resstat_values[dns_resstatscounter_max];
uint64_t adbstat_values[dns_adbstats_max]; isc_uint64_t adbstat_values[dns_adbstats_max];
uint64_t zonestat_values[dns_zonestatscounter_max]; isc_uint64_t zonestat_values[dns_zonestatscounter_max];
uint64_t sockstat_values[isc_sockstatscounter_max]; isc_uint64_t sockstat_values[isc_sockstatscounter_max];
uint64_t udpinsizestat_values[dns_sizecounter_in_max]; isc_uint64_t udpinsizestat_values[dns_sizecounter_in_max];
uint64_t udpoutsizestat_values[dns_sizecounter_out_max]; isc_uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
uint64_t tcpinsizestat_values[dns_sizecounter_in_max]; isc_uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
uint64_t tcpoutsizestat_values[dns_sizecounter_out_max]; isc_uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
#ifdef HAVE_DNSTAP #ifdef HAVE_DNSTAP
uint64_t dnstapstat_values[dns_dnstapcounter_max]; isc_uint64_t dnstapstat_values[dns_dnstapcounter_max];
#endif #endif
isc_result_t result; isc_result_t result;
@@ -1919,7 +1915,7 @@ generatexml(named_server_t *server, uint32_t flags,
if ((flags & STATS_XML_ZONES) != 0) { if ((flags & STATS_XML_ZONES) != 0) {
TRY0(xmlTextWriterStartElement(writer, TRY0(xmlTextWriterStartElement(writer,
ISC_XMLCHAR "zones")); ISC_XMLCHAR "zones"));
result = dns_zt_apply(view->zonetable, true, result = dns_zt_apply(view->zonetable, ISC_TRUE,
NULL, zone_xmlrender, writer); NULL, zone_xmlrender, writer);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
goto error; goto error;
@@ -2057,7 +2053,7 @@ wrap_xmlfree(isc_buffer_t *buffer, void *arg) {
} }
static isc_result_t static isc_result_t
render_xml(uint32_t flags, const char *url, isc_httpdurl_t *urlinfo, render_xml(isc_uint32_t flags, const char *url, isc_httpdurl_t *urlinfo,
const char *querystring, const char *headers, void *arg, const char *querystring, const char *headers, void *arg,
unsigned int *retcode, const char **retmsg, unsigned int *retcode, const char **retmsg,
const char **mimetype, isc_buffer_t *b, const char **mimetype, isc_buffer_t *b,
@@ -2232,7 +2228,7 @@ wrap_jsonfree(isc_buffer_t *buffer, void *arg) {
static json_object * static json_object *
addzone(char *name, char *classname, const char *ztype, addzone(char *name, char *classname, const char *ztype,
uint32_t serial, bool add_serial) isc_uint32_t serial, isc_boolean_t add_serial)
{ {
json_object *node = json_object_new_object(); json_object *node = json_object_new_object();
@@ -2259,7 +2255,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
char *zone_name_only = NULL; char *zone_name_only = NULL;
char *class_only = NULL; char *class_only = NULL;
dns_rdataclass_t rdclass; dns_rdataclass_t rdclass;
uint32_t serial; isc_uint32_t serial;
json_object *zonearray = (json_object *) arg; json_object *zonearray = (json_object *) arg;
json_object *zoneobj = NULL; json_object *zoneobj = NULL;
dns_zonestat_level_t statlevel; dns_zonestat_level_t statlevel;
@@ -2277,10 +2273,10 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
if (dns_zone_getserial(zone, &serial) != ISC_R_SUCCESS) if (dns_zone_getserial(zone, &serial) != ISC_R_SUCCESS)
zoneobj = addzone(zone_name_only, class_only, zoneobj = addzone(zone_name_only, class_only,
user_zonetype(zone), 0, false); user_zonetype(zone), 0, ISC_FALSE);
else else
zoneobj = addzone(zone_name_only, class_only, zoneobj = addzone(zone_name_only, class_only,
user_zonetype(zone), serial, true); user_zonetype(zone), serial, ISC_TRUE);
if (zoneobj == NULL) if (zoneobj == NULL)
return (ISC_R_NOMEMORY); return (ISC_R_NOMEMORY);
@@ -2289,8 +2285,8 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
isc_stats_t *zonestats; isc_stats_t *zonestats;
isc_stats_t *gluecachestats; isc_stats_t *gluecachestats;
dns_stats_t *rcvquerystats; dns_stats_t *rcvquerystats;
uint64_t nsstat_values[ns_statscounter_max]; isc_uint64_t nsstat_values[ns_statscounter_max];
uint64_t gluecachestats_values[dns_gluecachestatscounter_max]; isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
zonestats = dns_zone_getrequeststats(zone); zonestats = dns_zone_getrequeststats(zone);
if (zonestats != NULL) { if (zonestats != NULL) {
@@ -2380,7 +2376,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
static isc_result_t static isc_result_t
generatejson(named_server_t *server, size_t *msglen, generatejson(named_server_t *server, size_t *msglen,
const char **msg, json_object **rootp, uint32_t flags) const char **msg, json_object **rootp, isc_uint32_t flags)
{ {
dns_view_t *view; dns_view_t *view;
isc_result_t result = ISC_R_SUCCESS; isc_result_t result = ISC_R_SUCCESS;
@@ -2390,17 +2386,17 @@ generatejson(named_server_t *server, size_t *msglen,
json_object *tcpreq4 = NULL, *tcpresp4 = NULL; json_object *tcpreq4 = NULL, *tcpresp4 = NULL;
json_object *udpreq6 = NULL, *udpresp6 = NULL; json_object *udpreq6 = NULL, *udpresp6 = NULL;
json_object *tcpreq6 = NULL, *tcpresp6 = NULL; json_object *tcpreq6 = NULL, *tcpresp6 = NULL;
uint64_t nsstat_values[ns_statscounter_max]; isc_uint64_t nsstat_values[ns_statscounter_max];
uint64_t resstat_values[dns_resstatscounter_max]; isc_uint64_t resstat_values[dns_resstatscounter_max];
uint64_t adbstat_values[dns_adbstats_max]; isc_uint64_t adbstat_values[dns_adbstats_max];
uint64_t zonestat_values[dns_zonestatscounter_max]; isc_uint64_t zonestat_values[dns_zonestatscounter_max];
uint64_t sockstat_values[isc_sockstatscounter_max]; isc_uint64_t sockstat_values[isc_sockstatscounter_max];
uint64_t udpinsizestat_values[dns_sizecounter_in_max]; isc_uint64_t udpinsizestat_values[dns_sizecounter_in_max];
uint64_t udpoutsizestat_values[dns_sizecounter_out_max]; isc_uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
uint64_t tcpinsizestat_values[dns_sizecounter_in_max]; isc_uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
uint64_t tcpoutsizestat_values[dns_sizecounter_out_max]; isc_uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
#ifdef HAVE_DNSTAP #ifdef HAVE_DNSTAP
uint64_t dnstapstat_values[dns_dnstapcounter_max]; isc_uint64_t dnstapstat_values[dns_dnstapcounter_max];
#endif #endif
stats_dumparg_t dumparg; stats_dumparg_t dumparg;
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"]; char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
@@ -2614,7 +2610,7 @@ generatejson(named_server_t *server, size_t *msglen,
if ((flags & STATS_JSON_ZONES) != 0) { if ((flags & STATS_JSON_ZONES) != 0) {
result = dns_zt_apply(view->zonetable, result = dns_zt_apply(view->zonetable,
true, ISC_TRUE,
NULL, zone_jsonrender, NULL, zone_jsonrender,
za); za);
if (result != ISC_R_SUCCESS) { if (result != ISC_R_SUCCESS) {
@@ -2959,7 +2955,7 @@ generatejson(named_server_t *server, size_t *msglen,
} }
static isc_result_t static isc_result_t
render_json(uint32_t flags, render_json(isc_uint32_t flags,
const char *url, isc_httpdurl_t *urlinfo, const char *url, isc_httpdurl_t *urlinfo,
const char *querystring, const char *headers, const char *querystring, const char *headers,
void *arg, unsigned int *retcode, const char **retmsg, void *arg, unsigned int *retcode, const char **retmsg,
@@ -3186,7 +3182,7 @@ shutdown_listener(named_statschannel_t *listener) {
isc_httpdmgr_shutdown(&listener->httpdmgr); isc_httpdmgr_shutdown(&listener->httpdmgr);
} }
static bool static isc_boolean_t
client_ok(const isc_sockaddr_t *fromaddr, void *arg) { client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
named_statschannel_t *listener = arg; named_statschannel_t *listener = arg;
dns_aclenv_t *env = dns_aclenv_t *env =
@@ -3204,7 +3200,7 @@ client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
&match, NULL) == ISC_R_SUCCESS) && match > 0) &match, NULL) == ISC_R_SUCCESS) && match > 0)
{ {
UNLOCK(&listener->lock); UNLOCK(&listener->lock);
return (true); return (ISC_TRUE);
} }
UNLOCK(&listener->lock); UNLOCK(&listener->lock);
@@ -3213,7 +3209,7 @@ client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING, NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING,
"rejected statistics connection from %s", socktext); "rejected statistics connection from %s", socktext);
return (false); return (ISC_FALSE);
} }
static void static void
@@ -3285,7 +3281,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
isc_socket_setname(sock, "statchannel", NULL); isc_socket_setname(sock, "statchannel", NULL);
#ifndef ISC_ALLOW_MAPPED #ifndef ISC_ALLOW_MAPPED
isc_socket_ipv6only(sock, true); isc_socket_ipv6only(sock, ISC_TRUE);
#endif #endif
result = isc_socket_bind(sock, addr, ISC_SOCKET_REUSEADDRESS); result = isc_socket_bind(sock, addr, ISC_SOCKET_REUSEADDRESS);
@@ -3340,7 +3336,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
isc_httpdmgr_addurl(listener->httpdmgr, "/json/v1/traffic", isc_httpdmgr_addurl(listener->httpdmgr, "/json/v1/traffic",
render_json_traffic, server); render_json_traffic, server);
#endif #endif
isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.xsl", true, isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.xsl", ISC_TRUE,
render_xsl, server); render_xsl, server);
*listenerp = listener; *listenerp = listener;
@@ -3570,12 +3566,12 @@ named_stats_dump(named_server_t *server, FILE *fp) {
dns_view_t *view; dns_view_t *view;
dns_zone_t *zone, *next; dns_zone_t *zone, *next;
stats_dumparg_t dumparg; stats_dumparg_t dumparg;
uint64_t nsstat_values[ns_statscounter_max]; isc_uint64_t nsstat_values[ns_statscounter_max];
uint64_t resstat_values[dns_resstatscounter_max]; isc_uint64_t resstat_values[dns_resstatscounter_max];
uint64_t adbstat_values[dns_adbstats_max]; isc_uint64_t adbstat_values[dns_adbstats_max];
uint64_t zonestat_values[dns_zonestatscounter_max]; isc_uint64_t zonestat_values[dns_zonestatscounter_max];
uint64_t sockstat_values[isc_sockstatscounter_max]; isc_uint64_t sockstat_values[isc_sockstatscounter_max];
uint64_t gluecachestats_values[dns_gluecachestatscounter_max]; isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
RUNTIME_CHECK(isc_once_do(&once, init_desc) == ISC_R_SUCCESS); RUNTIME_CHECK(isc_once_do(&once, init_desc) == ISC_R_SUCCESS);
+2 -4
View File
@@ -14,8 +14,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/string.h> /* Required for HP/UX (and others?) */ #include <isc/string.h> /* Required for HP/UX (and others?) */
#include <isc/mem.h> #include <isc/mem.h>
@@ -52,7 +50,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
isc_result_t result; isc_result_t result;
dns_tkeyctx_t *tctx = NULL; dns_tkeyctx_t *tctx = NULL;
const char *s; const char *s;
uint32_t n; isc_uint32_t n;
dns_fixedname_t fname; dns_fixedname_t fname;
dns_name_t *name; dns_name_t *name;
isc_buffer_t b; isc_buffer_t b;
@@ -103,7 +101,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
isc_buffer_add(&b, strlen(s)); isc_buffer_add(&b, strlen(s));
name = dns_fixedname_initname(&fname); name = dns_fixedname_initname(&fname);
RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
RETERR(dst_gssapi_acquirecred(name, false, &tctx->gsscred)); RETERR(dst_gssapi_acquirecred(name, ISC_FALSE, &tctx->gsscred));
} }
obj = NULL; obj = NULL;
+2 -4
View File
@@ -14,8 +14,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <isc/base64.h> #include <isc/base64.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/mem.h> #include <isc/mem.h>
@@ -45,7 +43,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring,
int secretlen = 0; int secretlen = 0;
isc_result_t ret; isc_result_t ret;
isc_stdtime_t now; isc_stdtime_t now;
uint16_t bits; isc_uint16_t bits;
for (element = cfg_list_first(list); for (element = cfg_list_first(list);
element != NULL; element != NULL;
@@ -111,7 +109,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring,
isc_stdtime_get(&now); isc_stdtime_get(&now);
ret = dns_tsigkey_create(&keyname, alg, secret, secretlen, ret = dns_tsigkey_create(&keyname, alg, secret, secretlen,
false, NULL, now, now, ISC_FALSE, NULL, now, now,
mctx, ring, &tsigkey); mctx, ring, &tsigkey);
isc_mem_put(mctx, secret, secretalloc); isc_mem_put(mctx, secret, secretalloc);
secret = NULL; secret = NULL;
+27 -29
View File
@@ -12,11 +12,9 @@
#include <config.h> #include <config.h>
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <dns/log.h> #include <dns/log.h>
@@ -45,7 +43,7 @@ typedef struct dlopen_data {
unsigned int flags; unsigned int flags;
isc_mutex_t lock; isc_mutex_t lock;
int version; int version;
bool in_configure; isc_boolean_t in_configure;
dlz_dlopen_version_t *dlz_version; dlz_dlopen_version_t *dlz_version;
dlz_dlopen_create_t *dlz_create; dlz_dlopen_create_t *dlz_create;
@@ -68,14 +66,14 @@ typedef struct dlopen_data {
#define MAYBE_LOCK(cd) \ #define MAYBE_LOCK(cd) \
do { \ do { \
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
cd->in_configure == false) \ cd->in_configure == ISC_FALSE) \
LOCK(&cd->lock); \ LOCK(&cd->lock); \
} while (0) } while (0)
#define MAYBE_UNLOCK(cd) \ #define MAYBE_UNLOCK(cd) \
do { \ do { \
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
cd->in_configure == false) \ cd->in_configure == ISC_FALSE) \
UNLOCK(&cd->lock); \ UNLOCK(&cd->lock); \
} while (0) } while (0)
@@ -195,7 +193,7 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
* Load a symbol from the library * Load a symbol from the library
*/ */
static void * static void *
dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) { dl_load_symbol(dlopen_data_t *cd, const char *symbol, isc_boolean_t mandatory) {
void *ptr = dlsym(cd->dl_handle, symbol); void *ptr = dlsym(cd->dl_handle, symbol);
if (ptr == NULL && mandatory) { if (ptr == NULL && mandatory) {
dlopen_log(ISC_LOG_ERROR, dlopen_log(ISC_LOG_ERROR,
@@ -283,13 +281,13 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
/* Find the symbols */ /* Find the symbols */
cd->dlz_version = (dlz_dlopen_version_t *) cd->dlz_version = (dlz_dlopen_version_t *)
dl_load_symbol(cd, "dlz_version", true); dl_load_symbol(cd, "dlz_version", ISC_TRUE);
cd->dlz_create = (dlz_dlopen_create_t *) cd->dlz_create = (dlz_dlopen_create_t *)
dl_load_symbol(cd, "dlz_create", true); dl_load_symbol(cd, "dlz_create", ISC_TRUE);
cd->dlz_lookup = (dlz_dlopen_lookup_t *) cd->dlz_lookup = (dlz_dlopen_lookup_t *)
dl_load_symbol(cd, "dlz_lookup", true); dl_load_symbol(cd, "dlz_lookup", ISC_TRUE);
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *) cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
dl_load_symbol(cd, "dlz_findzonedb", true); dl_load_symbol(cd, "dlz_findzonedb", ISC_TRUE);
if (cd->dlz_create == NULL || if (cd->dlz_create == NULL ||
cd->dlz_version == NULL || cd->dlz_version == NULL ||
@@ -302,29 +300,29 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
} }
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *) cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
dl_load_symbol(cd, "dlz_allowzonexfr", false); dl_load_symbol(cd, "dlz_allowzonexfr", ISC_FALSE);
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *) cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
dl_load_symbol(cd, "dlz_allnodes", dl_load_symbol(cd, "dlz_allnodes",
(cd->dlz_allowzonexfr != NULL)); ISC_TF(cd->dlz_allowzonexfr != NULL));
cd->dlz_authority = (dlz_dlopen_authority_t *) cd->dlz_authority = (dlz_dlopen_authority_t *)
dl_load_symbol(cd, "dlz_authority", false); dl_load_symbol(cd, "dlz_authority", ISC_FALSE);
cd->dlz_newversion = (dlz_dlopen_newversion_t *) cd->dlz_newversion = (dlz_dlopen_newversion_t *)
dl_load_symbol(cd, "dlz_newversion", false); dl_load_symbol(cd, "dlz_newversion", ISC_FALSE);
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *) cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
dl_load_symbol(cd, "dlz_closeversion", dl_load_symbol(cd, "dlz_closeversion",
(cd->dlz_newversion != NULL)); ISC_TF(cd->dlz_newversion != NULL));
cd->dlz_configure = (dlz_dlopen_configure_t *) cd->dlz_configure = (dlz_dlopen_configure_t *)
dl_load_symbol(cd, "dlz_configure", false); dl_load_symbol(cd, "dlz_configure", ISC_FALSE);
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *) cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
dl_load_symbol(cd, "dlz_ssumatch", false); dl_load_symbol(cd, "dlz_ssumatch", ISC_FALSE);
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *) cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
dl_load_symbol(cd, "dlz_addrdataset", false); dl_load_symbol(cd, "dlz_addrdataset", ISC_FALSE);
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *) cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
dl_load_symbol(cd, "dlz_subrdataset", false); dl_load_symbol(cd, "dlz_subrdataset", ISC_FALSE);
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *) cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
dl_load_symbol(cd, "dlz_delrdataset", false); dl_load_symbol(cd, "dlz_delrdataset", ISC_FALSE);
cd->dlz_destroy = (dlz_dlopen_destroy_t *) cd->dlz_destroy = (dlz_dlopen_destroy_t *)
dl_load_symbol(cd, "dlz_destroy", false); dl_load_symbol(cd, "dlz_destroy", ISC_FALSE);
/* Check the version of the API is the same */ /* Check the version of the API is the same */
cd->version = cd->dlz_version(&cd->flags); cd->version = cd->dlz_version(&cd->flags);
@@ -437,7 +435,7 @@ dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata,
* Called to end a transaction * Called to end a transaction
*/ */
static void static void
dlopen_dlz_closeversion(const char *zone, bool commit, dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit,
void *driverarg, void *dbdata, void **versionp) void *driverarg, void *dbdata, void **versionp)
{ {
dlopen_data_t *cd = (dlopen_data_t *) dbdata; dlopen_data_t *cd = (dlopen_data_t *) dbdata;
@@ -470,9 +468,9 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
MAYBE_LOCK(cd); MAYBE_LOCK(cd);
cd->in_configure = true; cd->in_configure = ISC_TRUE;
result = cd->dlz_configure(view, dlzdb, cd->dbdata); result = cd->dlz_configure(view, dlzdb, cd->dbdata);
cd->in_configure = false; cd->in_configure = ISC_FALSE;
MAYBE_UNLOCK(cd); MAYBE_UNLOCK(cd);
return (result); return (result);
@@ -482,18 +480,18 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
/* /*
* Check for authority to change a name. * Check for authority to change a name.
*/ */
static bool static isc_boolean_t
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr, dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
const char *type, const char *key, uint32_t keydatalen, const char *type, const char *key, isc_uint32_t keydatalen,
unsigned char *keydata, void *driverarg, void *dbdata) unsigned char *keydata, void *driverarg, void *dbdata)
{ {
dlopen_data_t *cd = (dlopen_data_t *) dbdata; dlopen_data_t *cd = (dlopen_data_t *) dbdata;
bool ret; isc_boolean_t ret;
UNUSED(driverarg); UNUSED(driverarg);
if (cd->dlz_ssumatch == NULL) if (cd->dlz_ssumatch == NULL)
return (false); return (ISC_FALSE);
MAYBE_LOCK(cd); MAYBE_LOCK(cd);
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen, ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
+3 -4
View File
@@ -15,7 +15,6 @@
/*! \file */ /*! \file */
#include <pwd.h> #include <pwd.h>
#include <stdbool.h>
#include <isc/types.h> #include <isc/types.h>
@@ -50,12 +49,12 @@ void
named_os_minprivs(void); named_os_minprivs(void);
FILE * FILE *
named_os_openfile(const char *filename, mode_t mode, bool switch_user); named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user);
void void
named_os_writepidfile(const char *filename, bool first_time); named_os_writepidfile(const char *filename, isc_boolean_t first_time);
bool isc_boolean_t
named_os_issingleton(const char *filename); named_os_issingleton(const char *filename);
void void
+166 -61
View File
@@ -13,7 +13,6 @@
#include <config.h> #include <config.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdbool.h>
#include <sys/types.h> /* dev_t FreeBSD 2.1 */ #include <sys/types.h> /* dev_t FreeBSD 2.1 */
#include <sys/stat.h> #include <sys/stat.h>
@@ -23,8 +22,8 @@
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <grp.h>
#include <fcntl.h> #include <fcntl.h>
#include <grp.h> /* Required for initgroups() on IRIX. */
#include <pwd.h> #include <pwd.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@@ -40,7 +39,7 @@
#include <isc/print.h> #include <isc/print.h>
#include <isc/resource.h> #include <isc/resource.h>
#include <isc/result.h> #include <isc/result.h>
#include <isc/strerr.h> #include <isc/strerror.h>
#include <isc/string.h> #include <isc/string.h>
#include <named/globals.h> #include <named/globals.h>
@@ -59,17 +58,68 @@ static int singletonfd = -1;
#define ISC_FACILITY LOG_DAEMON #define ISC_FACILITY LOG_DAEMON
#endif #endif
/*
* If there's no <sys/capability.h>, we don't care about <sys/prctl.h>
*/
#ifndef HAVE_SYS_CAPABILITY_H
#undef HAVE_SYS_PRCTL_H
#endif
/*
* Linux defines:
* (T) HAVE_LINUXTHREADS
* (C) HAVE_SYS_CAPABILITY_H
* (P) HAVE_SYS_PRCTL_H
* The possible cases are:
* none: setuid() normally
* T: no setuid()
* C: setuid() normally, drop caps (keep CAP_SETUID)
* T+C: no setuid(), drop caps (don't keep CAP_SETUID)
* T+C+P: setuid() early, drop caps (keep CAP_SETUID)
* C+P: setuid() normally, drop caps (keep CAP_SETUID)
* P: not possible
* T+P: not possible
*
* if (C)
* caps = BIND_SERVICE + CHROOT + SETGID
* if ((T && C && P) || !T)
* caps += SETUID
* endif
* capset(caps)
* endif
* if (T && C && P && -u)
* setuid()
* else if (T && -u)
* fail
* --> start threads
* if (!T && -u)
* setuid()
* if (C && (P || !-u))
* caps = BIND_SERVICE
* capset(caps)
* endif
*
* It will be nice when Linux threads work properly with setuid().
*/
#ifdef HAVE_LINUXTHREADS
static pid_t mainpid = 0;
#endif
static struct passwd *runas_pw = NULL; static struct passwd *runas_pw = NULL;
static bool done_setuid = false; static isc_boolean_t done_setuid = ISC_FALSE;
static int dfd[2] = { -1, -1 }; static int dfd[2] = { -1, -1 };
#ifdef HAVE_SYS_CAPABILITY_H #ifdef HAVE_SYS_CAPABILITY_H
static bool non_root = false; static isc_boolean_t non_root = ISC_FALSE;
static bool non_root_caps = false; static isc_boolean_t non_root_caps = ISC_FALSE;
#include <sys/capability.h> #include <sys/capability.h>
#include <sys/prctl.h>
#ifdef HAVE_SYS_PRCTL_H
#include <sys/prctl.h> /* Required for prctl(). */
#endif /* HAVE_SYS_PRCTL_H */
static void static void
linux_setcaps(cap_t caps) { linux_setcaps(cap_t caps) {
@@ -79,7 +129,7 @@ linux_setcaps(cap_t caps) {
return; return;
} }
if (cap_set_proc(caps) < 0) { if (cap_set_proc(caps) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("cap_set_proc() failed: %s:" named_main_earlyfatal("cap_set_proc() failed: %s:"
" please ensure that the capset kernel" " please ensure that the capset kernel"
" module is loaded. see insmod(8)", " module is loaded. see insmod(8)",
@@ -95,13 +145,13 @@ linux_setcaps(cap_t caps) {
if (err != -1 && curval) { \ if (err != -1 && curval) { \
err = cap_set_flag(caps, CAP_EFFECTIVE, 1, &capval, CAP_SET); \ err = cap_set_flag(caps, CAP_EFFECTIVE, 1, &capval, CAP_SET); \
if (err == -1) { \ if (err == -1) { \
strerror_r(errno, strbuf, sizeof(strbuf)); \ isc__strerror(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \ named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \
} \ } \
\ \
err = cap_set_flag(caps, CAP_PERMITTED, 1, &capval, CAP_SET); \ err = cap_set_flag(caps, CAP_PERMITTED, 1, &capval, CAP_SET); \
if (err == -1) { \ if (err == -1) { \
strerror_r(errno, strbuf, sizeof(strbuf)); \ isc__strerror(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \ named_main_earlyfatal("cap_set_proc failed: %s", strbuf); \
} \ } \
} \ } \
@@ -110,12 +160,12 @@ linux_setcaps(cap_t caps) {
do { \ do { \
caps = cap_init(); \ caps = cap_init(); \
if (caps == NULL) { \ if (caps == NULL) { \
strerror_r(errno, strbuf, sizeof(strbuf)); \ isc__strerror(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_init failed: %s", strbuf); \ named_main_earlyfatal("cap_init failed: %s", strbuf); \
} \ } \
curcaps = cap_get_proc(); \ curcaps = cap_get_proc(); \
if (curcaps == NULL) { \ if (curcaps == NULL) { \
strerror_r(errno, strbuf, sizeof(strbuf)); \ isc__strerror(errno, strbuf, sizeof(strbuf)); \
named_main_earlyfatal("cap_get_proc failed: %s", strbuf); \ named_main_earlyfatal("cap_get_proc failed: %s", strbuf); \
} \ } \
} while (0) } while (0)
@@ -150,11 +200,15 @@ linux_initialprivs(void) {
*/ */
SET_CAP(CAP_SYS_CHROOT); SET_CAP(CAP_SYS_CHROOT);
#if defined(HAVE_SYS_PRCTL_H) || !defined(HAVE_LINUXTHREADS)
/* /*
* We need setuid() as the kernel supports keeping capabilities after * We can setuid() only if either the kernel supports keeping
* setuid(). * capabilities after setuid() (which we don't know until we've
* tried) or we're not using threads. If either of these is
* true, we want the setuid capability.
*/ */
SET_CAP(CAP_SETUID); SET_CAP(CAP_SETUID);
#endif
/* /*
* Since we call initgroups, we need this. * Since we call initgroups, we need this.
@@ -220,6 +274,7 @@ linux_minprivs(void) {
FREE_CAP; FREE_CAP;
} }
#ifdef HAVE_SYS_PRCTL_H
static void static void
linux_keepcaps(void) { linux_keepcaps(void) {
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
@@ -230,18 +285,20 @@ linux_keepcaps(void) {
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) { if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) {
if (errno != EINVAL) { if (errno != EINVAL) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("prctl() failed: %s", strbuf); named_main_earlyfatal("prctl() failed: %s", strbuf);
} }
} else { } else {
non_root_caps = true; non_root_caps = ISC_TRUE;
if (getuid() != 0) if (getuid() != 0)
non_root = true; non_root = ISC_TRUE;
} }
} }
#endif
#endif /* HAVE_SYS_CAPABILITY_H */ #endif /* HAVE_SYS_CAPABILITY_H */
static void static void
setup_syslog(const char *progname) { setup_syslog(const char *progname) {
int options; int options;
@@ -259,6 +316,9 @@ named_os_init(const char *progname) {
#ifdef HAVE_SYS_CAPABILITY_H #ifdef HAVE_SYS_CAPABILITY_H
linux_initialprivs(); linux_initialprivs();
#endif #endif
#ifdef HAVE_LINUXTHREADS
mainpid = getpid();
#endif
#ifdef SIGXFSZ #ifdef SIGXFSZ
signal(SIGXFSZ, SIG_IGN); signal(SIGXFSZ, SIG_IGN);
#endif #endif
@@ -270,13 +330,13 @@ named_os_daemonize(void) {
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
if (pipe(dfd) == -1) { if (pipe(dfd) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("pipe(): %s", strbuf); named_main_earlyfatal("pipe(): %s", strbuf);
} }
pid = fork(); pid = fork();
if (pid == -1) { if (pid == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("fork(): %s", strbuf); named_main_earlyfatal("fork(): %s", strbuf);
} }
if (pid != 0) { if (pid != 0) {
@@ -301,8 +361,12 @@ named_os_daemonize(void) {
* We're the child. * We're the child.
*/ */
#ifdef HAVE_LINUXTHREADS
mainpid = getpid();
#endif
if (setsid() == -1) { if (setsid() == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setsid(): %s", strbuf); named_main_earlyfatal("setsid(): %s", strbuf);
} }
@@ -364,16 +428,16 @@ named_os_closedevnull(void) {
} }
} }
static bool static isc_boolean_t
all_digits(const char *s) { all_digits(const char *s) {
if (*s == '\0') if (*s == '\0')
return (false); return (ISC_FALSE);
while (*s != '\0') { while (*s != '\0') {
if (!isdigit((*s)&0xff)) if (!isdigit((*s)&0xff))
return (false); return (ISC_FALSE);
s++; s++;
} }
return (true); return (ISC_TRUE);
} }
void void
@@ -385,14 +449,14 @@ named_os_chroot(const char *root) {
if (root != NULL) { if (root != NULL) {
#ifdef HAVE_CHROOT #ifdef HAVE_CHROOT
if (chroot(root) < 0) { if (chroot(root) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("chroot(): %s", strbuf); named_main_earlyfatal("chroot(): %s", strbuf);
} }
#else #else
named_main_earlyfatal("chroot(): disabled"); named_main_earlyfatal("chroot(): disabled");
#endif #endif
if (chdir("/") < 0) { if (chdir("/") < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("chdir(/): %s", strbuf); named_main_earlyfatal("chdir(/): %s", strbuf);
} }
#ifdef HAVE_LIBSCF #ifdef HAVE_LIBSCF
@@ -419,7 +483,7 @@ named_os_inituserinfo(const char *username) {
if (getuid() == 0) { if (getuid() == 0) {
if (initgroups(runas_pw->pw_name, runas_pw->pw_gid) < 0) { if (initgroups(runas_pw->pw_name, runas_pw->pw_gid) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("initgroups(): %s", strbuf); named_main_earlyfatal("initgroups(): %s", strbuf);
} }
} }
@@ -432,29 +496,44 @@ named_os_changeuser(void) {
if (runas_pw == NULL || done_setuid) if (runas_pw == NULL || done_setuid)
return; return;
done_setuid = true; done_setuid = ISC_TRUE;
#ifdef HAVE_LINUXTHREADS
#ifdef HAVE_SYS_CAPABILITY_H
if (!non_root_caps) {
named_main_earlyfatal("-u with Linux threads not supported: "
"requires kernel support for "
"prctl(PR_SET_KEEPCAPS)");
}
#else
named_main_earlyfatal("-u with Linux threads not supported: "
"no capabilities support or capabilities "
"disabled at build time");
#endif
#endif
if (setgid(runas_pw->pw_gid) < 0) { if (setgid(runas_pw->pw_gid) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setgid(): %s", strbuf); named_main_earlyfatal("setgid(): %s", strbuf);
} }
if (setuid(runas_pw->pw_uid) < 0) { if (setuid(runas_pw->pw_uid) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("setuid(): %s", strbuf); named_main_earlyfatal("setuid(): %s", strbuf);
} }
#if defined(HAVE_SYS_CAPABILITY_H) #if defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_DUMPABLE)
/* /*
* Restore the ability of named to drop core after the setuid() * Restore the ability of named to drop core after the setuid()
* call has disabled it. * call has disabled it.
*/ */
if (prctl(PR_SET_DUMPABLE,1,0,0,0) < 0) { if (prctl(PR_SET_DUMPABLE,1,0,0,0) < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("prctl(PR_SET_DUMPABLE) failed: %s", named_main_earlywarning("prctl(PR_SET_DUMPABLE) failed: %s",
strbuf); strbuf);
} }
#endif
#if defined(HAVE_SYS_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS)
linux_minprivs(); linux_minprivs();
#endif #endif
} }
@@ -468,7 +547,7 @@ ns_os_uid(void) {
void void
named_os_adjustnofile(void) { named_os_adjustnofile(void) {
#if defined(__linux__) #ifdef HAVE_LINUXTHREADS
isc_result_t result; isc_result_t result;
isc_resourcevalue_t newvalue; isc_resourcevalue_t newvalue;
@@ -486,15 +565,21 @@ named_os_adjustnofile(void) {
void void
named_os_minprivs(void) { named_os_minprivs(void) {
#if defined(HAVE_SYS_CAPABILITY_H) #ifdef HAVE_SYS_PRCTL_H
linux_keepcaps(); linux_keepcaps();
named_os_changeuser(); #endif
#ifdef HAVE_LINUXTHREADS
named_os_changeuser(); /* Call setuid() before threads are started */
#endif
#if defined(HAVE_SYS_CAPABILITY_H) && defined(HAVE_LINUXTHREADS)
linux_minprivs(); linux_minprivs();
#endif #endif
} }
static int static int
safe_open(const char *filename, mode_t mode, bool append) { safe_open(const char *filename, mode_t mode, isc_boolean_t append) {
int fd; int fd;
struct stat sb; struct stat sb;
@@ -562,7 +647,7 @@ mkdirpath(char *filename, void (*report)(const char *, ...)) {
if (stat(filename, &sb) == -1) { if (stat(filename, &sb) == -1) {
if (errno != ENOENT) { if (errno != ENOENT) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
(*report)("couldn't stat '%s': %s", filename, (*report)("couldn't stat '%s': %s", filename,
strbuf); strbuf);
goto error; goto error;
@@ -582,7 +667,7 @@ mkdirpath(char *filename, void (*report)(const char *, ...)) {
mode |= S_IRGRP | S_IXGRP; /* g=rx */ mode |= S_IRGRP | S_IXGRP; /* g=rx */
mode |= S_IROTH | S_IXOTH; /* o=rx */ mode |= S_IROTH | S_IXOTH; /* o=rx */
if (mkdir(filename, mode) == -1) { if (mkdir(filename, mode) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
(*report)("couldn't mkdir '%s': %s", filename, (*report)("couldn't mkdir '%s': %s", filename,
strbuf); strbuf);
goto error; goto error;
@@ -590,7 +675,7 @@ mkdirpath(char *filename, void (*report)(const char *, ...)) {
if (runas_pw != NULL && if (runas_pw != NULL &&
chown(filename, runas_pw->pw_uid, chown(filename, runas_pw->pw_uid,
runas_pw->pw_gid) == -1) { runas_pw->pw_gid) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
(*report)("couldn't chown '%s': %s", filename, (*report)("couldn't chown '%s': %s", filename,
strbuf); strbuf);
} }
@@ -617,7 +702,7 @@ setperms(uid_t uid, gid_t gid) {
#endif #endif
#if defined(HAVE_SETEGID) #if defined(HAVE_SETEGID)
if (getegid() != gid && setegid(gid) == -1) { if (getegid() != gid && setegid(gid) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective " named_main_earlywarning("unable to set effective "
"gid to %ld: %s", "gid to %ld: %s",
(long)gid, strbuf); (long)gid, strbuf);
@@ -625,7 +710,7 @@ setperms(uid_t uid, gid_t gid) {
#elif defined(HAVE_SETRESGID) #elif defined(HAVE_SETRESGID)
if (getresgid(&tmpg, &oldgid, &tmpg) == -1 || oldgid != gid) { if (getresgid(&tmpg, &oldgid, &tmpg) == -1 || oldgid != gid) {
if (setresgid(-1, gid, -1) == -1) { if (setresgid(-1, gid, -1) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective " named_main_earlywarning("unable to set effective "
"gid to %d: %s", gid, strbuf); "gid to %d: %s", gid, strbuf);
} }
@@ -634,7 +719,7 @@ setperms(uid_t uid, gid_t gid) {
#if defined(HAVE_SETEUID) #if defined(HAVE_SETEUID)
if (geteuid() != uid && seteuid(uid) == -1) { if (geteuid() != uid && seteuid(uid) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective " named_main_earlywarning("unable to set effective "
"uid to %ld: %s", "uid to %ld: %s",
(long)uid, strbuf); (long)uid, strbuf);
@@ -642,7 +727,7 @@ setperms(uid_t uid, gid_t gid) {
#elif defined(HAVE_SETRESUID) #elif defined(HAVE_SETRESUID)
if (getresuid(&tmpu, &olduid, &tmpu) == -1 || olduid != uid) { if (getresuid(&tmpu, &olduid, &tmpu) == -1 || olduid != uid) {
if (setresuid(-1, uid, -1) == -1) { if (setresuid(-1, uid, -1) == -1) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("unable to set effective " named_main_earlywarning("unable to set effective "
"uid to %d: %s", uid, strbuf); "uid to %d: %s", uid, strbuf);
} }
@@ -651,7 +736,7 @@ setperms(uid_t uid, gid_t gid) {
} }
FILE * FILE *
named_os_openfile(const char *filename, mode_t mode, bool switch_user) { named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user) {
char strbuf[ISC_STRERRORSIZE], *f; char strbuf[ISC_STRERRORSIZE], *f;
FILE *fp; FILE *fp;
int fd; int fd;
@@ -661,7 +746,7 @@ named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
*/ */
f = strdup(filename); f = strdup(filename);
if (f == NULL) { if (f == NULL) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("couldn't strdup() '%s': %s", named_main_earlywarning("couldn't strdup() '%s': %s",
filename, strbuf); filename, strbuf);
return (NULL); return (NULL);
@@ -673,17 +758,22 @@ named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
free(f); free(f);
if (switch_user && runas_pw != NULL) { if (switch_user && runas_pw != NULL) {
#ifndef HAVE_LINUXTHREADS
gid_t oldgid = getgid(); gid_t oldgid = getgid();
#endif
/* Set UID/GID to the one we'll be running with eventually */ /* Set UID/GID to the one we'll be running with eventually */
setperms(runas_pw->pw_uid, runas_pw->pw_gid); setperms(runas_pw->pw_uid, runas_pw->pw_gid);
fd = safe_open(filename, mode, false); fd = safe_open(filename, mode, ISC_FALSE);
#ifndef HAVE_LINUXTHREADS
/* Restore UID/GID to root */ /* Restore UID/GID to root */
setperms(0, oldgid); setperms(0, oldgid);
#endif /* HAVE_LINUXTHREADS */
if (fd == -1) { if (fd == -1) {
fd = safe_open(filename, mode, false); #ifndef HAVE_LINUXTHREADS
fd = safe_open(filename, mode, ISC_FALSE);
if (fd != -1) { if (fd != -1) {
named_main_earlywarning("Required root " named_main_earlywarning("Required root "
"permissions to open " "permissions to open "
@@ -695,13 +785,20 @@ named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
named_main_earlywarning("Please check file and " named_main_earlywarning("Please check file and "
"directory permissions " "directory permissions "
"or reconfigure the filename."); "or reconfigure the filename.");
#else /* HAVE_LINUXTHREADS */
named_main_earlywarning("Could not open "
"'%s'.", filename);
named_main_earlywarning("Please check file and "
"directory permissions "
"or reconfigure the filename.");
#endif /* HAVE_LINUXTHREADS */
} }
} else { } else {
fd = safe_open(filename, mode, false); fd = safe_open(filename, mode, ISC_FALSE);
} }
if (fd < 0) { if (fd < 0) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not open file '%s': %s", named_main_earlywarning("could not open file '%s': %s",
filename, strbuf); filename, strbuf);
return (NULL); return (NULL);
@@ -709,7 +806,7 @@ named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
fp = fdopen(fd, "w"); fp = fdopen(fd, "w");
if (fp == NULL) { if (fp == NULL) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not fdopen() file '%s': %s", named_main_earlywarning("could not fdopen() file '%s': %s",
filename, strbuf); filename, strbuf);
} }
@@ -718,7 +815,7 @@ named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
} }
void void
named_os_writepidfile(const char *filename, bool first_time) { named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
FILE *fh; FILE *fh;
pid_t pid; pid_t pid;
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
@@ -737,7 +834,7 @@ named_os_writepidfile(const char *filename, bool first_time) {
pidfile = strdup(filename); pidfile = strdup(filename);
if (pidfile == NULL) { if (pidfile == NULL) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
(*report)("couldn't strdup() '%s': %s", filename, strbuf); (*report)("couldn't strdup() '%s': %s", filename, strbuf);
return; return;
} }
@@ -748,7 +845,11 @@ named_os_writepidfile(const char *filename, bool first_time) {
cleanup_pidfile(); cleanup_pidfile();
return; return;
} }
#ifdef HAVE_LINUXTHREADS
pid = mainpid;
#else
pid = getpid(); pid = getpid();
#endif
if (fprintf(fh, "%ld\n", (long)pid) < 0) { if (fprintf(fh, "%ld\n", (long)pid) < 0) {
(*report)("fprintf() to pid file '%s' failed", filename); (*report)("fprintf() to pid file '%s' failed", filename);
(void)fclose(fh); (void)fclose(fh);
@@ -764,23 +865,23 @@ named_os_writepidfile(const char *filename, bool first_time) {
(void)fclose(fh); (void)fclose(fh);
} }
bool isc_boolean_t
named_os_issingleton(const char *filename) { named_os_issingleton(const char *filename) {
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
struct flock lock; struct flock lock;
if (singletonfd != -1) if (singletonfd != -1)
return (true); return (ISC_TRUE);
if (strcasecmp(filename, "none") == 0) if (strcasecmp(filename, "none") == 0)
return (true); return (ISC_TRUE);
/* /*
* Make the containing directory if it doesn't exist. * Make the containing directory if it doesn't exist.
*/ */
lockfile = strdup(filename); lockfile = strdup(filename);
if (lockfile == NULL) { if (lockfile == NULL) {
strerror_r(errno, strbuf, sizeof(strbuf)); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("couldn't allocate memory for '%s': %s", named_main_earlyfatal("couldn't allocate memory for '%s': %s",
filename, strbuf); filename, strbuf);
} else { } else {
@@ -789,7 +890,7 @@ named_os_issingleton(const char *filename) {
named_main_earlywarning("couldn't create '%s'", named_main_earlywarning("couldn't create '%s'",
filename); filename);
cleanup_lockfile(); cleanup_lockfile();
return (false); return (ISC_FALSE);
} }
} }
@@ -801,7 +902,7 @@ named_os_issingleton(const char *filename) {
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if (singletonfd == -1) { if (singletonfd == -1) {
cleanup_lockfile(); cleanup_lockfile();
return (false); return (ISC_FALSE);
} }
memset(&lock, 0, sizeof(lock)); memset(&lock, 0, sizeof(lock));
@@ -814,10 +915,10 @@ named_os_issingleton(const char *filename) {
if (fcntl(singletonfd, F_SETLK, &lock) == -1) { if (fcntl(singletonfd, F_SETLK, &lock) == -1) {
close(singletonfd); close(singletonfd);
singletonfd = -1; singletonfd = -1;
return (false); return (ISC_FALSE);
} }
return (true); return (ISC_TRUE);
} }
void void
@@ -854,7 +955,11 @@ named_os_shutdownmsg(char *command, isc_buffer_t *text) {
return; return;
} }
#ifdef HAVE_LINUXTHREADS
pid = mainpid;
#else
pid = getpid(); pid = getpid();
#endif
(void)isc_buffer_printf(text, "pid: %ld", (long)pid); (void)isc_buffer_printf(text, "pid: %ld", (long)pid);
} }
+28 -30
View File
@@ -14,11 +14,9 @@
#include <windows.h> #include <windows.h>
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <dns/log.h> #include <dns/log.h>
#include <dns/result.h> #include <dns/result.h>
@@ -46,7 +44,7 @@ typedef struct dlopen_data {
unsigned int flags; unsigned int flags;
isc_mutex_t lock; isc_mutex_t lock;
int version; int version;
bool in_configure; isc_boolean_t in_configure;
dlz_dlopen_version_t *dlz_version; dlz_dlopen_version_t *dlz_version;
dlz_dlopen_create_t *dlz_create; dlz_dlopen_create_t *dlz_create;
@@ -69,14 +67,14 @@ typedef struct dlopen_data {
#define MAYBE_LOCK(cd) \ #define MAYBE_LOCK(cd) \
do { \ do { \
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
cd->in_configure == false) \ cd->in_configure == ISC_FALSE) \
LOCK(&cd->lock); \ LOCK(&cd->lock); \
} while (0) } while (0)
#define MAYBE_UNLOCK(cd) \ #define MAYBE_UNLOCK(cd) \
do { \ do { \
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
cd->in_configure == false) \ cd->in_configure == ISC_FALSE) \
UNLOCK(&cd->lock); \ UNLOCK(&cd->lock); \
} while (0) } while (0)
@@ -196,7 +194,7 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
* Load a symbol from the library * Load a symbol from the library
*/ */
static void * static void *
dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) { dl_load_symbol(dlopen_data_t *cd, const char *symbol, isc_boolean_t mandatory) {
void *ptr = GetProcAddress(cd->dl_handle, symbol); void *ptr = GetProcAddress(cd->dl_handle, symbol);
if (ptr == NULL && mandatory) { if (ptr == NULL && mandatory) {
dlopen_log(ISC_LOG_ERROR, dlopen_log(ISC_LOG_ERROR,
@@ -216,7 +214,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
dlopen_data_t *cd; dlopen_data_t *cd;
isc_mem_t *mctx = NULL; isc_mem_t *mctx = NULL;
isc_result_t result = ISC_R_FAILURE; isc_result_t result = ISC_R_FAILURE;
bool triedload = false; isc_boolean_t triedload = ISC_FALSE;
UNUSED(driverarg); UNUSED(driverarg);
@@ -250,7 +248,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
goto failed; goto failed;
} }
triedload = true; triedload = ISC_TRUE;
/* Initialize the lock */ /* Initialize the lock */
result = isc_mutex_init(&cd->lock); result = isc_mutex_init(&cd->lock);
@@ -271,13 +269,13 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
/* Find the symbols */ /* Find the symbols */
cd->dlz_version = (dlz_dlopen_version_t *) cd->dlz_version = (dlz_dlopen_version_t *)
dl_load_symbol(cd, "dlz_version", true); dl_load_symbol(cd, "dlz_version", ISC_TRUE);
cd->dlz_create = (dlz_dlopen_create_t *) cd->dlz_create = (dlz_dlopen_create_t *)
dl_load_symbol(cd, "dlz_create", true); dl_load_symbol(cd, "dlz_create", ISC_TRUE);
cd->dlz_lookup = (dlz_dlopen_lookup_t *) cd->dlz_lookup = (dlz_dlopen_lookup_t *)
dl_load_symbol(cd, "dlz_lookup", true); dl_load_symbol(cd, "dlz_lookup", ISC_TRUE);
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *) cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
dl_load_symbol(cd, "dlz_findzonedb", true); dl_load_symbol(cd, "dlz_findzonedb", ISC_TRUE);
if (cd->dlz_create == NULL || if (cd->dlz_create == NULL ||
cd->dlz_version == NULL || cd->dlz_version == NULL ||
@@ -290,27 +288,27 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
} }
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *) cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
dl_load_symbol(cd, "dlz_allowzonexfr", false); dl_load_symbol(cd, "dlz_allowzonexfr", ISC_FALSE);
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *) cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
dl_load_symbol(cd, "dlz_allnodes", dl_load_symbol(cd, "dlz_allnodes",
(cd->dlz_allowzonexfr != NULL)); ISC_TF(cd->dlz_allowzonexfr != NULL));
cd->dlz_authority = (dlz_dlopen_authority_t *) cd->dlz_authority = (dlz_dlopen_authority_t *)
dl_load_symbol(cd, "dlz_authority", false); dl_load_symbol(cd, "dlz_authority", ISC_FALSE);
cd->dlz_newversion = (dlz_dlopen_newversion_t *) cd->dlz_newversion = (dlz_dlopen_newversion_t *)
dl_load_symbol(cd, "dlz_newversion", false); dl_load_symbol(cd, "dlz_newversion", ISC_FALSE);
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *) cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
dl_load_symbol(cd, "dlz_closeversion", dl_load_symbol(cd, "dlz_closeversion",
(cd->dlz_newversion != NULL)); ISC_TF(cd->dlz_newversion != NULL));
cd->dlz_configure = (dlz_dlopen_configure_t *) cd->dlz_configure = (dlz_dlopen_configure_t *)
dl_load_symbol(cd, "dlz_configure", false); dl_load_symbol(cd, "dlz_configure", ISC_FALSE);
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *) cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
dl_load_symbol(cd, "dlz_ssumatch", false); dl_load_symbol(cd, "dlz_ssumatch", ISC_FALSE);
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *) cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
dl_load_symbol(cd, "dlz_addrdataset", false); dl_load_symbol(cd, "dlz_addrdataset", ISC_FALSE);
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *) cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
dl_load_symbol(cd, "dlz_subrdataset", false); dl_load_symbol(cd, "dlz_subrdataset", ISC_FALSE);
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *) cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
dl_load_symbol(cd, "dlz_delrdataset", false); dl_load_symbol(cd, "dlz_delrdataset", ISC_FALSE);
/* Check the version of the API is the same */ /* Check the version of the API is the same */
cd->version = cd->dlz_version(&cd->flags); cd->version = cd->dlz_version(&cd->flags);
@@ -422,7 +420,7 @@ dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata,
* Called to end a transaction * Called to end a transaction
*/ */
static void static void
dlopen_dlz_closeversion(const char *zone, bool commit, dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit,
void *driverarg, void *dbdata, void **versionp) void *driverarg, void *dbdata, void **versionp)
{ {
dlopen_data_t *cd = (dlopen_data_t *) dbdata; dlopen_data_t *cd = (dlopen_data_t *) dbdata;
@@ -455,9 +453,9 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
MAYBE_LOCK(cd); MAYBE_LOCK(cd);
cd->in_configure = true; cd->in_configure = ISC_TRUE;
result = cd->dlz_configure(view, dlzdb, cd->dbdata); result = cd->dlz_configure(view, dlzdb, cd->dbdata);
cd->in_configure = false; cd->in_configure = ISC_FALSE;
MAYBE_UNLOCK(cd); MAYBE_UNLOCK(cd);
return (result); return (result);
@@ -467,18 +465,18 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
/* /*
* Check for authority to change a name * Check for authority to change a name
*/ */
static bool static isc_boolean_t
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr, dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
const char *type, const char *key, uint32_t keydatalen, const char *type, const char *key, isc_uint32_t keydatalen,
unsigned char *keydata, void *driverarg, void *dbdata) unsigned char *keydata, void *driverarg, void *dbdata)
{ {
dlopen_data_t *cd = (dlopen_data_t *) dbdata; dlopen_data_t *cd = (dlopen_data_t *) dbdata;
bool ret; isc_boolean_t ret;
UNUSED(driverarg); UNUSED(driverarg);
if (cd->dlz_ssumatch == NULL) if (cd->dlz_ssumatch == NULL)
return (false); return (ISC_FALSE);
MAYBE_LOCK(cd); MAYBE_LOCK(cd);
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen, ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
+3 -5
View File
@@ -12,8 +12,6 @@
#ifndef NAMED_OS_H #ifndef NAMED_OS_H
#define NAMED_OS_H 1 #define NAMED_OS_H 1
#include <stdbool.h>
#include <isc/types.h> #include <isc/types.h>
void void
@@ -47,12 +45,12 @@ void
named_os_minprivs(void); named_os_minprivs(void);
FILE * FILE *
named_os_openfile(const char *filename, int mode, bool switch_user); named_os_openfile(const char *filename, int mode, isc_boolean_t switch_user);
void void
named_os_writepidfile(const char *filename, bool first_time); named_os_writepidfile(const char *filename, isc_boolean_t first_time);
bool isc_boolean_t
named_os_issingleton(const char *filename); named_os_issingleton(const char *filename);
void void
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+3 -3
View File
@@ -80,7 +80,7 @@ ServiceControl(DWORD dwCtrlCode) {
case SERVICE_CONTROL_SHUTDOWN: case SERVICE_CONTROL_SHUTDOWN:
case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_STOP:
named_server_flushonshutdown(named_g_server, true); named_server_flushonshutdown(named_g_server, ISC_TRUE);
isc_app_shutdown(); isc_app_shutdown();
UpdateSCM(SERVICE_STOPPED); UpdateSCM(SERVICE_STOPPED);
break; break;
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
int rc, ch; int rc, ch;
/* Command line users should put -f in the options. */ /* Command line users should put -f in the options. */
isc_commandline_errprint = false; isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, while ((ch = isc_commandline_parse(argc, argv,
NAMED_MAIN_ARGS)) != -1) NAMED_MAIN_ARGS)) != -1)
{ {
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
break; break;
} }
} }
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
if (foreground) { if (foreground) {
/* run in console window */ /* run in console window */
+16 -16
View File
@@ -20,13 +20,13 @@
#include <io.h> #include <io.h>
#include <process.h> #include <process.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <syslog.h> #include <syslog.h>
#include <isc/print.h> #include <isc/print.h>
#include <isc/result.h> #include <isc/result.h>
#include <isc/strerror.h>
#include <isc/string.h> #include <isc/string.h>
#include <isc/ntpaths.h> #include <isc/ntpaths.h>
#include <isc/util.h> #include <isc/util.h>
@@ -176,7 +176,7 @@ named_os_minprivs(void) {
} }
static int static int
safe_open(const char *filename, int mode, bool append) { safe_open(const char *filename, int mode, isc_boolean_t append) {
int fd; int fd;
struct stat sb; struct stat sb;
@@ -222,15 +222,15 @@ cleanup_lockfile(void) {
} }
FILE * FILE *
named_os_openfile(const char *filename, int mode, bool switch_user) { named_os_openfile(const char *filename, int mode, isc_boolean_t switch_user) {
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
FILE *fp; FILE *fp;
int fd; int fd;
UNUSED(switch_user); UNUSED(switch_user);
fd = safe_open(filename, mode, false); fd = safe_open(filename, mode, ISC_FALSE);
if (fd < 0) { if (fd < 0) {
strerror_s(strbuf, sizeof(strbuf), errno); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not open file '%s': %s", named_main_earlywarning("could not open file '%s': %s",
filename, strbuf); filename, strbuf);
return (NULL); return (NULL);
@@ -238,7 +238,7 @@ named_os_openfile(const char *filename, int mode, bool switch_user) {
fp = fdopen(fd, "w"); fp = fdopen(fd, "w");
if (fp == NULL) { if (fp == NULL) {
strerror_s(strbuf, sizeof(strbuf), errno); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlywarning("could not fdopen() file '%s': %s", named_main_earlywarning("could not fdopen() file '%s': %s",
filename, strbuf); filename, strbuf);
close(fd); close(fd);
@@ -248,7 +248,7 @@ named_os_openfile(const char *filename, int mode, bool switch_user) {
} }
void void
named_os_writepidfile(const char *filename, bool first_time) { named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
FILE *pidlockfile; FILE *pidlockfile;
pid_t pid; pid_t pid;
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
@@ -267,14 +267,14 @@ named_os_writepidfile(const char *filename, bool first_time) {
pidfile = strdup(filename); pidfile = strdup(filename);
if (pidfile == NULL) { if (pidfile == NULL) {
strerror_s(strbuf, sizeof(strbuf), errno); isc__strerror(errno, strbuf, sizeof(strbuf));
(*report)("couldn't strdup() '%s': %s", filename, strbuf); (*report)("couldn't strdup() '%s': %s", filename, strbuf);
return; return;
} }
pidlockfile = named_os_openfile(filename, pidlockfile = named_os_openfile(filename,
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
false); ISC_FALSE);
if (pidlockfile == NULL) { if (pidlockfile == NULL) {
free(pidfile); free(pidfile);
pidfile = NULL; pidfile = NULL;
@@ -298,20 +298,20 @@ named_os_writepidfile(const char *filename, bool first_time) {
(void)fclose(pidlockfile); (void)fclose(pidlockfile);
} }
bool isc_boolean_t
named_os_issingleton(const char *filename) { named_os_issingleton(const char *filename) {
char strbuf[ISC_STRERRORSIZE]; char strbuf[ISC_STRERRORSIZE];
OVERLAPPED o; OVERLAPPED o;
if (lockfilefd != -1) if (lockfilefd != -1)
return (true); return (ISC_TRUE);
if (strcasecmp(filename, "none") == 0) if (strcasecmp(filename, "none") == 0)
return (true); return (ISC_TRUE);
lockfile = strdup(filename); lockfile = strdup(filename);
if (lockfile == NULL) { if (lockfile == NULL) {
strerror_s(strbuf, sizeof(strbuf), errno); isc__strerror(errno, strbuf, sizeof(strbuf));
named_main_earlyfatal("couldn't allocate memory for '%s': %s", named_main_earlyfatal("couldn't allocate memory for '%s': %s",
filename, strbuf); filename, strbuf);
} }
@@ -324,7 +324,7 @@ named_os_issingleton(const char *filename) {
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if (lockfilefd == -1) { if (lockfilefd == -1) {
cleanup_lockfile(); cleanup_lockfile();
return (false); return (ISC_FALSE);
} }
memset(&o, 0, sizeof(o)); memset(&o, 0, sizeof(o));
@@ -333,10 +333,10 @@ named_os_issingleton(const char *filename) {
LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY, LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY,
0, 0, 1, &o)) { 0, 0, 1, &o)) {
cleanup_lockfile(); cleanup_lockfile();
return (false); return (ISC_FALSE);
} }
return (true); return (ISC_TRUE);
} }
+125 -148
View File
@@ -11,9 +11,6 @@
#include <config.h> #include <config.h>
#include <inttypes.h>
#include <stdbool.h>
#include <isc/buffer.h> #include <isc/buffer.h>
#include <isc/file.h> #include <isc/file.h>
#include <isc/mem.h> #include <isc/mem.h>
@@ -191,7 +188,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
const cfg_listelt_t *element, *element2; const cfg_listelt_t *element, *element2;
dns_ssutable_t *table = NULL; dns_ssutable_t *table = NULL;
isc_mem_t *mctx = dns_zone_getmctx(zone); isc_mem_t *mctx = dns_zone_getmctx(zone);
bool autoddns = false; isc_boolean_t autoddns = ISC_FALSE;
isc_result_t result; isc_result_t result;
(void)cfg_map_get(zconfig, "update-policy", &updatepolicy); (void)cfg_map_get(zconfig, "update-policy", &updatepolicy);
@@ -203,7 +200,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
if (cfg_obj_isstring(updatepolicy) && if (cfg_obj_isstring(updatepolicy) &&
strcmp("local", cfg_obj_asstring(updatepolicy)) == 0) { strcmp("local", cfg_obj_asstring(updatepolicy)) == 0) {
autoddns = true; autoddns = ISC_TRUE;
updatepolicy = NULL; updatepolicy = NULL;
} }
@@ -222,9 +219,9 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
const cfg_obj_t *dname = cfg_tuple_get(stmt, "name"); const cfg_obj_t *dname = cfg_tuple_get(stmt, "name");
const cfg_obj_t *typelist = cfg_tuple_get(stmt, "types"); const cfg_obj_t *typelist = cfg_tuple_get(stmt, "types");
const char *str; const char *str;
bool grant = false; isc_boolean_t grant = ISC_FALSE;
bool usezone = false; isc_boolean_t usezone = ISC_FALSE;
dns_ssumatchtype_t mtype = dns_ssumatchtype_name; unsigned int mtype = dns_ssumatchtype_name;
dns_fixedname_t fname, fident; dns_fixedname_t fname, fident;
isc_buffer_t b; isc_buffer_t b;
dns_rdatatype_t *types; dns_rdatatype_t *types;
@@ -232,16 +229,16 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
str = cfg_obj_asstring(mode); str = cfg_obj_asstring(mode);
if (strcasecmp(str, "grant") == 0) if (strcasecmp(str, "grant") == 0)
grant = true; grant = ISC_TRUE;
else if (strcasecmp(str, "deny") == 0) else if (strcasecmp(str, "deny") == 0)
grant = false; grant = ISC_FALSE;
else else
INSIST(0); INSIST(0);
str = cfg_obj_asstring(matchtype); str = cfg_obj_asstring(matchtype);
CHECK(dns_ssu_mtypefromstring(str, &mtype)); CHECK(dns_ssu_mtypefromstring(str, &mtype));
if (mtype == dns_ssumatchtype_subdomain) { if (mtype == dns_ssumatchtype_subdomain) {
usezone = true; usezone = ISC_TRUE;
} }
dns_fixedname_init(&fident); dns_fixedname_init(&fident);
@@ -350,7 +347,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
goto cleanup; goto cleanup;
} }
result = dns_ssutable_addrule(table, true, result = dns_ssutable_addrule(table, ISC_TRUE,
named_g_server->session_keyname, named_g_server->session_keyname,
dns_ssumatchtype_local, dns_ssumatchtype_local,
dns_zone_getorigin(zone), dns_zone_getorigin(zone),
@@ -628,7 +625,7 @@ configure_staticstub(const cfg_obj_t *zconfig, dns_zone_t *zone,
goto cleanup; goto cleanup;
dns_name_init(&apexname, NULL); dns_name_init(&apexname, NULL);
dns_name_clone(dns_zone_getorigin(zone), &apexname); dns_name_clone(dns_zone_getorigin(zone), &apexname);
result = dns_db_findnode(db, &apexname, false, &apexnode); result = dns_db_findnode(db, &apexname, ISC_FALSE, &apexnode);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
goto cleanup; goto cleanup;
@@ -671,7 +668,7 @@ configure_staticstub(const cfg_obj_t *zconfig, dns_zone_t *zone,
if (apexnode != NULL) if (apexnode != NULL)
dns_db_detachnode(db, &apexnode); dns_db_detachnode(db, &apexnode);
if (dbversion != NULL) if (dbversion != NULL)
dns_db_closeversion(db, &dbversion, true); dns_db_closeversion(db, &dbversion, ISC_TRUE);
if (db != NULL) if (db != NULL)
dns_db_detach(&db); dns_db_detach(&db);
for (i = 0; rdatalists[i] != NULL; i++) { for (i = 0; rdatalists[i] != NULL; i++) {
@@ -755,13 +752,8 @@ checknames(dns_zonetype_t ztype, const cfg_obj_t **maps,
isc_result_t result; isc_result_t result;
switch (ztype) { switch (ztype) {
case dns_zone_slave: case dns_zone_slave: zone = "slave"; break;
case dns_zone_mirror: case dns_zone_master: zone = "master"; break;
zone = "slave";
break;
case dns_zone_master:
zone = "master";
break;
default: default:
INSIST(0); INSIST(0);
} }
@@ -777,7 +769,7 @@ checknames(dns_zonetype_t ztype, const cfg_obj_t **maps,
* We run this unlocked as both the view list and the interface list * We run this unlocked as both the view list and the interface list
* are updated when the appropriate task has exclusivity. * are updated when the appropriate task has exclusivity.
*/ */
static bool static isc_boolean_t
isself(dns_view_t *myview, dns_tsigkey_t *mykey, isself(dns_view_t *myview, dns_tsigkey_t *mykey,
const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *dstaddr, const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *dstaddr,
dns_rdataclass_t rdclass, void *arg) dns_rdataclass_t rdclass, void *arg)
@@ -791,10 +783,10 @@ isself(dns_view_t *myview, dns_tsigkey_t *mykey,
isc_netaddr_t netdst; isc_netaddr_t netdst;
if (interfacemgr == NULL) if (interfacemgr == NULL)
return (true); return (ISC_TRUE);
if (!ns_interfacemgr_listeningon(interfacemgr, dstaddr)) if (!ns_interfacemgr_listeningon(interfacemgr, dstaddr))
return (false); return (ISC_FALSE);
isc_netaddr_fromsockaddr(&netsrc, srcaddr); isc_netaddr_fromsockaddr(&netsrc, srcaddr);
isc_netaddr_fromsockaddr(&netdst, dstaddr); isc_netaddr_fromsockaddr(&netdst, dstaddr);
@@ -810,7 +802,7 @@ isself(dns_view_t *myview, dns_tsigkey_t *mykey,
continue; continue;
if (mykey != NULL) { if (mykey != NULL) {
bool match; isc_boolean_t match;
isc_result_t result; isc_result_t result;
result = dns_view_gettsig(view, &mykey->name, &key); result = dns_view_gettsig(view, &mykey->name, &key);
@@ -830,40 +822,9 @@ isself(dns_view_t *myview, dns_tsigkey_t *mykey,
break; break;
} }
} }
return (view == myview); return (ISC_TF(view == myview));
} }
/*%
* For mirror zones, change "notify yes;" to "notify explicit;", informing the
* user only if "notify" was explicitly configured rather than inherited from
* default configuration.
*/
static dns_notifytype_t
process_notifytype(dns_notifytype_t ntype, dns_zonetype_t ztype,
const char *zname, const cfg_obj_t **maps)
{
const cfg_obj_t *obj = NULL;
/*
* Return the original setting if this is not a mirror zone or if the
* zone is configured with something else than "notify yes;".
*/
if (ztype != dns_zone_mirror || ntype != dns_notifytype_yes) {
return (ntype);
}
/*
* Only log a message if "notify" was set in the configuration
* hierarchy supplied in 'maps'.
*/
if (named_config_get(maps, "notify", &obj) == ISC_R_SUCCESS) {
cfg_obj_log(obj, named_g_lctx, ISC_LOG_INFO,
"'notify explicit;' will be used for mirror zone "
"'%s'", zname);
}
return (dns_notifytype_explicit);
}
isc_result_t isc_result_t
named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
@@ -882,7 +843,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
const char *filename = NULL; const char *filename = NULL;
const char *dupcheck; const char *dupcheck;
dns_notifytype_t notifytype = dns_notifytype_yes; dns_notifytype_t notifytype = dns_notifytype_yes;
uint32_t count; isc_uint32_t count;
unsigned int dbargc; unsigned int dbargc;
char **dbargv; char **dbargv;
static char default_dbtype[] = "rbt"; static char default_dbtype[] = "rbt";
@@ -892,13 +853,13 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
dns_dialuptype_t dialup = dns_dialuptype_no; dns_dialuptype_t dialup = dns_dialuptype_no;
dns_zonetype_t ztype; dns_zonetype_t ztype;
int i; int i;
int32_t journal_size; isc_int32_t journal_size;
bool multi; isc_boolean_t multi;
bool alt; isc_boolean_t alt;
dns_view_t *view; dns_view_t *view;
bool check = false, fail = false; isc_boolean_t check = ISC_FALSE, fail = ISC_FALSE;
bool warn = false, ignore = false; isc_boolean_t warn = ISC_FALSE, ignore = ISC_FALSE;
bool ixfrdiff; isc_boolean_t ixfrdiff;
dns_masterformat_t masterformat; dns_masterformat_t masterformat;
const dns_master_style_t *masterstyle = &dns_master_style_default; const dns_master_style_t *masterstyle = &dns_master_style_default;
isc_stats_t *zoneqrystats; isc_stats_t *zoneqrystats;
@@ -1018,7 +979,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
return (ISC_R_FAILURE); return (ISC_R_FAILURE);
} }
if (ztype == dns_zone_slave || ztype == dns_zone_mirror) if (ztype == dns_zone_slave)
masterformat = dns_masterformat_raw; masterformat = dns_masterformat_raw;
else else
masterformat = dns_masterformat_text; masterformat = dns_masterformat_text;
@@ -1112,7 +1073,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
/* /*
* Notify messages are processed by the raw zone if it exists. * Notify messages are processed by the raw zone if it exists.
*/ */
if (ztype == dns_zone_slave || ztype == dns_zone_mirror) if (ztype == dns_zone_slave)
RETERR(configure_zone_acl(zconfig, vconfig, config, RETERR(configure_zone_acl(zconfig, vconfig, config,
allow_notify, ac, mayberaw, allow_notify, ac, mayberaw,
dns_zone_setnotifyacl, dns_zone_setnotifyacl,
@@ -1218,8 +1179,6 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
else else
INSIST(0); INSIST(0);
} }
notifytype = process_notifytype(notifytype, ztype, zname,
nodefault);
if (raw != NULL) if (raw != NULL)
dns_zone_setnotifytype(raw, dns_notifytype_no); dns_zone_setnotifytype(raw, dns_notifytype_no);
dns_zone_setnotifytype(zone, notifytype); dns_zone_setnotifytype(zone, notifytype);
@@ -1313,12 +1272,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
cfg_obj_log(obj, named_g_lctx, cfg_obj_log(obj, named_g_lctx,
ISC_LOG_ERROR, ISC_LOG_ERROR,
"'max-journal-size " "'max-journal-size "
"%" PRId64 "' " "%" ISC_PRINT_QUADFORMAT "d' "
"is too large", "is too large",
value); value);
RETERR(ISC_R_RANGE); RETERR(ISC_R_RANGE);
} }
journal_size = (uint32_t)value; journal_size = (isc_uint32_t)value;
} }
if (raw != NULL) if (raw != NULL)
dns_zone_setjournalsize(raw, journal_size); dns_zone_setjournalsize(raw, journal_size);
@@ -1335,22 +1294,22 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
"master") == 0) && "master") == 0) &&
ztype == dns_zone_master) ztype == dns_zone_master)
{ {
ixfrdiff = true; ixfrdiff = ISC_TRUE;
} else if ((strcasecmp(cfg_obj_asstring(obj), } else if ((strcasecmp(cfg_obj_asstring(obj),
"secondary") == 0 || "secondary") == 0 ||
strcasecmp(cfg_obj_asstring(obj), strcasecmp(cfg_obj_asstring(obj),
"slave") == 0) && "slave") == 0) &&
ztype == dns_zone_slave) ztype == dns_zone_slave)
{ {
ixfrdiff = true; ixfrdiff = ISC_TRUE;
} else { } else {
ixfrdiff = false; ixfrdiff = ISC_FALSE;
} }
if (raw != NULL) { if (raw != NULL) {
dns_zone_setoption(raw, DNS_ZONEOPT_IXFRFROMDIFFS, dns_zone_setoption(raw, DNS_ZONEOPT_IXFRFROMDIFFS,
true); ISC_TRUE);
dns_zone_setoption(zone, DNS_ZONEOPT_IXFRFROMDIFFS, dns_zone_setoption(zone, DNS_ZONEOPT_IXFRFROMDIFFS,
false); ISC_FALSE);
} else } else
dns_zone_setoption(zone, DNS_ZONEOPT_IXFRFROMDIFFS, dns_zone_setoption(zone, DNS_ZONEOPT_IXFRFROMDIFFS,
ixfrdiff); ixfrdiff);
@@ -1368,12 +1327,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
checknames(ztype, maps, &obj); checknames(ztype, maps, &obj);
INSIST(obj != NULL); INSIST(obj != NULL);
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
fail = false; fail = ISC_FALSE;
check = true; check = ISC_TRUE;
} else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) {
fail = check = true; fail = check = ISC_TRUE;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
fail = check = false; fail = check = ISC_FALSE;
} else } else
INSIST(0); INSIST(0);
if (raw != NULL) { if (raw != NULL) {
@@ -1382,9 +1341,9 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
dns_zone_setoption(raw, DNS_ZONEOPT_CHECKNAMESFAIL, dns_zone_setoption(raw, DNS_ZONEOPT_CHECKNAMESFAIL,
fail); fail);
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMES, dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMES,
false); ISC_FALSE);
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMESFAIL, dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMESFAIL,
false); ISC_FALSE);
} else { } else {
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMES, dns_zone_setoption(zone, DNS_ZONEOPT_CHECKNAMES,
check); check);
@@ -1407,9 +1366,9 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = named_config_get(maps, "check-spf", &obj); result = named_config_get(maps, "check-spf", &obj);
INSIST(result == ISC_R_SUCCESS && obj != NULL); INSIST(result == ISC_R_SUCCESS && obj != NULL);
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
check = true; check = ISC_TRUE;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
check = false; check = ISC_FALSE;
} else } else
INSIST(0); INSIST(0);
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSPF, check); dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSPF, check);
@@ -1446,12 +1405,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
cfg_obj_log(obj, named_g_lctx, cfg_obj_log(obj, named_g_lctx,
ISC_LOG_ERROR, ISC_LOG_ERROR,
"'max-journal-size " "'max-journal-size "
"%" PRId64 "' " "%" ISC_PRINT_QUADFORMAT "d' "
"is too large", "is too large",
value); value);
RETERR(ISC_R_RANGE); RETERR(ISC_R_RANGE);
} }
journal_size = (uint32_t)value; journal_size = (isc_uint32_t)value;
} }
dns_zone_setjournalsize(zone, journal_size); dns_zone_setjournalsize(zone, journal_size);
} }
@@ -1481,8 +1440,8 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
if (ztype == dns_zone_master || raw != NULL) { if (ztype == dns_zone_master || raw != NULL) {
const cfg_obj_t *validity, *resign; const cfg_obj_t *validity, *resign;
bool allow = false, maint = false; isc_boolean_t allow = ISC_FALSE, maint = ISC_FALSE;
bool sigvalinsecs; isc_boolean_t sigvalinsecs;
obj = NULL; obj = NULL;
result = named_config_get(maps, "dnskey-sig-validity", &obj); result = named_config_get(maps, "dnskey-sig-validity", &obj);
@@ -1563,9 +1522,9 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
const char *arg = cfg_obj_asstring(obj); const char *arg = cfg_obj_asstring(obj);
if (strcasecmp(arg, "allow") == 0) if (strcasecmp(arg, "allow") == 0)
allow = true; allow = ISC_TRUE;
else if (strcasecmp(arg, "maintain") == 0) else if (strcasecmp(arg, "maintain") == 0)
allow = maint = true; allow = maint = ISC_TRUE;
else if (strcasecmp(arg, "off") == 0) else if (strcasecmp(arg, "off") == 0)
; ;
else else
@@ -1575,7 +1534,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
} }
} }
if (ztype == dns_zone_slave || ztype == dns_zone_mirror) { if (ztype == dns_zone_slave) {
RETERR(configure_zone_acl(zconfig, vconfig, config, RETERR(configure_zone_acl(zconfig, vconfig, config,
allow_update_forwarding, ac, allow_update_forwarding, ac,
mayberaw, dns_zone_setforwardacl, mayberaw, dns_zone_setforwardacl,
@@ -1591,7 +1550,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
check = cfg_obj_asboolean(obj); check = cfg_obj_asboolean(obj);
else else
check = false; check = ISC_FALSE;
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKWILDCARD, check); dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKWILDCARD, check);
/* /*
@@ -1616,12 +1575,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
} }
if (strcasecmp(dupcheck, "warn") == 0) { if (strcasecmp(dupcheck, "warn") == 0) {
fail = false; fail = ISC_FALSE;
check = true; check = ISC_TRUE;
} else if (strcasecmp(dupcheck, "fail") == 0) { } else if (strcasecmp(dupcheck, "fail") == 0) {
fail = check = true; fail = check = ISC_TRUE;
} else if (strcasecmp(dupcheck, "ignore") == 0) { } else if (strcasecmp(dupcheck, "ignore") == 0) {
fail = check = false; fail = check = ISC_FALSE;
} else } else
INSIST(0); INSIST(0);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKDUPRR, check); dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKDUPRR, check);
@@ -1631,12 +1590,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = named_config_get(maps, "check-mx", &obj); result = named_config_get(maps, "check-mx", &obj);
INSIST(result == ISC_R_SUCCESS && obj != NULL); INSIST(result == ISC_R_SUCCESS && obj != NULL);
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
fail = false; fail = ISC_FALSE;
check = true; check = ISC_TRUE;
} else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) {
fail = check = true; fail = check = ISC_TRUE;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
fail = check = false; fail = check = ISC_FALSE;
} else } else
INSIST(0); INSIST(0);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKMX, check); dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKMX, check);
@@ -1655,7 +1614,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKINTEGRITY, dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKINTEGRITY,
cfg_obj_asboolean(obj)); cfg_obj_asboolean(obj));
} else { } else {
check = false; check = ISC_FALSE;
result = named_config_get(nodefault, "check-integrity", result = named_config_get(nodefault, "check-integrity",
&obj); &obj);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
@@ -1668,12 +1627,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = named_config_get(maps, "check-mx-cname", &obj); result = named_config_get(maps, "check-mx-cname", &obj);
INSIST(result == ISC_R_SUCCESS && obj != NULL); INSIST(result == ISC_R_SUCCESS && obj != NULL);
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
warn = true; warn = ISC_TRUE;
ignore = false; ignore = ISC_FALSE;
} else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) {
warn = ignore = false; warn = ignore = ISC_FALSE;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
warn = ignore = true; warn = ignore = ISC_TRUE;
} else } else
INSIST(0); INSIST(0);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNMXCNAME, warn); dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNMXCNAME, warn);
@@ -1683,12 +1642,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = named_config_get(maps, "check-srv-cname", &obj); result = named_config_get(maps, "check-srv-cname", &obj);
INSIST(result == ISC_R_SUCCESS && obj != NULL); INSIST(result == ISC_R_SUCCESS && obj != NULL);
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) { if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
warn = true; warn = ISC_TRUE;
ignore = false; ignore = ISC_FALSE;
} else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "fail") == 0) {
warn = ignore = false; warn = ignore = ISC_FALSE;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) { } else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
warn = ignore = true; warn = ignore = ISC_TRUE;
} else } else
INSIST(0); INSIST(0);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNSRVCNAME, warn); dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNSRVCNAME, warn);
@@ -1708,7 +1667,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
const char *arg = cfg_obj_asstring(obj); const char *arg = cfg_obj_asstring(obj);
if (strcasecmp(arg, "no-resign") == 0) if (strcasecmp(arg, "no-resign") == 0)
dns_zone_setkeyopt(zone, DNS_ZONEKEY_NORESIGN, dns_zone_setkeyopt(zone, DNS_ZONEKEY_NORESIGN,
true); ISC_TRUE);
else if (strcasecmp(arg, "maintain") == 0) else if (strcasecmp(arg, "maintain") == 0)
; ;
else else
@@ -1733,38 +1692,12 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
* Configure slave functionality. * Configure slave functionality.
*/ */
switch (ztype) { switch (ztype) {
case dns_zone_mirror:
/*
* Disable outgoing zone transfers for mirror zones unless they
* are explicitly enabled by zone configuration.
*/
obj = NULL;
(void)cfg_map_get(zoptions, "allow-transfer", &obj);
if (obj == NULL) {
dns_acl_t *none;
RETERR(dns_acl_none(mctx, &none));
dns_zone_setxfracl(zone, none);
dns_acl_detach(&none);
}
/* FALLTHROUGH */
case dns_zone_slave: case dns_zone_slave:
case dns_zone_stub: case dns_zone_stub:
case dns_zone_redirect: case dns_zone_redirect:
count = 0; count = 0;
obj = NULL; obj = NULL;
(void)cfg_map_get(zoptions, "masters", &obj); (void)cfg_map_get(zoptions, "masters", &obj);
/*
* Use the built-in master server list if one was not
* explicitly specified and this is a root zone mirror.
*/
if (obj == NULL && ztype == dns_zone_mirror &&
dns_name_equal(dns_zone_getorigin(zone), dns_rootname))
{
result = named_config_getmastersdef(named_g_config,
DEFAULT_IANA_ROOT_ZONE_MASTERS,
&obj);
RETERR(result);
}
if (obj != NULL) { if (obj != NULL) {
dns_ipkeylist_t ipkl; dns_ipkeylist_t ipkl;
dns_ipkeylist_init(&ipkl); dns_ipkeylist_init(&ipkl);
@@ -1782,7 +1715,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = dns_zone_setmasters(mayberaw, NULL, 0); result = dns_zone_setmasters(mayberaw, NULL, 0);
RETERR(result); RETERR(result);
multi = false; multi = ISC_FALSE;
if (count > 1) { if (count > 1) {
obj = NULL; obj = NULL;
result = named_config_get(maps, "multi-master", &obj); result = named_config_get(maps, "multi-master", &obj);
@@ -1791,6 +1724,35 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
} }
dns_zone_setoption(mayberaw, DNS_ZONEOPT_MULTIMASTER, multi); dns_zone_setoption(mayberaw, DNS_ZONEOPT_MULTIMASTER, multi);
obj = NULL;
(void)cfg_map_get(zoptions, "mirror", &obj);
if (obj != NULL) {
isc_boolean_t mirror = cfg_obj_asboolean(obj);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_MIRROR,
mirror);
if (mirror) {
/*
* Disable outgoing zone transfers unless they
* are explicitly enabled by zone
* configuration.
*/
obj = NULL;
(void)cfg_map_get(zoptions, "allow-transfer",
&obj);
if (obj == NULL) {
dns_acl_t *none;
RETERR(dns_acl_none(mctx, &none));
dns_zone_setxfracl(zone, none);
dns_acl_detach(&none);
}
/*
* Only allow "also-notify".
*/
notifytype = dns_notifytype_explicit;
dns_zone_setnotifytype(zone, notifytype);
}
}
obj = NULL; obj = NULL;
result = named_config_get(maps, "max-transfer-time-in", &obj); result = named_config_get(maps, "max-transfer-time-in", &obj);
INSIST(result == ISC_R_SUCCESS && obj != NULL); INSIST(result == ISC_R_SUCCESS && obj != NULL);
@@ -1874,9 +1836,9 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
*/ */
view = dns_zone_getview(zone); view = dns_zone_getview(zone);
if (view != NULL && strcmp(view->name, "_default") == 0) if (view != NULL && strcmp(view->name, "_default") == 0)
alt = true; alt = ISC_TRUE;
else else
alt = false; alt = ISC_FALSE;
} else } else
alt = cfg_obj_asboolean(obj); alt = cfg_obj_asboolean(obj);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_USEALTXFRSRC, alt); dns_zone_setoption(mayberaw, DNS_ZONEOPT_USEALTXFRSRC, alt);
@@ -1923,14 +1885,14 @@ named_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase,
return (result); return (result);
} }
bool isc_boolean_t
named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) { named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
const cfg_obj_t *zoptions = NULL; const cfg_obj_t *zoptions = NULL;
const cfg_obj_t *obj = NULL; const cfg_obj_t *obj = NULL;
const char *cfilename; const char *cfilename;
const char *zfilename; const char *zfilename;
dns_zone_t *raw = NULL; dns_zone_t *raw = NULL;
bool has_raw; isc_boolean_t has_raw, mirror;
dns_zonetype_t ztype; dns_zonetype_t ztype;
zoptions = cfg_tuple_get(zconfig, "options"); zoptions = cfg_tuple_get(zconfig, "options");
@@ -1942,7 +1904,7 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
if (zonetype_fromconfig(zoptions) == dns_zone_staticstub) { if (zonetype_fromconfig(zoptions) == dns_zone_staticstub) {
dns_zone_log(zone, ISC_LOG_DEBUG(1), dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: staticstub"); "not reusable: staticstub");
return (false); return (ISC_FALSE);
} }
/* If there's a raw zone, use that for filename and type comparison */ /* If there's a raw zone, use that for filename and type comparison */
@@ -1951,11 +1913,11 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
zfilename = dns_zone_getfile(raw); zfilename = dns_zone_getfile(raw);
ztype = dns_zone_gettype(raw); ztype = dns_zone_gettype(raw);
dns_zone_detach(&raw); dns_zone_detach(&raw);
has_raw = true; has_raw = ISC_TRUE;
} else { } else {
zfilename = dns_zone_getfile(zone); zfilename = dns_zone_getfile(zone);
ztype = dns_zone_gettype(zone); ztype = dns_zone_gettype(zone);
has_raw = false; has_raw = ISC_FALSE;
} }
obj = NULL; obj = NULL;
@@ -1963,17 +1925,32 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
if ((obj == NULL || !cfg_obj_asboolean(obj)) && has_raw) { if ((obj == NULL || !cfg_obj_asboolean(obj)) && has_raw) {
dns_zone_log(zone, ISC_LOG_DEBUG(1), dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: old zone was inline-signing"); "not reusable: old zone was inline-signing");
return (false); return (ISC_FALSE);
} else if ((obj != NULL && cfg_obj_asboolean(obj)) && !has_raw) { } else if ((obj != NULL && cfg_obj_asboolean(obj)) && !has_raw) {
dns_zone_log(zone, ISC_LOG_DEBUG(1), dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: old zone was not inline-signing"); "not reusable: old zone was not inline-signing");
return (false); return (ISC_FALSE);
}
/*
* Do not reuse a zone whose "mirror" setting was changed.
*/
obj = NULL;
mirror = ISC_FALSE;
(void)cfg_map_get(zoptions, "mirror", &obj);
if (obj != NULL) {
mirror = cfg_obj_asboolean(obj);
}
if (dns_zone_ismirror(zone) != mirror) {
dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: mirror setting changed");
return (ISC_FALSE);
} }
if (zonetype_fromconfig(zoptions) != ztype) { if (zonetype_fromconfig(zoptions) != ztype) {
dns_zone_log(zone, ISC_LOG_DEBUG(1), dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: type mismatch"); "not reusable: type mismatch");
return (false); return (ISC_FALSE);
} }
obj = NULL; obj = NULL;
@@ -1988,8 +1965,8 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
{ {
dns_zone_log(zone, ISC_LOG_DEBUG(1), dns_zone_log(zone, ISC_LOG_DEBUG(1),
"not reusable: filename mismatch"); "not reusable: filename mismatch");
return (false); return (ISC_FALSE);
} }
return (true); return (ISC_TRUE);
} }
+167 -155
View File
@@ -16,8 +16,6 @@
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
#include <inttypes.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@@ -99,6 +97,20 @@
#endif #endif
#endif #endif
#ifdef HAVE_ADDRINFO
#ifdef HAVE_GETADDRINFO
#ifdef HAVE_GAISTRERROR
#define USE_GETADDRINFO
#endif
#endif
#endif
#ifndef USE_GETADDRINFO
#ifndef ISC_PLATFORM_NONSTDHERRNO
extern int h_errno;
#endif
#endif
#define MAXCMD (128 * 1024) #define MAXCMD (128 * 1024)
#define MAXWIRE (64 * 1024) #define MAXWIRE (64 * 1024)
#define PACKETSIZE ((64 * 1024) - 1) #define PACKETSIZE ((64 * 1024) - 1)
@@ -112,22 +124,22 @@
/* Number of addresses to request from bind9_getaddresses() */ /* Number of addresses to request from bind9_getaddresses() */
#define MAX_SERVERADDRS 4 #define MAX_SERVERADDRS 4
static uint16_t dnsport = DNSDEFAULTPORT; static isc_uint16_t dnsport = DNSDEFAULTPORT;
#ifndef RESOLV_CONF #ifndef RESOLV_CONF
#define RESOLV_CONF "/etc/resolv.conf" #define RESOLV_CONF "/etc/resolv.conf"
#endif #endif
static bool debugging = false, ddebugging = false; static isc_boolean_t debugging = ISC_FALSE, ddebugging = ISC_FALSE;
static bool memdebugging = false; static isc_boolean_t memdebugging = ISC_FALSE;
static bool have_ipv4 = false; static isc_boolean_t have_ipv4 = ISC_FALSE;
static bool have_ipv6 = false; static isc_boolean_t have_ipv6 = ISC_FALSE;
static bool is_dst_up = false; static isc_boolean_t is_dst_up = ISC_FALSE;
static bool usevc = false; static isc_boolean_t usevc = ISC_FALSE;
static bool usegsstsig = false; static isc_boolean_t usegsstsig = ISC_FALSE;
static bool use_win2k_gsstsig = false; static isc_boolean_t use_win2k_gsstsig = ISC_FALSE;
static bool tried_other_gsstsig = false; static isc_boolean_t tried_other_gsstsig = ISC_FALSE;
static bool local_only = false; static isc_boolean_t local_only = ISC_FALSE;
static isc_taskmgr_t *taskmgr = NULL; static isc_taskmgr_t *taskmgr = NULL;
static isc_task_t *global_task = NULL; static isc_task_t *global_task = NULL;
static isc_event_t *global_event = NULL; static isc_event_t *global_event = NULL;
@@ -151,7 +163,7 @@ static dns_tsigkey_t *tsigkey = NULL;
static dst_key_t *sig0key = NULL; static dst_key_t *sig0key = NULL;
static isc_sockaddr_t *servers = NULL; static isc_sockaddr_t *servers = NULL;
static isc_sockaddr_t *master_servers = NULL; static isc_sockaddr_t *master_servers = NULL;
static bool default_servers = true; static isc_boolean_t default_servers = ISC_TRUE;
static int ns_inuse = 0; static int ns_inuse = 0;
static int master_inuse = 0; static int master_inuse = 0;
static int ns_total = 0; static int ns_total = 0;
@@ -162,10 +174,10 @@ static isc_sockaddr_t *localaddr4 = NULL;
static isc_sockaddr_t *localaddr6 = NULL; static isc_sockaddr_t *localaddr6 = NULL;
static const char *keyfile = NULL; static const char *keyfile = NULL;
static char *keystr = NULL; static char *keystr = NULL;
static bool shuttingdown = false; static isc_boolean_t shuttingdown = ISC_FALSE;
static FILE *input; static FILE *input;
static bool interactive = true; static isc_boolean_t interactive = ISC_TRUE;
static bool seenerror = false; static isc_boolean_t seenerror = ISC_FALSE;
static const dns_master_style_t *style; static const dns_master_style_t *style;
static int requests = 0; static int requests = 0;
static unsigned int logdebuglevel = 0; static unsigned int logdebuglevel = 0;
@@ -175,9 +187,9 @@ static unsigned int udp_retries = 3;
static dns_rdataclass_t defaultclass = dns_rdataclass_in; static dns_rdataclass_t defaultclass = dns_rdataclass_in;
static dns_rdataclass_t zoneclass = dns_rdataclass_none; static dns_rdataclass_t zoneclass = dns_rdataclass_none;
static dns_message_t *answer = NULL; static dns_message_t *answer = NULL;
static uint32_t default_ttl = 0; static isc_uint32_t default_ttl = 0;
static bool default_ttl_set = false; static isc_boolean_t default_ttl_set = ISC_FALSE;
static bool checknames = true; static isc_boolean_t checknames = ISC_TRUE;
typedef struct nsu_requestinfo { typedef struct nsu_requestinfo {
dns_message_t *msg; dns_message_t *msg;
@@ -226,10 +238,10 @@ recvgss(isc_task_t *task, isc_event_t *event);
static void static void
error(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); error(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
#define STATUS_MORE (uint16_t)0 #define STATUS_MORE (isc_uint16_t)0
#define STATUS_SEND (uint16_t)1 #define STATUS_SEND (isc_uint16_t)1
#define STATUS_QUIT (uint16_t)2 #define STATUS_QUIT (isc_uint16_t)2
#define STATUS_SYNTAX (uint16_t)3 #define STATUS_SYNTAX (isc_uint16_t)3
static void static void
master_from_servers(void) { master_from_servers(void) {
@@ -250,14 +262,14 @@ getzoneclass(void) {
return (zoneclass); return (zoneclass);
} }
static bool static isc_boolean_t
setzoneclass(dns_rdataclass_t rdclass) { setzoneclass(dns_rdataclass_t rdclass) {
if (zoneclass == dns_rdataclass_none || if (zoneclass == dns_rdataclass_none ||
rdclass == dns_rdataclass_none) rdclass == dns_rdataclass_none)
zoneclass = rdclass; zoneclass = rdclass;
if (zoneclass != rdclass) if (zoneclass != rdclass)
return (false); return (ISC_FALSE);
return (true); return (ISC_TRUE);
} }
static void static void
@@ -364,15 +376,15 @@ reset_system(void) {
dns_tsigkey_detach(&tsigkey); dns_tsigkey_detach(&tsigkey);
if (gssring != NULL) if (gssring != NULL)
dns_tsigkeyring_detach(&gssring); dns_tsigkeyring_detach(&gssring);
tried_other_gsstsig = false; tried_other_gsstsig = ISC_FALSE;
} }
} }
static bool static isc_boolean_t
parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len, parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
uint16_t *digestbitsp) isc_uint16_t *digestbitsp)
{ {
uint16_t digestbits = 0; isc_uint16_t digestbits = 0;
isc_result_t result; isc_result_t result;
char buf[20]; char buf[20];
@@ -381,7 +393,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
if (len >= sizeof(buf)) { if (len >= sizeof(buf)) {
error("unknown key type '%.*s'", (int)(len), hmacstr); error("unknown key type '%.*s'", (int)(len), hmacstr);
return (false); return (ISC_FALSE);
} }
/* Copy len bytes and NUL terminate. */ /* Copy len bytes and NUL terminate. */
@@ -394,7 +406,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[9], 10); result = isc_parse_uint16(&digestbits, &buf[9], 10);
if (result != ISC_R_SUCCESS || digestbits > 128) { if (result != ISC_R_SUCCESS || digestbits > 128) {
error("digest-bits out of range [0..128]"); error("digest-bits out of range [0..128]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else if (strcasecmp(buf, "hmac-sha1") == 0) { } else if (strcasecmp(buf, "hmac-sha1") == 0) {
@@ -404,7 +416,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[10], 10); result = isc_parse_uint16(&digestbits, &buf[10], 10);
if (result != ISC_R_SUCCESS || digestbits > 160) { if (result != ISC_R_SUCCESS || digestbits > 160) {
error("digest-bits out of range [0..160]"); error("digest-bits out of range [0..160]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else if (strcasecmp(buf, "hmac-sha224") == 0) { } else if (strcasecmp(buf, "hmac-sha224") == 0) {
@@ -414,7 +426,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[12], 10); result = isc_parse_uint16(&digestbits, &buf[12], 10);
if (result != ISC_R_SUCCESS || digestbits > 224) { if (result != ISC_R_SUCCESS || digestbits > 224) {
error("digest-bits out of range [0..224]"); error("digest-bits out of range [0..224]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else if (strcasecmp(buf, "hmac-sha256") == 0) { } else if (strcasecmp(buf, "hmac-sha256") == 0) {
@@ -424,7 +436,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[12], 10); result = isc_parse_uint16(&digestbits, &buf[12], 10);
if (result != ISC_R_SUCCESS || digestbits > 256) { if (result != ISC_R_SUCCESS || digestbits > 256) {
error("digest-bits out of range [0..256]"); error("digest-bits out of range [0..256]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else if (strcasecmp(buf, "hmac-sha384") == 0) { } else if (strcasecmp(buf, "hmac-sha384") == 0) {
@@ -434,7 +446,7 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[12], 10); result = isc_parse_uint16(&digestbits, &buf[12], 10);
if (result != ISC_R_SUCCESS || digestbits > 384) { if (result != ISC_R_SUCCESS || digestbits > 384) {
error("digest-bits out of range [0..384]"); error("digest-bits out of range [0..384]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else if (strcasecmp(buf, "hmac-sha512") == 0) { } else if (strcasecmp(buf, "hmac-sha512") == 0) {
@@ -444,14 +456,14 @@ parse_hmac(const dns_name_t **hmac, const char *hmacstr, size_t len,
result = isc_parse_uint16(&digestbits, &buf[12], 10); result = isc_parse_uint16(&digestbits, &buf[12], 10);
if (result != ISC_R_SUCCESS || digestbits > 512) { if (result != ISC_R_SUCCESS || digestbits > 512) {
error("digest-bits out of range [0..512]"); error("digest-bits out of range [0..512]");
return (false); return (ISC_FALSE);
} }
*digestbitsp = (digestbits + 7) & ~0x7U; *digestbitsp = (digestbits + 7) & ~0x7U;
} else { } else {
error("unknown key type '%s'", buf); error("unknown key type '%s'", buf);
return (false); return (ISC_FALSE);
} }
return (true); return (ISC_TRUE);
} }
static int static int
@@ -480,7 +492,7 @@ setup_keystr(void) {
dns_name_t *mykeyname; dns_name_t *mykeyname;
char *name; char *name;
const dns_name_t *hmacname = NULL; const dns_name_t *hmacname = NULL;
uint16_t digestbits = 0; isc_uint16_t digestbits = 0;
mykeyname = dns_fixedname_initname(&fkeyname); mykeyname = dns_fixedname_initname(&fkeyname);
@@ -530,7 +542,7 @@ setup_keystr(void) {
debug("keycreate"); debug("keycreate");
result = dns_tsigkey_create(mykeyname, hmacname, secret, secretlen, result = dns_tsigkey_create(mykeyname, hmacname, secret, secretlen,
false, NULL, 0, 0, gmctx, NULL, ISC_FALSE, NULL, 0, 0, gmctx, NULL,
&tsigkey); &tsigkey);
if (result != ISC_R_SUCCESS) if (result != ISC_R_SUCCESS)
fprintf(stderr, "could not create key from %s: %s\n", fprintf(stderr, "could not create key from %s: %s\n",
@@ -655,7 +667,7 @@ setup_keyfile(isc_mem_t *mctx, isc_log_t *lctx) {
} }
if (hmacname != NULL) { if (hmacname != NULL) {
result = dns_tsigkey_createfromkey(dst_key_name(dstkey), result = dns_tsigkey_createfromkey(dst_key_name(dstkey),
hmacname, dstkey, false, hmacname, dstkey, ISC_FALSE,
NULL, 0, 0, mctx, NULL, NULL, 0, 0, mctx, NULL,
&tsigkey); &tsigkey);
dst_key_free(&dstkey); dst_key_free(&dstkey);
@@ -708,7 +720,7 @@ doshutdown(void) {
if (is_dst_up) { if (is_dst_up) {
ddebug("Destroy DST lib"); ddebug("Destroy DST lib");
dst_lib_destroy(); dst_lib_destroy();
is_dst_up = false; is_dst_up = ISC_FALSE;
} }
ddebug("Destroying request manager"); ddebug("Destroying request manager");
@@ -744,7 +756,7 @@ shutdown_program(isc_task_t *task, isc_event_t *event) {
ddebug("shutdown_program()"); ddebug("shutdown_program()");
isc_event_free(&event); isc_event_free(&event);
shuttingdown = true; shuttingdown = ISC_TRUE;
maybeshutdown(); maybeshutdown();
} }
@@ -896,7 +908,7 @@ setup_system(void) {
result = dst_lib_init(gmctx, NULL); result = dst_lib_init(gmctx, NULL);
check_result(result, "dst_lib_init"); check_result(result, "dst_lib_init");
is_dst_up = true; is_dst_up = ISC_TRUE;
attrmask = DNS_DISPATCHATTR_UDP | DNS_DISPATCHATTR_TCP; attrmask = DNS_DISPATCHATTR_UDP | DNS_DISPATCHATTR_TCP;
attrmask |= DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_IPV6; attrmask |= DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_IPV6;
@@ -969,15 +981,15 @@ pre_parse_args(int argc, char **argv) {
dns_rdatatype_t t; dns_rdatatype_t t;
int ch; int ch;
char buf[100]; char buf[100];
bool doexit = false; isc_boolean_t doexit = ISC_FALSE;
bool ipv4only = false, ipv6only = false; isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) { while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) {
switch (ch) { switch (ch) {
case 'M': /* was -dm */ case 'M': /* was -dm */
debugging = true; debugging = ISC_TRUE;
ddebugging = true; ddebugging = ISC_TRUE;
memdebugging = true; memdebugging = ISC_TRUE;
isc_mem_debugging = ISC_MEM_DEBUGTRACE | isc_mem_debugging = ISC_MEM_DEBUGTRACE |
ISC_MEM_DEBUGRECORD; ISC_MEM_DEBUGRECORD;
break; break;
@@ -986,14 +998,14 @@ pre_parse_args(int argc, char **argv) {
if (ipv6only) { if (ipv6only) {
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
} }
ipv4only = true; ipv4only = ISC_TRUE;
break; break;
case '6': case '6':
if (ipv4only) { if (ipv4only) {
fatal("only one of -4 and -6 allowed"); fatal("only one of -4 and -6 allowed");
} }
ipv6only = true; ipv6only = ISC_TRUE;
break; break;
case '?': case '?':
@@ -1014,7 +1026,7 @@ pre_parse_args(int argc, char **argv) {
if (strncmp(buf, "TYPE", 4) != 0) if (strncmp(buf, "TYPE", 4) != 0)
fprintf(stdout, "%s\n", buf); fprintf(stdout, "%s\n", buf);
} }
doexit = true; doexit = ISC_TRUE;
break; break;
case 'T': case 'T':
@@ -1025,12 +1037,12 @@ pre_parse_args(int argc, char **argv) {
if (strncmp(buf, "TYPE", 4) != 0) if (strncmp(buf, "TYPE", 4) != 0)
fprintf(stdout, "%s\n", buf); fprintf(stdout, "%s\n", buf);
} }
doexit = true; doexit = ISC_TRUE;
break; break;
case 'V': case 'V':
version(); version();
doexit = true; doexit = ISC_TRUE;
break; break;
default: default:
@@ -1039,16 +1051,16 @@ pre_parse_args(int argc, char **argv) {
} }
if (doexit) if (doexit)
exit(0); exit(0);
isc_commandline_reset = true; isc_commandline_reset = ISC_TRUE;
isc_commandline_index = 1; isc_commandline_index = 1;
} }
static void static void
parse_args(int argc, char **argv) { parse_args(int argc, char **argv) {
int ch; int ch;
uint32_t i; isc_uint32_t i;
isc_result_t result; isc_result_t result;
bool force_interactive = false; isc_boolean_t force_interactive = ISC_FALSE;
debug("parse_args"); debug("parse_args");
while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) { while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) {
@@ -1056,7 +1068,7 @@ parse_args(int argc, char **argv) {
case '4': case '4':
if (have_ipv4) { if (have_ipv4) {
isc_net_disableipv6(); isc_net_disableipv6();
have_ipv6 = false; have_ipv6 = ISC_FALSE;
} else { } else {
fatal("can't find IPv4 networking"); fatal("can't find IPv4 networking");
} }
@@ -1064,26 +1076,26 @@ parse_args(int argc, char **argv) {
case '6': case '6':
if (have_ipv6) { if (have_ipv6) {
isc_net_disableipv4(); isc_net_disableipv4();
have_ipv4 = false; have_ipv4 = ISC_FALSE;
} else { } else {
fatal("can't find IPv6 networking"); fatal("can't find IPv6 networking");
} }
break; break;
case 'd': case 'd':
debugging = true; debugging = ISC_TRUE;
break; break;
case 'D': /* was -dd */ case 'D': /* was -dd */
debugging = true; debugging = ISC_TRUE;
ddebugging = true; ddebugging = ISC_TRUE;
break; break;
case 'M': case 'M':
break; break;
case 'i': case 'i':
force_interactive = true; force_interactive = ISC_TRUE;
interactive = true; interactive = ISC_TRUE;
break; break;
case 'l': case 'l':
local_only = true; local_only = ISC_TRUE;
break; break;
case 'L': case 'L':
result = isc_parse_uint32(&i, isc_commandline_argument, result = isc_parse_uint32(&i, isc_commandline_argument,
@@ -1099,18 +1111,18 @@ parse_args(int argc, char **argv) {
keystr = isc_commandline_argument; keystr = isc_commandline_argument;
break; break;
case 'v': case 'v':
usevc = true; usevc = ISC_TRUE;
break; break;
case 'k': case 'k':
keyfile = isc_commandline_argument; keyfile = isc_commandline_argument;
break; break;
case 'g': case 'g':
usegsstsig = true; usegsstsig = ISC_TRUE;
use_win2k_gsstsig = false; use_win2k_gsstsig = ISC_FALSE;
break; break;
case 'o': case 'o':
usegsstsig = true; usegsstsig = ISC_TRUE;
use_win2k_gsstsig = true; use_win2k_gsstsig = ISC_TRUE;
break; break;
case 'p': case 'p':
result = isc_parse_uint16(&dnsport, result = isc_parse_uint16(&dnsport,
@@ -1195,12 +1207,12 @@ parse_args(int argc, char **argv) {
} }
} }
if (!force_interactive) { if (!force_interactive) {
interactive = false; interactive = ISC_FALSE;
} }
} }
} }
static uint16_t static isc_uint16_t
parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) { parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) {
isc_result_t result; isc_result_t result;
char *word; char *word;
@@ -1233,7 +1245,7 @@ parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass, parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
dns_rdatatype_t rdatatype, dns_message_t *msg, dns_rdatatype_t rdatatype, dns_message_t *msg,
dns_rdata_t *rdata) dns_rdata_t *rdata)
@@ -1289,8 +1301,8 @@ parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
make_prereq(char *cmdline, bool ispositive, bool isrrset) { make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
isc_result_t result; isc_result_t result;
char *word; char *word;
dns_name_t *name = NULL; dns_name_t *name = NULL;
@@ -1300,7 +1312,7 @@ make_prereq(char *cmdline, bool ispositive, bool isrrset) {
dns_rdataclass_t rdataclass; dns_rdataclass_t rdataclass;
dns_rdatatype_t rdatatype; dns_rdatatype_t rdatatype;
dns_rdata_t *rdata = NULL; dns_rdata_t *rdata = NULL;
uint16_t retval; isc_uint16_t retval;
ddebug("make_prereq()"); ddebug("make_prereq()");
@@ -1394,10 +1406,10 @@ make_prereq(char *cmdline, bool ispositive, bool isrrset) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
static uint16_t static isc_uint16_t
evaluate_prereq(char *cmdline) { evaluate_prereq(char *cmdline) {
char *word; char *word;
bool ispositive, isrrset; isc_boolean_t ispositive, isrrset;
ddebug("evaluate_prereq()"); ddebug("evaluate_prereq()");
word = nsu_strsep(&cmdline, " \t\r\n"); word = nsu_strsep(&cmdline, " \t\r\n");
@@ -1406,17 +1418,17 @@ evaluate_prereq(char *cmdline) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
if (strcasecmp(word, "nxdomain") == 0) { if (strcasecmp(word, "nxdomain") == 0) {
ispositive = false; ispositive = ISC_FALSE;
isrrset = false; isrrset = ISC_FALSE;
} else if (strcasecmp(word, "yxdomain") == 0) { } else if (strcasecmp(word, "yxdomain") == 0) {
ispositive = true; ispositive = ISC_TRUE;
isrrset = false; isrrset = ISC_FALSE;
} else if (strcasecmp(word, "nxrrset") == 0) { } else if (strcasecmp(word, "nxrrset") == 0) {
ispositive = false; ispositive = ISC_FALSE;
isrrset = true; isrrset = ISC_TRUE;
} else if (strcasecmp(word, "yxrrset") == 0) { } else if (strcasecmp(word, "yxrrset") == 0) {
ispositive = true; ispositive = ISC_TRUE;
isrrset = true; isrrset = ISC_TRUE;
} else { } else {
fprintf(stderr, "incorrect operation code: %s\n", word); fprintf(stderr, "incorrect operation code: %s\n", word);
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
@@ -1424,7 +1436,7 @@ evaluate_prereq(char *cmdline) {
return (make_prereq(cmdline, ispositive, isrrset)); return (make_prereq(cmdline, ispositive, isrrset));
} }
static uint16_t static isc_uint16_t
evaluate_server(char *cmdline) { evaluate_server(char *cmdline) {
char *word, *server; char *word, *server;
long port; long port;
@@ -1463,7 +1475,7 @@ evaluate_server(char *cmdline) {
isc_mem_put(gmctx, servers, ns_alloc * sizeof(isc_sockaddr_t)); isc_mem_put(gmctx, servers, ns_alloc * sizeof(isc_sockaddr_t));
} }
default_servers = false; default_servers = ISC_FALSE;
ns_alloc = MAX_SERVERADDRS; ns_alloc = MAX_SERVERADDRS;
ns_inuse = 0; ns_inuse = 0;
@@ -1480,7 +1492,7 @@ evaluate_server(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
evaluate_local(char *cmdline) { evaluate_local(char *cmdline) {
char *word, *local; char *word, *local;
long port; long port;
@@ -1530,7 +1542,7 @@ evaluate_local(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
evaluate_key(char *cmdline) { evaluate_key(char *cmdline) {
char *namestr; char *namestr;
char *secretstr; char *secretstr;
@@ -1542,7 +1554,7 @@ evaluate_key(char *cmdline) {
unsigned char *secret = NULL; unsigned char *secret = NULL;
isc_buffer_t secretbuf; isc_buffer_t secretbuf;
const dns_name_t *hmacname = NULL; const dns_name_t *hmacname = NULL;
uint16_t digestbits = 0; isc_uint16_t digestbits = 0;
char *n; char *n;
namestr = nsu_strsep(&cmdline, " \t\r\n"); namestr = nsu_strsep(&cmdline, " \t\r\n");
@@ -1595,7 +1607,7 @@ evaluate_key(char *cmdline) {
if (tsigkey != NULL) if (tsigkey != NULL)
dns_tsigkey_detach(&tsigkey); dns_tsigkey_detach(&tsigkey);
result = dns_tsigkey_create(mykeyname, hmacname, secret, secretlen, result = dns_tsigkey_create(mykeyname, hmacname, secret, secretlen,
false, NULL, 0, 0, gmctx, NULL, ISC_FALSE, NULL, 0, 0, gmctx, NULL,
&tsigkey); &tsigkey);
isc_mem_free(gmctx, secret); isc_mem_free(gmctx, secret);
if (result != ISC_R_SUCCESS) { if (result != ISC_R_SUCCESS) {
@@ -1607,7 +1619,7 @@ evaluate_key(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
evaluate_zone(char *cmdline) { evaluate_zone(char *cmdline) {
char *word; char *word;
isc_buffer_t b; isc_buffer_t b;
@@ -1632,7 +1644,7 @@ evaluate_zone(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
evaluate_realm(char *cmdline) { evaluate_realm(char *cmdline) {
#ifdef GSSAPI #ifdef GSSAPI
char *word; char *word;
@@ -1663,11 +1675,11 @@ evaluate_realm(char *cmdline) {
#endif #endif
} }
static uint16_t static isc_uint16_t
evaluate_ttl(char *cmdline) { evaluate_ttl(char *cmdline) {
char *word; char *word;
isc_result_t result; isc_result_t result;
uint32_t ttl; isc_uint32_t ttl;
word = nsu_strsep(&cmdline, " \t\r\n"); word = nsu_strsep(&cmdline, " \t\r\n");
if (word == NULL || *word == 0) { if (word == NULL || *word == 0) {
@@ -1677,7 +1689,7 @@ evaluate_ttl(char *cmdline) {
if (!strcasecmp(word, "none")) { if (!strcasecmp(word, "none")) {
default_ttl = 0; default_ttl = 0;
default_ttl_set = false; default_ttl_set = ISC_FALSE;
return (STATUS_MORE); return (STATUS_MORE);
} }
@@ -1691,12 +1703,12 @@ evaluate_ttl(char *cmdline) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
default_ttl = ttl; default_ttl = ttl;
default_ttl_set = true; default_ttl_set = ISC_TRUE;
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
evaluate_class(char *cmdline) { evaluate_class(char *cmdline) {
char *word; char *word;
isc_textregion_t r; isc_textregion_t r;
@@ -1729,11 +1741,11 @@ evaluate_class(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
static uint16_t static isc_uint16_t
update_addordelete(char *cmdline, bool isdelete) { update_addordelete(char *cmdline, isc_boolean_t isdelete) {
isc_result_t result; isc_result_t result;
dns_name_t *name = NULL; dns_name_t *name = NULL;
uint32_t ttl; isc_uint32_t ttl;
char *word; char *word;
dns_rdataclass_t rdataclass; dns_rdataclass_t rdataclass;
dns_rdatatype_t rdatatype; dns_rdatatype_t rdatatype;
@@ -1741,7 +1753,7 @@ update_addordelete(char *cmdline, bool isdelete) {
dns_rdatalist_t *rdatalist = NULL; dns_rdatalist_t *rdatalist = NULL;
dns_rdataset_t *rdataset = NULL; dns_rdataset_t *rdataset = NULL;
isc_textregion_t region; isc_textregion_t region;
uint16_t retval; isc_uint16_t retval;
ddebug("update_addordelete()"); ddebug("update_addordelete()");
@@ -1878,7 +1890,7 @@ update_addordelete(char *cmdline, bool isdelete) {
dns_name_t *bad; dns_name_t *bad;
if (!dns_rdata_checkowner(name, rdata->rdclass, rdata->type, if (!dns_rdata_checkowner(name, rdata->rdclass, rdata->type,
true)) ISC_TRUE))
{ {
char namebuf[DNS_NAME_FORMATSIZE]; char namebuf[DNS_NAME_FORMATSIZE];
@@ -1923,10 +1935,10 @@ update_addordelete(char *cmdline, bool isdelete) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
static uint16_t static isc_uint16_t
evaluate_update(char *cmdline) { evaluate_update(char *cmdline) {
char *word; char *word;
bool isdelete; isc_boolean_t isdelete;
ddebug("evaluate_update()"); ddebug("evaluate_update()");
word = nsu_strsep(&cmdline, " \t\r\n"); word = nsu_strsep(&cmdline, " \t\r\n");
@@ -1935,11 +1947,11 @@ evaluate_update(char *cmdline) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
if (strcasecmp(word, "delete") == 0) if (strcasecmp(word, "delete") == 0)
isdelete = true; isdelete = ISC_TRUE;
else if (strcasecmp(word, "del") == 0) else if (strcasecmp(word, "del") == 0)
isdelete = true; isdelete = ISC_TRUE;
else if (strcasecmp(word, "add") == 0) else if (strcasecmp(word, "add") == 0)
isdelete = false; isdelete = ISC_FALSE;
else { else {
fprintf(stderr, "incorrect operation code: %s\n", word); fprintf(stderr, "incorrect operation code: %s\n", word);
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
@@ -1947,7 +1959,7 @@ evaluate_update(char *cmdline) {
return (update_addordelete(cmdline, isdelete)); return (update_addordelete(cmdline, isdelete));
} }
static uint16_t static isc_uint16_t
evaluate_checknames(char *cmdline) { evaluate_checknames(char *cmdline) {
char *word; char *word;
@@ -1960,11 +1972,11 @@ evaluate_checknames(char *cmdline) {
if (strcasecmp(word, "yes") == 0 || if (strcasecmp(word, "yes") == 0 ||
strcasecmp(word, "true") == 0 || strcasecmp(word, "true") == 0 ||
strcasecmp(word, "on") == 0) { strcasecmp(word, "on") == 0) {
checknames = true; checknames = ISC_TRUE;
} else if (strcasecmp(word, "no") == 0 || } else if (strcasecmp(word, "no") == 0 ||
strcasecmp(word, "false") == 0 || strcasecmp(word, "false") == 0 ||
strcasecmp(word, "off") == 0) { strcasecmp(word, "off") == 0) {
checknames = false; checknames = ISC_FALSE;
} else { } else {
fprintf(stderr, "incorrect check-names directive: %s\n", word); fprintf(stderr, "incorrect check-names directive: %s\n", word);
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
@@ -2042,7 +2054,7 @@ show_message(FILE *stream, dns_message_t *msg, const char *description) {
isc_buffer_free(&buf); isc_buffer_free(&buf);
} }
static uint16_t static isc_uint16_t
do_next_command(char *cmdline) { do_next_command(char *cmdline) {
char *word; char *word;
@@ -2058,21 +2070,21 @@ do_next_command(char *cmdline) {
if (strcasecmp(word, "prereq") == 0) if (strcasecmp(word, "prereq") == 0)
return (evaluate_prereq(cmdline)); return (evaluate_prereq(cmdline));
if (strcasecmp(word, "nxdomain") == 0) if (strcasecmp(word, "nxdomain") == 0)
return (make_prereq(cmdline, false, false)); return (make_prereq(cmdline, ISC_FALSE, ISC_FALSE));
if (strcasecmp(word, "yxdomain") == 0) if (strcasecmp(word, "yxdomain") == 0)
return (make_prereq(cmdline, true, false)); return (make_prereq(cmdline, ISC_TRUE, ISC_FALSE));
if (strcasecmp(word, "nxrrset") == 0) if (strcasecmp(word, "nxrrset") == 0)
return (make_prereq(cmdline, false, true)); return (make_prereq(cmdline, ISC_FALSE, ISC_TRUE));
if (strcasecmp(word, "yxrrset") == 0) if (strcasecmp(word, "yxrrset") == 0)
return (make_prereq(cmdline, true, true)); return (make_prereq(cmdline, ISC_TRUE, ISC_TRUE));
if (strcasecmp(word, "update") == 0) if (strcasecmp(word, "update") == 0)
return (evaluate_update(cmdline)); return (evaluate_update(cmdline));
if (strcasecmp(word, "delete") == 0) if (strcasecmp(word, "delete") == 0)
return (update_addordelete(cmdline, true)); return (update_addordelete(cmdline, ISC_TRUE));
if (strcasecmp(word, "del") == 0) if (strcasecmp(word, "del") == 0)
return (update_addordelete(cmdline, true)); return (update_addordelete(cmdline, ISC_TRUE));
if (strcasecmp(word, "add") == 0) if (strcasecmp(word, "add") == 0)
return (update_addordelete(cmdline, false)); return (update_addordelete(cmdline, ISC_FALSE));
if (strcasecmp(word, "server") == 0) if (strcasecmp(word, "server") == 0)
return (evaluate_server(cmdline)); return (evaluate_server(cmdline));
if (strcasecmp(word, "local") == 0) if (strcasecmp(word, "local") == 0)
@@ -2085,9 +2097,9 @@ do_next_command(char *cmdline) {
return (STATUS_SEND); return (STATUS_SEND);
if (strcasecmp(word, "debug") == 0) { if (strcasecmp(word, "debug") == 0) {
if (debugging) if (debugging)
ddebugging = true; ddebugging = ISC_TRUE;
else else
debugging = true; debugging = ISC_TRUE;
return (STATUS_MORE); return (STATUS_MORE);
} }
if (strcasecmp(word, "ttl") == 0) if (strcasecmp(word, "ttl") == 0)
@@ -2102,7 +2114,7 @@ do_next_command(char *cmdline) {
return (STATUS_MORE); return (STATUS_MORE);
} }
if (strcasecmp(word, "key") == 0) { if (strcasecmp(word, "key") == 0) {
usegsstsig = false; usegsstsig = ISC_FALSE;
return (evaluate_key(cmdline)); return (evaluate_key(cmdline));
} }
if (strcasecmp(word, "realm") == 0) if (strcasecmp(word, "realm") == 0)
@@ -2112,8 +2124,8 @@ do_next_command(char *cmdline) {
return (evaluate_checknames(cmdline)); return (evaluate_checknames(cmdline));
if (strcasecmp(word, "gsstsig") == 0) { if (strcasecmp(word, "gsstsig") == 0) {
#ifdef GSSAPI #ifdef GSSAPI
usegsstsig = true; usegsstsig = ISC_TRUE;
use_win2k_gsstsig = false; use_win2k_gsstsig = ISC_FALSE;
#else #else
fprintf(stderr, "gsstsig not supported\n"); fprintf(stderr, "gsstsig not supported\n");
#endif #endif
@@ -2121,8 +2133,8 @@ do_next_command(char *cmdline) {
} }
if (strcasecmp(word, "oldgsstsig") == 0) { if (strcasecmp(word, "oldgsstsig") == 0) {
#ifdef GSSAPI #ifdef GSSAPI
usegsstsig = true; usegsstsig = ISC_TRUE;
use_win2k_gsstsig = true; use_win2k_gsstsig = ISC_TRUE;
#else #else
fprintf(stderr, "gsstsig not supported\n"); fprintf(stderr, "gsstsig not supported\n");
#endif #endif
@@ -2160,9 +2172,9 @@ do_next_command(char *cmdline) {
return (STATUS_SYNTAX); return (STATUS_SYNTAX);
} }
static uint16_t static isc_uint16_t
get_next_command(void) { get_next_command(void) {
uint16_t result = STATUS_QUIT; isc_uint16_t result = STATUS_QUIT;
char cmdlinebuf[MAXCMD]; char cmdlinebuf[MAXCMD];
char *cmdline; char *cmdline;
@@ -2198,9 +2210,9 @@ get_next_command(void) {
return (result); return (result);
} }
static bool static isc_boolean_t
user_interaction(void) { user_interaction(void) {
uint16_t result = STATUS_MORE; isc_uint16_t result = STATUS_MORE;
ddebug("user_interaction()"); ddebug("user_interaction()");
while ((result == STATUS_MORE) || (result == STATUS_SYNTAX)) { while ((result == STATUS_MORE) || (result == STATUS_SYNTAX)) {
@@ -2209,8 +2221,8 @@ user_interaction(void) {
fatal("syntax error"); fatal("syntax error");
} }
if (result == STATUS_SEND) if (result == STATUS_SEND)
return (true); return (ISC_TRUE);
return (false); return (ISC_FALSE);
} }
@@ -2244,7 +2256,7 @@ check_tsig_error(dns_rdataset_t *rdataset, isc_buffer_t *b) {
} }
} }
static bool static isc_boolean_t
next_master(const char *caller, isc_sockaddr_t *addr, isc_result_t eresult) { next_master(const char *caller, isc_sockaddr_t *addr, isc_result_t eresult) {
char addrbuf[ISC_SOCKADDR_FORMATSIZE]; char addrbuf[ISC_SOCKADDR_FORMATSIZE];
@@ -2252,9 +2264,9 @@ next_master(const char *caller, isc_sockaddr_t *addr, isc_result_t eresult) {
fprintf(stderr, "; Communication with %s failed: %s\n", fprintf(stderr, "; Communication with %s failed: %s\n",
addrbuf, isc_result_totext(eresult)); addrbuf, isc_result_totext(eresult));
if (++master_inuse >= master_total) if (++master_inuse >= master_total)
return (false); return (ISC_FALSE);
ddebug("%s: trying next server", caller); ddebug("%s: trying next server", caller);
return (true); return (ISC_TRUE);
} }
static void static void
@@ -2285,7 +2297,7 @@ update_completed(isc_task_t *task, isc_event_t *event) {
&master_servers[master_inuse], &master_servers[master_inuse],
reqev->result)) reqev->result))
{ {
seenerror = true; seenerror = ISC_TRUE;
goto done; goto done;
} }
@@ -2323,14 +2335,14 @@ update_completed(isc_task_t *task, isc_event_t *event) {
#endif #endif
fprintf(stderr, "; TSIG error with server: %s\n", fprintf(stderr, "; TSIG error with server: %s\n",
isc_result_totext(result)); isc_result_totext(result));
seenerror = true; seenerror = ISC_TRUE;
break; break;
default: default:
check_result(result, "dns_request_getresponse"); check_result(result, "dns_request_getresponse");
} }
if (answer->rcode != dns_rcode_noerror) { if (answer->rcode != dns_rcode_noerror) {
seenerror = true; seenerror = ISC_TRUE;
if (!debugging) { if (!debugging) {
char buf[64]; char buf[64];
isc_buffer_t b; isc_buffer_t b;
@@ -2434,7 +2446,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
dns_message_t *soaquery = NULL; dns_message_t *soaquery = NULL;
isc_sockaddr_t *addr; isc_sockaddr_t *addr;
isc_sockaddr_t *srcaddr; isc_sockaddr_t *srcaddr;
bool seencname = false; isc_boolean_t seencname = ISC_FALSE;
dns_name_t tname; dns_name_t tname;
unsigned int nlabels; unsigned int nlabels;
@@ -2531,7 +2543,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
dns_message_destroy(&soaquery); dns_message_destroy(&soaquery);
ddebug("Out of recvsoa"); ddebug("Out of recvsoa");
done_update(); done_update();
seenerror = true; seenerror = ISC_TRUE;
return; return;
} }
@@ -2562,7 +2574,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
&tset) == ISC_R_SUCCESS || &tset) == ISC_R_SUCCESS ||
dns_message_findtype(name, dns_rdatatype_dname, 0, dns_message_findtype(name, dns_rdatatype_dname, 0,
&tset) == ISC_R_SUCCESS ) { &tset) == ISC_R_SUCCESS ) {
seencname = true; seencname = ISC_TRUE;
break; break;
} }
} }
@@ -2618,7 +2630,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
size_t size; size_t size;
isc_buffer_init(&buf, serverstr, sizeof(serverstr)); isc_buffer_init(&buf, serverstr, sizeof(serverstr));
result = dns_name_totext(&master, true, &buf); result = dns_name_totext(&master, ISC_TRUE, &buf);
check_result(result, "dns_name_totext"); check_result(result, "dns_name_totext");
serverstr[isc_buffer_usedlength(&buf)] = 0; serverstr[isc_buffer_usedlength(&buf)] = 0;
@@ -2765,7 +2777,7 @@ get_ticket_realm(isc_mem_t *mctx) {
static void static void
failed_gssrequest() { failed_gssrequest() {
seenerror = true; seenerror = ISC_TRUE;
dns_name_free(&tmpzonename, gmctx); dns_name_free(&tmpzonename, gmctx);
dns_name_free(&restart_master, gmctx); dns_name_free(&restart_master, gmctx);
@@ -2778,7 +2790,7 @@ start_gssrequest(dns_name_t *master) {
gss_ctx_id_t context; gss_ctx_id_t context;
isc_buffer_t buf; isc_buffer_t buf;
isc_result_t result; isc_result_t result;
uint32_t val = 0; isc_uint32_t val = 0;
dns_message_t *rmsg = NULL; dns_message_t *rmsg = NULL;
dns_request_t *request = NULL; dns_request_t *request = NULL;
dns_name_t *servname; dns_name_t *servname;
@@ -2788,7 +2800,7 @@ start_gssrequest(dns_name_t *master) {
char *err_message = NULL; char *err_message = NULL;
debug("start_gssrequest"); debug("start_gssrequest");
usevc = true; usevc = ISC_TRUE;
if (gssring != NULL) if (gssring != NULL)
dns_tsigkeyring_detach(&gssring); dns_tsigkeyring_detach(&gssring);
@@ -2986,10 +2998,10 @@ recvgss(isc_task_t *task, isc_event_t *event) {
ddebug("recvgss trying %s GSS-TSIG", ddebug("recvgss trying %s GSS-TSIG",
use_win2k_gsstsig ? "Standard" : "Win2k"); use_win2k_gsstsig ? "Standard" : "Win2k");
if (use_win2k_gsstsig) if (use_win2k_gsstsig)
use_win2k_gsstsig = false; use_win2k_gsstsig = ISC_FALSE;
else else
use_win2k_gsstsig = true; use_win2k_gsstsig = ISC_TRUE;
tried_other_gsstsig = true; tried_other_gsstsig = ISC_TRUE;
start_gssrequest(&restart_master); start_gssrequest(&restart_master);
goto done; goto done;
} }
@@ -3209,7 +3221,7 @@ cleanup(void) {
static void static void
getinput(isc_task_t *task, isc_event_t *event) { getinput(isc_task_t *task, isc_event_t *event) {
bool more; isc_boolean_t more;
UNUSED(task); UNUSED(task);
@@ -3238,15 +3250,15 @@ main(int argc, char **argv) {
input = stdin; input = stdin;
interactive = isatty(0); interactive = ISC_TF(isatty(0));
isc_app_start(); isc_app_start();
if (isc_net_probeipv4() == ISC_R_SUCCESS) { if (isc_net_probeipv4() == ISC_R_SUCCESS) {
have_ipv4 = true; have_ipv4 = ISC_TRUE;
} }
if (isc_net_probeipv6() == ISC_R_SUCCESS) { if (isc_net_probeipv6() == ISC_R_SUCCESS) {
have_ipv6 = true; have_ipv6 = ISC_TRUE;
} }
if (!have_ipv4 && !have_ipv6) { if (!have_ipv4 && !have_ipv6) {
fatal("could not find either IPv4 or IPv6"); fatal("could not find either IPv4 or IPv6");
+2 -2
View File
@@ -68,7 +68,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIBD@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@READLINE_LIBD@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -98,7 +98,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIB@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>@READLINE_LIB@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
+2 -2
View File
@@ -149,8 +149,8 @@ main(int argc, char *argv[]) {
pin = getpass("Enter Pin: "); pin = getpass("Enter Pin: ");
} }
result = pk11_get_session(&pctx, OP_ANY, false, true, result = pk11_get_session(&pctx, OP_ANY, ISC_FALSE, ISC_TRUE,
true, (const char *) pin, slot); ISC_TRUE, (const char *) pin, slot);
if (result == PK11_R_NORANDOMSERVICE || if (result == PK11_R_NORANDOMSERVICE ||
result == PK11_R_NODIGESTSERVICE || result == PK11_R_NODIGESTSERVICE ||
result == PK11_R_NOAESSERVICE) { result == PK11_R_NOAESSERVICE) {
+241 -10
View File
@@ -43,7 +43,7 @@
* Create a key in the keystore of an HSM * Create a key in the keystore of an HSM
* *
* The calculation of key tag is left to the script * The calculation of key tag is left to the script
* that converts the key into a DNSKEY RR and inserts * that converts the key into a DNSKEY RR and inserts
* it into a zone file. * it into a zone file.
* *
* usage: * usage:
@@ -71,6 +71,7 @@
#include <pk11/pk11.h> #include <pk11/pk11.h>
#include <pk11/result.h> #include <pk11/result.h>
#define WANT_DH_PRIMES
#include <pk11/constants.h> #include <pk11/constants.h>
#include <pkcs11/eddsa.h> #include <pkcs11/eddsa.h>
@@ -78,10 +79,12 @@
static CK_BBOOL truevalue = TRUE; static CK_BBOOL truevalue = TRUE;
static CK_BBOOL falsevalue = FALSE; static CK_BBOOL falsevalue = FALSE;
/* Key class: RSA, ECC, ECX, or unknown */ /* Key class: RSA, ECC, ECX, DSA, DH, or unknown */
typedef enum { typedef enum {
key_unknown, key_unknown,
key_rsa, key_rsa,
key_dsa,
key_dh,
key_ecc, key_ecc,
key_ecx key_ecx
} key_class_t; } key_class_t;
@@ -149,6 +152,78 @@ static CK_ATTRIBUTE ecc_template[] = {
{CKA_ID, NULL_PTR, 0} {CKA_ID, NULL_PTR, 0}
}; };
/*
* Public key template for DSA keys
*/
#define DSA_LABEL 0
#define DSA_VERIFY 1
#define DSA_TOKEN 2
#define DSA_PRIVATE 3
#define DSA_PRIME 4
#define DSA_SUBPRIME 5
#define DSA_BASE 6
#define DSA_ID 7
#define DSA_ATTRS 8
static CK_ATTRIBUTE dsa_template[] = {
{CKA_LABEL, NULL_PTR, 0},
{CKA_VERIFY, &truevalue, sizeof(truevalue)},
{CKA_TOKEN, &truevalue, sizeof(truevalue)},
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
{CKA_PRIME, NULL_PTR, 0},
{CKA_SUBPRIME, NULL_PTR, 0},
{CKA_BASE, NULL_PTR, 0},
{CKA_ID, NULL_PTR, 0}
};
#define DSA_PARAM_PRIME 0
#define DSA_PARAM_SUBPRIME 1
#define DSA_PARAM_BASE 2
#define DSA_PARAM_ATTRS 3
static CK_ATTRIBUTE dsa_param_template[] = {
{CKA_PRIME, NULL_PTR, 0},
{CKA_SUBPRIME, NULL_PTR, 0},
{CKA_BASE, NULL_PTR, 0},
};
#define DSA_DOMAIN_PRIMEBITS 0
#define DSA_DOMAIN_PRIVATE 1
#define DSA_DOMAIN_ATTRS 2
static CK_ATTRIBUTE dsa_domain_template[] = {
{CKA_PRIME_BITS, NULL_PTR, 0},
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
};
/*
* Public key template for DH keys
*/
#define DH_LABEL 0
#define DH_VERIFY 1
#define DH_TOKEN 2
#define DH_PRIVATE 3
#define DH_PRIME 4
#define DH_BASE 5
#define DH_ID 6
#define DH_ATTRS 7
static CK_ATTRIBUTE dh_template[] = {
{CKA_LABEL, NULL_PTR, 0},
{CKA_VERIFY, &truevalue, sizeof(truevalue)},
{CKA_TOKEN, &truevalue, sizeof(truevalue)},
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
{CKA_PRIME, NULL_PTR, 0},
{CKA_BASE, NULL_PTR, 0},
{CKA_ID, NULL_PTR, 0}
};
#define DH_PARAM_PRIME 0
#define DH_PARAM_BASE 1
#define DH_PARAM_ATTRS 2
static CK_ATTRIBUTE dh_param_template[] = {
{CKA_PRIME, NULL_PTR, 0},
{CKA_BASE, NULL_PTR, 0},
};
#define DH_DOMAIN_PRIMEBITS 0
#define DH_DOMAIN_ATTRS 1
static CK_ATTRIBUTE dh_domain_template[] = {
{CKA_PRIME_BITS, NULL_PTR, 0},
};
/* /*
* Convert from text to key class. Accepts the names of DNSSEC * Convert from text to key class. Accepts the names of DNSSEC
* signing algorithms, so e.g., ECDSAP256SHA256 maps to ECC and * signing algorithms, so e.g., ECDSAP256SHA256 maps to ECC and
@@ -162,6 +237,11 @@ keyclass_fromtext(const char *name) {
if (strncasecmp(name, "rsa", 3) == 0 || if (strncasecmp(name, "rsa", 3) == 0 ||
strncasecmp(name, "nsec3rsa", 8) == 0) strncasecmp(name, "nsec3rsa", 8) == 0)
return (key_rsa); return (key_rsa);
else if (strncasecmp(name, "dsa", 3) == 0 ||
strncasecmp(name, "nsec3dsa", 8) == 0)
return (key_dsa);
else if (strcasecmp(name, "dh") == 0)
return (key_dh);
else if (strncasecmp(name, "ecc", 3) == 0 || else if (strncasecmp(name, "ecc", 3) == 0 ||
strncasecmp(name, "ecdsa", 5) == 0) strncasecmp(name, "ecdsa", 5) == 0)
return (key_ecc); return (key_ecc);
@@ -199,7 +279,7 @@ main(int argc, char *argv[]) {
pk11_context_t pctx; pk11_context_t pctx;
int error = 0; int error = 0;
int c, errflg = 0; int c, errflg = 0;
int hide = 1, quiet = 0; int hide = 1, special = 0, quiet = 0;
int idlen = 0, id_offset = 0; int idlen = 0, id_offset = 0;
unsigned int i; unsigned int i;
unsigned long id = 0; unsigned long id = 0;
@@ -251,6 +331,9 @@ main(int argc, char *argv[]) {
case 'q': case 'q':
quiet = 1; quiet = 1;
break; break;
case 'S':
special = 1;
break;
case ':': case ':':
fprintf(stderr, fprintf(stderr,
"Option -%c requires an operand\n", "Option -%c requires an operand\n",
@@ -277,6 +360,12 @@ main(int argc, char *argv[]) {
exit(2); exit(2);
} }
if (special != 0 && keyclass != key_dh) {
fprintf(stderr, "The -S option is only compatible "
"with Diffie-Hellman key generation\n");
exit(2);
}
switch (keyclass) { switch (keyclass) {
case key_rsa: case key_rsa:
op_type = OP_RSA; op_type = OP_RSA;
@@ -372,10 +461,70 @@ main(int argc, char *argv[]) {
#endif #endif
break; break;
case key_dsa:
op_type = OP_DSA;
if (bits == 0)
usage();
dpmech.mechanism = CKM_DSA_PARAMETER_GEN;
dpmech.pParameter = NULL;
dpmech.ulParameterLen = 0;
mech.mechanism = CKM_DSA_KEY_PAIR_GEN;
mech.pParameter = NULL;
mech.ulParameterLen = 0;
public_template = dsa_template;
public_attrcnt = DSA_ATTRS;
id_offset = DSA_ID;
domain_template = dsa_domain_template;
domain_attrcnt = DSA_DOMAIN_ATTRS;
param_template = dsa_param_template;
param_attrcnt = DSA_PARAM_ATTRS;
domain_template[DSA_DOMAIN_PRIMEBITS].pValue = &bits;
domain_template[DSA_DOMAIN_PRIMEBITS].ulValueLen = sizeof(bits);
break;
case key_dh:
op_type = OP_DH;
if (special && bits == 0)
bits = 1024;
else if (special &&
bits != 768 && bits != 1024 && bits != 1536)
{
fprintf(stderr, "When using the special prime (-S) "
"option, only key sizes of\n"
"768, 1024 or 1536 are supported.\n");
exit(2);
} else if (bits == 0)
usage();
dpmech.mechanism = CKM_DH_PKCS_PARAMETER_GEN;
dpmech.pParameter = NULL;
dpmech.ulParameterLen = 0;
mech.mechanism = CKM_DH_PKCS_KEY_PAIR_GEN;
mech.pParameter = NULL;
mech.ulParameterLen = 0;
/* Override CKA_SIGN attribute */
private_template[PRIVATE_DERIVE].type = CKA_DERIVE;
public_template = dh_template;
public_attrcnt = DH_ATTRS;
id_offset = DH_ID;
domain_template = dh_domain_template;
domain_attrcnt = DH_DOMAIN_ATTRS;
param_template = dh_param_template;
param_attrcnt = DH_PARAM_ATTRS;
domain_template[DH_DOMAIN_PRIMEBITS].pValue = &bits;
domain_template[DH_DOMAIN_PRIMEBITS].ulValueLen = sizeof(bits);
break;
case key_unknown: case key_unknown:
usage(); usage();
} }
search_template[0].pValue = label; search_template[0].pValue = label;
search_template[0].ulValueLen = strlen((char *)label); search_template[0].ulValueLen = strlen((char *)label);
public_template[0].pValue = label; public_template[0].pValue = label;
@@ -414,8 +563,8 @@ main(int argc, char *argv[]) {
pin = getpass("Enter Pin: "); pin = getpass("Enter Pin: ");
} }
result = pk11_get_session(&pctx, op_type, false, true, result = pk11_get_session(&pctx, op_type, ISC_FALSE, ISC_TRUE,
true, (const char *) pin, slot); ISC_TRUE, (const char *) pin, slot);
if (result == PK11_R_NORANDOMSERVICE || if (result == PK11_R_NORANDOMSERVICE ||
result == PK11_R_NODIGESTSERVICE || result == PK11_R_NODIGESTSERVICE ||
result == PK11_R_NOAESSERVICE) { result == PK11_R_NOAESSERVICE) {
@@ -433,7 +582,7 @@ main(int argc, char *argv[]) {
hSession = pctx.session; hSession = pctx.session;
/* check if a key with the same id already exists */ /* check if a key with the same id already exists */
rv = pkcs_C_FindObjectsInit(hSession, search_template, 1); rv = pkcs_C_FindObjectsInit(hSession, search_template, 1);
if (rv != CKR_OK) { if (rv != CKR_OK) {
fprintf(stderr, "C_FindObjectsInit: Error = 0x%.8lX\n", rv); fprintf(stderr, "C_FindObjectsInit: Error = 0x%.8lX\n", rv);
error = 1; error = 1;
@@ -460,6 +609,29 @@ main(int argc, char *argv[]) {
if (keyclass == key_rsa || keyclass == key_ecc || keyclass == key_ecx) if (keyclass == key_rsa || keyclass == key_ecc || keyclass == key_ecx)
goto generate_keys; goto generate_keys;
/*
* Special setup for Diffie-Hellman keys
*/
if (special != 0) {
public_template[DH_BASE].pValue = pk11_dh_bn2;
public_template[DH_BASE].ulValueLen = sizeof(pk11_dh_bn2);
if (bits == 768) {
public_template[DH_PRIME].pValue = pk11_dh_bn768;
public_template[DH_PRIME].ulValueLen =
sizeof(pk11_dh_bn768);
} else if (bits == 1024) {
public_template[DH_PRIME].pValue = pk11_dh_bn1024;
public_template[DH_PRIME].ulValueLen =
sizeof(pk11_dh_bn1024);
} else {
public_template[DH_PRIME].pValue = pk11_dh_bn1536;
public_template[DH_PRIME].ulValueLen =
sizeof(pk11_dh_bn1536);
}
param_attrcnt = 0;
goto generate_keys;
}
/* Generate Domain parameters */ /* Generate Domain parameters */
rv = pkcs_C_GenerateKey(hSession, &dpmech, domain_template, rv = pkcs_C_GenerateKey(hSession, &dpmech, domain_template,
domain_attrcnt, &domainparams); domain_attrcnt, &domainparams);
@@ -479,7 +651,7 @@ main(int argc, char *argv[]) {
fprintf(stderr, fprintf(stderr,
"C_GetAttributeValue0: Error = 0x%.8lX\n", rv); "C_GetAttributeValue0: Error = 0x%.8lX\n", rv);
error = 1; error = 1;
goto exit_search; goto exit_domain;
} }
/* Allocate space for parameter attributes */ /* Allocate space for parameter attributes */
@@ -492,22 +664,81 @@ main(int argc, char *argv[]) {
if (param_template[i].pValue == NULL) { if (param_template[i].pValue == NULL) {
fprintf(stderr, "malloc failed\n"); fprintf(stderr, "malloc failed\n");
error = 1; error = 1;
goto exit_search; goto exit_params;
} }
} }
rv = pkcs_C_GetAttributeValue(hSession, domainparams,
dsa_param_template, DSA_PARAM_ATTRS);
if (rv != CKR_OK) {
fprintf(stderr,
"C_GetAttributeValue1: Error = 0x%.8lX\n", rv);
error = 1;
goto exit_params;
}
switch (keyclass) {
case key_dsa:
public_template[DSA_PRIME].pValue =
param_template[DSA_PARAM_PRIME].pValue;
public_template[DSA_PRIME].ulValueLen =
param_template[DSA_PARAM_PRIME].ulValueLen;
public_template[DSA_SUBPRIME].pValue =
param_template[DSA_PARAM_SUBPRIME].pValue;
public_template[DSA_SUBPRIME].ulValueLen =
param_template[DSA_PARAM_SUBPRIME].ulValueLen;
public_template[DSA_BASE].pValue =
param_template[DSA_PARAM_BASE].pValue;
public_template[DSA_BASE].ulValueLen =
param_template[DSA_PARAM_BASE].ulValueLen;
break;
case key_dh:
public_template[DH_PRIME].pValue =
param_template[DH_PARAM_PRIME].pValue;
public_template[DH_PRIME].ulValueLen =
param_template[DH_PARAM_PRIME].ulValueLen;
public_template[DH_BASE].pValue =
param_template[DH_PARAM_BASE].pValue;
public_template[DH_BASE].ulValueLen =
param_template[DH_PARAM_BASE].ulValueLen;
default:
break;
}
generate_keys: generate_keys:
/* Generate Key pair for signing/verifying */ /* Generate Key pair for signing/verifying */
rv = pkcs_C_GenerateKeyPair(hSession, &mech, rv = pkcs_C_GenerateKeyPair(hSession, &mech,
public_template, public_attrcnt, public_template, public_attrcnt,
private_template, private_attrcnt, private_template, private_attrcnt,
&publickey, &privatekey); &publickey, &privatekey);
if (rv != CKR_OK) { if (rv != CKR_OK) {
fprintf(stderr, "C_GenerateKeyPair: Error = 0x%.8lX\n", rv); fprintf(stderr, "C_GenerateKeyPair: Error = 0x%.8lX\n", rv);
error = 1; error = 1;
} else if (!quiet) } else if (!quiet)
printf("Key pair generation complete.\n"); printf("Key pair generation complete.\n");
exit_params:
/* Free parameter attributes */
if (keyclass == key_dsa || keyclass == key_dh) {
for (i = 0; i < param_attrcnt; i++) {
if (param_template[i].pValue != NULL) {
free(param_template[i].pValue);
}
}
}
exit_domain:
/* Destroy domain parameters */
if (keyclass == key_dsa || (keyclass == key_dh && !special)) {
rv = pkcs_C_DestroyObject(hSession, domainparams);
if (rv != CKR_OK) {
fprintf(stderr,
"C_DestroyObject: Error = 0x%.8lX\n", rv);
error = 1;
}
}
exit_search: exit_search:
rv = pkcs_C_FindObjectsFinal(hSession); rv = pkcs_C_FindObjectsFinal(hSession);
+4 -5
View File
@@ -41,7 +41,6 @@
#include <config.h> #include <config.h>
#include <stdio.h> #include <stdio.h>
#include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <fcntl.h> #include <fcntl.h>
#include <errno.h> #include <errno.h>
@@ -68,7 +67,7 @@ main(int argc, char *argv[]) {
char *lib_name = NULL; char *lib_name = NULL;
char *label = NULL; char *label = NULL;
char *pin = NULL; char *pin = NULL;
bool error = false, logon = true, all = false; isc_boolean_t error = ISC_FALSE, logon = ISC_TRUE, all = ISC_FALSE;
unsigned int i = 0, id = 0; unsigned int i = 0, id = 0;
int c, errflg = 0; int c, errflg = 0;
CK_ULONG ulObjectCount; CK_ULONG ulObjectCount;
@@ -79,7 +78,7 @@ main(int argc, char *argv[]) {
while ((c = isc_commandline_parse(argc, argv, ":m:s:i:l:p:P")) != -1) { while ((c = isc_commandline_parse(argc, argv, ":m:s:i:l:p:P")) != -1) {
switch (c) { switch (c) {
case 'P': case 'P':
logon = false; logon = ISC_FALSE;
break; break;
case 'm': case 'm':
lib_name = isc_commandline_argument; lib_name = isc_commandline_argument;
@@ -118,7 +117,7 @@ main(int argc, char *argv[]) {
} }
if (!id && (label == NULL)) if (!id && (label == NULL))
all = true; all = ISC_TRUE;
if (slot) if (slot)
printf("slot %lu\n", slot); printf("slot %lu\n", slot);
@@ -144,7 +143,7 @@ main(int argc, char *argv[]) {
pin = getpass("Enter Pin: "); pin = getpass("Enter Pin: ");
} }
result = pk11_get_session(&pctx, OP_ANY, false, false, result = pk11_get_session(&pctx, OP_ANY, ISC_FALSE, ISC_FALSE,
logon, pin, slot); logon, pin, slot);
if (result == PK11_R_NORANDOMSERVICE || if (result == PK11_R_NORANDOMSERVICE ||
result == PK11_R_NODIGESTSERVICE || result == PK11_R_NODIGESTSERVICE ||
+3 -3
View File
@@ -46,7 +46,7 @@ main(int argc, char *argv[]) {
lib_name = isc_commandline_argument; lib_name = isc_commandline_argument;
break; break;
case 'v': case 'v':
pk11_verbose_init = true; pk11_verbose_init = ISC_TRUE;
break; break;
case ':': case ':':
fprintf(stderr, "Option -%c requires an operand\n", fprintf(stderr, "Option -%c requires an operand\n",
@@ -78,8 +78,8 @@ main(int argc, char *argv[]) {
if (lib_name != NULL) if (lib_name != NULL)
pk11_set_lib_name(lib_name); pk11_set_lib_name(lib_name);
result = pk11_get_session(&pctx, OP_ANY, true, false, result = pk11_get_session(&pctx, OP_ANY, ISC_TRUE, ISC_FALSE,
false, NULL, 0); ISC_FALSE, NULL, 0);
if (result == PK11_R_NORANDOMSERVICE || if (result == PK11_R_NORANDOMSERVICE ||
result == PK11_R_NODIGESTSERVICE || result == PK11_R_NODIGESTSERVICE ||
result == PK11_R_NOAESSERVICE) { result == PK11_R_NOAESSERVICE) {
+2 -2
View File
@@ -70,7 +70,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
@@ -100,7 +100,7 @@
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile> <OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>

Some files were not shown because too many files have changed in this diff Show More