Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
533c68ef2c | ||
|
|
863d1acd1b | ||
|
|
424f25079b | ||
|
|
be793db16c | ||
|
|
c1793dd7ec | ||
|
|
dc76725357 |
+4
-47
@@ -15,6 +15,9 @@
|
|||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat directory-of-current-dir-locals-file "./"))
|
(concat directory-of-current-dir-locals-file "./"))
|
||||||
|
|
||||||
|
;; current directory
|
||||||
|
(expand-file-name (concat default-directory "./"))
|
||||||
|
|
||||||
;; libisc
|
;; libisc
|
||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/unix/include"))
|
(concat directory-of-current-dir-locals-file "lib/isc/unix/include"))
|
||||||
@@ -22,16 +25,11 @@
|
|||||||
(concat directory-of-current-dir-locals-file "lib/isc/pthreads/include"))
|
(concat directory-of-current-dir-locals-file "lib/isc/pthreads/include"))
|
||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/include"))
|
(concat directory-of-current-dir-locals-file "lib/isc/include"))
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/isc/netmgr"))
|
|
||||||
|
|
||||||
;; libdns
|
;; libdns
|
||||||
|
|
||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat directory-of-current-dir-locals-file "lib/dns/include"))
|
(concat directory-of-current-dir-locals-file "lib/dns/include"))
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "lib/dns"))
|
|
||||||
|
|
||||||
;; libisccc
|
;; libisccc
|
||||||
(expand-file-name
|
(expand-file-name
|
||||||
@@ -53,33 +51,8 @@
|
|||||||
(expand-file-name
|
(expand-file-name
|
||||||
(concat directory-of-current-dir-locals-file "lib/bind9/include"))
|
(concat directory-of-current-dir-locals-file "lib/bind9/include"))
|
||||||
|
|
||||||
;; bin
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/check"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/confgen/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/confgen"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/confgen/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/dig/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/named/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/named/unix/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/rndc/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/dnssec/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/named/include"))
|
|
||||||
(expand-file-name
|
|
||||||
(concat directory-of-current-dir-locals-file "bin/rndc/include"))
|
|
||||||
|
|
||||||
(expand-file-name "/usr/local/opt/openssl@1.1/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/libxml2/include/libxml2")
|
||||||
(expand-file-name "/usr/local/opt/json-c/include/json-c/")
|
|
||||||
(expand-file-name "/usr/local/include")
|
(expand-file-name "/usr/local/include")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -87,7 +60,6 @@
|
|||||||
|
|
||||||
(eval setq flycheck-clang-include-path include-directories)
|
(eval setq flycheck-clang-include-path include-directories)
|
||||||
(eval setq flycheck-cppcheck-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
|
(eval setq flycheck-clang-args
|
||||||
(list
|
(list
|
||||||
"-include"
|
"-include"
|
||||||
@@ -95,20 +67,5 @@
|
|||||||
(concat directory-of-current-dir-locals-file "config.h"))
|
(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")))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -1,10 +1,2 @@
|
|||||||
*.sln.in eol=crlf
|
*.sln.in eol=crlf
|
||||||
*.vcxproj.* eol=crlf
|
*.vcxproj.* eol=crlf
|
||||||
|
|
||||||
.gitignore export-ignore
|
|
||||||
/conftools export-ignore
|
|
||||||
/doc/design export-ignore
|
|
||||||
/doc/dev export-ignore
|
|
||||||
/util/** export-ignore
|
|
||||||
/util/bindkeys.pl -export-ignore
|
|
||||||
/util/mksymtbl.pl -export-ignore
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
*.rej
|
*.rej
|
||||||
*.so
|
*.so
|
||||||
*_test
|
*_test
|
||||||
*.ipch # vscode/intellisense precompiled header
|
|
||||||
*~
|
*~
|
||||||
.ccache/
|
.ccache/
|
||||||
.cproject
|
.cproject
|
||||||
@@ -57,7 +56,3 @@ kyua.log
|
|||||||
named.memstats
|
named.memstats
|
||||||
named.run
|
named.run
|
||||||
timestamp
|
timestamp
|
||||||
/compile_commands.json
|
|
||||||
/cppcheck_html/
|
|
||||||
/cppcheck.results
|
|
||||||
/tsan
|
|
||||||
|
|||||||
+73
-773
File diff suppressed because it is too large
Load Diff
@@ -1,65 +0,0 @@
|
|||||||
## Release Schedule
|
|
||||||
|
|
||||||
**Tagging Deadline:**
|
|
||||||
|
|
||||||
**Public Release:**
|
|
||||||
|
|
||||||
## Release Checklist
|
|
||||||
|
|
||||||
## 2 Working Days Before the Tagging Deadline
|
|
||||||
|
|
||||||
- [ ] ***(QA)*** Check whether all issues assigned to the release milestone are resolved[^1].
|
|
||||||
- [ ] ***(QA)*** Ensure that there are no outstanding merge requests in the private repository[^1] (Subscription Edition only).
|
|
||||||
- [ ] ***(QA)*** Ensure all merge requests marked for backporting have been indeed backported.
|
|
||||||
|
|
||||||
## Before the Tagging Deadline
|
|
||||||
|
|
||||||
- [ ] ***(QA)*** Inform Support/Marketing of impending release (and give estimated release dates).
|
|
||||||
- [ ] ***(QA)*** Check Perflab to ensure there has been no unexplained drop in performance for the versions being released.
|
|
||||||
- [ ] ***(SwEng)*** Update API files for libraries with new version information.
|
|
||||||
- [ ] ***(SwEng)*** Change software version and library versions in `configure.ac` (new major release only).
|
|
||||||
- [ ] ***(SwEng)*** Rebuild `configure` using Autoconf on `docs.isc.org`.
|
|
||||||
- [ ] ***(SwEng)*** Update `CHANGES`.
|
|
||||||
- [ ] ***(SwEng)*** Update `CHANGES.SE` (Subscription Edition only).
|
|
||||||
- [ ] ***(SwEng)*** Update `README.md`.
|
|
||||||
- [ ] ***(SwEng)*** Update `version`.
|
|
||||||
- [ ] ***(SwEng)*** Build documentation on `docs.isc.org`.
|
|
||||||
- [ ] ***(QA)*** Check that all the above steps were performed correctly.
|
|
||||||
- [ ] ***(QA)*** Check that the contents of release notes match the merge requests comprising the releases.
|
|
||||||
- [ ] ***(QA)*** Check that the formatting is correct for text, PDF, and HTML versions of release notes.
|
|
||||||
- [ ] ***(SwEng)*** Tag the releases[^2]. (Tags may only be pushed to the public repository for releases which are *not* security releases.)
|
|
||||||
- [ ] ***(SwEng)*** If this is the first tag for a release (e.g. beta), create a release branch named `release_v9_X_Y` to allow development to continue on the maintenance branch whilst release engineering continues.
|
|
||||||
|
|
||||||
## Before the ASN Deadline (for ASN Releases) or the Public Release Date (for Regular Releases)
|
|
||||||
|
|
||||||
- [ ] ***(QA)*** Verify GitLab CI results for the tags created and prepare a QA report for the releases to be published.
|
|
||||||
- [ ] ***(QA)*** Request signatures for the tarballs, providing their location and checksums.
|
|
||||||
- [ ] ***(Signers)*** Validate tarball checksums, sign tarballs, and upload signatures.
|
|
||||||
- [ ] ***(QA)*** Verify tarball signatures and check tarball checksums again.
|
|
||||||
- [ ] ***(Support)*** Pre-publish ASN and/or Subscription Edition tarballs so that packages can be built.
|
|
||||||
- [ ] ***(QA)*** Build and test ASN and/or Subscription Edition packages.
|
|
||||||
- [ ] ***(QA)*** Notify Support that the releases have been prepared.
|
|
||||||
- [ ] ***(Support)*** Send out ASNs (if applicable).
|
|
||||||
|
|
||||||
## On the Day of Public Release
|
|
||||||
|
|
||||||
- [ ] ***(Support)*** Wait for clearance from Security Officer to proceed with the public release (if applicable).
|
|
||||||
- [ ] ***(Support)*** Place tarballs in public location on FTP site.
|
|
||||||
- [ ] ***(Support)*** Publish links to downloads on ISC website.
|
|
||||||
- [ ] ***(Support)*** Write release email to *bind-announce*.
|
|
||||||
- [ ] ***(Support)*** Write email to *bind-users* (if a major release).
|
|
||||||
- [ ] ***(Support)*** Update tickets in case of waiting support customers.
|
|
||||||
- [ ] ***(QA)*** Build and test any outstanding private packages.
|
|
||||||
- [ ] ***(QA)*** Build public packages (`*.deb`, RPMs).
|
|
||||||
- [ ] ***(QA)*** Inform Marketing of the release.
|
|
||||||
- [ ] ***(QA)*** Update the internal [BIND release dates wiki page](https://wiki.isc.org/bin/view/Main/BindReleaseDates) when public announcement has been made.
|
|
||||||
- [ ] ***(Marketing)*** Post short note to Twitter.
|
|
||||||
- [ ] ***(Marketing)*** Update [Wikipedia entry for BIND](https://en.wikipedia.org/wiki/BIND).
|
|
||||||
- [ ] ***(Marketing)*** Write blog article (if a major release).
|
|
||||||
- [ ] ***(QA)*** Ensure all new tags are annotated and signed.
|
|
||||||
- [ ] ***(SwEng)*** Push tags for the published releases to the public repository.
|
|
||||||
- [ ] ***(SwEng)*** Merge the automatically prepared `prep 9.X.Y` commit which updates `version` and documentation on the release branch into the relevant maintenance branch (`v9_X`).
|
|
||||||
|
|
||||||
[^1]: If not, use the time remaining until the tagging deadline to ensure all outstanding issues are either resolved or moved to a different milestone.
|
|
||||||
|
|
||||||
[^2]: Preferred command line: `git tag -u <DEVELOPER_KEYID> -a -s -m "BIND 9.X.Y[alphatag]" v9_X_Y[alphatag]`, where `[alphatag]` is an optional string such as `b1`, `rc1`, etc.
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
## Release Checklist
|
||||||
|
|
||||||
|
- [ ] (Manager) Check for the presence of a milestone for the release:
|
||||||
|
- If there is a milestone, are all the issues for the milestone resolved? (other than this checklist).
|
||||||
|
- [ ] (Manager) Inform Support/Marketing of impending release (and give estimated release dates).
|
||||||
|
- (SwEng) Prepare the sources for tarball generation:
|
||||||
|
- [ ] Check perflab to ensure there has been no unexplained drop in performance for the version being released.
|
||||||
|
- [ ] Ensure that there are no outstanding merge requests in the private repository (subscription version only).
|
||||||
|
- [ ] Update API files for libraries with new version information.
|
||||||
|
- [ ] Change software version and library versions in configure.in (new major release only).
|
||||||
|
- [ ] Rebuild configure using autoconf on docs.isc.org.
|
||||||
|
- [ ] Update CHANGES.
|
||||||
|
- [ ] Update CHANGES.SE (subscription branch only).
|
||||||
|
- [ ] Update "version".
|
||||||
|
- [ ] Update "readme.md".
|
||||||
|
- Check the release notes are correct:
|
||||||
|
- [ ] Compare content with merge requests for the release.
|
||||||
|
- [ ] Check formatting.
|
||||||
|
- [ ] Build documentation on docs.isc.org.
|
||||||
|
- [ ] Commit changes and make sure the gitlab-ci tests are passing.
|
||||||
|
- [ ] Push the changes and tag ("alphatag" is an optional string such as "b1", "rc1" etc.). (```git tag -u <DEVELOPER_KEYID> -a -s -m "BIND 9.X.Y[alphatag]" v9_X_Y[alphatag]```)
|
||||||
|
- [ ] If this is the first tag for a release (e.g. beta), create a release branch named `release_v9_X_Y` (this allows development to continue on the release branch whilst release engineering continues).
|
||||||
|
- [ ] (SwEng) Run the "make release" Jenkins job to produce the tarballs and zips.
|
||||||
|
- [ ] (SwEng) Ask QA to sanity check the tarball and zips (passing to them the number of the Jenkins job).
|
||||||
|
- [ ] (QA) Sanity check the tarballs.
|
||||||
|
- [ ] (QA) Request the signature on the tarballs.
|
||||||
|
- [ ] (QA) Check signatures on tarballs.
|
||||||
|
- [ ] (QA) Tell Support to handle notification of release.
|
||||||
|
- [ ] (Manager) Inform Marketing of the release
|
||||||
|
- [ ] (Manager) Update the internal [BIND release dates wiki page](https://wiki.isc.org/bin/view/Main/BindReleaseDates) when public announcement has been made.
|
||||||
|
|
||||||
|
- [ ] (SwEng) Update DEB and RPM packages
|
||||||
|
- [ ] (SwEng) Merge the automatically prepared `prep 9.X.Y` commit which updates `version` and documentation on the release branch into the relevant maintenance branch (`v9_X`)
|
||||||
|
|
||||||
|
## Support
|
||||||
|
- [ ] Make tarballs and signatures available to download.
|
||||||
|
- [ ] Write release email to bind9-announce.
|
||||||
|
- [ ] Write email to bind9-users (if a major release).
|
||||||
|
- [ ] Update tickets in case of waiting support customers.
|
||||||
|
|
||||||
|
## Marketing
|
||||||
|
- [ ] Post short note to Twitter.
|
||||||
|
- [ ] Update [Wikipedia entry for BIND](http://en.wikipedia.org/wiki/BIND).
|
||||||
|
- [ ] Write blog article (if a major release).
|
||||||
@@ -1,385 +1,3 @@
|
|||||||
5350. [bug] When a view was configured with class CHAOS, the
|
|
||||||
server could crash while processing a query for a
|
|
||||||
non-existent record. [GL #1540]
|
|
||||||
|
|
||||||
5349. [bug] Fix a race in task_pause/unpause. [GL #1571]
|
|
||||||
|
|
||||||
5348. [bug] dnssec-settime -Psync was not being honoured.
|
|
||||||
[GL !2893]
|
|
||||||
|
|
||||||
--- 9.15.8 released ---
|
|
||||||
|
|
||||||
5347. [bug] Fixed a bug that could cause an intermittent crash
|
|
||||||
in validator.c when validating a negative cache
|
|
||||||
entry. [GL #1561]
|
|
||||||
|
|
||||||
5346. [bug] Make hazard pointer array allocations dynamic, fixing
|
|
||||||
a bug that caused named to crash on machines with more
|
|
||||||
than 40 cores. [GL #1493]
|
|
||||||
|
|
||||||
5345. [func] Key-style trust anchors and DS-style trust anchors
|
|
||||||
can now both be used for the same name. [GL #1237]
|
|
||||||
|
|
||||||
5344. [bug] Handle accept() errors properly in netmgr. [GL !2880]
|
|
||||||
|
|
||||||
5343. [func] Add statistics counters to the netmgr. [GL #1311]
|
|
||||||
|
|
||||||
5342. [bug] Disable pktinfo for IPv6 and bind to each interface
|
|
||||||
explicitly instead, because libuv doesn't support
|
|
||||||
pktinfo control messages. [GL #1558]
|
|
||||||
|
|
||||||
5341. [func] Simplify passing the bound TCP socket to child
|
|
||||||
threads by using isc_uv_export/import functions.
|
|
||||||
[GL !2825]
|
|
||||||
|
|
||||||
5340. [bug] Don't deadlock when binding to a TCP socket fails.
|
|
||||||
[GL #1499]
|
|
||||||
|
|
||||||
5339. [bug] With some libmaxminddb versions, named could erroneously
|
|
||||||
match an IP address not belonging to any subnet defined
|
|
||||||
in a given GeoIP2 database to one of the existing
|
|
||||||
entries in that database. [GL #1552]
|
|
||||||
|
|
||||||
5338. [bug] Fix line spacing in `rndc secroots`.
|
|
||||||
Thanks to Tony Finch. [GL !2478]
|
|
||||||
|
|
||||||
5337. [func] 'named -V' now reports maxminddb and protobuf-c
|
|
||||||
versions. [GL !2686]
|
|
||||||
|
|
||||||
--- 9.15.7 released ---
|
|
||||||
|
|
||||||
5336. [bug] The TCP high-water statistic could report an
|
|
||||||
incorrect value on startup. [GL #1392]
|
|
||||||
|
|
||||||
5335. [func] Make TCP listening code multithreaded. [GL !2659]
|
|
||||||
|
|
||||||
5334. [doc] Update documentation with dnssec-policy clarifications.
|
|
||||||
Also change some defaults. [GL !2711]
|
|
||||||
|
|
||||||
5333. [bug] Fix duration printing on Solaris when value is not
|
|
||||||
an ISO 8601 duration. [GL #1460]
|
|
||||||
|
|
||||||
5332. [func] Renamed "dnssec-keys" configuration statement
|
|
||||||
to the more descriptive "trust-anchors". [GL !2702]
|
|
||||||
|
|
||||||
5331. [func] Use compiler-provided mechanisms for thread local
|
|
||||||
storage, and make the requirement for such mechanisms
|
|
||||||
explicit in configure. [GL #1444]
|
|
||||||
|
|
||||||
5330. [bug] 'configure --without-python' was ineffective if
|
|
||||||
PYTHON was set in the environment. [GL #1434]
|
|
||||||
|
|
||||||
5329. [bug] Reconfiguring named caused memory to be leaked when any
|
|
||||||
GeoIP2 database was in use. [GL #1445]
|
|
||||||
|
|
||||||
5328. [bug] rbtdb.c:rdataset_{get,set}ownercase failed to obtain
|
|
||||||
a node lock. [GL #1417]
|
|
||||||
|
|
||||||
5327. [func] Added a statistics counter to track queries
|
|
||||||
dropped because the recursive-clients quota was
|
|
||||||
exceeded. [GL #1399]
|
|
||||||
|
|
||||||
5326. [bug] Add Python dependency on 'distutils.core' to configure.
|
|
||||||
'distutils.core' is required for installation.
|
|
||||||
[GL #1397]
|
|
||||||
|
|
||||||
5325. [bug] Addressed several issues with TCP connections in
|
|
||||||
the netmgr: restored support for TCP connection
|
|
||||||
timeouts, restored TCP backlog support, actively
|
|
||||||
close all open sockets during shutdown. [GL #1312]
|
|
||||||
|
|
||||||
5324. [bug] Change the category of some log messages from general
|
|
||||||
to the more appopriate catergory of xfer-in. [GL #1394]
|
|
||||||
|
|
||||||
5323. [bug] Fix a bug in DNSSEC trust anchor verification.
|
|
||||||
[GL !2609]
|
|
||||||
|
|
||||||
5322. [placeholder]
|
|
||||||
|
|
||||||
5321. [bug] Obtain write lock before updating version->records
|
|
||||||
and version->bytes. [GL #1341]
|
|
||||||
|
|
||||||
5320. [cleanup] Silence TSAN on header->count. [GL #1344]
|
|
||||||
|
|
||||||
--- 9.15.6 released ---
|
|
||||||
|
|
||||||
5319. [func] Trust anchors can now be configured using DS
|
|
||||||
format to represent a key digest, by using the
|
|
||||||
new "initial-ds" or "static-ds" keywords in
|
|
||||||
the "dnssec-keys" statement.
|
|
||||||
|
|
||||||
Note: DNSKEY-format and DS-format trust anchors
|
|
||||||
cannot both be used for the same domain name.
|
|
||||||
[GL #622]
|
|
||||||
|
|
||||||
5318. [cleanup] The DNSSEC validation code has been refactored
|
|
||||||
for clarity and to reduce code duplication.
|
|
||||||
[GL #622]
|
|
||||||
|
|
||||||
5317. [func] A new asynchronous network communications system
|
|
||||||
based on libuv is now used for listening for
|
|
||||||
incoming requests and responding to them. (The
|
|
||||||
old isc_socket API remains in use for sending
|
|
||||||
iterative queries and processing responses; this
|
|
||||||
will be changed too in a later release.)
|
|
||||||
|
|
||||||
This change will make it easier to improve
|
|
||||||
performance and implement new protocol layers
|
|
||||||
(e.g., DNS over TLS) in the future. [GL #29]
|
|
||||||
|
|
||||||
5316. [func] A new "dnssec-policy" option has been added to
|
|
||||||
named.conf to implement a key and signing policy
|
|
||||||
(KASP) for zones. When this option is in use,
|
|
||||||
named can generate new keys as needed and
|
|
||||||
automatically roll both ZSK and KSK keys. (Note
|
|
||||||
that the syntax for this statement differs from
|
|
||||||
the dnssec policy used by dnssec-keymgr.)
|
|
||||||
|
|
||||||
See the ARM for configuration details. [GL #1134]
|
|
||||||
|
|
||||||
5315. [bug] Apply the inital RRSIG expiration spread fixed
|
|
||||||
to all dynamically created records in the zone
|
|
||||||
including NSEC3. Also fix the signature clusters
|
|
||||||
when the server has been offline for prolonged
|
|
||||||
period of times. [GL #1256]
|
|
||||||
|
|
||||||
5314. [func] Added a new statistics variable "tcp-highwater"
|
|
||||||
that reports the maximum number of simultaneous TCP
|
|
||||||
clients BIND has handled while running. [GL #1206]
|
|
||||||
|
|
||||||
5313. [bug] The default GeoIP2 database location did not match
|
|
||||||
the ARM. 'named -V' now reports the default
|
|
||||||
location. [GL #1301]
|
|
||||||
|
|
||||||
5312. [bug] Do not flush the cache for `rndc validation status`.
|
|
||||||
Thanks to Tony Finch. [GL !2462]
|
|
||||||
|
|
||||||
5311. [cleanup] Include all views in output of `rndc validation status`.
|
|
||||||
Thanks to Tony Finch. [GL !2461]
|
|
||||||
|
|
||||||
5310. [bug] TCP failures were affecting EDNS statistics. [GL #1059]
|
|
||||||
|
|
||||||
5309. [placeholder]
|
|
||||||
|
|
||||||
5308. [bug] Don't log DNS_R_UNCHANGED from sync_secure_journal()
|
|
||||||
at ERROR level in receive_secure_serial(). [GL #1288]
|
|
||||||
|
|
||||||
5307. [bug] Fix hang when named-compilezone output is sent to pipe.
|
|
||||||
Thanks to Tony Finch. [GL !2481]
|
|
||||||
|
|
||||||
5306. [security] Set a limit on number of simultaneous pipelined TCP
|
|
||||||
queries. (CVE-2019-6477) [GL #1264]
|
|
||||||
|
|
||||||
5305. [bug] NSEC Aggressive Cache ("synth-from-dnssec") has been
|
|
||||||
disabled by default because it was found to have
|
|
||||||
a significant performance impact on the recursive
|
|
||||||
service. [GL #1265]
|
|
||||||
|
|
||||||
5304. [bug] "dnskey-sig-validity 0;" was not being accepted.
|
|
||||||
[GL #876]
|
|
||||||
|
|
||||||
5303. [placeholder]
|
|
||||||
|
|
||||||
5302. [bug] Fix checking that "dnstap-output" is defined when
|
|
||||||
"dnstap" is specified in a view. [GL #1281]
|
|
||||||
|
|
||||||
5301. [bug] Detect partial prefixes / incomplete IPv4 address in
|
|
||||||
acls. [GL #1143]
|
|
||||||
|
|
||||||
5300. [bug] dig/mdig/delv: Add a colon after EDNS option names,
|
|
||||||
even when the option is empty, to improve
|
|
||||||
readability and allow correct parsing of YAML
|
|
||||||
output. [GL #1226]
|
|
||||||
|
|
||||||
--- 9.15.5 released ---
|
|
||||||
|
|
||||||
5299. [security] A flaw in DNSSEC verification when transferring
|
|
||||||
mirror zones could allow data to be incorrectly
|
|
||||||
marked valid. (CVE-2019-6475) [GL #1252]
|
|
||||||
|
|
||||||
5298. [security] Named could assert if a forwarder returned a
|
|
||||||
referral, rather than resolving the query, when QNAME
|
|
||||||
minimization was enabled. (CVE-2019-6476) [GL #1051]
|
|
||||||
|
|
||||||
5297. [bug] Check whether a previous QNAME minimization fetch
|
|
||||||
is still running before starting a new one; return
|
|
||||||
SERVFAIL and log an error if so. [GL #1191]
|
|
||||||
|
|
||||||
5296. [placeholder]
|
|
||||||
|
|
||||||
5295. [cleanup] Split dns_name_copy() calls into dns_name_copy() and
|
|
||||||
dns_name_copynf() for those calls that can potentially
|
|
||||||
fail and those that should not fail respectively.
|
|
||||||
[GL !2265]
|
|
||||||
|
|
||||||
5294. [func] Fallback to ACE name on output in locale, which does not
|
|
||||||
support converting it to unicode. [GL #846]
|
|
||||||
|
|
||||||
5293. [bug] On Windows, named crashed upon any attempt to fetch XML
|
|
||||||
statistics from it. [GL #1245]
|
|
||||||
|
|
||||||
5292. [bug] Queue 'rndc nsec3param' requests while signing inline
|
|
||||||
zone changes. [GL #1205]
|
|
||||||
|
|
||||||
--- 9.15.4 released ---
|
|
||||||
|
|
||||||
5291. [placeholder]
|
|
||||||
|
|
||||||
5290. [placeholder]
|
|
||||||
|
|
||||||
5289. [bug] Address NULL pointer dereference in rpz.c:rpz_detach.
|
|
||||||
[GL #1210]
|
|
||||||
|
|
||||||
5288. [bug] dnssec-must-be-secure was not always honored.
|
|
||||||
[GL #1209]
|
|
||||||
|
|
||||||
5287. [placeholder]
|
|
||||||
|
|
||||||
5286. [contrib] Address potential NULL pointer dereferences in
|
|
||||||
dlz_mysqldyn_mod.c. [GL #1207]
|
|
||||||
|
|
||||||
5285. [port] win32: implement "-T maxudpXXX". [GL #837]
|
|
||||||
|
|
||||||
5284. [func] Added +unexpected command line option to dig.
|
|
||||||
By default, dig won't accept a reply from a source
|
|
||||||
other than the one to which it sent the query.
|
|
||||||
Invoking dig with +unexpected argument will allow it
|
|
||||||
to process replies from unexpected sources.
|
|
||||||
|
|
||||||
5283. [bug] When a response-policy zone expires, ensure that
|
|
||||||
its policies are removed from the RPZ summary
|
|
||||||
database. [GL #1146]
|
|
||||||
|
|
||||||
5282. [bug] Fixed a bug in searching for possible wildcard matches
|
|
||||||
for query names in the RPZ summary database. [GL #1146]
|
|
||||||
|
|
||||||
5281. [cleanup] Don't escape commas when reporting named's command
|
|
||||||
line. [GL #1189]
|
|
||||||
|
|
||||||
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 toggle-able.
|
|
||||||
[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,
|
5248. [func] To clarify the configuration of DNSSEC keys,
|
||||||
the "managed-keys" and "trusted-keys" options
|
the "managed-keys" and "trusted-keys" options
|
||||||
have both been deprecated. The new "dnssec-keys"
|
have both been deprecated. The new "dnssec-keys"
|
||||||
@@ -406,16 +24,13 @@
|
|||||||
5245. [cleanup] Reduce logging level for IXFR up-to-date poll
|
5245. [cleanup] Reduce logging level for IXFR up-to-date poll
|
||||||
responses. [GL #1009]
|
responses. [GL #1009]
|
||||||
|
|
||||||
5244. [security] Fixed a race condition in dns_dispatch_getnext()
|
5244. [placeholder]
|
||||||
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
|
5243. [bug] Fix a possible race between dispatcher and socket
|
||||||
code in a high-load cold-cache resolver scenario.
|
code in a high-load cold-cache resolver scenario.
|
||||||
[GL #943]
|
[GL #943]
|
||||||
|
|
||||||
5242. [bug] In relaxed qname minimization mode, fall back to
|
5242. [bug] In relaxed qname minimizatiom mode, fall back to
|
||||||
normal resolution when encountering a lame
|
normal resolution when encountering a lame
|
||||||
delegation, and use _.domain/A queries rather
|
delegation, and use _.domain/A queries rather
|
||||||
than domain/NS. [GL #1055]
|
than domain/NS. [GL #1055]
|
||||||
|
|||||||
@@ -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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright (C) 1996-2019 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
|
||||||
@@ -181,6 +181,67 @@ SUCH DAMAGE.
|
|||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 1998 Doug Rabson
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright ((c)) 2002, Rice University
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of Rice University (RICE) nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
|
||||||
|
This software is provided by RICE and the contributors on an "as is"
|
||||||
|
basis, without any representations or warranties of any kind, express
|
||||||
|
or implied including, but not limited to, representations or
|
||||||
|
warranties of non-infringement, merchantability or fitness for a
|
||||||
|
particular purpose. In no event shall RICE or contributors be liable
|
||||||
|
for any direct, indirect, incidental, special, exemplary, or
|
||||||
|
consequential damages (including, but not limited to, procurement of
|
||||||
|
substitute goods or services; loss of use, data, or profits; or
|
||||||
|
business interruption) however caused and on any theory of liability,
|
||||||
|
whether in contract, strict liability, or tort (including negligence
|
||||||
|
or otherwise) arising in any way out of the use of this software, even
|
||||||
|
if advised of the possibility of such damage.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 1993 by Digital Equipment Corporation.
|
Copyright (c) 1993 by Digital Equipment Corporation.
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
@@ -201,6 +262,61 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright 2000 Aaron D. Gifford. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the copyright holder nor the names of contributors
|
||||||
|
may be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTOR(S) ``AS IS'' AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTOR(S) BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 1998 Doug Rabson.
|
||||||
|
Copyright (c) 2001 Jake Burkholder.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
@@ -247,6 +363,49 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved.
|
||||||
|
|
||||||
|
By using this file, you agree to the terms and conditions set forth bellow.
|
||||||
|
|
||||||
|
LICENSE TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
The following License Terms and Conditions apply, unless a different
|
||||||
|
license is obtained from Japan Network Information Center ("JPNIC"),
|
||||||
|
a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
|
||||||
|
Chiyoda-ku, Tokyo 101-0047, Japan.
|
||||||
|
|
||||||
|
1. Use, Modification and Redistribution (including distribution of any
|
||||||
|
modified or derived work) in source and/or binary forms is permitted
|
||||||
|
under this License Terms and Conditions.
|
||||||
|
|
||||||
|
2. Redistribution of source code must retain the copyright notices as they
|
||||||
|
appear in each source code file, this License Terms and Conditions.
|
||||||
|
|
||||||
|
3. Redistribution in binary form must reproduce the Copyright Notice,
|
||||||
|
this License Terms and Conditions, in the documentation and/or other
|
||||||
|
materials provided with the distribution. For the purposes of binary
|
||||||
|
distribution the "Copyright Notice" refers to the following language:
|
||||||
|
"Copyright (c) 2000-2002 Japan Network Information Center. All rights
|
||||||
|
reserved."
|
||||||
|
|
||||||
|
4. The name of JPNIC may not be used to endorse or promote products
|
||||||
|
derived from this Software without specific prior written approval of
|
||||||
|
JPNIC.
|
||||||
|
|
||||||
|
5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||||
|
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (C) 2004 Nominet, Ltd.
|
Copyright (C) 2004 Nominet, Ltd.
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
@@ -263,6 +422,24 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Portions Copyright RSA Security Inc.
|
||||||
|
|
||||||
|
License to copy and use this software is granted provided that it is
|
||||||
|
identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
|
||||||
|
(Cryptoki)" in all material mentioning or referencing this software.
|
||||||
|
|
||||||
|
License is also granted to make and use derivative works provided that
|
||||||
|
such works are identified as "derived from the RSA Security Inc. PKCS #11
|
||||||
|
Cryptographic Token Interface (Cryptoki)" in all material mentioning or
|
||||||
|
referencing the derived work.
|
||||||
|
|
||||||
|
RSA Security Inc. makes no representations concerning either the
|
||||||
|
merchantability of this software or the suitability of this software for
|
||||||
|
any particular purpose. It is provided "as is" without express or implied
|
||||||
|
warranty of any kind.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 1996, David Mazieres <dm@uun.org>
|
Copyright (c) 1996, David Mazieres <dm@uun.org>
|
||||||
Copyright (c) 2008, Damien Miller <djm@openbsd.org>
|
Copyright (c) 2008, Damien Miller <djm@openbsd.org>
|
||||||
|
|
||||||
@@ -280,6 +457,54 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2000-2001 The OpenSSL Project. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
3. All advertising materials mentioning features or use of this
|
||||||
|
software must display the following acknowledgment:
|
||||||
|
"This product includes software developed by the OpenSSL Project
|
||||||
|
for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||||
|
|
||||||
|
4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||||
|
endorse or promote products derived from this software without
|
||||||
|
prior written permission. For written permission, please contact
|
||||||
|
licensing@OpenSSL.org.
|
||||||
|
|
||||||
|
5. Products derived from this software may not be called "OpenSSL"
|
||||||
|
nor may "OpenSSL" appear in their names without prior written
|
||||||
|
permission of the OpenSSL Project.
|
||||||
|
|
||||||
|
6. Redistributions of any form whatsoever must retain the following
|
||||||
|
acknowledgment:
|
||||||
|
"This product includes software developed by the OpenSSL Project
|
||||||
|
for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||||
|
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||||
|
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 1995, 1997, 1998 The NetBSD Foundation, Inc.
|
Copyright (c) 1995, 1997, 1998 The NetBSD Foundation, Inc.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
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
|
||||||
@@ -507,11 +505,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.
|
||||||
|
|||||||
+1
-1
@@ -150,7 +150,7 @@ releases. New features include:
|
|||||||
- "rndc modzone" reconfigures a single zone, without requiring the entire
|
- "rndc modzone" reconfigures a single zone, without requiring the entire
|
||||||
server to be reconfigured.
|
server to be reconfigured.
|
||||||
- "rndc showzone" displays the current configuration of a zone.
|
- "rndc showzone" displays the current configuration of a zone.
|
||||||
- "rndc managed-keys" can be used to check the status of RFC 5011 managed
|
- "rndc managed-keys" can be used to check the status of RFC 5001 managed
|
||||||
trust anchors, or to force trust anchors to be refreshed.
|
trust anchors, or to force trust anchors to be refreshed.
|
||||||
- "max-cache-size" can now be set to a percentage of available memory. The
|
- "max-cache-size" can now be set to a percentage of available memory. The
|
||||||
default is 90%.
|
default is 90%.
|
||||||
|
|||||||
+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 CODE_OF_CONDUCT.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;}' > $@
|
||||||
|
|
||||||
|
|||||||
@@ -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,32 +1,11 @@
|
|||||||
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
|
||||||
system with a C11-compliant C compiler, BSD-style sockets with
|
system with a C99-compliant C compiler, BSD-style sockets with
|
||||||
RFC-compliant IPv6 support, POSIX-compliant threads, the libuv
|
RFC-compliant IPv6 support, POSIX-compliant threads, and the OpenSSL
|
||||||
asynchronous I/O library, and the OpenSSL cryptography library.
|
cryptography library. Atomic operations support from the compiler is
|
||||||
|
needed, either in the form of builtin operations, C11 atomics or the
|
||||||
The following C11 features are used in BIND 9:
|
Interlocked family of functions on Windows.
|
||||||
|
|
||||||
* Atomic operations support from the compiler is needed, either in the
|
|
||||||
form of builtin operations, C11 atomics, or the Interlocked family of
|
|
||||||
functions on Windows.
|
|
||||||
|
|
||||||
* Thread Local Storage support from the compiler is needed, either in
|
|
||||||
the form of C11 _Thread_local/thread_local, the __thread GCC
|
|
||||||
extension, or the __declspec(thread) MSVC extension on Windows.
|
|
||||||
|
|
||||||
BIND 9.15 requires a fairly recent version of libuv (at least 1.x). For
|
|
||||||
some of the older systems listed below, you will have to install an
|
|
||||||
updated libuv package from sources such as EPEL, PPA, or other native
|
|
||||||
sources for updated packages. The other option is to build and install
|
|
||||||
libuv from source.
|
|
||||||
|
|
||||||
Certain optional BIND features have additional library dependencies. These
|
|
||||||
include libxml2 and libjson-c for statistics, libmaxminddb for
|
|
||||||
geolocation, libfstrm and libprotobuf-c for DNSTAP, and libidn2 for
|
|
||||||
internationalized domain name conversion.
|
|
||||||
|
|
||||||
ISC regularly tests BIND on many operating systems and architectures, but
|
ISC regularly tests BIND on many operating systems and architectures, but
|
||||||
lacks the resources to test all of them. Consequently, ISC is only able to
|
lacks the resources to test all of them. Consequently, ISC is only able to
|
||||||
@@ -34,16 +13,15 @@ offer support on a "best effort" basis for some.
|
|||||||
|
|
||||||
Regularly tested platforms
|
Regularly tested platforms
|
||||||
|
|
||||||
As of Dec 2019, BIND 9.15 is fully supported and regularly tested on the
|
As of Feb 2019, BIND 9.15 is fully supported and regularly tested on the
|
||||||
following systems:
|
following systems:
|
||||||
|
|
||||||
* Debian 9, 10
|
* Debian 8, 9, 10
|
||||||
* Ubuntu LTS 16.04, 18.04
|
* Ubuntu 16.04, 18.04
|
||||||
* Fedora 31
|
* Fedora 28, 29
|
||||||
* Red Hat Enterprise Linux / CentOS 7, 8
|
* Red Hat Enterprise Linux / CentOS 6, 7
|
||||||
* FreeBSD 11.3, 12.0
|
* FreeBSD 11.x
|
||||||
* OpenBSD 6.5
|
* OpenBSD 6.2, 6.3
|
||||||
* Alpine Linux
|
|
||||||
|
|
||||||
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
||||||
supported.
|
supported.
|
||||||
@@ -60,30 +38,17 @@ Server 2012 R2, none of these are tested regularly by ISC.
|
|||||||
* Windows 10 / x64
|
* Windows 10 / x64
|
||||||
* macOS 10.12+
|
* macOS 10.12+
|
||||||
* Solaris 11
|
* Solaris 11
|
||||||
|
* FreeBSD 10.x, 12.0+
|
||||||
|
* OpenBSD 6.4+
|
||||||
* NetBSD
|
* NetBSD
|
||||||
* Other Linux distributions still supported by their vendors, such as:
|
* Other Linux distributions still supported by their vendors, such as:
|
||||||
+ Ubuntu 19.04+
|
+ Ubuntu 14.04, 18.10+
|
||||||
+ Gentoo
|
+ Gentoo
|
||||||
+ Arch Linux
|
+ Arch Linux
|
||||||
|
+ Alpine Linux
|
||||||
* OpenWRT/LEDE 17.01+
|
* OpenWRT/LEDE 17.01+
|
||||||
* Other CPU architectures (mips, mipsel, sparc, ...)
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
Community maintained
|
|
||||||
|
|
||||||
These systems may not all have the required dependencies for building BIND
|
|
||||||
easily available, although it will be possible in many cases to compile
|
|
||||||
those directly from source. The community and interested parties may wish
|
|
||||||
to help with maintenance, and we welcome patch contributions, although we
|
|
||||||
cannot guarantee that we will accept them. All contributions will be
|
|
||||||
assessed against the risk of adverse effect on officially supported
|
|
||||||
platforms.
|
|
||||||
|
|
||||||
* Platforms past or close to their respective EOL dates, such as:
|
|
||||||
+ Ubuntu 14.04, 18.10
|
|
||||||
+ CentOS 6
|
|
||||||
+ Debian Jessie
|
|
||||||
+ FreeBSD 10.x
|
|
||||||
|
|
||||||
Unsupported platforms
|
Unsupported platforms
|
||||||
|
|
||||||
These are platforms on which BIND 9.15 is known not to build or run:
|
These are platforms on which BIND 9.15 is known not to build or run:
|
||||||
@@ -96,4 +61,38 @@ These are platforms on which BIND 9.15 is known not to build or run:
|
|||||||
* Platforms that don't support atomic operations (via compiler or
|
* Platforms that don't support atomic operations (via compiler or
|
||||||
library)
|
library)
|
||||||
* Linux without NPTL (Native POSIX Thread Library)
|
* Linux without NPTL (Native POSIX Thread Library)
|
||||||
* Platforms on which libuv cannot be compiled
|
|
||||||
|
Platform quirks
|
||||||
|
|
||||||
|
ARM
|
||||||
|
|
||||||
|
If the compilation ends with following error:
|
||||||
|
|
||||||
|
Error: selected processor does not support `yield' in ARM mode
|
||||||
|
|
||||||
|
You will need to set -march compiler option to native, so the compiler
|
||||||
|
recognizes yield assembler instruction. The proper way to set -march=
|
||||||
|
native would be to put it into CFLAGS, e.g. run ./configure like this:
|
||||||
|
CFLAGS="-march=native -Os -g" ./configure plus your usual options.
|
||||||
|
|
||||||
|
If that doesn't work, you can enforce the minimum CPU and FPU (taken from
|
||||||
|
Debian armhf documentation):
|
||||||
|
|
||||||
|
* The lowest worthwhile CPU implementation is Armv7-A, therefore the
|
||||||
|
recommended build option is -march=armv7-a.
|
||||||
|
|
||||||
|
* FPU should be set at VFPv3-D16 as they represent the minimum
|
||||||
|
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
|
||||||
|
|
||||||
|
NetBSD 6 i386
|
||||||
|
|
||||||
|
The i386 build of NetBSD requires the libatomic library, available from
|
||||||
|
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
|
||||||
|
|||||||
+28
-50
@@ -11,30 +11,11 @@
|
|||||||
## Supported platforms
|
## Supported platforms
|
||||||
|
|
||||||
In general, this version of BIND will build and run on any POSIX-compliant
|
In general, this version of BIND will build and run on any POSIX-compliant
|
||||||
system with a C11-compliant C compiler, BSD-style sockets with RFC-compliant
|
system with a C99-compliant C compiler, BSD-style sockets with RFC-compliant
|
||||||
IPv6 support, POSIX-compliant threads, the `libuv` asynchronous I/O library,
|
IPv6 support, POSIX-compliant threads, and the OpenSSL cryptography library.
|
||||||
and the OpenSSL cryptography library.
|
Atomic operations support from the compiler is needed, either in the form of
|
||||||
|
builtin operations, C11 atomics or the Interlocked family of functions on
|
||||||
The following C11 features are used in BIND 9:
|
Windows.
|
||||||
|
|
||||||
* Atomic operations support from the compiler is needed, either in the form of
|
|
||||||
builtin operations, C11 atomics, or the `Interlocked` family of functions on
|
|
||||||
Windows.
|
|
||||||
|
|
||||||
* Thread Local Storage support from the compiler is needed, either in the form
|
|
||||||
of C11 `_Thread_local`/`thread_local`, the `__thread` GCC extension, or
|
|
||||||
the `__declspec(thread)` MSVC extension on Windows.
|
|
||||||
|
|
||||||
BIND 9.15 requires a fairly recent version of `libuv` (at least 1.x). For
|
|
||||||
some of the older systems listed below, you will have to install an updated
|
|
||||||
`libuv` package from sources such as EPEL, PPA, or other native sources for
|
|
||||||
updated packages. The other option is to build and install `libuv` from
|
|
||||||
source.
|
|
||||||
|
|
||||||
Certain optional BIND features have additional library dependencies.
|
|
||||||
These include `libxml2` and `libjson-c` for statistics, `libmaxminddb` for
|
|
||||||
geolocation, `libfstrm` and `libprotobuf-c` for DNSTAP, and `libidn2` for
|
|
||||||
internationalized domain name conversion.
|
|
||||||
|
|
||||||
ISC regularly tests BIND on many operating systems and architectures, but
|
ISC regularly tests BIND on many operating systems and architectures, but
|
||||||
lacks the resources to test all of them. Consequently, ISC is only able to
|
lacks the resources to test all of them. Consequently, ISC is only able to
|
||||||
@@ -42,16 +23,15 @@ offer support on a "best effort" basis for some.
|
|||||||
|
|
||||||
### Regularly tested platforms
|
### Regularly tested platforms
|
||||||
|
|
||||||
As of Dec 2019, BIND 9.15 is fully supported and regularly tested on the
|
As of Feb 2019, BIND 9.15 is fully supported and regularly tested on the
|
||||||
following systems:
|
following systems:
|
||||||
|
|
||||||
* Debian 9, 10
|
* Debian 8, 9, 10
|
||||||
* Ubuntu LTS 16.04, 18.04
|
* Ubuntu 16.04, 18.04
|
||||||
* Fedora 31
|
* Fedora 28, 29
|
||||||
* Red Hat Enterprise Linux / CentOS 7, 8
|
* Red Hat Enterprise Linux / CentOS 6, 7
|
||||||
* FreeBSD 11.3, 12.0
|
* FreeBSD 11.x
|
||||||
* OpenBSD 6.5
|
* OpenBSD 6.2, 6.3
|
||||||
* Alpine Linux
|
|
||||||
|
|
||||||
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
||||||
|
|
||||||
@@ -67,30 +47,17 @@ Server 2012 R2, none of these are tested regularly by ISC.
|
|||||||
* Windows 10 / x64
|
* Windows 10 / x64
|
||||||
* macOS 10.12+
|
* macOS 10.12+
|
||||||
* Solaris 11
|
* Solaris 11
|
||||||
|
* FreeBSD 10.x, 12.0+
|
||||||
|
* OpenBSD 6.4+
|
||||||
* NetBSD
|
* NetBSD
|
||||||
* Other Linux distributions still supported by their vendors, such as:
|
* Other Linux distributions still supported by their vendors, such as:
|
||||||
* Ubuntu 19.04+
|
* Ubuntu 14.04, 18.10+
|
||||||
* Gentoo
|
* Gentoo
|
||||||
* Arch Linux
|
* Arch Linux
|
||||||
|
* Alpine Linux
|
||||||
* OpenWRT/LEDE 17.01+
|
* OpenWRT/LEDE 17.01+
|
||||||
* Other CPU architectures (mips, mipsel, sparc, ...)
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
### Community maintained
|
|
||||||
|
|
||||||
These systems may not all have the required dependencies for building BIND
|
|
||||||
easily available, although it will be possible in many cases to compile
|
|
||||||
those directly from source. The community and interested parties may wish
|
|
||||||
to help with maintenance, and we welcome patch contributions, although we
|
|
||||||
cannot guarantee that we will accept them. All contributions will be
|
|
||||||
assessed against the risk of adverse effect on officially supported
|
|
||||||
platforms.
|
|
||||||
|
|
||||||
* Platforms past or close to their respective EOL dates, such as:
|
|
||||||
* Ubuntu 14.04, 18.10
|
|
||||||
* CentOS 6
|
|
||||||
* Debian Jessie
|
|
||||||
* FreeBSD 10.x
|
|
||||||
|
|
||||||
## Unsupported platforms
|
## Unsupported platforms
|
||||||
|
|
||||||
These are platforms on which BIND 9.15 is known *not* to build or run:
|
These are platforms on which BIND 9.15 is known *not* to build or run:
|
||||||
@@ -102,4 +69,15 @@ These are platforms on which BIND 9.15 is known *not* to build or run:
|
|||||||
* 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)
|
||||||
* Platforms on which `libuv` cannot be compiled
|
|
||||||
|
## Platform quirks
|
||||||
|
|
||||||
|
### NetBSD 6 i386
|
||||||
|
|
||||||
|
The i386 build of NetBSD requires the `libatomic` library, available from
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
README
|
|
||||||
|
|
||||||
BIND 9
|
BIND 9
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
@@ -39,7 +37,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
|
||||||
@@ -48,8 +46,8 @@ the file HISTORY.
|
|||||||
For a detailed list of changes made throughout the history of BIND 9, see
|
For a detailed list of changes made throughout the history of BIND 9, see
|
||||||
the file CHANGES. See below for details on the CHANGES file format.
|
the file CHANGES. See below for details on the CHANGES file format.
|
||||||
|
|
||||||
For up-to-date versions and release notes, see https://www.isc.org/
|
For up-to-date release notes and errata, see http://www.isc.org/software/
|
||||||
download/.
|
bind9/releasenotes
|
||||||
|
|
||||||
For information about supported platforms, see PLATFORMS.
|
For information about supported platforms, see PLATFORMS.
|
||||||
|
|
||||||
@@ -71,9 +69,6 @@ If the bug you are reporting is a potential security issue, such as an
|
|||||||
assertion failure or other crash in named, please do NOT use GitLab to
|
assertion failure or other crash in named, please do NOT use GitLab to
|
||||||
report it. Instead, please send mail to security-officer@isc.org.
|
report it. Instead, please send mail to security-officer@isc.org.
|
||||||
|
|
||||||
For a general overview of ISC security policies, read the Knowledge Base
|
|
||||||
article at https://kb.isc.org/docs/aa-00861.
|
|
||||||
|
|
||||||
Professional support and training for BIND are available from ISC at
|
Professional support and training for BIND are available from ISC at
|
||||||
https://www.isc.org/support.
|
https://www.isc.org/support.
|
||||||
|
|
||||||
@@ -90,11 +85,10 @@ 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.
|
||||||
|
|
||||||
By default, external contributors don't have ability to fork BIND in the
|
By default, external contributors don't have ability to fork BIND in the
|
||||||
@@ -109,35 +103,25 @@ format-patch.
|
|||||||
BIND 9.15 features
|
BIND 9.15 features
|
||||||
|
|
||||||
BIND 9.15 is the newest development branch of BIND 9. It includes a number
|
BIND 9.15 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.14 and earlier releases.
|
||||||
|
|
||||||
* New dnssec-policy statement to configure a key and signing policy for
|
|
||||||
zones, enabling automatic key regeneration and rollover.
|
|
||||||
* New network manager based on libuv.
|
|
||||||
* Added support for the new GeoIP2 geolocation API, libmaxminddb.
|
|
||||||
* Improved DNSSEC trust anchor configuration using the trust-anchors
|
|
||||||
statement, permitting configuration of trust anchors in DS as well as
|
|
||||||
DNSKEY format.
|
|
||||||
* YAML output for dig, mdig, and delv.
|
|
||||||
|
|
||||||
Building BIND
|
Building BIND
|
||||||
|
|
||||||
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
||||||
basic POSIX support, and a 64-bit integer type. BIND also requires the
|
basic POSIX support, and a 64-bit integer type. Successful builds have
|
||||||
libuv asynchronous I/O library, and a cryptography provider library such
|
been observed on many versions of Linux and UNIX, including RedHat,
|
||||||
as OpenSSL or a hardware service module supporting PKCS#11. On Linux, BIND
|
Fedora, Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS
|
||||||
requires the libcap library to set process privileges, though this
|
X, Solaris, HP-UX, and OpenWRT.
|
||||||
requirement can be overridden by disabling capability support at compile
|
|
||||||
time. See Compile-time options below for details on other libraries that
|
|
||||||
may be required to support optional features.
|
|
||||||
|
|
||||||
Successful builds have been observed on many versions of Linux and UNIX,
|
BIND requires a cryptography provider library such as OpenSSL or a
|
||||||
including RHEL/CentOS, Fedora, Debian, Ubuntu, SLES, openSUSE, Slackware,
|
hardware service module supporting PKCS#11. On Linux, BIND requires the
|
||||||
Alpine, FreeBSD, NetBSD, OpenBSD, macOS, Solaris, OpenIndiana, OmniOS CE,
|
libcap library to set process privileges, though this requirement can be
|
||||||
HP-UX, and OpenWRT.
|
overridden by disabling capability support at compile time. See
|
||||||
|
Compile-time options below for details on other libraries that may be
|
||||||
|
required to support optional features.
|
||||||
|
|
||||||
BIND is also available for Windows Server 2012 R2 and higher. See
|
BIND is also available for Windows 2008 and higher. See win32utils/
|
||||||
win32utils/build.txt for details on building for Windows systems.
|
readme1st.txt for details on building for Windows systems.
|
||||||
|
|
||||||
To build on a UNIX or Linux system, use:
|
To build on a UNIX or Linux system, use:
|
||||||
|
|
||||||
@@ -150,7 +134,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
|
||||||
@@ -165,25 +149,26 @@ STD_CDEFINES Defaults to empty string. For a list of possible settings,
|
|||||||
LDFLAGS Linker flags. Defaults to empty string.
|
LDFLAGS Linker flags. Defaults to empty string.
|
||||||
BUILD_CC Needed when cross-compiling: the native C compiler to use
|
BUILD_CC Needed when cross-compiling: the native C compiler to use
|
||||||
when building for the target system.
|
when building for the target system.
|
||||||
BUILD_CFLAGS CFLAGS for the target system during cross-compiling.
|
BUILD_CFLAGS Optional, used for cross-compiling
|
||||||
BUILD_CPPFLAGS CPPFLAGS for the target system during cross-compiling.
|
BUILD_CPPFLAGS
|
||||||
BUILD_LDFLAGS LDFLAGS for the target system during cross-compiling.
|
BUILD_LDFLAGS
|
||||||
BUILD_LIBS LIBS for the target system during cross-compiling.
|
BUILD_LIBS
|
||||||
|
|
||||||
macOS
|
macOS
|
||||||
|
|
||||||
Building on macOS assumes that the "Command Tools for Xcode" is installed.
|
Building on macOS assumes that the "Command Tools for Xcode" is installed.
|
||||||
This can be downloaded from https://developer.apple.com/download/more/ or
|
This can be downloaded from https://developer.apple.com/download/more/ or
|
||||||
if you have Xcode already installed you can run xcode-select --install.
|
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 tools so that they can be easily found.
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including dnssec-keymgr,
|
Portions of BIND that are written in Python, including dnssec-keymgr,
|
||||||
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
||||||
argparse, ply and distutils.core modules to be available. argparse is a
|
'argparse' and 'ply' modules to be available. 'argparse' is a standard
|
||||||
standard module as of Python 2.7 and Python 3.2. ply is available from
|
module as of Python 2.7 and Python 3.2. 'ply' is available from https://
|
||||||
https://pypi.python.org/pypi/ply. distutils.core is required for
|
pypi.python.org/pypi/ply.
|
||||||
installation.
|
|
||||||
|
|
||||||
Compile-time options
|
Compile-time options
|
||||||
|
|
||||||
@@ -201,12 +186,9 @@ operations, specify the path to the PKCS#11 provider library using
|
|||||||
--with-pkcs11=<PREFIX>, and configure BIND with --enable-native-pkcs11.
|
--with-pkcs11=<PREFIX>, and configure BIND with --enable-native-pkcs11.
|
||||||
|
|
||||||
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 libraries: libxml2 http://xmlsoft.org or json-c
|
least one of the following: libxml2 http://xmlsoft.org or json-c https://
|
||||||
https://github.com/json-c/json-c. If these are installed at a nonstandard
|
github.com/json-c. If these are installed at a nonstandard location,
|
||||||
location, then:
|
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,
|
||||||
@@ -216,11 +198,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
|
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://
|
||||||
@@ -236,8 +217,8 @@ 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 package. Process capability support can also be disabled
|
or libcap-devel module. Process capability support can also be disabled by
|
||||||
by configuring with --disable-linux-caps.
|
configuring with --disable-linux-caps.
|
||||||
|
|
||||||
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
|
||||||
@@ -258,8 +239,11 @@ default, installation is into /usr/local, but this can be changed with the
|
|||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -271,7 +255,7 @@ ifconfig.sh up as root.
|
|||||||
|
|
||||||
Some tests require Perl and the Net::DNS and/or IO::Socket::INET6 modules,
|
Some tests require Perl and the Net::DNS and/or IO::Socket::INET6 modules,
|
||||||
and will be skipped if these are not available. Some tests require Python
|
and will be skipped if these are not available. Some tests require Python
|
||||||
and the dnspython module and will be skipped if these are not available.
|
and the 'dnspython' module and will be skipped if these are not available.
|
||||||
See bin/tests/system/README for further details.
|
See bin/tests/system/README for further details.
|
||||||
|
|
||||||
Unit tests are implemented using the CMocka unit testing framework. To
|
Unit tests are implemented using the CMocka unit testing framework. To
|
||||||
@@ -282,7 +266,7 @@ tests can be run via make test or make unit.
|
|||||||
Documentation
|
Documentation
|
||||||
|
|
||||||
The BIND 9 Administrator Reference Manual is included with the source
|
The BIND 9 Administrator Reference Manual is included with the source
|
||||||
distribution, in DocBook XML, HTML, and PDF format, in the doc/arm
|
distribution, in DocBook XML, HTML and PDF format, in the doc/arm
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
Some of the programs in the BIND 9 distribution have man pages in their
|
Some of the programs in the BIND 9 distribution have man pages in their
|
||||||
@@ -302,7 +286,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
|
||||||
@@ -337,39 +321,37 @@ 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
|
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
|
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
|
!NNN], which, respectively, refer to issues or merge requests in the
|
||||||
GitLab database. Most of these are publicly readable, unless they include
|
Gitlab database. Most of these are publically readable, unless they
|
||||||
information which is confidential or security sensitive.
|
include information which is confidential or security senstive.
|
||||||
|
|
||||||
To look up a GitLab issue by its number, use the URL https://
|
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,
|
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.
|
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
|
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
|
letter "P". This indicates that the information is in the private ISC
|
||||||
GitLab instance, which is not visible to the public.
|
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)
|
||||||
|
|||||||
@@ -48,7 +48,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).
|
||||||
@@ -57,8 +57,8 @@ For a detailed list of changes made throughout the history of BIND 9, see
|
|||||||
the file [CHANGES](CHANGES). See [below](#changes) for details on the
|
the file [CHANGES](CHANGES). See [below](#changes) for details on the
|
||||||
CHANGES file format.
|
CHANGES file format.
|
||||||
|
|
||||||
For up-to-date versions and release notes, see
|
For up-to-date release notes and errata, see
|
||||||
[https://www.isc.org/download/](https://www.isc.org/download/).
|
[http://www.isc.org/software/bind9/releasenotes](http://www.isc.org/software/bind9/releasenotes)
|
||||||
|
|
||||||
For information about supported platforms, see [PLATFORMS](PLATFORMS.md).
|
For information about supported platforms, see [PLATFORMS](PLATFORMS.md).
|
||||||
|
|
||||||
@@ -82,9 +82,6 @@ assertion failure or other crash in `named`, please do *NOT* use GitLab to
|
|||||||
report it. Instead, please send mail to
|
report it. Instead, please send mail to
|
||||||
[security-officer@isc.org](mailto:security-officer@isc.org).
|
[security-officer@isc.org](mailto:security-officer@isc.org).
|
||||||
|
|
||||||
For a general overview of ISC security policies, read the Knowledge Base
|
|
||||||
article at [https://kb.isc.org/docs/aa-00861](https://kb.isc.org/docs/aa-00861).
|
|
||||||
|
|
||||||
Professional support and training for BIND are available from
|
Professional support and training for BIND are available from
|
||||||
ISC at [https://www.isc.org/support](https://www.isc.org/support).
|
ISC at [https://www.isc.org/support](https://www.isc.org/support).
|
||||||
|
|
||||||
@@ -101,13 +98,12 @@ 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)
|
||||||
|
|
||||||
Patches for BIND may be submitted as
|
Patches for BIND may be submitted as
|
||||||
[merge requests](https://gitlab.isc.org/isc-projects/bind9/merge_requests)
|
[Merge Requests](https://gitlab.isc.org/isc-projects/bind9/merge_requests)
|
||||||
in the [ISC GitLab server](https://gitlab.isc.org) at
|
in the [ISC GitLab server](https://gitlab.isc.org) at
|
||||||
at [https://gitlab.isc.org/isc-projects/bind9/merge_requests](https://gitlab.isc.org/isc-projects/bind9/merge_requests).
|
at [https://gitlab.isc.org/isc-projects/bind9/merge_requests](https://gitlab.isc.org/isc-projects/bind9/merge_requests).
|
||||||
|
|
||||||
@@ -124,37 +120,25 @@ including your patch as an attachment, preferably generated by
|
|||||||
### <a name="features"/> BIND 9.15 features
|
### <a name="features"/> BIND 9.15 features
|
||||||
|
|
||||||
BIND 9.15 is the newest development branch of BIND 9. It includes a
|
BIND 9.15 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.14 and earlier releases.
|
||||||
include:
|
|
||||||
|
|
||||||
* New `dnssec-policy` statement to configure a key and signing policy
|
|
||||||
for zones, enabling automatic key regeneration and rollover.
|
|
||||||
* New network manager based on libuv.
|
|
||||||
* Added support for the new GeoIP2 geolocation API, `libmaxminddb`.
|
|
||||||
* Improved DNSSEC trust anchor configuration using the `trust-anchors`
|
|
||||||
statement, permitting configuration of trust anchors in DS as well as
|
|
||||||
DNSKEY format.
|
|
||||||
* YAML output for `dig`, `mdig`, and `delv`.
|
|
||||||
|
|
||||||
### <a name="build"/> Building BIND
|
### <a name="build"/> Building BIND
|
||||||
|
|
||||||
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
||||||
basic POSIX support, and a 64-bit integer type. BIND also requires the
|
basic POSIX support, and a 64-bit integer type. Successful builds have been
|
||||||
`libuv` asynchronous I/O library, and a cryptography provider library
|
observed on many versions of Linux and UNIX, including RedHat, Fedora,
|
||||||
such as OpenSSL or a hardware service module supporting PKCS#11. On
|
Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X,
|
||||||
Linux, BIND requires the `libcap` library to set process privileges,
|
Solaris, HP-UX, and OpenWRT.
|
||||||
though this requirement can be overridden by disabling capability
|
|
||||||
support at compile time. See [Compile-time options](#opts) below
|
|
||||||
for details on other libraries that may be required to support
|
|
||||||
optional features.
|
|
||||||
|
|
||||||
Successful builds have been observed on many versions of Linux and
|
BIND requires a cryptography provider library such as OpenSSL or a
|
||||||
UNIX, including RHEL/CentOS, Fedora, Debian, Ubuntu, SLES, openSUSE,
|
hardware service module supporting PKCS#11. On Linux, BIND requires
|
||||||
Slackware, Alpine, FreeBSD, NetBSD, OpenBSD, macOS, Solaris,
|
the `libcap` library to set process privileges, though this requirement
|
||||||
OpenIndiana, OmniOS CE, HP-UX, and OpenWRT.
|
can be overridden by disabling capability support at compile time.
|
||||||
|
See [Compile-time options](#opts) below for details on other libraries
|
||||||
|
that may be required to support optional features.
|
||||||
|
|
||||||
BIND is also available for Windows Server 2012 R2 and higher. See
|
BIND is also available for Windows 2008 and higher. See
|
||||||
`win32utils/build.txt` for details on building for Windows
|
`win32utils/readme1st.txt` for details on building for Windows
|
||||||
systems.
|
systems.
|
||||||
|
|
||||||
To build on a UNIX or Linux system, use:
|
To build on a UNIX or Linux system, use:
|
||||||
@@ -176,26 +160,26 @@ affect compilation:
|
|||||||
|`STD_CDEFINES`|Any additional preprocessor symbols you want defined. Defaults to empty string. For a list of possible settings, see the file [OPTIONS](OPTIONS.md).|
|
|`STD_CDEFINES`|Any additional preprocessor symbols you want defined. Defaults to empty string. For a list of possible settings, see the file [OPTIONS](OPTIONS.md).|
|
||||||
|`LDFLAGS`|Linker flags. Defaults to empty string.|
|
|`LDFLAGS`|Linker flags. Defaults to empty string.|
|
||||||
|`BUILD_CC`|Needed when cross-compiling: the native C compiler to use when building for the target system.|
|
|`BUILD_CC`|Needed when cross-compiling: the native C compiler to use when building for the target system.|
|
||||||
|`BUILD_CFLAGS`|`CFLAGS` for the target system during cross-compiling.|
|
|`BUILD_CFLAGS`|Optional, used for cross-compiling|
|
||||||
|`BUILD_CPPFLAGS`|`CPPFLAGS` for the target system during cross-compiling.|
|
|`BUILD_CPPFLAGS`||
|
||||||
|`BUILD_LDFLAGS`|`LDFLAGS` for the target system during cross-compiling.|
|
|`BUILD_LDFLAGS`||
|
||||||
|`BUILD_LIBS`|`LIBS` for the target system during cross-compiling.|
|
|`BUILD_LIBS`||
|
||||||
|
|
||||||
#### <a name="macos"> macOS
|
#### <a name="macos"> macOS
|
||||||
|
|
||||||
Building on macOS assumes that the "Command Tools for Xcode" is installed.
|
Building on macOS assumes that the "Command Tools for Xcode" is installed.
|
||||||
This can be downloaded from [https://developer.apple.com/download/more/](https://developer.apple.com/download/more/)
|
This can be downloaded from https://developer.apple.com/download/more/
|
||||||
or if you have Xcode already installed you can run `xcode-select --install`.
|
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
|
||||||
|
tools so that they can be easily found.
|
||||||
|
|
||||||
### <a name="dependencies"/> Dependencies
|
### <a name="dependencies"/> Dependencies
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including
|
Portions of BIND that are written in Python, including
|
||||||
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
||||||
system tests, require the `argparse`, `ply` and `distutils.core` modules
|
system tests, require the 'argparse' and 'ply' modules to be available.
|
||||||
to be available.
|
'argparse' is a standard module as of Python 2.7 and Python 3.2.
|
||||||
`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).
|
||||||
`ply` is available from [https://pypi.python.org/pypi/ply](https://pypi.python.org/pypi/ply).
|
|
||||||
`distutils.core` is required for installation.
|
|
||||||
|
|
||||||
#### <a name="opts"/> Compile-time options
|
#### <a name="opts"/> Compile-time options
|
||||||
|
|
||||||
@@ -213,31 +197,30 @@ path to the PKCS#11 provider library using `--with-pkcs11=<PREFIX>`, and
|
|||||||
configure BIND with `--enable-native-pkcs11`.
|
configure BIND with `--enable-native-pkcs11`.
|
||||||
|
|
||||||
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 libraries: `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/json-c](https://github.com/json-c/json-c).
|
[https://github.com/json-c](https://github.com/json-c). If these are
|
||||||
If these are installed at a nonstandard location, then:
|
installed at a nonstandard location, then:
|
||||||
|
|
||||||
* for `libxml2`, specify the prefix using `--with-libxml2=/prefix`,
|
* for libxml2, specify the prefix using `--with-libxml2=/prefix`,
|
||||||
* for `json-c`, adjust `PKG_CONFIG_PATH`.
|
* 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,
|
||||||
specify the prefix using `--with-zlib=/prefix`.
|
specify the prefix using `--with-zlib=/prefix`.
|
||||||
|
|
||||||
To support storing configuration data for runtime-added zones in an LMDB
|
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)
|
||||||
and `libprotobuf-c`
|
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`.
|
||||||
|
|
||||||
@@ -250,7 +233,7 @@ 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` package. 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`.
|
||||||
|
|
||||||
On some platforms it is necessary to explicitly request large file support
|
On some platforms it is necessary to explicitly request large file support
|
||||||
@@ -272,8 +255,11 @@ default, installation is into /usr/local, but this can be changed with the
|
|||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -283,21 +269,20 @@ multiple servers to run locally and communicate with one another). These
|
|||||||
IP addresses can be configured by running the command
|
IP addresses can be configured by running the command
|
||||||
`bin/tests/system/ifconfig.sh up` as root.
|
`bin/tests/system/ifconfig.sh up` as root.
|
||||||
|
|
||||||
Some tests require Perl and the `Net::DNS` and/or `IO::Socket::INET6` modules,
|
Some tests require Perl and the Net::DNS and/or IO::Socket::INET6 modules,
|
||||||
and will be skipped if these are not available. Some tests require Python
|
and will be skipped if these are not available. Some tests require Python
|
||||||
and the `dnspython` module and will be skipped if these are not available.
|
and the 'dnspython' module and will be skipped if these are not available.
|
||||||
See bin/tests/system/README for further details.
|
See bin/tests/system/README for further details.
|
||||||
|
|
||||||
Unit tests are implemented using the [CMocka unit testing framework](https://cmocka.org/).
|
Unit tests are implemented using the CMocka unit testing framework.
|
||||||
To build them, use `configure --with-cmocka`. Execution of tests is done
|
To build them, use `configure --with-cmocka`. Execution of tests is done
|
||||||
by the [Kyua test execution engine](https://github.com/jmmv/kyua); if the
|
by the Kyua test execution engine; if the `kyua` command is available,
|
||||||
`kyua` command is available, then unit tests can be run via `make test`
|
then unit tests can be run via `make test` or `make unit`.
|
||||||
or `make unit`.
|
|
||||||
|
|
||||||
### <a name="doc"/> Documentation
|
### <a name="doc"/> Documentation
|
||||||
|
|
||||||
The *BIND 9 Administrator Reference Manual* is included with the source
|
The *BIND 9 Administrator Reference Manual* is included with the source
|
||||||
distribution, in DocBook XML, HTML, and PDF format, in the `doc/arm`
|
distribution, in DocBook XML, HTML and PDF format, in the `doc/arm`
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
Some of the programs in the BIND 9 distribution have man pages in their
|
Some of the programs in the BIND 9 distribution have man pages in their
|
||||||
@@ -347,17 +332,17 @@ 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
|
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,
|
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
|
`[GL !NNN]`, which, respectively, refer to issues or merge requests in the
|
||||||
GitLab database. Most of these are publicly readable, unless they include
|
Gitlab database. Most of these are publically readable, unless they include
|
||||||
information which is confidential or security sensitive.
|
information which is confidential or security senstive.
|
||||||
|
|
||||||
To look up a GitLab issue by its number, use the URL
|
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).
|
[https://gitlab.isc.org/isc-projects/bind9/issues/NNN](https://gitlab.isc.org/isc-projects/bind9/issues).
|
||||||
To look up a merge request, use
|
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).
|
[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
|
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
|
letter "P". This indicates that the information is in the private ISC
|
||||||
GitLab instance, which is not visible to the public.
|
Gitlab instance, which is not visible to the public.
|
||||||
|
|
||||||
### <a name="ack"/> Acknowledgments
|
### <a name="ack"/> Acknowledgments
|
||||||
|
|
||||||
|
|||||||
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@ @JSON_C_CFLAGS@
|
||||||
${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@
|
||||||
|
|
||||||
@@ -35,8 +34,8 @@ ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
|||||||
BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
||||||
NSDEPENDLIBS = ../../lib/ns/libns.@A@
|
NSDEPENDLIBS = ../../lib/ns/libns.@A@
|
||||||
|
|
||||||
LIBS = ${ISCLIBS} @LIBS@
|
LIBS = ${ISCLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
NOSYMLIBS = ${ISCNOSYMLIBS} @LIBS@
|
NOSYMLIBS = ${ISCNOSYMLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,9 @@ add(char *key, int value) {
|
|||||||
isc_symvalue_t symvalue;
|
isc_symvalue_t symvalue;
|
||||||
|
|
||||||
if (sym_mctx == NULL) {
|
if (sym_mctx == NULL) {
|
||||||
isc_mem_create(&sym_mctx);
|
result = isc_mem_create(0, 0, &sym_mctx);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (symtab == NULL) {
|
if (symtab == NULL) {
|
||||||
@@ -138,6 +140,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,
|
||||||
@@ -662,7 +666,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)
|
||||||
@@ -716,7 +720,7 @@ dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
|||||||
FILE *output = stdout;
|
FILE *output = stdout;
|
||||||
const char *flags;
|
const char *flags;
|
||||||
|
|
||||||
flags = (fileformat == dns_masterformat_text) ? "w" : "wb";
|
flags = (fileformat == dns_masterformat_text) ? "w+" : "wb+";
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
if (filename != NULL && strcmp(filename, "-") != 0)
|
if (filename != NULL && strcmp(filename, "-") != 0)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -28,7 +28,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 +61,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 [-chjlvz] [-p [-x]] [-t directory] "
|
||||||
"[named.conf]\n", program);
|
"[named.conf]\n", program);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -421,7 +420,7 @@ configure_zone(const char *vclass, const char *view,
|
|||||||
|
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
if (get_maps(maps, "max-zone-ttl", &obj)) {
|
if (get_maps(maps, "max-zone-ttl", &obj)) {
|
||||||
maxttl = cfg_obj_asduration(obj);
|
maxttl = cfg_obj_asuint32(obj);
|
||||||
zone_options |= DNS_ZONEOPT_CHECKTTL;
|
zone_options |= DNS_ZONEOPT_CHECKTTL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +555,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 +562,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':
|
||||||
@@ -585,7 +583,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
isc_commandline_reset = true;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != EOF) {
|
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != EOF) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
@@ -597,10 +595,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 +675,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) {
|
||||||
@@ -709,6 +698,8 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
cfg_parser_destroy(&parser);
|
cfg_parser_destroy(&parser);
|
||||||
|
|
||||||
|
dns_name_destroy();
|
||||||
|
|
||||||
isc_log_destroy(&logc);
|
isc_log_destroy(&logc);
|
||||||
|
|
||||||
isc_mem_destroy(&mctx);
|
isc_mem_destroy(&mctx);
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -127,15 +126,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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004, 2005, 2007, 2009, 2014-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004-2007, 2009-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -85,9 +85,9 @@ usage(void) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
destroy(void) {
|
destroy(void) {
|
||||||
if (zone != NULL) {
|
if (zone != NULL)
|
||||||
dns_zone_detach(&zone);
|
dns_zone_detach(&zone);
|
||||||
}
|
dns_name_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*% main processing routine */
|
/*% main processing routine */
|
||||||
@@ -517,7 +517,7 @@ main(int argc, char **argv) {
|
|||||||
InitSockets();
|
InitSockets();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
RUNTIME_CHECK(setup_logging(mctx, errout, &lctx)
|
RUNTIME_CHECK(setup_logging(mctx, errout, &lctx)
|
||||||
== ISC_R_SUCCESS);
|
== ISC_R_SUCCESS);
|
||||||
|
|||||||
@@ -44,7 +44,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004-2007, 2009-2016, 2018, 2019 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,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{03A96113-CB14-43AA-AEB2-48950E3915C5}</ProjectGuid>
|
<ProjectGuid>{03A96113-CB14-43AA-AEB2-48950E3915C5}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>checkconf</RootNamespace>
|
<RootNamespace>checkconf</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -17,21 +17,18 @@
|
|||||||
<ProjectGuid>{2C1F7096-C5B5-48D4-846F-A7ACA454335D}</ProjectGuid>
|
<ProjectGuid>{2C1F7096-C5B5-48D4-846F-A7ACA454335D}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>checktool</RootNamespace>
|
<RootNamespace>checktool</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{66028555-7DD5-4016-B601-9EF9A1EE8BFA}</ProjectGuid>
|
<ProjectGuid>{66028555-7DD5-4016-B601-9EF9A1EE8BFA}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>checkzone</RootNamespace>
|
<RootNamespace>checkzone</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@@ -66,15 +63,15 @@
|
|||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\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>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>cd ..\..\..\Build\$(Configuration)
|
<Command>cd ..\..\..\Build\$(Configuration)
|
||||||
@@ -100,7 +97,7 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
|
|||||||
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
<ObjectFileName>.\$(Configuration)\</ObjectFileName>
|
||||||
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
<ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||||
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>..\..\..\config.h</ForcedIncludeFiles>
|
||||||
<AdditionalIncludeDirectories>.\;..\..\..\;@LIBXML2_INC@@OPENSSL_INC@..\..\..\lib\isc\win32;..\..\..\lib\isc\win32\include;..\..\..\lib\isc\include;..\..\..\lib\dns\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>
|
||||||
<Link>
|
<Link>
|
||||||
@@ -109,8 +106,8 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
|
|||||||
@@ -20,16 +20,16 @@ VERSION=@BIND9_VERSION@
|
|||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include ${ISC_INCLUDES} ${ISCCC_INCLUDES} \
|
CINCLUDES = -I${srcdir}/include ${ISC_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
${ISCCFG_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES}
|
${ISCCFG_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} @JSON_C_CFLAGS@
|
||||||
|
|
||||||
CDEFINES =
|
CDEFINES =
|
||||||
CWARNINGS =
|
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@
|
||||||
@@ -41,9 +41,9 @@ BIND9DEPLIBS = ../../lib/bind9/libbind9.@A@
|
|||||||
RNDCLIBS = ${ISCCFGLIBS} ${ISCCCLIBS} ${BIND9LIBS} ${DNSLIBS} ${ISCLIBS} @LIBS@
|
RNDCLIBS = ${ISCCFGLIBS} ${ISCCCLIBS} ${BIND9LIBS} ${DNSLIBS} ${ISCLIBS} @LIBS@
|
||||||
RNDCDEPLIBS = ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${BIND9DEPLIBS} ${DNSDEPLIBS} ${ISCDEPLIBS}
|
RNDCDEPLIBS = ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${BIND9DEPLIBS} ${DNSDEPLIBS} ${ISCDEPLIBS}
|
||||||
|
|
||||||
LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
|
LIBS = ${DNSLIBS} ${ISCLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
NOSYMLIBS = ${DNSLIBS} ${ISCNOSYMLIBS} @LIBS@
|
NOSYMLIBS = ${DNSLIBS} ${ISCNOSYMLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
CONFDEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
|
CONFDEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2009, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009, 2014-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ main(int argc, char **argv) {
|
|||||||
/* Use canonical algorithm name */
|
/* Use canonical algorithm name */
|
||||||
algname = alg_totext(alg);
|
algname = alg_totext(alg);
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
DO("create memory context", isc_mem_create(0, 0, &mctx));
|
||||||
|
|
||||||
if (keyname == NULL) {
|
if (keyname == NULL) {
|
||||||
const char *suffix = NULL;
|
const char *suffix = NULL;
|
||||||
@@ -222,6 +222,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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2009, 2014-2016, 2018, 2019 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) 2001, 2003-2005, 2007, 2009, 2013-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2001, 2003-2005, 2007, 2009, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ main(int argc, char **argv) {
|
|||||||
keysize = alg_bits(alg);
|
keysize = alg_bits(alg);
|
||||||
algname = alg_totext(alg);
|
algname = alg_totext(alg);
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
DO("create memory context", isc_mem_create(0, 0, &mctx));
|
||||||
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
|
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
|
||||||
|
|
||||||
generate_key(mctx, alg, keysize, &key_txtbuffer);
|
generate_key(mctx, alg, keysize, &key_txtbuffer);
|
||||||
@@ -222,6 +222,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);
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2001, 2003-2005, 2007, 2009, 2013-2019 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,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{64964B03-4815-41F0-9057-E766A94AF197}</ProjectGuid>
|
<ProjectGuid>{64964B03-4815-41F0-9057-E766A94AF197}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>confgentool</RootNamespace>
|
<RootNamespace>confgentool</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{1EA4FC64-F33B-4A50-970A-EA052BBE9CF1}</ProjectGuid>
|
<ProjectGuid>{1EA4FC64-F33B-4A50-970A-EA052BBE9CF1}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>ddnsconfgen</RootNamespace>
|
<RootNamespace>ddnsconfgen</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{1E2C1635-3093-4D59-80E7-4743AC10F22F}</ProjectGuid>
|
<ProjectGuid>{1E2C1635-3093-4D59-80E7-4743AC10F22F}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>rndcconfgen</RootNamespace>
|
<RootNamespace>rndcconfgen</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -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@ @JSON_C_CFLAGS@
|
||||||
${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@
|
||||||
@@ -36,8 +35,8 @@ IRSDEPLIBS = ../../lib/irs/libirs.@A@
|
|||||||
|
|
||||||
DEPLIBS = ${DNSDEPLIBS} ${IRSDEPLIBS} ${ISCCFGDEPLIBS} ${ISCDEPLIBS}
|
DEPLIBS = ${DNSDEPLIBS} ${IRSDEPLIBS} ${ISCCFGDEPLIBS} ${ISCDEPLIBS}
|
||||||
|
|
||||||
LIBS = ${DNSLIBS} ${IRSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @LIBS@
|
LIBS = ${DNSLIBS} ${IRSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
NOSYMLIBS = ${DNSLIBS} ${IRSLIBS} ${ISCCFGLIBS} ${ISCNOSYMLIBS} @LIBS@
|
NOSYMLIBS = ${DNSLIBS} ${IRSLIBS} ${ISCCFGLIBS} ${ISCNOSYMLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
|
|||||||
+24
-20
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2014-2019 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
|
||||||
\fBtrust\-anchors\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\&.
|
||||||
@@ -409,11 +418,6 @@ Controls whether to use TCP when sending queries\&. The default is to use UDP un
|
|||||||
.RS 4
|
.RS 4
|
||||||
Print all RDATA in unknown RR type presentation format (RFC 3597)\&. The default is to print RDATA for known types in the type\*(Aqs presentation format\&.
|
Print all RDATA in unknown RR type presentation format (RFC 3597)\&. The default is to print RDATA for known types in the type\*(Aqs presentation format\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
|
||||||
\fB+[no]yaml\fR
|
|
||||||
.RS 4
|
|
||||||
Print response data in YAML format\&.
|
|
||||||
.RE
|
|
||||||
.SH "FILES"
|
.SH "FILES"
|
||||||
.PP
|
.PP
|
||||||
/etc/bind\&.keys
|
/etc/bind\&.keys
|
||||||
@@ -433,5 +437,5 @@ RFC5155\&.
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+181
-279
@@ -33,10 +33,8 @@
|
|||||||
#include <isc/app.h>
|
#include <isc/app.h>
|
||||||
#include <isc/base64.h>
|
#include <isc/base64.h>
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/hex.h>
|
|
||||||
#include <isc/lib.h>
|
#include <isc/lib.h>
|
||||||
#include <isc/log.h>
|
#include <isc/log.h>
|
||||||
#include <isc/md.h>
|
|
||||||
#include <isc/mem.h>
|
#include <isc/mem.h>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <isc/ntpaths.h>
|
#include <isc/ntpaths.h>
|
||||||
@@ -113,8 +111,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,
|
||||||
@@ -128,19 +125,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 char *dlv_anchor = NULL;
|
||||||
static int num_keys = 0;
|
static int num_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[] = TRUST_ANCHORS;
|
static char anchortext[] = DNSSEC_KEYS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Static function prototypes
|
* Static function prototypes
|
||||||
@@ -160,44 +159,42 @@ usage(void) {
|
|||||||
" q-class is one of (in,hs,ch,...) [default: in]\n"
|
" q-class is one of (in,hs,ch,...) [default: in]\n"
|
||||||
" q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]\n"
|
" q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]\n"
|
||||||
" q-opt is one of:\n"
|
" q-opt is one of:\n"
|
||||||
" -4 (use IPv4 query transport only)\n"
|
" -x dot-notation (shortcut for reverse lookups)\n"
|
||||||
" -6 (use IPv6 query transport only)\n"
|
|
||||||
" -a anchor-file (specify root trust anchor)\n"
|
|
||||||
" -b address[#port] (bind to source address/port)\n"
|
|
||||||
" -c class (option included for compatibility;\n"
|
|
||||||
" -d level (set debugging level)\n"
|
" -d level (set debugging level)\n"
|
||||||
" -h (print help and exit)\n"
|
" -a anchor-file (specify root and dlv trust anchors)\n"
|
||||||
" -i (disable DNSSEC validation)\n"
|
" -b address[#port] (bind to source address/port)\n"
|
||||||
" -m (enable memory usage debugging)\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"
|
||||||
" -t type (specify query type)\n"
|
" -t type (specify query type)\n"
|
||||||
|
" -c class (option included for compatibility;\n"
|
||||||
" only IN is supported)\n"
|
" only IN is supported)\n"
|
||||||
" -v (print version and exit)\n"
|
" -4 (use IPv4 query transport only)\n"
|
||||||
" -x dot-notation (shortcut for reverse lookups)\n"
|
" -6 (use IPv6 query transport only)\n"
|
||||||
|
" -i (disable DNSSEC validation)\n"
|
||||||
|
" -m (enable memory usage debugging)\n"
|
||||||
" d-opt is of the form +keyword[=value], where keyword is:\n"
|
" d-opt is of the form +keyword[=value], where keyword is:\n"
|
||||||
" +[no]all (Set or clear all display flags)\n"
|
" +[no]all (Set or clear all display flags)\n"
|
||||||
" +[no]class (Control display of class)\n"
|
" +[no]class (Control display of class)\n"
|
||||||
" +[no]comments (Control display of comment lines)\n"
|
|
||||||
" +[no]crypto (Control display of cryptographic\n"
|
" +[no]crypto (Control display of cryptographic\n"
|
||||||
" fields in records)\n"
|
" fields in records)\n"
|
||||||
" +[no]dlv (Obsolete)\n"
|
|
||||||
" +[no]dnssec (Display DNSSEC records)\n"
|
|
||||||
" +[no]mtrace (Trace messages received)\n"
|
|
||||||
" +[no]multiline (Print records in an expanded format)\n"
|
" +[no]multiline (Print records in an expanded format)\n"
|
||||||
" +[no]root (DNSSEC validation trust anchor)\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]rtrace (Trace resolver fetches)\n"
|
" +[no]unknownformat (Print RDATA in RFC 3597 \"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"
|
||||||
" +[no]ttl (Control display of ttls in records)\n"
|
" +[no]ttl (Control display of ttls in records)\n"
|
||||||
" +[no]trust (Control display of trust level)\n"
|
" +[no]trust (Control display of trust level)\n"
|
||||||
" +[no]unknownformat (Print RDATA in RFC 3597 "
|
" +[no]rtrace (Trace resolver fetches)\n"
|
||||||
"\"unknown\" format)\n"
|
" +[no]mtrace (Trace messages received)\n"
|
||||||
" +[no]vtrace (Trace validation process)\n"
|
" +[no]vtrace (Trace validation process)\n"
|
||||||
" +[no]yaml (Present the results as YAML)\n",
|
" +[no]dlv (DNSSEC lookaside validation anchor)\n"
|
||||||
|
" +[no]root (DNSSEC validation trust anchor)\n"
|
||||||
|
" +[no]dnssec (Display DNSSEC records)\n"
|
||||||
|
" -h (print help and exit)\n"
|
||||||
|
" -v (print version and exit)\n",
|
||||||
stderr);
|
stderr);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -357,80 +354,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
|
||||||
@@ -457,9 +427,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;
|
||||||
@@ -467,6 +436,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) {
|
||||||
@@ -498,17 +469,12 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dns_indent_t indent = { " ", 2 };
|
if ((rdataset->attributes &
|
||||||
if (!yaml && (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,
|
style, &target);
|
||||||
yaml ? &indent :
|
|
||||||
NULL,
|
|
||||||
&target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == ISC_R_NOSPACE) {
|
if (result == ISC_R_NOSPACE) {
|
||||||
@@ -535,53 +501,41 @@ setup_style(dns_master_style_t **stylep) {
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_master_style_t *style = NULL;
|
dns_master_style_t *style = NULL;
|
||||||
|
|
||||||
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;
|
||||||
} else {
|
if (print_unknown_format)
|
||||||
if (showcomments) {
|
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
||||||
styleflags |= DNS_STYLEFLAG_COMMENT;
|
if (rrcomments)
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
||||||
if (print_unknown_format) {
|
if (nottl)
|
||||||
styleflags |= DNS_STYLEFLAG_UNKNOWNFORMAT;
|
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
||||||
}
|
if (noclass)
|
||||||
if (rrcomments) {
|
styleflags |= DNS_STYLEFLAG_NO_CLASS;
|
||||||
styleflags |= DNS_STYLEFLAG_RRCOMMENT;
|
if (nocrypto)
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_NOCRYPTO;
|
||||||
if (nottl) {
|
if (multiline) {
|
||||||
styleflags |= DNS_STYLEFLAG_NO_TTL;
|
styleflags |= DNS_STYLEFLAG_MULTILINE;
|
||||||
}
|
styleflags |= DNS_STYLEFLAG_COMMENT;
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,160 +566,82 @@ convert_name(dns_fixedname_t *fn, dns_name_t **name, const char *text) {
|
|||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
||||||
dns_rdata_dnskey_t dnskey;
|
dns_rdata_dnskey_t keystruct;
|
||||||
dns_rdata_ds_t ds;
|
uint32_t flags, proto, alg;
|
||||||
uint32_t rdata1, rdata2, rdata3;
|
const char *keystr, *keynamestr;
|
||||||
const char *datastr = NULL, *keynamestr = NULL, *atstr = NULL;
|
unsigned char keydata[4096];
|
||||||
unsigned char data[4096];
|
isc_buffer_t keydatabuf;
|
||||||
isc_buffer_t databuf;
|
|
||||||
unsigned char rrdata[4096];
|
unsigned char rrdata[4096];
|
||||||
isc_buffer_t rrdatabuf;
|
isc_buffer_t rrdatabuf;
|
||||||
isc_region_t r;
|
isc_region_t r;
|
||||||
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;
|
||||||
enum {
|
|
||||||
INITIAL_KEY,
|
|
||||||
STATIC_KEY,
|
|
||||||
INITIAL_DS,
|
|
||||||
STATIC_DS,
|
|
||||||
TRUSTED
|
|
||||||
} anchortype;
|
|
||||||
|
|
||||||
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) {
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
|
||||||
|
|
||||||
delv_log(ISC_LOG_DEBUG(3), "adding trust anchor %s", trust_anchor);
|
if (match_root)
|
||||||
|
delv_log(ISC_LOG_DEBUG(3), "adding trust anchor %s",
|
||||||
|
trust_anchor);
|
||||||
|
if (match_dlv)
|
||||||
|
delv_log(ISC_LOG_DEBUG(3), "adding DLV trust anchor %s",
|
||||||
|
dlv_anchor);
|
||||||
|
|
||||||
/* if DNSKEY, flags; if DS, key tag */
|
flags = cfg_obj_asuint32(cfg_tuple_get(key, "flags"));
|
||||||
rdata1 = cfg_obj_asuint32(cfg_tuple_get(key, "rdata1"));
|
proto = cfg_obj_asuint32(cfg_tuple_get(key, "protocol"));
|
||||||
|
alg = cfg_obj_asuint32(cfg_tuple_get(key, "algorithm"));
|
||||||
|
|
||||||
/* if DNSKEY, protocol; if DS, algorithm */
|
keystruct.common.rdclass = dns_rdataclass_in;
|
||||||
rdata2 = cfg_obj_asuint32(cfg_tuple_get(key, "rdata2"));
|
keystruct.common.rdtype = dns_rdatatype_dnskey;
|
||||||
|
/*
|
||||||
|
* The key data in keystruct is not dynamically allocated.
|
||||||
|
*/
|
||||||
|
keystruct.mctx = NULL;
|
||||||
|
|
||||||
/* if DNSKEY, algorithm; if DS, digest type */
|
ISC_LINK_INIT(&keystruct.common, link);
|
||||||
rdata3 = cfg_obj_asuint32(cfg_tuple_get(key, "rdata3"));
|
|
||||||
|
|
||||||
/* What type of trust anchor is this? */
|
if (flags > 0xffff)
|
||||||
atstr = cfg_obj_asstring(cfg_tuple_get(key, "anchortype"));
|
CHECK(ISC_R_RANGE);
|
||||||
if (strcasecmp(atstr, "static-key") == 0) {
|
if (proto > 0xff)
|
||||||
anchortype = STATIC_KEY;
|
CHECK(ISC_R_RANGE);
|
||||||
} else if (strcasecmp(atstr, "static-ds") == 0) {
|
if (alg > 0xff)
|
||||||
anchortype = STATIC_DS;
|
CHECK(ISC_R_RANGE);
|
||||||
} else if (strcasecmp(atstr, "initial-key") == 0) {
|
|
||||||
anchortype = INITIAL_KEY;
|
|
||||||
} else if (strcasecmp(atstr, "initial-ds") == 0) {
|
|
||||||
anchortype = INITIAL_DS;
|
|
||||||
} else {
|
|
||||||
delv_log(ISC_LOG_ERROR,
|
|
||||||
"key '%s': invalid initialization method '%s'",
|
|
||||||
keynamestr, atstr);
|
|
||||||
result = ISC_R_FAILURE;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_buffer_init(&databuf, data, sizeof(data));
|
keystruct.flags = (uint16_t)flags;
|
||||||
|
keystruct.protocol = (uint8_t)proto;
|
||||||
|
keystruct.algorithm = (uint8_t)alg;
|
||||||
|
|
||||||
|
isc_buffer_init(&keydatabuf, keydata, sizeof(keydata));
|
||||||
isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata));
|
isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata));
|
||||||
|
|
||||||
if (rdata1 > 0xffff) {
|
keystr = cfg_obj_asstring(cfg_tuple_get(key, "key"));
|
||||||
CHECK(ISC_R_RANGE);
|
CHECK(isc_base64_decodestring(keystr, &keydatabuf));
|
||||||
}
|
isc_buffer_usedregion(&keydatabuf, &r);
|
||||||
if (rdata2 > 0xff) {
|
keystruct.datalen = r.length;
|
||||||
CHECK(ISC_R_RANGE);
|
keystruct.data = r.base;
|
||||||
}
|
|
||||||
if (rdata3 > 0xff) {
|
|
||||||
CHECK(ISC_R_RANGE);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (anchortype) {
|
CHECK(dns_rdata_fromstruct(NULL,
|
||||||
case STATIC_KEY:
|
keystruct.common.rdclass,
|
||||||
case INITIAL_KEY:
|
keystruct.common.rdtype,
|
||||||
case TRUSTED:
|
&keystruct, &rrdatabuf));
|
||||||
dnskey.common.rdclass = dns_rdataclass_in;
|
|
||||||
dnskey.common.rdtype = dns_rdatatype_dnskey;
|
|
||||||
dnskey.mctx = NULL;
|
|
||||||
|
|
||||||
ISC_LINK_INIT(&dnskey.common, link);
|
|
||||||
|
|
||||||
dnskey.flags = (uint16_t)rdata1;
|
|
||||||
dnskey.protocol = (uint8_t)rdata2;
|
|
||||||
dnskey.algorithm = (uint8_t)rdata3;
|
|
||||||
|
|
||||||
datastr = cfg_obj_asstring(cfg_tuple_get(key, "data"));
|
|
||||||
CHECK(isc_base64_decodestring(datastr, &databuf));
|
|
||||||
isc_buffer_usedregion(&databuf, &r);
|
|
||||||
dnskey.datalen = r.length;
|
|
||||||
dnskey.data = r.base;
|
|
||||||
|
|
||||||
CHECK(dns_rdata_fromstruct(NULL, dnskey.common.rdclass,
|
|
||||||
dnskey.common.rdtype,
|
|
||||||
&dnskey, &rrdatabuf));
|
|
||||||
CHECK(dns_client_addtrustedkey(client, dns_rdataclass_in,
|
|
||||||
dns_rdatatype_dnskey,
|
|
||||||
keyname, &rrdatabuf));
|
|
||||||
break;
|
|
||||||
case INITIAL_DS:
|
|
||||||
case STATIC_DS:
|
|
||||||
ds.common.rdclass = dns_rdataclass_in;
|
|
||||||
ds.common.rdtype = dns_rdatatype_ds;
|
|
||||||
ds.mctx = NULL;
|
|
||||||
|
|
||||||
ISC_LINK_INIT(&ds.common, link);
|
|
||||||
|
|
||||||
ds.key_tag = (uint16_t)rdata1;
|
|
||||||
ds.algorithm = (uint8_t)rdata2;
|
|
||||||
ds.digest_type = (uint8_t)rdata3;
|
|
||||||
|
|
||||||
datastr = cfg_obj_asstring(cfg_tuple_get(key, "data"));
|
|
||||||
CHECK(isc_hex_decodestring(datastr, &databuf));
|
|
||||||
isc_buffer_usedregion(&databuf, &r);
|
|
||||||
|
|
||||||
switch (ds.digest_type) {
|
|
||||||
case DNS_DSDIGEST_SHA1:
|
|
||||||
if (r.length != ISC_SHA1_DIGESTLENGTH) {
|
|
||||||
CHECK(ISC_R_UNEXPECTEDEND);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DNS_DSDIGEST_SHA256:
|
|
||||||
if (r.length != ISC_SHA256_DIGESTLENGTH) {
|
|
||||||
CHECK(ISC_R_UNEXPECTEDEND);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DNS_DSDIGEST_SHA384:
|
|
||||||
if (r.length != ISC_SHA384_DIGESTLENGTH) {
|
|
||||||
CHECK(ISC_R_UNEXPECTEDEND);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ds.length = r.length;
|
|
||||||
ds.digest = r.base;
|
|
||||||
|
|
||||||
CHECK(dns_rdata_fromstruct(NULL, ds.common.rdclass,
|
|
||||||
ds.common.rdtype,
|
|
||||||
&ds, &rrdatabuf));
|
|
||||||
CHECK(dns_client_addtrustedkey(client, dns_rdataclass_in,
|
|
||||||
dns_rdatatype_ds,
|
|
||||||
keyname, &rrdatabuf));
|
|
||||||
};
|
|
||||||
|
|
||||||
|
CHECK(dns_client_addtrustedkey(client, dns_rdataclass_in,
|
||||||
|
keyname, &rrdatabuf));
|
||||||
num_keys++;
|
num_keys++;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@@ -819,11 +695,11 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
cfg_parser_t *parser = NULL;
|
cfg_parser_t *parser = NULL;
|
||||||
const cfg_obj_t *trusted_keys = NULL;
|
const cfg_obj_t *trusted_keys = NULL;
|
||||||
const cfg_obj_t *managed_keys = NULL;
|
const cfg_obj_t *managed_keys = NULL;
|
||||||
const cfg_obj_t *trust_anchors = 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -840,11 +716,17 @@ 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));
|
||||||
|
|
||||||
@@ -878,7 +760,7 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
INSIST(bindkeys != NULL);
|
INSIST(bindkeys != NULL);
|
||||||
cfg_map_get(bindkeys, "trusted-keys", &trusted_keys);
|
cfg_map_get(bindkeys, "trusted-keys", &trusted_keys);
|
||||||
cfg_map_get(bindkeys, "managed-keys", &managed_keys);
|
cfg_map_get(bindkeys, "managed-keys", &managed_keys);
|
||||||
cfg_map_get(bindkeys, "trust-anchors", &trust_anchors);
|
cfg_map_get(bindkeys, "dnssec-keys", &dnssec_keys);
|
||||||
|
|
||||||
if (trusted_keys != NULL) {
|
if (trusted_keys != NULL) {
|
||||||
CHECK(load_keys(trusted_keys, client));
|
CHECK(load_keys(trusted_keys, client));
|
||||||
@@ -886,8 +768,8 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
if (managed_keys != NULL) {
|
if (managed_keys != NULL) {
|
||||||
CHECK(load_keys(managed_keys, client));
|
CHECK(load_keys(managed_keys, client));
|
||||||
}
|
}
|
||||||
if (trust_anchors != NULL) {
|
if (dnssec_keys != NULL) {
|
||||||
CHECK(load_keys(trust_anchors, client));
|
CHECK(load_keys(dnssec_keys, client));
|
||||||
}
|
}
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
@@ -895,6 +777,11 @@ setup_dnsseckeys(dns_client_t *client) {
|
|||||||
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) {
|
||||||
cfg_obj_destroy(parser, &bindkeys);
|
cfg_obj_destroy(parser, &bindkeys);
|
||||||
@@ -932,6 +819,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);
|
||||||
@@ -940,6 +829,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);
|
||||||
@@ -967,6 +858,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);
|
||||||
@@ -1039,6 +934,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);
|
||||||
@@ -1047,6 +946,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);
|
||||||
@@ -1142,10 +1045,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 */
|
||||||
@@ -1180,6 +1086,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 */
|
||||||
@@ -1267,13 +1175,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:
|
||||||
/*
|
/*
|
||||||
@@ -1337,6 +1238,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':
|
||||||
@@ -1368,6 +1270,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, '#');
|
||||||
@@ -1431,6 +1335,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;
|
||||||
@@ -1458,6 +1364,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;
|
||||||
@@ -1604,6 +1512,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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1617,6 +1527,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;
|
||||||
@@ -1700,7 +1612,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;
|
||||||
@@ -1724,7 +1635,9 @@ main(int argc, char *argv[]) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("dns_lib_init failed: %d", result);
|
fatal("dns_lib_init failed: %d", result);
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
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, 1, 0, &taskmgr));
|
||||||
@@ -1770,35 +1683,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;
|
||||||
@@ -1815,6 +1715,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)
|
||||||
|
|||||||
+21
-16
@@ -40,7 +40,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -97,7 +96,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
|
||||||
@@ -212,11 +211,14 @@
|
|||||||
<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>trust-anchors</option>
|
<command>delv</command> treats <option>dnssec-keys</option>
|
||||||
<option>initial-key</option> and <option>static-key</option>
|
<option>initial-key</option> and <option>static-key</option>
|
||||||
entries identically. That is, even if a key is configured
|
entries identically. That is, even if a key is configured
|
||||||
with <command>initial-key</command>, indicating that it is
|
with <command>initial-key</command>, indicating that it is
|
||||||
@@ -618,7 +620,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>
|
||||||
@@ -627,7 +630,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
|
||||||
@@ -638,6 +641,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>
|
||||||
@@ -659,16 +674,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
-22
@@ -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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2014-2019 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">trust-anchors</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>
|
||||||
@@ -548,12 +558,6 @@
|
|||||||
in the type's presentation format.
|
in the type's presentation format.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]yaml</code></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Print response data in YAML format.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl></div>
|
</dl></div>
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{BE172EFE-C1DC-4812-BFB9-8C5F8ADB7E9F}</ProjectGuid>
|
<ProjectGuid>{BE172EFE-C1DC-4812-BFB9-8C5F8ADB7E9F}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>delv</RootNamespace>
|
<RootNamespace>delv</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
+6
-7
@@ -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@ @JSON_C_CFLAGS@
|
||||||
${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@
|
||||||
@@ -42,10 +41,10 @@ DEPLIBS = ${DNSDEPLIBS} ${IRSDEPLIBS} ${BIND9DEPLIBS} \
|
|||||||
${ISCDEPLIBS} ${ISCCFGDEPLIBS}
|
${ISCDEPLIBS} ${ISCCFGDEPLIBS}
|
||||||
|
|
||||||
LIBS = ${DNSLIBS} ${IRSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
|
LIBS = ${DNSLIBS} ${IRSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
|
||||||
${ISCLIBS} @LIBIDN2_LIBS@ @LIBS@
|
${ISCLIBS} @LIBIDN2_LIBS@ @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
NOSYMLIBS = ${DNSLIBS} ${IRSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
|
NOSYMLIBS = ${DNSLIBS} ${IRSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
|
||||||
${ISCNOSYMLIBS} @LIBIDN2_LIBS@ @LIBS@
|
${ISCNOSYMLIBS} @LIBIDN2_LIBS@ @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
|
|||||||
+12
-32
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2011, 2013-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2011, 2013-2019 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
|
||||||
@@ -572,12 +566,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 +589,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 +624,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 +654,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
|
||||||
@@ -744,13 +738,6 @@ Display [do not display] the TTL when printing the record\&.
|
|||||||
Display [do not display] the TTL in friendly human\-readable time units of "s", "m", "h", "d", and "w", representing seconds, minutes, hours, days and weeks\&. Implies +ttlid\&.
|
Display [do not display] the TTL in friendly human\-readable time units of "s", "m", "h", "d", and "w", representing seconds, minutes, hours, days and weeks\&. Implies +ttlid\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]unexpected\fR
|
|
||||||
.RS 4
|
|
||||||
Accept [do not accept] answers from unexpected sources\&. By default,
|
|
||||||
\fBdig\fR
|
|
||||||
won\*(Aqt accept a reply from a source other than the one to which it sent the query\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fB+[no]unknownformat\fR
|
\fB+[no]unknownformat\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Print all RDATA in unknown RR type presentation format (RFC 3597)\&. The default is to print RDATA for known types in the type\*(Aqs presentation format\&.
|
Print all RDATA in unknown RR type presentation format (RFC 3597)\&. The default is to print RDATA for known types in the type\*(Aqs presentation format\&.
|
||||||
@@ -763,13 +750,6 @@ Use [do not use] TCP when querying name servers\&. This alternate syntax to
|
|||||||
is provided for backwards compatibility\&. The "vc" stands for "virtual circuit"\&.
|
is provided for backwards compatibility\&. The "vc" stands for "virtual circuit"\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\fB+[no]yaml\fR
|
|
||||||
.RS 4
|
|
||||||
Print the responses (and, if
|
|
||||||
\fB+qr\fR
|
|
||||||
is in use, also the outgoing queries) in a detailed YAML format\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fB+[no]zflag\fR
|
\fB+[no]zflag\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Set [do not set] the last unassigned DNS header flag in a DNS query\&. This flag is off by default\&.
|
Set [do not set] the last unassigned DNS header flag in a DNS query\&. This flag is off by default\&.
|
||||||
@@ -849,5 +829,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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2011, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+73
-307
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
dig_lookup_t *default_lookup = NULL;
|
dig_lookup_t *default_lookup = NULL;
|
||||||
|
|
||||||
static atomic_uintptr_t batchname = ATOMIC_VAR_INIT(0);
|
static char *batchname = NULL;
|
||||||
static FILE *batchfp = NULL;
|
static FILE *batchfp = NULL;
|
||||||
static char *argv0;
|
static char *argv0;
|
||||||
static int addresscount = 0;
|
static int addresscount = 0;
|
||||||
@@ -173,13 +173,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"
|
||||||
@@ -196,13 +194,11 @@ help(void) {
|
|||||||
" +[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"
|
||||||
@@ -221,7 +217,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"
|
||||||
@@ -229,17 +225,12 @@ 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]unexpected (Print replies from unexpected sources\n"
|
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" format)\n"
|
||||||
" default=off)\n"
|
|
||||||
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" "
|
|
||||||
"format)\n"
|
|
||||||
" +[no]vc (TCP mode (+[no]tcp))\n"
|
" +[no]vc (TCP mode (+[no]tcp))\n"
|
||||||
" +[no]yaml (Present the results as YAML)\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"
|
||||||
" local d-opts and servers (after host name) affect only that lookup.\n"
|
" local d-opts and servers (after host name) affect only that lookup.\n"
|
||||||
@@ -265,11 +256,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);
|
||||||
@@ -290,15 +277,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, "
|
||||||
@@ -309,32 +292,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);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,24 +354,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);
|
||||||
}
|
}
|
||||||
@@ -430,7 +407,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");
|
||||||
@@ -472,85 +450,62 @@ 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)
|
||||||
msg->indent.string = " ";
|
styleflags |= DNS_STYLEFLAG_COMMENT;
|
||||||
msg->indent.count = 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->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;
|
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",
|
||||||
@@ -571,110 +526,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)) {
|
||||||
@@ -819,9 +677,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));
|
||||||
@@ -1669,25 +1526,8 @@ plus_option(char *option, bool is_batchfile,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
switch (cmd[1]) {
|
FULLCHECK("unknownformat");
|
||||||
case 'n':
|
lookup->print_unknown_format = state;
|
||||||
switch (cmd[2]) {
|
|
||||||
case 'e':
|
|
||||||
FULLCHECK("unexpected");
|
|
||||||
lookup->accept_reply_unexpected_src = state;
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
FULLCHECK("unknownformat");
|
|
||||||
lookup->print_unknown_format = state;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto invalid_option;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto invalid_option;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
FULLCHECK("vc");
|
FULLCHECK("vc");
|
||||||
@@ -1696,15 +1536,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;
|
||||||
@@ -1874,7 +1705,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
value);
|
value);
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'f':
|
case 'f':
|
||||||
atomic_store(&batchname, (uintptr_t)value);
|
batchname = value;
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'k':
|
case 'k':
|
||||||
strlcpy(keyfile, value, sizeof(keyfile));
|
strlcpy(keyfile, value, sizeof(keyfile));
|
||||||
@@ -2327,15 +2158,13 @@ parse_args(bool is_batchfile, bool config_only,
|
|||||||
* first entry, then trust the callback in dighost_shutdown
|
* first entry, then trust the callback in dighost_shutdown
|
||||||
* to get the rest
|
* to get the rest
|
||||||
*/
|
*/
|
||||||
char *filename = (char *)atomic_load(&batchname);
|
if ((batchname != NULL) && !(is_batchfile)) {
|
||||||
if ((filename != NULL) && !(is_batchfile)) {
|
if (strcmp(batchname, "-") == 0)
|
||||||
if (strcmp(filename, "-") == 0) {
|
|
||||||
batchfp = stdin;
|
batchfp = stdin;
|
||||||
} else {
|
else
|
||||||
batchfp = fopen(filename, "r");
|
batchfp = fopen(batchname, "r");
|
||||||
}
|
|
||||||
if (batchfp == NULL) {
|
if (batchfp == NULL) {
|
||||||
perror(filename);
|
perror(batchname);
|
||||||
if (exitcode < 8)
|
if (exitcode < 8)
|
||||||
exitcode = 8;
|
exitcode = 8;
|
||||||
fatal("couldn't open specified batch file");
|
fatal("couldn't open specified batch file");
|
||||||
@@ -2390,14 +2219,14 @@ query_finished(void) {
|
|||||||
int bargc;
|
int bargc;
|
||||||
char *bargv[16];
|
char *bargv[16];
|
||||||
|
|
||||||
if (atomic_load(&batchname) == 0) {
|
if (batchname == NULL) {
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if (feof(batchfp)) {
|
if (feof(batchfp)) {
|
||||||
atomic_store(&batchname, 0);
|
batchname = NULL;
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
if (batchfp != stdin)
|
if (batchfp != stdin)
|
||||||
fclose(batchfp);
|
fclose(batchfp);
|
||||||
@@ -2411,7 +2240,7 @@ query_finished(void) {
|
|||||||
parse_args(true, false, bargc, (char **)bargv);
|
parse_args(true, false, bargc, (char **)bargv);
|
||||||
start_lookup();
|
start_lookup();
|
||||||
} else {
|
} else {
|
||||||
atomic_store(&batchname, 0);
|
batchname = NULL;
|
||||||
if (batchfp != stdin)
|
if (batchfp != stdin)
|
||||||
fclose(batchfp);
|
fclose(batchfp);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
@@ -2419,67 +2248,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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
dig_warning(const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
if (!yaml) {
|
|
||||||
printf(";; ");
|
|
||||||
|
|
||||||
va_start(args, format);
|
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
dig_comments(dig_lookup_t *lookup, const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
if (lookup->comments && !yaml) {
|
|
||||||
printf(";; ");
|
|
||||||
|
|
||||||
va_start(args, format);
|
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
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);
|
||||||
@@ -2493,9 +2263,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;
|
|
||||||
dighost_warning = dig_warning;
|
|
||||||
dighost_comments = dig_comments;
|
|
||||||
|
|
||||||
progname = argv[0];
|
progname = argv[0];
|
||||||
preparse_args(argc, argv);
|
preparse_args(argc, argv);
|
||||||
@@ -2541,11 +2308,10 @@ void dig_query_start()
|
|||||||
void
|
void
|
||||||
dig_shutdown() {
|
dig_shutdown() {
|
||||||
destroy_lookup(default_lookup);
|
destroy_lookup(default_lookup);
|
||||||
if (atomic_load(&batchname) != 0) {
|
if (batchname != NULL) {
|
||||||
if (batchfp != stdin) {
|
if (batchfp != stdin)
|
||||||
fclose(batchfp);
|
fclose(batchfp);
|
||||||
}
|
batchname = NULL;
|
||||||
atomic_store(&batchname, 0);
|
|
||||||
}
|
}
|
||||||
cancel_all();
|
cancel_all();
|
||||||
destroy_libs();
|
destroy_libs();
|
||||||
|
|||||||
+13
-48
@@ -53,7 +53,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -594,11 +593,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>
|
||||||
@@ -607,18 +604,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>
|
||||||
@@ -978,8 +965,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>
|
||||||
@@ -988,7 +975,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>
|
||||||
@@ -1079,9 +1066,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>
|
||||||
@@ -1126,9 +1111,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>
|
||||||
@@ -1270,17 +1256,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>+[no]unexpected</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Accept [do not accept] answers from unexpected sources. By
|
|
||||||
default, <command>dig</command> won't accept a reply from a
|
|
||||||
source other than the one to which it sent the query.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]unknownformat</option></term>
|
<term><option>+[no]unknownformat</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -1304,16 +1279,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
-46
@@ -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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2011, 2013-2019 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>
|
||||||
@@ -776,14 +764,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 +797,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 +839,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 +872,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>
|
||||||
@@ -1000,14 +985,6 @@
|
|||||||
seconds, minutes, hours, days and weeks. Implies +ttlid.
|
seconds, minutes, hours, days and weeks. Implies +ttlid.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]unexpected</code></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Accept [do not accept] answers from unexpected sources. By
|
|
||||||
default, <span class="command"><strong>dig</strong></span> won't accept a reply from a
|
|
||||||
source other than the one to which it sent the query.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term"><code class="option">+[no]unknownformat</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]unknownformat</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -1025,13 +1002,6 @@
|
|||||||
stands for "virtual circuit".
|
stands for "virtual circuit".
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term"><code class="option">+[no]yaml</code></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Print the responses (and, if <code class="option">+qr</code> is in use,
|
|
||||||
also the outgoing queries) in a detailed YAML format.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term"><code class="option">+[no]zflag</code></span></dt>
|
<dt><span class="term"><code class="option">+[no]zflag</code></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
+148
-206
@@ -112,8 +112,7 @@ bool
|
|||||||
showsearch = false,
|
showsearch = false,
|
||||||
is_dst_up = false,
|
is_dst_up = false,
|
||||||
keep_open = false,
|
keep_open = false,
|
||||||
verbose = false,
|
verbose = false;
|
||||||
yaml = false;
|
|
||||||
in_port_t port = 53;
|
in_port_t port = 53;
|
||||||
unsigned int timeout = 0;
|
unsigned int timeout = 0;
|
||||||
unsigned int extrabytes;
|
unsigned int extrabytes;
|
||||||
@@ -191,48 +190,14 @@ dig_lookup_t *current_lookup = NULL;
|
|||||||
"isc_mutex_unlock");\
|
"isc_mutex_unlock");\
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
default_warnerr(const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
printf(";; ");
|
|
||||||
va_start(args, format);
|
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
printf("\n");
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
default_comments(dig_lookup_t *lookup, const char *format, ...) {
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
if (lookup->comments) {
|
|
||||||
printf(";; ");
|
|
||||||
va_start(args, format);
|
|
||||||
vprintf(format, args);
|
|
||||||
va_end(args);
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/* 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, ...) = default_warnerr;
|
(*dighost_received)(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query);
|
||||||
|
|
||||||
void
|
|
||||||
(*dighost_warning)(const char *format, ...) = default_warnerr;
|
|
||||||
|
|
||||||
void
|
|
||||||
(*dighost_comments)(dig_lookup_t *lookup, const char *format, ...) = default_comments;
|
|
||||||
|
|
||||||
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);
|
||||||
@@ -481,6 +446,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);
|
||||||
@@ -608,6 +576,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;
|
||||||
@@ -649,9 +620,9 @@ make_empty_lookup(void) {
|
|||||||
looknew->use_usec = false;
|
looknew->use_usec = false;
|
||||||
looknew->nocrypto = false;
|
looknew->nocrypto = false;
|
||||||
looknew->ttlunits = false;
|
looknew->ttlunits = false;
|
||||||
|
looknew->ttlunits = false;
|
||||||
looknew->expandaaaa = false;
|
looknew->expandaaaa = false;
|
||||||
looknew->qr = false;
|
looknew->qr = false;
|
||||||
looknew->accept_reply_unexpected_src = 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;
|
||||||
looknew->idnout = looknew->idnin;
|
looknew->idnout = looknew->idnin;
|
||||||
@@ -710,6 +681,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;
|
||||||
@@ -723,8 +696,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);
|
||||||
}
|
}
|
||||||
@@ -797,8 +772,6 @@ clone_lookup(dig_lookup_t *lookold, bool servers) {
|
|||||||
looknew->ttlunits = lookold->ttlunits;
|
looknew->ttlunits = lookold->ttlunits;
|
||||||
looknew->expandaaaa = lookold->expandaaaa;
|
looknew->expandaaaa = lookold->expandaaaa;
|
||||||
looknew->qr = lookold->qr;
|
looknew->qr = lookold->qr;
|
||||||
looknew->accept_reply_unexpected_src =
|
|
||||||
lookold->accept_reply_unexpected_src;
|
|
||||||
looknew->idnin = lookold->idnin;
|
looknew->idnin = lookold->idnin;
|
||||||
looknew->idnout = lookold->idnout;
|
looknew->idnout = lookold->idnout;
|
||||||
looknew->udpsize = lookold->udpsize;
|
looknew->udpsize = lookold->udpsize;
|
||||||
@@ -832,11 +805,13 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
dns_name_copynf(dns_fixedname_name(&lookold->fdomain),
|
dns_name_copy(dns_fixedname_name(&lookold->fdomain),
|
||||||
dns_fixedname_name(&looknew->fdomain));
|
dns_fixedname_name(&looknew->fdomain), NULL);
|
||||||
|
|
||||||
if (servers)
|
if (servers)
|
||||||
clone_server_list(lookold->my_server_list,
|
clone_server_list(lookold->my_server_list,
|
||||||
@@ -890,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)
|
||||||
@@ -979,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) {
|
||||||
@@ -1210,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);
|
||||||
@@ -1364,7 +1347,8 @@ setup_libs(void) {
|
|||||||
if (!have_ipv6 && !have_ipv4)
|
if (!have_ipv6 && !have_ipv4)
|
||||||
fatal("can't find either v4 or v6 networking");
|
fatal("can't find either v4 or v6 networking");
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
check_result(result, "isc_mem_create");
|
||||||
isc_mem_setname(mctx, "dig", NULL);
|
isc_mem_setname(mctx, "dig", NULL);
|
||||||
|
|
||||||
result = isc_log_create(mctx, &lctx, &logconfig);
|
result = isc_log_create(mctx, &lctx, &logconfig);
|
||||||
@@ -1379,7 +1363,7 @@ setup_libs(void) {
|
|||||||
|
|
||||||
isc_log_setdebuglevel(lctx, 0);
|
isc_log_setdebuglevel(lctx, 0);
|
||||||
|
|
||||||
result = isc_taskmgr_create(mctx, 1, 0, NULL, &taskmgr);
|
result = isc_taskmgr_create(mctx, 1, 0, &taskmgr);
|
||||||
check_result(result, "isc_taskmgr_create");
|
check_result(result, "isc_taskmgr_create");
|
||||||
|
|
||||||
result = isc_task_create(taskmgr, 0, &global_task);
|
result = isc_task_create(taskmgr, 0, &global_task);
|
||||||
@@ -1415,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 */
|
||||||
@@ -1473,7 +1456,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");
|
||||||
@@ -1789,15 +1774,12 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section)
|
|||||||
namereln = dns_name_fullcompare(name, domain,
|
namereln = dns_name_fullcompare(name, domain,
|
||||||
&order, &nlabels);
|
&order, &nlabels);
|
||||||
if (namereln == dns_namereln_equal) {
|
if (namereln == dns_namereln_equal) {
|
||||||
if (!horizontal) {
|
if (!horizontal)
|
||||||
dighost_warning("BAD (HORIZONTAL) "
|
printf(";; BAD (HORIZONTAL) REFERRAL\n");
|
||||||
"REFERRAL");
|
|
||||||
}
|
|
||||||
horizontal = true;
|
horizontal = true;
|
||||||
} else if (namereln != dns_namereln_subdomain) {
|
} else if (namereln != dns_namereln_subdomain) {
|
||||||
if (!bad) {
|
if (!bad)
|
||||||
dighost_warning( "BAD REFERRAL");
|
printf(";; BAD REFERRAL\n");
|
||||||
}
|
|
||||||
bad = true;
|
bad = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1841,7 +1823,7 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section)
|
|||||||
if (lookup->ns_search_only)
|
if (lookup->ns_search_only)
|
||||||
lookup->recurse = false;
|
lookup->recurse = false;
|
||||||
domain = dns_fixedname_name(&lookup->fdomain);
|
domain = dns_fixedname_name(&lookup->fdomain);
|
||||||
dns_name_copynf(name, domain);
|
dns_name_copy(name, domain, NULL);
|
||||||
}
|
}
|
||||||
debug("adding server %s", namestr);
|
debug("adding server %s", namestr);
|
||||||
num = getaddresses(lookup, namestr, &lresult);
|
num = getaddresses(lookup, namestr, &lresult);
|
||||||
@@ -2045,9 +2027,6 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
char cookiebuf[256];
|
char cookiebuf[256];
|
||||||
char *origin = NULL;
|
char *origin = NULL;
|
||||||
char *textname = NULL;
|
char *textname = NULL;
|
||||||
|
|
||||||
REQUIRE(lookup != NULL);
|
|
||||||
|
|
||||||
#ifdef HAVE_LIBIDN2
|
#ifdef HAVE_LIBIDN2
|
||||||
char idn_origin[MXNAME], idn_textname[MXNAME];
|
char idn_origin[MXNAME], idn_textname[MXNAME];
|
||||||
|
|
||||||
@@ -2056,6 +2035,7 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
check_result(result, "dns_name_settotextfilter");
|
check_result(result, "dns_name_settotextfilter");
|
||||||
#endif /* HAVE_LIBIDN2 */
|
#endif /* HAVE_LIBIDN2 */
|
||||||
|
|
||||||
|
REQUIRE(lookup != NULL);
|
||||||
INSIST(!free_now);
|
INSIST(!free_now);
|
||||||
|
|
||||||
debug("setup_lookup(%p)", lookup);
|
debug("setup_lookup(%p)", lookup);
|
||||||
@@ -2156,26 +2136,22 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
isc_buffer_init(&b, textname, len);
|
isc_buffer_init(&b, textname, len);
|
||||||
isc_buffer_add(&b, len);
|
isc_buffer_add(&b, len);
|
||||||
result = dns_name_fromtext(name, &b, NULL, 0, NULL);
|
result = dns_name_fromtext(name, &b, NULL, 0, NULL);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS &&
|
||||||
if (!dns_name_isabsolute(name)) {
|
!dns_name_isabsolute(name))
|
||||||
result = dns_name_concatenate(name,
|
result = dns_name_concatenate(name,
|
||||||
lookup->oname,
|
lookup->oname,
|
||||||
lookup->name,
|
lookup->name,
|
||||||
&lookup->namebuf);
|
&lookup->namebuf);
|
||||||
} else {
|
else if (result == ISC_R_SUCCESS)
|
||||||
result = dns_name_copy(name,
|
result = dns_name_copy(name, lookup->name,
|
||||||
lookup->name,
|
&lookup->namebuf);
|
||||||
&lookup->namebuf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
dns_message_puttempname(lookup->sendmsg,
|
dns_message_puttempname(lookup->sendmsg,
|
||||||
&lookup->name);
|
&lookup->name);
|
||||||
dns_message_puttempname(lookup->sendmsg,
|
dns_message_puttempname(lookup->sendmsg,
|
||||||
&lookup->oname);
|
&lookup->oname);
|
||||||
if (result == DNS_R_NAMETOOLONG) {
|
if (result == DNS_R_NAMETOOLONG)
|
||||||
return (false);
|
return (false);
|
||||||
}
|
|
||||||
fatal("'%s' is not in legal name syntax (%s)",
|
fatal("'%s' is not in legal name syntax (%s)",
|
||||||
lookup->textname,
|
lookup->textname,
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
@@ -2513,6 +2489,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;
|
||||||
@@ -2547,9 +2527,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);
|
||||||
|
|
||||||
@@ -2558,6 +2535,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2674,6 +2661,10 @@ force_timeout(dig_query_t *query) {
|
|||||||
event = isc_event_allocate(mctx, query, ISC_TIMEREVENT_IDLE,
|
event = isc_event_allocate(mctx, query, ISC_TIMEREVENT_IDLE,
|
||||||
connect_timeout, query,
|
connect_timeout, query,
|
||||||
sizeof(isc_event_t));
|
sizeof(isc_event_t));
|
||||||
|
if (event == NULL) {
|
||||||
|
fatal("isc_event_allocate: %s",
|
||||||
|
isc_result_totext(ISC_R_NOMEMORY));
|
||||||
|
}
|
||||||
isc_task_send(global_task, &event);
|
isc_task_send(global_task, &event);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2725,7 +2716,7 @@ send_tcp_connect(dig_query_t *query) {
|
|||||||
|
|
||||||
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_warning("Skipping mapped address '%s'", buf);
|
printf(";; Skipping mapped address '%s'\n", buf);
|
||||||
|
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
if (ISC_LINK_LINKED(query, link))
|
if (ISC_LINK_LINKED(query, link))
|
||||||
@@ -2735,7 +2726,7 @@ send_tcp_connect(dig_query_t *query) {
|
|||||||
l = query->lookup;
|
l = query->lookup;
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
if (next == NULL) {
|
if (next == NULL) {
|
||||||
dighost_warning("No acceptable nameservers");
|
printf(";; No acceptable nameservers\n");
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2796,14 +2787,6 @@ send_tcp_connect(dig_query_t *query) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
print_query_size(dig_query_t *query) {
|
|
||||||
if (!yaml) {
|
|
||||||
printf(";; QUERY SIZE: %u\n\n",
|
|
||||||
isc_buffer_usedlength(&query->lookup->renderbuf));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Send a UDP packet to the remote nameserver, possible starting the
|
* Send a UDP packet to the remote nameserver, possible starting the
|
||||||
* recv action as well. Also make sure that the timer is running and
|
* recv action as well. Also make sure that the timer is running and
|
||||||
@@ -2842,12 +2825,13 @@ send_udp(dig_query_t *query) {
|
|||||||
|
|
||||||
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_warning("Skipping mapped address '%s'", buf);
|
printf(";; Skipping mapped address '%s'\n", buf);
|
||||||
|
|
||||||
next = ISC_LIST_NEXT(query, link);
|
next = ISC_LIST_NEXT(query, link);
|
||||||
l = query->lookup;
|
l = query->lookup;
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
if (next == NULL) {
|
if (next == NULL) {
|
||||||
dighost_warning("No acceptable nameservers");
|
printf(";; No acceptable nameservers\n");
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
} else {
|
} else {
|
||||||
send_udp(next);
|
send_udp(next);
|
||||||
@@ -2898,17 +2882,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) {
|
|
||||||
print_query_size(query);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@@ -3008,11 +2981,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);
|
||||||
@@ -3084,8 +3057,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;
|
||||||
@@ -3184,17 +3157,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) {
|
|
||||||
print_query_size(query);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
#if 0
|
#if 0
|
||||||
@@ -3234,12 +3196,11 @@ connect_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (sevent->result == ISC_R_CANCELED) {
|
if (sevent->result == ISC_R_CANCELED) {
|
||||||
debug("in cancel handler");
|
debug("in cancel handler");
|
||||||
isc_sockaddr_format(&query->sockaddr, sockstr, sizeof(sockstr));
|
isc_sockaddr_format(&query->sockaddr, sockstr, sizeof(sockstr));
|
||||||
if (query->timedout) {
|
if (query->timedout)
|
||||||
dighost_warning("Connection to %s(%s) for %s failed: "
|
printf(";; Connection to %s(%s) for %s failed: %s.\n",
|
||||||
"%s.", sockstr, query->servname,
|
sockstr, query->servname,
|
||||||
query->lookup->textname,
|
query->lookup->textname,
|
||||||
isc_result_totext(ISC_R_TIMEDOUT));
|
isc_result_totext(ISC_R_TIMEDOUT));
|
||||||
}
|
|
||||||
isc_socket_detach(&query->sock);
|
isc_socket_detach(&query->sock);
|
||||||
INSIST(sockcount > 0);
|
INSIST(sockcount > 0);
|
||||||
sockcount--;
|
sockcount--;
|
||||||
@@ -3257,12 +3218,11 @@ connect_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
debug("unsuccessful connection: %s",
|
debug("unsuccessful connection: %s",
|
||||||
isc_result_totext(sevent->result));
|
isc_result_totext(sevent->result));
|
||||||
isc_sockaddr_format(&query->sockaddr, sockstr, sizeof(sockstr));
|
isc_sockaddr_format(&query->sockaddr, sockstr, sizeof(sockstr));
|
||||||
if (sevent->result != ISC_R_CANCELED) {
|
if (sevent->result != ISC_R_CANCELED)
|
||||||
dighost_warning("Connection to %s(%s) for %s failed: "
|
printf(";; Connection to %s(%s) for %s failed: "
|
||||||
"%s.", sockstr, query->servname,
|
"%s.\n", sockstr,
|
||||||
query->lookup->textname,
|
query->servname, query->lookup->textname,
|
||||||
isc_result_totext(sevent->result));
|
isc_result_totext(sevent->result));
|
||||||
}
|
|
||||||
isc_socket_detach(&query->sock);
|
isc_socket_detach(&query->sock);
|
||||||
INSIST(sockcount > 0);
|
INSIST(sockcount > 0);
|
||||||
sockcount--;
|
sockcount--;
|
||||||
@@ -3470,12 +3430,12 @@ process_cookie(dig_lookup_t *l, dns_message_t *msg,
|
|||||||
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 {
|
||||||
dighost_warning("Warning: Client COOKIE mismatch");
|
printf(";; Warning: Client COOKIE mismatch\n");
|
||||||
msg->cc_bad = 1;
|
msg->cc_bad = 1;
|
||||||
copy = false;
|
copy = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dighost_warning("Warning: COOKIE bad token (too short)");
|
printf(";; Warning: COOKIE bad token (too short)\n");
|
||||||
msg->cc_bad = 1;
|
msg->cc_bad = 1;
|
||||||
copy = false;
|
copy = false;
|
||||||
}
|
}
|
||||||
@@ -3571,6 +3531,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;
|
||||||
|
|
||||||
@@ -3599,8 +3560,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);
|
||||||
@@ -3647,11 +3608,9 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
sizeof(buf1));
|
sizeof(buf1));
|
||||||
isc_sockaddr_format(&query->sockaddr, buf2,
|
isc_sockaddr_format(&query->sockaddr, buf2,
|
||||||
sizeof(buf2));
|
sizeof(buf2));
|
||||||
dighost_warning("reply from unexpected source: %s,"
|
printf(";; reply from unexpected source: %s,"
|
||||||
" expected %s\n", buf1, buf2);
|
" expected %s\n", buf1, buf2);
|
||||||
if (!l->accept_reply_unexpected_src) {
|
match = false;
|
||||||
match = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3661,22 +3620,19 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (l->tcp_mode) {
|
if (l->tcp_mode) {
|
||||||
bool fail = true;
|
bool fail = true;
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
if ((!query->first_soa_rcvd || query->warn_id))
|
if (!query->first_soa_rcvd ||
|
||||||
{
|
query->warn_id)
|
||||||
dighost_warning("%s: ID mismatch: "
|
printf(";; %s: ID mismatch: "
|
||||||
"expected ID %u, got "
|
"expected ID %u, got %u\n",
|
||||||
"%u",
|
query->first_soa_rcvd ?
|
||||||
query->first_soa_rcvd ?
|
"WARNING" : "ERROR",
|
||||||
"WARNING" : "ERROR",
|
l->sendmsg->id, id);
|
||||||
l->sendmsg->id, id);
|
|
||||||
}
|
|
||||||
if (query->first_soa_rcvd)
|
if (query->first_soa_rcvd)
|
||||||
fail = false;
|
fail = false;
|
||||||
query->warn_id = false;
|
query->warn_id = false;
|
||||||
} else {
|
} else
|
||||||
dighost_warning("ERROR: short (< header size) "
|
printf(";; ERROR: short "
|
||||||
"message");
|
"(< header size) message\n");
|
||||||
}
|
|
||||||
if (fail) {
|
if (fail) {
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
@@ -3686,18 +3642,16 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
match = true;
|
match = true;
|
||||||
} else if (result == ISC_R_SUCCESS) {
|
} else if (result == ISC_R_SUCCESS)
|
||||||
dighost_warning("Warning: ID mismatch: expected ID %u,"
|
printf(";; Warning: ID mismatch: "
|
||||||
" got %u", l->sendmsg->id, id);
|
"expected ID %u, got %u\n", l->sendmsg->id, id);
|
||||||
} else {
|
else
|
||||||
dighost_warning("Warning: short (< header size) "
|
printf(";; Warning: short "
|
||||||
"message received");
|
"(< header size) message received\n");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS && (msgflags & DNS_MESSAGEFLAG_QR) == 0) {
|
if (result == ISC_R_SUCCESS && (msgflags & DNS_MESSAGEFLAG_QR) == 0)
|
||||||
dighost_warning("Warning: query response not set");
|
printf(";; Warning: query response not set\n");
|
||||||
}
|
|
||||||
|
|
||||||
if (!match)
|
if (!match)
|
||||||
goto udp_mismatch;
|
goto udp_mismatch;
|
||||||
@@ -3731,16 +3685,13 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
}
|
}
|
||||||
result = dns_message_parse(msg, &b, parseflags);
|
result = dns_message_parse(msg, &b, parseflags);
|
||||||
if (result == DNS_R_RECOVERABLE) {
|
if (result == DNS_R_RECOVERABLE) {
|
||||||
dighost_warning("Warning: Message parser reports malformed "
|
printf(";; Warning: Message parser reports malformed "
|
||||||
"message packet.");
|
"message packet.\n");
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
}
|
}
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
if (!yaml) {
|
printf(";; Got bad packet: %s\n", isc_result_totext(result));
|
||||||
printf(";; Got bad packet: %s\n",
|
hex_dump(&b);
|
||||||
isc_result_totext(result));
|
|
||||||
hex_dump(&b);
|
|
||||||
}
|
|
||||||
query->waiting_connect = false;
|
query->waiting_connect = false;
|
||||||
dns_message_destroy(&msg);
|
dns_message_destroy(&msg);
|
||||||
isc_event_free(&event);
|
isc_event_free(&event);
|
||||||
@@ -3777,10 +3728,9 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
dns_rdataclass_format(rdataset->rdclass,
|
dns_rdataclass_format(rdataset->rdclass,
|
||||||
classbuf,
|
classbuf,
|
||||||
sizeof(classbuf));
|
sizeof(classbuf));
|
||||||
dighost_warning(";; Question section "
|
printf(";; Question section mismatch: "
|
||||||
"mismatch: got "
|
"got %s/%s/%s\n",
|
||||||
"%s/%s/%s", namestr,
|
namestr, typebuf, classbuf);
|
||||||
typebuf, classbuf);
|
|
||||||
match = false;
|
match = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3803,8 +3753,9 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
/*
|
/*
|
||||||
* Add minimum EDNS version required checks here if needed.
|
* Add minimum EDNS version required checks here if needed.
|
||||||
*/
|
*/
|
||||||
dighost_comments(l, "BADVERS, retrying with EDNS version %u.",
|
if (l->comments)
|
||||||
(unsigned int)newedns);
|
printf(";; BADVERS, retrying with EDNS version %u.\n",
|
||||||
|
(unsigned int)newedns);
|
||||||
l->edns = newedns;
|
l->edns = newedns;
|
||||||
n = requeue_lookup(l, true);
|
n = requeue_lookup(l, true);
|
||||||
if (l->trace && l->trace_root)
|
if (l->trace && l->trace_root)
|
||||||
@@ -3821,7 +3772,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
!l->ignore && !l->tcp_mode) {
|
!l->ignore && !l->tcp_mode) {
|
||||||
if (l->cookie == NULL && l->sendcookie && msg->opt != NULL)
|
if (l->cookie == NULL && l->sendcookie && msg->opt != NULL)
|
||||||
process_opt(l, msg);
|
process_opt(l, msg);
|
||||||
dighost_comments(l, "Truncated, retrying in TCP mode.");
|
if (l->comments)
|
||||||
|
printf(";; Truncated, retrying in TCP mode.\n");
|
||||||
n = requeue_lookup(l, true);
|
n = requeue_lookup(l, true);
|
||||||
n->tcp_mode = true;
|
n->tcp_mode = true;
|
||||||
if (l->trace && l->trace_root)
|
if (l->trace && l->trace_root)
|
||||||
@@ -3838,9 +3790,9 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
l->sendcookie && l->badcookie) {
|
l->sendcookie && l->badcookie) {
|
||||||
process_opt(l, msg);
|
process_opt(l, msg);
|
||||||
if (msg->cc_ok) {
|
if (msg->cc_ok) {
|
||||||
dighost_comments(l, "BADCOOKIE, retrying%s.",
|
if (l->comments)
|
||||||
l->seenbadcookie ?
|
printf(";; BADCOOKIE, retrying%s.\n",
|
||||||
" in TCP mode" : "");
|
l->seenbadcookie ? " in TCP mode" : "");
|
||||||
n = requeue_lookup(l, true);
|
n = requeue_lookup(l, true);
|
||||||
if (l->seenbadcookie)
|
if (l->seenbadcookie)
|
||||||
n->tcp_mode = true;
|
n->tcp_mode = true;
|
||||||
@@ -3877,12 +3829,13 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
*/
|
*/
|
||||||
if ((ISC_LIST_HEAD(l->q) != query) ||
|
if ((ISC_LIST_HEAD(l->q) != query) ||
|
||||||
(ISC_LIST_NEXT(query, link) != NULL)) {
|
(ISC_LIST_NEXT(query, link) != NULL)) {
|
||||||
dighost_comments(l, "Got %s from %s, trying next "
|
if (l->comments)
|
||||||
"server",
|
printf(";; Got %s from %s, "
|
||||||
msg->rcode == dns_rcode_servfail ?
|
"trying next server\n",
|
||||||
"SERVFAIL reply" :
|
msg->rcode == dns_rcode_servfail ?
|
||||||
"recursion not available",
|
"SERVFAIL reply" :
|
||||||
query->servname);
|
"recursion not available",
|
||||||
|
query->servname);
|
||||||
clear_query(query);
|
clear_query(query);
|
||||||
check_next_lookup(l);
|
check_next_lookup(l);
|
||||||
dns_message_destroy(&msg);
|
dns_message_destroy(&msg);
|
||||||
@@ -3895,8 +3848,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (tsigkey != NULL) {
|
if (tsigkey != NULL) {
|
||||||
result = dns_tsig_verify(&b, msg, NULL, NULL);
|
result = dns_tsig_verify(&b, msg, NULL, NULL);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
dighost_warning("Couldn't verify signature: %s",
|
printf(";; Couldn't verify signature: %s\n",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
validated = false;
|
validated = false;
|
||||||
}
|
}
|
||||||
l->tsigctx = msg->tsigctx;
|
l->tsigctx = msg->tsigctx;
|
||||||
@@ -3947,8 +3900,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
if (!done_process_opt) {
|
if (!done_process_opt) {
|
||||||
if (l->cookie != NULL) {
|
if (l->cookie != NULL) {
|
||||||
if (msg->opt == NULL) {
|
if (msg->opt == NULL) {
|
||||||
dighost_warning("expected opt record in "
|
printf(";; expected opt record in response\n");
|
||||||
"response");
|
|
||||||
} else {
|
} else {
|
||||||
process_opt(l, msg);
|
process_opt(l, msg);
|
||||||
}
|
}
|
||||||
@@ -3960,19 +3912,19 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
|||||||
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)) {
|
||||||
@@ -4003,7 +3955,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4252,6 +4204,7 @@ destroy_libs(void) {
|
|||||||
result = dns_name_settotextfilter(NULL);
|
result = dns_name_settotextfilter(NULL);
|
||||||
check_result(result, "dns_name_settotextfilter");
|
check_result(result, "dns_name_settotextfilter");
|
||||||
#endif /* HAVE_LIBIDN2 */
|
#endif /* HAVE_LIBIDN2 */
|
||||||
|
dns_name_destroy();
|
||||||
|
|
||||||
if (commctx != NULL) {
|
if (commctx != NULL) {
|
||||||
debug("freeing commctx");
|
debug("freeing commctx");
|
||||||
@@ -4425,20 +4378,9 @@ idn_ace_to_locale(const char *src, char **dst) {
|
|||||||
*/
|
*/
|
||||||
res = idn2_to_unicode_8zlz(utf8_src, &local_src, 0);
|
res = idn2_to_unicode_8zlz(utf8_src, &local_src, 0);
|
||||||
if (res != IDN2_OK) {
|
if (res != IDN2_OK) {
|
||||||
static bool warned = false;
|
fatal("Cannot represent '%s' in the current locale (%s), "
|
||||||
|
"use +noidnout or a different locale",
|
||||||
res = idn2_to_ascii_8z(utf8_src, &local_src, 0);
|
src, idn2_strerror(res));
|
||||||
if (res != IDN2_OK) {
|
|
||||||
fatal("Cannot represent '%s' "
|
|
||||||
"in the current locale nor ascii (%s), "
|
|
||||||
"use +noidnout or a different locale",
|
|
||||||
src, idn2_strerror(res));
|
|
||||||
} else if (!warned) {
|
|
||||||
fprintf(stderr, ";; Warning: cannot represent '%s' "
|
|
||||||
"in the current locale",
|
|
||||||
local_src);
|
|
||||||
warned = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2002, 2004, 2005, 2007-2009, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+3
-6
@@ -394,22 +394,19 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
dns_rdataset_current(rdataset, &rdata);
|
dns_rdataset_current(rdataset, &rdata);
|
||||||
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
||||||
check_result(result, "dns_rdata_tostruct");
|
check_result(result, "dns_rdata_tostruct");
|
||||||
dns_name_copynf(&cname.cname, qname);
|
dns_name_copy(&cname.cname, qname, NULL);
|
||||||
dns_rdata_freestruct(&cname);
|
dns_rdata_freestruct(&cname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -456,7 +453,7 @@ printmessage(dig_query_t *query, const isc_buffer_t *msgbuf,
|
|||||||
|
|
||||||
/* Add AAAA and MX lookups. */
|
/* Add AAAA and MX lookups. */
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
dns_name_copynf(query->lookup->name, name);
|
dns_name_copy(query->lookup->name, name, NULL);
|
||||||
chase_cnamechain(msg, name);
|
chase_cnamechain(msg, name);
|
||||||
dns_name_format(name, namestr, sizeof(namestr));
|
dns_name_format(name, namestr, sizeof(namestr));
|
||||||
lookup = clone_lookup(query->lookup, false);
|
lookup = clone_lookup(query->lookup, false);
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2002, 2004, 2005, 2007-2009, 2014-2019 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
|
||||||
|
|||||||
@@ -141,9 +141,7 @@ struct dig_lookup {
|
|||||||
idnin,
|
idnin,
|
||||||
idnout,
|
idnout,
|
||||||
expandaaaa,
|
expandaaaa,
|
||||||
qr,
|
qr;
|
||||||
accept_reply_unexpected_src; /*% print replies from unexpected
|
|
||||||
sources. */
|
|
||||||
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];
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
@@ -252,7 +250,7 @@ extern dig_searchlistlist_t search_list;
|
|||||||
extern unsigned int extrabytes;
|
extern unsigned int extrabytes;
|
||||||
|
|
||||||
extern bool check_ra, have_ipv4, have_ipv6, specified_source,
|
extern bool check_ra, have_ipv4, have_ipv6, specified_source,
|
||||||
usesearch, showsearch, yaml;
|
usesearch, showsearch;
|
||||||
extern in_port_t port;
|
extern in_port_t port;
|
||||||
extern unsigned int timeout;
|
extern unsigned int timeout;
|
||||||
extern isc_mem_t *mctx;
|
extern isc_mem_t *mctx;
|
||||||
@@ -382,34 +380,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 a warning message in the appropriate format.
|
|
||||||
*/
|
|
||||||
extern void
|
|
||||||
(*dighost_warning)(const char *format, ...);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Print a comment in the appropriate format.
|
|
||||||
*/
|
|
||||||
extern void
|
|
||||||
(*dighost_comments)(dig_lookup_t *lookup, 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2004-2007, 2010, 2013-2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2004-2007, 2010, 2013-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+6
-9
@@ -423,27 +423,22 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
dns_rdataset_current(rdataset, &rdata);
|
dns_rdataset_current(rdataset, &rdata);
|
||||||
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
result = dns_rdata_tostruct(&rdata, &cname, NULL);
|
||||||
check_result(result, "dns_rdata_tostruct");
|
check_result(result, "dns_rdata_tostruct");
|
||||||
dns_name_copynf(&cname.cname, qname);
|
dns_name_copy(&cname.cname, qname, NULL);
|
||||||
dns_rdata_freestruct(&cname);
|
dns_rdata_freestruct(&cname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -481,7 +476,7 @@ printmessage(dig_query_t *query, const isc_buffer_t *msgbuf,
|
|||||||
|
|
||||||
/* Add AAAA lookup. */
|
/* Add AAAA lookup. */
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
dns_name_copynf(query->lookup->name, name);
|
dns_name_copy(query->lookup->name, name, NULL);
|
||||||
chase_cnamechain(msg, name);
|
chase_cnamechain(msg, name);
|
||||||
dns_name_format(name, namestr, sizeof(namestr));
|
dns_name_format(name, namestr, sizeof(namestr));
|
||||||
lookup = clone_lookup(query->lookup, false);
|
lookup = clone_lookup(query->lookup, false);
|
||||||
@@ -855,6 +850,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
|
||||||
|
|||||||
+22
-29
@@ -72,7 +72,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -308,7 +307,7 @@ nslookup -query=hinfo -timeout=10
|
|||||||
The class specifies the protocol group of the information.
|
The class specifies the protocol group of the information.
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = IN; abbreviation = cl)
|
(Default = IN; abbreviation = cl)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -318,10 +317,10 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<term><constant><replaceable><optional>no</optional></replaceable>debug</constant></term>
|
<term><constant><replaceable><optional>no</optional></replaceable>debug</constant></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Turn on or off the display of the full response packet and
|
Turn on or off the display of the full response packet and
|
||||||
any intermediate response packets when searching.
|
any intermediate response packets when searching.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = nodebug; abbreviation = <optional>no</optional>deb)
|
(Default = nodebug; abbreviation = <optional>no</optional>deb)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -332,9 +331,9 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Turn debugging mode on or off. This displays more about
|
Turn debugging mode on or off. This displays more about
|
||||||
what nslookup is doing.
|
what nslookup is doing.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = nod2)
|
(Default = nod2)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -358,7 +357,7 @@ nslookup -query=hinfo -timeout=10
|
|||||||
names in the domain search list to the request until an
|
names in the domain search list to the request until an
|
||||||
answer is received.
|
answer is received.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = search)
|
(Default = search)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -370,7 +369,7 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<para>
|
<para>
|
||||||
Change the default TCP/UDP name server port to <replaceable>value</replaceable>.
|
Change the default TCP/UDP name server port to <replaceable>value</replaceable>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = 53; abbreviation = po)
|
(Default = 53; abbreviation = po)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -389,15 +388,9 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<para>
|
<para>
|
||||||
Change the type of the information query.
|
Change the type of the information query.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = A and then AAAA; abbreviations = q, ty)
|
(Default = A; abbreviations = q, ty)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
|
||||||
<emphasis role="bold">Note:</emphasis> It is
|
|
||||||
only possible to specify one query type, only
|
|
||||||
the default behavior looks up both when an
|
|
||||||
alternative is not specified.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@@ -409,7 +402,7 @@ nslookup -query=hinfo -timeout=10
|
|||||||
have the
|
have the
|
||||||
information.
|
information.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = recurse; abbreviation = [no]rec)
|
(Default = recurse; abbreviation = [no]rec)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -419,9 +412,9 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<term><constant>ndots=</constant><replaceable>number</replaceable></term>
|
<term><constant>ndots=</constant><replaceable>number</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Set the number of dots (label separators) in a domain
|
Set the number of dots (label separators) in a domain
|
||||||
that will disable searching. Absolute names always
|
that will disable searching. Absolute names always
|
||||||
stop searching.
|
stop searching.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -452,7 +445,7 @@ nslookup -query=hinfo -timeout=10
|
|||||||
Always use a virtual circuit when sending requests to the
|
Always use a virtual circuit when sending requests to the
|
||||||
server.
|
server.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = novc)
|
(Default = novc)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -462,15 +455,15 @@ nslookup -query=hinfo -timeout=10
|
|||||||
<term><constant><replaceable><optional>no</optional></replaceable>fail</constant></term>
|
<term><constant><replaceable><optional>no</optional></replaceable>fail</constant></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Try the next nameserver if a nameserver responds with
|
Try the next nameserver if a nameserver responds with
|
||||||
SERVFAIL or a referral (nofail) or terminate query
|
SERVFAIL or a referral (nofail) or terminate query
|
||||||
(fail) on such a response.
|
(fail) on such a response.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
(Default = nofail)
|
(Default = nofail)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</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) 2004-2007, 2010, 2013-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2004-2007, 2010, 2013-2019 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,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{F938F9B8-D395-4A40-BEC7-0122D289C692}</ProjectGuid>
|
<ProjectGuid>{F938F9B8-D395-4A40-BEC7-0122D289C692}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>dig</RootNamespace>
|
<RootNamespace>dig</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{140DE800-E552-43CC-B0C7-A33A92E368CA}</ProjectGuid>
|
<ProjectGuid>{140DE800-E552-43CC-B0C7-A33A92E368CA}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>dighost</RootNamespace>
|
<RootNamespace>dighost</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{BA1048A8-6961-4A20-BE12-08BE20611C9D}</ProjectGuid>
|
<ProjectGuid>{BA1048A8-6961-4A20-BE12-08BE20611C9D}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>host</RootNamespace>
|
<RootNamespace>host</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="@TOOLS_VERSION@" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
<ProjectConfiguration Include="Debug|@PLATFORM@">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@@ -14,21 +14,18 @@
|
|||||||
<ProjectGuid>{C15A6E1A-94CE-4686-99F9-6BC5FD623EB5}</ProjectGuid>
|
<ProjectGuid>{C15A6E1A-94CE-4686-99F9-6BC5FD623EB5}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>nslookup</RootNamespace>
|
<RootNamespace>nslookup</RootNamespace>
|
||||||
@WINDOWS_TARGET_PLATFORM_VERSION@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
@PLATFORM_TOOLSET@
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
|||||||
+9
-12
@@ -15,26 +15,23 @@ VERSION=@BIND9_VERSION@
|
|||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} ${ISCCFG_INCLUDES} \
|
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @OPENSSL_INCLUDES@ @JSON_C_CFLAGS@
|
||||||
${OPENSSL_CFLAGS}
|
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\" -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||||
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@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ ${OPENSSL_LIBS} ${JSON_C_LIBS} ${LIBXML2_LIBS}
|
|
||||||
|
|
||||||
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
|
||||||
|
|
||||||
DEPLIBS = ${DNSDEPLIBS} ${ISCCFGDEPLIBS} ${ISCDEPLIBS}
|
DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
|
||||||
|
|
||||||
LIBS = ${DNSLIBS} ${ISCCFGLIBS} ${ISCLIBS} @LIBS@
|
LIBS = ${DNSLIBS} ${ISCLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
NOSYMLIBS = ${DNSLIBS} ${ISCCFGLIBS} ${ISCNOSYMLIBS} @LIBS@
|
NOSYMLIBS = ${DNSLIBS} ${ISCNOSYMLIBS} @JSON_C_LIBS@ @LIBS@
|
||||||
|
|
||||||
# Alphabetically
|
# Alphabetically
|
||||||
TARGETS = dnssec-cds@EXEEXT@ dnssec-dsfromkey@EXEEXT@ \
|
TARGETS = dnssec-cds@EXEEXT@ dnssec-dsfromkey@EXEEXT@ \
|
||||||
@@ -50,7 +47,7 @@ SRCS = dnssec-cds.c dnssec-dsfromkey.c dnssec-importkey.c \
|
|||||||
dnssec-settime.c dnssec-signzone.c dnssec-verify.c \
|
dnssec-settime.c dnssec-signzone.c dnssec-verify.c \
|
||||||
dnssectool.c
|
dnssectool.c
|
||||||
|
|
||||||
MANPAGES = dnssec-cds.8 dnssec-dsfromkey.8 dnssec-importkey.8 \
|
MANPAGES = dnssec-cds.8 dnssec-dsfromkey.8 dnssec-importkey.8 \
|
||||||
dnssec-keyfromlabel.8 dnssec-keygen.8 dnssec-revoke.8 \
|
dnssec-keyfromlabel.8 dnssec-keygen.8 dnssec-revoke.8 \
|
||||||
dnssec-settime.8 dnssec-signzone.8 dnssec-verify.8
|
dnssec-settime.8 dnssec-signzone.8 dnssec-verify.8
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2017-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2017-2019 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
|
||||||
@@ -293,5 +293,5 @@ RFC 7344\&.
|
|||||||
.RE
|
.RE
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2017-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2017-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+28
-2
@@ -372,7 +372,7 @@ formatset(dns_rdataset_t *rdataset) {
|
|||||||
|
|
||||||
result = isc_buffer_allocate(mctx, &buf, MAX_CDS_RDATA_TEXT_SIZE);
|
result = isc_buffer_allocate(mctx, &buf, MAX_CDS_RDATA_TEXT_SIZE);
|
||||||
check_result(result, "printing DS records");
|
check_result(result, "printing DS records");
|
||||||
result = dns_master_rdatasettotext(name, rdataset, style, NULL, buf);
|
result = dns_master_rdatasettotext(name, rdataset, style, buf);
|
||||||
|
|
||||||
if ((result == ISC_R_SUCCESS) && isc_buffer_availablelength(buf) < 1) {
|
if ((result == ISC_R_SUCCESS) && isc_buffer_availablelength(buf) < 1) {
|
||||||
result = ISC_R_NOSPACE;
|
result = ISC_R_NOSPACE;
|
||||||
@@ -530,6 +530,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;
|
||||||
@@ -607,6 +610,10 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
|||||||
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);
|
||||||
@@ -740,6 +747,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);
|
||||||
@@ -824,6 +835,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;
|
||||||
@@ -892,6 +907,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 +926,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);
|
||||||
@@ -1074,7 +1097,10 @@ main(int argc, char *argv[]) {
|
|||||||
int ch;
|
int ch;
|
||||||
char *endp;
|
char *endp;
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
fatal("out of memory");
|
||||||
|
}
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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) 2017-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2017-2019 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-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2008-2012, 2014-2016, 2018, 2019 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
|
||||||
@@ -50,9 +50,11 @@ dnssec-dsfromkey \- DNSSEC DS RR generation tool
|
|||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
\fBdnssec\-dsfromkey\fR
|
\fBdnssec\-dsfromkey\fR
|
||||||
command outputs DS (Delegation Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
command outputs DS (Delegation Signer) resource records (RRs) and other similarly\-constructed RRs: with the
|
||||||
|
\fB\-l\fR
|
||||||
|
option it outputs DLV (DNSSEC Lookaside Validation) RRs; or with the
|
||||||
\fB\-C\fR
|
\fB\-C\fR
|
||||||
option\&.
|
it outputs CDS (Child DS) RRs\&.
|
||||||
.PP
|
.PP
|
||||||
The input keys can be specified in a number of ways:
|
The input keys can be specified in a number of ways:
|
||||||
.PP
|
.PP
|
||||||
@@ -117,7 +119,9 @@ zone file mode\&.
|
|||||||
.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 the
|
||||||
|
\fB\-l\fR
|
||||||
|
option for generating DLV records\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-f \fIfile\fR
|
\-f \fIfile\fR
|
||||||
@@ -152,6 +156,15 @@ files in
|
|||||||
\fBdirectory\fR\&.
|
\fBdirectory\fR\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
\-l \fIdomain\fR
|
||||||
|
.RS 4
|
||||||
|
Generate a DLV set instead of a DS set\&. The specified
|
||||||
|
\fIdomain\fR
|
||||||
|
is appended to the name for each record in the set\&. This is mutually exclusive with the
|
||||||
|
\fB\-C\fR
|
||||||
|
option for generating CDS records\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
\-s
|
\-s
|
||||||
.RS 4
|
.RS 4
|
||||||
Keyset mode:
|
Keyset mode:
|
||||||
@@ -211,6 +224,8 @@ A keyfile error can give a "file not found" even if the file exists\&.
|
|||||||
BIND 9 Administrator Reference Manual,
|
BIND 9 Administrator Reference Manual,
|
||||||
RFC 3658
|
RFC 3658
|
||||||
(DS RRs),
|
(DS RRs),
|
||||||
|
RFC 4431
|
||||||
|
(DLV RRs),
|
||||||
RFC 4509
|
RFC 4509
|
||||||
(SHA\-256 for DS RRs),
|
(SHA\-256 for DS RRs),
|
||||||
RFC 6605
|
RFC 6605
|
||||||
@@ -222,5 +237,5 @@ RFC 7344
|
|||||||
\fBInternet Systems Consortium, Inc\&.\fR
|
\fBInternet Systems Consortium, Inc\&.\fR
|
||||||
.SH "COPYRIGHT"
|
.SH "COPYRIGHT"
|
||||||
.br
|
.br
|
||||||
Copyright \(co 2008-2012, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2008-2012, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -200,13 +200,16 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size,
|
|||||||
rdclass = dst_key_class(key);
|
rdclass = dst_key_class(key);
|
||||||
|
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
dns_name_copynf(dst_key_name(key), name);
|
result = dns_name_copy(dst_key_name(key), name, NULL);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("can't copy name");
|
||||||
|
|
||||||
dst_key_free(&key);
|
dst_key_free(&key);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
@@ -225,7 +228,9 @@ logkey(dns_rdata_t *rdata) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit(dns_dsdigest_t dt, bool showall, bool cds, dns_rdata_t *rdata) {
|
emit(dns_dsdigest_t dt, 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];
|
||||||
@@ -257,6 +262,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);
|
||||||
|
|
||||||
@@ -276,24 +293,26 @@ 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
|
static void
|
||||||
emits(bool showall, bool cds, dns_rdata_t *rdata) {
|
emits(bool showall, char *lookaside, bool cds, dns_rdata_t *rdata) {
|
||||||
unsigned i, n;
|
unsigned i, n;
|
||||||
|
|
||||||
n = sizeof(dtype)/sizeof(dtype[0]);
|
n = sizeof(dtype)/sizeof(dtype[0]);
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (dtype[i] != 0) {
|
if (dtype[i] != 0) {
|
||||||
emit(dtype[i], showall, cds, rdata);
|
emit(dtype[i], showall, lookaside, cds, rdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,11 +338,12 @@ usage(void) {
|
|||||||
" -f zonefile: read keys from a zone file\n"
|
" -f zonefile: read keys from a zone file\n"
|
||||||
" -h: print help information\n"
|
" -h: print help information\n"
|
||||||
" -K directory: where to find key or keyset files\n"
|
" -K directory: where to find key or keyset files\n"
|
||||||
|
" -l zone: print DLV records in the given lookaside zone\n"
|
||||||
" -s: read keys from keyset-<dnsname> file\n"
|
" -s: read keys from keyset-<dnsname> file\n"
|
||||||
" -T: TTL of output records (omitted by default)\n"
|
" -T: TTL of output records (omitted by default)\n"
|
||||||
" -v level: verbosity\n"
|
" -v level: verbosity\n"
|
||||||
" -V: print version information\n");
|
" -V: print version information\n");
|
||||||
fprintf(stderr, "Output: DS or CDS RRs\n");
|
fprintf(stderr, "Output: DS, DLV, or CDS RRs\n");
|
||||||
|
|
||||||
exit (-1);
|
exit (-1);
|
||||||
}
|
}
|
||||||
@@ -332,7 +352,8 @@ 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 *endp, *arg1;
|
char *lookaside = NULL;
|
||||||
|
char *endp;
|
||||||
int ch;
|
int ch;
|
||||||
bool cds = false;
|
bool cds = false;
|
||||||
bool usekeyset = false;
|
bool usekeyset = false;
|
||||||
@@ -348,7 +369,10 @@ main(int argc, char **argv) {
|
|||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
fatal("out of memory");
|
||||||
|
}
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -373,6 +397,9 @@ main(int argc, char **argv) {
|
|||||||
add_dtype(strtodsdigest(isc_commandline_argument));
|
add_dtype(strtodsdigest(isc_commandline_argument));
|
||||||
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':
|
||||||
@@ -391,7 +418,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;
|
||||||
@@ -444,15 +476,10 @@ main(int argc, char **argv) {
|
|||||||
dtype[0] = DNS_DSDIGEST_SHA256;
|
dtype[0] = DNS_DSDIGEST_SHA256;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
if (argc < isc_commandline_index + 1 && filename == NULL) {
|
||||||
* Use local variable arg1 so that clang can correctly analyse
|
|
||||||
* reachable paths rather than 'argc < isc_commandline_index + 1'.
|
|
||||||
*/
|
|
||||||
arg1 = argv[isc_commandline_index];
|
|
||||||
if (arg1 == NULL && filename == NULL) {
|
|
||||||
fatal("the key file name was not specified");
|
fatal("the key file name was not specified");
|
||||||
}
|
}
|
||||||
if (arg1 != NULL && argv[isc_commandline_index + 1] != NULL) {
|
if (argc > isc_commandline_index + 1) {
|
||||||
fatal("extraneous arguments");
|
fatal("extraneous arguments");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,11 +494,11 @@ main(int argc, char **argv) {
|
|||||||
dns_rdataset_init(&rdataset);
|
dns_rdataset_init(&rdataset);
|
||||||
|
|
||||||
if (usekeyset || filename != NULL) {
|
if (usekeyset || filename != NULL) {
|
||||||
if (arg1 == NULL) {
|
if (argc < isc_commandline_index + 1 && filename != NULL) {
|
||||||
/* using file name as the zone name */
|
/* using zone name as the zone file name */
|
||||||
namestr = filename;
|
namestr = filename;
|
||||||
} else {
|
} else {
|
||||||
namestr = arg1;
|
namestr = argv[isc_commandline_index];
|
||||||
}
|
}
|
||||||
|
|
||||||
result = initname(namestr);
|
result = initname(namestr);
|
||||||
@@ -482,7 +509,6 @@ main(int argc, char **argv) {
|
|||||||
if (usekeyset) {
|
if (usekeyset) {
|
||||||
result = loadkeyset(dir, &rdataset);
|
result = loadkeyset(dir, &rdataset);
|
||||||
} else {
|
} else {
|
||||||
INSIST(filename != NULL);
|
|
||||||
result = loadset(filename, &rdataset);
|
result = loadset(filename, &rdataset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -502,14 +528,15 @@ main(int argc, char **argv) {
|
|||||||
logkey(&rdata);
|
logkey(&rdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
emits(showall, cds, &rdata);
|
emits(showall, lookaside, cds, &rdata);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned char key_buf[DST_KEY_MAXSIZE];
|
unsigned char key_buf[DST_KEY_MAXSIZE];
|
||||||
|
|
||||||
loadkey(arg1, key_buf, DST_KEY_MAXSIZE, &rdata);
|
loadkey(argv[isc_commandline_index], key_buf,
|
||||||
|
DST_KEY_MAXSIZE, &rdata);
|
||||||
|
|
||||||
emits(showall, cds, &rdata);
|
emits(showall, lookaside, cds, &rdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dns_rdataset_isassociated(&rdataset)) {
|
if (dns_rdataset_isassociated(&rdataset)) {
|
||||||
@@ -517,6 +544,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
cleanup_logging(&log);
|
cleanup_logging(&log);
|
||||||
dst_lib_destroy();
|
dst_lib_destroy();
|
||||||
|
dns_name_destroy();
|
||||||
if (verbose > 10) {
|
if (verbose > 10) {
|
||||||
isc_mem_stats(mctx, stdout);
|
isc_mem_stats(mctx, stdout);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -113,8 +112,10 @@
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
The <command>dnssec-dsfromkey</command> command outputs DS (Delegation
|
The <command>dnssec-dsfromkey</command> command outputs DS (Delegation
|
||||||
Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
Signer) resource records (RRs) and other similarly-constructed RRs:
|
||||||
<option>-C</option> option.
|
with the <option>-l</option> option it outputs DLV (DNSSEC Lookaside
|
||||||
|
Validation) RRs; or with the <option>-C</option> it outputs CDS (Child
|
||||||
|
DS) RRs.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@@ -211,7 +212,9 @@
|
|||||||
<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 the <option>-l</option> option for generating DLV
|
||||||
|
records.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -257,6 +260,19 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>-l <replaceable class="parameter">domain</replaceable></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Generate a DLV set instead of a DS set. The specified
|
||||||
|
<replaceable>domain</replaceable> is appended to the name for each
|
||||||
|
record in the set.
|
||||||
|
This is mutually exclusive with the <option>-C</option> option
|
||||||
|
for generating CDS records.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-s</term>
|
<term>-s</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -346,6 +362,7 @@
|
|||||||
</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> (DS RRs),
|
||||||
|
<citetitle>RFC 4431</citetitle> (DLV RRs),
|
||||||
<citetitle>RFC 4509</citetitle> (SHA-256 for DS RRs),
|
<citetitle>RFC 4509</citetitle> (SHA-256 for DS RRs),
|
||||||
<citetitle>RFC 6605</citetitle> (SHA-384 for DS RRs),
|
<citetitle>RFC 6605</citetitle> (SHA-384 for DS RRs),
|
||||||
<citetitle>RFC 7344</citetitle> (CDS and CDNSKEY RRs).
|
<citetitle>RFC 7344</citetitle> (CDS and CDNSKEY RRs).
|
||||||
|
|||||||
@@ -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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2008-2012, 2014-2016, 2018, 2019 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
|
||||||
@@ -97,8 +97,10 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
The <span class="command"><strong>dnssec-dsfromkey</strong></span> command outputs DS (Delegation
|
The <span class="command"><strong>dnssec-dsfromkey</strong></span> command outputs DS (Delegation
|
||||||
Signer) resource records (RRs), or CDS (Child DS) RRs with the
|
Signer) resource records (RRs) and other similarly-constructed RRs:
|
||||||
<code class="option">-C</code> option.
|
with the <code class="option">-l</code> option it outputs DLV (DNSSEC Lookaside
|
||||||
|
Validation) RRs; or with the <code class="option">-C</code> it outputs CDS (Child
|
||||||
|
DS) RRs.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -180,7 +182,9 @@
|
|||||||
<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 the <code class="option">-l</code> option for generating DLV
|
||||||
|
records.
|
||||||
</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>
|
||||||
@@ -215,6 +219,16 @@
|
|||||||
<code class="option">directory</code>.
|
<code class="option">directory</code>.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
<dt><span class="term">-l <em class="replaceable"><code>domain</code></em></span></dt>
|
||||||
|
<dd>
|
||||||
|
<p>
|
||||||
|
Generate a DLV set instead of a DS set. The specified
|
||||||
|
<em class="replaceable"><code>domain</code></em> is appended to the name for each
|
||||||
|
record in the set.
|
||||||
|
This is mutually exclusive with the <code class="option">-C</code> option
|
||||||
|
for generating CDS records.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
<dt><span class="term">-s</span></dt>
|
<dt><span class="term">-s</span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -297,6 +311,7 @@
|
|||||||
</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> (DS RRs),
|
||||||
|
<em class="citetitle">RFC 4431</em> (DLV RRs),
|
||||||
<em class="citetitle">RFC 4509</em> (SHA-256 for DS RRs),
|
<em class="citetitle">RFC 4509</em> (SHA-256 for DS RRs),
|
||||||
<em class="citetitle">RFC 6605</em> (SHA-384 for DS RRs),
|
<em class="citetitle">RFC 6605</em> (SHA-384 for DS RRs),
|
||||||
<em class="citetitle">RFC 7344</em> (CDS and CDNSKEY RRs).
|
<em class="citetitle">RFC 7344</em> (CDS and CDNSKEY RRs).
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2013-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2013-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2013-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -174,7 +174,9 @@ loadkey(char *filename, unsigned char *key_buf, unsigned int key_buf_size,
|
|||||||
rdclass = dst_key_class(key);
|
rdclass = dst_key_class(key);
|
||||||
|
|
||||||
name = dns_fixedname_initname(&fixed);
|
name = dns_fixedname_initname(&fixed);
|
||||||
dns_name_copynf(dst_key_name(key), name);
|
result = dns_name_copy(dst_key_name(key), name, NULL);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("can't copy name");
|
||||||
|
|
||||||
dst_key_free(&key);
|
dst_key_free(&key);
|
||||||
}
|
}
|
||||||
@@ -298,7 +300,9 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("out of memory");
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -439,6 +443,7 @@ main(int argc, char **argv) {
|
|||||||
dns_rdataset_disassociate(&rdataset);
|
dns_rdataset_disassociate(&rdataset);
|
||||||
cleanup_logging(&log);
|
cleanup_logging(&log);
|
||||||
dst_lib_destroy();
|
dst_lib_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);
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2013-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2008-2012, 2014-2019 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
|
||||||
@@ -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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2008-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
#if USE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -368,6 +368,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;
|
||||||
@@ -694,6 +696,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
cleanup_logging(&log);
|
cleanup_logging(&log);
|
||||||
dst_lib_destroy();
|
dst_lib_destroy();
|
||||||
|
dns_name_destroy();
|
||||||
if (verbose > 10)
|
if (verbose > 10)
|
||||||
isc_mem_stats(mctx, stdout);
|
isc_mem_stats(mctx, stdout);
|
||||||
isc_mem_free(mctx, label);
|
isc_mem_free(mctx, label);
|
||||||
|
|||||||
@@ -44,7 +44,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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) 2008-2012, 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2008-2012, 2014-2019 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) 2000-2005, 2007-2012, 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2000-2005, 2007-2012, 2014-2019 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\-d\ \fR\fB\fIbits\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\fIpolicy\fR\fR] [\fB\-L\ \fR\fB\fIttl\fR\fR] [\fB\-l\ \fR\fB\fIfile\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\fIrrtype\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] {name}
|
\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}
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-keygen\fR
|
\fBdnssec\-keygen\fR
|
||||||
@@ -92,7 +92,8 @@ to generate TSIG keys\&.
|
|||||||
.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 4096 bits\&. Diffie Hellman keys must be between 128 and 4096 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
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-C
|
\-C
|
||||||
@@ -109,11 +110,6 @@ option suppresses them\&.
|
|||||||
Indicates that the DNS record containing the key should have the specified class\&. If not specified, class IN is used\&.
|
Indicates that the DNS record containing the key should have the specified class\&. If not specified, class IN is used\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-d \fIbits\fR
|
|
||||||
.RS 4
|
|
||||||
Key size in bits\&. For the algorithms RSASHA1, NSEC3RSASA1, RSASHA256 and RSASHA512 the key size must be in range 1024\-4096\&. DH size is between 128 and 4096\&. This option is ignored for algorithms ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-E \fIengine\fR
|
\-E \fIengine\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Specifies the cryptographic hardware to use, when applicable\&.
|
Specifies the cryptographic hardware to use, when applicable\&.
|
||||||
@@ -147,17 +143,6 @@ 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 \fIpolicy\fR
|
|
||||||
.RS 4
|
|
||||||
Create keys for a specific dnssec\-policy\&. If a policy uses multiple keys,
|
|
||||||
\fBdnssec\-keygen\fR
|
|
||||||
will generate multiple keys\&. This will also create a "\&.state" file to keep track of the key state\&.
|
|
||||||
.sp
|
|
||||||
This option creates keys according to the dnssec\-policy configuration, hence it cannot be used together with many of the other options that
|
|
||||||
\fBdnssec\-keygen\fR
|
|
||||||
provides\&.
|
|
||||||
.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
|
||||||
@@ -167,12 +152,6 @@ none
|
|||||||
is the same as leaving it unset\&.
|
is the same as leaving it unset\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-l \fIfile\fR
|
|
||||||
.RS 4
|
|
||||||
Provide a configuration file that contains a dnssec\-policy statement (matching the policy set with
|
|
||||||
\fB\-k\fR)\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-n \fInametype\fR
|
\-n \fInametype\fR
|
||||||
.RS 4
|
.RS 4
|
||||||
Specifies the owner type of the key\&. The value of
|
Specifies the owner type of the key\&. The value of
|
||||||
@@ -374,5 +353,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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2000-2005, 2007-2012, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+549
-817
File diff suppressed because it is too large
Load Diff
@@ -51,7 +51,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -67,7 +66,6 @@
|
|||||||
<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>
|
||||||
<arg choice="opt" rep="norepeat"><option>-D sync <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-D sync <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-d <replaceable class="parameter">bits</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-E <replaceable class="parameter">engine</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-E <replaceable class="parameter">engine</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-f <replaceable class="parameter">flag</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-f <replaceable class="parameter">flag</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-G</option></arg>
|
<arg choice="opt" rep="norepeat"><option>-G</option></arg>
|
||||||
@@ -76,9 +74,8 @@
|
|||||||
<arg choice="opt" rep="norepeat"><option>-I <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-I <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-i <replaceable class="parameter">interval</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-i <replaceable class="parameter">interval</replaceable></option></arg>
|
||||||
<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 <replaceable class="parameter">policy</replaceable></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>-l <replaceable class="parameter">file</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-n <replaceable class="parameter">nametype</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>
|
||||||
@@ -87,7 +84,6 @@
|
|||||||
<arg choice="opt" rep="norepeat"><option>-R <replaceable class="parameter">date/offset</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-R <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-S <replaceable class="parameter">key</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-S <replaceable class="parameter">key</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-s <replaceable class="parameter">strength</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-s <replaceable class="parameter">strength</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">rrtype</replaceable></option></arg>
|
|
||||||
<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>
|
||||||
@@ -180,8 +176,10 @@
|
|||||||
</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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@@ -211,18 +209,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-d <replaceable class="parameter">bits</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Key size in bits. For the algorithms RSASHA1, NSEC3RSASA1,
|
|
||||||
RSASHA256 and RSASHA512 the key size must be in range 1024-4096.
|
|
||||||
DH size is between 128 and 4096. This option is ignored for
|
|
||||||
algorithms ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-E <replaceable class="parameter">engine</replaceable></term>
|
<term>-E <replaceable class="parameter">engine</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -291,24 +277,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-k <replaceable class="parameter">policy</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Create keys for a specific dnssec-policy. If a policy uses
|
|
||||||
multiple keys, <command>dnssec-keygen</command> will generate
|
|
||||||
multiple keys. This will also create a ".state" file to keep
|
|
||||||
track of the key state.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
This option creates keys according to the dnssec-policy
|
|
||||||
configuration, hence it cannot be used together with many of
|
|
||||||
the other options that <command>dnssec-keygen</command>
|
|
||||||
provides.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-L <replaceable class="parameter">ttl</replaceable></term>
|
<term>-L <replaceable class="parameter">ttl</replaceable></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -325,16 +293,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-l <replaceable class="parameter">file</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Provide a configuration file that contains a dnssec-policy
|
|
||||||
statement (matching the policy set with <command>-k</command>).
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>-n <replaceable class="parameter">nametype</replaceable></term>
|
<term>-n <replaceable class="parameter">nametype</replaceable></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-2005, 2007-2012, 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2000-2005, 2007-2012, 2014-2019 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
|
||||||
@@ -41,7 +41,6 @@
|
|||||||
[<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>]
|
||||||
[<code class="option">-D sync <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-D sync <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-d <em class="replaceable"><code>bits</code></em></code>]
|
|
||||||
[<code class="option">-E <em class="replaceable"><code>engine</code></em></code>]
|
[<code class="option">-E <em class="replaceable"><code>engine</code></em></code>]
|
||||||
[<code class="option">-f <em class="replaceable"><code>flag</code></em></code>]
|
[<code class="option">-f <em class="replaceable"><code>flag</code></em></code>]
|
||||||
[<code class="option">-G</code>]
|
[<code class="option">-G</code>]
|
||||||
@@ -50,9 +49,8 @@
|
|||||||
[<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-i <em class="replaceable"><code>interval</code></em></code>]
|
[<code class="option">-i <em class="replaceable"><code>interval</code></em></code>]
|
||||||
[<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 <em class="replaceable"><code>policy</code></em></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">-l <em class="replaceable"><code>file</code></em></code>]
|
|
||||||
[<code class="option">-n <em class="replaceable"><code>nametype</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>]
|
||||||
@@ -61,7 +59,6 @@
|
|||||||
[<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>]
|
[<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>]
|
||||||
[<code class="option">-S <em class="replaceable"><code>key</code></em></code>]
|
[<code class="option">-S <em class="replaceable"><code>key</code></em></code>]
|
||||||
[<code class="option">-s <em class="replaceable"><code>strength</code></em></code>]
|
[<code class="option">-s <em class="replaceable"><code>strength</code></em></code>]
|
||||||
[<code class="option">-T <em class="replaceable"><code>rrtype</code></em></code>]
|
|
||||||
[<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>]
|
||||||
@@ -148,8 +145,10 @@
|
|||||||
</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>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-C</span></dt>
|
<dt><span class="term">-C</span></dt>
|
||||||
@@ -171,15 +170,6 @@
|
|||||||
the specified class. If not specified, class IN is used.
|
the specified class. If not specified, class IN is used.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="term">-d <em class="replaceable"><code>bits</code></em></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Key size in bits. For the algorithms RSASHA1, NSEC3RSASA1,
|
|
||||||
RSASHA256 and RSASHA512 the key size must be in range 1024-4096.
|
|
||||||
DH size is between 128 and 4096. This option is ignored for
|
|
||||||
algorithms ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-E <em class="replaceable"><code>engine</code></em></span></dt>
|
<dt><span class="term">-E <em class="replaceable"><code>engine</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
@@ -230,21 +220,6 @@
|
|||||||
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 <em class="replaceable"><code>policy</code></em></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Create keys for a specific dnssec-policy. If a policy uses
|
|
||||||
multiple keys, <span class="command"><strong>dnssec-keygen</strong></span> will generate
|
|
||||||
multiple keys. This will also create a ".state" file to keep
|
|
||||||
track of the key state.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
This option creates keys according to the dnssec-policy
|
|
||||||
configuration, hence it cannot be used together with many of
|
|
||||||
the other options that <span class="command"><strong>dnssec-keygen</strong></span>
|
|
||||||
provides.
|
|
||||||
</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>
|
||||||
@@ -258,13 +233,6 @@
|
|||||||
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">-l <em class="replaceable"><code>file</code></em></span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Provide a configuration file that contains a dnssec-policy
|
|
||||||
statement (matching the policy set with <span class="command"><strong>-k</strong></span>).
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Copyright (C) 2009, 2011, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009, 2011, 2014-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009, 2011, 2014-2016, 2018, 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
@@ -88,7 +88,9 @@ main(int argc, char **argv) {
|
|||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("Out of memory");
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if HAVE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
@@ -111,6 +113,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;
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
<year>2016</year>
|
<year>2016</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</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-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2009, 2011, 2014-2016, 2018, 2019 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-2020 Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (C) 2009-2011, 2014-2019 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-settime \- set the key timing metadata for a DNSSEC key
|
dnssec-settime \- set the key timing metadata for a DNSSEC key
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
.HP \w'\fBdnssec\-settime\fR\ 'u
|
.HP \w'\fBdnssec\-settime\fR\ 'u
|
||||||
\fBdnssec\-settime\fR [\fB\-f\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\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\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-h\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] [\fB\-s\fR] [\fB\-g\ \fR\fB\fIstate\fR\fR] [\fB\-d\ \fR\fB\fIstate\fR\fR\fB\ \fR\fB\fIdate/offset\fR\fR] [\fB\-k\ \fR\fB\fIstate\fR\fR\fB\ \fR\fB\fIdate/offset\fR\fR] [\fB\-r\ \fR\fB\fIstate\fR\fR\fB\ \fR\fB\fIdate/offset\fR\fR] [\fB\-z\ \fR\fB\fIstate\fR\fR\fB\ \fR\fB\fIdate/offset\fR\fR] {keyfile}
|
\fBdnssec\-settime\fR [\fB\-f\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\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\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-h\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] {keyfile}
|
||||||
.SH "DESCRIPTION"
|
.SH "DESCRIPTION"
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-settime\fR
|
\fBdnssec\-settime\fR
|
||||||
@@ -59,25 +59,7 @@ simply prints the key timing metadata already stored in the key\&.
|
|||||||
.PP
|
.PP
|
||||||
When key metadata fields are changed, both files of a key pair (Knnnn\&.+aaa+iiiii\&.key
|
When key metadata fields are changed, both files of a key pair (Knnnn\&.+aaa+iiiii\&.key
|
||||||
and
|
and
|
||||||
Knnnn\&.+aaa+iiiii\&.private) are regenerated\&.
|
Knnnn\&.+aaa+iiiii\&.private) are regenerated\&. Metadata fields are stored in the private file\&. A human\-readable description of the metadata is also placed in comments in the key file\&. The private file\*(Aqs permissions are always set to be inaccessible to anyone other than the owner (mode 0600)\&.
|
||||||
.PP
|
|
||||||
Metadata fields are stored in the private file\&. A human\-readable description of the metadata is also placed in comments in the key file\&. The private file\*(Aqs permissions are always set to be inaccessible to anyone other than the owner (mode 0600)\&.
|
|
||||||
.PP
|
|
||||||
When working with state files, it is possible to update the timing metadata in those files as well with
|
|
||||||
\fB\-s\fR\&. If this option is used you can also update key states with
|
|
||||||
\fB\-d\fR
|
|
||||||
(DS),
|
|
||||||
\fB\-k\fR
|
|
||||||
(DNSKEY),
|
|
||||||
\fB\-r\fR
|
|
||||||
(RRSIG of KSK), or
|
|
||||||
\fB\-z\fR
|
|
||||||
(RRSIG of ZSK)\&. Allowed states are HIDDEN, RUMOURED, OMNIPRESENT, and UNRETENTIVE\&.
|
|
||||||
.PP
|
|
||||||
You can also set the goal state of the key with
|
|
||||||
\fB\-g\fR\&. This should be either HIDDEN or OMNIPRESENT (representing whether the key should be removed from the zone, or published)\&.
|
|
||||||
.PP
|
|
||||||
It is NOT RECOMMENDED to manipulate state files manually except for testing purposes\&.
|
|
||||||
.SH "OPTIONS"
|
.SH "OPTIONS"
|
||||||
.PP
|
.PP
|
||||||
\-f
|
\-f
|
||||||
@@ -174,39 +156,6 @@ If the key is being set to be an explicit successor to another key, then the def
|
|||||||
.sp
|
.sp
|
||||||
As with date offsets, if the argument is followed by one of the suffixes \*(Aqy\*(Aq, \*(Aqmo\*(Aq, \*(Aqw\*(Aq, \*(Aqd\*(Aq, \*(Aqh\*(Aq, or \*(Aqmi\*(Aq, then the interval is measured in years, months, weeks, days, hours, or minutes, respectively\&. Without a suffix, the interval is measured in seconds\&.
|
As with date offsets, if the argument is followed by one of the suffixes \*(Aqy\*(Aq, \*(Aqmo\*(Aq, \*(Aqw\*(Aq, \*(Aqd\*(Aq, \*(Aqh\*(Aq, or \*(Aqmi\*(Aq, then the interval is measured in years, months, weeks, days, hours, or minutes, respectively\&. Without a suffix, the interval is measured in seconds\&.
|
||||||
.RE
|
.RE
|
||||||
.SH "KEY STATE OPTIONS"
|
|
||||||
.PP
|
|
||||||
Known key states are HIDDEN, RUMOURED, OMNIPRESENT and UNRETENTIVE\&. These should not be set manually except for testing purposes\&.
|
|
||||||
.PP
|
|
||||||
\-s
|
|
||||||
.RS 4
|
|
||||||
When setting key timing data, also update the state file\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-g
|
|
||||||
.RS 4
|
|
||||||
Set the goal state for this key\&. Must be HIDDEN or OMNIPRESENT\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-d
|
|
||||||
.RS 4
|
|
||||||
Set the DS state for this key, and when it was last changed\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-k
|
|
||||||
.RS 4
|
|
||||||
Set the DNSKEY state for this key, and when it was last changed\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-r
|
|
||||||
.RS 4
|
|
||||||
Set the RRSIG (KSK) state for this key, and when it was last changed\&.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-z
|
|
||||||
.RS 4
|
|
||||||
Set the RRSIG (ZSK) state for this key, and when it was last changed\&.
|
|
||||||
.RE
|
|
||||||
.SH "PRINTING OPTIONS"
|
.SH "PRINTING OPTIONS"
|
||||||
.PP
|
.PP
|
||||||
\fBdnssec\-settime\fR
|
\fBdnssec\-settime\fR
|
||||||
@@ -251,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-2020 Internet Systems Consortium, Inc. ("ISC")
|
Copyright \(co 2009-2011, 2014-2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
.br
|
.br
|
||||||
|
|||||||
+165
-335
@@ -88,15 +88,6 @@ usage(void) {
|
|||||||
fprintf(stderr, " -i <interval>: prepublication interval for "
|
fprintf(stderr, " -i <interval>: prepublication interval for "
|
||||||
"successor key "
|
"successor key "
|
||||||
"(default: 30 days)\n");
|
"(default: 30 days)\n");
|
||||||
fprintf(stderr, "Key state options:\n");
|
|
||||||
fprintf(stderr, " -s: update key state file (default no)\n");
|
|
||||||
fprintf(stderr, " -g state: set the goal state for this key\n");
|
|
||||||
fprintf(stderr, " -d state date/[+-]offset: set the DS state\n");
|
|
||||||
fprintf(stderr, " -k state date/[+-]offset: set the DNSKEY state\n");
|
|
||||||
fprintf(stderr, " -r state date/[+-]offset: set the RRSIG (KSK) "
|
|
||||||
"state\n");
|
|
||||||
fprintf(stderr, " -z state date/[+-]offset: set the RRSIG (ZSK) "
|
|
||||||
"state\n");
|
|
||||||
fprintf(stderr, "Printing options:\n");
|
fprintf(stderr, "Printing options:\n");
|
||||||
fprintf(stderr, " -p C/P/Psync/A/R/I/D/Dsync/all: print a "
|
fprintf(stderr, " -p C/P/Psync/A/R/I/D/Dsync/all: print a "
|
||||||
"particular time value or values\n");
|
"particular time value or values\n");
|
||||||
@@ -132,87 +123,29 @@ printtime(dst_key_t *key, int type, const char *tag, bool epoch,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
writekey(dst_key_t *key, const char *directory, bool write_state)
|
|
||||||
{
|
|
||||||
char newname[1024];
|
|
||||||
char keystr[DST_KEY_FORMATSIZE];
|
|
||||||
isc_buffer_t buf;
|
|
||||||
isc_result_t result;
|
|
||||||
int options = DST_TYPE_PUBLIC|DST_TYPE_PRIVATE;
|
|
||||||
|
|
||||||
if (write_state) {
|
|
||||||
options |= DST_TYPE_STATE;
|
|
||||||
}
|
|
||||||
|
|
||||||
isc_buffer_init(&buf, newname, sizeof(newname));
|
|
||||||
result = dst_key_buildfilename(key, DST_TYPE_PUBLIC, directory, &buf);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
fatal("Failed to build public key filename: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
}
|
|
||||||
|
|
||||||
result = dst_key_tofile(key, options, directory);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
dst_key_format(key, keystr, sizeof(keystr));
|
|
||||||
fatal("Failed to write key %s: %s", keystr,
|
|
||||||
isc_result_totext(result));
|
|
||||||
}
|
|
||||||
printf("%s\n", newname);
|
|
||||||
|
|
||||||
isc_buffer_clear(&buf);
|
|
||||||
result = dst_key_buildfilename(key, DST_TYPE_PRIVATE, directory, &buf);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
fatal("Failed to build private key filename: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
}
|
|
||||||
printf("%s\n", newname);
|
|
||||||
|
|
||||||
if (write_state) {
|
|
||||||
isc_buffer_clear(&buf);
|
|
||||||
result = dst_key_buildfilename(key, DST_TYPE_STATE, directory,
|
|
||||||
&buf);
|
|
||||||
if (result != ISC_R_SUCCESS) {
|
|
||||||
fatal("Failed to build key state filename: %s",
|
|
||||||
isc_result_totext(result));
|
|
||||||
}
|
|
||||||
printf("%s\n", newname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
const char *filename = NULL;
|
const char *filename = NULL;
|
||||||
char *directory = NULL;
|
char *directory = NULL;
|
||||||
|
char newname[1024];
|
||||||
char keystr[DST_KEY_FORMATSIZE];
|
char keystr[DST_KEY_FORMATSIZE];
|
||||||
char *endp, *p;
|
char *endp, *p;
|
||||||
int ch;
|
int ch;
|
||||||
const char *predecessor = NULL;
|
const char *predecessor = NULL;
|
||||||
dst_key_t *prevkey = NULL;
|
dst_key_t *prevkey = NULL;
|
||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
|
isc_buffer_t buf;
|
||||||
dns_name_t *name = NULL;
|
dns_name_t *name = NULL;
|
||||||
dns_secalg_t alg = 0;
|
dns_secalg_t alg = 0;
|
||||||
unsigned int size = 0;
|
unsigned int size = 0;
|
||||||
uint16_t flags = 0;
|
uint16_t flags = 0;
|
||||||
int prepub = -1;
|
int prepub = -1;
|
||||||
int options;
|
|
||||||
dns_ttl_t ttl = 0;
|
dns_ttl_t ttl = 0;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
isc_stdtime_t dstime = 0, dnskeytime = 0;
|
|
||||||
isc_stdtime_t krrsigtime = 0, zrrsigtime = 0;
|
|
||||||
isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0;
|
isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0;
|
||||||
isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0;
|
isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0;
|
||||||
dst_key_state_t goal = DST_KEY_STATE_NA;
|
|
||||||
dst_key_state_t ds = DST_KEY_STATE_NA;
|
|
||||||
dst_key_state_t dnskey = DST_KEY_STATE_NA;
|
|
||||||
dst_key_state_t krrsig = DST_KEY_STATE_NA;
|
|
||||||
dst_key_state_t zrrsig = DST_KEY_STATE_NA;
|
|
||||||
bool setgoal = false, setds = false, setdnskey = false;
|
|
||||||
bool setkrrsig = false, setzrrsig = false;
|
|
||||||
bool setdstime = false, setdnskeytime = false;
|
|
||||||
bool setkrrsigtime = false, setzrrsigtime = false;
|
|
||||||
bool setpub = false, setact = false;
|
bool setpub = false, setact = false;
|
||||||
bool setrev = false, setinact = false;
|
bool setrev = false, setinact = false;
|
||||||
bool setdel = false, setttl = false;
|
bool setdel = false, setttl = false;
|
||||||
@@ -223,21 +156,20 @@ main(int argc, char **argv) {
|
|||||||
bool printact = false, printrev = false;
|
bool printact = false, printrev = false;
|
||||||
bool printinact = false, printdel = false;
|
bool printinact = false, printdel = false;
|
||||||
bool force = false;
|
bool force = false;
|
||||||
bool epoch = false;
|
bool epoch = false;
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
bool write_state = false;
|
|
||||||
isc_log_t *log = NULL;
|
isc_log_t *log = NULL;
|
||||||
isc_stdtime_t syncadd = 0, syncdel = 0;
|
isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
bool unsetsyncadd = false, setsyncadd = false;
|
bool unsetsyncadd = false, setsyncadd = false;
|
||||||
bool unsetsyncdel = false, setsyncdel = false;
|
bool unsetsyncdel = false, setsyncdel = false;
|
||||||
bool printsyncadd = false, printsyncdel = false;
|
bool printsyncadd = false, printsyncdel = false;
|
||||||
|
|
||||||
options = DST_TYPE_PUBLIC|DST_TYPE_PRIVATE|DST_TYPE_STATE;
|
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
isc_mem_create(&mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("Out of memory");
|
||||||
|
|
||||||
setup_logging(mctx, &log);
|
setup_logging(mctx, &log);
|
||||||
|
|
||||||
@@ -250,9 +182,113 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
|
|
||||||
#define CMDLINE_FLAGS "A:D:d:E:fg:hI:i:K:k:L:P:p:R:r:S:suv:Vz:"
|
#define CMDLINE_FLAGS "A:D:E:fhI:i:K:L:P:p:R:S:uv: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) {
|
||||||
|
case 'E':
|
||||||
|
engine = isc_commandline_argument;
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
force = true;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
p = isc_commandline_argument;
|
||||||
|
if (!strcasecmp(p, "all")) {
|
||||||
|
printcreate = true;
|
||||||
|
printpub = true;
|
||||||
|
printact = true;
|
||||||
|
printrev = true;
|
||||||
|
printinact = true;
|
||||||
|
printdel = true;
|
||||||
|
printsyncadd = true;
|
||||||
|
printsyncdel = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
switch (*p++) {
|
||||||
|
case 'C':
|
||||||
|
printcreate = true;
|
||||||
|
break;
|
||||||
|
case 'P':
|
||||||
|
if (!strncmp(p, "sync", 4)) {
|
||||||
|
p += 4;
|
||||||
|
printsyncadd = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
printpub = true;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
printact = true;
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
printrev = true;
|
||||||
|
break;
|
||||||
|
case 'I':
|
||||||
|
printinact = true;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
if (!strncmp(p, "sync", 4)) {
|
||||||
|
p += 4;
|
||||||
|
printsyncdel = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
printdel = true;
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (*p != '\0');
|
||||||
|
break;
|
||||||
|
case 'u':
|
||||||
|
epoch = true;
|
||||||
|
break;
|
||||||
|
case 'K':
|
||||||
|
/*
|
||||||
|
* We don't have to copy it here, but do it to
|
||||||
|
* simplify cleanup later
|
||||||
|
*/
|
||||||
|
directory = isc_mem_strdup(mctx,
|
||||||
|
isc_commandline_argument);
|
||||||
|
if (directory == NULL) {
|
||||||
|
fatal("Failed to allocate memory for "
|
||||||
|
"directory");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
ttl = strtottl(isc_commandline_argument);
|
||||||
|
setttl = true;
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
verbose = strtol(isc_commandline_argument, &endp, 0);
|
||||||
|
if (*endp != '\0')
|
||||||
|
fatal("-v must be followed by a number");
|
||||||
|
break;
|
||||||
|
case 'P':
|
||||||
|
/* -Psync ? */
|
||||||
|
if (isoptarg("sync", argv, usage)) {
|
||||||
|
if (unsetsyncadd || setsyncadd)
|
||||||
|
fatal("-P sync specified more than "
|
||||||
|
"once");
|
||||||
|
|
||||||
|
changed = true;
|
||||||
|
syncadd = strtotime(isc_commandline_argument,
|
||||||
|
now, now, &setsyncadd);
|
||||||
|
unsetsyncadd = !setsyncadd;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
(void)isoptarg("dnskey", argv, usage);
|
||||||
|
if (setpub || unsetpub)
|
||||||
|
fatal("-P specified more than once");
|
||||||
|
|
||||||
|
changed = true;
|
||||||
|
pub = strtotime(isc_commandline_argument,
|
||||||
|
now, now, &setpub);
|
||||||
|
unsetpub = !setpub;
|
||||||
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
if (setact || unsetact)
|
if (setact || unsetact)
|
||||||
fatal("-A specified more than once");
|
fatal("-A specified more than once");
|
||||||
@@ -262,6 +298,24 @@ main(int argc, char **argv) {
|
|||||||
now, now, &setact);
|
now, now, &setact);
|
||||||
unsetact = !setact;
|
unsetact = !setact;
|
||||||
break;
|
break;
|
||||||
|
case 'R':
|
||||||
|
if (setrev || unsetrev)
|
||||||
|
fatal("-R specified more than once");
|
||||||
|
|
||||||
|
changed = true;
|
||||||
|
rev = strtotime(isc_commandline_argument,
|
||||||
|
now, now, &setrev);
|
||||||
|
unsetrev = !setrev;
|
||||||
|
break;
|
||||||
|
case 'I':
|
||||||
|
if (setinact || unsetinact)
|
||||||
|
fatal("-I specified more than once");
|
||||||
|
|
||||||
|
changed = true;
|
||||||
|
inact = strtotime(isc_commandline_argument,
|
||||||
|
now, now, &setinact);
|
||||||
|
unsetinact = !setinact;
|
||||||
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
/* -Dsync ? */
|
/* -Dsync ? */
|
||||||
if (isoptarg("sync", argv, usage)) {
|
if (isoptarg("sync", argv, usage)) {
|
||||||
@@ -285,37 +339,11 @@ main(int argc, char **argv) {
|
|||||||
now, now, &setdel);
|
now, now, &setdel);
|
||||||
unsetdel = !setdel;
|
unsetdel = !setdel;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'S':
|
||||||
if (setds) {
|
predecessor = isc_commandline_argument;
|
||||||
fatal("-d specified more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
ds = strtokeystate(isc_commandline_argument);
|
|
||||||
setds = true;
|
|
||||||
/* time */
|
|
||||||
(void)isoptarg(isc_commandline_argument, argv, usage);
|
|
||||||
dstime = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setdstime);
|
|
||||||
break;
|
break;
|
||||||
case 'E':
|
case 'i':
|
||||||
engine = isc_commandline_argument;
|
prepub = strtottl(isc_commandline_argument);
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
force = true;
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
if (setgoal) {
|
|
||||||
fatal("-g specified more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
goal = strtokeystate(isc_commandline_argument);
|
|
||||||
if (goal != DST_KEY_STATE_NA &&
|
|
||||||
goal != DST_KEY_STATE_HIDDEN &&
|
|
||||||
goal != DST_KEY_STATE_OMNIPRESENT) {
|
|
||||||
fatal("-g must be either none, hidden, or "
|
|
||||||
"omnipresent");
|
|
||||||
}
|
|
||||||
setgoal = true;
|
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
if (isc_commandline_option != '?')
|
if (isc_commandline_option != '?')
|
||||||
@@ -325,165 +353,10 @@ main(int argc, char **argv) {
|
|||||||
case 'h':
|
case 'h':
|
||||||
/* Does not return. */
|
/* Does not return. */
|
||||||
usage();
|
usage();
|
||||||
case 'I':
|
|
||||||
if (setinact || unsetinact)
|
|
||||||
fatal("-I specified more than once");
|
|
||||||
|
|
||||||
changed = true;
|
|
||||||
inact = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setinact);
|
|
||||||
unsetinact = !setinact;
|
|
||||||
break;
|
|
||||||
case 'i':
|
|
||||||
prepub = strtottl(isc_commandline_argument);
|
|
||||||
break;
|
|
||||||
case 'K':
|
|
||||||
/*
|
|
||||||
* We don't have to copy it here, but do it to
|
|
||||||
* simplify cleanup later
|
|
||||||
*/
|
|
||||||
directory = isc_mem_strdup(mctx,
|
|
||||||
isc_commandline_argument);
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
if (setdnskey) {
|
|
||||||
fatal("-k specified more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
dnskey = strtokeystate(isc_commandline_argument);
|
|
||||||
setdnskey = true;
|
|
||||||
/* time */
|
|
||||||
(void)isoptarg(isc_commandline_argument, argv, usage);
|
|
||||||
dnskeytime = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setdnskeytime);
|
|
||||||
break;
|
|
||||||
case 'L':
|
|
||||||
ttl = strtottl(isc_commandline_argument);
|
|
||||||
setttl = true;
|
|
||||||
break;
|
|
||||||
case 'P':
|
|
||||||
/* -Psync ? */
|
|
||||||
if (isoptarg("sync", argv, usage)) {
|
|
||||||
if (unsetsyncadd || setsyncadd)
|
|
||||||
fatal("-P sync specified more than "
|
|
||||||
"once");
|
|
||||||
|
|
||||||
changed = true;
|
|
||||||
syncadd = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setsyncadd);
|
|
||||||
unsetsyncadd = !setsyncadd;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
(void)isoptarg("dnskey", argv, usage);
|
|
||||||
if (setpub || unsetpub)
|
|
||||||
fatal("-P specified more than once");
|
|
||||||
|
|
||||||
changed = true;
|
|
||||||
pub = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setpub);
|
|
||||||
unsetpub = !setpub;
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
p = isc_commandline_argument;
|
|
||||||
if (!strcasecmp(p, "all")) {
|
|
||||||
printcreate = true;
|
|
||||||
printpub = true;
|
|
||||||
printact = true;
|
|
||||||
printrev = true;
|
|
||||||
printinact = true;
|
|
||||||
printdel = true;
|
|
||||||
printsyncadd = true;
|
|
||||||
printsyncdel = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
switch (*p++) {
|
|
||||||
case 'A':
|
|
||||||
printact = true;
|
|
||||||
break;
|
|
||||||
case 'C':
|
|
||||||
printcreate = true;
|
|
||||||
break;
|
|
||||||
case 'D':
|
|
||||||
if (!strncmp(p, "sync", 4)) {
|
|
||||||
p += 4;
|
|
||||||
printsyncdel = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printdel = true;
|
|
||||||
break;
|
|
||||||
case 'I':
|
|
||||||
printinact = true;
|
|
||||||
break;
|
|
||||||
case 'P':
|
|
||||||
if (!strncmp(p, "sync", 4)) {
|
|
||||||
p += 4;
|
|
||||||
printsyncadd = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printpub = true;
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
printrev = true;
|
|
||||||
break;
|
|
||||||
case ' ':
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (*p != '\0');
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
if (setrev || unsetrev)
|
|
||||||
fatal("-R specified more than once");
|
|
||||||
|
|
||||||
changed = true;
|
|
||||||
rev = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setrev);
|
|
||||||
unsetrev = !setrev;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
if (setkrrsig) {
|
|
||||||
fatal("-r specified more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
krrsig = strtokeystate(isc_commandline_argument);
|
|
||||||
setkrrsig = true;
|
|
||||||
/* time */
|
|
||||||
(void)isoptarg(isc_commandline_argument, argv, usage);
|
|
||||||
krrsigtime = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setkrrsigtime);
|
|
||||||
break;
|
|
||||||
case 'S':
|
|
||||||
predecessor = isc_commandline_argument;
|
|
||||||
break;
|
|
||||||
case 's':
|
|
||||||
write_state = true;
|
|
||||||
break;
|
|
||||||
case 'u':
|
|
||||||
epoch = true;
|
|
||||||
break;
|
|
||||||
case 'V':
|
case 'V':
|
||||||
/* Does not return. */
|
/* Does not return. */
|
||||||
version(program);
|
version(program);
|
||||||
case 'v':
|
|
||||||
verbose = strtol(isc_commandline_argument, &endp, 0);
|
|
||||||
if (*endp != '\0')
|
|
||||||
fatal("-v must be followed by a number");
|
|
||||||
break;
|
|
||||||
case 'z':
|
|
||||||
if (setzrrsig) {
|
|
||||||
fatal("-z specified more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
zrrsig = strtokeystate(isc_commandline_argument);
|
|
||||||
setzrrsig = true;
|
|
||||||
(void)isoptarg(isc_commandline_argument, argv, usage);
|
|
||||||
zrrsigtime = strtotime(isc_commandline_argument,
|
|
||||||
now, now, &setzrrsigtime);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "%s: unhandled option -%c\n",
|
fprintf(stderr, "%s: unhandled option -%c\n",
|
||||||
@@ -498,12 +371,6 @@ main(int argc, char **argv) {
|
|||||||
if (argc > isc_commandline_index + 1)
|
if (argc > isc_commandline_index + 1)
|
||||||
fatal("Extraneous arguments");
|
fatal("Extraneous arguments");
|
||||||
|
|
||||||
if ((setgoal || setds || setdnskey || setkrrsig || setzrrsig) &&
|
|
||||||
!write_state)
|
|
||||||
{
|
|
||||||
fatal("Options -g, -d, -k, -r and -z require -s to be set");
|
|
||||||
}
|
|
||||||
|
|
||||||
result = dst_lib_init(mctx, engine);
|
result = dst_lib_init(mctx, engine);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("Could not initialize dst: %s",
|
fatal("Could not initialize dst: %s",
|
||||||
@@ -520,7 +387,9 @@ main(int argc, char **argv) {
|
|||||||
if (setact || unsetact)
|
if (setact || unsetact)
|
||||||
fatal("-S and -A cannot be used together");
|
fatal("-S and -A cannot be used together");
|
||||||
|
|
||||||
result = dst_key_fromnamedfile(predecessor, directory, options,
|
result = dst_key_fromnamedfile(predecessor, directory,
|
||||||
|
DST_TYPE_PUBLIC |
|
||||||
|
DST_TYPE_PRIVATE,
|
||||||
mctx, &prevkey);
|
mctx, &prevkey);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("Invalid keyfile %s: %s",
|
fatal("Invalid keyfile %s: %s",
|
||||||
@@ -612,8 +481,9 @@ main(int argc, char **argv) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dst_key_fromnamedfile(filename, directory, options, mctx,
|
result = dst_key_fromnamedfile(filename, directory,
|
||||||
&key);
|
DST_TYPE_PUBLIC | DST_TYPE_PRIVATE,
|
||||||
|
mctx, &key);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("Invalid keyfile %s: %s",
|
fatal("Invalid keyfile %s: %s",
|
||||||
filename, isc_result_totext(result));
|
filename, isc_result_totext(result));
|
||||||
@@ -714,11 +584,6 @@ main(int argc, char **argv) {
|
|||||||
if (setttl)
|
if (setttl)
|
||||||
dst_key_setttl(key, ttl);
|
dst_key_setttl(key, ttl);
|
||||||
|
|
||||||
if (predecessor != NULL && prevkey != NULL) {
|
|
||||||
dst_key_setnum(prevkey, DST_NUM_SUCCESSOR, dst_key_id(key));
|
|
||||||
dst_key_setnum(key, DST_NUM_PREDECESSOR, dst_key_id(prevkey));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No metadata changes were made but we're forcing an upgrade
|
* No metadata changes were made but we're forcing an upgrade
|
||||||
* to the new format anyway: use "-P now -A now" as the default
|
* to the new format anyway: use "-P now -A now" as the default
|
||||||
@@ -729,63 +594,6 @@ main(int argc, char **argv) {
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure the key state goals are written.
|
|
||||||
*/
|
|
||||||
if (write_state) {
|
|
||||||
if (setgoal) {
|
|
||||||
if (goal == DST_KEY_STATE_NA) {
|
|
||||||
dst_key_unsetstate(key, DST_KEY_GOAL);
|
|
||||||
} else {
|
|
||||||
dst_key_setstate(key, DST_KEY_GOAL, goal);
|
|
||||||
}
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (setds) {
|
|
||||||
if (ds == DST_KEY_STATE_NA) {
|
|
||||||
dst_key_unsetstate(key, DST_KEY_DS);
|
|
||||||
dst_key_unsettime(key, DST_TIME_DS);
|
|
||||||
} else {
|
|
||||||
dst_key_setstate(key, DST_KEY_DS, ds);
|
|
||||||
dst_key_settime(key, DST_TIME_DS, dstime);
|
|
||||||
}
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (setdnskey) {
|
|
||||||
if (dnskey == DST_KEY_STATE_NA) {
|
|
||||||
dst_key_unsetstate(key, DST_KEY_DNSKEY);
|
|
||||||
dst_key_unsettime(key, DST_TIME_DNSKEY);
|
|
||||||
} else {
|
|
||||||
dst_key_setstate(key, DST_KEY_DNSKEY, dnskey);
|
|
||||||
dst_key_settime(key, DST_TIME_DNSKEY,
|
|
||||||
dnskeytime);
|
|
||||||
}
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (setkrrsig) {
|
|
||||||
if (krrsig == DST_KEY_STATE_NA) {
|
|
||||||
dst_key_unsetstate(key, DST_KEY_KRRSIG);
|
|
||||||
dst_key_unsettime(key, DST_TIME_KRRSIG);
|
|
||||||
} else {
|
|
||||||
dst_key_setstate(key, DST_KEY_KRRSIG, krrsig);
|
|
||||||
dst_key_settime(key, DST_TIME_KRRSIG,
|
|
||||||
krrsigtime);
|
|
||||||
}
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
if (setzrrsig) {
|
|
||||||
if (zrrsig == DST_KEY_STATE_NA) {
|
|
||||||
dst_key_unsetstate(key, DST_KEY_ZRRSIG);
|
|
||||||
dst_key_unsettime(key, DST_TIME_ZRRSIG);
|
|
||||||
} else {
|
|
||||||
dst_key_setstate(key, DST_KEY_ZRRSIG, zrrsig);
|
|
||||||
dst_key_settime(key, DST_TIME_ZRRSIG,
|
|
||||||
zrrsigtime);
|
|
||||||
}
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!changed && setttl)
|
if (!changed && setttl)
|
||||||
changed = true;
|
changed = true;
|
||||||
|
|
||||||
@@ -819,10 +627,32 @@ main(int argc, char **argv) {
|
|||||||
epoch, stdout);
|
epoch, stdout);
|
||||||
|
|
||||||
if (changed) {
|
if (changed) {
|
||||||
writekey(key, directory, write_state);
|
isc_buffer_init(&buf, newname, sizeof(newname));
|
||||||
if (predecessor != NULL && prevkey != NULL) {
|
result = dst_key_buildfilename(key, DST_TYPE_PUBLIC, directory,
|
||||||
writekey(prevkey, directory, write_state);
|
&buf);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
fatal("Failed to build public key filename: %s",
|
||||||
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result = dst_key_tofile(key, DST_TYPE_PUBLIC|DST_TYPE_PRIVATE,
|
||||||
|
directory);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
dst_key_format(key, keystr, sizeof(keystr));
|
||||||
|
fatal("Failed to write key %s: %s", keystr,
|
||||||
|
isc_result_totext(result));
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s\n", newname);
|
||||||
|
|
||||||
|
isc_buffer_clear(&buf);
|
||||||
|
result = dst_key_buildfilename(key, DST_TYPE_PRIVATE, directory,
|
||||||
|
&buf);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
fatal("Failed to build private key filename: %s",
|
||||||
|
isc_result_totext(result));
|
||||||
|
}
|
||||||
|
printf("%s\n", newname);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prevkey != NULL)
|
if (prevkey != NULL)
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
<year>2017</year>
|
<year>2017</year>
|
||||||
<year>2018</year>
|
<year>2018</year>
|
||||||
<year>2019</year>
|
<year>2019</year>
|
||||||
<year>2020</year>
|
|
||||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
</docinfo>
|
</docinfo>
|
||||||
@@ -65,12 +64,6 @@
|
|||||||
<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>-E <replaceable class="parameter">engine</replaceable></option></arg>
|
<arg choice="opt" rep="norepeat"><option>-E <replaceable class="parameter">engine</replaceable></option></arg>
|
||||||
<arg choice="opt" rep="norepeat"><option>-s</option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-g <replaceable class="parameter">state</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-d <replaceable class="parameter">state</replaceable> <replaceable class="parameter">date/offset</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-k <replaceable class="parameter">state</replaceable> <replaceable class="parameter">date/offset</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-r <replaceable class="parameter">state</replaceable> <replaceable class="parameter">date/offset</replaceable></option></arg>
|
|
||||||
<arg choice="opt" rep="norepeat"><option>-z <replaceable class="parameter">state</replaceable> <replaceable class="parameter">date/offset</replaceable></option></arg>
|
|
||||||
<arg choice="req" rep="norepeat">keyfile</arg>
|
<arg choice="req" rep="norepeat">keyfile</arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
@@ -95,30 +88,11 @@
|
|||||||
When key metadata fields are changed, both files of a key
|
When key metadata fields are changed, both files of a key
|
||||||
pair (<filename>Knnnn.+aaa+iiiii.key</filename> and
|
pair (<filename>Knnnn.+aaa+iiiii.key</filename> and
|
||||||
<filename>Knnnn.+aaa+iiiii.private</filename>) are regenerated.
|
<filename>Knnnn.+aaa+iiiii.private</filename>) are regenerated.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Metadata fields are stored in the private file. A human-readable
|
Metadata fields are stored in the private file. A human-readable
|
||||||
description of the metadata is also placed in comments in the key
|
description of the metadata is also placed in comments in the key
|
||||||
file. The private file's permissions are always set to be
|
file. The private file's permissions are always set to be
|
||||||
inaccessible to anyone other than the owner (mode 0600).
|
inaccessible to anyone other than the owner (mode 0600).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
|
||||||
When working with state files, it is possible to update the timing
|
|
||||||
metadata in those files as well with <option>-s</option>. If this
|
|
||||||
option is used you can also update key states with <option>-d</option>
|
|
||||||
(DS), <option>-k</option> (DNSKEY), <option>-r</option> (RRSIG of KSK),
|
|
||||||
or <option>-z</option> (RRSIG of ZSK). Allowed states are HIDDEN,
|
|
||||||
RUMOURED, OMNIPRESENT, and UNRETENTIVE.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
You can also set the goal state of the key with <option>-g</option>.
|
|
||||||
This should be either HIDDEN or OMNIPRESENT (representing whether the
|
|
||||||
key should be removed from the zone, or published).
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
It is NOT RECOMMENDED to manipulate state files manually except for
|
|
||||||
testing purposes.
|
|
||||||
</para>
|
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>OPTIONS</title></info>
|
<refsection><info><title>OPTIONS</title></info>
|
||||||
@@ -345,74 +319,6 @@
|
|||||||
</variablelist>
|
</variablelist>
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
<refsection><info><title>KEY STATE OPTIONS</title></info>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
Known key states are HIDDEN, RUMOURED, OMNIPRESENT and UNRETENTIVE.
|
|
||||||
These should not be set manually except for testing purposes.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-s</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
When setting key timing data, also update the state file.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-g</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Set the goal state for this key. Must be HIDDEN or OMNIPRESENT.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-d</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Set the DS state for this key, and when it was last changed.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-k</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Set the DNSKEY state for this key, and when it was last changed.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-r</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Set the RRSIG (KSK) state for this key, and when it was last
|
|
||||||
changed.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>-z</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Set the RRSIG (ZSK) state for this key, and when it was last
|
|
||||||
changed.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
</variablelist>
|
|
||||||
</refsection>
|
|
||||||
|
|
||||||
<refsection><info><title>PRINTING OPTIONS</title></info>
|
<refsection><info><title>PRINTING OPTIONS</title></info>
|
||||||
|
|
||||||
<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) 2009-2011, 2014-2020 Internet Systems Consortium, Inc. ("ISC")
|
- Copyright (C) 2009-2011, 2014-2019 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
|
||||||
@@ -49,12 +49,6 @@
|
|||||||
[<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">-E <em class="replaceable"><code>engine</code></em></code>]
|
[<code class="option">-E <em class="replaceable"><code>engine</code></em></code>]
|
||||||
[<code class="option">-s</code>]
|
|
||||||
[<code class="option">-g <em class="replaceable"><code>state</code></em></code>]
|
|
||||||
[<code class="option">-d <em class="replaceable"><code>state</code></em> <em class="replaceable"><code>date/offset</code></em></code>]
|
|
||||||
[<code class="option">-k <em class="replaceable"><code>state</code></em> <em class="replaceable"><code>date/offset</code></em></code>]
|
|
||||||
[<code class="option">-r <em class="replaceable"><code>state</code></em> <em class="replaceable"><code>date/offset</code></em></code>]
|
|
||||||
[<code class="option">-z <em class="replaceable"><code>state</code></em> <em class="replaceable"><code>date/offset</code></em></code>]
|
|
||||||
{keyfile}
|
{keyfile}
|
||||||
</p></div>
|
</p></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -80,30 +74,11 @@
|
|||||||
When key metadata fields are changed, both files of a key
|
When key metadata fields are changed, both files of a key
|
||||||
pair (<code class="filename">Knnnn.+aaa+iiiii.key</code> and
|
pair (<code class="filename">Knnnn.+aaa+iiiii.key</code> and
|
||||||
<code class="filename">Knnnn.+aaa+iiiii.private</code>) are regenerated.
|
<code class="filename">Knnnn.+aaa+iiiii.private</code>) are regenerated.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Metadata fields are stored in the private file. A human-readable
|
Metadata fields are stored in the private file. A human-readable
|
||||||
description of the metadata is also placed in comments in the key
|
description of the metadata is also placed in comments in the key
|
||||||
file. The private file's permissions are always set to be
|
file. The private file's permissions are always set to be
|
||||||
inaccessible to anyone other than the owner (mode 0600).
|
inaccessible to anyone other than the owner (mode 0600).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
When working with state files, it is possible to update the timing
|
|
||||||
metadata in those files as well with <code class="option">-s</code>. If this
|
|
||||||
option is used you can also update key states with <code class="option">-d</code>
|
|
||||||
(DS), <code class="option">-k</code> (DNSKEY), <code class="option">-r</code> (RRSIG of KSK),
|
|
||||||
or <code class="option">-z</code> (RRSIG of ZSK). Allowed states are HIDDEN,
|
|
||||||
RUMOURED, OMNIPRESENT, and UNRETENTIVE.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You can also set the goal state of the key with <code class="option">-g</code>.
|
|
||||||
This should be either HIDDEN or OMNIPRESENT (representing whether the
|
|
||||||
key should be removed from the zone, or published).
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
It is NOT RECOMMENDED to manipulate state files manually except for
|
|
||||||
testing purposes.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
@@ -287,57 +262,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.10"></a><h2>KEY STATE OPTIONS</h2>
|
<a name="id-1.10"></a><h2>PRINTING OPTIONS</h2>
|
||||||
|
|
||||||
<p>
|
|
||||||
Known key states are HIDDEN, RUMOURED, OMNIPRESENT and UNRETENTIVE.
|
|
||||||
These should not be set manually except for testing purposes.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="variablelist"><dl class="variablelist">
|
|
||||||
<dt><span class="term">-s</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
When setting key timing data, also update the state file.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-g</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Set the goal state for this key. Must be HIDDEN or OMNIPRESENT.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-d</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Set the DS state for this key, and when it was last changed.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-k</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Set the DNSKEY state for this key, and when it was last changed.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-r</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Set the RRSIG (KSK) state for this key, and when it was last
|
|
||||||
changed.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt><span class="term">-z</span></dt>
|
|
||||||
<dd>
|
|
||||||
<p>
|
|
||||||
Set the RRSIG (ZSK) state for this key, and when it was last
|
|
||||||
changed.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="refsection">
|
|
||||||
<a name="id-1.11"></a><h2>PRINTING OPTIONS</h2>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<span class="command"><strong>dnssec-settime</strong></span> can also be used to print the
|
<span class="command"><strong>dnssec-settime</strong></span> can also be used to print the
|
||||||
@@ -373,7 +298,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="refsection">
|
<div class="refsection">
|
||||||
<a name="id-1.12"></a><h2>SEE ALSO</h2>
|
<a name="id-1.11"></a><h2>SEE ALSO</h2>
|
||||||
|
|
||||||
<p><span class="citerefentry">
|
<p><span class="citerefentry">
|
||||||
<span class="refentrytitle">dnssec-keygen</span>(8)
|
<span class="refentrytitle">dnssec-keygen</span>(8)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user