Compare commits

..
607 Commits
Author SHA1 Message Date
Tinderbox User eba38b8900 Merge branch 'prep-release' into v9_11_6_patch 2019-04-06 01:47:33 +00:00
Tinderbox User 40b034f5b8 doc rebuild 2019-04-06 01:47:20 +00:00
Tinderbox User 6195f229b6 prep 9.11.6-P1 2019-04-06 01:40:01 +00:00
Evan Hunt 57917049ee Merge branch 'security-tcp-client-crash-v9_11-v9_11_6_patch' into 'v9_11_6_patch' 2019-04-05 18:33:39 -07:00
Evan Hunt 5e18ad05f4 CHANGES, release note 2019-04-05 18:33:36 -07:00
Evan Hunt d01023aaac restore allowance for tcp-clients < interfaces
in the "refactor tcpquota and pipeline refs" commit, the counting
of active interfaces was tightened in such a way that named could
fail to listen on an interface if there were more interfaces than
tcp-clients. when checking the quota to start accepting on an
interface, if the number of active clients was above zero, then
it was presumed that some other client was able to handle accepting
new connections. this, however, ignored the fact that the current client
could be included in that count, so if the quota was already exceeded
before all the interfaces were listening, some interfaces would never
listen.

we now check whether the current client has been marked active; if so,
then the number of active clients on the interface must be greater
than 1, not 0.

(cherry picked from commit 0b4e2cd4c3192ba88569dd344f542a8cc43742b5)
2019-04-05 18:33:17 -07:00
Evan Hunt 13f7c918b8 refactor tcpquota and pipeline refs; allow special-case overrun in isc_quota
- if the TCP quota has been exceeded but there are no clients listening
  for new connections on the interface, we can now force attachment to the
  quota using isc_quota_force(), instead of carrying on with the quota not
  attached.
- the TCP client quota is now referenced via a reference-counted
  'ns_tcpconn' object, one of which is created whenever a client begins
  listening for new connections, and attached to by members of that
  client's pipeline group. when the last reference to the tcpconn
  object is detached, it is freed and the TCP quota slot is released.
- reduce code duplication by adding mark_tcp_active() function.
- convert counters to atomic.

(cherry picked from commit 7e8222378ca24f1302a0c1c638565050ab04681b)
(cherry picked from commit 4939451275722bfda490ea86ca13e84f6bc71e46)
2019-04-05 18:33:17 -07:00
Evan Hunt 87d4311614 better tcpquota accounting and client mortality checks
- ensure that tcpactive is cleaned up correctly when accept() fails.
- set 'client->tcpattached' when the client is attached to the tcpquota.
  carry this value on to new clients sharing the same pipeline group.
  don't call isc_quota_detach() on the tcpquota unless tcpattached is
  set.  this way clients that were allowed to accept TCP connections
  despite being over quota (and therefore, were never attached to the
  quota) will not inadvertently detach from it and mess up the
  accounting.
- simplify the code for tcpquota disconnection by using a new function
  tcpquota_disconnect().
- before deciding whether to reject a new connection due to quota
  exhaustion, check to see whether there are at least two active
  clients. previously, this was "at least one", but that could be
  insufficient if there was one other client in READING state (waiting
  for messages on an open connection) but none in READY (listening
  for new connections).
- before deciding whether a TCP client object can to go inactive, we
  must ensure there are enough other clients to maintain service
  afterward -- both accepting new connections and reading/processing new
  queries.  A TCP client can't shut down unless at least one
  client is accepting new connections and (in the case of pipelined
  clients) at least one additional client is waiting to read.

(cherry picked from commit c7394738b2445c16f728a88394864dd61baad900)
(cherry picked from commit e965d5f11d3d0f6d59704e614fceca2093cb1856)
2019-04-05 18:33:17 -07:00
Michał KępieńandEvan Hunt 9446629b73 use reference counter for pipeline groups (v3)
Track pipeline groups using a shared reference counter
instead of a linked list.

(cherry picked from commit 513afd33eb17d5dc41a3f0d2d38204ef8c5f6f91)
2019-04-05 18:33:17 -07:00
Witold KręcickiandEvan Hunt 55a7a458e3 tcp-clients could still be exceeded (v2)
the TCP client quota could still be ineffective under some
circumstances.  this change:

- improves quota accounting to ensure that TCP clients are
  properly limited, while still guaranteeing that at least one client
  is always available to serve TCP connections on each interface.
- uses more descriptive names and removes one (ntcptarget) that
  was no longer needed
- adds comments

(cherry picked from commit 924651f1d5e605cd186d03f4f7340bcc54d77cc2)
2019-04-05 18:33:17 -07:00
Witold KręcickiandEvan Hunt 9689ffc485 fix enforcement of tcp-clients (v1)
tcp-clients settings could be exceeded in some cases by
creating more and more active TCP clients that are over
the set quota limit, which in the end could lead to a
DoS attack by e.g. exhaustion of file descriptors.

If TCP client we're closing went over the quota (so it's
not attached to a quota) mark it as mortal - so that it
will be destroyed and not set up to listen for new
connections - unless it's the last client for a specific
interface.

(cherry picked from commit f97131d21b97381cef72b971b157345c1f9b4115)
2019-04-05 18:33:17 -07:00
Tinderbox User 4c50a8f8fb Merge branch 'prep-release' into v9_11 2019-02-27 23:28:15 +00:00
Tinderbox User 639695b37d prep 9.11.6 2019-02-27 23:27:22 +00:00
Tinderbox User 4c3f28eb0e Merge branch 'prep-release' into v9_11 2019-02-21 04:12:26 +00:00
Tinderbox User 5f064519d5 rebuild configure 2019-02-21 04:08:01 +00:00
Evan Hunt 6f19b4c052 Merge branch 'broken-test' into v9_11 2019-02-20 19:54:41 -08:00
Evan Hunt 946ca23f51 fixed an error in the mkeys system test 2019-02-20 19:54:41 -08:00
Tinderbox UserandEvan Hunt 07661c6ca2 Merge branch 'prep-release' into v9_11 2019-02-20 19:54:40 -08:00
Tinderbox UserandEvan Hunt 4738d62e1c doc rebuild 2019-02-20 19:54:40 -08:00
Tinderbox UserandEvan Hunt 4b1b4e1f78 prep 9.11.6rc1 2019-02-20 19:54:38 -08:00
Evan Hunt 6a70b17582 Merge branch 'security-dlz-axfr-deny-broken-security-v9_11' into 'security-v9_11'
denied axfr requests were not effective for writable DLZ zones

See merge request isc-private/bind9!57
2019-02-20 19:54:23 -08:00
Mark AndrewsandEvan Hunt 2a76f24b14 add CHANGES and release notes entries
(cherry picked from commit 354ad18a12e84e5c660ce8e08e56382e529d8b2c)
2019-02-20 19:54:23 -08:00
Evan Hunt 7192ed9236 Merge 'keytag-memleak' into security-v9_11 2019-02-20 19:54:22 -08:00
Mark AndrewsandEvan Hunt 34348d9ee4 denied axfr requests were not effective for writable DLZ zones
(cherry picked from commit d9077cd0038e59726e1956de18b4b7872038a283)
2019-02-20 19:54:22 -08:00
Mark AndrewsandEvan Hunt bf6b477994 add CHANGES and release note entries
(cherry picked from commit 8134c9a3f3bf46455ce4d16f2bf01e086d20f69b)
(cherry picked from commit 193e59fb06687055c675d21f1829644673ac8db2)
2019-02-20 19:54:22 -08:00
Mark AndrewsandEvan Hunt 2bda5ac2e1 check that multiple KEY-TAG trust-anchor-telemetry options don't leak memory
(cherry picked from commit 4b1dc4a5445e9561f2208f9388cf9f9e2cfcbe51)
(cherry picked from commit f545e9dff1f0eadcdea5531ef7062324d232c716)
2019-02-20 19:54:22 -08:00
Evan Hunt 665c4ae0cf Merge 'managed-key-assert' into security-v9_11 2019-02-20 19:54:21 -08:00
Mark AndrewsandEvan Hunt d5243a5231 silently ignore additional keytag options
(cherry picked from commit 36158e6c96e982768bd33d4090cbe563718534f2)
(cherry picked from commit ccca4986b3a14188becb173c4473d9eac1587f66)
2019-02-20 19:54:21 -08:00
Evan Hunt de8b2d4a6a use algorithm 255 for both unsupported keys 2019-02-20 19:54:21 -08:00
Matthijs MekkingandEvan Hunt a39f1fae0b CHANGES, notes
(cherry picked from commit f0eefb06d488cc99e8b4a4b7238e4a556afb7586)
2019-02-20 19:54:21 -08:00
Matthijs MekkingandEvan Hunt 8f64928e2e Update keyfetch_done compute_tag check
If in keyfetch_done the compute_tag fails (because for example the
algorithm is not supported), don't crash, but instead ignore the
key.

(cherry picked from commit b1d5411569ae10830b63f07560091193646cc739)
2019-02-20 19:54:20 -08:00
Matthijs MekkingandEvan Hunt 8c2a8ca509 Add tests for mkeys with unsupported algorithm
These tests check if a key with an unsupported algorithm in
managed-keys is ignored and when seeing an algorithm rollover to
an unsupported algorithm, the new key will be ignored too.

(cherry picked from commit 144cb53d0ae3aa5e6e3123720b603f9ab2bd1fa9)
2019-02-20 19:54:20 -08:00
Matthijs MekkingandEvan Hunt acae423ef4 Don't free key in compute_tag in case of failure
If `dns_dnssec_keyfromrdata` failed we don't need to call
`dst_key_free` because no `dstkey` was created.  Doing so
nevertheless will result in an assertion failure.

This can happen if the key uses an unsupported algorithm.

(cherry picked from commit 7a1ca39b950b7d5230b605ac60f15a1cb94e3d69)
2019-02-20 19:54:20 -08:00
Evan Hunt 260d30edc0 Merge branch '823-masterformat-test-fix-v9_11' into 'v9_11'
fix broken masterformat test

See merge request isc-projects/bind9!1555
2019-02-20 22:41:22 -05:00
Evan Hunt 1702187676 fix broken masterformat test
- dig command had the @ parameter in the wrong place
- private-dnskey and private-cdnskey are queried in a separate
  loop, which strips 'private-' from the name to determine the qtype

(cherry picked from commit bc7b34d6ef)
2019-02-20 22:30:09 -05:00
Evan Hunt a8067ebf5e Merge branch 'each-enable-threads-v9_11' into 'v9_11'
enable threads by default on openbsd 6.2 and higher

See merge request isc-projects/bind9!1553
2019-02-20 22:25:00 -05:00
Evan Hunt bf39e98daf CHANGES
(cherry picked from commit 60125f1ecc)
2019-02-20 19:12:40 -08:00
Evan Hunt 87840b3477 enable threads by default on openbsd 6.2 and higher
(cherry picked from commit 95fff9538f)
2019-02-20 19:12:40 -08:00
Evan Hunt 3bd0ed80a4 Merge branch 'each-fix-timer-test-v9_11' into 'v9_11'
timer_test failed to compile if cmocka was enabled but threads were not

See merge request isc-projects/bind9!1552
2019-02-20 22:11:35 -05:00
Evan Hunt 4c15bbfb50 timer_test failed to compile if cmocka was enabled but threads were not
(cherry picked from commit c73e3175c7)
2019-02-20 19:00:26 -08:00
Mark Andrews 267758962c Merge branch '884-patches-to-review-v9_11' into 'v9_11'
Correct errno to result translation

See merge request isc-projects/bind9!1541
2019-02-19 18:33:22 -05:00
Mark Andrews 212e126fb8 add CHANGES
(cherry picked from commit a0c0d76029)
2019-02-20 10:17:19 +11:00
Mark Andrews 47816f0ff5 correct errno to result translation
(cherry picked from commit 218ce34e7d)
2019-02-20 10:17:19 +11:00
Mark Andrews 46d6ca8690 Merge branch '836-building-fails-in-build-subdirectory-when-dnstap-is-enabled-v9_11' into 'v9_11'
Resolve "Building fails in build subdirectory when dnstap is enabled"

See merge request isc-projects/bind9!1539
2019-02-19 17:59:40 -05:00
Mark Andrews e818eefc01 add CHANGES
(cherry picked from commit 3a21fdf884)
2019-02-20 09:46:07 +11:00
Mark Andrews 28e054c36c teach proto_c to look in the source directory for out of tree builds
(cherry picked from commit c0d4ff5796)
2019-02-20 09:46:07 +11:00
Mark Andrews fac4fe3d40 Merge branch '877-clang-scan-build-redundant-assignments-detected-v9_11' into 'v9_11'
Remove redundant assignments

See merge request isc-projects/bind9!1537
2019-02-19 17:30:31 -05:00
Mark Andrews 78bb82abd3 remove redundant assignment
(cherry picked from commit f475dc75b1)
2019-02-19 10:26:00 +11:00
Mark Andrews 2019d4d64c silence clang
(cherry picked from commit 7b60f6832e)
2019-02-19 10:25:59 +11:00
Mark Andrews 20c29a251a don't overwrite result
(cherry picked from commit 70fab477b1)
2019-02-19 10:25:13 +11:00
Mark Andrews 434fcb5f1e remove seen_dname
(cherry picked from commit 63c03cdb2d)
2019-02-19 10:24:45 +11:00
Mark Andrews 66382ccd4b Merge branch '877-clang-scan-build-redundant-assignments-detected-2-v9_11' into 'v9_11'
decode_NegTokenInit failed to cleanup allocated memory on error.

See merge request isc-projects/bind9!1530
2019-02-18 18:04:22 -05:00
Mark Andrews 333ce68d35 fix memory leak
(cherry picked from commit 7114d16098)
2019-02-19 09:38:09 +11:00
Mark Andrews 3ea7b86492 Merge branch '877-clang-scan-build-redundant-assignments-detected-2-v9_11' into 'v9_11'
Add missing asserts to socket_test.c and dnstest.c

See merge request isc-projects/bind9!1525
2019-02-18 16:46:05 -05:00
Mark Andrews d50b1ecd9c assert result is ISC_R_SUCCESS
(cherry picked from commit 76a1c1531a)
2019-02-19 08:00:30 +11:00
Mark Andrews 57a00e7b6b Merge branch 'u/fanf2/dnssec-keymgr-man-v9_11' into 'v9_11'
Improve dnssec-keymgr manual

See merge request isc-projects/bind9!1521
2019-02-18 00:10:03 -05:00
Tony FinchandMark Andrews 33cdef544d Improve dnssec-keymgr manual
Illustrate the syntax for the policy options, with semicolons.

Explicitly mention the "default" policy.

Fix a few typos and remove some redundant wording.

(cherry picked from commit 7ee56e2abd)
2019-02-18 15:46:24 +11:00
Evan Hunt 8a2a43b742 Merge branch '879-dnssec-checkds-help-v9_11' into 'v9_11'
Correct path in dnssec-checkds help

See merge request isc-projects/bind9!1517
2019-02-14 16:11:32 -05:00
Petr MenšíkandEvan Hunt e7e85d37b6 Correct path in dnssec-checkds help
(cherry picked from commit 7bd544e795)
2019-02-14 12:53:50 -08:00
Mark Andrews abd00c4d4e Merge branch '871-add-a-ci-check-for-missing-prereq.sh-scripts-v9_11' into 'v9_11'
Add a CI check for missing prereq.sh scripts

See merge request isc-projects/bind9!1509
2019-02-11 17:20:04 -05:00
Mark Andrews 8d2790af06 add util/check-ans-prereq to precheck
(cherry picked from commit 74c1c37563)
2019-02-12 09:04:20 +11:00
Mark Andrews 2274fd37e9 add check-ans-prereq
(cherry picked from commit ec2ecffef1)
2019-02-12 09:04:20 +11:00
Evan Hunt 29e647276e Merge branch '872-dlz-ldap-dname-v9_11' into 'v9_11'
added DNAME support to DLZ LDAP schema, and fixed a DLZ compile error

See merge request isc-projects/bind9!1504
2019-02-10 17:22:22 -05:00
Evan Hunt 9bc1bbe5d8 added DNAME support to DLZ LDAP schema, and fixed a DLZ compile error
Thanks to Roland Gruber for the schema contribution.

(cherry picked from commit 2e3b5db195)
2019-02-10 14:09:55 -08:00
Evan Hunt 72d68be601 Merge branch 'u/fanf2/zonemd-v9_11' into 'v9_11'
Correct ZONEMD expansion in ARM

See merge request isc-projects/bind9!1500
2019-02-08 16:19:00 -05:00
Tony FinchandEvan Hunt 53f24cb0d9 Correct ZONEMD expansion in ARM
(cherry picked from commit af74f18536)
2019-02-08 13:17:15 -08:00
Michał Kępień 55c47c7cdf Merge branch '869-prereq-sh-needed-in-forward-test-v9_11' into 'v9_11'
[v9_11] Resolve "prereq.sh needed in forward test"

See merge request isc-projects/bind9!1496
2019-02-08 09:05:05 -05:00
Curtis BlackburnandMichał Kępień 4fd2677873 added prereq.sh to forward test to detect perl Net::DNS
(cherry picked from commit 8c929bd7c5)
2019-02-08 14:37:09 +01:00
Mark Andrews 722b485b96 Merge branch '867-rrtypes-missing-from-named-v9_11' into 'v9_11'
Resolve "rrtypes missing from named"

See merge request isc-projects/bind9!1492
2019-02-07 22:36:14 -05:00
Mark Andrews 3854e59770 add AMTRELAY and ZONEMD to ARM
(cherry picked from commit b06c5f8cfd)
2019-02-08 14:10:38 +11:00
Mark Andrews 495d4153ad fix AMTRELAY name
(cherry picked from commit a9fadafecd)
2019-02-08 14:10:37 +11:00
Evan Hunt 2321e203ec Merge branch 'each-dnssec-coverage-dots-v9_11' into 'v9_11'
dnssec-coverage was improperly ignoring some zones

See merge request isc-projects/bind9!1489
2019-02-07 21:46:45 -05:00
Evan Hunt 6244ca6c01 CHANGES
(cherry picked from commit a242c704f5)
2019-02-07 18:29:14 -08:00
Evan Hunt d3a962db1e adjust style, match test to other tests
(cherry picked from commit 9949163936)
2019-02-07 18:29:14 -08:00
Tony FinchandEvan Hunt 5a090dd203 dnssec-coverage: fix handling of zones without trailing dots
After change 5143, zones listed on the command line without trailing
dots were ignored.

(cherry picked from commit a159675f44)
2019-02-07 17:33:30 -08:00
Mark Andrews bd3ffce696 Merge branch '867-rrtypes-missing-from-named-v9_11' into 'v9_11'
Resolve "rrtypes missing from named"

See merge request isc-projects/bind9!1486
2019-02-07 18:44:01 -05:00
Mark Andrews 4b955e8257 add top of range checks
(cherry picked from commit 8d69e15988)
2019-02-08 10:28:28 +11:00
Mark Andrews 7f13206216 Merge branch '867-rrtypes-missing-from-named-v9_11' into 'v9_11'
Resolve "rrtypes missing from named"

See merge request isc-projects/bind9!1482
2019-02-07 16:56:03 -05:00
Evan HuntandMark Andrews 95797f740b CHANGES
(cherry picked from commit 72f6fb0697)
2019-02-08 08:33:09 +11:00
Evan HuntandMark Andrews 37ad2d4de3 Add support for ZONEMD
(cherry picked from commit 3183663dd4)
2019-02-08 08:33:09 +11:00
Mark Andrews 060dd0a372 Add support for ATMRELAY
(cherry picked from commit 66922ee7af)
2019-02-08 08:33:08 +11:00
Mark Andrews a43c7af389 Merge branch '207-nslookup-takes-2-argvs-w-o-errors-uses-only-1st-and-last-v9_11' into 'v9_11'
Resolve "nslookup takes >2 argvs w/o errors, uses only 1st and last"

See merge request isc-projects/bind9!1477
2019-02-07 08:00:43 -05:00
Mark Andrews 9e89c1f898 error out if there are extra command line options
(cherry picked from commit f73816ff0f)
2019-02-07 23:46:13 +11:00
Mark Andrews 4b3de5696f Merge branch '857-inline-system-test-wasn-t-cleaning-k-files-on-restart-if-interrupted-v9_11' into 'v9_11'
Resolve "inline system test wasn't cleaning K* files on restart if interrupted."

See merge request isc-projects/bind9!1472
2019-02-06 02:05:11 -05:00
Ondřej SurýandMark Andrews 0ca3e23b38 Simplify the inline clean script
(cherry picked from commit 519152b191)
2019-02-06 17:53:02 +11:00
Mark Andrews 5ebf7adae6 clean K* files in inline system test directory
(cherry picked from commit 1878efe661)
2019-02-06 17:38:00 +11:00
Evan Hunt 336352654d Merge branch 'u/fanf2/cleanup-dnssec-revoke-help-v9_11' into 'v9_11'
cleanup: fix dnssec-revoke help text

See merge request isc-projects/bind9!1468
2019-02-06 00:21:13 -05:00
Tony FinchandEvan Hunt 6add72bafd cleanup: fix dnssec-revoke help text
Correct alignment and alphabetize

(cherry picked from commit f7b2bd304e)
2019-02-05 21:16:46 -08:00
Evan Hunt 01d9eb4070 Merge branch 'u/fanf2/dsfromkey-man-v9_12-v9_11' into 'v9_11'
cleanup: revamp the dnssec-dsfromkey man page and help output

See merge request isc-projects/bind9!1465
2019-02-05 23:26:42 -05:00
Tony FinchandEvan Hunt 0a20176ca6 cleanup: revamp the dnssec-dsfromkey man page and help output
* Alphabetize the option lists in the man page and help text

* Make the synopses more consistent between the man page and help
  text, in particular the number of different modes

* Group mutually exclusive options in the man page synopses, and order
  options so that it is more clear which are available in every mode

* Expand the DESCRIPTION to provide an overview of the output modes
  and input modes

* Improve cross-references between options

* Leave RFC citations to the SEE ALSO section, and clarify which RFC
  specifies what

* Clarify list of digest algorithms in dnssec-dsfromkey man page

(cherry picked from commit 6ca8e130ac)
(cherry picked from commit fb9bc8f871)
2019-02-05 20:19:55 -08:00
Mark Andrews a2fb64caf1 Merge branch '860-process_opt-could-be-called-multiple-times-on-the-same-message-in-dig-v9_11' into 'v9_11'
Resolve "process_opt() could be called multiple times on the same message in dig."

See merge request isc-projects/bind9!1461
2019-02-05 21:33:11 -05:00
Mark Andrews f59dbd2976 add CHANGES
(cherry picked from commit 946d5c2c1e)
2019-02-06 13:14:26 +11:00
Mark Andrews 8376f819a5 send over and undersized cookie
(cherry picked from commit 0207199bb8)
2019-02-06 13:14:09 +11:00
Mark Andrews 10184612be the condition test for checking the client cookie value was wrong; don't call process_opt multiple times
(cherry picked from commit d9c368eee0)
2019-02-06 13:14:09 +11:00
Michał Kępień 943d47bc21 Merge branch '822-test-make-install-in-one-of-the-build-jobs-v9_11' into 'v9_11'
[v9_11] Test "make install" in one of the build jobs

See merge request isc-projects/bind9!1457
2019-02-05 15:37:33 -05:00
Michał Kępień 1da4546b2c Test "make install" in one of the build jobs
Running "make install" in a separate job in the "test" phase of a CI
pipeline causes a lot of object files to be rebuilt due to the way
artifacts are passed between GitLab CI jobs (object files extracted from
the artifacts archive have older modification times than their
respective source files checked out using Git by the worker running the
"install" job).  Test "make install" in one of the build jobs instead,
in order to prevent object rebuilding.

Using 'after_script' for this purpose was not an option because its
failures are ignored.

Duplicating the build script in two places would be error-prone in the
long run and thus was rejected as a solution.  YAML anchors would also
not help in this case.

A "positive" test (`test -n "${RUN_MAKE_INSTALL}" && make install`)
would not work because:

  - it would cause the build script to fail for any job not supposed to
    run "make install",

  - appending `|| :` to the shell pipeline would prevent "make install"
    errors from causing a job failure.

Due to the above, a "negative" test is performed, so that:

  - jobs not supposed to run "make install" succeed immediately,

  - jobs supposed to run "make install" only succeed when "make install"
    succeeds.

(cherry picked from commit 2a231b6239)
2019-02-05 21:11:10 +01:00
Evan Hunt f79c9b1e3d Merge branch 'each-win-tests-v9_11' into 'v9_11'
tests failing on windows due to false crash-on-shutdown reports

See merge request isc-projects/bind9!1448
2019-02-01 01:56:59 -05:00
Evan Hunt f929f5023c disable the check for crash on shutdown when running under cygwin
(cherry picked from commit 449842e1ce)
2019-01-31 22:56:33 -08:00
Evan Hunt 108aff1c82 Merge branch 'each-silence-warning-v9_11' into 'v9_11'
silence a spurious dnssec-keygen warning in the dnssec system test

See merge request isc-projects/bind9!1443
2019-01-31 17:14:13 -05:00
Evan Hunt 1fe2d7b97a silence a spurious dnssec-keygen warning in the dnssec system test
the occluded-key test creates both a KEY and a DNSKEY. the second
call to dnssec-keygen calls dns_dnssec_findmatchingkeys(), which causes
a spurious warning to be printed when it sees the type KEY record.
this should be fixed in dnssec.c, but the meantime this change silences
the warning by reversing the order in which the keys are created.

(cherry picked from commit 6661db9564)
2019-01-31 14:02:22 -08:00
Evan Hunt 6c7096aa34 Merge branch '850-catch-shutdown-aborts-v9_11' into 'v9_11'
detect crash on shutdown in stop.pl

See merge request isc-projects/bind9!1441
2019-01-31 12:55:04 -05:00
Evan Hunt 607e42b560 detect crash on shutdown in stop.pl
(cherry picked from commit 9bf37f4e48)
2019-01-31 09:43:27 -08:00
Evan Hunt 33001ca556 Merge branch '849-fix-tkey-leak-v9_11' into 'v9_11'
fix TKEY problems

See merge request isc-projects/bind9!1439
2019-01-31 12:41:05 -05:00
Evan Hunt a6afd50cb9 Change #4148 wasn't complete
- there was a memory leak when using negotiated TSIG keys.
- TKEY responses could only be signed when using a newly negotiated
  key; if an existent matching TSIG was found in in the keyring it
  would not be used.

(cherry picked from commit 73ba24fb36)
2019-01-31 09:29:22 -08:00
Evan Hunt 011626d048 Merge branch '821-matthijs-unsigned-gss-tsig-tkey-query-response-v9_12-v9_11' into 'v9_11'
Resolve "Unsigned GSS-TSIG TKEY Query Response"

See merge request isc-projects/bind9!1431
2019-01-30 15:51:17 -05:00
Matthijs MekkingandEvan Hunt 43baca1fce Update CHANGES
(cherry picked from commit f1c6e01a0f)
(cherry picked from commit c82eb3b3ca)
2019-01-30 12:34:02 -08:00
Matthijs MekkingandEvan Hunt 326d40ab08 allow TSIG key to be added to message structure after parsing
up until now, message->tsigkey could only be set during parsing
of the request, but gss-tsig allows one to be created afterward.

(cherry picked from commit 879fc0285e)
2019-01-30 12:34:02 -08:00
Matthijs MekkingandEvan Hunt 13636ac3b0 Harden GSS-TSIG tests, verify signed TKEY response
(cherry picked from commit b0b846a4bb)
2019-01-30 12:34:01 -08:00
Mark Andrews a4890ac802 Merge branch '848-keymgr-19-old-keys-failing-on-penguin-v9_11' into 'v9_11'
Resolve "keymgr 19-old-keys failing on penguin"

See merge request isc-projects/bind9!1426
2019-01-30 00:28:29 -05:00
Mark Andrews cee2dcef9f add CHANGES
(cherry picked from commit b9d5a62bdc)
2019-01-30 16:03:02 +11:00
Mark Andrews 135b0797fb add 300 seconds of fudge
(cherry picked from commit acf0292da4)
2019-01-30 16:02:39 +11:00
Mark Andrews 7b12906ac0 only use a single policy file when testing.
(cherry picked from commit 36ea9b8181)
2019-01-30 16:02:38 +11:00
Evan Hunt 205c6ed5cc Merge branch '841-openssl-null-free-v9_11' into 'v9_11'
Do not fail on NULL passed to OpenSSL_free

See merge request isc-projects/bind9!1423
2019-01-29 19:02:30 -05:00
Petr MenšíkandEvan Hunt af021f136e Do not fail on NULL passed to OpenSSL_free
Some plugins might call it after deconstruction. Do not crash if there
is no reason for it.

(cherry picked from commit a26673a088)
2019-01-29 15:42:51 -08:00
Evan Hunt dda175e108 Merge branch '766-querytrace-doc-v9_12-v9_11' into 'v9_11'
Resolve "--enable-querytrace has negative performance impact - update the documentation to say this"

See merge request isc-projects/bind9!1420
2019-01-29 17:26:51 -05:00
Evan Hunt cd79df85a2 added querytrace documentation in README
also rearranged things a little, adding a "dependencies" section

(cherry picked from commit 51048ca06e)
(cherry picked from commit 87b0098b4e)
2019-01-29 14:25:32 -08:00
Michał Kępień 342a0dd0e5 Merge branch 'michal/add-fedora-29-to-ci-v9_11' into 'v9_11'
[v9_11] Add Fedora 29 to CI

See merge request isc-projects/bind9!1416
2019-01-29 07:53:19 -05:00
Michał Kępień 03b79f9799 Add Fedora 29 to CI
Modify .gitlab-ci.yml so that every CI pipeline also builds and tests
BIND on Fedora 29.

(cherry picked from commit 38b6c5c444)
2019-01-29 13:32:34 +01:00
Evan Hunt 19d30c0b49 Merge branch '259-named-args-v9_11' into 'v9_11'
add properly-formatted -D options to named.args files

See merge request isc-projects/bind9!1412
2019-01-29 00:35:32 -05:00
Evan Hunt dd54a08163 also add -D options for transient named processes started in tests.sh
(cherry picked from commit dd45831acc)
2019-01-28 21:22:13 -08:00
Evan Hunt e5acb97c8a add properly-formatted -D options to named.args files
this prevents servers that use arguments specified in named.args
from appearing different in 'ps' output from servers run with arguments
from start.pl

(cherry picked from commit 175d6e9bfb)
2019-01-28 21:21:33 -08:00
Evan Hunt 26cf678ea3 Merge branch 'each-fix-logfileconfig-v9_11' into 'v9_11'
reset SYSTEMTESTTOP when changing directories

See merge request isc-projects/bind9!1410
2019-01-29 00:08:44 -05:00
Evan Hunt 0cc8758724 reset SYSTEMTESTTOP when changing directories
(cherry picked from commit 70f36a25e4)
2019-01-28 20:42:13 -08:00
Evan Hunt 0afe7749f0 Merge branch 'each-win32-tests-v9_11' into 'v9_11'
fix win32 tests (v9_11)

See merge request isc-projects/bind9!1402
2019-01-26 13:35:02 -05:00
Evan Hunt 7dad677ef8 fix runtime test
named doesn't understand cygwin paths, so we need to use
`cygpath -aw .` instead of `pwd` to get the absolute path to the
working directory.
2019-01-26 00:54:22 -08:00
Evan Hunt f0ebe6cbe4 fix rrl test
strip CR characters before using awk/sed
2019-01-25 16:15:35 -08:00
Evan Hunt 77bc4e27f1 fix rpz test
- work around a CR newline problem
- use rndc to stop servers
2019-01-25 16:15:35 -08:00
Evan Hunt aa1cf3c606 fix rpzrecurse test
- backport from v9_12 changes to enable rpzrecurse test to
  suspend and resume servers on win32
- use rndc to stop servers
2019-01-25 16:15:08 -08:00
Evan Hunt be8dfc7421 fix dnssec test
- work around CR issues
- use UTC for time comparisons
- use $DIFF instead of cmp
2019-01-25 15:38:50 -08:00
Evan Hunt 4e597364a6 fix legacy test
use rndc rather than signals to stop the server
2019-01-25 15:38:49 -08:00
Evan Hunt f1906e8ea3 fix fetchlimit test
use TCP for the test queries in between UDP bursts; this avoids
congestion issues that interfered with the test on windows
2019-01-25 15:38:49 -08:00
Evan Hunt f7a77ff295 fix sfcache test
use a lame server configuration to force SERVFAILs instead of killing ns2.
this prevents test failures that occurred due to a different behavior of
the netowrking stack in windows.
2019-01-25 15:38:49 -08:00
Evan Hunt d48fa83230 fix nsupdate test
rndc_reload was failing on windows
2019-01-25 15:38:49 -08:00
Evan Hunt dc5c53b23a fix rndc test
use regex instead of exact string matching to deal with CR at end of line
2019-01-25 15:38:49 -08:00
Evan Hunt 4c5c91f36d fix statistics test
the active sockets test is supposed to be commented out on win32, but
only part of it was
2019-01-25 15:38:49 -08:00
Evan Hunt 73f9d372f6 fix redirect test
strip CR characters before using sed
2019-01-25 15:38:49 -08:00
Evan Hunt 0828d9c6db fix notify test
test the average delay between notifies instead of the minimum delay;
this helps avoid unnecessary test failures on systems with bursty
network performance.
2019-01-25 15:38:49 -08:00
Evan Hunt 57272bfb60 fix masterformat test
use stop.pl instead of rndc to stop server
2019-01-25 15:38:49 -08:00
Evan Hunt 09b61926d8 fix inline test
use regex instead of exact string matching, to deal with CR at end of ine
2019-01-25 15:38:48 -08:00
Evan Hunt 7a8058b988 fix forward test
strip CR characters before using sed
2019-01-25 15:38:48 -08:00
Evan Hunt 409a62c54c fix cookie test
strip CR characters before comparing files
2019-01-25 15:38:48 -08:00
Evan Hunt e947cdfd27 use $DIFF instead of diff 2019-01-25 15:38:48 -08:00
Evan Hunt cad88c5906 set and use SYSTEMTESTTOP consistently 2019-01-25 15:38:48 -08:00
Evan Hunt 79fa438d45 more reliable method for killing "ans" servers on windows
as perl and python are both native to cygwin, we don't want to use
the "kill -f" option to terminate them.
2019-01-25 15:38:48 -08:00
Evan Hunt 27e4da57f8 update ifconfig.bat with current test interfaces
the addresses set up in ifconfig.bat were out of sync with the
ones in ifconfig.sh
2019-01-25 15:38:48 -08:00
Evan Hunt f0d8bf4d44 update conf.sh.win32 test list
- the test lists in conf.sh.in and conf.sh.win32 were out of sync
2019-01-25 15:38:48 -08:00
Evan Hunt a8c13ba73f Merge branch '560-dnssec-keymgr-root-v9_11' into 'v9_11'
improve handling of trailing dots in dnssec-keymgr and dnssec-coverage

See merge request isc-projects/bind9!1395
2019-01-24 17:09:28 -05:00
Evan Hunt 36221e6447 improve handling of trailing dots in dnssec-keymgr and dnssec-coverage
- mishandling of trailing dots caused bad behavior with the
  root zone or names like "example.com."
- fixing this exposed an error in dnssec-coverage caused the
  wrong return value if there were KSK errors but no ZSK errors
- incidentally silenced the dnssec-keygen output in the coverage
  system test

(cherry picked from commit 1ccf4e6c16)
2019-01-24 13:58:05 -08:00
Evan Hunt f9040e06f4 Merge branch 'v9_11-dig-sigchase-topdown' into 'v9_11'
Try to fix crash at +sigchase +topdown

See merge request isc-projects/bind9!1391
2019-01-24 14:01:12 -05:00
Petr Menšík eb06423b7e Try to fix crash at +sigchase +topdown
When multilabel name is already cached, child_of_zone fails check when
zone_name is direct child of name. Error is ignored and crashes on
expectation child_name was initialized. Handle the error and relax the
check.

Reproducer:
dig isc.org
dig +sigchase +topdown isc.org
2019-01-24 13:09:21 +01:00
Evan Hunt 6f68240d9b Merge branch 'revert-7663d075' into 'v9_11'
Revert "Merge branch 'ondrej/fix-race-condition-in-dnstap-v9_11' into 'v9_11'"

See merge request isc-projects/bind9!1384
2019-01-23 13:59:14 -05:00
Evan Hunt 665122be0d Revert "Merge branch 'ondrej/fix-race-condition-in-dnstap-v9_11' into 'v9_11'"
This reverts merge request !1345
2019-01-23 13:56:26 -05:00
Evan Hunt d843d2650c Merge branch '117-running-dnssec-keymgr-with-old-keys-inactivates-deletes-them-immediately-v9_12-v9_11' into 'v9_11'
Resolve "Running dnssec-keymgr with old keys inactivates/deletes them immediately"

See merge request isc-projects/bind9!1380
2019-01-22 14:28:24 -05:00
Mark AndrewsandEvan Hunt 67b001b190 introducing keymgr need to preserve functionality
(cherry picked from commit 083b730ec7)
(cherry picked from commit 15b4240764)
2019-01-22 11:17:28 -08:00
Mark Andrews fdbece6840 Merge branch 'each-remove-fprintf-v9_11' into 'v9_11'
clean up debugging fprintf

See merge request isc-projects/bind9!1370
2019-01-21 01:13:53 -05:00
Evan HuntandMark Andrews e511187ebd removed a debugging fprintf
(cherry picked from commit 6c478a3dae)
2019-01-21 17:01:11 +11:00
Michał Kępień c923e3cef8 Merge branch 'michal/gitlab-ci-cleanup-v9_11' into 'v9_11'
[v9_11] GitLab CI cleanup

See merge request isc-projects/bind9!1364
2019-01-18 09:52:02 -05:00
Michał Kępień 3bc84a8f0a Add comments
(cherry picked from commit a27b9dff18)
2019-01-18 15:32:00 +01:00
Michał Kępień 084f6b291f Unify YAML style used throughout .gitlab-ci.yml
(cherry picked from commit a61bf39688)
2019-01-18 15:32:00 +01:00
Michał Kępień 1e93d92efd Tweak pipeline triggering settings
In an attempt to ensure that:

  - all important changes to repository contents are tested,
  - pipelines are not automatically created for every single push,
  - some flexibility is allowed for corner cases,

change pipeline triggering settings so that:

  - full build & test pipelines are only automatically created for merge
    requests and tags (both for creation and updates),

  - pipelines for other repository changes (e.g. pushes to arbitrary
    branches) can only be created manually, using GitLab's web
    interface,

  - merging a merge request only causes jobs pushing the updated ARM to
    GitLab Pages to be run (as semi-linear Git history is enforced and
    thus testing a MR is identical to testing the target branch
    post-merge in terms of code),

  - repository synchronization does not trigger duplicate pipelines in
    projects which are set as mirroring targets.

(cherry picked from commit 1c8c1815e4)
2019-01-18 15:32:00 +01:00
Michał Kępień 184ca9b537 Reorder job definitions
Group jobs by build type and operating system to make the layout of
.gitlab-ci.yml more consistent and improve locality of YAML references.

(cherry picked from commit a1dbec3b08)
2019-01-18 15:31:59 +01:00
Michał Kępień f6922575a0 Use a common naming pattern for all jobs
Make sure all jobs are named using the following pattern:

    [<job-type>:]<build-type>:<system>:<architecture>

where specifying <job-type> is optional for "precheck" and "build" jobs.

This should make it easier to quickly recognize:

  - what kind of actions are performed by each job,
  - which BIND build flavor is used by each job,
  - which operating system image is used by each job.

(cherry picked from commit 1fe432c6c3)
2019-01-18 15:31:59 +01:00
Michał Kępień 8597220def Define a template for precheck jobs
(cherry picked from commit e0b5dd67a1)
2019-01-18 15:31:59 +01:00
Michał Kępień b6b167ea22 Merge install_test_job template into the job definition as it is only used once
(cherry picked from commit de1948398d)
2019-01-18 15:31:59 +01:00
Michał Kępień bf56162b49 Shorten Docker image definitions by using YAML anchors for runner tags
While we are at it, drop use of the "docker" tag since all BIND CI jobs
are currently run inside Docker containers.

(cherry picked from commit 7dd329d385)
2019-01-18 15:31:59 +01:00
Michał Kępień 443f8e4413 Build ARM in the build stage
There is no need to build BIND binaries before building docs and thus
the job building the current version of the ARM can be moved to the
build stage of CI.

(cherry picked from commit 41a67147fe)
2019-01-18 15:31:58 +01:00
Michał Kępień 94883bbe6b Replace double colon with a single colon
(cherry picked from commit 75b26d3f50)
2019-01-18 15:31:58 +01:00
Michał Kępień 4b9cdf8098 Remove unused parts of .gitlab-ci.yml
Remove the following from .gitlab-ci.yml:

  - unused variable definitions,
  - unused Docker image definitions,
  - commands which have no effect,
  - sections which were commented out.

(cherry picked from commit 9893bd3246)
2019-01-18 15:31:58 +01:00
Michał Kępień 32d916d96a Merge branch '781-fix-python-check-in-configure-script-v9_11' into 'v9_11'
[v9_11] Resolve "configure script in BIND 9.13.5 release fails to detect python"

See merge request isc-projects/bind9!1363
2019-01-18 09:23:34 -05:00
Ondřej SurýandMichał Kępień de41f66579 Add some combinations of --with-python=<path>/--with-python/--without-python to GitLab CI
(cherry picked from commit 99cf0faec0)
2019-01-18 15:15:44 +01:00
Ondřej SurýandMichał Kępień 1d92178bec When --with-python is given to configure, use default search list for python binaries instead of 'yes'
(cherry picked from commit 3951cb053b)
2019-01-18 15:15:02 +01:00
Evan Hunt 235e6e481c Merge branch '752-disable-forwarders-when-priming-v9_12-v9_11' into 'v9_11'
If possible don't use forwarders when priming the resolver.

See merge request isc-projects/bind9!1357
2019-01-17 01:49:18 -05:00
Witold KręcickiandEvan Hunt aa9866c390 If possible don't use forwarders when priming the resolver.
If we try to fetch a record from cache and need to look into
hints database we assume that the resolver is not primed and
start dns_resolver_prime(). Priming query is supposed to return
NSes for "." in ANSWER section and glue records for them in
ADDITIONAL section, so that we can fill that info in 'regular'
cache and not use hints db anymore.
However, if we're using a forwarder the priming query goes through
it, and if it's configured to return minimal answers we won't get
the addresses of root servers in ADDITIONAL section. Since the
only records for root servers we have are in hints database we'll
try to prime the resolver with every single query.

This patch adds a DNS_FETCHOPT_NOFORWARD flag which avoids using
forwarders if possible (that is if we have forward-first policy).
Using this flag on priming fetch fixes the problem as we get the
proper glue. With forward-only policy the problem is non-existent,
as we'll never ask for root server addresses because we'll never
have a need to query them.

Also added a test to confirm priming queries are not forwarded.

(cherry picked from commit b49310ac06)
(cherry picked from commit f8963ad70e)
2019-01-16 22:27:52 -08:00
Mark Andrews 5fd2cc8472 Merge branch 'v9_11-normalize-files' into 'v9_11'
V9 11 normalize files

See merge request isc-projects/bind9!1352
2019-01-16 20:06:45 -05:00
Petr MenšíkandMark Andrews 2e8a927912 Normalize windows files and shell scripts
Commands used:
git add --chmod=+x bin/tests/system/ifconfig.sh mkinstalldirs
git add --renormalize 'win32utils/**.txt' '**.dsw'
2019-01-16 19:04:50 -05:00
Petr MenšíkandMark Andrews 631cb464c1 Change eol of windows files
Release tarballs have different eol of windows only files. Change them
also in git, so checkout matches archvies as much as possible.
2019-01-16 19:04:50 -05:00
Mark Andrews c8e7c8c928 Merge branch 'pkcs11-pubattr-check-v9_11' into 'v9_11'
Make sure null atributes are never used

See merge request isc-projects/bind9!1355
2019-01-16 17:20:53 -05:00
Petr MenšíkandMark Andrews 3442c69911 Make sure null atributes are never used
Add INSIST to pubattr fetching where null might occur in therory. Make
sure null is never dereferenced.

(cherry picked from commit fe9ef0d9f5)
2019-01-17 09:00:42 +11:00
Evan Hunt 5bae3985a3 Merge branch '792-bind9-doesn-t-tcp-retransmit-v9_11' into 'v9_11'
Resolve "bind9 doesn't tcp retransmit"

See merge request isc-projects/bind9!1349
2019-01-15 20:48:14 -05:00
Mark AndrewsandEvan Hunt bf6133ea61 adjust timeout to allow for ECN negotiation failures
(cherry picked from commit dadb924be7)
2019-01-15 17:30:20 -08:00
Ondřej Surý 7663d07513 Merge branch 'ondrej/fix-race-condition-in-dnstap-v9_11' into 'v9_11'
(v9_11) Fix race condition in cleanup part of dns_dt_create()

See merge request isc-projects/bind9!1345
2019-01-15 04:04:04 -05:00
Witold KręcickiandOndřej Surý 8cdad8fec2 Add CHANGES entry for GL!1323
(cherry picked from commit 4b5337e06b)
2019-01-15 09:51:45 +01:00
Ondřej Surý 5c73b97715 Fix race condition in cleanup part of dns_dt_create()
(cherry picked from commit 482dd7eed3)
2019-01-15 09:51:25 +01:00
Mark Andrews cf306bf345 Merge branch '590-win32-sample-gai-c-should-call-wsastartup-v9_11' into 'v9_11'
Resolve "[Win32] sample-gai.c should call WSAStartup()"

See merge request isc-projects/bind9!1343
2019-01-15 00:51:32 -05:00
Mark Andrews 032ede1165 add CHANGES
(cherry picked from commit 4500d9e91a)
2019-01-15 16:29:26 +11:00
Mark Andrews 34cf4336ac ensure that WSAStartup is called before getservbyname
(cherry picked from commit ac01359871)
2019-01-15 16:29:25 +11:00
Evan Hunt 631bb6bfea Merge branch 'u/fanf2/rndc-managed-keys-v9_12-v9_11' into 'v9_11'
Fix a few cosmetic issues with `rndc managed-keys`

See merge request isc-projects/bind9!1341
2019-01-14 21:41:29 -05:00
Mark AndrewsandEvan Hunt 06eb0a4367 add multi-view server and tests
(cherry picked from commit 7122b5786d)
(cherry picked from commit 22b77f45b7)
2019-01-14 18:31:02 -08:00
Mark AndrewsandEvan Hunt fb255668fa add CHANGES note
(cherry picked from commit 2d3f159707)
2019-01-14 18:19:27 -08:00
Tony FinchandEvan Hunt f72c687fa2 Fix a few cosmetic issues with rndc managed-keys
The handling of class and view arguments was broken, because the code
didn't realise that next_token() would overwrite the class name when
it parsed the view name. The code was trying to implement a syntax
like `refresh [[class] view]`, but it was documented to have a syntax
like `refresh [class [view]]`. The latter is consistent with other rndc
commands, so that is how I have fixed it.

Before:

$ rndc managed-keys refresh in rec
rndc: 'managed-keys' failed: unknown class/type
unknown class 'rec'

After:

$ rndc managed-keys refresh in rec
refreshing managed keys for 'rec'

There were missing newlines in the output from `rndc managed-keys
refresh` and `rndc managed-keys destroy`.

Before:

$ rndc managed-keys refresh
refreshing managed keys for 'rec'refreshing managed keys for 'auth'

After:

$ rndc managed-keys refresh
refreshing managed keys for 'rec'
refreshing managed keys for 'auth'

(cherry picked from commit 6a3b851f72)
(cherry picked from commit bc984ace12)
2019-01-14 18:19:22 -08:00
Evan Hunt 5b84b2cd0b Merge branch 'fix-dnssec-test-v9_12-v9_11' into 'v9_11'
b/t/s/dnssec/tests.sh: Cleanup showprivate() function

See merge request isc-projects/bind9!1337
2019-01-14 16:39:10 -05:00
Evan Hunt 3b367ef3cb b/t/s/dnssec/tests.sh: Cleanup showprivate() function
(cherry picked from commit b241dc58ec)
2019-01-14 13:23:36 -08:00
Evan Hunt 0c6592ab4d Merge branch 'each-fix-dnssec-test-error-v9_11' into 'v9_11'
DNSSEC test error

See merge request isc-projects/bind9!1334
2019-01-13 21:52:19 -05:00
Evan Hunt d653989a1e fix testing errors
- the checkprivate function in the dnssec test set ret=0, erasing
  results from previous tests and making the test appear to have passed
  when it shouldn't have
- checkprivate needed a delay loop to ensure there was time for all
  private signing records to be updated before the test

(cherry picked from commit 82e83d5dc7)
2019-01-13 21:34:35 -05:00
Mark Andrews dffc58208f Merge branch 'u/fanf2/rndc-alphabetize-v9_11' into 'v9_11'
cleanup: alphabetize rndc command dispatch

See merge request isc-projects/bind9!1332
2019-01-13 21:22:29 -05:00
Tony FinchandMark Andrews 81408256d3 cleanup: alphabetize rndc command dispatch 2019-01-14 13:02:02 +11:00
Mark Andrews ed96dc5dcb Merge branch '784-bind-9-12-3-p1-fatal-error-v9_11' into 'v9_11'
Resolve "bind 9.12.3-P1 fatal error"

See merge request isc-projects/bind9!1325
2019-01-09 04:06:00 -05:00
Mark Andrews d075b25b63 add CHANGES
(cherry picked from commit 9dd39d5385)
2019-01-09 19:48:59 +11:00
Mark Andrews 8bb42d7812 update refreshkeytime
(cherry picked from commit ca977e3976)
2019-01-09 19:48:58 +11:00
Mark Andrews aaab84019c Merge branch 'marka-maybe_numeric-and-nul-v9_11' into 'v9_11'
maybe_numeric failed to handle NUL in text region.

See merge request isc-projects/bind9!1322
2019-01-09 03:20:44 -05:00
Mark Andrews 3266d3c4da maybe_numeric failed to handle NUL in text region.
(cherry picked from commit ee23780246)
2019-01-09 19:08:22 +11:00
Mark Andrews dd960811a4 Merge branch 'marka-fail-when-required-field-is-missing-v9_11' into 'v9_11'
Ensure base64/base32/hex fields in DNS records that should be non-empty are.

See merge request isc-projects/bind9!1321
2019-01-09 03:05:41 -05:00
Mark Andrews 58cc1ee718 Ensure base64/base32/hex fields in DNS records that should be non-empty are.
(cherry picked from commit 5e8b772ad1)
2019-01-09 18:52:50 +11:00
Mark Andrews 7632a672b9 Merge branch '804-large-nsec3-responses-cause-failure-in-adding-records-to-ncache-and-eventually-formerr-instead-of-nxdomain-v9_11' into 'v9_11'
Resolve "Large NSEC3 responses cause failure in adding records to ncache and, eventually, FORMERR (instead of NXDOMAIN)"

See merge request isc-projects/bind9!1316
2019-01-09 00:33:45 -05:00
Mark Andrews e9d9790948 add CHANGES entry
(cherry picked from commit 3328116b57)
2019-01-09 16:17:08 +11:00
Mark Andrews 6750780e88 allow for up 100 records or 64K of data to be in a ncache entry
(cherry picked from commit 604889e627)
2019-01-09 16:17:07 +11:00
Evan Hunt bb5648f9d9 Merge branch '804-large-nsec3-responses-cause-failure-in-adding-records-to-ncache-and-eventually-formerr-instead-of-nxdomain-2-v9_11' into 'v9_11'
Resolve "Large NSEC3 responses cause failure in adding records to ncache and, eventually, FORMERR (instead of NXDOMAIN)"

See merge request isc-projects/bind9!1315
2019-01-09 00:09:01 -05:00
Mark AndrewsandEvan Hunt a5b3fc2348 add CHANGES
(cherry picked from commit 188c184381)
2019-01-08 20:51:27 -08:00
Mark AndrewsandEvan Hunt e4f7d6c418 explictly convert ISC_R_NOSPACE from dns_message_parse to DNS_R_FORMERR and remove from dns_result_torcode
(cherry picked from commit 0c42a9c0ab)
2019-01-08 20:51:27 -08:00
Evan Hunt 5a31a22986 Merge branch '812-cookie-test-failed-v9_11' into 'v9_11'
Resolve "cookie test failed."

See merge request isc-projects/bind9!1313
2019-01-08 23:31:36 -05:00
Mark AndrewsandEvan Hunt 24f7bc252d wait longer for dump to complete
(cherry picked from commit 8a8d378def)
2019-01-08 20:18:26 -08:00
Ondřej Surý c2515e8e20 Merge branch 'ondrej/disable-CI-in-release-branches-v9_11' into 'v9_11'
(v9_11) Run the regular pipelines only for merge requests, and run only the Debian sid...

See merge request isc-projects/bind9!1311
2019-01-08 09:16:59 -05:00
Ondřej Surý 8858947237 Run the regular pipelines only for merge requests, and run only the Debian sid build for release branches
(cherry picked from commit 24961f6068)
2019-01-08 14:58:58 +01:00
Michał Kępień 36e2175bd3 Merge branch '692-dig-fix-cleanup-upon-an-error-before-tcp-socket-creation-v9_11' into 'v9_11'
[v9_11] Fix cleanup upon an error before TCP socket creation

See merge request isc-projects/bind9!1308
2019-01-08 05:57:12 -05:00
Michał Kępień 9b96944bae Add CHANGES entry
5123.	[bug]		dig could hang indefinitely after encountering an error
			before creating a TCP socket. [GL #692]

(cherry picked from commit 3242cb53ec)
2019-01-08 11:24:04 +01:00
Michał Kępień b9f577eb6a Fix cleanup upon an error before TCP socket creation
When a query times out after a socket is created and associated with a
given dig_query_t structure, calling isc_socket_cancel() causes
connect_done() to be run, which in turn takes care of all necessary
cleanups.  However, certain errors (e.g. get_address() returning
ISC_R_FAMILYNOSUPPORT) may prevent a TCP socket from being created in
the first place.  Since force_timeout() may be used in code handling
such errors, connect_timeout() needs to properly clean up a TCP query
which is not associated with any socket.  Call clear_query() from
connect_timeout() after attempting to send a TCP query to the next
available server if the timed out query does not have a socket
associated with it, in order to prevent dig from hanging indefinitely
due to the dig_query_t structure not being detached from its parent
dig_lookup_t structure.

(cherry picked from commit 13975b32c6)
2019-01-08 11:24:03 +01:00
Michał Kępień 11a4845c7d Refactor code sending a query to the next server upon a timeout
When a query times out and another server is available for querying
within the same lookup, the timeout handler - connect_timeout() - is
responsible for sending the query to the next server.  Extract the
relevant part of connect_timeout() to a separate function in order to
improve code readability.

(cherry picked from commit c108fc5c6e)
2019-01-08 11:24:03 +01:00
Michał Kępień d8de90f859 Remove dead code handling address family mismatches for TCP sockets
Before commit c2ec022f57, using the "-b"
command line switch for dig did not disable use of the other address
family than the one to which the address supplied to that option
belonged to.  Thus, bind9_getaddresses() could e.g. prepare an
isc_sockaddr_t structure for an IPv6 address when an IPv4 address has
been passed to the "-b" command line option.  To avoid attempting the
impossible (e.g. querying an IPv6 address from a socket bound to an IPv4
address), a certain code block in send_tcp_connect() checked whether the
address family of the server to be queried was the same as the address
family of the socket set up for sending that query; if there was a
mismatch, that particular server address was skipped.

Commit c2ec022f57 made
bind9_getaddresses() fail upon an address family mismatch between the
address the hostname passed to it resolved to and the address supplied
to the "-b" command line option.  Such failures were fatal to dig back
then.

Commit 7f65860391 made
bind9_getaddresses() failures non-fatal, but also ensured that a
get_address() failure in send_tcp_connect() still causes the given query
address to be skipped (and also made such failures trigger an early
return from send_tcp_connect()).

Summing up, the code block handling address family mismatches in
send_tcp_connect() has been redundant since commit
c2ec022f57.  Remove it.

(cherry picked from commit ef1da8731b)
2019-01-08 11:24:03 +01:00
Michał Kępień 5c9106da2c Merge branch '315-track-forwarder-timeouts-in-fetch-contexts-v9_11' into 'v9_11'
[v9_11] Track forwarder timeouts in fetch contexts

See merge request isc-projects/bind9!1306
2019-01-08 05:00:06 -05:00
Michał Kępień 3ddb8337b3 Add CHANGES entry
5122.	[bug]		In a "forward first;" configuration, a forwarder
			timeout did not prevent that forwarder from being
			queried again after falling back to full recursive
			resolution. [GL #315]

(cherry picked from commit 1df9ca9e6a)
2019-01-08 08:34:37 +01:00
Michał Kępień 3db9f56718 Track forwarder timeouts in fetch contexts
Since following a delegation resets most fetch context state, address
marks (FCTX_ADDRINFO_MARK) set inside lib/dns/resolver.c are not
preserved when a delegation is followed.  This is fine for full
recursive resolution but when named is configured with "forward first;"
and one of the specified forwarders times out, triggering a fallback to
full recursive resolution, that forwarder should no longer be consulted
at each delegation point subsequently reached within a given fetch
context.

Add a new badnstype_t enum value, badns_forwarder, and use it to mark a
forwarder as bad when it times out in a "forward first;" configuration.
Since the bad server list is not cleaned when a fetch context follows a
delegation, this prevents a forwarder from being queried again after
falling back to full recursive resolution.  Yet, as each fetch context
maintains its own list of bad servers, this change does not cause a
forwarder timeout to prevent that forwarder from being used by other
fetch contexts.

(cherry picked from commit 33350626f9)
2019-01-08 08:34:37 +01:00
Mark Andrews 8a929b14f1 Merge branch 'marka-fix-stub_dlz_allowzonexfr-v9_11' into 'v9_11'
return ISC_R_NOTFOUND when name does not match the zone name

See merge request isc-projects/bind9!1302
2019-01-06 23:43:02 -05:00
Mark Andrews c9a7169068 add CHANGES
(cherry picked from commit bb57c7f775)
2019-01-07 15:24:23 +11:00
Mark Andrews 7d2f6603cf return ISC_R_NOTFOUND when name does not match the zone name
(cherry picked from commit 402190df18)
2019-01-07 15:23:58 +11:00
Mark Andrews 14f22d9040 Merge branch 'indenting-v9_11' into 'v9_11'
indenting

See merge request isc-projects/bind9!1291
2019-01-01 20:11:51 -05:00
Mark Andrews cc9ece19e3 indenting
(cherry picked from commit c69ad95238)
2019-01-02 11:51:52 +11:00
Mark Andrews b63c545f59 Merge branch 'copyrights-v9_11' into 'v9_11'
update copyrights

See merge request isc-projects/bind9!1289
2019-01-01 18:45:03 -05:00
Mark Andrews 84527eb4d5 update copyrights 2019-01-02 10:26:49 +11:00
Ondřej Surý 94740dc46a Merge branch 'ondrej/sync-gitlab-ci-with-master' into 'v9_11'
[v9_11] Sync GitLab CI jobs with master

See merge request isc-projects/bind9!1222
2018-12-21 04:11:14 -05:00
Ondřej Surý c8c74d8b3e For system tests, retry twice before failing 2018-12-21 09:29:47 +01:00
Ondřej Surý 4892b52156 Fix the stdatomic #ifdefs to work with older compilers 2018-12-21 09:29:47 +01:00
Ondřej Surý 074cc75aa7 Add better EMPTY_TRANSLATION_UNIT to isc/util.h 2018-12-21 09:29:47 +01:00
Ondřej Surý c116fb963a Fix ECC algorithms unused constants in PKCS#11 build 2018-12-21 09:29:47 +01:00
Ondřej Surý e402955133 Add Ubuntu Xenial and Bionic to GitLab CI jobs 2018-12-21 09:29:47 +01:00
Ondřej Surý 2c7c3b79bd SoftHSM 2.4.0 only supports softhsm2.conf now, rewrite GitLab CI commands to properly support that 2018-12-21 09:29:47 +01:00
Ondřej Surý 51286ec006 Add unreachable.spatch coccinelle recipe and run it in precheck CI phase 2018-12-21 09:29:47 +01:00
Ondřej Surý f6ff0216c8 Sync GitLab CI jobs with master branch 2018-12-21 09:29:47 +01:00
Ondřej Surý 158e3187a3 Merge branch '674-abort-when-memory-allocation-fails-v9_11-strerror-fix' into 'v9_11'
Resolve "Abort when memory allocation or other mandatory resource allocation fails"

See merge request isc-projects/bind9!1278
2018-12-21 03:29:06 -05:00
Ondřej Surý 0c6c59a289 Use isc__strerror instead of strerror_r in v9_11 branch 2018-12-21 09:26:50 +01:00
Ondřej Surý b865b66094 Merge branch '674-abort-when-memory-allocation-fails-v9_11' into 'v9_11'
(v9_11) Resolve "abort when memory allocation fails"

See merge request isc-projects/bind9!1274
2018-12-21 03:13:37 -05:00
Ondřej SurýandOndřej Surý 8d532c111b Add CHANGES entry for GL #674
(cherry picked from commit 37ff7f635b)
2018-12-21 03:03:24 -05:00
Ondřej SurýandOndřej Surý 7d9e19b5eb Abort on allocation failure only if the memory functions are used internally in BIND 9
(cherry picked from commit c22241ae9009391c1d28085c5cf0009a6caef09c)
2018-12-21 03:03:24 -05:00
Ondřej SurýandOndřej Surý c73912278b Abort on memory allocation failure
(cherry picked from commit 8de2451756)
2018-12-21 03:03:24 -05:00
Matthijs Mekking a1322f019e Merge branch '783-dnssec-signzone-unsupported-algorithms-v9_11' into 'v9_11'
(v9_11) Resolve "Allow unsupported algorithms in zone when not used for signing"

See merge request isc-projects/bind9!1271
2018-12-20 10:32:59 -05:00
Matthijs Mekking bb2c242c39 Remove dig_with_opts 2018-12-20 15:23:07 +01:00
Matthijs MekkingandOndřej Surý 0e9a8da68c Replace DSA with Reserved algorithm
(cherry picked from commit 17cdde1e56)
2018-12-20 04:50:08 -05:00
Matthijs MekkingandOndřej Surý 1360a1fa1a Move REQUIRE outside comment unsupported alg
(cherry picked from commit 5ca649967e)
2018-12-20 04:50:08 -05:00
Matthijs MekkingandOndřej Surý 040e132f16 Allow unsupported alg in zone /w dnssec-signzone
dnssec-signzone should sign a zonefile that contains a DNSKEY record
with an unsupported algorithm.  Current behavior is that it will
fail, hitting a fatal error.  The fix detects unsupported algorithms
and will not try to add it to the keylist.

Also when determining the maximum iterations for NSEC3, don't take
into account DNSKEY records in the zonefile with an unsupported
algorithm.

(cherry picked from commit 1dd11fc754)
2018-12-20 04:50:08 -05:00
Matthijs MekkingandOndřej Surý 9f81119c02 Add dnssec-signzone tests with unsupported alg
dnssec-signzone should sign a zonefile that contains a DNSKEY record
with an unsupported algorithm.

(cherry picked from commit 6d976b37c1)
(cherry picked from commit 8619318a1e6207e487438a93bd7a620967091347)
2018-12-20 04:50:08 -05:00
Ondřej Surý 575cbf3ea1 Merge branch '768-add-description-to-ldap-schema-v9_11' into 'v9_11'
(v9_11) Add optional description field to LDAP schema

See merge request isc-projects/bind9!1269
2018-12-20 04:47:01 -05:00
Roland GruberandOndřej Surý 4a97a37eae Add optional description field to LDAP schema
(cherry picked from commit 83903f6f5e)
2018-12-20 10:33:34 +01:00
Ondřej Surý 0905a87ed7 Merge branch '787-set-the-clang-define-to-1-v9_11' into 'v9_11'
(v9_11) __SANITIZE_ADDRESS__ needs to be defined to 1

See merge request isc-projects/bind9!1266
2018-12-19 18:16:51 -05:00
Ondřej Surý d0dadf5ac4 __SANITIZE_ADDRESS__ needs to be defined to 1
(cherry picked from commit ff7c868f25)
2018-12-20 00:15:59 +01:00
Ondřej Surý 498ea71f99 Merge branch '782-add-support-for-msys2-in-stop.pl-script-v9_11' into 'v9_11'
(v9_11) Properly detect msys/msys2 environment in the stop.pl script.

See merge request isc-projects/bind9!1261
2018-12-19 16:14:18 -05:00
Ondřej Surý c1c10ca2b9 Properly detect msys/msys2 environment in the stop.pl script.
(cherry picked from commit 808dac0760)
2018-12-19 21:31:41 +01:00
Ondřej Surý debf6c2853 Merge branch '787-use-correct-define-v9_11' into 'v9_11'
gcc defines __SANITIZE_ADDRESS__ and not __ADDRESS_SANITIZER__, use the correct #define

See merge request isc-projects/bind9!1257
2018-12-19 06:47:44 -05:00
Ondřej Surý 11cce88a41 gcc defines __SANITIZE_ADDRESS__ and not __ADDRESS_SANITIZER__, use the correct #define
(cherry picked from commit 8903d68d69)
2018-12-19 12:46:05 +01:00
Ondřej Surý 0768775dc1 Merge branch '787-disable-rtld_deepbind-when-compiled-under-asan-v9_11' into 'v9_11'
(v9_11) Resolve "RTLD_DEEPBIND and AddressSanitizer aren't compatible"

See merge request isc-projects/bind9!1254
2018-12-19 05:38:46 -05:00
Ondřej Surý 8fbd61343a Disable RTLD_DEEPBIND when compiled under AddressSanitizer
(cherry picked from commit cad6b39cab)
2018-12-19 10:51:09 +01:00
Ondřej Surý 9827b8ade9 Define __ADDRESS_SANITIZER__ if compiling under clang's AddressSanitizer
(cherry picked from commit e1ce3a3d42)
2018-12-19 10:50:54 +01:00
Ondřej Surý 68c573013e Merge branch '782-revert-cygwin-grep-CRLF-issue-v9_12-v9_11' into 'v9_11'
Revert "Merge branch '782-cygwin-grep-CRLF-issue-v9_12-v9_11' into 'v9_11'"

See merge request isc-projects/bind9!1243
2018-12-17 06:57:14 -05:00
Ondřej Surý b9e16f3475 Revert "Merge branch '782-cygwin-grep-CRLF-issue-v9_12-v9_11' into 'v9_11'"
This reverts commit b644eb672b, reversing
changes made to 3b302c58e2.
2018-12-17 12:44:24 +01:00
Evan Hunt b644eb672b Merge branch '782-cygwin-grep-CRLF-issue-v9_12-v9_11' into 'v9_11'
Resolve "current version of cygwin grep causes tests to fail when grepping for end of line character"

See merge request isc-projects/bind9!1240
2018-12-15 00:24:05 -05:00
Curtis BlackburnandEvan Hunt 5641664f91 minor fixes to dns64 and rndc CRLF fix. rpzrecurse failure will be addressed in a separate issue 2018-12-14 19:45:42 -08:00
Curtis BlackburnandEvan Hunt d9fe816644 more CRLF fixes (dns64) 2018-12-14 19:45:38 -08:00
Curtis BlackburnandEvan Hunt 99fcbcf904 digdelv test fixed for CRLF issue 2018-12-14 19:45:37 -08:00
Curtis BlackburnandEvan Hunt ddee74194c windows CRLF issues fixed in builtin test 2018-12-14 19:45:34 -08:00
Mark Andrews 3b302c58e2 Merge branch '779-named-checkconf-crashes-in-parser-c-v9_11' into 'v9_11'
Resolve "named-checkconf crashes in parser.c"

See merge request isc-projects/bind9!1237
2018-12-14 17:51:13 -05:00
Mark Andrews 7aecb8b1fd pass the correct object to cfg_obj_log
(cherry picked from commit 53a33f7365)
2018-12-15 09:38:42 +11:00
Mark Andrews 4e01cc3cfc Merge branch '742-isc-support-13767-nsec3-typemap-improperly-includes-dnskey-rrset-instead-of-ignoring-it-as-out-of-zone-v9_11' into 'v9_11'
Resolve "[ISC-support

See merge request isc-projects/bind9!1233
2018-12-13 22:58:25 -05:00
Mark Andrews aab3fcbd1c add CHANGES
(cherry picked from commit 85da986d68)
2018-12-14 14:44:46 +11:00
Mark Andrews da49d1cfc3 add unit tests for dns_rdatatype_atcname, dns_rdatatype_atparent and iszonecutauth
(cherry picked from commit f2f7711977)
2018-12-14 14:44:20 +11:00
Mark Andrews 637e3c4c4b check that DNSKEY and other occluded data are excluded from the delegating bitmap
(cherry picked from commit 7e4b82103b)
2018-12-14 14:44:18 +11:00
Mark Andrews 587c81ac99 create dns_rdatatype_atcname to split records that can appear along side CNAME from DNSSEC; dns_rdatatype_iszonecutauth allowed too many types
(cherry picked from commit f4ceb12b69)
2018-12-14 14:29:46 +11:00
Evan Hunt 243cded414 Merge branch 'marka-tabify-changes-precheck-v9_11' into 'v9_11'
tabify changes precheck

See merge request isc-projects/bind9!1227
2018-12-13 00:53:25 -05:00
Mark AndrewsandEvan Hunt 7c9b45839d white space 2018-12-12 21:43:41 -08:00
Mark AndrewsandEvan Hunt 4fa777e7a1 tabify-changes precheck
(cherry picked from commit 87b3b46096)
2018-12-12 21:42:08 -08:00
Ondřej Surý 2e527c6bc1 Merge branch 'ondrej/rename-the-envvar-to-BUILD_PARALLEL_JOBS-v9_11' into 'v9_11'
(v9_11) Rename the GitLab CI environment variable to BUILD_PARALLEL_JOBS

See merge request isc-projects/bind9!1225
2018-12-12 17:27:17 -05:00
Ondřej Surý dc909bd1dd Rename the GitLab CI environment variable to BUILD_PARALLEL_JOBS
(cherry picked from commit e20d5e4dd2)
2018-12-12 23:08:43 +01:00
Mark Andrews 4139f9c467 Merge branch '760-the-notify-system-test-incorrectly-detects-startup-notify-rate-error-v9_11' into 'v9_11'
Resolve "The notify system test incorrectly detects startup notify rate error."

See merge request isc-projects/bind9!1219
2018-12-11 18:44:25 -05:00
Mark Andrews c5f85f808c check that the time between notify messages is not too small
(cherry picked from commit 47a4e0eeaa)
2018-12-12 10:24:23 +11:00
Ondřej Surý 487ca41b5c Merge branch '623-rpz-logging-to-include-qclass-and-qtype-v9_11' into 'v9_11'
(v9_11) Resolve "RPZ logging to include QCLASS and QTYPE"

See merge request isc-projects/bind9!1057
2018-12-11 06:38:55 -05:00
Ondřej Surý 90b0f710a6 Add CHANGES entry for GL #623 2018-12-11 12:26:25 +01:00
Mark AndrewsandOndřej Surý e5e1957a8f use typebuf and classbuf 2018-12-11 12:26:25 +01:00
Mark AndrewsandOndřej Surý 1d33b62405 update rpzrecurse for RPZ_LOG_QTYPE_QCLASS 2018-12-11 12:26:25 +01:00
Mark AndrewsandOndřej Surý dc49ce1cd0 log RPZ type and class
(cherry picked from commit 28442f11f0)
2018-12-11 06:24:08 -05:00
Evan Hunt 739b3ba0eb Merge branch 'each-autosign-fix' into 'v9_11'
fix autosign test

See merge request isc-projects/bind9!1216
2018-12-11 01:37:41 -05:00
Evan Hunt c47a301c0c add missing -r $RANDFILE 2018-12-11 01:23:33 -05:00
Evan Hunt 5a8dfccee3 Merge branch '756-dyndb-system-test-failing-intermittently-v9_11' into 'v9_11'
Resolve "dyndb system test failing intermittently."

See merge request isc-projects/bind9!1214
2018-12-10 12:27:15 -05:00
Mark AndrewsandEvan Hunt 940a0f2003 allow a small about of time for the syncptr event to be processed
(cherry picked from commit 3bca52ca07)
2018-12-10 09:07:59 -08:00
Mark Andrews 0a9422771c Merge branch 'michal-extend-dname-dnssec-tests-v9_11' into 'v9_11'
Extend DNAME DNSSEC tests

See merge request isc-projects/bind9!1212
2018-12-10 02:00:49 -05:00
Michał KępieńandMark Andrews f0004e120d Check that DNAME is not treated as a delegation when signing
(cherry picked from commit adbca54079)
2018-12-10 17:48:17 +11:00
Mark Andrews ccac107ded verify that auto-dnssec maintain generates and signs NSEC3 records with DNAME at the apex
(cherry picked from commit 6b470bbf42)
2018-12-10 17:48:17 +11:00
Mark Andrews 4731ee6ae1 verify that dnssec-signzone generates NSEC3 records with DNAME at the apex
(cherry picked from commit 06e218c421)
2018-12-10 17:29:29 +11:00
Mark Andrews aa6dc21ad6 Merge branch 'michal-zone_sign-error-logging-v9_11' into 'v9_11'
Log CHECK() errors in zone_sign()

See merge request isc-projects/bind9!1209
2018-12-09 23:35:33 -05:00
Mark Andrews ed232e96d1 log a error if we don't explicitly know that a error has been logged in zone_sign
(cherry picked from commit b108376a10)
2018-12-10 15:13:53 +11:00
Evan Hunt 4894e9e65a Merge branch 'each-check-cfg-v9_11' into 'v9_11'
checklibs needs to grep for the cfg_* prefix in lib/isccfg

See merge request isc-projects/bind9!1204
2018-12-06 21:29:47 -05:00
Evan Hunt 960a3906fe checklibs needs to grep for the cfg_* prefix in lib/isccfg
(cherry picked from commit ab7356a7de)
2018-12-06 18:09:04 -08:00
Mark Andrews 4b091135fe Merge branch 'michal-befix-squashed-v9_11' into 'v9_11'
Fix bottom of zone determination.

See merge request isc-projects/bind9!1200
2018-12-06 20:32:56 -05:00
Mark Andrews 913c62979e add CHANGES and release notes entries.
(cherry picked from commit c8e92d3e45)
2018-12-07 12:20:09 +11:00
Mark Andrews f8dc30d18b Properly detect bottom of zone when sign_a_node() is not called
(cherry picked from commit 9eec02a81f)
2018-12-07 12:20:09 +11:00
Mark Andrews b630c8255a Merge branch '769-host-u-documented-in-manpage-but-disabled-in-code-v9_11' into 'v9_11'
Resolve ""host -U" documented in manpage, but disabled in code"

See merge request isc-projects/bind9!1196
2018-12-06 16:53:24 -05:00
Mark Andrews aaf433f2f9 add CHANGES
(cherry picked from commit 9586c3a696)
2018-12-07 08:40:52 +11:00
Andreas HasenackandMark Andrews ab80e26381 add -U to preparse and usage
(cherry picked from commit 665618698e)
2018-12-07 08:40:36 +11:00
Mark Andrews 7df65ab9ca Merge branch '756-dyndb-system-test-failing-intermittently-v9_11' into 'v9_11'
Add additional logging to driver.

See merge request isc-projects/bind9!1186
2018-12-05 19:47:00 -05:00
Mark Andrews e1f49ba977 add more error logging; add event processing logging
(cherry picked from commit 6a5c8ec2ea)
2018-12-06 11:33:36 +11:00
Ondřej Surý c7c99d81c5 Merge branch '628-refactor-masterformat-system-test-v9_11' into 'v9_11'
(v9_11) Refactor masterformat system test

See merge request isc-projects/bind9!1183
2018-12-05 16:19:25 -05:00
Ondřej Surý ca391cd085 Change the default algorithm to RSASHA256 and the alternative algorithm to RSASHA1 as those are always supported 2018-12-05 21:56:15 +01:00
Ondřej Surý 28560fd280 Add DNSKEY and CDNSKEY with unknown algorithm number (PRIVATEDNS) and \0 as content
(cherry picked from commit 00cc0b236a)
2018-12-05 20:45:57 +01:00
Ondřej Surý f492efe680 Refactor masterformat to be shellcheck clean and don't use RSAMD5 algorithm in the tests
(cherry picked from commit b13c7ca402)
2018-12-05 20:45:50 +01:00
Ondřej Surý 4a202abdc8 Merge branch '745-start.pl-and-stop.pl-cygwin-fixes-v9_11' into 'v9_11'
(v9_11) Make the start.pl and stop.pl more Cygwin friendly

See merge request isc-projects/bind9!1177
2018-12-04 09:45:12 -05:00
Ondřej Surý fc9e2a1a75 Make the start.pl and stop.pl more Cygwin friendly
(cherry picked from commit 835bad2c5c)
2018-12-04 15:31:50 +01:00
Ondřej Surý 47ade1ec01 Merge branch '745-start.pl-refactoring-v9_12-v9_11' into 'v9_11'
(v9_11) start.pl - wait for server to say 'running', refactor

See merge request isc-projects/bind9!1171
2018-12-03 15:01:29 -05:00
Ondřej Surý 948104ee5a Replace realpath with cd&pwd shell magic 2018-12-03 20:45:16 +01:00
Ondřej Surý 337c87faad Add extra .gitignore to lwresd test 2018-12-03 20:45:16 +01:00
Ondřej Surý 4344a7e599 Make run.sh and runall.sh executable 2018-12-03 20:45:16 +01:00
Ondřej Surý 08fa20bf54 Re-add functionality to handle lwresd from {start,stop}.pl 2018-12-03 20:45:16 +01:00
Ondřej Surý 62a1054fd0 Make calls to the stop.pl always use the test name instead of '.'
(cherry picked from commit e227815af5)
(cherry picked from commit 73e26ec1d6)
2018-12-03 20:39:14 +01:00
Ondřej Surý 1fa08d78d3 stop.pl - refactor
(cherry picked from commit 27ee629e6b)
(cherry picked from commit 70cbdf3528)
2018-12-03 20:39:13 +01:00
Ondřej Surý 0c384a76cd Make calls to the start.pl always use the test name instead of '.'
(cherry picked from commit 16b95157e8)
(cherry picked from commit e8f38da2df)
2018-12-03 20:39:13 +01:00
Brian ConryandOndřej Surý 7f2a3a7c5f start.pl - refactor
(cherry picked from commit 0fc8bfef13)
(cherry picked from commit 1ae7ca6606)
2018-12-03 17:31:27 +01:00
Brian ConryandOndřej Surý 8bb758633d start.pl - wait for server to say 'running'
(cherry picked from commit 597049461d)
(cherry picked from commit ee737c8328)
2018-12-03 17:25:18 +01:00
Ondřej Surý 39ba7ff3ce Merge branch '628-improvements-to-system-tests-v9_12-v9_11' into 'v9_11'
(v9_11) Tiny small improvements to system test scripts.

See merge request isc-projects/bind9!1168
2018-12-03 07:48:28 -05:00
Ondřej Surý 72fbbd0a29 Add ALTERNATIVE_ALGORITHM to conf.sh
(cherry picked from commit b2c4c35493)
(cherry picked from commit e3379c44cb)
2018-12-03 09:52:02 +01:00
Ondřej Surý 08a39b1073 Export SYSTEMTESTTOP from run.sh (so, it doesn't have to be defined in each script) and scrub / from the test names
(cherry picked from commit 1b2a3a0ea6)
(cherry picked from commit d1dffe2fd3)
2018-12-03 09:52:02 +01:00
Mark Andrews 80968572b4 Merge branch '754-silence-warning-about-first-half-of-conditional-always-being-true-v9_11' into 'v9_11'
Resolve "Silence warning about first half of conditional always being true."

See merge request isc-projects/bind9!1163
2018-12-03 01:16:23 -05:00
Mark Andrews 3c4a118978 only test for prefixlen <= 63
(cherry picked from commit 5744415a75)
2018-12-03 17:04:59 +11:00
Mark Andrews 952386d00f Merge branch 'u/fanf2/catz-logging-v9_11' into 'v9_11'
U/fanf2/catz logging v9 11

See merge request isc-projects/bind9!1160
2018-12-03 00:09:18 -05:00
Mark Andrews 55ce0cbfdb add CHANGES note
(cherry picked from commit e6c5ad37a4)
2018-12-03 15:58:07 +11:00
Tony FinchandMark Andrews be4822fafd catz: improved log message when a zone is overridden
If you have a catalog zone containing 10.in-addr.arpa and an
explicitly-configured version which overrides the catz version,
`named` used to log:

catz: error "success" while trying to add zone "10.in-addr.arpa"

After this patch it logs:

catz: zone "10.in-addr.arpa" is overridden by explicitly configured zone
(cherry picked from commit 16eb35187a)
2018-12-03 15:57:03 +11:00
Mark Andrews 8b3c175d95 Merge branch '585-dnssec-coverage-fails-with-typeerror-for-ksk-with-a-deletion-date-set-v9_11' into 'v9_11'
Resolve "dnssec-coverage fails with TypeError for KSK with a Deletion date set"

See merge request isc-projects/bind9!1159
2018-11-29 19:30:04 -05:00
Mark Andrews 1a28a4a138 add CHANGES note
(cherry picked from commit 02d20a2f53)
2018-11-30 11:16:03 +11:00
Mark Andrews 232a2004ba use documented default key ttl
(cherry picked from commit 6499bdfd8b)
2018-11-30 11:15:31 +11:00
Mark Andrews a74acbfd82 add reproducer for [GL #585]
(cherry picked from commit 0ac2a868bb)
2018-11-30 11:15:29 +11:00
Evan Hunt 98c431e5ba Merge branch 'each-export-dynamic-v9_12-v9_11' into 'v9_11'
set the export-dynamic linker flag on linux

See merge request isc-projects/bind9!1156
2018-11-29 02:51:24 -05:00
Evan Hunt 8d698288fb set the export-dynamic linker flag on linux
(cherry picked from commit 4ae085a066)
2018-11-28 23:38:43 -08:00
Mark Andrews 28ca65c663 Merge branch '748-dns_catz_-are-missing-lots-of-dbc-checks-v9_12-v9_11' into 'v9_11'
Resolve "dns_catz_* are missing lots of DBC checks."

See merge request isc-projects/bind9!1153
2018-11-28 23:21:38 -05:00
Mark Andrews c0a3c48802 add missing DBC checks for catz and add isc_magic checks; add DBC checks to ht.c
(cherry picked from commit a487473fc5)
(cherry picked from commit 17d9fa3cc7)
2018-11-29 15:05:17 +11:00
Mark Andrews e00427f26a Merge branch '731-catalog-zone-incorrect-logging-v9_11' into 'v9_11'
Resolve "Catalog zone incorrect logging"

See merge request isc-projects/bind9!1147
2018-11-28 08:17:24 -05:00
Mark Andrews 12f2ea418c update zname with the current zone anme
(cherry picked from commit 0708e43d3f)
2018-11-28 23:34:42 +11:00
Michał Kępień 0c8eaf096f Merge branch '730-fix-build-time-python-configuration-v9_11' into 'v9_11'
[v9_11] Fix build-time Python configuration

See merge request isc-projects/bind9!1140
2018-11-27 10:25:23 -05:00
Michał Kępień f3be313bbe Add CHANGES entry
5101.	[bug]		Fix default installation path for Python modules.
			[GL #730]

(cherry picked from commit 13da99a80c)
2018-11-27 15:52:58 +01:00
Ondřej SurýandMichał Kępień 6c4b8ee8ee Fix build-time Python configuration
Apply various fixes and tweaks to Python configuration logic implemented
in the "configure" script:

  - Prevent PYTHON_INSTALL_DIR, which holds the value passed to the
    --with-python-install-dir option, from being set to "unspec" by
    default as this breaks installing Python modules when the
    --with-python-install-dir option is not used.

  - Make the --with-python-install-dir option also work when the Python
    interpreter is specified explicitly (using --with-python=<...>).

  - Improve contents and placement of error messages.

  - Reduce duplication of code checking Python dependencies.

  - Use Autoconf macros AS_CASE() and AS_IF() instead of plain shell
    code.

  - Update comments.  Capitalize the word "Python" when referring to the
    language itself rather than a specific executable.

(cherry picked from commit ed4c700c33)
2018-11-27 15:52:40 +01:00
Ondřej Surý 6bc28265d3 Merge branch 'ondrej-add-python-3.6-and-3.7-to-configure.ac-v9_11' into 'v9_11'
(v9_11) Add python3.6 and python3.7 to the search list of python versions

See merge request isc-projects/bind9!1138
2018-11-27 05:00:58 -05:00
Ondřej Surý af1c5ef613 Add python3.6 and python3.7 to the search list of python versions
(cherry picked from commit da9038e9a0)
2018-11-27 10:33:33 +01:00
Mark Andrews d4b800e3c1 Merge branch '715-side-effect-in-assertion-in-name_test-c-v9_11' into 'v9_11'
Resolve "side effect in assertion in name_test.c"

See merge request isc-projects/bind9!1125
2018-11-22 19:20:30 -05:00
Mark Andrews 156195dac6 address coverity side effect in assert warning
(cherry picked from commit 2156a5b610)
2018-11-23 10:21:53 +11:00
Mark Andrews 137cc98dc9 Merge branch '710-fix-socket-test-v9_11' into 'v9_11'
Use proper casting in socket unit test

See merge request isc-projects/bind9!1121
2018-11-22 02:33:26 -05:00
Mark Andrews d47dd94620 remove quotes from around ${EXTRA_CONFIGURE} 2018-11-22 18:13:26 +11:00
Mark Andrews 1028731f03 turnoff dlopen for asan 2018-11-22 18:05:54 +11:00
Mark Andrews 889175eb17 replace strncpy + setting end of array to NUL with strlcpy 2018-11-22 10:50:06 +11:00
Witold KręcickiandMark Andrews 50d7e0b4ef Use proper casting in socket unit test
(cherry picked from commit 5f81aa10bc)
2018-11-22 10:34:43 +11:00
Ondřej SurýandMark Andrews 473f3d077f Disable internal malloc for AddressSanitizer build
(cherry picked from commit 4f7177c794)
2018-11-22 10:34:43 +11:00
Ondřej SurýandMark Andrews 6c73f8d681 Add AddressSanitizer enabled build to GitLab CI
(cherry picked from commit a8649cc299)
2018-11-22 10:34:43 +11:00
Mark Andrews 1b9bc18ab6 Merge branch '712-memleak-in-delv-v9_11' into 'v9_11'
Fix a small memleak in delv

See merge request isc-projects/bind9!1116
2018-11-21 16:33:40 -05:00
Witold KręcickiandMark Andrews 01bbb308b4 Fix a small memleak in delv
(cherry picked from commit d00b3f47ba)
2018-11-22 08:22:47 +11:00
Mark Andrews f2413e0e6a Merge branch 'ondrej/use-strlcpy-in-wks_11.c-v9_11' into 'v9_11'
Use strlcpy in place where strncpy(s, ...) + s[sizeof(s)-1] = \0; was used

See merge request isc-projects/bind9!1114
2018-11-21 16:19:56 -05:00
Ondřej SurýandMark Andrews 2386be289c Use strlcpy in place where strncpy(s, ...) + s[sizeof(s)-1] = \0; was used
(cherry picked from commit 175f06949f)
2018-11-22 08:11:31 +11:00
Mark Andrews fb68ed9adf Merge branch '711-fix-memory-leak-in-lex_test-v9_11' into 'v9_11'
Fix memory leak in lex_test.c

See merge request isc-projects/bind9!1112
2018-11-21 15:54:14 -05:00
Ondřej SurýandMark Andrews 78a94766d7 Fix memory leak in lex_test.c
(cherry picked from commit 7a3eb391fa)
2018-11-21 15:46:55 -05:00
Mark Andrews 9114623d2b Merge branch '702-unchecked-returns-in-server-c-v9_11' into 'v9_11'
Resolve "unchecked returns in server.c"

See merge request isc-projects/bind9!1110
2018-11-21 15:06:03 -05:00
Mark Andrews e254e95d7d address unchecked return values
(cherry picked from commit ccfd577715)
2018-11-22 06:56:25 +11:00
Evan Hunt 17e35dd6c2 Merge branch 'systest-entropy-v9_11' into 'v9_11'
increase pseudorandom data in system tests

See merge request isc-projects/bind9!1092
2018-11-17 03:09:58 -05:00
Evan Hunt b407e80d00 better system test entropy
- use genrandom to get 4k of data instead of 800 bytes
- set this value as RANDOMSIZE in conf.sh

(cherry picked from commit 19aaecafeb)
2018-11-16 23:54:39 -08:00
Evan Hunt e0824ab0d0 Merge branch '703-resource-leak-in-dlz_filesystem_driver-c-v9_11' into 'v9_11'
Resolve "resource leak in dlz_filesystem_driver.c"

See merge request isc-projects/bind9!1090
2018-11-16 20:00:17 -05:00
Mark AndrewsandEvan Hunt cd7b0f36f7 cleanup allocated memory on error
(cherry picked from commit 4979d5f31f)
2018-11-16 16:51:59 -08:00
Evan Hunt 799708f50d Merge branch 'cmocka-silence-v9_11' into 'v9_11'
remove (or hide behind a 'verbose' flag) extra output from unit tests

See merge request isc-projects/bind9!1088
2018-11-16 16:12:18 -05:00
Evan Hunt 58314571ef remove (or hide behind a 'verbose' flag) extra output from system tests
(cherry picked from commit 8f15219f36)
2018-11-16 13:00:49 -08:00
Evan Hunt 8841456764 Merge branch '4-warn-not-fail-v9_11' into 'v9_11'
warn, rather than failing, if kyua is not present

See merge request isc-projects/bind9!1086
2018-11-16 15:56:23 -05:00
Evan Hunt 2d7235e1f1 warn, rather than failing, if kyua is not present
(cherry picked from commit 6cfb2249e1)
2018-11-16 12:42:39 -08:00
Evan Hunt 2ed9c1f816 Merge branch 'hanging-tests-v9_11' into 'v9_11'
Hanging tests on v9_11

See merge request isc-projects/bind9!1082
2018-11-16 15:41:11 -05:00
Evan Hunt b1318ccac7 use /dev/urandom as default random source 2018-11-16 12:28:11 -08:00
Evan Hunt 731f27e77e set inactive date in keygen instead of settime 2018-11-16 11:56:19 -08:00
Evan Hunt a37f21fdcf increase the entropy allocated by genrandom 2018-11-16 11:56:19 -08:00
Evan Hunt 9557e2f454 fix broken keygen call in verify 2018-11-16 11:56:19 -08:00
Evan Hunt 3458eb05a8 Merge branch 'fix-debug-output-v9_11' into 'v9_11'
echo debug output (D:text) the same as informational (I:text)

See merge request isc-projects/bind9!1084
2018-11-16 14:44:21 -05:00
Evan Hunt 3f7d2b0036 echo debug output (D:text) the same as informational (I:text)
(cherry picked from commit dfa1589975)
2018-11-16 11:42:04 -08:00
Evan Hunt bf0a1644d7 Merge branch '4-remove-embedded-atf-v9_11' into 'v9_11'
Remove embedded ATF and required ATF >= 0.20 + Kyua to run unittests

See merge request isc-projects/bind9!1080
2018-11-16 12:46:29 -05:00
Ondřej SurýandEvan Hunt 68dfb55f18 Add CHANGES entry for GL !875
(cherry picked from commit 9b0501635b)
2018-11-16 09:18:16 -08:00
Ondřej SurýandEvan Hunt bf23e17e7c Remove the traces of ATF from documentation
(cherry picked from commit fa33b4ee23)
2018-11-16 09:17:59 -08:00
Ondřej SurýandEvan Hunt d196b5e493 Remove embedded atf-src and enforce atf >= 0.20 + kyua as execution engine
(cherry picked from commit de219b8555)
2018-11-16 09:17:32 -08:00
Evan Hunt 11cbb0619d Merge branch '620-cmocka-conversions-v9_12-v9_11' into 'v9_11'
Resolve "CMOCKA conversions"

See merge request isc-projects/bind9!1063
2018-11-15 21:07:14 -05:00
Evan Hunt 026817bd9c CHANGES
(cherry picked from commit 32503f3b52)
(cherry picked from commit 7565a18583)
2018-11-15 17:52:00 -08:00
Evan Hunt 26da376f31 remove --with-atf from gitlab CI
(cherry picked from commit a2013231a3)
(cherry picked from commit 4ad7f875b0)
2018-11-15 17:52:00 -08:00
Evan Hunt 2ed9b06ab8 remove ATF source code and Atffiles
(cherry picked from commit 8c4d50c6bc)
(cherry picked from commit 33f428efda)
2018-11-15 17:52:00 -08:00
Evan Hunt 6295b44ed6 remove ATF from configure
(cherry picked from commit efe3c038b1)
(cherry picked from commit 4f3073de7c)
2018-11-15 17:51:59 -08:00
Evan Hunt 707f0f3ce0 remove atf-run from unittest.sh.in
(cherry picked from commit d534ae5c12)
(cherry picked from commit df0c67ba26)
2018-11-15 17:51:59 -08:00
JoeyandEvan Hunt 49cfe448da convert update_test; remove ATF from lib/dns/tests
(cherry picked from commit 336d5a5374)
(cherry picked from commit 4beba42654)
2018-11-15 17:51:56 -08:00
Evan Hunt 3a8eff4589 convert gost_test
(cherry picked from commit 28296fc57c)
2018-11-15 17:51:47 -08:00
JoeyandEvan Hunt f919fb6e0e convert tsig_test
(cherry picked from commit 92a3762cb6)
(cherry picked from commit ea300146a8)
2018-11-15 17:51:42 -08:00
JoeyandEvan Hunt ab76e6a8b7 convert time_test
(cherry picked from commit 2c7e6947fa)
(cherry picked from commit 132bdcb954)
2018-11-15 17:51:35 -08:00
JoeyandEvan Hunt e938089e20 convert sigs_test
(cherry picked from commit eda6281f98)
(cherry picked from commit 34855ec13b)
2018-11-15 17:51:30 -08:00
JoeyandEvan Hunt 2ba04b17a8 convert rsa_test
(cherry picked from commit b915cdbf0b)
(cherry picked from commit c00f2c9434)
2018-11-15 17:51:24 -08:00
JoeyandEvan Hunt e0b408a5ee convert resolver_test
(cherry picked from commit 2837a821e8)
(cherry picked from commit bd3bb7cb89)
2018-11-15 17:51:12 -08:00
JoeyandEvan Hunt 0f2b87f0ae convert rbt_serialize_test
(cherry picked from commit dfd90dbb82)
(cherry picked from commit 5e44278871)
2018-11-15 17:51:06 -08:00
JoeyandEvan Hunt 684083a3da convert name_test
(cherry picked from commit 1b48e710d5)
(cherry picked from commit c9c1d244e1)
2018-11-15 17:51:00 -08:00
JoeyandEvan Hunt 4e0f18fc0f convert master_test
(cherry picked from commit 4ba08bb119)
(cherry picked from commit 34291ae2be)
2018-11-15 17:50:54 -08:00
JoeyandEvan Hunt f16ad8f1d6 convert keytable_test
(cherry picked from commit e38901154d)
(cherry picked from commit ff26c1e014)
2018-11-15 17:50:47 -08:00
JoeyandEvan Hunt 9bc895c9d9 convert private_test
(cherry picked from commit 9a464ef869)
(cherry picked from commit ade81f29d6)
2018-11-15 17:50:38 -08:00
Evan Hunt b48f406b91 convert dbversion_test
(cherry picked from commit 98d5abb73c)
(cherry picked from commit 3d396d1eb8)
2018-11-15 17:50:31 -08:00
JoeyandEvan Hunt 8c767607fb convert dst_test
(cherry picked from commit ad923f82b1)
(cherry picked from commit b902454460)
2018-11-15 17:50:24 -08:00
JoeyandEvan Hunt e6118469ad convert db_test
(cherry picked from commit 005e19ad3f)
(cherry picked from commit e8f61dd315)
2018-11-15 17:50:18 -08:00
Evan Hunt ddeac8f5cd convert dispatch_test
(cherry picked from commit 8d347788b0)
(cherry picked from commit a554ae3dcc)
2018-11-15 17:50:11 -08:00
Evan Hunt da0145f938 convert zonemgr_test
(cherry picked from commit 01a193ff6c)
(cherry picked from commit 503869db64)
2018-11-15 17:50:04 -08:00
Evan Hunt bcd2c7fa85 convert zt_test
(cherry picked from commit 0a4f6122de)
(cherry picked from commit ff07929977)
2018-11-15 17:49:53 -08:00
Evan Hunt 01e5303b46 convert rdata_test
- also added code to dnstest.c to optionally suppress printing of errors
  from dns_rdata_fromtxt()

(cherry picked from commit bb5ed5a4ac)
(cherry picked from commit 87d702aaa6)
2018-11-15 17:49:38 -08:00
Evan Hunt 9eed71a449 convert rbt_test
(cherry picked from commit 55465517c7)
(cherry picked from commit 7a57323bbf)
2018-11-15 17:49:31 -08:00
Evan Hunt 1831a14c27 convert dnstap_test
(cherry picked from commit 9f83d31e42)
(cherry picked from commit d51d4febf9)
2018-11-15 17:49:17 -08:00
Evan Hunt b6707b7ffb convert geoip_test
(cherry picked from commit 06b4ff5fe2)
(cherry picked from commit 80172ae24d)
2018-11-15 17:49:09 -08:00
Evan Hunt d4f775178c convert nsec3_test
(cherry picked from commit 015fda0bb4)
(cherry picked from commit 5a13cf0543)
2018-11-15 17:49:02 -08:00
Evan Hunt c93d311f39 convert rdatasetstats_test
(cherry picked from commit 28121c248e)
(cherry picked from commit 37c6711376)
2018-11-15 17:48:53 -08:00
Evan Hunt aaa0c38cf0 convert dbiterator_test
(cherry picked from commit 79cd093cd7)
(cherry picked from commit 7e7818b91a)
2018-11-15 17:48:36 -08:00
Evan Hunt a803504c72 convert dbdiff_test
(cherry picked from commit 6dfc868fba)
(cherry picked from commit af60c53303)
2018-11-15 17:48:26 -08:00
Evan Hunt a7d46b6a64 convert peer_test
(cherry picked from commit db5eece106)
(cherry picked from commit f082972814)
2018-11-15 17:48:17 -08:00
Evan Hunt 6182b13c41 convert rdataset_test
(cherry picked from commit cca16eccd7)
(cherry picked from commit 80705c7c81)
2018-11-15 17:48:02 -08:00
Evan Hunt 6069ee839d convert acl_test
(cherry picked from commit a33bca5d55)
(cherry picked from commit 1f3f9c0323)
2018-11-15 17:47:35 -08:00
Evan Hunt f5352eae1e convert dh_test
(cherry picked from commit dcf65c82ad)
(cherry picked from commit e779fa3014)
2018-11-15 17:47:19 -08:00
JoeyandEvan Hunt 15de58c441 convert socket_test; remove ATF from lib/isc/tests
(cherry picked from commit 9eea00cd3c)
(cherry picked from commit 37ce8f1021)
2018-11-15 17:45:48 -08:00
Evan Hunt dbdf383fcd convert atomic_test
(cherry picked from commit 7abdd9e87a)
2018-11-15 17:45:48 -08:00
Evan Hunt 436d987224 convert isc_ntop_test
(cherry picked from commit b0309ae739)
2018-11-15 17:45:48 -08:00
Evan Hunt c803e6ee1d convert print_test
(cherry picked from commit 7bbe60ada1)
2018-11-15 17:45:47 -08:00
Evan Hunt 5334c3a6cf convert regex_test
(cherry picked from commit bd009b34a6)
(cherry picked from commit 6182c94334)
2018-11-15 17:45:47 -08:00
Evan Hunt 4506ec30fe convert random_test
(cherry picked from commit 6ad7acd787)
(cherry picked from commit 13a6d71e88)
2018-11-15 17:45:47 -08:00
JoeyandEvan Hunt 064966f7fb convert mem_test
(cherry picked from commit 683094e308)
(cherry picked from commit 15f7486d7b)
2018-11-15 17:45:47 -08:00
Evan Hunt 6040d4e9c2 convert timer_test
(cherry picked from commit 20cef35ece)
(cherry picked from commit 7c4ed64665)
2018-11-15 17:45:47 -08:00
Evan Hunt ffc1bd97a8 convert task_test
(cherry picked from commit f524cc713e)
2018-11-15 17:45:47 -08:00
JoeyandEvan Hunt 13aa5ae73c convert hash_test
(cherry picked from commit 72f60bdd84)
(cherry picked from commit bdf9ea7de7)
2018-11-15 17:45:47 -08:00
Evan Hunt c0e0ef8573 convert ht_test
(cherry picked from commit c701f036ea)
(cherry picked from commit 360d7d3d72)
2018-11-15 17:45:47 -08:00
Evan Hunt 69b892edc7 convert time_test
(cherry picked from commit 3bf9a1e567)
(cherry picked from commit 8d0396737c)
2018-11-15 17:45:47 -08:00
Evan Hunt caac5988d8 convert taskpool_test
(cherry picked from commit c9ff174dce)
(cherry picked from commit 98bff81bae)
2018-11-15 17:45:46 -08:00
Evan Hunt f2b40a2b6c convert pool_test
(cherry picked from commit 4f84acb788)
(cherry picked from commit 16d2d27b04)
2018-11-15 17:45:46 -08:00
Evan Hunt 886eb41ac4 convert sockaddr_test
(cherry picked from commit 231436039d)
(cherry picked from commit be41574a20)
2018-11-15 17:45:46 -08:00
Evan Hunt da13efce9d convert netaddr_test
(cherry picked from commit 7ab8c5b583)
(cherry picked from commit ba2262910a)
2018-11-15 17:45:46 -08:00
Evan Hunt 6aaaea3e61 convert symtab_test
(cherry picked from commit 5f377136be)
(cherry picked from commit 7b2288483f)
2018-11-15 17:45:46 -08:00
Evan Hunt 7ba2676176 convert queue_test
(cherry picked from commit b3db0266cb)
(cherry picked from commit b59107e687)
2018-11-15 17:45:46 -08:00
Evan Hunt cf3bc94608 convert file_test
(cherry picked from commit 8161be27db)
(cherry picked from commit 3b95658020)
2018-11-15 17:45:46 -08:00
Evan Hunt ff466ef5aa convert lex_test
(cherry picked from commit 4133fd86f1)
(cherry picked from commit 0e08dc2e2b)
2018-11-15 17:45:46 -08:00
Evan Hunt 2ac235d08c convert errno_test
(cherry picked from commit 049a3a7c0e)
(cherry picked from commit df41c2668f)
2018-11-15 17:45:45 -08:00
Evan Hunt c5e86b2f3d convert safe_test
(cherry picked from commit c1c8d8846f)
(cherry picked from commit 5f3ba36436)
2018-11-15 17:45:45 -08:00
Evan Hunt e975371c4d convert radix_test
(cherry picked from commit 718ca3166c)
(cherry picked from commit 5640841732)
2018-11-15 17:45:45 -08:00
Evan Hunt 726f335c37 convert heap_test
(cherry picked from commit cc6ab2416b)
(cherry picked from commit 57d78a76e5)
2018-11-15 17:45:45 -08:00
Evan Hunt 65640c6743 convert parse_test
(cherry picked from commit a7c308df9c)
(cherry picked from commit f29a9d5bc5)
2018-11-15 17:45:45 -08:00
Evan Hunt 802b551d42 convert counter_test
(cherry picked from commit 52b86f0abe)
(cherry picked from commit 856add745a)
2018-11-15 17:45:45 -08:00
Evan Hunt 2f4c3cf019 convert buffer_test
(cherry picked from commit 02a5db7631)
(cherry picked from commit 3095574c1c)
2018-11-15 17:45:45 -08:00
Evan Hunt b85a5b0dcd convert aes_test
(cherry picked from commit dc88db015b)
(cherry picked from commit c679b85424)
2018-11-15 17:45:45 -08:00
Evan Hunt 2b0e2bc920 set freed pointers to NULL 2018-11-15 17:45:44 -08:00
Evan Hunt dd29de6f19 convert resconf_test; remove ATF from lib/irs/tests
(cherry picked from commit cec8c52cbe)
(cherry picked from commit 1d76da4943)
2018-11-15 17:45:44 -08:00
Evan Hunt 0b6ecdf509 convert parser_test; remove ATF from lib/isccfg/tests
(cherry picked from commit 7ec945bd41)
(cherry picked from commit 66fa5b9af6)
2018-11-15 17:45:44 -08:00
Evan Hunt fbd563baea convert config_test; remove ATF from lib/lwres/tests 2018-11-15 17:45:44 -08:00
Evan Hunt f533ab528d improvements to test setup and teardown
- assert if {isc,dns,ns}_test_begin() is called when a prior test is running
- add dns_test_init() and dns_test_final(), which can be run before and
  after all tests. this ensures openssl doesn't have to be reinitialized.
2018-11-15 17:44:13 -08:00
Evan Hunt 099883e2b1 remove .NOTPARALLEL so unit tests can build faster
(cherry picked from commit b434b0a4b6)
(cherry picked from commit 03c7a096c6)
2018-11-16 01:05:35 +00:00
Evan Hunt a9a626e440 add cmocka support to remaining unit test makefiles
- also cleaned up some existing test code

(cherry picked from commit 2afd18a2ce)
(cherry picked from commit cd5855378e)
2018-11-16 01:05:35 +00:00
Mark Andrews 838b502f69 Merge branch '694-checklibs-libs-isc-printf-h-check-is-incomplete-v9_11' into 'v9_11'
Resolve "checklibs libs isc/printf.h check is incomplete"

See merge request isc-projects/bind9!1072
2018-11-15 19:50:55 -05:00
Mark Andrews 1ebdcd4c34 update the list of functions that are triggers for requiring #include <isc/print.h> or "print_p.h"
(cherry picked from commit 07317db2ca)
2018-11-16 11:31:01 +11:00
Mark Andrews 65efb52541 Merge branch 'u/fanf2/optionally-disable-digrc-v9_11' into 'v9_11'
U/fanf2/optionally disable digrc v9 11

See merge request isc-projects/bind9!1061
2018-11-14 21:43:28 -05:00
Mark Andrews 3194c0a8cd add CHANGES
(cherry picked from commit a5524b5fe2)
2018-11-15 13:21:44 +11:00
Tony FinchandMark Andrews 660010f978 dig: a -r option to disable .digrc
(cherry picked from commit fdb74fed9e)
2018-11-15 13:21:21 +11:00
Evan Hunt 2be370b68c Merge branch '347-various-bind-9-bugs-in-cleanup-after-fail-scenarios-v9_11' into 'v9_11'
Resolve "Various BIND 9 bugs in cleanup-after-fail scenarios"

See merge request isc-projects/bind9!1059
2018-11-14 19:45:57 -05:00
Mark AndrewsandEvan Hunt f14f70833f uninitalize memory read on error path
(cherry picked from commit 4eadebe2b2)
2018-11-15 00:16:35 +00:00
Mark AndrewsandEvan Hunt 3aafdbf160 errors initalizing badcaches were not caught or cleaned up on error paths
(cherry picked from commit 93776c4c81)
2018-11-15 00:16:31 +00:00
Evan Hunt 5b4905d428 Merge branch '558-nsupdate-leaks-memory-when-using-gss-tsig-and-receiving-sigterm-at-a-right-time-v9_11' into 'v9_11'
Resolve "nsupdate leaks memory when using GSS-TSIG and receiving SIGTERM at a "right" time"

See merge request isc-projects/bind9!1056
2018-11-14 15:03:28 -05:00
Mark AndrewsandEvan Hunt e409b8c698 free tmpzonename and restart_master
(cherry picked from commit 50714a9b35)
2018-11-14 11:42:44 -08:00
Evan Hunt b6574c57c6 Merge branch '675-don-t-use-typename-v9_11' into 'v9_11'
Resolve "Don't use 'typename'"

See merge request isc-projects/bind9!1054
2018-11-14 14:22:17 -05:00
Mark AndrewsandEvan Hunt ccf915f7e4 don't use 'typename' as it is reserved in C++ 2018-11-14 11:13:21 -08:00
Mark Andrews c97bc67ce2 Merge branch '688-prefer-kyua-over-aft-run-v9_11' into 'v9_11'
Resolve "prefer kyua over aft-run"

See merge request isc-projects/bind9!1052
2018-11-14 07:52:45 -05:00
Mark Andrews 2996e72d91 prefer kyua over atf
(cherry picked from commit 590d391bbb)
2018-11-14 23:41:51 +11:00
Mark Andrews 0dd74f2f86 Merge branch '584-dig-treats-4-6-m-after-q-argument-as-an-option-but-not-a-domain-name-v9_11' into 'v9_11'
Resolve "dig treats -4/-6/-m after -q argument as an option but not a domain name"

See merge request isc-projects/bind9!1047
2018-11-13 20:17:17 -05:00
Evan HuntandMark Andrews cb355b8adc style
(cherry picked from commit e356d93175)
2018-11-14 11:57:02 +11:00
Mark Andrews 57d0ad450a check that delv -q -m works
(cherry picked from commit 77128c867c)
2018-11-14 11:57:01 +11:00
Mark Andrews c0d92d4190 check that dig -q -m works
(cherry picked from commit f6f07fb41e)
2018-11-14 11:56:59 +11:00
Mark Andrews e8ca9303c7 add -q to dash_opts
(cherry picked from commit ba5d28dcfe)
2018-11-14 11:56:05 +11:00
Mark Andrews 0f5aeea233 dig and mdig failed to properly preparse dash value pairs when value was a seperate argument and started with a dash.
(cherry picked from commit 75fa84b67b)
2018-11-14 11:56:03 +11:00
Evan Hunt be60437b16 Merge branch '587-statistics-channels-xml-v2-is-removed-but-still-documented-v9_11' into 'v9_11'
Resolve "statistics-channels /xml/v2 is removed but still documented"

See merge request isc-projects/bind9!1044
2018-11-13 14:09:35 -05:00
Mark AndrewsandEvan Hunt 901adb154b remove reference to obsolete xml/v2 schema
(cherry picked from commit 9e1af0cef1)
2018-11-13 11:08:59 -08:00
Michał Kępień 961a77fb99 Merge branch '599-fix-a-shutdown-race-in-diagnostic-tools-v9_11' into 'v9_11'
[v9_11] Fix a shutdown race in bin/dig/dighost.c

See merge request isc-projects/bind9!1040
2018-11-13 08:25:15 -05:00
Michał Kępień 0298133676 Add CHANGES entry
5088.	[bug]		dig/host/nslookup could crash when interrupted close to
			a query timeout. [GL #599]

(cherry picked from commit ae40e8039b)
2018-11-13 13:52:48 +01:00
Michał Kępień f2ca287330 Fix a shutdown race in bin/dig/dighost.c
If a tool using the routines defined in bin/dig/dighost.c is sent an
interruption signal around the time a connection timeout is scheduled to
fire, connect_timeout() may be executed after destroy_libs() detaches
from the global task (setting 'global_task' to NULL), which results in a
crash upon a UDP retry due to bringup_timer() attempting to create a
timer with 'task' set to NULL.  Fix by preventing connect_timeout() from
attempting a retry when shutdown is in progress.

(cherry picked from commit 4621756596)
2018-11-13 13:52:48 +01:00
Evan Hunt 83544b0bdf Merge branch 'fix-rules-typo-v9_11' into 'v9_11'
fix rules.in typo

See merge request isc-projects/bind9!1038
2018-11-13 03:41:48 -05:00
Evan Hunt df3b061c99 fix typo
(cherry picked from commit 9671909289)
2018-11-13 00:24:43 -08:00
Mark Andrews 0bd7e3de57 Merge branch 'autoheader-v9_11' into 'v9_11'
autoheader

See merge request isc-projects/bind9!1031
2018-11-12 18:13:05 -05:00
Mark Andrews 107fd6758d autoheader 2018-11-12 18:01:28 -05:00
Mark Andrews 54a3d2ac63 Merge branch 'fix-test-linkages-v9_11' into 'v9_11'
Fix test linkages

See merge request isc-projects/bind9!1029
2018-11-12 16:01:04 -05:00
Mark Andrews 03f2cc49e3 remove lib/isc/tests/result_test as it is now cmocka
(cherry picked from commit 9024cf0c15)
2018-11-13 07:50:51 +11:00
Mark Andrews 173827f78d fixup
(cherry picked from commit ba0e5ffc09)
2018-11-13 07:50:49 +11:00
Mark Andrews ffc56a4bf3 link in lib/isccc/tests/Kyuafile
(cherry picked from commit 9a59352b4c)
2018-11-13 07:50:30 +11:00
Mark Andrews ab5a68b3b1 Merge branch 'backport-require-cmocka-greater-than-or-equal-1.0.0-v9_11' into 'v9_11'
require cmocka >= 1.0.0

See merge request isc-projects/bind9!1024
2018-11-12 03:03:17 -05:00
Mark Andrews 58812a4641 define CMOCKA_CFLAGS and CMOCKA_LIBS
(cherry picked from commit 1e8cdc20f3)
2018-11-12 18:42:58 +11:00
Mark Andrews 0c738a5673 require cmocka >= 1.0.0
(cherry picked from commit f3ff5f63ac)
2018-11-12 18:42:58 +11:00
Mark Andrews c8d522dd36 Merge branch '351-fix-with-cmocka=path-build-v9_11' into 'v9_11'
Resolve "configure fails unless --enable-developer is specified"

See merge request isc-projects/bind9!1021
2018-11-12 01:49:36 -05:00
Ondřej SurýandMark Andrews 6b50da7ba8 Use cmocka_set_message_output as test function for cmocka presence
(cherry picked from commit 0158c1a4ea)
2018-11-12 17:25:30 +11:00
Mark Andrews 8da45fcab7 Merge branch '351-disable-cmocka-by-default-v9_11' into 'v9_11'
Resolve "configure fails unless --enable-developer is specified"

See merge request isc-projects/bind9!1018
2018-11-12 00:24:29 -05:00
Ondřej SurýandMark Andrews 760e336e89 Set with_cmocka=no by default
(cherry picked from commit ed8000f333)
2018-11-12 00:01:24 -05:00
Mark Andrews 7d2451460d Merge branch '676-isc_result_toid-tables-not-complete-v9_11' into 'v9_11'
Resolve "isc_result_toid tables not complete"

See merge request isc-projects/bind9!1017
2018-11-11 23:58:05 -05:00
Evan HuntandMark Andrews 181c5442b9 convert result tests to use CMocka instead of ATF
(cherry picked from commit 471110933a)
2018-11-12 15:38:50 +11:00
Mark Andrews af5a051e4d check result tables are complete
(cherry picked from commit 4f04a79250)
2018-11-12 15:32:58 +11:00
Mark Andrews c9e712e528 Merge branch '250-integrate-cmocka-into-our-build-scripts-v9_11' into 'v9_11'
Add cmocka support to infrastructure (build) files

See merge request isc-projects/bind9!1015
2018-11-11 21:10:13 -05:00
Ondřej SurýandMark Andrews 22c0f129ae Add support for cmocka assert testing by overriding REQUIRE/INSIST/... macros when UNIT_TESTING is defined
(cherry picked from commit 52731c000d)
2018-11-12 12:56:15 +11:00
Ondřej SurýandMark Andrews 2dcc521b29 Add --wrap linker option detection
(cherry picked from commit 10535d1c79)
2018-11-12 12:54:59 +11:00
Ondřej SurýandMark Andrews 4c8112ec01 Enforce TAP output from cmocka based unit tests
(cherry picked from commit bd2ddec58f)
2018-11-12 12:53:21 +11:00
Ondřej SurýandMark Andrews b0745fb156 Integrate cmocka unit testing framework to kyua
(cherry picked from commit 07910f0153)
2018-11-12 12:53:15 +11:00
Ondřej Surý dc05021a4b Merge branch '451-fix-atomic-int-lock-free-usage-v9_11' into 'v9_11'
(v9_11) Properly use ATOMIC_*_LOCK_FREE preprocessor constants

See merge request isc-projects/bind9!1003
2018-11-08 17:19:16 -05:00
Ondřej Surý 9000f73ba3 Properly use ATOMIC_*_LOCK_FREE preprocessor constants
The ATOMIC_*_LOCK_FREE can evalutate either 0, 1, or 2 which indicate the
lock-free property of the corresponding atomic types (both signed and unsigned).

	Value	Explanation
	-----	--------------------------------------
	  0	The atomic type is never lock-free
	  1	The atomic type is sometimes lock-free
	  2	The atomic type is always lock-free
	-----	--------------------------------------

(cherry picked from commit a5e7901eb9)
2018-11-09 05:00:32 +07:00
Ondřej Surý 9e978d7416 Merge branch '449-isc_stdtime_t-post-stdint-cleanup-v9_11' into 'v9_11'
(v9_11) Resolve "Follow-up from "Redefine ISC's int and boolean types to use <stdint.h> and <stdbool.h> types""

See merge request isc-projects/bind9!1002
2018-11-08 15:19:31 -05:00
Ondřej Surý ba263b5b7e isc_stdtime_t is always 32-bit now, so remove the always true macro STDTIME_ON_32BITS
(cherry picked from commit 6f5fe11f5a)
2018-11-09 03:04:22 +07:00
Ondřej Surý ecc40b18e6 Merge branch '656-add-support-for-utimaco-hsm-v9_11' into 'v9_11'
Resolve "Add support for Utimaco HSM"

See merge request isc-projects/bind9!972
2018-11-08 12:34:22 -05:00
Ondřej Surý ebe63fd316 Add CHANGES entry for GL #656 2018-11-09 00:12:39 +07:00
Ondřej Surý 52784fc3cc Disable runtime detection of md5 and sha1 support for Utimaco HSM.
Utimaco HSM requires user to be logged in before executing DigestUpdate, thus
breaking dst_lib_init2 that ran isc_md5_check and isc_sha1_check before sending
PIN to the HSM.  Therefore isc_*_check needs to be disabled when Utimaco HSM is
being used as PKCS#11 library.
2018-11-09 00:07:55 +07:00
Ondřej Surý 2079e44fb9 Define PK11_UTIMACO_FLAVOR and add detection code to configure.ac 2018-11-09 00:07:44 +07:00
Ondřej Surý 62819dcfba Merge branch '305-misc-fixes-v9_12-v9_11' into 'v9_11'
(v9_11) Miscellaneous style fixes - implicit casts to bool and uninitialized variables fixes

See merge request isc-projects/bind9!995
2018-11-08 11:15:03 -05:00
Ondřej Surý 29601a6e7e Disable Ed448 algorithm, the implementation in BIND 9 is incomplete and broken
(cherry picked from commit 03c7bb9ab3)
2018-11-08 22:42:52 +07:00
Ondřej Surý c5b54803cd Remove dummy ISLOCKED macro
(cherry picked from commit 68ca987792)
(cherry picked from commit 5ad72603a8)
2018-11-08 22:42:52 +07:00
Ondřej Surý 2f8b28efad Hint the compiler with ISC_UNREACHABLE(); that code after INSIST(0); cannot be reached
(cherry picked from commit 23fff6c569)
(cherry picked from commit 4568669807)
2018-11-08 22:42:52 +07:00
Ondřej Surý baa5811623 Modify the dbversion_test.c to detect disabled assertions
(cherry picked from commit b992b5b811)
(cherry picked from commit ce6ef5b50e)
2018-11-08 22:03:33 +07:00
Ondřej Surý 6aa63d9349 Add extra return failure after INSIST(0) in default branch
(cherry picked from commit 29c45200e7)
(cherry picked from commit 2a26189256)
2018-11-08 22:03:33 +07:00
Ondřej Surý d894b2da79 Use larger buffers on snprintf buffer overflow false positives
(cherry picked from commit 4eaf927571)
(cherry picked from commit 65536fb10b)
2018-11-08 22:03:33 +07:00
Ondřej Surý c576cb2ff6 Don't assert on failed getrlimit call to allow called to handle this gracefully as it already does, just abort where we need to know the numbers
(cherry picked from commit e2e138a801)
(cherry picked from commit 1e6329038b)
2018-11-08 22:03:31 +07:00
Ondřej Surý f1224b4af1 When ISC assertions are disabled, still execute the condition to prevent unused variable warnings/errors from the compiler
(cherry picked from commit a831e0f72d)
(cherry picked from commit 3d834566f1)
2018-11-08 22:03:00 +07:00
Ondřej Surý 7eb962ee14 Add a GitLab CI job that runs with all assertions disabled
(cherry picked from commit 461ffead1f)
(cherry picked from commit c5825eba40)
2018-11-08 22:03:00 +07:00
Ondřej Surý 12a266211e Turn (int & flag) into (int & flag) != 0 when implicitly typed to bool
(cherry picked from commit b2b43fd235)
(cherry picked from commit fcd1569e2b)
2018-11-08 22:02:58 +07:00
Ondřej Surý 9d15323e24 Add small tweaks to the code to fix compilation when ISC assertions are disabled
While implementing the new unit testing framework cmocka, it was found that the
BIND 9 code doesn't compile when assertions are disabled or replaced with any
function (such as mock_assert() from cmocka unit testing framework) that's not
directly recognized as assertion by the compiler.

This made the compiler to complain about blocks of code that was recognized as
unreachable before, but now it isn't.

The changes in this commit include:

* assigns default values to couple of local variables,
* moves some return statements around INSIST assertions,
* adds __builtin_unreachable(); annotations after some INSIST assertions,
* fixes one broken assertion (= instead of ==)

(cherry picked from commit fbd2e47f51)
(cherry picked from commit b222783ae9)
2018-11-08 22:00:49 +07:00
Mark Andrews 76983d693e Merge branch 'wpk-get-rid-of-bashism-in-CDS-test-v9_11' into 'v9_11'
Small system tests fixes for Solaris

See merge request isc-projects/bind9!992
2018-11-07 20:36:40 -05:00
Witold KrecickiandMark Andrews 2db31ececa Remove unnecessary sed from autosign test
(cherry picked from commit 82dfb77328)
2018-11-08 12:26:04 +11:00
Witold KrecickiandMark Andrews 4b9d115e35 Use 'local' variable in echo functions in tests
(cherry picked from commit 0949b1fe2c)
2018-11-08 12:26:01 +11:00
Mark Andrews 93efc4724f Merge branch '653-idnout-only-on-tty-v9_11' into 'v9_11'
Enable idnout output only on tty, disable it when the stdout is not a tty

See merge request isc-projects/bind9!984
2018-11-06 19:50:15 -05:00
Ondřej SurýandMark Andrews 0dd034d66b Add CHANGES entry for GL #653
(cherry picked from commit 9c0c44405c)
2018-11-07 11:37:11 +11:00
Ondřej SurýandMark Andrews 31a974bc05 Add release notes for IDN processing update
(cherry picked from commit 2a11a7dd29)
2018-11-07 11:37:11 +11:00
Ondřej SurýandMark Andrews 96f621bbef Update the IDN documentation for nslookup
(cherry picked from commit b659765869)
2018-11-07 11:37:11 +11:00
Ondřej SurýandMark Andrews 45f99ab755 Change the dig documentation
(cherry picked from commit 7697923eab)
2018-11-07 11:37:11 +11:00
Ondřej SurýandMark Andrews ec6bb32c6a Update the idna tests for the new non-tty defaults
(cherry picked from commit e8c57a78aa)
2018-11-07 11:37:11 +11:00
Ondřej SurýandMark Andrews 8e1cc95c94 Enable IDN processing (both idnin and idnout) only on tty, disable it when the stdout is not a tty
(cherry picked from commit 0e1bf7d017)
2018-11-06 17:36:48 +11:00
Mark Andrews 67401ba29c Merge branch '601-build-option-with-python-should-default-to-yes-v9_11' into 'v9_11'
Resolve "Build option --with-python should default to yes"

See merge request isc-projects/bind9!982
2018-11-06 00:52:41 -05:00
Mark Andrews 0768f54fd2 require python to be explicitly disabled
(cherry picked from commit bf8746126c)
2018-11-06 16:44:06 +11:00
Mark Andrews 9f15b9d80a Merge branch '617-if-rrl-is-configured-the-require-server-cookie-yes-is-ignored-v9_11' into 'v9_11'
Resolve "If RRL is configured the "require-server-cookie yes;" is ignored."

See merge request isc-projects/bind9!978
2018-11-05 18:52:38 -05:00
Mark Andrews cc35795b07 add CHANGES note
(cherry picked from commit a868f335d2)
2018-11-06 10:34:45 +11:00
Mark Andrews 636e435e11 test require-server-cookie with rate-limit
(cherry picked from commit 164370102a)
2018-11-06 10:33:35 +11:00
Mark Andrews f4bea4002a check requireservercookie even if rrl is configured
(cherry picked from commit d6f6eeda9d)
2018-11-06 10:33:32 +11:00
Mark Andrews f59644a145 Merge branch '649-resolver-test-failing-v9_11' into 'v9_11'
Resolve "resolver test failing"

See merge request isc-projects/bind9!961
2018-10-31 01:51:15 -04:00
Mark Andrews f21e5369a5 use new packet for response; rename variable to request and response
(cherry picked from commit 280d0ca507)
2018-10-31 16:38:48 +11:00
Evan Hunt dea184741e Merge branch 'silence-warning-v9_11' into 'v9_11'
silence warning from missing print.h

See merge request isc-projects/bind9!957
2018-10-30 11:11:24 -04:00
Evan Hunt 6690b9e5a3 silence warning from missing print.h
(cherry picked from commit a0de6707c0)
2018-10-30 08:09:44 -07:00
Michał Kępień 131e26e671 Merge branch '644-fix-isc_buffer_copyregion-for-auto-reallocated-buffers-v9_11' into 'v9_11'
[v9_11] Fix isc_buffer_copyregion() for auto-reallocated buffers

See merge request isc-projects/bind9!951
2018-10-30 08:52:28 -04:00
Michał Kępień 1a69df0211 Add CHANGES entry
5072.	[bug]		Add unit tests for isc_buffer_copyregion() and fix its
			behavior for auto-reallocated buffers. [GL #644]

(cherry picked from commit 07050fb49a)
2018-10-30 13:34:49 +01:00
Michał Kępień 00bc5bf6bd Fix isc_buffer_copyregion() for auto-reallocated buffers
While isc_buffer_copyregion() calls isc_buffer_reserve() to ensure the
target buffer will have enough available space to append the contents of
the source region to it, the variables used for subsequently checking
available space are not updated accordingly after that call.  This
prevents isc_buffer_copyregion() from working as expected for
auto-reallocated buffers: ISC_R_NOSPACE will be returned if enough space
is not already available in the target buffer before it is reallocated.
Fix by calling isc_buffer_used() and isc_buffer_availablelength()
directly instead of assigning their return values to local variables.

(cherry picked from commit e1f0aed034)
2018-10-30 13:34:49 +01:00
Michał Kępień b549996d58 Add unit tests for isc_buffer_copyregion()
Add some basic checks for isc_buffer_copyregion() to ensure it behaves
as expected for both fixed-size buffers and buffers which can be
automatically reallocated.  Adjust the list of headers included by
lib/isc/tests/buffer_test.c so that it matches what that test program
really uses.

(cherry picked from commit 15440d8027)
2018-10-30 13:34:48 +01:00
Ondřej Surý 31dba79733 Merge branch 'ondrej/cleanup-leftover-fatal-v9_11' into 'v9_11'
(v9_11) Remove double result check leftover

See merge request isc-projects/bind9!948
2018-10-30 08:10:33 -04:00
Ondřej Surý a437c42521 Remove double result check leftover
(cherry picked from commit 065ff16e40)
2018-10-30 13:00:51 +01:00
Mark Andrews 6ee7fd95e7 Merge branch '631-dns_rdata_compare-for-nxt-performs-case-sensitive-name-comparison-v9_11' into 'v9_11'
Resolve "dns_rdata_compare() for NXT performs case sensitive name comparison"

See merge request isc-projects/bind9!942
2018-10-30 00:26:20 -04:00
Mark Andrews a037959ae3 add CHANGES note
(cherry picked from commit 921bc89f59)
2018-10-30 15:13:22 +11:00
Mark Andrews e646307f91 compare_nxt compared records with identical next fields case insensitively
(cherry picked from commit cf83016682)
2018-10-30 15:10:55 +11:00
Mark Andrews 3b6346b5a3 Merge branch 'move-declaration-of-pending-v9_11' into 'v9_11'
move declaration of pending

See merge request isc-projects/bind9!940
2018-10-29 20:55:58 -04:00
Mark Andrews 375df38a4a move declaration of pending
(cherry picked from commit bc53e5e5d4)
2018-10-30 11:55:12 +11:00
Mark Andrews e93e971fea Merge branch '638-record-types-with-empty-rdata-fields-were-not-being-handled-correctly-v9_11' into 'v9_11'
Resolve "Record types with empty rdata fields were not being handled correctly."

See merge request isc-projects/bind9!938
2018-10-29 20:28:26 -04:00
Mark Andrews 67816c747d document eol
(cherry picked from commit 97a680e5ce)
2018-10-30 11:18:06 +11:00
Mark Andrews 9b0a277490 Record types which support a empty rdata field were not handling the empty rdata field case.
(cherry picked from commit 2ff57d8a39)
2018-10-30 11:17:59 +11:00
Evan Hunt c4cc5c3836 Merge branch '641-unquoted-rpz-v9_11' into 'v9_11'
allow unquoted response-policy zone names

See merge request isc-projects/bind9!935
2018-10-29 13:14:24 -04:00
Evan Hunt dc59f82011 allow unquoted response-policy zone names
(cherry picked from commit 507230aa88)
2018-10-29 10:00:27 -07:00
Mark Andrews f735b3c61b Merge branch '635-unchecked-return-in-query-c-v9_11' into 'v9_11'
Resolve "unchecked return in query.c"

See merge request isc-projects/bind9!931
2018-10-29 03:39:04 -04:00
Mark Andrews 332e0bc3c2 always call RUNTIME_CHECK(result == ISC_R_SUCCESS); for dns_rdata_tostruct
(cherry picked from commit e11cfafff2)
2018-10-29 18:30:16 +11:00
Mark Andrews 78619cc129 Merge branch '553-socket-c-2171-unexpected-error-v9_11' into 'v9_11'
Only set IPV6_USE_MIN_MTU on IPv6.

See merge request isc-projects/bind9!927
2018-10-29 02:43:28 -04:00
Mark Andrews bf299d5ee1 Only set IPV6_USE_MIN_MTU on IPv6.
(cherry picked from commit 561b780ba0)
2018-10-29 17:29:36 +11:00
Mark Andrews 39f3fefc74 Merge branch '624-lib-dns-dnstap_test-totext-does-not-work-well-with-softhsm-pkcs11-v9_11' into 'v9_11'
Resolve "lib/dns/dnstap_test:totext does not work well with SoftHSM PKCS11"

See merge request isc-projects/bind9!923
2018-10-29 01:46:54 -04:00
Mark Andrews a7fb84e783 Initalize TZ environment variable before calling dns_test_begin in dnstap_test.
(cherry picked from commit 1cf1254051)
2018-10-29 16:36:25 +11:00
Evan Hunt d1d42ef30d Merge branch '626-implement-eid-and-nimloc-v9_11' into 'v9_11'
Resolve "Implement EID and NIMLOC"

See merge request isc-projects/bind9!914
2018-10-25 18:44:48 -04:00
Mark AndrewsandEvan Hunt 9674fdcbfb Add support for EID and NIMLOC
(cherry picked from commit fbab100426)
2018-10-25 15:31:32 -07:00
Evan Hunt 829a61d5e0 Merge branch '627-check-that-gid-uid-and-uinfo-can-be-loaded-using-unknown-record-format-v9_11' into 'v9_11'
Resolve "Check that GID, UID and UINFO can be loaded using unknown record format."

See merge request isc-projects/bind9!912
2018-10-25 16:47:02 -04:00
Mark AndrewsandEvan Hunt e3a812507f GID, UID and UINFO could not be loaded using unknown record format.
(cherry picked from commit eb7ca65b78)
2018-10-25 13:35:37 -07:00
Michał Kępień 7b082d031a Merge branch 'prep-release-v9_11_5' into 'v9_11'
prep 9.11.5

See merge request isc-projects/bind9!904
2018-10-25 08:30:42 -04:00
Tinderbox UserandMichał Kępień 6baa5c8fb0 prep 9.11.5 2018-10-25 14:00:49 +02:00
Michał Kępień ef28ac9b9c Merge branch '427-list-zones-in-the-web-interface-v9_11' into 'v9_11'
[v9_11] Display a per-view list of zones in the web interface

See merge request isc-projects/bind9!900
2018-10-25 04:39:29 -04:00
Michał Kępień 45c5968fc1 Add CHANGES entry
5059.	[bug]		Display a per-view list of zones in the web interface.
			[GL #427]

(cherry picked from commit d9c4068cc3)
2018-10-25 10:23:51 +02:00
Michał Kępień 149aa691a6 Display a per-view list of zones in the web interface
The XSL stylesheet used by the web interface does not currently include
any element which would cause a list of zones configured in each view to
be displayed, making the "Zones" section of the web interface empty
unless some zone has been configured with "zone-statistics full;" and
queried.  Since this can be confusing, modify the XSL stylesheet so that
a list of zones configured in each view is displayed in the web
interface.

(cherry picked from commit aeda3f389e)
2018-10-25 10:23:17 +02:00
Michał Kępień 21522d3e1d Merge branch '582-fix-server-addresses-configuration-type-v9_11' into 'v9_11'
[v9_11] Fix the configuration type used by the "server-addresses" option

See merge request isc-projects/bind9!898
2018-10-25 03:22:26 -04:00
Michał Kępień e55a09c10b Add CHANGES entry
5051.	[doc]		Documentation incorrectly stated that the
			"server-addresses" static-stub zone option accepts
			custom port numbers. [GL #582]

(cherry picked from commit 6b1c0a8e6f)
2018-10-25 09:05:39 +02:00
Michał Kępień 9e204a3376 Fix the configuration type used by the "server-addresses" option
Contrary to what the documentation states, the "server-addresses"
static-stub zone option does not accept custom port numbers.  Fix the
configuration type used by the "server-addresses" option to ensure
documentation matches source code.  Remove a check_zoneconf() test which
is unnecessary with this fix in place.

(cherry picked from commit b324576858)
2018-10-25 09:04:43 +02:00
Mark Andrews 98f3820d4b Merge branch '619-implement-atma-v9_11' into 'v9_11'
Resolve "Implement ATMA"

See merge request isc-projects/bind9!894
2018-10-24 23:30:03 -04:00
Mark Andrews 1828ba389d Add support for ATMA
(cherry picked from commit f9ceddd8ca)
2018-10-25 14:17:29 +11:00
Mark Andrews 247336ec29 Merge branch '609-address-memory-leak-on-error-v9_11' into 'v9_11'
Resolve "Address memory leak on error"

See merge request isc-projects/bind9!892
2018-10-24 23:05:22 -04:00
Mark Andrews 169b5ee36f expand the pool then copy over the old entries so we that failures do not break the old pool; also don't leak the new pool on error
(cherry picked from commit afde30fe9b)
2018-10-25 13:20:14 +11:00
Mark Andrews df57c4b74b Merge branch '610-address-memory-leak-on-error-v9_11' into 'v9_11'
Resolve "Address memory leak on error"

See merge request isc-projects/bind9!884
2018-10-23 21:12:25 -04:00
Mark Andrews 36a0bf14e9 free key on error
(cherry picked from commit 607c2d7441)
2018-10-24 11:57:57 +11:00
Ondřej Surý d56d6db639 Merge branch '4-rename-configure.in-to-configure.ac-v9_11' into 'v9_11'
[v9_11]: Rename configure.in to configure.ac

See merge request isc-projects/bind9!874
2018-10-23 04:13:20 -04:00
Ondřej Surý a586ae7793 Rename configure.in to configure.ac 2018-10-23 10:00:42 +02:00
Michał Kępień 8b3f08c9ea Merge branch '565-automatically-trigger-gitlab-pages-pipelines-v9_11' into 'v9_11'
[v9_11] Automatically trigger GitLab Pages pipelines

See merge request isc-projects/bind9!868
2018-10-20 18:01:54 -04:00
Michał Kępień bc9ca361ad Automatically trigger GitLab Pages pipelines
Whenever master or one for the v9_* branches gets updated, the current
ARM should be published on GitLab Pages.  Add a pipeline stage which
takes care of triggering GitLab Pages pipelines.  Extend the lifetime of
artifact archives containing the ARM to prevent GitLab Pages pipelines
from failing due to artifacts being unavailable.

(cherry picked from commit 31bde118db)
2018-10-20 23:29:47 +02:00
Michał Kępień 924c26ba3d Merge branch '565-generate-the-arm-during-ci-v9_11' into 'v9_11'
[v9_11] Generate the ARM during CI

See merge request isc-projects/bind9!865
2018-10-20 06:17:14 -04:00
Michał Kępień 3cfe2e0fa7 Generate the ARM during CI
Add a CI job which generates the HTML version of the ARM and makes it
available for download.  Since this is expected to be a quick process,
the new job is enabled for all pipelines.

(cherry picked from commit 3f443468e0)
2018-10-19 22:43:06 +02:00
Michał Kępień 2b1e14acbf Merge branch 'fix-ci-v9_11' into 'v9_11'
[v9_11] Fix CI

See merge request isc-projects/bind9!862
2018-10-19 16:41:23 -04:00
Michał Kępień f5260a8535 Fix CI
Use GitLab Registry for CI purposes.  Disable EdDSA support for Debian
sid since the OpenSSL version shipped with it has broken Ed448 support.
Use /dev/urandom as the random device in the "ecdsa" system test to
prevent newer OpenSSL versions from running out of entropy when
verifying ECDSA signatures.

(cherry picked from commit e5ebc13989)
2018-10-19 22:25:06 +02:00
Mark Andrews b4df4ff044 Merge branch '578-make-the-chained-delegations-in-reclimit-behave-like-they-would-in-a-regular-name-server-v9_11' into 'v9_11'
Resolve "Make the chained delegations in reclimit behave like they would in a regular name server."

See merge request isc-projects/bind9!842
2018-10-03 23:33:02 -04:00
Mark Andrews 40e1234ac4 add CHANGES
(cherry picked from commit f1308ef186)
2018-10-04 13:22:25 +10:00
Mark Andrews 052e68f3b2 add bin/tests/system/reclimit/ans4/ans.pl
(cherry picked from commit ae77468e63)
2018-10-04 13:22:25 +10:00
Mark Andrews 32d48b8290 reclimit: delegate to ans4 so that ans2 can behave like a real name server
(cherry picked from commit a216135a15)
2018-10-04 13:22:24 +10:00
Mark Andrews 975f09f79a Merge branch '568-the-chain-system-test-is-missing-a-delegation-v9_11' into 'v9_11'
Resolve "the chain system test is missing a delegation."

See merge request isc-projects/bind9!839
2018-10-03 22:39:43 -04:00
Mark Andrews 08d160ae27 add CHANGES note
(cherry picked from commit e97199b0d0)
2018-10-04 12:30:05 +10:00
Mark Andrews 08bc58ca7a chain: change nameserver name so that the delegation matches
(cherry picked from commit 848e42227e)
2018-10-04 12:29:54 +10:00
Mark Andrews 405631c9d8 chain: add 'start test' messages to named.run
(cherry picked from commit 524c1317f7)
2018-10-04 12:29:53 +10:00
Mark Andrews c635b31756 Merge branch 'update-log-fix-v9_11' into 'v9_11'
make update_log() work if zone is not set

See merge request isc-projects/bind9!835
2018-10-03 03:00:56 -04:00
Evan HuntandMark Andrews d9849bb589 make update_log() work if zone is not set
- update_log() is called to log update errors, but if those errors
  occur before the zone is set (for example, when returning NOTAUTH)
  it returns without logging anything.

(cherry picked from commit 395f6a1474)
2018-10-03 02:39:37 -04:00
Mark Andrews f8453f45f7 Merge branch 'irs_buflen_socklen-v9_11' into 'v9_11'
Fix arch-dependent getnameinfo types

See merge request isc-projects/bind9!836
2018-10-03 02:36:48 -04:00
Petr MenšíkandMark Andrews 2b91689473 Fix arch-dependent getnameinfo types
getnameinfo() parameters are detected by configure. Current glibc uses
socklen_t for BUFLEN and int for flags. Because that parameters are
tested only as fallback, it does detect it different way on 32-bit
system. socklen_t is compatible with size_t type on these systems.
Try all variants with int flags, use unsigned flags as last resort.

(cherry picked from commit b427dcce83)
2018-10-03 16:36:14 +10:00
Mark Andrews 6468892106 Merge branch '569-zero-system-test-failed-to-set-ret-0-and-send-output-to-dev-null-v9_11' into 'v9_11'
Resolve "zero system test failed to set ret=0 and send output to /dev/null"

See merge request isc-projects/bind9!833
2018-10-03 01:49:26 -04:00
Mark Andrews 2b5cb47cfd zero: send grep output to /dev/null; set ret=0 at start of 'check repeated recursive lookups of non recurring TTL=0 responses get new values' test so the failed subtest count is correct
(cherry picked from commit a6507af9e3)
2018-10-03 15:38:55 +10:00
Evan Hunt 401c6476dd Merge branch '543-couple-more-windows-build-fixes-v9_12-v9_11' into 'v9_11'
Couple additional Windows build fixes in VCX files

See merge request isc-projects/bind9!828
2018-10-02 13:41:46 -04:00
Thomas JachandEvan Hunt 56e54fb695 Couple additional Windows build fixes in VCX files
(cherry picked from commit f2d6b1b859)
(cherry picked from commit b39bd2816e)
2018-10-02 10:41:18 -07:00
Mark Andrews 0d43513009 Merge branch '420-reading-from-master-files-could-sometime-fail-to-preserve-the-case-of-the-owner-name-v9_11' into 'v9_11'
Resolve "reading from master files could sometime fail to preserve the case of the owner name."

See merge request isc-projects/bind9!823
2018-10-02 01:46:12 -04:00
Mark Andrews 8ee0bbc4b9 Add CHANGES note.
(cherry picked from commit 4fcdad292d)
2018-10-02 15:29:08 +10:00
Mark Andrews c7766cee64 improve case presevation
(cherry picked from commit 0fc1b1bffa)
2018-10-02 15:28:06 +10:00
943 changed files with 19679 additions and 135002 deletions
+2
View File
@@ -1,3 +1,5 @@
*.sln.in eol=crlf
*.vcxproj.in eol=crlf
*.vcxproj.filters.in eol=crlf
*.dsw eol=crlf
win32utils/**.txt eol=crlf
+1 -30
View File
@@ -22,38 +22,9 @@ lwresd.run
named.run
named.memstats
gen.dSYM/
.libs/
.deps/
.dirstamp
unit/atf-src/atf-c++/atf-c++.pc
unit/atf-src/atf-c/atf-c.pc
unit/atf-src/atf-c/defs.h
unit/atf-src/atf-c/detail/process_helpers
unit/atf-src/atf-config/atf-config
unit/atf-src/atf-report/atf-report
unit/atf-src/atf-report/fail_helper
unit/atf-src/atf-report/misc_helpers
unit/atf-src/atf-report/pass_helper
unit/atf-src/atf-run/atf-run
unit/atf-src/atf-run/bad_metadata_helper
unit/atf-src/atf-run/expect_helpers
unit/atf-src/atf-run/misc_helpers
unit/atf-src/atf-run/pass_helper
unit/atf-src/atf-run/several_tcs_helper
unit/atf-src/atf-run/zero_tcs_helper
unit/atf-src/atf-sh/atf-check
unit/atf-src/atf-sh/atf-sh
unit/atf-src/atf-sh/misc_helpers
unit/atf-src/atf-version/atf-version
unit/atf-src/atf-version/revision.h
unit/atf-src/atf-version/revision.h.stamp
unit/atf-src/bconfig.h
unit/atf-src/bootstrap/atconfig
unit/atf-src/doc/atf.7
unit/atf-src/stamp-h1
unit/atf-src/test-programs/c_helpers
unit/atf-src/test-programs/cpp_helpers
unit/atf-src/test-programs/sh_helpers
.libs/
# ccc-analyzer store its results in .plist directories
*.plist/
*~
+389 -169
View File
@@ -1,167 +1,164 @@
variables:
# Not normally needed, but may be if some script uses `apt-get install`.
DEBIAN_FRONTEND: noninteractive
# Locale settings do not affect the build, but might affect tests.
LC_ALL: C
DOCKER_DRIVER: overlay2
CI_REGISTRY_IMAGE: oerdnj/bind9
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9
CCACHE_DIR: "/ccache"
SOFTHSM2_CONF: "/var/tmp/softhsm2/softhsm2.conf"
stages:
- precheck
- build
- test
- push
### Runner Tag Templates
.linux-amd64: &linux_amd64
tags:
- linux
- amd64
.linux-i386: &linux_i386
tags:
- linux
- i386
### Docker Image Templates
# CentOS
.centos-centos6-amd64: &centos_centos6_amd64_image
image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
.centos-centos7-amd64: &centos_centos7_amd64_image
image: "$CI_REGISTRY_IMAGE:centos-centos7-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
# Debian
.debian-jessie-amd64: &debian_jessie_amd64_image
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
.debian-jessie-i386: &debian_jessie_i386_image
image: "$CI_REGISTRY_IMAGE:debian-jessie-i386"
tags:
- linux
- docker
- i386
<<: *linux_i386
.debian-stretch-amd64: &debian_stretch_amd64_image
image: "$CI_REGISTRY_IMAGE:debian-stretch-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
.debian-stretch-i386:: &debian_stretch_i386_image
.debian-stretch-i386: &debian_stretch_i386_image
image: "$CI_REGISTRY_IMAGE:debian-stretch-i386"
tags:
- linux
- docker
- i386
.debian-buster-amd64: &debian_buster_amd64_image
image: "$CI_REGISTRY_IMAGE:debian-buster-amd64"
tags:
- linux
- docker
- amd64
.debian-buster-i386:: &debian_buster_i386_image
image: "$CI_REGISTRY_IMAGE:debian-buster-i386"
tags:
- linux
- docker
- i386
<<: *linux_i386
.debian-sid-amd64: &debian_sid_amd64_image
image: "$CI_REGISTRY_IMAGE:debian-sid-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
.debian-sid-i386: &debian_sid_i386_image
image: "$CI_REGISTRY_IMAGE:debian-sid-i386"
tags:
- linux
- docker
- i386
<<: *linux_i386
.ubuntu-trusty-amd64: &ubuntu_trusty_amd64_image
image: "$CI_REGISTRY_IMAGE:ubuntu-trusty-amd64"
tags:
- linux
- docker
- amd64
# Fedora
.ubuntu-trusty-i386: &ubuntu_trusty_i386_image
image: "$CI_REGISTRY_IMAGE:ubuntu-trusty-i386"
tags:
- linux
- docker
- i386
.fedora-29-amd64: &fedora_29_amd64_image
image: "$CI_REGISTRY_IMAGE:fedora-29-amd64"
<<: *linux_amd64
# Ubuntu
.ubuntu-xenial-amd64: &ubuntu_xenial_amd64_image
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-amd64"
tags:
- linux
- docker
- amd64
<<: *linux_amd64
.ubuntu-xenial-i386: &ubuntu_xenial_i386_image
image: "$CI_REGISTRY_IMAGE:ubuntu-xenial-i386"
tags:
- linux
- docker
- i386
<<: *linux_i386
.ubuntu-bionic-amd64: &ubuntu_bionic_amd64_image
image: "$CI_REGISTRY_IMAGE:ubuntu-bionic-amd64"
<<: *linux_amd64
.ubuntu-bionic-i386: &ubuntu_bionic_i386_image
image: "$CI_REGISTRY_IMAGE:ubuntu-bionic-i386"
<<: *linux_i386
### Job Templates
.default-triggering-rules: &default_triggering_rules
only:
- merge_requests
- tags
- web
.precheck: &precheck_job
<<: *default_triggering_rules
<<: *debian_sid_amd64_image
stage: precheck
.build: &build_job
<<: *default_triggering_rules
stage: build
before_script:
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
- autoreconf -fi
script:
- ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr --with-libidn2 --prefix=$HOME/.local --without-make-clean "${EXTRA_CONFIGURE}" || cat config.log
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
- ./configure --enable-developer --with-randomdev=/dev/urandom --with-libtool --disable-static --with-cmocka --prefix=$HOME/.local --without-make-clean ${EXTRA_CONFIGURE} || cat config.log
- make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
- test -z "${RUN_MAKE_INSTALL}" || make install
artifacts:
expire_in: '1 hour'
untracked: true
.install_test: &install_test_job
stage: test
before_script:
- mkdir $HOME/.local
script:
- make install
expire_in: "1 hour"
.system_test: &system_test_job
<<: *default_triggering_rules
stage: test
retry: 2
before_script:
- rm -rf .ccache
- bash -x bin/tests/system/ifconfig.sh up
- bash -x util/prepare-softhsm2.sh
script:
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
- test -s bin/tests/system/systests.output
artifacts:
untracked: true
expire_in: '1 week'
expire_in: "1 week"
when: on_failure
.unit_test: &unit_test_job
<<: *default_triggering_rules
stage: test
before_script:
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
- bash -x util/prepare-softhsm2.sh
script:
- make unit
after_script:
- kyua report-html --force --results-file kyua.results --results-filter "" --output kyua_html
artifacts:
paths:
- atf.out
- kyua.log
- kyua.results
- kyua_html/
expire_in: '1 week'
- kyua.log
- kyua.results
- kyua_html/
expire_in: "1 week"
when: on_failure
precheck:debian:sid:amd64:
<<: *debian_sid_amd64_image
stage: precheck
### Job Definitions
# Jobs in the precheck stage
misc:sid:amd64:
<<: *precheck_job
script:
- sh util/check-ans-prereq.sh
- sh util/checklibs.sh > checklibs.out
- sh util/tabify-changes < CHANGES > CHANGES.tmp
- diff -urNap CHANGES CHANGES.tmp
- rm CHANGES.tmp
- perl util/check-changes CHANGES
- perl -w util/merge_copyrights
- diff -urNap util/copyrights util/newcopyrights
@@ -172,108 +169,331 @@ precheck:debian:sid:amd64:
- xmllint --noout --nonet --html `git ls-files '*.html'`
artifacts:
paths:
- util/newcopyrights
- checklibs.out
expire_in: '1 week'
- util/newcopyrights
- checklibs.out
expire_in: "1 week"
when: on_failure
#build:debian:jessie:amd64:
# <<: *debian_jessie_amd64_image
# <<: *build_job
#
#build:debian:jessie:i386:
# <<: *debian_jessie_i386_image
# <<: *build_job
#
#build:debian:stretch:amd64:
# <<: *debian_stretch_amd64_image
# <<: *build_job
#
#build:debian:buster:i386:
# <<: *debian_buster_i386_image
# <<: *build_job
#
#build:ubuntu:trusty:amd64:
# <<: *ubuntu_trusty_amd64_image
# <<: *build_job
#
#build:ubuntu:xenial:i386:
# <<: *ubuntu_xenial_i386_image
# <<: *build_job
🐞:sid:amd64:
<<: *precheck_job
script: util/check-cocci
build:centos:centos6:amd64:
# Jobs for doc builds on Debian Sid (amd64)
docs:sid:amd64:
<<: *debian_sid_amd64_image
stage: build
script:
- ./configure || cat config.log
- make -C doc/misc docbook
- make -C doc/arm Bv9ARM.html
artifacts:
paths:
- doc/arm/
expire_in: "1 month"
only:
- merge_requests
- tags
- web
- master@isc-projects/bind9
- /^v9_[1-9][0-9]$/@isc-projects/bind9
push:docs:sid:amd64:
<<: *debian_sid_amd64_image
stage: push
dependencies: []
script:
- curl -X POST -F token=$GITLAB_PAGES_DOCS_TRIGGER_TOKEN -F ref=master $GITLAB_PAGES_DOCS_TRIGGER_URL
only:
- master@isc-projects/bind9
- /^v9_[1-9][0-9]$/@isc-projects/bind9
# Jobs for regular GCC builds on CentOS 6 (amd64)
gcc:centos6:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--disable-warn-error"
EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error"
<<: *centos_centos6_amd64_image
<<: *build_job
build:centos:centos7:amd64:
system:gcc:centos6:amd64:
<<: *centos_centos6_amd64_image
<<: *system_test_job
dependencies:
- gcc:centos6:amd64
unit:gcc:centos6:amd64:
<<: *centos_centos6_amd64_image
<<: *unit_test_job
dependencies:
- gcc:centos6:amd64
# Jobs for regular GCC builds on CentOS 7 (amd64)
gcc:centos7:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g -DDIG_SIGCHASE=1"
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--with-libidn2"
<<: *centos_centos7_amd64_image
<<: *build_job
build:debian:sid:amd64:
<<: *debian_sid_amd64_image
<<: *build_job
build:debian:sid:i386:
<<: *debian_sid_i386_image
<<: *build_job
unittest:centos:centos6:amd64:
<<: *centos_centos6_amd64_image
<<: *unit_test_job
dependencies:
- build:centos:centos6:amd64
unittest:centos:centos7:amd64:
<<: *centos_centos7_amd64_image
<<: *unit_test_job
dependencies:
- build:centos:centos7:amd64
unittest:debian:sid:amd64:
<<: *debian_sid_amd64_image
<<: *unit_test_job
dependencies:
- build:debian:sid:amd64
unittest:debian:sid:i386:
<<: *debian_sid_i386_image
<<: *unit_test_job
dependencies:
- build:debian:sid:i386
systemtest:centos:centos6:amd64:
<<: *centos_centos6_amd64_image
<<: *system_test_job
dependencies:
- build:centos:centos6:amd64
systemtest:centos:centos7:amd64:
system:gcc:centos7:amd64:
<<: *centos_centos7_amd64_image
<<: *system_test_job
dependencies:
- build:centos:centos7:amd64
- gcc:centos7:amd64
systemtest:debian:sid:amd64:
unit:gcc:centos7:amd64:
<<: *centos_centos7_amd64_image
<<: *unit_test_job
dependencies:
- gcc:centos7:amd64
# Jobs for regular GCC builds on Debian 8 Jessie (amd64)
gcc:jessie:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--without-cmocka --with-python"
<<: *debian_jessie_amd64_image
<<: *build_job
system:gcc:jessie:amd64:
<<: *debian_jessie_amd64_image
<<: *system_test_job
dependencies:
- gcc:jessie:amd64
unit:gcc:jessie:amd64:
<<: *debian_jessie_amd64_image
<<: *unit_test_job
dependencies:
- gcc:jessie:amd64
# Jobs for regular GCC builds on Debian 9 Stretch (amd64)
gcc:stretch:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
<<: *debian_stretch_amd64_image
<<: *build_job
system:gcc:stretch:amd64:
<<: *debian_stretch_amd64_image
<<: *system_test_job
dependencies:
- gcc:stretch:amd64
unit:gcc:stretch:amd64:
<<: *debian_stretch_amd64_image
<<: *unit_test_job
dependencies:
- gcc:stretch:amd64
# Jobs for regular GCC builds on Debian Sid (amd64)
gcc:sid:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--with-libidn2"
RUN_MAKE_INSTALL: 1
<<: *debian_sid_amd64_image
<<: *build_job
system:gcc:sid:amd64:
<<: *debian_sid_amd64_image
<<: *system_test_job
dependencies:
- build:debian:sid:amd64
systemtest:debian:sid:i386:
- gcc:sid:amd64
unit:gcc:sid:amd64:
<<: *debian_sid_amd64_image
<<: *unit_test_job
dependencies:
- gcc:sid:amd64
# Jobs for regular GCC builds on Debian Sid (i386)
gcc:sid:i386:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--with-libidn2 --without-python"
<<: *debian_sid_i386_image
<<: *build_job
system:gcc:sid:i386:
<<: *debian_sid_i386_image
<<: *system_test_job
dependencies:
- build:debian:sid:i386
- gcc:sid:i386
install:debian:sid:amd64:
<<: *debian_sid_amd64_image
<<: *install_test_job
unit:gcc:sid:i386:
<<: *debian_sid_i386_image
<<: *unit_test_job
dependencies:
- build:debian:sid:amd64
- gcc:sid:i386
# Jobs for regular GCC builds on Fedora 29 (amd64)
gcc:fedora29:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--with-libidn2"
<<: *fedora_29_amd64_image
<<: *build_job
system:gcc:fedora29:amd64:
<<: *fedora_29_amd64_image
<<: *system_test_job
dependencies:
- gcc:fedora29:amd64
unit:gcc:fedora29:amd64:
<<: *fedora_29_amd64_image
<<: *unit_test_job
dependencies:
- gcc:fedora29:amd64
# Jobs for regular GCC builds on Ubuntu 16.04 Xenial Xerus (amd64)
gcc:xenial:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
<<: *ubuntu_xenial_amd64_image
<<: *build_job
system:gcc:xenial:amd64:
<<: *ubuntu_xenial_amd64_image
<<: *system_test_job
dependencies:
- gcc:xenial:amd64
unit:gcc:xenial:amd64:
<<: *ubuntu_xenial_amd64_image
<<: *unit_test_job
dependencies:
- gcc:xenial:amd64
# Jobs for regular GCC builds on Ubuntu 18.04 Bionic Beaver (amd64)
gcc:bionic:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--with-libidn2"
<<: *ubuntu_bionic_amd64_image
<<: *build_job
system:gcc:bionic:amd64:
<<: *ubuntu_bionic_amd64_image
<<: *system_test_job
dependencies:
- gcc:bionic:amd64
unit:gcc:bionic:amd64:
<<: *ubuntu_bionic_amd64_image
<<: *unit_test_job
dependencies:
- gcc:bionic:amd64
# Jobs for GCC builds with ASAN enabled on Debian Sid (amd64)
asan:sid:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0"
LDFLAGS: "-fsanitize=address,undefined"
EXTRA_CONFIGURE: "--with-libidn2"
<<: *debian_sid_amd64_image
<<: *build_job
system:asan:sid:amd64:
<<: *debian_sid_amd64_image
<<: *system_test_job
dependencies:
- asan:sid:amd64
unit:asan:sid:amd64:
<<: *debian_sid_amd64_image
<<: *unit_test_job
dependencies:
- asan:sid:amd64
# Jobs for Clang builds on Debian Stretch (amd64)
clang:stretch:amd64:
variables:
CC: clang
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
EXTRA_CONFIGURE: "--with-python=python3"
<<: *debian_stretch_amd64_image
<<: *build_job
unit:clang:stretch:amd64:
<<: *debian_stretch_amd64_image
<<: *unit_test_job
dependencies:
- clang:stretch:amd64
# Jobs for Clang builds on Debian Stretch (i386)
clang:stretch:i386:
variables:
CC: clang
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
EXTRA_CONFIGURE: "--with-python=python2"
<<: *debian_stretch_i386_image
<<: *build_job
# Jobs for PKCS#11-enabled GCC builds on Debian Sid (amd64)
pkcs11:sid:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g"
EXTRA_CONFIGURE: "--enable-native-pkcs11 --with-pkcs11=/usr/lib/softhsm/libsofthsm2.so"
<<: *debian_sid_amd64_image
<<: *build_job
system:pkcs11:sid:amd64:
<<: *debian_sid_amd64_image
<<: *system_test_job
dependencies:
- pkcs11:sid:amd64
unit:pkcs11:sid:amd64:
<<: *debian_sid_amd64_image
<<: *unit_test_job
dependencies:
- pkcs11:sid:amd64
# Jobs for GCC builds with assertions compiled away on Debian Sid (amd64)
noassert:sid:amd64:
variables:
CC: gcc
CFLAGS: "-Wall -Wextra -O2 -g -DISC_CHECK_NONE=1"
EXTRA_CONFIGURE: "--with-libidn2"
<<: *debian_sid_amd64_image
<<: *build_job
system:noassert:sid:amd64:
<<: *debian_sid_amd64_image
<<: *system_test_job
dependencies:
- noassert:sid:amd64
unit:noassert:sid:amd64:
<<: *debian_sid_amd64_image
<<: *unit_test_job
dependencies:
- noassert:sid:amd64
-5
View File
@@ -1,5 +0,0 @@
Content-Type: application/X-atf-atffile; version="1"
prop: test-suite = bind9
tp: lib
+194 -8
View File
@@ -1,28 +1,214 @@
--- 9.11.5-P4 released ---
--- 9.11.6-P1 released ---
--- 9.11.5-P3 released (withdrawn) ---
5200. [security] tcp-clients settings could be exceeded in some cases,
which could lead to exhaustion of file descriptors.
(CVE-2018-5743) [GL #615]
--- 9.11.6 released ---
--- 9.11.6rc1 released ---
5166. [port] openbsd: Threads are now enabled by default. [GL !1548]
5164. [bug] Correct errno to result translation in dlz filesystem
modules. [GL #884]
5163. [cleanup] Out-of-tree builds failed --enable-dnstap. [GL #836]
5162. [cleanup] Improve dnssec-keymgr manual. Thanks to Tony Finch.
[GL !1518]
5160. [contrib] Added DNAME support to the DLZ LDAP schema. Also
fixed a compilation bug affecting several DLZ
modules. [GL #872]
5159. [bug] dnssec-coverage was incorrectly ignoring
names specified on the command line without
trailing dots. [GL !1478]
5158. [protocol] Add support for AMTRELAY and ZONEMD. [GL #867]
5157. [bug] Nslookup now errors out if there are extra command
line arguments. [GL #207]
5154. [bug] dig: process_opt could be called twice on the same
message leading to a assertion failure. [GL #860]
5148. [bug] named did not sign the TKEY response. [GL #821]
5147. [bug] dnssec-keymgr: Add a five-minute margin to better
handle key events close to 'now'. [GL #848]
5146. [bug] Removed an unnecessary assert that could be
triggered from PKCS#11 modules during
deconstruction. [GL #841]
5143. [bug] dnssec-keymgr and dnssec-coverage failed to find
key files for zone names ending in ".". [GL #560]
5141. [security] Zone transfer controls for writable DLZ zones were
not effective as the allowzonexfr method was not being
called for such zones. (CVE-2019-6465) [GL #790]
--- 9.11.5-P2 released (withdrawn) ---
5140. [bug] Don't immediately mark existing keys as inactive and
deleted when running dnssec-keymgr for the first
time. [GL #117]
5139. [bug] If possible, don't use forwarders when priming.
This ensures we can get root server IP addresses
from priming query response glue, which may not
be present if the forwarding server is returning
minimal responses. [GL #752]
5134. [bug] win32: WSAStartup was not called before getservbyname
was called. [GL #590]
5133. [bug] 'rndc managed-keys' didn't handle class and view
correctly and failed to add new lines between each
view. [GL !1327]
5128. [bug] Refreshkeytime was not being updated for managed
keys zones. [GL #784]
5127. [bug] rcode.c:maybe_numeric failed to handle NUL in text
regions. [GL #807]
5126. [bug] Named incorrectly accepted empty base64 and hex encoded
fields when reading master files. [GL #807]
5125. [bug] Allow for up to 100 records or 64k of data when caching
a negative response. [GL #804]
5124. [bug] Named could incorrectly return FORMERR rather than
SERVFAIL. [GL #804]
5123. [bug] dig could hang indefinitely after encountering an error
before creating a TCP socket. [GL #692]
5122. [bug] In a "forward first;" configuration, a forwarder
timeout did not prevent that forwarder from being
queried again after falling back to full recursive
resolution. [GL #315]
5121. [contrib] dlz_stub_driver.c fails to return ISC_R_NOTFOUND on none
matching zone names. [GL !1299]
5118. [security] Named could crash if it is managing a key with
`managed-keys` and the authoritative zone is rolling
the key to an unsupported algorithm. (CVE-2018-5745)
[GL #780]
5112. [bug] Named/named-checkconf could dump core if there was
a missing masters clause and a bad notify clause.
[GL #779]
5111. [bug] Occluded DNSKEY records could make it into the
delegating NSEC/NSEC3 bitmap. [GL #742]
5110. [security] Named leaked memory if there were multiple Key Tag
EDNS options present. (CVE-2018-5744) [GL #772]
--- 9.11.5-P1 released ---
5108. [bug] Named could fail to determine bottom of zone when
removing out of date keys leading to invalid NSEC
and NSEC3 records being added to the zone. [GL #771]
5107. [bug] 'host -U' did not work. [GL #769]
5104. [cleanup] Log clearer informational message when a catz zone
is overridden by a zone in named.conf.
Thanks to Tony Finch. [GL !1157]
5103. [bug] Add missing design by contract tests to dns_catz*.
[GL #748]
5102. [bug] dnssec-coverage failed to use the default TTL when
checking KSK deletion times leading to a exception.
[GL #585]
5101. [bug] Fix default installation path for Python modules.
[GL #730]
5098. [func] Failed memory allocations are now fatal. [GL #674]
5097. [cleanup] Remove embedded ATF unit testing framework
from BIND source distribution. [GL !875]
5095. [test] Converted all unit tests from ATF to CMocka;
removed the source code for the ATF libraries.
Build with "configure --with-cmocka" to enable
unit testing. [GL #620]
5094. [func] Add 'dig -r' to disable reading of .digrc. [GL !970]
5092. [bug] Address memory leak on SIGTERM in nsupdate when using
GSS-TSIG. [GL #558]
5090. [bug] dig and mdig failed to properly preparse dash value
pairs when value was a seperate argument and started
with a dash. [GL #584]
5088. [bug] dig/host/nslookup could crash when interrupted close to
a query timeout. [GL #599]
5087. [test] Check that result tables are complete. [GL #676]
5086. [func] Log of RPZ now includes the QTYPE and QCLASS. [GL #623]
5084. [func] Add configure time detection of Utimaco HSM
and disable runtime md5/sha1 detection when it
compiled with it. [GL #656]
5079. [func] Disable IDN processing in dig and nslookup
when not on a tty. [GL #653]
5078. [cleanup] Require python components to be explicitly disabled if
python is not available on unix platforms. [GL #601]
5076. [bug] "require-server-cookie" was not effective if
"rate-limit" was configured. [GL #617]
5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its
behavior for auto-reallocated buffers. [GL #644]
5071. [bug] Comparision of NXT records was broken. [GL #631]
5070. [bug] Record types which support a empty rdata field were
not handling the empty rdata field case. [GL #638]
5066. [cleanup] Allow unquoted strings to be used as a zone names
in response-policy statements. [GL #641]
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
5064. [test] Initalize TZ environment variable before calling
dns_test_begin in dnstap_test. [GL #624]
5061. [protocol] Add support for EID and NIMLOC. [GL #626]
5060. [bug] GID, UID and UINFO could not be loaded using unknown
record format. [GL #627]
5059. [bug] Display a per-view list of zones in the web interface.
[GL #427]
5057. [protocol] Add support for ATMA. [GL #619]
5051. [doc] Documentation incorrectly stated that the
"server-addresses" static-stub zone option accepts
custom port numbers. [GL #582]
5042. [test] Make the chained delegations in reclimit behave
like they would in a regular name server. [GL #578]
5041. [test] The chain test contains a incomplete delegation.
[GL #568]
5039. [bug] Named could fail to preserve owner name case of new
RRset. [GL #420]
4887. [test] Enable the rpzrecurse test to run on Windows.
[RT #47093]
--- 9.11.5 released ---
--- 9.11.5rc1 released ---
@@ -548,7 +734,7 @@
required by POSIX. Supply a alternative in
isc_file_isdirwritable. [RT #46394]
4803. [bug] Backport parts of RT #45293 and RT #46267, specifically
4803. [bug] Backport parts of RT #45293 and RT #46267, specifically
the fix for RT #46055 and mkeys system test
improvements. [RT #46430]
@@ -868,7 +1054,7 @@
4660. [bug] Remove spurious "peer" from Windows socket log
messages. [RT #45617]
4659. [bug] Remove spurious log message about lmdb-mapsize
4659. [bug] Remove spurious log message about lmdb-mapsize
not being supported when parsing builtin
configuration file. [RT #45618]
+1 -1
View File
@@ -14,7 +14,7 @@ top_builddir = @top_builddir@
VERSION=@BIND9_VERSION@
SUBDIRS = make unit lib bin doc
SUBDIRS = make lib bin doc
TARGETS =
PREREQS = bind.keys.h
+35 -31
View File
@@ -8,11 +8,12 @@ Contents
4. BIND 9.11 features
5. Building BIND
6. macOS
7. Compile-time options
8. Automated testing
9. Documentation
10. Change log
11. Acknowledgments
7. Dependencies
8. Compile-time options
9. Automated testing
10. Documentation
11. Change log
12. Acknowledgments
Introduction
@@ -259,20 +260,15 @@ correcting faulty documentation and introducing the following new feature:
statements allow updating of subdomains based on a Kerberos or Active
Directory machine principal.
BIND 9.11.5-P1
BIND 9.11.6
BIND 9.11.5-P1 addresses a potentially serious flaw which could cause
faulty NSEC3 chains to be regenerated after a change to the DNSSEC signing
key of a zone.
BIND 9.11.6 is a maintenance release, and also addresses the security
flaws disclosed in CVE-2018-5744, CVE-2018-5745, and CVE-2019-6465.
BIND 9.11.5-P2, 9.11.5-P3
BIND 9.11.6-P1
These were both withdrawn prior to release.
BIND 9.11.5-P4
BIND 9.11.5-P4 addresses the security flaws disclosed in CVE-2018-5744,
CVE-2018-5745 and CVE-2019-6465.
BIND 9.11.6-P1 addresses the security vulnerability disclosed in
CVE-2018-5743.
Building BIND
@@ -324,6 +320,14 @@ 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
Portions of BIND that are written in Python, including dnssec-keymgr,
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
'argparse' and 'ply' modules to be available. 'argparse' is a standard
module as of Python 2.7 and Python 3.2. 'ply' is available from https://
pypi.python.org/pypi/ply.
Compile-time options
To see a full list of configuration options, run configure --help.
@@ -341,13 +345,6 @@ may be necessary to specify a user with the -u option when running named.)
To build shared libraries, specify --with-libtool on the configure command
line.
Certain compiled-in constants and default settings can be increased to
values better suited to large servers with abundant memory resources (e.g,
64-bit servers with 12G or more of memory) by specifying --with-tuning=
large on the configure command line. This can improve performance on big
servers, but will consume more memory and may degrade performance on
smaller systems.
For the server to support DNSSEC, you need to build it with crypto
support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
installed. If the OpenSSL library is installed in a nonstandard location,
@@ -378,13 +375,14 @@ specify the prefix using "--with-geoip=/prefix".
For DNSTAP packet logging, you must have installed libfstrm https://
github.com/farsightsec/fstrm and libprotobuf-c https://
developers.google.com/protocol-buffers, and BIND must be configured with
"--enable-dnstap".
--enable-dnstap.
Portions of BIND that are written in Python, including dnssec-keymgr,
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
'argparse' and 'ply' modules to be available. 'argparse' is a standard
module as of Python 2.7 and Python 3.2. 'ply' is available from https://
pypi.python.org/pypi/ply.
Certain compiled-in constants and default settings can be increased to
values better suited to large servers with abundant memory resources (e.g,
64-bit servers with 12G or more of memory) by specifying --with-tuning=
large on the configure command line. This can improve performance on big
servers, but will consume more memory and may degrade performance on
smaller systems.
On some platforms it is necessary to explicitly request large file support
to handle files bigger than 2GB. This can be done by using
@@ -399,6 +397,10 @@ If your operating system has integrated support for IPv6, it will be used
automatically. If you have installed KAME IPv6 separately, use --with-kame
[=PATH] to specify its location.
The --enable-querytrace option causes named to log every step of
processing every query. This should only be enabled when debugging,
because it has a significant negative impact on query performance.
make install will install named and the various BIND 9 libraries. By
default, installation is into /usr/local, but this can be changed with the
--prefix option when running configure.
@@ -424,8 +426,10 @@ and will be skipped if these are not available. Some tests require Python
and the 'dnspython' module and will be skipped if these are not available.
See bin/tests/system/README for further details.
Unit tests are implemented using Automated Testing Framework (ATF). To run
them, use configure --with-atf, then run make test or make unit.
Unit tests are implemented using the CMocka unit testing framework. To
build them, use configure --with-cmocka. Execution of tests is done by the
Kyua test execution engine; if the kyua command is available, then unit
tests can be run via make test or make unit.
Documentation
+29 -27
View File
@@ -18,6 +18,7 @@
1. [BIND 9.11 features](#features)
1. [Building BIND](#build)
1. [macOS](#macos)
1. [Dependencies](#dependencies)
1. [Compile-time options](#opts)
1. [Automated testing](#testing)
1. [Documentation](#doc)
@@ -276,20 +277,15 @@ feature:
statements allow updating of subdomains based on a Kerberos or
Active Directory machine principal.
#### BIND 9.11.5-P1
#### BIND 9.11.6
BIND 9.11.5-P1 addresses a potentially serious flaw which could
cause faulty NSEC3 chains to be regenerated after a change to the
DNSSEC signing key of a zone.
BIND 9.11.6 is a maintenance release, and also addresses the security
flaws disclosed in CVE-2018-5744, CVE-2018-5745, and CVE-2019-6465.
#### BIND 9.11.5-P2, 9.11.5-P3
#### BIND 9.11.6-P1
These were both withdrawn prior to release.
#### BIND 9.11.5-P4
BIND 9.11.5-P4 addresses the security flaws disclosed in CVE-2018-5744,
CVE-2018-5745 and CVE-2019-6465.
BIND 9.11.6-P1 addresses the security vulnerability disclosed in
CVE-2018-5743.
### <a name="build"/> Building BIND
@@ -334,6 +330,13 @@ 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
Portions of BIND that are written in Python, including
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
system tests, require the 'argparse' and 'ply' modules to be available.
'argparse' is a standard module as of Python 2.7 and Python 3.2.
'ply' is available from [https://pypi.python.org/pypi/ply](https://pypi.python.org/pypi/ply).
#### <a name="opts"/> Compile-time options
@@ -352,13 +355,6 @@ specify a user with the -u option when running `named`.)
To build shared libraries, specify `--with-libtool` on the `configure`
command line.
Certain compiled-in constants and default settings can be increased to
values better suited to large servers with abundant memory resources (e.g,
64-bit servers with 12G or more of memory) by specifying
`--with-tuning=large` on the `configure` command line. This can improve
performance on big servers, but will consume more memory and may degrade
performance on smaller systems.
For the server to support DNSSEC, you need to build it with crypto support.
To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the
OpenSSL library is installed in a nonstandard location, specify the prefix
@@ -391,13 +387,14 @@ For DNSTAP packet logging, you must have installed libfstrm
[https://github.com/farsightsec/fstrm](https://github.com/farsightsec/fstrm)
and libprotobuf-c
[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`.
Portions of BIND that are written in Python, including
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
system tests, require the 'argparse' and 'ply' modules to be available.
'argparse' is a standard module as of Python 2.7 and Python 3.2.
'ply' is available from [https://pypi.python.org/pypi/ply](https://pypi.python.org/pypi/ply).
Certain compiled-in constants and default settings can be increased to
values better suited to large servers with abundant memory resources (e.g,
64-bit servers with 12G or more of memory) by specifying
`--with-tuning=large` on the `configure` command line. This can improve
performance on big servers, but will consume more memory and may degrade
performance on smaller systems.
On some platforms it is necessary to explicitly request large file support
to handle files bigger than 2GB. This can be done by using
@@ -412,6 +409,10 @@ If your operating system has integrated support for IPv6, it will be used
automatically. If you have installed KAME IPv6 separately, use
`--with-kame[=PATH]` to specify its location.
The `--enable-querytrace` option causes `named` to log every step of
processing every query. This should only be enabled when debugging, because
it has a significant negative impact on query performance.
`make install` will install `named` and the various BIND 9 libraries. By
default, installation is into /usr/local, but this can be changed with the
`--prefix` option when running `configure`.
@@ -437,9 +438,10 @@ and will be skipped if these are not available. Some tests require Python
and the 'dnspython' module and will be skipped if these are not available.
See bin/tests/system/README for further details.
Unit tests are implemented using Automated Testing Framework (ATF).
To run them, use `configure --with-atf`, then run `make test` or
`make unit`.
Unit tests are implemented using the CMocka unit testing framework.
To build them, use `configure --with-cmocka`. Execution of tests is done
by the Kyua test execution engine; if the `kyua` command is available,
then unit tests can be run via `make test` or `make unit`.
### <a name="doc"/> Documentation
Vendored
+293 -15
View File
@@ -1,17 +1,295 @@
sinclude(libtool.m4/libtool.m4)dnl
sinclude(libtool.m4/ltoptions.m4)dnl
sinclude(libtool.m4/ltsugar.m4)dnl
sinclude(libtool.m4/ltversion.m4)dnl
sinclude(libtool.m4/lt~obsolete.m4)dnl
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
m4_divert_text(HELP_CANON, [[
NOTE: If PREFIX is not set, then the default values for --sysconfdir
and --localstatedir are /etc and /var, respectively.]])
m4_divert_text(HELP_END, [[
Professional support for BIND is provided by Internet Systems Consortium,
Inc. Information about paid support and training options is available at
https://www.isc.org/support.
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
Help can also often be found on the BIND Users mailing list
(https://lists.isc.org/mailman/listinfo/bind-users) or in the #bind
channel of the Freenode IRC service.]])
# 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.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
# serial 12 (pkg-config-0.29.2)
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
dnl 02111-1307, USA.
dnl
dnl As a special exception to the GNU General Public License, if you
dnl distribute this file as part of a program that contains a
dnl configuration script generated by Autoconf, you may include it under
dnl the same distribution terms that you use for the rest of that
dnl program.
dnl PKG_PREREQ(MIN-VERSION)
dnl -----------------------
dnl Since: 0.29
dnl
dnl Verify that the version of the pkg-config macros are at least
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
dnl installed version of pkg-config, this checks the developer's version
dnl of pkg.m4 when generating configure.
dnl
dnl To ensure that this macro is defined, also add:
dnl m4_ifndef([PKG_PREREQ],
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29.2])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
dnl ----------------------------------
dnl Since: 0.16
dnl
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
dnl first found in the path. Checks that the version of pkg-config found
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
dnl used since that's the first version where most current features of
dnl pkg-config existed.
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=m4_default([$1], [0.9.0])
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
PKG_CONFIG=""
fi
fi[]dnl
])dnl PKG_PROG_PKG_CONFIG
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl -------------------------------------------------------------------
dnl Since: 0.18
dnl
dnl Check to see whether a particular set of modules exists. Similar to
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
dnl
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
dnl only at the first occurence in configure.ac, so if the first place
dnl it's called might be skipped (such as if it is within an "if", you
dnl have to call PKG_CHECK_EXISTS manually
AC_DEFUN([PKG_CHECK_EXISTS],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
if test -n "$PKG_CONFIG" && \
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
m4_default([$2], [:])
m4_ifvaln([$3], [else
$3])dnl
fi])
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
dnl ---------------------------------------------
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
dnl pkg_failed based on the result.
m4_define([_PKG_CONFIG],
[if test -n "$$1"; then
pkg_cv_[]$1="$$1"
elif test -n "$PKG_CONFIG"; then
PKG_CHECK_EXISTS([$3],
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes ],
[pkg_failed=yes])
else
pkg_failed=untried
fi[]dnl
])dnl _PKG_CONFIG
dnl _PKG_SHORT_ERRORS_SUPPORTED
dnl ---------------------------
dnl Internal check to see if pkg-config supports short errors.
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi[]dnl
])dnl _PKG_SHORT_ERRORS_SUPPORTED
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
dnl [ACTION-IF-NOT-FOUND])
dnl --------------------------------------------------------------
dnl Since: 0.4.0
dnl
dnl Note that if there is a possibility the first call to
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
AC_DEFUN([PKG_CHECK_MODULES],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
m4_default([$4], [AC_MSG_ERROR(
[Package requirements ($2) were not met:
$$1_PKG_ERRORS
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
_PKG_TEXT
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
])
else
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
AC_MSG_RESULT([yes])
$3
fi[]dnl
])dnl PKG_CHECK_MODULES
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
dnl [ACTION-IF-NOT-FOUND])
dnl ---------------------------------------------------------------------
dnl Since: 0.29
dnl
dnl Checks for existence of MODULES and gathers its build flags with
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
dnl and VARIABLE-PREFIX_LIBS from --libs.
dnl
dnl Note that if there is a possibility the first call to
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
dnl configure.ac.
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
_save_PKG_CONFIG=$PKG_CONFIG
PKG_CONFIG="$PKG_CONFIG --static"
PKG_CHECK_MODULES($@)
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
])dnl PKG_CHECK_MODULES_STATIC
dnl PKG_INSTALLDIR([DIRECTORY])
dnl -------------------------
dnl Since: 0.27
dnl
dnl Substitutes the variable pkgconfigdir as the location where a module
dnl should install pkg-config .pc files. By default the directory is
dnl $libdir/pkgconfig, but the default can be changed by passing
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
dnl parameter.
AC_DEFUN([PKG_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
m4_pushdef([pkg_description],
[pkg-config installation directory @<:@]pkg_default[@:>@])
AC_ARG_WITH([pkgconfigdir],
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
[with_pkgconfigdir=]pkg_default)
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
])dnl PKG_INSTALLDIR
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
dnl --------------------------------
dnl Since: 0.27
dnl
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
dnl module should install arch-independent pkg-config .pc files. By
dnl default the directory is $datadir/pkgconfig, but the default can be
dnl changed by passing DIRECTORY. The user can override through the
dnl --with-noarch-pkgconfigdir parameter.
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
m4_pushdef([pkg_description],
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
AC_ARG_WITH([noarch-pkgconfigdir],
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
[with_noarch_pkgconfigdir=]pkg_default)
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
])dnl PKG_NOARCH_INSTALLDIR
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl -------------------------------------------
dnl Since: 0.28
dnl
dnl Retrieves the value of the pkg-config variable for the given module.
AC_DEFUN([PKG_CHECK_VAR],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR
m4_include([libtool.m4/libtool.m4])
m4_include([libtool.m4/ltoptions.m4])
m4_include([libtool.m4/ltsugar.m4])
m4_include([libtool.m4/ltversion.m4])
m4_include([libtool.m4/lt~obsolete.m4])
+24 -10
View File
@@ -265,8 +265,10 @@ configure_zone(const char *vclass, const char *view,
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options &= ~DNS_ZONEOPT_CHECKDUPRR;
zone_options &= ~DNS_ZONEOPT_CHECKDUPRRFAIL;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_CHECKDUPRR;
zone_options &= ~DNS_ZONEOPT_CHECKDUPRRFAIL;
@@ -283,8 +285,10 @@ configure_zone(const char *vclass, const char *view,
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options &= ~DNS_ZONEOPT_CHECKMX;
zone_options &= ~DNS_ZONEOPT_CHECKMXFAIL;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_CHECKMX;
zone_options &= ~DNS_ZONEOPT_CHECKMXFAIL;
@@ -310,8 +314,10 @@ configure_zone(const char *vclass, const char *view,
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options |= DNS_ZONEOPT_WARNMXCNAME;
zone_options |= DNS_ZONEOPT_IGNOREMXCNAME;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_WARNMXCNAME;
zone_options &= ~DNS_ZONEOPT_IGNOREMXCNAME;
@@ -328,8 +334,10 @@ configure_zone(const char *vclass, const char *view,
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options |= DNS_ZONEOPT_WARNSRVCNAME;
zone_options |= DNS_ZONEOPT_IGNORESRVCNAME;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_WARNSRVCNAME;
zone_options &= ~DNS_ZONEOPT_IGNORESRVCNAME;
@@ -349,8 +357,10 @@ configure_zone(const char *vclass, const char *view,
zone_options |= DNS_ZONEOPT_CHECKSPF;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options &= ~DNS_ZONEOPT_CHECKSPF;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_CHECKSPF;
}
@@ -366,8 +376,10 @@ configure_zone(const char *vclass, const char *view,
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
zone_options &= ~DNS_ZONEOPT_CHECKNAMES;
zone_options &= ~DNS_ZONEOPT_CHECKNAMESFAIL;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
} else {
zone_options |= DNS_ZONEOPT_CHECKNAMES;
zone_options |= DNS_ZONEOPT_CHECKNAMESFAIL;
@@ -377,14 +389,16 @@ configure_zone(const char *vclass, const char *view,
fmtobj = NULL;
if (get_maps(maps, "masterfile-format", &fmtobj)) {
const char *masterformatstr = cfg_obj_asstring(fmtobj);
if (strcasecmp(masterformatstr, "text") == 0)
if (strcasecmp(masterformatstr, "text") == 0) {
masterformat = dns_masterformat_text;
else if (strcasecmp(masterformatstr, "raw") == 0)
} else if (strcasecmp(masterformatstr, "raw") == 0) {
masterformat = dns_masterformat_raw;
else if (strcasecmp(masterformatstr, "map") == 0)
} else if (strcasecmp(masterformatstr, "map") == 0) {
masterformat = dns_masterformat_map;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
+5 -3
View File
@@ -141,12 +141,14 @@ main(int argc, char **argv) {
#define PROGCMP(X) \
(strcasecmp(prog_name, X) == 0 || strcasecmp(prog_name, X ".exe") == 0)
if (PROGCMP("named-checkzone"))
if (PROGCMP("named-checkzone")) {
progmode = progmode_check;
else if (PROGCMP("named-compilezone"))
} else if (PROGCMP("named-compilezone")) {
progmode = progmode_compile;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
/* Compilation specific defaults */
if (progmode == progmode_compile) {
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "checktool"=".\checktool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "checktool"=".\checktool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+4 -2
View File
@@ -130,10 +130,12 @@ main(int argc, char **argv) {
if (PROGCMP("tsig-keygen")) {
progmode = progmode_keygen;
quiet = true;
} else if (PROGCMP("ddns-confgen"))
} else if (PROGCMP("ddns-confgen")) {
progmode = progmode_confgen;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
isc_commandline_errprint = false;
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "confgentool"=".\confgentool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "confgentool"=".\confgentool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+34 -1
View File
@@ -765,7 +765,14 @@ setup_dnsseckeys(dns_client_t *client) {
if (dlv_validation)
dns_client_setdlv(client, dns_rdataclass_in, dlv_anchor);
cleanup:
if (bindkeys != NULL) {
cfg_obj_destroy(parser, &bindkeys);
}
if (parser != NULL) {
cfg_parser_destroy(&parser);
}
if (result != ISC_R_SUCCESS)
delv_log(ISC_LOG_ERROR, "setup_dnsseckeys: %s",
isc_result_totext(result));
@@ -1179,6 +1186,8 @@ plus_option(char *option) {
* options: "46a:b:c:d:himp:q:t:vx:";
*/
static const char *single_dash_opts = "46himv";
static const char *dash_opts = "46abcdhimpqtvx";
static bool
dash_option(char *option, char *next, bool *open_type_class) {
char opt, *value;
@@ -1236,6 +1245,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
/* NOTREACHED */
default:
INSIST(0);
ISC_UNREACHABLE();
}
if (strlen(option) > 1U)
option = &option[1];
@@ -1379,8 +1389,10 @@ preparse_args(int argc, char **argv) {
char *option;
for (argc--, argv++; argc > 0; argc--, argv++) {
if (argv[0][0] != '-')
if (argv[0][0] != '-') {
continue;
}
option = &argv[0][1];
while (strpbrk(option, single_dash_opts) == &option[0]) {
switch (option[0]) {
@@ -1403,6 +1415,27 @@ preparse_args(int argc, char **argv) {
}
option = &option[1];
}
if (strlen(option) == 0U) {
continue;
}
/* Look for dash value option. */
if (strpbrk(option, dash_opts) != &option[0] ||
strlen(option) > 1U)
{
/* Error or value in option. */
continue;
}
/* Dash value is next argument so we need to skip it. */
argc--;
argv++;
/* Handle missing argument */
if (argc == 0) {
break;
}
}
}
+15 -3
View File
@@ -74,7 +74,9 @@ will perform an NS query for "\&." (the root)\&.
It is possible to set per\-user defaults for
\fBdig\fR
via
${HOME}/\&.digrc\&. This file is read and any options in it are applied before the command line arguments\&.
${HOME}/\&.digrc\&. This file is read and any options in it are applied before the command line arguments\&. The
\fB\-r\fR
option disables this feature, for scripts that need predictable behaviour\&.
.PP
The IN and CH class names overlap with the IN and CH top level domain names\&. Either use the
\fB\-t\fR
@@ -208,6 +210,12 @@ The domain name to query\&. This is useful to distinguish the
from other arguments\&.
.RE
.PP
\-r
.RS 4
Do not read options from
${HOME}/\&.digrc\&. This is useful for scripts that need predictable behaviour\&.
.RE
.PP
\-t \fItype\fR
.RS 4
The resource record type to query\&. It can be any valid query type\&. If it is a resource record type supported in BIND 9, it can be given by the type mnemonic (such as "NS" or "AAAA")\&. The default query type is "A", unless the
@@ -468,12 +476,16 @@ option is enabled\&. If short form answers are requested, the default is not to
.PP
\fB+[no]idnin\fR
.RS 4
Process [do not process] IDN domain names on input\&. This requires IDN SUPPORT to have been enabled at compile time\&. The default is to process IDN input\&.
Process [do not process] IDN domain names on input\&. This requires IDN SUPPORT to have been enabled at compile time\&.
.sp
The default is to process IDN input when standard output is a tty\&. The IDN processing on input is disabled when dig output is redirected to files, pipes, and other non\-tty file descriptors\&.
.RE
.PP
\fB+[no]idnout\fR
.RS 4
Convert [do not convert] puny code on output\&. This requires IDN SUPPORT to have been enabled at compile time\&. The default is to convert output\&.
Convert [do not convert] puny code on output\&. This requires IDN SUPPORT to have been enabled at compile time\&.
.sp
The default is to process puny code on output when standard output is a tty\&. The puny code processing on output is disabled when dig output is redirected to files, pipes, and other non\-tty file descriptors\&.
.RE
.PP
\fB+[no]ignore\fR
+40 -6
View File
@@ -69,7 +69,7 @@ static bool short_form = false, printcmd = true,
multiline = false, nottl = false, noclass = false,
onesoa = false, use_usec = false,
nocrypto = false, ttlunits = false,
ipv4only = false, ipv6only = false;
ipv4only = false, ipv6only = false, digrc = true;
static uint32_t splitwidth = 0xffffffff;
/*% rrcomments are neither explicitly enabled nor disabled by default */
@@ -158,6 +158,7 @@ help(void) {
" -m (enable memory usage debugging)\n"
" -p port (specify port number)\n"
" -q name (specify query name)\n"
" -r (do not read ~/.digrc)\n"
" -t type (specify query type)\n"
" -u (display times in usec instead of msec)\n"
" -x dot-notation (shortcut for reverse lookups)\n"
@@ -193,8 +194,10 @@ help(void) {
" +[no]fail (Don't try next server on SERVFAIL)\n"
" +[no]header-only (Send query without a question section)\n"
" +[no]identify (ID responders in short answers)\n"
" +[no]idnin (Parse IDN names)\n"
" +[no]idnout (Convert IDN response)\n"
#ifdef HAVE_LIBIDN2
" +[no]idnin (Parse IDN names [default=on on tty])\n"
" +[no]idnout (Convert IDN response [default=on on tty])\n"
#endif
" +[no]ignore (Don't revert to TCP for TC responses.)\n"
" +[no]keepopen (Keep the TCP socket open between queries)\n"
" +[no]mapped (Allow mapped IPv4 over IPv6)\n"
@@ -1525,8 +1528,8 @@ plus_option(const char *option, bool is_batchfile,
/*%
* #true returned if value was used
*/
static const char *single_dash_opts = "46dhimnuv";
static const char *dash_opts = "46bcdfhikmnptvyx";
static const char *single_dash_opts = "46dhimnruv";
static const char *dash_opts = "46bcdfhikmnpqrtvyx";
static bool
dash_option(char *option, char *next, dig_lookup_t **lookup,
bool *open_type_class, bool *need_clone,
@@ -1597,6 +1600,10 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
case 'n':
/* deprecated */
break;
case 'r':
debug("digrc (late)");
digrc = false;
break;
case 'u':
use_usec = true;
break;
@@ -1829,11 +1836,23 @@ preparse_args(int argc, char **argv) {
option = &rv[0][1];
while (strpbrk(option, single_dash_opts) == &option[0]) {
switch (option[0]) {
case 'd':
/* For debugging early startup */
debugging = true;
break;
case 'm':
memdebugging = true;
isc_mem_debugging = ISC_MEM_DEBUGTRACE |
ISC_MEM_DEBUGRECORD;
break;
case 'r':
/*
* Must be done early, because ~/.digrc
* is read before command line parsing
*/
debug("digrc (early)");
digrc = false;
break;
case '4':
if (ipv6only)
fatal("only one of -4 and -6 allowed");
@@ -1847,6 +1866,20 @@ preparse_args(int argc, char **argv) {
}
option = &option[1];
}
if (strlen(option) == 0U) {
continue;
}
/* Look for dash value option. */
if (strpbrk(option, dash_opts) != &option[0] ||
strlen(option) > 1U) {
/* Error or value in option. */
continue;
}
/* Dash value is next argument so we need to skip it. */
rc--, rv++;
/* Handle missing argument */
if (rc == 0)
break;
}
}
@@ -1899,8 +1932,9 @@ parse_args(bool is_batchfile, bool config_only,
*/
INSIST(batchfp == NULL);
homedir = getenv("HOME");
if (homedir != NULL) {
if (homedir != NULL && digrc) {
unsigned int n;
debug("digrc (open)");
n = snprintf(rcfile, sizeof(rcfile), "%s/.digrc",
homedir);
if (n < sizeof(rcfile))
+28 -5
View File
@@ -132,9 +132,10 @@
<para>
It is possible to set per-user defaults for <command>dig</command> via
<filename>${HOME}/.digrc</filename>. This file is read and
any options in it
are applied before the command line arguments.
<filename>${HOME}/.digrc</filename>. This file is read and any
options in it are applied before the command line arguments.
The <option>-r</option> option disables this feature, for
scripts that need predictable behaviour.
</para>
<para>
@@ -335,6 +336,16 @@
</listitem>
</varlistentry>
<varlistentry>
<term>-r</term>
<listitem>
<para>
Do not read options from <filename>${HOME}/.digrc</filename>.
This is useful for scripts that need predictable behaviour.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-t <replaceable class="parameter">type</replaceable></term>
<listitem>
@@ -790,7 +801,13 @@
<para>
Process [do not process] IDN domain names on input.
This requires IDN SUPPORT to have been enabled at
compile time. The default is to process IDN input.
compile time.
</para>
<para>
The default is to process IDN input when standard output
is a tty. The IDN processing on input is disabled when
dig output is redirected to files, pipes, and other
non-tty file descriptors.
</para>
</listitem>
</varlistentry>
@@ -801,7 +818,13 @@
<para>
Convert [do not convert] puny code on output.
This requires IDN SUPPORT to have been enabled at
compile time. The default is to convert output.
compile time.
</para>
<para>
The default is to process puny code on output when
standard output is a tty. The puny code processing on
output is disabled when dig output is redirected to
files, pipes, and other non-tty file descriptors.
</para>
</listitem>
</varlistentry>
+25 -5
View File
@@ -106,9 +106,10 @@
<p>
It is possible to set per-user defaults for <span class="command"><strong>dig</strong></span> via
<code class="filename">${HOME}/.digrc</code>. This file is read and
any options in it
are applied before the command line arguments.
<code class="filename">${HOME}/.digrc</code>. This file is read and any
options in it are applied before the command line arguments.
The <code class="option">-r</code> option disables this feature, for
scripts that need predictable behaviour.
</p>
<p>
@@ -274,6 +275,13 @@
the <em class="parameter"><code>name</code></em> from other arguments.
</p>
</dd>
<dt><span class="term">-r</span></dt>
<dd>
<p>
Do not read options from <code class="filename">${HOME}/.digrc</code>.
This is useful for scripts that need predictable behaviour.
</p>
</dd>
<dt><span class="term">-t <em class="replaceable"><code>type</code></em></span></dt>
<dd>
<p>
@@ -631,7 +639,13 @@
<p>
Process [do not process] IDN domain names on input.
This requires IDN SUPPORT to have been enabled at
compile time. The default is to process IDN input.
compile time.
</p>
<p>
The default is to process IDN input when standard output
is a tty. The IDN processing on input is disabled when
dig output is redirected to files, pipes, and other
non-tty file descriptors.
</p>
</dd>
<dt><span class="term"><code class="option">+[no]idnout</code></span></dt>
@@ -639,7 +653,13 @@
<p>
Convert [do not convert] puny code on output.
This requires IDN SUPPORT to have been enabled at
compile time. The default is to convert output.
compile time.
</p>
<p>
The default is to process puny code on output when
standard output is a tty. The puny code processing on
output is disabled when dig output is redirected to
files, pipes, and other non-tty file descriptors.
</p>
</dd>
<dt><span class="term"><code class="option">+[no]ignore</code></span></dt>
+62 -43
View File
@@ -824,12 +824,12 @@ make_empty_lookup(void) {
looknew->seenbadcookie = false;
looknew->badcookie = true;
#ifdef WITH_IDN_SUPPORT
looknew->idnin = true;
looknew->idnin = isatty(1)?(getenv("IDN_DISABLE") == NULL):false;
#else
looknew->idnin = false;
#endif
#ifdef WITH_IDN_OUT_SUPPORT
looknew->idnout = true;
looknew->idnout = looknew->idnin;
#else
looknew->idnout = false;
#endif
@@ -2648,7 +2648,7 @@ setup_lookup(dig_lookup_t *lookup) {
if (lookup->ecs_addr != NULL) {
uint8_t addr[16];
uint16_t family;
uint16_t family = 0;
uint32_t plen;
struct sockaddr *sa;
struct sockaddr_in *sin;
@@ -2705,6 +2705,7 @@ setup_lookup(dig_lookup_t *lookup) {
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
isc_buffer_init(&b, ecsbuf, sizeof(ecsbuf));
@@ -3035,27 +3036,6 @@ send_tcp_connect(dig_query_t *query) {
return;
}
if (specified_source &&
(isc_sockaddr_pf(&query->sockaddr) !=
isc_sockaddr_pf(&bind_address))) {
printf(";; Skipping server %s, incompatible "
"address family\n", query->servname);
query->waiting_connect = false;
if (ISC_LINK_LINKED(query, link))
next = ISC_LIST_NEXT(query, link);
else
next = NULL;
l = query->lookup;
clear_query(query);
if (next == NULL) {
printf(";; No acceptable nameservers\n");
check_next_lookup(l);
return;
}
send_tcp_connect(next);
return;
}
INSIST(query->sock == NULL);
if (keep != NULL && isc_sockaddr_equal(&keepaddr, &query->sockaddr)) {
@@ -3217,6 +3197,36 @@ send_udp(dig_query_t *query) {
sendcount++;
}
/*%
* If there are more servers available for querying within 'lookup', initiate a
* TCP or UDP query to the next available server and return true; otherwise,
* return false.
*/
static bool
try_next_server(dig_lookup_t *lookup) {
dig_query_t *current_query, *next_query;
current_query = lookup->current_query;
if (current_query == NULL || !ISC_LINK_LINKED(current_query, link)) {
return (false);
}
next_query = ISC_LIST_NEXT(current_query, link);
if (next_query == NULL) {
return (false);
}
debug("trying next server...");
if (lookup->tcp_mode) {
send_tcp_connect(next_query);
} else {
send_udp(next_query);
}
return (true);
}
/*%
* IO timeout handler, used for both connect and recv timeouts. If
* retries are still allowed, either resend the UDP packet or queue a
@@ -3225,7 +3235,7 @@ send_udp(dig_query_t *query) {
static void
connect_timeout(isc_task_t *task, isc_event_t *event) {
dig_lookup_t *l = NULL;
dig_query_t *query = NULL, *cq;
dig_query_t *query = NULL;
UNUSED(task);
REQUIRE(event->ev_type == ISC_TIMEREVENT_IDLE);
@@ -3239,18 +3249,19 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
INSIST(!free_now);
if ((query != NULL) && (query->lookup->current_query != NULL) &&
ISC_LINK_LINKED(query->lookup->current_query, link) &&
(ISC_LIST_NEXT(query->lookup->current_query, link) != NULL)) {
debug("trying next server...");
cq = query->lookup->current_query;
if (!l->tcp_mode)
send_udp(ISC_LIST_NEXT(cq, link));
else {
if (query->sock != NULL)
if (cancel_now) {
UNLOCK_LOOKUP;
return;
}
if (try_next_server(l)) {
if (l->tcp_mode) {
if (query->sock != NULL) {
isc_socket_cancel(query->sock, NULL,
ISC_SOCKCANCEL_ALL);
send_tcp_connect(ISC_LIST_NEXT(cq, link));
} else {
clear_query(query);
}
}
UNLOCK_LOOKUP;
return;
@@ -3705,7 +3716,7 @@ process_cookie(dig_lookup_t *l, dns_message_t *msg,
}
INSIST(msg->cc_ok == 0 && msg->cc_bad == 0);
if (optlen >= len && optlen >= 8U) {
if (len >= 8 && optlen >= 8U) {
if (isc_safe_memequal(isc_buffer_current(optbuf), sent, 8)) {
msg->cc_ok = 1;
} else {
@@ -3795,6 +3806,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
dig_lookup_t *n, *l;
bool docancel = false;
bool match = true;
bool done_process_opt = false;
unsigned int parseflags;
dns_messageid_t id;
unsigned int msgflags;
@@ -4105,6 +4117,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
UNLOCK_LOOKUP;
return;
}
done_process_opt = true;
}
if ((msg->rcode == dns_rcode_servfail && !l->servfail_stops) ||
(check_ra && (msg->flags & DNS_MESSAGEFLAG_RA) == 0 && l->recurse))
@@ -4194,13 +4207,17 @@ recv_done(isc_task_t *task, isc_event_t *event) {
}
}
if (l->cookie != NULL) {
if (msg->opt == NULL)
printf(";; expected opt record in response\n");
else
if (!done_process_opt) {
if (l->cookie != NULL) {
if (msg->opt == NULL) {
printf(";; expected opt record in response\n");
} else {
process_opt(l, msg);
}
} else if (l->sendcookie && msg->opt != NULL) {
process_opt(l, msg);
} else if (l->sendcookie && msg->opt != NULL)
process_opt(l, msg);
}
}
if (!l->doing_xfr || l->xfr_q == query) {
if (msg->rcode == dns_rcode_nxdomain &&
(l->origin != NULL || l->need_search)) {
@@ -5370,7 +5387,7 @@ child_of_zone(dns_name_t * name, dns_name_t * zone_name,
name_reln = dns_name_fullcompare(name, zone_name, &orderp, &nlabelsp);
if (name_reln != dns_namereln_subdomain ||
dns_name_countlabels(name) <= dns_name_countlabels(zone_name) + 1) {
dns_name_countlabels(name) < dns_name_countlabels(zone_name) + 1) {
printf("\n;; ERROR : ");
dns_name_print(name, stdout);
printf(" is not a subdomain of: ");
@@ -5962,6 +5979,8 @@ sigchase_td(dns_message_t *msg)
dns_name_init(&tmp_name, NULL);
result = child_of_zone(&chase_name, &chase_current_name,
&tmp_name);
if (result != ISC_R_SUCCESS)
goto cleanandgo;
if (dns_name_dynamic(&chase_authority_name))
free_name(&chase_authority_name);
dup_name(&tmp_name, &chase_authority_name);
+11 -9
View File
@@ -158,6 +158,7 @@ show_usage(void) {
" -s a SERVFAIL response should stop query\n"
" -t specifies the query type\n"
" -T enables TCP/IP mode\n"
" -U enables UDP mode\n"
" -v enables verbose output\n"
" -V print version number and exit\n"
" -w specifies to wait forever for a reply\n"
@@ -635,28 +636,29 @@ pre_parse_args(int argc, char **argv) {
break;
case 'a': break;
case 'c': break;
case 'C': break;
case 'd': break;
case 'D':
if (debugging)
debugtiming = true;
debugging = true;
break;
case 'i': break;
case 'l': break;
case 'n': break;
case 'N': break;
case 'r': break;
case 'R': break;
case 's': break;
case 't': break;
case 'T': break;
case 'U': break;
case 'v': break;
case 'V':
version();
exit(0);
break;
case 'w': break;
case 'C': break;
case 'D':
if (debugging)
debugtiming = true;
debugging = true;
break;
case 'N': break;
case 'R': break;
case 'T': break;
case 'W': break;
default:
show_usage();
+11
View File
@@ -277,6 +277,17 @@ Try the next nameserver if a nameserver responds with SERVFAIL or a referral (no
.PP
\fBnslookup\fR
returns with an exit status of 1 if any query failed, and 0 otherwise\&.
.SH "IDN SUPPORT"
.PP
If
\fBnslookup\fR
has been built with IDN (internationalized domain name) support, it can accept and display non\-ASCII domain names\&.
\fBnslookup\fR
appropriately converts character encoding of domain name before sending a request to DNS server or displaying a reply from the server\&. If you\*(Aqd like to turn off the IDN support for some reason, define the
\fBIDN_DISABLE\fR
environment variable\&. The IDN support is disabled if the variable is set when
\fBnslookup\fR
runs or when the standard output is not a tty\&.
.SH "FILES"
.PP
/etc/resolv\&.conf
+21 -1
View File
@@ -891,12 +891,29 @@ get_next_command(void) {
isc_mem_free(mctx, buf);
}
ISC_PLATFORM_NORETURN_PRE static void
usage(void) ISC_PLATFORM_NORETURN_POST;
static void
usage(void) {
fprintf(stderr, "Usage:\n");
fprintf(stderr,
" nslookup [-opt ...] # interactive mode using default server\n");
fprintf(stderr,
" nslookup [-opt ...] - server # interactive mode using 'server'\n");
fprintf(stderr,
" nslookup [-opt ...] host # just look up 'host' using default server\n");
fprintf(stderr,
" nslookup [-opt ...] host server # just look up 'host' using 'server'\n");
exit(1);
}
static void
parse_args(int argc, char **argv) {
bool have_lookup = false;
usesearch = true;
for (argc--, argv++; argc > 0; argc--, argv++) {
for (argc--, argv++; argc > 0 && argv[0] != NULL; argc--, argv++) {
debug("main parsing %s", argv[0]);
if (argv[0][0] == '-') {
if (strncasecmp(argv[0], "-ver", 4) == 0) {
@@ -912,6 +929,9 @@ parse_args(int argc, char **argv) {
in_use = true;
addlookup(argv[0]);
} else {
if (argv[1] != NULL) {
usage();
}
set_nameserver(argv[0]);
check_ra = false;
}
+16
View File
@@ -479,6 +479,22 @@ nslookup -query=hinfo -timeout=10
</para>
</refsection>
<refsection><info><title>IDN SUPPORT</title></info>
<para>
If <command>nslookup</command> has been built with IDN (internationalized
domain name) support, it can accept and display non-ASCII domain names.
<command>nslookup</command> appropriately converts character encoding of
domain name before sending a request to DNS server or displaying a
reply from the server.
If you'd like to turn off the IDN support for some reason, define
the <envar>IDN_DISABLE</envar> environment variable.
The IDN support is disabled if the variable is set when
<command>nslookup</command> runs or when the standard output is not
a tty.
</para>
</refsection>
<refsection><info><title>FILES</title></info>
<para><filename>/etc/resolv.conf</filename>
+19 -2
View File
@@ -362,14 +362,31 @@ nslookup -query=hinfo -timeout=10
</div>
<div class="refsection">
<a name="id-1.11"></a><h2>FILES</h2>
<a name="id-1.11"></a><h2>IDN SUPPORT</h2>
<p>
If <span class="command"><strong>nslookup</strong></span> has been built with IDN (internationalized
domain name) support, it can accept and display non-ASCII domain names.
<span class="command"><strong>nslookup</strong></span> appropriately converts character encoding of
domain name before sending a request to DNS server or displaying a
reply from the server.
If you'd like to turn off the IDN support for some reason, define
the <code class="envar">IDN_DISABLE</code> environment variable.
The IDN support is disabled if the variable is set when
<span class="command"><strong>nslookup</strong></span> runs or when the standard output is not
a tty.
</p>
</div>
<div class="refsection">
<a name="id-1.12"></a><h2>FILES</h2>
<p><code class="filename">/etc/resolv.conf</code>
</p>
</div>
<div class="refsection">
<a name="id-1.12"></a><h2>SEE ALSO</h2>
<a name="id-1.13"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry">
<span class="refentrytitle">dig</span>(1)
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "dighost"=".\dighost.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "dighost"=".\dighost.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+103 -44
View File
@@ -39,61 +39,103 @@
dnssec-dsfromkey \- DNSSEC DS RR generation tool
.SH "SYNOPSIS"
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
\fBdnssec\-dsfromkey\fR [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-1\fR] [\fB\-2\fR] [\fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR] [\fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] {keyfile}
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] {keyfile}
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
\fBdnssec\-dsfromkey\fR {\-s} [\fB\-1\fR] [\fB\-2\fR] [\fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-s\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-f\ \fR\fB\fIfile\fR\fR] [\fB\-A\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] {dnsname}
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-A\fR] {\fB\-f\ \fR\fB\fIfile\fR\fR} [dnsname]
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
\fBdnssec\-dsfromkey\fR [\fB\-h\fR] [\fB\-V\fR]
\fBdnssec\-dsfromkey\fR [\fB\-1\fR | \fB\-2\fR | \fB\-a\ \fR\fB\fIalg\fR\fR] [\fB\-C\fR | \fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-T\ \fR\fB\fITTL\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] {\-s} {dnsname}
.HP \w'\fBdnssec\-dsfromkey\fR\ 'u
\fBdnssec\-dsfromkey\fR [\fB\-h\fR | \fB\-V\fR]
.SH "DESCRIPTION"
.PP
The
\fBdnssec\-dsfromkey\fR
outputs the Delegation Signer (DS) resource record (RR), as defined in RFC 3658 and RFC 4509, for the given key(s)\&.
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
it outputs CDS (Child DS) RRs\&.
.PP
The input keys can be specified in a number of ways:
.PP
By default,
\fBdnssec\-dsfromkey\fR
reads a key file named like
Knnnn\&.+aaa+iiiii\&.key, as generated by
\fBdnssec\-keygen\fR\&.
.PP
With the
\fB\-f \fR\fB\fIfile\fR\fR
option,
\fBdnssec\-dsfromkey\fR
reads keys from a zone file or partial zone file (which can contain just the DNSKEY records)\&.
.PP
With the
\fB\-s\fR
option,
\fBdnssec\-dsfromkey\fR
reads a
keyset\-
file, as generated by
\fBdnssec\-keygen\fR\fB\-C\fR\&.
.SH "OPTIONS"
.PP
\-1
.RS 4
Use SHA\-1 as the digest algorithm (the default is to use both SHA\-1 and SHA\-256)\&.
An abbreviation for
\fB\-a SHA1\fR
.RE
.PP
\-2
.RS 4
Use SHA\-256 as the digest algorithm\&.
An abbreviation for
\fB\-a SHA\-256\fR
.RE
.PP
\-a \fIalgorithm\fR
.RS 4
Select the digest algorithm\&. The value of
\fBalgorithm\fR
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256), GOST or SHA\-384 (SHA384)\&. These values are case insensitive\&.
Specify a digest algorithm to use when converting DNSKEY records to DS records\&. This option can be repeated, so that multiple DS records are created for each DNSKEY record\&.
.sp
The
\fIalgorithm\fR
must be one of SHA\-1, SHA\-256, or SHA\-384\&. These values are case insensitive, and the hyphen may be omitted\&. If no algorithm is specified, the default is SHA\-256\&.
.RE
.PP
\-A
.RS 4
Include ZSKs when generating DS records\&. Without this option, only keys which have the KSK flag set will be converted to DS records and printed\&. Useful only in
\fB\-f\fR
zone file mode\&.
.RE
.PP
\-c \fIclass\fR
.RS 4
Specifies the DNS class (default is IN)\&. Useful only in
\fB\-s\fR
keyset or
\fB\-f\fR
zone file mode\&.
.RE
.PP
\-C
.RS 4
Generate CDS records rather than DS records\&. This is mutually exclusive with generating lookaside records\&.
.RE
.PP
\-T \fITTL\fR
.RS 4
Specifies the TTL of the DS records\&.
.RE
.PP
\-K \fIdirectory\fR
.RS 4
Look for key files (or, in keyset mode,
keyset\-
files) in
\fBdirectory\fR\&.
Generate CDS records rather than DS records\&. This is mutually exclusive with the
\fB\-l\fR
option for generating DLV records\&.
.RE
.PP
\-f \fIfile\fR
.RS 4
Zone file mode: in place of the keyfile name, the argument is the DNS domain name of a zone master file, which can be read from
Zone file mode:
\fBdnssec\-dsfromkey\fR\*(Aqs final
\fIdnsname\fR
argument is the DNS domain name of a zone whose master file can be read from
\fBfile\fR\&. If the zone name is the same as
\fBfile\fR, then it may be omitted\&.
.sp
If
\fBfile\fR
is set to
\fIfile\fR
is
"\-", then the zone data is read from the standard input\&. This makes it possible to use the output of the
\fBdig\fR
command as input, as in:
@@ -101,26 +143,41 @@ command as input, as in:
\fBdig dnskey example\&.com | dnssec\-dsfromkey \-f \- example\&.com\fR
.RE
.PP
\-A
\-h
.RS 4
Include ZSKs when generating DS records\&. Without this option, only keys which have the KSK flag set will be converted to DS records and printed\&. Useful only in zone file mode\&.
Prints usage information\&.
.RE
.PP
\-K \fIdirectory\fR
.RS 4
Look for key files or
keyset\-
files in
\fBdirectory\fR\&.
.RE
.PP
\-l \fIdomain\fR
.RS 4
Generate a DLV set instead of a DS set\&. The specified
\fBdomain\fR
is appended to the name for each record in the set\&. The DNSSEC Lookaside Validation (DLV) RR is described in RFC 4431\&. This is mutually exclusive with generating CDS records\&.
\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
.RS 4
Keyset mode: in place of the keyfile name, the argument is the DNS domain name of a keyset file\&.
Keyset mode:
\fBdnssec\-dsfromkey\fR\*(Aqs final
\fIdnsname\fR
argument is the DNS domain name used to locate a
keyset\-
file\&.
.RE
.PP
\-c \fIclass\fR
\-T \fITTL\fR
.RS 4
Specifies the DNS class (default is IN)\&. Useful only in keyset or zone file mode\&.
Specifies the TTL of the DS records\&. By default the TTL is omitted\&.
.RE
.PP
\-v \fIlevel\fR
@@ -128,11 +185,6 @@ Specifies the DNS class (default is IN)\&. Useful only in keyset or zone file mo
Sets the debugging level\&.
.RE
.PP
\-h
.RS 4
Prints usage information\&.
.RE
.PP
\-V
.RS 4
Prints version information\&.
@@ -141,16 +193,16 @@ Prints version information\&.
.PP
To build the SHA\-256 DS RR from the
\fBKexample\&.com\&.+003+26160\fR
keyfile name, the following command would be issued:
keyfile name, you can issue the following command:
.PP
\fBdnssec\-dsfromkey \-2 Kexample\&.com\&.+003+26160\fR
.PP
The command would print something like:
.PP
\fBexample\&.com\&. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94\fR
\fBexample\&.com\&. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94\fR
.SH "FILES"
.PP
The keyfile can be designed by the key identification
The keyfile can be designated by the key identification
Knnnn\&.+aaa+iiiii
or the full file name
Knnnn\&.+aaa+iiiii\&.key
@@ -170,9 +222,16 @@ A keyfile error can give a "file not found" even if the file exists\&.
\fBdnssec-keygen\fR(8),
\fBdnssec-signzone\fR(8),
BIND 9 Administrator Reference Manual,
RFC 3658,
RFC 4431\&.
RFC 4509\&.
RFC 3658
(DS RRs),
RFC 4431
(DLV RRs),
RFC 4509
(SHA\-256 for DS RRs),
RFC 6605
(SHA\-384 for DS RRs),
RFC 7344
(CDS and CDNSKEY RRs)\&.
.SH "AUTHOR"
.PP
\fBInternet Systems Consortium, Inc\&.\fR
+20 -23
View File
@@ -319,30 +319,27 @@ usage(void) ISC_PLATFORM_NORETURN_POST;
static void
usage(void) {
fprintf(stderr, "Usage:\n");
fprintf(stderr, " %s options [-K dir] keyfile\n\n", program);
fprintf(stderr, " %s options [-K dir] [-c class] -s dnsname\n\n",
program);
fprintf(stderr, " %s options -f zonefile (as zone name)\n\n", program);
fprintf(stderr, " %s options -f zonefile zonename\n\n", program);
fprintf(stderr, " %s [options] keyfile\n\n", program);
fprintf(stderr, " %s [options] -f zonefile [zonename]\n\n", program);
fprintf(stderr, " %s [options] -s dnsname\n\n", program);
fprintf(stderr, " %s [-h|-V]\n\n", program);
fprintf(stderr, "Version: %s\n", VERSION);
fprintf(stderr, "Options:\n");
fprintf(stderr, " -v <verbose level>\n");
fprintf(stderr, " -V: print version information\n");
fprintf(stderr, " -K <directory>: directory in which to find "
"key file or keyset file\n");
fprintf(stderr, " -a algorithm: digest algorithm "
"(SHA-1, SHA-256, GOST or SHA-384)\n");
fprintf(stderr, " -1: use SHA-1\n");
fprintf(stderr, " -2: use SHA-256\n");
fprintf(stderr, " -C: print CDS record\n");
fprintf(stderr, " -l: add lookaside zone and print DLV records\n");
fprintf(stderr, " -s: read keyset from keyset-<dnsname> file\n");
fprintf(stderr, " -c class: rdata class for DS set (default: IN)\n");
fprintf(stderr, " -T TTL\n");
fprintf(stderr, " -f file: read keyset from zone file\n");
fprintf(stderr, " -A: when used with -f, "
"include all keys in DS set, not just KSKs\n");
fprintf(stderr, "Output: DS or DLV RRs\n");
fprintf(stderr, "Options:\n"
" -1: digest algorithm SHA-1\n"
" -2: digest algorithm SHA-256\n"
" -a algorithm: digest algorithm (SHA-1, SHA-256, SHA-384 or GOST)\n"
" -A: include all keys in DS set, not just KSKs (-f only)\n"
" -c class: rdata class for DS set (default IN) (-f or -s only)\n"
" -C: print CDS records\n"
" -f zonefile: read keys from a zone file\n"
" -h: print help information\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"
" -T: TTL of output records (omitted by default)\n"
" -v level: verbosity\n"
" -V: print version information\n");
fprintf(stderr, "Output: DS, DLV, or CDS RRs\n");
exit (-1);
}
+153 -90
View File
@@ -49,56 +49,108 @@
<refsynopsisdiv>
<cmdsynopsis sepchar=" ">
<command>dnssec-dsfromkey</command>
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-1</option></arg>
<arg choice="opt" rep="norepeat"><option>-2</option></arg>
<arg choice="opt" rep="norepeat"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-C</option></arg>
<arg choice="opt" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
<group choice="opt">
<arg choice="plain"><option>-1</option></arg>
<arg choice="plain"><option>-2</option></arg>
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
</group>
<group>
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
</group>
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
<arg choice="req" rep="norepeat">keyfile</arg>
</cmdsynopsis>
<cmdsynopsis sepchar=" ">
<command>dnssec-dsfromkey</command>
<arg choice="req" rep="norepeat">-s</arg>
<arg choice="opt" rep="norepeat"><option>-1</option></arg>
<arg choice="opt" rep="norepeat"><option>-2</option></arg>
<arg choice="opt" rep="norepeat"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-s</option></arg>
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
<group choice="opt">
<arg choice="plain"><option>-1</option></arg>
<arg choice="plain"><option>-2</option></arg>
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
</group>
<group>
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
</group>
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-f <replaceable class="parameter">file</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-A</option></arg>
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
<arg choice="req" rep="norepeat">dnsname</arg>
</cmdsynopsis>
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-A</option></arg>
<arg choice="req" rep="norepeat"><option>-f <replaceable class="parameter">file</replaceable></option></arg>
<arg choice="opt" rep="norepeat">dnsname</arg>
</cmdsynopsis>
<cmdsynopsis sepchar=" ">
<command>dnssec-dsfromkey</command>
<arg choice="opt" rep="norepeat"><option>-h</option></arg>
<arg choice="opt" rep="norepeat"><option>-V</option></arg>
</cmdsynopsis>
<group choice="opt">
<arg choice="plain"><option>-1</option></arg>
<arg choice="plain"><option>-2</option></arg>
<arg choice="plain"><option>-a <replaceable class="parameter">alg</replaceable></option></arg>
</group>
<group>
<arg choice="plain" rep="norepeat"><option>-C</option></arg>
<arg choice="plain" rep="norepeat"><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
</group>
<arg choice="opt" rep="norepeat"><option>-T <replaceable class="parameter">TTL</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
<arg choice="req" rep="norepeat">-s</arg>
<arg choice="req" rep="norepeat">dnsname</arg>
</cmdsynopsis>
<cmdsynopsis sepchar=" ">
<command>dnssec-dsfromkey</command>
<group choice="opt">
<arg choice="plain" rep="norepeat"><option>-h</option></arg>
<arg choice="plain" rep="norepeat"><option>-V</option></arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsection><info><title>DESCRIPTION</title></info>
<para><command>dnssec-dsfromkey</command>
outputs the Delegation Signer (DS) resource record (RR), as defined in
RFC 3658 and RFC 4509, for the given key(s).
<para>
The <command>dnssec-dsfromkey</command> command outputs DS (Delegation
Signer) resource records (RRs) and other similarly-constructed RRs:
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>
The input keys can be specified in a number of ways:
</para>
<para>
By default, <command>dnssec-dsfromkey</command> reads a key file
named like <filename>Knnnn.+aaa+iiiii.key</filename>, as generated
by <command>dnssec-keygen</command>.
</para>
<para>
With the <option>-f <replaceable>file</replaceable></option>
option, <command>dnssec-dsfromkey</command> reads keys from a zone file
or partial zone file (which can contain just the DNSKEY records).
</para>
<para>
With the <option>-s</option>
option, <command>dnssec-dsfromkey</command> reads
a <filename>keyset-</filename> file, as generated
by <command>dnssec-keygen</command> <option>-C</option>.
</para>
</refsection>
<refsection><info><title>OPTIONS</title></info>
<variablelist>
<varlistentry>
<term>-1</term>
<listitem>
<para>
Use SHA-1 as the digest algorithm (the default is to use
both SHA-1 and SHA-256).
An abbreviation for <option>-a SHA1</option>
</para>
</listitem>
</varlistentry>
@@ -107,7 +159,7 @@
<term>-2</term>
<listitem>
<para>
Use SHA-256 as the digest algorithm.
An abbreviation for <option>-a SHA-256</option>
</para>
</listitem>
</varlistentry>
@@ -116,40 +168,49 @@
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
<listitem>
<para>
Select the digest algorithm. The value of
<option>algorithm</option> must be one of SHA-1 (SHA1),
SHA-256 (SHA256), GOST or SHA-384 (SHA384).
These values are case insensitive.
Specify a digest algorithm to use when converting DNSKEY
records to DS records. This option can be repeated, so
that multiple DS records are created for each DNSKEY
record.
</para>
<para>
The <replaceable>algorithm</replaceable> must be one of
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
and the hyphen may be omitted. If no algorithm is specified,
the default is SHA-256.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-A</term>
<listitem>
<para>
Include ZSKs when generating DS records. Without this option, only
keys which have the KSK flag set will be converted to DS records
and printed. Useful only in <option>-f</option> zone file mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-c <replaceable class="parameter">class</replaceable></term>
<listitem>
<para>
Specifies the DNS class (default is IN). Useful only
in <option>-s</option> keyset or <option>-f</option>
zone file mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-C</term>
<listitem>
<para>
Generate CDS records rather than DS records. This is mutually
exclusive with generating lookaside records.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-T <replaceable class="parameter">TTL</replaceable></term>
<listitem>
<para>
Specifies the TTL of the DS records.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-K <replaceable class="parameter">directory</replaceable></term>
<listitem>
<para>
Look for key files (or, in keyset mode,
<filename>keyset-</filename> files) in
<option>directory</option>.
Generate CDS records rather than DS records. This is mutually
exclusive with the <option>-l</option> option for generating DLV
records.
</para>
</listitem>
</varlistentry>
@@ -158,13 +219,14 @@
<term>-f <replaceable class="parameter">file</replaceable></term>
<listitem>
<para>
Zone file mode: in place of the keyfile name, the argument is
the DNS domain name of a zone master file, which can be read
Zone file mode: <command>dnssec-dsfromkey</command>'s
final <replaceable>dnsname</replaceable> argument is
the DNS domain name of a zone whose master file can be read
from <option>file</option>. If the zone name is the same as
<option>file</option>, then it may be omitted.
</para>
<para>
If <option>file</option> is set to <literal>"-"</literal>, then
If <replaceable>file</replaceable> is <literal>"-"</literal>, then
the zone data is read from the standard input. This makes it
possible to use the output of the <command>dig</command>
command as input, as in:
@@ -176,26 +238,33 @@
</varlistentry>
<varlistentry>
<term>-A</term>
<listitem>
<para>
Include ZSKs when generating DS records. Without this option,
only keys which have the KSK flag set will be converted to DS
records and printed. Useful only in zone file mode.
</para>
</listitem>
<term>-h</term>
<listitem>
<para>
Prints usage information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-K <replaceable class="parameter">directory</replaceable></term>
<listitem>
<para>
Look for key files or <filename>keyset-</filename> files in
<option>directory</option>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-l <replaceable class="parameter">domain</replaceable></term>
<listitem>
<para>
Generate a DLV set instead of a DS set. The specified
<option>domain</option> is appended to the name for each
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.
The DNSSEC Lookaside Validation (DLV) RR is described
in RFC 4431. This is mutually exclusive with generating
CDS records.
This is mutually exclusive with the <option>-C</option> option
for generating CDS records.
</para>
</listitem>
</varlistentry>
@@ -204,18 +273,18 @@
<term>-s</term>
<listitem>
<para>
Keyset mode: in place of the keyfile name, the argument is
the DNS domain name of a keyset file.
Keyset mode: <command>dnssec-dsfromkey</command>'s
final <replaceable>dnsname</replaceable> argument is the DNS
domain name used to locate a <filename>keyset-</filename> file.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-c <replaceable class="parameter">class</replaceable></term>
<term>-T <replaceable class="parameter">TTL</replaceable></term>
<listitem>
<para>
Specifies the DNS class (default is IN). Useful only
in keyset or zone file mode.
Specifies the TTL of the DS records. By default the TTL is omitted.
</para>
</listitem>
</varlistentry>
@@ -229,15 +298,6 @@
</listitem>
</varlistentry>
<varlistentry>
<term>-h</term>
<listitem>
<para>
Prints usage information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-V</term>
<listitem>
@@ -254,21 +314,22 @@
<para>
To build the SHA-256 DS RR from the
<userinput>Kexample.com.+003+26160</userinput>
keyfile name, the following command would be issued:
keyfile name, you can issue the following command:
</para>
<para><userinput>dnssec-dsfromkey -2 Kexample.com.+003+26160</userinput>
</para>
<para>
The command would print something like:
</para>
<para><userinput>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94</userinput>
<para><userinput>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94</userinput>
</para>
</refsection>
<refsection><info><title>FILES</title></info>
<para>
The keyfile can be designed by the key identification
The keyfile can be designated by the key identification
<filename>Knnnn.+aaa+iiiii</filename> or the full file name
<filename>Knnnn.+aaa+iiiii.key</filename> as generated by
<refentrytitle>dnssec-keygen</refentrytitle><manvolnum>8</manvolnum>.
@@ -296,9 +357,11 @@
<refentrytitle>dnssec-signzone</refentrytitle><manvolnum>8</manvolnum>
</citerefentry>,
<citetitle>BIND 9 Administrator Reference Manual</citetitle>,
<citetitle>RFC 3658</citetitle>,
<citetitle>RFC 4431</citetitle>.
<citetitle>RFC 4509</citetitle>.
<citetitle>RFC 3658</citetitle> (DS RRs),
<citetitle>RFC 4431</citetitle> (DLV RRs),
<citetitle>RFC 4509</citetitle> (SHA-256 for DS RRs),
<citetitle>RFC 6605</citetitle> (SHA-384 for DS RRs),
<citetitle>RFC 7344</citetitle> (CDS and CDNSKEY RRs).
</para>
</refsection>
+143 -80
View File
@@ -33,105 +33,167 @@
<h2>Synopsis</h2>
<div class="cmdsynopsis"><p>
<code class="command">dnssec-dsfromkey</code>
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
[<code class="option">-1</code>]
[<code class="option">-2</code>]
[<code class="option">-a <em class="replaceable"><code>alg</code></em></code>]
[<code class="option">-C</code>]
[<code class="option">-l <em class="replaceable"><code>domain</code></em></code>]
[
<code class="option">-1</code>
| <code class="option">-2</code>
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
]
[
<code class="option">-C</code>
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
]
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
{keyfile}
</p></div>
<div class="cmdsynopsis"><p>
<code class="command">dnssec-dsfromkey</code>
{-s}
[<code class="option">-1</code>]
[<code class="option">-2</code>]
[<code class="option">-a <em class="replaceable"><code>alg</code></em></code>]
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
[<code class="option">-l <em class="replaceable"><code>domain</code></em></code>]
[<code class="option">-s</code>]
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
[
<code class="option">-1</code>
| <code class="option">-2</code>
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
]
[
<code class="option">-C</code>
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
]
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
[<code class="option">-f <em class="replaceable"><code>file</code></em></code>]
[<code class="option">-A</code>]
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
{dnsname}
</p></div>
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
[<code class="option">-A</code>]
{<code class="option">-f <em class="replaceable"><code>file</code></em></code>}
[dnsname]
</p></div>
<div class="cmdsynopsis"><p>
<code class="command">dnssec-dsfromkey</code>
[<code class="option">-h</code>]
[<code class="option">-V</code>]
</p></div>
[
<code class="option">-1</code>
| <code class="option">-2</code>
| <code class="option">-a <em class="replaceable"><code>alg</code></em></code>
]
[
<code class="option">-C</code>
| <code class="option">-l <em class="replaceable"><code>domain</code></em></code>
]
[<code class="option">-T <em class="replaceable"><code>TTL</code></em></code>]
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
{-s}
{dnsname}
</p></div>
<div class="cmdsynopsis"><p>
<code class="command">dnssec-dsfromkey</code>
[
<code class="option">-h</code>
| <code class="option">-V</code>
]
</p></div>
</div>
<div class="refsection">
<a name="id-1.7"></a><h2>DESCRIPTION</h2>
<p><span class="command"><strong>dnssec-dsfromkey</strong></span>
outputs the Delegation Signer (DS) resource record (RR), as defined in
RFC 3658 and RFC 4509, for the given key(s).
<p>
The <span class="command"><strong>dnssec-dsfromkey</strong></span> command outputs DS (Delegation
Signer) resource records (RRs) and other similarly-constructed RRs:
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>
The input keys can be specified in a number of ways:
</p>
<p>
By default, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads a key file
named like <code class="filename">Knnnn.+aaa+iiiii.key</code>, as generated
by <span class="command"><strong>dnssec-keygen</strong></span>.
</p>
<p>
With the <code class="option">-f <em class="replaceable"><code>file</code></em></code>
option, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads keys from a zone file
or partial zone file (which can contain just the DNSKEY records).
</p>
<p>
With the <code class="option">-s</code>
option, <span class="command"><strong>dnssec-dsfromkey</strong></span> reads
a <code class="filename">keyset-</code> file, as generated
by <span class="command"><strong>dnssec-keygen</strong></span> <code class="option">-C</code>.
</p>
</div>
<div class="refsection">
<a name="id-1.8"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl class="variablelist">
<dt><span class="term">-1</span></dt>
<dd>
<p>
Use SHA-1 as the digest algorithm (the default is to use
both SHA-1 and SHA-256).
An abbreviation for <code class="option">-a SHA1</code>
</p>
</dd>
<dt><span class="term">-2</span></dt>
<dd>
<p>
Use SHA-256 as the digest algorithm.
An abbreviation for <code class="option">-a SHA-256</code>
</p>
</dd>
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
<dd>
<p>
Select the digest algorithm. The value of
<code class="option">algorithm</code> must be one of SHA-1 (SHA1),
SHA-256 (SHA256), GOST or SHA-384 (SHA384).
These values are case insensitive.
Specify a digest algorithm to use when converting DNSKEY
records to DS records. This option can be repeated, so
that multiple DS records are created for each DNSKEY
record.
</p>
<p>
The <em class="replaceable"><code>algorithm</code></em> must be one of
SHA-1, SHA-256, or SHA-384. These values are case insensitive,
and the hyphen may be omitted. If no algorithm is specified,
the default is SHA-256.
</p>
</dd>
<dt><span class="term">-A</span></dt>
<dd>
<p>
Include ZSKs when generating DS records. Without this option, only
keys which have the KSK flag set will be converted to DS records
and printed. Useful only in <code class="option">-f</code> zone file mode.
</p>
</dd>
<dt><span class="term">-c <em class="replaceable"><code>class</code></em></span></dt>
<dd>
<p>
Specifies the DNS class (default is IN). Useful only
in <code class="option">-s</code> keyset or <code class="option">-f</code>
zone file mode.
</p>
</dd>
<dt><span class="term">-C</span></dt>
<dd>
<p>
Generate CDS records rather than DS records. This is mutually
exclusive with generating lookaside records.
</p>
</dd>
<dt><span class="term">-T <em class="replaceable"><code>TTL</code></em></span></dt>
<dd>
<p>
Specifies the TTL of the DS records.
</p>
</dd>
<dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt>
<dd>
<p>
Look for key files (or, in keyset mode,
<code class="filename">keyset-</code> files) in
<code class="option">directory</code>.
Generate CDS records rather than DS records. This is mutually
exclusive with the <code class="option">-l</code> option for generating DLV
records.
</p>
</dd>
<dt><span class="term">-f <em class="replaceable"><code>file</code></em></span></dt>
<dd>
<p>
Zone file mode: in place of the keyfile name, the argument is
the DNS domain name of a zone master file, which can be read
Zone file mode: <span class="command"><strong>dnssec-dsfromkey</strong></span>'s
final <em class="replaceable"><code>dnsname</code></em> argument is
the DNS domain name of a zone whose master file can be read
from <code class="option">file</code>. If the zone name is the same as
<code class="option">file</code>, then it may be omitted.
</p>
<p>
If <code class="option">file</code> is set to <code class="literal">"-"</code>, then
If <em class="replaceable"><code>file</code></em> is <code class="literal">"-"</code>, then
the zone data is read from the standard input. This makes it
possible to use the output of the <span class="command"><strong>dig</strong></span>
command as input, as in:
@@ -140,37 +202,41 @@
<strong class="userinput"><code>dig dnskey example.com | dnssec-dsfromkey -f - example.com</code></strong>
</p>
</dd>
<dt><span class="term">-A</span></dt>
<dt><span class="term">-h</span></dt>
<dd>
<p>
Include ZSKs when generating DS records. Without this option,
only keys which have the KSK flag set will be converted to DS
records and printed. Useful only in zone file mode.
</p>
</dd>
<p>
Prints usage information.
</p>
</dd>
<dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt>
<dd>
<p>
Look for key files or <code class="filename">keyset-</code> files in
<code class="option">directory</code>.
</p>
</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
<code class="option">domain</code> is appended to the name for each
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.
The DNSSEC Lookaside Validation (DLV) RR is described
in RFC 4431. This is mutually exclusive with generating
CDS records.
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>
<dd>
<p>
Keyset mode: in place of the keyfile name, the argument is
the DNS domain name of a keyset file.
Keyset mode: <span class="command"><strong>dnssec-dsfromkey</strong></span>'s
final <em class="replaceable"><code>dnsname</code></em> argument is the DNS
domain name used to locate a <code class="filename">keyset-</code> file.
</p>
</dd>
<dt><span class="term">-c <em class="replaceable"><code>class</code></em></span></dt>
<dt><span class="term">-T <em class="replaceable"><code>TTL</code></em></span></dt>
<dd>
<p>
Specifies the DNS class (default is IN). Useful only
in keyset or zone file mode.
Specifies the TTL of the DS records. By default the TTL is omitted.
</p>
</dd>
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
@@ -179,12 +245,6 @@
Sets the debugging level.
</p>
</dd>
<dt><span class="term">-h</span></dt>
<dd>
<p>
Prints usage information.
</p>
</dd>
<dt><span class="term">-V</span></dt>
<dd>
<p>
@@ -200,22 +260,23 @@
<p>
To build the SHA-256 DS RR from the
<strong class="userinput"><code>Kexample.com.+003+26160</code></strong>
keyfile name, the following command would be issued:
keyfile name, you can issue the following command:
</p>
<p><strong class="userinput"><code>dnssec-dsfromkey -2 Kexample.com.+003+26160</code></strong>
</p>
<p>
The command would print something like:
</p>
<p><strong class="userinput"><code>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0 C5EA0B94</code></strong>
<p><strong class="userinput"><code>example.com. IN DS 26160 5 2 3A1EADA7A74B8D0BA86726B0C227AA85AB8BBD2B2004F41A868A54F0C5EA0B94</code></strong>
</p>
</div>
<div class="refsection">
<a name="id-1.10"></a><h2>FILES</h2>
<p>
The keyfile can be designed by the key identification
The keyfile can be designated by the key identification
<code class="filename">Knnnn.+aaa+iiiii</code> or the full file name
<code class="filename">Knnnn.+aaa+iiiii.key</code> as generated by
<span class="refentrytitle">dnssec-keygen</span>(8).
@@ -245,9 +306,11 @@
<span class="refentrytitle">dnssec-signzone</span>(8)
</span>,
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
<em class="citetitle">RFC 3658</em>,
<em class="citetitle">RFC 4431</em>.
<em class="citetitle">RFC 4509</em>.
<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 6605</em> (SHA-384 for DS RRs),
<em class="citetitle">RFC 7344</em> (CDS and CDNSKEY RRs).
</p>
</div>
+4 -4
View File
@@ -674,10 +674,10 @@ main(int argc, char **argv) {
if (setdel)
dst_key_settime(key, DST_TIME_DELETE, deltime);
if (setsyncadd)
dst_key_settime(key, DST_TIME_SYNCPUBLISH, syncadd);
if (setsyncdel)
dst_key_settime(key, DST_TIME_SYNCDELETE, syncdel);
if (setsyncadd)
dst_key_settime(key, DST_TIME_SYNCPUBLISH, syncadd);
if (setsyncdel)
dst_key_settime(key, DST_TIME_SYNCDELETE, syncdel);
} else {
if (setpub || setact || setrev || setinact ||
+5 -5
View File
@@ -61,13 +61,13 @@ usage(void) {
#else
fprintf(stderr, " -E engine: specify OpenSSL engine\n");
#endif
fprintf(stderr, " -f: force overwrite\n");
fprintf(stderr, " -f: force overwrite\n");
fprintf(stderr, " -h: help\n");
fprintf(stderr, " -K directory: use directory for key files\n");
fprintf(stderr, " -h: help\n");
fprintf(stderr, " -r: remove old keyfiles after "
fprintf(stderr, " -r: remove old keyfiles after "
"creating revoked version\n");
fprintf(stderr, " -v level: set level of verbosity\n");
fprintf(stderr, " -V: print version information\n");
fprintf(stderr, " -v level: set level of verbosity\n");
fprintf(stderr, " -V: print version information\n");
fprintf(stderr, "Output:\n");
fprintf(stderr, " K<name>+<alg>+<new id>.key, "
"K<name>+<alg>+<new id>.private\n");
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "dnssectool"=".\dnssectool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "dnssectool"=".\dnssectool.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+48
View File
@@ -198,6 +198,25 @@
background-color: #99ddff;
}
table.zones {
border: 1px solid grey;
width: 500px;
}
table.zones th {
text-align: center;
border: 1px solid grey;
}
table.zones td {
text-align: center;
font-family: monospace;
}
table.zones td:nth-child(1) {
text-align: right;
}
table.zones td:nth-child(4) {
text-align: right;
}
.totals {
background-color: rgb(1,169,206);
color: #ffffff;
@@ -705,6 +724,35 @@
</table>
<br/>
</xsl:if>
<xsl:for-each select="views/view">
<xsl:if test="zones/zone">
<h3>Zones for View <xsl:value-of select="@name"/></h3>
<table class="zones">
<tr>
<th>Name</th>
<th>Class</th>
<th>Type</th>
<th>Serial</th>
</tr>
<xsl:for-each select="zones/zone">
<tr>
<td>
<xsl:value-of select="@name"/>
</td>
<td>
<xsl:value-of select="@rdataclass"/>
</td>
<td>
<xsl:value-of select="type"/>
</td>
<td>
<xsl:value-of select="serial"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
<xsl:if test="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]">
<h2>Received QTYPES per view/zone</h2>
<xsl:for-each select="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]">
+48
View File
@@ -203,6 +203,25 @@ static char xslmsg[] =
" background-color: #99ddff;\n"
" }\n"
"\n"
" table.zones {\n"
" border: 1px solid grey;\n"
" width: 500px;\n"
" }\n"
" table.zones th {\n"
" text-align: center;\n"
" border: 1px solid grey;\n"
" }\n"
" table.zones td {\n"
" text-align: center;\n"
" font-family: monospace;\n"
" }\n"
" table.zones td:nth-child(1) {\n"
" text-align: right;\n"
" }\n"
" table.zones td:nth-child(4) {\n"
" text-align: right;\n"
" }\n"
"\n"
" .totals {\n"
" background-color: rgb(1,169,206);\n"
" color: #ffffff;\n"
@@ -710,6 +729,35 @@ static char xslmsg[] =
" </table>\n"
" <br/>\n"
" </xsl:if>\n"
" <xsl:for-each select=\"views/view\">\n"
" <xsl:if test=\"zones/zone\">\n"
" <h3>Zones for View <xsl:value-of select=\"@name\"/></h3>\n"
" <table class=\"zones\">\n"
" <tr>\n"
" <th>Name</th>\n"
" <th>Class</th>\n"
" <th>Type</th>\n"
" <th>Serial</th>\n"
" </tr>\n"
" <xsl:for-each select=\"zones/zone\">\n"
" <tr>\n"
" <td>\n"
" <xsl:value-of select=\"@name\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"@rdataclass\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"type\"/>\n"
" </td>\n"
" <td>\n"
" <xsl:value-of select=\"serial\"/>\n"
" </td>\n"
" </tr>\n"
" </xsl:for-each>\n"
" </table>\n"
" </xsl:if>\n"
" </xsl:for-each>\n"
" <xsl:if test=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]\">\n"
" <h2>Received QTYPES per view/zone</h2>\n"
" <xsl:for-each select=\"views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]\">\n"
+349 -99
View File
@@ -246,10 +246,11 @@ static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
static isc_result_t get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
dns_dispatch_t *disp, bool tcp);
static isc_result_t get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp,
isc_socket_t *sock);
isc_socket_t *sock, ns_client_t *oldclient);
static inline bool
allowed(isc_netaddr_t *addr, dns_name_t *signer, isc_netaddr_t *ecs_addr,
uint8_t ecs_addrlen, uint8_t *ecs_scope, dns_acl_t *acl);
allowed(isc_netaddr_t *addr, dns_name_t *signer,
isc_netaddr_t *ecs_addr, uint8_t ecs_addrlen,
uint8_t *ecs_scope, dns_acl_t *acl);
static void compute_cookie(ns_client_t *client, uint32_t when,
uint32_t nonce, const unsigned char *secret,
isc_buffer_t *buf);
@@ -298,6 +299,119 @@ ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
}
}
/*%
* Allocate a reference-counted object that will maintain a single pointer to
* the (also reference-counted) TCP client quota, shared between all the
* clients processing queries on a single TCP connection, so that all
* clients sharing the one socket will together consume only one slot in
* the 'tcp-clients' quota.
*/
static isc_result_t
tcpconn_init(ns_client_t *client, bool force) {
isc_result_t result;
isc_quota_t *quota = NULL;
ns_tcpconn_t *tconn = NULL;
REQUIRE(client->tcpconn == NULL);
/*
* Try to attach to the quota first, so we won't pointlessly
* allocate memory for a tcpconn object if we can't get one.
*/
if (force) {
result = isc_quota_force(&ns_g_server->tcpquota, &quota);
} else {
result = isc_quota_attach(&ns_g_server->tcpquota, &quota);
}
if (result != ISC_R_SUCCESS) {
return (result);
}
/*
* A global memory context is used for the allocation as different
* client structures may have different memory contexts assigned and a
* reference counter allocated here might need to be freed by a
* different client. The performance impact caused by memory context
* contention here is expected to be negligible, given that this code
* is only executed for TCP connections.
*/
tconn = isc_mem_allocate(ns_g_mctx, sizeof(*tconn));
isc_refcount_init(&tconn->refs, 1);
tconn->tcpquota = quota;
quota = NULL;
tconn->pipelined = false;
client->tcpconn = tconn;
return (ISC_R_SUCCESS);
}
/*%
* Increase the count of client structures sharing the TCP connection
* that 'source' is associated with; add a pointer to the same tcpconn
* to 'target', thus associating it with the same TCP connection.
*/
static void
tcpconn_attach(ns_client_t *source, ns_client_t *target) {
int refs;
REQUIRE(source->tcpconn != NULL);
REQUIRE(target->tcpconn == NULL);
REQUIRE(source->tcpconn->pipelined);
isc_refcount_increment(&source->tcpconn->refs, &refs);
INSIST(refs > 1);
target->tcpconn = source->tcpconn;
}
/*%
* Decrease the count of client structures sharing the TCP connection that
* 'client' is associated with. If this is the last client using this TCP
* connection, we detach from the TCP quota and free the tcpconn
* object. Either way, client->tcpconn is set to NULL.
*/
static void
tcpconn_detach(ns_client_t *client) {
ns_tcpconn_t *tconn = NULL;
int refs;
REQUIRE(client->tcpconn != NULL);
tconn = client->tcpconn;
client->tcpconn = NULL;
isc_refcount_decrement(&tconn->refs, &refs);
if (refs == 0) {
isc_quota_detach(&tconn->tcpquota);
isc_mem_free(ns_g_mctx, tconn);
}
}
/*%
* Mark a client as active and increment the interface's 'ntcpactive'
* counter, as a signal that there is at least one client servicing
* TCP queries for the interface. If we reach the TCP client quota at
* some point, this will be used to determine whether a quota overrun
* should be permitted.
*
* Marking the client active with the 'tcpactive' flag ensures proper
* accounting, by preventing us from incrementing or decrementing
* 'ntcpactive' more than once per client.
*/
static void
mark_tcp_active(ns_client_t *client, bool active) {
if (active && !client->tcpactive) {
isc_atomic_xadd(&client->interface->ntcpactive, 1);
client->tcpactive = active;
} else if (!active && client->tcpactive) {
uint32_t old =
isc_atomic_xadd(&client->interface->ntcpactive, -1);
INSIST(old > 0);
client->tcpactive = active;
}
}
/*%
* Check for a deactivation or shutdown request and take appropriate
* action. Returns true if either is in progress; in this case
@@ -387,7 +501,8 @@ exit_check(ns_client_t *client) {
INSIST(client->recursionquota == NULL);
if (NS_CLIENTSTATE_READING == client->newstate) {
if (!client->pipelined) {
INSIST(client->tcpconn != NULL);
if (!client->tcpconn->pipelined) {
client_read(client);
client->newstate = NS_CLIENTSTATE_MAX;
return (true); /* We're done. */
@@ -405,10 +520,13 @@ exit_check(ns_client_t *client) {
*/
INSIST(client->recursionquota == NULL);
INSIST(client->newstate <= NS_CLIENTSTATE_READY);
if (client->nreads > 0)
if (client->nreads > 0) {
dns_tcpmsg_cancelread(&client->tcpmsg);
if (client->nreads != 0) {
/* Still waiting for read cancel completion. */
}
/* Still waiting for read cancel completion. */
if (client->nreads > 0) {
return (true);
}
@@ -416,14 +534,49 @@ exit_check(ns_client_t *client) {
dns_tcpmsg_invalidate(&client->tcpmsg);
client->tcpmsg_valid = false;
}
/*
* Soon the client will be ready to accept a new TCP
* connection or UDP request, but we may have enough
* clients doing that already. Check whether this client
* needs to remain active and allow it go inactive if
* not.
*
* UDP clients always go inactive at this point, but a TCP
* client may need to stay active and return to READY
* state if no other clients are available to listen
* for TCP requests on this interface.
*
* Regardless, if we're going to FREED state, that means
* the system is shutting down and we don't need to
* retain clients.
*/
if (client->mortal && TCP_CLIENT(client) &&
client->newstate != NS_CLIENTSTATE_FREED &&
!ns_g_clienttest &&
isc_atomic_xadd(&client->interface->ntcpaccepting, 0) == 0)
{
/* Nobody else is accepting */
client->mortal = false;
client->newstate = NS_CLIENTSTATE_READY;
}
/*
* Detach from TCP connection and TCP client quota,
* if appropriate. If this is the last reference to
* the TCP connection in our pipeline group, the
* TCP quota slot will be released.
*/
if (client->tcpconn) {
tcpconn_detach(client);
}
if (client->tcpsocket != NULL) {
CTRACE("closetcp");
isc_socket_detach(&client->tcpsocket);
mark_tcp_active(client, false);
}
if (client->tcpquota != NULL)
isc_quota_detach(&client->tcpquota);
if (client->timerset) {
(void)isc_timer_reset(client->timer,
isc_timertype_inactive,
@@ -431,45 +584,26 @@ exit_check(ns_client_t *client) {
client->timerset = false;
}
client->pipelined = false;
client->peeraddr_valid = false;
client->state = NS_CLIENTSTATE_READY;
INSIST(client->recursionquota == NULL);
/*
* Now the client is ready to accept a new TCP connection
* or UDP request, but we may have enough clients doing
* that already. Check whether this client needs to remain
* active and force it to go inactive if not.
*
* UDP clients go inactive at this point, but TCP clients
* may remain active if we have fewer active TCP client
* objects than desired due to an earlier quota exhaustion.
*/
if (client->mortal && TCP_CLIENT(client) && !ns_g_clienttest) {
LOCK(&client->interface->lock);
if (client->interface->ntcpcurrent <
client->interface->ntcptarget)
client->mortal = false;
UNLOCK(&client->interface->lock);
}
/*
* We don't need the client; send it to the inactive
* queue for recycling.
*/
if (client->mortal) {
if (client->newstate > NS_CLIENTSTATE_INACTIVE)
if (client->newstate > NS_CLIENTSTATE_INACTIVE) {
client->newstate = NS_CLIENTSTATE_INACTIVE;
}
}
if (NS_CLIENTSTATE_READY == client->newstate) {
if (TCP_CLIENT(client)) {
client_accept(client);
} else
} else {
client_udprecv(client);
}
client->newstate = NS_CLIENTSTATE_MAX;
return (true);
}
@@ -481,41 +615,50 @@ exit_check(ns_client_t *client) {
/*
* We are trying to enter the inactive state.
*/
if (client->naccepts > 0)
if (client->naccepts > 0) {
isc_socket_cancel(client->tcplistener, client->task,
ISC_SOCKCANCEL_ACCEPT);
}
/* Still waiting for accept cancel completion. */
if (! (client->naccepts == 0))
if (client->naccepts > 0) {
return (true);
}
/* Accept cancel is complete. */
if (client->nrecvs > 0)
if (client->nrecvs > 0) {
isc_socket_cancel(client->udpsocket, client->task,
ISC_SOCKCANCEL_RECV);
}
/* Still waiting for recv cancel completion. */
if (! (client->nrecvs == 0))
if (client->nrecvs > 0) {
return (true);
}
/* Still waiting for control event to be delivered */
if (client->nctls > 0)
if (client->nctls > 0) {
return (true);
/* Deactivate the client. */
if (client->interface)
ns_interface_detach(&client->interface);
}
INSIST(client->naccepts == 0);
INSIST(client->recursionquota == NULL);
if (client->tcplistener != NULL)
if (client->tcplistener != NULL) {
isc_socket_detach(&client->tcplistener);
if (client->udpsocket != NULL)
mark_tcp_active(client, false);
}
if (client->udpsocket != NULL) {
isc_socket_detach(&client->udpsocket);
}
if (client->dispatch != NULL)
/* Deactivate the client. */
if (client->interface != NULL) {
ns_interface_detach(&client->interface);
}
if (client->dispatch != NULL) {
dns_dispatch_detach(&client->dispatch);
}
client->attributes = 0;
client->mortal = false;
@@ -540,10 +683,13 @@ exit_check(ns_client_t *client) {
client->newstate = NS_CLIENTSTATE_MAX;
if (!ns_g_clienttest && manager != NULL &&
!manager->exiting)
{
ISC_QUEUE_PUSH(manager->inactive, client,
ilink);
if (client->needshutdown)
}
if (client->needshutdown) {
isc_task_shutdown(client->task);
}
return (true);
}
}
@@ -617,6 +763,7 @@ exit_check(ns_client_t *client) {
if (ns_g_clienttest && isc_mem_references(client->mctx) != 1) {
isc_mem_stats(client->mctx, stderr);
INSIST(0);
ISC_UNREACHABLE();
}
/*
@@ -653,7 +800,7 @@ client_start(isc_task_t *task, isc_event_t *event) {
return;
if (TCP_CLIENT(client)) {
if (client->pipelined) {
if (client->tcpconn != NULL) {
client_read(client);
} else {
client_accept(client);
@@ -663,7 +810,6 @@ client_start(isc_task_t *task, isc_event_t *event) {
}
}
/*%
* The client's task has received a shutdown event.
*/
@@ -1230,7 +1376,7 @@ client_send(ns_client_t *client) {
break;
default:
INSIST(0);
break;
ISC_UNREACHABLE();
}
} else {
respsize = isc_buffer_usedlength(&buffer);
@@ -1256,7 +1402,7 @@ client_send(ns_client_t *client) {
break;
default:
INSIST(0);
break;
ISC_UNREACHABLE();
}
}
@@ -1638,7 +1784,7 @@ ns_client_addopt(ns_client_t *client, dns_message_t *message,
isc_buffer_t buf;
uint8_t addr[16];
uint32_t plen, addrl;
uint16_t family;
uint16_t family = 0;
/* Add CLIENT-SUBNET option. */
@@ -1664,6 +1810,7 @@ ns_client_addopt(ns_client_t *client, dns_message_t *message,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
isc_buffer_init(&buf, ecs, sizeof(ecs));
@@ -1851,6 +1998,7 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
isc_hmacsha1_update(&hmacsha1, cp, length);
isc_hmacsha1_sign(&hmacsha1, digest, sizeof(digest));
@@ -1886,6 +2034,7 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
isc_hmacsha256_update(&hmacsha256, cp, length);
isc_hmacsha256_sign(&hmacsha256, digest, sizeof(digest));
@@ -1895,6 +2044,7 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
}
default:
INSIST(0);
ISC_UNREACHABLE();
}
}
@@ -2304,6 +2454,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
client->nrecvs--;
} else {
INSIST(TCP_CLIENT(client));
INSIST(client->tcpconn != NULL);
REQUIRE(event->ev_type == DNS_EVENT_TCPMSG);
REQUIRE(event->ev_sender == &client->tcpmsg);
buffer = &client->tcpmsg.buffer;
@@ -2445,7 +2596,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
break;
default:
INSIST(0);
break;
ISC_UNREACHABLE();
}
} else {
switch (isc_sockaddr_pf(&client->peeraddr)) {
@@ -2459,7 +2610,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
break;
default:
INSIST(0);
break;
ISC_UNREACHABLE();
}
}
@@ -2472,14 +2623,18 @@ client_request(isc_task_t *task, isc_event_t *event) {
* Parsing the request failed. Send a response
* (typically FORMERR or SERVFAIL).
*/
if (result == DNS_R_OPTERR)
if (result == DNS_R_OPTERR) {
(void)ns_client_addopt(client, client->message,
&client->opt);
}
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(1),
"message parsing failed: %s",
isc_result_totext(result));
if (result == ISC_R_NOSPACE) {
result = DNS_R_FORMERR;
}
ns_client_error(client, result);
goto cleanup;
}
@@ -2487,18 +2642,27 @@ client_request(isc_task_t *task, isc_event_t *event) {
/*
* Pipeline TCP query processing.
*/
if (client->message->opcode != dns_opcode_query)
client->pipelined = false;
if (TCP_CLIENT(client) && client->pipelined) {
result = isc_quota_reserve(&ns_g_server->tcpquota);
if (result == ISC_R_SUCCESS)
result = ns_client_replace(client);
if (TCP_CLIENT(client) &&
client->message->opcode != dns_opcode_query)
{
client->tcpconn->pipelined = false;
}
if (TCP_CLIENT(client) && client->tcpconn->pipelined) {
/*
* We're pipelining. Replace the client; the
* replacement can read the TCP socket looking
* for new messages and this one can process the
* current message asynchronously.
*
* There will now be at least three clients using this
* TCP socket - one accepting new connections,
* one reading an existing connection to get new
* messages, and one answering the message already
* received.
*/
result = ns_client_replace(client);
if (result != ISC_R_SUCCESS) {
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
"no more TCP clients(read): %s",
isc_result_totext(result));
client->pipelined = false;
client->tcpconn->pipelined = false;
}
}
@@ -3054,8 +3218,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
client->signer = NULL;
dns_name_init(&client->signername, NULL);
client->mortal = false;
client->pipelined = false;
client->tcpquota = NULL;
client->tcpconn = NULL;
client->recursionquota = NULL;
client->interface = NULL;
client->peeraddr_valid = false;
@@ -3065,6 +3228,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
client->filter_aaaa = dns_aaaa_ok;
#endif
client->needshutdown = ns_g_clienttest;
client->tcpactive = false;
ISC_EVENT_INIT(&client->ctlevent, sizeof(client->ctlevent), 0, NULL,
NS_EVENT_CLIENTCONTROL, client_start, client, client,
@@ -3159,9 +3323,10 @@ client_read(ns_client_t *client) {
static void
client_newconn(isc_task_t *task, isc_event_t *event) {
isc_result_t result;
ns_client_t *client = event->ev_arg;
isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event;
isc_result_t result;
uint32_t old;
REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN);
REQUIRE(NS_CLIENT_VALID(client));
@@ -3171,13 +3336,18 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
INSIST(client->state == NS_CLIENTSTATE_READY);
/*
* The accept() was successful and we're now establishing a new
* connection. We need to make note of it in the client and
* interface objects so client objects can do the right thing
* when going inactive in exit_check() (see comments in
* client_accept() for details).
*/
INSIST(client->naccepts == 1);
client->naccepts--;
LOCK(&client->interface->lock);
INSIST(client->interface->ntcpcurrent > 0);
client->interface->ntcpcurrent--;
UNLOCK(&client->interface->lock);
old = isc_atomic_xadd(&client->interface->ntcpaccepting, -1);
INSIST(old > 0);
/*
* We must take ownership of the new socket before the exit
@@ -3210,6 +3380,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
"accept failed: %s",
isc_result_totext(nevent->result));
tcpconn_detach(client);
}
if (exit_check(client))
@@ -3247,20 +3418,13 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
* telnetting to port 53 (once per CPU) will
* deny service to legitimate TCP clients.
*/
client->pipelined = false;
result = isc_quota_attach(&ns_g_server->tcpquota,
&client->tcpquota);
if (result == ISC_R_SUCCESS)
result = ns_client_replace(client);
if (result != ISC_R_SUCCESS) {
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
"no more TCP clients(accept): %s",
isc_result_totext(result));
} else if (ns_g_server->keepresporder == NULL ||
!allowed(&netaddr, NULL, NULL, 0, NULL,
ns_g_server->keepresporder)) {
client->pipelined = true;
result = ns_client_replace(client);
if (result == ISC_R_SUCCESS &&
(ns_g_server->keepresporder == NULL ||
!allowed(&netaddr, NULL, NULL, 0, NULL,
ns_g_server->keepresporder)))
{
client->tcpconn->pipelined = true;
}
client_read(client);
@@ -3276,12 +3440,66 @@ client_accept(ns_client_t *client) {
CTRACE("accept");
/*
* Set up a new TCP connection. This means try to attach to the
* TCP client quota (tcp-clients), but fail if we're over quota.
*/
result = tcpconn_init(client, false);
if (result != ISC_R_SUCCESS) {
bool exit;
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
"TCP client quota reached: %s",
isc_result_totext(result));
/*
* We have exceeded the system-wide TCP client quota. But,
* we can't just block this accept in all cases, because if
* we did, a heavy TCP load on other interfaces might cause
* this interface to be starved, with no clients able to
* accept new connections.
*
* So, we check here to see if any other clients are
* already servicing TCP queries on this interface (whether
* accepting, reading, or processing). If we find that at
* least one client other than this one is active, then
* it's okay *not* to call accept - we can let this
* client go inactive and another will take over when it's
* done.
*
* If there aren't enough active clients on the interface,
* then we can be a little bit flexible about the quota.
* We'll allow *one* extra client through to ensure we're
* listening on every interface; we do this by setting the
* 'force' option to tcpconn_init().
*
* (Note: In practice this means that the real TCP client
* quota is tcp-clients plus the number of listening
* interfaces plus 1.)
*/
exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) >
(client->tcpactive ? 1 : 0));
if (exit) {
client->newstate = NS_CLIENTSTATE_INACTIVE;
(void)exit_check(client);
return;
}
result = tcpconn_init(client, true);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
}
/*
* If this client was set up using get_client() or get_worker(),
* then TCP is already marked active. However, if it was restarted
* from exit_check(), it might not be, so we take care of it now.
*/
mark_tcp_active(client, true);
result = isc_socket_accept(client->tcplistener, client->task,
client_newconn, client);
if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_socket_accept() failed: %s",
isc_result_totext(result));
/*
* XXXRTH What should we do? We're trying to accept but
* it didn't work. If we just give up, then TCP
@@ -3289,13 +3507,37 @@ client_accept(ns_client_t *client) {
*
* For now, we just go idle.
*/
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_socket_accept() failed: %s",
isc_result_totext(result));
tcpconn_detach(client);
mark_tcp_active(client, false);
return;
}
/*
* The client's 'naccepts' counter indicates that this client has
* called accept() and is waiting for a new connection. It should
* never exceed 1.
*/
INSIST(client->naccepts == 0);
client->naccepts++;
LOCK(&client->interface->lock);
client->interface->ntcpcurrent++;
UNLOCK(&client->interface->lock);
/*
* The interface's 'ntcpaccepting' counter is incremented when
* any client calls accept(), and decremented in client_newconn()
* once the connection is established.
*
* When the client object is shutting down after handling a TCP
* request (see exit_check()), if this value is at least one, that
* means another client has called accept() and is waiting to
* establish the next connection. That means the client may be
* be free to become inactive; otherwise it may need to start
* listening for connections itself to prevent the interface
* going dead.
*/
isc_atomic_xadd(&client->interface->ntcpaccepting, 1);
}
static void
@@ -3366,15 +3608,17 @@ ns_client_replace(ns_client_t *client) {
REQUIRE(client->manager != NULL);
tcp = TCP_CLIENT(client);
if (tcp && client->pipelined) {
if (tcp && client->tcpconn != NULL && client->tcpconn->pipelined) {
result = get_worker(client->manager, client->interface,
client->tcpsocket);
client->tcpsocket, client);
} else {
result = get_client(client->manager, client->interface,
client->dispatch, tcp);
}
if (result != ISC_R_SUCCESS)
if (result != ISC_R_SUCCESS) {
return (result);
}
/*
* The responsibility for listening for new requests is hereby
@@ -3560,9 +3804,12 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
client->dscp = ifp->dscp;
if (tcp) {
mark_tcp_active(client, true);
client->attributes |= NS_CLIENTATTR_TCP;
isc_socket_attach(ifp->tcpsocket,
&client->tcplistener);
} else {
isc_socket_t *sock;
@@ -3580,7 +3827,8 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
}
static isc_result_t
get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
ns_client_t *oldclient)
{
isc_result_t result = ISC_R_SUCCESS;
isc_event_t *ev;
@@ -3588,6 +3836,7 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
MTRACE("get worker");
REQUIRE(manager != NULL);
REQUIRE(oldclient != NULL);
if (manager->exiting)
return (ISC_R_SHUTTINGDOWN);
@@ -3620,14 +3869,15 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
ns_interface_attach(ifp, &client->interface);
client->newstate = client->state = NS_CLIENTSTATE_WORKING;
INSIST(client->recursionquota == NULL);
client->tcpquota = &ns_g_server->tcpquota;
client->dscp = ifp->dscp;
client->attributes |= NS_CLIENTATTR_TCP;
client->pipelined = true;
client->mortal = true;
tcpconn_attach(oldclient, client);
mark_tcp_active(client, true);
isc_socket_attach(ifp->tcpsocket, &client->tcplistener);
isc_socket_attach(sock, &client->tcpsocket);
isc_socket_setname(client->tcpsocket, "worker-tcp", NULL);
+9 -6
View File
@@ -423,18 +423,20 @@ ns_config_getzonetype(const cfg_obj_t *zonetypeobj) {
const char *str;
str = cfg_obj_asstring(zonetypeobj);
if (strcasecmp(str, "master") == 0)
if (strcasecmp(str, "master") == 0) {
ztype = dns_zone_master;
else if (strcasecmp(str, "slave") == 0)
} else if (strcasecmp(str, "slave") == 0) {
ztype = dns_zone_slave;
else if (strcasecmp(str, "stub") == 0)
} else if (strcasecmp(str, "stub") == 0) {
ztype = dns_zone_stub;
else if (strcasecmp(str, "static-stub") == 0)
} else if (strcasecmp(str, "static-stub") == 0) {
ztype = dns_zone_staticstub;
else if (strcasecmp(str, "redirect") == 0)
} else if (strcasecmp(str, "redirect") == 0) {
ztype = dns_zone_redirect;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
return (ztype);
}
@@ -1008,6 +1010,7 @@ ns_config_getkeyalgorithm2(const char *str, dns_name_t **name,
case hmacsha512: *name = dns_tsig_hmacsha512_name; break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
}
if (typep != NULL)
+65 -60
View File
@@ -116,7 +116,8 @@ ns_control_docommand(isccc_sexpr_t *message, bool readonly,
/*
* Compare the 'command' parameter against all known control commands.
*/
if (command_compare(command, NS_COMMAND_NULL) ||
if ((command_compare(command, NS_COMMAND_NULL) &&
strlen(cmdline) == 4) ||
command_compare(command, NS_COMMAND_STATUS))
{
log_level = ISC_LOG_DEBUG(1);
@@ -150,16 +151,11 @@ ns_control_docommand(isccc_sexpr_t *message, bool readonly,
"received control channel command '%s'",
cmdline);
if (command_compare(command, NS_COMMAND_RELOAD)) {
result = ns_server_reloadcommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_RECONFIG)) {
result = ns_server_reconfigcommand(ns_g_server);
} else if (command_compare(command, NS_COMMAND_REFRESH)) {
result = ns_server_refreshcommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_RETRANSFER)) {
result = ns_server_retransfercommand(ns_g_server,
lex, text);
} else if (command_compare(command, NS_COMMAND_HALT)) {
/*
* After the lengthy "halt" and "stop", the commands are
* handled in alphabetical order of the NS_COMMAND_ macros.
*/
if (command_compare(command, NS_COMMAND_HALT)) {
#ifdef HAVE_LIBSCF
/*
* If we are managed by smf(5), AND in chroot, then
@@ -204,79 +200,88 @@ ns_control_docommand(isccc_sexpr_t *message, bool readonly,
ns_os_shutdownmsg(cmdline, *text);
isc_app_shutdown();
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_DUMPSTATS)) {
result = ns_server_dumpstats(ns_g_server);
} else if (command_compare(command, NS_COMMAND_QUERYLOG)) {
result = ns_server_togglequerylog(ns_g_server, lex);
} else if (command_compare(command, NS_COMMAND_ADDZONE) ||
command_compare(command, NS_COMMAND_MODZONE)) {
result = ns_server_changezone(ns_g_server, cmdline, text);
} else if (command_compare(command, NS_COMMAND_DELZONE)) {
result = ns_server_delzone(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_DNSTAP) ||
command_compare(command, NS_COMMAND_DNSTAPREOPEN)) {
result = ns_server_dnstap(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_DUMPDB)) {
ns_server_dumpdb(ns_g_server, lex, text);
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_SECROOTS)) {
result = ns_server_dumpsecroots(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_TRACE)) {
result = ns_server_setdebuglevel(ns_g_server, lex);
} else if (command_compare(command, NS_COMMAND_NOTRACE)) {
ns_g_debuglevel = 0;
isc_log_setdebuglevel(ns_g_lctx, ns_g_debuglevel);
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_DUMPSTATS)) {
result = ns_server_dumpstats(ns_g_server);
} else if (command_compare(command, NS_COMMAND_FLUSH)) {
result = ns_server_flushcache(ns_g_server, lex);
} else if (command_compare(command, NS_COMMAND_FLUSHNAME)) {
result = ns_server_flushnode(ns_g_server, lex, false);
} else if (command_compare(command, NS_COMMAND_FLUSHTREE)) {
result = ns_server_flushnode(ns_g_server, lex, true);
} else if (command_compare(command, NS_COMMAND_STATUS)) {
result = ns_server_status(ns_g_server, text);
} else if (command_compare(command, NS_COMMAND_TSIGLIST)) {
result = ns_server_tsiglist(ns_g_server, text);
} else if (command_compare(command, NS_COMMAND_TSIGDELETE)) {
result = ns_server_tsigdelete(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_FREEZE)) {
result = ns_server_freeze(ns_g_server, true, lex,
text);
} else if (command_compare(command, NS_COMMAND_UNFREEZE) ||
command_compare(command, NS_COMMAND_THAW)) {
result = ns_server_freeze(ns_g_server, false, lex,
text);
} else if (command_compare(command, NS_COMMAND_LOADKEYS) ||
command_compare(command, NS_COMMAND_SIGN)) {
result = ns_server_rekey(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_MKEYS)) {
result = ns_server_mkeys(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_NOTIFY)) {
result = ns_server_notifycommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_NOTRACE)) {
ns_g_debuglevel = 0;
isc_log_setdebuglevel(ns_g_lctx, ns_g_debuglevel);
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_NTA)) {
result = ns_server_nta(ns_g_server, lex, readonly, text);
} else if (command_compare(command, NS_COMMAND_NULL)) {
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_QUERYLOG)) {
result = ns_server_togglequerylog(ns_g_server, lex);
} else if (command_compare(command, NS_COMMAND_RECONFIG)) {
result = ns_server_reconfigcommand(ns_g_server);
} else if (command_compare(command, NS_COMMAND_RECURSING)) {
result = ns_server_dumprecursing(ns_g_server);
} else if (command_compare(command, NS_COMMAND_REFRESH)) {
result = ns_server_refreshcommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_RELOAD)) {
result = ns_server_reloadcommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_RETRANSFER)) {
result = ns_server_retransfercommand(ns_g_server,
lex, text);
} else if (command_compare(command, NS_COMMAND_SCAN)) {
result = ISC_R_SUCCESS;
ns_server_scan_interfaces(ns_g_server);
} else if (command_compare(command, NS_COMMAND_SECROOTS)) {
result = ns_server_dumpsecroots(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_SIGNING)) {
result = ns_server_signing(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_SHOWZONE)) {
result = ns_server_showzone(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_STATUS)) {
result = ns_server_status(ns_g_server, text);
} else if (command_compare(command, NS_COMMAND_SYNC)) {
result = ns_server_sync(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_RECURSING)) {
result = ns_server_dumprecursing(ns_g_server);
} else if (command_compare(command, NS_COMMAND_THAW) ||
command_compare(command, NS_COMMAND_UNFREEZE)) {
result = ns_server_freeze(ns_g_server, false, lex,
text);
} else if (command_compare(command, NS_COMMAND_TESTGEN)) {
result = ns_server_testgen(lex, text);
} else if (command_compare(command, NS_COMMAND_TIMERPOKE)) {
result = ISC_R_SUCCESS;
isc_timermgr_poke(ns_g_timermgr);
} else if (command_compare(command, NS_COMMAND_NULL)) {
result = ISC_R_SUCCESS;
} else if (command_compare(command, NS_COMMAND_NOTIFY)) {
result = ns_server_notifycommand(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_TRACE)) {
result = ns_server_setdebuglevel(ns_g_server, lex);
} else if (command_compare(command, NS_COMMAND_TSIGDELETE)) {
result = ns_server_tsigdelete(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_TSIGLIST)) {
result = ns_server_tsiglist(ns_g_server, text);
} else if (command_compare(command, NS_COMMAND_VALIDATION)) {
result = ns_server_validation(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_SIGN) ||
command_compare(command, NS_COMMAND_LOADKEYS)) {
result = ns_server_rekey(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_ADDZONE) ||
command_compare(command, NS_COMMAND_MODZONE)) {
result = ns_server_changezone(ns_g_server, cmdline, text);
} else if (command_compare(command, NS_COMMAND_DELZONE)) {
result = ns_server_delzone(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_SHOWZONE)) {
result = ns_server_showzone(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_SIGNING)) {
result = ns_server_signing(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_ZONESTATUS)) {
result = ns_server_zonestatus(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_NTA)) {
result = ns_server_nta(ns_g_server, lex, readonly, text);
} else if (command_compare(command, NS_COMMAND_TESTGEN)) {
result = ns_server_testgen(lex, text);
} else if (command_compare(command, NS_COMMAND_MKEYS)) {
result = ns_server_mkeys(ns_g_server, lex, text);
} else if (command_compare(command, NS_COMMAND_DNSTAP) ||
command_compare(command, NS_COMMAND_DNSTAPREOPEN)) {
result = ns_server_dnstap(ns_g_server, lex, text);
} else {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_CONTROL, ISC_LOG_WARNING,
+14 -9
View File
@@ -9,8 +9,6 @@
* information regarding copyright ownership.
*/
/* $Id: client.h,v 1.96 2012/01/31 23:47:31 tbox Exp $ */
#ifndef NAMED_CLIENT_H
#define NAMED_CLIENT_H 1
@@ -80,6 +78,13 @@
*** Types
***/
/*% reference-counted TCP connection object */
typedef struct ns_tcpconn {
isc_refcount_t refs;
isc_quota_t *tcpquota;
bool pipelined;
} ns_tcpconn_t;
/*% nameserver client structure */
struct ns_client {
unsigned int magic;
@@ -94,7 +99,8 @@ struct ns_client {
int nupdates;
int nctls;
int references;
bool needshutdown; /*
bool tcpactive;
bool needshutdown; /*
* Used by clienttest to get
* the client to go from
* inactive to free state
@@ -130,10 +136,9 @@ struct ns_client {
isc_stdtime_t now;
isc_time_t tnow;
dns_name_t signername; /*%< [T]SIG key name */
dns_name_t * signer; /*%< NULL if not valid sig */
bool mortal; /*%< Die after handling request */
bool pipelined; /*%< TCP queries not in sequence */
isc_quota_t *tcpquota;
dns_name_t *signer; /*%< NULL if not valid sig */
bool mortal; /*%< Die after handling request */
ns_tcpconn_t *tcpconn;
isc_quota_t *recursionquota;
ns_interface_t *interface;
@@ -143,8 +148,8 @@ struct ns_client {
isc_sockaddr_t destsockaddr;
isc_netaddr_t ecs_addr; /*%< EDNS client subnet */
uint8_t ecs_addrlen;
uint8_t ecs_scope;
uint8_t ecs_addrlen;
uint8_t ecs_scope;
struct in6_pktinfo pktinfo;
isc_dscp_t dscp;
+8 -5
View File
@@ -9,8 +9,6 @@
* information regarding copyright ownership.
*/
/* $Id: interfacemgr.h,v 1.35 2011/07/28 23:47:58 tbox Exp $ */
#ifndef NAMED_INTERFACEMGR_H
#define NAMED_INTERFACEMGR_H 1
@@ -77,9 +75,14 @@ struct ns_interface {
/*%< UDP dispatchers. */
isc_socket_t * tcpsocket; /*%< TCP socket. */
isc_dscp_t dscp; /*%< "listen-on" DSCP value */
int ntcptarget; /*%< Desired number of concurrent
TCP accepts */
int ntcpcurrent; /*%< Current ditto, locked */
int32_t ntcpaccepting; /*%< Number of clients
ready to accept new
TCP connections on this
interface */
int32_t ntcpactive; /*%< Number of clients
servicing TCP queries
(whether accepting or
connected) */
int nudpdispatch; /*%< Number of UDP dispatches */
ns_clientmgr_t * clientmgr; /*%< Client manager. */
ISC_LINK(ns_interface_t) link;
+4 -5
View File
@@ -386,8 +386,9 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
* connections will be handled in parallel even though there is
* only one client initially.
*/
ifp->ntcptarget = 1;
ifp->ntcpcurrent = 0;
ifp->ntcpaccepting = 0;
ifp->ntcpactive = 0;
ifp->nudpdispatch = 0;
ifp->dscp = -1;
@@ -522,9 +523,7 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
*/
(void)isc_socket_filter(ifp->tcpsocket, "dataready");
result = ns_clientmgr_createclients(ifp->clientmgr,
ifp->ntcptarget, ifp,
true);
result = ns_clientmgr_createclients(ifp->clientmgr, 1, ifp, true);
if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"TCP ns_clientmgr_createclients(): %s",
+1
View File
@@ -157,6 +157,7 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig)
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
type = ISC_LOG_TOFILE;
-3
View File
@@ -1423,9 +1423,6 @@ main(int argc, char *argv[]) {
if (strcmp(program_name, "lwresd") == 0)
ns_g_lwresdonly = true;
if (result != ISC_R_SUCCESS)
ns_main_earlyfatal("failed to build internal symbol table");
isc_assertion_setcallback(assertion_failed);
isc_error_setfatal(library_fatal_error);
isc_error_setunexpected(library_unexpected_error);
+24 -26
View File
@@ -10,12 +10,12 @@
.\" Title: named.conf
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\" Date: 2018-06-21
.\" Date: 2019-02-20
.\" Manual: BIND9
.\" Source: ISC
.\" Language: English
.\"
.TH "NAMED\&.CONF" "5" "2018\-06\-21" "ISC" "BIND9"
.TH "NAMED\&.CONF" "5" "2019\-02\-20" "ISC" "BIND9"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -232,9 +232,9 @@ options {
bindkeys\-file \fIquoted_string\fR;
blackhole { \fIaddress_match_element\fR; \&.\&.\&. };
cache\-file \fIquoted_string\fR;
catalog\-zones { zone \fIquoted_string\fR [ default\-masters [ port
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
catalog\-zones { zone \fIstring\fR [ default\-masters [ port \fIinteger\fR ]
[ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [ port
\fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
check\-dup\-records ( fail | warn | ignore );
@@ -418,13 +418,13 @@ options {
require\-server\-cookie \fIboolean\fR;
reserved\-sockets \fIinteger\fR;
resolver\-query\-timeout \fIinteger\fR;
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
max\-policy\-ttl \fIinteger\fR ] [ policy ( cname | disabled | drop |
given | no\-op | nodata | nxdomain | passthru | tcp\-only
\fIquoted_string\fR ) ] [ recursive\-only \fIboolean\fR ]; \&.\&.\&. } [
break\-dnssec \fIboolean\fR ] [ max\-policy\-ttl \fIinteger\fR ] [
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ];
response\-policy { zone \fIstring\fR [ log \fIboolean\fR ] [ max\-policy\-ttl
\fIinteger\fR ] [ policy ( cname | disabled | drop | given | no\-op
| nodata | nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
recursive\-only \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
max\-policy\-ttl \fIinteger\fR ] [ min\-ns\-dots \fIinteger\fR ] [
nsip\-wait\-recurse \fIboolean\fR ] [ qname\-wait\-recurse \fIboolean\fR ]
[ recursive\-only \fIboolean\fR ];
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
root\-key\-sentinel \fIboolean\fR;
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
@@ -578,9 +578,9 @@ view \fIstring\fR [ \fIclass\fR ] {
auth\-nxdomain \fIboolean\fR; // default changed
auto\-dnssec ( allow | maintain | off );
cache\-file \fIquoted_string\fR;
catalog\-zones { zone \fIquoted_string\fR [ default\-masters [ port
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
catalog\-zones { zone \fIstring\fR [ default\-masters [ port \fIinteger\fR ]
[ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [ port
\fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
check\-dup\-records ( fail | warn | ignore );
@@ -734,13 +734,13 @@ view \fIstring\fR [ \fIclass\fR ] {
request\-nsid \fIboolean\fR;
require\-server\-cookie \fIboolean\fR;
resolver\-query\-timeout \fIinteger\fR;
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
max\-policy\-ttl \fIinteger\fR ] [ policy ( cname | disabled | drop |
given | no\-op | nodata | nxdomain | passthru | tcp\-only
\fIquoted_string\fR ) ] [ recursive\-only \fIboolean\fR ]; \&.\&.\&. } [
break\-dnssec \fIboolean\fR ] [ max\-policy\-ttl \fIinteger\fR ] [
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ];
response\-policy { zone \fIstring\fR [ log \fIboolean\fR ] [ max\-policy\-ttl
\fIinteger\fR ] [ policy ( cname | disabled | drop | given | no\-op
| nodata | nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
recursive\-only \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
max\-policy\-ttl \fIinteger\fR ] [ min\-ns\-dots \fIinteger\fR ] [
nsip\-wait\-recurse \fIboolean\fR ] [ qname\-wait\-recurse \fIboolean\fR ]
[ recursive\-only \fIboolean\fR ];
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
root\-key\-sentinel \fIboolean\fR;
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
@@ -875,8 +875,7 @@ view \fIstring\fR [ \fIclass\fR ] {
request\-expire \fIboolean\fR;
request\-ixfr \fIboolean\fR;
serial\-update\-method ( date | increment | unixtime );
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ) [
port \fIinteger\fR ]; \&.\&.\&. };
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ); \&.\&.\&. };
server\-names { \fIquoted_string\fR; \&.\&.\&. };
sig\-signing\-nodes \fIinteger\fR;
sig\-signing\-signatures \fIinteger\fR;
@@ -980,8 +979,7 @@ zone \fIstring\fR [ \fIclass\fR ] {
request\-expire \fIboolean\fR;
request\-ixfr \fIboolean\fR;
serial\-update\-method ( date | increment | unixtime );
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ) [ port
\fIinteger\fR ]; \&.\&.\&. };
server\-addresses { ( \fIipv4_address\fR | \fIipv6_address\fR ); \&.\&.\&. };
server\-names { \fIquoted_string\fR; \&.\&.\&. };
sig\-signing\-nodes \fIinteger\fR;
sig\-signing\-signatures \fIinteger\fR;
+23 -25
View File
@@ -13,7 +13,7 @@
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
<info>
<date>2018-06-21</date>
<date>2019-02-20</date>
</info>
<refentryinfo>
<corpname>ISC</corpname>
@@ -221,9 +221,9 @@ options {
bindkeys-file <replaceable>quoted_string</replaceable>;
blackhole { <replaceable>address_match_element</replaceable>; ... };
cache-file <replaceable>quoted_string</replaceable>;
catalog-zones { zone <replaceable>quoted_string</replaceable> [ default-masters [ port
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
catalog-zones { zone <replaceable>string</replaceable> [ default-masters [ port <replaceable>integer</replaceable> ]
[ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [ port
<replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
check-dup-records ( fail | warn | ignore );
@@ -407,13 +407,13 @@ options {
require-server-cookie <replaceable>boolean</replaceable>;
reserved-sockets <replaceable>integer</replaceable>;
resolver-query-timeout <replaceable>integer</replaceable>;
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
max-policy-ttl <replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop |
given | no-op | nodata | nxdomain | passthru | tcp-only
<replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ]; ... } [
break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>integer</replaceable> ] [
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ];
response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
<replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop | given | no-op
| nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
recursive-only <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
max-policy-ttl <replaceable>integer</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
[ recursive-only <replaceable>boolean</replaceable> ];
root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
root-key-sentinel <replaceable>boolean</replaceable>;
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
@@ -551,9 +551,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
auth-nxdomain <replaceable>boolean</replaceable>; // default changed
auto-dnssec ( allow | maintain | off );
cache-file <replaceable>quoted_string</replaceable>;
catalog-zones { zone <replaceable>quoted_string</replaceable> [ default-masters [ port
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
catalog-zones { zone <replaceable>string</replaceable> [ default-masters [ port <replaceable>integer</replaceable> ]
[ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [ port
<replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
check-dup-records ( fail | warn | ignore );
@@ -707,13 +707,13 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
request-nsid <replaceable>boolean</replaceable>;
require-server-cookie <replaceable>boolean</replaceable>;
resolver-query-timeout <replaceable>integer</replaceable>;
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
max-policy-ttl <replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop |
given | no-op | nodata | nxdomain | passthru | tcp-only
<replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ]; ... } [
break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>integer</replaceable> ] [
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ];
response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
<replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop | given | no-op
| nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
recursive-only <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
max-policy-ttl <replaceable>integer</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
[ recursive-only <replaceable>boolean</replaceable> ];
root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
root-key-sentinel <replaceable>boolean</replaceable>;
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
@@ -848,8 +848,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
request-expire <replaceable>boolean</replaceable>;
request-ixfr <replaceable>boolean</replaceable>;
serial-update-method ( date | increment | unixtime );
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ) [
port <replaceable>integer</replaceable> ]; ... };
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ); ... };
server-names { <replaceable>quoted_string</replaceable>; ... };
sig-signing-nodes <replaceable>integer</replaceable>;
sig-signing-signatures <replaceable>integer</replaceable>;
@@ -949,8 +948,7 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
request-expire <replaceable>boolean</replaceable>;
request-ixfr <replaceable>boolean</replaceable>;
serial-update-method ( date | increment | unixtime );
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ) [ port
<replaceable>integer</replaceable> ]; ... };
server-addresses { ( <replaceable>ipv4_address</replaceable> | <replaceable>ipv6_address</replaceable> ); ... };
server-names { <replaceable>quoted_string</replaceable>; ... };
sig-signing-nodes <replaceable>integer</replaceable>;
sig-signing-signatures <replaceable>integer</replaceable>;
+22 -24
View File
@@ -209,9 +209,9 @@ options
bindkeys-file <em class="replaceable"><code>quoted_string</code></em>;<br>
blackhole { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
cache-file <em class="replaceable"><code>quoted_string</code></em>;<br>
catalog-zones { zone <em class="replaceable"><code>quoted_string</code></em> [ default-masters [ port<br>
    <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<br>
    port <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
catalog-zones { zone <em class="replaceable"><code>string</code></em> [ default-masters [ port <em class="replaceable"><code>integer</code></em> ]<br>
    [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>
    <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
    <em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<br>
    in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ]; ... };<br>
check-dup-records ( fail | warn | ignore );<br>
@@ -395,13 +395,13 @@ options
require-server-cookie <em class="replaceable"><code>boolean</code></em>;<br>
reserved-sockets <em class="replaceable"><code>integer</code></em>;<br>
resolver-query-timeout <em class="replaceable"><code>integer</code></em>;<br>
response-policy { zone <em class="replaceable"><code>quoted_string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [<br>
    max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop |<br>
    given | no-op | nodata | nxdomain | passthru | tcp-only<br>
    <em class="replaceable"><code>quoted_string</code></em> ) ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [<br>
    break-dnssec <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [<br>
    min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [<br>
    qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
response-policy { zone <em class="replaceable"><code>string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl<br>
    <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop | given | no-op<br>
    | nodata | nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
    recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
    max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ min-ns-dots <em class="replaceable"><code>integer</code></em> ] [<br>
    nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ]<br>
    [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
@@ -543,9 +543,9 @@ view
auth-nxdomain <em class="replaceable"><code>boolean</code></em>; // default changed<br>
auto-dnssec ( allow | maintain | off );<br>
cache-file <em class="replaceable"><code>quoted_string</code></em>;<br>
catalog-zones { zone <em class="replaceable"><code>quoted_string</code></em> [ default-masters [ port<br>
    <em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<br>
    port <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
catalog-zones { zone <em class="replaceable"><code>string</code></em> [ default-masters [ port <em class="replaceable"><code>integer</code></em> ]<br>
    [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>
    <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
    <em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<br>
    in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ]; ... };<br>
check-dup-records ( fail | warn | ignore );<br>
@@ -699,13 +699,13 @@ view
request-nsid <em class="replaceable"><code>boolean</code></em>;<br>
require-server-cookie <em class="replaceable"><code>boolean</code></em>;<br>
resolver-query-timeout <em class="replaceable"><code>integer</code></em>;<br>
response-policy { zone <em class="replaceable"><code>quoted_string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [<br>
    max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop |<br>
    given | no-op | nodata | nxdomain | passthru | tcp-only<br>
    <em class="replaceable"><code>quoted_string</code></em> ) ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [<br>
    break-dnssec <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [<br>
    min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [<br>
    qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
response-policy { zone <em class="replaceable"><code>string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl<br>
    <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop | given | no-op<br>
    | nodata | nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
    recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
    max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ min-ns-dots <em class="replaceable"><code>integer</code></em> ] [<br>
    nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ]<br>
    [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
@@ -840,8 +840,7 @@ view
request-expire <em class="replaceable"><code>boolean</code></em>;<br>
request-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
serial-update-method ( date | increment | unixtime );<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ) [<br>
    port <em class="replaceable"><code>integer</code></em> ]; ... };<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ); ... };<br>
server-names { <em class="replaceable"><code>quoted_string</code></em>; ... };<br>
sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br>
@@ -942,8 +941,7 @@ zone
request-expire <em class="replaceable"><code>boolean</code></em>;<br>
request-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
serial-update-method ( date | increment | unixtime );<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ) [ port<br>
    <em class="replaceable"><code>integer</code></em> ]; ... };<br>
server-addresses { ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> ); ... };<br>
server-names { <em class="replaceable"><code>quoted_string</code></em>; ... };<br>
sig-signing-nodes <em class="replaceable"><code>integer</code></em>;<br>
sig-signing-signatures <em class="replaceable"><code>integer</code></em>;<br>
+81 -58
View File
@@ -979,12 +979,15 @@ rpz_log_rewrite(ns_client_t *client, bool disabled,
dns_zone_t *p_zone, dns_name_t *p_name,
dns_name_t *cname, dns_rpz_num_t rpz_num)
{
isc_stats_t *zonestats;
char qname_buf[DNS_NAME_FORMATSIZE];
char p_name_buf[DNS_NAME_FORMATSIZE];
char cname_buf[DNS_NAME_FORMATSIZE] = { 0 };
char p_name_buf[DNS_NAME_FORMATSIZE];
char qname_buf[DNS_NAME_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
const char *s1 = cname_buf, *s2 = cname_buf;
dns_rdataset_t *rdataset;
dns_rpz_st_t *st;
isc_stats_t *zonestats;
/*
* Count enabled rewrites in the global counter.
@@ -1016,11 +1019,29 @@ rpz_log_rewrite(ns_client_t *client, bool disabled,
s2 = ")";
}
/*
* Log Qclass and Qtype in addition to existing
* fields.
*/
rdataset = ISC_LIST_HEAD(client->query.origqname->list);
INSIST(rdataset != NULL);
dns_rdataclass_format(rdataset->rdclass, classbuf, sizeof(classbuf));
dns_rdatatype_format(rdataset->type, typebuf, sizeof(typebuf));
ns_client_log(client, DNS_LOGCATEGORY_RPZ, NS_LOGMODULE_QUERY,
DNS_RPZ_INFO_LEVEL, "%srpz %s %s rewrite %s via %s%s%s%s",
DNS_RPZ_INFO_LEVEL,
#ifdef RPZ_LOG_QTYPE_QCLASS
"%srpz %s %s rewrite %s/%s/%s via %s%s%s%s",
#else /* RPZ_LOG_QTYPE_QCLASS */
"%srpz %s %s rewrite %s via %s%s%s%s",
#endif /* RPZ_LOG_QTYPE_QCLASS */
disabled ? "disabled " : "",
dns_rpz_type2str(type), dns_rpz_policy2str(policy),
qname_buf, p_name_buf, s1, cname_buf, s2);
qname_buf,
#ifdef RPZ_LOG_QTYPE_QCLASS
typebuf, classbuf,
#endif /* RPZ_LOG_QTYPE_QCLASS */
p_name_buf, s1, cname_buf, s2);
}
static void
@@ -2879,8 +2900,7 @@ query_addsoa(ns_client_t *client, dns_db_t *db, dns_dbversion_t *version,
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdataset_current(rdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &soa, NULL);
if (result != ISC_R_SUCCESS)
goto cleanup;
RUNTIME_CHECK(result == ISC_R_SUCCESS);
if (override_ttl != UINT32_MAX &&
override_ttl < rdataset->ttl) {
@@ -3291,8 +3311,7 @@ validate(ns_client_t *client, dns_db_t *db, dns_name_t *name,
dns_rdata_reset(&rdata);
dns_rdataset_current(sigrdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &rrsig, NULL);
if (result != ISC_R_SUCCESS)
return (false);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
if (!dns_resolver_algorithm_supported(client->view->resolver,
name, rrsig.algorithm))
continue;
@@ -3858,8 +3877,7 @@ query_addwildcardproof(ns_client_t *client, dns_db_t *db,
if (result == ISC_R_SUCCESS) {
dns_rdataset_current(rdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &nsec, NULL);
}
if (result == ISC_R_SUCCESS) {
RUNTIME_CHECK(result == ISC_R_SUCCESS);
(void)dns_name_fullcompare(name, fname, &order,
&olabels);
(void)dns_name_fullcompare(name, &nsec.next, &order,
@@ -3939,8 +3957,7 @@ query_addnxrrsetnsec(ns_client_t *client, dns_db_t *db,
dns_rdata_init(&sigrdata);
dns_rdataset_current(sigrdataset, &sigrdata);
result = dns_rdata_tostruct(&sigrdata, &sig, NULL);
if (result != ISC_R_SUCCESS)
return;
RUNTIME_CHECK(result == ISC_R_SUCCESS);
labels = dns_name_countlabels(name);
if ((unsigned int)sig.labels + 1 >= labels)
@@ -4475,6 +4492,7 @@ rpz_get_zbits(ns_client_t *client,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
break;
}
@@ -4699,6 +4717,7 @@ rpz_get_p_name(ns_client_t *client, dns_name_t *p_name,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
/*
@@ -5717,14 +5736,8 @@ rpz_rewrite(ns_client_t *client, dns_rdatatype_t qtype,
dns_rdataset_current(st->r.ns_rdataset, &nsrdata);
result = dns_rdata_tostruct(&nsrdata, &ns, NULL);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdata_reset(&nsrdata);
if (result != ISC_R_SUCCESS) {
rpz_log_fail(client, DNS_RPZ_ERROR_LEVEL,
nsname, DNS_RPZ_TYPE_NSIP,
" rdata_tostruct()", result);
st->m.policy = DNS_RPZ_POLICY_ERROR;
goto cleanup;
}
/*
* Do nothing about "NS ."
*/
@@ -6019,6 +6032,7 @@ setup_query_sortlist(ns_client_t *client) {
break;
default:
INSIST(0);
ISC_UNREACHABLE();
break;
}
dns_message_setsortorder(client->message, order, order_arg);
@@ -6271,7 +6285,8 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
result = dns_rdataset_first(rdataset);
INSIST(result == ISC_R_SUCCESS);
dns_rdataset_current(rdataset, &rdata);
dns_rdata_tostruct(&rdata, &nsec3, NULL);
result = dns_rdata_tostruct(&rdata, &nsec3, NULL);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdata_reset(&rdata);
optout = (nsec3.flags & DNS_NSEC3FLAG_OPTOUT);
if (found != NULL && optout &&
@@ -7018,17 +7033,17 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
{
if (isc_log_wouldlog(ns_g_lctx, ISC_LOG_DEBUG(1))) {
char namebuf[DNS_NAME_FORMATSIZE];
char typename[DNS_RDATATYPE_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
dns_name_format(client->query.qname,
namebuf, sizeof(namebuf));
dns_rdatatype_format(qtype, typename,
sizeof(typename));
dns_rdatatype_format(qtype, typebuf,
sizeof(typebuf));
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
NS_LOGMODULE_QUERY,
ISC_LOG_DEBUG(1),
"servfail cache hit %s/%s (%s)",
namebuf, typename,
namebuf, typebuf,
((flags & NS_FAILCACHE_CD) != 0)
? "CD=1"
: "CD=0");
@@ -7056,22 +7071,35 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
need_wildcardproof = false;
rpz = false;
/*
* If we require a server cookie then send back BADCOOKIE
* before we have done too much work.
*/
if (!TCP(client) && client->view->requireservercookie &&
WANTCOOKIE(client) && !HAVECOOKIE(client))
{
client->message->flags &= ~DNS_MESSAGEFLAG_AA;
client->message->flags &= ~DNS_MESSAGEFLAG_AD;
client->message->rcode = dns_rcode_badcookie;
goto cleanup;
}
if (client->view->checknames &&
!dns_rdata_checkowner(client->query.qname,
client->message->rdclass,
qtype, false)) {
char namebuf[DNS_NAME_FORMATSIZE];
char typename[DNS_RDATATYPE_FORMATSIZE];
char classname[DNS_RDATACLASS_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
dns_name_format(client->query.qname, namebuf, sizeof(namebuf));
dns_rdatatype_format(qtype, typename, sizeof(typename));
dns_rdataclass_format(client->message->rdclass, classname,
sizeof(classname));
dns_rdatatype_format(qtype, typebuf, sizeof(typebuf));
dns_rdataclass_format(client->message->rdclass, classbuf,
sizeof(classbuf));
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
NS_LOGMODULE_QUERY, ISC_LOG_ERROR,
"check-names failure %s/%s/%s", namebuf,
typename, classname);
typebuf, classbuf);
QUERY_ERROR(DNS_R_REFUSED);
goto cleanup;
}
@@ -8432,11 +8460,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
}
dns_rdataset_current(trdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &cname, NULL);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdata_reset(&rdata);
if (result != ISC_R_SUCCESS) {
dns_message_puttempname(client->message, &tname);
goto cleanup;
}
dns_name_init(tname, NULL);
result = dns_name_dup(&cname.cname, client->mctx, tname);
if (result != ISC_R_SUCCESS) {
@@ -8503,11 +8528,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
}
dns_rdataset_current(trdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &dname, NULL);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdata_reset(&rdata);
if (result != ISC_R_SUCCESS) {
dns_message_puttempname(client->message, &tname);
goto cleanup;
}
dns_name_clone(&dname.dname, tname);
dns_rdata_freestruct(&dname);
/*
@@ -9239,7 +9261,7 @@ static inline void
log_tat(ns_client_t *client) {
char namebuf[DNS_NAME_FORMATSIZE];
char clientbuf[ISC_NETADDR_FORMATSIZE];
char classname[DNS_RDATACLASS_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
isc_netaddr_t netaddr;
char *tags = NULL;
size_t taglen = 0;
@@ -9259,8 +9281,8 @@ log_tat(ns_client_t *client) {
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
dns_name_format(client->query.qname, namebuf, sizeof(namebuf));
isc_netaddr_format(&netaddr, clientbuf, sizeof(clientbuf));
dns_rdataclass_format(client->view->rdclass, classname,
sizeof(classname));
dns_rdataclass_format(client->view->rdclass, classbuf,
sizeof(classbuf));
if (client->query.qtype == dns_rdatatype_dnskey) {
uint16_t keytags = client->keytag_len / 2;
@@ -9289,7 +9311,7 @@ log_tat(ns_client_t *client) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_TAT, NS_LOGMODULE_QUERY,
ISC_LOG_INFO, "trust-anchor-telemetry '%s/%s' from %s%s",
namebuf, classname, clientbuf, tags != NULL? tags : "");
namebuf, classbuf, clientbuf, tags != NULL? tags : "");
if (tags != NULL) {
isc_mem_put(client->mctx, tags, taglen);
}
@@ -9298,8 +9320,8 @@ log_tat(ns_client_t *client) {
static inline void
log_query(ns_client_t *client, unsigned int flags, unsigned int extflags) {
char namebuf[DNS_NAME_FORMATSIZE];
char typename[DNS_RDATATYPE_FORMATSIZE];
char classname[DNS_RDATACLASS_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
char onbuf[ISC_NETADDR_FORMATSIZE];
char ednsbuf[sizeof("E(65535)")] = { 0 };
dns_rdataset_t *rdataset;
@@ -9311,8 +9333,8 @@ log_query(ns_client_t *client, unsigned int flags, unsigned int extflags) {
rdataset = ISC_LIST_HEAD(client->query.qname->list);
INSIST(rdataset != NULL);
dns_name_format(client->query.qname, namebuf, sizeof(namebuf));
dns_rdataclass_format(rdataset->rdclass, classname, sizeof(classname));
dns_rdatatype_format(rdataset->type, typename, sizeof(typename));
dns_rdataclass_format(rdataset->rdclass, classbuf, sizeof(classbuf));
dns_rdatatype_format(rdataset->type, typebuf, sizeof(typebuf));
isc_netaddr_format(&client->destaddr, onbuf, sizeof(onbuf));
if (client->ednsversion >= 0)
@@ -9321,7 +9343,7 @@ log_query(ns_client_t *client, unsigned int flags, unsigned int extflags) {
ns_client_log(client, NS_LOGCATEGORY_QUERIES, NS_LOGMODULE_QUERY,
level, "query: %s %s %s %s%s%s%s%s%s%s (%s)", namebuf,
classname, typename, WANTRECURSION(client) ? "+" : "-",
classbuf, typebuf, WANTRECURSION(client) ? "+" : "-",
(client->signer != NULL) ? "S" : "", ednsbuf,
TCP(client) ? "T" : "",
((extflags & DNS_MESSAGEEXTFLAG_DO) != 0) ? "D" : "",
@@ -9333,8 +9355,8 @@ log_query(ns_client_t *client, unsigned int flags, unsigned int extflags) {
static inline void
log_queryerror(ns_client_t *client, isc_result_t result, int line, int level) {
char namebuf[DNS_NAME_FORMATSIZE];
char typename[DNS_RDATATYPE_FORMATSIZE];
char classname[DNS_RDATACLASS_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
const char *namep, *typep, *classp, *sep1, *sep2;
dns_rdataset_t *rdataset;
@@ -9356,12 +9378,12 @@ log_queryerror(ns_client_t *client, isc_result_t result, int line, int level) {
rdataset = ISC_LIST_HEAD(client->query.origqname->list);
if (rdataset != NULL) {
dns_rdataclass_format(rdataset->rdclass, classname,
sizeof(classname));
classp = classname;
dns_rdatatype_format(rdataset->type, typename,
sizeof(typename));
typep = typename;
dns_rdataclass_format(rdataset->rdclass, classbuf,
sizeof(classbuf));
classp = classbuf;
dns_rdatatype_format(rdataset->type, typebuf,
sizeof(typebuf));
typep = typebuf;
sep2 = "/";
}
}
@@ -9561,7 +9583,7 @@ ns_query_start(ns_client_t *client) {
* We don't need to set DNS_DBFIND_PENDINGOK when validation is
* disabled as there will be no pending data.
*/
if (message->flags & DNS_MESSAGEFLAG_CD ||
if ((message->flags & DNS_MESSAGEFLAG_CD) != 0 ||
qtype == dns_rdatatype_rrsig)
{
client->query.dboptions |= DNS_DBFIND_PENDINGOK;
@@ -9573,8 +9595,9 @@ ns_query_start(ns_client_t *client) {
* Allow glue NS records to be added to the authority section
* if the answer is secure.
*/
if (message->flags & DNS_MESSAGEFLAG_CD)
if ((message->flags & DNS_MESSAGEFLAG_CD) != 0) {
client->query.attributes &= ~NS_QUERYATTR_SECURE;
}
/*
* Set NS_CLIENTATTR_WANTAD if the client has set AD in the query.
+184 -91
View File
@@ -303,6 +303,13 @@ typedef struct catz_chgzone_event {
bool mod;
} catz_chgzone_event_t;
typedef struct {
unsigned int magic;
#define DZARG_MAGIC ISC_MAGIC('D', 'z', 'a', 'r')
isc_buffer_t **text;
isc_result_t result;
} ns_dzarg_t;
/*
* These zones should not leak onto the Internet.
*/
@@ -1148,6 +1155,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, int af,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
sa = *(cfg_obj_assockaddr(obj));
@@ -1169,6 +1177,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, int af,
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
if (result != ISC_R_SUCCESS)
return (ISC_R_SUCCESS);
@@ -1276,18 +1285,20 @@ configure_order(dns_order_t *order, const cfg_obj_t *ent) {
obj = cfg_tuple_get(ent, "ordering");
INSIST(cfg_obj_isstring(obj));
str = cfg_obj_asstring(obj);
if (!strcasecmp(str, "fixed"))
if (!strcasecmp(str, "fixed")) {
#if DNS_RDATASET_FIXED
mode = DNS_RDATASETATTR_FIXEDORDER;
#else
mode = 0;
#endif /* DNS_RDATASET_FIXED */
else if (!strcasecmp(str, "random"))
} else if (!strcasecmp(str, "random")) {
mode = DNS_RDATASETATTR_RANDOMIZE;
else if (!strcasecmp(str, "cyclic"))
} else if (!strcasecmp(str, "cyclic")) {
mode = 0;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
/*
* "*" should match everything including the root (BIND 8 compat).
@@ -1401,14 +1412,16 @@ configure_peer(const cfg_obj_t *cpeer, isc_mem_t *mctx, dns_peer_t **peerp) {
(void)cfg_map_get(cpeer, "transfer-format", &obj);
if (obj != NULL) {
str = cfg_obj_asstring(obj);
if (strcasecmp(str, "many-answers") == 0)
if (strcasecmp(str, "many-answers") == 0) {
CHECK(dns_peer_settransferformat(peer,
dns_many_answers));
else if (strcasecmp(str, "one-answer") == 0)
} else if (strcasecmp(str, "one-answer") == 0) {
CHECK(dns_peer_settransferformat(peer,
dns_one_answer));
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
@@ -2181,7 +2194,15 @@ catz_addmodzone_taskaction(isc_task_t *task, isc_event_t *event0) {
}
} else {
if (result != ISC_R_NOTFOUND && result != DNS_R_PARTIALMATCH) {
if (result == ISC_R_SUCCESS) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER, ISC_LOG_INFO,
"catz: zone \"%s\" is overridden "
"by explicitly configured zone",
nameb);
goto cleanup;
} else if (result != ISC_R_NOTFOUND &&
result != DNS_R_PARTIALMATCH) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
"catz: error \"%s\" while trying to "
@@ -2361,7 +2382,7 @@ catz_create_chg_task(dns_catz_entry_t *entry, dns_catz_zone_t *origin,
catz_chgzone_event_t *event;
isc_task_t *task;
isc_result_t result;
isc_taskaction_t action;
isc_taskaction_t action = NULL;
switch (type) {
case DNS_EVENT_CATZADDZONE:
@@ -3561,8 +3582,10 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
view->checknames = false;
} else if (strcasecmp(str, "ignore") == 0) {
view->checknames = false;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
obj = NULL;
result = ns_config_get(maps, "zero-no-soa-ttl-cache", &obj);
@@ -3920,14 +3943,16 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
obj2 = cfg_tuple_get(obj, "response");
if (!cfg_obj_isvoid(obj2)) {
const char *resp = cfg_obj_asstring(obj2);
isc_result_t r;
isc_result_t r = DNS_R_SERVFAIL;
if (strcasecmp(resp, "drop") == 0)
if (strcasecmp(resp, "drop") == 0) {
r = DNS_R_DROP;
else if (strcasecmp(resp, "fail") == 0)
} else if (strcasecmp(resp, "fail") == 0) {
r = DNS_R_SERVFAIL;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_resolver_setquotaresponse(view->resolver,
dns_quotatype_server, r);
@@ -4234,20 +4259,24 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
view->minimalresponses = dns_minimal_noauth;
} else if (strcasecmp(str, "no-auth-recursive") == 0) {
view->minimalresponses = dns_minimal_noauthrec;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
result = ns_config_get(maps, "transfer-format", &obj);
INSIST(result == ISC_R_SUCCESS);
str = cfg_obj_asstring(obj);
if (strcasecmp(str, "many-answers") == 0)
if (strcasecmp(str, "many-answers") == 0) {
view->transfer_format = dns_many_answers;
else if (strcasecmp(str, "one-answer") == 0)
} else if (strcasecmp(str, "one-answer") == 0) {
view->transfer_format = dns_one_answer;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
obj = NULL;
result = ns_config_get(maps, "trust-anchor-telemetry", &obj);
@@ -4524,14 +4553,16 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
obj2 = cfg_tuple_get(obj, "response");
if (!cfg_obj_isvoid(obj2)) {
const char *resp = cfg_obj_asstring(obj2);
isc_result_t r;
isc_result_t r = DNS_R_SERVFAIL;
if (strcasecmp(resp, "drop") == 0)
if (strcasecmp(resp, "drop") == 0) {
r = DNS_R_DROP;
else if (strcasecmp(resp, "fail") == 0)
} else if (strcasecmp(resp, "fail") == 0) {
r = DNS_R_SERVFAIL;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_resolver_setquotaresponse(view->resolver,
dns_quotatype_zone, r);
@@ -4548,10 +4579,12 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
view->v4_aaaa = dns_aaaa_ok;
} else {
const char *v4_aaaastr = cfg_obj_asstring(obj);
if (strcasecmp(v4_aaaastr, "break-dnssec") == 0)
if (strcasecmp(v4_aaaastr, "break-dnssec") == 0) {
view->v4_aaaa = dns_aaaa_break_dnssec;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
@@ -4564,10 +4597,12 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
view->v6_aaaa = dns_aaaa_ok;
} else {
const char *v6_aaaastr = cfg_obj_asstring(obj);
if (strcasecmp(v6_aaaastr, "break-dnssec") == 0)
if (strcasecmp(v6_aaaastr, "break-dnssec") == 0) {
view->v6_aaaa = dns_aaaa_break_dnssec;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
CHECK(configure_view_acl(vconfig, config, ns_g_config,
@@ -4775,7 +4810,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
const char *empty_dbtype[4] =
{ "_builtin", "empty", NULL, NULL };
int empty_dbtypec = 4;
dns_zonestat_level_t statlevel;
dns_zonestat_level_t statlevel = dns_zonestat_none;
name = dns_fixedname_initname(&fixed);
@@ -4813,14 +4848,16 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
statlevel = dns_zonestat_none;
} else {
const char *levelstr = cfg_obj_asstring(obj);
if (strcasecmp(levelstr, "full") == 0)
if (strcasecmp(levelstr, "full") == 0) {
statlevel = dns_zonestat_full;
else if (strcasecmp(levelstr, "terse") == 0)
} else if (strcasecmp(levelstr, "terse") == 0) {
statlevel = dns_zonestat_terse;
else if (strcasecmp(levelstr, "none") == 0)
} else if (strcasecmp(levelstr, "none") == 0) {
statlevel = dns_zonestat_none;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
for (empty = empty_zones[empty_zone];
@@ -5139,16 +5176,18 @@ configure_forward(const cfg_obj_t *config, dns_view_t *view, dns_name_t *origin,
"forwarding");
fwdpolicy = dns_fwdpolicy_none;
} else {
if (forwardtype == NULL)
if (forwardtype == NULL) {
fwdpolicy = dns_fwdpolicy_first;
else {
} else {
const char *forwardstr = cfg_obj_asstring(forwardtype);
if (strcasecmp(forwardstr, "first") == 0)
if (strcasecmp(forwardstr, "first") == 0) {
fwdpolicy = dns_fwdpolicy_first;
else if (strcasecmp(forwardstr, "only") == 0)
} else if (strcasecmp(forwardstr, "only") == 0) {
fwdpolicy = dns_fwdpolicy_only;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
}
@@ -7025,11 +7064,11 @@ data_to_cfg(dns_view_t *view, MDB_val *key, MDB_val *data,
goto cleanup;
}
putstr(text, "zone ");
putmem(text, (const void *) zone_name, zone_name_len);
putstr(text, " ");
putmem(text, (const void *) zone_config, zone_config_len);
putstr(text, ";\n");
CHECK(putstr(text, "zone "));
CHECK(putmem(text, (const void *) zone_name, zone_name_len));
CHECK(putstr(text, " "));
CHECK(putmem(text, (const void *) zone_config, zone_config_len));
CHECK(putstr(text, ";\n"));
cfg_parser_reset(ns_g_addparser);
result = cfg_parse_buffer3(ns_g_addparser, *text, zone_name, 0,
@@ -8358,7 +8397,8 @@ load_configuration(const char *filename, ns_server_t *server,
cfg_map_get(options, "memstatistics", &obj) == ISC_R_SUCCESS) {
ns_g_memstatistics = cfg_obj_asboolean(obj);
} else {
ns_g_memstatistics = (isc_mem_debugging & ISC_MEM_DEBUGRECORD);
ns_g_memstatistics =
((isc_mem_debugging & ISC_MEM_DEBUGRECORD) != 0);
}
obj = NULL;
@@ -8449,6 +8489,7 @@ load_configuration(const char *filename, ns_server_t *server,
server->cookiealg = ns_cookiealg_aes;
#else
INSIST(0);
ISC_UNREACHABLE();
#endif
} else if (strcasecmp(cfg_obj_asstring(obj), "sha1") == 0) {
server->cookiealg = ns_cookiealg_sha1;
@@ -8456,6 +8497,7 @@ load_configuration(const char *filename, ns_server_t *server,
server->cookiealg = ns_cookiealg_sha256;
} else {
INSIST(0);
ISC_UNREACHABLE();
}
obj = NULL;
@@ -10214,10 +10256,10 @@ ns_server_dumpdb(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
}
if (ptr != NULL) {
if (!found) {
putstr(text, "view '");
putstr(text, ptr);
putstr(text, "' not found");
putnull(text);
CHECK(putstr(text, "view '"));
CHECK(putstr(text, ptr));
CHECK(putstr(text, "' not found"));
CHECK(putnull(text));
result = ISC_R_NOTFOUND;
dumpdone(dctx, result);
return (result);
@@ -11501,9 +11543,15 @@ nzd_setkey(MDB_val *key, dns_name_t *name, char *namebuf, size_t buflen) {
static void
dumpzone(void *arg, const char *buf, int len) {
isc_buffer_t **text = arg;
ns_dzarg_t *dzarg = arg;
isc_result_t result;
putmem(text, buf, len);
REQUIRE(dzarg != NULL && ISC_MAGIC_VALID(dzarg, DZARG_MAGIC));
result = putmem(dzarg->text, buf, len);
if (result != ISC_R_SUCCESS && dzarg->result == ISC_R_SUCCESS) {
dzarg->result = result;
}
}
static isc_result_t
@@ -11517,6 +11565,7 @@ nzd_save(MDB_txn **txnp, MDB_dbi dbi, dns_zone_t *zone,
isc_buffer_t *text = NULL;
char namebuf[1024];
MDB_val key, data;
ns_dzarg_t dzarg;
view = dns_zone_getview(zone);
@@ -11568,7 +11617,21 @@ nzd_save(MDB_txn **txnp, MDB_dbi dbi, dns_zone_t *zone,
goto cleanup;
}
cfg_printx(zoptions, CFG_PRINTER_ONELINE, dumpzone, &text);
dzarg.magic = DZARG_MAGIC;
dzarg.text = &text;
dzarg.result = ISC_R_SUCCESS;
cfg_printx(zoptions, CFG_PRINTER_ONELINE, dumpzone, &dzarg);
if (dzarg.result != ISC_R_SUCCESS) {
isc_log_write(ns_g_lctx,
NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER,
ISC_LOG_ERROR,
"Error writing zone config to "
"buffer in nzd_save(): %s",
isc_result_totext(result));
result = dzarg.result;
goto cleanup;
}
data.mv_data = isc_buffer_base(text);
data.mv_size = isc_buffer_usedlength(text);
@@ -11847,6 +11910,7 @@ migrate_nzf(dns_view_t *view) {
MDB_txn *txn = NULL;
MDB_dbi dbi;
MDB_val key, data;
ns_dzarg_t dzarg;
/*
* If NZF file doesn't exist, or NZD DB exists and already
@@ -11936,7 +12000,21 @@ migrate_nzf(dns_view_t *view) {
}
isc_buffer_clear(text);
cfg_printx(zoptions, CFG_PRINTER_ONELINE, dumpzone, &text);
dzarg.magic = DZARG_MAGIC;
dzarg.text = &text;
dzarg.result = ISC_R_SUCCESS;
cfg_printx(zoptions, CFG_PRINTER_ONELINE, dumpzone, &dzarg);
if (dzarg.result != ISC_R_SUCCESS) {
isc_log_write(ns_g_lctx,
NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER,
ISC_LOG_ERROR,
"Error writing zone config to "
"buffer in migrate_nzf(): %s",
isc_result_totext(result));
result = dzarg.result;
goto cleanup;
}
data.mv_data = isc_buffer_base(text);
data.mv_size = isc_buffer_usedlength(text);
@@ -12005,7 +12083,7 @@ newzone_parse(ns_server_t *server, char *command, dns_view_t **viewp,
const char *viewname = NULL;
dns_rdataclass_t rdclass;
dns_view_t *view = NULL;
const char *bn;
const char *bn = NULL;
REQUIRE(viewp != NULL && *viewp == NULL);
REQUIRE(zoneobjp != NULL && *zoneobjp == NULL);
@@ -12015,12 +12093,14 @@ newzone_parse(ns_server_t *server, char *command, dns_view_t **viewp,
isc_buffer_init(&argbuf, command, (unsigned int) strlen(command));
isc_buffer_add(&argbuf, strlen(command));
if (strncasecmp(command, "add", 3) == 0)
if (strncasecmp(command, "add", 3) == 0) {
bn = "addzone";
else if (strncasecmp(command, "mod", 3) == 0)
} else if (strncasecmp(command, "mod", 3) == 0) {
bn = "modzone";
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
/*
* Convert the "addzone" or "modzone" to just "zone", for
@@ -12978,8 +13058,14 @@ find_name_in_list_from_map(const cfg_obj_t *config,
static void
emitzone(void *arg, const char *buf, int len) {
isc_buffer_t **tpp = arg;
putmem(tpp, buf, len);
ns_dzarg_t *dzarg = arg;
isc_result_t result;
REQUIRE(dzarg != NULL && ISC_MAGIC_VALID(dzarg, DZARG_MAGIC));
result = putmem(dzarg->text, buf, len);
if (result != ISC_R_SUCCESS && dzarg->result == ISC_R_SUCCESS) {
dzarg->result = result;
}
}
/*
@@ -12998,6 +13084,7 @@ ns_server_showzone(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
#ifdef HAVE_LMDB
cfg_obj_t *nzconfig = NULL;
#endif /* HAVE_LMDB */
ns_dzarg_t dzarg;
/* Parse parameters */
CHECK(zone_from_args(server, lex, NULL, &zone, zonename,
@@ -13050,9 +13137,14 @@ ns_server_showzone(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
if (zconfig == NULL)
CHECK(ISC_R_NOTFOUND);
putstr(text, "zone ");
cfg_printx(zconfig, CFG_PRINTER_ONELINE, emitzone, text);
putstr(text, ";");
CHECK(putstr(text, "zone "));
dzarg.magic = DZARG_MAGIC;
dzarg.text = text;
dzarg.result = ISC_R_SUCCESS;
cfg_printx(zconfig, CFG_PRINTER_ONELINE, emitzone, &dzarg);
CHECK(dzarg.result);
CHECK(putstr(text, ";"));
result = ISC_R_SUCCESS;
@@ -13442,8 +13534,8 @@ ns_server_zonestatus(ns_server_t *server, isc_lex_t *lex,
/* Security */
secure = dns_db_issecure(db);
allow = (dns_zone_getkeyopts(zone) & DNS_ZONEKEY_ALLOW);
maintain = (dns_zone_getkeyopts(zone) & DNS_ZONEKEY_MAINTAIN);
allow = ((dns_zone_getkeyopts(zone) & DNS_ZONEKEY_ALLOW) != 0);
maintain = ((dns_zone_getkeyopts(zone) & DNS_ZONEKEY_MAINTAIN) != 0);
/* Master files */
file = dns_zone_getfile(mayberaw);
@@ -13888,7 +13980,7 @@ ns_server_nta(ns_server_t *server, isc_lex_t *lex, bool readonly,
}
}
CHECK(putnull(text));
(void) putnull(text);
cleanup:
if (msg != NULL) {
@@ -14030,7 +14122,7 @@ mkey_dumpzone(dns_view_t *view, isc_buffer_t **text) {
snprintf(buf, sizeof(buf), "\n\talgorithm: %s", alg);
CHECK(putstr(text, buf));
revoked = (kd.flags & DNS_KEYFLAG_REVOKE);
revoked = ((kd.flags & DNS_KEYFLAG_REVOKE) != 0);
snprintf(buf, sizeof(buf), "\n\tflags:%s%s%s",
revoked ? " REVOKE" : "",
((kd.flags & DNS_KEYFLAG_KSK) != 0)
@@ -14122,21 +14214,23 @@ ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
/* Skip rndc command name */
cmd = next_token(lex, text);
if (cmd == NULL)
if (cmd == NULL) {
return (ISC_R_UNEXPECTEDEND);
}
/* Get managed-keys subcommand */
cmd = next_token(lex, text);
if (cmd == NULL)
if (cmd == NULL) {
return (ISC_R_UNEXPECTEDEND);
}
if (strcasecmp(cmd, "status") == 0)
if (strcasecmp(cmd, "status") == 0) {
opt = STATUS;
else if (strcasecmp(cmd, "refresh") == 0)
} else if (strcasecmp(cmd, "refresh") == 0) {
opt = REFRESH;
else if (strcasecmp(cmd, "sync") == 0)
} else if (strcasecmp(cmd, "sync") == 0) {
opt = SYNC;
else {
} else {
snprintf(msg, sizeof(msg), "unknown command '%s'", cmd);
(void) putstr(text, msg);
result = ISC_R_UNEXPECTED;
@@ -14146,29 +14240,17 @@ ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
/* Look for the optional class name. */
classtxt = next_token(lex, text);
if (classtxt != NULL) {
/* Look for the optional view name. */
viewtxt = next_token(lex, text);
}
if (classtxt == NULL) {
rdclass = dns_rdataclass_in;
} else {
isc_textregion_t r;
r.base = classtxt;
r.length = strlen(classtxt);
result = dns_rdataclass_fromtext(&rdclass, &r);
if (result != ISC_R_SUCCESS) {
if (viewtxt == NULL) {
rdclass = dns_rdataclass_in;
viewtxt = classtxt;
result = ISC_R_SUCCESS;
} else {
snprintf(msg, sizeof(msg),
"unknown class '%s'", classtxt);
(void) putstr(text, msg);
goto cleanup;
}
snprintf(msg, sizeof(msg),
"unknown class '%s'", classtxt);
(void) putstr(text, msg);
goto cleanup;
}
viewtxt = next_token(lex, text);
}
for (view = ISC_LIST_HEAD(server->viewlist);
@@ -14178,7 +14260,9 @@ ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
if (viewtxt != NULL &&
(rdclass != view->rdclass ||
strcmp(view->name, viewtxt) != 0))
{
continue;
}
if (view->managed_keys == NULL) {
if (viewtxt != NULL) {
@@ -14186,35 +14270,44 @@ ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
"view '%s': no managed keys", viewtxt);
CHECK(putstr(text, msg));
goto cleanup;
} else
} else {
continue;
}
}
found = true;
switch (opt) {
case REFRESH:
if (!first) {
CHECK(putstr(text, "\n"));
}
CHECK(mkey_refresh(view, text));
break;
case STATUS:
if (!first)
if (!first) {
CHECK(putstr(text, "\n\n"));
}
CHECK(mkey_status(view, text));
first = false;
break;
case SYNC:
CHECK(dns_zone_flush(view->managed_keys));
break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
if (viewtxt != NULL)
if (viewtxt != NULL) {
break;
}
first = false;
}
if (!found)
if (!found) {
CHECK(putstr(text, "no views with managed keys"));
}
cleanup:
if (isc_buffer_usedlength(*text) > 0)
+1 -1
View File
@@ -259,7 +259,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
/* Open the library */
dlopen_flags = RTLD_NOW|RTLD_GLOBAL;
#ifdef RTLD_DEEPBIND
#if defined(RTLD_DEEPBIND) && !__SANITIZE_ADDRESS__
/*
* If RTLD_DEEPBIND is available then use it. This can avoid
* issues with a module using a different version of a system
+24 -12
View File
@@ -267,24 +267,34 @@ update_log(ns_client_t *client, dns_zone_t *zone,
char namebuf[DNS_NAME_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
if (client == NULL || zone == NULL)
if (client == NULL) {
return;
}
if (isc_log_wouldlog(ns_g_lctx, level) == false)
if (isc_log_wouldlog(ns_g_lctx, level) == false) {
return;
dns_name_format(dns_zone_getorigin(zone), namebuf,
sizeof(namebuf));
dns_rdataclass_format(dns_zone_getclass(zone), classbuf,
sizeof(classbuf));
}
va_start(ap, fmt);
vsnprintf(message, sizeof(message), fmt, ap);
va_end(ap);
ns_client_log(client, NS_LOGCATEGORY_UPDATE, NS_LOGMODULE_UPDATE,
level, "updating zone '%s/%s': %s",
namebuf, classbuf, message);
if (zone != NULL) {
dns_name_format(dns_zone_getorigin(zone), namebuf,
sizeof(namebuf));
dns_rdataclass_format(dns_zone_getclass(zone), classbuf,
sizeof(classbuf));
ns_client_log(client, NS_LOGCATEGORY_UPDATE,
NS_LOGMODULE_UPDATE,
level, "updating zone '%s/%s': %s",
namebuf, classbuf, message);
} else {
ns_client_log(client, NS_LOGCATEGORY_UPDATE,
NS_LOGMODULE_UPDATE,
level, "%s", message);
}
}
static void
@@ -786,8 +796,10 @@ static isc_result_t
cname_compatibility_action(void *data, dns_rdataset_t *rrset) {
UNUSED(data);
if (rrset->type != dns_rdatatype_cname &&
! dns_rdatatype_isdnssec(rrset->type))
! dns_rdatatype_atcname(rrset->type))
{
return (ISC_R_EXISTS);
}
return (ISC_R_SUCCESS);
}
@@ -2834,7 +2846,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
dns_rdatatype_cname, 0,
&flag));
if (flag &&
! dns_rdatatype_isdnssec(rdata.type))
! dns_rdatatype_atcname(rdata.type))
{
update_log(client, zone,
LOGLEVEL_PROTOCOL,
+2 -2
View File
@@ -765,7 +765,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
break;
default:
INSIST(0);
break;
ISC_UNREACHABLE();
}
ns_client_log(client,
@@ -1281,7 +1281,7 @@ sendstream(xfrout_ctx_t *xfr) {
isc_buffer_clear(&xfr->txlenbuf);
isc_buffer_clear(&xfr->txbuf);
is_tcp = (xfr->client->attributes & NS_CLIENTATTR_TCP);
is_tcp = ((xfr->client->attributes & NS_CLIENTATTR_TCP) != 0);
if (!is_tcp) {
/*
* In the UDP case, we put the response data directly into
+66 -37
View File
@@ -122,7 +122,7 @@ configure_zone_acl(const cfg_obj_t *zconfig, const cfg_obj_t *vconfig,
break;
default:
INSIST(0);
return (ISC_R_FAILURE);
ISC_UNREACHABLE();
}
/* First check to see if ACL is defined within the zone */
@@ -228,12 +228,14 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone,
unsigned int i, n;
str = cfg_obj_asstring(mode);
if (strcasecmp(str, "grant") == 0)
if (strcasecmp(str, "grant") == 0) {
grant = true;
else if (strcasecmp(str, "deny") == 0)
} else if (strcasecmp(str, "deny") == 0) {
grant = false;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
str = cfg_obj_asstring(matchtype);
CHECK(dns_ssu_mtypefromstring(str, &mtype));
@@ -753,6 +755,7 @@ checknames(dns_zonetype_t ztype, const cfg_obj_t **maps,
case dns_zone_master: zone = "master"; break;
default:
INSIST(0);
ISC_UNREACHABLE();
}
result = ns_checknames_get(maps, zone, objp);
INSIST(result == ISC_R_SUCCESS && objp != NULL && *objp != NULL);
@@ -796,7 +799,7 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
const dns_master_style_t *masterstyle = &dns_master_style_default;
isc_stats_t *zoneqrystats;
dns_stats_t *rcvquerystats;
dns_zonestat_level_t statlevel;
dns_zonestat_level_t statlevel = dns_zonestat_none;
int seconds;
dns_zone_t *mayberaw = (raw != NULL) ? raw : zone;
isc_dscp_t dscp;
@@ -920,14 +923,16 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
if (result == ISC_R_SUCCESS) {
const char *masterformatstr = cfg_obj_asstring(obj);
if (strcasecmp(masterformatstr, "text") == 0)
if (strcasecmp(masterformatstr, "text") == 0) {
masterformat = dns_masterformat_text;
else if (strcasecmp(masterformatstr, "raw") == 0)
} else if (strcasecmp(masterformatstr, "raw") == 0) {
masterformat = dns_masterformat_raw;
else if (strcasecmp(masterformatstr, "map") == 0)
} else if (strcasecmp(masterformatstr, "map") == 0) {
masterformat = dns_masterformat_map;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
@@ -943,12 +948,14 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
return (ISC_R_FAILURE);
}
if (strcasecmp(masterstylestr, "full") == 0)
if (strcasecmp(masterstylestr, "full") == 0) {
masterstyle = &dns_master_style_full;
else if (strcasecmp(masterstylestr, "relative") == 0)
} else if (strcasecmp(masterstylestr, "relative") == 0) {
masterstyle = &dns_master_style_default;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
@@ -1034,16 +1041,18 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
dialup = dns_dialuptype_no;
} else {
const char *dialupstr = cfg_obj_asstring(obj);
if (strcasecmp(dialupstr, "notify") == 0)
if (strcasecmp(dialupstr, "notify") == 0) {
dialup = dns_dialuptype_notify;
else if (strcasecmp(dialupstr, "notify-passive") == 0)
} else if (strcasecmp(dialupstr, "notify-passive") == 0) {
dialup = dns_dialuptype_notifypassive;
else if (strcasecmp(dialupstr, "refresh") == 0)
} else if (strcasecmp(dialupstr, "refresh") == 0) {
dialup = dns_dialuptype_refresh;
else if (strcasecmp(dialupstr, "passive") == 0)
} else if (strcasecmp(dialupstr, "passive") == 0) {
dialup = dns_dialuptype_passive;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
if (raw != NULL)
dns_zone_setdialup(raw, dialup);
@@ -1059,14 +1068,16 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
statlevel = dns_zonestat_none;
} else {
const char *levelstr = cfg_obj_asstring(obj);
if (strcasecmp(levelstr, "full") == 0)
if (strcasecmp(levelstr, "full") == 0) {
statlevel = dns_zonestat_full;
else if (strcasecmp(levelstr, "terse") == 0)
} else if (strcasecmp(levelstr, "terse") == 0) {
statlevel = dns_zonestat_terse;
else if (strcasecmp(levelstr, "none") == 0)
} else if (strcasecmp(levelstr, "none") == 0) {
statlevel = dns_zonestat_none;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
dns_zone_setstatlevel(zone, statlevel);
@@ -1104,12 +1115,14 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
notifytype = dns_notifytype_no;
} else {
const char *notifystr = cfg_obj_asstring(obj);
if (strcasecmp(notifystr, "explicit") == 0)
if (strcasecmp(notifystr, "explicit") == 0) {
notifytype = dns_notifytype_explicit;
else if (strcasecmp(notifystr, "master-only") == 0)
} else if (strcasecmp(notifystr, "master-only") == 0) {
notifytype = dns_notifytype_masteronly;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
if (raw != NULL)
dns_zone_setnotifytype(raw, dns_notifytype_no);
@@ -1250,8 +1263,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
fail = check = true;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
fail = check = false;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
if (raw != NULL) {
dns_zone_setoption(raw, DNS_ZONEOPT_CHECKNAMES,
check);
@@ -1286,8 +1301,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
check = true;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
check = false;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSPF, check);
obj = NULL;
@@ -1424,14 +1441,16 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = cfg_map_get(zoptions, "auto-dnssec", &obj);
if (result == ISC_R_SUCCESS) {
const char *arg = cfg_obj_asstring(obj);
if (strcasecmp(arg, "allow") == 0)
if (strcasecmp(arg, "allow") == 0) {
allow = true;
else if (strcasecmp(arg, "maintain") == 0)
} else if (strcasecmp(arg, "maintain") == 0) {
allow = maint = true;
else if (strcasecmp(arg, "off") == 0)
} else if (strcasecmp(arg, "off") == 0) {
;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setkeyopt(zone, DNS_ZONEKEY_ALLOW, allow);
dns_zone_setkeyopt(zone, DNS_ZONEKEY_MAINTAIN, maint);
}
@@ -1482,8 +1501,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
fail = check = true;
} else if (strcasecmp(dupcheck, "ignore") == 0) {
fail = check = false;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKDUPRR, check);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKDUPRRFAIL, fail);
@@ -1497,8 +1518,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
fail = check = true;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
fail = check = false;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKMX, check);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_CHECKMXFAIL, fail);
@@ -1533,8 +1556,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
warn = ignore = false;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
warn = ignore = true;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNMXCNAME, warn);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_IGNOREMXCNAME, ignore);
@@ -1548,8 +1573,10 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
warn = ignore = false;
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
warn = ignore = true;
} else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
dns_zone_setoption(mayberaw, DNS_ZONEOPT_WARNSRVCNAME, warn);
dns_zone_setoption(mayberaw, DNS_ZONEOPT_IGNORESRVCNAME,
ignore);
@@ -1564,13 +1591,15 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
result = cfg_map_get(zoptions, "dnssec-update-mode", &obj);
if (result == ISC_R_SUCCESS) {
const char *arg = cfg_obj_asstring(obj);
if (strcasecmp(arg, "no-resign") == 0)
if (strcasecmp(arg, "no-resign") == 0) {
dns_zone_setkeyopt(zone, DNS_ZONEKEY_NORESIGN,
true);
else if (strcasecmp(arg, "maintain") == 0)
} else if (strcasecmp(arg, "maintain") == 0) {
;
else
} else {
INSIST(0);
ISC_UNREACHABLE();
}
}
obj = NULL;
+12 -2
View File
@@ -158,8 +158,8 @@ static dns_fixedname_t fuserzone;
static dns_fixedname_t fzname;
static dns_name_t *userzone = NULL;
static dns_name_t *zname = NULL;
static dns_name_t tmpzonename;
static dns_name_t restart_master;
static dns_name_t tmpzonename = DNS_NAME_INITEMPTY;
static dns_name_t restart_master = DNS_NAME_INITEMPTY;
static dns_tsig_keyring_t *gssring = NULL;
static dns_tsigkey_t *tsigkey = NULL;
static dst_key_t *sig0key = NULL;
@@ -2403,6 +2403,8 @@ update_completed(isc_task_t *task, isc_event_t *event) {
if (usegsstsig) {
dns_name_free(&tmpzonename, gmctx);
dns_name_free(&restart_master, gmctx);
dns_name_init(&tmpzonename, 0);
dns_name_init(&restart_master, 0);
}
isc_event_free(&event);
done_update();
@@ -2818,6 +2820,8 @@ failed_gssrequest() {
dns_name_free(&tmpzonename, gmctx);
dns_name_free(&restart_master, gmctx);
dns_name_init(&tmpzonename, NULL);
dns_name_init(&restart_master, NULL);
done_update();
}
@@ -3226,6 +3230,12 @@ cleanup(void) {
isc_mem_free(gmctx, realm);
realm = NULL;
}
if (dns_name_dynamic(&tmpzonename)) {
dns_name_free(&tmpzonename, gmctx);
}
if (dns_name_dynamic(&restart_master)) {
dns_name_free(&restart_master, gmctx);
}
#endif
if (sig0key != NULL)
+18 -7
View File
@@ -43,7 +43,7 @@
* Create a key in the keystore of an HSM
*
* The calculation of key tag is left to the script
* that converts the key into a DNSKEY RR and inserts
* that converts the key into a DNSKEY RR and inserts
* it into a zone file.
*
* usage:
@@ -432,10 +432,10 @@ main(int argc, char *argv[]) {
break;
case key_ecx:
#ifndef CKM_EDDSA_KEY_PAIR_GEN
#if !defined(CKM_EDDSA_KEY_PAIR_GEN)
fprintf(stderr, "CKM_EDDSA_KEY_PAIR_GEN is not defined\n");
usage();
#endif
#else
op_type = OP_EC;
if (bits == 0)
bits = 256;
@@ -454,16 +454,27 @@ main(int argc, char *argv[]) {
id_offset = ECC_ID;
if (bits == 256) {
#if HAVE_PKCS11_ED25519
public_template[4].pValue = pk11_ecc_ed25519;
public_template[4].ulValueLen =
sizeof(pk11_ecc_ed25519);
#else
fprintf(stderr, "Ed25519 is not supported\n");
usage();
#endif
} else {
#if HAVE_PKCS11_ED448
public_template[4].pValue = pk11_ecc_ed448;
public_template[4].ulValueLen =
sizeof(pk11_ecc_ed448);
#else
fprintf(stderr, "Ed449 is not supported\n");
usage();
#endif
}
break;
#endif /* !defined(CKM_EDDSA_KEY_PAIR_GEN) */
case key_dsa:
op_type = OP_DSA;
if (bits == 0)
@@ -527,7 +538,7 @@ main(int argc, char *argv[]) {
case key_unknown:
usage();
}
search_template[0].pValue = label;
search_template[0].ulValueLen = strlen((char *)label);
public_template[0].pValue = label;
@@ -584,7 +595,7 @@ main(int argc, char *argv[]) {
hSession = pctx.session;
/* check if a key with the same id already exists */
rv = pkcs_C_FindObjectsInit(hSession, search_template, 1);
rv = pkcs_C_FindObjectsInit(hSession, search_template, 1);
if (rv != CKR_OK) {
fprintf(stderr, "C_FindObjectsInit: Error = 0x%.8lX\n", rv);
error = 1;
@@ -714,13 +725,13 @@ main(int argc, char *argv[]) {
public_template, public_attrcnt,
private_template, private_attrcnt,
&publickey, &privatekey);
if (rv != CKR_OK) {
fprintf(stderr, "C_GenerateKeyPair: Error = 0x%.8lX\n", rv);
error = 1;
} else if (!quiet)
printf("Key pair generation complete.\n");
exit_params:
/* Free parameter attributes */
if (keyclass == key_dsa || keyclass == key_dh) {
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11destroy"=".\pk11destroy.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11destroy"=".\pk11destroy.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11keygen"=".\pk11keygen.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11keygen"=".\pk11keygen.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11list"=".\pk11list.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11list"=".\pk11list.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11tokens"=".\pk11tokens.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "pk11tokens"=".\pk11tokens.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+23 -17
View File
@@ -49,7 +49,7 @@ and
\fBdnssec\-settime\fR\&.
.PP
DNSSEC policy can be read from a configuration file (default
/etc/dnssec\-policy\&.conf), from which the key parameters, publication and rollover schedule, and desired coverage duration for any given zone can be determined\&. This file may be used to define individual DNSSEC policies on a per\-zone basis, or to set a default policy used for all zones\&.
/etc/dnssec\-policy\&.conf), from which the key parameters, publication and rollover schedule, and desired coverage duration for any given zone can be determined\&. This file may be used to define individual DNSSEC policies on a per\-zone basis, or to set a "default" policy used for all zones\&.
.PP
When
\fBdnssec\-keymgr\fR
@@ -69,6 +69,10 @@ will search the key directory (either the current working directory or the direc
\fB\-K\fR
option), and check the keys for all the zones represented in the directory\&.
.PP
Key times that are in the past will not be updated unless the
\fB\-f\fR
is used (see below)\&. Key inactivation and deletion times that are less than five minutes in the future will be delayed by five minutes\&.
.PP
It is expected that this tool will be run automatically and unattended (for example, by
\fBcron\fR)\&.
.SH "OPTIONS"
@@ -186,7 +190,8 @@ would be used for zones that had unusually high security needs\&.
.sp -1
.IP \(bu 2.3
.\}
Algorithm policies: (\fBalgorithm\-policy \fR\fB\fIalgorithm\fR\fR\fB { \&.\&.\&. };\fR
\fIAlgorithm policies:\fR
(\fBalgorithm\-policy \fR\fB\fIalgorithm\fR\fR\fB { \&.\&.\&. };\fR
) override default per\-algorithm settings\&. For example, by default, RSASHA256 keys use 2048\-bit key sizes for both KSK and ZSK\&. This can be modified using
\fBalgorithm\-policy\fR, and the new key sizes would then be used for any key of type RSASHA256\&.
.RE
@@ -199,59 +204,60 @@ Algorithm policies: (\fBalgorithm\-policy \fR\fB\fIalgorithm\fR\fR\fB { \&.\&.\&
.sp -1
.IP \(bu 2.3
.\}
Zone policies: (\fBzone \fR\fB\fIname\fR\fR\fB { \&.\&.\&. };\fR
\fIZone policies:\fR
(\fBzone \fR\fB\fIname\fR\fR\fB { \&.\&.\&. };\fR
) set policy for a single zone by name\&. A zone policy can inherit a policy class by including a
\fBpolicy\fR
option\&. Zone names beginning with digits (i\&.e\&., 0\-9) must be quoted\&.
option\&. Zone names beginning with digits (i\&.e\&., 0\-9) must be quoted\&. If a zone does not have its own policy then the "default" policy applies\&.
.RE
.PP
Options that can be specified in policies:
.PP
\fBalgorithm\fR
\fBalgorithm\fR \fIname\fR;
.RS 4
The key algorithm\&. If no policy is defined, the default is RSASHA256\&.
.RE
.PP
\fBcoverage\fR
\fBcoverage\fR \fIduration\fR;
.RS 4
The length of time to ensure that keys will be correct; no action will be taken to create new keys to be activated after this time\&. This can be represented as a number of seconds, or as a duration using human\-readable units (examples: "1y" or "6 months")\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. If no policy is configured, the default is six months\&.
.RE
.PP
\fBdirectory\fR
\fBdirectory\fR \fIpath\fR;
.RS 4
Specifies the directory in which keys should be stored\&.
.RE
.PP
\fBkey\-size\fR
\fBkey\-size\fR \fIkeytype\fR \fIsize\fR;
.RS 4
Specifies the number of bits to use in creating keys\&. Takes two arguments: keytype (eihter "zsk" or "ksk") and size\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. If no policy is configured, the default is 1024 bits for DSA keys and 2048 for RSA\&.
Specifies the number of bits to use in creating keys\&. The keytype is either "zsk" or "ksk"\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. If no policy is configured, the default is 1024 bits for DSA keys and 2048 for RSA\&.
.RE
.PP
\fBkeyttl\fR
\fBkeyttl\fR \fIduration\fR;
.RS 4
The key TTL\&. If no policy is defined, the default is one hour\&.
.RE
.PP
\fBpost\-publish\fR
\fBpost\-publish\fR \fIkeytype\fR \fIduration\fR;
.RS 4
How long after inactivation a key should be deleted from the zone\&. Note: If
\fBroll\-period\fR
is not set, this value is ignored\&. Takes two arguments: keytype (eihter "zsk" or "ksk") and a duration\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. The default is one month\&.
is not set, this value is ignored\&. The keytype is either "zsk" or "ksk"\&. A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies\&. The default is one month\&.
.RE
.PP
\fBpre\-publish\fR
\fBpre\-publish\fR \fIkeytype\fR \fIduration\fR;
.RS 4
How long before activation a key should be published\&. Note: If
\fBroll\-period\fR
is not set, this value is ignored\&. Takes two arguments: keytype (either "zsk" or "ksk") and a duration\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. The default is one month\&.
is not set, this value is ignored\&. The keytype is either "zsk" or "ksk"\&. A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies\&. The default is one month\&.
.RE
.PP
\fBroll\-period\fR
\fBroll\-period\fR \fIkeytype\fR \fIduration\fR;
.RS 4
How frequently keys should be rolled over\&. Takes two arguments: keytype (eihter "zsk" or "ksk") and a duration\&. A default value for this option can be set in algorithm policies as well as in policy classes or zone policies\&. If no policy is configured, the default is one year for ZSK\*(Aqs\&. KSK\*(Aqs do not roll over by default\&.
How frequently keys should be rolled over\&. The keytype is either "zsk" or "ksk"\&. A default duration for this option can be set in algorithm policies as well as in policy classes or zone policies\&. If no policy is configured, the default is one year for ZSKs\&. KSKs do not roll over by default\&.
.RE
.PP
\fBstandby\fR
\fBstandby\fR \fIkeytype\fR \fInumber\fR;
.RS 4
Not yet implemented\&.
.RE
+43 -25
View File
@@ -66,11 +66,12 @@
</para>
<para>
DNSSEC policy can be read from a configuration file (default
<filename>/etc/dnssec-policy.conf</filename>), from which the key
parameters, publication and rollover schedule, and desired
coverage duration for any given zone can be determined. This
<filename>/etc/dnssec-policy.conf</filename>), from which the
key parameters, publication and rollover schedule, and desired
coverage duration for any given zone can be determined. This
file may be used to define individual DNSSEC policies on a
per-zone basis, or to set a default policy used for all zones.
per-zone basis, or to set a "<literal>default</literal>" policy
used for all zones.
</para>
<para>
When <command>dnssec-keymgr</command> runs, it examines the DNSSEC
@@ -100,6 +101,12 @@
set by the <option>-K</option> option), and check the keys for
all the zones represented in the directory.
</para>
<para>
Key times that are in the past will not be updated unless
the <option>-f</option> is used (see below). Key inactivation
and deletion times that are less than five minutes in the future
will be delayed by five minutes.
</para>
<para>
It is expected that this tool will be run automatically and
unattended (for example, by <command>cron</command>).
@@ -252,7 +259,7 @@
</listitem>
<listitem>
<para>
Algorithm policies:
<emphasis>Algorithm policies:</emphasis>
(<option>algorithm-policy <replaceable>algorithm</replaceable> { ... };</option> )
override default per-algorithm settings. For example, by default,
RSASHA256 keys use 2048-bit key sizes for both KSK and ZSK. This
@@ -262,11 +269,13 @@
</listitem>
<listitem>
<para>
Zone policies:
<emphasis>Zone policies:</emphasis>
(<option>zone <replaceable>name</replaceable> { ... };</option> )
set policy for a single zone by name. A zone policy can inherit
a policy class by including a <option>policy</option> option.
Zone names beginning with digits (i.e., 0-9) must be quoted.
If a zone does not have its own policy then the
"<literal>default</literal>" policy applies.
</para>
</listitem>
</itemizedlist>
@@ -275,7 +284,8 @@
</para>
<variablelist>
<varlistentry>
<term><command>algorithm</command></term>
<term><command>algorithm</command>
<replaceable>name</replaceable><literal>;</literal></term>
<listitem>
<para>
The key algorithm. If no policy is defined, the default is
@@ -284,13 +294,14 @@
</listitem>
</varlistentry>
<varlistentry>
<term><command>coverage</command></term>
<term><command>coverage</command>
<replaceable>duration</replaceable><literal>;</literal></term>
<listitem>
<para>
The length of time to ensure that keys will be correct; no action
will be taken to create new keys to be activated after this time.
This can be represented as a number of seconds, or as a duration using
human-readable units (examples: "1y" or "6 months").
This can be represented as a number of seconds, or as a duration
using human-readable units (examples: "1y" or "6 months").
A default value for this option can be set in algorithm policies
as well as in policy classes or zone policies.
If no policy is configured, the default is six months.
@@ -298,7 +309,8 @@
</listitem>
</varlistentry>
<varlistentry>
<term><command>directory</command></term>
<term><command>directory</command>
<replaceable>path</replaceable><literal>;</literal></term>
<listitem>
<para>
Specifies the directory in which keys should be stored.
@@ -306,11 +318,12 @@
</listitem>
</varlistentry>
<varlistentry>
<term><command>key-size</command></term>
<term><command>key-size</command> <replaceable>keytype</replaceable>
<replaceable>size</replaceable><literal>;</literal></term>
<listitem>
<para>
Specifies the number of bits to use in creating keys.
Takes two arguments: keytype (eihter "zsk" or "ksk") and size.
The keytype is either "zsk" or "ksk".
A default value for this option can be set in algorithm policies
as well as in policy classes or zone policies. If no policy is
configured, the default is 1024 bits for DSA keys and 2048 for
@@ -319,7 +332,8 @@
</listitem>
</varlistentry>
<varlistentry>
<term><command>keyttl</command></term>
<term><command>keyttl</command>
<replaceable>duration</replaceable><literal>;</literal></term>
<listitem>
<para>
The key TTL. If no policy is defined, the default is one hour.
@@ -327,46 +341,50 @@
</listitem>
</varlistentry>
<varlistentry>
<term><command>post-publish</command></term>
<term><command>post-publish</command> <replaceable>keytype</replaceable>
<replaceable>duration</replaceable><literal>;</literal></term>
<listitem>
<para>
How long after inactivation a key should be deleted from the zone.
Note: If <option>roll-period</option> is not set, this value is
ignored. Takes two arguments: keytype (eihter "zsk" or "ksk") and a
duration. A default value for this option can be set in algorithm
ignored. The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm
policies as well as in policy classes or zone policies. The default
is one month.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>pre-publish</command></term>
<term><command>pre-publish</command> <replaceable>keytype</replaceable>
<replaceable>duration</replaceable><literal>;</literal></term>
<listitem>
<para>
How long before activation a key should be published. Note: If
<option>roll-period</option> is not set, this value is ignored.
Takes two arguments: keytype (either "zsk" or "ksk") and a duration.
A default value for this option can be set in algorithm policies
The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm policies
as well as in policy classes or zone policies. The default is
one month.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>roll-period</command></term>
<term><command>roll-period</command> <replaceable>keytype</replaceable>
<replaceable>duration</replaceable><literal>;</literal></term>
<listitem>
<para>
How frequently keys should be rolled over.
Takes two arguments: keytype (eihter "zsk" or "ksk") and a duration.
A default value for this option can be set in algorithm policies
The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm policies
as well as in policy classes or zone policies. If no policy is
configured, the default is one year for ZSK's. KSK's do not
configured, the default is one year for ZSKs. KSKs do not
roll over by default.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>standby</command></term>
<term><command>standby</command> <replaceable>keytype</replaceable>
<replaceable>number</replaceable><literal>;</literal></term>
<listitem>
<para>
Not yet implemented.
+43 -25
View File
@@ -58,11 +58,12 @@
</p>
<p>
DNSSEC policy can be read from a configuration file (default
<code class="filename">/etc/dnssec-policy.conf</code>), from which the key
parameters, publication and rollover schedule, and desired
coverage duration for any given zone can be determined. This
<code class="filename">/etc/dnssec-policy.conf</code>), from which the
key parameters, publication and rollover schedule, and desired
coverage duration for any given zone can be determined. This
file may be used to define individual DNSSEC policies on a
per-zone basis, or to set a default policy used for all zones.
per-zone basis, or to set a "<code class="literal">default</code>" policy
used for all zones.
</p>
<p>
When <span class="command"><strong>dnssec-keymgr</strong></span> runs, it examines the DNSSEC
@@ -92,6 +93,12 @@
set by the <code class="option">-K</code> option), and check the keys for
all the zones represented in the directory.
</p>
<p>
Key times that are in the past will not be updated unless
the <code class="option">-f</code> is used (see below). Key inactivation
and deletion times that are less than five minutes in the future
will be delayed by five minutes.
</p>
<p>
It is expected that this tool will be run automatically and
unattended (for example, by <span class="command"><strong>cron</strong></span>).
@@ -214,7 +221,7 @@
</li>
<li class="listitem">
<p>
Algorithm policies:
<span class="emphasis"><em>Algorithm policies:</em></span>
(<code class="option">algorithm-policy <em class="replaceable"><code>algorithm</code></em> { ... };</code> )
override default per-algorithm settings. For example, by default,
RSASHA256 keys use 2048-bit key sizes for both KSK and ZSK. This
@@ -224,11 +231,13 @@
</li>
<li class="listitem">
<p>
Zone policies:
<span class="emphasis"><em>Zone policies:</em></span>
(<code class="option">zone <em class="replaceable"><code>name</code></em> { ... };</code> )
set policy for a single zone by name. A zone policy can inherit
a policy class by including a <code class="option">policy</code> option.
Zone names beginning with digits (i.e., 0-9) must be quoted.
If a zone does not have its own policy then the
"<code class="literal">default</code>" policy applies.
</p>
</li>
</ul></div>
@@ -236,82 +245,91 @@
Options that can be specified in policies:
</p>
<div class="variablelist"><dl class="variablelist">
<dt><span class="term"><span class="command"><strong>algorithm</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>algorithm</strong></span>
<em class="replaceable"><code>name</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
The key algorithm. If no policy is defined, the default is
RSASHA256.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>coverage</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>coverage</strong></span>
<em class="replaceable"><code>duration</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
The length of time to ensure that keys will be correct; no action
will be taken to create new keys to be activated after this time.
This can be represented as a number of seconds, or as a duration using
human-readable units (examples: "1y" or "6 months").
This can be represented as a number of seconds, or as a duration
using human-readable units (examples: "1y" or "6 months").
A default value for this option can be set in algorithm policies
as well as in policy classes or zone policies.
If no policy is configured, the default is six months.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>directory</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>directory</strong></span>
<em class="replaceable"><code>path</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
Specifies the directory in which keys should be stored.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>key-size</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>key-size</strong></span> <em class="replaceable"><code>keytype</code></em>
<em class="replaceable"><code>size</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
Specifies the number of bits to use in creating keys.
Takes two arguments: keytype (eihter "zsk" or "ksk") and size.
The keytype is either "zsk" or "ksk".
A default value for this option can be set in algorithm policies
as well as in policy classes or zone policies. If no policy is
configured, the default is 1024 bits for DSA keys and 2048 for
RSA.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>keyttl</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>keyttl</strong></span>
<em class="replaceable"><code>duration</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
The key TTL. If no policy is defined, the default is one hour.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>post-publish</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>post-publish</strong></span> <em class="replaceable"><code>keytype</code></em>
<em class="replaceable"><code>duration</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
How long after inactivation a key should be deleted from the zone.
Note: If <code class="option">roll-period</code> is not set, this value is
ignored. Takes two arguments: keytype (eihter "zsk" or "ksk") and a
duration. A default value for this option can be set in algorithm
ignored. The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm
policies as well as in policy classes or zone policies. The default
is one month.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>pre-publish</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>pre-publish</strong></span> <em class="replaceable"><code>keytype</code></em>
<em class="replaceable"><code>duration</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
How long before activation a key should be published. Note: If
<code class="option">roll-period</code> is not set, this value is ignored.
Takes two arguments: keytype (either "zsk" or "ksk") and a duration.
A default value for this option can be set in algorithm policies
The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm policies
as well as in policy classes or zone policies. The default is
one month.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>roll-period</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>roll-period</strong></span> <em class="replaceable"><code>keytype</code></em>
<em class="replaceable"><code>duration</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
How frequently keys should be rolled over.
Takes two arguments: keytype (eihter "zsk" or "ksk") and a duration.
A default value for this option can be set in algorithm policies
The keytype is either "zsk" or "ksk".
A default duration for this option can be set in algorithm policies
as well as in policy classes or zone policies. If no policy is
configured, the default is one year for ZSK's. KSK's do not
configured, the default is one year for ZSKs. KSKs do not
roll over by default.
</p>
</dd>
<dt><span class="term"><span class="command"><strong>standby</strong></span></span></dt>
<dt><span class="term"><span class="command"><strong>standby</strong></span> <em class="replaceable"><code>keytype</code></em>
<em class="replaceable"><code>number</code></em><code class="literal">;</code></span></dt>
<dd>
<p>
Not yet implemented.
+1 -1
View File
@@ -164,7 +164,7 @@ def parse_args():
parser.add_argument('-D', '--dsfromkey', dest='dsfromkey',
default=os.path.join(prefix(sbindir),
'dnssec-dsfromkey'),
type=str, help='path to \'dig\'')
type=str, help='path to \'dnssec-dsfromkey\'')
parser.add_argument('-v', '--version', action='version',
version=version)
args = parser.parse_args()
+5 -1
View File
@@ -188,6 +188,10 @@ def parse_args():
if args.filename and len(args.zone) > 1:
fatal("ERROR: -f can only be used with one zone.")
# strip trailing dots if any
args.zone = [x[:-1] if (len(x) > 1 and x[-1] == '.') else x
for x in args.zone]
# convert from time arguments to seconds
try:
if args.maxttl:
@@ -251,7 +255,7 @@ def main():
print("PHASE 1--Loading keys to check for internal timing problems")
try:
kd = keydict(path=args.path, zone=args.zone, keyttl=args.keyttl)
kd = keydict(path=args.path, zones=args.zone, keyttl=args.keyttl)
except Exception as e:
fatal('ERROR: Unable to build key dictionary: ' + str(e))
+4
View File
@@ -452,6 +452,10 @@ class dnskey:
if timespan is None:
timespan = self.ttl
if timespan is None:
output("WARNING: Key %s using default TTL." % repr(self))
timespan = (60*60*24)
now = time.time()
d = self.delete()
i = self.inactive()
+1 -1
View File
@@ -73,7 +73,7 @@ class eventlist:
kok = self.checkzone(z, "KSK", until, output)
if not no_zsk and z in self._Z.keys():
found = True
kok = self.checkzone(z, "ZSK", until, output)
zok = self.checkzone(z, "ZSK", until, output)
if not found:
output("ERROR: No key events found")
+6 -3
View File
@@ -49,15 +49,18 @@ class keydict:
self._keydict[key.name][key.alg][key.keyid] = key
def readone(self, path, zone):
match='K' + zone + '.+*.private'
if not zone.endswith('.'):
zone += '.'
match='K' + zone + '+*.private'
files = glob.glob(os.path.join(path, match))
found = False
for infile in files:
key = dnskey(infile, path, self._defttl)
if key.name != zone: # shouldn't ever happen
if key.fullname != zone: # shouldn't ever happen
continue
self._keydict[key.name][key.alg][key.keyid] = key
keyname=key.name if zone != '.' else '.'
self._keydict[keyname][key.alg][key.keyid] = key
found = True
return found
+31 -2
View File
@@ -77,15 +77,44 @@ class keyseries:
a = key.activate()
if not p or p > now:
key.setpublish(now)
p = now
if not a or a > now:
key.setactivate(now)
a = now
i = key.inactive()
fudge = 300
if not rp:
key.setinactive(None, **kwargs)
key.setdelete(None, **kwargs)
elif not i or a + rp != i:
if not i and a + rp > now + prepub + fudge:
key.setinactive(a + rp, **kwargs)
key.setdelete(a + rp + postpub, **kwargs)
elif not i:
key.setinactive(now + prepub + fudge, **kwargs)
key.setdelete(now + prepub + postpub + fudge, **kwargs)
elif i < now:
pass
elif a + rp > i:
key.setinactive(a + rp, **kwargs)
key.setdelete(a + rp + postpub, **kwargs)
elif a + rp > now + prepub + fudge:
key.setinactive(a + rp, **kwargs)
key.setdelete(a + rp + postpub, **kwargs)
else:
key.setinactive(now + prepub + fudge, **kwargs)
key.setdelete(now + prepub + postpub + fudge, **kwargs)
else:
key.setinactive(a + rp, **kwargs)
key.setdelete(a + rp + postpub, **kwargs)
d = key.delete()
if not d or i + postpub > now + fudge:
key.setdelete(i + postpub, **kwargs)
elif not d:
key.setdelete(now + postpub + fudge, **kwargs)
elif d < now + fudge:
pass
elif d < i + postpub:
key.setdelete(i + postpub, **kwargs)
if policy.keyttl != key.ttl:
key.setttl(policy.keyttl)
+29 -29
View File
@@ -1,29 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "rndcutil"=".\rndcutil.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "rndcutil"=".\rndcutil.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
+1 -1
View File
@@ -1,2 +1,2 @@
# this server runs named with only one worker thread
-m record,size,mctx -c named.conf -d 99 -X named.lock -g -T clienttest -n 1
-m record,size,mctx -c named.conf -d 99 -D additional-ns1 -X named.lock -g -T clienttest -n 1
+3 -3
View File
@@ -380,7 +380,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "reconfiguring server with multiple views"
rm -f ns2/named.conf
rm -f ns2/named.conf
copy_setports ns2/named2.conf.in ns2/named.conf
$RNDCCMD 10.53.0.2 reconfig 2>&1 | sed 's/^/ns2 /' | cat_i
sleep 5
@@ -527,8 +527,8 @@ echo_i "check that named restarts with multiple added zones ($n)"
ret=0
$RNDCCMD 10.53.0.3 addzone "test4.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.3 addzone "test5.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
$PERL $SYSTEMTESTTOP/stop.pl . ns3
$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} . ns3 || ret=1
$PERL $SYSTEMTESTTOP/stop.pl addzone ns3
$PERL $SYSTEMTESTTOP/start.pl --noclean --restart --port ${PORT} addzone ns3 || ret=1
$DIG $DIGOPTS @10.53.0.3 version.bind txt ch > dig.out.test$n || ret=1
grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
n=`expr $n + 1`
+1 -1
View File
@@ -1,2 +1,2 @@
# this server only has 127.0.0.1 in its localhost/localnets ACLs
-m record,size,mctx -c named.conf -d 99 -X named.lock -g -T clienttest -T fixedlocal
-m record,size,mctx -c named.conf -d 99 -D allow-query-ns3 -X named.lock -g -T clienttest -T fixedlocal
+4 -1
View File
@@ -12,6 +12,7 @@
rm -f */K* */dsset-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk
rm -f */core
rm -f */example.bk
rm -f */named.conf
rm -f */named.memstats
rm -f */named.run
rm -f */named.conf
@@ -23,6 +24,7 @@ rm -f digcomp.out.test*
rm -f digcomp.out.test*
rm -f missingzsk.key inactivezsk.key
rm -f nopriv.key vanishing.key del1.key del2.key
rm -f ns*/managed-keys.bind*
rm -f ns*/named.lock
rm -f ns*/named.lock
rm -f ns1/root.db
@@ -31,11 +33,12 @@ rm -f ns2/private.secure.example.db ns2/bar.db
rm -f ns3/*.nzd ns3/*.nzd-lock ns3/*.nzf
rm -f ns3/*.nzf
rm -f ns3/autonsec3.example.db
rm -f ns3/delzsk.example.db
rm -f ns3/dname-at-apex-nsec3.example.db
rm -f ns3/inacksk2.example.db
rm -f ns3/inacksk3.example.db
rm -f ns3/inaczsk2.example.db
rm -f ns3/inaczsk3.example.db
rm -f ns3/delzsk.example.db
rm -f ns3/kg.out ns3/s.out ns3/st.out
rm -f ns3/nozsk.example.db ns3/inaczsk.example.db
rm -f ns3/nsec.example.db
@@ -82,3 +82,5 @@ ns.nsec3-to-nsec A 10.53.0.3
oldsigs NS ns.oldsigs
ns.oldsigs A 10.53.0.3
dname-at-apex-nsec3 NS ns3
+2 -1
View File
@@ -15,7 +15,8 @@ SYSTEMTESTTOP=../..
# Have the child generate subdomain keys and pass DS sets to us.
( cd ../ns3 && $SHELL keygen.sh )
for subdomain in secure nsec3 autonsec3 optout rsasha256 rsasha512 nsec3-to-nsec oldsigs sync
for subdomain in secure nsec3 autonsec3 optout rsasha256 rsasha512 nsec3-to-nsec oldsigs sync \
dname-at-apex-nsec3
do
cp ../ns3/dsset-$subdomain.example$TP .
done
@@ -0,0 +1,14 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 600
@ SOA ns3.example. . 1 1200 1200 1814400 3600
@ NS ns3.example.
@ DNAME example.
@ NSEC3PARAM 1 0 0 -
+11 -2
View File
@@ -15,8 +15,8 @@ SYSTEMTESTTOP=../..
SYSTESTDIR=autosign
dumpit () {
echo "D:${debug}: dumping ${1}"
cat "${1}" | sed 's/^/D:/'
echo_d "${debug}: dumping ${1}"
cat "${1}" | cat_d
}
setup () {
@@ -316,3 +316,12 @@ ksk=`$KEYGEN -a NSEC3RSASHA1 -b 1024 -3 -q -r $RANDFILE -fk $zone 2> kg.out` ||
$KEYGEN -a NSEC3RSASHA1 -b 1024 -3 -q -r $RANDFILE $zone > kg.out 2>&1 || dumpit kg.out
zsk=`$KEYGEN -a NSEC3RSASHA1 -b 1024 -3 -q -r $RANDFILE -I now-1w $zone 2>kg.out` || dumpit kg.out
echo $zsk > ../delzsk.key
#
# Check that NSEC3 are correctly signed and returned from below a DNAME
#
setup dname-at-apex-nsec3.example
cp $infile $zonefile
ksk=`$KEYGEN -q -r $RANDFILE -a NSEC3RSASHA1 -b 1024 -3 -fk $zone 2> kg.out` || dumpit kg.out
$KEYGEN -q -r $RANDFILE -a NSEC3RSASHA1 -b 1024 -3 $zone > kg.out 2>&1 || dumpit kg.out
$DSFROMKEY $ksk.key > dsset-${zone}$TP
@@ -281,4 +281,11 @@ zone "delzsk.example." {
auto-dnssec maintain;
};
zone "dname-at-apex-nsec3.example" {
type master;
file "dname-at-apex-nsec3.example.db";
allow-update { any; };
auto-dnssec maintain;
};
include "trusted.conf";
@@ -31,3 +31,5 @@ ns.private A 10.53.0.2
insecure NS ns.insecure
ns.insecure A 10.53.0.2
dname-and-txt DNAME @
TXT "DNAME and TXT"
+1 -1
View File
@@ -14,7 +14,7 @@ SYSTEMTESTTOP=..
. ./clean.sh
test -r $RANDFILE || $GENRANDOM 400 $RANDFILE
test -r $RANDFILE || $GENRANDOM $RANDOMSIZE $RANDFILE
copy_setports ns1/named.conf.in ns1/named.conf
copy_setports ns2/named.conf.in ns2/named.conf
+19 -1
View File
@@ -236,7 +236,7 @@ status=`expr $status + $ret`
echo_i "checking for nsec3param signing record ($n)"
ret=0
$RNDCCMD 10.53.0.3 signing -list autonsec3.example. > signing.out.test$n 2>&1 | sed 's/^/ns3 /' | cat_i
$RNDCCMD 10.53.0.3 signing -list autonsec3.example. > signing.out.test$n 2>&1
grep "Pending NSEC3 chain 1 0 20 DEAF" signing.out.test$n > /dev/null || ret=1
n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
@@ -1424,5 +1424,23 @@ n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "check that DNAME at apex with NSEC3 is correctly signed (auto-dnssec maintain) ($n)"
ret=0
$DIG $DIGOPTS txt dname-at-apex-nsec3.example @10.53.0.3 > dig.out.ns3.test$n || ret=1
grep "RRSIG NSEC3 7 3 3600" dig.out.ns3.test$n > /dev/null || ret=1
n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "checking that DNAME is not treated as a delegation when signing ($n)"
ret=0
$DIG $DIGOPTS dname-and-txt.secure.example. DNAME @10.53.0.3 > dig.out.ns3.1.test$n || ret=1
grep "dname-and-txt.secure.example.*RRSIG.*DNAME" dig.out.ns3.1.test$n > /dev/null 2>&1 || ret=1
$DIG $DIGOPTS dname-and-txt.secure.example. TXT @10.53.0.3 > dig.out.ns3.2.test$n || ret=1
grep "dname-and-txt.secure.example.*RRSIG.*TXT" dig.out.ns3.2.test$n > /dev/null 2>&1 || ret=1
n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1
+1 -1
View File
@@ -1,6 +1,6 @@
DyNaMiC. 300 IN SOA mname1. . 2000042407 20 20 1814400 3600
DyNaMiC. 300 IN NS ns1.DYNAMIC.
DyNaMiC. 300 IN MX 0 mail.eXaMpLe.
DynamiC. 300 IN MX 0 mail.eXaMpLe.
mAiL.DynamiC. 300 IN A 10.53.0.1
ns1.DYNAMIC. 300 IN A 10.53.0.1
DyNaMiC. 300 IN SOA mname1. . 2000042407 20 20 1814400 3600
+3 -11
View File
@@ -1,14 +1,6 @@
; <<>> DiG 9.11.0pre-alpha <<>> axfr dynamic @10.53.0.1 -p 5300
;; global options: +cmd
dYNAMIc. 0 IN SOA mname1. . 2000042409 20 20 1814400 3600
dYNAMIc. 300 IN SOA mname1. . 2000042409 20 20 1814400 3600
DyNaMiC. 300 IN NS ns1.DYNAMIC.
DyNaMiC. 300 IN MX 0 mail.eXaMpLe.
DynamiC. 300 IN MX 0 mail.eXaMpLe.
mAiL.DynamiC. 300 IN A 10.53.0.1
Ns1.DyNaMIC. 300 IN A 10.53.0.1
dYNAMIc. 0 IN SOA mname1. . 2000042409 20 20 1814400 3600
;; Query time: 0 msec
;; SERVER: 10.53.0.1#5300(10.53.0.1)
;; WHEN: Mon Jan 19 14:50:54 EST 2015
;; XFR size: 6 records (messages 1, bytes 234)
dYNAMIc. 300 IN SOA mname1. . 2000042409 20 20 1814400 3600
+1 -1
View File
@@ -1,6 +1,6 @@
dYNAMIc. 300 IN SOA mname1. . 2000042408 20 20 1814400 3600
DyNaMiC. 300 IN NS ns1.DYNAMIC.
DyNaMiC. 300 IN MX 0 mail.eXaMpLe.
DynamiC. 300 IN MX 0 mail.eXaMpLe.
mAiL.DynamiC. 300 IN A 10.53.0.1
ns1.DYNAMIC. 300 IN A 10.53.0.1
dYNAMIc. 300 IN SOA mname1. . 2000042408 20 20 1814400 3600
+3 -2
View File
@@ -7,9 +7,10 @@
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
@ 86400 SOA ns2.nil. hostmaster.ns2.nil. 0 1 1 1 1
@ 86400 NS ns2.nil.
@ 86400 SOA ns2.domain0.nil. hostmaster.ns2.nil. 0 1 1 1 1
@ 86400 NS ns2.domain0.nil.
ns2 86400 A 10.53.0.2
ns2 86400 AAAA fd92:7065:b8e:ffff::2
@ 86400 A 1.2.3.4
@ 86400 AAAA 1:2:3::4
+1 -1
View File
@@ -14,7 +14,7 @@ SYSTEMTESTTOP=..
$SHELL clean.sh
test -r $RANDFILE || $GENRANDOM 400 $RANDFILE
test -r $RANDFILE || $GENRANDOM $RANDOMSIZE $RANDFILE
copy_setports ns1/named.conf.in ns1/named.conf
copy_setports ns2/named.conf.in ns2/named.conf
+27
View File
@@ -27,6 +27,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking short DNAME from recursive ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS a.short-dname.example @10.53.0.7 a > dig.out.ns4.short || ret=1
grep "status: NOERROR" dig.out.ns4.short > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
@@ -43,6 +44,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking long DNAME from recursive ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS a.long-dname.example @10.53.0.7 a > dig.out.ns4.long || ret=1
grep "status: NOERROR" dig.out.ns4.long > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
@@ -59,6 +61,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking (too) long DNAME from recursive with cached DNAME ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS 01234567890123456789012345678901234567890123456789.longlonglonglonglonglonglonglonglonglonglonglonglonglonglong.longlonglonglonglonglonglonglonglonglonglonglonglonglonglong.longlonglonglonglonglonglonglonglonglonglonglonglonglonglong.long-dname.example @10.53.0.7 a > dig.out.ns4.cachedtoolong || ret=1
grep "status: YXDOMAIN" dig.out.ns4.cachedtoolong > /dev/null || ret=1
grep '^long-dname\.example\..*DNAME.*long' dig.out.ns4.cachedtoolong > /dev/null || ret=1
@@ -68,6 +71,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking (too) long DNAME from recursive without cached DNAME ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS 01234567890123456789012345678901234567890123456789.longlonglonglonglonglonglonglonglonglonglonglonglonglonglong.longlonglonglonglonglonglonglonglonglonglonglonglonglonglong.longlonglonglonglonglonglonglonglonglonglonglonglonglong.toolong-dname.example @10.53.0.7 a > dig.out.ns4.uncachedtoolong || ret=1
grep "status: YXDOMAIN" dig.out.ns4.uncachedtoolong > /dev/null || ret=1
grep '^toolong-dname\.example\..*DNAME.*long' dig.out.ns4.uncachedtoolong > /dev/null || ret=1
@@ -85,6 +89,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME to DNAME from recursive"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS cname.example @10.53.0.7 a > dig.out.ns4.cname
grep "status: NOERROR" dig.out.ns4.cname > /dev/null || ret=1
grep '^cname.example.' dig.out.ns4.cname > /dev/null || ret=1
@@ -97,6 +102,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking DNAME is returned with synthesized CNAME before DNAME ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 name.synth-then-dname.example.broken A > dig.out.test$n
grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1
grep '^name.synth-then-dname\.example\.broken\..*CNAME.*name.$' dig.out.test$n > /dev/null || ret=1
@@ -107,6 +113,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking DNAME is returned with CNAME to synthesized CNAME before DNAME ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 cname-to-synth2-then-dname.example.broken A > dig.out.test$n
grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1
grep '^cname-to-synth2-then-dname\.example\.broken\..*CNAME.*name\.synth2-then-dname\.example\.broken.$' dig.out.test$n > /dev/null || ret=1
@@ -118,6 +125,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME loops are detected ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 loop.example > dig.out.test$n
grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
grep "ANSWER: 17" dig.out.test$n > /dev/null || ret=1
@@ -127,6 +135,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME to external delegated zones is handled ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 a.example > dig.out.test$n
grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
grep "ANSWER: 2" dig.out.test$n > /dev/null || ret=1
@@ -136,6 +145,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME to internal delegated zones is handled ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 b.example > dig.out.test$n
grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
grep "ANSWER: 2" dig.out.test$n > /dev/null || ret=1
@@ -145,6 +155,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME to signed external delgation is handled ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 c.example > dig.out.$n
grep "status: NOERROR" dig.out.$n > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i " failed"; fi
@@ -153,6 +164,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME to signed internal delgation is handled ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 d.example > dig.out.$n
grep "status: NOERROR" dig.out.$n > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i " failed"; fi
@@ -161,30 +173,36 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking CNAME chains in various orders ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.1.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|1,1,2,2,3,4,s4,s3,s1" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.2.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|2,1,3,4,s3,s1,s2,s4" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
grep 'status: NOERROR' dig.out.3.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.3.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 4 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.4.$n 2>&1
grep 'status: NOERROR' dig.out.4.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.4.$n > /dev/null 2>&1 || ret=1
echo "cname,cname,cname|4,3,2,1,s4,s3,s2,s1" | $SEND
$RNDCCMD 10.53.0.7 null --- start test$n - step 5 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.5.$n 2>&1
grep 'status: NOERROR' dig.out.5.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.5.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 6 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|4,3,3,3,s1,s1,1,3,4" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.6.$n 2>&1
@@ -198,6 +216,7 @@ echo_i "checking that only the initial CNAME is cached ($n)"
ret=0
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "cname,cname,cname|1,2,3,4,s1,s2,s3,s4" | $SEND
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
sleep 1
$DIG $DIGOPTS +noall +answer @10.53.0.7 cname1.domain.nil > dig.out.2.$n 2>&1
@@ -209,16 +228,19 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking DNAME chains in various orders ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 3' dig.out.1.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "dname,dname|5,4,3,2,1,s5,s4,s3,s2,s1" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 3' dig.out.2.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "dname,dname|2,3,s1,s2,s3,s4,1" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
@@ -231,15 +253,18 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking external CNAME/DNAME chains in various orders ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n - step 1 --- 2>&1 | sed 's/^/ns7 /' | cat_i
echo "xname,dname|1,2,3,4,s1,s2,s3,s4" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.1.$n 2>&1
grep 'status: NOERROR' dig.out.1.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.1.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 2 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "xname,dname|s2,2,s1,1,4,s4,3" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.2.$n 2>&1
grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
grep 'ANSWER: 2' dig.out.2.$n > /dev/null 2>&1 || ret=1
$RNDCCMD 10.53.0.7 null --- start test$n - step 3 --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
echo "xname,dname|s2,2,2,2" | $SEND
$DIG $DIGOPTS @10.53.0.7 test.domain.nil > dig.out.3.$n 2>&1
@@ -251,6 +276,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking explicit DNAME query ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 dname short-dname.example > dig.out.7.$n 2>&1
grep 'status: NOERROR' dig.out.7.$n > /dev/null 2>&1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
@@ -259,6 +285,7 @@ status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking DNAME via ANY query ($n)"
ret=0
$RNDCCMD 10.53.0.7 null --- start test$n --- 2>&1 | sed 's/^/ns7 /' | cat_i
$RNDCCMD 10.53.0.7 flush 2>&1 | sed 's/^/ns7 /' | cat_i
$DIG $DIGOPTS @10.53.0.7 any short-dname.example > dig.out.7.$n 2>&1
grep 'status: NOERROR' dig.out.7.$n > /dev/null 2>&1 || ret=1
@@ -0,0 +1,34 @@
/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
controls { /* empty */ };
options {
query-source address 10.53.0.2;
notify-source 10.53.0.2;
transfer-source 10.53.0.2;
port 5300;
pid-file "named.pid";
listen-on { 10.53.0.2; };
listen-on-v6 { none; };
heartbeat-interval 2;
recursion no;
};
zone "." {
type hint;
file "hint";
};
zone "example." {
type stub;
dialup notify;
notify no;
file "example.bk";
// masters { 10.53.0.1; };
};
+4 -3
View File
@@ -36,15 +36,16 @@ done
for db in zones/bad*.db
do
echo_i "checking $db ($n)"
ret=0
ret=0 v=0
case $db in
zones/bad-dns-sd-reverse.db)
$CHECKZONE -k fail -i local 0.0.0.0.in-addr.arpa $db > test.out.$n 2>&1 && ret=1
$CHECKZONE -k fail -i local 0.0.0.0.in-addr.arpa $db > test.out.$n 2>&1 || v=$?
;;
*)
$CHECKZONE -i local example $db > test.out.$n 2>&1 && ret=1
$CHECKZONE -i local example $db > test.out.$n 2>&1 || v=$?
;;
esac
test $v = 1 || ret=1
n=`expr $n + 1`
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
@@ -0,0 +1,11 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
@ 3600 DHCID
@ 3600 DHCID
@@ -0,0 +1,11 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
@ EID
@ EID
@@ -0,0 +1,11 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
@ 3600 NIMLOC
@ 3600 NIMLOC
@@ -14,7 +14,7 @@ dyn.example.net. 7200 IN SOA ns1.example.net. hostmaster.example.net. (
1209600 ; expire (2 weeks)
7200 ; minimum (2 hours)
)
7200 RRSIG SOA 7 3 7200 2010 20100225214229 30323 dyn.example.net.
7200 RRSIG SOA 7 3 7200 2010 20100225214229 30323 dyn.example.net. MuyI
7200 NS ns1.example.net.
7200 NS ns2.example.net.
3600 RRSIG DNSKEY 7 3 3600 20100227180048 (
+3 -1
View File
@@ -13,9 +13,11 @@
# Clean up after a specified system test.
#
SYSTEMTESTTOP=.
SYSTEMTESTTOP="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
. $SYSTEMTESTTOP/conf.sh
export SYSTEMTESTTOP
# See if the "-r" flag is present. This will usually be set when all the tests
# are run (e.g. from "runall.sh") and tells the script not to delete the
# test.output file created by run.sh. This is because the script running all
+44 -10
View File
@@ -15,10 +15,17 @@
#
# Find the top of the BIND9 tree.
TOP=${SYSTEMTESTTOP:=.}/../../..
TOP=@abs_top_builddir@
# Make it absolute so that it continues to work after we cd.
TOP=`cd $TOP && pwd`
# Default algorithm for testing
DEFAULT_ALGORITHM=RSASHA256
DEFAULT_ALGORITHM_NUMBER=8
DEFAULT_BITS=1280
# must be different from DEFAULT_ALGORITHM
ALTERNATIVE_ALGORITHM=RSASHA1
ALTERNATIVE_ALGORITHM_NUMBER=5
ALTERNATIVE_BITS=1280
NAMED=$TOP/bin/named/named
# We must use "named -l" instead of "lwresd" because argv[0] is lost
@@ -73,6 +80,10 @@ SAMPLEUPDATE=$TOP/lib/samples/sample-update
# we don't want a KRB5_CONFIG setting breaking the tests
KRB5_CONFIG=/dev/null
# the amount of fake "entropy" to generate with GENRANDOM in
# system tests
RANDOMSIZE=4096
# The "stress" test is not run by default since it creates enough
# load on the machine to make it unusable to other users.
# The "dialup", "delzone", and "dupsigs" tests are also not run by
@@ -148,6 +159,8 @@ else
TESTSOCK6=false
fi
# Windows process management leave empty
PSSUSPEND=
PYTHON=@PYTHON@
@@ -228,23 +241,36 @@ fi
SYSTESTDIR="`basename $PWD`"
echo_i() {
echo "$@" | while read LINE ; do
echoinfo "I:$SYSTESTDIR:$LINE"
echo "$@" | while read __LINE ; do
echoinfo "I:$SYSTESTDIR:$__LINE"
done
}
echo_ic() {
echo "$@" | while read LINE ; do
echoinfo "I:$SYSTESTDIR: $LINE"
echo "$@" | while read __LINE ; do
echoinfo "I:$SYSTESTDIR: $__LINE"
done
}
cat_i() {
while read LINE ; do
echoinfo "I:$SYSTESTDIR:$LINE"
while read __LINE ; do
echoinfo "I:$SYSTESTDIR:$__LINE"
done
}
echo_d() {
echo "$@" | while read __LINE ; do
echoinfo "D:$SYSTESTDIR:$__LINE"
done
}
cat_d() {
while read __LINE ; do
echoinfo "D:$SYSTESTDIR:$__LINE"
done
}
digcomp() {
output=`$PERL $SYSTEMTESTTOP/digcomp.pl "$@"`
result=$?
@@ -320,7 +346,14 @@ copy_setports() {
-e "s/@EXTRAPORT6@/${EXTRAPORT6}/g" \
-e "s/@EXTRAPORT7@/${EXTRAPORT7}/g" \
-e "s/@EXTRAPORT8@/${EXTRAPORT8}/g" \
-e "s/@CONTROLPORT@/${CONTROLPORT}/g" $1 > $2
-e "s/@CONTROLPORT@/${CONTROLPORT}/g" \
-e "s/@DEFAULT_ALGORITHM@/${DEFAULT_ALGORITHM}/g" \
-e "s/@DEFAULT_ALGORITHM_NUMBER@/${DEFAULT_ALGORITHM_NUMBER}/g" \
-e "s/@DEFAULT_BITS@/${DEFAULT_BITS}/g" \
-e "s/@ALTERNATIVE_ALGORITHM@/${ALTERNATIVE_ALGORITHM}/g" \
-e "s/@ALTERNATIVE_ALGORITHM_NUMBER@/${ALTERNATIVE_ALGORITHM_NUMBER}/g" \
-e "s/@ALTERNATIVE_BITS@/${ALTERNATIVE_BITS}/g" \
$1 > $2
}
#
@@ -355,6 +388,7 @@ export PIPEQUERIES
export PK11DEL
export PK11GEN
export PK11LIST
export PSSUSPEND
export PYTHON
export RANDFILE
export RESOLVE
+65 -26
View File
@@ -26,6 +26,16 @@ TOP=`cd $TOP && pwd`
# Visual Studio build configurations are Release and Debug
VSCONF=Debug
# Default algorithm for testing
DEFAULT_ALGORITHM=RSASHA256
DEFAULT_ALGORITHM_NUMBER=8
DEFAULT_BITS=1280
# must be different from DEFAULT_ALGORITHM
ALTERNATIVE_ALGORITHM=RSASHA1
ALTERNATIVE_ALGORITHM_NUMBER=5
ALTERNATIVE_BITS=1280
ARPANAME=$TOP/Build/$VSCONF/arpaname@EXEEXT@
CHECKCONF=$TOP/Build/$VSCONF/named-checkconf@EXEEXT@
CHECKDS="$PYTHON `cygpath -w $TOP/bin/python/dnssec-checkds.py`"
@@ -83,6 +93,10 @@ PIPEQUERIES=$TOP/Build/$VSCONF/pipequeries@EXEEXT@
# we don't want a KRB5_CONFIG setting breaking the tests
KRB5_CONFIG=NUL
# the amount of fake "entropy" to generate with GENRANDOM in
# system tests
RANDOMSIZE=4096
# The "stress" test is not run by default since it creates enough
# load on the machine to make it unusable to other users.
# The "dialup", "delzone", and "dupsigs" tests are also not run by
@@ -90,32 +104,39 @@ KRB5_CONFIG=NUL
#
# List of tests that use ports 5300 and 9953. For this reason, these must
# be run sequentially.
SEQUENTIALDIRS="acl additional addzone autosign builtin \
cacheclean case \
checkconf @CHECKDS@ checknames checkzone cookie @COVERAGE@ \
database digdelv dlv dlvauto dlz dlzexternal \
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb ecdsa eddsa \
ednscompliance emptyzones \
fetchlimit filter-aaaa formerr forward geoip glue gost idna inline ixfr \
@KEYMGR@ legacy limits logfileconfig lwresd masterfile masterformat \
metadata mkeys names notify nslookup nsupdate nzd2nzf pending \
@PKCS11_TEST@ pipelined reclimit redirect resolver rndc rpz \
rrchecker rrl rrsetorder rsabigexponent runtime sfcache \
smartsign sortlist spf staticstub statistics statschannel stub tcp \
tkey tsig tsiggss unknown upforwd verify views wildcard xfer \
xferquota zero zonechecks"
SEQUENTIALDIRS="ecdsa eddsa gost lwresd @PKCS11_TEST@ tkey"
# List of tests that use unique ports (other than 5300 and 9953). These
# tests can be run in parallel.
#
# This symbol must be kept in step with the PARALLEL macro in Makefile.in
PARALLELDIRS="allow_query catz rpzrecurse"
# XXX: Note that tests are not currently run in parallel on Windows, so it
# isn't strictly necessary to maintain these as separate lists in this file,
# but using the same variable names as in conf.sh.in may simplify keeping the
# lists in sync.
#
# XXX: removed logfileconfig as it doesn't currently work on windows.
PARALLELDIRS="acl additional addzone allow-query autosign \
builtin cacheclean case catz chain \
checkconf checknames checkzone \
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
cookie database digdelv dlv dlz dlzexternal \
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb \
ednscompliance emptyzones \
fetchlimit filter-aaaa formerr forward \
geoip glue idna inline integrity ixfr \
legacy limits lwresd masterfile masterformat metadata mkeys \
names notify nslookup nsupdate nzd2nzf \
pending pipelined \
reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
rrchecker rrl rrsetorder rsabigexponent runtime \
sfcache smartsign sortlist \
spf staticstub statistics statschannel stub \
tcp tools tsig tsiggss \
unknown upforwd verify views wildcard \
xfer xferquota zero zonechecks"
SUBDIRS="$SEQUENTIALDIRS $PARALLELDIRS"
# missing: chain integrity
# extra: dname ednscompliance forward
#Things that are different on Windows
KILL="/bin/kill -f"
DIFF="diff --strip-trailing-cr"
@@ -148,7 +169,11 @@ else
TESTSOCK6=false
fi
#
# PsSuspend is part of PSTools and can be downloaded from
# https://download.sysinternals.com/files/PSTools.zip
#
PSSUSPEND=@PSSUSPEND@
PYTHON=@PYTHON@
#
@@ -203,17 +228,23 @@ echoend () {
printf "${COLOR_END}%s${COLOR_NONE}\n" "$*"
}
TESTNAME="`basename $PWD`"
SYSTESTDIR="`basename $PWD`"
echo_i() {
echo "$@" | while read LINE ; do
echoinfo "I:$TESTNAME:$LINE"
echo "$@" | while read __LINE ; do
echoinfo "I:$SYSTESTDIR:$__LINE"
done
}
echo_ic() {
echo "$@" | while read __LINE ; do
echoinfo "I:$SYSTESTDIR: $__LINE"
done
}
cat_i() {
while read LINE ; do
echoinfo "I:$SYSTESTDIR:$LINE"
while read __LINE ; do
echoinfo "I:$SYSTESTDIR:$__LINE"
done
}
@@ -298,7 +329,14 @@ copy_setports() {
-e "s/${atsign}EXTRAPORT6${atsign}/${EXTRAPORT6}/g" \
-e "s/${atsign}EXTRAPORT7${atsign}/${EXTRAPORT7}/g" \
-e "s/${atsign}EXTRAPORT8${atsign}/${EXTRAPORT8}/g" \
-e "s/${atsign}CONTROLPORT${atsign}/${CONTROLPORT}/g" $1 > $2
-e "s/${atsign}CONTROLPORT${atsign}/${CONTROLPORT}/g" \
-e "s/${atsign}DEFAULT_ALGORITHM${atsign}/${DEFAULT_ALGORITHM}/g" \
-e "s/${atsign}DEFAULT_ALGORITHM_NUMBER${atsign}/${DEFAULT_ALGORITHM_NUMBER}/g" \
-e "s/${atsign}DEFAULT_BITS${atsign}/${DEFAULT_BITS}/g" \
-e "s/${atsign}ALTERNATIVE_ALGORITHM${atsign}/${ALTERNATIVE_ALGORITHM}/g" \
-e "s/${atsign}ALTERNATIVE_ALGORITHM_NUMBER${atsign}/${ALTERNATIVE_ALGORITHM_NUMBER}/g" \
-e "s/${atsign}ALTERNATIVE_BITS${atsign}/${ALTERNATIVE_BITS}/g" \
$1 > $2
}
#
@@ -333,6 +371,7 @@ export PIPEQUERIES
export PK11DEL
export PK11GEN
export PK11LIST
export PSSUSPEND
export PYTHON
export RANDFILE
export RESOLVE
+11
View File
@@ -0,0 +1,11 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
@ 3600 SOA . . 0 0 0 0 0
@ 3600 NS .
+37
View File
@@ -0,0 +1,37 @@
/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
key rndc_key {
secret "1234abcd8765";
algorithm hmac-sha256;
};
controls {
inet 10.53.0.8 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
};
options {
query-source address 10.53.0.8;
notify-source 10.53.0.8;
transfer-source 10.53.0.8;
port @PORT@;
pid-file "named.pid";
listen-on { 10.53.0.8; };
listen-on-v6 { none; };
dnssec-validation yes;
rate-limit {};
require-server-cookie yes;
};
zone "example" {
type master;
file "example.db";
};
+1
View File
@@ -20,3 +20,4 @@ copy_setports ns4/named.conf.in ns4/named.conf
copy_setports ns5/named.conf.in ns5/named.conf
copy_setports ns6/named.conf.in ns6/named.conf
copy_setports ns7/named.conf.in ns7/named.conf
copy_setports ns8/named.conf.in ns8/named.conf
+52 -13
View File
@@ -21,7 +21,7 @@ n=0
getcookie() {
awk '$2 == "COOKIE:" {
print $3;
}' < $1
}' < $1 | tr -d '\r'
}
fullcookie() {
@@ -37,21 +37,21 @@ havetc() {
for bad in bad*.conf
do
n=`expr $n + 1`
echo_i "checking that named-checkconf detects error in $bad ($n)"
ret=0
$CHECKCONF $bad > /dev/null 2>&1 && ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "checking that named-checkconf detects error in $bad ($n)"
ret=0
$CHECKCONF $bad > /dev/null 2>&1 && ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
done
for good in good*.conf
do
n=`expr $n + 1`
echo_i "checking that named-checkconf detects accepts $good ($n)"
ret=0
$CHECKCONF $good > /dev/null 2>&1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
echo_i "checking that named-checkconf detects accepts $good ($n)"
ret=0
$CHECKCONF $good > /dev/null 2>&1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
done
n=`expr $n + 1`
@@ -142,8 +142,12 @@ n=`expr $n + 1`
echo_i "checking for COOKIE value in adb ($n)"
ret=0
$RNDCCMD 10.53.0.1 dumpdb
sleep 1
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db > /dev/null|| ret=1
for i in 1 2 3 4 5 6 7 8 9 10
do
sleep 1
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db > /dev/null && break
done
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
@@ -169,6 +173,41 @@ if [ $linecount != 2 ]; then ret=1; fi
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "checking require-server-cookie yes with rate-limit ($n)"
ret=0
$DIG $DIGOPTS +qr +cookie +nobadcookie soa example @10.53.0.8 > dig.out.test$n
grep "flags: qr[^;]* ad[ ;]" dig.out.test$n > /dev/null && ret=1
grep BADCOOKIE dig.out.test$n > /dev/null || ret=1
linecount=`getcookie dig.out.test$n | wc -l`
if [ $linecount != 2 ]; then ret=1; fi
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "send undersized cookie ($n)"
ret=0
$DIG $DIGOPTS +qr +cookie=000000 soa @10.53.0.1 > dig.out.test$n || ret=1
grep "status: FORMERR" dig.out.test$n > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "send oversized for named cookie ($n)"
ret=0
$DIG $DIGOPTS +qr +cookie=${cookie}00 soa @10.53.0.1 > dig.out.test$n || ret=1
grep "COOKIE: [a-f0-9]* (good)" dig.out.test$n > /dev/null 2>&1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
n=`expr $n + 1`
echo_i "send oversized for named cookie with server requiring a good cookie ($n)"
ret=0
$DIG $DIGOPTS +qr +cookie=${cookie}00 soa @10.53.0.3 > dig.out.test$n || ret=1
grep "COOKIE: [a-f0-9]* (good)" dig.out.test$n > /dev/null 2>&1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=`expr $status + $ret`
#
# Test shared cookie-secret support.
#
@@ -0,0 +1,6 @@
args=
warn=4
error=1
ok=1
retcode=1
match=0

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