Compare commits
400
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ae5788151 | ||
|
|
89c596b1eb | ||
|
|
380ab3b39f | ||
|
|
5f81aa10bc | ||
|
|
4f7177c794 | ||
|
|
a8649cc299 | ||
|
|
5bc8feab45 | ||
|
|
d00b3f47ba | ||
|
|
0e555d7e01 | ||
|
|
175f06949f | ||
|
|
aa4ac49bb8 | ||
|
|
7a3eb391fa | ||
|
|
6f09738cef | ||
|
|
ccfd577715 | ||
|
|
867180e462 | ||
|
|
4979d5f31f | ||
|
|
39ebebaaf7 | ||
|
|
e75e206a3d | ||
|
|
4e5ac64aca | ||
|
|
8f15219f36 | ||
|
|
d4bad35bb0 | ||
|
|
dfa1589975 | ||
|
|
827d7f0e49 | ||
|
|
14fa99e3b4 | ||
|
|
1276cf4cd1 | ||
|
|
6cfb2249e1 | ||
|
|
7346199a92 | ||
|
|
bad342adab | ||
|
|
1ca5920113 | ||
|
|
474fbe88bf | ||
|
|
f5d8bd0853 | ||
|
|
c2a274cc5d | ||
|
|
de0290821a | ||
|
|
37ff7f635b | ||
|
|
65c084e4eb | ||
|
|
8de2451756 | ||
|
|
436b6fb354 | ||
|
|
9b0501635b | ||
|
|
fa33b4ee23 | ||
|
|
ed4a49122b | ||
|
|
de219b8555 | ||
|
|
e31e5732fd | ||
|
|
18781c5a3d | ||
|
|
9f35a59f71 | ||
|
|
79afbe2966 | ||
|
|
16d329d55b | ||
|
|
6be7b631ab | ||
|
|
1f0cd6606e | ||
|
|
59ac0e87f8 | ||
|
|
e55bbec66e | ||
|
|
3f7d79e574 | ||
|
|
ca7b5ceee5 | ||
|
|
d960210114 | ||
|
|
c1a4f0e66a | ||
|
|
559ce1e330 | ||
|
|
b2b210d6d9 | ||
|
|
d652551e86 | ||
|
|
88edf8fe4d | ||
|
|
7223790380 | ||
|
|
9c926a5d9b | ||
|
|
58d75d9d8d | ||
|
|
f94f4bc1f4 | ||
|
|
bd024eee57 | ||
|
|
89b1817211 | ||
|
|
6feb688f69 | ||
|
|
cbc1b12311 | ||
|
|
778ab8158a | ||
|
|
59171fe359 | ||
|
|
32503f3b52 | ||
|
|
a2013231a3 | ||
|
|
8c4d50c6bc | ||
|
|
efe3c038b1 | ||
|
|
d534ae5c12 | ||
|
|
336d5a5374 | ||
|
|
92a3762cb6 | ||
|
|
2c7e6947fa | ||
|
|
eda6281f98 | ||
|
|
b915cdbf0b | ||
|
|
2837a821e8 | ||
|
|
dfd90dbb82 | ||
|
|
1b48e710d5 | ||
|
|
4ba08bb119 | ||
|
|
e38901154d | ||
|
|
9a464ef869 | ||
|
|
98d5abb73c | ||
|
|
ad923f82b1 | ||
|
|
005e19ad3f | ||
|
|
8d347788b0 | ||
|
|
01a193ff6c | ||
|
|
0a4f6122de | ||
|
|
bb5ed5a4ac | ||
|
|
55465517c7 | ||
|
|
9f83d31e42 | ||
|
|
06b4ff5fe2 | ||
|
|
015fda0bb4 | ||
|
|
28121c248e | ||
|
|
79cd093cd7 | ||
|
|
6dfc868fba | ||
|
|
db5eece106 | ||
|
|
cca16eccd7 | ||
|
|
a33bca5d55 | ||
|
|
dcf65c82ad | ||
|
|
9eea00cd3c | ||
|
|
bd009b34a6 | ||
|
|
6ad7acd787 | ||
|
|
683094e308 | ||
|
|
20cef35ece | ||
|
|
3e52987229 | ||
|
|
72f60bdd84 | ||
|
|
c701f036ea | ||
|
|
3bf9a1e567 | ||
|
|
c9ff174dce | ||
|
|
4f84acb788 | ||
|
|
231436039d | ||
|
|
7ab8c5b583 | ||
|
|
5f377136be | ||
|
|
b3db0266cb | ||
|
|
8161be27db | ||
|
|
4133fd86f1 | ||
|
|
049a3a7c0e | ||
|
|
c1c8d8846f | ||
|
|
718ca3166c | ||
|
|
cc6ab2416b | ||
|
|
a7c308df9c | ||
|
|
52b86f0abe | ||
|
|
02a5db7631 | ||
|
|
dc88db015b | ||
|
|
79ac715763 | ||
|
|
48dc2831d7 | ||
|
|
318b340f5e | ||
|
|
cec8c52cbe | ||
|
|
7ec945bd41 | ||
|
|
d8766293ab | ||
|
|
b434b0a4b6 | ||
|
|
2afd18a2ce | ||
|
|
f456e64736 | ||
|
|
c38b145b89 | ||
|
|
1473ddcc65 | ||
|
|
a5524b5fe2 | ||
|
|
fdb74fed9e | ||
|
|
995bafbd72 | ||
|
|
de6f43d071 | ||
|
|
5e44a1008f | ||
|
|
82b23ecc5e | ||
|
|
4eadebe2b2 | ||
|
|
93776c4c81 | ||
|
|
652ce14e7f | ||
|
|
2639030d66 | ||
|
|
9c8fead6d8 | ||
|
|
13e53ef38a | ||
|
|
50714a9b35 | ||
|
|
a91bf68d66 | ||
|
|
333f718dd3 | ||
|
|
c59f332db2 | ||
|
|
261230343a | ||
|
|
11db6dd8ff | ||
|
|
3f95f4ffbb | ||
|
|
cf9c2ef305 | ||
|
|
f6ca532df4 | ||
|
|
02b828e63f | ||
|
|
54fdd6e834 | ||
|
|
e9a939841d | ||
|
|
ac2ea36fa5 | ||
|
|
590d391bbb | ||
|
|
aa2c4bfdc0 | ||
|
|
e356d93175 | ||
|
|
77128c867c | ||
|
|
f6f07fb41e | ||
|
|
ba5d28dcfe | ||
|
|
75fa84b67b | ||
|
|
1003ef4d67 | ||
|
|
9e1af0cef1 | ||
|
|
129e5306d0 | ||
|
|
867bc3399b | ||
|
|
18758392da | ||
|
|
0507658884 | ||
|
|
ae40e8039b | ||
|
|
4621756596 | ||
|
|
75cc4156e9 | ||
|
|
9671909289 | ||
|
|
582e261290 | ||
|
|
cd0d61e0c8 | ||
|
|
b2dbe37538 | ||
|
|
9024cf0c15 | ||
|
|
ba0e5ffc09 | ||
|
|
9a59352b4c | ||
|
|
cc60f3a3be | ||
|
|
a1de63a2d2 | ||
|
|
d99788042d | ||
|
|
62a92b7784 | ||
|
|
5e3f20a71b | ||
|
|
7a7cf952ad | ||
|
|
471110933a | ||
|
|
4f04a79250 | ||
|
|
3f0aaf7a60 | ||
|
|
baa46c3d4b | ||
|
|
65ffafdc6a | ||
|
|
4f7deb348b | ||
|
|
6ead8c7be8 | ||
|
|
6bac3508ec | ||
|
|
505a1ceda4 | ||
|
|
28442f11f0 | ||
|
|
a13a0a2beb | ||
|
|
896fb585b3 | ||
|
|
02be459f37 | ||
|
|
6f5fe11f5a | ||
|
|
c355e1f38f | ||
|
|
2a652aefe9 | ||
|
|
f95e4593ed | ||
|
|
c303cf5cc9 | ||
|
|
68ca987792 | ||
|
|
23fff6c569 | ||
|
|
b992b5b811 | ||
|
|
29c45200e7 | ||
|
|
4eaf927571 | ||
|
|
e2e138a801 | ||
|
|
a831e0f72d | ||
|
|
461ffead1f | ||
|
|
b2b43fd235 | ||
|
|
fbd2e47f51 | ||
|
|
8e292b3262 | ||
|
|
82dfb77328 | ||
|
|
0949b1fe2c | ||
|
|
dbf2e7928e | ||
|
|
3317d3d2bb | ||
|
|
601abfab30 | ||
|
|
b1e1dd2c25 | ||
|
|
54ff27a6bc | ||
|
|
cd6c016896 | ||
|
|
ce478b4fc9 | ||
|
|
7a2248acf9 | ||
|
|
e9bf8e4798 | ||
|
|
319c166a50 | ||
|
|
b673f509d2 | ||
|
|
9a903789ed | ||
|
|
460c8038c1 | ||
|
|
b3827319e0 | ||
|
|
f166cabcae | ||
|
|
025c74adee | ||
|
|
8fb5bc783f | ||
|
|
152c437bb8 | ||
|
|
913856911a | ||
|
|
17d46fd48b | ||
|
|
c80e25e482 | ||
|
|
64020dd7bc | ||
|
|
669a694d3b | ||
|
|
c416389d32 | ||
|
|
818d63a3a1 | ||
|
|
d7be8afea5 | ||
|
|
81a85070c5 | ||
|
|
7b6721b27f | ||
|
|
151b64aa3e | ||
|
|
6298061e24 | ||
|
|
1b1d63acd8 | ||
|
|
95e84464b7 | ||
|
|
9c0c44405c | ||
|
|
2a11a7dd29 | ||
|
|
b659765869 | ||
|
|
7697923eab | ||
|
|
e8c57a78aa | ||
|
|
0e1bf7d017 | ||
|
|
46dbf96bd9 | ||
|
|
bf8746126c | ||
|
|
2bef7291be | ||
|
|
00f377da93 | ||
|
|
3064d3d0ef | ||
|
|
ae0160c33b | ||
|
|
a868f335d2 | ||
|
|
164370102a | ||
|
|
d6f6eeda9d | ||
|
|
56603265ee | ||
|
|
99b25eb379 | ||
|
|
ce5ac790bb | ||
|
|
b2f8f37b80 | ||
|
|
ae5c86ba9a | ||
|
|
2d0a33208c | ||
|
|
d88efa7e40 | ||
|
|
fc99651d7d | ||
|
|
9e61693210 | ||
|
|
9163e93b9e | ||
|
|
b4baa3e751 | ||
|
|
c94bd140e3 | ||
|
|
f09c3a1189 | ||
|
|
97bb9b2be9 | ||
|
|
27cfe83a38 | ||
|
|
893ab37ce7 | ||
|
|
3290daa939 | ||
|
|
0e979358ee | ||
|
|
0e356d6a4a | ||
|
|
54b9690a4e | ||
|
|
76ec6861e5 | ||
|
|
428daba5ce | ||
|
|
07eebc42e4 | ||
|
|
3b6f9db3fb | ||
|
|
280d0ca507 | ||
|
|
5794c78159 | ||
|
|
67f824434f | ||
|
|
ce47ca8c6b | ||
|
|
05bf7e4e3e | ||
|
|
b27630a130 | ||
|
|
1ac7058a0f | ||
|
|
a0de6707c0 | ||
|
|
29e7501bef | ||
|
|
19c4fe93c4 | ||
|
|
c1d111cd2e | ||
|
|
541872bf3b | ||
|
|
faa52a704f | ||
|
|
07050fb49a | ||
|
|
e1f0aed034 | ||
|
|
15440d8027 | ||
|
|
0c23a3b0c0 | ||
|
|
065ff16e40 | ||
|
|
503e9b70cf | ||
|
|
921bc89f59 | ||
|
|
cf83016682 | ||
|
|
f2368ce181 | ||
|
|
97a680e5ce | ||
|
|
2ff57d8a39 | ||
|
|
9ff13b23f7 | ||
|
|
8283cbabdc | ||
|
|
139bc2c6ab | ||
|
|
faf2c7711a | ||
|
|
c3b6eaf3d2 | ||
|
|
55a12a4136 | ||
|
|
37df3ca8b6 | ||
|
|
08460c8cb2 | ||
|
|
b4ca282589 | ||
|
|
68f1e8e940 | ||
|
|
dfe5d3330c | ||
|
|
ea9a5e3da4 | ||
|
|
507230aa88 | ||
|
|
c6efbe5d26 | ||
|
|
e11cfafff2 | ||
|
|
276858d88f | ||
|
|
561b780ba0 | ||
|
|
1454665d70 | ||
|
|
1cf1254051 | ||
|
|
87b042a48d | ||
|
|
ff747365db | ||
|
|
241594299b | ||
|
|
58cfb2a18a | ||
|
|
8a6c37faa2 | ||
|
|
d6c50674bb | ||
|
|
83dbe04bf3 | ||
|
|
fbb08b30b8 | ||
|
|
8efd394c80 | ||
|
|
cc8c79bb69 | ||
|
|
b338e6dd21 | ||
|
|
5979471dc7 | ||
|
|
7ef2467e6a | ||
|
|
6cd89d5e9f | ||
|
|
9ecb0a9168 | ||
|
|
3219a873a9 | ||
|
|
bd3163578b | ||
|
|
eb603cb021 | ||
|
|
7e2026a50b | ||
|
|
632a0ae10b | ||
|
|
826c3ddc5b | ||
|
|
fbab100426 | ||
|
|
343333f5c4 | ||
|
|
eb7ca65b78 | ||
|
|
89b186b604 | ||
|
|
c3846425f3 | ||
|
|
68b49d87b2 | ||
|
|
99d919c90f | ||
|
|
6aae193ded | ||
|
|
25805beb29 | ||
|
|
c852810fbc | ||
|
|
cbdb69f4cc | ||
|
|
88f346a952 | ||
|
|
313d2b836f | ||
|
|
d9c4068cc3 | ||
|
|
aeda3f389e | ||
|
|
530f3dcf07 | ||
|
|
189f3ae097 | ||
|
|
13888c93a4 | ||
|
|
7fc78e7cad | ||
|
|
af69bf5491 | ||
|
|
b98ac2593c | ||
|
|
7fd3dc63de | ||
|
|
4b636bf74e | ||
|
|
0484c3a0ba | ||
|
|
f9ceddd8ca | ||
|
|
a4b97b69f3 | ||
|
|
afde30fe9b | ||
|
|
3171f0dab9 | ||
|
|
5888c2866d | ||
|
|
7b2eaca5fe | ||
|
|
5b699aaa42 | ||
|
|
7bb3d000a5 | ||
|
|
adbe2caf28 | ||
|
|
2c69734bcf | ||
|
|
34dc674fed | ||
|
|
1d49b01cc6 | ||
|
|
2cb9e8a020 | ||
|
|
e1bb8de6f0 | ||
|
|
4a83ccf071 | ||
|
|
1ab27e3d53 | ||
|
|
6b1c0a8e6f | ||
|
|
b324576858 |
+1
-29
@@ -27,38 +27,10 @@ gen.dSYM/
|
||||
.deps/
|
||||
.dirstamp
|
||||
.libs/
|
||||
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
|
||||
# ccc-analyzer store its results in .plist directories
|
||||
*.plist/
|
||||
*~
|
||||
.project
|
||||
.cproject
|
||||
.settings
|
||||
kyua.log
|
||||
+43
-2
@@ -116,7 +116,7 @@ stages:
|
||||
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
||||
# - ./autogen.sh
|
||||
script:
|
||||
- ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr --prefix=$HOME/.local --without-make-clean $EXTRA_CONFIGURE || cat config.log
|
||||
- ./configure --enable-developer --with-libtool --disable-static --with-cmocka --prefix=$HOME/.local --without-make-clean $EXTRA_CONFIGURE || cat config.log
|
||||
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
|
||||
artifacts:
|
||||
paths:
|
||||
@@ -156,7 +156,6 @@ stages:
|
||||
- kyua report-html --force --results-file kyua.results --results-filter "" --output kyua_html
|
||||
artifacts:
|
||||
paths:
|
||||
- atf.out
|
||||
- kyua.log
|
||||
- kyua.results
|
||||
- kyua_html/
|
||||
@@ -257,6 +256,7 @@ build:debian:jessie:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: --without-cmocka
|
||||
<<: *debian_jessie_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
@@ -275,6 +275,15 @@ build:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
build:asan:debian: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
|
||||
|
||||
build:clang:debian:stretch:i386:
|
||||
variables:
|
||||
CC: clang
|
||||
@@ -320,6 +329,12 @@ unittest:debian:sid:amd64:
|
||||
dependencies:
|
||||
- build:debian:sid:amd64
|
||||
|
||||
unittest:asan:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- build:asan:debian:sid:amd64
|
||||
|
||||
unittest:clang:debian:stretch:amd64:
|
||||
<<: *debian_stretch_amd64_image
|
||||
<<: *unit_test_job
|
||||
@@ -362,6 +377,12 @@ systemtest:debian:sid:amd64:
|
||||
dependencies:
|
||||
- build:debian:sid:amd64
|
||||
|
||||
systemtest:asan:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- build:asan:debian:sid:amd64
|
||||
|
||||
systemtest:debian:sid:i386:
|
||||
<<: *debian_sid_i386_image
|
||||
<<: *system_test_job
|
||||
@@ -393,3 +414,23 @@ pkcs11:systemtest:debian:sid:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- pkcs11:build:debian:sid:amd64
|
||||
|
||||
noassert:build:debian:sid:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g -DISC_CHECK_NONE=1"
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
noassert:unittest:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- noassert:build:debian:sid:amd64
|
||||
|
||||
noassert:systemtest:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- noassert:build:debian:sid:amd64
|
||||
|
||||
@@ -29,3 +29,4 @@
|
||||
- [ ] (Manager) Inform marketing of the release
|
||||
|
||||
- [ ] (SwEng) Update DEB and RPM packages
|
||||
- [ ] (SwEng) Merge the automatically prepared `prep 9.X.Y` commit which updates `version` and documentation on the release branch into the relevant maintenance branch (`v9_X`)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Content-Type: application/X-atf-atffile; version="1"
|
||||
|
||||
prop: test-suite = bind9
|
||||
|
||||
tp: lib
|
||||
@@ -1,3 +1,160 @@
|
||||
5098. [func] Failed memory allocations are now fatal. [GL #674]
|
||||
|
||||
5097. [cleanup] Remove embedded ATF unit testing framework
|
||||
from BIND source distribution. [GL !875]
|
||||
|
||||
5096. [func] Use multiple event loops in socket code, and
|
||||
make network threads CPU-affinitive. This
|
||||
significantly improves performance on large
|
||||
systems. [GL #666]
|
||||
|
||||
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]
|
||||
|
||||
5093. [bug] Log lame qname-minimization servers only if they're
|
||||
really lame. [GL #671]
|
||||
|
||||
5092. [bug] Address memory leak on SIGTERM in nsupdate when using
|
||||
GSS-TSIG. [GL #558]
|
||||
|
||||
5091. [func] Two new global and per-view options min-cache-ttl
|
||||
and min-ncache-ttl [GL #613]
|
||||
|
||||
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]
|
||||
|
||||
5089. [bug] Restore localhost fallback in dig and host which is
|
||||
used when no nameserver addresses present in
|
||||
/etc/resolv.conf are usable due to the requested
|
||||
address family restrictions. [GL #433]
|
||||
|
||||
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]
|
||||
|
||||
5085. [bug] win32: Restore looking up nameservers, search list,
|
||||
etc. [GL #186]
|
||||
|
||||
5084. [placeholder]
|
||||
|
||||
5083. [func] Add autoconf macro AX_POSIX_SHELL, so we
|
||||
can use POSIX-compatible shell features
|
||||
in the scripts.
|
||||
|
||||
5082. [bug] Fixed a race that could cause a crash in
|
||||
dig/host/nslookup. [GL #650]
|
||||
|
||||
5081. [func] Use per-worker queues in task manager, make task
|
||||
runners CPU-affine. [GL #659]
|
||||
|
||||
5080. [func] Improvements to "rndc nta" user interface:
|
||||
- catch and report invalid command line options
|
||||
- when removing an NTA from all views, do not
|
||||
abort with an error if the NTA was not found
|
||||
in one of the views
|
||||
- include the view name in "rndc nta -dump"
|
||||
output, for consistency with the add and remove
|
||||
actions
|
||||
Thanks to Tony Finch. [GL !816]
|
||||
|
||||
5079. [func] Disable IDN processing in dig and nslookup
|
||||
when not on a tty. [GL #653]
|
||||
|
||||
5078. [cleanup] Require python components to be explicitly disabled if
|
||||
python is not available on unix platforms. [GL #601]
|
||||
|
||||
5077. [cleanup] Remove ip6.int support (-i) from dig and mdig.
|
||||
[GL !969]
|
||||
|
||||
5076. [bug] "require-server-cookie" was not effective if
|
||||
"rate-limit" was configured. [GL #617]
|
||||
|
||||
5075. [bug] Refresh nameservers from cache when sending final
|
||||
query in qname minimization. [GL #16]
|
||||
|
||||
5074. [cleanup] Remove vector socket functions - isc_socket_recvv(),
|
||||
isc_socket_sendtov(), isc_socket_sendtov2(),
|
||||
isc_socket_sendv() - in order to simplify socket code.
|
||||
[GL #645]
|
||||
|
||||
5073. [bug] Destroy a task first when destroying rpzs and catzs.
|
||||
[GL #84]
|
||||
|
||||
5072. [bug] Add unit tests for isc_buffer_copyregion() and fix its
|
||||
behavior for auto-reallocated buffers. [GL #644]
|
||||
|
||||
5071. [bug] Comparision of NXT records was broken. [GL #631]
|
||||
|
||||
5070. [bug] Record types which support a empty rdata field were
|
||||
not handling the empty rdata field case. [GL #638]
|
||||
|
||||
5069. [bug] Fix a hang on in RPZ when named is shutdown during RPZ
|
||||
zone update. [GL !907]
|
||||
|
||||
5068. [bug] Fix a race in RPZ with min-update-interval set to 0.
|
||||
[GL #643]
|
||||
|
||||
5067. [bug] Don't minimize qname when sending the query
|
||||
to a forwarder. [GL #361]
|
||||
|
||||
5066. [cleanup] Allow unquoted strings to be used as a zone names
|
||||
in response-policy statements. [GL #641]
|
||||
|
||||
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
|
||||
|
||||
5064. [test] Initalize TZ environment variable before calling
|
||||
dns_test_begin in dnstap_test. [GL #624]
|
||||
|
||||
5063. [test] In statschannel test try a few times before failing
|
||||
when checking if the compressed output is the same as
|
||||
uncompressed. [GL !909]
|
||||
|
||||
5062. [func] Use non-crypto-secure PRNG to generate nonces for
|
||||
cookies. [GL !887]
|
||||
|
||||
5061. [protocol] Add support for EID and NIMLOC. [GL #626]
|
||||
|
||||
5060. [bug] GID, UID and UINFO could not be loaded using unknown
|
||||
record format. [GL #627]
|
||||
|
||||
5059. [bug] Display a per-view list of zones in the web interface.
|
||||
[GL #427]
|
||||
|
||||
5058. [func] Replace old message digest and hmac APIs with more
|
||||
generic isc_md and isc_hmac APIs, and convert their
|
||||
respective tests to cmocka. [GL #305]
|
||||
|
||||
5057. [protocol] Add support for ATMA. [GL #619]
|
||||
|
||||
5056. [placeholder]
|
||||
|
||||
5055. [func] A default list of primary servers for the root zone is
|
||||
now built into named, allowing the "masters" statement
|
||||
to be omitted when configuring an IANA root zone
|
||||
mirror. [GL #564]
|
||||
|
||||
5054. [func] Attempts to use mirror zones with recursion disabled
|
||||
are now considered a configuration error. [GL #564]
|
||||
|
||||
5053. [func] The only valid zone-level NOTIFY settings for mirror
|
||||
zones are now "notify no;" and "notify explicit;".
|
||||
[GL #564]
|
||||
|
||||
5052. [func] Mirror zones are now configured using "type mirror;"
|
||||
rather than "mirror yes;". [GL #564]
|
||||
|
||||
5051. [doc] Documentation incorrectly stated that the
|
||||
"server-addresses" static-stub zone option accepts
|
||||
custom port numbers. [GL #582]
|
||||
|
||||
5050. [bug] The libirs version of getaddrinfo() was unable to parse
|
||||
scoped IPv6 addresses present in /etc/resolv.conf.
|
||||
[GL #187]
|
||||
@@ -181,7 +338,7 @@
|
||||
5000. [bug] named_server_servestale() could leave the server in
|
||||
exclusive mode if an error occured. [GL #441]
|
||||
|
||||
4999. [cleanup] Remove custom printf implementaion in lib/isc/print.c.
|
||||
4999. [cleanup] Remove custom printf implementation in lib/isc/print.c.
|
||||
[GL #261]
|
||||
|
||||
4998. [test] Make resolver and cacheclean tests more civilized.
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ top_builddir = @top_builddir@
|
||||
|
||||
VERSION=@BIND9_VERSION@
|
||||
|
||||
SUBDIRS = make unit lib fuzz bin doc
|
||||
SUBDIRS = make lib fuzz bin doc
|
||||
TARGETS =
|
||||
PREREQS = bind.keys.h
|
||||
|
||||
|
||||
@@ -289,8 +289,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
|
||||
|
||||
|
||||
@@ -307,9 +307,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
+1
@@ -289,6 +289,7 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])dnl PKG_CHECK_VAR
|
||||
|
||||
m4_include([m4/ax_check_openssl.m4])
|
||||
m4_include([m4/ax_posix_shell.m4])
|
||||
m4_include([m4/ax_pthread.m4])
|
||||
m4_include([m4/libtool.m4])
|
||||
m4_include([m4/ltoptions.m4])
|
||||
|
||||
+24
-10
@@ -282,8 +282,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;
|
||||
@@ -300,8 +302,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;
|
||||
@@ -327,8 +331,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;
|
||||
@@ -345,8 +351,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;
|
||||
@@ -366,8 +374,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;
|
||||
}
|
||||
@@ -383,8 +393,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;
|
||||
@@ -394,14 +406,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;
|
||||
|
||||
@@ -139,12 +139,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) {
|
||||
|
||||
@@ -125,10 +125,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;
|
||||
|
||||
|
||||
+34
-1
@@ -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));
|
||||
@@ -1167,6 +1174,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;
|
||||
@@ -1224,6 +1233,7 @@ dash_option(char *option, char *next, bool *open_type_class) {
|
||||
/* NOTREACHED */
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
if (strlen(option) > 1U)
|
||||
option = &option[1];
|
||||
@@ -1367,8 +1377,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]) {
|
||||
@@ -1391,6 +1403,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+43
-11
@@ -65,8 +65,8 @@ static char domainopt[DNS_NAME_MAXTEXT];
|
||||
static char hexcookie[81];
|
||||
|
||||
static bool short_form = false, printcmd = true,
|
||||
ip6_int = false, plusquest = false, pluscomm = false,
|
||||
ipv4only = false, ipv6only = false;
|
||||
plusquest = false, pluscomm = false,
|
||||
ipv4only = false, ipv6only = false, digrc = true;
|
||||
static uint32_t splitwidth = 0xffffffff;
|
||||
|
||||
/*% opcode text */
|
||||
@@ -153,11 +153,11 @@ help(void) {
|
||||
" -b address[#port] (bind to source address/port)\n"
|
||||
" -c class (specify query class)\n"
|
||||
" -f filename (batch mode)\n"
|
||||
" -i (use IP6.INT for IPv6 reverse lookups)\n"
|
||||
" -k keyfile (specify tsig key file)\n"
|
||||
" -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 +193,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]keepalive (Request EDNS TCP keepalive)\n"
|
||||
" +[no]keepopen (Keep the TCP socket open between queries)\n"
|
||||
@@ -1542,8 +1544,8 @@ plus_option(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,
|
||||
@@ -1606,7 +1608,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
||||
exit(0);
|
||||
break;
|
||||
case 'i':
|
||||
ip6_int = true;
|
||||
/* deprecated */
|
||||
break;
|
||||
case 'm': /* memdebug */
|
||||
/* memdebug is handled in preparse_args() */
|
||||
@@ -1614,6 +1616,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':
|
||||
(*lookup)->use_usec = true;
|
||||
break;
|
||||
@@ -1787,13 +1793,12 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
||||
*lookup = clone_lookup(default_lookup, true);
|
||||
*need_clone = true;
|
||||
if (get_reverse(textname, sizeof(textname), value,
|
||||
ip6_int, false) == ISC_R_SUCCESS) {
|
||||
false) == ISC_R_SUCCESS) {
|
||||
strlcpy((*lookup)->textname, textname,
|
||||
sizeof((*lookup)->textname));
|
||||
debug("looking up %s", (*lookup)->textname);
|
||||
(*lookup)->trace_root = ((*lookup)->trace ||
|
||||
(*lookup)->ns_search_only);
|
||||
(*lookup)->ip6_int = ip6_int;
|
||||
if (!(*lookup)->rdtypeset)
|
||||
(*lookup)->rdtype = dns_rdatatype_ptr;
|
||||
if (!(*lookup)->rdclassset)
|
||||
@@ -1841,11 +1846,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");
|
||||
@@ -1859,6 +1876,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1925,8 +1956,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)) {
|
||||
|
||||
+29
-18
@@ -131,9 +131,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>
|
||||
@@ -271,17 +272,6 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-i</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Do reverse IPv6 lookups using the obsolete RFC 1886 IP6.INT
|
||||
domain, which is no longer in use. Obsolete bit string
|
||||
label queries (RFC 2874) are not attempted.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-k <replaceable class="parameter">keyfile</replaceable></term>
|
||||
<listitem>
|
||||
@@ -334,6 +324,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>
|
||||
@@ -394,8 +394,7 @@
|
||||
<literal>94.2.0.192.in-addr.arpa</literal> and sets the
|
||||
query type and class to PTR and IN respectively. IPv6
|
||||
addresses are looked up using nibble format under the
|
||||
IP6.ARPA domain (but see also the <option>-i</option>
|
||||
option).
|
||||
IP6.ARPA domain.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -789,7 +788,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>
|
||||
@@ -800,7 +805,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>
|
||||
|
||||
+136
-117
@@ -312,8 +312,7 @@ reverse_octets(const char *in, char **p, char *end) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
get_reverse(char *reverse, size_t len, char *value, bool ip6_int,
|
||||
bool strict)
|
||||
get_reverse(char *reverse, size_t len, char *value, bool strict)
|
||||
{
|
||||
int r;
|
||||
isc_result_t result;
|
||||
@@ -327,8 +326,6 @@ get_reverse(char *reverse, size_t len, char *value, bool ip6_int,
|
||||
dns_name_t *name;
|
||||
unsigned int options = 0;
|
||||
|
||||
if (ip6_int)
|
||||
options |= DNS_BYADDROPT_IPV6INT;
|
||||
name = dns_fixedname_initname(&fname);
|
||||
result = dns_byaddr_createptrname(&addr, options, name);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
@@ -628,7 +625,7 @@ make_empty_lookup(void) {
|
||||
looknew->ttlunits = false;
|
||||
looknew->qr = false;
|
||||
#ifdef HAVE_LIBIDN2
|
||||
looknew->idnin = (getenv("IDN_DISABLE") == NULL);
|
||||
looknew->idnin = isatty(1)?(getenv("IDN_DISABLE") == NULL):false;
|
||||
looknew->idnout = looknew->idnin;
|
||||
#else
|
||||
looknew->idnin = false;
|
||||
@@ -652,7 +649,6 @@ make_empty_lookup(void) {
|
||||
looknew->nsfound = 0;
|
||||
looknew->tcp_mode = false;
|
||||
looknew->tcp_mode_set = false;
|
||||
looknew->ip6_int = false;
|
||||
looknew->comments = true;
|
||||
looknew->stats = true;
|
||||
looknew->section_question = true;
|
||||
@@ -1231,6 +1227,19 @@ create_search_list(irs_resconf_t *resconf) {
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
* Append 'addr' to the list of servers to be queried. This function is only
|
||||
* called when no server addresses are explicitly specified and either libirs
|
||||
* returns an empty list of servers to use or none of the addresses returned by
|
||||
* libirs are usable due to the specified address family restrictions.
|
||||
*/
|
||||
static void
|
||||
add_fallback_nameserver(const char *addr) {
|
||||
dig_server_t *server = make_server(addr, addr);
|
||||
ISC_LINK_INIT(server, link);
|
||||
ISC_LIST_APPEND(server_list, server, link);
|
||||
}
|
||||
|
||||
/*%
|
||||
* Setup the system as a whole, reading key information and resolv.conf
|
||||
* settings.
|
||||
@@ -1276,6 +1285,16 @@ setup_system(bool ipv4only, bool ipv6only) {
|
||||
get_server_list(resconf);
|
||||
}
|
||||
|
||||
/* If we don't find a nameserver fall back to localhost */
|
||||
if (ISC_LIST_EMPTY(server_list)) {
|
||||
if (have_ipv6) {
|
||||
add_fallback_nameserver("::1");
|
||||
}
|
||||
if (have_ipv4) {
|
||||
add_fallback_nameserver("127.0.0.1");
|
||||
}
|
||||
}
|
||||
|
||||
irs_resconf_destroy(&resconf);
|
||||
|
||||
#ifdef HAVE_SETLOCALE
|
||||
@@ -1523,23 +1542,21 @@ clear_query(dig_query_t *query) {
|
||||
|
||||
debug("clear_query(%p)", query);
|
||||
|
||||
if (query->timer != NULL)
|
||||
if (query->timer != NULL) {
|
||||
isc_timer_detach(&query->timer);
|
||||
}
|
||||
lookup = query->lookup;
|
||||
|
||||
if (lookup->current_query == query)
|
||||
if (lookup->current_query == query) {
|
||||
lookup->current_query = NULL;
|
||||
}
|
||||
|
||||
if (ISC_LINK_LINKED(query, link))
|
||||
if (ISC_LINK_LINKED(query, link)) {
|
||||
ISC_LIST_UNLINK(lookup->q, query, link);
|
||||
if (ISC_LINK_LINKED(query, clink))
|
||||
}
|
||||
if (ISC_LINK_LINKED(query, clink)) {
|
||||
ISC_LIST_UNLINK(lookup->connecting, query, clink);
|
||||
if (ISC_LINK_LINKED(&query->recvbuf, link))
|
||||
ISC_LIST_DEQUEUE(query->recvlist, &query->recvbuf,
|
||||
link);
|
||||
if (ISC_LINK_LINKED(&query->lengthbuf, link))
|
||||
ISC_LIST_DEQUEUE(query->lengthlist, &query->lengthbuf,
|
||||
link);
|
||||
}
|
||||
INSIST(query->recvspace != NULL);
|
||||
|
||||
if (query->sock != NULL) {
|
||||
@@ -1548,12 +1565,16 @@ clear_query(dig_query_t *query) {
|
||||
debug("sockcount=%d", sockcount);
|
||||
}
|
||||
isc_mempool_put(commctx, query->recvspace);
|
||||
isc_mempool_put(commctx, query->tmpsendspace);
|
||||
isc_buffer_invalidate(&query->recvbuf);
|
||||
isc_buffer_invalidate(&query->lengthbuf);
|
||||
if (query->waiting_senddone)
|
||||
|
||||
if (query->waiting_senddone) {
|
||||
query->pending_free = true;
|
||||
else
|
||||
} else {
|
||||
query->magic = 0;
|
||||
isc_mem_free(mctx, query);
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
@@ -2293,7 +2314,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;
|
||||
@@ -2350,6 +2371,7 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
isc_buffer_init(&b, ecsbuf, sizeof(ecsbuf));
|
||||
@@ -2461,13 +2483,14 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
|
||||
for (serv = ISC_LIST_HEAD(lookup->my_server_list);
|
||||
serv != NULL;
|
||||
serv = ISC_LIST_NEXT(serv, link)) {
|
||||
serv = ISC_LIST_NEXT(serv, link))
|
||||
{
|
||||
query = isc_mem_allocate(mctx, sizeof(dig_query_t));
|
||||
if (query == NULL)
|
||||
if (query == NULL) {
|
||||
fatal("memory allocation failure in %s:%d",
|
||||
__FILE__, __LINE__);
|
||||
debug("create query %p linked to lookup %p",
|
||||
query, lookup);
|
||||
}
|
||||
debug("create query %p linked to lookup %p", query, lookup);
|
||||
query->lookup = lookup;
|
||||
query->timer = NULL;
|
||||
query->waiting_connect = false;
|
||||
@@ -2488,20 +2511,24 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
query->msg_count = 0;
|
||||
query->byte_count = 0;
|
||||
query->ixfr_axfr = false;
|
||||
ISC_LIST_INIT(query->recvlist);
|
||||
ISC_LIST_INIT(query->lengthlist);
|
||||
query->sock = NULL;
|
||||
query->recvspace = isc_mempool_get(commctx);
|
||||
if (query->recvspace == NULL)
|
||||
query->tmpsendspace = isc_mempool_get(commctx);
|
||||
if (query->recvspace == NULL) {
|
||||
fatal("memory allocation failure");
|
||||
}
|
||||
|
||||
isc_buffer_init(&query->recvbuf, query->recvspace, COMMSIZE);
|
||||
isc_buffer_init(&query->lengthbuf, query->lengthspace, 2);
|
||||
isc_buffer_init(&query->slbuf, query->slspace, 2);
|
||||
isc_buffer_init(&query->tmpsendbuf, query->tmpsendspace,
|
||||
COMMSIZE);
|
||||
query->sendbuf = lookup->renderbuf;
|
||||
|
||||
ISC_LINK_INIT(query, clink);
|
||||
ISC_LINK_INIT(query, link);
|
||||
|
||||
query->magic = DIG_QUERY_MAGIC;
|
||||
|
||||
ISC_LIST_ENQUEUE(lookup->q, query, link);
|
||||
}
|
||||
|
||||
@@ -2510,9 +2537,10 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
extrabytes = 0;
|
||||
dighost_printmessage(ISC_LIST_HEAD(lookup->q),
|
||||
lookup->sendmsg, true);
|
||||
if (lookup->stats)
|
||||
if (lookup->stats) {
|
||||
printf(";; QUERY SIZE: %u\n\n",
|
||||
isc_buffer_usedlength(&lookup->renderbuf));
|
||||
}
|
||||
}
|
||||
return (true);
|
||||
}
|
||||
@@ -2523,8 +2551,6 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
*/
|
||||
static void
|
||||
send_done(isc_task_t *_task, isc_event_t *event) {
|
||||
isc_socketevent_t *sevent = (isc_socketevent_t *)event;
|
||||
isc_buffer_t *b = NULL;
|
||||
dig_query_t *query, *next;
|
||||
dig_lookup_t *l;
|
||||
|
||||
@@ -2539,28 +2565,27 @@ send_done(isc_task_t *_task, isc_event_t *event) {
|
||||
debug("sendcount=%d", sendcount);
|
||||
INSIST(sendcount >= 0);
|
||||
|
||||
for (b = ISC_LIST_HEAD(sevent->bufferlist);
|
||||
b != NULL;
|
||||
b = ISC_LIST_HEAD(sevent->bufferlist)) {
|
||||
ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
|
||||
isc_mem_free(mctx, b);
|
||||
}
|
||||
|
||||
query = event->ev_arg;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
query->waiting_senddone = false;
|
||||
l = query->lookup;
|
||||
|
||||
if (l->ns_search_only && !l->trace_root && !l->tcp_mode) {
|
||||
if (!query->pending_free && l->ns_search_only &&
|
||||
!l->trace_root && !l->tcp_mode)
|
||||
{
|
||||
debug("sending next, since searching");
|
||||
next = ISC_LIST_NEXT(query, link);
|
||||
if (next != NULL)
|
||||
if (next != NULL) {
|
||||
send_udp(next);
|
||||
}
|
||||
}
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
if (query->pending_free)
|
||||
if (query->pending_free) {
|
||||
query->magic = 0;
|
||||
isc_mem_free(mctx, query);
|
||||
}
|
||||
|
||||
check_if_done();
|
||||
UNLOCK_LOOKUP;
|
||||
@@ -2578,6 +2603,7 @@ cancel_lookup(dig_lookup_t *lookup) {
|
||||
debug("cancel_lookup()");
|
||||
query = ISC_LIST_HEAD(lookup->q);
|
||||
while (query != NULL) {
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
next = ISC_LIST_NEXT(query, link);
|
||||
if (query->sock != NULL) {
|
||||
isc_socket_cancel(query->sock, global_task,
|
||||
@@ -2597,6 +2623,7 @@ bringup_timer(dig_query_t *query, unsigned int default_timeout) {
|
||||
dig_lookup_t *l;
|
||||
unsigned int local_timeout;
|
||||
isc_result_t result;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
debug("bringup_timer()");
|
||||
/*
|
||||
@@ -2661,6 +2688,7 @@ send_tcp_connect(dig_query_t *query) {
|
||||
isc_result_t result;
|
||||
dig_query_t *next;
|
||||
dig_lookup_t *l;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
debug("send_tcp_connect(%p)", query);
|
||||
|
||||
@@ -2777,17 +2805,6 @@ send_tcp_connect(dig_query_t *query) {
|
||||
}
|
||||
}
|
||||
|
||||
static isc_buffer_t *
|
||||
clone_buffer(isc_buffer_t *source) {
|
||||
isc_buffer_t *buffer;
|
||||
buffer = isc_mem_allocate(mctx, sizeof(*buffer));
|
||||
if (buffer == NULL)
|
||||
fatal("memory allocation failure in %s:%d",
|
||||
__FILE__, __LINE__);
|
||||
*buffer = *source;
|
||||
return (buffer);
|
||||
}
|
||||
|
||||
/*%
|
||||
* Send a UDP packet to the remote nameserver, possible starting the
|
||||
* recv action as well. Also make sure that the timer is running and
|
||||
@@ -2797,8 +2814,10 @@ static void
|
||||
send_udp(dig_query_t *query) {
|
||||
dig_lookup_t *l = NULL;
|
||||
isc_result_t result;
|
||||
isc_buffer_t *sendbuf;
|
||||
dig_query_t *next;
|
||||
isc_region_t r;
|
||||
isc_socketevent_t *sevent;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
debug("send_udp(%p)", query);
|
||||
|
||||
@@ -2859,29 +2878,27 @@ send_udp(dig_query_t *query) {
|
||||
check_result(result, "isc_socket_bind");
|
||||
|
||||
query->recv_made = true;
|
||||
ISC_LINK_INIT(&query->recvbuf, link);
|
||||
ISC_LIST_ENQUEUE(query->recvlist, &query->recvbuf,
|
||||
link);
|
||||
isc_buffer_availableregion(&query->recvbuf, &r);
|
||||
debug("recving with lookup=%p, query=%p, sock=%p",
|
||||
query->lookup, query, query->sock);
|
||||
result = isc_socket_recvv(query->sock, &query->recvlist, 1,
|
||||
global_task, recv_done, query);
|
||||
check_result(result, "isc_socket_recvv");
|
||||
result = isc_socket_recv(query->sock, &r, 1,
|
||||
global_task, recv_done, query);
|
||||
check_result(result, "isc_socket_recv");
|
||||
recvcount++;
|
||||
debug("recvcount=%d", recvcount);
|
||||
}
|
||||
ISC_LIST_INIT(query->sendlist);
|
||||
sendbuf = clone_buffer(&query->sendbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, sendbuf, link);
|
||||
isc_buffer_usedregion(&query->sendbuf, &r);
|
||||
debug("sending a request");
|
||||
TIME_NOW(&query->time_sent);
|
||||
INSIST(query->sock != NULL);
|
||||
query->waiting_senddone = true;
|
||||
result = isc_socket_sendtov2(query->sock, &query->sendlist,
|
||||
global_task, send_done, query,
|
||||
&query->sockaddr, NULL,
|
||||
ISC_SOCKFLAG_NORETRY);
|
||||
check_result(result, "isc_socket_sendtov");
|
||||
sevent = isc_socket_socketevent(mctx, query->sock,
|
||||
ISC_SOCKEVENT_SENDDONE,
|
||||
send_done, query);
|
||||
result = isc_socket_sendto2(query->sock, &r,
|
||||
global_task, &query->sockaddr, NULL,
|
||||
sevent, ISC_SOCKFLAG_NORETRY);
|
||||
check_result(result, "isc_socket_sendto2");
|
||||
sendcount++;
|
||||
}
|
||||
|
||||
@@ -2902,11 +2919,17 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
LOCK_LOOKUP;
|
||||
query = event->ev_arg;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
l = query->lookup;
|
||||
isc_event_free(&event);
|
||||
|
||||
INSIST(!free_now);
|
||||
|
||||
if (cancel_now) {
|
||||
UNLOCK_LOOKUP;
|
||||
return;
|
||||
}
|
||||
|
||||
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)) {
|
||||
@@ -2971,7 +2994,8 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
||||
static void
|
||||
tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
||||
isc_socketevent_t *sevent;
|
||||
isc_buffer_t *b = NULL;
|
||||
isc_buffer_t b;
|
||||
isc_region_t r;
|
||||
isc_result_t result;
|
||||
dig_query_t *query = NULL;
|
||||
dig_lookup_t *l, *n;
|
||||
@@ -2987,14 +3011,11 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
||||
LOCK_LOOKUP;
|
||||
sevent = (isc_socketevent_t *)event;
|
||||
query = event->ev_arg;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
recvcount--;
|
||||
INSIST(recvcount >= 0);
|
||||
|
||||
b = ISC_LIST_HEAD(sevent->bufferlist);
|
||||
INSIST(b == &query->lengthbuf);
|
||||
ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
|
||||
|
||||
if (sevent->result == ISC_R_CANCELED) {
|
||||
isc_event_free(&event);
|
||||
l = query->lookup;
|
||||
@@ -3027,7 +3048,10 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
||||
UNLOCK_LOOKUP;
|
||||
return;
|
||||
}
|
||||
length = isc_buffer_getuint16(b);
|
||||
isc_buffer_init(&b, sevent->region.base, sevent->n);
|
||||
isc_buffer_add(&b, sevent->n);
|
||||
length = isc_buffer_getuint16(&b);
|
||||
|
||||
if (length == 0) {
|
||||
isc_event_free(&event);
|
||||
launch_next_query(query, false);
|
||||
@@ -3041,13 +3065,11 @@ tcp_length_done(isc_task_t *task, isc_event_t *event) {
|
||||
*/
|
||||
isc_buffer_invalidate(&query->recvbuf);
|
||||
isc_buffer_init(&query->recvbuf, query->recvspace, length);
|
||||
ENSURE(ISC_LIST_EMPTY(query->recvlist));
|
||||
ISC_LINK_INIT(&query->recvbuf, link);
|
||||
ISC_LIST_ENQUEUE(query->recvlist, &query->recvbuf, link);
|
||||
isc_buffer_availableregion(&query->recvbuf, &r);
|
||||
debug("recving with lookup=%p, query=%p", query->lookup, query);
|
||||
result = isc_socket_recvv(query->sock, &query->recvlist, length, task,
|
||||
recv_done, query);
|
||||
check_result(result, "isc_socket_recvv");
|
||||
result = isc_socket_recv(query->sock, &r, length, task,
|
||||
recv_done, query);
|
||||
check_result(result, "isc_socket_recv");
|
||||
recvcount++;
|
||||
debug("resubmitted recv request with length %d, recvcount=%d",
|
||||
length, recvcount);
|
||||
@@ -3063,7 +3085,8 @@ static void
|
||||
launch_next_query(dig_query_t *query, bool include_question) {
|
||||
isc_result_t result;
|
||||
dig_lookup_t *l;
|
||||
isc_buffer_t *buffer;
|
||||
isc_region_t r;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
INSIST(!free_now);
|
||||
|
||||
@@ -3082,35 +3105,28 @@ launch_next_query(dig_query_t *query, bool include_question) {
|
||||
return;
|
||||
}
|
||||
|
||||
isc_buffer_clear(&query->slbuf);
|
||||
isc_buffer_clear(&query->lengthbuf);
|
||||
isc_buffer_putuint16(&query->slbuf, (uint16_t) query->sendbuf.used);
|
||||
ISC_LIST_INIT(query->sendlist);
|
||||
ISC_LINK_INIT(&query->slbuf, link);
|
||||
if (!query->first_soa_rcvd) {
|
||||
buffer = clone_buffer(&query->slbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
|
||||
if (include_question) {
|
||||
buffer = clone_buffer(&query->sendbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
|
||||
}
|
||||
}
|
||||
|
||||
ISC_LINK_INIT(&query->lengthbuf, link);
|
||||
ISC_LIST_ENQUEUE(query->lengthlist, &query->lengthbuf, link);
|
||||
|
||||
result = isc_socket_recvv(query->sock, &query->lengthlist, 0,
|
||||
global_task, tcp_length_done, query);
|
||||
check_result(result, "isc_socket_recvv");
|
||||
isc_buffer_availableregion(&query->lengthbuf, &r);
|
||||
result = isc_socket_recv(query->sock, &r, 0,
|
||||
global_task, tcp_length_done, query);
|
||||
check_result(result, "isc_socket_recv");
|
||||
recvcount++;
|
||||
debug("recvcount=%d", recvcount);
|
||||
if (!query->first_soa_rcvd) {
|
||||
debug("sending a request in launch_next_query");
|
||||
TIME_NOW(&query->time_sent);
|
||||
query->waiting_senddone = true;
|
||||
result = isc_socket_sendv(query->sock, &query->sendlist,
|
||||
global_task, send_done, query);
|
||||
check_result(result, "isc_socket_sendv");
|
||||
isc_buffer_clear(&query->tmpsendbuf);
|
||||
isc_buffer_putuint16(&query->tmpsendbuf,
|
||||
isc_buffer_usedlength(&query->sendbuf));
|
||||
if (include_question) {
|
||||
isc_buffer_usedregion(&query->sendbuf, &r);
|
||||
isc_buffer_copyregion(&query->tmpsendbuf, &r);
|
||||
}
|
||||
isc_buffer_usedregion(&query->tmpsendbuf, &r);
|
||||
result = isc_socket_send(query->sock, &r,
|
||||
global_task, send_done, query);
|
||||
check_result(result, "isc_socket_send");
|
||||
sendcount++;
|
||||
debug("sendcount=%d", sendcount);
|
||||
}
|
||||
@@ -3143,6 +3159,7 @@ connect_done(isc_task_t *task, isc_event_t *event) {
|
||||
LOCK_LOOKUP;
|
||||
sevent = (isc_socketevent_t *)event;
|
||||
query = sevent->ev_arg;
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
|
||||
INSIST(query->waiting_connect);
|
||||
|
||||
@@ -3460,8 +3477,9 @@ ednsvers(dns_rdataset_t *opt) {
|
||||
static void
|
||||
recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
isc_socketevent_t *sevent = NULL;
|
||||
isc_region_t r;
|
||||
dig_query_t *query = NULL;
|
||||
isc_buffer_t *b = NULL;
|
||||
isc_buffer_t b;
|
||||
dns_message_t *msg = NULL;
|
||||
isc_result_t result;
|
||||
dig_lookup_t *n, *l;
|
||||
@@ -3491,9 +3509,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
REQUIRE(event->ev_type == ISC_SOCKEVENT_RECVDONE);
|
||||
sevent = (isc_socketevent_t *)event;
|
||||
|
||||
b = ISC_LIST_HEAD(sevent->bufferlist);
|
||||
INSIST(b == &query->recvbuf);
|
||||
ISC_LIST_DEQUEUE(sevent->bufferlist, &query->recvbuf, link);
|
||||
isc_buffer_init(&b, sevent->region.base, sevent->n);
|
||||
isc_buffer_add(&b, sevent->n);
|
||||
|
||||
if ((l->tcp_mode) && (query->timer != NULL))
|
||||
isc_timer_touch(query->timer);
|
||||
@@ -3569,7 +3586,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
}
|
||||
|
||||
result = dns_message_peekheader(b, &id, &msgflags);
|
||||
result = dns_message_peekheader(&b, &id, &msgflags);
|
||||
if (result != ISC_R_SUCCESS || l->sendmsg->id != id) {
|
||||
match = false;
|
||||
if (l->tcp_mode) {
|
||||
@@ -3638,7 +3655,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
parseflags |= DNS_MESSAGEPARSE_BESTEFFORT;
|
||||
parseflags |= DNS_MESSAGEPARSE_IGNORETRUNCATION;
|
||||
}
|
||||
result = dns_message_parse(msg, b, parseflags);
|
||||
result = dns_message_parse(msg, &b, parseflags);
|
||||
if (result == DNS_R_RECOVERABLE) {
|
||||
printf(";; Warning: Message parser reports malformed "
|
||||
"message packet.\n");
|
||||
@@ -3646,7 +3663,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
printf(";; Got bad packet: %s\n", isc_result_totext(result));
|
||||
hex_dump(b);
|
||||
hex_dump(&b);
|
||||
query->waiting_connect = false;
|
||||
dns_message_destroy(&msg);
|
||||
isc_event_free(&event);
|
||||
@@ -3800,7 +3817,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
|
||||
if (tsigkey != NULL) {
|
||||
result = dns_tsig_verify(&query->recvbuf, msg, NULL, NULL);
|
||||
result = dns_tsig_verify(&b, msg, NULL, NULL);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
printf(";; Couldn't verify signature: %s\n",
|
||||
isc_result_totext(result));
|
||||
@@ -3816,7 +3833,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
check_result(result,"dns_message_getquerytsig");
|
||||
}
|
||||
|
||||
extrabytes = isc_buffer_remaininglength(b);
|
||||
extrabytes = isc_buffer_remaininglength(&b);
|
||||
|
||||
debug("after parse");
|
||||
if (l->doing_xfr && l->xfr_q == NULL) {
|
||||
@@ -3863,8 +3880,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
(l->origin != NULL || l->need_search)) {
|
||||
if (!next_origin(query->lookup) || showsearch) {
|
||||
dighost_printmessage(query, msg, true);
|
||||
dighost_received(b->used, &sevent->address,
|
||||
query);
|
||||
dighost_received(isc_buffer_usedlength(&b),
|
||||
&sevent->address, query);
|
||||
}
|
||||
} else if (!l->trace && !l->ns_search_only) {
|
||||
dighost_printmessage(query, msg, true);
|
||||
@@ -3931,7 +3948,8 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
} else {
|
||||
|
||||
if (msg->rcode == dns_rcode_noerror || l->origin == NULL) {
|
||||
dighost_received(b->used, &sevent->address, query);
|
||||
dighost_received(isc_buffer_usedlength(&b),
|
||||
&sevent->address, query);
|
||||
}
|
||||
|
||||
if (!query->lookup->ns_search_only)
|
||||
@@ -3955,10 +3973,10 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
udp_mismatch:
|
||||
isc_buffer_invalidate(&query->recvbuf);
|
||||
isc_buffer_init(&query->recvbuf, query->recvspace, COMMSIZE);
|
||||
ISC_LIST_ENQUEUE(query->recvlist, &query->recvbuf, link);
|
||||
result = isc_socket_recvv(query->sock, &query->recvlist, 1,
|
||||
global_task, recv_done, query);
|
||||
check_result(result, "isc_socket_recvv");
|
||||
isc_buffer_availableregion(&query->recvbuf, &r);
|
||||
result = isc_socket_recv(query->sock, &r, 1,
|
||||
global_task, recv_done, query);
|
||||
check_result(result, "isc_socket_recv");
|
||||
recvcount++;
|
||||
isc_event_free(&event);
|
||||
UNLOCK_LOOKUP;
|
||||
@@ -4033,6 +4051,7 @@ do_lookup(dig_lookup_t *lookup) {
|
||||
lookup->pending = true;
|
||||
query = ISC_LIST_HEAD(lookup->q);
|
||||
if (query != NULL) {
|
||||
REQUIRE(DIG_VALID_QUERY(query));
|
||||
if (lookup->tcp_mode)
|
||||
send_tcp_connect(query);
|
||||
else
|
||||
|
||||
+3
-4
@@ -143,7 +143,6 @@ show_usage(void) {
|
||||
" -c specifies query class for non-IN data\n"
|
||||
" -C compares SOA records on authoritative nameservers\n"
|
||||
" -d is equivalent to -v\n"
|
||||
" -i IP6.INT reverse lookups\n"
|
||||
" -l lists all hosts in a domain, using AXFR\n"
|
||||
" -m set memory debugging flag (trace|record|usage)\n"
|
||||
" -N changes the number of dots allowed before root lookup is done\n"
|
||||
@@ -762,7 +761,7 @@ parse_args(bool is_batchfile, int argc, char **argv) {
|
||||
default_lookups = false;
|
||||
break;
|
||||
case 'i':
|
||||
lookup->ip6_int = true;
|
||||
/* deprecated */
|
||||
break;
|
||||
case 'n':
|
||||
/* deprecated */
|
||||
@@ -841,8 +840,8 @@ parse_args(bool is_batchfile, int argc, char **argv) {
|
||||
check_ra = true;
|
||||
|
||||
lookup->pending = false;
|
||||
if (get_reverse(store, sizeof(store), hostname,
|
||||
lookup->ip6_int, true) == ISC_R_SUCCESS) {
|
||||
if (get_reverse(store, sizeof(store), hostname, true)
|
||||
== ISC_R_SUCCESS) {
|
||||
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
||||
lookup->rdtype = dns_rdatatype_ptr;
|
||||
lookup->rdtypeset = true;
|
||||
|
||||
@@ -179,18 +179,6 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-i</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Obsolete.
|
||||
Use the IP6.INT domain for reverse lookups of IPv6
|
||||
addresses as defined in RFC1886 and deprecated in RFC4159.
|
||||
The default is to use IP6.ARPA as specified in RFC3596.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-l</term>
|
||||
<listitem>
|
||||
|
||||
+12
-11
@@ -26,6 +26,7 @@
|
||||
#include <isc/formatcheck.h>
|
||||
#include <isc/lang.h>
|
||||
#include <isc/list.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/sockaddr.h>
|
||||
@@ -81,6 +82,11 @@ typedef struct dig_server dig_server_t;
|
||||
typedef ISC_LIST(dig_server_t) dig_serverlist_t;
|
||||
typedef struct dig_searchlist dig_searchlist_t;
|
||||
|
||||
#define DIG_QUERY_MAGIC ISC_MAGIC('D','i','g','q')
|
||||
|
||||
#define DIG_VALID_QUERY(x) ISC_MAGIC_VALID((x), DIG_QUERY_MAGIC)
|
||||
|
||||
|
||||
/*% The dig_lookup structure */
|
||||
struct dig_lookup {
|
||||
bool
|
||||
@@ -103,7 +109,6 @@ struct dig_lookup {
|
||||
trace_root, /*% initial query for either +trace or +nssearch */
|
||||
tcp_mode,
|
||||
tcp_mode_set,
|
||||
ip6_int,
|
||||
comments,
|
||||
stats,
|
||||
section_question,
|
||||
@@ -185,6 +190,7 @@ struct dig_lookup {
|
||||
|
||||
/*% The dig_query structure */
|
||||
struct dig_query {
|
||||
unsigned int magic;
|
||||
dig_lookup_t *lookup;
|
||||
bool waiting_connect,
|
||||
pending_free,
|
||||
@@ -203,15 +209,12 @@ struct dig_query {
|
||||
bool ixfr_axfr;
|
||||
char *servname;
|
||||
char *userarg;
|
||||
isc_bufferlist_t sendlist,
|
||||
recvlist,
|
||||
lengthlist;
|
||||
isc_buffer_t recvbuf,
|
||||
lengthbuf,
|
||||
slbuf;
|
||||
char *recvspace,
|
||||
lengthspace[4],
|
||||
slspace[4];
|
||||
tmpsendbuf,
|
||||
sendbuf;
|
||||
char *recvspace, *tmpsendspace,
|
||||
lengthspace[4];
|
||||
isc_socket_t *sock;
|
||||
ISC_LINK(dig_query_t) link;
|
||||
ISC_LINK(dig_query_t) clink;
|
||||
@@ -219,7 +222,6 @@ struct dig_query {
|
||||
isc_time_t time_sent;
|
||||
isc_time_t time_recv;
|
||||
uint64_t byte_count;
|
||||
isc_buffer_t sendbuf;
|
||||
isc_timer_t *timer;
|
||||
};
|
||||
|
||||
@@ -284,8 +286,7 @@ int
|
||||
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
|
||||
|
||||
isc_result_t
|
||||
get_reverse(char *reverse, size_t len, char *value, bool ip6_int,
|
||||
bool strict);
|
||||
get_reverse(char *reverse, size_t len, char *value, bool strict);
|
||||
|
||||
ISC_PLATFORM_NORETURN_PRE void
|
||||
fatal(const char *format, ...)
|
||||
|
||||
+1
-7
@@ -772,7 +772,7 @@ addlookup(char *opt) {
|
||||
rdclass = dns_rdataclass_in;
|
||||
}
|
||||
lookup = make_empty_lookup();
|
||||
if (get_reverse(store, sizeof(store), opt, lookup->ip6_int, true)
|
||||
if (get_reverse(store, sizeof(store), opt, true)
|
||||
== ISC_R_SUCCESS) {
|
||||
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
||||
lookup->rdtype = dns_rdatatype_ptr;
|
||||
@@ -923,12 +923,6 @@ flush_lookup_list(void) {
|
||||
ISC_SOCKCANCEL_ALL);
|
||||
isc_socket_detach(&q->sock);
|
||||
}
|
||||
if (ISC_LINK_LINKED(&q->recvbuf, link))
|
||||
ISC_LIST_DEQUEUE(q->recvlist, &q->recvbuf,
|
||||
link);
|
||||
if (ISC_LINK_LINKED(&q->lengthbuf, link))
|
||||
ISC_LIST_DEQUEUE(q->lengthlist, &q->lengthbuf,
|
||||
link);
|
||||
isc_buffer_invalidate(&q->recvbuf);
|
||||
isc_buffer_invalidate(&q->lengthbuf);
|
||||
qp = q;
|
||||
|
||||
@@ -489,7 +489,8 @@ nslookup -query=hinfo -timeout=10
|
||||
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.
|
||||
<command>nslookup</command> runs or when the standard output is not
|
||||
a tty.
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
|
||||
@@ -163,8 +163,8 @@ verbose_time(int level, const char *msg, isc_stdtime_t time) {
|
||||
if (verbose < 3) {
|
||||
vbprintf(level, "%s %s\n", msg, timestr);
|
||||
} else {
|
||||
vbprintf(level, "%s %s (%lld)\n",
|
||||
msg, timestr, (long long)time);
|
||||
vbprintf(level, "%s %s (%" PRIu32 ")\n",
|
||||
msg, timestr, time);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ usage(void) {
|
||||
fprintf(stderr, " name: owner of the key\n");
|
||||
fprintf(stderr, "Other options:\n");
|
||||
fprintf(stderr, " -a algorithm: \n"
|
||||
" RSA | RSAMD5 | DH | DSA | RSASHA1 |\n"
|
||||
" NSEC3DSA | NSEC3RSASHA1 |\n"
|
||||
" RSA | RSAMD5 | DH | RSASHA1 |\n"
|
||||
" NSEC3RSASHA1 |\n"
|
||||
" RSASHA256 | RSASHA512 |\n"
|
||||
" ECDSAP256SHA256 | ECDSAP384SHA384\n");
|
||||
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
||||
@@ -402,13 +402,9 @@ main(int argc, char **argv) {
|
||||
|
||||
if (use_nsec3) {
|
||||
switch (alg) {
|
||||
case DST_ALG_DSA:
|
||||
alg = DST_ALG_NSEC3DSA;
|
||||
break;
|
||||
case DST_ALG_RSASHA1:
|
||||
alg = DST_ALG_NSEC3RSASHA1;
|
||||
break;
|
||||
case DST_ALG_NSEC3DSA:
|
||||
case DST_ALG_NSEC3RSASHA1:
|
||||
case DST_ALG_RSASHA256:
|
||||
case DST_ALG_RSASHA512:
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
<para>
|
||||
Selects the cryptographic algorithm. The value of
|
||||
<option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
||||
</para>
|
||||
<para>
|
||||
@@ -119,9 +119,9 @@
|
||||
<para>
|
||||
These values are case insensitive. In some cases, abbreviations
|
||||
are supported, such as ECDSA256 for ECDSAP256SHA256 and
|
||||
ECDSA384 for ECDSAP384SHA384. If RSASHA1 or DSA is specified
|
||||
ECDSA384 for ECDSAP384SHA384. If RSASHA1 is specified
|
||||
along with the <option>-3</option> option, then NSEC3RSASHA1
|
||||
or NSEC3DSA will be used instead.
|
||||
will be used instead.
|
||||
</para>
|
||||
<para>
|
||||
As of BIND 9.12.0, this option is mandatory except when using
|
||||
|
||||
@@ -79,8 +79,8 @@ usage(void) {
|
||||
fprintf(stderr, "Options:\n");
|
||||
fprintf(stderr, " -K <directory>: write keys into directory\n");
|
||||
fprintf(stderr, " -a <algorithm>:\n");
|
||||
fprintf(stderr, " RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1"
|
||||
" | NSEC3DSA |\n");
|
||||
fprintf(stderr, " RSA | RSAMD5 | RSASHA1 | NSEC3RSASHA1"
|
||||
" |\n");
|
||||
fprintf(stderr, " RSASHA256 | RSASHA512 |\n");
|
||||
fprintf(stderr, " ECDSAP256SHA256 | ECDSAP384SHA384 |\n");
|
||||
fprintf(stderr, " ED25519 | ED448 | DH\n");
|
||||
@@ -92,10 +92,6 @@ usage(void) {
|
||||
fprintf(stderr, " RSASHA256:\t[1024..%d]\n", MAX_RSA);
|
||||
fprintf(stderr, " RSASHA512:\t[1024..%d]\n", MAX_RSA);
|
||||
fprintf(stderr, " DH:\t\t[128..4096]\n");
|
||||
fprintf(stderr, " DSA:\t\t[512..1024] and divisible by 64\n");
|
||||
fprintf(stderr, " NSEC3DSA:\t[512..1024] and divisible "
|
||||
"by 64\n");
|
||||
fprintf(stderr, " ECCGOST:\tignored\n");
|
||||
fprintf(stderr, " ECDSAP256SHA256:\tignored\n");
|
||||
fprintf(stderr, " ECDSAP384SHA384:\tignored\n");
|
||||
fprintf(stderr, " ED25519:\tignored\n");
|
||||
@@ -161,11 +157,6 @@ usage(void) {
|
||||
exit (-1);
|
||||
}
|
||||
|
||||
static bool
|
||||
dsa_size_ok(int size) {
|
||||
return (size >= 512 && size <= 1024 && size % 64 == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
progress(int p)
|
||||
{
|
||||
@@ -542,17 +533,12 @@ main(int argc, char **argv) {
|
||||
|
||||
if (use_nsec3) {
|
||||
switch (alg) {
|
||||
case DST_ALG_DSA:
|
||||
alg = DST_ALG_NSEC3DSA;
|
||||
break;
|
||||
case DST_ALG_RSASHA1:
|
||||
alg = DST_ALG_NSEC3RSASHA1;
|
||||
break;
|
||||
case DST_ALG_NSEC3DSA:
|
||||
case DST_ALG_NSEC3RSASHA1:
|
||||
case DST_ALG_RSASHA256:
|
||||
case DST_ALG_RSASHA512:
|
||||
case DST_ALG_ECCGOST:
|
||||
case DST_ALG_ECDSA256:
|
||||
case DST_ALG_ECDSA384:
|
||||
case DST_ALG_ED25519:
|
||||
@@ -598,7 +584,6 @@ main(int argc, char **argv) {
|
||||
" to %d\n", size);
|
||||
}
|
||||
break;
|
||||
case DST_ALG_ECCGOST:
|
||||
case DST_ALG_ECDSA256:
|
||||
case DST_ALG_ECDSA384:
|
||||
case DST_ALG_ED25519:
|
||||
@@ -728,14 +713,6 @@ main(int argc, char **argv) {
|
||||
if (size != 0 && (size < 128 || size > 4096))
|
||||
fatal("DH key size %d out of range", size);
|
||||
break;
|
||||
case DNS_KEYALG_DSA:
|
||||
case DNS_KEYALG_NSEC3DSA:
|
||||
if (size != 0 && !dsa_size_ok(size))
|
||||
fatal("invalid DSS key size: %d", size);
|
||||
break;
|
||||
case DST_ALG_ECCGOST:
|
||||
size = 256;
|
||||
break;
|
||||
case DST_ALG_ECDSA256:
|
||||
size = 256;
|
||||
break;
|
||||
@@ -815,9 +792,6 @@ main(int argc, char **argv) {
|
||||
param = generator;
|
||||
break;
|
||||
|
||||
case DNS_KEYALG_DSA:
|
||||
case DNS_KEYALG_NSEC3DSA:
|
||||
case DST_ALG_ECCGOST:
|
||||
case DST_ALG_ECDSA256:
|
||||
case DST_ALG_ECDSA384:
|
||||
case DST_ALG_ED25519:
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
<para>
|
||||
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
||||
of <option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||
NSEC3RSASHA1, RSASHA256, RSASHA512,
|
||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
|
||||
TKEY, the value must be DH (Diffie Hellman); specifying
|
||||
his value will automatically set the <option>-T KEY</option>
|
||||
@@ -132,9 +132,9 @@
|
||||
<para>
|
||||
These values are case insensitive. In some cases, abbreviations
|
||||
are supported, such as ECDSA256 for ECDSAP256SHA256 and
|
||||
ECDSA384 for ECDSAP384SHA384. If RSASHA1 or DSA is specified
|
||||
ECDSA384 for ECDSAP384SHA384. If RSASHA1 is specified
|
||||
along with the <option>-3</option> option, then NSEC3RSASHA1
|
||||
or NSEC3DSA will be used instead.
|
||||
will be used instead.
|
||||
</para>
|
||||
<para>
|
||||
This parameter <emphasis>must</emphasis> be specified except
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <isc/file.h>
|
||||
#include <isc/hash.h>
|
||||
#include <isc/hex.h>
|
||||
#include <isc/md.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/mutex.h>
|
||||
#include <isc/os.h>
|
||||
@@ -532,8 +533,6 @@ signset(dns_diff_t *del, dns_diff_t *add, dns_dbnode_t *node, dns_name_t *name,
|
||||
arraysize += dns_rdataset_count(&sigset);
|
||||
wassignedby = isc_mem_get(mctx, arraysize * sizeof(bool));
|
||||
nowsignedby = isc_mem_get(mctx, arraysize * sizeof(bool));
|
||||
if (wassignedby == NULL || nowsignedby == NULL)
|
||||
fatal("out of memory");
|
||||
|
||||
for (i = 0; i < arraysize; i++)
|
||||
wassignedby[i] = nowsignedby[i] = false;
|
||||
|
||||
@@ -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="qtype"]/counter >0]">
|
||||
<h2>Received QTYPES per view/zone</h2>
|
||||
<xsl:for-each select="views/view[zones/zone/counters[@type="qtype"]/counter >0]">
|
||||
|
||||
@@ -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="qtype"]/counter >0]\">\n"
|
||||
" <h2>Received QTYPES per view/zone</h2>\n"
|
||||
" <xsl:for-each select=\"views/view[zones/zone/counters[@type="qtype"]/counter >0]\">\n"
|
||||
|
||||
+26
-4
@@ -174,6 +174,8 @@ options {\n\
|
||||
max-recursion-queries 75;\n\
|
||||
max-stale-ttl 604800; /* 1 week */\n\
|
||||
message-compression yes;\n\
|
||||
min-ncache-ttl 0; /* 0 hours */\n\
|
||||
min-cache-ttl 0; /* 0 seconds */\n\
|
||||
# min-roots <obsolete>;\n\
|
||||
minimal-any false;\n\
|
||||
minimal-responses no-auth-recursive;\n\
|
||||
@@ -301,6 +303,21 @@ view \"_bind\" chaos {\n\
|
||||
MANAGED_KEYS
|
||||
|
||||
"# END MANAGED KEYS\n\
|
||||
\n\
|
||||
masters " DEFAULT_IANA_ROOT_ZONE_MASTERS " {\n\
|
||||
2001:500:84::b; # b.root-servers.net\n\
|
||||
2001:500:2f::f; # f.root-servers.net\n\
|
||||
2001:7fd::1; # k.root-servers.net\n\
|
||||
2620:0:2830:202::132; # xfr.cjr.dns.icann.org\n\
|
||||
2620:0:2d0:202::132; # xfr.lax.dns.icann.org\n\
|
||||
192.228.79.201; # b.root-servers.net\n\
|
||||
192.33.4.12; # c.root-servers.net\n\
|
||||
192.5.5.241; # f.root-servers.net\n\
|
||||
192.112.36.4; # g.root-servers.net\n\
|
||||
193.0.14.129; # k.root-servers.net\n\
|
||||
192.0.47.132; # xfr.cjr.dns.icann.org\n\
|
||||
192.0.32.132; # xfr.lax.dns.icann.org\n\
|
||||
};\n\
|
||||
";
|
||||
|
||||
isc_result_t
|
||||
@@ -432,6 +449,8 @@ named_config_getzonetype(const cfg_obj_t *zonetypeobj) {
|
||||
strcasecmp(str, "slave") == 0)
|
||||
{
|
||||
ztype = dns_zone_slave;
|
||||
} else if (strcasecmp(str, "mirror") == 0) {
|
||||
ztype = dns_zone_mirror;
|
||||
} else if (strcasecmp(str, "stub") == 0) {
|
||||
ztype = dns_zone_stub;
|
||||
} else if (strcasecmp(str, "static-stub") == 0) {
|
||||
@@ -440,6 +459,7 @@ named_config_getzonetype(const cfg_obj_t *zonetypeobj) {
|
||||
ztype = dns_zone_redirect;
|
||||
} else {
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
return (ztype);
|
||||
}
|
||||
@@ -553,9 +573,9 @@ named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
||||
}
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
get_masters_def(const cfg_obj_t *cctx, const char *name,
|
||||
const cfg_obj_t **ret)
|
||||
isc_result_t
|
||||
named_config_getmastersdef(const cfg_obj_t *cctx, const char *name,
|
||||
const cfg_obj_t **ret)
|
||||
{
|
||||
isc_result_t result;
|
||||
const cfg_obj_t *masters = NULL;
|
||||
@@ -697,7 +717,8 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
break;
|
||||
if (j < l)
|
||||
continue;
|
||||
tresult = get_masters_def(config, listname, &list);
|
||||
tresult = named_config_getmastersdef(config, listname,
|
||||
&list);
|
||||
if (tresult == ISC_R_NOTFOUND) {
|
||||
cfg_obj_log(addr, named_g_lctx, ISC_LOG_ERROR,
|
||||
"masters \"%s\" not found", listname);
|
||||
@@ -1011,6 +1032,7 @@ named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
||||
case hmacsha512: *name = dns_tsig_hmacsha512_name; break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
}
|
||||
if (typep != NULL)
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <dns/types.h>
|
||||
#include <dns/zone.h>
|
||||
|
||||
#define DEFAULT_IANA_ROOT_ZONE_MASTERS "_default_iana_root_zone_masters"
|
||||
|
||||
isc_result_t
|
||||
named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf);
|
||||
|
||||
@@ -57,6 +59,10 @@ void
|
||||
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
||||
isc_dscp_t **dscpsp, uint32_t count);
|
||||
|
||||
isc_result_t
|
||||
named_config_getmastersdef(const cfg_obj_t *cctx, const char *name,
|
||||
const cfg_obj_t **ret);
|
||||
|
||||
isc_result_t
|
||||
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
isc_mem_t *mctx, dns_ipkeylist_t *ipkl);
|
||||
|
||||
@@ -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;
|
||||
|
||||
+18
-14
@@ -821,7 +821,7 @@ create_managers(void) {
|
||||
}
|
||||
|
||||
result = isc_socketmgr_create2(named_g_mctx, &named_g_socketmgr,
|
||||
maxsocks, named_g_udpdisp);
|
||||
maxsocks, named_g_cpus);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"isc_socketmgr_create() failed: %s",
|
||||
@@ -1065,14 +1065,20 @@ setup(void) {
|
||||
/*
|
||||
* Get the initial resource limits.
|
||||
*/
|
||||
(void)isc_resource_getlimit(isc_resource_stacksize,
|
||||
&named_g_initstacksize);
|
||||
(void)isc_resource_getlimit(isc_resource_datasize,
|
||||
&named_g_initdatasize);
|
||||
(void)isc_resource_getlimit(isc_resource_coresize,
|
||||
&named_g_initcoresize);
|
||||
(void)isc_resource_getlimit(isc_resource_openfiles,
|
||||
&named_g_initopenfiles);
|
||||
#ifndef WIN32
|
||||
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_stacksize,
|
||||
&named_g_initstacksize)
|
||||
== ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_datasize,
|
||||
&named_g_initdatasize)
|
||||
== ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_coresize,
|
||||
&named_g_initcoresize)
|
||||
== ISC_R_SUCCESS);
|
||||
#endif
|
||||
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
|
||||
&named_g_initopenfiles)
|
||||
== ISC_R_SUCCESS);
|
||||
|
||||
/*
|
||||
* System resources cannot effectively be tuned on some systems.
|
||||
@@ -1080,8 +1086,9 @@ setup(void) {
|
||||
*/
|
||||
old_openfiles = named_g_initopenfiles;
|
||||
named_os_adjustnofile();
|
||||
(void)isc_resource_getlimit(isc_resource_openfiles,
|
||||
&named_g_initopenfiles);
|
||||
RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
|
||||
&named_g_initopenfiles)
|
||||
== ISC_R_SUCCESS);
|
||||
if (old_openfiles != named_g_initopenfiles) {
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
@@ -1332,9 +1339,6 @@ main(int argc, char *argv[]) {
|
||||
if (result != ISC_R_SUCCESS)
|
||||
named_main_earlyfatal("program name too long");
|
||||
|
||||
if (result != ISC_R_SUCCESS)
|
||||
named_main_earlyfatal("failed to build internal symbol table");
|
||||
|
||||
isc_assertion_setcallback(assertion_failed);
|
||||
isc_error_setfatal(library_fatal_error);
|
||||
isc_error_setunexpected(library_unexpected_error);
|
||||
|
||||
@@ -884,7 +884,6 @@ view \fIstring\fR [ \fIclass\fR ] {
|
||||
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
||||
min\-refresh\-time \fIinteger\fR;
|
||||
min\-retry\-time \fIinteger\fR;
|
||||
mirror \fIboolean\fR;
|
||||
multi\-master \fIboolean\fR;
|
||||
notify ( explicit | master\-only | \fIboolean\fR );
|
||||
notify\-delay \fIinteger\fR;
|
||||
@@ -899,8 +898,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 { \fIstring\fR; \&.\&.\&. };
|
||||
sig\-signing\-nodes \fIinteger\fR;
|
||||
sig\-signing\-signatures \fIinteger\fR;
|
||||
@@ -911,7 +909,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
||||
transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port (
|
||||
\fIinteger\fR | * ) ] [ dscp \fIinteger\fR ];
|
||||
try\-tcp\-refresh \fIboolean\fR;
|
||||
type ( primary | master | secondary | slave |
|
||||
type ( primary | master | secondary | slave | mirror |
|
||||
delegation\-only | forward | hint | redirect |
|
||||
static\-stub | stub );
|
||||
update\-check\-ksk \fIboolean\fR;
|
||||
@@ -994,7 +992,6 @@ zone \fIstring\fR [ \fIclass\fR ] {
|
||||
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
||||
min\-refresh\-time \fIinteger\fR;
|
||||
min\-retry\-time \fIinteger\fR;
|
||||
mirror \fIboolean\fR;
|
||||
multi\-master \fIboolean\fR;
|
||||
notify ( explicit | master\-only | \fIboolean\fR );
|
||||
notify\-delay \fIinteger\fR;
|
||||
@@ -1007,8 +1004,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 { \fIstring\fR; \&.\&.\&. };
|
||||
sig\-signing\-nodes \fIinteger\fR;
|
||||
sig\-signing\-signatures \fIinteger\fR;
|
||||
@@ -1019,8 +1015,9 @@ zone \fIstring\fR [ \fIclass\fR ] {
|
||||
transfer\-source\-v6 ( \fIipv6_address\fR | * ) [ port ( \fIinteger\fR | * )
|
||||
] [ dscp \fIinteger\fR ];
|
||||
try\-tcp\-refresh \fIboolean\fR;
|
||||
type ( primary | master | secondary | slave | delegation\-only |
|
||||
forward | hint | redirect | static\-stub | stub );
|
||||
type ( primary | master | secondary | slave | mirror |
|
||||
delegation\-only | forward | hint | redirect | static\-stub |
|
||||
stub );
|
||||
update\-check\-ksk \fIboolean\fR;
|
||||
update\-policy ( local | { ( deny | grant ) \fIstring\fR ( 6to4\-self |
|
||||
external | krb5\-self | krb5\-subdomain | ms\-self | ms\-subdomain
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
|
||||
<info>
|
||||
<date>2018-09-04</date>
|
||||
<date>2018-10-23</date>
|
||||
</info>
|
||||
<refentryinfo>
|
||||
<corpname>ISC</corpname>
|
||||
@@ -337,11 +337,12 @@ options {
|
||||
memstatistics <replaceable>boolean</replaceable>;
|
||||
memstatistics-file <replaceable>quoted_string</replaceable>;
|
||||
message-compression <replaceable>boolean</replaceable>;
|
||||
min-cache-ttl <replaceable>ttlval</replaceable>;
|
||||
min-ncache-ttl <replaceable>ttlval</replaceable>;
|
||||
min-refresh-time <replaceable>integer</replaceable>;
|
||||
min-retry-time <replaceable>integer</replaceable>;
|
||||
minimal-any <replaceable>boolean</replaceable>;
|
||||
minimal-responses ( no-auth | no-auth-recursive | <replaceable>boolean</replaceable> );
|
||||
mirror <replaceable>boolean</replaceable>;
|
||||
multi-master <replaceable>boolean</replaceable>;
|
||||
new-zones-directory <replaceable>quoted_string</replaceable>;
|
||||
no-case-compress { <replaceable>address_match_element</replaceable>; ... };
|
||||
@@ -673,7 +674,6 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
min-retry-time <replaceable>integer</replaceable>;
|
||||
minimal-any <replaceable>boolean</replaceable>;
|
||||
minimal-responses ( no-auth | no-auth-recursive | <replaceable>boolean</replaceable> );
|
||||
mirror <replaceable>boolean</replaceable>;
|
||||
multi-master <replaceable>boolean</replaceable>;
|
||||
new-zones-directory <replaceable>quoted_string</replaceable>;
|
||||
no-case-compress { <replaceable>address_match_element</replaceable>; ... };
|
||||
@@ -864,7 +864,6 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
||||
min-refresh-time <replaceable>integer</replaceable>;
|
||||
min-retry-time <replaceable>integer</replaceable>;
|
||||
mirror <replaceable>boolean</replaceable>;
|
||||
multi-master <replaceable>boolean</replaceable>;
|
||||
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
||||
notify-delay <replaceable>integer</replaceable>;
|
||||
@@ -879,8 +878,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>string</replaceable>; ... };
|
||||
sig-signing-nodes <replaceable>integer</replaceable>;
|
||||
sig-signing-signatures <replaceable>integer</replaceable>;
|
||||
@@ -891,7 +889,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port (
|
||||
<replaceable>integer</replaceable> | * ) ] [ dscp <replaceable>integer</replaceable> ];
|
||||
try-tcp-refresh <replaceable>boolean</replaceable>;
|
||||
type ( primary | master | secondary | slave |
|
||||
type ( primary | master | secondary | slave | mirror |
|
||||
delegation-only | forward | hint | redirect |
|
||||
static-stub | stub );
|
||||
update-check-ksk <replaceable>boolean</replaceable>;
|
||||
@@ -970,7 +968,6 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
||||
min-refresh-time <replaceable>integer</replaceable>;
|
||||
min-retry-time <replaceable>integer</replaceable>;
|
||||
mirror <replaceable>boolean</replaceable>;
|
||||
multi-master <replaceable>boolean</replaceable>;
|
||||
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
||||
notify-delay <replaceable>integer</replaceable>;
|
||||
@@ -983,8 +980,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>string</replaceable>; ... };
|
||||
sig-signing-nodes <replaceable>integer</replaceable>;
|
||||
sig-signing-signatures <replaceable>integer</replaceable>;
|
||||
@@ -995,8 +991,9 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
transfer-source-v6 ( <replaceable>ipv6_address</replaceable> | * ) [ port ( <replaceable>integer</replaceable> | * )
|
||||
] [ dscp <replaceable>integer</replaceable> ];
|
||||
try-tcp-refresh <replaceable>boolean</replaceable>;
|
||||
type ( primary | master | secondary | slave | delegation-only |
|
||||
forward | hint | redirect | static-stub | stub );
|
||||
type ( primary | master | secondary | slave | mirror |
|
||||
delegation-only | forward | hint | redirect | static-stub |
|
||||
stub );
|
||||
update-check-ksk <replaceable>boolean</replaceable>;
|
||||
update-policy ( local | { ( deny | grant ) <replaceable>string</replaceable> ( 6to4-self |
|
||||
external | krb5-self | krb5-selfsub | krb5-subdomain | ms-self
|
||||
|
||||
@@ -853,7 +853,6 @@ view
|
||||
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
||||
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||
mirror <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
||||
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
||||
@@ -868,8 +867,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>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>
|
||||
@@ -880,7 +878,7 @@ view
|
||||
transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port (<br>
|
||||
<em class="replaceable"><code>integer</code></em> | * ) ] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
||||
try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
type ( primary | master | secondary | slave |<br>
|
||||
type ( primary | master | secondary | slave | mirror |<br>
|
||||
delegation-only | forward | hint | redirect |<br>
|
||||
static-stub | stub );<br>
|
||||
update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
@@ -960,7 +958,6 @@ zone
|
||||
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
||||
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||
mirror <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
||||
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
||||
@@ -973,8 +970,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>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>
|
||||
@@ -985,8 +981,9 @@ zone
|
||||
transfer-source-v6 ( <em class="replaceable"><code>ipv6_address</code></em> | * ) [ port ( <em class="replaceable"><code>integer</code></em> | * )<br>
|
||||
] [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
||||
try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
type ( primary | master | secondary | slave | delegation-only |<br>
|
||||
forward | hint | redirect | static-stub | stub );<br>
|
||||
type ( primary | master | secondary | slave | mirror |<br>
|
||||
delegation-only | forward | hint | redirect | static-stub |<br>
|
||||
stub );<br>
|
||||
update-check-ksk <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
update-policy ( local | { ( deny | grant ) <em class="replaceable"><code>string</code></em> ( 6to4-self |<br>
|
||||
external | krb5-self | krb5-subdomain | ms-self | ms-subdomain<br>
|
||||
|
||||
+236
-87
@@ -30,7 +30,7 @@
|
||||
#include <isc/file.h>
|
||||
#include <isc/hash.h>
|
||||
#include <isc/hex.h>
|
||||
#include <isc/hmacsha.h>
|
||||
#include <isc/hmac.h>
|
||||
#include <isc/httpd.h>
|
||||
#include <isc/lex.h>
|
||||
#include <isc/meminfo.h>
|
||||
@@ -41,7 +41,6 @@
|
||||
#include <isc/print.h>
|
||||
#include <isc/refcount.h>
|
||||
#include <isc/resource.h>
|
||||
#include <isc/sha2.h>
|
||||
#include <isc/socket.h>
|
||||
#include <isc/stat.h>
|
||||
#include <isc/stats.h>
|
||||
@@ -306,6 +305,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.
|
||||
*/
|
||||
@@ -1146,6 +1152,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps, int af,
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
sa = *(cfg_obj_assockaddr(obj));
|
||||
@@ -1167,6 +1174,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);
|
||||
@@ -1274,20 +1282,22 @@ 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 = DNS_RDATASETATTR_CYCLIC;
|
||||
#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 = DNS_RDATASETATTR_CYCLIC;
|
||||
else if (!strcasecmp(str, "none"))
|
||||
} else if (!strcasecmp(str, "none")) {
|
||||
mode = DNS_RDATASETATTR_NONE;
|
||||
else
|
||||
} else {
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
/*
|
||||
* "*" should match everything including the root (BIND 8 compat).
|
||||
@@ -1419,14 +1429,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;
|
||||
@@ -2719,7 +2731,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:
|
||||
@@ -3944,8 +3956,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 = named_config_get(maps, "zero-no-soa-ttl-cache", &obj);
|
||||
@@ -4110,8 +4124,16 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
|
||||
result = named_config_get(maps, "max-ncache-ttl", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
view->maxncachettl = cfg_obj_asuint32(obj);
|
||||
if (view->maxncachettl > 7 * 24 * 3600)
|
||||
view->maxncachettl = 7 * 24 * 3600;
|
||||
|
||||
obj = NULL;
|
||||
result = named_config_get(maps, "min-cache-ttl", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
view->mincachettl = cfg_obj_asuint32(obj);
|
||||
|
||||
obj = NULL;
|
||||
result = named_config_get(maps, "min-ncache-ttl", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
view->minncachettl = cfg_obj_asuint32(obj);
|
||||
|
||||
obj = NULL;
|
||||
result = named_config_get(maps, "synth-from-dnssec", &obj);
|
||||
@@ -4357,14 +4379,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);
|
||||
@@ -4710,20 +4734,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 = named_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 = named_config_get(maps, "trust-anchor-telemetry", &obj);
|
||||
@@ -5037,14 +5065,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);
|
||||
@@ -5060,10 +5090,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;
|
||||
@@ -5076,10 +5108,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, named_g_config,
|
||||
@@ -5282,7 +5316,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);
|
||||
|
||||
@@ -5320,14 +5354,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];
|
||||
@@ -5687,16 +5723,18 @@ configure_forward(const cfg_obj_t *config, dns_view_t *view,
|
||||
"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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6978,6 +7016,9 @@ removed(dns_zone_t *zone, void *uap) {
|
||||
case dns_zone_slave:
|
||||
type = "slave";
|
||||
break;
|
||||
case dns_zone_mirror:
|
||||
type = "mirror";
|
||||
break;
|
||||
case dns_zone_stub:
|
||||
type = "stub";
|
||||
break;
|
||||
@@ -7575,11 +7616,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(named_g_addparser);
|
||||
result = cfg_parse_buffer3(named_g_addparser, *text, zone_name, 0,
|
||||
@@ -8904,7 +8945,7 @@ load_configuration(const char *filename, named_server_t *server,
|
||||
named_g_memstatistics = cfg_obj_asboolean(obj);
|
||||
} else {
|
||||
named_g_memstatistics =
|
||||
(isc_mem_debugging & ISC_MEM_DEBUGRECORD);
|
||||
((isc_mem_debugging & ISC_MEM_DEBUGRECORD) != 0);
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
@@ -8999,6 +9040,7 @@ load_configuration(const char *filename, named_server_t *server,
|
||||
server->sctx->cookiealg = ns_cookiealg_sha256;
|
||||
} else {
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
@@ -9008,6 +9050,7 @@ load_configuration(const char *filename, named_server_t *server,
|
||||
bool first = true;
|
||||
isc_buffer_t b;
|
||||
unsigned int usedlength;
|
||||
unsigned int expectedlength;
|
||||
|
||||
for (element = cfg_list_first(obj);
|
||||
element != NULL;
|
||||
@@ -9053,21 +9096,26 @@ load_configuration(const char *filename, named_server_t *server,
|
||||
usedlength = isc_buffer_usedlength(&b);
|
||||
switch (server->sctx->cookiealg) {
|
||||
case ns_cookiealg_aes:
|
||||
if (usedlength != ISC_AES128_KEYLENGTH) {
|
||||
expectedlength = ISC_AES128_KEYLENGTH;
|
||||
if (usedlength != expectedlength) {
|
||||
CHECKM(ISC_R_RANGE,
|
||||
"AES cookie-secret must be "
|
||||
"128 bits");
|
||||
}
|
||||
break;
|
||||
case ns_cookiealg_sha1:
|
||||
if (usedlength != ISC_SHA1_DIGESTLENGTH) {
|
||||
expectedlength =
|
||||
isc_md_type_get_size(ISC_MD_SHA1);
|
||||
if (usedlength != expectedlength) {
|
||||
CHECKM(ISC_R_RANGE,
|
||||
"SHA1 cookie-secret must be "
|
||||
"160 bits");
|
||||
}
|
||||
break;
|
||||
case ns_cookiealg_sha256:
|
||||
if (usedlength != ISC_SHA256_DIGESTLENGTH) {
|
||||
expectedlength =
|
||||
isc_md_type_get_size(ISC_MD_SHA256);
|
||||
if (usedlength != expectedlength) {
|
||||
CHECKM(ISC_R_RANGE,
|
||||
"SHA256 cookie-secret must be "
|
||||
"256 bits");
|
||||
@@ -9912,7 +9960,7 @@ static void
|
||||
named_server_reload(isc_task_t *task, isc_event_t *event) {
|
||||
named_server_t *server = (named_server_t *)event->ev_arg;
|
||||
|
||||
INSIST(task = server->task);
|
||||
INSIST(task == server->task);
|
||||
UNUSED(task);
|
||||
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
@@ -10161,7 +10209,8 @@ named_server_retransfercommand(named_server_t *server, isc_lex_t *lex,
|
||||
dns_zone_detach(&raw);
|
||||
}
|
||||
type = dns_zone_gettype(zone);
|
||||
if (type == dns_zone_slave || type == dns_zone_stub ||
|
||||
if (type == dns_zone_slave || type == dns_zone_mirror ||
|
||||
type == dns_zone_stub ||
|
||||
(type == dns_zone_redirect &&
|
||||
dns_zone_getredirecttype(zone) == dns_zone_slave))
|
||||
dns_zone_forcereload(zone);
|
||||
@@ -10193,7 +10242,9 @@ named_server_reloadcommand(named_server_t *server, isc_lex_t *lex,
|
||||
msg = "server reload successful";
|
||||
} else {
|
||||
type = dns_zone_gettype(zone);
|
||||
if (type == dns_zone_slave || type == dns_zone_stub) {
|
||||
if (type == dns_zone_slave || type == dns_zone_mirror ||
|
||||
type == dns_zone_stub)
|
||||
{
|
||||
dns_zone_refresh(zone);
|
||||
dns_zone_detach(&zone);
|
||||
msg = "zone refresh queued";
|
||||
@@ -10284,7 +10335,7 @@ named_server_refreshcommand(named_server_t *server, isc_lex_t *lex,
|
||||
isc_result_t result;
|
||||
dns_zone_t *zone = NULL, *raw = NULL;
|
||||
const char msg1[] = "zone refresh queued";
|
||||
const char msg2[] = "not a slave or stub zone";
|
||||
const char msg2[] = "not a slave, mirror, or stub zone";
|
||||
dns_zonetype_t type;
|
||||
|
||||
result = zone_from_args(server, lex, NULL, &zone, NULL,
|
||||
@@ -10302,7 +10353,9 @@ named_server_refreshcommand(named_server_t *server, isc_lex_t *lex,
|
||||
}
|
||||
|
||||
type = dns_zone_gettype(zone);
|
||||
if (type == dns_zone_slave || type == dns_zone_stub) {
|
||||
if (type == dns_zone_slave || type == dns_zone_mirror ||
|
||||
type == dns_zone_stub)
|
||||
{
|
||||
dns_zone_refresh(zone);
|
||||
dns_zone_detach(&zone);
|
||||
(void) putstr(text, msg1);
|
||||
@@ -10777,10 +10830,10 @@ named_server_dumpdb(named_server_t *server, isc_lex_t *lex,
|
||||
}
|
||||
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);
|
||||
@@ -10863,7 +10916,7 @@ named_server_dumpsecroots(named_server_t *server, isc_lex_t *lex,
|
||||
continue;
|
||||
}
|
||||
CHECK(putstr(text, "\n Negative trust anchors:\n\n"));
|
||||
CHECK(dns_ntatable_totext(ntatable, text));
|
||||
CHECK(dns_ntatable_totext(ntatable, NULL, text));
|
||||
}
|
||||
if (ptr != NULL)
|
||||
ptr = next_token(lex, text);
|
||||
@@ -12068,9 +12121,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
|
||||
@@ -12084,6 +12143,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);
|
||||
|
||||
@@ -12135,7 +12195,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(named_g_lctx,
|
||||
NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_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);
|
||||
@@ -12414,6 +12488,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
|
||||
@@ -12503,7 +12578,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(named_g_lctx,
|
||||
NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_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);
|
||||
@@ -12573,7 +12662,7 @@ newzone_parse(named_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);
|
||||
@@ -12584,12 +12673,14 @@ newzone_parse(named_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
|
||||
@@ -13494,6 +13585,7 @@ named_server_delzone(named_server_t *server, isc_lex_t *lex,
|
||||
TCHECK(putstr(text, zonename));
|
||||
TCHECK(putstr(text, "' and associated files will be deleted."));
|
||||
} else if (dns_zone_gettype(mayberaw) == dns_zone_slave ||
|
||||
dns_zone_gettype(mayberaw) == dns_zone_mirror ||
|
||||
dns_zone_gettype(mayberaw) == dns_zone_stub)
|
||||
{
|
||||
bool first;
|
||||
@@ -13604,8 +13696,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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -13627,6 +13725,7 @@ named_server_showzone(named_server_t *server, isc_lex_t *lex,
|
||||
cfg_obj_t *nzconfig = NULL;
|
||||
#endif /* HAVE_LMDB */
|
||||
bool added, redirect;
|
||||
ns_dzarg_t dzarg;
|
||||
|
||||
/* Parse parameters */
|
||||
CHECK(zone_from_args(server, lex, NULL, &zone, zonename,
|
||||
@@ -13686,9 +13785,14 @@ named_server_showzone(named_server_t *server, isc_lex_t *lex,
|
||||
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;
|
||||
|
||||
@@ -14036,7 +14140,10 @@ named_server_zonestatus(named_server_t *server, isc_lex_t *lex,
|
||||
type = "master";
|
||||
break;
|
||||
case dns_zone_slave:
|
||||
type = dns_zone_ismirror(zone) ? "mirror" : "slave";
|
||||
type = "slave";
|
||||
break;
|
||||
case dns_zone_mirror:
|
||||
type = "mirror";
|
||||
break;
|
||||
case dns_zone_stub:
|
||||
type = "stub";
|
||||
@@ -14079,8 +14186,8 @@ named_server_zonestatus(named_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);
|
||||
@@ -14092,6 +14199,7 @@ named_server_zonestatus(named_server_t *server, isc_lex_t *lex,
|
||||
|
||||
/* Refresh/expire times */
|
||||
if (zonetype == dns_zone_slave ||
|
||||
zonetype == dns_zone_mirror ||
|
||||
zonetype == dns_zone_stub ||
|
||||
zonetype == dns_zone_redirect)
|
||||
{
|
||||
@@ -14295,6 +14403,7 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
char *ptr, *nametext = NULL, *viewname;
|
||||
char namebuf[DNS_NAME_FORMATSIZE];
|
||||
char viewbuf[DNS_NAME_FORMATSIZE];
|
||||
isc_stdtime_t now, when;
|
||||
isc_time_t t;
|
||||
char tbuf[64];
|
||||
@@ -14304,8 +14413,10 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
const dns_name_t *ntaname;
|
||||
dns_name_t *fname;
|
||||
dns_ttl_t ntattl;
|
||||
bool ttlset = false, excl = false;
|
||||
bool ttlset = false, excl = false, viewfound = false;
|
||||
dns_rdataclass_t rdclass = dns_rdataclass_in;
|
||||
bool first = true;
|
||||
bool is_option = true;
|
||||
|
||||
UNUSED(force);
|
||||
|
||||
@@ -14318,13 +14429,18 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
|
||||
/* Check for options */
|
||||
ptr = next_token(lex, text);
|
||||
if (ptr == NULL) {
|
||||
return (ISC_R_UNEXPECTEDEND);
|
||||
}
|
||||
|
||||
if (argcheck(ptr, "dump")) {
|
||||
if (!is_option) {
|
||||
nametext = ptr;
|
||||
} else if (strcmp(ptr, "--") == 0) {
|
||||
is_option = false;
|
||||
} else if (argcheck(ptr, "dump")) {
|
||||
dump = true;
|
||||
} else if (argcheck(ptr, "remove")) {
|
||||
ntattl = 0;
|
||||
@@ -14369,6 +14485,9 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
tr.length = strlen(ptr);
|
||||
CHECK(dns_rdataclass_fromtext(&rdclass, &tr));
|
||||
continue;
|
||||
} else if (ptr[0] == '-') {
|
||||
msg = "Unknown option";
|
||||
CHECK(DNS_R_SYNTAX);
|
||||
} else {
|
||||
nametext = ptr;
|
||||
}
|
||||
@@ -14391,7 +14510,8 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
if (result == ISC_R_NOTFOUND) {
|
||||
continue;
|
||||
}
|
||||
CHECK(dns_ntatable_totext(ntatable, text));
|
||||
|
||||
CHECK(dns_ntatable_totext(ntatable, view->name, text));
|
||||
}
|
||||
CHECK(putnull(text));
|
||||
|
||||
@@ -14429,6 +14549,14 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
|
||||
/* Look for the view name. */
|
||||
viewname = next_token(lex, text);
|
||||
if (viewname != NULL) {
|
||||
strlcpy(viewbuf, viewname, DNS_NAME_FORMATSIZE);
|
||||
viewname = viewbuf;
|
||||
}
|
||||
|
||||
if (next_token(lex, text) != NULL) {
|
||||
CHECK(DNS_R_SYNTAX);
|
||||
}
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
|
||||
@@ -14439,11 +14567,10 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
view != NULL;
|
||||
view = ISC_LIST_NEXT(view, link))
|
||||
{
|
||||
static bool first = true;
|
||||
|
||||
if (viewname != NULL && strcmp(view->name, viewname) != 0) {
|
||||
continue;
|
||||
}
|
||||
viewfound = true;
|
||||
|
||||
if (view->rdclass != rdclass && rdclass != dns_rdataclass_any) {
|
||||
continue;
|
||||
@@ -14499,22 +14626,37 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
"added NTA '%s' (%d sec) in view '%s'",
|
||||
namebuf, ntattl, view->name);
|
||||
} else {
|
||||
CHECK(dns_ntatable_delete(ntatable, ntaname));
|
||||
bool removed;
|
||||
|
||||
result = dns_ntatable_delete(ntatable, ntaname);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
removed = true;
|
||||
} else if (result == ISC_R_NOTFOUND) {
|
||||
removed = false;
|
||||
} else {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!first) {
|
||||
CHECK(putstr(text, "\n"));
|
||||
}
|
||||
first = false;
|
||||
|
||||
CHECK(putstr(text, "Negative trust anchor removed: "));
|
||||
CHECK(putstr(text, "Negative trust anchor "));
|
||||
CHECK(putstr(text, removed ? "removed: "
|
||||
: "not found: "));
|
||||
CHECK(putstr(text, namebuf));
|
||||
CHECK(putstr(text, "/"));
|
||||
CHECK(putstr(text, view->name));
|
||||
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"removed NTA '%s' in view %s",
|
||||
namebuf, view->name);
|
||||
if (removed) {
|
||||
isc_log_write(named_g_lctx,
|
||||
NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_SERVER,
|
||||
ISC_LOG_INFO,
|
||||
"removed NTA '%s' in view %s",
|
||||
namebuf, view->name);
|
||||
}
|
||||
}
|
||||
|
||||
result = dns_view_saventa(view);
|
||||
@@ -14527,6 +14669,11 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
}
|
||||
}
|
||||
|
||||
if (!viewfound) {
|
||||
msg = "No such view";
|
||||
CHECK(ISC_R_NOTFOUND);
|
||||
}
|
||||
|
||||
CHECK(putnull(text));
|
||||
|
||||
cleanup:
|
||||
@@ -14534,6 +14681,7 @@ named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||
(void) putstr(text, msg);
|
||||
(void) putnull(text);
|
||||
}
|
||||
|
||||
if (excl) {
|
||||
isc_task_endexclusive(server->task);
|
||||
}
|
||||
@@ -14740,7 +14888,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)
|
||||
@@ -14930,6 +15078,7 @@ named_server_mkeys(named_server_t *server, isc_lex_t *lex,
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
if (viewtxt != NULL) {
|
||||
|
||||
@@ -94,6 +94,7 @@ user_zonetype( dns_zone_t *zone ) {
|
||||
{ dns_zone_none, "none" },
|
||||
{ dns_zone_master, "master" },
|
||||
{ dns_zone_slave, "slave" },
|
||||
{ dns_zone_mirror, "mirror" },
|
||||
{ dns_zone_stub, "stub" },
|
||||
{ dns_zone_staticstub, "static-stub" },
|
||||
{ dns_zone_key, "key" },
|
||||
|
||||
+136
-87
@@ -125,7 +125,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 */
|
||||
@@ -231,12 +231,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));
|
||||
@@ -755,10 +757,16 @@ checknames(dns_zonetype_t ztype, const cfg_obj_t **maps,
|
||||
isc_result_t result;
|
||||
|
||||
switch (ztype) {
|
||||
case dns_zone_slave: zone = "slave"; break;
|
||||
case dns_zone_master: zone = "master"; break;
|
||||
case dns_zone_slave:
|
||||
case dns_zone_mirror:
|
||||
zone = "slave";
|
||||
break;
|
||||
case dns_zone_master:
|
||||
zone = "master";
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
result = named_checknames_get(maps, zone, objp);
|
||||
INSIST(result == ISC_R_SUCCESS && objp != NULL && *objp != NULL);
|
||||
@@ -828,6 +836,37 @@ isself(dns_view_t *myview, dns_tsigkey_t *mykey,
|
||||
return (view == myview);
|
||||
}
|
||||
|
||||
/*%
|
||||
* For mirror zones, change "notify yes;" to "notify explicit;", informing the
|
||||
* user only if "notify" was explicitly configured rather than inherited from
|
||||
* default configuration.
|
||||
*/
|
||||
static dns_notifytype_t
|
||||
process_notifytype(dns_notifytype_t ntype, dns_zonetype_t ztype,
|
||||
const char *zname, const cfg_obj_t **maps)
|
||||
{
|
||||
const cfg_obj_t *obj = NULL;
|
||||
|
||||
/*
|
||||
* Return the original setting if this is not a mirror zone or if the
|
||||
* zone is configured with something else than "notify yes;".
|
||||
*/
|
||||
if (ztype != dns_zone_mirror || ntype != dns_notifytype_yes) {
|
||||
return (ntype);
|
||||
}
|
||||
|
||||
/*
|
||||
* Only log a message if "notify" was set in the configuration
|
||||
* hierarchy supplied in 'maps'.
|
||||
*/
|
||||
if (named_config_get(maps, "notify", &obj) == ISC_R_SUCCESS) {
|
||||
cfg_obj_log(obj, named_g_lctx, ISC_LOG_INFO,
|
||||
"'notify explicit;' will be used for mirror zone "
|
||||
"'%s'", zname);
|
||||
}
|
||||
|
||||
return (dns_notifytype_explicit);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
@@ -867,7 +906,7 @@ named_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;
|
||||
@@ -982,7 +1021,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
|
||||
if (ztype == dns_zone_slave)
|
||||
if (ztype == dns_zone_slave || ztype == dns_zone_mirror)
|
||||
masterformat = dns_masterformat_raw;
|
||||
else
|
||||
masterformat = dns_masterformat_text;
|
||||
@@ -991,14 +1030,16 @@ named_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;
|
||||
@@ -1014,12 +1055,14 @@ named_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;
|
||||
@@ -1076,7 +1119,7 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
/*
|
||||
* Notify messages are processed by the raw zone if it exists.
|
||||
*/
|
||||
if (ztype == dns_zone_slave)
|
||||
if (ztype == dns_zone_slave || ztype == dns_zone_mirror)
|
||||
RETERR(configure_zone_acl(zconfig, vconfig, config,
|
||||
allow_notify, ac, mayberaw,
|
||||
dns_zone_setnotifyacl,
|
||||
@@ -1105,16 +1148,18 @@ named_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);
|
||||
@@ -1130,14 +1175,16 @@ named_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);
|
||||
|
||||
@@ -1175,13 +1222,17 @@ named_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();
|
||||
}
|
||||
}
|
||||
notifytype = process_notifytype(notifytype, ztype, zname,
|
||||
nodefault);
|
||||
if (raw != NULL)
|
||||
dns_zone_setnotifytype(raw, dns_notifytype_no);
|
||||
dns_zone_setnotifytype(zone, notifytype);
|
||||
@@ -1336,8 +1387,10 @@ named_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);
|
||||
@@ -1372,8 +1425,10 @@ named_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;
|
||||
@@ -1524,20 +1579,22 @@ named_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);
|
||||
}
|
||||
}
|
||||
|
||||
if (ztype == dns_zone_slave) {
|
||||
if (ztype == dns_zone_slave || ztype == dns_zone_mirror) {
|
||||
RETERR(configure_zone_acl(zconfig, vconfig, config,
|
||||
allow_update_forwarding, ac,
|
||||
mayberaw, dns_zone_setforwardacl,
|
||||
@@ -1584,8 +1641,10 @@ named_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);
|
||||
|
||||
@@ -1599,8 +1658,10 @@ named_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);
|
||||
|
||||
@@ -1636,8 +1697,10 @@ named_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);
|
||||
|
||||
@@ -1651,8 +1714,10 @@ named_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);
|
||||
@@ -1668,13 +1733,15 @@ named_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;
|
||||
@@ -1695,12 +1762,38 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
* Configure slave functionality.
|
||||
*/
|
||||
switch (ztype) {
|
||||
case dns_zone_mirror:
|
||||
/*
|
||||
* Disable outgoing zone transfers for mirror zones unless they
|
||||
* are explicitly enabled by zone configuration.
|
||||
*/
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "allow-transfer", &obj);
|
||||
if (obj == NULL) {
|
||||
dns_acl_t *none;
|
||||
RETERR(dns_acl_none(mctx, &none));
|
||||
dns_zone_setxfracl(zone, none);
|
||||
dns_acl_detach(&none);
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
case dns_zone_slave:
|
||||
case dns_zone_stub:
|
||||
case dns_zone_redirect:
|
||||
count = 0;
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "masters", &obj);
|
||||
/*
|
||||
* Use the built-in master server list if one was not
|
||||
* explicitly specified and this is a root zone mirror.
|
||||
*/
|
||||
if (obj == NULL && ztype == dns_zone_mirror &&
|
||||
dns_name_equal(dns_zone_getorigin(zone), dns_rootname))
|
||||
{
|
||||
result = named_config_getmastersdef(named_g_config,
|
||||
DEFAULT_IANA_ROOT_ZONE_MASTERS,
|
||||
&obj);
|
||||
RETERR(result);
|
||||
}
|
||||
if (obj != NULL) {
|
||||
dns_ipkeylist_t ipkl;
|
||||
dns_ipkeylist_init(&ipkl);
|
||||
@@ -1727,35 +1820,6 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
}
|
||||
dns_zone_setoption(mayberaw, DNS_ZONEOPT_MULTIMASTER, multi);
|
||||
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "mirror", &obj);
|
||||
if (obj != NULL) {
|
||||
bool mirror = cfg_obj_asboolean(obj);
|
||||
dns_zone_setoption(mayberaw, DNS_ZONEOPT_MIRROR,
|
||||
mirror);
|
||||
if (mirror) {
|
||||
/*
|
||||
* Disable outgoing zone transfers unless they
|
||||
* are explicitly enabled by zone
|
||||
* configuration.
|
||||
*/
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "allow-transfer",
|
||||
&obj);
|
||||
if (obj == NULL) {
|
||||
dns_acl_t *none;
|
||||
RETERR(dns_acl_none(mctx, &none));
|
||||
dns_zone_setxfracl(zone, none);
|
||||
dns_acl_detach(&none);
|
||||
}
|
||||
/*
|
||||
* Only allow "also-notify".
|
||||
*/
|
||||
notifytype = dns_notifytype_explicit;
|
||||
dns_zone_setnotifytype(zone, notifytype);
|
||||
}
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
result = named_config_get(maps, "max-transfer-time-in", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS && obj != NULL);
|
||||
@@ -1895,7 +1959,7 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
|
||||
const char *cfilename;
|
||||
const char *zfilename;
|
||||
dns_zone_t *raw = NULL;
|
||||
bool has_raw, mirror;
|
||||
bool has_raw;
|
||||
dns_zonetype_t ztype;
|
||||
|
||||
zoptions = cfg_tuple_get(zconfig, "options");
|
||||
@@ -1935,21 +1999,6 @@ named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
|
||||
return (false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Do not reuse a zone whose "mirror" setting was changed.
|
||||
*/
|
||||
obj = NULL;
|
||||
mirror = false;
|
||||
(void)cfg_map_get(zoptions, "mirror", &obj);
|
||||
if (obj != NULL) {
|
||||
mirror = cfg_obj_asboolean(obj);
|
||||
}
|
||||
if (dns_zone_ismirror(zone) != mirror) {
|
||||
dns_zone_log(zone, ISC_LOG_DEBUG(1),
|
||||
"not reusable: mirror setting changed");
|
||||
return (false);
|
||||
}
|
||||
|
||||
if (zonetype_fromconfig(zoptions) != ztype) {
|
||||
dns_zone_log(zone, ISC_LOG_DEBUG(1),
|
||||
"not reusable: type mismatch");
|
||||
|
||||
+12
-2
@@ -144,8 +144,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;
|
||||
@@ -2354,6 +2354,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();
|
||||
@@ -2769,6 +2771,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();
|
||||
}
|
||||
@@ -3178,6 +3182,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)
|
||||
|
||||
+8
-239
@@ -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:
|
||||
@@ -71,7 +71,6 @@
|
||||
|
||||
#include <pk11/pk11.h>
|
||||
#include <pk11/result.h>
|
||||
#define WANT_DH_PRIMES
|
||||
#include <pk11/constants.h>
|
||||
#include <pkcs11/eddsa.h>
|
||||
|
||||
@@ -79,12 +78,10 @@
|
||||
static CK_BBOOL truevalue = TRUE;
|
||||
static CK_BBOOL falsevalue = FALSE;
|
||||
|
||||
/* Key class: RSA, ECC, ECX, DSA, DH, or unknown */
|
||||
/* Key class: RSA, ECC, ECX, or unknown */
|
||||
typedef enum {
|
||||
key_unknown,
|
||||
key_rsa,
|
||||
key_dsa,
|
||||
key_dh,
|
||||
key_ecc,
|
||||
key_ecx
|
||||
} key_class_t;
|
||||
@@ -152,78 +149,6 @@ static CK_ATTRIBUTE ecc_template[] = {
|
||||
{CKA_ID, NULL_PTR, 0}
|
||||
};
|
||||
|
||||
/*
|
||||
* Public key template for DSA keys
|
||||
*/
|
||||
#define DSA_LABEL 0
|
||||
#define DSA_VERIFY 1
|
||||
#define DSA_TOKEN 2
|
||||
#define DSA_PRIVATE 3
|
||||
#define DSA_PRIME 4
|
||||
#define DSA_SUBPRIME 5
|
||||
#define DSA_BASE 6
|
||||
#define DSA_ID 7
|
||||
#define DSA_ATTRS 8
|
||||
static CK_ATTRIBUTE dsa_template[] = {
|
||||
{CKA_LABEL, NULL_PTR, 0},
|
||||
{CKA_VERIFY, &truevalue, sizeof(truevalue)},
|
||||
{CKA_TOKEN, &truevalue, sizeof(truevalue)},
|
||||
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
|
||||
{CKA_PRIME, NULL_PTR, 0},
|
||||
{CKA_SUBPRIME, NULL_PTR, 0},
|
||||
{CKA_BASE, NULL_PTR, 0},
|
||||
{CKA_ID, NULL_PTR, 0}
|
||||
};
|
||||
#define DSA_PARAM_PRIME 0
|
||||
#define DSA_PARAM_SUBPRIME 1
|
||||
#define DSA_PARAM_BASE 2
|
||||
#define DSA_PARAM_ATTRS 3
|
||||
static CK_ATTRIBUTE dsa_param_template[] = {
|
||||
{CKA_PRIME, NULL_PTR, 0},
|
||||
{CKA_SUBPRIME, NULL_PTR, 0},
|
||||
{CKA_BASE, NULL_PTR, 0},
|
||||
};
|
||||
#define DSA_DOMAIN_PRIMEBITS 0
|
||||
#define DSA_DOMAIN_PRIVATE 1
|
||||
#define DSA_DOMAIN_ATTRS 2
|
||||
static CK_ATTRIBUTE dsa_domain_template[] = {
|
||||
{CKA_PRIME_BITS, NULL_PTR, 0},
|
||||
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
|
||||
};
|
||||
|
||||
/*
|
||||
* Public key template for DH keys
|
||||
*/
|
||||
#define DH_LABEL 0
|
||||
#define DH_VERIFY 1
|
||||
#define DH_TOKEN 2
|
||||
#define DH_PRIVATE 3
|
||||
#define DH_PRIME 4
|
||||
#define DH_BASE 5
|
||||
#define DH_ID 6
|
||||
#define DH_ATTRS 7
|
||||
static CK_ATTRIBUTE dh_template[] = {
|
||||
{CKA_LABEL, NULL_PTR, 0},
|
||||
{CKA_VERIFY, &truevalue, sizeof(truevalue)},
|
||||
{CKA_TOKEN, &truevalue, sizeof(truevalue)},
|
||||
{CKA_PRIVATE, &falsevalue, sizeof(falsevalue)},
|
||||
{CKA_PRIME, NULL_PTR, 0},
|
||||
{CKA_BASE, NULL_PTR, 0},
|
||||
{CKA_ID, NULL_PTR, 0}
|
||||
};
|
||||
#define DH_PARAM_PRIME 0
|
||||
#define DH_PARAM_BASE 1
|
||||
#define DH_PARAM_ATTRS 2
|
||||
static CK_ATTRIBUTE dh_param_template[] = {
|
||||
{CKA_PRIME, NULL_PTR, 0},
|
||||
{CKA_BASE, NULL_PTR, 0},
|
||||
};
|
||||
#define DH_DOMAIN_PRIMEBITS 0
|
||||
#define DH_DOMAIN_ATTRS 1
|
||||
static CK_ATTRIBUTE dh_domain_template[] = {
|
||||
{CKA_PRIME_BITS, NULL_PTR, 0},
|
||||
};
|
||||
|
||||
/*
|
||||
* Convert from text to key class. Accepts the names of DNSSEC
|
||||
* signing algorithms, so e.g., ECDSAP256SHA256 maps to ECC and
|
||||
@@ -237,11 +162,6 @@ keyclass_fromtext(const char *name) {
|
||||
if (strncasecmp(name, "rsa", 3) == 0 ||
|
||||
strncasecmp(name, "nsec3rsa", 8) == 0)
|
||||
return (key_rsa);
|
||||
else if (strncasecmp(name, "dsa", 3) == 0 ||
|
||||
strncasecmp(name, "nsec3dsa", 8) == 0)
|
||||
return (key_dsa);
|
||||
else if (strcasecmp(name, "dh") == 0)
|
||||
return (key_dh);
|
||||
else if (strncasecmp(name, "ecc", 3) == 0 ||
|
||||
strncasecmp(name, "ecdsa", 5) == 0)
|
||||
return (key_ecc);
|
||||
@@ -279,7 +199,7 @@ main(int argc, char *argv[]) {
|
||||
pk11_context_t pctx;
|
||||
int error = 0;
|
||||
int c, errflg = 0;
|
||||
int hide = 1, special = 0, quiet = 0;
|
||||
int hide = 1, quiet = 0;
|
||||
int idlen = 0, id_offset = 0;
|
||||
unsigned int i;
|
||||
unsigned long id = 0;
|
||||
@@ -331,9 +251,6 @@ main(int argc, char *argv[]) {
|
||||
case 'q':
|
||||
quiet = 1;
|
||||
break;
|
||||
case 'S':
|
||||
special = 1;
|
||||
break;
|
||||
case ':':
|
||||
fprintf(stderr,
|
||||
"Option -%c requires an operand\n",
|
||||
@@ -360,12 +277,6 @@ main(int argc, char *argv[]) {
|
||||
exit(2);
|
||||
}
|
||||
|
||||
if (special != 0 && keyclass != key_dh) {
|
||||
fprintf(stderr, "The -S option is only compatible "
|
||||
"with Diffie-Hellman key generation\n");
|
||||
exit(2);
|
||||
}
|
||||
|
||||
switch (keyclass) {
|
||||
case key_rsa:
|
||||
op_type = OP_RSA;
|
||||
@@ -461,70 +372,10 @@ main(int argc, char *argv[]) {
|
||||
|
||||
#endif
|
||||
break;
|
||||
case key_dsa:
|
||||
op_type = OP_DSA;
|
||||
if (bits == 0)
|
||||
usage();
|
||||
|
||||
dpmech.mechanism = CKM_DSA_PARAMETER_GEN;
|
||||
dpmech.pParameter = NULL;
|
||||
dpmech.ulParameterLen = 0;
|
||||
mech.mechanism = CKM_DSA_KEY_PAIR_GEN;
|
||||
mech.pParameter = NULL;
|
||||
mech.ulParameterLen = 0;
|
||||
|
||||
public_template = dsa_template;
|
||||
public_attrcnt = DSA_ATTRS;
|
||||
id_offset = DSA_ID;
|
||||
|
||||
domain_template = dsa_domain_template;
|
||||
domain_attrcnt = DSA_DOMAIN_ATTRS;
|
||||
param_template = dsa_param_template;
|
||||
param_attrcnt = DSA_PARAM_ATTRS;
|
||||
|
||||
domain_template[DSA_DOMAIN_PRIMEBITS].pValue = &bits;
|
||||
domain_template[DSA_DOMAIN_PRIMEBITS].ulValueLen = sizeof(bits);
|
||||
break;
|
||||
case key_dh:
|
||||
op_type = OP_DH;
|
||||
if (special && bits == 0)
|
||||
bits = 1024;
|
||||
else if (special &&
|
||||
bits != 768 && bits != 1024 && bits != 1536)
|
||||
{
|
||||
fprintf(stderr, "When using the special prime (-S) "
|
||||
"option, only key sizes of\n"
|
||||
"768, 1024 or 1536 are supported.\n");
|
||||
exit(2);
|
||||
} else if (bits == 0)
|
||||
usage();
|
||||
|
||||
dpmech.mechanism = CKM_DH_PKCS_PARAMETER_GEN;
|
||||
dpmech.pParameter = NULL;
|
||||
dpmech.ulParameterLen = 0;
|
||||
mech.mechanism = CKM_DH_PKCS_KEY_PAIR_GEN;
|
||||
mech.pParameter = NULL;
|
||||
mech.ulParameterLen = 0;
|
||||
|
||||
/* Override CKA_SIGN attribute */
|
||||
private_template[PRIVATE_DERIVE].type = CKA_DERIVE;
|
||||
|
||||
public_template = dh_template;
|
||||
public_attrcnt = DH_ATTRS;
|
||||
id_offset = DH_ID;
|
||||
|
||||
domain_template = dh_domain_template;
|
||||
domain_attrcnt = DH_DOMAIN_ATTRS;
|
||||
param_template = dh_param_template;
|
||||
param_attrcnt = DH_PARAM_ATTRS;
|
||||
|
||||
domain_template[DH_DOMAIN_PRIMEBITS].pValue = &bits;
|
||||
domain_template[DH_DOMAIN_PRIMEBITS].ulValueLen = sizeof(bits);
|
||||
break;
|
||||
case key_unknown:
|
||||
usage();
|
||||
}
|
||||
|
||||
|
||||
search_template[0].pValue = label;
|
||||
search_template[0].ulValueLen = strlen((char *)label);
|
||||
public_template[0].pValue = label;
|
||||
@@ -582,7 +433,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;
|
||||
@@ -609,29 +460,6 @@ main(int argc, char *argv[]) {
|
||||
if (keyclass == key_rsa || keyclass == key_ecc || keyclass == key_ecx)
|
||||
goto generate_keys;
|
||||
|
||||
/*
|
||||
* Special setup for Diffie-Hellman keys
|
||||
*/
|
||||
if (special != 0) {
|
||||
public_template[DH_BASE].pValue = pk11_dh_bn2;
|
||||
public_template[DH_BASE].ulValueLen = sizeof(pk11_dh_bn2);
|
||||
if (bits == 768) {
|
||||
public_template[DH_PRIME].pValue = pk11_dh_bn768;
|
||||
public_template[DH_PRIME].ulValueLen =
|
||||
sizeof(pk11_dh_bn768);
|
||||
} else if (bits == 1024) {
|
||||
public_template[DH_PRIME].pValue = pk11_dh_bn1024;
|
||||
public_template[DH_PRIME].ulValueLen =
|
||||
sizeof(pk11_dh_bn1024);
|
||||
} else {
|
||||
public_template[DH_PRIME].pValue = pk11_dh_bn1536;
|
||||
public_template[DH_PRIME].ulValueLen =
|
||||
sizeof(pk11_dh_bn1536);
|
||||
}
|
||||
param_attrcnt = 0;
|
||||
goto generate_keys;
|
||||
}
|
||||
|
||||
/* Generate Domain parameters */
|
||||
rv = pkcs_C_GenerateKey(hSession, &dpmech, domain_template,
|
||||
domain_attrcnt, &domainparams);
|
||||
@@ -651,7 +479,7 @@ main(int argc, char *argv[]) {
|
||||
fprintf(stderr,
|
||||
"C_GetAttributeValue0: Error = 0x%.8lX\n", rv);
|
||||
error = 1;
|
||||
goto exit_domain;
|
||||
goto exit_search;
|
||||
}
|
||||
|
||||
/* Allocate space for parameter attributes */
|
||||
@@ -664,81 +492,22 @@ main(int argc, char *argv[]) {
|
||||
if (param_template[i].pValue == NULL) {
|
||||
fprintf(stderr, "malloc failed\n");
|
||||
error = 1;
|
||||
goto exit_params;
|
||||
goto exit_search;
|
||||
}
|
||||
}
|
||||
|
||||
rv = pkcs_C_GetAttributeValue(hSession, domainparams,
|
||||
dsa_param_template, DSA_PARAM_ATTRS);
|
||||
|
||||
if (rv != CKR_OK) {
|
||||
fprintf(stderr,
|
||||
"C_GetAttributeValue1: Error = 0x%.8lX\n", rv);
|
||||
error = 1;
|
||||
goto exit_params;
|
||||
}
|
||||
|
||||
switch (keyclass) {
|
||||
case key_dsa:
|
||||
public_template[DSA_PRIME].pValue =
|
||||
param_template[DSA_PARAM_PRIME].pValue;
|
||||
public_template[DSA_PRIME].ulValueLen =
|
||||
param_template[DSA_PARAM_PRIME].ulValueLen;
|
||||
public_template[DSA_SUBPRIME].pValue =
|
||||
param_template[DSA_PARAM_SUBPRIME].pValue;
|
||||
public_template[DSA_SUBPRIME].ulValueLen =
|
||||
param_template[DSA_PARAM_SUBPRIME].ulValueLen;
|
||||
public_template[DSA_BASE].pValue =
|
||||
param_template[DSA_PARAM_BASE].pValue;
|
||||
public_template[DSA_BASE].ulValueLen =
|
||||
param_template[DSA_PARAM_BASE].ulValueLen;
|
||||
break;
|
||||
case key_dh:
|
||||
public_template[DH_PRIME].pValue =
|
||||
param_template[DH_PARAM_PRIME].pValue;
|
||||
public_template[DH_PRIME].ulValueLen =
|
||||
param_template[DH_PARAM_PRIME].ulValueLen;
|
||||
public_template[DH_BASE].pValue =
|
||||
param_template[DH_PARAM_BASE].pValue;
|
||||
public_template[DH_BASE].ulValueLen =
|
||||
param_template[DH_PARAM_BASE].ulValueLen;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
generate_keys:
|
||||
/* Generate Key pair for signing/verifying */
|
||||
rv = pkcs_C_GenerateKeyPair(hSession, &mech,
|
||||
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) {
|
||||
for (i = 0; i < param_attrcnt; i++) {
|
||||
if (param_template[i].pValue != NULL) {
|
||||
free(param_template[i].pValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit_domain:
|
||||
/* Destroy domain parameters */
|
||||
if (keyclass == key_dsa || (keyclass == key_dh && !special)) {
|
||||
rv = pkcs_C_DestroyObject(hSession, domainparams);
|
||||
if (rv != CKR_OK) {
|
||||
fprintf(stderr,
|
||||
"C_DestroyObject: Error = 0x%.8lX\n", rv);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
|
||||
exit_search:
|
||||
rv = pkcs_C_FindObjectsFinal(hSession);
|
||||
|
||||
@@ -30,7 +30,7 @@ class dnskey:
|
||||
'Revoke', 'DSPublish', 'SyncPublish', 'SyncDelete')
|
||||
_OPTS = (None, '-P', '-A', '-I', '-D', '-R', None, '-Psync', '-Dsync')
|
||||
|
||||
_ALGNAMES = (None, 'RSAMD5', 'DH', 'DSA', 'ECC', 'RSASHA1',
|
||||
_ALGNAMES = (None, 'RSAMD5', 'DH', 'DSA', None, 'RSASHA1',
|
||||
'NSEC3DSA', 'NSEC3RSASHA1', 'RSASHA256', None,
|
||||
'RSASHA512', None, 'ECCGOST', 'ECDSAP256SHA256',
|
||||
'ECDSAP384SHA384', 'ED25519', 'ED448')
|
||||
|
||||
@@ -650,6 +650,12 @@
|
||||
<option>-l</option>, <option>-r</option>, <option>-d</option>,
|
||||
<option>-f</option>, and <option>-c</option>.
|
||||
</para>
|
||||
<para>
|
||||
Unrecognized options are treated as errors. To reference
|
||||
a domain or view name that begins with a hyphen,
|
||||
use a double-hyphen on the command line to indicate the
|
||||
end of options.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
@@ -115,6 +115,8 @@ main(int argc, char **argv) {
|
||||
strcmp(argv[1], "seconary") == 0)
|
||||
{
|
||||
zonetype = CFG_ZONE_SLAVE;
|
||||
} else if (strcmp(argv[1], "mirror") == 0) {
|
||||
zonetype = CFG_ZONE_MIRROR;
|
||||
} else if (strcmp(argv[1], "stub") == 0) {
|
||||
zonetype = CFG_ZONE_STUB;
|
||||
} else if (strcmp(argv[1], "static-stub") == 0) {
|
||||
|
||||
@@ -46,6 +46,7 @@ options {
|
||||
memstatistics-file "named.memstats"; // _PATH_MEMSTATS
|
||||
|
||||
max-cache-ttl 999;
|
||||
min-cache-ttl 66;
|
||||
auth-nxdomain yes; // always set AA on NXDOMAIN.
|
||||
// don't set this to 'no' unless
|
||||
// you know what you're doing -- older
|
||||
@@ -148,6 +149,7 @@ options {
|
||||
min-refresh-time 777;
|
||||
|
||||
max-ncache-ttl 333;
|
||||
min-ncache-ttl 22;
|
||||
min-roots 15;
|
||||
serial-queries 34;
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
child.example. IN KEY 256 3 3 ALeiYGFXbil6PgHnkm5ZE67ygEVDvGT/gqZmLH7tGboofcPSfyhh1hpw dxZgJ26d/gynWMGVSYzaXfzsxpPoNeYn+qeevQoJOaxXXlfcy8Ik52Rm eW0J9mWlf9hsD7ShIhh1+0kRYGCOCaU25wIe3SLVkN3HgqiCBDYnBY0u nMkqRadiUnoEa3Tcvc9kJx9r9gDstR2A9A5sBhFLI/XQ0gViHHLVpQ4x hz+rTLb/xrBoAb5sQJT3xUjhhdNo9HuL6kwdLdSu//PCl1QnY9NpYPVV SKUo
|
||||
@@ -1,7 +0,0 @@
|
||||
Private-key-format: v1.2
|
||||
Algorithm: 3 (DSA)
|
||||
Prime(p): vGT/gqZmLH7tGboofcPSfyhh1hpwdxZgJ26d/gynWMGVSYzaXfzsxpPoNeYn+qeevQoJOaxXXlfcy8Ik52RmeQ==
|
||||
Subprime(q): t6JgYVduKXo+AeeSblkTrvKARUM=
|
||||
Base(g): bQn2ZaV/2GwPtKEiGHX7SRFgYI4JpTbnAh7dItWQ3ceCqIIENicFjS6cySpFp2JSegRrdNy9z2QnH2v2AOy1HQ==
|
||||
Private_value(x): J1Ctez8+w1PTR56Hze3pGoe0Wag=
|
||||
Public_value(y): gPQObAYRSyP10NIFYhxy1aUOMYc/q0y2/8awaAG+bECU98VI4YXTaPR7i+pMHS3Urv/zwpdUJ2PTaWD1VUilKA==
|
||||
@@ -0,0 +1,5 @@
|
||||
; This is a zone-signing key, keyid 33180, for child.example.
|
||||
; Created: 20181025104746 (Thu Oct 25 12:47:46 2018)
|
||||
; Publish: 20181025104746 (Thu Oct 25 12:47:46 2018)
|
||||
; Activate: 20181025104746 (Thu Oct 25 12:47:46 2018)
|
||||
child.example. IN DNSKEY 256 3 5 AwEAAb9eatC8ASzDnRApcZuxyBrvJRANRQjCXQ1FWK+8vEyXV5NIE9Km hKIV2wbq2tLBPfjNQz4BTJ9RmDINf1RayDlt6L+IQV1JCaDaMjd1zU3n SQK18Y7fMu0ww4AMKOnoVRbkIxa3zlA0chImXcfPE0q2AvKBYLzPfkPO cfplAuRkLcGUxdADCipNzCOakpcd5gfm9Sa2HlaXcw3gyI1WcE8=
|
||||
@@ -0,0 +1,13 @@
|
||||
Private-key-format: v1.3
|
||||
Algorithm: 5 (RSASHA1)
|
||||
Modulus: v15q0LwBLMOdEClxm7HIGu8lEA1FCMJdDUVYr7y8TJdXk0gT0qaEohXbBura0sE9+M1DPgFMn1GYMg1/VFrIOW3ov4hBXUkJoNoyN3XNTedJArXxjt8y7TDDgAwo6ehVFuQjFrfOUDRyEiZdx88TSrYC8oFgvM9+Q85x+mUC5GQtwZTF0AMKKk3MI5qSlx3mB+b1JrYeVpdzDeDIjVZwTw==
|
||||
PublicExponent: AQAB
|
||||
PrivateExponent: WDsn9GU6BXGLENCK2MX3BLQN2oDDu24hiOTYJu5VwtpkPjuVKCIuNKzu9xmBGnqOIBBDWGsw8KOmEC247yOL/S53iRdBS8lI7yiqznc52RhlmrdPKXbNpVnPwil8wocw+oQYa7uvdPYxI2Yy3B/tRgUxlxSlc/LW/dr0BX2L7qr/aeOBeGSRUlCpc7tYU9a2RUaLpVxF6SlqicCpC91MAQ==
|
||||
Prime1: 466f+JL66Bl4qYnkj0s9+1N3pYmdcM9Ja1AN66X4VLslA9Cm1JEaC5V9HOptfcXUk0XYEVnKeKM2lIQnvcLG0yuQHIa+pGi7P8vgQfdaRUE=
|
||||
Prime2: 1yuUkTVRSbUWeUreEcHgeeBBJ61UshX7t07gnGgIr3artGdo2CVEb5//+2Mvj5bgjCQBvjBbmHNZrR0jKDRBTIGtqbBerOuhEN4AXdAEgY8=
|
||||
Exponent1: KzUXbJ/P973ltR7S/hKEV66WVRbRhvf/cdsGWULs5n+BXcD59/r1W19qF9OxJZ4mYjBt+ZT1pIEsuXB+7jcJbkelGJTFlwO9DTVOgJZFTkE=
|
||||
Exponent2: FTPsLertGbBIiKdB/sn2Dsx0Xy6LXAkihsu1AnSV9oRhIyPVhwcVGVLQ7Lq3YxThB648pbsqK3miapamcj3D+YAF1uTUT4Hgm0LlEll/OC0=
|
||||
Coefficient: Vulw9kmmjKc+wmOukLdzheoA2hNPDVtgiynfzHybyXdqvapCoK+ZVmNFzjO0M41ATcpvya3iX0bekMQqYnBhLURNZUIyqz2nGskOjV8I5Jg=
|
||||
Created: 20181025104746
|
||||
Publish: 20181025104746
|
||||
Activate: 20181025104746
|
||||
@@ -49,7 +49,6 @@ XTARGETS = adb_test@EXEEXT@ \
|
||||
db_test@EXEEXT@ \
|
||||
dst_test@EXEEXT@ \
|
||||
gsstest@EXEEXT@ \
|
||||
hash_test@EXEEXT@ \
|
||||
fsaccess_test@EXEEXT@ \
|
||||
inter_test@EXEEXT@ \
|
||||
lex_test@EXEEXT@ \
|
||||
@@ -78,7 +77,6 @@ XSRCS = adb_test.c \
|
||||
byname_test.c \
|
||||
db_test.c \
|
||||
dst_test.c \
|
||||
hash_test.c \
|
||||
fsaccess_test.c \
|
||||
gsstest.c \
|
||||
inter_test.c \
|
||||
@@ -167,10 +165,6 @@ name_test@EXEEXT@: name_test.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ name_test.@O@ \
|
||||
${DNSLIBS} ${ISCLIBS} ${LIBS}
|
||||
|
||||
hash_test@EXEEXT@: hash_test.@O@ ${ISCDEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ hash_test.@O@ \
|
||||
${ISCLIBS} ${LIBS}
|
||||
|
||||
entropy_test@EXEEXT@: entropy_test.@O@ ${ISCDEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ entropy_test.@O@ \
|
||||
${ISCLIBS} ${LIBS}
|
||||
|
||||
@@ -254,11 +254,9 @@ main(void) {
|
||||
result = dns_name_fromtext(name, &b, NULL, 0, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (1);
|
||||
io(name, 23616, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
|
||||
io(name, 54622, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
|
||||
mctx);
|
||||
|
||||
io(name, 49667, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
|
||||
io(name, 2, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
|
||||
|
||||
isc_buffer_constinit(&b, "dh.", 3);
|
||||
@@ -270,7 +268,6 @@ main(void) {
|
||||
|
||||
generate(DST_ALG_RSAMD5, mctx);
|
||||
generate(DST_ALG_DH, mctx);
|
||||
generate(DST_ALG_DSA, mctx);
|
||||
generate(DST_ALG_HMACMD5, mctx);
|
||||
|
||||
dst_lib_destroy();
|
||||
|
||||
@@ -1,284 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*! \file */
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <isc/hmacmd5.h>
|
||||
#include <isc/hmacsha.h>
|
||||
#include <isc/md5.h>
|
||||
#include <isc/sha1.h>
|
||||
#include <isc/util.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/string.h>
|
||||
|
||||
#include <pk11/site.h>
|
||||
|
||||
static void
|
||||
print_digest(const char *s, const char *hash, unsigned char *d,
|
||||
unsigned int words)
|
||||
{
|
||||
unsigned int i, j;
|
||||
|
||||
printf("hash (%s) %s:\n\t", hash, s);
|
||||
for (i = 0; i < words; i++) {
|
||||
printf(" ");
|
||||
for (j = 0; j < 4; j++)
|
||||
printf("%02x", d[i * 4 + j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
isc_sha1_t sha1;
|
||||
isc_sha224_t sha224;
|
||||
isc_md5_t md5;
|
||||
isc_hmacmd5_t hmacmd5;
|
||||
isc_hmacsha1_t hmacsha1;
|
||||
isc_hmacsha224_t hmacsha224;
|
||||
isc_hmacsha256_t hmacsha256;
|
||||
isc_hmacsha384_t hmacsha384;
|
||||
isc_hmacsha512_t hmacsha512;
|
||||
unsigned char digest[ISC_SHA512_DIGESTLENGTH];
|
||||
unsigned char buffer[1024];
|
||||
const char *s;
|
||||
unsigned char key[20];
|
||||
|
||||
UNUSED(argc);
|
||||
UNUSED(argv);
|
||||
|
||||
s = "abc";
|
||||
isc_sha1_init(&sha1);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_sha1_update(&sha1, buffer, strlen(s));
|
||||
isc_sha1_final(&sha1, digest);
|
||||
print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4);
|
||||
|
||||
s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
|
||||
isc_sha1_init(&sha1);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_sha1_update(&sha1, buffer, strlen(s));
|
||||
isc_sha1_final(&sha1, digest);
|
||||
print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4);
|
||||
|
||||
s = "abc";
|
||||
isc_sha224_init(&sha224);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_sha224_update(&sha224, buffer, strlen(s));
|
||||
isc_sha224_final(digest, &sha224);
|
||||
print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4);
|
||||
|
||||
s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
|
||||
isc_sha224_init(&sha224);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_sha224_update(&sha224, buffer, strlen(s));
|
||||
isc_sha224_final(digest, &sha224);
|
||||
print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4);
|
||||
|
||||
s = "abc";
|
||||
isc_md5_init(&md5);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_md5_update(&md5, buffer, strlen(s));
|
||||
isc_md5_final(&md5, digest);
|
||||
print_digest(s, "md5", digest, 4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-MD5 examples from RFC2104
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 16);
|
||||
isc_hmacmd5_init(&hmacmd5, key, 16);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
|
||||
isc_hmacmd5_sign(&hmacmd5, digest);
|
||||
print_digest(s, "hmacmd5", digest, 4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacmd5_init(&hmacmd5, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
|
||||
isc_hmacmd5_sign(&hmacmd5, digest);
|
||||
print_digest(s, "hmacmd5", digest, 4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 16);
|
||||
isc_hmacmd5_init(&hmacmd5, key, 16);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
|
||||
isc_hmacmd5_sign(&hmacmd5, digest);
|
||||
print_digest(s, "hmacmd5", digest, 4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-SHA1 examples from RFC4634.
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 20);
|
||||
isc_hmacsha1_init(&hmacsha1, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
|
||||
isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacsha1_init(&hmacsha1, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
|
||||
isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 20);
|
||||
isc_hmacsha1_init(&hmacsha1, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
|
||||
isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-SHA224 examples from RFC4634.
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 20);
|
||||
isc_hmacsha224_init(&hmacsha224, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
|
||||
isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacsha224_init(&hmacsha224, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
|
||||
isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 20);
|
||||
isc_hmacsha224_init(&hmacsha224, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
|
||||
isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-SHA256 examples from RFC4634.
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 20);
|
||||
isc_hmacsha256_init(&hmacsha256, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
|
||||
isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacsha256_init(&hmacsha256, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
|
||||
isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 20);
|
||||
isc_hmacsha256_init(&hmacsha256, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
|
||||
isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-SHA384 examples from RFC4634.
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 20);
|
||||
isc_hmacsha384_init(&hmacsha384, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
|
||||
isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacsha384_init(&hmacsha384, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
|
||||
isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 20);
|
||||
isc_hmacsha384_init(&hmacsha384, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
|
||||
isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
|
||||
|
||||
/*
|
||||
* The 3 HMAC-SHA512 examples from RFC4634.
|
||||
*/
|
||||
s = "Hi There";
|
||||
memset(key, 0x0b, 20);
|
||||
isc_hmacsha512_init(&hmacsha512, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
|
||||
isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
|
||||
|
||||
s = "what do ya want for nothing?";
|
||||
strlcpy((char *)key, "Jefe", sizeof(key));
|
||||
isc_hmacsha512_init(&hmacsha512, key, 4);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
|
||||
isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
|
||||
|
||||
s = "\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335"
|
||||
"\335\335\335\335\335\335\335\335\335\335";
|
||||
memset(key, 0xaa, 20);
|
||||
isc_hmacsha512_init(&hmacsha512, key, 20);
|
||||
memmove(buffer, s, strlen(s));
|
||||
isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
|
||||
isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
|
||||
print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -255,7 +255,7 @@ main(int argc, char *argv[]) {
|
||||
CHECK("dns_name_fromtext", result);
|
||||
|
||||
key = NULL;
|
||||
result = dst_key_fromfile(name, 4017, DNS_KEYALG_DSA,
|
||||
result = dst_key_fromfile(name, 33180, DNS_KEYALG_RSASHA1,
|
||||
DST_TYPE_PUBLIC | DST_TYPE_PRIVATE,
|
||||
NULL, mctx, &key);
|
||||
CHECK("dst_key_fromfile", result);
|
||||
|
||||
@@ -69,7 +69,7 @@ PARALLEL = rpzrecurse serve-stale dnssec \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub synthfromdnssec \
|
||||
tcp tools tsig tsiggss \
|
||||
tcp tools tsig tsiggss ttl \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks
|
||||
|
||||
|
||||
@@ -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 () {
|
||||
|
||||
@@ -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
|
||||
|
||||
+540
-527
File diff suppressed because it is too large
Load Diff
@@ -42,7 +42,8 @@ tac() {
|
||||
}
|
||||
|
||||
convert() {
|
||||
local key=$1 n=$2
|
||||
key=$1
|
||||
n=$2
|
||||
$DSFROMKEY $key >DS.$n
|
||||
grep ' 8 1 ' DS.$n >DS.$n-1
|
||||
grep ' 8 2 ' DS.$n >DS.$n-2
|
||||
|
||||
@@ -33,7 +33,7 @@ testcase() {
|
||||
check_stdout
|
||||
check_stderr
|
||||
if [ "$expect" -ne "$result" ]; then
|
||||
echo "D:exit status does not match $expect"
|
||||
echo_d "exit status does not match $expect"
|
||||
fail
|
||||
fi
|
||||
unset name err out
|
||||
@@ -45,19 +45,19 @@ check_stderr() {
|
||||
else
|
||||
[ -s err.$n ] || return 0
|
||||
fi
|
||||
echo "D:stderr did not match '$err'"
|
||||
sed 's/^/D:/' err.$n
|
||||
echo_d "stderr did not match '$err'"
|
||||
cat err.$n | cat_d
|
||||
fail
|
||||
}
|
||||
|
||||
check_stdout() {
|
||||
cmp out.$n "${out:-empty}" >/dev/null && return
|
||||
echo "D:stdout did not match '$out'"
|
||||
echo_d "stdout did not match '$out'"
|
||||
( echo "wanted"
|
||||
cat "$out"
|
||||
echo "got"
|
||||
cat out.$n
|
||||
) | sed 's/^/D:/'
|
||||
) | cat_d
|
||||
fail
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
view two {
|
||||
max-ncache-ttl 604801;
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
view three {
|
||||
max-ncache-ttl 4000000000;
|
||||
};
|
||||
view four {
|
||||
max-ncache-ttl -1;
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
view four {
|
||||
max-ncache-ttl -1;
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
view one {
|
||||
min-cache-ttl 1x;
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
view one {
|
||||
min-ncache-ttl 1x;
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
options {
|
||||
recursion yes;
|
||||
allow-recursion { none; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
masters { 127.0.0.1; };
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
notify yes;
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
zone "foo." {
|
||||
type mirror;
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
options {
|
||||
recursion no;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
};
|
||||
@@ -16,7 +16,7 @@ view two {
|
||||
max-ncache-ttl 86400;
|
||||
};
|
||||
view three {
|
||||
max-ncache-ttl 4000000000;
|
||||
max-ncache-ttl 604800;
|
||||
};
|
||||
view four {
|
||||
max-ncache-ttl 3600s;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
view one {
|
||||
min-cache-ttl 0;
|
||||
};
|
||||
view two {
|
||||
min-cache-ttl 30;
|
||||
};
|
||||
view three {
|
||||
min-cache-ttl 60;
|
||||
};
|
||||
view four {
|
||||
min-cache-ttl 90s;
|
||||
};
|
||||
view five {
|
||||
min-cache-ttl 1m;
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
view one {
|
||||
min-ncache-ttl 0;
|
||||
};
|
||||
view two {
|
||||
min-ncache-ttl 30;
|
||||
};
|
||||
view three {
|
||||
min-ncache-ttl 60;
|
||||
};
|
||||
view four {
|
||||
min-ncache-ttl 90s;
|
||||
};
|
||||
view five {
|
||||
min-ncache-ttl 1m;
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
options {
|
||||
notify yes;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
};
|
||||
+21
-11
@@ -15,10 +15,7 @@
|
||||
#
|
||||
|
||||
# Find the top of the BIND9 tree.
|
||||
TOP=${SYSTEMTESTTOP:=.}/../../..
|
||||
|
||||
# Make it absolute so that it continues to work after we cd.
|
||||
TOP=`cd $TOP && pwd`
|
||||
TOP=@abs_top_builddir@
|
||||
|
||||
# Default algorithm for testing
|
||||
DEFAULT_ALGORITHM=ECDSAP256SHA256
|
||||
@@ -105,7 +102,7 @@ PARALLELDIRS="acl additional addzone allow-query auth autosign \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
serve-stale sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub synthfromdnssec \
|
||||
tcp tools tsig tsiggss \
|
||||
tcp tools tsig tsiggss ttl \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks"
|
||||
|
||||
@@ -226,23 +223,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=$?
|
||||
|
||||
@@ -100,7 +100,7 @@ SEQUENTIALDIRS="acl additional addzone autosign builtin \
|
||||
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 \
|
||||
tsiggss ttl unknown upforwd verify views wildcard xfer xferquota \
|
||||
zero zonechecks"
|
||||
|
||||
# List of tests that use unique ports (other than 5300 and 9953). These
|
||||
@@ -203,20 +203,20 @@ echoend () {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 .
|
||||
@@ -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";
|
||||
};
|
||||
@@ -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
|
||||
|
||||
@@ -169,6 +169,17 @@ 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`
|
||||
|
||||
#
|
||||
# Test shared cookie-secret support.
|
||||
#
|
||||
|
||||
@@ -57,6 +57,28 @@ while (<FILE1>) {
|
||||
} else {
|
||||
$entry{"$name ; $class.$type ; $value"} = $_;
|
||||
}
|
||||
} elsif (/^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s*$/) {
|
||||
$name = $1;
|
||||
$class = $2;
|
||||
$type = $3;
|
||||
$value = "";
|
||||
if ($lc) {
|
||||
$name = lc($name);
|
||||
$value = lc($value);
|
||||
}
|
||||
if ($type eq "SOA") {
|
||||
$firstname = $name if ($firstname eq "");
|
||||
if ($name eq $firstname) {
|
||||
$name = "$name$count";
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
if ($entry{"$name ; $class.$type ; $value"} ne "") {
|
||||
$line = $entry{"$name ; $class.$type ; $value"};
|
||||
print("Duplicate entry in $file1:\n> $_\n< $line\n");
|
||||
} else {
|
||||
$entry{"$name ; $class.$type ; $value"} = $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(FILE1);
|
||||
@@ -93,6 +115,28 @@ while (<FILE2>) {
|
||||
$printed++;
|
||||
$status = 1;
|
||||
}
|
||||
} elsif (/^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s*$/) {
|
||||
$name = $1;
|
||||
$class = $2;
|
||||
$type = $3;
|
||||
$value = "";
|
||||
if ($lc) {
|
||||
$name = lc($name);
|
||||
$value = lc($value);
|
||||
}
|
||||
if (($name eq $firstname) && ($type eq "SOA")) {
|
||||
$count--;
|
||||
$name = "$name$count";
|
||||
}
|
||||
if ($entry{"$name ; $class.$type ; $value"} ne "") {
|
||||
$entry{"$name ; $class.$type ; $value"} = "";
|
||||
} else {
|
||||
print("Only in $file2 (missing from $file1):\n")
|
||||
if ($printed == 0);
|
||||
print("> $_\n");
|
||||
$printed++;
|
||||
$status = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(FILE2);
|
||||
|
||||
@@ -495,6 +495,14 @@ if [ -x ${DIG} ] ; then
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "check that dig -q -m works ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS @10.53.0.3 -q -m > dig.out.test$n 2>&1
|
||||
grep '^;-m\..*IN.*A$' dig.out.test$n > /dev/null || ret=1
|
||||
grep "Dump of all outstanding memory allocations" dig.out.test$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo_i "$DIG is needed, so skipping these dig tests"
|
||||
fi
|
||||
@@ -694,6 +702,24 @@ if [ -x ${DELV} ] ; then
|
||||
grep "a.example." < delv.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 "checking delv H is ignored, and treated like IN ($n)"
|
||||
ret=0
|
||||
$DELV $DELVOPTS @10.53.0.3 -c CH -t a a.example > delv.out.test$n || ret=1
|
||||
grep "a.example." < delv.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 "check that delv -q -m works ($n)"
|
||||
ret=0
|
||||
$DELV $DELVOPTS @10.53.0.3 -q -m > delv.out.test$n 2>&1
|
||||
grep '^; -m\..*[0-9]*.*IN.*ANY.*;' delv.out.test$n > /dev/null || ret=1
|
||||
grep "^add " delv.out.test$n > /dev/null && ret=1
|
||||
grep "^del " delv.out.test$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
else
|
||||
echo_i "$DELV is needed, so skipping these delv tests"
|
||||
fi
|
||||
|
||||
@@ -1873,8 +1873,8 @@ $PERL -e 'my $delay = '$start' + 13 - time(); select(undef, undef, undef, $delay
|
||||
$RNDCCMD 10.53.0.4 nta -d > rndc.out.ns4.test$n._11
|
||||
lines=`grep " expiry " rndc.out.ns4.test$n._11 | wc -l`
|
||||
[ "$lines" -le 2 ] || ret=1
|
||||
grep "bogus.example: expiry" rndc.out.ns4.test$n._11 > /dev/null || ret=1
|
||||
grep "badds.example: expiry" rndc.out.ns4.test$n._11 > /dev/null && ret=1
|
||||
grep "bogus.example/_default: expiry" rndc.out.ns4.test$n._11 > /dev/null || ret=1
|
||||
grep "badds.example/_default: expiry" rndc.out.ns4.test$n._11 > /dev/null && ret=1
|
||||
$DIG $DIGOPTS b.bogus.example. a @10.53.0.4 > dig.out.ns4.test$n.11 || ret=1
|
||||
grep "status: SERVFAIL" dig.out.ns4.test$n.11 > /dev/null && ret=1
|
||||
$DIG $DIGOPTS a.badds.example. a @10.53.0.4 > dig.out.ns4.test$n.12 || ret=1
|
||||
@@ -1910,14 +1910,14 @@ ret=0
|
||||
echo_i "testing NTA removals ($n)"
|
||||
$RNDCCMD 10.53.0.4 nta badds.example 2>&1 | sed 's/^/ns4 /' | cat_i
|
||||
$RNDCCMD 10.53.0.4 nta -d > rndc.out.ns4.test$n.1
|
||||
grep "badds.example: expiry" rndc.out.ns4.test$n.1 > /dev/null || ret=1
|
||||
grep "badds.example/_default: expiry" rndc.out.ns4.test$n.1 > /dev/null || ret=1
|
||||
$DIG $DIGOPTS a.badds.example. a @10.53.0.4 > dig.out.ns4.test$n.1 || ret=1
|
||||
grep "status: SERVFAIL" dig.out.ns4.test$n.1 > /dev/null && ret=1
|
||||
grep "^a.badds.example." dig.out.ns4.test$n.1 > /dev/null || ret=1
|
||||
$RNDCCMD 10.53.0.4 nta -remove badds.example > rndc.out.ns4.test$n.2
|
||||
grep "Negative trust anchor removed: badds.example/_default" rndc.out.ns4.test$n.2 > /dev/null || ret=1
|
||||
$RNDCCMD 10.53.0.4 nta -d > rndc.out.ns4.test$n.3
|
||||
grep "badds.example: expiry" rndc.out.ns4.test$n.3 > /dev/null && ret=1
|
||||
grep "badds.example/_default: expiry" rndc.out.ns4.test$n.3 > /dev/null && ret=1
|
||||
$DIG $DIGOPTS a.badds.example. a @10.53.0.4 > dig.out.ns4.test$n.2 || ret=1
|
||||
grep "status: SERVFAIL" dig.out.ns4.test$n.2 > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
@@ -1928,7 +1928,7 @@ echo_i "remove non-existent NTA three times"
|
||||
$RNDCCMD 10.53.0.4 nta -r foo > rndc.out.ns4.test$n.4 2>&1
|
||||
$RNDCCMD 10.53.0.4 nta -remove foo > rndc.out.ns4.test$n.5 2>&1
|
||||
$RNDCCMD 10.53.0.4 nta -r foo > rndc.out.ns4.test$n.6 2>&1
|
||||
grep "'nta' failed: not found" rndc.out.ns4.test$n.6 > /dev/null || ret=1
|
||||
grep "not found" rndc.out.ns4.test$n.6 > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
ret=0
|
||||
@@ -2009,7 +2009,7 @@ sleep 4
|
||||
$RNDCCMD 10.53.0.4 nta -d > rndc.out.ns4.test$n.3
|
||||
lines=`wc -l < rndc.out.ns4.test$n.3`
|
||||
[ "$lines" -eq 1 ] || ret=1
|
||||
grep "bogus.example: expiry" rndc.out.ns4.test$n.3 > /dev/null || ret=1
|
||||
grep "bogus.example/_default: expiry" rndc.out.ns4.test$n.3 > /dev/null || ret=1
|
||||
$DIG $DIGOPTS b.bogus.example. a @10.53.0.4 > dig.out.ns4.test$n.4 || ret=1
|
||||
grep "status: SERVFAIL" dig.out.ns4.test$n.4 > /dev/null && ret=1
|
||||
grep "flags:[^;]* ad[^;]*;" dig.out.ns4.test$n.4 > /dev/null && ret=1
|
||||
|
||||
@@ -27,6 +27,7 @@ options {
|
||||
send-cookie no;
|
||||
require-server-cookie no;
|
||||
dnssec-validation yes;
|
||||
qname-minimization disabled;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
|
||||
@@ -27,6 +27,7 @@ options {
|
||||
send-cookie no;
|
||||
require-server-cookie no;
|
||||
dnssec-validation yes;
|
||||
qname-minimization disabled;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
|
||||
@@ -28,6 +28,7 @@ options {
|
||||
require-server-cookie no;
|
||||
minimal-responses no;
|
||||
dnssec-validation yes;
|
||||
qname-minimization disabled;
|
||||
};
|
||||
|
||||
server 10.53.0.1 { tcp-only yes; };
|
||||
|
||||
@@ -27,6 +27,7 @@ options {
|
||||
send-cookie no;
|
||||
require-server-cookie no;
|
||||
dnssec-validation yes;
|
||||
qname-minimization disabled;
|
||||
};
|
||||
|
||||
server 10.53.0.1 { tcp-only yes; };
|
||||
|
||||
@@ -186,14 +186,21 @@ loc02 LOC 60 09 00.000 N 24 39 00.000 E 10.00m 20.00m (
|
||||
;nxt03 NXT . 1
|
||||
;nxt04 NXT . 127
|
||||
|
||||
; type 31 (EID - not implemented by BIND)
|
||||
; type 32 (NIMLOC - not implemented by BIND)
|
||||
; type 31
|
||||
eid01 EID 12 89 AB
|
||||
|
||||
; type 32
|
||||
nimloc01 NIMLOC 12 89 AB
|
||||
|
||||
; type 33
|
||||
srv01 SRV 0 0 0 .
|
||||
srv02 SRV 65535 65535 65535 old-slow-box
|
||||
srv01 SRV 0 0 0 .
|
||||
srv02 SRV 65535 65535 65535 old-slow-box
|
||||
|
||||
; type 34 (ATMA - not implemented by BIND)
|
||||
; type 34
|
||||
atma01 ATMA +61200000000
|
||||
atma02 ATMA +61.2.0000.0000
|
||||
atma03 ATMA 1234567890abcdef
|
||||
atma04 ATMA f.e.d.c.b.a.0.9.8.7.6.5.4.3.2.1
|
||||
|
||||
; type 35
|
||||
naptr01 NAPTR 0 0 "" "" "" .
|
||||
@@ -229,6 +236,7 @@ sink02 SINK 8 0 2 l4ik
|
||||
|
||||
; type 42
|
||||
apl01 APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||
apl02 APL
|
||||
|
||||
; type 43
|
||||
ds01 DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
||||
@@ -366,9 +374,14 @@ csync02 CSYNC 0 0
|
||||
spf01 SPF "v=spf1 -all"
|
||||
spf02 SPF "v=spf1" " -all"
|
||||
|
||||
; type 100 (UINFO - not implemented by BIND)
|
||||
; type 101 (UID - not implemented by BIND)
|
||||
; type 102 (GID - not implemented by BIND)
|
||||
; type 100 (UINFO - not implemented by BIND - unknown record format only)
|
||||
uinfo01 UINFO \# 1 01
|
||||
|
||||
; type 101 (UID - not implemented by BIND - unknown record format only)
|
||||
uid01 UID \# 1 02
|
||||
|
||||
; type 102 (GID - not implemented by BIND - unknown record format only)
|
||||
gid01 GID \# 1 03
|
||||
|
||||
; type 103 (UNSPEC - XXXMUKS TODO - this has some weird encoding - see btoa_totext())
|
||||
|
||||
|
||||
@@ -185,11 +185,11 @@ idna_enabled_test() {
|
||||
# Note that ASCII characters are converted to lower-case.
|
||||
|
||||
text="Checking valid non-ASCII label"
|
||||
idna_test "$text" "" "München" "münchen."
|
||||
idna_test "$text" "" "München" "M\195\188nchen."
|
||||
idna_test "$text" "+noidnin +noidnout" "München" "M\195\188nchen."
|
||||
idna_test "$text" "+noidnin +idnout" "München" "M\195\188nchen."
|
||||
idna_test "$text" "+idnin +noidnout" "München" "xn--mnchen-3ya."
|
||||
idna_test "$text" "+idnin +idnout" "München" "münchen."
|
||||
idna_test "$text" "+idnin +idnout" "München" "münchen."
|
||||
|
||||
|
||||
# Tests of transitional processing of a valid U-label
|
||||
@@ -210,7 +210,7 @@ idna_enabled_test() {
|
||||
# for the valid U-label.
|
||||
|
||||
text="Checking that non-transitional IDNA processing is used"
|
||||
idna_test "$text" "" "faß.de" "faß.de."
|
||||
idna_test "$text" "" "faß.de" "fa\195\159.de."
|
||||
idna_test "$text" "+noidnin +noidnout" "faß.de" "fa\195\159.de."
|
||||
idna_test "$text" "+noidnin +idnout" "faß.de" "fa\195\159.de."
|
||||
idna_test "$text" "+idnin +noidnout" "faß.de" "xn--fa-hia.de."
|
||||
@@ -220,11 +220,11 @@ idna_enabled_test() {
|
||||
# onto the Greek sigma character ("σ") in IDNA2003.
|
||||
|
||||
text="Second check that non-transitional IDNA processing is used"
|
||||
idna_test "$text" "" "βόλος.com" "βόλος.com."
|
||||
idna_test "$text" "" "βόλος.com" "\206\178\207\140\206\187\206\191\207\130.com."
|
||||
idna_test "$text" "+noidnin +noidnout" "βόλος.com" "\206\178\207\140\206\187\206\191\207\130.com."
|
||||
idna_test "$text" "+noidnin +idnout" "βόλος.com" "\206\178\207\140\206\187\206\191\207\130.com."
|
||||
idna_test "$text" "+idnin +noidnout" "βόλος.com" "xn--nxasmm1c.com."
|
||||
idna_test "$text" "+idnin +idnout" "βόλος.com" "βόλος.com."
|
||||
idna_test "$text" "+idnin +idnout" "βόλος.com" "βόλος.com."
|
||||
|
||||
|
||||
|
||||
@@ -238,9 +238,9 @@ idna_enabled_test() {
|
||||
# The "+[no]idnin" flag has no effect in these cases.
|
||||
|
||||
text="Checking valid A-label"
|
||||
idna_test "$text" "" "xn--nxasmq6b.com" "βόλοσ.com."
|
||||
idna_test "$text" "" "xn--nxasmq6b.com" "xn--nxasmq6b.com."
|
||||
idna_test "$text" "+noidnin +noidnout" "xn--nxasmq6b.com" "xn--nxasmq6b.com."
|
||||
idna_test "$text" "+noidnin +idnout" "xn--nxasmq6b.com" "βόλοσ.com."
|
||||
idna_test "$text" "+noidnin +idnout" "xn--nxasmq6b.com" "βόλοσ.com."
|
||||
idna_test "$text" "+idnin +noidnout" "xn--nxasmq6b.com" "xn--nxasmq6b.com."
|
||||
idna_test "$text" "+idnin +idnout" "xn--nxasmq6b.com" "βόλοσ.com."
|
||||
|
||||
@@ -259,7 +259,7 @@ idna_enabled_test() {
|
||||
# a shorter label is detected and rejected.
|
||||
|
||||
text="Checking punycode label shorter than minimum valid length"
|
||||
idna_fail "$text" "" "xn--xx"
|
||||
idna_test "$text" "" "xn--xx" "xn--xx."
|
||||
idna_test "$text" "+noidnin +noidnout" "xn--xx" "xn--xx."
|
||||
idna_fail "$text" "+noidnin +idnout" "xn--xx"
|
||||
idna_fail "$text" "+idnin +noidnout" "xn--xx"
|
||||
@@ -268,7 +268,7 @@ idna_enabled_test() {
|
||||
# Fake A-label - the string does not translate to anything.
|
||||
|
||||
text="Checking fake A-label"
|
||||
idna_fail "$text" "" "xn--ahahah"
|
||||
idna_test "$text" "" "xn--ahahah" "xn--ahahah."
|
||||
idna_test "$text" "+noidnin +noidnout" "xn--ahahah" "xn--ahahah."
|
||||
idna_fail "$text" "+noidnin +idnout" "xn--ahahah"
|
||||
idna_fail "$text" "+idnin +noidnout" "xn--ahahah"
|
||||
@@ -285,7 +285,7 @@ idna_enabled_test() {
|
||||
idna_fail "$text" "+idnin +noidnout" "$label"
|
||||
idna_fail "$text" "+idnin +idnout" "$label"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Tests of a valid unicode string but an invalid U-label (input)
|
||||
@@ -301,7 +301,7 @@ idna_enabled_test() {
|
||||
# The +[no]idnout options should not have any effect on the test.
|
||||
|
||||
text="Checking invalid input U-label"
|
||||
idna_fail "$text" "" "√.com"
|
||||
idna_test "$text" "" "√.com" "\226\136\154.com."
|
||||
idna_test "$text" "+noidnin +noidnout" "√.com" "\226\136\154.com."
|
||||
idna_test "$text" "+noidnin +idnout" "√.com" "\226\136\154.com."
|
||||
idna_fail "$text" "+idnin +noidnout" "√.com"
|
||||
@@ -323,7 +323,7 @@ idna_enabled_test() {
|
||||
# The +[no]idnin options should not have any effect on the test.
|
||||
|
||||
text="Checking invalid output U-label"
|
||||
idna_fail "$text" "" "xn--19g"
|
||||
idna_test "$text" "" "xn--19g" "xn--19g."
|
||||
idna_test "$text" "+noidnin +noidnout" "xn--19g" "xn--19g."
|
||||
idna_fail "$text" "+noidnin +idnout" "xn--19g"
|
||||
idna_test "$text" "+idnin +noidnout" "xn--19g" "xn--19g."
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
|
||||
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
|
||||
|
||||
This test checks whether zones configured with "type mirror;" behave as
|
||||
expected.
|
||||
|
||||
ns1 is an authoritative-only server. It only serves the root zone, which is
|
||||
mirrored by ns3.
|
||||
|
||||
ns2 is an authoritative-only server. It serves a number of zones, some of which
|
||||
are delegated to it by ns1 and used in recursive resolution tests aimed at ns3
|
||||
while others are only served so that ns3 has a primary server to mirror zones
|
||||
from during various tests of the mirror zone implementation.
|
||||
|
||||
ns3 is a recursive resolver. It has a number of mirror zones configured. This
|
||||
is the only server whose behavior is being examined by this system test.
|
||||
@@ -11,6 +11,7 @@ rm -f */*.conf
|
||||
rm -f */*.db
|
||||
rm -f */*.jnl
|
||||
rm -f */*.mirror
|
||||
rm -f */*.nzd*
|
||||
rm -f */*.prev
|
||||
rm -f */*.signed
|
||||
rm -f */K*
|
||||
|
||||
@@ -45,6 +45,11 @@ zone "initially-unavailable" {
|
||||
allow-transfer { 10.53.0.254; };
|
||||
};
|
||||
|
||||
zone "verify-addzone" {
|
||||
type master;
|
||||
file "verify-addzone.db.original.signed";
|
||||
};
|
||||
|
||||
zone "verify-axfr" {
|
||||
type master;
|
||||
file "verify-axfr.db.signed";
|
||||
|
||||
@@ -36,7 +36,7 @@ ORIGINAL_SERIAL=`awk '$2 == "SOA" {print $5}' verify.db.in`
|
||||
UPDATED_SERIAL_BAD=`expr ${ORIGINAL_SERIAL} + 1`
|
||||
UPDATED_SERIAL_GOOD=`expr ${ORIGINAL_SERIAL} + 2`
|
||||
|
||||
for variant in axfr ixfr load reconfig untrusted; do
|
||||
for variant in addzone axfr ixfr load reconfig untrusted; do
|
||||
zone=verify-$variant
|
||||
infile=verify.db.in
|
||||
zonefile=verify-$variant.db
|
||||
|
||||
@@ -29,6 +29,7 @@ options {
|
||||
recursion yes;
|
||||
allow-query-cache { 10.53.0.1; };
|
||||
trust-anchor-telemetry yes;
|
||||
allow-new-zones yes;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
@@ -37,62 +38,54 @@ zone "." {
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.1; };
|
||||
mirror yes;
|
||||
file "root.db.mirror";
|
||||
};
|
||||
|
||||
zone "initially-unavailable" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "initially-unavailable.db.mirror";
|
||||
use-alt-transfer-source no;
|
||||
};
|
||||
|
||||
zone "verify-axfr" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-axfr.db.mirror";
|
||||
};
|
||||
|
||||
zone "verify-ixfr" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-ixfr.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-load" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-load.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-reconfig" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-reconfig.db.mirror";
|
||||
masterfile-format text;
|
||||
};
|
||||
|
||||
zone "verify-unsigned" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-unsigned.db.mirror";
|
||||
};
|
||||
|
||||
zone "verify-untrusted" {
|
||||
type slave;
|
||||
type mirror;
|
||||
masters { 10.53.0.2; };
|
||||
mirror yes;
|
||||
file "verify-untrusted.db.mirror";
|
||||
};
|
||||
|
||||
|
||||
@@ -21,6 +21,4 @@ copy_setports ns3/named.conf.in ns3/named.conf
|
||||
( cd ns1 && $SHELL -e sign.sh )
|
||||
|
||||
cat ns2/verify-axfr.db.bad.signed > ns2/verify-axfr.db.signed
|
||||
cat ns2/verify-ixfr.db.original.signed > ns2/verify-ixfr.db.signed
|
||||
cat ns2/verify-load.db.bad.signed > ns3/verify-load.db.mirror
|
||||
cat ns2/verify-untrusted.db.original.signed > ns2/verify-untrusted.db.signed
|
||||
|
||||
@@ -380,7 +380,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a yes -> no \"mirror\" setting change ($n)"
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a mirror -> slave zone type change ($n)"
|
||||
ret=0
|
||||
# Sanity check before we start.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-reconfig SOA > dig.out.ns3.test$n.1 2>&1 || ret=1
|
||||
@@ -390,13 +390,13 @@ grep "flags:.* ad" dig.out.ns3.test$n.1 > /dev/null || ret=1
|
||||
# Reconfigure the zone so that it is no longer a mirror zone.
|
||||
# (NOTE: Keep the embedded newline in the sed function list below.)
|
||||
sed '/^zone "verify-reconfig" {$/,/^};$/ {
|
||||
s/mirror yes;/mirror no;/
|
||||
s/type mirror;/type slave;/
|
||||
}' ns3/named.conf > ns3/named.conf.modified
|
||||
mv ns3/named.conf.modified ns3/named.conf
|
||||
nextpart ns3/named.run > /dev/null
|
||||
$RNDCCMD 10.53.0.3 reconfig > /dev/null 2>&1
|
||||
# Zones whose "mirror" setting was changed should not be reusable, which means
|
||||
# the tested zone should have been reloaded from disk.
|
||||
# Zones whose type was changed should not be reusable, which means the tested
|
||||
# zone should have been reloaded from disk.
|
||||
wait_for_load verify-reconfig ${ORIGINAL_SERIAL} ns3/named.run
|
||||
# Ensure responses sourced from the reconfigured zone have AA=1 and AD=0.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-reconfig SOA > dig.out.ns3.test$n.2 2>&1 || ret=1
|
||||
@@ -407,7 +407,7 @@ if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a no -> yes \"mirror\" setting change ($n)"
|
||||
echo_i "checking that \"rndc reconfig\" properly handles a slave -> mirror zone type change ($n)"
|
||||
ret=0
|
||||
# Put an incorrectly signed version of the zone in the zone file used by ns3.
|
||||
nextpart ns3/named.run > /dev/null
|
||||
@@ -415,7 +415,7 @@ cat ns2/verify-reconfig.db.bad.signed > ns3/verify-reconfig.db.mirror
|
||||
# Reconfigure the zone so that it is a mirror zone again.
|
||||
# (NOTE: Keep the embedded newline in the sed function list below.)
|
||||
sed '/^zone "verify-reconfig" {$/,/^};$/ {
|
||||
s/mirror no;/mirror yes;/
|
||||
s/type slave;/type mirror;/
|
||||
}' ns3/named.conf > ns3/named.conf.modified
|
||||
mv ns3/named.conf.modified ns3/named.conf
|
||||
$RNDCCMD 10.53.0.3 reconfig > /dev/null 2>&1
|
||||
@@ -427,6 +427,39 @@ nextpart ns3/named.run | grep "No correct RSASHA256 signature for verify-reconfi
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that a mirror zone can be added using rndc ($n)"
|
||||
ret=0
|
||||
# Sanity check: the zone should not exist in the root zone.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-addzone SOA > dig.out.ns3.test$n.1 2>&1 || ret=1
|
||||
grep "NXDOMAIN" dig.out.ns3.test$n.1 > /dev/null || ret=1
|
||||
grep "flags:.* aa" dig.out.ns3.test$n.1 > /dev/null && ret=1
|
||||
grep "flags:.* ad" dig.out.ns3.test$n.1 > /dev/null || ret=1
|
||||
# Mirror a zone which does not exist in the root zone.
|
||||
nextpart ns3/named.run > /dev/null
|
||||
$RNDCCMD 10.53.0.3 addzone verify-addzone '{ type mirror; masters { 10.53.0.2; }; };' > rndc.out.ns3.test$n 2>&1 || ret=1
|
||||
wait_for_transfer verify-addzone
|
||||
# Check whether the mirror zone was added and whether it behaves as expected.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-addzone SOA > dig.out.ns3.test$n.2 2>&1 || ret=1
|
||||
grep "NOERROR" dig.out.ns3.test$n.2 > /dev/null || ret=1
|
||||
grep "flags:.* aa" dig.out.ns3.test$n.2 > /dev/null && ret=1
|
||||
grep "flags:.* ad" dig.out.ns3.test$n.2 > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that a mirror zone can be deleted using rndc ($n)"
|
||||
ret=0
|
||||
# Remove the mirror zone added in the previous test.
|
||||
$RNDCCMD 10.53.0.3 delzone verify-addzone > rndc.out.ns3.test$n 2>&1 || ret=1
|
||||
# Check whether the mirror zone was removed.
|
||||
$DIG $DIGOPTS @10.53.0.3 +norec verify-addzone SOA > dig.out.ns3.test$n 2>&1 || ret=1
|
||||
grep "NXDOMAIN" dig.out.ns3.test$n > /dev/null || ret=1
|
||||
grep "flags:.* aa" dig.out.ns3.test$n > /dev/null && ret=1
|
||||
grep "flags:.* ad" dig.out.ns3.test$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "ensuring trust anchor telemetry queries are sent upstream for a mirror zone ($n)"
|
||||
ret=0
|
||||
|
||||
@@ -120,6 +120,9 @@ def create_response(msg):
|
||||
slow = True
|
||||
suffix = "slow."
|
||||
lqname = lqname[:-5]
|
||||
elif lqname.endswith("fwd."):
|
||||
suffix = "fwd."
|
||||
lqname = lqname[:-4]
|
||||
else:
|
||||
r.set_rcode(REFUSED)
|
||||
return r
|
||||
|
||||
@@ -14,5 +14,5 @@ rm -f */named.memstats
|
||||
rm -f */named.run
|
||||
rm -f dig.out.*
|
||||
rm -f ns*/named.lock
|
||||
rm -f ans*/query.log
|
||||
rm -f ans*/query.log*
|
||||
rm -f query*.log
|
||||
|
||||
@@ -30,3 +30,6 @@ ns2.slow. A 10.53.0.2
|
||||
|
||||
ugly. NS ns2.ugly.
|
||||
ns2.ugly. A 10.53.0.2
|
||||
|
||||
fwd. NS ns2.fwd.
|
||||
ns2.fwd. A 10.53.0.2
|
||||
|
||||
@@ -39,3 +39,11 @@ zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
zone "fwd." IN {
|
||||
type forward;
|
||||
forwarders {
|
||||
10.53.0.2;
|
||||
};
|
||||
forward only;
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user