Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
816368c438 |
@@ -1,88 +0,0 @@
|
|||||||
;;; Directory Local Variables
|
|
||||||
;;; For more information see (info "(emacs) Directory Variables")
|
|
||||||
|
|
||||||
((c-mode .
|
|
||||||
((eval .
|
|
||||||
(set (make-local-variable 'directory-of-current-dir-locals-file)
|
|
||||||
(file-name-directory (locate-dominating-file default-directory ".dir-locals.el"))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(eval .
|
|
||||||
(set (make-local-variable 'include-directories)
|
|
||||||
(list
|
|
||||||
|
|
||||||
;; top directory
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "./"))
|
|
||||||
|
|
||||||
;; current directory
|
|
||||||
(expand-file-name (concat default-directory "./"))
|
|
||||||
|
|
||||||
;; libisc
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/unix/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/pthreads/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/include"))
|
|
||||||
|
|
||||||
;; libdns
|
|
||||||
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/dns/include"))
|
|
||||||
|
|
||||||
;; libisccc
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isccc/include"))
|
|
||||||
|
|
||||||
;; libisccfg
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isccfg/include"))
|
|
||||||
|
|
||||||
;; libns
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/ns/include"))
|
|
||||||
|
|
||||||
;; libirs
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/irs/include"))
|
|
||||||
|
|
||||||
;; libbind9
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/bind9/include"))
|
|
||||||
|
|
||||||
(expand-file-name "/usr/local/opt/openssl@1.1/include")
|
|
||||||
(expand-file-name "/usr/local/opt/libxml2/include/libxml2")
|
|
||||||
(expand-file-name "/usr/local/opt/json-c/include/json-c/")
|
|
||||||
(expand-file-name "/usr/local/include")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(eval setq flycheck-clang-include-path include-directories)
|
|
||||||
(eval setq flycheck-cppcheck-include-path include-directories)
|
|
||||||
(eval setq flycheck-gcc-include-path include-directories)
|
|
||||||
(eval setq flycheck-clang-args
|
|
||||||
(list
|
|
||||||
"-include"
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "config.h"))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(eval setq flycheck-gcc-args
|
|
||||||
(list
|
|
||||||
"-include"
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "config.h"))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
(eval setq flycheck-cppcheck-args
|
|
||||||
(list
|
|
||||||
"--enable=all"
|
|
||||||
"--suppress=missingIncludeSystem"
|
|
||||||
(concat "-include=" (expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "config.h")))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
))
|
|
||||||
+2
-1
@@ -1,2 +1,3 @@
|
|||||||
*.sln.in eol=crlf
|
*.sln.in eol=crlf
|
||||||
*.vcxproj.* eol=crlf
|
*.vcxproj.in eol=crlf
|
||||||
|
*.vcxproj.filters.in eol=crlf
|
||||||
|
|||||||
+26
-48
@@ -1,58 +1,36 @@
|
|||||||
*-symtbl.c
|
Makefile
|
||||||
*.a
|
config.log
|
||||||
*.gcda
|
config.h
|
||||||
*.gcno
|
config.cache
|
||||||
*.la
|
config.status
|
||||||
*.lo
|
libtool
|
||||||
*.o
|
/isc-config.sh
|
||||||
*.orig
|
/configure.lineno
|
||||||
*.plist/ # ccc-analyzer store its results in .plist directories
|
autom4te.cache/
|
||||||
*.rej
|
*.rej
|
||||||
|
*.orig
|
||||||
|
*.o
|
||||||
|
*.lo
|
||||||
*.so
|
*.so
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.gcno
|
||||||
|
*.gcda
|
||||||
*_test
|
*_test
|
||||||
*~
|
*-symtbl.c
|
||||||
|
timestamp
|
||||||
|
ans.run
|
||||||
|
named.run
|
||||||
|
named.memstats
|
||||||
|
gen.dSYM/
|
||||||
.ccache/
|
.ccache/
|
||||||
.cproject
|
|
||||||
.deps/
|
.deps/
|
||||||
.dirstamp
|
.dirstamp
|
||||||
.libs/
|
.libs/
|
||||||
|
# ccc-analyzer store its results in .plist directories
|
||||||
|
*.plist/
|
||||||
|
*~
|
||||||
.project
|
.project
|
||||||
|
.cproject
|
||||||
.settings
|
.settings
|
||||||
/aclocal.m4
|
|
||||||
/ar-lib
|
|
||||||
/autom4te.cache/
|
|
||||||
/bind.keys.h
|
|
||||||
/compile
|
|
||||||
/config.cache
|
|
||||||
/config.guess
|
|
||||||
/config.h
|
|
||||||
/config.h.in
|
|
||||||
/config.log
|
|
||||||
/config.status
|
|
||||||
/config.sub
|
|
||||||
/configure
|
|
||||||
/configure.lineno
|
|
||||||
/depcomp
|
|
||||||
/install-sh
|
|
||||||
/isc-config.sh
|
|
||||||
/libltdl/*
|
|
||||||
/libtool
|
|
||||||
/ltmain.sh
|
|
||||||
/m4/libtool.m4
|
|
||||||
/m4/ltargz.m4
|
|
||||||
/m4/ltdl.m4
|
|
||||||
/m4/ltoptions.m4
|
|
||||||
/m4/ltsugar.m4
|
|
||||||
/m4/ltversion.m4
|
|
||||||
/m4/lt~obsolete.m4
|
|
||||||
/missing
|
|
||||||
/py-compile
|
|
||||||
/stamp-h1
|
|
||||||
/test-driver
|
|
||||||
Makefile
|
|
||||||
ans.run
|
|
||||||
gen.dSYM/
|
|
||||||
kyua.log
|
kyua.log
|
||||||
named.memstats
|
|
||||||
named.run
|
|
||||||
timestamp
|
|
||||||
|
|||||||
+270
-515
@@ -1,225 +1,172 @@
|
|||||||
variables:
|
variables:
|
||||||
# Not normally needed, but may be if some script uses `apt-get install`.
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
# Locale settings do not affect the build, but might affect tests.
|
|
||||||
LC_ALL: C
|
LC_ALL: C
|
||||||
|
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"
|
SOFTHSM2_CONF: "/var/tmp/softhsm2/softhsm2.conf"
|
||||||
|
|
||||||
# VirtualBox driver needs to set build_dir to "/builds" in gitlab-runner.toml
|
|
||||||
KYUA_RESULT: "$CI_PROJECT_DIR/kyua.results"
|
|
||||||
|
|
||||||
BUILD_PARALLEL_JOBS: 6
|
|
||||||
TEST_PARALLEL_JOBS: 6
|
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- precheck
|
- precheck
|
||||||
- build
|
- build
|
||||||
- unit
|
- test
|
||||||
- system
|
|
||||||
- docs
|
|
||||||
- push
|
- push
|
||||||
|
|
||||||
### Runner Tag Templates
|
|
||||||
|
|
||||||
.linux-amd64: &linux_amd64
|
|
||||||
tags:
|
|
||||||
- linux
|
|
||||||
- amd64
|
|
||||||
|
|
||||||
.linux-i386: &linux_i386
|
|
||||||
tags:
|
|
||||||
- linux
|
|
||||||
- i386
|
|
||||||
|
|
||||||
### Docker Image Templates
|
|
||||||
|
|
||||||
# Alpine Linux
|
|
||||||
|
|
||||||
.alpine-3.10-amd64: &alpine_3_10_amd64_image
|
|
||||||
image: "$CI_REGISTRY_IMAGE:alpine-3.10-amd64"
|
|
||||||
<<: *linux_amd64
|
|
||||||
|
|
||||||
# CentOS
|
|
||||||
|
|
||||||
.centos-centos6-amd64: ¢os_centos6_amd64_image
|
.centos-centos6-amd64: ¢os_centos6_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64"
|
image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.centos-centos7-amd64: ¢os_centos7_amd64_image
|
.centos-centos7-amd64: ¢os_centos7_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:centos-centos7-amd64"
|
image: "$CI_REGISTRY_IMAGE:centos-centos7-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
# Debian
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.debian-jessie-amd64: &debian_jessie_amd64_image
|
.debian-jessie-amd64: &debian_jessie_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
|
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
|
.debian-jessie-i386: &debian_jessie_i386_image
|
||||||
|
image: "$CI_REGISTRY_IMAGE:debian-jessie-i386"
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- i386
|
||||||
|
|
||||||
.debian-stretch-amd64: &debian_stretch_amd64_image
|
.debian-stretch-amd64: &debian_stretch_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-stretch-amd64"
|
image: "$CI_REGISTRY_IMAGE:debian-stretch-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.debian-stretch-i386: &debian_stretch_i386_image
|
.debian-stretch-i386:: &debian_stretch_i386_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-stretch-i386"
|
image: "$CI_REGISTRY_IMAGE:debian-stretch-i386"
|
||||||
<<: *linux_i386
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- i386
|
||||||
|
|
||||||
.debian-buster-amd64: &debian_buster_amd64_image
|
.debian-buster-amd64: &debian_buster_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-buster-amd64"
|
image: "$CI_REGISTRY_IMAGE:debian-buster-amd64"
|
||||||
<<: *linux_i386
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
|
.debian-buster-i386:: &debian_buster_i386_image
|
||||||
|
image: "$CI_REGISTRY_IMAGE:debian-buster-i386"
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- i386
|
||||||
|
|
||||||
.debian-sid-amd64: &debian_sid_amd64_image
|
.debian-sid-amd64: &debian_sid_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-sid-amd64"
|
image: "$CI_REGISTRY_IMAGE:debian-sid-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.debian-sid-i386: &debian_sid_i386_image
|
.debian-sid-i386: &debian_sid_i386_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-sid-i386"
|
image: "$CI_REGISTRY_IMAGE:debian-sid-i386"
|
||||||
<<: *linux_i386
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- i386
|
||||||
|
|
||||||
# Fedora
|
.ubuntu-trusty-amd64: &ubuntu_trusty_amd64_image
|
||||||
|
image: "$CI_REGISTRY_IMAGE:ubuntu-trusty-amd64"
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.fedora-30-amd64: &fedora_30_amd64_image
|
.ubuntu-trusty-i386: &ubuntu_trusty_i386_image
|
||||||
image: "$CI_REGISTRY_IMAGE:fedora-30-amd64"
|
image: "$CI_REGISTRY_IMAGE:ubuntu-trusty-i386"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
# Ubuntu
|
- docker
|
||||||
|
- i386
|
||||||
|
|
||||||
.ubuntu-xenial-amd64: &ubuntu_xenial_amd64_image
|
.ubuntu-xenial-amd64: &ubuntu_xenial_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-amd64"
|
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-amd64"
|
||||||
<<: *linux_amd64
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.ubuntu-xenial-i386: &ubuntu_xenial_i386_image
|
.ubuntu-xenial-i386: &ubuntu_xenial_i386_image
|
||||||
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-i386"
|
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-i386"
|
||||||
<<: *linux_i386
|
tags:
|
||||||
|
- linux
|
||||||
.ubuntu-bionic-amd64: &ubuntu_bionic_amd64_image
|
- docker
|
||||||
image: "$CI_REGISTRY_IMAGE:ubuntu-bionic-amd64"
|
- i386
|
||||||
<<: *linux_amd64
|
|
||||||
|
|
||||||
.ubuntu-bionic-i386: &ubuntu_bionic_i386_image
|
|
||||||
image: "$CI_REGISTRY_IMAGE:ubuntu-bionic-i386"
|
|
||||||
<<: *linux_i386
|
|
||||||
|
|
||||||
### Job Templates
|
|
||||||
|
|
||||||
.default-triggering-rules: &default_triggering_rules
|
|
||||||
only:
|
|
||||||
- merge_requests
|
|
||||||
- tags
|
|
||||||
- web
|
|
||||||
|
|
||||||
.precheck: &precheck_job
|
|
||||||
<<: *default_triggering_rules
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
stage: precheck
|
|
||||||
|
|
||||||
.autoconf: &autoconf_job
|
|
||||||
<<: *default_triggering_rules
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
stage: precheck
|
|
||||||
script:
|
|
||||||
- autoreconf -fi
|
|
||||||
artifacts:
|
|
||||||
untracked: true
|
|
||||||
expire_in: "1 hour"
|
|
||||||
|
|
||||||
.configure: &configure |
|
|
||||||
./configure \
|
|
||||||
--disable-maintainer-mode \
|
|
||||||
--enable-developer \
|
|
||||||
--with-libtool \
|
|
||||||
--disable-static \
|
|
||||||
--with-cmocka \
|
|
||||||
--with-libxml2 \
|
|
||||||
--with-json-c \
|
|
||||||
--prefix=$HOME/.local \
|
|
||||||
--without-make-clean \
|
|
||||||
$EXTRA_CONFIGURE \
|
|
||||||
|| cat config.log
|
|
||||||
|
|
||||||
.build: &build_job
|
.build: &build_job
|
||||||
<<: *default_triggering_rules
|
|
||||||
stage: build
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
||||||
|
# - ./autogen.sh
|
||||||
script:
|
script:
|
||||||
- *configure
|
- ./configure --enable-developer --with-libtool --disable-static --with-cmocka --prefix=$HOME/.local --without-make-clean $EXTRA_CONFIGURE || cat config.log
|
||||||
- make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
|
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
|
||||||
- test -z "${RUN_MAKE_INSTALL}" || make install
|
|
||||||
dependencies:
|
|
||||||
- autoreconf:sid:amd64
|
|
||||||
needs:
|
|
||||||
- autoreconf:sid:amd64
|
|
||||||
artifacts:
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- doc/
|
||||||
|
expire_in: '1 hour'
|
||||||
untracked: true
|
untracked: true
|
||||||
expire_in: "1 hour"
|
|
||||||
|
|
||||||
.setup_interfaces: &setup_interfaces |
|
.install_test: &install_test_job
|
||||||
if [ "$(id -u)" -eq "0" ]; then
|
stage: test
|
||||||
sh -x bin/tests/system/ifconfig.sh up;
|
before_script:
|
||||||
else
|
- mkdir $HOME/.local
|
||||||
sudo sh -x bin/tests/system/ifconfig.sh up;
|
script:
|
||||||
fi
|
- make install
|
||||||
|
|
||||||
.setup_softhsm: &setup_softhsm |
|
|
||||||
sh -x util/prepare-softhsm2.sh
|
|
||||||
|
|
||||||
.system_test: &system_test_job
|
.system_test: &system_test_job
|
||||||
<<: *default_triggering_rules
|
stage: test
|
||||||
stage: system
|
|
||||||
retry: 2
|
|
||||||
before_script:
|
before_script:
|
||||||
- *setup_interfaces
|
- rm -rf .ccache
|
||||||
- *setup_softhsm
|
- bash -x bin/tests/system/ifconfig.sh up
|
||||||
|
- bash -x util/prepare-softhsm2.sh
|
||||||
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
|
||||||
artifacts:
|
artifacts:
|
||||||
untracked: true
|
untracked: true
|
||||||
expire_in: "1 week"
|
expire_in: '1 week'
|
||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
.kyua_report: &kyua_report_html |
|
|
||||||
kyua report-html \
|
|
||||||
--force \
|
|
||||||
--results-file "$KYUA_RESULT" \
|
|
||||||
--results-filter "" \
|
|
||||||
--output kyua_html
|
|
||||||
|
|
||||||
.unit_test: &unit_test_job
|
.unit_test: &unit_test_job
|
||||||
<<: *default_triggering_rules
|
stage: test
|
||||||
stage: unit
|
|
||||||
before_script:
|
before_script:
|
||||||
- *setup_softhsm
|
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
|
||||||
|
- bash -x util/prepare-softhsm2.sh
|
||||||
script:
|
script:
|
||||||
- make unit
|
- make unit
|
||||||
after_script:
|
after_script:
|
||||||
- *kyua_report_html
|
- kyua report-html --force --results-file kyua.results --results-filter "" --output kyua_html
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- kyua.log
|
- kyua.log
|
||||||
- kyua.results
|
- kyua.results
|
||||||
- kyua_html/
|
- kyua_html/
|
||||||
expire_in: "1 week"
|
expire_in: '1 week'
|
||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
### Job Definitions
|
sid:amd64:precheck:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
# Jobs in the precheck stage
|
stage: precheck
|
||||||
|
|
||||||
autoreconf:sid:amd64:
|
|
||||||
<<: *autoconf_job
|
|
||||||
|
|
||||||
misc:sid:amd64:
|
|
||||||
<<: *precheck_job
|
|
||||||
script:
|
script:
|
||||||
- sh util/check-ans-prereq.sh
|
|
||||||
- sh util/checklibs.sh > checklibs.out
|
- sh util/checklibs.sh > checklibs.out
|
||||||
- sh util/tabify-changes < CHANGES > CHANGES.tmp
|
|
||||||
- diff -urNap CHANGES CHANGES.tmp
|
|
||||||
- rm CHANGES.tmp
|
|
||||||
- perl util/check-changes CHANGES
|
- perl util/check-changes CHANGES
|
||||||
- perl -w util/merge_copyrights
|
- perl -w util/merge_copyrights
|
||||||
- diff -urNap util/copyrights util/newcopyrights
|
- diff -urNap util/copyrights util/newcopyrights
|
||||||
@@ -228,45 +175,32 @@ misc:sid:amd64:
|
|||||||
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
|
- 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'`
|
||||||
- sh util/check-win32util-configure
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- util/newcopyrights
|
- util/newcopyrights
|
||||||
- checklibs.out
|
- checklibs.out
|
||||||
expire_in: "1 week"
|
expire_in: '1 week'
|
||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
🐞:sid:amd64:
|
🐞:sid:amd64:precheck:
|
||||||
<<: *precheck_job
|
<<: *debian_sid_amd64_image
|
||||||
script:
|
stage: precheck
|
||||||
- util/check-cocci
|
script: util/check-cocci
|
||||||
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
|
|
||||||
|
|
||||||
# Jobs for doc builds on Debian Sid (amd64)
|
|
||||||
|
|
||||||
docs:sid:amd64:
|
docs:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
stage: docs
|
stage: test
|
||||||
|
dependencies:
|
||||||
|
- sid:amd64:build
|
||||||
script:
|
script:
|
||||||
- ./configure || cat config.log
|
|
||||||
- make -C doc/misc docbook
|
- make -C doc/misc docbook
|
||||||
- make -C doc/arm Bv9ARM.html
|
- make -C doc/arm Bv9ARM.html
|
||||||
dependencies:
|
|
||||||
- autoreconf:sid:amd64
|
|
||||||
needs:
|
|
||||||
- autoreconf:sid:amd64
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- doc/arm/
|
- doc/arm/
|
||||||
expire_in: "1 month"
|
expire_in: '1 month'
|
||||||
only:
|
|
||||||
- merge_requests
|
|
||||||
- tags
|
|
||||||
- web
|
|
||||||
- master@isc-projects/bind9
|
|
||||||
- /^v9_[1-9][0-9]$/@isc-projects/bind9
|
|
||||||
|
|
||||||
push:docs:sid:amd64:
|
docs:push:
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
stage: push
|
stage: push
|
||||||
dependencies: []
|
dependencies: []
|
||||||
@@ -274,35 +208,33 @@ push:docs:sid:amd64:
|
|||||||
- curl -X POST -F token=$GITLAB_PAGES_DOCS_TRIGGER_TOKEN -F ref=master $GITLAB_PAGES_DOCS_TRIGGER_URL
|
- curl -X POST -F token=$GITLAB_PAGES_DOCS_TRIGGER_TOKEN -F ref=master $GITLAB_PAGES_DOCS_TRIGGER_URL
|
||||||
only:
|
only:
|
||||||
- master@isc-projects/bind9
|
- master@isc-projects/bind9
|
||||||
- /^v9_[1-9][0-9]$/@isc-projects/bind9
|
- /^v9_.*$/@isc-projects/bind9
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Alpine Linux 3.10 (amd64)
|
#jessie:amd64:build:
|
||||||
|
# <<: *debian_jessie_amd64_image
|
||||||
|
# <<: *build_job
|
||||||
|
#
|
||||||
|
#build:jessie:i386:
|
||||||
|
# <<: *debian_jessie_i386_image
|
||||||
|
# <<: *build_job
|
||||||
|
#
|
||||||
|
#build:stretch:amd64:
|
||||||
|
# <<: *debian_stretch_amd64_image
|
||||||
|
# <<: *build_job
|
||||||
|
#
|
||||||
|
#build:debian:buster:i386:
|
||||||
|
# <<: *debian_buster_i386_image
|
||||||
|
# <<: *build_job
|
||||||
|
#
|
||||||
|
#build:ubuntu:trusty:amd64:
|
||||||
|
# <<: *ubuntu_trusty_amd64_image
|
||||||
|
# <<: *build_job
|
||||||
|
#
|
||||||
|
#build:ubuntu:xenial:i386:
|
||||||
|
# <<: *ubuntu_xenial_i386_image
|
||||||
|
# <<: *build_job
|
||||||
|
|
||||||
gcc:alpine3.10:amd64:
|
centos6:amd64:build:
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
|
||||||
EXTRA_CONFIGURE: "--enable-dnstap"
|
|
||||||
<<: *alpine_3_10_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:alpine3.10:amd64:
|
|
||||||
<<: *alpine_3_10_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:alpine3.10:amd64
|
|
||||||
needs: ["gcc:alpine3.10:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:alpine3.10:amd64:
|
|
||||||
<<: *alpine_3_10_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:alpine3.10:amd64
|
|
||||||
needs: ["gcc:alpine3.10:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on CentOS 6 (amd64)
|
|
||||||
|
|
||||||
gcc:centos6:amd64:
|
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
@@ -310,238 +242,45 @@ gcc:centos6:amd64:
|
|||||||
<<: *centos_centos6_amd64_image
|
<<: *centos_centos6_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:gcc:centos6:amd64:
|
centos7:amd64:build:
|
||||||
<<: *centos_centos6_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:centos6:amd64
|
|
||||||
needs: ["gcc:centos6:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:centos6:amd64:
|
|
||||||
<<: *centos_centos6_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:centos6:amd64
|
|
||||||
needs: ["gcc:centos6:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on CentOS 7 (amd64)
|
|
||||||
|
|
||||||
gcc:centos7:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
|
||||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
|
|
||||||
<<: *centos_centos7_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:centos7:amd64:
|
|
||||||
<<: *centos_centos7_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:centos7:amd64
|
|
||||||
needs: ["gcc:centos7:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:centos7:amd64:
|
|
||||||
<<: *centos_centos7_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:centos7:amd64
|
|
||||||
needs: ["gcc:centos7:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Debian 8 Jessie (amd64)
|
|
||||||
|
|
||||||
gcc:jessie:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
|
||||||
EXTRA_CONFIGURE: "--without-cmocka --with-python --disable-geoip"
|
|
||||||
<<: *debian_jessie_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:jessie:amd64:
|
|
||||||
<<: *debian_jessie_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:jessie:amd64
|
|
||||||
needs: ["gcc:jessie:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:jessie:amd64:
|
|
||||||
<<: *debian_jessie_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:jessie:amd64
|
|
||||||
needs: ["gcc:jessie:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Debian 9 Stretch (amd64)
|
|
||||||
|
|
||||||
gcc:stretch:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
|
||||||
<<: *debian_stretch_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:stretch:amd64:
|
|
||||||
<<: *debian_stretch_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:stretch:amd64
|
|
||||||
needs: ["gcc:stretch:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:stretch:amd64:
|
|
||||||
<<: *debian_stretch_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:stretch:amd64
|
|
||||||
needs: ["gcc:stretch:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Debian 10 Buster (amd64)
|
|
||||||
|
|
||||||
gcc:buster:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
|
||||||
<<: *debian_buster_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:buster:amd64:
|
|
||||||
<<: *debian_buster_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:buster:amd64
|
|
||||||
needs: ["gcc:buster:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:buster:amd64:
|
|
||||||
<<: *debian_buster_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:buster:amd64
|
|
||||||
needs: ["gcc:buster:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Debian Sid (amd64)
|
|
||||||
|
|
||||||
gcc:sid:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O3 -g"
|
|
||||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
|
|
||||||
RUN_MAKE_INSTALL: 1
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:sid:amd64
|
|
||||||
needs: ["gcc:sid:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:sid:amd64
|
|
||||||
needs: ["gcc:sid:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Debian Sid (i386)
|
|
||||||
|
|
||||||
gcc:sid:i386:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O3 -g"
|
|
||||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2 --without-python"
|
|
||||||
<<: *debian_sid_i386_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:gcc:sid:i386:
|
|
||||||
<<: *debian_sid_i386_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:sid:i386
|
|
||||||
needs: ["gcc:sid:i386"]
|
|
||||||
|
|
||||||
unit:gcc:sid:i386:
|
|
||||||
<<: *debian_sid_i386_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:sid:i386
|
|
||||||
needs: ["gcc:sid:i386"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Fedora 30 (amd64)
|
|
||||||
|
|
||||||
gcc:fedora30:amd64:
|
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
EXTRA_CONFIGURE: "--with-libidn2"
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *fedora_30_amd64_image
|
<<: *centos_centos7_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:gcc:fedora30:amd64:
|
clang:stretch:amd64:build:
|
||||||
<<: *fedora_30_amd64_image
|
variables:
|
||||||
<<: *system_test_job
|
CC: clang
|
||||||
dependencies:
|
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||||
- gcc:fedora30:amd64
|
<<: *debian_stretch_amd64_image
|
||||||
needs: ["gcc:fedora30:amd64"]
|
<<: *build_job
|
||||||
|
|
||||||
unit:gcc:fedora30:amd64:
|
jessie:amd64:build:
|
||||||
<<: *fedora_30_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:fedora30:amd64
|
|
||||||
needs: ["gcc:fedora30:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Ubuntu 16.04 Xenial Xerus (amd64)
|
|
||||||
|
|
||||||
gcc:xenial:amd64:
|
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
EXTRA_CONFIGURE: "--disable-geoip"
|
EXTRA_CONFIGURE: --without-cmocka
|
||||||
<<: *ubuntu_xenial_amd64_image
|
<<: *debian_jessie_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:gcc:xenial:amd64:
|
stretch:amd64:build:
|
||||||
<<: *ubuntu_xenial_amd64_image
|
variables:
|
||||||
<<: *system_test_job
|
CC: gcc
|
||||||
dependencies:
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
- gcc:xenial:amd64
|
<<: *debian_stretch_amd64_image
|
||||||
needs: ["gcc:xenial:amd64"]
|
<<: *build_job
|
||||||
|
|
||||||
unit:gcc:xenial:amd64:
|
sid:amd64:build:
|
||||||
<<: *ubuntu_xenial_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:xenial:amd64
|
|
||||||
needs: ["gcc:xenial:amd64"]
|
|
||||||
|
|
||||||
# Jobs for regular GCC builds on Ubuntu 18.04 Bionic Beaver (amd64)
|
|
||||||
|
|
||||||
gcc:bionic:amd64:
|
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
EXTRA_CONFIGURE: "--with-libidn2"
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *ubuntu_bionic_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:gcc:bionic:amd64:
|
asan:sid:amd64:build:
|
||||||
<<: *ubuntu_bionic_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:bionic:amd64
|
|
||||||
needs: ["gcc:bionic:amd64"]
|
|
||||||
|
|
||||||
unit:gcc:bionic:amd64:
|
|
||||||
<<: *ubuntu_bionic_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- gcc:bionic:amd64
|
|
||||||
needs: ["gcc:bionic:amd64"]
|
|
||||||
|
|
||||||
# Jobs for GCC builds with ASAN enabled on Debian Sid (amd64)
|
|
||||||
|
|
||||||
asan:sid:amd64:
|
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0"
|
CFLAGS: "-Wall -Wextra -O2 -g -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0"
|
||||||
@@ -550,96 +289,118 @@ asan:sid:amd64:
|
|||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:asan:sid:amd64:
|
clang:stretch:i386:build:
|
||||||
<<: *debian_sid_amd64_image
|
variables:
|
||||||
<<: *system_test_job
|
CC: clang
|
||||||
|
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||||
|
<<: *debian_stretch_i386_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
|
sid:i386:build:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
|
<<: *debian_sid_i386_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
|
unit:centos6:amd64:
|
||||||
|
<<: *centos_centos6_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- asan:sid:amd64
|
- centos6:amd64:build
|
||||||
needs: ["asan:sid:amd64"]
|
|
||||||
|
unit:centos7:amd64:
|
||||||
|
<<: *centos_centos7_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- centos7:amd64:build
|
||||||
|
|
||||||
|
unit:jessie:amd64:
|
||||||
|
<<: *debian_jessie_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- jessie:amd64:build
|
||||||
|
|
||||||
|
unit:stretch:amd64:
|
||||||
|
<<: *debian_stretch_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- stretch:amd64:build
|
||||||
|
|
||||||
|
unit:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- sid:amd64:build
|
||||||
|
|
||||||
unit:asan:sid:amd64:
|
unit:asan:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *unit_test_job
|
<<: *unit_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- asan:sid:amd64
|
- asan:sid:amd64:build
|
||||||
needs: ["asan:sid:amd64"]
|
|
||||||
|
|
||||||
rwlock:sid:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g -DISC_MEM_USE_INTERNAL_MALLOC=0"
|
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 --enable-pthread-rwlock"
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
system:rwlock:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- rwlock:sid:amd64
|
|
||||||
needs: ["rwlock:sid:amd64"]
|
|
||||||
|
|
||||||
unit:rwlock:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *unit_test_job
|
|
||||||
dependencies:
|
|
||||||
- rwlock:sid:amd64
|
|
||||||
needs: ["rwlock:sid:amd64"]
|
|
||||||
|
|
||||||
# Jobs for mutex-based atomics on Debian SID (amd64)
|
|
||||||
mutexatomics:sid:amd64:
|
|
||||||
variables:
|
|
||||||
CC: gcc
|
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g -DISC_MEM_USE_INTERNAL_MALLOC=0"
|
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 --enable-mutex-atomics"
|
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
#system:mutexatomics:sid:amd64:
|
|
||||||
# <<: *debian_sid_amd64_image
|
|
||||||
# <<: *system_test_job
|
|
||||||
# dependencies:
|
|
||||||
# - mutexatomics:sid:amd64
|
|
||||||
# - mutexatomics:sid:amd64
|
|
||||||
# allow_failure: true
|
|
||||||
|
|
||||||
#unit:mutexatomics:sid:amd64:
|
|
||||||
# <<: *debian_sid_amd64_image
|
|
||||||
# <<: *unit_test_job
|
|
||||||
# dependencies:
|
|
||||||
# - mutexatomics:sid:amd64
|
|
||||||
# allow_failure: true
|
|
||||||
|
|
||||||
# Jobs for Clang builds on Debian Stretch (amd64)
|
|
||||||
|
|
||||||
clang:stretch:amd64:
|
|
||||||
variables:
|
|
||||||
CC: clang
|
|
||||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
|
||||||
EXTRA_CONFIGURE: "--with-python=python3"
|
|
||||||
<<: *debian_stretch_amd64_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
unit:clang:stretch:amd64:
|
unit:clang:stretch:amd64:
|
||||||
<<: *debian_stretch_amd64_image
|
<<: *debian_stretch_amd64_image
|
||||||
<<: *unit_test_job
|
<<: *unit_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- clang:stretch:amd64
|
- clang:stretch:amd64:build
|
||||||
needs: ["clang:stretch:amd64"]
|
|
||||||
|
|
||||||
# Jobs for Clang builds on Debian Stretch (i386)
|
unit:sid:i386:
|
||||||
|
<<: *debian_sid_i386_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- sid:i386:build
|
||||||
|
|
||||||
clang:stretch:i386:
|
system:centos6:amd64:
|
||||||
variables:
|
<<: *centos_centos6_amd64_image
|
||||||
CC: clang
|
<<: *system_test_job
|
||||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
dependencies:
|
||||||
EXTRA_CONFIGURE: "--with-python=python2"
|
- centos6:amd64:build
|
||||||
<<: *debian_stretch_i386_image
|
|
||||||
<<: *build_job
|
|
||||||
|
|
||||||
# Jobs for PKCS#11-enabled GCC builds on Debian Sid (amd64)
|
system:centos7:amd64:
|
||||||
|
<<: *centos_centos7_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- centos7:amd64:build
|
||||||
|
|
||||||
pkcs11:sid:amd64:
|
system:jessie:amd64:
|
||||||
|
<<: *debian_jessie_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- jessie:amd64:build
|
||||||
|
|
||||||
|
system:stretch:amd64:
|
||||||
|
<<: *debian_stretch_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- stretch:amd64:build
|
||||||
|
|
||||||
|
system:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- sid:amd64:build
|
||||||
|
|
||||||
|
system:asan:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- asan:sid:amd64:build
|
||||||
|
|
||||||
|
system:sid:i386:
|
||||||
|
<<: *debian_sid_i386_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- sid:i386:build
|
||||||
|
|
||||||
|
install:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *install_test_job
|
||||||
|
dependencies:
|
||||||
|
- sid:amd64:build
|
||||||
|
|
||||||
|
pkcs11:sid:amd64:build:
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
@@ -647,40 +408,34 @@ pkcs11:sid:amd64:
|
|||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:pkcs11:sid:amd64:
|
pkcs11:unit:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- pkcs11:sid:amd64
|
|
||||||
needs: ["pkcs11:sid:amd64"]
|
|
||||||
|
|
||||||
unit:pkcs11:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *unit_test_job
|
<<: *unit_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- pkcs11:sid:amd64
|
- pkcs11:sid:amd64:build
|
||||||
needs: ["pkcs11:sid:amd64"]
|
|
||||||
|
|
||||||
# Jobs with libtool disabled
|
pkcs11:system:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- pkcs11:sid:amd64:build
|
||||||
|
|
||||||
nolibtool:sid:amd64:
|
noassert:sid:amd64:build:
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -Og -g"
|
CFLAGS: "-Wall -Wextra -O2 -g -DISC_CHECK_NONE=1"
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 --without-libtool --with-dlopen"
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
system:nolibtool:sid:amd64:
|
noassert:unit:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
|
||||||
<<: *system_test_job
|
|
||||||
dependencies:
|
|
||||||
- nolibtool:sid:amd64
|
|
||||||
needs: ["nolibtool:sid:amd64"]
|
|
||||||
|
|
||||||
unit:nolibtool:sid:amd64:
|
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *unit_test_job
|
<<: *unit_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- nolibtool:sid:amd64
|
- noassert:sid:amd64:build
|
||||||
needs: ["nolibtool:sid:amd64"]
|
|
||||||
|
noassert:system:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- noassert:sid:amd64:build
|
||||||
|
|||||||
@@ -39,9 +39,6 @@
|
|||||||
- [ ] Update tickets in case of waiting support customers.
|
- [ ] Update tickets in case of waiting support customers.
|
||||||
|
|
||||||
## Marketing
|
## Marketing
|
||||||
- [ ] Update BIND Product page if needed
|
- [ ] Post short note to Twitter.
|
||||||
- [ ] Update BIND Significant Features Matrix in KB if needed
|
|
||||||
- [ ] Update BIND -S Edition data sheet if S Edition feature change
|
|
||||||
- [ ] Announce on social media
|
|
||||||
- [ ] Update [Wikipedia entry for BIND](http://en.wikipedia.org/wiki/BIND).
|
- [ ] Update [Wikipedia entry for BIND](http://en.wikipedia.org/wiki/BIND).
|
||||||
- [ ] Write blog article (if a major release).
|
- [ ] Write blog article (if a major release).
|
||||||
|
|||||||
@@ -1,598 +1,10 @@
|
|||||||
5280. [protocol] Add support for displaying EDNS option LLQ. [GL #1201]
|
|
||||||
|
|
||||||
5279. [bug] When loading, reject zones containing CDS or CDNSKEY
|
|
||||||
RRsets at the zone apex if they would cause DNSSEC
|
|
||||||
validation failures if published in the parent zone
|
|
||||||
as the DS RRset. [GL #1187]
|
|
||||||
|
|
||||||
5278. [func] Add YAML output formats for dig, mdig and delv;
|
|
||||||
use the "+yaml" option to enable. [GL #1145]
|
|
||||||
|
|
||||||
--- 9.15.3 released ---
|
|
||||||
|
|
||||||
5277. [bug] Cache DB statistics could underflow when serve-stale
|
|
||||||
was in use, because of a bug in counter maintenance
|
|
||||||
when RRsets become stale.
|
|
||||||
|
|
||||||
Functions for dumping statistics have been updated
|
|
||||||
to dump active, stale, and ancient statistic
|
|
||||||
counters. Ancient RRset counters are prefixed
|
|
||||||
with '~'; stale RRset counters are still prefixed
|
|
||||||
with '#'. [GL #602]
|
|
||||||
|
|
||||||
5276. [func] DNSSEC Lookaside Validation (DLV) is now obsolete;
|
|
||||||
all code enabling its use has been removed from the
|
|
||||||
validator, "delv", and the DNSSEC tools. [GL #7]
|
|
||||||
|
|
||||||
5275. [bug] Mark DS records included in referral messages
|
|
||||||
with trust level "pending" so that they can be
|
|
||||||
validated and cached immediately, with no need to
|
|
||||||
re-query. [GL #964]
|
|
||||||
|
|
||||||
5274. [bug] Address potential use after free race when shutting
|
|
||||||
down rpz. [GL #1175]
|
|
||||||
|
|
||||||
5273. [bug] Check that bits [64..71] of a dns64 prefix are zero.
|
|
||||||
[GL #1159]
|
|
||||||
|
|
||||||
5272. [cleanup] Remove isc-config.sh script as the BIND 9 libraries
|
|
||||||
are now purely internal. [GL #1123]
|
|
||||||
|
|
||||||
5271. [func] The normal (non-debugging) output of dnssec-signzone
|
|
||||||
and dnssec-verify tools now goes to stdout, instead of
|
|
||||||
the combination of stderr and stdout.
|
|
||||||
|
|
||||||
5270. [bug] 'dig +expandaaaa +short' did not work. [GL #1152]
|
|
||||||
|
|
||||||
5269. [port] cygwin: can return ETIMEDOUT on connect() with a
|
|
||||||
non-blocking socket. [GL #1133]
|
|
||||||
|
|
||||||
5268. [placeholder]
|
|
||||||
|
|
||||||
5267. [func] Allow statistics groups display to be toggleable.
|
|
||||||
[GL #1030]
|
|
||||||
|
|
||||||
5266. [bug] named-checkconf failed to report dnstap-output
|
|
||||||
missing from named.conf when dnstap was specified.
|
|
||||||
[GL #1136]
|
|
||||||
|
|
||||||
5265. [bug] DNS64 and RPZ nodata (CNAME *.) rules interacted badly
|
|
||||||
[GL #1106]
|
|
||||||
|
|
||||||
5264. [func] New DNS Cookie algorithm - siphash24 - has been added
|
|
||||||
to BIND 9, and the old HMAC-SHA DNS Cookie algorithms
|
|
||||||
have been removed. [GL #605]
|
|
||||||
|
|
||||||
--- 9.15.2 released ---
|
|
||||||
|
|
||||||
5263. [cleanup] Use atomics and isc_refcount_t wherever possible.
|
|
||||||
[GL #1038]
|
|
||||||
|
|
||||||
5262. [func] Removed support for the legacy GeoIP API. [GL #1112]
|
|
||||||
|
|
||||||
5261. [cleanup] Remove SO_BSDCOMPAT socket option usage.
|
|
||||||
|
|
||||||
5260. [bug] dnstap-read was producing malformed output for large
|
|
||||||
packets. [GL #1093]
|
|
||||||
|
|
||||||
5259. [func] New option '-i' for 'named-checkconf' to ignore
|
|
||||||
warnings about deprecated options. [GL #1101]
|
|
||||||
|
|
||||||
5258. [func] Added support for the GeoIP2 API from MaxMind. This
|
|
||||||
will be compiled in by default if the "libmaxminddb"
|
|
||||||
library is found at compile time, but can be
|
|
||||||
suppressed using "configure --disable-geoip".
|
|
||||||
|
|
||||||
Certain geoip ACL settings that were available with
|
|
||||||
legacy GeoIP are not available when using GeoIP2.
|
|
||||||
[GL #182]
|
|
||||||
|
|
||||||
5257. [bug] Some statistics data was not being displayed.
|
|
||||||
Add shading to the zone tables. [GL #1030]
|
|
||||||
|
|
||||||
5256. [bug] Ensure that glue records are included in root
|
|
||||||
priming responses if "minimal-responses" is not
|
|
||||||
set to "yes". [GL #1092]
|
|
||||||
|
|
||||||
5255. [bug] Errors encountered while reloading inline-signing
|
|
||||||
zones could be ignored, causing the zone content to
|
|
||||||
be left in an incompletely updated state rather than
|
|
||||||
reverted. [GL #1109]
|
|
||||||
|
|
||||||
5254. [func] Collect metrics to report to the statistics-channel
|
|
||||||
DNSSEC signing operations (dnssec-sign) and refresh
|
|
||||||
operations (dnssec-refresh) per zone and per keytag.
|
|
||||||
[GL #513]
|
|
||||||
|
|
||||||
5253. [port] Support platforms that don't define ULLONG_MAX.
|
|
||||||
[GL #1098]
|
|
||||||
|
|
||||||
5252. [func] Report if the last 'rndc reload/reconfig' failed in
|
|
||||||
rndc status. [GL !2040]
|
|
||||||
|
|
||||||
5251. [bug] Statistics were broken in x86 Windows builds.
|
|
||||||
[GL #1081]
|
|
||||||
|
|
||||||
5250. [func] The default size for RSA keys is now 2048 bits,
|
|
||||||
for both ZSKs and KSKs. [GL #1097]
|
|
||||||
|
|
||||||
5249. [bug] Fix a possible underflow in recursion clients
|
|
||||||
statistics when hitting recursive clients
|
|
||||||
soft quota. [GL #1067]
|
|
||||||
|
|
||||||
--- 9.15.1 released ---
|
|
||||||
|
|
||||||
5248. [func] To clarify the configuration of DNSSEC keys,
|
|
||||||
the "managed-keys" and "trusted-keys" options
|
|
||||||
have both been deprecated. The new "dnssec-keys"
|
|
||||||
statement can now be used for all trust anchors,
|
|
||||||
with the keywords "iniital-key" or "static-key"
|
|
||||||
to indicate whether the configured trust anchor
|
|
||||||
should be used for initialization of RFC 5011 key
|
|
||||||
management, or as a permanent trust anchor.
|
|
||||||
|
|
||||||
The "static-key" keyword will generate a warning if
|
|
||||||
used for the root zone.
|
|
||||||
|
|
||||||
Configurations using "trusted-keys" or "managed-keys"
|
|
||||||
will continue to work with no changes, but will
|
|
||||||
generate warnings in the log. In a future release,
|
|
||||||
these options will be marked obsolete. [GL #6]
|
|
||||||
|
|
||||||
5247. [cleanup] The 'cleaning-interval' option has been removed.
|
|
||||||
[GL !1731]
|
|
||||||
|
|
||||||
5246. [func] Log TSIG if appropriate in 'sending notify to' message.
|
|
||||||
[GL #1058]
|
|
||||||
|
|
||||||
5245. [cleanup] Reduce logging level for IXFR up-to-date poll
|
|
||||||
responses. [GL #1009]
|
|
||||||
|
|
||||||
5244. [security] Fixed a race condition in dns_dispatch_getnext()
|
|
||||||
that could cause an assertion failure if a
|
|
||||||
significant number of incoming packets were
|
|
||||||
rejected. (CVE-2019-6471) [GL #942]
|
|
||||||
|
|
||||||
5243. [bug] Fix a possible race between dispatcher and socket
|
|
||||||
code in a high-load cold-cache resolver scenario.
|
|
||||||
[GL #943]
|
|
||||||
|
|
||||||
5242. [bug] In relaxed qname minimizatiom mode, fall back to
|
|
||||||
normal resolution when encountering a lame
|
|
||||||
delegation, and use _.domain/A queries rather
|
|
||||||
than domain/NS. [GL #1055]
|
|
||||||
|
|
||||||
5241. [bug] Fix Ed448 private and public key ASN.1 prefix blobs.
|
|
||||||
[GL #225]
|
|
||||||
|
|
||||||
5240. [bug] Remove key id calculation for RSAMD5. [GL #996]
|
|
||||||
|
|
||||||
5239. [func] Change the json-c detection to pkg-config. [GL #855]
|
|
||||||
|
|
||||||
5238. [bug] Fix a possible deadlock in TCP code. [GL #1046]
|
|
||||||
|
|
||||||
5237. [bug] Recurse to find the root server list with 'dig +trace'.
|
|
||||||
[GL #1028]
|
|
||||||
|
|
||||||
5236. [func] Add SipHash 2-4 implementation in lib/isc/siphash.c
|
|
||||||
and switch isc_hash_function() to use SipHash 2-4.
|
|
||||||
[GL #605]
|
|
||||||
|
|
||||||
5235. [cleanup] Refactor lib/isc/app.c to be thread-safe, unused
|
|
||||||
parts of the API has been removed and the
|
|
||||||
isc_appctx_t data type has been changed to be
|
|
||||||
fully opaque. [GL #1023]
|
|
||||||
|
|
||||||
5234. [port] arm: just use the compiler's default support for
|
|
||||||
yield. [GL #981]
|
|
||||||
|
|
||||||
--- 9.15.0 released ---
|
|
||||||
|
|
||||||
5233. [bug] Negative trust anchors did not work with "forward only;"
|
|
||||||
to validating resolvers. [GL #997]
|
|
||||||
|
|
||||||
5232. [placeholder]
|
|
||||||
|
|
||||||
5231. [protocol] Add support for displaying CLIENT-TAG and SERVER-TAG.
|
|
||||||
[GL #960]
|
|
||||||
|
|
||||||
5230. [protocol] The SHA-1 hash algorithm is no longer used when
|
|
||||||
generating DS and CDS records. [GL #1015]
|
|
||||||
|
|
||||||
5229. [protocol] Enforce known SSHFP fingerprint lengths. [GL #852]
|
|
||||||
|
|
||||||
5228. [func] If trusted-keys and managed-keys were configured
|
|
||||||
simultaneously for the same name, the key could
|
|
||||||
not be be rolled automatically. This is now
|
|
||||||
a fatal configuration error. [GL #868]
|
|
||||||
|
|
||||||
5227. [placeholder]
|
|
||||||
|
|
||||||
5226. [placeholder]
|
|
||||||
|
|
||||||
5225. [func] Allow dig to print out AAAA record fully expanded.
|
|
||||||
with +[no]expandaaaa. [GL #765]
|
|
||||||
|
|
||||||
5224. [bug] Only test provide-ixfr on TCP streams. [GL #991]
|
|
||||||
|
|
||||||
5223. [bug] Fixed a race in the filter-aaaa plugin accessing
|
|
||||||
the hash table. [GL #1005]
|
|
||||||
|
|
||||||
5222. [bug] 'delv -t ANY' could leak memory. [GL #983]
|
|
||||||
|
|
||||||
5221. [test] Enable parallel execution of system tests on
|
|
||||||
Windows. [GL !4101]
|
|
||||||
|
|
||||||
5220. [cleanup] Refactor the isc_stat structure to take advantage
|
|
||||||
of stdatomic. [GL !1493]
|
|
||||||
|
|
||||||
5219. [bug] Fixed a race in the filter-aaaa plugin that could
|
|
||||||
trigger a crash when returning an instance object
|
|
||||||
to the memory pool. [GL #982]
|
|
||||||
|
|
||||||
5218. [bug] Conditionally include <dlfcn.h>. [GL #995]
|
|
||||||
|
|
||||||
5217. [bug] Restore key id calculation for RSAMD5. [GL #996]
|
|
||||||
|
|
||||||
5216. [bug] Fetches-per-zone counter wasn't updated correctly
|
|
||||||
when doing qname minimization. [GL #992]
|
|
||||||
|
|
||||||
5215. [bug] Change #5124 was incomplete; named could still
|
|
||||||
return FORMERR instead of SERVFAIL in some cases.
|
|
||||||
[GL #990]
|
|
||||||
|
|
||||||
5214. [bug] win32: named now removes its lock file upon shutdown.
|
|
||||||
[GL #979]
|
|
||||||
|
|
||||||
5213. [bug] win32: Eliminated a race which allowed named.exe running
|
|
||||||
as a service to be killed prematurely during shutdown.
|
|
||||||
[GL #978]
|
|
||||||
|
|
||||||
5212. [placeholder]
|
|
||||||
|
|
||||||
5211. [bug] Allow out-of-zone additional data to be included
|
|
||||||
in authoritative responses if recursion is allowed
|
|
||||||
and "minimal-responses" is disabled. This behavior
|
|
||||||
was inadvertently removed in change #4605. [GL #817]
|
|
||||||
|
|
||||||
5210. [bug] When dnstap is enabled and recursion is not
|
|
||||||
available, incoming queries are now logged
|
|
||||||
as "auth". Previously, this depended on whether
|
|
||||||
recursion was requested by the client, not on
|
|
||||||
whether recursion was available. [GL #963]
|
|
||||||
|
|
||||||
5209. [bug] When update-check-ksk is true, add_sigs was not
|
|
||||||
considering offline keys, leaving record sets signed
|
|
||||||
with the incorrect type key. [GL #763]
|
|
||||||
|
|
||||||
5208. [test] Run valid rdata wire encodings through totext+fromtext
|
|
||||||
and tofmttext+fromtext methods to check these methods.
|
|
||||||
[GL #899]
|
|
||||||
|
|
||||||
5207. [test] Check delv and dig TTL values. [GL #965]
|
|
||||||
|
|
||||||
5206. [bug] Delv could print out bad TTLs. [GL #965]
|
|
||||||
|
|
||||||
5205. [bug] Enforce that a DS hash exists. [GL #899]
|
|
||||||
|
|
||||||
5204. [test] Check that dns_rdata_fromtext() produces a record that
|
|
||||||
will be accepted by dns_rdata_fromwire(). [GL #852]
|
|
||||||
|
|
||||||
5203. [bug] Enforce whether key rdata exists or not in KEY,
|
|
||||||
DNSKEY, CDNSKEY and RKEY. [GL #899]
|
|
||||||
|
|
||||||
5202. [bug] <dns/ecs.h> was missing ISC_LANG_ENDDECLS. [GL #976]
|
|
||||||
|
|
||||||
5201. [bug] Fix a possible deadlock in RPZ update code. [GL #973]
|
|
||||||
|
|
||||||
5200. [security] tcp-clients settings could be exceeded in some cases,
|
|
||||||
which could lead to exhaustion of file descriptors.
|
|
||||||
(CVE-2018-5743) [GL #615]
|
|
||||||
|
|
||||||
5199. [security] In certain configurations, named could crash
|
|
||||||
if nxdomain-redirect was in use and a redirected
|
|
||||||
query resulted in an NXDOMAIN from the cache.
|
|
||||||
(CVE-2019-6467) [GL #880]
|
|
||||||
|
|
||||||
5198. [bug] If a fetch context was being shut down and, at the same
|
|
||||||
time, we returned from qname minimization, an INSIST
|
|
||||||
could be hit. [GL #966]
|
|
||||||
|
|
||||||
5197. [bug] dig could die in best effort mode on multiple SIG(0)
|
|
||||||
records. Similarly on multiple OPT and multiple TSIG
|
|
||||||
records. [GL #920]
|
|
||||||
|
|
||||||
5196. [bug] make install failed with --with-dlopen=no. [GL #955]
|
|
||||||
|
|
||||||
5195. [bug] "allow-update" and "allow-update-forwarding" were
|
|
||||||
treated as configuration errors if used at the
|
|
||||||
options or view level. [GL #913]
|
|
||||||
|
|
||||||
5194. [bug] Enforce non empty ZOMEMD hash. [GL #899]
|
|
||||||
|
|
||||||
5193. [bug] EID and NIMLOC failed to do multi-line output
|
|
||||||
correctly. [GL #899]
|
|
||||||
|
|
||||||
5192. [placeholder]
|
|
||||||
|
|
||||||
5191. [placeholder]
|
|
||||||
|
|
||||||
5190. [bug] Ignore trust anchors using disabled algorithms.
|
|
||||||
[GL #806]
|
|
||||||
|
|
||||||
5189. [cleanup] Remove revoked root DNSKEY from bind.keys. [GL #945]
|
|
||||||
|
|
||||||
5188. [func] The "dnssec-enable" option is deprecated and no
|
|
||||||
longer has any effect; DNSSEC responses are
|
|
||||||
always enabled. [GL #866]
|
|
||||||
|
|
||||||
5187. [test] Set time zone before running any tests in dnstap_test.
|
|
||||||
[GL #940]
|
|
||||||
|
|
||||||
5186. [cleanup] More dnssec-keygen manual tidying. [GL !1678]
|
|
||||||
|
|
||||||
5185. [placeholder]
|
|
||||||
|
|
||||||
5184. [bug] Missing unlocks in sdlz.c. [GL #936]
|
|
||||||
|
|
||||||
5183. [bug] Reinitialize ECS data before reusing client
|
|
||||||
structures. [GL #881]
|
|
||||||
|
|
||||||
5182. [bug] Fix a high-load race/crash in handling of
|
|
||||||
isc_socket_close() in resolver. [GL #834]
|
|
||||||
|
|
||||||
5181. [func] Add a mechanism for a DLZ module to signal that
|
|
||||||
the view's allow-transfer ACL should be used to
|
|
||||||
determine whether transfers are allowed. [GL #803]
|
|
||||||
|
|
||||||
5180. [bug] delv now honors the operating system's preferred
|
|
||||||
ephemeral port range. [GL #925]
|
|
||||||
|
|
||||||
5179. [cleanup] Replace some vague type declarations with the more
|
|
||||||
specific dns_secalg_t and dns_dsdigest_t.
|
|
||||||
Thanks to Tony Finch. [GL !1498]
|
|
||||||
|
|
||||||
5178. [bug] Handle EDQUOT (disk quota) and ENOSPC (disk full)
|
|
||||||
errors when writing files. [GL #902]
|
|
||||||
|
|
||||||
5177. [func] Add the ability to specify in named.conf whether a
|
|
||||||
response-policy zone's SOA record should be added
|
|
||||||
to the additional section (add-soa yes/no). [GL #865]
|
|
||||||
|
|
||||||
5176. [tests] Remove a dependency on libxml in statschannel system
|
|
||||||
test. [GL #926]
|
|
||||||
|
|
||||||
5175. [bug] Fixed a problem with file input in dnssec-keymgr,
|
|
||||||
dnssec-coverage and dnssec-checkds when using
|
|
||||||
python3. [GL #882]
|
|
||||||
|
|
||||||
5174. [doc] Tidy dnssec-keygen manual. [GL !1557]
|
|
||||||
|
|
||||||
5173. [bug] Fixed a race in socket code that could occur when
|
|
||||||
accept, send, or recv were called from an event
|
|
||||||
loop but the socket had been closed by another
|
|
||||||
thread. [RT #874]
|
|
||||||
|
|
||||||
5172. [bug] nsupdate now honors the operating system's preferred
|
|
||||||
ephemeral port range. [GL #905]
|
|
||||||
|
|
||||||
5171. [func] named plugins are now installed into a separate
|
|
||||||
directory. Supplying a filename (a string without path
|
|
||||||
separators) in a "plugin" configuration stanza now
|
|
||||||
causes named to look for that plugin in that directory.
|
|
||||||
[GL #878]
|
|
||||||
|
|
||||||
5170. [test] Added --with-dlz-filesystem to feature-test. [GL !1587]
|
|
||||||
|
|
||||||
5169. [bug] The presence of certain types in an otherwise
|
|
||||||
empty node could cause a crash while processing a
|
|
||||||
type ANY query. [GL #901]
|
|
||||||
|
|
||||||
5168. [bug] Do not crash on shutdown when RPZ fails to load. Also,
|
|
||||||
keep previous version of the database if RPZ fails to
|
|
||||||
load. [GL #813]
|
|
||||||
|
|
||||||
5167. [bug] nxdomain-redirect could sometimes lookup the wrong
|
|
||||||
redirect name. [GL #892]
|
|
||||||
|
|
||||||
5166. [placeholder]
|
|
||||||
|
|
||||||
5165. [contrib] Removed SDB drivers from contrib; they're obsolete.
|
|
||||||
[GL #428]
|
|
||||||
|
|
||||||
5164. [bug] Correct errno to result translation in dlz filesystem
|
|
||||||
modules. [GL #884]
|
|
||||||
|
|
||||||
5163. [cleanup] Out-of-tree builds failed --enable-dnstap. [GL #836]
|
|
||||||
|
|
||||||
5162. [cleanup] Improve dnssec-keymgr manual. Thanks to Tony Finch.
|
|
||||||
[GL !1518]
|
|
||||||
|
|
||||||
5161. [bug] Do not require the SEP bit to be set for mirror zone
|
|
||||||
trust anchors. [GL #873]
|
|
||||||
|
|
||||||
5160. [contrib] Added DNAME support to the DLZ LDAP schema. Also
|
|
||||||
fixed a compilation bug affecting several DLZ
|
|
||||||
modules. [GL #872]
|
|
||||||
|
|
||||||
5159. [bug] dnssec-coverage was incorrectly ignoring
|
|
||||||
names specified on the command line without
|
|
||||||
trailing dots. [GL !1478]
|
|
||||||
|
|
||||||
5158. [protocol] Add support for AMTRELAY and ZONEMD. [GL #867]
|
|
||||||
|
|
||||||
5157. [bug] Nslookup now errors out if there are extra command
|
|
||||||
line arguments. [GL #207]
|
|
||||||
|
|
||||||
5156. [doc] Extended and refined the section of the ARM describing
|
|
||||||
mirror zones. [GL #774]
|
|
||||||
|
|
||||||
5155. [func] "named -V" now outputs the default paths to
|
|
||||||
named.conf, rndc.conf, bind.keys, and other
|
|
||||||
files used or created by named and other tools, so
|
|
||||||
that the correct paths to these files can quickly be
|
|
||||||
determined regardless of the configure settings
|
|
||||||
used when BIND was built. [GL #859]
|
|
||||||
|
|
||||||
5154. [bug] dig: process_opt could be called twice on the same
|
|
||||||
message leading to a assertion failure. [GL #860]
|
|
||||||
|
|
||||||
5153. [func] Zone transfer statistics (size, number of records, and
|
|
||||||
number of messages) are now logged for outgoing
|
|
||||||
transfers as well as incoming ones. [GL #513]
|
|
||||||
|
|
||||||
5152. [func] Improved logging of DNSSEC key events:
|
|
||||||
- Zone signing and DNSKEY maintenance events are
|
|
||||||
now logged to the "dnssec" category
|
|
||||||
- Messages are now logged when DNSSEC keys are
|
|
||||||
published, activated, inactivated, deleted,
|
|
||||||
or revoked.
|
|
||||||
[GL #714]
|
|
||||||
|
|
||||||
5151. [func] Options that have been been marked as obsolete in
|
|
||||||
named.conf for a very long time are now fatal
|
|
||||||
configuration errors. [GL #358]
|
|
||||||
|
|
||||||
5150. [cleanup] Remove the ability to compile BIND with assertions
|
|
||||||
disabled. [GL #735]
|
|
||||||
|
|
||||||
5149. [func] "rndc dumpdb" now prints a line above a stale RRset
|
|
||||||
indicating how long the data will be retained in the
|
|
||||||
cache for emergency use. [GL #101]
|
|
||||||
|
|
||||||
5148. [bug] named did not sign the TKEY response. [GL #821]
|
|
||||||
|
|
||||||
5147. [bug] dnssec-keymgr: Add a five-minute margin to better
|
|
||||||
handle key events close to 'now'. [GL #848]
|
|
||||||
|
|
||||||
5146. [placeholder]
|
|
||||||
|
|
||||||
5145. [func] Use atomics instead of locked variables for isc_quota
|
|
||||||
and isc_counter. [GL !1389]
|
|
||||||
|
|
||||||
5144. [bug] dig now returns a non-zero exit code when a TCP
|
|
||||||
connection is prematurely closed by a peer more than
|
|
||||||
once for the same lookup. [GL #820]
|
|
||||||
|
|
||||||
5143. [bug] dnssec-keymgr and dnssec-coverage failed to find
|
|
||||||
key files for zone names ending in ".". [GL #560]
|
|
||||||
|
|
||||||
5142. [cleanup] Removed "configure --disable-rpz-nsip" and
|
|
||||||
"--disable-rpz-nsdname" options. "nsip-enable"
|
|
||||||
and "nsdname-enable" both now default to yes,
|
|
||||||
regardless of compile-time settings. [GL #824]
|
|
||||||
|
|
||||||
5141. [security] Zone transfer controls for writable DLZ zones were
|
|
||||||
not effective as the allowzonexfr method was not being
|
|
||||||
called for such zones. (CVE-2019-6465) [GL #790]
|
|
||||||
|
|
||||||
5140. [bug] Don't immediately mark existing keys as inactive and
|
|
||||||
deleted when running dnssec-keymgr for the first
|
|
||||||
time. [GL #117]
|
|
||||||
|
|
||||||
5139. [bug] If possible, don't use forwarders when priming.
|
|
||||||
This ensures we can get root server IP addresses
|
|
||||||
from priming query response glue, which may not
|
|
||||||
be present if the forwarding server is returning
|
|
||||||
minimal responses. [GL #752]
|
|
||||||
|
|
||||||
5138. [bug] Under some circumstances named could hit an assertion
|
|
||||||
failure when doing qname minimization when using
|
|
||||||
forwarders. [GL #797]
|
|
||||||
|
|
||||||
5137. [func] named now logs messages whenever a mirror zone becomes
|
|
||||||
usable or unusable for resolution purposes. [GL #818]
|
|
||||||
|
|
||||||
5136. [cleanup] Check in named-checkconf that allow-update and
|
|
||||||
allow-update-forwarding are not set at the
|
|
||||||
view/options level; fix documentation. [GL #512]
|
|
||||||
|
|
||||||
5135. [port] sparc: Use smt_pause() instead of pause. [GL #816]
|
|
||||||
|
|
||||||
5134. [bug] win32: WSAStartup was not called before getservbyname
|
|
||||||
was called. [GL #590]
|
|
||||||
|
|
||||||
5133. [bug] 'rndc managed-keys' didn't handle class and view
|
|
||||||
correctly and failed to add new lines between each
|
|
||||||
view. [GL !1327]
|
|
||||||
|
|
||||||
5132. [bug] Fix race condition in cleanup part of dns_dt_create().
|
|
||||||
[GL !1323]
|
|
||||||
|
|
||||||
5131. [cleanup] Address Coverity warnings. [GL #801]
|
|
||||||
|
|
||||||
5130. [cleanup] Remove support for l10n message catalogs. [GL #709]
|
|
||||||
|
|
||||||
5129. [contrib] sdlz_helper.c:build_querylist was not properly
|
|
||||||
splitting the query string. [GL #798]
|
|
||||||
|
|
||||||
5128. [bug] Refreshkeytime was not being updated for managed
|
|
||||||
keys zones. [GL #784]
|
|
||||||
|
|
||||||
5127. [bug] rcode.c:maybe_numeric failed to handle NUL in text
|
|
||||||
regions. [GL #807]
|
|
||||||
|
|
||||||
5126. [bug] Named incorrectly accepted empty base64 and hex encoded
|
|
||||||
fields when reading master files. [GL #807]
|
|
||||||
|
|
||||||
5125. [bug] Allow for up to 100 records or 64k of data when caching
|
|
||||||
a negative response. [GL #804]
|
|
||||||
|
|
||||||
5124. [bug] Named could incorrectly return FORMERR rather than
|
|
||||||
SERVFAIL. [GL #804]
|
|
||||||
|
|
||||||
5123. [bug] dig could hang indefinitely after encountering an error
|
|
||||||
before creating a TCP socket. [GL #692]
|
|
||||||
|
|
||||||
5122. [bug] In a "forward first;" configuration, a forwarder
|
|
||||||
timeout did not prevent that forwarder from being
|
|
||||||
queried again after falling back to full recursive
|
|
||||||
resolution. [GL #315]
|
|
||||||
|
|
||||||
5121. [contrib] dlz_stub_driver.c fails to return ISC_R_NOTFOUND on none
|
|
||||||
matching zone names. [GL !1299]
|
|
||||||
|
|
||||||
5120. [placeholder]
|
|
||||||
|
|
||||||
5119. [placeholder]
|
|
||||||
|
|
||||||
5118. [security] Named could crash if it is managing a key with
|
|
||||||
`managed-keys` and the authoritative zone is rolling
|
|
||||||
the key to an unsupported algorithm. (CVE-2018-5745)
|
|
||||||
[GL #780]
|
|
||||||
|
|
||||||
5117. [placeholder]
|
|
||||||
|
|
||||||
5116. [bug] Named/named-checkconf triggered a assertion when
|
|
||||||
a mirror zone's name is bad. [GL #778]
|
|
||||||
|
|
||||||
5115. [bug] Allow unsupported algorithms in zone when not used for
|
|
||||||
signing with dnssec-signzone. [GL #783]
|
|
||||||
|
|
||||||
5114. [func] Include a 'reconfig/reload in progress' status line
|
|
||||||
in rndc status, use it in tests.
|
|
||||||
|
|
||||||
5113. [port] Fixed a Windows build error.
|
|
||||||
|
|
||||||
5112. [bug] Named/named-checkconf could dump core if there was
|
|
||||||
a missing masters clause and a bad notify clause.
|
|
||||||
[GL #779]
|
|
||||||
|
|
||||||
5111. [bug] Occluded DNSKEY records could make it into the
|
|
||||||
delegating NSEC/NSEC3 bitmap. [GL #742]
|
|
||||||
|
|
||||||
5110. [security] Named leaked memory if there were multiple Key Tag
|
|
||||||
EDNS options present. (CVE-2018-5744) [GL #772]
|
|
||||||
|
|
||||||
5109. [cleanup] Remove support for RSAMD5 algorithm. [GL #628]
|
|
||||||
|
|
||||||
--- 9.13.5 released ---
|
--- 9.13.5 released ---
|
||||||
|
|
||||||
5108. [bug] Named could fail to determine bottom of zone when
|
5108. [bug] Named could fail to determine bottom of zone when
|
||||||
removing out of date keys leading to invalid NSEC
|
removing out of date keys leading to invalid NSEC
|
||||||
and NSEC3 records being added to the zone. [GL #771]
|
and NSEC3 records being added to the zone. [GL #771]
|
||||||
|
|
||||||
5107. [bug] 'host -U' did not work. [GL #769]
|
5107. [bug] 'host -U' did not work. [GL #769]
|
||||||
|
|
||||||
5106. [experimental] A new "plugin" mechanism has been added to allow
|
5106. [experimental] A new "plugin" mechanism has been added to allow
|
||||||
extension of query processing functionality through
|
extension of query processing functionality through
|
||||||
@@ -662,8 +74,8 @@
|
|||||||
5091. [func] Two new global and per-view options min-cache-ttl
|
5091. [func] Two new global and per-view options min-cache-ttl
|
||||||
and min-ncache-ttl [GL #613]
|
and min-ncache-ttl [GL #613]
|
||||||
|
|
||||||
5090. [bug] dig and mdig failed to properly pre-parse dash value
|
5090. [bug] dig and mdig failed to properly preparse dash value
|
||||||
pairs when value was a separate argument and started
|
pairs when value was a seperate argument and started
|
||||||
with a dash. [GL #584]
|
with a dash. [GL #584]
|
||||||
|
|
||||||
5089. [bug] Restore localhost fallback in dig and host which is
|
5089. [bug] Restore localhost fallback in dig and host which is
|
||||||
@@ -729,7 +141,7 @@
|
|||||||
5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its
|
5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its
|
||||||
behavior for auto-reallocated buffers. [GL #644]
|
behavior for auto-reallocated buffers. [GL #644]
|
||||||
|
|
||||||
5071. [bug] Comparison of NXT records was broken. [GL #631]
|
5071. [bug] Comparision of NXT records was broken. [GL #631]
|
||||||
|
|
||||||
5070. [bug] Record types which support a empty rdata field were
|
5070. [bug] Record types which support a empty rdata field were
|
||||||
not handling the empty rdata field case. [GL #638]
|
not handling the empty rdata field case. [GL #638]
|
||||||
@@ -748,7 +160,7 @@
|
|||||||
|
|
||||||
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
|
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
|
||||||
|
|
||||||
5064. [test] Initialize TZ environment variable before calling
|
5064. [test] Initalize TZ environment variable before calling
|
||||||
dns_test_begin in dnstap_test. [GL #624]
|
dns_test_begin in dnstap_test. [GL #624]
|
||||||
|
|
||||||
5063. [test] In statschannel test try a few times before failing
|
5063. [test] In statschannel test try a few times before failing
|
||||||
@@ -974,7 +386,7 @@
|
|||||||
5001. [bug] Fix refcount errors on error paths. [GL !563]
|
5001. [bug] Fix refcount errors on error paths. [GL !563]
|
||||||
|
|
||||||
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 occurred. [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 implementation in lib/isc/print.c.
|
||||||
[GL #261]
|
[GL #261]
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
CODE OF CONDUCT
|
|
||||||
|
|
||||||
BIND 9 Code of Conduct
|
|
||||||
|
|
||||||
Like the technical community as a whole, the BIND 9 team and community is
|
|
||||||
made up of a mixture of professionals and volunteers from all over the
|
|
||||||
world, working on every aspect of the mission - including mentorship,
|
|
||||||
teaching, and connecting people.
|
|
||||||
|
|
||||||
Diversity is one of our huge strengths, but it can also lead to
|
|
||||||
communication issues and unhappiness. To that end, we have a few ground
|
|
||||||
rules that we ask people to adhere to. This code applies equally to the
|
|
||||||
core development team, open source contributors and those seeking help and
|
|
||||||
guidance.
|
|
||||||
|
|
||||||
This isn't an exhaustive list of things that you can't do. Rather, take it
|
|
||||||
in the spirit in which it's intended - a guide to make it easier to enrich
|
|
||||||
all of us and the technical communities in which we participate.
|
|
||||||
|
|
||||||
This code of conduct applies to all spaces managed by the BIND 9 project
|
|
||||||
or Internet Systems Consortium. This includes chat, the mailing lists, the
|
|
||||||
issue tracker, and any other fora created by the project team which the
|
|
||||||
community uses for communication. In addition, violations of this code
|
|
||||||
outside these spaces may affect a person's ability to participate within
|
|
||||||
them.
|
|
||||||
|
|
||||||
If you believe someone is violating the code of conduct, we ask that you
|
|
||||||
report it by emailing conduct@isc.org. For more details please see our
|
|
||||||
Reporting Guidelines.
|
|
||||||
|
|
||||||
* Be friendly and patient.
|
|
||||||
* Be welcoming. We strive to be a community that welcomes and supports
|
|
||||||
people of all backgrounds and identities. This includes, but is not
|
|
||||||
limited to members of any race, ethnicity, culture, national origin,
|
|
||||||
colour, immigration status, social and economic class, educational
|
|
||||||
level, sex, sexual orientation, gender identity and expression, age,
|
|
||||||
size, family status, political belief, religion, and mental and
|
|
||||||
physical ability.
|
|
||||||
* Be considerate. Your work will be used by other people, and you in
|
|
||||||
turn will depend on the work of others. Any decision you take will
|
|
||||||
affect users and colleagues, and you should take those consequences
|
|
||||||
into account when making decisions. Remember that we're a world-wide
|
|
||||||
community, so you might not be communicating in someone else's primary
|
|
||||||
language.
|
|
||||||
* Be respectful. Not all of us will agree all the time, but disagreement
|
|
||||||
is no excuse for poor behavior and poor manners. We might all
|
|
||||||
experience some frustration now and then, but we cannot allow that
|
|
||||||
frustration to turn into a personal attack. It's important to remember
|
|
||||||
that a community where people feel uncomfortable or threatened is not
|
|
||||||
a productive one. Members of the BIND 9 community should be respectful
|
|
||||||
when dealing with other members as well as with people outside the
|
|
||||||
BIND 9 community.
|
|
||||||
* Be careful in the words that you choose. We are a community of
|
|
||||||
professionals, and we conduct ourselves professionally. Be kind to
|
|
||||||
others. Do not insult or put down other participants. Harassment and
|
|
||||||
other exclusionary behavior aren't acceptable. This includes, but is
|
|
||||||
not limited to:
|
|
||||||
+ Violent threats or language directed against another person.
|
|
||||||
+ Discriminatory jokes and language.
|
|
||||||
+ Posting sexually explicit or violent material.
|
|
||||||
+ Posting (or threatening to post) other people's personally
|
|
||||||
identifying information ("doxing").
|
|
||||||
+ Personal insults, especially those using racist or sexist terms.
|
|
||||||
+ Unwelcome sexual attention.
|
|
||||||
+ Advocating for, or encouraging, any of the above behavior.
|
|
||||||
+ Repeated harassment of others. In general, if someone asks you to
|
|
||||||
stop, then stop.
|
|
||||||
* When we disagree, try to understand why. Disagreements, both social
|
|
||||||
and technical, happen all the time and BIND 9 is no exception. It is
|
|
||||||
important that we resolve disagreements and differing views
|
|
||||||
constructively. Remember that we're different. The strength of BIND 9
|
|
||||||
comes from its varied community, people from a wide range of
|
|
||||||
backgrounds. Different people have different perspectives on issues.
|
|
||||||
Being unable to understand why someone holds a viewpoint doesn't mean
|
|
||||||
that they're wrong. Don't forget that it is human to err and blaming
|
|
||||||
each other doesn't get us anywhere. Instead, focus on helping to
|
|
||||||
resolve issues and learning from mistakes.
|
|
||||||
|
|
||||||
Original text courtesy of the Django Code of Conduct project.
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# BIND 9 Code of Conduct
|
|
||||||
|
|
||||||
Like the technical community as a whole, the BIND 9 team and community is made
|
|
||||||
up of a mixture of professionals and volunteers from all over the world, working
|
|
||||||
on every aspect of the mission - including mentorship, teaching, and connecting
|
|
||||||
people.
|
|
||||||
|
|
||||||
Diversity is one of our huge strengths, but it can also lead to communication
|
|
||||||
issues and unhappiness. To that end, we have a few ground rules that we ask
|
|
||||||
people to adhere to. This code applies equally to the core development team, open source contributors and those
|
|
||||||
seeking help and guidance.
|
|
||||||
|
|
||||||
This isn't an exhaustive list of things that you can't do. Rather, take it in
|
|
||||||
the spirit in which it's intended - a guide to make it easier to enrich all of
|
|
||||||
us and the technical communities in which we participate.
|
|
||||||
|
|
||||||
This code of conduct applies to all spaces managed by the BIND 9 project or
|
|
||||||
Internet Systems Consortium. This includes chat, the mailing lists, the issue
|
|
||||||
tracker, and any other fora created by the project team which the
|
|
||||||
community uses for communication. In addition, violations of this code outside
|
|
||||||
these spaces may affect a person's ability to participate within them.
|
|
||||||
|
|
||||||
If you believe someone is violating the code of conduct, we ask that you report
|
|
||||||
it by emailing [conduct@isc.org](conduct@isc.org). For more details please see
|
|
||||||
our [Reporting Guidelines](https://www.isc.org/conductreporting/).
|
|
||||||
|
|
||||||
* **Be friendly and patient.**
|
|
||||||
* **Be welcoming.** We strive to be a community that welcomes and supports
|
|
||||||
people of all backgrounds and identities. This includes, but is not limited to
|
|
||||||
members of any race, ethnicity, culture, national origin, colour, immigration
|
|
||||||
status, social and economic class, educational level, sex, sexual orientation,
|
|
||||||
gender identity and expression, age, size, family status, political belief,
|
|
||||||
religion, and mental and physical ability.
|
|
||||||
* **Be considerate.** Your work will be used by other people, and you in turn
|
|
||||||
will depend on the work of others. Any decision you take will affect users and
|
|
||||||
colleagues, and you should take those consequences into account when making
|
|
||||||
decisions. Remember that we're a world-wide community, so you might not be
|
|
||||||
communicating in someone else's primary language.
|
|
||||||
* **Be respectful.** Not all of us will agree all the time, but disagreement is
|
|
||||||
no excuse for poor behavior and poor manners. We might all experience some
|
|
||||||
frustration now and then, but we cannot allow that frustration to turn into a
|
|
||||||
personal attack. It's important to remember that a community where people feel
|
|
||||||
uncomfortable or threatened is not a productive one. Members of the BIND 9
|
|
||||||
community should be respectful when dealing with other members as well as with
|
|
||||||
people outside the BIND 9 community.
|
|
||||||
* **Be careful in the words that you choose.** We are a community of
|
|
||||||
professionals, and we conduct ourselves professionally. Be kind to others. Do
|
|
||||||
not insult or put down other participants. Harassment and other exclusionary
|
|
||||||
behavior aren't acceptable. This includes, but is not limited to:
|
|
||||||
* Violent threats or language directed against another person.
|
|
||||||
* Discriminatory jokes and language.
|
|
||||||
* Posting sexually explicit or violent material.
|
|
||||||
* Posting (or threatening to post) other people's personally identifying
|
|
||||||
information ("doxing").
|
|
||||||
* Personal insults, especially those using racist or sexist terms.
|
|
||||||
* Unwelcome sexual attention.
|
|
||||||
* Advocating for, or encouraging, any of the above behavior.
|
|
||||||
* Repeated harassment of others. In general, if someone asks you to stop, then
|
|
||||||
stop.
|
|
||||||
* **When we disagree, try to understand why.** Disagreements, both social and
|
|
||||||
technical, happen all the time and BIND 9 is no exception. It is important
|
|
||||||
that we resolve disagreements and differing views constructively. Remember
|
|
||||||
that we're different. The strength of BIND 9 comes from its varied community,
|
|
||||||
people from a wide range of backgrounds. Different people have different
|
|
||||||
perspectives on issues. Being unable to understand why someone holds a
|
|
||||||
viewpoint doesn't mean that they're wrong. Don't forget that it is human to
|
|
||||||
err and blaming each other doesn't get us anywhere. Instead, focus on helping
|
|
||||||
to resolve issues and learning from mistakes.
|
|
||||||
|
|
||||||
Original text courtesy of the [Django Code of Conduct](https://www.djangoproject.com/conduct/)
|
|
||||||
project.
|
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
CONTRIBUTING
|
|
||||||
|
|
||||||
BIND Source Access and Contributor Guidelines
|
BIND Source Access and Contributor Guidelines
|
||||||
|
|
||||||
Feb 22, 2018
|
Feb 22, 2018
|
||||||
@@ -34,14 +32,6 @@ access to the source repository was restricted just as commit access was.
|
|||||||
That's now changing, with the opening of a public git mirror to the BIND
|
That's now changing, with the opening of a public git mirror to the BIND
|
||||||
source tree (see below).
|
source tree (see below).
|
||||||
|
|
||||||
At Internet Systems Consortium, we're committed to building communities
|
|
||||||
that are welcoming and inclusive; environments where people are encouraged
|
|
||||||
to share ideas, treat each other with respect, and collaborate towards the
|
|
||||||
best solutions. To reinforce our commitment, the Internet Systems
|
|
||||||
Consortium has adopted the Contributor Covenant version 1.4 as our Code of
|
|
||||||
Conduct for BIND 9 project, as well as for the conduct of our developers
|
|
||||||
throughout the industry.
|
|
||||||
|
|
||||||
Access to source code
|
Access to source code
|
||||||
|
|
||||||
Public BIND releases are always available from the ISC FTP site.
|
Public BIND releases are always available from the ISC FTP site.
|
||||||
|
|||||||
+1
-9
@@ -41,14 +41,6 @@ a release: read access to the source repository was restricted just
|
|||||||
as commit access was. That's now changing, with the opening of a
|
as commit access was. That's now changing, with the opening of a
|
||||||
public git mirror to the BIND source tree (see below).
|
public git mirror to the BIND source tree (see below).
|
||||||
|
|
||||||
At [Internet Systems Consortium](https://www.isc.org), we're committed to
|
|
||||||
building communities that are welcoming and inclusive; environments where people
|
|
||||||
are encouraged to share ideas, treat each other with respect, and collaborate
|
|
||||||
towards the best solutions. To reinforce our commitment, the [Internet Systems
|
|
||||||
Consortium](https://www.isc.org) has adopted the Contributor Covenant version
|
|
||||||
1.4 as our Code of Conduct for BIND 9 project, as well as for the conduct of our
|
|
||||||
developers throughout the industry.
|
|
||||||
|
|
||||||
### <a name="access"></a>Access to source code
|
### <a name="access"></a>Access to source code
|
||||||
|
|
||||||
Public BIND releases are always available from the
|
Public BIND releases are always available from the
|
||||||
@@ -116,7 +108,7 @@ ISC's Security Vulnerability Disclosure Policy is documented at [https://kb.isc.
|
|||||||
If you have a crash, you may want to consult
|
If you have a crash, you may want to consult
|
||||||
[‘What to do if your BIND or DHCP server has crashed.’](https://kb.isc.org/article/AA-00340/89/What-to-do-if-your-BIND-or-DHCP-server-has-crashed.html)
|
[‘What to do if your BIND or DHCP server has crashed.’](https://kb.isc.org/article/AA-00340/89/What-to-do-if-your-BIND-or-DHCP-server-has-crashed.html)
|
||||||
|
|
||||||
### <a name="contrib"></a>Contributing code
|
### <a name="bugs"></a>Contributing code
|
||||||
|
|
||||||
BIND is licensed under the
|
BIND is licensed under the
|
||||||
[Mozilla Public License 2.0](http://www.isc.org/downloads/software-support-policy/isc-license/).
|
[Mozilla Public License 2.0](http://www.isc.org/downloads/software-support-policy/isc-license/).
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Copyright (C) 1996-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright (C) 1996-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public
|
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
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -1,81 +1,5 @@
|
|||||||
HISTORY
|
|
||||||
|
|
||||||
Functional enhancements from prior major releases of BIND 9
|
Functional enhancements from prior major releases of BIND 9
|
||||||
|
|
||||||
BIND 9.14
|
|
||||||
|
|
||||||
BIND 9.14 (a stable branch based on the 9.13 development branch) includes
|
|
||||||
a number of changes from BIND 9.12 and earlier releases. New features
|
|
||||||
include:
|
|
||||||
|
|
||||||
* A new "plugin" mechanism has been added to allow query functionality
|
|
||||||
to be extended using dynamically loadable libraries. The "filter-aaaa"
|
|
||||||
feature has been removed from named and is now implemented as a
|
|
||||||
plugin.
|
|
||||||
* Socket and task code has been refactored to improve performance.
|
|
||||||
* QNAME minimization, as described in RFC 7816, is now supported.
|
|
||||||
* "Root key sentinel" support, enabling validating resolvers to indicate
|
|
||||||
via a special query which trust anchors are configured for the root
|
|
||||||
zone.
|
|
||||||
* Secondary zones can now be configured as "mirror" zones; their
|
|
||||||
contents are transferred in as with traditional slave zones, but are
|
|
||||||
subject to DNSSEC validation and are not treated as authoritative data
|
|
||||||
when answering. This makes it easier to configure a local copy of the
|
|
||||||
root zone as described in RFC 7706.
|
|
||||||
* The "validate-except" option allows configuration of domains below
|
|
||||||
which DNSSEC validation should not be performed.
|
|
||||||
* The default value of "dnssec-validation" is now "auto".
|
|
||||||
* IDNA2008 is now supported when linking with libidn2.
|
|
||||||
* "named -V" now outputs the default paths for files used by named and
|
|
||||||
other tools.
|
|
||||||
|
|
||||||
In addition, workarounds that were formerly in place to enable resolution
|
|
||||||
of domains whose authoritative servers did not respond to EDNS queries
|
|
||||||
have been removed. See https://dnsflagday.net for more details.
|
|
||||||
|
|
||||||
Cryptographic support has been modernized. BIND now uses the best
|
|
||||||
available pseudo-random number generator for the platform on which it's
|
|
||||||
built. Very old versions of OpenSSL are no longer supported. Cryptography
|
|
||||||
is now mandatory: building BIND without DNSSEC is no longer supported.
|
|
||||||
|
|
||||||
Special code to support certain legacy operating systems has also been
|
|
||||||
removed; see the file PLATFORMS.md for details of supported platforms. In
|
|
||||||
addition to OpenSSL, BIND now requires support for IPv6, threads, and
|
|
||||||
standard atomic operations provided by the C compiler.
|
|
||||||
|
|
||||||
BIND 9.12
|
|
||||||
|
|
||||||
BIND 9.12 includes a number of changes from BIND 9.11 and earlier
|
|
||||||
releases. New features include:
|
|
||||||
|
|
||||||
* named and related libraries have been substantially refactored for
|
|
||||||
improved query performance -- particularly on delegation heavy zones
|
|
||||||
-- and for improved readability, maintainability, and testability.
|
|
||||||
* Code implementing the name server query processing logic has been
|
|
||||||
moved into a new libns library, for easier testing and use in tools
|
|
||||||
other than named.
|
|
||||||
* Cached, validated NSEC and other records can now be used to synthesize
|
|
||||||
NXDOMAIN responses.
|
|
||||||
* The DNS Response Policy Service API (DNSRPS) is now supported.
|
|
||||||
* Setting 'max-journal-size default' now limits the size of journal
|
|
||||||
files to twice the size of the zone.
|
|
||||||
* dnstap-read -x prints a hex dump of the wire format of each logged DNS
|
|
||||||
message.
|
|
||||||
* dnstap output files can now be configured to roll automatically when
|
|
||||||
reaching a given size.
|
|
||||||
* Log file timestamps can now also be formatted in ISO 8601 (local) or
|
|
||||||
ISO 8601 (UTC) formats.
|
|
||||||
* Logging channels and dnstap output files can now be configured to use
|
|
||||||
a timestamp as the suffix when rolling to a new file.
|
|
||||||
* 'named-checkconf -l' lists zones found in named.conf.
|
|
||||||
* Added support for the EDNS Padding and Keepalive options.
|
|
||||||
* 'new-zones-directory' option sets the location where the configuration
|
|
||||||
data for zones added by rndc addzone is stored.
|
|
||||||
* The default key algorithm in rndc-confgen is now hmac-sha256.
|
|
||||||
* filter-aaaa-on-v4 and filter-aaaa-on-v6 options are now available by
|
|
||||||
default without a configure option.
|
|
||||||
* The obsolete isc-hmac-fixup command has been removed.
|
|
||||||
|
|
||||||
BIND 9.11
|
BIND 9.11
|
||||||
|
|
||||||
BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier
|
BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier
|
||||||
@@ -507,11 +431,11 @@ BIND 9.4.0
|
|||||||
* Detect duplicates of UDP queries we are recursing on and drop them.
|
* Detect duplicates of UDP queries we are recursing on and drop them.
|
||||||
New stats category "duplicates".
|
New stats category "duplicates".
|
||||||
* "USE INTERNAL MALLOC" is now runtime selectable.
|
* "USE INTERNAL MALLOC" is now runtime selectable.
|
||||||
* The lame cache is now done on a <qname,qclass,qtype> basis as some
|
* The lame cache is now done on a basis as some servers only appear to
|
||||||
servers only appear to be lame for certain query types.
|
be lame for certain query types.
|
||||||
* Limit the number of recursive clients that can be waiting for a single
|
* Limit the number of recursive clients that can be waiting for a single
|
||||||
query (<qname,qtype,qclass>) to resolve. New options clients-per-query
|
query () to resolve. New options clients-per-query and
|
||||||
and max-clients-per-query.
|
max-clients-per-query.
|
||||||
* dig: report the number of extra bytes still left in the packet after
|
* dig: report the number of extra bytes still left in the packet after
|
||||||
processing all the records.
|
processing all the records.
|
||||||
* Support for IPSECKEY rdata type.
|
* Support for IPSECKEY rdata type.
|
||||||
|
|||||||
-75
@@ -10,81 +10,6 @@
|
|||||||
-->
|
-->
|
||||||
### Functional enhancements from prior major releases of BIND 9
|
### Functional enhancements from prior major releases of BIND 9
|
||||||
|
|
||||||
#### BIND 9.14
|
|
||||||
|
|
||||||
BIND 9.14 (a stable branch based on the 9.13 development branch)
|
|
||||||
includes a number of changes from BIND 9.12 and earlier releases.
|
|
||||||
New features include:
|
|
||||||
|
|
||||||
* A new "plugin" mechanism has been added to allow query functionality
|
|
||||||
to be extended using dynamically loadable libraries. The "filter-aaaa"
|
|
||||||
feature has been removed from named and is now implemented as a plugin.
|
|
||||||
* Socket and task code has been refactored to improve performance.
|
|
||||||
* QNAME minimization, as described in RFC 7816, is now supported.
|
|
||||||
* "Root key sentinel" support, enabling validating resolvers to indicate
|
|
||||||
via a special query which trust anchors are configured for the root zone.
|
|
||||||
* Secondary zones can now be configured as "mirror" zones; their contents
|
|
||||||
are transferred in as with traditional slave zones, but are subject to
|
|
||||||
DNSSEC validation and are not treated as authoritative data when
|
|
||||||
answering. This makes it easier to configure a local copy of the root
|
|
||||||
zone as described in RFC 7706.
|
|
||||||
* The "validate-except" option allows configuration of domains below which
|
|
||||||
DNSSEC validation should not be performed.
|
|
||||||
* The default value of "dnssec-validation" is now "auto".
|
|
||||||
* IDNA2008 is now supported when linking with `libidn2`.
|
|
||||||
* "named -V" now outputs the default paths for files used by named
|
|
||||||
and other tools.
|
|
||||||
|
|
||||||
In addition, workarounds that were formerly in place to enable resolution
|
|
||||||
of domains whose authoritative servers did not respond to EDNS queries
|
|
||||||
have been removed. See [https://dnsflagday.net](https://dnsflagday.net)
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
Cryptographic support has been modernized. BIND now uses the
|
|
||||||
best available pseudo-random number generator for the platform on which
|
|
||||||
it's built. Very old versions of OpenSSL are no longer supported.
|
|
||||||
Cryptography is now mandatory: building BIND without DNSSEC is no
|
|
||||||
longer supported.
|
|
||||||
|
|
||||||
Special code to support certain legacy operating systems has also
|
|
||||||
been removed; see the file [PLATFORMS.md](PLATFORMS.md) for details
|
|
||||||
of supported platforms. In addition to OpenSSL, BIND now requires
|
|
||||||
support for IPv6, threads, and standard atomic operations provided
|
|
||||||
by the C compiler.
|
|
||||||
|
|
||||||
#### BIND 9.12
|
|
||||||
|
|
||||||
BIND 9.12 includes a number of changes from BIND 9.11 and earlier releases.
|
|
||||||
New features include:
|
|
||||||
|
|
||||||
* `named` and related libraries have been substantially refactored for
|
|
||||||
improved query performance -- particularly on delegation heavy zones --
|
|
||||||
and for improved readability, maintainability, and testability.
|
|
||||||
* Code implementing the name server query processing logic has been moved
|
|
||||||
into a new `libns` library, for easier testing and use in tools other
|
|
||||||
than `named`.
|
|
||||||
* Cached, validated NSEC and other records can now be used to synthesize
|
|
||||||
NXDOMAIN responses.
|
|
||||||
* The DNS Response Policy Service API (DNSRPS) is now supported.
|
|
||||||
* Setting `'max-journal-size default'` now limits the size of journal files
|
|
||||||
to twice the size of the zone.
|
|
||||||
* `dnstap-read -x` prints a hex dump of the wire format of each logged
|
|
||||||
DNS message.
|
|
||||||
* `dnstap` output files can now be configured to roll automatically when
|
|
||||||
reaching a given size.
|
|
||||||
* Log file timestamps can now also be formatted in ISO 8601 (local) or ISO
|
|
||||||
8601 (UTC) formats.
|
|
||||||
* Logging channels and `dnstap` output files can now be configured to use a
|
|
||||||
timestamp as the suffix when rolling to a new file.
|
|
||||||
* `'named-checkconf -l'` lists zones found in `named.conf`.
|
|
||||||
* Added support for the EDNS Padding and Keepalive options.
|
|
||||||
* 'new-zones-directory' option sets the location where the configuration
|
|
||||||
data for zones added by rndc addzone is stored.
|
|
||||||
* The default key algorithm in `rndc-confgen` is now hmac-sha256.
|
|
||||||
* `filter-aaaa-on-v4` and `filter-aaaa-on-v6` options are now available
|
|
||||||
by default without a configure option.
|
|
||||||
* The obsolete `isc-hmac-fixup` command has been removed.
|
|
||||||
|
|
||||||
#### BIND 9.11
|
#### BIND 9.11
|
||||||
|
|
||||||
BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier
|
BIND 9.11.0 includes a number of changes from BIND 9.10 and earlier
|
||||||
|
|||||||
+26
-13
@@ -18,7 +18,11 @@ SUBDIRS = make lib fuzz bin doc
|
|||||||
TARGETS =
|
TARGETS =
|
||||||
PREREQS = bind.keys.h
|
PREREQS = bind.keys.h
|
||||||
|
|
||||||
MANOBJS = README HISTORY OPTIONS CONTRIBUTING PLATFORMS CODE_OF_CONDUCT \
|
MANPAGES = isc-config.sh.1
|
||||||
|
|
||||||
|
HTMLPAGES = isc-config.sh.html
|
||||||
|
|
||||||
|
MANOBJS = README HISTORY OPTIONS CONTRIBUTING PLATFORMS \
|
||||||
${MANPAGES} ${HTMLPAGES}
|
${MANPAGES} ${HTMLPAGES}
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
@BIND9_MAKE_RULES@
|
||||||
@@ -31,7 +35,7 @@ bind.keys.h: ${top_srcdir}/bind.keys ${srcdir}/util/bindkeys.pl
|
|||||||
|
|
||||||
distclean::
|
distclean::
|
||||||
rm -f config.cache config.h config.log config.status TAGS
|
rm -f config.cache config.h config.log config.status TAGS
|
||||||
rm -f libtool configure.lineno
|
rm -f libtool isc-config.sh configure.lineno
|
||||||
rm -f util/conf.sh docutil/docbook2man-wrapper.sh
|
rm -f util/conf.sh docutil/docbook2man-wrapper.sh
|
||||||
|
|
||||||
# XXX we should clean libtool stuff too. Only do this after we add rules
|
# XXX we should clean libtool stuff too. Only do this after we add rules
|
||||||
@@ -50,11 +54,25 @@ installdirs:
|
|||||||
${DESTDIR}${localstatedir}/run ${DESTDIR}${sysconfdir}
|
${DESTDIR}${localstatedir}/run ${DESTDIR}${sysconfdir}
|
||||||
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
|
||||||
|
|
||||||
install:: installdirs
|
install:: isc-config.sh installdirs
|
||||||
|
${INSTALL_SCRIPT} isc-config.sh ${DESTDIR}${bindir}
|
||||||
|
rm -f ${DESTDIR}${bindir}/bind9-config
|
||||||
|
@LN@ ${DESTDIR}${bindir}/isc-config.sh ${DESTDIR}${bindir}/bind9-config
|
||||||
|
${INSTALL_DATA} ${top_srcdir}/isc-config.sh.1 ${DESTDIR}${mandir}/man1
|
||||||
|
rm -f ${DESTDIR}${mandir}/man1/bind9-config.1
|
||||||
|
@LN@ ${DESTDIR}${mandir}/man1/isc-config.sh.1 ${DESTDIR}${mandir}/man1/bind9-config.1
|
||||||
${INSTALL_DATA} ${top_srcdir}/bind.keys ${DESTDIR}${sysconfdir}
|
${INSTALL_DATA} ${top_srcdir}/bind.keys ${DESTDIR}${sysconfdir}
|
||||||
|
|
||||||
uninstall::
|
uninstall::
|
||||||
rm -f ${DESTDIR}${sysconfdir}/bind.keys
|
rm -f ${DESTDIR}${sysconfdir}/bind.keys
|
||||||
|
rm -f ${DESTDIR}${mandir}/man1/bind9-config.1
|
||||||
|
rm -f ${DESTDIR}${mandir}/man1/isc-config.sh.1
|
||||||
|
rm -f ${DESTDIR}${bindir}/bind9-config
|
||||||
|
rm -f ${DESTDIR}${bindir}/isc-config.sh
|
||||||
|
|
||||||
|
tags:
|
||||||
|
rm -f TAGS
|
||||||
|
find lib bin -name "*.[ch]" -print | @ETAGS@ -
|
||||||
|
|
||||||
test check:
|
test check:
|
||||||
@if test -n "`${PERL} ${top_srcdir}/bin/tests/system/testsock.pl 2>/dev/null || echo fail`"; then \
|
@if test -n "`${PERL} ${top_srcdir}/bin/tests/system/testsock.pl 2>/dev/null || echo fail`"; then \
|
||||||
@@ -79,32 +97,27 @@ test-force:
|
|||||||
exit $$status
|
exit $$status
|
||||||
|
|
||||||
README: README.md
|
README: README.md
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="README" -f markdown-smart -t html README.md | \
|
${PANDOC} --email-obfuscation=none -s -t html README.md | \
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
HISTORY: HISTORY.md
|
HISTORY: HISTORY.md
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="HISTORY" -f markdown-smart -t html HISTORY.md | \
|
${PANDOC} --email-obfuscation=none -s -t html HISTORY.md | \
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
OPTIONS: OPTIONS.md
|
OPTIONS: OPTIONS.md
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="OPTIONS" -f markdown-smart -t html OPTIONS.md | \
|
${PANDOC} --email-obfuscation=none -s -t html OPTIONS.md | \
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
CONTRIBUTING: CONTRIBUTING.md
|
CONTRIBUTING: CONTRIBUTING.md
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="CONTRIBUTING" -f markdown-smart -t html CONTRIBUTING.md | \
|
${PANDOC} --email-obfuscation=none -s -t html CONTRIBUTING.md | \
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
PLATFORMS: PLATFORMS.md
|
PLATFORMS: PLATFORMS.md
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="PLATFORMS" -f markdown-smart -t html PLATFORMS.md | \
|
${PANDOC} --email-obfuscation=none -s -t html PLATFORMS.md | \
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
|
||||||
sed -e '$${/^$$/d;}' > $@
|
|
||||||
|
|
||||||
CODE_OF_CONDUCT: CODE_OF_CONDUCT.md
|
|
||||||
${PANDOC} --email-obfuscation=none -s --metadata title="CODE OF CONDUCT" -f markdown-smart -t html $< | \
|
|
||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
OPTIONS
|
|
||||||
|
|
||||||
Setting the STD_CDEFINES environment variable before running configure can
|
Setting the STD_CDEFINES environment variable before running configure can
|
||||||
be used to enable certain compile-time options that are not explicitly
|
be used to enable certain compile-time options that are not explicitly
|
||||||
defined in configure.
|
defined in configure.
|
||||||
|
|
||||||
Some of these settings are:
|
Some of these settings are:
|
||||||
|
|
||||||
Setting Description
|
Setting Description
|
||||||
Overwrite memory with tag values when allocating
|
Overwrite memory with tag values when allocating
|
||||||
-DISC_MEM_DEFAULTFILL=1 or freeing it; this impairs performance but
|
-DISC_MEM_DEFAULTFILL=1 or freeing it; this impairs performance but
|
||||||
makes debugging of memory problems easier.
|
makes debugging of memory problems easier.
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
PLATFORMS
|
|
||||||
|
|
||||||
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
|
||||||
@@ -15,50 +13,49 @@ offer support on a "best effort" basis for some.
|
|||||||
|
|
||||||
Regularly tested platforms
|
Regularly tested platforms
|
||||||
|
|
||||||
As of Feb 2019, BIND 9.15 is fully supported and regularly tested on the
|
As of May 2018, BIND 9.13 is tested on the following systems:
|
||||||
following systems:
|
|
||||||
|
|
||||||
* Debian 8, 9, 10
|
* Debian 8, 9
|
||||||
* Ubuntu 16.04, 18.04
|
* Ubuntu 16.04, 18.04
|
||||||
* Fedora 28, 29
|
* Fedora 27, 28
|
||||||
* Red Hat Enterprise Linux / CentOS 6, 7
|
* Red Hat/CentOS 6, 7
|
||||||
* FreeBSD 11.x
|
* FreeBSD 10.x, 11.x
|
||||||
* OpenBSD 6.2, 6.3
|
* OpenBSD 6.3
|
||||||
|
|
||||||
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
||||||
supported.
|
supported.
|
||||||
|
|
||||||
Best effort
|
Best effort
|
||||||
|
|
||||||
The following are platforms on which BIND is known to build and run. ISC
|
The following are platforms on which BIND is known to build and run, but
|
||||||
makes every effort to fix bugs on these platforms, but may be unable to do
|
on which it is not routinely tested. ISC makes every effort to fix bugs on
|
||||||
so quickly due to lack of hardware, less familiarity on the part of
|
these platforms, but may be unable to do so quickly due to lack of
|
||||||
engineering staff, and other constraints. With the exception of Windows
|
hardware, less familiarity on the part of engineering staff, and other
|
||||||
Server 2012 R2, none of these are tested regularly by ISC.
|
constraints.
|
||||||
|
|
||||||
* Windows Server 2012 R2, 2016 / x64
|
|
||||||
* Windows 10 / x64
|
* Windows 10 / x64
|
||||||
|
* Windows Server 2012 R2, 2016 / x64
|
||||||
* macOS 10.12+
|
* macOS 10.12+
|
||||||
* Solaris 11
|
* Solaris 10
|
||||||
* FreeBSD 10.x, 12.0+
|
* FreeBSD 12+
|
||||||
* OpenBSD 6.4+
|
* OpenBSD 6.2
|
||||||
* NetBSD
|
* NetBSD
|
||||||
* Other Linux distributions still supported by their vendors, such as:
|
* Older or less popular Linux distributions still supported by their
|
||||||
|
vendors, such as:
|
||||||
+ Ubuntu 14.04, 18.10+
|
+ Ubuntu 14.04, 18.10+
|
||||||
+ Gentoo
|
+ Gentoo
|
||||||
+ Arch Linux
|
+ ArchLinux
|
||||||
+ Alpine Linux
|
+ Alpine Linux
|
||||||
* OpenWRT/LEDE 17.01+
|
* OpenWRT/LEDE 17.0
|
||||||
* Other CPU architectures (mips, mipsel, sparc, ...)
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
Unsupported platforms
|
Unsupported platforms
|
||||||
|
|
||||||
These are platforms on which BIND 9.15 is known not to build or run:
|
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 and older
|
||||||
* Solaris 10 and older
|
|
||||||
* Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
|
* Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
|
||||||
* Platforms that don't support atomic operations (via compiler or
|
* Platforms that don't support atomic operations (via compiler or
|
||||||
library)
|
library)
|
||||||
@@ -66,10 +63,27 @@ These are platforms on which BIND 9.15 is known not to build or run:
|
|||||||
|
|
||||||
Platform quirks
|
Platform quirks
|
||||||
|
|
||||||
NetBSD 6 i386
|
ARM
|
||||||
|
|
||||||
The i386 build of NetBSD requires the libatomic library, available from
|
If the compilation ends with following error:
|
||||||
the gcc5-libs package. Because this library is in a non-standard path, its
|
|
||||||
location must be specified in the configure command line:
|
|
||||||
|
|
||||||
LDFLAGS="-L/usr/pkg/gcc5/i486--netbsdelf/lib/ -Wl,-R/usr/pkg/gcc5/i486--netbsdelf/lib/" ./configure
|
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
|
||||||
|
|||||||
+43
-26
@@ -23,61 +23,78 @@ offer support on a "best effort" basis for some.
|
|||||||
|
|
||||||
### Regularly tested platforms
|
### Regularly tested platforms
|
||||||
|
|
||||||
As of Feb 2019, BIND 9.15 is fully supported and regularly tested on the
|
As of May 2018, BIND 9.13 is tested on the following systems:
|
||||||
following systems:
|
|
||||||
|
|
||||||
* Debian 8, 9, 10
|
* Debian 8, 9
|
||||||
* Ubuntu 16.04, 18.04
|
* Ubuntu 16.04, 18.04
|
||||||
* Fedora 28, 29
|
* Fedora 27, 28
|
||||||
* Red Hat Enterprise Linux / CentOS 6, 7
|
* Red Hat/CentOS 6, 7
|
||||||
* FreeBSD 11.x
|
* FreeBSD 10.x, 11.x
|
||||||
* OpenBSD 6.2, 6.3
|
* OpenBSD 6.3
|
||||||
|
|
||||||
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
||||||
|
|
||||||
### Best effort
|
### Best effort
|
||||||
|
|
||||||
The following are platforms on which BIND is known to build and run.
|
The following are platforms on which BIND is known to build and run,
|
||||||
ISC makes every effort to fix bugs on these platforms, but may be unable to
|
but on which it is not routinely tested. ISC makes every effort to fix bugs
|
||||||
do so quickly due to lack of hardware, less familiarity on the part of
|
on these platforms, but may be unable to do so quickly due to lack of
|
||||||
engineering staff, and other constraints. With the exception of Windows
|
hardware, less familiarity on the part of engineering staff, and other
|
||||||
Server 2012 R2, none of these are tested regularly by ISC.
|
constraints.
|
||||||
|
|
||||||
* Windows Server 2012 R2, 2016 / x64
|
|
||||||
* Windows 10 / x64
|
* Windows 10 / x64
|
||||||
|
* Windows Server 2012 R2, 2016 / x64
|
||||||
* macOS 10.12+
|
* macOS 10.12+
|
||||||
* Solaris 11
|
* Solaris 10
|
||||||
* FreeBSD 10.x, 12.0+
|
* FreeBSD 12+
|
||||||
* OpenBSD 6.4+
|
* OpenBSD 6.2
|
||||||
* NetBSD
|
* NetBSD
|
||||||
* Other Linux distributions still supported by their vendors, such as:
|
* Older or less popular Linux distributions still supported by their vendors, such as:
|
||||||
* Ubuntu 14.04, 18.10+
|
* Ubuntu 14.04, 18.10+
|
||||||
* Gentoo
|
* Gentoo
|
||||||
* Arch Linux
|
* ArchLinux
|
||||||
* Alpine Linux
|
* Alpine Linux
|
||||||
* OpenWRT/LEDE 17.01+
|
* OpenWRT/LEDE 17.0
|
||||||
* Other CPU architectures (mips, mipsel, sparc, ...)
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
## Unsupported platforms
|
## Unsupported platforms
|
||||||
|
|
||||||
These are platforms on which BIND 9.15 is known *not* to build or run:
|
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 and older
|
||||||
* Solaris 10 and older
|
|
||||||
* Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
|
* Platforms that don't support IPv6 Advanced Socket API (RFC 3542)
|
||||||
* Platforms that don't support atomic operations (via compiler or library)
|
* Platforms that don't support atomic operations (via compiler or library)
|
||||||
* Linux without NPTL (Native POSIX Thread Library)
|
* Linux without NPTL (Native POSIX Thread Library)
|
||||||
|
|
||||||
## Platform quirks
|
## Platform quirks
|
||||||
|
|
||||||
### NetBSD 6 i386
|
### ARM
|
||||||
|
|
||||||
The i386 build of NetBSD requires the `libatomic` library, available from
|
If the compilation ends with following error:
|
||||||
the `gcc5-libs` package. Because this library is in a non-standard path,
|
|
||||||
its location must be specified in the `configure` command line:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
LDFLAGS="-L/usr/pkg/gcc5/i486--netbsdelf/lib/ -Wl,-R/usr/pkg/gcc5/i486--netbsdelf/lib/" ./configure
|
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
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
README
|
|
||||||
|
|
||||||
BIND 9
|
BIND 9
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
@@ -7,15 +5,14 @@ Contents
|
|||||||
1. Introduction
|
1. Introduction
|
||||||
2. Reporting bugs and getting help
|
2. Reporting bugs and getting help
|
||||||
3. Contributing to BIND
|
3. Contributing to BIND
|
||||||
4. BIND 9.15 features
|
4. BIND 9.13 features
|
||||||
5. Building BIND
|
5. Building BIND
|
||||||
6. macOS
|
6. macOS
|
||||||
7. Dependencies
|
7. Compile-time options
|
||||||
8. Compile-time options
|
8. Automated testing
|
||||||
9. Automated testing
|
9. Documentation
|
||||||
10. Documentation
|
10. Change log
|
||||||
11. Change log
|
11. Acknowledgments
|
||||||
12. Acknowledgments
|
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
|
|
||||||
@@ -39,7 +36,7 @@ in versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a
|
|||||||
501(c)(3) public benefit corporation dedicated to providing software and
|
501(c)(3) public benefit corporation dedicated to providing software and
|
||||||
services in support of the Internet infrastructure, developed BIND 9 and
|
services in support of the Internet infrastructure, developed BIND 9 and
|
||||||
is responsible for its ongoing maintenance and improvement. BIND is open
|
is responsible for its ongoing maintenance and improvement. BIND is open
|
||||||
source software licensed under the terms of the Mozilla Public License,
|
source software licenced under the terms of the Mozilla Public License,
|
||||||
version 2.0.
|
version 2.0.
|
||||||
|
|
||||||
For a summary of features introduced in past major releases of BIND, see
|
For a summary of features introduced in past major releases of BIND, see
|
||||||
@@ -87,9 +84,8 @@ ISC maintains a public git repository for BIND; details can be found at
|
|||||||
http://www.isc.org/git/.
|
http://www.isc.org/git/.
|
||||||
|
|
||||||
Information for BIND contributors can be found in the following files: -
|
Information for BIND contributors can be found in the following files: -
|
||||||
General information: CONTRIBUTING.md - Code of Conduct: CODE_OF_CONDUCT.md
|
General information: CONTRIBUTING.md - BIND 9 code style: doc/dev/style.md
|
||||||
- BIND 9 code style: doc/dev/style.md - BIND architecture and developer
|
- BIND architecture and developer guide: doc/dev/dev.md
|
||||||
guide: doc/dev/dev.md
|
|
||||||
|
|
||||||
Patches for BIND may be submitted as Merge Requests in the ISC GitLab
|
Patches for BIND may be submitted as Merge Requests in the ISC GitLab
|
||||||
server at at https://gitlab.isc.org/isc-projects/bind9/merge_requests.
|
server at at https://gitlab.isc.org/isc-projects/bind9/merge_requests.
|
||||||
@@ -103,13 +99,43 @@ If you prefer, you may also submit code by opening a GitLab Issue and
|
|||||||
including your patch as an attachment, preferably generated by git
|
including your patch as an attachment, preferably generated by git
|
||||||
format-patch.
|
format-patch.
|
||||||
|
|
||||||
BIND 9.15 features
|
BIND 9.13 features
|
||||||
|
|
||||||
BIND 9.15 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.14 and earlier releases. New features include:
|
of changes from BIND 9.12 and earlier releases. New features include:
|
||||||
|
|
||||||
* Support for the new GeoIP2 geolocation API
|
* A new "plugin" mechanism has been added to allow query functionality
|
||||||
* Improved DNSSEC key configuration using dnssec-keys
|
to be extended using dynamically loadable libraries. The "filter-aaaa"
|
||||||
|
feature has been removed from named and is now implemented as a
|
||||||
|
plugin.
|
||||||
|
* Socket and task code has been refactored to improve performance.
|
||||||
|
* QNAME minimization, as described in RFC 7816, is now supported.
|
||||||
|
* "Root key sentinel" support, enabling validating resolvers to indicate
|
||||||
|
via a special query which trust anchors are configured for the root
|
||||||
|
zone.
|
||||||
|
* Secondary zones can now be configured as "mirror" zones; their
|
||||||
|
contents are transferred in as with traditional slave zones, but are
|
||||||
|
subject to DNSSEC validation and are not treated as authoritative data
|
||||||
|
when answering. This makes it easier to configure a local copy of the
|
||||||
|
root zone as described in RFC 7706.
|
||||||
|
* The "validate-except" option allows configuration of domains below
|
||||||
|
which DNSSEC validation should not be performed.
|
||||||
|
* The default value of "dnssec-validation" is now "auto".
|
||||||
|
* IDNA2008 is now supported when linking with libidn2.
|
||||||
|
|
||||||
|
In addition, workarounds that were formerly in place to enable resolution
|
||||||
|
of domains whose authoritative servers did not respond to EDNS queries
|
||||||
|
have been removed. See https://dnsflagday.net for more details.
|
||||||
|
|
||||||
|
Cryptographic support has been modernized. BIND now uses the best
|
||||||
|
available pseudo-random number generator for the platform on which it's
|
||||||
|
built. Very old versions of OpenSSL are no longer supported. Cryptography
|
||||||
|
is now mandatory: building BIND without DNSSEC is 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
|
||||||
|
|
||||||
@@ -140,7 +166,7 @@ make depend. If you're using Emacs, you might find make tags helpful.
|
|||||||
Several environment variables that can be set before running configure
|
Several environment variables that can be set before running configure
|
||||||
will affect compilation:
|
will affect compilation:
|
||||||
|
|
||||||
Variable Description
|
Variable Description
|
||||||
CC The C compiler to use. configure tries to figure out the
|
CC The C compiler to use. configure tries to figure out the
|
||||||
right one for supported systems.
|
right one for supported systems.
|
||||||
C compiler flags. Defaults to include -g and/or -O2 as
|
C compiler flags. Defaults to include -g and/or -O2 as
|
||||||
@@ -168,21 +194,30 @@ if you have Xcode already installed you can run "xcode-select --install".
|
|||||||
This will add /usr/include to the system and install the compiler and
|
This will add /usr/include to the system and install the compiler and
|
||||||
other tools so that they can be easily found.
|
other tools so that they can be easily found.
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including dnssec-keymgr,
|
|
||||||
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
|
||||||
'argparse' and 'ply' modules to be available. 'argparse' is a standard
|
|
||||||
module as of Python 2.7 and Python 3.2. 'ply' is available from https://
|
|
||||||
pypi.python.org/pypi/ply.
|
|
||||||
|
|
||||||
Compile-time options
|
Compile-time options
|
||||||
|
|
||||||
To see a full list of configuration options, run configure --help.
|
To see a full list of configuration options, run configure --help.
|
||||||
|
|
||||||
|
On most platforms, BIND 9 is built with multithreading support, allowing
|
||||||
|
it to take advantage of multiple CPUs. You can configure this by
|
||||||
|
specifying --enable-threads or --disable-threads on the configure command
|
||||||
|
line. The default is to enable threads, except on some older operating
|
||||||
|
systems on which threads are known to have had problems in the past.
|
||||||
|
(Note: Prior to BIND 9.10, the default was to disable threads on Linux
|
||||||
|
systems; this has now been reversed. On Linux systems, the threaded build
|
||||||
|
is known to change BIND's behavior with respect to file permissions; it
|
||||||
|
may be necessary to specify a user with the -u option when running named.)
|
||||||
|
|
||||||
To build shared libraries, specify --with-libtool on the configure command
|
To build shared libraries, specify --with-libtool on the configure command
|
||||||
line.
|
line.
|
||||||
|
|
||||||
|
Certain compiled-in constants and default settings can be increased to
|
||||||
|
values better suited to large servers with abundant memory resources (e.g,
|
||||||
|
64-bit servers with 12G or more of memory) by specifying --with-tuning=
|
||||||
|
large on the configure command line. This can improve performance on big
|
||||||
|
servers, but will consume more memory and may degrade performance on
|
||||||
|
smaller systems.
|
||||||
|
|
||||||
For the server to support DNSSEC, you need to build it with crypto
|
For the server to support DNSSEC, you need to build it with crypto
|
||||||
support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
|
support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
|
||||||
installed. If the OpenSSL library is installed in a nonstandard location,
|
installed. If the OpenSSL library is installed in a nonstandard location,
|
||||||
@@ -193,10 +228,8 @@ operations, specify the path to the PKCS#11 provider library using
|
|||||||
|
|
||||||
To support the HTTP statistics channel, the server must be linked with at
|
To support the HTTP statistics channel, the server must be linked with at
|
||||||
least one of the following: libxml2 http://xmlsoft.org or json-c https://
|
least one of the following: libxml2 http://xmlsoft.org or json-c https://
|
||||||
github.com/json-c. If these are installed at a nonstandard location, then:
|
github.com/json-c. If these are installed at a nonstandard location,
|
||||||
|
specify the prefix using --with-libxml2=/prefix or --with-libjson=/prefix.
|
||||||
* for libxml2, specify the prefix using --with-libxml2=/prefix,
|
|
||||||
* for json-c, adjust PKG_CONFIG_PATH.
|
|
||||||
|
|
||||||
To support compression on the HTTP statistics channel, the server must be
|
To support compression on the HTTP statistics channel, the server must be
|
||||||
linked against libzlib. If this is installed in a nonstandard location,
|
linked against libzlib. If this is installed in a nonstandard location,
|
||||||
@@ -206,29 +239,27 @@ To support storing configuration data for runtime-added zones in an LMDB
|
|||||||
database, the server must be linked with liblmdb. If this is installed in
|
database, the server must be linked with liblmdb. If this is installed in
|
||||||
a nonstandard location, specify the prefix using with-lmdb=/prefix.
|
a nonstandard location, specify the prefix using with-lmdb=/prefix.
|
||||||
|
|
||||||
To support MaxMind GeoIP2 location-based ACLs, the server must be linked
|
To support GeoIP location-based ACLs, the server must be linked with
|
||||||
with libmaxminddb. This is turned on by default if the library is found;
|
libGeoIP. This is not turned on by default; BIND must be configured with
|
||||||
if the library is installed in a nonstandard location, specify the prefix
|
--with-geoip. If the library is installed in a nonstandard location,
|
||||||
using --with-maxminddb=/prefix. GeoIP2 support can be switched off with
|
specify the prefix using --with-geoip=/prefix.
|
||||||
--disable-geoip.
|
|
||||||
|
|
||||||
For DNSTAP packet logging, you must have installed libfstrm https://
|
For DNSTAP packet logging, you must have installed libfstrm https://
|
||||||
github.com/farsightsec/fstrm and libprotobuf-c https://
|
github.com/farsightsec/fstrm and libprotobuf-c https://
|
||||||
developers.google.com/protocol-buffers, and BIND must be configured with
|
developers.google.com/protocol-buffers, and BIND must be configured with
|
||||||
--enable-dnstap.
|
--enable-dnstap.
|
||||||
|
|
||||||
Certain compiled-in constants and default settings can be increased to
|
|
||||||
values better suited to large servers with abundant memory resources (e.g,
|
|
||||||
64-bit servers with 12G or more of memory) by specifying --with-tuning=
|
|
||||||
large on the configure command line. This can improve performance on big
|
|
||||||
servers, but will consume more memory and may degrade performance on
|
|
||||||
smaller systems.
|
|
||||||
|
|
||||||
On Linux, process capabilities are managed in user space using the libcap
|
On Linux, process capabilities are managed in user space using the libcap
|
||||||
library, which can be installed on most Linux systems via the libcap-dev
|
library, which can be installed on most Linux systems via the libcap-dev
|
||||||
or libcap-devel module. Process capability support can also be disabled by
|
or libcap-devel module. Process capability support can also be disabled by
|
||||||
configuring with --disable-linux-caps.
|
configuring with --disable-linux-caps.
|
||||||
|
|
||||||
|
Portions of BIND that are written in Python, including dnssec-keymgr,
|
||||||
|
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
||||||
|
'argparse' and 'ply' modules to be available. 'argparse' is a standard
|
||||||
|
module as of Python 2.7 and Python 3.2. 'ply' is available from https://
|
||||||
|
pypi.python.org/pypi/ply.
|
||||||
|
|
||||||
On some platforms it is necessary to explicitly request large file support
|
On some platforms it is necessary to explicitly request large file support
|
||||||
to handle files bigger than 2GB. This can be done by using
|
to handle files bigger than 2GB. This can be done by using
|
||||||
--enable-largefile on the configure command line.
|
--enable-largefile on the configure command line.
|
||||||
@@ -238,18 +269,17 @@ 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.
|
||||||
|
|
||||||
The --enable-querytrace option causes named to log every step of
|
|
||||||
processing every query. This should only be enabled when debugging,
|
|
||||||
because it has a significant negative impact on query performance.
|
|
||||||
|
|
||||||
make install will install named and the various BIND 9 libraries. By
|
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.
|
||||||
|
|
||||||
You may specify the option --sysconfdir to set the directory where
|
You may specify the option --sysconfdir to set the directory where
|
||||||
configuration files like named.conf go by default, and --localstatedir to
|
configuration files like named.conf go by default, and --localstatedir to
|
||||||
set the default parent directory of run/named.pid. --sysconfdir defaults
|
set the default parent directory of run/named.pid. For backwards
|
||||||
to $prefix/etc and --localstatedir defaults to $prefix/var.
|
compatibility with BIND 8, --sysconfdir defaults to /etc and
|
||||||
|
--localstatedir defaults to /var if no --prefix option is given. If there
|
||||||
|
is a --prefix option, sysconfdir defaults to $prefix/etc and localstatedir
|
||||||
|
defaults to $prefix/var.
|
||||||
|
|
||||||
Automated testing
|
Automated testing
|
||||||
|
|
||||||
@@ -292,7 +322,7 @@ development BIND 9 is included in the file CHANGES, with the most recent
|
|||||||
changes listed first. Change notes include tags indicating the category of
|
changes listed first. Change notes include tags indicating the category of
|
||||||
the change that was made; these categories are:
|
the change that was made; these categories are:
|
||||||
|
|
||||||
Category Description
|
Category Description
|
||||||
[func] New feature
|
[func] New feature
|
||||||
[bug] General bug fix
|
[bug] General bug fix
|
||||||
[security] Fix for a significant security flaw
|
[security] Fix for a significant security flaw
|
||||||
@@ -320,46 +350,26 @@ releases (i.e., those with version numbers ending in zero). Some new
|
|||||||
functionality may be backported to older releases on a case-by-case basis.
|
functionality may be backported to older releases on a case-by-case basis.
|
||||||
All other change types may be applied to all currently-supported releases.
|
All other change types may be applied to all currently-supported releases.
|
||||||
|
|
||||||
Bug report identifiers
|
|
||||||
|
|
||||||
Most notes in the CHANGES file include a reference to a bug report or
|
|
||||||
issue number. Prior to 2018, these were usually of the form [RT #NNN] and
|
|
||||||
referred to entries in the "bind9-bugs" RT database, which was not open to
|
|
||||||
the public. More recent entries use the form [GL #NNN] or, less often, [GL
|
|
||||||
!NNN], which, respectively, refer to issues or merge requests in the
|
|
||||||
Gitlab database. Most of these are publicly readable, unless they include
|
|
||||||
information which is confidential or security senstive.
|
|
||||||
|
|
||||||
To look up a Gitlab issue by its number, use the URL https://
|
|
||||||
gitlab.isc.org/isc-projects/bind9/issues/NNN. To look up a merge request,
|
|
||||||
use https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN.
|
|
||||||
|
|
||||||
In rare cases, an issue or merge request number may be followed with the
|
|
||||||
letter "P". This indicates that the information is in the private ISC
|
|
||||||
Gitlab instance, which is not visible to the public.
|
|
||||||
|
|
||||||
Acknowledgments
|
Acknowledgments
|
||||||
|
|
||||||
* The original development of BIND 9 was underwritten by the following
|
* The original development of BIND 9 was underwritten by the following
|
||||||
organizations:
|
organizations:
|
||||||
|
|
||||||
Sun Microsystems, Inc.
|
Sun Microsystems, Inc.
|
||||||
Hewlett Packard
|
Hewlett Packard
|
||||||
Compaq Computer Corporation
|
Compaq Computer Corporation
|
||||||
IBM
|
IBM
|
||||||
Process Software Corporation
|
Process Software Corporation
|
||||||
Silicon Graphics, Inc.
|
Silicon Graphics, Inc.
|
||||||
Network Associates, Inc.
|
Network Associates, Inc.
|
||||||
U.S. Defense Information Systems Agency
|
U.S. Defense Information Systems Agency
|
||||||
USENIX Association
|
USENIX Association
|
||||||
Stichting NLnet - NLnet Foundation
|
Stichting NLnet - NLnet Foundation
|
||||||
Nominum, Inc.
|
Nominum, Inc.
|
||||||
|
|
||||||
* This product includes software developed by the OpenSSL Project for
|
* This product includes software developed by the OpenSSL Project for
|
||||||
use in the OpenSSL Toolkit. http://www.OpenSSL.org/
|
use in the OpenSSL Toolkit. http://www.OpenSSL.org/
|
||||||
|
|
||||||
* This product includes cryptographic software written by Eric Young
|
* This product includes cryptographic software written by Eric Young
|
||||||
(eay@cryptsoft.com)
|
(eay@cryptsoft.com)
|
||||||
|
|
||||||
* This product includes software written by Tim Hudson
|
* This product includes software written by Tim Hudson
|
||||||
(tjh@cryptsoft.com)
|
(tjh@cryptsoft.com)
|
||||||
|
|||||||
@@ -15,10 +15,9 @@
|
|||||||
1. [Introduction](#intro)
|
1. [Introduction](#intro)
|
||||||
1. [Reporting bugs and getting help](#help)
|
1. [Reporting bugs and getting help](#help)
|
||||||
1. [Contributing to BIND](#contrib)
|
1. [Contributing to BIND](#contrib)
|
||||||
1. [BIND 9.15 features](#features)
|
1. [BIND 9.13 features](#features)
|
||||||
1. [Building BIND](#build)
|
1. [Building BIND](#build)
|
||||||
1. [macOS](#macos)
|
1. [macOS](#macos)
|
||||||
1. [Dependencies](#dependencies)
|
|
||||||
1. [Compile-time options](#opts)
|
1. [Compile-time options](#opts)
|
||||||
1. [Automated testing](#testing)
|
1. [Automated testing](#testing)
|
||||||
1. [Documentation](#doc)
|
1. [Documentation](#doc)
|
||||||
@@ -48,7 +47,7 @@ used in versions 4 and 8. Internet Systems Consortium
|
|||||||
corporation dedicated to providing software and services in support of the
|
corporation dedicated to providing software and services in support of the
|
||||||
Internet infrastructure, developed BIND 9 and is responsible for its
|
Internet infrastructure, developed BIND 9 and is responsible for its
|
||||||
ongoing maintenance and improvement. BIND is open source software
|
ongoing maintenance and improvement. BIND is open source software
|
||||||
licensed under the terms of the Mozilla Public License, version 2.0.
|
licenced under the terms of the Mozilla Public License, version 2.0.
|
||||||
|
|
||||||
For a summary of features introduced in past major releases of BIND,
|
For a summary of features introduced in past major releases of BIND,
|
||||||
see the file [HISTORY](HISTORY.md).
|
see the file [HISTORY](HISTORY.md).
|
||||||
@@ -98,8 +97,7 @@ ISC maintains a public git repository for BIND; details can be found
|
|||||||
at [http://www.isc.org/git/](http://www.isc.org/git/).
|
at [http://www.isc.org/git/](http://www.isc.org/git/).
|
||||||
|
|
||||||
Information for BIND contributors can be found in the following files:
|
Information for BIND contributors can be found in the following files:
|
||||||
- General information: [CONTRIBUTING.md](CONTRIBUTING.md)
|
- General information: [CONTRIBUTING.md](CONTRIBUTING)
|
||||||
- Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
|
|
||||||
- BIND 9 code style: [doc/dev/style.md](doc/dev/style.md)
|
- BIND 9 code style: [doc/dev/style.md](doc/dev/style.md)
|
||||||
- BIND architecture and developer guide: [doc/dev/dev.md](doc/dev/dev.md)
|
- BIND architecture and developer guide: [doc/dev/dev.md](doc/dev/dev.md)
|
||||||
|
|
||||||
@@ -118,15 +116,45 @@ If you prefer, you may also submit code by opening a
|
|||||||
including your patch as an attachment, preferably generated by
|
including your patch as an attachment, preferably generated by
|
||||||
`git format-patch`.
|
`git format-patch`.
|
||||||
|
|
||||||
### <a name="features"/> BIND 9.15 features
|
### <a name="features"/> BIND 9.13 features
|
||||||
|
|
||||||
BIND 9.15 is the newest development branch of BIND 9. It includes a
|
BIND 9.13 is the newest development branch of BIND 9. It includes a
|
||||||
number of changes from BIND 9.14 and earlier releases. New features
|
number of changes from BIND 9.12 and earlier releases. New features
|
||||||
include:
|
include:
|
||||||
|
|
||||||
* Support for the new GeoIP2 geolocation API
|
* A new "plugin" mechanism has been added to allow query functionality
|
||||||
* Improved DNSSEC key configuration using `dnssec-keys`
|
to be extended using dynamically loadable libraries. The "filter-aaaa"
|
||||||
* YAML output for dig, mdig, and delv.
|
feature has been removed from named and is now implemented as a plugin.
|
||||||
|
* Socket and task code has been refactored to improve performance.
|
||||||
|
* QNAME minimization, as described in RFC 7816, is now supported.
|
||||||
|
* "Root key sentinel" support, enabling validating resolvers to indicate
|
||||||
|
via a special query which trust anchors are configured for the root zone.
|
||||||
|
* Secondary zones can now be configured as "mirror" zones; their contents
|
||||||
|
are transferred in as with traditional slave zones, but are subject to
|
||||||
|
DNSSEC validation and are not treated as authoritative data when
|
||||||
|
answering. This makes it easier to configure a local copy of the root
|
||||||
|
zone as described in RFC 7706.
|
||||||
|
* The "validate-except" option allows configuration of domains below which
|
||||||
|
DNSSEC validation should not be performed.
|
||||||
|
* The default value of "dnssec-validation" is now "auto".
|
||||||
|
* IDNA2008 is now supported when linking with `libidn2`.
|
||||||
|
|
||||||
|
In addition, workarounds that were formerly in place to enable resolution
|
||||||
|
of domains whose authoritative servers did not respond to EDNS queries
|
||||||
|
have been removed. See [https://dnsflagday.net](https://dnsflagday.net)
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Cryptographic support has been modernized. BIND now uses the
|
||||||
|
best available pseudo-random number generator for the platform on which
|
||||||
|
it's built. Very old versions of OpenSSL are no longer supported.
|
||||||
|
Cryptography is now mandatory: building BIND without DNSSEC is now
|
||||||
|
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
|
||||||
|
|
||||||
@@ -179,21 +207,31 @@ or if you have Xcode already installed you can run "xcode-select --install".
|
|||||||
This will add /usr/include to the system and install the compiler and other
|
This will add /usr/include to the system and install the compiler and other
|
||||||
tools so that they can be easily found.
|
tools so that they can be easily found.
|
||||||
|
|
||||||
### <a name="dependencies"/> Dependencies
|
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including
|
|
||||||
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
|
||||||
system tests, require the 'argparse' and 'ply' modules to be available.
|
|
||||||
'argparse' is a standard module as of Python 2.7 and Python 3.2.
|
|
||||||
'ply' is available from [https://pypi.python.org/pypi/ply](https://pypi.python.org/pypi/ply).
|
|
||||||
|
|
||||||
#### <a name="opts"/> Compile-time options
|
#### <a name="opts"/> Compile-time options
|
||||||
|
|
||||||
To see a full list of configuration options, run `configure --help`.
|
To see a full list of configuration options, run `configure --help`.
|
||||||
|
|
||||||
|
On most platforms, BIND 9 is built with multithreading support, allowing it
|
||||||
|
to take advantage of multiple CPUs. You can configure this by specifying
|
||||||
|
`--enable-threads` or `--disable-threads` on the `configure` command line.
|
||||||
|
The default is to enable threads, except on some older operating systems on
|
||||||
|
which threads are known to have had problems in the past. (Note: Prior to
|
||||||
|
BIND 9.10, the default was to disable threads on Linux systems; this has
|
||||||
|
now been reversed. On Linux systems, the threaded build is known to change
|
||||||
|
BIND's behavior with respect to file permissions; it may be necessary to
|
||||||
|
specify a user with the -u option when running `named`.)
|
||||||
|
|
||||||
To build shared libraries, specify `--with-libtool` on the `configure`
|
To build shared libraries, specify `--with-libtool` on the `configure`
|
||||||
command line.
|
command line.
|
||||||
|
|
||||||
|
Certain compiled-in constants and default settings can be increased to
|
||||||
|
values better suited to large servers with abundant memory resources (e.g,
|
||||||
|
64-bit servers with 12G or more of memory) by specifying
|
||||||
|
`--with-tuning=large` on the `configure` command line. This can improve
|
||||||
|
performance on big servers, but will consume more memory and may degrade
|
||||||
|
performance on smaller systems.
|
||||||
|
|
||||||
For the server to support DNSSEC, you need to build it with crypto support.
|
For the server to support DNSSEC, you need to build it with crypto support.
|
||||||
To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the
|
To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the
|
||||||
OpenSSL library is installed in a nonstandard location, specify the prefix
|
OpenSSL library is installed in a nonstandard location, specify the prefix
|
||||||
@@ -206,10 +244,8 @@ To support the HTTP statistics channel, the server must be linked with at
|
|||||||
least one of the following: libxml2
|
least one of the following: libxml2
|
||||||
[http://xmlsoft.org](http://xmlsoft.org) or json-c
|
[http://xmlsoft.org](http://xmlsoft.org) or json-c
|
||||||
[https://github.com/json-c](https://github.com/json-c). If these are
|
[https://github.com/json-c](https://github.com/json-c). If these are
|
||||||
installed at a nonstandard location, then:
|
installed at a nonstandard location, specify the prefix using
|
||||||
|
`--with-libxml2=/prefix` or `--with-libjson=/prefix`.
|
||||||
* for libxml2, specify the prefix using `--with-libxml2=/prefix`,
|
|
||||||
* for json-c, adjust `PKG_CONFIG_PATH`.
|
|
||||||
|
|
||||||
To support compression on the HTTP statistics channel, the server must be
|
To support compression on the HTTP statistics channel, the server must be
|
||||||
linked against libzlib. If this is installed in a nonstandard location,
|
linked against libzlib. If this is installed in a nonstandard location,
|
||||||
@@ -219,11 +255,10 @@ To support storing configuration data for runtime-added zones in an LMDB
|
|||||||
database, the server must be linked with liblmdb. If this is installed in a
|
database, the server must be linked with liblmdb. If this is installed in a
|
||||||
nonstandard location, specify the prefix using `with-lmdb=/prefix`.
|
nonstandard location, specify the prefix using `with-lmdb=/prefix`.
|
||||||
|
|
||||||
To support MaxMind GeoIP2 location-based ACLs, the server must be linked
|
To support GeoIP location-based ACLs, the server must be linked with
|
||||||
with `libmaxminddb`. This is turned on by default if the library is
|
libGeoIP. This is not turned on by default; BIND must be configured with
|
||||||
found; if the library is installed in a nonstandard location,
|
`--with-geoip`. If the library is installed in a nonstandard location,
|
||||||
specify the prefix using `--with-maxminddb=/prefix`. GeoIP2 support
|
specify the prefix using `--with-geoip=/prefix`.
|
||||||
can be switched off with `--disable-geoip`.
|
|
||||||
|
|
||||||
For DNSTAP packet logging, you must have installed libfstrm
|
For DNSTAP packet logging, you must have installed libfstrm
|
||||||
[https://github.com/farsightsec/fstrm](https://github.com/farsightsec/fstrm)
|
[https://github.com/farsightsec/fstrm](https://github.com/farsightsec/fstrm)
|
||||||
@@ -231,18 +266,17 @@ and libprotobuf-c
|
|||||||
[https://developers.google.com/protocol-buffers](https://developers.google.com/protocol-buffers),
|
[https://developers.google.com/protocol-buffers](https://developers.google.com/protocol-buffers),
|
||||||
and BIND must be configured with `--enable-dnstap`.
|
and BIND must be configured with `--enable-dnstap`.
|
||||||
|
|
||||||
Certain compiled-in constants and default settings can be increased to
|
|
||||||
values better suited to large servers with abundant memory resources (e.g,
|
|
||||||
64-bit servers with 12G or more of memory) by specifying
|
|
||||||
`--with-tuning=large` on the `configure` command line. This can improve
|
|
||||||
performance on big servers, but will consume more memory and may degrade
|
|
||||||
performance on smaller systems.
|
|
||||||
|
|
||||||
On Linux, process capabilities are managed in user space using
|
On Linux, process capabilities are managed in user space using
|
||||||
the `libcap` library, which can be installed on most Linux systems via
|
the `libcap` library, which can be installed on most Linux systems via
|
||||||
the `libcap-dev` or `libcap-devel` module. Process capability support can
|
the `libcap-dev` or `libcap-devel` module. Process capability support can
|
||||||
also be disabled by configuring with `--disable-linux-caps`.
|
also be disabled by configuring with `--disable-linux-caps`.
|
||||||
|
|
||||||
|
Portions of BIND that are written in Python, including
|
||||||
|
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
||||||
|
system tests, require the 'argparse' and 'ply' modules to be available.
|
||||||
|
'argparse' is a standard module as of Python 2.7 and Python 3.2.
|
||||||
|
'ply' is available from [https://pypi.python.org/pypi/ply](https://pypi.python.org/pypi/ply).
|
||||||
|
|
||||||
On some platforms it is necessary to explicitly request large file support
|
On some platforms it is necessary to explicitly request large file support
|
||||||
to handle files bigger than 2GB. This can be done by using
|
to handle files bigger than 2GB. This can be done by using
|
||||||
`--enable-largefile` on the `configure` command line.
|
`--enable-largefile` on the `configure` command line.
|
||||||
@@ -252,18 +286,17 @@ 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.
|
||||||
|
|
||||||
The `--enable-querytrace` option causes `named` to log every step of
|
|
||||||
processing every query. This should only be enabled when debugging, because
|
|
||||||
it has a significant negative impact on query performance.
|
|
||||||
|
|
||||||
`make install` will install `named` and the various BIND 9 libraries. By
|
`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`.
|
||||||
|
|
||||||
You may specify the option `--sysconfdir` to set the directory where
|
You may specify the option `--sysconfdir` to set the directory where
|
||||||
configuration files like `named.conf` go by default, and `--localstatedir`
|
configuration files like `named.conf` go by default, and `--localstatedir`
|
||||||
to set the default parent directory of `run/named.pid`. `--sysconfdir`
|
to set the default parent directory of `run/named.pid`. For backwards
|
||||||
defaults to `$prefix/etc` and `--localstatedir` defaults to `$prefix/var`.
|
compatibility with BIND 8, `--sysconfdir` defaults to `/etc` and
|
||||||
|
`--localstatedir` defaults to `/var` if no `--prefix` option is given. If
|
||||||
|
there is a `--prefix` option, sysconfdir defaults to `$prefix/etc` and
|
||||||
|
localstatedir defaults to `$prefix/var`.
|
||||||
|
|
||||||
### <a name="testing"/> Automated testing
|
### <a name="testing"/> Automated testing
|
||||||
|
|
||||||
@@ -329,25 +362,6 @@ releases (i.e., those with version numbers ending in zero). Some new
|
|||||||
functionality may be backported to older releases on a case-by-case basis.
|
functionality may be backported to older releases on a case-by-case basis.
|
||||||
All other change types may be applied to all currently-supported releases.
|
All other change types may be applied to all currently-supported releases.
|
||||||
|
|
||||||
#### Bug report identifiers
|
|
||||||
|
|
||||||
Most notes in the CHANGES file include a reference to a bug report or
|
|
||||||
issue number. Prior to 2018, these were usually of the form `[RT #NNN]`
|
|
||||||
and referred to entries in the "bind9-bugs" RT database, which was not open
|
|
||||||
to the public. More recent entries use the form `[GL #NNN]` or, less often,
|
|
||||||
`[GL !NNN]`, which, respectively, refer to issues or merge requests in the
|
|
||||||
Gitlab database. Most of these are publicly readable, unless they include
|
|
||||||
information which is confidential or security senstive.
|
|
||||||
|
|
||||||
To look up a Gitlab issue by its number, use the URL
|
|
||||||
[https://gitlab.isc.org/isc-projects/bind9/issues/NNN](https://gitlab.isc.org/isc-projects/bind9/issues).
|
|
||||||
To look up a merge request, use
|
|
||||||
[https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN](https://gitlab.isc.org/isc-projects/bind9/merge_requests).
|
|
||||||
|
|
||||||
In rare cases, an issue or merge request number may be followed with the
|
|
||||||
letter "P". This indicates that the information is in the private ISC
|
|
||||||
Gitlab instance, which is not visible to the public.
|
|
||||||
|
|
||||||
### <a name="ack"/> Acknowledgments
|
### <a name="ack"/> Acknowledgments
|
||||||
|
|
||||||
* The original development of BIND 9 was underwritten by the
|
* The original development of BIND 9 was underwritten by the
|
||||||
|
|||||||
Vendored
-89
@@ -288,98 +288,9 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
|
|||||||
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||||
])dnl PKG_CHECK_VAR
|
])dnl PKG_CHECK_VAR
|
||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
|
||||||
# -------------------------------------
|
|
||||||
# Define a conditional.
|
|
||||||
AC_DEFUN([AM_CONDITIONAL],
|
|
||||||
[AC_PREREQ([2.52])dnl
|
|
||||||
m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
|
||||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
|
||||||
AC_SUBST([$1_TRUE])dnl
|
|
||||||
AC_SUBST([$1_FALSE])dnl
|
|
||||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
|
||||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
|
||||||
m4_define([_AM_COND_VALUE_$1], [$2])dnl
|
|
||||||
if $2; then
|
|
||||||
$1_TRUE=
|
|
||||||
$1_FALSE='#'
|
|
||||||
else
|
|
||||||
$1_TRUE='#'
|
|
||||||
$1_FALSE=
|
|
||||||
fi
|
|
||||||
AC_CONFIG_COMMANDS_PRE(
|
|
||||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
|
||||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
|
||||||
Usually this means the macro was only invoked conditionally.]])
|
|
||||||
fi])])
|
|
||||||
|
|
||||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
|
||||||
# From Jim Meyering
|
|
||||||
|
|
||||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_MAINTAINER_MODE([DEFAULT-MODE])
|
|
||||||
# ----------------------------------
|
|
||||||
# Control maintainer-specific portions of Makefiles.
|
|
||||||
# Default is to disable them, unless 'enable' is passed literally.
|
|
||||||
# For symmetry, 'disable' may be passed as well. Anyway, the user
|
|
||||||
# can override the default with the --enable/--disable switch.
|
|
||||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
|
||||||
[m4_case(m4_default([$1], [disable]),
|
|
||||||
[enable], [m4_define([am_maintainer_other], [disable])],
|
|
||||||
[disable], [m4_define([am_maintainer_other], [enable])],
|
|
||||||
[m4_define([am_maintainer_other], [enable])
|
|
||||||
m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
|
|
||||||
AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
|
||||||
dnl maintainer-mode's default is 'disable' unless 'enable' is passed
|
|
||||||
AC_ARG_ENABLE([maintainer-mode],
|
|
||||||
[AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
|
|
||||||
am_maintainer_other[ make rules and dependencies not useful
|
|
||||||
(and sometimes confusing) to the casual installer])],
|
|
||||||
[USE_MAINTAINER_MODE=$enableval],
|
|
||||||
[USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
|
|
||||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
|
||||||
AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
|
|
||||||
MAINT=$MAINTAINER_MODE_TRUE
|
|
||||||
AC_SUBST([MAINT])dnl
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
# Copyright (C) 2006-2018 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
|
||||||
# ---------------------------
|
|
||||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
|
||||||
# This macro is traced by Automake.
|
|
||||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
|
||||||
|
|
||||||
# AM_SUBST_NOTMAKE(VARIABLE)
|
|
||||||
# --------------------------
|
|
||||||
# Public sister of _AM_SUBST_NOTMAKE.
|
|
||||||
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|
||||||
|
|
||||||
m4_include([m4/ax_check_compile_flag.m4])
|
|
||||||
m4_include([m4/ax_check_openssl.m4])
|
m4_include([m4/ax_check_openssl.m4])
|
||||||
m4_include([m4/ax_posix_shell.m4])
|
m4_include([m4/ax_posix_shell.m4])
|
||||||
m4_include([m4/ax_pthread.m4])
|
m4_include([m4/ax_pthread.m4])
|
||||||
m4_include([m4/ax_restore_flags.m4])
|
|
||||||
m4_include([m4/ax_save_flags.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])
|
||||||
|
|||||||
@@ -16,16 +16,15 @@ VERSION=@BIND9_VERSION@
|
|||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = ${NS_INCLUDES} ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISCCFG_INCLUDES} \
|
CINCLUDES = ${NS_INCLUDES} ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISCCFG_INCLUDES} \
|
||||||
${ISC_INCLUDES} \
|
${ISC_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
${OPENSSL_CFLAGS}
|
|
||||||
|
|
||||||
CDEFINES = -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
CDEFINES = -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
NSLIBS = ../../lib/ns/libns.@A@
|
NSLIBS = ../../lib/ns/libns.@A@
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
@@ -140,6 +142,8 @@ add(char *key, int value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
key = isc_mem_strdup(sym_mctx, key);
|
key = isc_mem_strdup(sym_mctx, key);
|
||||||
|
if (key == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
symvalue.as_pointer = NULL;
|
symvalue.as_pointer = NULL;
|
||||||
result = isc_symtab_define(symtab, key, value, symvalue,
|
result = isc_symtab_define(symtab, key, value, symvalue,
|
||||||
@@ -664,7 +668,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
|
|||||||
origin = dns_fixedname_initname(&fixorigin);
|
origin = dns_fixedname_initname(&fixorigin);
|
||||||
CHECK(dns_name_fromtext(origin, &buffer, dns_rootname, 0, NULL));
|
CHECK(dns_name_fromtext(origin, &buffer, dns_rootname, 0, NULL));
|
||||||
CHECK(dns_zone_setorigin(zone, origin));
|
CHECK(dns_zone_setorigin(zone, origin));
|
||||||
dns_zone_setdbtype(zone, 1, (const char * const *) dbtype);
|
CHECK(dns_zone_setdbtype(zone, 1, (const char * const *) dbtype));
|
||||||
CHECK(dns_zone_setfile(zone, filename, fileformat,
|
CHECK(dns_zone_setfile(zone, filename, fileformat,
|
||||||
&dns_master_style_default));
|
&dns_master_style_default));
|
||||||
if (journal != NULL)
|
if (journal != NULL)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -86,11 +86,6 @@ Check "core" configuration only\&. This suppresses the loading of plugin modules
|
|||||||
statements to be ignored\&.
|
statements to be ignored\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-i
|
|
||||||
.RS 4
|
|
||||||
Ignore warnings on deprecated options\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-p
|
\-p
|
||||||
.RS 4
|
.RS 4
|
||||||
Print out the
|
Print out the
|
||||||
@@ -148,5 +143,5 @@ BIND 9 Administrator Reference Manual\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -28,7 +30,6 @@
|
|||||||
#include <isc/util.h>
|
#include <isc/util.h>
|
||||||
|
|
||||||
#include <isccfg/namedconf.h>
|
#include <isccfg/namedconf.h>
|
||||||
#include <isccfg/grammar.h>
|
|
||||||
|
|
||||||
#include <bind9/check.h>
|
#include <bind9/check.h>
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ usage(void) ISC_PLATFORM_NORETURN_POST;
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void) {
|
usage(void) {
|
||||||
fprintf(stderr, "usage: %s [-chijlvz] [-p [-x]] [-t directory] "
|
fprintf(stderr, "usage: %s [-hjlvz] [-p [-x]] [-t directory] "
|
||||||
"[named.conf]\n", program);
|
"[named.conf]\n", program);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -556,7 +557,6 @@ main(int argc, char **argv) {
|
|||||||
bool load_zones = false;
|
bool load_zones = false;
|
||||||
bool list_zones = false;
|
bool list_zones = false;
|
||||||
bool print = false;
|
bool print = false;
|
||||||
bool nodeprecate = false;
|
|
||||||
unsigned int flags = 0;
|
unsigned int flags = 0;
|
||||||
|
|
||||||
isc_commandline_errprint = false;
|
isc_commandline_errprint = false;
|
||||||
@@ -564,7 +564,7 @@ main(int argc, char **argv) {
|
|||||||
/*
|
/*
|
||||||
* Process memory debugging argument first.
|
* Process memory debugging argument first.
|
||||||
*/
|
*/
|
||||||
#define CMDLINE_FLAGS "cdhijlm:t:pvxz"
|
#define CMDLINE_FLAGS "cdhjlm:t:pvxz"
|
||||||
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'm':
|
case 'm':
|
||||||
@@ -597,10 +597,6 @@ main(int argc, char **argv) {
|
|||||||
debug++;
|
debug++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'i':
|
|
||||||
nodeprecate = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'j':
|
case 'j':
|
||||||
nomerge = false;
|
nomerge = false;
|
||||||
break;
|
break;
|
||||||
@@ -681,16 +677,11 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
RUNTIME_CHECK(cfg_parser_create(mctx, logc, &parser) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(cfg_parser_create(mctx, logc, &parser) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
if (nodeprecate) {
|
|
||||||
cfg_parser_setflags(parser, CFG_PCTX_NODEPRECATED, true);
|
|
||||||
}
|
|
||||||
cfg_parser_setcallback(parser, directory_callback, NULL);
|
cfg_parser_setcallback(parser, directory_callback, NULL);
|
||||||
|
|
||||||
if (cfg_parse_file(parser, conffile, &cfg_type_namedconf, &config) !=
|
if (cfg_parse_file(parser, conffile, &cfg_type_namedconf, &config) !=
|
||||||
ISC_R_SUCCESS)
|
ISC_R_SUCCESS)
|
||||||
{
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
|
||||||
|
|
||||||
result = bind9_check_namedconf(config, loadplugins, logc, mctx);
|
result = bind9_check_namedconf(config, loadplugins, logc, mctx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -126,15 +125,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-i</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Ignore warnings on deprecated options.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-p</term>
|
<term>-p</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -96,12 +96,6 @@
|
|||||||
<span class="command"><strong>plugin</strong></span> statements to be ignored.
|
<span class="command"><strong>plugin</strong></span> statements to be ignored.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-i</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Ignore warnings on deprecated options.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-p</span></dt>
|
<dt><span class="term">-p</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -325,5 +325,5 @@ BIND 9 Administrator Reference Manual\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2000-2002, 2004-2007, 2009-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004-2007, 2009-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -90,7 +89,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -65,7 +65,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\ns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\ns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -89,7 +88,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\ns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\ns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -96,7 +95,6 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ CWARNINGS =
|
|||||||
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -144,5 +144,5 @@ BIND 9 Administrator Reference Manual\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
* and the corresponding key and update-policy statements in named.conf.
|
* and the corresponding key and update-policy statements in named.conf.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -222,6 +224,8 @@ main(int argc, char **argv) {
|
|||||||
if (suffix != NULL) {
|
if (suffix != NULL) {
|
||||||
len = strlen(keyname) + strlen(suffix) + 2;
|
len = strlen(keyname) + strlen(suffix) + 2;
|
||||||
keybuf = isc_mem_get(mctx, len);
|
keybuf = isc_mem_get(mctx, len);
|
||||||
|
if (keybuf == NULL)
|
||||||
|
fatal("failed to allocate memory for keyname");
|
||||||
snprintf(keybuf, len, "%s.%s", keyname, suffix);
|
snprintf(keybuf, len, "%s.%s", keyname, suffix);
|
||||||
keyname = (const char *) keybuf;
|
keyname = (const char *) keybuf;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2009, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -206,5 +206,5 @@ BIND 9 Administrator Reference Manual\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2001, 2003-2005, 2007, 2009, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2001, 2003-2005, 2007, 2009, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
* controls statement altogether.
|
* controls statement altogether.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -222,6 +224,8 @@ main(int argc, char **argv) {
|
|||||||
char *buf;
|
char *buf;
|
||||||
len = strlen(chrootdir) + strlen(keyfile) + 2;
|
len = strlen(chrootdir) + strlen(keyfile) + 2;
|
||||||
buf = isc_mem_get(mctx, len);
|
buf = isc_mem_get(mctx, len);
|
||||||
|
if (buf == NULL)
|
||||||
|
fatal("isc_mem_get(%d) failed\n", len);
|
||||||
snprintf(buf, len, "%s%s%s", chrootdir,
|
snprintf(buf, len, "%s%s%s", chrootdir,
|
||||||
(*keyfile != '/') ? "/" : "", keyfile);
|
(*keyfile != '/') ? "/" : "", keyfile);
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <confgen/os.h>
|
#include <confgen/os.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -85,7 +84,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -96,7 +95,6 @@ copy /Y ddns-confgen.ilk tsig-keygen.ilk
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
* information regarding copyright ownership.
|
* information regarding copyright ownership.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <confgen/os.h>
|
#include <confgen/os.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -90,7 +89,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\include;..\..\..\lib\isccc\include;..\..\..\lib\isccfg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -16,17 +16,16 @@ VERSION=@BIND9_VERSION@
|
|||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
||||||
${IRS_INCLUDES} ${ISCCFG_INCLUDES} \
|
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
${OPENSSL_CFLAGS}
|
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\" \
|
CDEFINES = -DVERSION=\"${VERSION}\" \
|
||||||
-DSYSCONFDIR=\"${sysconfdir}\"
|
-DSYSCONFDIR=\"${sysconfdir}\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
IRSLIBS = ../../lib/irs/libirs.@A@
|
IRSLIBS = ../../lib/irs/libirs.@A@
|
||||||
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
|||||||
+24
-15
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -53,7 +53,7 @@ is a tool for sending DNS queries and validating the results, using the same int
|
|||||||
\fBnamed\fR\&.
|
\fBnamed\fR\&.
|
||||||
.PP
|
.PP
|
||||||
\fBdelv\fR
|
\fBdelv\fR
|
||||||
will send to a specified name server all queries needed to fetch and validate the requested data; this includes the original requested query, subsequent queries to follow CNAME or DNAME chains, and queries for DNSKEY and DS records to establish a chain of trust for DNSSEC validation\&. It does not perform iterative resolution, but simulates the behavior of a name server configured for DNSSEC validating and forwarding\&.
|
will send to a specified name server all queries needed to fetch and validate the requested data; this includes the original requested query, subsequent queries to follow CNAME or DNAME chains, and queries for DNSKEY, DS and DLV records to establish a chain of trust for DNSSEC validation\&. It does not perform iterative resolution, but simulates the behavior of a name server configured for DNSSEC validating and forwarding\&.
|
||||||
.PP
|
.PP
|
||||||
By default, responses are validated using built\-in DNSSEC trust anchor for the root zone ("\&.")\&. Records returned by
|
By default, responses are validated using built\-in DNSSEC trust anchor for the root zone ("\&.")\&. Records returned by
|
||||||
\fBdelv\fR
|
\fBdelv\fR
|
||||||
@@ -139,21 +139,21 @@ BIND
|
|||||||
.sp
|
.sp
|
||||||
Keys that do not match the root zone name are ignored\&. An alternate key name can be specified using the
|
Keys that do not match the root zone name are ignored\&. An alternate key name can be specified using the
|
||||||
\fB+root=NAME\fR
|
\fB+root=NAME\fR
|
||||||
options\&.
|
options\&. DNSSEC Lookaside Validation can also be turned on by using the
|
||||||
|
\fB+dlv=NAME\fR
|
||||||
|
to specify the name of a zone containing DLV records\&.
|
||||||
.sp
|
.sp
|
||||||
Note: When reading the trust anchor file,
|
Note: When reading the trust anchor file,
|
||||||
\fBdelv\fR
|
\fBdelv\fR
|
||||||
treats
|
treats
|
||||||
\fBdnssec\-keys\fR\fBinitial\-key\fR
|
\fBmanaged\-keys\fR
|
||||||
and
|
statements and
|
||||||
\fBstatic\-key\fR
|
\fBtrusted\-keys\fR
|
||||||
entries identically\&. That is, even if a key is configured with
|
statements identically\&. That is, for a managed key, it is the
|
||||||
\fBinitial\-key\fR, indicating that it is meant to be used only as an initializing key for RFC 5011 key maintenance, it is still treated by
|
\fIinitial\fR
|
||||||
|
key that is trusted; RFC 5011 key management is not supported\&.
|
||||||
\fBdelv\fR
|
\fBdelv\fR
|
||||||
as if it had been configured as a
|
will not consult the managed\-keys database maintained by
|
||||||
\fBstatic\-key\fR\&.
|
|
||||||
\fBdelv\fR
|
|
||||||
does not consult the managed keys database maintained by
|
|
||||||
\fBnamed\fR\&. This means that if either of the keys in
|
\fBnamed\fR\&. This means that if either of the keys in
|
||||||
/etc/bind\&.keys
|
/etc/bind\&.keys
|
||||||
is revoked and rolled over, it will be necessary to update
|
is revoked and rolled over, it will be necessary to update
|
||||||
@@ -390,16 +390,25 @@ output\&. The default is to do so\&. Note that (unlike in
|
|||||||
control whether to request DNSSEC records or whether to validate them\&. DNSSEC records are always requested, and validation will always occur unless suppressed by the use of
|
control whether to request DNSSEC records or whether to validate them\&. DNSSEC records are always requested, and validation will always occur unless suppressed by the use of
|
||||||
\fB\-i\fR
|
\fB\-i\fR
|
||||||
or
|
or
|
||||||
\fB+noroot\fR\&.
|
\fB+noroot\fR
|
||||||
|
and
|
||||||
|
\fB+nodlv\fR\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]root[=ROOT]\fR
|
\fB+[no]root[=ROOT]\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Indicates whether to perform conventional DNSSEC validation, and if so, specifies the name of a trust anchor\&. The default is to validate using a trust anchor of "\&." (the root zone), for which there is a built\-in key\&. If specifying a different trust anchor, then
|
Indicates whether to perform conventional (non\-lookaside) DNSSEC validation, and if so, specifies the name of a trust anchor\&. The default is to validate using a trust anchor of "\&." (the root zone), for which there is a built\-in key\&. If specifying a different trust anchor, then
|
||||||
\fB\-a\fR
|
\fB\-a\fR
|
||||||
must be used to specify a file containing the key\&.
|
must be used to specify a file containing the key\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
\fB+[no]dlv[=DLV]\fR
|
||||||
|
.RS 4
|
||||||
|
Indicates whether to perform DNSSEC lookaside validation, and if so, specifies the name of the DLV trust anchor\&. The
|
||||||
|
\fB\-a\fR
|
||||||
|
option must also be used to specify a file containing the DLV key\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
\fB+[no]tcp\fR
|
\fB+[no]tcp\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Controls whether to use TCP when sending queries\&. The default is to use UDP unless a truncated response has been received\&.
|
Controls whether to use TCP when sending queries\&. The default is to use UDP unless a truncated response has been received\&.
|
||||||
@@ -428,5 +437,5 @@ RFC5155\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+135
-170
@@ -9,6 +9,7 @@
|
|||||||
* information regarding copyright ownership.
|
* information regarding copyright ownership.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include <bind.keys.h>
|
#include <bind.keys.h>
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
@@ -111,8 +112,7 @@ static bool
|
|||||||
nottl = false,
|
nottl = false,
|
||||||
multiline = false,
|
multiline = false,
|
||||||
short_form = false,
|
short_form = false,
|
||||||
print_unknown_format = false,
|
print_unknown_format = false;
|
||||||
yaml = false;
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
resolve_trace = false,
|
resolve_trace = false,
|
||||||
@@ -126,19 +126,21 @@ static bool
|
|||||||
static bool
|
static bool
|
||||||
cdflag = false,
|
cdflag = false,
|
||||||
no_sigs = false,
|
no_sigs = false,
|
||||||
root_validation = true;
|
root_validation = true,
|
||||||
|
dlv_validation = true;
|
||||||
|
|
||||||
static bool use_tcp = false;
|
static bool use_tcp = false;
|
||||||
|
|
||||||
static char *anchorfile = NULL;
|
static char *anchorfile = NULL;
|
||||||
static char *trust_anchor = NULL;
|
static char *trust_anchor = NULL;
|
||||||
static int num_keys = 0;
|
static char *dlv_anchor = NULL;
|
||||||
|
static int trusted_keys = 0;
|
||||||
|
|
||||||
static dns_fixedname_t afn;
|
static dns_fixedname_t afn, dfn;
|
||||||
static dns_name_t *anchor_name = NULL;
|
static dns_name_t *anchor_name = NULL, *dlv_name = NULL;
|
||||||
|
|
||||||
/* Default bind.keys contents */
|
/* Default bind.keys contents */
|
||||||
static char anchortext[] = DNSSEC_KEYS;
|
static char anchortext[] = MANAGED_KEYS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Static function prototypes
|
* Static function prototypes
|
||||||
@@ -160,7 +162,7 @@ usage(void) {
|
|||||||
" q-opt is one of:\n"
|
" q-opt is one of:\n"
|
||||||
" -x dot-notation (shortcut for reverse lookups)\n"
|
" -x dot-notation (shortcut for reverse lookups)\n"
|
||||||
" -d level (set debugging level)\n"
|
" -d level (set debugging level)\n"
|
||||||
" -a anchor-file (specify root trust anchor)\n"
|
" -a anchor-file (specify root and dlv trust anchors)\n"
|
||||||
" -b address[#port] (bind to source address/port)\n"
|
" -b address[#port] (bind to source address/port)\n"
|
||||||
" -p port (specify port number)\n"
|
" -p port (specify port number)\n"
|
||||||
" -q name (specify query name)\n"
|
" -q name (specify query name)\n"
|
||||||
@@ -180,8 +182,7 @@ usage(void) {
|
|||||||
" +[no]comments (Control display of comment lines)\n"
|
" +[no]comments (Control display of comment lines)\n"
|
||||||
" +[no]rrcomments (Control display of per-record "
|
" +[no]rrcomments (Control display of per-record "
|
||||||
"comments)\n"
|
"comments)\n"
|
||||||
" +[no]unknownformat (Print RDATA in RFC 3597 "
|
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" format)\n"
|
||||||
"\"unknown\" format)\n"
|
|
||||||
" +[no]short (Short form answer)\n"
|
" +[no]short (Short form answer)\n"
|
||||||
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
||||||
" +[no]tcp (TCP mode)\n"
|
" +[no]tcp (TCP mode)\n"
|
||||||
@@ -190,7 +191,7 @@ usage(void) {
|
|||||||
" +[no]rtrace (Trace resolver fetches)\n"
|
" +[no]rtrace (Trace resolver fetches)\n"
|
||||||
" +[no]mtrace (Trace messages received)\n"
|
" +[no]mtrace (Trace messages received)\n"
|
||||||
" +[no]vtrace (Trace validation process)\n"
|
" +[no]vtrace (Trace validation process)\n"
|
||||||
" +[no]dlv (Obsolete)\n"
|
" +[no]dlv (DNSSEC lookaside validation anchor)\n"
|
||||||
" +[no]root (DNSSEC validation trust anchor)\n"
|
" +[no]root (DNSSEC validation trust anchor)\n"
|
||||||
" +[no]dnssec (Display DNSSEC records)\n"
|
" +[no]dnssec (Display DNSSEC records)\n"
|
||||||
" -h (print help and exit)\n"
|
" -h (print help and exit)\n"
|
||||||
@@ -354,80 +355,53 @@ setup_logging(FILE *errout) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
print_status(dns_rdataset_t *rdataset) {
|
print_status(dns_rdataset_t *rdataset) {
|
||||||
char buf[1024] = { 0 };
|
const char *astr = "", *tstr = "";
|
||||||
|
|
||||||
REQUIRE(rdataset != NULL);
|
REQUIRE(rdataset != NULL);
|
||||||
|
|
||||||
if (!showtrust || !dns_rdataset_isassociated(rdataset)) {
|
if (!showtrust || !dns_rdataset_isassociated(rdataset))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
buf[0] = '\0';
|
if ((rdataset->attributes & DNS_RDATASETATTR_NEGATIVE) != 0)
|
||||||
|
astr = "negative response, ";
|
||||||
if ((rdataset->attributes & DNS_RDATASETATTR_NEGATIVE) != 0) {
|
|
||||||
strlcat(buf, "negative response", sizeof(buf));
|
|
||||||
strlcat(buf, (yaml ? "_" : ", "), sizeof(buf));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (rdataset->trust) {
|
switch (rdataset->trust) {
|
||||||
case dns_trust_none:
|
case dns_trust_none:
|
||||||
strlcat(buf, "untrusted", sizeof(buf));
|
tstr = "untrusted";
|
||||||
break;
|
break;
|
||||||
case dns_trust_pending_additional:
|
case dns_trust_pending_additional:
|
||||||
strlcat(buf, "signed additional data", sizeof(buf));
|
tstr = "signed additional data, pending validation";
|
||||||
if (!yaml) {
|
|
||||||
strlcat(buf, ", ", sizeof(buf));
|
|
||||||
}
|
|
||||||
strlcat(buf, "pending validation", sizeof(buf));
|
|
||||||
break;
|
break;
|
||||||
case dns_trust_pending_answer:
|
case dns_trust_pending_answer:
|
||||||
strlcat(buf, "signed answer", sizeof(buf));
|
tstr = "signed answer, pending validation";
|
||||||
if (!yaml) {
|
|
||||||
strlcat(buf, ", ", sizeof(buf));
|
|
||||||
}
|
|
||||||
strlcat(buf, "pending validation", sizeof(buf));
|
|
||||||
break;
|
break;
|
||||||
case dns_trust_additional:
|
case dns_trust_additional:
|
||||||
strlcat(buf, "unsigned additional data", sizeof(buf));
|
tstr = "unsigned additional data";
|
||||||
break;
|
break;
|
||||||
case dns_trust_glue:
|
case dns_trust_glue:
|
||||||
strlcat(buf, "glue data", sizeof(buf));
|
tstr = "glue data";
|
||||||
break;
|
break;
|
||||||
case dns_trust_answer:
|
case dns_trust_answer:
|
||||||
if (root_validation) {
|
if (root_validation || dlv_validation)
|
||||||
strlcat(buf, "unsigned answer", sizeof(buf));
|
tstr = "unsigned answer";
|
||||||
} else {
|
else
|
||||||
strlcat(buf, "answer not validated", sizeof(buf));
|
tstr = "answer not validated";
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case dns_trust_authauthority:
|
case dns_trust_authauthority:
|
||||||
strlcat(buf, "authority data", sizeof(buf));
|
tstr = "authority data";
|
||||||
break;
|
break;
|
||||||
case dns_trust_authanswer:
|
case dns_trust_authanswer:
|
||||||
strlcat(buf, "authoritative", sizeof(buf));
|
tstr = "authoritative";
|
||||||
break;
|
break;
|
||||||
case dns_trust_secure:
|
case dns_trust_secure:
|
||||||
strlcat(buf, "fully validated", sizeof(buf));
|
tstr = "fully validated";
|
||||||
break;
|
break;
|
||||||
case dns_trust_ultimate:
|
case dns_trust_ultimate:
|
||||||
strlcat(buf, "ultimate trust", sizeof(buf));
|
tstr = "ultimate trust";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yaml) {
|
printf("; %s%s\n", astr, tstr);
|
||||||
char *p;
|
|
||||||
|
|
||||||
/* Convert spaces to underscores for YAML */
|
|
||||||
for (p = buf; p != NULL && *p != '\0'; p++) {
|
|
||||||
if (*p == ' ') {
|
|
||||||
*p = '_';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" - %s:\n", buf);
|
|
||||||
} else {
|
|
||||||
printf("; %s\n", buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -454,9 +428,8 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
if (first || rdataset->trust != trust) {
|
if (first || rdataset->trust != trust) {
|
||||||
if (!first && showtrust && !short_form && !yaml) {
|
if (!first && showtrust && !short_form)
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
|
||||||
print_status(rdataset);
|
print_status(rdataset);
|
||||||
trust = rdataset->trust;
|
trust = rdataset->trust;
|
||||||
first = false;
|
first = false;
|
||||||
@@ -464,6 +437,8 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
t = isc_mem_get(mctx, len);
|
t = isc_mem_get(mctx, len);
|
||||||
|
if (t == NULL)
|
||||||
|
return (ISC_R_NOMEMORY);
|
||||||
|
|
||||||
isc_buffer_init(&target, t, len);
|
isc_buffer_init(&target, t, len);
|
||||||
if (short_form) {
|
if (short_form) {
|
||||||
@@ -495,11 +470,9 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!yaml && (rdataset->attributes &
|
if ((rdataset->attributes &
|
||||||
DNS_RDATASETATTR_NEGATIVE) != 0)
|
DNS_RDATASETATTR_NEGATIVE) != 0)
|
||||||
{
|
|
||||||
isc_buffer_putstr(&target, "; ");
|
isc_buffer_putstr(&target, "; ");
|
||||||
}
|
|
||||||
|
|
||||||
result = dns_master_rdatasettotext(owner, rdataset,
|
result = dns_master_rdatasettotext(owner, rdataset,
|
||||||
style, &target);
|
style, &target);
|
||||||
@@ -532,52 +505,38 @@ setup_style(dns_master_style_t **stylep) {
|
|||||||
REQUIRE(stylep != NULL || *stylep == NULL);
|
REQUIRE(stylep != NULL || *stylep == NULL);
|
||||||
|
|
||||||
styleflags |= DNS_STYLEFLAG_REL_OWNER;
|
styleflags |= DNS_STYLEFLAG_REL_OWNER;
|
||||||
if (yaml) {
|
if (showcomments)
|
||||||
styleflags |= DNS_STYLEFLAG_YAML;
|
styleflags |= DNS_STYLEFLAG_COMMENT;
|
||||||
dns_master_indentstr = " ";
|
if (print_unknown_format)
|
||||||
dns_master_indent = 2;
|
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
||||||
} else {
|
if (rrcomments)
|
||||||
if (showcomments) {
|
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
||||||
styleflags |= DNS_STYLEFLAG_COMMENT;
|
if (nottl)
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
||||||
if (print_unknown_format) {
|
if (noclass)
|
||||||
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
styleflags |= DNS_STYLEFLAG_NO_CLASS;
|
||||||
}
|
if (nocrypto)
|
||||||
if (rrcomments) {
|
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
||||||
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
if (multiline) {
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_MULTILINE;
|
||||||
if (nottl) {
|
styleflags |= DNS_STYLEFLAG_COMMENT;
|
||||||
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
|
||||||
}
|
|
||||||
if (noclass) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_NO_CLASS;
|
|
||||||
}
|
|
||||||
if (nocrypto) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
|
||||||
}
|
|
||||||
if (multiline) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_MULTILINE;
|
|
||||||
styleflags |= DNS_STYLEFLAG_COMMENT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (multiline || (nottl && noclass)) {
|
if (multiline || (nottl && noclass))
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 24, 24, 32, 80, 8,
|
24, 24, 24, 32, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
} else if (nottl || noclass) {
|
else if (nottl || noclass)
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 24, 32, 40, 80, 8,
|
24, 24, 32, 40, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
} else {
|
else
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 32, 40, 48, 80, 8,
|
24, 32, 40, 48, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
}
|
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS)
|
||||||
*stylep = style;
|
*stylep = style;
|
||||||
}
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,30 +578,30 @@ 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;
|
bool match_root = false, match_dlv = 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));
|
||||||
|
|
||||||
if (!root_validation) {
|
if (!root_validation && !dlv_validation)
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
|
||||||
|
|
||||||
if (anchor_name) {
|
if (anchor_name)
|
||||||
match_root = dns_name_equal(keyname, anchor_name);
|
match_root = dns_name_equal(keyname, anchor_name);
|
||||||
}
|
if (dlv_name)
|
||||||
|
match_dlv = dns_name_equal(keyname, dlv_name);
|
||||||
|
|
||||||
if (!match_root) {
|
if (!match_root && !match_dlv)
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
if ((!root_validation && match_root) || (!dlv_validation && match_dlv))
|
||||||
if (!root_validation && match_root) {
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
|
||||||
|
|
||||||
if (match_root) {
|
if (match_root)
|
||||||
delv_log(ISC_LOG_DEBUG(3), "adding trust anchor %s",
|
delv_log(ISC_LOG_DEBUG(3), "adding trust anchor %s",
|
||||||
trust_anchor);
|
trust_anchor);
|
||||||
}
|
if (match_dlv)
|
||||||
|
delv_log(ISC_LOG_DEBUG(3), "adding DLV trust anchor %s",
|
||||||
|
dlv_anchor);
|
||||||
|
|
||||||
flags = cfg_obj_asuint32(cfg_tuple_get(key, "flags"));
|
flags = cfg_obj_asuint32(cfg_tuple_get(key, "flags"));
|
||||||
proto = cfg_obj_asuint32(cfg_tuple_get(key, "protocol"));
|
proto = cfg_obj_asuint32(cfg_tuple_get(key, "protocol"));
|
||||||
@@ -684,7 +643,7 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
|||||||
|
|
||||||
CHECK(dns_client_addtrustedkey(client, dns_rdataclass_in,
|
CHECK(dns_client_addtrustedkey(client, dns_rdataclass_in,
|
||||||
keyname, &rrdatabuf));
|
keyname, &rrdatabuf));
|
||||||
num_keys++;
|
trusted_keys++;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (result == DST_R_NOCRYPTO)
|
if (result == DST_R_NOCRYPTO)
|
||||||
@@ -735,15 +694,13 @@ static isc_result_t
|
|||||||
setup_dnsseckeys(dns_client_t *client) {
|
setup_dnsseckeys(dns_client_t *client) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
cfg_parser_t *parser = NULL;
|
cfg_parser_t *parser = NULL;
|
||||||
const cfg_obj_t *trusted_keys = NULL;
|
const cfg_obj_t *keys = NULL;
|
||||||
const cfg_obj_t *managed_keys = NULL;
|
const cfg_obj_t *managed_keys = NULL;
|
||||||
const cfg_obj_t *dnssec_keys = NULL;
|
|
||||||
cfg_obj_t *bindkeys = NULL;
|
cfg_obj_t *bindkeys = NULL;
|
||||||
const char *filename = anchorfile;
|
const char *filename = anchorfile;
|
||||||
|
|
||||||
if (!root_validation) {
|
if (!root_validation && !dlv_validation)
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
|
||||||
|
|
||||||
if (filename == NULL) {
|
if (filename == NULL) {
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
@@ -758,27 +715,27 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
|
|
||||||
if (trust_anchor == NULL) {
|
if (trust_anchor == NULL) {
|
||||||
trust_anchor = isc_mem_strdup(mctx, ".");
|
trust_anchor = isc_mem_strdup(mctx, ".");
|
||||||
|
if (trust_anchor == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trust_anchor != NULL) {
|
if (trust_anchor != NULL)
|
||||||
CHECK(convert_name(&afn, &anchor_name, trust_anchor));
|
CHECK(convert_name(&afn, &anchor_name, trust_anchor));
|
||||||
}
|
if (dlv_anchor != NULL)
|
||||||
|
CHECK(convert_name(&dfn, &dlv_name, dlv_anchor));
|
||||||
|
|
||||||
CHECK(cfg_parser_create(mctx, dns_lctx, &parser));
|
CHECK(cfg_parser_create(mctx, dns_lctx, &parser));
|
||||||
|
|
||||||
if (access(filename, R_OK) != 0) {
|
if (access(filename, R_OK) != 0) {
|
||||||
if (anchorfile != NULL) {
|
if (anchorfile != NULL)
|
||||||
fatal("Unable to read key file '%s'", anchorfile);
|
fatal("Unable to read key file '%s'", anchorfile);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
result = cfg_parse_file(parser, filename,
|
result = cfg_parse_file(parser, filename,
|
||||||
&cfg_type_bindkeys, &bindkeys);
|
&cfg_type_bindkeys, &bindkeys);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
if (anchorfile != NULL) {
|
if (anchorfile != NULL)
|
||||||
fatal("Unable to load keys from '%s'",
|
fatal("Unable to load keys from '%s'",
|
||||||
anchorfile);
|
anchorfile);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bindkeys == NULL) {
|
if (bindkeys == NULL) {
|
||||||
@@ -786,32 +743,28 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
|
|
||||||
isc_buffer_init(&b, anchortext, sizeof(anchortext) - 1);
|
isc_buffer_init(&b, anchortext, sizeof(anchortext) - 1);
|
||||||
isc_buffer_add(&b, sizeof(anchortext) - 1);
|
isc_buffer_add(&b, sizeof(anchortext) - 1);
|
||||||
result = cfg_parse_buffer(parser, &b, NULL, 0,
|
result = cfg_parse_buffer(parser, &b, &cfg_type_bindkeys,
|
||||||
&cfg_type_bindkeys, 0, &bindkeys);
|
&bindkeys);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("Unable to parse built-in keys");
|
fatal("Unable to parse built-in keys");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INSIST(bindkeys != NULL);
|
INSIST(bindkeys != NULL);
|
||||||
cfg_map_get(bindkeys, "trusted-keys", &trusted_keys);
|
cfg_map_get(bindkeys, "trusted-keys", &keys);
|
||||||
cfg_map_get(bindkeys, "managed-keys", &managed_keys);
|
cfg_map_get(bindkeys, "managed-keys", &managed_keys);
|
||||||
cfg_map_get(bindkeys, "dnssec-keys", &dnssec_keys);
|
|
||||||
|
|
||||||
if (trusted_keys != NULL) {
|
if (keys != NULL)
|
||||||
CHECK(load_keys(trusted_keys, client));
|
CHECK(load_keys(keys, client));
|
||||||
}
|
if (managed_keys != NULL)
|
||||||
if (managed_keys != NULL) {
|
|
||||||
CHECK(load_keys(managed_keys, client));
|
CHECK(load_keys(managed_keys, client));
|
||||||
}
|
|
||||||
if (dnssec_keys != NULL) {
|
|
||||||
CHECK(load_keys(dnssec_keys, client));
|
|
||||||
}
|
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
if (num_keys == 0) {
|
if (trusted_keys == 0)
|
||||||
fatal("No trusted keys were loaded");
|
fatal("No trusted keys were loaded");
|
||||||
}
|
|
||||||
|
if (dlv_validation)
|
||||||
|
dns_client_setdlv(client, dns_rdataclass_in, dlv_anchor);
|
||||||
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (bindkeys != NULL) {
|
if (bindkeys != NULL) {
|
||||||
@@ -820,10 +773,9 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
if (parser != NULL) {
|
if (parser != NULL) {
|
||||||
cfg_parser_destroy(&parser);
|
cfg_parser_destroy(&parser);
|
||||||
}
|
}
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
delv_log(ISC_LOG_ERROR, "setup_dnsseckeys: %s",
|
delv_log(ISC_LOG_ERROR, "setup_dnsseckeys: %s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -850,6 +802,8 @@ addserver(dns_client_t *client) {
|
|||||||
fatal("Use of IPv4 disabled by -6");
|
fatal("Use of IPv4 disabled by -6");
|
||||||
}
|
}
|
||||||
sa = isc_mem_get(mctx, sizeof(*sa));
|
sa = isc_mem_get(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL)
|
||||||
|
return (ISC_R_NOMEMORY);
|
||||||
ISC_LINK_INIT(sa, link);
|
ISC_LINK_INIT(sa, link);
|
||||||
isc_sockaddr_fromin(sa, &in4, destport);
|
isc_sockaddr_fromin(sa, &in4, destport);
|
||||||
ISC_LIST_APPEND(servers, sa, link);
|
ISC_LIST_APPEND(servers, sa, link);
|
||||||
@@ -858,6 +812,8 @@ addserver(dns_client_t *client) {
|
|||||||
fatal("Use of IPv6 disabled by -4");
|
fatal("Use of IPv6 disabled by -4");
|
||||||
}
|
}
|
||||||
sa = isc_mem_get(mctx, sizeof(*sa));
|
sa = isc_mem_get(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL)
|
||||||
|
return (ISC_R_NOMEMORY);
|
||||||
ISC_LINK_INIT(sa, link);
|
ISC_LINK_INIT(sa, link);
|
||||||
isc_sockaddr_fromin6(sa, &in6, destport);
|
isc_sockaddr_fromin6(sa, &in6, destport);
|
||||||
ISC_LIST_APPEND(servers, sa, link);
|
ISC_LIST_APPEND(servers, sa, link);
|
||||||
@@ -885,6 +841,10 @@ addserver(dns_client_t *client) {
|
|||||||
cur->ai_family != AF_INET6)
|
cur->ai_family != AF_INET6)
|
||||||
continue;
|
continue;
|
||||||
sa = isc_mem_get(mctx, sizeof(*sa));
|
sa = isc_mem_get(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL) {
|
||||||
|
result = ISC_R_NOMEMORY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memset(sa, 0, sizeof(*sa));
|
memset(sa, 0, sizeof(*sa));
|
||||||
ISC_LINK_INIT(sa, link);
|
ISC_LINK_INIT(sa, link);
|
||||||
memmove(&sa->type, cur->ai_addr, cur->ai_addrlen);
|
memmove(&sa->type, cur->ai_addr, cur->ai_addrlen);
|
||||||
@@ -957,6 +917,10 @@ findserver(dns_client_t *client) {
|
|||||||
struct in_addr localhost;
|
struct in_addr localhost;
|
||||||
localhost.s_addr = htonl(INADDR_LOOPBACK);
|
localhost.s_addr = htonl(INADDR_LOOPBACK);
|
||||||
sa = isc_mem_get(mctx, sizeof(*sa));
|
sa = isc_mem_get(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL) {
|
||||||
|
result = ISC_R_NOMEMORY;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
isc_sockaddr_fromin(sa, &localhost, destport);
|
isc_sockaddr_fromin(sa, &localhost, destport);
|
||||||
|
|
||||||
ISC_LINK_INIT(sa, link);
|
ISC_LINK_INIT(sa, link);
|
||||||
@@ -965,6 +929,10 @@ findserver(dns_client_t *client) {
|
|||||||
|
|
||||||
if (use_ipv6) {
|
if (use_ipv6) {
|
||||||
sa = isc_mem_get(mctx, sizeof(*sa));
|
sa = isc_mem_get(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL) {
|
||||||
|
result = ISC_R_NOMEMORY;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
isc_sockaddr_fromin6(sa, &in6addr_loopback, destport);
|
isc_sockaddr_fromin6(sa, &in6addr_loopback, destport);
|
||||||
|
|
||||||
ISC_LINK_INIT(sa, link);
|
ISC_LINK_INIT(sa, link);
|
||||||
@@ -1060,10 +1028,13 @@ plus_option(char *option) {
|
|||||||
switch (cmd[1]) {
|
switch (cmd[1]) {
|
||||||
case 'l': /* dlv */
|
case 'l': /* dlv */
|
||||||
FULLCHECK("dlv");
|
FULLCHECK("dlv");
|
||||||
if (state) {
|
if (state && no_sigs)
|
||||||
fprintf(stderr, "Invalid option: "
|
break;
|
||||||
"+dlv is obsolete\n");
|
dlv_validation = state;
|
||||||
exit(1);
|
if (value != NULL) {
|
||||||
|
dlv_anchor = isc_mem_strdup(mctx, value);
|
||||||
|
if (dlv_anchor == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'n': /* dnssec */
|
case 'n': /* dnssec */
|
||||||
@@ -1098,6 +1069,8 @@ plus_option(char *option) {
|
|||||||
root_validation = state;
|
root_validation = state;
|
||||||
if (value != NULL) {
|
if (value != NULL) {
|
||||||
trust_anchor = isc_mem_strdup(mctx, value);
|
trust_anchor = isc_mem_strdup(mctx, value);
|
||||||
|
if (trust_anchor == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'r': /* rrcomments */
|
case 'r': /* rrcomments */
|
||||||
@@ -1185,13 +1158,6 @@ plus_option(char *option) {
|
|||||||
if (state)
|
if (state)
|
||||||
resolve_trace = state;
|
resolve_trace = state;
|
||||||
break;
|
break;
|
||||||
case 'y': /* yaml */
|
|
||||||
FULLCHECK("yaml");
|
|
||||||
yaml = state;
|
|
||||||
if (state) {
|
|
||||||
rrcomments = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
invalid_option:
|
invalid_option:
|
||||||
/*
|
/*
|
||||||
@@ -1255,6 +1221,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
|
|||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
case 'i':
|
case 'i':
|
||||||
no_sigs = true;
|
no_sigs = true;
|
||||||
|
dlv_validation = false;
|
||||||
root_validation = false;
|
root_validation = false;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
@@ -1286,6 +1253,8 @@ dash_option(char *option, char *next, bool *open_type_class) {
|
|||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
anchorfile = isc_mem_strdup(mctx, value);
|
anchorfile = isc_mem_strdup(mctx, value);
|
||||||
|
if (anchorfile == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'b':
|
case 'b':
|
||||||
hash = strchr(value, '#');
|
hash = strchr(value, '#');
|
||||||
@@ -1349,6 +1318,8 @@ dash_option(char *option, char *next, bool *open_type_class) {
|
|||||||
isc_mem_free(mctx, curqname);
|
isc_mem_free(mctx, curqname);
|
||||||
}
|
}
|
||||||
curqname = isc_mem_strdup(mctx, value);
|
curqname = isc_mem_strdup(mctx, value);
|
||||||
|
if (curqname == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 't':
|
case 't':
|
||||||
*open_type_class = false;
|
*open_type_class = false;
|
||||||
@@ -1376,6 +1347,8 @@ dash_option(char *option, char *next, bool *open_type_class) {
|
|||||||
warn("extra query name");
|
warn("extra query name");
|
||||||
}
|
}
|
||||||
curqname = isc_mem_strdup(mctx, textname);
|
curqname = isc_mem_strdup(mctx, textname);
|
||||||
|
if (curqname == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
if (typeset)
|
if (typeset)
|
||||||
warn("extra query type");
|
warn("extra query type");
|
||||||
qtype = dns_rdatatype_ptr;
|
qtype = dns_rdatatype_ptr;
|
||||||
@@ -1522,6 +1495,8 @@ parse_args(int argc, char **argv) {
|
|||||||
|
|
||||||
if (curqname == NULL) {
|
if (curqname == NULL) {
|
||||||
curqname = isc_mem_strdup(mctx, argv[0]);
|
curqname = isc_mem_strdup(mctx, argv[0]);
|
||||||
|
if (curqname == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1535,6 +1510,8 @@ parse_args(int argc, char **argv) {
|
|||||||
|
|
||||||
if (curqname == NULL) {
|
if (curqname == NULL) {
|
||||||
qname = isc_mem_strdup(mctx, ".");
|
qname = isc_mem_strdup(mctx, ".");
|
||||||
|
if (qname == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
|
|
||||||
if (!typeset)
|
if (!typeset)
|
||||||
qtype = dns_rdatatype_ns;
|
qtype = dns_rdatatype_ns;
|
||||||
@@ -1618,7 +1595,6 @@ main(int argc, char *argv[]) {
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_fixedname_t qfn;
|
dns_fixedname_t qfn;
|
||||||
dns_name_t *query_name, *response_name;
|
dns_name_t *query_name, *response_name;
|
||||||
char namestr[DNS_NAME_FORMATSIZE];
|
|
||||||
dns_rdataset_t *rdataset;
|
dns_rdataset_t *rdataset;
|
||||||
dns_namelist_t namelist;
|
dns_namelist_t namelist;
|
||||||
unsigned int resopt, clopt;
|
unsigned int resopt, clopt;
|
||||||
@@ -1647,9 +1623,9 @@ main(int argc, char *argv[]) {
|
|||||||
fatal("failed to create mctx");
|
fatal("failed to create mctx");
|
||||||
|
|
||||||
CHECK(isc_appctx_create(mctx, &actx));
|
CHECK(isc_appctx_create(mctx, &actx));
|
||||||
CHECK(isc_taskmgr_createinctx(mctx, 1, 0, &taskmgr));
|
CHECK(isc_taskmgr_createinctx(mctx, actx, 1, 0, &taskmgr));
|
||||||
CHECK(isc_socketmgr_createinctx(mctx, &socketmgr));
|
CHECK(isc_socketmgr_createinctx(mctx, actx, &socketmgr));
|
||||||
CHECK(isc_timermgr_createinctx(mctx, &timermgr));
|
CHECK(isc_timermgr_createinctx(mctx, actx, &timermgr));
|
||||||
|
|
||||||
parse_args(argc, argv);
|
parse_args(argc, argv);
|
||||||
|
|
||||||
@@ -1690,35 +1666,22 @@ main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
/* Set up resolution options */
|
/* Set up resolution options */
|
||||||
resopt = DNS_CLIENTRESOPT_ALLOWRUN | DNS_CLIENTRESOPT_NOCDFLAG;
|
resopt = DNS_CLIENTRESOPT_ALLOWRUN | DNS_CLIENTRESOPT_NOCDFLAG;
|
||||||
if (no_sigs) {
|
if (no_sigs)
|
||||||
resopt |= DNS_CLIENTRESOPT_NODNSSEC;
|
resopt |= DNS_CLIENTRESOPT_NODNSSEC;
|
||||||
}
|
if (!root_validation && !dlv_validation)
|
||||||
if (!root_validation) {
|
|
||||||
resopt |= DNS_CLIENTRESOPT_NOVALIDATE;
|
resopt |= DNS_CLIENTRESOPT_NOVALIDATE;
|
||||||
}
|
if (cdflag)
|
||||||
if (cdflag) {
|
|
||||||
resopt &= ~DNS_CLIENTRESOPT_NOCDFLAG;
|
resopt &= ~DNS_CLIENTRESOPT_NOCDFLAG;
|
||||||
}
|
if (use_tcp)
|
||||||
if (use_tcp) {
|
|
||||||
resopt |= DNS_CLIENTRESOPT_TCP;
|
resopt |= DNS_CLIENTRESOPT_TCP;
|
||||||
}
|
|
||||||
|
|
||||||
/* Perform resolution */
|
/* Perform resolution */
|
||||||
ISC_LIST_INIT(namelist);
|
ISC_LIST_INIT(namelist);
|
||||||
result = dns_client_resolve(client, query_name, dns_rdataclass_in,
|
result = dns_client_resolve(client, query_name, dns_rdataclass_in,
|
||||||
qtype, resopt, &namelist);
|
qtype, resopt, &namelist);
|
||||||
if (result != ISC_R_SUCCESS && !yaml) {
|
if (result != ISC_R_SUCCESS)
|
||||||
delv_log(ISC_LOG_ERROR, "resolution failed: %s",
|
delv_log(ISC_LOG_ERROR, "resolution failed: %s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
|
||||||
|
|
||||||
if (yaml) {
|
|
||||||
printf("type: DELV_RESULT\n");
|
|
||||||
dns_name_format(query_name, namestr, sizeof(namestr));
|
|
||||||
printf("query_name: %s\n", namestr);
|
|
||||||
printf("status: %s\n", isc_result_totext(result));
|
|
||||||
printf("records:\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (response_name = ISC_LIST_HEAD(namelist);
|
for (response_name = ISC_LIST_HEAD(namelist);
|
||||||
response_name != NULL;
|
response_name != NULL;
|
||||||
@@ -1735,6 +1698,8 @@ main(int argc, char *argv[]) {
|
|||||||
dns_client_freeresanswer(client, &namelist);
|
dns_client_freeresanswer(client, &namelist);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
if (dlv_anchor != NULL)
|
||||||
|
isc_mem_free(mctx, dlv_anchor);
|
||||||
if (trust_anchor != NULL)
|
if (trust_anchor != NULL)
|
||||||
isc_mem_free(mctx, trust_anchor);
|
isc_mem_free(mctx, trust_anchor);
|
||||||
if (anchorfile != NULL)
|
if (anchorfile != NULL)
|
||||||
|
|||||||
+28
-26
@@ -39,7 +39,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -96,7 +95,7 @@
|
|||||||
<command>delv</command> will send to a specified name server all
|
<command>delv</command> will send to a specified name server all
|
||||||
queries needed to fetch and validate the requested data; this
|
queries needed to fetch and validate the requested data; this
|
||||||
includes the original requested query, subsequent queries to follow
|
includes the original requested query, subsequent queries to follow
|
||||||
CNAME or DNAME chains, and queries for DNSKEY and DS records
|
CNAME or DNAME chains, and queries for DNSKEY, DS and DLV records
|
||||||
to establish a chain of trust for DNSSEC validation.
|
to establish a chain of trust for DNSSEC validation.
|
||||||
It does not perform iterative resolution, but simulates the
|
It does not perform iterative resolution, but simulates the
|
||||||
behavior of a name server configured for DNSSEC validating and
|
behavior of a name server configured for DNSSEC validating and
|
||||||
@@ -211,21 +210,21 @@
|
|||||||
<para>
|
<para>
|
||||||
Keys that do not match the root zone name are ignored.
|
Keys that do not match the root zone name are ignored.
|
||||||
An alternate key name can be specified using the
|
An alternate key name can be specified using the
|
||||||
<option>+root=NAME</option> options.
|
<option>+root=NAME</option> options. DNSSEC Lookaside
|
||||||
|
Validation can also be turned on by using the
|
||||||
|
<option>+dlv=NAME</option> to specify the name of a
|
||||||
|
zone containing DLV records.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Note: When reading the trust anchor file,
|
Note: When reading the trust anchor file,
|
||||||
<command>delv</command> treats <option>dnssec-keys</option>
|
<command>delv</command> treats <option>managed-keys</option>
|
||||||
<option>initial-key</option> and <option>static-key</option>
|
statements and <option>trusted-keys</option> statements
|
||||||
entries identically. That is, even if a key is configured
|
identically. That is, for a managed key, it is the
|
||||||
with <command>initial-key</command>, indicating that it is
|
<emphasis>initial</emphasis> key that is trusted; RFC 5011
|
||||||
meant to be used only as an initializing key for RFC 5011
|
key management is not supported. <command>delv</command>
|
||||||
key maintenance, it is still treated by <command>delv</command>
|
will not consult the managed-keys database maintained by
|
||||||
as if it had been configured as a <command>static-key</command>.
|
<command>named</command>. This means that if either of the
|
||||||
<command>delv</command> does not consult the managed keys
|
keys in <filename>/etc/bind.keys</filename> is revoked
|
||||||
database maintained by <command>named</command>. This means
|
|
||||||
that if either of the keys in
|
|
||||||
<filename>/etc/bind.keys</filename> is revoked
|
|
||||||
and rolled over, it will be necessary to update
|
and rolled over, it will be necessary to update
|
||||||
<filename>/etc/bind.keys</filename> to use DNSSEC
|
<filename>/etc/bind.keys</filename> to use DNSSEC
|
||||||
validation in <command>delv</command>.
|
validation in <command>delv</command>.
|
||||||
@@ -617,7 +616,8 @@
|
|||||||
request DNSSEC records or whether to validate them.
|
request DNSSEC records or whether to validate them.
|
||||||
DNSSEC records are always requested, and validation
|
DNSSEC records are always requested, and validation
|
||||||
will always occur unless suppressed by the use of
|
will always occur unless suppressed by the use of
|
||||||
<option>-i</option> or <option>+noroot</option>.
|
<option>-i</option> or <option>+noroot</option> and
|
||||||
|
<option>+nodlv</option>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -626,7 +626,7 @@
|
|||||||
<term><option>+[no]root[=ROOT]</option></term>
|
<term><option>+[no]root[=ROOT]</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Indicates whether to perform conventional
|
Indicates whether to perform conventional (non-lookaside)
|
||||||
DNSSEC validation, and if so, specifies the
|
DNSSEC validation, and if so, specifies the
|
||||||
name of a trust anchor. The default is to validate using
|
name of a trust anchor. The default is to validate using
|
||||||
a trust anchor of "." (the root zone), for which there is
|
a trust anchor of "." (the root zone), for which there is
|
||||||
@@ -637,6 +637,18 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>+[no]dlv[=DLV]</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Indicates whether to perform DNSSEC lookaside validation,
|
||||||
|
and if so, specifies the name of the DLV trust anchor.
|
||||||
|
The <option>-a</option> option must also be used to specify
|
||||||
|
a file containing the DLV key.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]tcp</option></term>
|
<term><option>+[no]tcp</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -658,16 +670,6 @@
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>+[no]yaml</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Print response data in YAML format.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|||||||
+26
-16
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
<span class="command"><strong>delv</strong></span> will send to a specified name server all
|
<span class="command"><strong>delv</strong></span> will send to a specified name server all
|
||||||
queries needed to fetch and validate the requested data; this
|
queries needed to fetch and validate the requested data; this
|
||||||
includes the original requested query, subsequent queries to follow
|
includes the original requested query, subsequent queries to follow
|
||||||
CNAME or DNAME chains, and queries for DNSKEY and DS records
|
CNAME or DNAME chains, and queries for DNSKEY, DS and DLV records
|
||||||
to establish a chain of trust for DNSSEC validation.
|
to establish a chain of trust for DNSSEC validation.
|
||||||
It does not perform iterative resolution, but simulates the
|
It does not perform iterative resolution, but simulates the
|
||||||
behavior of a name server configured for DNSSEC validating and
|
behavior of a name server configured for DNSSEC validating and
|
||||||
@@ -193,21 +193,21 @@
|
|||||||
<p>
|
<p>
|
||||||
Keys that do not match the root zone name are ignored.
|
Keys that do not match the root zone name are ignored.
|
||||||
An alternate key name can be specified using the
|
An alternate key name can be specified using the
|
||||||
<code class="option">+root=NAME</code> options.
|
<code class="option">+root=NAME</code> options. DNSSEC Lookaside
|
||||||
|
Validation can also be turned on by using the
|
||||||
|
<code class="option">+dlv=NAME</code> to specify the name of a
|
||||||
|
zone containing DLV records.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Note: When reading the trust anchor file,
|
Note: When reading the trust anchor file,
|
||||||
<span class="command"><strong>delv</strong></span> treats <code class="option">dnssec-keys</code>
|
<span class="command"><strong>delv</strong></span> treats <code class="option">managed-keys</code>
|
||||||
<code class="option">initial-key</code> and <code class="option">static-key</code>
|
statements and <code class="option">trusted-keys</code> statements
|
||||||
entries identically. That is, even if a key is configured
|
identically. That is, for a managed key, it is the
|
||||||
with <span class="command"><strong>initial-key</strong></span>, indicating that it is
|
<span class="emphasis"><em>initial</em></span> key that is trusted; RFC 5011
|
||||||
meant to be used only as an initializing key for RFC 5011
|
key management is not supported. <span class="command"><strong>delv</strong></span>
|
||||||
key maintenance, it is still treated by <span class="command"><strong>delv</strong></span>
|
will not consult the managed-keys database maintained by
|
||||||
as if it had been configured as a <span class="command"><strong>static-key</strong></span>.
|
<span class="command"><strong>named</strong></span>. This means that if either of the
|
||||||
<span class="command"><strong>delv</strong></span> does not consult the managed keys
|
keys in <code class="filename">/etc/bind.keys</code> is revoked
|
||||||
database maintained by <span class="command"><strong>named</strong></span>. This means
|
|
||||||
that if either of the keys in
|
|
||||||
<code class="filename">/etc/bind.keys</code> is revoked
|
|
||||||
and rolled over, it will be necessary to update
|
and rolled over, it will be necessary to update
|
||||||
<code class="filename">/etc/bind.keys</code> to use DNSSEC
|
<code class="filename">/etc/bind.keys</code> to use DNSSEC
|
||||||
validation in <span class="command"><strong>delv</strong></span>.
|
validation in <span class="command"><strong>delv</strong></span>.
|
||||||
@@ -517,13 +517,14 @@
|
|||||||
request DNSSEC records or whether to validate them.
|
request DNSSEC records or whether to validate them.
|
||||||
DNSSEC records are always requested, and validation
|
DNSSEC records are always requested, and validation
|
||||||
will always occur unless suppressed by the use of
|
will always occur unless suppressed by the use of
|
||||||
<code class="option">-i</code> or <code class="option">+noroot</code>.
|
<code class="option">-i</code> or <code class="option">+noroot</code> and
|
||||||
|
<code class="option">+nodlv</code>.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]root[=ROOT]</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]root[=ROOT]</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Indicates whether to perform conventional
|
Indicates whether to perform conventional (non-lookaside)
|
||||||
DNSSEC validation, and if so, specifies the
|
DNSSEC validation, and if so, specifies the
|
||||||
name of a trust anchor. The default is to validate using
|
name of a trust anchor. The default is to validate using
|
||||||
a trust anchor of "." (the root zone), for which there is
|
a trust anchor of "." (the root zone), for which there is
|
||||||
@@ -532,6 +533,15 @@
|
|||||||
containing the key.
|
containing the key.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><span class="term"><code class="option">+[no]dlv[=DLV]</code></span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Indicates whether to perform DNSSEC lookaside validation,
|
||||||
|
and if so, specifies the name of the DLV trust anchor.
|
||||||
|
The <code class="option">-a</code> option must also be used to specify
|
||||||
|
a file containing the DLV key.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]tcp</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]tcp</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -60,8 +60,7 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
<AdditionalIncludeDirectories>..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@GEOIP_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\win32\include;..\..\..\lib\dns\include;..\..\..\lib\irs\win32\include;..\..\..\lib\irs\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@GEOIP_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\win32\include;..\..\..\lib\dns\include;..\..\..\lib\irs\win32\include;..\..\..\lib\irs\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
@@ -88,8 +87,7 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
<AdditionalIncludeDirectories>..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@GEOIP_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\win32\include;..\..\..\lib\dns\include;..\..\..\lib\irs\win32\include;..\..\..\lib\irs\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@GEOIP_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\win32\include;..\..\..\lib\dns\include;..\..\..\lib\irs\win32\include;..\..\..\lib\irs\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
|||||||
+4
-5
@@ -19,17 +19,16 @@ READLINE_LIB = @READLINE_LIB@
|
|||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} \
|
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} \
|
||||||
${BIND9_INCLUDES} ${ISC_INCLUDES} \
|
${BIND9_INCLUDES} ${ISC_INCLUDES} \
|
||||||
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @LIBIDN2_CFLAGS@ \
|
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @LIBIDN2_CFLAGS@ @OPENSSL_INCLUDES@
|
||||||
${OPENSSL_CFLAGS}
|
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\"
|
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
IRSLIBS = ../../lib/irs/libirs.@A@
|
IRSLIBS = ../../lib/irs/libirs.@A@
|
||||||
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
|||||||
+12
-23
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2011, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2011, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -361,20 +361,14 @@ Display [do not display] the CLASS when printing the record\&.
|
|||||||
.PP
|
.PP
|
||||||
\fB+[no]cmd\fR
|
\fB+[no]cmd\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Toggles the printing of the initial comment in the output, identifying the version of
|
Toggles the printing of the initial comment in the output identifying the version of
|
||||||
\fBdig\fR
|
\fBdig\fR
|
||||||
and the query options that have been applied\&. This option always has global effect; it cannot be set globally and then overridden on a per\-lookup basis\&. The default is to print this comment\&.
|
and the query options that have been applied\&. This comment is printed by default\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]comments\fR
|
\fB+[no]comments\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Toggles the display of some comment lines in the output, containing information about the packet header and OPT pseudosection, and the names of the response section\&. The default is to print these comments\&.
|
Toggle the display of comment lines in the output\&. The default is to print comments\&.
|
||||||
.sp
|
|
||||||
Other types of comments in the output are not affected by this option, but can be controlled using other command line switches\&. These include
|
|
||||||
\fB+[no]cmd\fR,
|
|
||||||
\fB+[no]question\fR,
|
|
||||||
\fB+[no]stats\fR, and
|
|
||||||
\fB+[no]rrcomments\fR\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]cookie\fR\fB[=####]\fR
|
\fB+[no]cookie\fR\fB[=####]\fR
|
||||||
@@ -456,11 +450,6 @@ clears the EDNS options to be sent\&.
|
|||||||
Send an EDNS Expire option\&.
|
Send an EDNS Expire option\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]expandaaaa\fR
|
|
||||||
.RS 4
|
|
||||||
When printing AAAA record print all zero nibbles rather than the default RFC 5952 preferred presentation format\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fB+[no]fail\fR
|
\fB+[no]fail\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Do not try the next server if you receive a SERVFAIL\&. The default is to not try the next server which is the reverse of normal stub resolver behavior\&.
|
Do not try the next server if you receive a SERVFAIL\&. The default is to not try the next server which is the reverse of normal stub resolver behavior\&.
|
||||||
@@ -572,12 +561,12 @@ would cause a 48\-byte query to be padded to 64 bytes\&. The default block size
|
|||||||
.PP
|
.PP
|
||||||
\fB+[no]qr\fR
|
\fB+[no]qr\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Toggles the display of the query message as it is sent\&. By default, the query is not printed\&.
|
Print [do not print] the query as it is sent\&. By default, the query is not printed\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]question\fR
|
\fB+[no]question\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Toggles the display of the question section of a query when an answer is returned\&. The default is to print the question section as a comment\&.
|
Print [do not print] the question section of a query when an answer is returned\&. The default is to print the question section as a comment\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]raflag\fR
|
\fB+[no]raflag\fR
|
||||||
@@ -595,11 +584,11 @@ A synonym for
|
|||||||
.RS 4
|
.RS 4
|
||||||
Toggle the setting of the RD (recursion desired) bit in the query\&. This bit is set by default, which means
|
Toggle the setting of the RD (recursion desired) bit in the query\&. This bit is set by default, which means
|
||||||
\fBdig\fR
|
\fBdig\fR
|
||||||
normally sends recursive queries\&. Recursion is automatically disabled when using the
|
normally sends recursive queries\&. Recursion is automatically disabled when the
|
||||||
\fI+nssearch\fR
|
\fI+nssearch\fR
|
||||||
option, and when using
|
or
|
||||||
\fI+trace\fR
|
\fI+trace\fR
|
||||||
except for an initial recursive query to get the list of root servers\&.
|
query options are used\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+retry=T\fR
|
\fB+retry=T\fR
|
||||||
@@ -630,7 +619,7 @@ determines if the name will be treated as relative or not and hence whether a se
|
|||||||
.PP
|
.PP
|
||||||
\fB+[no]short\fR
|
\fB+[no]short\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Provide a terse answer\&. The default is to print the answer in a verbose form\&. This option always has global effect; it cannot be set globally and then overridden on a per\-lookup basis\&.
|
Provide a terse answer\&. The default is to print the answer in a verbose form\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]showsearch\fR
|
\fB+[no]showsearch\fR
|
||||||
@@ -660,7 +649,7 @@ causes fields not to be split at all\&. The default is 56 characters, or 44 char
|
|||||||
.PP
|
.PP
|
||||||
\fB+[no]stats\fR
|
\fB+[no]stats\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Toggles the printing of statistics: when the query was made, the size of the reply and so on\&. The default behavior is to print the query statistics as a comment after each lookup\&.
|
This query option toggles the printing of statistics: when the query was made, the size of the reply and so on\&. The default behavior is to print the query statistics\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]subnet=addr[/prefix\-length]\fR
|
\fB+[no]subnet=addr[/prefix\-length]\fR
|
||||||
@@ -835,5 +824,5 @@ There are probably too many query options\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2000-2011, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2011, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+62
-259
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -64,8 +66,7 @@ static char hexcookie[81];
|
|||||||
|
|
||||||
static bool short_form = false, printcmd = true,
|
static bool short_form = false, printcmd = true,
|
||||||
plusquest = false, pluscomm = false,
|
plusquest = false, pluscomm = false,
|
||||||
ipv4only = false, ipv6only = false, digrc = true,
|
ipv4only = false, ipv6only = false, digrc = true;
|
||||||
yaml = false;
|
|
||||||
static uint32_t splitwidth = 0xffffffff;
|
static uint32_t splitwidth = 0xffffffff;
|
||||||
|
|
||||||
/*% opcode text */
|
/*% opcode text */
|
||||||
@@ -174,13 +175,11 @@ help(void) {
|
|||||||
" +bufsize=### (Set EDNS0 Max UDP packet size)\n"
|
" +bufsize=### (Set EDNS0 Max UDP packet size)\n"
|
||||||
" +[no]cdflag (Set checking disabled flag in query)\n"
|
" +[no]cdflag (Set checking disabled flag in query)\n"
|
||||||
" +[no]class (Control display of class in records)\n"
|
" +[no]class (Control display of class in records)\n"
|
||||||
" +[no]cmd (Control display of command line -\n"
|
" +[no]cmd (Control display of command line)\n"
|
||||||
" global option)\n"
|
" +[no]comments (Control display of comment lines)\n"
|
||||||
" +[no]comments (Control display of packet header\n"
|
|
||||||
" and section name comments)\n"
|
|
||||||
" +[no]cookie (Add a COOKIE option to the request)\n"
|
" +[no]cookie (Add a COOKIE option to the request)\n"
|
||||||
" +[no]crypto (Control display of cryptographic\n"
|
" +[no]crypto (Control display of cryptographic "
|
||||||
" fields in records)\n"
|
"fields in records)\n"
|
||||||
" +[no]defname (Use search list (+[no]search))\n"
|
" +[no]defname (Use search list (+[no]search))\n"
|
||||||
" +[no]dnssec (Request DNSSEC records)\n"
|
" +[no]dnssec (Request DNSSEC records)\n"
|
||||||
" +domain=### (Set default domainname)\n"
|
" +domain=### (Set default domainname)\n"
|
||||||
@@ -190,20 +189,17 @@ help(void) {
|
|||||||
" +[no]ednsnegotiation (Set EDNS version negotiation)\n"
|
" +[no]ednsnegotiation (Set EDNS version negotiation)\n"
|
||||||
" +ednsopt=###[:value] (Send specified EDNS option)\n"
|
" +ednsopt=###[:value] (Send specified EDNS option)\n"
|
||||||
" +noednsopt (Clear list of +ednsopt options)\n"
|
" +noednsopt (Clear list of +ednsopt options)\n"
|
||||||
" +[no]expandaaaa (Expand AAAA records)\n"
|
|
||||||
" +[no]expire (Request time to expire)\n"
|
" +[no]expire (Request time to expire)\n"
|
||||||
" +[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
|
#ifdef HAVE_LIBIDN2
|
||||||
" +[no]idnin (Parse IDN names [default=on on tty])\n"
|
" +[no]idnin (Parse IDN names [default=on on tty])\n"
|
||||||
" +[no]idnout (Convert IDN response "
|
" +[no]idnout (Convert IDN response [default=on on tty])\n"
|
||||||
"[default=on on tty])\n"
|
|
||||||
#endif
|
#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 "
|
" +[no]keepopen (Keep the TCP socket open between queries)\n"
|
||||||
"queries)\n"
|
|
||||||
" +[no]mapped (Allow mapped IPv4 over IPv6)\n"
|
" +[no]mapped (Allow mapped IPv4 over IPv6)\n"
|
||||||
" +[no]multiline (Print records in an expanded format)\n"
|
" +[no]multiline (Print records in an expanded format)\n"
|
||||||
" +ndots=### (Set search NDOTS value)\n"
|
" +ndots=### (Set search NDOTS value)\n"
|
||||||
@@ -222,7 +218,7 @@ help(void) {
|
|||||||
"comments)\n"
|
"comments)\n"
|
||||||
" +[no]search (Set whether to use searchlist)\n"
|
" +[no]search (Set whether to use searchlist)\n"
|
||||||
" +[no]short (Display nothing except short\n"
|
" +[no]short (Display nothing except short\n"
|
||||||
" form of answers - global option)\n"
|
" form of answer)\n"
|
||||||
" +[no]showsearch (Search with intermediate results)\n"
|
" +[no]showsearch (Search with intermediate results)\n"
|
||||||
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
||||||
" +[no]stats (Control display of statistics)\n"
|
" +[no]stats (Control display of statistics)\n"
|
||||||
@@ -230,13 +226,11 @@ help(void) {
|
|||||||
" +[no]tcflag (Set TC flag in query (+[no]tcflag))\n"
|
" +[no]tcflag (Set TC flag in query (+[no]tcflag))\n"
|
||||||
" +[no]tcp (TCP mode (+[no]vc))\n"
|
" +[no]tcp (TCP mode (+[no]vc))\n"
|
||||||
" +timeout=### (Set query timeout) [5]\n"
|
" +timeout=### (Set query timeout) [5]\n"
|
||||||
" +[no]trace (Trace delegation down from root "
|
" +[no]trace (Trace delegation down from root [+dnssec])\n"
|
||||||
"[+dnssec])\n"
|
|
||||||
" +tries=### (Set number of UDP attempts) [3]\n"
|
" +tries=### (Set number of UDP attempts) [3]\n"
|
||||||
" +[no]ttlid (Control display of ttls in records)\n"
|
" +[no]ttlid (Control display of ttls in records)\n"
|
||||||
" +[no]ttlunits (Display TTLs in human-readable units)\n"
|
" +[no]ttlunits (Display TTLs in human-readable units)\n"
|
||||||
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" "
|
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" format)\n"
|
||||||
"format)\n"
|
|
||||||
" +[no]vc (TCP mode (+[no]tcp))\n"
|
" +[no]vc (TCP mode (+[no]tcp))\n"
|
||||||
" +[no]zflag (Set Z flag in query)\n"
|
" +[no]zflag (Set Z flag in query)\n"
|
||||||
" global d-opts and servers (before host name) affect all queries.\n"
|
" global d-opts and servers (before host name) affect all queries.\n"
|
||||||
@@ -263,11 +257,7 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
|
|
||||||
isc_sockaddr_format(from, fromtext, sizeof(fromtext));
|
isc_sockaddr_format(from, fromtext, sizeof(fromtext));
|
||||||
|
|
||||||
if (short_form || yaml) {
|
if (query->lookup->stats && !short_form) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (query->lookup->stats) {
|
|
||||||
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(";; Query time: %ld usec\n", (long) diff);
|
printf(";; Query time: %ld usec\n", (long) diff);
|
||||||
@@ -288,15 +278,11 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
*/
|
*/
|
||||||
if (wcsftime(time_str, sizeof(time_str)/sizeof(time_str[0]),
|
if (wcsftime(time_str, sizeof(time_str)/sizeof(time_str[0]),
|
||||||
L"%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U)
|
L"%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U)
|
||||||
{
|
|
||||||
printf(";; WHEN: %ls\n", time_str);
|
printf(";; WHEN: %ls\n", time_str);
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
if (strftime(time_str, sizeof(time_str),
|
if (strftime(time_str, sizeof(time_str),
|
||||||
"%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U)
|
"%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U)
|
||||||
{
|
|
||||||
printf(";; WHEN: %s\n", time_str);
|
printf(";; WHEN: %s\n", time_str);
|
||||||
}
|
|
||||||
#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, "
|
||||||
@@ -307,32 +293,30 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
printf(";; MSG SIZE rcvd: %u\n", bytes);
|
printf(";; MSG SIZE rcvd: %u\n", bytes);
|
||||||
}
|
}
|
||||||
if (tsigkey != NULL) {
|
if (tsigkey != NULL) {
|
||||||
if (!validated) {
|
if (!validated)
|
||||||
puts(";; WARNING -- Some TSIG could not "
|
puts(";; WARNING -- Some TSIG could not "
|
||||||
"be validated");
|
"be validated");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ((tsigkey == NULL) && (keysecret[0] != 0)) {
|
if ((tsigkey == NULL) && (keysecret[0] != 0)) {
|
||||||
puts(";; WARNING -- TSIG key was not used.");
|
puts(";; WARNING -- TSIG key was not used.");
|
||||||
}
|
}
|
||||||
puts("");
|
puts("");
|
||||||
} else if (query->lookup->identify) {
|
} 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 %" PRIu64 " 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,
|
: (uint64_t)bytes,
|
||||||
fromtext, query->userarg, (long) diff);
|
fromtext, query->userarg, (long) diff);
|
||||||
} else {
|
else
|
||||||
printf(";; Received %" PRIu64 " bytes "
|
printf(";; Received %" PRIu64 " 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,
|
: (uint64_t)bytes,
|
||||||
fromtext, query->userarg, (long) diff / 1000);
|
fromtext, query->userarg, (long) diff / 1000);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,24 +355,20 @@ say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
|
|||||||
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
||||||
if (query->lookup->print_unknown_format)
|
if (query->lookup->print_unknown_format)
|
||||||
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
||||||
if (query->lookup->expandaaaa)
|
|
||||||
styleflags |= DNS_STYLEFLAG_EXPANDAAAA;
|
|
||||||
result = dns_rdata_tofmttext(rdata, NULL, styleflags, 0,
|
result = dns_rdata_tofmttext(rdata, NULL, styleflags, 0,
|
||||||
splitwidth, " ", buf);
|
splitwidth, " ", buf);
|
||||||
if (result == ISC_R_NOSPACE) {
|
if (result == ISC_R_NOSPACE)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
|
||||||
check_result(result, "dns_rdata_totext");
|
check_result(result, "dns_rdata_totext");
|
||||||
if (query->lookup->identify) {
|
if (query->lookup->identify) {
|
||||||
|
|
||||||
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),
|
snprintf(store, sizeof(store), " in %" PRIu64 " us.", diff);
|
||||||
" in %" PRIu64 " us.", diff);
|
|
||||||
} else {
|
} else {
|
||||||
snprintf(store, sizeof(store),
|
snprintf(store, sizeof(store), " in %" PRIu64 " ms.", diff / 1000);
|
||||||
" in %" PRIu64 " ms.", diff / 1000);
|
|
||||||
}
|
}
|
||||||
ADD_STRING(buf, store);
|
ADD_STRING(buf, store);
|
||||||
}
|
}
|
||||||
@@ -428,7 +408,8 @@ short_answer(dns_message_t *msg, dns_messagetextflag_t flags,
|
|||||||
loopresult = dns_rdataset_first(rdataset);
|
loopresult = dns_rdataset_first(rdataset);
|
||||||
while (loopresult == ISC_R_SUCCESS) {
|
while (loopresult == ISC_R_SUCCESS) {
|
||||||
dns_rdataset_current(rdataset, &rdata);
|
dns_rdataset_current(rdataset, &rdata);
|
||||||
result = say_message(&rdata, query, buf);
|
result = say_message(&rdata, query,
|
||||||
|
buf);
|
||||||
if (result == ISC_R_NOSPACE)
|
if (result == ISC_R_NOSPACE)
|
||||||
return (result);
|
return (result);
|
||||||
check_result(result, "say_message");
|
check_result(result, "say_message");
|
||||||
@@ -470,85 +451,60 @@ isdotlocal(dns_message_t *msg) {
|
|||||||
* 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, const isc_buffer_t *msgbuf,
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
dns_message_t *msg, bool 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;
|
||||||
unsigned int len = OUTPUTBUF;
|
unsigned int len = OUTPUTBUF;
|
||||||
dns_master_style_t *style = NULL;
|
dns_master_style_t *style = NULL;
|
||||||
unsigned int styleflags = 0;
|
unsigned int styleflags = 0;
|
||||||
bool isquery = (msg == query->lookup->sendmsg);
|
|
||||||
|
|
||||||
UNUSED(msgbuf);
|
|
||||||
|
|
||||||
styleflags |= DNS_STYLEFLAG_REL_OWNER;
|
styleflags |= DNS_STYLEFLAG_REL_OWNER;
|
||||||
if (yaml) {
|
if (query->lookup->comments)
|
||||||
dns_master_indentstr = " ";
|
styleflags |= DNS_STYLEFLAG_COMMENT;
|
||||||
dns_master_indent = 3;
|
if (query->lookup->print_unknown_format)
|
||||||
styleflags |= DNS_STYLEFLAG_YAML;
|
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
||||||
} else {
|
/* Turn on rrcomments if explicitly enabled */
|
||||||
if (query->lookup->comments) {
|
if (query->lookup->rrcomments > 0)
|
||||||
styleflags |= DNS_STYLEFLAG_COMMENT;
|
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
||||||
}
|
if (query->lookup->ttlunits)
|
||||||
if (query->lookup->print_unknown_format) {
|
styleflags |= DNS_STYLEFLAG_TTL_UNITS;
|
||||||
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
if (query->lookup->nottl)
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
||||||
/* Turn on rrcomments if explicitly enabled */
|
if (query->lookup->noclass)
|
||||||
if (query->lookup->rrcomments > 0) {
|
styleflags |= DNS_STYLEFLAG_NO_CLASS;
|
||||||
|
if (query->lookup->nocrypto)
|
||||||
|
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
||||||
|
if (query->lookup->multiline) {
|
||||||
|
styleflags |= DNS_STYLEFLAG_OMIT_OWNER;
|
||||||
|
styleflags |= DNS_STYLEFLAG_OMIT_CLASS;
|
||||||
|
styleflags |= DNS_STYLEFLAG_REL_DATA;
|
||||||
|
styleflags |= DNS_STYLEFLAG_OMIT_TTL;
|
||||||
|
styleflags |= DNS_STYLEFLAG_TTL;
|
||||||
|
styleflags |= DNS_STYLEFLAG_MULTILINE;
|
||||||
|
/* Turn on rrcomments unless explicitly disabled */
|
||||||
|
if (query->lookup->rrcomments >= 0)
|
||||||
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
||||||
}
|
|
||||||
if (query->lookup->ttlunits) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_TTL_UNITS;
|
|
||||||
}
|
|
||||||
if (query->lookup->nottl) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
|
||||||
}
|
|
||||||
if (query->lookup->noclass) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_NO_CLASS;
|
|
||||||
}
|
|
||||||
if (query->lookup->nocrypto) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
|
||||||
}
|
|
||||||
if (query->lookup->expandaaaa) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_EXPANDAAAA;
|
|
||||||
}
|
|
||||||
if (query->lookup->multiline) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_OMIT_OWNER;
|
|
||||||
styleflags |= DNS_STYLEFLAG_OMIT_CLASS;
|
|
||||||
styleflags |= DNS_STYLEFLAG_REL_DATA;
|
|
||||||
styleflags |= DNS_STYLEFLAG_OMIT_TTL;
|
|
||||||
styleflags |= DNS_STYLEFLAG_TTL;
|
|
||||||
styleflags |= DNS_STYLEFLAG_MULTILINE;
|
|
||||||
/* Turn on rrcomments unless explicitly disabled */
|
|
||||||
if (query->lookup->rrcomments >= 0) {
|
|
||||||
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (query->lookup->multiline ||
|
if (query->lookup->multiline ||
|
||||||
(query->lookup->nottl && query->lookup->noclass))
|
(query->lookup->nottl && query->lookup->noclass))
|
||||||
{
|
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 24, 24, 32, 80, 8,
|
24, 24, 24, 32, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
} else if (query->lookup->nottl || query->lookup->noclass) {
|
else if (query->lookup->nottl || query->lookup->noclass)
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 24, 32, 40, 80, 8,
|
24, 24, 32, 40, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
} else {
|
else
|
||||||
result = dns_master_stylecreate(&style, styleflags,
|
result = dns_master_stylecreate(&style, styleflags,
|
||||||
24, 32, 40, 48, 80, 8,
|
24, 32, 40, 48, 80, 8,
|
||||||
splitwidth, mctx);
|
splitwidth, mctx);
|
||||||
}
|
|
||||||
check_result(result, "dns_master_stylecreate");
|
check_result(result, "dns_master_stylecreate");
|
||||||
|
|
||||||
if (query->lookup->cmdline[0] != 0) {
|
if (query->lookup->cmdline[0] != 0) {
|
||||||
if (!short_form && printcmd) {
|
if (!short_form)
|
||||||
fputs(query->lookup->cmdline, stdout);
|
fputs(query->lookup->cmdline, stdout);
|
||||||
}
|
query->lookup->cmdline[0]=0;
|
||||||
query->lookup->cmdline[0] = '\0';
|
|
||||||
}
|
}
|
||||||
debug("printmessage(%s %s %s)", headers ? "headers" : "noheaders",
|
debug("printmessage(%s %s %s)", headers ? "headers" : "noheaders",
|
||||||
query->lookup->comments ? "comments" : "nocomments",
|
query->lookup->comments ? "comments" : "nocomments",
|
||||||
@@ -569,110 +525,13 @@ printmessage(dig_query_t *query, const isc_buffer_t *msgbuf,
|
|||||||
result = isc_buffer_allocate(mctx, &buf, len);
|
result = isc_buffer_allocate(mctx, &buf, len);
|
||||||
check_result(result, "isc_buffer_allocate");
|
check_result(result, "isc_buffer_allocate");
|
||||||
|
|
||||||
if (yaml) {
|
if (query->lookup->comments && !short_form) {
|
||||||
enum { Q = 0x1, R = 0x2 }; /* Q:query; R:ecursive */
|
if (query->lookup->cmdline[0] != 0)
|
||||||
unsigned int tflag = 0;
|
|
||||||
isc_sockaddr_t saddr;
|
|
||||||
char sockstr[ISC_SOCKADDR_FORMATSIZE];
|
|
||||||
uint16_t sport;
|
|
||||||
char *hash;
|
|
||||||
int pf;
|
|
||||||
|
|
||||||
printf("-\n");
|
|
||||||
printf(" type: MESSAGE\n");
|
|
||||||
printf(" message:\n");
|
|
||||||
|
|
||||||
if (isquery) {
|
|
||||||
tflag |= Q;
|
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {
|
|
||||||
tflag |= R;
|
|
||||||
}
|
|
||||||
} else if (((msg->flags & DNS_MESSAGEFLAG_RD) != 0) &&
|
|
||||||
((msg->flags & DNS_MESSAGEFLAG_RA) != 0))
|
|
||||||
{
|
|
||||||
tflag |= R;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tflag == (Q|R)) {
|
|
||||||
printf(" type: RECURSIVE_QUERY\n");
|
|
||||||
} else if (tflag == Q) {
|
|
||||||
printf(" type: AUTH_QUERY\n");
|
|
||||||
} else if (tflag == R) {
|
|
||||||
printf(" type: RECURSIVE_RESPONSE\n");
|
|
||||||
} else {
|
|
||||||
printf(" type: AUTH_RESPONSE\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isc_time_isepoch(&query->time_sent)) {
|
|
||||||
char tbuf[100];
|
|
||||||
isc_time_formatISO8601ms(&query->time_sent,
|
|
||||||
tbuf, sizeof(tbuf));
|
|
||||||
printf(" query_time: !!timestamp %s\n", tbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isquery && !isc_time_isepoch(&query->time_recv)) {
|
|
||||||
char tbuf[100];
|
|
||||||
isc_time_formatISO8601ms(&query->time_recv,
|
|
||||||
tbuf, sizeof(tbuf));
|
|
||||||
printf(" response_time: !!timestamp %s\n", tbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" message_size: %ub\n",
|
|
||||||
isc_buffer_usedlength(msgbuf));
|
|
||||||
|
|
||||||
pf = isc_sockaddr_pf(&query->sockaddr);
|
|
||||||
if (pf == PF_INET || pf == PF_INET6) {
|
|
||||||
printf(" socket_family: %s\n",
|
|
||||||
pf == PF_INET ? "INET" : "INET6");
|
|
||||||
|
|
||||||
printf(" socket_protocol: %s\n",
|
|
||||||
query->lookup->tcp_mode ? "TCP" : "UDP");
|
|
||||||
|
|
||||||
sport = isc_sockaddr_getport(&query->sockaddr);
|
|
||||||
isc_sockaddr_format(&query->sockaddr,
|
|
||||||
sockstr, sizeof(sockstr));
|
|
||||||
hash = strchr(sockstr, '#');
|
|
||||||
if (hash != NULL) {
|
|
||||||
*hash = '\0';
|
|
||||||
}
|
|
||||||
if (strcmp(sockstr, "::") == 0) {
|
|
||||||
strlcat(sockstr, "0", sizeof(sockstr));
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" response_address: %s\n", sockstr);
|
|
||||||
printf(" response_port: %u\n", sport);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (query->sock != NULL &&
|
|
||||||
isc_socket_getsockname(query->sock, &saddr)
|
|
||||||
== ISC_R_SUCCESS)
|
|
||||||
{
|
|
||||||
sport = isc_sockaddr_getport(&saddr);
|
|
||||||
isc_sockaddr_format(&saddr, sockstr, sizeof(sockstr));
|
|
||||||
hash = strchr(sockstr, '#');
|
|
||||||
if (hash != NULL) {
|
|
||||||
*hash = '\0';
|
|
||||||
}
|
|
||||||
if (strcmp(sockstr, "::") == 0) {
|
|
||||||
strlcat(sockstr, "0", sizeof(sockstr));
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" query_address: %s\n", sockstr);
|
|
||||||
printf(" query_port: %u\n", sport);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" %s:\n", isquery ? "query_message_data"
|
|
||||||
: "response_message_data");
|
|
||||||
result = dns_message_headertotext(msg, style, flags, buf);
|
|
||||||
} else if (query->lookup->comments && !short_form) {
|
|
||||||
if (query->lookup->cmdline[0] != '\0' && printcmd) {
|
|
||||||
printf("; %s\n", query->lookup->cmdline);
|
printf("; %s\n", query->lookup->cmdline);
|
||||||
}
|
if (msg == query->lookup->sendmsg)
|
||||||
if (msg == query->lookup->sendmsg) {
|
|
||||||
printf(";; Sending:\n");
|
printf(";; Sending:\n");
|
||||||
} else {
|
else
|
||||||
printf(";; Got answer:\n");
|
printf(";; Got answer:\n");
|
||||||
}
|
|
||||||
|
|
||||||
if (headers) {
|
if (headers) {
|
||||||
if (isdotlocal(msg)) {
|
if (isdotlocal(msg)) {
|
||||||
@@ -817,9 +676,8 @@ buftoosmall:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (headers && query->lookup->comments && !short_form && !yaml) {
|
if (headers && query->lookup->comments && !short_form)
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
|
||||||
|
|
||||||
printf("%.*s", (int)isc_buffer_usedlength(buf),
|
printf("%.*s", (int)isc_buffer_usedlength(buf),
|
||||||
(char *)isc_buffer_base(buf));
|
(char *)isc_buffer_base(buf));
|
||||||
@@ -1178,24 +1036,8 @@ plus_option(char *option, bool is_batchfile,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
switch (cmd[2]) {
|
FULLCHECK("expire");
|
||||||
case 'p':
|
lookup->expire = state;
|
||||||
switch(cmd[3]) {
|
|
||||||
case 'a':
|
|
||||||
FULLCHECK("expandaaaa");
|
|
||||||
lookup->expandaaaa = state;
|
|
||||||
break;
|
|
||||||
case 'i':
|
|
||||||
FULLCHECK("expire");
|
|
||||||
lookup->expire = state;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto invalid_option;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto invalid_option;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto invalid_option;
|
goto invalid_option;
|
||||||
@@ -1603,7 +1445,7 @@ 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 = true;
|
lookup->recurse = false;
|
||||||
lookup->identify = true;
|
lookup->identify = true;
|
||||||
lookup->comments = false;
|
lookup->comments = false;
|
||||||
lookup->rrcomments = 0;
|
lookup->rrcomments = 0;
|
||||||
@@ -1677,15 +1519,6 @@ plus_option(char *option, bool is_batchfile,
|
|||||||
lookup->tcp_mode_set = true;
|
lookup->tcp_mode_set = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'y': /* yaml */
|
|
||||||
FULLCHECK("yaml");
|
|
||||||
yaml = state;
|
|
||||||
if (state) {
|
|
||||||
printcmd = false;
|
|
||||||
lookup->stats = false;
|
|
||||||
lookup->rrcomments = -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'z': /* zflag */
|
case 'z': /* zflag */
|
||||||
FULLCHECK("zflag");
|
FULLCHECK("zflag");
|
||||||
lookup->zflag = state;
|
lookup->zflag = state;
|
||||||
@@ -2398,37 +2231,8 @@ query_finished(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void dig_setup(int argc, char **argv)
|
||||||
dig_error(const char *format, ...) {
|
{
|
||||||
va_list args;
|
|
||||||
|
|
||||||
if (yaml) {
|
|
||||||
printf("-\n");
|
|
||||||
printf(" type: DIG_ERROR\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Print an indent before a literal block quote.
|
|
||||||
* Note: this will break if used to print more than
|
|
||||||
* one line of text as only the first line would be
|
|
||||||
* indented.
|
|
||||||
*/
|
|
||||||
printf(" message: |\n");
|
|
||||||
printf(" ");
|
|
||||||
} else {
|
|
||||||
printf(";; ");
|
|
||||||
}
|
|
||||||
|
|
||||||
va_start(args, format);
|
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
if (!yaml) {
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
dig_setup(int argc, char **argv) {
|
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
ISC_LIST_INIT(lookup_list);
|
ISC_LIST_INIT(lookup_list);
|
||||||
@@ -2442,7 +2246,6 @@ dig_setup(int argc, char **argv) {
|
|||||||
dighost_received = received;
|
dighost_received = received;
|
||||||
dighost_trying = trying;
|
dighost_trying = trying;
|
||||||
dighost_shutdown = query_finished;
|
dighost_shutdown = query_finished;
|
||||||
dighost_error = dig_error;
|
|
||||||
|
|
||||||
progname = argv[0];
|
progname = argv[0];
|
||||||
preparse_args(argc, argv);
|
preparse_args(argc, argv);
|
||||||
|
|||||||
+15
-51
@@ -52,7 +52,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -593,11 +592,9 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggles the printing of the initial comment in the
|
Toggles the printing of the initial comment in the
|
||||||
output, identifying the version of <command>dig</command>
|
output identifying the version of <command>dig</command>
|
||||||
and the query options that have been applied. This option
|
and the query options that have been applied. This
|
||||||
always has global effect; it cannot be set globally
|
comment is printed by default.
|
||||||
and then overridden on a per-lookup basis. The default
|
|
||||||
is to print this comment.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -606,18 +603,8 @@
|
|||||||
<term><option>+[no]comments</option></term>
|
<term><option>+[no]comments</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggles the display of some comment lines in the output,
|
Toggle the display of comment lines in the output.
|
||||||
containing information about the packet header and
|
The default is to print comments.
|
||||||
OPT pseudosection, and the names of the response
|
|
||||||
section. The default is to print these comments.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Other types of comments in the output are not affected by
|
|
||||||
this option, but can be controlled using other command
|
|
||||||
line switches. These include <command>+[no]cmd</command>,
|
|
||||||
<command>+[no]question</command>,
|
|
||||||
<command>+[no]stats</command>, and
|
|
||||||
<command>+[no]rrcomments</command>.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -759,16 +746,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>+[no]expandaaaa</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
When printing AAAA record print all zero nibbles rather
|
|
||||||
than the default RFC 5952 preferred presentation format.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]fail</option></term>
|
<term><option>+[no]fail</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -977,8 +954,8 @@
|
|||||||
<term><option>+[no]qr</option></term>
|
<term><option>+[no]qr</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggles the display of the query message as it is sent.
|
Print [do not print] the query as it is sent. By
|
||||||
By default, the query is not printed.
|
default, the query is not printed.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -987,7 +964,7 @@
|
|||||||
<term><option>+[no]question</option></term>
|
<term><option>+[no]question</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggles the display of the question section of a query
|
Print [do not print] the question section of a query
|
||||||
when an answer is returned. The default is to print
|
when an answer is returned. The default is to print
|
||||||
the question section as a comment.
|
the question section as a comment.
|
||||||
</para>
|
</para>
|
||||||
@@ -1022,10 +999,8 @@
|
|||||||
in the query. This bit is set by default, which means
|
in the query. This bit is set by default, which means
|
||||||
<command>dig</command> normally sends recursive
|
<command>dig</command> normally sends recursive
|
||||||
queries. Recursion is automatically disabled when
|
queries. Recursion is automatically disabled when
|
||||||
using the <parameter>+nssearch</parameter> option, and
|
the <parameter>+nssearch</parameter> or
|
||||||
when using <parameter>+trace</parameter> except for
|
<parameter>+trace</parameter> query options are used.
|
||||||
an initial recursive query to get the list of root
|
|
||||||
servers.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -1078,9 +1053,7 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Provide a terse answer. The default is to print the
|
Provide a terse answer. The default is to print the
|
||||||
answer in a verbose form. This option always has global
|
answer in a verbose form.
|
||||||
effect; it cannot be set globally and then overridden on
|
|
||||||
a per-lookup basis.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -1125,9 +1098,10 @@
|
|||||||
<term><option>+[no]stats</option></term>
|
<term><option>+[no]stats</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggles the printing of statistics: when the query was made,
|
This query option toggles the printing of statistics:
|
||||||
the size of the reply and so on. The default behavior is to
|
when the query was made, the size of the reply and
|
||||||
print the query statistics as a comment after each lookup.
|
so on. The default behavior is to print the query
|
||||||
|
statistics.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -1292,16 +1266,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>+[no]yaml</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Print the responses (and, if <option>+qr</option> is in use,
|
|
||||||
also the outgoing queries) in a detailed YAML format.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]zflag</option></term>
|
<term><option>+[no]zflag</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|||||||
+16
-38
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2000-2011, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2011, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -481,28 +481,16 @@
|
|||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggles the printing of the initial comment in the
|
Toggles the printing of the initial comment in the
|
||||||
output, identifying the version of <span class="command"><strong>dig</strong></span>
|
output identifying the version of <span class="command"><strong>dig</strong></span>
|
||||||
and the query options that have been applied. This option
|
and the query options that have been applied. This
|
||||||
always has global effect; it cannot be set globally
|
comment is printed by default.
|
||||||
and then overridden on a per-lookup basis. The default
|
|
||||||
is to print this comment.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]comments</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]comments</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggles the display of some comment lines in the output,
|
Toggle the display of comment lines in the output.
|
||||||
containing information about the packet header and
|
The default is to print comments.
|
||||||
OPT pseudosection, and the names of the response
|
|
||||||
section. The default is to print these comments.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Other types of comments in the output are not affected by
|
|
||||||
this option, but can be controlled using other command
|
|
||||||
line switches. These include <span class="command"><strong>+[no]cmd</strong></span>,
|
|
||||||
<span class="command"><strong>+[no]question</strong></span>,
|
|
||||||
<span class="command"><strong>+[no]stats</strong></span>, and
|
|
||||||
<span class="command"><strong>+[no]rrcomments</strong></span>.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]cookie[<span class="optional">=####</span>]</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]cookie[<span class="optional">=####</span>]</code></span></dt>
|
||||||
@@ -610,13 +598,6 @@
|
|||||||
Send an EDNS Expire option.
|
Send an EDNS Expire option.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]expandaaaa</code></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
When printing AAAA record print all zero nibbles rather
|
|
||||||
than the default RFC 5952 preferred presentation format.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term"><code class="option">+[no]fail</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]fail</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -776,14 +757,14 @@
|
|||||||
<dt><span class="term"><code class="option">+[no]qr</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]qr</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggles the display of the query message as it is sent.
|
Print [do not print] the query as it is sent. By
|
||||||
By default, the query is not printed.
|
default, the query is not printed.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]question</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]question</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggles the display of the question section of a query
|
Print [do not print] the question section of a query
|
||||||
when an answer is returned. The default is to print
|
when an answer is returned. The default is to print
|
||||||
the question section as a comment.
|
the question section as a comment.
|
||||||
</p>
|
</p>
|
||||||
@@ -809,10 +790,8 @@
|
|||||||
in the query. This bit is set by default, which means
|
in the query. This bit is set by default, which means
|
||||||
<span class="command"><strong>dig</strong></span> normally sends recursive
|
<span class="command"><strong>dig</strong></span> normally sends recursive
|
||||||
queries. Recursion is automatically disabled when
|
queries. Recursion is automatically disabled when
|
||||||
using the <em class="parameter"><code>+nssearch</code></em> option, and
|
the <em class="parameter"><code>+nssearch</code></em> or
|
||||||
when using <em class="parameter"><code>+trace</code></em> except for
|
<em class="parameter"><code>+trace</code></em> query options are used.
|
||||||
an initial recursive query to get the list of root
|
|
||||||
servers.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+retry=T</code></span></dt>
|
<dt><span class="term"><code class="option">+retry=T</code></span></dt>
|
||||||
@@ -853,9 +832,7 @@
|
|||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Provide a terse answer. The default is to print the
|
Provide a terse answer. The default is to print the
|
||||||
answer in a verbose form. This option always has global
|
answer in a verbose form.
|
||||||
effect; it cannot be set globally and then overridden on
|
|
||||||
a per-lookup basis.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]showsearch</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]showsearch</code></span></dt>
|
||||||
@@ -888,9 +865,10 @@
|
|||||||
<dt><span class="term"><code class="option">+[no]stats</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]stats</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggles the printing of statistics: when the query was made,
|
This query option toggles the printing of statistics:
|
||||||
the size of the reply and so on. The default behavior is to
|
when the query was made, the size of the reply and
|
||||||
print the query statistics as a comment after each lookup.
|
so on. The default behavior is to print the query
|
||||||
|
statistics.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]subnet=addr[/prefix-length]</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]subnet=addr[/prefix-length]</code></span></dt>
|
||||||
|
|||||||
+105
-135
@@ -19,6 +19,8 @@
|
|||||||
* functions in most applications.
|
* functions in most applications.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -193,15 +195,11 @@ dig_lookup_t *current_lookup = NULL;
|
|||||||
/* dynamic callbacks */
|
/* dynamic callbacks */
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
(*dighost_printmessage)(dig_query_t *query, const isc_buffer_t *msgbuf,
|
(*dighost_printmessage)(dig_query_t *query, dns_message_t *msg,
|
||||||
dns_message_t *msg, bool headers);
|
bool headers);
|
||||||
|
|
||||||
void
|
void
|
||||||
(*dighost_error)(const char *format, ...);
|
(*dighost_received)(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query);
|
||||||
|
|
||||||
void
|
|
||||||
(*dighost_received)(unsigned int bytes, isc_sockaddr_t *from,
|
|
||||||
dig_query_t *query);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
(*dighost_trying)(char *frm, dig_lookup_t *lookup);
|
(*dighost_trying)(char *frm, dig_lookup_t *lookup);
|
||||||
@@ -450,6 +448,9 @@ make_server(const char *servname, const char *userarg) {
|
|||||||
|
|
||||||
debug("make_server(%s)", servname);
|
debug("make_server(%s)", servname);
|
||||||
srv = isc_mem_allocate(mctx, sizeof(struct dig_server));
|
srv = isc_mem_allocate(mctx, sizeof(struct dig_server));
|
||||||
|
if (srv == NULL)
|
||||||
|
fatal("memory allocation failure in %s:%d",
|
||||||
|
__FILE__, __LINE__);
|
||||||
strlcpy(srv->servername, servname, MXNAME);
|
strlcpy(srv->servername, servname, MXNAME);
|
||||||
strlcpy(srv->userarg, userarg, MXNAME);
|
strlcpy(srv->userarg, userarg, MXNAME);
|
||||||
ISC_LINK_INIT(srv, link);
|
ISC_LINK_INIT(srv, link);
|
||||||
@@ -577,6 +578,9 @@ make_empty_lookup(void) {
|
|||||||
INSIST(!free_now);
|
INSIST(!free_now);
|
||||||
|
|
||||||
looknew = isc_mem_allocate(mctx, sizeof(struct dig_lookup));
|
looknew = isc_mem_allocate(mctx, sizeof(struct dig_lookup));
|
||||||
|
if (looknew == NULL)
|
||||||
|
fatal("memory allocation failure in %s:%d",
|
||||||
|
__FILE__, __LINE__);
|
||||||
looknew->pending = true;
|
looknew->pending = true;
|
||||||
looknew->textname[0] = 0;
|
looknew->textname[0] = 0;
|
||||||
looknew->cmdline[0] = 0;
|
looknew->cmdline[0] = 0;
|
||||||
@@ -619,7 +623,6 @@ make_empty_lookup(void) {
|
|||||||
looknew->nocrypto = false;
|
looknew->nocrypto = false;
|
||||||
looknew->ttlunits = false;
|
looknew->ttlunits = false;
|
||||||
looknew->ttlunits = false;
|
looknew->ttlunits = false;
|
||||||
looknew->expandaaaa = false;
|
|
||||||
looknew->qr = false;
|
looknew->qr = false;
|
||||||
#ifdef HAVE_LIBIDN2
|
#ifdef HAVE_LIBIDN2
|
||||||
looknew->idnin = isatty(1)?(getenv("IDN_DISABLE") == NULL):false;
|
looknew->idnin = isatty(1)?(getenv("IDN_DISABLE") == NULL):false;
|
||||||
@@ -679,6 +682,8 @@ cloneopts(dig_lookup_t *looknew, dig_lookup_t *lookold) {
|
|||||||
size_t len = sizeof(looknew->ednsopts[0]) * EDNSOPT_OPTIONS;
|
size_t len = sizeof(looknew->ednsopts[0]) * EDNSOPT_OPTIONS;
|
||||||
size_t i;
|
size_t i;
|
||||||
looknew->ednsopts = isc_mem_allocate(mctx, len);
|
looknew->ednsopts = isc_mem_allocate(mctx, len);
|
||||||
|
if (looknew->ednsopts == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
for (i = 0; i < EDNSOPT_OPTIONS; i++) {
|
for (i = 0; i < EDNSOPT_OPTIONS; i++) {
|
||||||
looknew->ednsopts[i].code = 0;
|
looknew->ednsopts[i].code = 0;
|
||||||
looknew->ednsopts[i].length = 0;
|
looknew->ednsopts[i].length = 0;
|
||||||
@@ -692,8 +697,10 @@ cloneopts(dig_lookup_t *looknew, dig_lookup_t *lookold) {
|
|||||||
len = lookold->ednsopts[i].length;
|
len = lookold->ednsopts[i].length;
|
||||||
if (len != 0) {
|
if (len != 0) {
|
||||||
INSIST(lookold->ednsopts[i].value != NULL);
|
INSIST(lookold->ednsopts[i].value != NULL);
|
||||||
looknew->ednsopts[i].value = isc_mem_allocate(mctx,
|
looknew->ednsopts[i].value =
|
||||||
len);
|
isc_mem_allocate(mctx, len);
|
||||||
|
if (looknew->ednsopts[i].value == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
memmove(looknew->ednsopts[i].value,
|
memmove(looknew->ednsopts[i].value,
|
||||||
lookold->ednsopts[i].value, len);
|
lookold->ednsopts[i].value, len);
|
||||||
}
|
}
|
||||||
@@ -764,7 +771,6 @@ clone_lookup(dig_lookup_t *lookold, bool servers) {
|
|||||||
looknew->use_usec = lookold->use_usec;
|
looknew->use_usec = lookold->use_usec;
|
||||||
looknew->nocrypto = lookold->nocrypto;
|
looknew->nocrypto = lookold->nocrypto;
|
||||||
looknew->ttlunits = lookold->ttlunits;
|
looknew->ttlunits = lookold->ttlunits;
|
||||||
looknew->expandaaaa = lookold->expandaaaa;
|
|
||||||
looknew->qr = lookold->qr;
|
looknew->qr = lookold->qr;
|
||||||
looknew->idnin = lookold->idnin;
|
looknew->idnin = lookold->idnin;
|
||||||
looknew->idnout = lookold->idnout;
|
looknew->idnout = lookold->idnout;
|
||||||
@@ -799,6 +805,8 @@ clone_lookup(dig_lookup_t *lookold, bool servers) {
|
|||||||
if (lookold->ecs_addr != NULL) {
|
if (lookold->ecs_addr != NULL) {
|
||||||
size_t len = sizeof(isc_sockaddr_t);
|
size_t len = sizeof(isc_sockaddr_t);
|
||||||
looknew->ecs_addr = isc_mem_allocate(mctx, len);
|
looknew->ecs_addr = isc_mem_allocate(mctx, len);
|
||||||
|
if (looknew->ecs_addr == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
memmove(looknew->ecs_addr, lookold->ecs_addr, len);
|
memmove(looknew->ecs_addr, lookold->ecs_addr, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -857,6 +865,9 @@ setup_text_key(void) {
|
|||||||
isc_buffer_putstr(namebuf, keynametext);
|
isc_buffer_putstr(namebuf, keynametext);
|
||||||
secretsize = (unsigned int) strlen(keysecret) * 3 / 4;
|
secretsize = (unsigned int) strlen(keysecret) * 3 / 4;
|
||||||
secretstore = isc_mem_allocate(mctx, secretsize);
|
secretstore = isc_mem_allocate(mctx, secretsize);
|
||||||
|
if (secretstore == NULL)
|
||||||
|
fatal("memory allocation failure in %s:%d",
|
||||||
|
__FILE__, __LINE__);
|
||||||
isc_buffer_init(&secretbuf, secretstore, secretsize);
|
isc_buffer_init(&secretbuf, secretstore, secretsize);
|
||||||
result = isc_base64_decodestring(keysecret, &secretbuf);
|
result = isc_base64_decodestring(keysecret, &secretbuf);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -946,6 +957,8 @@ parse_netprefix(isc_sockaddr_t **sap, const char *value) {
|
|||||||
fatal("invalid prefix '%s'\n", value);
|
fatal("invalid prefix '%s'\n", value);
|
||||||
|
|
||||||
sa = isc_mem_allocate(mctx, sizeof(*sa));
|
sa = isc_mem_allocate(mctx, sizeof(*sa));
|
||||||
|
if (sa == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
memset(sa, 0, sizeof(*sa));
|
memset(sa, 0, sizeof(*sa));
|
||||||
|
|
||||||
if (strcmp(buf, "0") == 0) {
|
if (strcmp(buf, "0") == 0) {
|
||||||
@@ -1177,6 +1190,9 @@ static dig_searchlist_t *
|
|||||||
make_searchlist_entry(char *domain) {
|
make_searchlist_entry(char *domain) {
|
||||||
dig_searchlist_t *search;
|
dig_searchlist_t *search;
|
||||||
search = isc_mem_allocate(mctx, sizeof(*search));
|
search = isc_mem_allocate(mctx, sizeof(*search));
|
||||||
|
if (search == NULL)
|
||||||
|
fatal("memory allocation failure in %s:%d",
|
||||||
|
__FILE__, __LINE__);
|
||||||
strlcpy(search->origin, domain, MXNAME);
|
strlcpy(search->origin, domain, MXNAME);
|
||||||
search->origin[MXNAME-1] = 0;
|
search->origin[MXNAME-1] = 0;
|
||||||
ISC_LINK_INIT(search, link);
|
ISC_LINK_INIT(search, link);
|
||||||
@@ -1383,7 +1399,6 @@ typedef struct dig_ednsoptname {
|
|||||||
} dig_ednsoptname_t;
|
} dig_ednsoptname_t;
|
||||||
|
|
||||||
dig_ednsoptname_t optnames[] = {
|
dig_ednsoptname_t optnames[] = {
|
||||||
{ 1, "LLQ" }, /* draft-sekar-dns-llq */
|
|
||||||
{ 3, "NSID" }, /* RFC 5001 */
|
{ 3, "NSID" }, /* RFC 5001 */
|
||||||
{ 5, "DAU" }, /* RFC 6975 */
|
{ 5, "DAU" }, /* RFC 6975 */
|
||||||
{ 6, "DHU" }, /* RFC 6975 */
|
{ 6, "DHU" }, /* RFC 6975 */
|
||||||
@@ -1396,8 +1411,6 @@ dig_ednsoptname_t optnames[] = {
|
|||||||
{ 12, "PAD" }, /* shorthand */
|
{ 12, "PAD" }, /* shorthand */
|
||||||
{ 13, "CHAIN" }, /* RFC 7901 */
|
{ 13, "CHAIN" }, /* RFC 7901 */
|
||||||
{ 14, "KEY-TAG" }, /* RFC 8145 */
|
{ 14, "KEY-TAG" }, /* RFC 8145 */
|
||||||
{ 16, "CLIENT-TAG" }, /* draft-bellis-dnsop-edns-tags */
|
|
||||||
{ 17, "SERVER-TAG" }, /* draft-bellis-dnsop-edns-tags */
|
|
||||||
{ 26946, "DEVICEID" }, /* Brian Hartvigsen */
|
{ 26946, "DEVICEID" }, /* Brian Hartvigsen */
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1441,7 +1454,9 @@ save_opt(dig_lookup_t *lookup, char *code, char *value) {
|
|||||||
|
|
||||||
if (value != NULL) {
|
if (value != NULL) {
|
||||||
char *buf;
|
char *buf;
|
||||||
buf = isc_mem_allocate(mctx, strlen(value) / 2 + 1);
|
buf = isc_mem_allocate(mctx, strlen(value)/2 + 1);
|
||||||
|
if (buf == NULL)
|
||||||
|
fatal("out of memory");
|
||||||
isc_buffer_init(&b, buf, (unsigned int) strlen(value)/2 + 1);
|
isc_buffer_init(&b, buf, (unsigned int) strlen(value)/2 + 1);
|
||||||
result = isc_hex_decodestring(value, &b);
|
result = isc_hex_decodestring(value, &b);
|
||||||
check_result(result, "isc_hex_decodestring");
|
check_result(result, "isc_hex_decodestring");
|
||||||
@@ -2174,14 +2189,12 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
lookup->sendmsg->id = (dns_messageid_t)isc_random16();
|
lookup->sendmsg->id = (dns_messageid_t)isc_random16();
|
||||||
lookup->sendmsg->opcode = lookup->opcode;
|
lookup->sendmsg->opcode = lookup->opcode;
|
||||||
lookup->msgcounter = 0;
|
lookup->msgcounter = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If this is a trace request, completely disallow recursion after
|
* If this is a trace request, completely disallow recursion, since
|
||||||
* looking up the root name servers, since it's meaningless for traces.
|
* it's meaningless for traces.
|
||||||
*/
|
*/
|
||||||
if ((lookup->trace || lookup->ns_search_only) && !lookup->trace_root) {
|
if (lookup->trace || (lookup->ns_search_only && !lookup->trace_root))
|
||||||
lookup->recurse = false;
|
lookup->recurse = false;
|
||||||
}
|
|
||||||
|
|
||||||
if (lookup->recurse &&
|
if (lookup->recurse &&
|
||||||
lookup->rdtype != dns_rdatatype_axfr &&
|
lookup->rdtype != dns_rdatatype_axfr &&
|
||||||
@@ -2472,6 +2485,10 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
serv = ISC_LIST_NEXT(serv, link))
|
serv = ISC_LIST_NEXT(serv, link))
|
||||||
{
|
{
|
||||||
query = isc_mem_allocate(mctx, sizeof(dig_query_t));
|
query = isc_mem_allocate(mctx, sizeof(dig_query_t));
|
||||||
|
if (query == NULL) {
|
||||||
|
fatal("memory allocation failure in %s:%d",
|
||||||
|
__FILE__, __LINE__);
|
||||||
|
}
|
||||||
debug("create query %p linked to lookup %p", query, lookup);
|
debug("create query %p linked to lookup %p", query, lookup);
|
||||||
query->lookup = lookup;
|
query->lookup = lookup;
|
||||||
query->timer = NULL;
|
query->timer = NULL;
|
||||||
@@ -2506,9 +2523,6 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
COMMSIZE);
|
COMMSIZE);
|
||||||
query->sendbuf = lookup->renderbuf;
|
query->sendbuf = lookup->renderbuf;
|
||||||
|
|
||||||
isc_time_settoepoch(&query->time_sent);
|
|
||||||
isc_time_settoepoch(&query->time_recv);
|
|
||||||
|
|
||||||
ISC_LINK_INIT(query, clink);
|
ISC_LINK_INIT(query, clink);
|
||||||
ISC_LINK_INIT(query, link);
|
ISC_LINK_INIT(query, link);
|
||||||
|
|
||||||
@@ -2517,6 +2531,16 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
ISC_LIST_ENQUEUE(lookup->q, query, link);
|
ISC_LIST_ENQUEUE(lookup->q, query, link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX qrflag, print_query, etc... */
|
||||||
|
if (!ISC_LIST_EMPTY(lookup->q) && lookup->qr) {
|
||||||
|
extrabytes = 0;
|
||||||
|
dighost_printmessage(ISC_LIST_HEAD(lookup->q),
|
||||||
|
lookup->sendmsg, true);
|
||||||
|
if (lookup->stats) {
|
||||||
|
printf(";; QUERY SIZE: %u\n\n",
|
||||||
|
isc_buffer_usedlength(&lookup->renderbuf));
|
||||||
|
}
|
||||||
|
}
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2706,6 +2730,27 @@ send_tcp_connect(dig_query_t *query) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (specified_source &&
|
||||||
|
(isc_sockaddr_pf(&query->sockaddr) !=
|
||||||
|
isc_sockaddr_pf(&bind_address))) {
|
||||||
|
printf(";; Skipping server %s, incompatible "
|
||||||
|
"address family\n", query->servname);
|
||||||
|
query->waiting_connect = false;
|
||||||
|
if (ISC_LINK_LINKED(query, link))
|
||||||
|
next = ISC_LIST_NEXT(query, link);
|
||||||
|
else
|
||||||
|
next = NULL;
|
||||||
|
l = query->lookup;
|
||||||
|
clear_query(query);
|
||||||
|
if (next == NULL) {
|
||||||
|
printf(";; No acceptable nameservers\n");
|
||||||
|
check_next_lookup(l);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
send_tcp_connect(next);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
INSIST(query->sock == NULL);
|
INSIST(query->sock == NULL);
|
||||||
|
|
||||||
if (keep != NULL && isc_sockaddr_equal(&keepaddr, &query->sockaddr)) {
|
if (keep != NULL && isc_sockaddr_equal(&keepaddr, &query->sockaddr)) {
|
||||||
@@ -2854,48 +2899,6 @@ send_udp(dig_query_t *query) {
|
|||||||
sevent, ISC_SOCKFLAG_NORETRY);
|
sevent, ISC_SOCKFLAG_NORETRY);
|
||||||
check_result(result, "isc_socket_sendto2");
|
check_result(result, "isc_socket_sendto2");
|
||||||
sendcount++;
|
sendcount++;
|
||||||
|
|
||||||
/* XXX qrflag, print_query, etc... */
|
|
||||||
if (!ISC_LIST_EMPTY(query->lookup->q) && query->lookup->qr) {
|
|
||||||
extrabytes = 0;
|
|
||||||
dighost_printmessage(ISC_LIST_HEAD(query->lookup->q),
|
|
||||||
&query->lookup->renderbuf,
|
|
||||||
query->lookup->sendmsg, true);
|
|
||||||
if (query->lookup->stats) {
|
|
||||||
printf(";; QUERY SIZE: %u\n\n",
|
|
||||||
isc_buffer_usedlength(&query->lookup->renderbuf));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*%
|
|
||||||
* If there are more servers available for querying within 'lookup', initiate a
|
|
||||||
* TCP or UDP query to the next available server and return true; otherwise,
|
|
||||||
* return false.
|
|
||||||
*/
|
|
||||||
static bool
|
|
||||||
try_next_server(dig_lookup_t *lookup) {
|
|
||||||
dig_query_t *current_query, *next_query;
|
|
||||||
|
|
||||||
current_query = lookup->current_query;
|
|
||||||
if (current_query == NULL || !ISC_LINK_LINKED(current_query, link)) {
|
|
||||||
return (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
next_query = ISC_LIST_NEXT(current_query, link);
|
|
||||||
if (next_query == NULL) {
|
|
||||||
return (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
debug("trying next server...");
|
|
||||||
|
|
||||||
if (lookup->tcp_mode) {
|
|
||||||
send_tcp_connect(next_query);
|
|
||||||
} else {
|
|
||||||
send_udp(next_query);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@@ -2906,7 +2909,7 @@ try_next_server(dig_lookup_t *lookup) {
|
|||||||
static void
|
static void
|
||||||
connect_timeout(isc_task_t *task, isc_event_t *event) {
|
connect_timeout(isc_task_t *task, isc_event_t *event) {
|
||||||
dig_lookup_t *l = NULL;
|
dig_lookup_t *l = NULL;
|
||||||
dig_query_t *query = NULL;
|
dig_query_t *query = NULL, *cq;
|
||||||
|
|
||||||
UNUSED(task);
|
UNUSED(task);
|
||||||
REQUIRE(event->ev_type == ISC_TIMEREVENT_IDLE);
|
REQUIRE(event->ev_type == ISC_TIMEREVENT_IDLE);
|
||||||
@@ -2926,14 +2929,18 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (try_next_server(l)) {
|
if ((query != NULL) && (query->lookup->current_query != NULL) &&
|
||||||
if (l->tcp_mode) {
|
ISC_LINK_LINKED(query->lookup->current_query, link) &&
|
||||||
if (query->sock != NULL) {
|
(ISC_LIST_NEXT(query->lookup->current_query, link) != NULL)) {
|
||||||
|
debug("trying next server...");
|
||||||
|
cq = query->lookup->current_query;
|
||||||
|
if (!l->tcp_mode)
|
||||||
|
send_udp(ISC_LIST_NEXT(cq, link));
|
||||||
|
else {
|
||||||
|
if (query->sock != NULL)
|
||||||
isc_socket_cancel(query->sock, NULL,
|
isc_socket_cancel(query->sock, NULL,
|
||||||
ISC_SOCKCANCEL_ALL);
|
ISC_SOCKCANCEL_ALL);
|
||||||
} else {
|
send_tcp_connect(ISC_LIST_NEXT(cq, link));
|
||||||
clear_query(query);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
return;
|
return;
|
||||||
@@ -2965,11 +2972,11 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
|||||||
isc_netaddr_fromsockaddr(&netaddr, &query->sockaddr);
|
isc_netaddr_fromsockaddr(&netaddr, &query->sockaddr);
|
||||||
isc_netaddr_format(&netaddr, buf, sizeof(buf));
|
isc_netaddr_format(&netaddr, buf, sizeof(buf));
|
||||||
|
|
||||||
dighost_error("no response from %s\n", buf);
|
printf(";; no response from %s\n", buf);
|
||||||
} else {
|
} else {
|
||||||
fputs(l->cmdline, stdout);
|
fputs(l->cmdline, stdout);
|
||||||
dighost_error("connection timed out; "
|
printf(";; connection timed out; no servers could be "
|
||||||
"no servers could be reached\n");
|
"reached\n");
|
||||||
}
|
}
|
||||||
cancel_lookup(l);
|
cancel_lookup(l);
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
@@ -2979,27 +2986,6 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
|||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
|
||||||
* Called when a peer closes a TCP socket prematurely.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
requeue_or_update_exitcode(dig_lookup_t *lookup) {
|
|
||||||
if (lookup->eoferr == 0U) {
|
|
||||||
/*
|
|
||||||
* Peer closed the connection prematurely for the first time
|
|
||||||
* for this lookup. Try again, keeping track of this failure.
|
|
||||||
*/
|
|
||||||
dig_lookup_t *requeued_lookup = requeue_lookup(lookup, true);
|
|
||||||
requeued_lookup->eoferr++;
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Peer closed the connection prematurely and it happened
|
|
||||||
* previously for this lookup. Indicate an error.
|
|
||||||
*/
|
|
||||||
exitcode = 9;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Event handler for the TCP recv which gets the length header of TCP
|
* Event handler for the TCP recv which gets the length header of TCP
|
||||||
* packets. Start the next recv of length bytes.
|
* packets. Start the next recv of length bytes.
|
||||||
@@ -3011,7 +2997,7 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
isc_region_t r;
|
isc_region_t r;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dig_query_t *query = NULL;
|
dig_query_t *query = NULL;
|
||||||
dig_lookup_t *l;
|
dig_lookup_t *l, *n;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
|
|
||||||
REQUIRE(event->ev_type == ISC_SOCKEVENT_RECVDONE);
|
REQUIRE(event->ev_type == ISC_SOCKEVENT_RECVDONE);
|
||||||
@@ -3041,8 +3027,8 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
char sockstr[ISC_SOCKADDR_FORMATSIZE];
|
char sockstr[ISC_SOCKADDR_FORMATSIZE];
|
||||||
isc_sockaddr_format(&query->sockaddr, sockstr,
|
isc_sockaddr_format(&query->sockaddr, sockstr,
|
||||||
sizeof(sockstr));
|
sizeof(sockstr));
|
||||||
dighost_error("communications error to %s: %s\n",
|
printf(";; communications error to %s: %s\n",
|
||||||
sockstr, isc_result_totext(sevent->result));
|
sockstr, isc_result_totext(sevent->result));
|
||||||
if (keep != NULL)
|
if (keep != NULL)
|
||||||
isc_socket_detach(&keep);
|
isc_socket_detach(&keep);
|
||||||
l = query->lookup;
|
l = query->lookup;
|
||||||
@@ -3050,8 +3036,9 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
sockcount--;
|
sockcount--;
|
||||||
debug("sockcount=%d", sockcount);
|
debug("sockcount=%d", sockcount);
|
||||||
INSIST(sockcount >= 0);
|
INSIST(sockcount >= 0);
|
||||||
if (sevent->result == ISC_R_EOF) {
|
if (sevent->result == ISC_R_EOF && l->eoferr == 0U) {
|
||||||
requeue_or_update_exitcode(l);
|
n = requeue_lookup(l, true);
|
||||||
|
n->eoferr++;
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
@@ -3141,19 +3128,6 @@ launch_next_query(dig_query_t *query, bool include_question) {
|
|||||||
check_result(result, "isc_socket_send");
|
check_result(result, "isc_socket_send");
|
||||||
sendcount++;
|
sendcount++;
|
||||||
debug("sendcount=%d", sendcount);
|
debug("sendcount=%d", sendcount);
|
||||||
|
|
||||||
/* XXX qrflag, print_query, etc... */
|
|
||||||
if (!ISC_LIST_EMPTY(query->lookup->q) && query->lookup->qr) {
|
|
||||||
extrabytes = 0;
|
|
||||||
dighost_printmessage(ISC_LIST_HEAD(query->lookup->q),
|
|
||||||
&query->lookup->renderbuf,
|
|
||||||
query->lookup->sendmsg, true);
|
|
||||||
if (query->lookup->stats) {
|
|
||||||
printf(";; QUERY SIZE: %u\n\n",
|
|
||||||
isc_buffer_usedlength(
|
|
||||||
&query->lookup->renderbuf));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
#if 0
|
#if 0
|
||||||
@@ -3423,7 +3397,7 @@ process_cookie(dig_lookup_t *l, dns_message_t *msg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
INSIST(msg->cc_ok == 0 && msg->cc_bad == 0);
|
INSIST(msg->cc_ok == 0 && msg->cc_bad == 0);
|
||||||
if (len >= 8 && optlen >= 8U) {
|
if (optlen >= len && optlen >= 8U) {
|
||||||
if (isc_safe_memequal(isc_buffer_current(optbuf), sent, 8)) {
|
if (isc_safe_memequal(isc_buffer_current(optbuf), sent, 8)) {
|
||||||
msg->cc_ok = 1;
|
msg->cc_ok = 1;
|
||||||
} else {
|
} else {
|
||||||
@@ -3510,7 +3484,6 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
dig_lookup_t *n, *l;
|
dig_lookup_t *n, *l;
|
||||||
bool docancel = false;
|
bool docancel = false;
|
||||||
bool match = true;
|
bool match = true;
|
||||||
bool done_process_opt = false;
|
|
||||||
unsigned int parseflags;
|
unsigned int parseflags;
|
||||||
dns_messageid_t id;
|
dns_messageid_t id;
|
||||||
unsigned int msgflags;
|
unsigned int msgflags;
|
||||||
@@ -3528,6 +3501,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
query = event->ev_arg;
|
query = event->ev_arg;
|
||||||
TIME_NOW(&query->time_recv);
|
TIME_NOW(&query->time_recv);
|
||||||
|
debug("lookup=%p, query=%p", query->lookup, query);
|
||||||
|
|
||||||
l = query->lookup;
|
l = query->lookup;
|
||||||
|
|
||||||
@@ -3556,8 +3530,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
debug("in recv cancel handler");
|
debug("in recv cancel handler");
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
} else {
|
} else {
|
||||||
dighost_error("communications error: %s\n",
|
printf(";; communications error: %s\n",
|
||||||
isc_result_totext(sevent->result));
|
isc_result_totext(sevent->result));
|
||||||
if (keep != NULL)
|
if (keep != NULL)
|
||||||
isc_socket_detach(&keep);
|
isc_socket_detach(&keep);
|
||||||
isc_socket_detach(&query->sock);
|
isc_socket_detach(&query->sock);
|
||||||
@@ -3565,8 +3539,9 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
debug("sockcount=%d", sockcount);
|
debug("sockcount=%d", sockcount);
|
||||||
INSIST(sockcount >= 0);
|
INSIST(sockcount >= 0);
|
||||||
}
|
}
|
||||||
if (sevent->result == ISC_R_EOF) {
|
if (sevent->result == ISC_R_EOF && l->eoferr == 0U) {
|
||||||
requeue_or_update_exitcode(l);
|
n = requeue_lookup(l, true);
|
||||||
|
n->eoferr++;
|
||||||
}
|
}
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
@@ -3803,7 +3778,6 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
UNLOCK_LOOKUP;
|
UNLOCK_LOOKUP;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
done_process_opt = true;
|
|
||||||
}
|
}
|
||||||
if ((msg->rcode == dns_rcode_servfail && !l->servfail_stops) ||
|
if ((msg->rcode == dns_rcode_servfail && !l->servfail_stops) ||
|
||||||
(check_ra && (msg->flags & DNS_MESSAGEFLAG_RA) == 0 && l->recurse))
|
(check_ra && (msg->flags & DNS_MESSAGEFLAG_RA) == 0 && l->recurse))
|
||||||
@@ -3893,34 +3867,30 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!done_process_opt) {
|
if (l->cookie != NULL) {
|
||||||
if (l->cookie != NULL) {
|
if (msg->opt == NULL)
|
||||||
if (msg->opt == NULL) {
|
printf(";; expected opt record in response\n");
|
||||||
printf(";; expected opt record in response\n");
|
else
|
||||||
} else {
|
|
||||||
process_opt(l, msg);
|
|
||||||
}
|
|
||||||
} else if (l->sendcookie && msg->opt != NULL) {
|
|
||||||
process_opt(l, msg);
|
process_opt(l, msg);
|
||||||
}
|
} else if (l->sendcookie && msg->opt != NULL)
|
||||||
}
|
process_opt(l, msg);
|
||||||
if (!l->doing_xfr || l->xfr_q == query) {
|
if (!l->doing_xfr || l->xfr_q == query) {
|
||||||
if (msg->rcode == dns_rcode_nxdomain &&
|
if (msg->rcode == dns_rcode_nxdomain &&
|
||||||
(l->origin != NULL || l->need_search)) {
|
(l->origin != NULL || l->need_search)) {
|
||||||
if (!next_origin(query->lookup) || showsearch) {
|
if (!next_origin(query->lookup) || showsearch) {
|
||||||
dighost_printmessage(query, &b, msg, true);
|
dighost_printmessage(query, msg, true);
|
||||||
dighost_received(isc_buffer_usedlength(&b),
|
dighost_received(isc_buffer_usedlength(&b),
|
||||||
&sevent->address, query);
|
&sevent->address, query);
|
||||||
}
|
}
|
||||||
} else if (!l->trace && !l->ns_search_only) {
|
} else if (!l->trace && !l->ns_search_only) {
|
||||||
dighost_printmessage(query, &b, msg, true);
|
dighost_printmessage(query, msg, true);
|
||||||
} else if (l->trace) {
|
} else if (l->trace) {
|
||||||
int nl = 0;
|
int nl = 0;
|
||||||
int count = msg->counts[DNS_SECTION_ANSWER];
|
int count = msg->counts[DNS_SECTION_ANSWER];
|
||||||
|
|
||||||
debug("in TRACE code");
|
debug("in TRACE code");
|
||||||
if (!l->ns_search_only)
|
if (!l->ns_search_only)
|
||||||
dighost_printmessage(query, &b, msg, true);
|
dighost_printmessage(query, msg, true);
|
||||||
|
|
||||||
l->rdtype = l->qrdtype;
|
l->rdtype = l->qrdtype;
|
||||||
if (l->trace_root || (l->ns_search_only && count > 0)) {
|
if (l->trace_root || (l->ns_search_only && count > 0)) {
|
||||||
@@ -3951,7 +3921,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
l->trace_root = false;
|
l->trace_root = false;
|
||||||
usesearch = false;
|
usesearch = false;
|
||||||
} else {
|
} else {
|
||||||
dighost_printmessage(query, &b, msg, true);
|
dighost_printmessage(query, msg, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -269,5 +269,5 @@ runs\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2000-2002, 2004, 2005, 2007-2009, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004, 2005, 2007-2009, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+3
-16
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -400,16 +402,13 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printmessage(dig_query_t *query, const isc_buffer_t *msgbuf,
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
dns_message_t *msg, bool headers)
|
|
||||||
{
|
|
||||||
bool did_flag = false;
|
bool did_flag = 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;
|
||||||
int force_error;
|
int force_error;
|
||||||
|
|
||||||
UNUSED(msgbuf);
|
|
||||||
UNUSED(headers);
|
UNUSED(headers);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -857,17 +856,6 @@ parse_args(bool is_batchfile, int argc, char **argv) {
|
|||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
host_error(const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
printf(";; ");
|
|
||||||
va_start(args, format);
|
|
||||||
vfprintf(stdout, format, args);
|
|
||||||
va_end(args);
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -885,7 +873,6 @@ main(int argc, char **argv) {
|
|||||||
dighost_received = received;
|
dighost_received = received;
|
||||||
dighost_trying = trying;
|
dighost_trying = trying;
|
||||||
dighost_shutdown = host_shutdown;
|
dighost_shutdown = host_shutdown;
|
||||||
dighost_error = host_error;
|
|
||||||
|
|
||||||
debug("main()");
|
debug("main()");
|
||||||
progname = argv[0];
|
progname = argv[0];
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -140,7 +140,6 @@ struct dig_lookup {
|
|||||||
ttlunits,
|
ttlunits,
|
||||||
idnin,
|
idnin,
|
||||||
idnout,
|
idnout,
|
||||||
expandaaaa,
|
|
||||||
qr;
|
qr;
|
||||||
char textname[MXNAME]; /*% Name we're going to be looking up */
|
char textname[MXNAME]; /*% Name we're going to be looking up */
|
||||||
char cmdline[MXNAME];
|
char cmdline[MXNAME];
|
||||||
@@ -380,22 +379,13 @@ 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, const isc_buffer_t *msgbuf,
|
(*dighost_printmessage)(dig_query_t *query, dns_message_t *msg, bool headers);
|
||||||
dns_message_t *msg, bool headers);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Print an error message in the appropriate format.
|
|
||||||
*/
|
|
||||||
extern void
|
|
||||||
(*dighost_error)(const char *format, ...);
|
|
||||||
|
|
||||||
/*%<
|
/*%<
|
||||||
* Print the final result of the lookup.
|
* Print the final result of the lookup.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
(*dighost_received)(unsigned int bytes, isc_sockaddr_t *from,
|
(*dighost_received)(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query);
|
||||||
dig_query_t *query);
|
|
||||||
/*%<
|
/*%<
|
||||||
* Print a message about where and when the response
|
* Print a message about where and when the response
|
||||||
* was received from, like the final comment in the
|
* was received from, like the final comment in the
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2004-2007, 2010, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2004-2007, 2010, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -301,5 +301,5 @@ runs or when the standard output is not a tty\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2004-2007, 2010, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2004-2007, 2010, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+7
-40
@@ -9,6 +9,8 @@
|
|||||||
* information regarding copyright ownership.
|
* information regarding copyright ownership.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -429,21 +431,16 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printmessage(dig_query_t *query, const isc_buffer_t *msgbuf,
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
dns_message_t *msg, bool headers)
|
|
||||||
{
|
|
||||||
char servtext[ISC_SOCKADDR_FORMATSIZE];
|
char servtext[ISC_SOCKADDR_FORMATSIZE];
|
||||||
|
|
||||||
UNUSED(msgbuf);
|
|
||||||
|
|
||||||
/* I've we've gotten this far, we've reached a server. */
|
/* I've we've gotten this far, we've reached a server. */
|
||||||
query_error = 0;
|
query_error = 0;
|
||||||
|
|
||||||
debug("printmessage()");
|
debug("printmessage()");
|
||||||
|
|
||||||
if(!default_lookups || query->lookup->rdtype == dns_rdatatype_a) {
|
if(!default_lookups || query->lookup->rdtype == dns_rdatatype_a) {
|
||||||
isc_sockaddr_format(&query->sockaddr, servtext,
|
isc_sockaddr_format(&query->sockaddr, servtext, sizeof(servtext));
|
||||||
sizeof(servtext));
|
|
||||||
printf("Server:\t\t%s\n", query->userarg);
|
printf("Server:\t\t%s\n", query->userarg);
|
||||||
printf("Address:\t%s\n", servtext);
|
printf("Address:\t%s\n", servtext);
|
||||||
|
|
||||||
@@ -855,6 +852,8 @@ get_next_command(void) {
|
|||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
buf = isc_mem_allocate(mctx, COMMSIZE);
|
buf = isc_mem_allocate(mctx, COMMSIZE);
|
||||||
|
if (buf == NULL)
|
||||||
|
fatal("memory allocation failure");
|
||||||
isc_app_block();
|
isc_app_block();
|
||||||
if (interactive) {
|
if (interactive) {
|
||||||
#ifdef HAVE_READLINE
|
#ifdef HAVE_READLINE
|
||||||
@@ -880,29 +879,12 @@ get_next_command(void) {
|
|||||||
isc_mem_free(mctx, buf);
|
isc_mem_free(mctx, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE static void
|
|
||||||
usage(void) ISC_PLATFORM_NORETURN_POST;
|
|
||||||
|
|
||||||
static void
|
|
||||||
usage(void) {
|
|
||||||
fprintf(stderr, "Usage:\n");
|
|
||||||
fprintf(stderr,
|
|
||||||
" nslookup [-opt ...] # interactive mode using default server\n");
|
|
||||||
fprintf(stderr,
|
|
||||||
" nslookup [-opt ...] - server # interactive mode using 'server'\n");
|
|
||||||
fprintf(stderr,
|
|
||||||
" nslookup [-opt ...] host # just look up 'host' using default server\n");
|
|
||||||
fprintf(stderr,
|
|
||||||
" nslookup [-opt ...] host server # just look up 'host' using 'server'\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_args(int argc, char **argv) {
|
parse_args(int argc, char **argv) {
|
||||||
bool have_lookup = false;
|
bool have_lookup = false;
|
||||||
|
|
||||||
usesearch = true;
|
usesearch = true;
|
||||||
for (argc--, argv++; argc > 0 && argv[0] != NULL; 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] == '-') {
|
||||||
if (strncasecmp(argv[0], "-ver", 4) == 0) {
|
if (strncasecmp(argv[0], "-ver", 4) == 0) {
|
||||||
@@ -918,9 +900,6 @@ parse_args(int argc, char **argv) {
|
|||||||
in_use = true;
|
in_use = true;
|
||||||
addlookup(argv[0]);
|
addlookup(argv[0]);
|
||||||
} else {
|
} else {
|
||||||
if (argv[1] != NULL) {
|
|
||||||
usage();
|
|
||||||
}
|
|
||||||
set_nameserver(argv[0]);
|
set_nameserver(argv[0]);
|
||||||
check_ra = false;
|
check_ra = false;
|
||||||
}
|
}
|
||||||
@@ -983,17 +962,6 @@ getinput(isc_task_t *task, isc_event_t *event) {
|
|||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
nsl_error(const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
printf(";; ");
|
|
||||||
va_start(args, format);
|
|
||||||
vfprintf(stdout, format, args);
|
|
||||||
va_end(args);
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -1011,7 +979,6 @@ main(int argc, char **argv) {
|
|||||||
dighost_received = received;
|
dighost_received = received;
|
||||||
dighost_trying = trying;
|
dighost_trying = trying;
|
||||||
dighost_shutdown = query_finished;
|
dighost_shutdown = query_finished;
|
||||||
dighost_error = nsl_error;
|
|
||||||
|
|
||||||
result = isc_app_start();
|
result = isc_app_start();
|
||||||
check_result(result, "isc_app_start");
|
check_result(result, "isc_app_start");
|
||||||
|
|||||||
@@ -71,7 +71,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2004-2007, 2010, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2004-2007, 2010, 2013-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -88,7 +87,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -86,7 +85,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\include;..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -88,7 +87,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@IDN_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -60,7 +60,6 @@
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@READLINE_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@READLINE_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -88,7 +87,6 @@
|
|||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
|
||||||
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@READLINE_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>.\;..\include;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@@READLINE_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\isccfg\include;..\..\..\lib\irs\include;..\..\..\lib\irs\win32\include;..\..\..\lib\dns\include;..\..\..\lib\bind9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<CompileAs>CompileAsC</CompileAs>
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -15,15 +15,14 @@ VERSION=@BIND9_VERSION@
|
|||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
${OPENSSL_CFLAGS}
|
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\"
|
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
|
|
||||||
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2017, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -102,7 +102,7 @@ Specify a digest algorithm to use when converting CDNSKEY records to DS records\
|
|||||||
.sp
|
.sp
|
||||||
The
|
The
|
||||||
\fIalgorithm\fR
|
\fIalgorithm\fR
|
||||||
must be one of SHA\-1, SHA\-256, or SHA\-384\&. These values are case insensitive, and the hyphen may be omitted\&. If no algorithm is specified, the default is SHA\-256\&.
|
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256), or SHA\-384 (SHA384)\&. These values are case insensitive\&. If no algorithm is specified, the default is SHA\-256\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-c \fIclass\fR
|
\-c \fIclass\fR
|
||||||
@@ -293,5 +293,5 @@ RFC 7344\&.
|
|||||||
.RE
|
.RE
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2017-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2017, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+78
-8
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -59,7 +61,12 @@
|
|||||||
|
|
||||||
#include "dnssectool.h"
|
#include "dnssectool.h"
|
||||||
|
|
||||||
|
#ifndef PATH_MAX
|
||||||
|
#define PATH_MAX 1024 /* WIN32, and others don't define this. */
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *program = "dnssec-cds";
|
const char *program = "dnssec-cds";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Infrastructure
|
* Infrastructure
|
||||||
@@ -75,6 +82,12 @@ static dns_fixedname_t fixed;
|
|||||||
static dns_name_t *name = NULL;
|
static dns_name_t *name = NULL;
|
||||||
static dns_rdataclass_t rdclass = dns_rdataclass_in;
|
static dns_rdataclass_t rdclass = dns_rdataclass_in;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
static 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 */
|
||||||
static dns_rdata_rrsig_t oldestsig; /* for recording inception time */
|
static dns_rdata_rrsig_t oldestsig; /* for recording inception time */
|
||||||
@@ -116,7 +129,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;
|
||||||
dns_secalg_t algo;
|
uint8_t algo;
|
||||||
dns_keytag_t tag;
|
dns_keytag_t tag;
|
||||||
} keyinfo_t;
|
} keyinfo_t;
|
||||||
|
|
||||||
@@ -469,6 +482,7 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
|||||||
dns_rdata_ds_t ds;
|
dns_rdata_ds_t ds;
|
||||||
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;
|
||||||
bool c;
|
bool c;
|
||||||
|
|
||||||
dns_rdataset_current(dsset, &dsrdata);
|
dns_rdataset_current(dsset, &dsrdata);
|
||||||
@@ -479,8 +493,12 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* allow for both DNSKEY and CDNSKEY */
|
||||||
|
keytype = ki->rdata.type;
|
||||||
|
ki->rdata.type = dns_rdatatype_dnskey;
|
||||||
result = dns_ds_buildrdata(name, &ki->rdata, ds.digest_type,
|
result = dns_ds_buildrdata(name, &ki->rdata, ds.digest_type,
|
||||||
dsbuf, &newdsrdata);
|
dsbuf, &newdsrdata);
|
||||||
|
ki->rdata.type = keytype;
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
vbprintf(3, "dns_ds_buildrdata("
|
vbprintf(3, "dns_ds_buildrdata("
|
||||||
"keytag=%d, algo=%d, digest=%d): %s\n",
|
"keytag=%d, algo=%d, digest=%d): %s\n",
|
||||||
@@ -530,6 +548,9 @@ match_keyset_dsset(dns_rdataset_t *keyset, dns_rdataset_t *dsset,
|
|||||||
nkey = dns_rdataset_count(keyset);
|
nkey = dns_rdataset_count(keyset);
|
||||||
|
|
||||||
keytable = isc_mem_get(mctx, sizeof(keyinfo_t) * nkey);
|
keytable = isc_mem_get(mctx, sizeof(keyinfo_t) * nkey);
|
||||||
|
if (keytable == NULL) {
|
||||||
|
fatal("out of memory");
|
||||||
|
}
|
||||||
|
|
||||||
for (result = dns_rdataset_first(keyset), i = 0;
|
for (result = dns_rdataset_first(keyset), i = 0;
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -552,7 +573,7 @@ match_keyset_dsset(dns_rdataset_t *keyset, dns_rdataset_t *dsset,
|
|||||||
ki->algo = dnskey.algorithm;
|
ki->algo = dnskey.algorithm;
|
||||||
|
|
||||||
dns_rdata_toregion(keyrdata, &r);
|
dns_rdata_toregion(keyrdata, &r);
|
||||||
ki->tag = dst_region_computeid(&r);
|
ki->tag = dst_region_computeid(&r, ki->algo);
|
||||||
|
|
||||||
ki->dst = NULL;
|
ki->dst = NULL;
|
||||||
if (!match_key_dsset(ki, dsset, strictness)) {
|
if (!match_key_dsset(ki, dsset, strictness)) {
|
||||||
@@ -598,15 +619,19 @@ 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 dns_secalg_t *
|
static 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;
|
||||||
dns_secalg_t *algo;
|
uint8_t *algo;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
algo = isc_mem_get(mctx, nkey);
|
algo = isc_mem_get(mctx, nkey);
|
||||||
|
if (algo == NULL) {
|
||||||
|
fatal("allocating RRSIG/DNSKEY match list: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
memset(algo, 0, nkey);
|
memset(algo, 0, nkey);
|
||||||
|
|
||||||
for (result = dns_rdataset_first(sigset);
|
for (result = dns_rdataset_first(sigset);
|
||||||
@@ -682,7 +707,7 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
|||||||
* fetched from the child zone, any working signature is enough.
|
* fetched from the child zone, any working signature is enough.
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
signed_loose(dns_secalg_t *algo) {
|
signed_loose(uint8_t *algo) {
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < nkey; i++) {
|
for (i = 0; i < nkey; i++) {
|
||||||
@@ -701,7 +726,7 @@ signed_loose(dns_secalg_t *algo) {
|
|||||||
* RRset.
|
* RRset.
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
signed_strict(dns_rdataset_t *dsset, dns_secalg_t *algo) {
|
signed_strict(dns_rdataset_t *dsset, uint8_t *algo) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
bool all_ok = true;
|
bool all_ok = true;
|
||||||
|
|
||||||
@@ -740,6 +765,10 @@ rdata_get(void) {
|
|||||||
dns_rdata_t *rdata;
|
dns_rdata_t *rdata;
|
||||||
|
|
||||||
rdata = isc_mem_get(mctx, sizeof(*rdata));
|
rdata = isc_mem_get(mctx, sizeof(*rdata));
|
||||||
|
if (rdata == NULL) {
|
||||||
|
fatal("allocating DS rdata: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
dns_rdata_init(rdata);
|
dns_rdata_init(rdata);
|
||||||
|
|
||||||
return (rdata);
|
return (rdata);
|
||||||
@@ -797,6 +826,7 @@ ds_from_cdnskey(dns_rdatalist_t *dslist, isc_buffer_t *buf,
|
|||||||
return (ISC_R_NOSPACE);
|
return (ISC_R_NOSPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cdnskey->type = dns_rdatatype_dnskey;
|
||||||
rdata = rdata_get();
|
rdata = rdata_get();
|
||||||
result = dns_ds_buildrdata(name, cdnskey, dtype[i],
|
result = dns_ds_buildrdata(name, cdnskey, dtype[i],
|
||||||
r.base, rdata);
|
r.base, rdata);
|
||||||
@@ -814,6 +844,34 @@ ds_from_cdnskey(dns_rdatalist_t *dslist, isc_buffer_t *buf,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For sorting the digest types so that DS records generated
|
||||||
|
* from CDNSKEY records are in canonical order.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
cmp_dtype(const void *ap, const void *bp) {
|
||||||
|
int a = *(const uint8_t *)ap;
|
||||||
|
int b = *(const uint8_t *)bp;
|
||||||
|
return (a - b);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
add_dtype(const char *dn) {
|
||||||
|
uint8_t dt;
|
||||||
|
unsigned i, n;
|
||||||
|
|
||||||
|
dt = strtodsdigest(dn);
|
||||||
|
n = sizeof(dtype)/sizeof(dtype[0]);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
if (dtype[i] == 0 || dtype[i] == dt) {
|
||||||
|
dtype[i] = dt;
|
||||||
|
qsort(dtype, i+1, 1, cmp_dtype);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fatal("too many -a digest type arguments");
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
uint32_t ttl, dns_rdataset_t *rdset)
|
||||||
@@ -824,6 +882,10 @@ make_new_ds_set(ds_maker_func_t *ds_from_rdata,
|
|||||||
dns_rdatalist_t *dslist;
|
dns_rdatalist_t *dslist;
|
||||||
|
|
||||||
dslist = isc_mem_get(mctx, sizeof(*dslist));
|
dslist = isc_mem_get(mctx, sizeof(*dslist));
|
||||||
|
if (dslist == NULL) {
|
||||||
|
fatal("allocating new DS list: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
|
|
||||||
dns_rdatalist_init(dslist);
|
dns_rdatalist_init(dslist);
|
||||||
dslist->rdclass = rdclass;
|
dslist->rdclass = rdclass;
|
||||||
@@ -880,7 +942,7 @@ consistent_digests(dns_rdataset_t *dsset) {
|
|||||||
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;
|
||||||
dns_secalg_t algorithm;
|
uint8_t algorithm;
|
||||||
bool match;
|
bool match;
|
||||||
int i, j, n, d;
|
int i, j, n, d;
|
||||||
|
|
||||||
@@ -892,6 +954,10 @@ consistent_digests(dns_rdataset_t *dsset) {
|
|||||||
n = dns_rdataset_count(dsset);
|
n = dns_rdataset_count(dsset);
|
||||||
|
|
||||||
arrdata = isc_mem_get(mctx, n * sizeof(dns_rdata_t));
|
arrdata = isc_mem_get(mctx, n * sizeof(dns_rdata_t));
|
||||||
|
if (arrdata == NULL) {
|
||||||
|
fatal("allocating DS rdata array: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
|
|
||||||
for (result = dns_rdataset_first(dsset), i = 0;
|
for (result = dns_rdataset_first(dsset), i = 0;
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -907,6 +973,10 @@ consistent_digests(dns_rdataset_t *dsset) {
|
|||||||
* Convert sorted arrdata to more accessible format
|
* Convert sorted arrdata to more accessible format
|
||||||
*/
|
*/
|
||||||
ds = isc_mem_get(mctx, n * sizeof(dns_rdata_ds_t));
|
ds = isc_mem_get(mctx, n * sizeof(dns_rdata_ds_t));
|
||||||
|
if (ds == NULL) {
|
||||||
|
fatal("allocating unpacked DS array: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
result = dns_rdata_tostruct(&arrdata[i], &ds[i], NULL);
|
result = dns_rdata_tostruct(&arrdata[i], &ds[i], NULL);
|
||||||
@@ -1090,7 +1160,7 @@ main(int argc, char *argv[]) {
|
|||||||
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'a':
|
case 'a':
|
||||||
add_dtype(strtodsdigest(isc_commandline_argument));
|
add_dtype(isc_commandline_argument);
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
rdclass = strtoclass(isc_commandline_argument);
|
rdclass = strtoclass(isc_commandline_argument);
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
<copyright>
|
<copyright>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -144,9 +143,9 @@
|
|||||||
record. This option has no effect when using CDS records.
|
record. This option has no effect when using CDS records.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <replaceable>algorithm</replaceable> must be one of
|
The <replaceable>algorithm</replaceable> must be one of SHA-1
|
||||||
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
|
(SHA1), SHA-256 (SHA256), or SHA-384 (SHA384). These
|
||||||
and the hyphen may be omitted. If no algorithm is specified,
|
values are case insensitive. If no algorithm is specified,
|
||||||
the default is SHA-256.
|
the default is SHA-256.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2017, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -129,9 +129,9 @@
|
|||||||
record. This option has no effect when using CDS records.
|
record. This option has no effect when using CDS records.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The <em class="replaceable"><code>algorithm</code></em> must be one of
|
The <em class="replaceable"><code>algorithm</code></em> must be one of SHA-1
|
||||||
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
|
(SHA1), SHA-256 (SHA256), or SHA-384 (SHA384). These
|
||||||
and the hyphen may be omitted. If no algorithm is specified,
|
values are case insensitive. If no algorithm is specified,
|
||||||
the default is SHA-256.
|
the default is SHA-256.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2008-2012, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2008-2012, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -10,12 +10,12 @@
|
|||||||
.\" Title: dnssec-dsfromkey
|
.\" Title: dnssec-dsfromkey
|
||||||
.\" 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: 2019-05-08
|
.\" Date: 2012-05-02
|
||||||
.\" Manual: BIND9
|
.\" Manual: BIND9
|
||||||
.\" Source: ISC
|
.\" Source: ISC
|
||||||
.\" Language: English
|
.\" Language: English
|
||||||
.\"
|
.\"
|
||||||
.TH "DNSSEC\-DSFROMKEY" "8" "2019\-05\-08" "ISC" "BIND9"
|
.TH "DNSSEC\-DSFROMKEY" "8" "2012\-05\-02" "ISC" "BIND9"
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
.\" * Define some portability stuff
|
.\" * Define some portability stuff
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
@@ -39,99 +39,61 @@
|
|||||||
dnssec-dsfromkey \- DNSSEC DS RR generation tool
|
dnssec-dsfromkey \- DNSSEC DS RR generation tool
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
||||||
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] {keyfile}
|
\fBdnssec\-dsfromkey\fR [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-1\fR] [\fB\-2\fR] [\fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR] [\fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] {keyfile}
|
||||||
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
||||||
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-A\fR] {\fB\-f\ \fR\fB\fIfile\fR\fR} [dnsname]
|
\fBdnssec\-dsfromkey\fR {\-s} [\fB\-1\fR] [\fB\-2\fR] [\fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-s\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-f\ \fR\fB\fIfile\fR\fR] [\fB\-A\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] {dnsname}
|
||||||
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
||||||
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] {\-s} {dnsname}
|
\fBdnssec\-dsfromkey\fR [\fB\-h\fR] [\fB\-V\fR]
|
||||||
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
|
|
||||||
\fBdnssec\-dsfromkey\fR [\fB\-h\fR | \fB\-V\fR]
|
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
.PP
|
.PP
|
||||||
The
|
|
||||||
\fBdnssec\-dsfromkey\fR
|
\fBdnssec\-dsfromkey\fR
|
||||||
command outputs DS (Delegation Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
outputs the Delegation Signer (DS) resource record (RR), as defined in RFC 3658 and RFC 4509, for the given key(s)\&.
|
||||||
\fB\-C\fR
|
|
||||||
option\&.
|
|
||||||
.PP
|
|
||||||
The input keys can be specified in a number of ways:
|
|
||||||
.PP
|
|
||||||
By default,
|
|
||||||
\fBdnssec\-dsfromkey\fR
|
|
||||||
reads a key file named like
|
|
||||||
Knnnn\&.+aaa+iiiii\&.key, as generated by
|
|
||||||
\fBdnssec\-keygen\fR\&.
|
|
||||||
.PP
|
|
||||||
With the
|
|
||||||
\fB\-f \fR\fB\fIfile\fR\fR
|
|
||||||
option,
|
|
||||||
\fBdnssec\-dsfromkey\fR
|
|
||||||
reads keys from a zone file or partial zone file (which can contain just the DNSKEY records)\&.
|
|
||||||
.PP
|
|
||||||
With the
|
|
||||||
\fB\-s\fR
|
|
||||||
option,
|
|
||||||
\fBdnssec\-dsfromkey\fR
|
|
||||||
reads a
|
|
||||||
keyset\-
|
|
||||||
file, as generated by
|
|
||||||
\fBdnssec\-keygen\fR\fB\-C\fR\&.
|
|
||||||
.SH "OPTIONS"
|
.SH "OPTIONS"
|
||||||
.PP
|
.PP
|
||||||
\-1
|
\-1
|
||||||
.RS 4
|
.RS 4
|
||||||
An abbreviation for
|
Use SHA\-1 as the digest algorithm (the default is to use both SHA\-1 and SHA\-256)\&.
|
||||||
\fB\-a SHA\-1\fR\&. (Note: The SHA\-1 algorithm is no longer recommended for use when generating new DS and CDS records\&.)
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-2
|
\-2
|
||||||
.RS 4
|
.RS 4
|
||||||
An abbreviation for
|
Use SHA\-256 as the digest algorithm\&.
|
||||||
\fB\-a SHA\-256\fR\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-a \fIalgorithm\fR
|
\-a \fIalgorithm\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Specify a digest algorithm to use when converting DNSKEY records to DS records\&. This option can be repeated, so that multiple DS records are created for each DNSKEY record\&.
|
Select the digest algorithm\&. The value of
|
||||||
.sp
|
\fBalgorithm\fR
|
||||||
The
|
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256) or SHA\-384 (SHA384)\&. These values are case insensitive\&.
|
||||||
\fIalgorithm\fR
|
|
||||||
must be one of SHA\-1, SHA\-256, or SHA\-384\&. These values are case insensitive, and the hyphen may be omitted\&. If no algorithm is specified, the default is SHA\-256\&. (Note: The SHA\-1 algorithm is no longer recommended for use when generating new DS and CDS records\&.)
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-A
|
|
||||||
.RS 4
|
|
||||||
Include ZSKs when generating DS records\&. Without this option, only keys which have the KSK flag set will be converted to DS records and printed\&. Useful only in
|
|
||||||
\fB\-f\fR
|
|
||||||
zone file mode\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-c \fIclass\fR
|
|
||||||
.RS 4
|
|
||||||
Specifies the DNS class (default is IN)\&. Useful only in
|
|
||||||
\fB\-s\fR
|
|
||||||
keyset or
|
|
||||||
\fB\-f\fR
|
|
||||||
zone file mode\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-C
|
\-C
|
||||||
.RS 4
|
.RS 4
|
||||||
Generate CDS records rather than DS records\&.
|
Generate CDS records rather than DS records\&. This is mutually exclusive with generating lookaside records\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\-T \fITTL\fR
|
||||||
|
.RS 4
|
||||||
|
Specifies the TTL of the DS records\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\-K \fIdirectory\fR
|
||||||
|
.RS 4
|
||||||
|
Look for key files (or, in keyset mode,
|
||||||
|
keyset\-
|
||||||
|
files) in
|
||||||
|
\fBdirectory\fR\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-f \fIfile\fR
|
\-f \fIfile\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Zone file mode:
|
Zone file mode: in place of the keyfile name, the argument is the DNS domain name of a zone master file, which can be read from
|
||||||
\fBdnssec\-dsfromkey\fR\*(Aqs final
|
|
||||||
\fIdnsname\fR
|
|
||||||
argument is the DNS domain name of a zone whose master file can be read from
|
|
||||||
\fBfile\fR\&. If the zone name is the same as
|
\fBfile\fR\&. If the zone name is the same as
|
||||||
\fBfile\fR, then it may be omitted\&.
|
\fBfile\fR, then it may be omitted\&.
|
||||||
.sp
|
.sp
|
||||||
If
|
If
|
||||||
\fIfile\fR
|
\fBfile\fR
|
||||||
is
|
is set to
|
||||||
"\-", then the zone data is read from the standard input\&. This makes it possible to use the output of the
|
"\-", then the zone data is read from the standard input\&. This makes it possible to use the output of the
|
||||||
\fBdig\fR
|
\fBdig\fR
|
||||||
command as input, as in:
|
command as input, as in:
|
||||||
@@ -139,32 +101,26 @@ command as input, as in:
|
|||||||
\fBdig dnskey example\&.com | dnssec\-dsfromkey \-f \- example\&.com\fR
|
\fBdig dnskey example\&.com | dnssec\-dsfromkey \-f \- example\&.com\fR
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-h
|
\-A
|
||||||
.RS 4
|
.RS 4
|
||||||
Prints usage information\&.
|
Include ZSKs when generating DS records\&. Without this option, only keys which have the KSK flag set will be converted to DS records and printed\&. Useful only in zone file mode\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-K \fIdirectory\fR
|
\-l \fIdomain\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Look for key files or
|
Generate a DLV set instead of a DS set\&. The specified
|
||||||
keyset\-
|
\fBdomain\fR
|
||||||
files in
|
is appended to the name for each record in the set\&. The DNSSEC Lookaside Validation (DLV) RR is described in RFC 4431\&. This is mutually exclusive with generating CDS records\&.
|
||||||
\fBdirectory\fR\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-s
|
\-s
|
||||||
.RS 4
|
.RS 4
|
||||||
Keyset mode:
|
Keyset mode: in place of the keyfile name, the argument is the DNS domain name of a keyset file\&.
|
||||||
\fBdnssec\-dsfromkey\fR\*(Aqs final
|
|
||||||
\fIdnsname\fR
|
|
||||||
argument is the DNS domain name used to locate a
|
|
||||||
keyset\-
|
|
||||||
file\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-T \fITTL\fR
|
\-c \fIclass\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Specifies the TTL of the DS records\&. By default the TTL is omitted\&.
|
Specifies the DNS class (default is IN)\&. Useful only in keyset or zone file mode\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-v \fIlevel\fR
|
\-v \fIlevel\fR
|
||||||
@@ -172,6 +128,11 @@ Specifies the TTL of the DS records\&. By default the TTL is omitted\&.
|
|||||||
Sets the debugging level\&.
|
Sets the debugging level\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
\-h
|
||||||
|
.RS 4
|
||||||
|
Prints usage information\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
\-V
|
\-V
|
||||||
.RS 4
|
.RS 4
|
||||||
Prints version information\&.
|
Prints version information\&.
|
||||||
@@ -180,16 +141,16 @@ Prints version information\&.
|
|||||||
.PP
|
.PP
|
||||||
To build the SHA\-256 DS RR from the
|
To build the SHA\-256 DS RR from the
|
||||||
\fBKexample\&.com\&.+003+26160\fR
|
\fBKexample\&.com\&.+003+26160\fR
|
||||||
keyfile name, you can issue the following command:
|
keyfile name, the following command would be issued:
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-dsfromkey \-2 Kexample\&.com\&.+003+26160\fR
|
\fBdnssec\-dsfromkey \-2 Kexample\&.com\&.+003+26160\fR
|
||||||
.PP
|
.PP
|
||||||
The command would print something like:
|
The command would print something like:
|
||||||
.PP
|
.PP
|
||||||
\fBexample\&.com\&. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94\fR
|
\fBexample\&.com\&. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94\fR
|
||||||
.SH "FILES"
|
.SH "FILES"
|
||||||
.PP
|
.PP
|
||||||
The keyfile can be designated by the key identification
|
The keyfile can be designed by the key identification
|
||||||
Knnnn\&.+aaa+iiiii
|
Knnnn\&.+aaa+iiiii
|
||||||
or the full file name
|
or the full file name
|
||||||
Knnnn\&.+aaa+iiiii\&.key
|
Knnnn\&.+aaa+iiiii\&.key
|
||||||
@@ -209,18 +170,13 @@ A keyfile error can give a "file not found" even if the file exists\&.
|
|||||||
\fBdnssec-keygen\fR(8),
|
\fBdnssec-keygen\fR(8),
|
||||||
\fBdnssec-signzone\fR(8),
|
\fBdnssec-signzone\fR(8),
|
||||||
BIND 9 Administrator Reference Manual,
|
BIND 9 Administrator Reference Manual,
|
||||||
RFC 3658
|
RFC 3658,
|
||||||
(DS RRs),
|
RFC 4431\&.
|
||||||
RFC 4509
|
RFC 4509\&.
|
||||||
(SHA\-256 for DS RRs),
|
|
||||||
RFC 6605
|
|
||||||
(SHA\-384 for DS RRs),
|
|
||||||
RFC 7344
|
|
||||||
(CDS and CDNSKEY RRs)\&.
|
|
||||||
.SH "AUTHOR"
|
.SH "AUTHOR"
|
||||||
.PP
|
.PP
|
||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2008-2012, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2008-2012, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+107
-86
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -47,7 +49,12 @@
|
|||||||
|
|
||||||
#include "dnssectool.h"
|
#include "dnssectool.h"
|
||||||
|
|
||||||
|
#ifndef PATH_MAX
|
||||||
|
#define PATH_MAX 1024 /* WIN32, and others don't define this. */
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *program = "dnssec-dsfromkey";
|
const char *program = "dnssec-dsfromkey";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
static dns_rdataclass_t rdclass;
|
static dns_rdataclass_t rdclass;
|
||||||
static dns_fixedname_t fixed;
|
static dns_fixedname_t fixed;
|
||||||
@@ -208,7 +215,8 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
logkey(dns_rdata_t *rdata) {
|
logkey(dns_rdata_t *rdata)
|
||||||
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
isc_buffer_t buf;
|
isc_buffer_t buf;
|
||||||
@@ -227,7 +235,9 @@ logkey(dns_rdata_t *rdata) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit(dns_dsdigest_t dt, bool showall, bool cds, dns_rdata_t *rdata) {
|
emit(unsigned int dtype, bool showall, char *lookaside,
|
||||||
|
bool 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];
|
||||||
char text_buf[DST_KEY_MAXTEXTSIZE];
|
char text_buf[DST_KEY_MAXTEXTSIZE];
|
||||||
@@ -251,7 +261,7 @@ emit(dns_dsdigest_t dt, bool showall, bool cds, dns_rdata_t *rdata) {
|
|||||||
if ((dnskey.flags & DNS_KEYFLAG_KSK) == 0 && !showall)
|
if ((dnskey.flags & DNS_KEYFLAG_KSK) == 0 && !showall)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
result = dns_ds_buildrdata(name, rdata, dt, buf, &ds);
|
result = dns_ds_buildrdata(name, rdata, dtype, buf, &ds);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't build record");
|
fatal("can't build record");
|
||||||
|
|
||||||
@@ -259,6 +269,18 @@ emit(dns_dsdigest_t dt, bool showall, bool cds, dns_rdata_t *rdata) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't print name");
|
fatal("can't print name");
|
||||||
|
|
||||||
|
/* Add lookaside origin, if set */
|
||||||
|
if (lookaside != NULL) {
|
||||||
|
if (isc_buffer_availablelength(&nameb) < strlen(lookaside))
|
||||||
|
fatal("DLV origin '%s' is too long", lookaside);
|
||||||
|
isc_buffer_putstr(&nameb, lookaside);
|
||||||
|
if (lookaside[strlen(lookaside) - 1] != '.') {
|
||||||
|
if (isc_buffer_availablelength(&nameb) < 1)
|
||||||
|
fatal("DLV origin '%s' is too long", lookaside);
|
||||||
|
isc_buffer_putstr(&nameb, ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
result = dns_rdata_tofmttext(&ds, (dns_name_t *) NULL, 0, 0, 0, "",
|
result = dns_rdata_tofmttext(&ds, (dns_name_t *) NULL, 0, 0, 0, "",
|
||||||
&textb);
|
&textb);
|
||||||
|
|
||||||
@@ -278,54 +300,48 @@ emit(dns_dsdigest_t dt, bool showall, bool cds, dns_rdata_t *rdata) {
|
|||||||
isc_buffer_usedregion(&classb, &r);
|
isc_buffer_usedregion(&classb, &r);
|
||||||
printf("%.*s", (int)r.length, r.base);
|
printf("%.*s", (int)r.length, r.base);
|
||||||
|
|
||||||
if (cds) {
|
if (lookaside == NULL) {
|
||||||
printf(" CDS ");
|
if (cds)
|
||||||
} else {
|
printf(" CDS ");
|
||||||
printf(" DS ");
|
else
|
||||||
}
|
printf(" DS ");
|
||||||
|
} else
|
||||||
|
printf(" DLV ");
|
||||||
|
|
||||||
isc_buffer_usedregion(&textb, &r);
|
isc_buffer_usedregion(&textb, &r);
|
||||||
printf("%.*s\n", (int)r.length, r.base);
|
printf("%.*s\n", (int)r.length, r.base);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
emits(bool showall, bool cds, dns_rdata_t *rdata) {
|
|
||||||
unsigned i, n;
|
|
||||||
|
|
||||||
n = sizeof(dtype)/sizeof(dtype[0]);
|
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
if (dtype[i] != 0) {
|
|
||||||
emit(dtype[i], showall, cds, rdata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE static void
|
ISC_PLATFORM_NORETURN_PRE static void
|
||||||
usage(void) ISC_PLATFORM_NORETURN_POST;
|
usage(void) ISC_PLATFORM_NORETURN_POST;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void) {
|
usage(void) {
|
||||||
fprintf(stderr, "Usage:\n");
|
fprintf(stderr, "Usage:\n");
|
||||||
fprintf(stderr, " %s [options] keyfile\n\n", program);
|
fprintf(stderr, " %s options [-K dir] keyfile\n\n", program);
|
||||||
fprintf(stderr, " %s [options] -f zonefile [zonename]\n\n", program);
|
fprintf(stderr, " %s options [-K dir] [-c class] -s dnsname\n\n",
|
||||||
fprintf(stderr, " %s [options] -s dnsname\n\n", program);
|
program);
|
||||||
fprintf(stderr, " %s [-h|-V]\n\n", program);
|
fprintf(stderr, " %s options -f zonefile (as zone name)\n\n", program);
|
||||||
|
fprintf(stderr, " %s options -f zonefile zonename\n\n", program);
|
||||||
fprintf(stderr, "Version: %s\n", VERSION);
|
fprintf(stderr, "Version: %s\n", VERSION);
|
||||||
fprintf(stderr, "Options:\n"
|
fprintf(stderr, "Options:\n");
|
||||||
" -1: digest algorithm SHA-1\n"
|
fprintf(stderr, " -v <verbose level>\n");
|
||||||
" -2: digest algorithm SHA-256\n"
|
fprintf(stderr, " -V: print version information\n");
|
||||||
" -a algorithm: digest algorithm (SHA-1, SHA-256 or SHA-384)\n"
|
fprintf(stderr, " -K <directory>: directory in which to find "
|
||||||
" -A: include all keys in DS set, not just KSKs (-f only)\n"
|
"key file or keyset file\n");
|
||||||
" -c class: rdata class for DS set (default IN) (-f or -s only)\n"
|
fprintf(stderr, " -a algorithm: digest algorithm "
|
||||||
" -C: print CDS records\n"
|
"(SHA-1, SHA-256 or SHA-384)\n");
|
||||||
" -f zonefile: read keys from a zone file\n"
|
fprintf(stderr, " -1: use SHA-1\n");
|
||||||
" -h: print help information\n"
|
fprintf(stderr, " -2: use SHA-256\n");
|
||||||
" -K directory: where to find key or keyset files\n"
|
fprintf(stderr, " -C: print CDS record\n");
|
||||||
" -s: read keys from keyset-<dnsname> file\n"
|
fprintf(stderr, " -l: add lookaside zone and print DLV records\n");
|
||||||
" -T: TTL of output records (omitted by default)\n"
|
fprintf(stderr, " -s: read keyset from keyset-<dnsname> file\n");
|
||||||
" -v level: verbosity\n"
|
fprintf(stderr, " -c class: rdata class for DS set (default: IN)\n");
|
||||||
" -V: print version information\n");
|
fprintf(stderr, " -T TTL\n");
|
||||||
fprintf(stderr, "Output: DS or CDS RRs\n");
|
fprintf(stderr, " -f file: read keyset from zone file\n");
|
||||||
|
fprintf(stderr, " -A: when used with -f, "
|
||||||
|
"include all keys in DS set, not just KSKs\n");
|
||||||
|
fprintf(stderr, "Output: DS or DLV RRs\n");
|
||||||
|
|
||||||
exit (-1);
|
exit (-1);
|
||||||
}
|
}
|
||||||
@@ -334,11 +350,14 @@ int
|
|||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
char *classname = NULL;
|
char *classname = NULL;
|
||||||
char *filename = NULL, *dir = NULL, *namestr;
|
char *filename = NULL, *dir = NULL, *namestr;
|
||||||
|
char *lookaside = NULL;
|
||||||
char *endp;
|
char *endp;
|
||||||
int ch;
|
int ch;
|
||||||
bool cds = false;
|
unsigned int dtype = DNS_DSDIGEST_SHA1;
|
||||||
bool usekeyset = false;
|
bool cds = false;
|
||||||
bool showall = false;
|
bool both = true;
|
||||||
|
bool usekeyset = false;
|
||||||
|
bool showall = 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;
|
||||||
@@ -346,14 +365,12 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
dns_rdata_init(&rdata);
|
dns_rdata_init(&rdata);
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
}
|
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
}
|
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -366,18 +383,24 @@ main(int argc, char **argv) {
|
|||||||
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':
|
||||||
add_dtype(DNS_DSDIGEST_SHA1);
|
dtype = DNS_DSDIGEST_SHA1;
|
||||||
|
both = false;
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
add_dtype(DNS_DSDIGEST_SHA256);
|
dtype = DNS_DSDIGEST_SHA256;
|
||||||
|
both = false;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
showall = true;
|
showall = true;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
add_dtype(strtodsdigest(isc_commandline_argument));
|
dtype = strtodsdigest(isc_commandline_argument);
|
||||||
|
both = false;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
|
if (lookaside != NULL)
|
||||||
|
fatal("lookaside and CDS are mutually"
|
||||||
|
" exclusive");
|
||||||
cds = true;
|
cds = true;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
@@ -396,7 +419,12 @@ main(int argc, char **argv) {
|
|||||||
filename = isc_commandline_argument;
|
filename = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
fatal("-l option (DLV lookaside) is obsolete");
|
if (cds)
|
||||||
|
fatal("lookaside and CDS are mutually"
|
||||||
|
" exclusive");
|
||||||
|
lookaside = isc_commandline_argument;
|
||||||
|
if (strlen(lookaside) == 0U)
|
||||||
|
fatal("lookaside must be a non-empty string");
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
usekeyset = true;
|
usekeyset = true;
|
||||||
@@ -435,32 +463,22 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
rdclass = strtoclass(classname);
|
rdclass = strtoclass(classname);
|
||||||
|
|
||||||
if (usekeyset && filename != NULL) {
|
if (usekeyset && filename != NULL)
|
||||||
fatal("cannot use both -s and -f");
|
fatal("cannot use both -s and -f");
|
||||||
}
|
|
||||||
|
|
||||||
/* When not using -f, -A is implicit */
|
/* When not using -f, -A is implicit */
|
||||||
if (filename == NULL) {
|
if (filename == NULL)
|
||||||
showall = true;
|
showall = true;
|
||||||
}
|
|
||||||
|
|
||||||
/* Default digest type if none specified. */
|
if (argc < isc_commandline_index + 1 && filename == NULL)
|
||||||
if (dtype[0] == 0) {
|
|
||||||
dtype[0] = DNS_DSDIGEST_SHA256;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc < isc_commandline_index + 1 && filename == NULL) {
|
|
||||||
fatal("the key file name was not specified");
|
fatal("the key file name was not specified");
|
||||||
}
|
if (argc > isc_commandline_index + 1)
|
||||||
if (argc > isc_commandline_index + 1) {
|
|
||||||
fatal("extraneous arguments");
|
fatal("extraneous arguments");
|
||||||
}
|
|
||||||
|
|
||||||
result = dst_lib_init(mctx, NULL);
|
result = dst_lib_init(mctx, NULL);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("could not initialize dst: %s",
|
fatal("could not initialize dst: %s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
|
||||||
|
|
||||||
setup_logging(mctx, &log);
|
setup_logging(mctx, &log);
|
||||||
|
|
||||||
@@ -470,38 +488,38 @@ main(int argc, char **argv) {
|
|||||||
if (argc < isc_commandline_index + 1 && filename != NULL) {
|
if (argc < isc_commandline_index + 1 && filename != NULL) {
|
||||||
/* using zone name as the zone file name */
|
/* using zone name as the zone file name */
|
||||||
namestr = filename;
|
namestr = filename;
|
||||||
} else {
|
} else
|
||||||
namestr = argv[isc_commandline_index];
|
namestr = argv[isc_commandline_index];
|
||||||
}
|
|
||||||
|
|
||||||
result = initname(namestr);
|
result = initname(namestr);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("could not initialize name %s", namestr);
|
fatal("could not initialize name %s", namestr);
|
||||||
}
|
|
||||||
|
|
||||||
if (usekeyset) {
|
if (usekeyset)
|
||||||
result = loadkeyset(dir, &rdataset);
|
result = loadkeyset(dir, &rdataset);
|
||||||
} else {
|
else
|
||||||
result = loadset(filename, &rdataset);
|
result = loadset(filename, &rdataset);
|
||||||
}
|
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("could not load DNSKEY set: %s\n",
|
fatal("could not load DNSKEY set: %s\n",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
|
||||||
|
|
||||||
for (result = dns_rdataset_first(&rdataset);
|
for (result = dns_rdataset_first(&rdataset);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
result = dns_rdataset_next(&rdataset))
|
result = dns_rdataset_next(&rdataset)) {
|
||||||
{
|
|
||||||
dns_rdata_init(&rdata);
|
dns_rdata_init(&rdata);
|
||||||
dns_rdataset_current(&rdataset, &rdata);
|
dns_rdataset_current(&rdataset, &rdata);
|
||||||
|
|
||||||
if (verbose > 2) {
|
if (verbose > 2)
|
||||||
logkey(&rdata);
|
logkey(&rdata);
|
||||||
}
|
|
||||||
|
|
||||||
emits(showall, cds, &rdata);
|
if (both) {
|
||||||
|
emit(DNS_DSDIGEST_SHA1, showall, lookaside,
|
||||||
|
cds, &rdata);
|
||||||
|
emit(DNS_DSDIGEST_SHA256, showall, lookaside,
|
||||||
|
cds, &rdata);
|
||||||
|
} else
|
||||||
|
emit(dtype, showall, lookaside, cds, &rdata);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned char key_buf[DST_KEY_MAXSIZE];
|
unsigned char key_buf[DST_KEY_MAXSIZE];
|
||||||
@@ -509,25 +527,28 @@ main(int argc, char **argv) {
|
|||||||
loadkey(argv[isc_commandline_index], key_buf,
|
loadkey(argv[isc_commandline_index], key_buf,
|
||||||
DST_KEY_MAXSIZE, &rdata);
|
DST_KEY_MAXSIZE, &rdata);
|
||||||
|
|
||||||
emits(showall, cds, &rdata);
|
if (both) {
|
||||||
|
emit(DNS_DSDIGEST_SHA1, showall, lookaside, cds,
|
||||||
|
&rdata);
|
||||||
|
emit(DNS_DSDIGEST_SHA256, showall, lookaside, cds,
|
||||||
|
&rdata);
|
||||||
|
} else
|
||||||
|
emit(dtype, showall, lookaside, cds, &rdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dns_rdataset_isassociated(&rdataset)) {
|
if (dns_rdataset_isassociated(&rdataset))
|
||||||
dns_rdataset_disassociate(&rdataset);
|
dns_rdataset_disassociate(&rdataset);
|
||||||
}
|
|
||||||
cleanup_logging(&log);
|
cleanup_logging(&log);
|
||||||
dst_lib_destroy();
|
dst_lib_destroy();
|
||||||
dns_name_destroy();
|
dns_name_destroy();
|
||||||
if (verbose > 10) {
|
if (verbose > 10)
|
||||||
isc_mem_stats(mctx, stdout);
|
isc_mem_stats(mctx, stdout);
|
||||||
}
|
|
||||||
isc_mem_destroy(&mctx);
|
isc_mem_destroy(&mctx);
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if (ferror(stdout)) {
|
if (ferror(stdout)) {
|
||||||
fprintf(stderr, "write error\n");
|
fprintf(stderr, "write error\n");
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else
|
||||||
return (0);
|
return (0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<!-- Converted by db4-upgrade version 1.0 -->
|
<!-- Converted by db4-upgrade version 1.0 -->
|
||||||
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.dnssec-dsfromkey">
|
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.dnssec-dsfromkey">
|
||||||
<info>
|
<info>
|
||||||
<date>2019-05-08</date>
|
<date>2012-05-02</date>
|
||||||
</info>
|
</info>
|
||||||
<refentryinfo>
|
<refentryinfo>
|
||||||
<corpname>ISC</corpname>
|
<corpname>ISC</corpname>
|
||||||
@@ -41,7 +41,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -49,108 +48,56 @@
|
|||||||
<refsynopsisdiv>
|
<refsynopsisdiv>
|
||||||
<cmdsynopsis sepchar=" ">
|
<cmdsynopsis sepchar=" ">
|
||||||
<command>dnssec-dsfromkey</command>
|
<command>dnssec-dsfromkey</command>
|
||||||
<group choice="opt">
|
|
||||||
<arg choice="plain"><option>-1</option></arg>
|
|
||||||
<arg choice="plain"><option>-2</option></arg>
|
|
||||||
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-1</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-2</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-C</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
|
||||||
<arg choice="req" rep="norepeat">keyfile</arg>
|
<arg choice="req" rep="norepeat">keyfile</arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
<cmdsynopsis sepchar=" ">
|
<cmdsynopsis sepchar=" ">
|
||||||
<command>dnssec-dsfromkey</command>
|
<command>dnssec-dsfromkey</command>
|
||||||
<group choice="opt">
|
|
||||||
<arg choice="plain"><option>-1</option></arg>
|
|
||||||
<arg choice="plain"><option>-2</option></arg>
|
|
||||||
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-A</option></arg>
|
|
||||||
<arg choice="req" rep="norepeat"><option>-f <replaceable class="parameter">file</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat">dnsname</arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
<cmdsynopsis sepchar=" ">
|
|
||||||
<command>dnssec-dsfromkey</command>
|
|
||||||
<group choice="opt">
|
|
||||||
<arg choice="plain"><option>-1</option></arg>
|
|
||||||
<arg choice="plain"><option>-2</option></arg>
|
|
||||||
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
|
|
||||||
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
|
|
||||||
</group>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
|
||||||
<arg choice="req" rep="norepeat">-s</arg>
|
<arg choice="req" rep="norepeat">-s</arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-1</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-2</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-s</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-f <replaceable class="parameter">file</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-A</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
||||||
<arg choice="req" rep="norepeat">dnsname</arg>
|
<arg choice="req" rep="norepeat">dnsname</arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
<cmdsynopsis sepchar=" ">
|
<cmdsynopsis sepchar=" ">
|
||||||
<command>dnssec-dsfromkey</command>
|
<command>dnssec-dsfromkey</command>
|
||||||
<group choice="opt">
|
<arg choice="opt" rep="norepeat"><option>-h</option></arg>
|
||||||
<arg choice="plain" rep="norepeat"><option>-h</option></arg>
|
<arg choice="opt" rep="norepeat"><option>-V</option></arg>
|
||||||
<arg choice="plain" rep="norepeat"><option>-V</option></arg>
|
</cmdsynopsis>
|
||||||
</group>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
<refsection><info><title>DESCRIPTION</title></info>
|
<refsection><info><title>DESCRIPTION</title></info>
|
||||||
|
|
||||||
<para>
|
<para><command>dnssec-dsfromkey</command>
|
||||||
The <command>dnssec-dsfromkey</command> command outputs DS (Delegation
|
outputs the Delegation Signer (DS) resource record (RR), as defined in
|
||||||
Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
RFC 3658 and RFC 4509, for the given key(s).
|
||||||
<option>-C</option> option.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
|
||||||
The input keys can be specified in a number of ways:
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
By default, <command>dnssec-dsfromkey</command> reads a key file
|
|
||||||
named like <filename>Knnnn.+aaa+iiiii.key</filename>, as generated
|
|
||||||
by <command>dnssec-keygen</command>.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
With the <option>-f <replaceable>file</replaceable></option>
|
|
||||||
option, <command>dnssec-dsfromkey</command> reads keys from a zone file
|
|
||||||
or partial zone file (which can contain just the DNSKEY records).
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
With the <option>-s</option>
|
|
||||||
option, <command>dnssec-dsfromkey</command> reads
|
|
||||||
a <filename>keyset-</filename> file, as generated
|
|
||||||
by <command>dnssec-keygen</command> <option>-C</option>.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>OPTIONS</title></info>
|
<refsection><info><title>OPTIONS</title></info>
|
||||||
|
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-1</term>
|
<term>-1</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
An abbreviation for <option>-a SHA-1</option>.
|
Use SHA-1 as the digest algorithm (the default is to use
|
||||||
(Note: The SHA-1 algorithm is no longer recommended for use
|
both SHA-1 and SHA-256).
|
||||||
when generating new DS and CDS records.)
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -159,7 +106,7 @@
|
|||||||
<term>-2</term>
|
<term>-2</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
An abbreviation for <option>-a SHA-256</option>.
|
Use SHA-256 as the digest algorithm.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -168,49 +115,40 @@
|
|||||||
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
|
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Specify a digest algorithm to use when converting DNSKEY
|
Select the digest algorithm. The value of
|
||||||
records to DS records. This option can be repeated, so
|
<option>algorithm</option> must be one of SHA-1 (SHA1),
|
||||||
that multiple DS records are created for each DNSKEY
|
SHA-256 (SHA256) or SHA-384 (SHA384).
|
||||||
record.
|
These values are case insensitive.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The <replaceable>algorithm</replaceable> must be one of
|
|
||||||
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
|
|
||||||
and the hyphen may be omitted. If no algorithm is specified,
|
|
||||||
the default is SHA-256.
|
|
||||||
(Note: The SHA-1 algorithm is no longer recommended for use
|
|
||||||
when generating new DS and CDS records.)
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-A</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Include ZSKs when generating DS records. Without this option, only
|
|
||||||
keys which have the KSK flag set will be converted to DS records
|
|
||||||
and printed. Useful only in <option>-f</option> zone file mode.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-c <replaceable class="parameter">class</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Specifies the DNS class (default is IN). Useful only
|
|
||||||
in <option>-s</option> keyset or <option>-f</option>
|
|
||||||
zone file mode.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-C</term>
|
<term>-C</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Generate CDS records rather than DS records.
|
Generate CDS records rather than DS records. This is mutually
|
||||||
|
exclusive with generating lookaside records.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-T <replaceable class="parameter">TTL</replaceable></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Specifies the TTL of the DS records.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-K <replaceable class="parameter">directory</replaceable></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Look for key files (or, in keyset mode,
|
||||||
|
<filename>keyset-</filename> files) in
|
||||||
|
<option>directory</option>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -219,14 +157,13 @@
|
|||||||
<term>-f <replaceable class="parameter">file</replaceable></term>
|
<term>-f <replaceable class="parameter">file</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Zone file mode: <command>dnssec-dsfromkey</command>'s
|
Zone file mode: in place of the keyfile name, the argument is
|
||||||
final <replaceable>dnsname</replaceable> argument is
|
the DNS domain name of a zone master file, which can be read
|
||||||
the DNS domain name of a zone whose master file can be read
|
|
||||||
from <option>file</option>. If the zone name is the same as
|
from <option>file</option>. If the zone name is the same as
|
||||||
<option>file</option>, then it may be omitted.
|
<option>file</option>, then it may be omitted.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
If <replaceable>file</replaceable> is <literal>"-"</literal>, then
|
If <option>file</option> is set to <literal>"-"</literal>, then
|
||||||
the zone data is read from the standard input. This makes it
|
the zone data is read from the standard input. This makes it
|
||||||
possible to use the output of the <command>dig</command>
|
possible to use the output of the <command>dig</command>
|
||||||
command as input, as in:
|
command as input, as in:
|
||||||
@@ -238,20 +175,26 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-h</term>
|
<term>-A</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Prints usage information.
|
Include ZSKs when generating DS records. Without this option,
|
||||||
</para>
|
only keys which have the KSK flag set will be converted to DS
|
||||||
</listitem>
|
records and printed. Useful only in zone file mode.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-K <replaceable class="parameter">directory</replaceable></term>
|
<term>-l <replaceable class="parameter">domain</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Look for key files or <filename>keyset-</filename> files in
|
Generate a DLV set instead of a DS set. The specified
|
||||||
<option>directory</option>.
|
<option>domain</option> is appended to the name for each
|
||||||
|
record in the set.
|
||||||
|
The DNSSEC Lookaside Validation (DLV) RR is described
|
||||||
|
in RFC 4431. This is mutually exclusive with generating
|
||||||
|
CDS records.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -260,18 +203,18 @@
|
|||||||
<term>-s</term>
|
<term>-s</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Keyset mode: <command>dnssec-dsfromkey</command>'s
|
Keyset mode: in place of the keyfile name, the argument is
|
||||||
final <replaceable>dnsname</replaceable> argument is the DNS
|
the DNS domain name of a keyset file.
|
||||||
domain name used to locate a <filename>keyset-</filename> file.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-T <replaceable class="parameter">TTL</replaceable></term>
|
<term>-c <replaceable class="parameter">class</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Specifies the TTL of the DS records. By default the TTL is omitted.
|
Specifies the DNS class (default is IN). Useful only
|
||||||
|
in keyset or zone file mode.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -285,6 +228,15 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-h</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Prints usage information.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-V</term>
|
<term>-V</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -301,22 +253,21 @@
|
|||||||
<para>
|
<para>
|
||||||
To build the SHA-256 DS RR from the
|
To build the SHA-256 DS RR from the
|
||||||
<userinput>Kexample.com.+003+26160</userinput>
|
<userinput>Kexample.com.+003+26160</userinput>
|
||||||
keyfile name, you can issue the following command:
|
keyfile name, the following command would be issued:
|
||||||
</para>
|
</para>
|
||||||
<para><userinput>dnssec-dsfromkey -2 Kexample.com.+003+26160</userinput>
|
<para><userinput>dnssec-dsfromkey -2 Kexample.com.+003+26160</userinput>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The command would print something like:
|
The command would print something like:
|
||||||
</para>
|
</para>
|
||||||
<para><userinput>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94</userinput>
|
<para><userinput>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94</userinput>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>FILES</title></info>
|
<refsection><info><title>FILES</title></info>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The keyfile can be designated by the key identification
|
The keyfile can be designed by the key identification
|
||||||
<filename>Knnnn.+aaa+iiiii</filename> or the full file name
|
<filename>Knnnn.+aaa+iiiii</filename> or the full file name
|
||||||
<filename>Knnnn.+aaa+iiiii.key</filename> as generated by
|
<filename>Knnnn.+aaa+iiiii.key</filename> as generated by
|
||||||
<refentrytitle>dnssec-keygen</refentrytitle><manvolnum>8</manvolnum>.
|
<refentrytitle>dnssec-keygen</refentrytitle><manvolnum>8</manvolnum>.
|
||||||
@@ -344,10 +295,9 @@
|
|||||||
<refentrytitle>dnssec-signzone</refentrytitle><manvolnum>8</manvolnum>
|
<refentrytitle>dnssec-signzone</refentrytitle><manvolnum>8</manvolnum>
|
||||||
</citerefentry>,
|
</citerefentry>,
|
||||||
<citetitle>BIND 9 Administrator Reference Manual</citetitle>,
|
<citetitle>BIND 9 Administrator Reference Manual</citetitle>,
|
||||||
<citetitle>RFC 3658</citetitle> (DS RRs),
|
<citetitle>RFC 3658</citetitle>,
|
||||||
<citetitle>RFC 4509</citetitle> (SHA-256 for DS RRs),
|
<citetitle>RFC 4431</citetitle>.
|
||||||
<citetitle>RFC 6605</citetitle> (SHA-384 for DS RRs),
|
<citetitle>RFC 4509</citetitle>.
|
||||||
<citetitle>RFC 7344</citetitle> (CDS and CDNSKEY RRs).
|
|
||||||
</para>
|
</para>
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2008-2012, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2008-2012, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -33,167 +33,105 @@
|
|||||||
<h2>Synopsis</h2>
|
<h2>Synopsis</h2>
|
||||||
<div class="cmdsynopsis"><p>
|
<div class="cmdsynopsis"><p>
|
||||||
<code class="command">dnssec-dsfromkey</code>
|
<code class="command">dnssec-dsfromkey</code>
|
||||||
[
|
|
||||||
<code class="option">-1</code>
|
|
||||||
| <code class="option">-2</code>
|
|
||||||
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
|
|
||||||
]
|
|
||||||
[
|
|
||||||
<code class="option">-C</code>
|
|
||||||
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
|
|
||||||
]
|
|
||||||
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
|
|
||||||
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
||||||
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
[<code class="option">-1</code>]
|
||||||
|
[<code class="option">-2</code>]
|
||||||
|
[<code class="option">-a <em class="replaceable"><code>alg</code></em></code>]
|
||||||
|
[<code class="option">-C</code>]
|
||||||
|
[<code class="option">-l <em class="replaceable"><code>domain</code></em></code>]
|
||||||
|
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
|
||||||
{keyfile}
|
{keyfile}
|
||||||
</p></div>
|
</p></div>
|
||||||
<div class="cmdsynopsis"><p>
|
<div class="cmdsynopsis"><p>
|
||||||
<code class="command">dnssec-dsfromkey</code>
|
<code class="command">dnssec-dsfromkey</code>
|
||||||
[
|
|
||||||
<code class="option">-1</code>
|
|
||||||
| <code class="option">-2</code>
|
|
||||||
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
|
|
||||||
]
|
|
||||||
[
|
|
||||||
<code class="option">-C</code>
|
|
||||||
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
|
|
||||||
]
|
|
||||||
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
|
|
||||||
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
|
||||||
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
|
||||||
[<code class="option">-A</code>]
|
|
||||||
{<code class="option">-f <em class="replaceable"><code>file</code></em></code>}
|
|
||||||
[dnsname]
|
|
||||||
</p></div>
|
|
||||||
<div class="cmdsynopsis"><p>
|
|
||||||
<code class="command">dnssec-dsfromkey</code>
|
|
||||||
[
|
|
||||||
<code class="option">-1</code>
|
|
||||||
| <code class="option">-2</code>
|
|
||||||
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
|
|
||||||
]
|
|
||||||
[
|
|
||||||
<code class="option">-C</code>
|
|
||||||
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
|
|
||||||
]
|
|
||||||
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
|
|
||||||
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
|
||||||
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
|
||||||
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
|
||||||
{-s}
|
{-s}
|
||||||
|
[<code class="option">-1</code>]
|
||||||
|
[<code class="option">-2</code>]
|
||||||
|
[<code class="option">-a <em class="replaceable"><code>alg</code></em></code>]
|
||||||
|
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
||||||
|
[<code class="option">-l <em class="replaceable"><code>domain</code></em></code>]
|
||||||
|
[<code class="option">-s</code>]
|
||||||
|
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
||||||
|
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
|
||||||
|
[<code class="option">-f <em class="replaceable"><code>file</code></em></code>]
|
||||||
|
[<code class="option">-A</code>]
|
||||||
|
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
||||||
{dnsname}
|
{dnsname}
|
||||||
</p></div>
|
</p></div>
|
||||||
<div class="cmdsynopsis"><p>
|
<div class="cmdsynopsis"><p>
|
||||||
<code class="command">dnssec-dsfromkey</code>
|
<code class="command">dnssec-dsfromkey</code>
|
||||||
[
|
[<code class="option">-h</code>]
|
||||||
<code class="option">-h</code>
|
[<code class="option">-V</code>]
|
||||||
| <code class="option">-V</code>
|
</p></div>
|
||||||
]
|
|
||||||
</p></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.7"></a><h2>DESCRIPTION</h2>
|
<a name="id-1.7"></a><h2>DESCRIPTION</h2>
|
||||||
|
|
||||||
<p>
|
<p><span class="command"><strong>dnssec-dsfromkey</strong></span>
|
||||||
The <span class="command"><strong>dnssec-dsfromkey</strong></span> command outputs DS (Delegation
|
outputs the Delegation Signer (DS) resource record (RR), as defined in
|
||||||
Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
RFC 3658 and RFC 4509, for the given key(s).
|
||||||
<code class="option">-C</code> option.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
The input keys can be specified in a number of ways:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
By default, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads a key file
|
|
||||||
named like <code class="filename">Knnnn.+aaa+iiiii.key</code>, as generated
|
|
||||||
by <span class="command"><strong>dnssec-keygen</strong></span>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
With the <code class="option">-f <em class="replaceable"><code>file</code></em></code>
|
|
||||||
option, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads keys from a zone file
|
|
||||||
or partial zone file (which can contain just the DNSKEY records).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
With the <code class="option">-s</code>
|
|
||||||
option, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads
|
|
||||||
a <code class="filename">keyset-</code> file, as generated
|
|
||||||
by <span class="command"><strong>dnssec-keygen</strong></span> <code class="option">-C</code>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.8"></a><h2>OPTIONS</h2>
|
<a name="id-1.8"></a><h2>OPTIONS</h2>
|
||||||
|
|
||||||
|
|
||||||
<div class="variablelist"><dl class="variablelist">
|
<div class="variablelist"><dl class="variablelist">
|
||||||
<dt><span class="term">-1</span></dt>
|
<dt><span class="term">-1</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
An abbreviation for <code class="option">-a SHA-1</code>.
|
Use SHA-1 as the digest algorithm (the default is to use
|
||||||
(Note: The SHA-1 algorithm is no longer recommended for use
|
both SHA-1 and SHA-256).
|
||||||
when generating new DS and CDS records.)
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-2</span></dt>
|
<dt><span class="term">-2</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
An abbreviation for <code class="option">-a SHA-256</code>.
|
Use SHA-256 as the digest algorithm.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
|
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Specify a digest algorithm to use when converting DNSKEY
|
Select the digest algorithm. The value of
|
||||||
records to DS records. This option can be repeated, so
|
<code class="option">algorithm</code> must be one of SHA-1 (SHA1),
|
||||||
that multiple DS records are created for each DNSKEY
|
SHA-256 (SHA256) or SHA-384 (SHA384).
|
||||||
record.
|
These values are case insensitive.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The <em class="replaceable"><code>algorithm</code></em> must be one of
|
|
||||||
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
|
|
||||||
and the hyphen may be omitted. If no algorithm is specified,
|
|
||||||
the default is SHA-256.
|
|
||||||
(Note: The SHA-1 algorithm is no longer recommended for use
|
|
||||||
when generating new DS and CDS records.)
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-A</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Include ZSKs when generating DS records. Without this option, only
|
|
||||||
keys which have the KSK flag set will be converted to DS records
|
|
||||||
and printed. Useful only in <code class="option">-f</code> zone file mode.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-c <em class="replaceable"><code>class</code></em></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Specifies the DNS class (default is IN). Useful only
|
|
||||||
in <code class="option">-s</code> keyset or <code class="option">-f</code>
|
|
||||||
zone file mode.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-C</span></dt>
|
<dt><span class="term">-C</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Generate CDS records rather than DS records.
|
Generate CDS records rather than DS records. This is mutually
|
||||||
|
exclusive with generating lookaside records.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span class="term">-T <em class="replaceable"><code>TTL</code></em></span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Specifies the TTL of the DS records.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Look for key files (or, in keyset mode,
|
||||||
|
<code class="filename">keyset-</code> files) in
|
||||||
|
<code class="option">directory</code>.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-f <em class="replaceable"><code>file</code></em></span></dt>
|
<dt><span class="term">-f <em class="replaceable"><code>file</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Zone file mode: <span class="command"><strong>dnssec-dsfromkey</strong></span>'s
|
Zone file mode: in place of the keyfile name, the argument is
|
||||||
final <em class="replaceable"><code>dnsname</code></em> argument is
|
the DNS domain name of a zone master file, which can be read
|
||||||
the DNS domain name of a zone whose master file can be read
|
|
||||||
from <code class="option">file</code>. If the zone name is the same as
|
from <code class="option">file</code>. If the zone name is the same as
|
||||||
<code class="option">file</code>, then it may be omitted.
|
<code class="option">file</code>, then it may be omitted.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
If <em class="replaceable"><code>file</code></em> is <code class="literal">"-"</code>, then
|
If <code class="option">file</code> is set to <code class="literal">"-"</code>, then
|
||||||
the zone data is read from the standard input. This makes it
|
the zone data is read from the standard input. This makes it
|
||||||
possible to use the output of the <span class="command"><strong>dig</strong></span>
|
possible to use the output of the <span class="command"><strong>dig</strong></span>
|
||||||
command as input, as in:
|
command as input, as in:
|
||||||
@@ -202,31 +140,37 @@
|
|||||||
<strong class="userinput"><code>dig dnskey example.com | dnssec-dsfromkey -f - example.com</code></strong>
|
<strong class="userinput"><code>dig dnskey example.com | dnssec-dsfromkey -f - example.com</code></strong>
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-h</span></dt>
|
<dt><span class="term">-A</span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Include ZSKs when generating DS records. Without this option,
|
||||||
|
only keys which have the KSK flag set will be converted to DS
|
||||||
|
records and printed. Useful only in zone file mode.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span class="term">-l <em class="replaceable"><code>domain</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Prints usage information.
|
Generate a DLV set instead of a DS set. The specified
|
||||||
</p>
|
<code class="option">domain</code> is appended to the name for each
|
||||||
</dd>
|
record in the set.
|
||||||
<dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt>
|
The DNSSEC Lookaside Validation (DLV) RR is described
|
||||||
<dd>
|
in RFC 4431. This is mutually exclusive with generating
|
||||||
<p>
|
CDS records.
|
||||||
Look for key files or <code class="filename">keyset-</code> files in
|
|
||||||
<code class="option">directory</code>.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-s</span></dt>
|
<dt><span class="term">-s</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Keyset mode: <span class="command"><strong>dnssec-dsfromkey</strong></span>'s
|
Keyset mode: in place of the keyfile name, the argument is
|
||||||
final <em class="replaceable"><code>dnsname</code></em> argument is the DNS
|
the DNS domain name of a keyset file.
|
||||||
domain name used to locate a <code class="filename">keyset-</code> file.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-T <em class="replaceable"><code>TTL</code></em></span></dt>
|
<dt><span class="term">-c <em class="replaceable"><code>class</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Specifies the TTL of the DS records. By default the TTL is omitted.
|
Specifies the DNS class (default is IN). Useful only
|
||||||
|
in keyset or zone file mode.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
||||||
@@ -235,6 +179,12 @@
|
|||||||
Sets the debugging level.
|
Sets the debugging level.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><span class="term">-h</span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Prints usage information.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
<dt><span class="term">-V</span></dt>
|
<dt><span class="term">-V</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -250,23 +200,22 @@
|
|||||||
<p>
|
<p>
|
||||||
To build the SHA-256 DS RR from the
|
To build the SHA-256 DS RR from the
|
||||||
<strong class="userinput"><code>Kexample.com.+003+26160</code></strong>
|
<strong class="userinput"><code>Kexample.com.+003+26160</code></strong>
|
||||||
keyfile name, you can issue the following command:
|
keyfile name, the following command would be issued:
|
||||||
</p>
|
</p>
|
||||||
<p><strong class="userinput"><code>dnssec-dsfromkey -2 Kexample.com.+003+26160</code></strong>
|
<p><strong class="userinput"><code>dnssec-dsfromkey -2 Kexample.com.+003+26160</code></strong>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The command would print something like:
|
The command would print something like:
|
||||||
</p>
|
</p>
|
||||||
<p><strong class="userinput"><code>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94</code></strong>
|
<p><strong class="userinput"><code>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94</code></strong>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.10"></a><h2>FILES</h2>
|
<a name="id-1.10"></a><h2>FILES</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The keyfile can be designated by the key identification
|
The keyfile can be designed by the key identification
|
||||||
<code class="filename">Knnnn.+aaa+iiiii</code> or the full file name
|
<code class="filename">Knnnn.+aaa+iiiii</code> or the full file name
|
||||||
<code class="filename">Knnnn.+aaa+iiiii.key</code> as generated by
|
<code class="filename">Knnnn.+aaa+iiiii.key</code> as generated by
|
||||||
<span class="refentrytitle">dnssec-keygen</span>(8).
|
<span class="refentrytitle">dnssec-keygen</span>(8).
|
||||||
@@ -296,10 +245,9 @@
|
|||||||
<span class="refentrytitle">dnssec-signzone</span>(8)
|
<span class="refentrytitle">dnssec-signzone</span>(8)
|
||||||
</span>,
|
</span>,
|
||||||
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
|
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
|
||||||
<em class="citetitle">RFC 3658</em> (DS RRs),
|
<em class="citetitle">RFC 3658</em>,
|
||||||
<em class="citetitle">RFC 4509</em> (SHA-256 for DS RRs),
|
<em class="citetitle">RFC 4431</em>.
|
||||||
<em class="citetitle">RFC 6605</em> (SHA-384 for DS RRs),
|
<em class="citetitle">RFC 4509</em>.
|
||||||
<em class="citetitle">RFC 7344</em> (CDS and CDNSKEY RRs).
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2013-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2013-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -134,5 +134,5 @@ RFC 5011\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2013-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2013-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
@@ -46,7 +48,12 @@
|
|||||||
|
|
||||||
#include "dnssectool.h"
|
#include "dnssectool.h"
|
||||||
|
|
||||||
|
#ifndef PATH_MAX
|
||||||
|
#define PATH_MAX 1024 /* WIN32, and others don't define this. */
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *program = "dnssec-importkey";
|
const char *program = "dnssec-importkey";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
static dns_rdataclass_t rdclass;
|
static dns_rdataclass_t rdclass;
|
||||||
static dns_fixedname_t fixed;
|
static dns_fixedname_t fixed;
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2013-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2013-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2008-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2008-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -55,7 +55,7 @@ of the key is specified on the command line\&. This must match the name of the z
|
|||||||
.RS 4
|
.RS 4
|
||||||
Selects the cryptographic algorithm\&. The value of
|
Selects the cryptographic algorithm\&. The value of
|
||||||
\fBalgorithm\fR
|
\fBalgorithm\fR
|
||||||
must be one of RSASHA1, NSEC3RSASHA1, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&.
|
must be one of RSAMD5, RSASHA1, NSEC3RSASHA1, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&.
|
||||||
.sp
|
.sp
|
||||||
If no algorithm is specified, then RSASHA1 will be used by default, unless the
|
If no algorithm is specified, then RSASHA1 will be used by default, unless the
|
||||||
\fB\-3\fR
|
\fB\-3\fR
|
||||||
@@ -307,5 +307,5 @@ The PKCS#11 URI Scheme (draft\-pechanec\-pkcs11uri\-13)\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2008-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2008-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -46,6 +48,7 @@
|
|||||||
#define MAX_RSA 4096 /* should be long enough... */
|
#define MAX_RSA 4096 /* should be long enough... */
|
||||||
|
|
||||||
const char *program = "dnssec-keyfromlabel";
|
const char *program = "dnssec-keyfromlabel";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE static void
|
ISC_PLATFORM_NORETURN_PRE static void
|
||||||
usage(void) ISC_PLATFORM_NORETURN_POST;
|
usage(void) ISC_PLATFORM_NORETURN_POST;
|
||||||
@@ -61,7 +64,7 @@ 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"
|
||||||
" DH | RSASHA1 |\n"
|
" RSA | RSAMD5 | DH | RSASHA1 |\n"
|
||||||
" NSEC3RSASHA1 |\n"
|
" NSEC3RSASHA1 |\n"
|
||||||
" RSASHA256 | RSASHA512 |\n"
|
" RSASHA256 | RSASHA512 |\n"
|
||||||
" ECDSAP256SHA256 | ECDSAP384SHA384\n");
|
" ECDSAP256SHA256 | ECDSAP384SHA384\n");
|
||||||
@@ -368,6 +371,8 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
len = strlen(label) + 8;
|
len = strlen(label) + 8;
|
||||||
l = isc_mem_allocate(mctx, len);
|
l = isc_mem_allocate(mctx, len);
|
||||||
|
if (l == NULL)
|
||||||
|
fatal("cannot allocate memory");
|
||||||
snprintf(l, len, "pkcs11:%s", label);
|
snprintf(l, len, "pkcs11:%s", label);
|
||||||
isc_mem_free(mctx, label);
|
isc_mem_free(mctx, label);
|
||||||
label = l;
|
label = l;
|
||||||
@@ -377,14 +382,22 @@ main(int argc, char **argv) {
|
|||||||
fatal("no algorithm specified");
|
fatal("no algorithm specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
r.base = algname;
|
if (strcasecmp(algname, "RSA") == 0) {
|
||||||
r.length = strlen(algname);
|
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
||||||
ret = dns_secalg_fromtext(&alg, &r);
|
"recommended.\nIf you still wish to "
|
||||||
if (ret != ISC_R_SUCCESS) {
|
"use RSA (RSAMD5) please specify "
|
||||||
fatal("unknown algorithm %s", algname);
|
"\"-a RSAMD5\"\n");
|
||||||
}
|
if (freeit != NULL)
|
||||||
if (alg == DST_ALG_DH) {
|
free(freeit);
|
||||||
options |= DST_TYPE_KEY;
|
return (1);
|
||||||
|
} else {
|
||||||
|
r.base = algname;
|
||||||
|
r.length = strlen(algname);
|
||||||
|
ret = dns_secalg_fromtext(&alg, &r);
|
||||||
|
if (ret != ISC_R_SUCCESS)
|
||||||
|
fatal("unknown algorithm %s", algname);
|
||||||
|
if (alg == DST_ALG_DH)
|
||||||
|
options |= DST_TYPE_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_nsec3) {
|
if (use_nsec3) {
|
||||||
@@ -626,10 +639,10 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
if (setdel)
|
if (setdel)
|
||||||
dst_key_settime(key, DST_TIME_DELETE, deltime);
|
dst_key_settime(key, DST_TIME_DELETE, deltime);
|
||||||
if (setsyncadd)
|
if (setsyncadd)
|
||||||
dst_key_settime(key, DST_TIME_SYNCPUBLISH, syncadd);
|
dst_key_settime(key, DST_TIME_SYNCPUBLISH, syncadd);
|
||||||
if (setsyncdel)
|
if (setsyncdel)
|
||||||
dst_key_settime(key, DST_TIME_SYNCDELETE, syncdel);
|
dst_key_settime(key, DST_TIME_SYNCDELETE, syncdel);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (setpub || setact || setrev || setinact ||
|
if (setpub || setact || setrev || setinact ||
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -106,7 +105,7 @@
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Selects the cryptographic algorithm. The value of
|
Selects the cryptographic algorithm. The value of
|
||||||
<option>algorithm</option> must be one of RSASHA1,
|
<option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
||||||
</para>
|
</para>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2008-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2008-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Selects the cryptographic algorithm. The value of
|
Selects the cryptographic algorithm. The value of
|
||||||
<code class="option">algorithm</code> must be one of RSASHA1,
|
<code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
||||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
+47
-45
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2005, 2007-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2005, 2007-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
dnssec-keygen \- DNSSEC key generation tool
|
dnssec-keygen \- DNSSEC key generation tool
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
.HP \w'\fBdnssec\-keygen\fR\ 'u
|
.HP \w'\fBdnssec\-keygen\fR\ 'u
|
||||||
\fBdnssec\-keygen\fR [\fB\-3\fR] [\fB\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-a\ \fR\fB\fIalgorithm\fR\fR] [\fB\-b\ \fR\fB\fIkeysize\fR\fR] [\fB\-C\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] [\fB\-f\ \fR\fB\fIflag\fR\fR] [\fB\-G\fR] [\fB\-g\ \fR\fB\fIgenerator\fR\fR] [\fB\-h\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-k\fR] [\fB\-L\ \fR\fB\fIttl\fR\fR] [\fB\-n\ \fR\fB\fInametype\fR\fR] [\fB\-P\ \fR\fB\fIdate/offset\fR\fR] [\fB\-P\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-p\ \fR\fB\fIprotocol\fR\fR] [\fB\-q\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-s\ \fR\fB\fIstrength\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] {name}
|
\fBdnssec\-keygen\fR [\fB\-a\ \fR\fB\fIalgorithm\fR\fR] [\fB\-b\ \fR\fB\fIkeysize\fR\fR] [\fB\-n\ \fR\fB\fInametype\fR\fR] [\fB\-3\fR] [\fB\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-C\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] [\fB\-f\ \fR\fB\fIflag\fR\fR] [\fB\-G\fR] [\fB\-g\ \fR\fB\fIgenerator\fR\fR] [\fB\-h\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-k\fR] [\fB\-L\ \fR\fB\fIttl\fR\fR] [\fB\-P\ \fR\fB\fIdate/offset\fR\fR] [\fB\-P\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-p\ \fR\fB\fIprotocol\fR\fR] [\fB\-q\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-s\ \fR\fB\fIstrength\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-z\fR] {name}
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-keygen\fR
|
\fBdnssec\-keygen\fR
|
||||||
@@ -58,18 +58,11 @@ may be preferable to direct use of
|
|||||||
\fBdnssec\-keygen\fR\&.
|
\fBdnssec\-keygen\fR\&.
|
||||||
.SH "OPTIONS"
|
.SH "OPTIONS"
|
||||||
.PP
|
.PP
|
||||||
\-3
|
|
||||||
.RS 4
|
|
||||||
Use an NSEC3\-capable algorithm to generate a DNSSEC key\&. If this option is used with an algorithm that has both NSEC and NSEC3 versions, then the NSEC3 version will be used; for example,
|
|
||||||
\fBdnssec\-keygen \-3a RSASHA1\fR
|
|
||||||
specifies the NSEC3RSASHA1 algorithm\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-a \fIalgorithm\fR
|
\-a \fIalgorithm\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Selects the cryptographic algorithm\&. For DNSSEC keys, the value of
|
Selects the cryptographic algorithm\&. For DNSSEC keys, the value of
|
||||||
\fBalgorithm\fR
|
\fBalgorithm\fR
|
||||||
must be one of RSASHA1, NSEC3RSASHA1, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&. For TKEY, the value must be DH (Diffie Hellman); specifying his value will automatically set the
|
must be one of RSAMD5, RSASHA1, NSEC3RSASHA1, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&. For TKEY, the value must be DH (Diffie Hellman); specifying his value will automatically set the
|
||||||
\fB\-T KEY\fR
|
\fB\-T KEY\fR
|
||||||
option as well\&.
|
option as well\&.
|
||||||
.sp
|
.sp
|
||||||
@@ -90,14 +83,29 @@ to generate TSIG keys\&.
|
|||||||
.PP
|
.PP
|
||||||
\-b \fIkeysize\fR
|
\-b \fIkeysize\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Specifies the number of bits in the key\&. The choice of key size depends on the algorithm used\&. RSA keys must be between 1024 and 4096 bits\&. Diffie Hellman keys must be between 128 and 4096 bits\&. Elliptic curve algorithms don\*(Aqt need this parameter\&.
|
Specifies the number of bits in the key\&. The choice of key size depends on the algorithm used\&. RSA keys must be between 1024 and 2048 bits\&. Diffie Hellman keys must be between 128 and 4096 bits\&. DSA keys must be between 512 and 1024 bits and an exact multiple of 64\&. HMAC keys must be between 1 and 512 bits\&. Elliptic curve algorithms don\*(Aqt need this parameter\&.
|
||||||
.sp
|
.sp
|
||||||
If the key size is not specified, some algorithms have pre\-defined defaults\&. For instance, RSA keys have a default size of 2048 bits\&.
|
If the key size is not specified, some algorithms have pre\-defined defaults\&. For example, RSA keys for use as DNSSEC zone signing keys have a default size of 1024 bits; RSA keys for use as key signing keys (KSKs, generated with
|
||||||
|
\fB\-f KSK\fR) default to 2048 bits\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\-n \fInametype\fR
|
||||||
|
.RS 4
|
||||||
|
Specifies the owner type of the key\&. The value of
|
||||||
|
\fBnametype\fR
|
||||||
|
must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY)\&. These values are case insensitive\&. Defaults to ZONE for DNSKEY generation\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
\-3
|
||||||
|
.RS 4
|
||||||
|
Use an NSEC3\-capable algorithm to generate a DNSSEC key\&. If this option is used with an algorithm that has both NSEC and NSEC3 versions, then the NSEC3 version will be used; for example,
|
||||||
|
\fBdnssec\-keygen \-3a RSASHA1\fR
|
||||||
|
specifies the NSEC3RSASHA1 algorithm\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-C
|
\-C
|
||||||
.RS 4
|
.RS 4
|
||||||
Compatibility mode: generates an old\-style key, without any timing metadata\&. By default,
|
Compatibility mode: generates an old\-style key, without any metadata\&. By default,
|
||||||
\fBdnssec\-keygen\fR
|
\fBdnssec\-keygen\fR
|
||||||
will include the key\*(Aqs creation date in the metadata stored with the private key, and other dates may be set there as well (publication date, activation date, etc)\&. Keys that include this data may be incompatible with older versions of BIND; the
|
will include the key\*(Aqs creation date in the metadata stored with the private key, and other dates may be set there as well (publication date, activation date, etc)\&. Keys that include this data may be incompatible with older versions of BIND; the
|
||||||
\fB\-C\fR
|
\fB\-C\fR
|
||||||
@@ -142,6 +150,11 @@ Prints a short summary of the options and arguments to
|
|||||||
Sets the directory in which the key files are to be written\&.
|
Sets the directory in which the key files are to be written\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
\-k
|
||||||
|
.RS 4
|
||||||
|
Deprecated in favor of \-T KEY\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
\-L \fIttl\fR
|
\-L \fIttl\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Sets the default TTL to use for this key when it is converted into a DNSKEY RR\&. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence\&. If this value is not set and there is no existing DNSKEY RRset, the TTL will default to the SOA TTL\&. Setting the default TTL to
|
Sets the default TTL to use for this key when it is converted into a DNSKEY RR\&. If the key is imported into a zone, this is the TTL that will be used for it, unless there was already a DNSKEY RRset in place, in which case the existing TTL would take precedence\&. If this value is not set and there is no existing DNSKEY RRset, the TTL will default to the SOA TTL\&. Setting the default TTL to
|
||||||
@@ -151,17 +164,9 @@ none
|
|||||||
is the same as leaving it unset\&.
|
is the same as leaving it unset\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-n \fInametype\fR
|
|
||||||
.RS 4
|
|
||||||
Specifies the owner type of the key\&. The value of
|
|
||||||
\fBnametype\fR
|
|
||||||
must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY)\&. These values are case insensitive\&. Defaults to ZONE for DNSKEY generation\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-p \fIprotocol\fR
|
\-p \fIprotocol\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Sets the protocol value for the generated key, for use with
|
Sets the protocol value for the generated key\&. The protocol is a number between 0 and 255\&. The default is 3 (DNSSEC)\&. Other possible values for this argument are listed in RFC 2535 and its successors\&.
|
||||||
\fB\-T KEY\fR\&. The protocol is a number between 0 and 255\&. The default is 3 (DNSSEC)\&. Other possible values for this argument are listed in RFC 2535 and its successors\&.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-q
|
\-q
|
||||||
@@ -188,25 +193,27 @@ Specifies the strength value of the key\&. The strength is a number between 0 an
|
|||||||
Specifies the resource record type to use for the key\&.
|
Specifies the resource record type to use for the key\&.
|
||||||
\fBrrtype\fR
|
\fBrrtype\fR
|
||||||
must be either DNSKEY or KEY\&. The default is DNSKEY when using a DNSSEC algorithm, but it can be overridden to KEY for use with SIG(0)\&.
|
must be either DNSKEY or KEY\&. The default is DNSKEY when using a DNSSEC algorithm, but it can be overridden to KEY for use with SIG(0)\&.
|
||||||
|
Specifying any TSIG algorithm (HMAC\-* or DH) with
|
||||||
|
\fB\-a\fR
|
||||||
|
forces this option to KEY\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-t \fItype\fR
|
\-t \fItype\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Indicates the use of the key, for use with
|
Indicates the use of the key\&.
|
||||||
\fB\-T KEY\fR\&.
|
|
||||||
\fBtype\fR
|
\fBtype\fR
|
||||||
must be one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF\&. The default is AUTHCONF\&. AUTH refers to the ability to authenticate data, and CONF the ability to encrypt data\&.
|
must be one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF\&. The default is AUTHCONF\&. AUTH refers to the ability to authenticate data, and CONF the ability to encrypt data\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-V
|
|
||||||
.RS 4
|
|
||||||
Prints version information\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-v \fIlevel\fR
|
\-v \fIlevel\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Sets the debugging level\&.
|
Sets the debugging level\&.
|
||||||
.RE
|
.RE
|
||||||
|
.PP
|
||||||
|
\-V
|
||||||
|
.RS 4
|
||||||
|
Prints version information\&.
|
||||||
|
.RE
|
||||||
.SH "TIMING OPTIONS"
|
.SH "TIMING OPTIONS"
|
||||||
.PP
|
.PP
|
||||||
Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS\&. If the argument begins with a \*(Aq+\*(Aq or \*(Aq\-\*(Aq, it is interpreted as an offset from the present time\&. For convenience, if such an offset is followed by one of the suffixes \*(Aqy\*(Aq, \*(Aqmo\*(Aq, \*(Aqw\*(Aq, \*(Aqd\*(Aq, \*(Aqh\*(Aq, or \*(Aqmi\*(Aq, then the offset is computed in years (defined as 365 24\-hour days, ignoring leap years), months (defined as 30 24\-hour days), weeks, days, hours, or minutes, respectively\&. Without a suffix, the offset is computed in seconds\&. To explicitly prevent a date from being set, use \*(Aqnone\*(Aq or \*(Aqnever\*(Aq\&.
|
Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS\&. If the argument begins with a \*(Aq+\*(Aq or \*(Aq\-\*(Aq, it is interpreted as an offset from the present time\&. For convenience, if such an offset is followed by one of the suffixes \*(Aqy\*(Aq, \*(Aqmo\*(Aq, \*(Aqw\*(Aq, \*(Aqd\*(Aq, \*(Aqh\*(Aq, or \*(Aqmi\*(Aq, then the offset is computed in years (defined as 365 24\-hour days, ignoring leap years), months (defined as 30 24\-hour days), weeks, days, hours, or minutes, respectively\&. Without a suffix, the offset is computed in seconds\&. To explicitly prevent a date from being set, use \*(Aqnone\*(Aq or \*(Aqnever\*(Aq\&.
|
||||||
@@ -307,24 +314,23 @@ contains the private key\&.
|
|||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
\&.key
|
\&.key
|
||||||
file contains a DNSKEY or KEY record\&. When a zone is being signed by
|
file contains a DNS KEY record that can be inserted into a zone file (directly or with a $INCLUDE statement)\&.
|
||||||
\fBnamed\fR
|
|
||||||
or
|
|
||||||
\fBdnssec\-signzone\fR\fB\-S\fR, DNSKEY records are included automatically\&. In other cases, the
|
|
||||||
\&.key
|
|
||||||
file can be inserted into a zone file manually or with a
|
|
||||||
\fB$INCLUDE\fR
|
|
||||||
statement\&.
|
|
||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
\&.private
|
\&.private
|
||||||
file contains algorithm\-specific fields\&. For obvious security reasons, this file does not have general read permission\&.
|
file contains algorithm\-specific fields\&. For obvious security reasons, this file does not have general read permission\&.
|
||||||
|
.PP
|
||||||
|
Both
|
||||||
|
\&.key
|
||||||
|
and
|
||||||
|
\&.private
|
||||||
|
files are generated for symmetric cryptography algorithms such as HMAC\-MD5, even though the public and private key are equivalent\&.
|
||||||
.SH "EXAMPLE"
|
.SH "EXAMPLE"
|
||||||
.PP
|
.PP
|
||||||
To generate an ECDSAP256SHA256 zone\-signing key for the zone
|
To generate an ECDSAP256SHA256 key for the domain
|
||||||
\fBexample\&.com\fR, issue the command:
|
\fBexample\&.com\fR, the following command would be issued:
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-keygen \-a ECDSAP256SHA256 example\&.com\fR
|
\fBdnssec\-keygen \-a ECDSAP256SHA256 \-n ZONE example\&.com\fR
|
||||||
.PP
|
.PP
|
||||||
The command would print a string of the form:
|
The command would print a string of the form:
|
||||||
.PP
|
.PP
|
||||||
@@ -336,10 +342,6 @@ creates the files
|
|||||||
Kexample\&.com\&.+013+26160\&.key
|
Kexample\&.com\&.+013+26160\&.key
|
||||||
and
|
and
|
||||||
Kexample\&.com\&.+013+26160\&.private\&.
|
Kexample\&.com\&.+013+26160\&.private\&.
|
||||||
.PP
|
|
||||||
To generate a matching key\-signing key, issue the command:
|
|
||||||
.PP
|
|
||||||
\fBdnssec\-keygen \-a ECDSAP256SHA256 \-f KSK example\&.com\fR
|
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec-signzone\fR(8),
|
\fBdnssec-signzone\fR(8),
|
||||||
@@ -352,5 +354,5 @@ RFC 4034\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2000-2005, 2007-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2005, 2007-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+37
-11
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@@ -61,6 +63,7 @@
|
|||||||
#define MAX_RSA 4096 /* should be long enough... */
|
#define MAX_RSA 4096 /* should be long enough... */
|
||||||
|
|
||||||
const char *program = "dnssec-keygen";
|
const char *program = "dnssec-keygen";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE static void
|
ISC_PLATFORM_NORETURN_PRE static void
|
||||||
usage(void) ISC_PLATFORM_NORETURN_POST;
|
usage(void) ISC_PLATFORM_NORETURN_POST;
|
||||||
@@ -76,12 +79,14 @@ 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, " RSASHA1 | NSEC3RSASHA1 |\n");
|
fprintf(stderr, " RSA | RSAMD5 | RSASHA1 | NSEC3RSASHA1"
|
||||||
|
" |\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");
|
||||||
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
||||||
fprintf(stderr, " -b <key size in bits>:\n");
|
fprintf(stderr, " -b <key size in bits>:\n");
|
||||||
|
fprintf(stderr, " RSAMD5:\t[1024..%d]\n", MAX_RSA);
|
||||||
fprintf(stderr, " RSASHA1:\t[1024..%d]\n", MAX_RSA);
|
fprintf(stderr, " RSASHA1:\t[1024..%d]\n", MAX_RSA);
|
||||||
fprintf(stderr, " NSEC3RSASHA1:\t[1024..%d]\n", MAX_RSA);
|
fprintf(stderr, " NSEC3RSASHA1:\t[1024..%d]\n", MAX_RSA);
|
||||||
fprintf(stderr, " RSASHA256:\t[1024..%d]\n", MAX_RSA);
|
fprintf(stderr, " RSASHA256:\t[1024..%d]\n", MAX_RSA);
|
||||||
@@ -218,6 +223,7 @@ main(int argc, char **argv) {
|
|||||||
bool unsetrev = false, unsetinact = false;
|
bool unsetrev = false, unsetinact = false;
|
||||||
bool unsetdel = false;
|
bool unsetdel = false;
|
||||||
bool genonly = false;
|
bool genonly = false;
|
||||||
|
bool quiet = false;
|
||||||
bool show_progress = false;
|
bool show_progress = false;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
isc_stdtime_t syncadd = 0, syncdel = 0;
|
isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
@@ -237,7 +243,7 @@ main(int argc, char **argv) {
|
|||||||
/*
|
/*
|
||||||
* Process memory debugging argument first.
|
* Process memory debugging argument first.
|
||||||
*/
|
*/
|
||||||
#define CMDLINE_FLAGS "3A:a:b:Cc:D:d:E:eFf:Gg:hI:i:K:L:m:n:P:p:qR:r:S:s:T:t:" \
|
#define CMDLINE_FLAGS "3A:a:b:Cc:D:d:E:eFf:Gg:hI:i:K:kL:m:n:P:p:qR:r:S:s:T:t:" \
|
||||||
"v:V"
|
"v:V"
|
||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@@ -318,6 +324,11 @@ main(int argc, char **argv) {
|
|||||||
fatal("cannot open directory %s: %s",
|
fatal("cannot open directory %s: %s",
|
||||||
directory, isc_result_totext(ret));
|
directory, isc_result_totext(ret));
|
||||||
break;
|
break;
|
||||||
|
case 'k':
|
||||||
|
fatal("The -k option has been deprecated.\n"
|
||||||
|
"To generate a key-signing key, use -f KSK.\n"
|
||||||
|
"To generate a key with TYPE=KEY, use -T KEY.\n");
|
||||||
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
setttl = true;
|
setttl = true;
|
||||||
@@ -497,14 +508,23 @@ main(int argc, char **argv) {
|
|||||||
fatal("no algorithm specified");
|
fatal("no algorithm specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
r.base = algname;
|
if (strcasecmp(algname, "RSA") == 0) {
|
||||||
r.length = strlen(algname);
|
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
||||||
ret = dns_secalg_fromtext(&alg, &r);
|
"recommended.\nIf you still wish to "
|
||||||
if (ret != ISC_R_SUCCESS) {
|
"use RSA (RSAMD5) please specify "
|
||||||
fatal("unknown algorithm %s", algname);
|
"\"-a RSAMD5\"\n");
|
||||||
}
|
INSIST(freeit == NULL);
|
||||||
if (alg == DST_ALG_DH) {
|
return (1);
|
||||||
options |= DST_TYPE_KEY;
|
} else {
|
||||||
|
r.base = algname;
|
||||||
|
r.length = strlen(algname);
|
||||||
|
ret = dns_secalg_fromtext(&alg, &r);
|
||||||
|
if (ret != ISC_R_SUCCESS) {
|
||||||
|
fatal("unknown algorithm %s", algname);
|
||||||
|
}
|
||||||
|
if (alg == DST_ALG_DH) {
|
||||||
|
options |= DST_TYPE_KEY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dst_algorithm_supported(alg)) {
|
if (!dst_algorithm_supported(alg)) {
|
||||||
@@ -553,7 +573,11 @@ main(int argc, char **argv) {
|
|||||||
case DST_ALG_NSEC3RSASHA1:
|
case DST_ALG_NSEC3RSASHA1:
|
||||||
case DST_ALG_RSASHA256:
|
case DST_ALG_RSASHA256:
|
||||||
case DST_ALG_RSASHA512:
|
case DST_ALG_RSASHA512:
|
||||||
size = 2048;
|
if ((kskflag & DNS_KEYFLAG_KSK) != 0) {
|
||||||
|
size = 2048;
|
||||||
|
} else {
|
||||||
|
size = 1024;
|
||||||
|
}
|
||||||
if (verbose > 0) {
|
if (verbose > 0) {
|
||||||
fprintf(stderr, "key size not "
|
fprintf(stderr, "key size not "
|
||||||
"specified; defaulting"
|
"specified; defaulting"
|
||||||
@@ -674,6 +698,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (alg) {
|
switch (alg) {
|
||||||
|
case DNS_KEYALG_RSAMD5:
|
||||||
case DNS_KEYALG_RSASHA1:
|
case DNS_KEYALG_RSASHA1:
|
||||||
case DNS_KEYALG_NSEC3RSASHA1:
|
case DNS_KEYALG_NSEC3RSASHA1:
|
||||||
case DNS_KEYALG_RSASHA256:
|
case DNS_KEYALG_RSASHA256:
|
||||||
@@ -755,6 +780,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch(alg) {
|
switch(alg) {
|
||||||
|
case DNS_KEYALG_RSAMD5:
|
||||||
case DNS_KEYALG_RSASHA1:
|
case DNS_KEYALG_RSASHA1:
|
||||||
case DNS_KEYALG_NSEC3RSASHA1:
|
case DNS_KEYALG_NSEC3RSASHA1:
|
||||||
case DNS_KEYALG_RSASHA256:
|
case DNS_KEYALG_RSASHA256:
|
||||||
|
|||||||
@@ -50,7 +50,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -58,10 +57,11 @@
|
|||||||
<refsynopsisdiv>
|
<refsynopsisdiv>
|
||||||
<cmdsynopsis sepchar=" ">
|
<cmdsynopsis sepchar=" ">
|
||||||
<command>dnssec-keygen</command>
|
<command>dnssec-keygen</command>
|
||||||
<arg choice="opt" rep="norepeat"><option>-3</option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-A <replaceable class="parameter">date/offset</replaceable></option></arg>
|
|
||||||
<arg rep="norepeat"><option>-a <replaceable class="parameter">algorithm</replaceable></option></arg>
|
<arg rep="norepeat"><option>-a <replaceable class="parameter">algorithm</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-b <replaceable class="parameter">keysize</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-b <replaceable class="parameter">keysize</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-n <replaceable class="parameter">nametype</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-3</option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-A <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-C</option></arg>
|
<arg choice="opt" rep="norepeat"><option>-C</option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-D <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-D <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
@@ -76,7 +76,6 @@
|
|||||||
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-k</option></arg>
|
<arg choice="opt" rep="norepeat"><option>-k</option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-L <replaceable class="parameter">ttl</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-L <replaceable class="parameter">ttl</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-n <replaceable class="parameter">nametype</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-P <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-P <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-P sync <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-P sync <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-p <replaceable class="parameter">protocol</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-p <replaceable class="parameter">protocol</replaceable></option></arg>
|
||||||
@@ -87,6 +86,7 @@
|
|||||||
<arg choice="opt" rep="norepeat"><option>-t <replaceable class="parameter">type</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-t <replaceable class="parameter">type</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-V</option></arg>
|
<arg choice="opt" rep="norepeat"><option>-V</option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
||||||
|
<arg choice="opt" rep="norepeat"><option>-z</option></arg>
|
||||||
<arg choice="req" rep="norepeat">name</arg>
|
<arg choice="req" rep="norepeat">name</arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
@@ -117,26 +117,12 @@
|
|||||||
|
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-3</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
|
||||||
If this option is used with an algorithm that has both
|
|
||||||
NSEC and NSEC3 versions, then the NSEC3 version will be
|
|
||||||
used; for example, <command>dnssec-keygen -3a RSASHA1</command>
|
|
||||||
specifies the NSEC3RSASHA1 algorithm.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
|
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<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 RSASHA1,
|
of <option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
NSEC3RSASHA1, 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
|
||||||
@@ -170,14 +156,45 @@
|
|||||||
<para>
|
<para>
|
||||||
Specifies the number of bits in the key. The choice of key
|
Specifies the number of bits in the key. The choice of key
|
||||||
size depends on the algorithm used. RSA keys must be
|
size depends on the algorithm used. RSA keys must be
|
||||||
between 1024 and 4096 bits. Diffie Hellman keys must be between
|
between 1024 and 2048 bits. Diffie Hellman keys must be between
|
||||||
128 and 4096 bits. Elliptic curve algorithms don't need this
|
128 and 4096 bits. DSA keys must be between 512 and 1024
|
||||||
parameter.
|
bits and an exact multiple of 64. HMAC keys must be
|
||||||
|
between 1 and 512 bits. Elliptic curve algorithms don't need
|
||||||
|
this parameter.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
If the key size is not specified, some algorithms have
|
If the key size is not specified, some algorithms have
|
||||||
pre-defined defaults. For instance, RSA keys have a default
|
pre-defined defaults. For example, RSA keys for use as
|
||||||
size of 2048 bits.
|
DNSSEC zone signing keys have a default size of 1024 bits;
|
||||||
|
RSA keys for use as key signing keys (KSKs, generated with
|
||||||
|
<option>-f KSK</option>) default to 2048 bits.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-n <replaceable class="parameter">nametype</replaceable></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Specifies the owner type of the key. The value of
|
||||||
|
<option>nametype</option> must either be ZONE (for a DNSSEC
|
||||||
|
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
||||||
|
with a host (KEY)), USER (for a key associated with a
|
||||||
|
user(KEY)) or OTHER (DNSKEY). These values are case
|
||||||
|
insensitive. Defaults to ZONE for DNSKEY generation.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-3</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||||
|
If this option is used with an algorithm that has both
|
||||||
|
NSEC and NSEC3 versions, then the NSEC3 version will be
|
||||||
|
used; for example, <command>dnssec-keygen -3a RSASHA1</command>
|
||||||
|
specifies the NSEC3RSASHA1 algorithm.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -186,12 +203,12 @@
|
|||||||
<term>-C</term>
|
<term>-C</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Compatibility mode: generates an old-style key, without any
|
Compatibility mode: generates an old-style key, without
|
||||||
timing metadata. By default, <command>dnssec-keygen</command>
|
any metadata. By default, <command>dnssec-keygen</command>
|
||||||
will include the key's creation date in the metadata stored with
|
will include the key's creation date in the metadata stored
|
||||||
the private key, and other dates may be set there as well
|
with the private key, and other dates may be set there as well
|
||||||
(publication date, activation date, etc). Keys that include this
|
(publication date, activation date, etc). Keys that include
|
||||||
data may be incompatible with older versions of BIND; the
|
this data may be incompatible with older versions of BIND; the
|
||||||
<option>-C</option> option suppresses them.
|
<option>-C</option> option suppresses them.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -275,6 +292,15 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-k</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Deprecated in favor of -T KEY.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-L <replaceable class="parameter">ttl</replaceable></term>
|
<term>-L <replaceable class="parameter">ttl</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -291,28 +317,14 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-n <replaceable class="parameter">nametype</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Specifies the owner type of the key. The value of
|
|
||||||
<option>nametype</option> must either be ZONE (for a DNSSEC
|
|
||||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
|
||||||
with a host (KEY)), USER (for a key associated with a
|
|
||||||
user(KEY)) or OTHER (DNSKEY). These values are case
|
|
||||||
insensitive. Defaults to ZONE for DNSKEY generation.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-p <replaceable class="parameter">protocol</replaceable></term>
|
<term>-p <replaceable class="parameter">protocol</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Sets the protocol value for the generated key, for use
|
Sets the protocol value for the generated key. The protocol
|
||||||
with <option>-T KEY</option>. The protocol is a number between 0
|
is a number between 0 and 255. The default is 3 (DNSSEC).
|
||||||
and 255. The default is 3 (DNSSEC). Other possible values for
|
Other possible values for this argument are listed in
|
||||||
this argument are listed in RFC 2535 and its successors.
|
RFC 2535 and its successors.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -370,6 +382,10 @@
|
|||||||
<option>rrtype</option> must be either DNSKEY or KEY. The
|
<option>rrtype</option> must be either DNSKEY or KEY. The
|
||||||
default is DNSKEY when using a DNSSEC algorithm, but it can be
|
default is DNSKEY when using a DNSSEC algorithm, but it can be
|
||||||
overridden to KEY for use with SIG(0).
|
overridden to KEY for use with SIG(0).
|
||||||
|
<para>
|
||||||
|
</para>
|
||||||
|
Specifying any TSIG algorithm (HMAC-* or DH) with
|
||||||
|
<option>-a</option> forces this option to KEY.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -378,20 +394,10 @@
|
|||||||
<term>-t <replaceable class="parameter">type</replaceable></term>
|
<term>-t <replaceable class="parameter">type</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Indicates the use of the key, for use with <option>-T
|
Indicates the use of the key. <option>type</option> must be
|
||||||
KEY</option>. <option>type</option> must be one of AUTHCONF,
|
one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default
|
||||||
NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH
|
is AUTHCONF. AUTH refers to the ability to authenticate
|
||||||
refers to the ability to authenticate data, and CONF the ability
|
data, and CONF the ability to encrypt data.
|
||||||
to encrypt data.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-V</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Prints version information.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -405,6 +411,15 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-V</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Prints version information.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
@@ -569,12 +584,10 @@
|
|||||||
key.
|
key.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <filename>.key</filename> file contains a DNSKEY or KEY record.
|
The <filename>.key</filename> file contains a DNS KEY record
|
||||||
When a zone is being signed by <command>named</command>
|
that
|
||||||
or <command>dnssec-signzone</command> <option>-S</option>, DNSKEY
|
can be inserted into a zone file (directly or with a $INCLUDE
|
||||||
records are included automatically. In other cases,
|
statement).
|
||||||
the <filename>.key</filename> file can be inserted into a zone file
|
|
||||||
manually or with a <userinput>$INCLUDE</userinput> statement.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <filename>.private</filename> file contains
|
The <filename>.private</filename> file contains
|
||||||
@@ -582,16 +595,21 @@
|
|||||||
fields. For obvious security reasons, this file does not have
|
fields. For obvious security reasons, this file does not have
|
||||||
general read permission.
|
general read permission.
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
Both <filename>.key</filename> and <filename>.private</filename>
|
||||||
|
files are generated for symmetric cryptography algorithms such as
|
||||||
|
HMAC-MD5, even though the public and private key are equivalent.
|
||||||
|
</para>
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>EXAMPLE</title></info>
|
<refsection><info><title>EXAMPLE</title></info>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
To generate an ECDSAP256SHA256 zone-signing key for the zone
|
To generate an ECDSAP256SHA256 key for the domain
|
||||||
<userinput>example.com</userinput>, issue the command:
|
<userinput>example.com</userinput>, the following command would be
|
||||||
|
issued:
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para><userinput>dnssec-keygen -a ECDSAP256SHA256 -n ZONE example.com</userinput>
|
||||||
<userinput>dnssec-keygen -a ECDSAP256SHA256 example.com</userinput>
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The command would print a string of the form:
|
The command would print a string of the form:
|
||||||
@@ -604,12 +622,6 @@
|
|||||||
and
|
and
|
||||||
<filename>Kexample.com.+013+26160.private</filename>.
|
<filename>Kexample.com.+013+26160.private</filename>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
|
||||||
To generate a matching key-signing key, issue the command:
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<userinput>dnssec-keygen -a ECDSAP256SHA256 -f KSK example.com</userinput>
|
|
||||||
</para>
|
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>SEE ALSO</title></info>
|
<refsection><info><title>SEE ALSO</title></info>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2000-2005, 2007-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2005, 2007-2012, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -33,10 +33,11 @@
|
|||||||
<h2>Synopsis</h2>
|
<h2>Synopsis</h2>
|
||||||
<div class="cmdsynopsis"><p>
|
<div class="cmdsynopsis"><p>
|
||||||
<code class="command">dnssec-keygen</code>
|
<code class="command">dnssec-keygen</code>
|
||||||
[<code class="option">-3</code>]
|
|
||||||
[<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>]
|
|
||||||
[<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>]
|
[<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>]
|
||||||
[<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>]
|
[<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>]
|
||||||
|
[<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>]
|
||||||
|
[<code class="option">-3</code>]
|
||||||
|
[<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-C</code>]
|
[<code class="option">-C</code>]
|
||||||
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
||||||
[<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
@@ -51,7 +52,6 @@
|
|||||||
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
||||||
[<code class="option">-k</code>]
|
[<code class="option">-k</code>]
|
||||||
[<code class="option">-L <em class="replaceable"><code>ttl</code></em></code>]
|
[<code class="option">-L <em class="replaceable"><code>ttl</code></em></code>]
|
||||||
[<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>]
|
|
||||||
[<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-P sync <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-P sync <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>]
|
[<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>]
|
||||||
@@ -62,6 +62,7 @@
|
|||||||
[<code class="option">-t <em class="replaceable"><code>type</code></em></code>]
|
[<code class="option">-t <em class="replaceable"><code>type</code></em></code>]
|
||||||
[<code class="option">-V</code>]
|
[<code class="option">-V</code>]
|
||||||
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
||||||
|
[<code class="option">-z</code>]
|
||||||
{name}
|
{name}
|
||||||
</p></div>
|
</p></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -94,21 +95,11 @@
|
|||||||
|
|
||||||
|
|
||||||
<div class="variablelist"><dl class="variablelist">
|
<div class="variablelist"><dl class="variablelist">
|
||||||
<dt><span class="term">-3</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
|
||||||
If this option is used with an algorithm that has both
|
|
||||||
NSEC and NSEC3 versions, then the NSEC3 version will be
|
|
||||||
used; for example, <span class="command"><strong>dnssec-keygen -3a RSASHA1</strong></span>
|
|
||||||
specifies the NSEC3RSASHA1 algorithm.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
|
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
||||||
of <code class="option">algorithm</code> must be one of RSASHA1,
|
of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
||||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
NSEC3RSASHA1, 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
|
||||||
@@ -139,25 +130,50 @@
|
|||||||
<p>
|
<p>
|
||||||
Specifies the number of bits in the key. The choice of key
|
Specifies the number of bits in the key. The choice of key
|
||||||
size depends on the algorithm used. RSA keys must be
|
size depends on the algorithm used. RSA keys must be
|
||||||
between 1024 and 4096 bits. Diffie Hellman keys must be between
|
between 1024 and 2048 bits. Diffie Hellman keys must be between
|
||||||
128 and 4096 bits. Elliptic curve algorithms don't need this
|
128 and 4096 bits. DSA keys must be between 512 and 1024
|
||||||
parameter.
|
bits and an exact multiple of 64. HMAC keys must be
|
||||||
|
between 1 and 512 bits. Elliptic curve algorithms don't need
|
||||||
|
this parameter.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
If the key size is not specified, some algorithms have
|
If the key size is not specified, some algorithms have
|
||||||
pre-defined defaults. For instance, RSA keys have a default
|
pre-defined defaults. For example, RSA keys for use as
|
||||||
size of 2048 bits.
|
DNSSEC zone signing keys have a default size of 1024 bits;
|
||||||
|
RSA keys for use as key signing keys (KSKs, generated with
|
||||||
|
<code class="option">-f KSK</code>) default to 2048 bits.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Specifies the owner type of the key. The value of
|
||||||
|
<code class="option">nametype</code> must either be ZONE (for a DNSSEC
|
||||||
|
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
||||||
|
with a host (KEY)), USER (for a key associated with a
|
||||||
|
user(KEY)) or OTHER (DNSKEY). These values are case
|
||||||
|
insensitive. Defaults to ZONE for DNSKEY generation.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span class="term">-3</span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||||
|
If this option is used with an algorithm that has both
|
||||||
|
NSEC and NSEC3 versions, then the NSEC3 version will be
|
||||||
|
used; for example, <span class="command"><strong>dnssec-keygen -3a RSASHA1</strong></span>
|
||||||
|
specifies the NSEC3RSASHA1 algorithm.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-C</span></dt>
|
<dt><span class="term">-C</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Compatibility mode: generates an old-style key, without any
|
Compatibility mode: generates an old-style key, without
|
||||||
timing metadata. By default, <span class="command"><strong>dnssec-keygen</strong></span>
|
any metadata. By default, <span class="command"><strong>dnssec-keygen</strong></span>
|
||||||
will include the key's creation date in the metadata stored with
|
will include the key's creation date in the metadata stored
|
||||||
the private key, and other dates may be set there as well
|
with the private key, and other dates may be set there as well
|
||||||
(publication date, activation date, etc). Keys that include this
|
(publication date, activation date, etc). Keys that include
|
||||||
data may be incompatible with older versions of BIND; the
|
this data may be incompatible with older versions of BIND; the
|
||||||
<code class="option">-C</code> option suppresses them.
|
<code class="option">-C</code> option suppresses them.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -218,6 +234,12 @@
|
|||||||
Sets the directory in which the key files are to be written.
|
Sets the directory in which the key files are to be written.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><span class="term">-k</span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Deprecated in favor of -T KEY.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
<dt><span class="term">-L <em class="replaceable"><code>ttl</code></em></span></dt>
|
<dt><span class="term">-L <em class="replaceable"><code>ttl</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -231,24 +253,13 @@
|
|||||||
or <code class="literal">none</code> is the same as leaving it unset.
|
or <code class="literal">none</code> is the same as leaving it unset.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Specifies the owner type of the key. The value of
|
|
||||||
<code class="option">nametype</code> must either be ZONE (for a DNSSEC
|
|
||||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
|
||||||
with a host (KEY)), USER (for a key associated with a
|
|
||||||
user(KEY)) or OTHER (DNSKEY). These values are case
|
|
||||||
insensitive. Defaults to ZONE for DNSKEY generation.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-p <em class="replaceable"><code>protocol</code></em></span></dt>
|
<dt><span class="term">-p <em class="replaceable"><code>protocol</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Sets the protocol value for the generated key, for use
|
Sets the protocol value for the generated key. The protocol
|
||||||
with <code class="option">-T KEY</code>. The protocol is a number between 0
|
is a number between 0 and 255. The default is 3 (DNSSEC).
|
||||||
and 255. The default is 3 (DNSSEC). Other possible values for
|
Other possible values for this argument are listed in
|
||||||
this argument are listed in RFC 2535 and its successors.
|
RFC 2535 and its successors.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-q</span></dt>
|
<dt><span class="term">-q</span></dt>
|
||||||
@@ -295,21 +306,20 @@
|
|||||||
default is DNSKEY when using a DNSSEC algorithm, but it can be
|
default is DNSKEY when using a DNSSEC algorithm, but it can be
|
||||||
overridden to KEY for use with SIG(0).
|
overridden to KEY for use with SIG(0).
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Specifying any TSIG algorithm (HMAC-* or DH) with
|
||||||
|
<code class="option">-a</code> forces this option to KEY.
|
||||||
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-t <em class="replaceable"><code>type</code></em></span></dt>
|
<dt><span class="term">-t <em class="replaceable"><code>type</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Indicates the use of the key, for use with <code class="option">-T
|
Indicates the use of the key. <code class="option">type</code> must be
|
||||||
KEY</code>. <code class="option">type</code> must be one of AUTHCONF,
|
one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default
|
||||||
NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH
|
is AUTHCONF. AUTH refers to the ability to authenticate
|
||||||
refers to the ability to authenticate data, and CONF the ability
|
data, and CONF the ability to encrypt data.
|
||||||
to encrypt data.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-V</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Prints version information.
|
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
||||||
@@ -318,6 +328,12 @@
|
|||||||
Sets the debugging level.
|
Sets the debugging level.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><span class="term">-V</span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Prints version information.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
</dl></div>
|
</dl></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -460,12 +476,10 @@
|
|||||||
key.
|
key.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The <code class="filename">.key</code> file contains a DNSKEY or KEY record.
|
The <code class="filename">.key</code> file contains a DNS KEY record
|
||||||
When a zone is being signed by <span class="command"><strong>named</strong></span>
|
that
|
||||||
or <span class="command"><strong>dnssec-signzone</strong></span> <code class="option">-S</code>, DNSKEY
|
can be inserted into a zone file (directly or with a $INCLUDE
|
||||||
records are included automatically. In other cases,
|
statement).
|
||||||
the <code class="filename">.key</code> file can be inserted into a zone file
|
|
||||||
manually or with a <strong class="userinput"><code>$INCLUDE</code></strong> statement.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The <code class="filename">.private</code> file contains
|
The <code class="filename">.private</code> file contains
|
||||||
@@ -473,17 +487,22 @@
|
|||||||
fields. For obvious security reasons, this file does not have
|
fields. For obvious security reasons, this file does not have
|
||||||
general read permission.
|
general read permission.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Both <code class="filename">.key</code> and <code class="filename">.private</code>
|
||||||
|
files are generated for symmetric cryptography algorithms such as
|
||||||
|
HMAC-MD5, even though the public and private key are equivalent.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.11"></a><h2>EXAMPLE</h2>
|
<a name="id-1.11"></a><h2>EXAMPLE</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
To generate an ECDSAP256SHA256 zone-signing key for the zone
|
To generate an ECDSAP256SHA256 key for the domain
|
||||||
<strong class="userinput"><code>example.com</code></strong>, issue the command:
|
<strong class="userinput"><code>example.com</code></strong>, the following command would be
|
||||||
|
issued:
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p><strong class="userinput"><code>dnssec-keygen -a ECDSAP256SHA256 -n ZONE example.com</code></strong>
|
||||||
<strong class="userinput"><code>dnssec-keygen -a ECDSAP256SHA256 example.com</code></strong>
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The command would print a string of the form:
|
The command would print a string of the form:
|
||||||
@@ -496,12 +515,6 @@
|
|||||||
and
|
and
|
||||||
<code class="filename">Kexample.com.+013+26160.private</code>.
|
<code class="filename">Kexample.com.+013+26160.private</code>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
To generate a matching key-signing key, issue the command:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong class="userinput"><code>dnssec-keygen -a ECDSAP256SHA256 -f KSK example.com</code></strong>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2009, 2011, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009, 2011, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -99,5 +99,5 @@ RFC 5011\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2009, 2011, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009, 2011, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -37,6 +39,7 @@
|
|||||||
#include "dnssectool.h"
|
#include "dnssectool.h"
|
||||||
|
|
||||||
const char *program = "dnssec-revoke";
|
const char *program = "dnssec-revoke";
|
||||||
|
int verbose;
|
||||||
|
|
||||||
static isc_mem_t *mctx = NULL;
|
static isc_mem_t *mctx = NULL;
|
||||||
|
|
||||||
@@ -54,13 +57,13 @@ usage(void) {
|
|||||||
#else
|
#else
|
||||||
fprintf(stderr, " -E engine: specify OpenSSL engine\n");
|
fprintf(stderr, " -E engine: specify OpenSSL engine\n");
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr, " -f: force overwrite\n");
|
fprintf(stderr, " -f: force overwrite\n");
|
||||||
fprintf(stderr, " -h: help\n");
|
|
||||||
fprintf(stderr, " -K directory: use directory for key files\n");
|
fprintf(stderr, " -K directory: use directory for key files\n");
|
||||||
fprintf(stderr, " -r: remove old keyfiles after "
|
fprintf(stderr, " -h: help\n");
|
||||||
|
fprintf(stderr, " -r: remove old keyfiles after "
|
||||||
"creating revoked version\n");
|
"creating revoked version\n");
|
||||||
fprintf(stderr, " -v level: set level of verbosity\n");
|
fprintf(stderr, " -v level: set level of verbosity\n");
|
||||||
fprintf(stderr, " -V: print version information\n");
|
fprintf(stderr, " -V: print version information\n");
|
||||||
fprintf(stderr, "Output:\n");
|
fprintf(stderr, "Output:\n");
|
||||||
fprintf(stderr, " K<name>+<alg>+<new id>.key, "
|
fprintf(stderr, " K<name>+<alg>+<new id>.key, "
|
||||||
"K<name>+<alg>+<new id>.private\n");
|
"K<name>+<alg>+<new id>.private\n");
|
||||||
@@ -113,6 +116,10 @@ main(int argc, char **argv) {
|
|||||||
* simplify cleanup later
|
* simplify cleanup later
|
||||||
*/
|
*/
|
||||||
dir = isc_mem_strdup(mctx, isc_commandline_argument);
|
dir = isc_mem_strdup(mctx, isc_commandline_argument);
|
||||||
|
if (dir == NULL) {
|
||||||
|
fatal("Failed to allocate memory for "
|
||||||
|
"directory");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
removefile = true;
|
removefile = true;
|
||||||
@@ -232,7 +239,7 @@ main(int argc, char **argv) {
|
|||||||
* Remove old key file, if told to (and if
|
* Remove old key file, if told to (and if
|
||||||
* it isn't the same as the new file)
|
* it isn't the same as the new file)
|
||||||
*/
|
*/
|
||||||
if (removefile) {
|
if (removefile && dst_key_alg(key) != DST_ALG_RSAMD5) {
|
||||||
isc_buffer_init(&buf, oldname, sizeof(oldname));
|
isc_buffer_init(&buf, oldname, sizeof(oldname));
|
||||||
dst_key_setflags(key, flags & ~DNS_KEYFLAG_REVOKE);
|
dst_key_setflags(key, flags & ~DNS_KEYFLAG_REVOKE);
|
||||||
dst_key_buildfilename(key, DST_TYPE_PRIVATE, dir, &buf);
|
dst_key_buildfilename(key, DST_TYPE_PRIVATE, dir, &buf);
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
<year>2015</year>
|
<year>2015</year>
|
||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<!--
|
<!--
|
||||||
- Copyright (C) 2009, 2011, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2009, 2011, 2014-2016, 2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
-
|
-
|
||||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
- 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
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2009-2011, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009-2011, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\"
|
.\"
|
||||||
.\" This Source Code Form is subject to the terms of the Mozilla Public
|
.\" 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
|
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@@ -200,5 +200,5 @@ RFC 5011\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2009-2011, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009-2011, 2014-2018 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user