Compare commits
524
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
414bcc7f64 | ||
|
|
11f1c44264 | ||
|
|
1860bab56b | ||
|
|
530a8f262a | ||
|
|
37245e7350 | ||
|
|
47722eacbf | ||
|
|
5cde0e14e5 | ||
|
|
f125c32591 | ||
|
|
f5cda8b307 | ||
|
|
e54b97822d | ||
|
|
5c23d41ba3 | ||
|
|
55a844b91b | ||
|
|
1225cd3f8b | ||
|
|
494184f8b9 | ||
|
|
12b2727382 | ||
|
|
892c8b9e7a | ||
|
|
34eba51728 | ||
|
|
fc84433dc5 | ||
|
|
eb83741a62 | ||
|
|
721939680d | ||
|
|
237a6c56aa | ||
|
|
8ccfd14a52 | ||
|
|
a0784e7a39 | ||
|
|
b92c8c146a | ||
|
|
25361548a5 | ||
|
|
da08c99d5b | ||
|
|
b44ad05d20 | ||
|
|
96ab258bd9 | ||
|
|
3c85a1f104 | ||
|
|
1d74e507c0 | ||
|
|
0dae760192 | ||
|
|
564a62bc2f | ||
|
|
f416dfaea0 | ||
|
|
747197dd21 | ||
|
|
79dd970a73 | ||
|
|
5ea8a0c758 | ||
|
|
397249f0b3 | ||
|
|
2e35a769b7 | ||
|
|
4b707744fb | ||
|
|
82d41bd33d | ||
|
|
10fcfe65fe | ||
|
|
fe8579592f | ||
|
|
e96f1e1c84 | ||
|
|
b94f0db15b | ||
|
|
bfb7081ada | ||
|
|
b67c6fe8bd | ||
|
|
1d38b56da9 | ||
|
|
36b367a472 | ||
|
|
27daac1e4b | ||
|
|
ad1950439c | ||
|
|
6aee585e94 | ||
|
|
70a85ab614 | ||
|
|
815084f7c7 | ||
|
|
65e5b68ed6 | ||
|
|
eb55184bda | ||
|
|
65fde68c62 | ||
|
|
ddb2651106 | ||
|
|
a7baef2250 | ||
|
|
3806811c04 | ||
|
|
68c95f0b85 | ||
|
|
323c309724 | ||
|
|
999e04854b | ||
|
|
e641d74a8a | ||
|
|
fb55b7dabd | ||
|
|
7276b6756e | ||
|
|
678a631f54 | ||
|
|
32232caaa4 | ||
|
|
8cdc9c28b9 | ||
|
|
ee5f5b186d | ||
|
|
529a81217b | ||
|
|
3562b0003f | ||
|
|
e3903e8396 | ||
|
|
e80c4c3431 | ||
|
|
be8af3afb7 | ||
|
|
6353032a8a | ||
|
|
a7c9a52c89 | ||
|
|
18f56f1e3d | ||
|
|
c6694fa017 | ||
|
|
67b153ac8a | ||
|
|
1955a63216 | ||
|
|
d83241a3b3 | ||
|
|
153512960b | ||
|
|
cfbefb57d6 | ||
|
|
74c39de667 | ||
|
|
2fc1234b4c | ||
|
|
30f5a99364 | ||
|
|
e74ec0627f | ||
|
|
6987363936 | ||
|
|
1d9ec9e386 | ||
|
|
9829962c81 | ||
|
|
ca21075c45 | ||
|
|
b61899f031 | ||
|
|
3798c6451c | ||
|
|
0ef5b2852b | ||
|
|
75d89f023a | ||
|
|
70ae7129e9 | ||
|
|
2efc475a2f | ||
|
|
28c89c37b0 | ||
|
|
1546298005 | ||
|
|
2ce4f23bc0 | ||
|
|
566f76b1fe | ||
|
|
4e266a810e | ||
|
|
3098c79270 | ||
|
|
eb13d4b279 | ||
|
|
5e9ac86c2b | ||
|
|
b911bfaaf2 | ||
|
|
6563ee9c7d | ||
|
|
b96796bbf1 | ||
|
|
48447be09a | ||
|
|
661ea29ecb | ||
|
|
2a80d4e277 | ||
|
|
6637b947e0 | ||
|
|
d1f69ba757 | ||
|
|
de153f1a43 | ||
|
|
00920b3a9b | ||
|
|
0ec8a6c963 | ||
|
|
8f2d5e6a86 | ||
|
|
0206dd7102 | ||
|
|
b68c7fc135 | ||
|
|
b0f17ca99b | ||
|
|
f736877e99 | ||
|
|
adcafee712 | ||
|
|
cff198682f | ||
|
|
40751f8f94 | ||
|
|
9feaf319b4 | ||
|
|
a0f4e6d27e | ||
|
|
825497f508 | ||
|
|
63666fc926 | ||
|
|
1fd8b2d9f4 | ||
|
|
55a95f7cd7 | ||
|
|
7b74cd6231 | ||
|
|
d3a8c162d8 | ||
|
|
3c7cab3f22 | ||
|
|
07502731e0 | ||
|
|
91307842b8 | ||
|
|
92a86ac211 | ||
|
|
3389e05d74 | ||
|
|
40cd655dda | ||
|
|
e3cc68bf35 | ||
|
|
9f431ce20c | ||
|
|
c148ba880e | ||
|
|
a848ef76f1 | ||
|
|
c989144d30 | ||
|
|
2f9dae5ce9 | ||
|
|
466dd24411 | ||
|
|
b152cd3436 | ||
|
|
e070fdab1d | ||
|
|
39add843ea | ||
|
|
49cd121906 | ||
|
|
cf9c7959a0 | ||
|
|
7af1323425 | ||
|
|
f81020a748 | ||
|
|
7355529a98 | ||
|
|
fc7ea9cc4d | ||
|
|
d9a3bf572f | ||
|
|
855f7642ad | ||
|
|
6b8de5ed8f | ||
|
|
ab8de89e6d | ||
|
|
d1d7acaecb | ||
|
|
c65d4f9d56 | ||
|
|
cc92ebf6f7 | ||
|
|
babc839b31 | ||
|
|
bb4b3e7f14 | ||
|
|
8ec293e51e | ||
|
|
0d50d9988c | ||
|
|
a553ac45ed | ||
|
|
7de12aaa34 | ||
|
|
d10137736d | ||
|
|
3e24143012 | ||
|
|
15c2e82cca | ||
|
|
621f8aa90a | ||
|
|
ef125c0d73 | ||
|
|
207a009424 | ||
|
|
511f3c3601 | ||
|
|
c71f23eb8b | ||
|
|
62d47e569a | ||
|
|
53543c1ecc | ||
|
|
f2d67af545 | ||
|
|
02672e6aaf | ||
|
|
af4bffd747 | ||
|
|
77bc37b616 | ||
|
|
7cbb589795 | ||
|
|
f608f9335d | ||
|
|
2fd9e88405 | ||
|
|
ff4855d358 | ||
|
|
d944201cf7 | ||
|
|
80985b2bde | ||
|
|
59dc713fc3 | ||
|
|
4dd46ba0f7 | ||
|
|
92a72a53db | ||
|
|
d48ba3ce12 | ||
|
|
d9164ab61c | ||
|
|
e52a96bb0a | ||
|
|
4b246002be | ||
|
|
cf1d4e614b | ||
|
|
5c23623094 | ||
|
|
4110b9184d | ||
|
|
f3e23289e0 | ||
|
|
8802a3a901 | ||
|
|
774d0d37f4 | ||
|
|
1ff50a2f70 | ||
|
|
5924804dda | ||
|
|
96362d67ed | ||
|
|
3d3c290f51 | ||
|
|
5c287fb224 | ||
|
|
81c904f697 | ||
|
|
424d7bfd62 | ||
|
|
3a9c7bb80d | ||
|
|
b381efcfaf | ||
|
|
29e31a6858 | ||
|
|
48ca641b42 | ||
|
|
6c8546edc6 | ||
|
|
08eb417bed | ||
|
|
eeec8e8d83 | ||
|
|
171db1a22d | ||
|
|
eb358d639f | ||
|
|
caf4f62769 | ||
|
|
9aeb4d1565 | ||
|
|
d683a07054 | ||
|
|
154aaf3fc0 | ||
|
|
500fed3714 | ||
|
|
3432947681 | ||
|
|
787f92b3e4 | ||
|
|
174b6be987 | ||
|
|
c295617cce | ||
|
|
ad5fecbf88 | ||
|
|
14d4f82dbd | ||
|
|
f684368053 | ||
|
|
72e3f91a0e | ||
|
|
0c0ddaf3d1 | ||
|
|
183159b03a | ||
|
|
44785aaebe | ||
|
|
e986b4fdc6 | ||
|
|
f3d17f3953 | ||
|
|
ed45b53cb7 | ||
|
|
72da3b3a71 | ||
|
|
0cade8d970 | ||
|
|
1c5d91cd51 | ||
|
|
ac4d3e8496 | ||
|
|
9618d822ab | ||
|
|
9ed43f8b47 | ||
|
|
aeee401237 | ||
|
|
8c386e636a | ||
|
|
3fbbaeb478 | ||
|
|
9d61217f31 | ||
|
|
f9880fcf6d | ||
|
|
ccc4426ca0 | ||
|
|
9016f78a0f | ||
|
|
2cd5954745 | ||
|
|
45d2833684 | ||
|
|
c7f5ba42f8 | ||
|
|
abbe8c9649 | ||
|
|
35cccf0729 | ||
|
|
551f796313 | ||
|
|
fdc84ea63e | ||
|
|
5094902487 | ||
|
|
b728d58c4e | ||
|
|
4203bdef8d | ||
|
|
bcf4391ec6 | ||
|
|
885b276fb9 | ||
|
|
8d0b0a106e | ||
|
|
9ec933ae02 | ||
|
|
7575b663ad | ||
|
|
61ffd9b71d | ||
|
|
2275630bc9 | ||
|
|
1bebdea211 | ||
|
|
3b122f8d33 | ||
|
|
769f621358 | ||
|
|
1140f825ec | ||
|
|
edfde35f40 | ||
|
|
71d3823dab | ||
|
|
b8170affae | ||
|
|
d58e36b410 | ||
|
|
afc0f7f344 | ||
|
|
07c698469e | ||
|
|
f04f107b7e | ||
|
|
651aaf5542 | ||
|
|
ab706cc6f2 | ||
|
|
45227c0a2e | ||
|
|
b4c8599961 | ||
|
|
ab1e4b5784 | ||
|
|
1286d74c7d | ||
|
|
5f26556546 | ||
|
|
0dced2fa6a | ||
|
|
aca6ebadc4 | ||
|
|
10c53d2873 | ||
|
|
ac9286b732 | ||
|
|
febbd90850 | ||
|
|
722d0f57ed | ||
|
|
3c45f0dd0b | ||
|
|
702cc2dde3 | ||
|
|
8cb78ee508 | ||
|
|
1cc0bf2cee | ||
|
|
d72f659a35 | ||
|
|
8b8f0dc160 | ||
|
|
510f8d9ff7 | ||
|
|
52347fa883 | ||
|
|
50dfe1aa2b | ||
|
|
274da3c24b | ||
|
|
111c692efd | ||
|
|
90a6482985 | ||
|
|
eef0430b75 | ||
|
|
c26a421aab | ||
|
|
595544329a | ||
|
|
333116ac5c | ||
|
|
405738b62f | ||
|
|
401f9c4a3d | ||
|
|
16bb74b1bc | ||
|
|
72c7bc03c9 | ||
|
|
343fa39055 | ||
|
|
a648e07bed | ||
|
|
7c6b5f2eaa | ||
|
|
aaee75288a | ||
|
|
ef49780d30 | ||
|
|
581ae79528 | ||
|
|
b96a3a0c79 | ||
|
|
59434b987e | ||
|
|
c47ccf630f | ||
|
|
2ab8a085b3 | ||
|
|
366b4e1ede | ||
|
|
719f604e3f | ||
|
|
ec2d50da8d | ||
|
|
f7f3b0cd8c | ||
|
|
3c9a7ffac8 | ||
|
|
9c77cd8306 | ||
|
|
d8de28610d | ||
|
|
216752e3b2 | ||
|
|
29525f639f | ||
|
|
4ab8411c4c | ||
|
|
22e81bdc82 | ||
|
|
4e2cc911d2 | ||
|
|
5d8147fa70 | ||
|
|
fc9b7cea99 | ||
|
|
e55a19c8f0 | ||
|
|
6d39087183 | ||
|
|
ac77f8df02 | ||
|
|
2dee058987 | ||
|
|
f78f6439b7 | ||
|
|
4f992ab35f | ||
|
|
d9688b58c8 | ||
|
|
0aec955235 | ||
|
|
48ddc78fb2 | ||
|
|
8e18f02626 | ||
|
|
2adc28712d | ||
|
|
89c8fed449 | ||
|
|
d6b8c7da4b | ||
|
|
00e59acab4 | ||
|
|
b053cd4acc | ||
|
|
93f33cdd0f | ||
|
|
d07f643557 | ||
|
|
a97061c939 | ||
|
|
469ef284b3 | ||
|
|
8cef3952b6 | ||
|
|
48fccbf23b | ||
|
|
de4fe3ed32 | ||
|
|
7123a4703b | ||
|
|
c76c0f4489 | ||
|
|
c266d181b9 | ||
|
|
376800b2ad | ||
|
|
f5b60bb8d7 | ||
|
|
ce3d35d950 | ||
|
|
c5e1bfc6f9 | ||
|
|
4af2d5b6d6 | ||
|
|
9079ae03c7 | ||
|
|
944c2b5a74 | ||
|
|
537a88e403 | ||
|
|
13dcf61a98 | ||
|
|
66b82fabaa | ||
|
|
c39fc19d75 | ||
|
|
9c9ee35936 | ||
|
|
fbcaadb22e | ||
|
|
c8370c486a | ||
|
|
d37c85a302 | ||
|
|
cba5989651 | ||
|
|
f3922dd9c1 | ||
|
|
478de1f761 | ||
|
|
c6ca84a0c8 | ||
|
|
1a036f324f | ||
|
|
2c5652067f | ||
|
|
8a7255c9fc | ||
|
|
377669da45 | ||
|
|
d5da331093 | ||
|
|
c272e6799f | ||
|
|
8015e95b77 | ||
|
|
0348c1ca6b | ||
|
|
4bb239abbe | ||
|
|
4e4d7d5b8b | ||
|
|
8df14d2f89 | ||
|
|
13c87fdf99 | ||
|
|
a8ead01989 | ||
|
|
94e852bdcf | ||
|
|
17e6388db2 | ||
|
|
7b537d1f05 | ||
|
|
853caac188 | ||
|
|
449129b8c9 | ||
|
|
b35eacbad2 | ||
|
|
bbd7a496be | ||
|
|
0efc1c80ac | ||
|
|
68601bd70f | ||
|
|
eb4f80693e | ||
|
|
59e1329e9b | ||
|
|
9117b34444 | ||
|
|
dbd53847a3 | ||
|
|
736d8c5b80 | ||
|
|
e3409b6c00 | ||
|
|
18e1c33206 | ||
|
|
f65b2c434d | ||
|
|
2d4d4c223d | ||
|
|
d0f3b0f4d5 | ||
|
|
c927beea2d | ||
|
|
83317ae403 | ||
|
|
24b66c00f9 | ||
|
|
96b9f0340a | ||
|
|
2029ec9aa3 | ||
|
|
b6952a6202 | ||
|
|
30f10bf79e | ||
|
|
9e58264b5a | ||
|
|
de1eba6a0f | ||
|
|
49ed0473d9 | ||
|
|
ef2f3e38e4 | ||
|
|
af5c2186c3 | ||
|
|
8e5e854858 | ||
|
|
d3976fe4cc | ||
|
|
98a37c9aba | ||
|
|
20483dc12b | ||
|
|
537765df80 | ||
|
|
ebedeffa25 | ||
|
|
707b2349b8 | ||
|
|
d5c57db1ae | ||
|
|
a7b8090ca6 | ||
|
|
1461accf9c | ||
|
|
97118d59ba | ||
|
|
a8f20871c4 | ||
|
|
fc17d57d0d | ||
|
|
b4963500df | ||
|
|
6992c50240 | ||
|
|
49358c7652 | ||
|
|
5480d26da4 | ||
|
|
dacfa09725 | ||
|
|
8a85e3d924 | ||
|
|
09f9f10ead | ||
|
|
25268aaf8c | ||
|
|
be1dc0d82c | ||
|
|
3756a08d30 | ||
|
|
7d70b31542 | ||
|
|
9c2f4af5a1 | ||
|
|
eb5696f04e | ||
|
|
0a1e079e79 | ||
|
|
e6ab8fc7d0 | ||
|
|
d87f19323c | ||
|
|
3993503de4 | ||
|
|
ff401e670f | ||
|
|
369f3c392b | ||
|
|
42a210b7cf | ||
|
|
e57796dd15 | ||
|
|
1f32ad6064 | ||
|
|
a4fef634f5 | ||
|
|
6115670bd4 | ||
|
|
93ee793d97 | ||
|
|
64d16586f2 | ||
|
|
170cb442a9 | ||
|
|
23435c423c | ||
|
|
780e1134e7 | ||
|
|
08713b334b | ||
|
|
e6718cf4c4 | ||
|
|
7656e7431b | ||
|
|
bacbe3a5aa | ||
|
|
38da4bdf5e | ||
|
|
d9354d32c4 | ||
|
|
e82ef27449 | ||
|
|
92465f23f7 | ||
|
|
addb1f3f7a | ||
|
|
78ecd57872 | ||
|
|
8d6be33c9c | ||
|
|
660c9af77b | ||
|
|
8e10f568f8 | ||
|
|
b3479ae5b0 | ||
|
|
15995270d1 | ||
|
|
148aa70127 | ||
|
|
ee42bdb825 | ||
|
|
28ea43ab35 | ||
|
|
bd7dc54875 | ||
|
|
09ce08a85f | ||
|
|
ad39501b0c | ||
|
|
dde207c0b9 | ||
|
|
5debc374ce | ||
|
|
b9732a6787 | ||
|
|
a7fba9313a | ||
|
|
4aa9ecf914 | ||
|
|
8e93a5f159 | ||
|
|
f68040799f | ||
|
|
e960d24fa6 | ||
|
|
63c95f8a6d | ||
|
|
6f48cea0a6 | ||
|
|
45dec7d781 | ||
|
|
0f8351b282 | ||
|
|
8e7d87a2a6 | ||
|
|
c2495053f2 | ||
|
|
6f331e068e | ||
|
|
19ad85f0c6 | ||
|
|
dbcabd87b6 | ||
|
|
ca24253980 | ||
|
|
1b72728002 | ||
|
|
fbae44c09d | ||
|
|
d8b9ca2f5a | ||
|
|
0444c7082d | ||
|
|
21d6e9a91e | ||
|
|
ab44b9a3ab | ||
|
|
44e1e371e3 | ||
|
|
d1221d6885 | ||
|
|
2671666ef8 | ||
|
|
ae383b7b52 | ||
|
|
9227ed8665 | ||
|
|
321e87fbb7 | ||
|
|
b42a68e8ad | ||
|
|
f85f6b21a9 | ||
|
|
172dd2fd5b | ||
|
|
1e5c61d5cc | ||
|
|
ba3d1140ec | ||
|
|
17a82643fe | ||
|
|
11761a693e | ||
|
|
beeaefb401 | ||
|
|
4c50a8f8fb | ||
|
|
639695b37d |
+52
-27
@@ -1,33 +1,58 @@
|
||||
Makefile
|
||||
config.log
|
||||
config.h
|
||||
config.cache
|
||||
config.status
|
||||
libtool
|
||||
/isc-config.sh
|
||||
/configure.lineno
|
||||
autom4te.cache/
|
||||
*.o
|
||||
*.lo
|
||||
*.so
|
||||
*.a
|
||||
*.la
|
||||
*.gcno
|
||||
*.gcda
|
||||
*_test
|
||||
*-symtbl.c
|
||||
timestamp
|
||||
ans.run
|
||||
lwresd.run
|
||||
named.run
|
||||
named.memstats
|
||||
gen.dSYM/
|
||||
*.a
|
||||
*.gcda
|
||||
*.gcno
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*.orig
|
||||
*.plist/ # ccc-analyzer store its results in .plist directories
|
||||
*.rej
|
||||
*.so
|
||||
*_test
|
||||
*~
|
||||
.ccache/
|
||||
.cproject
|
||||
.deps/
|
||||
.dirstamp
|
||||
.libs/
|
||||
# ccc-analyzer store its results in .plist directories
|
||||
*.plist/
|
||||
*~
|
||||
.project
|
||||
.cproject
|
||||
.settings
|
||||
/aclocal.m4
|
||||
/ar-lib
|
||||
/autom4te.cache/
|
||||
/bind.keys.h
|
||||
/compile
|
||||
/config.cache
|
||||
/config.guess
|
||||
/config.h
|
||||
/config.h.in
|
||||
/config.log
|
||||
/config.status
|
||||
/config.sub
|
||||
/configure
|
||||
/configure.lineno
|
||||
/depcomp
|
||||
/install-sh
|
||||
/isc-config.sh
|
||||
/libltdl/*
|
||||
/libtool
|
||||
/ltmain.sh
|
||||
/m4/libtool.m4
|
||||
/m4/ltargz.m4
|
||||
/m4/ltdl.m4
|
||||
/m4/ltoptions.m4
|
||||
/m4/ltsugar.m4
|
||||
/m4/ltversion.m4
|
||||
/m4/lt~obsolete.m4
|
||||
/missing
|
||||
/py-compile
|
||||
/stamp-h1
|
||||
/test-driver
|
||||
Makefile
|
||||
ans.run
|
||||
gen.dSYM/
|
||||
kyua.log
|
||||
named.memstats
|
||||
named.run
|
||||
timestamp
|
||||
|
||||
+205
-40
@@ -8,10 +8,18 @@ variables:
|
||||
CCACHE_DIR: "/ccache"
|
||||
SOFTHSM2_CONF: "/var/tmp/softhsm2/softhsm2.conf"
|
||||
|
||||
# VirtualBox driver needs to set build_dir to "/builds" in gitlab-runner.toml
|
||||
KYUA_RESULT: "$CI_PROJECT_DIR/kyua.results"
|
||||
|
||||
BUILD_PARALLEL_JOBS: 6
|
||||
TEST_PARALLEL_JOBS: 6
|
||||
|
||||
stages:
|
||||
- precheck
|
||||
- build
|
||||
- test
|
||||
- unit
|
||||
- system
|
||||
- docs
|
||||
- push
|
||||
|
||||
### Runner Tag Templates
|
||||
@@ -28,6 +36,12 @@ stages:
|
||||
|
||||
### Docker Image Templates
|
||||
|
||||
# Alpine Linux
|
||||
|
||||
.alpine-3.10-amd64: &alpine_3_10_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:alpine-3.10-amd64"
|
||||
<<: *linux_amd64
|
||||
|
||||
# CentOS
|
||||
|
||||
.centos-centos6-amd64: ¢os_centos6_amd64_image
|
||||
@@ -44,10 +58,6 @@ stages:
|
||||
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
|
||||
<<: *linux_amd64
|
||||
|
||||
.debian-jessie-i386: &debian_jessie_i386_image
|
||||
image: "$CI_REGISTRY_IMAGE:debian-jessie-i386"
|
||||
<<: *linux_i386
|
||||
|
||||
.debian-stretch-amd64: &debian_stretch_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:debian-stretch-amd64"
|
||||
<<: *linux_amd64
|
||||
@@ -56,6 +66,10 @@ stages:
|
||||
image: "$CI_REGISTRY_IMAGE:debian-stretch-i386"
|
||||
<<: *linux_i386
|
||||
|
||||
.debian-buster-amd64: &debian_buster_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:debian-buster-amd64"
|
||||
<<: *linux_i386
|
||||
|
||||
.debian-sid-amd64: &debian_sid_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:debian-sid-amd64"
|
||||
<<: *linux_amd64
|
||||
@@ -66,8 +80,8 @@ stages:
|
||||
|
||||
# Fedora
|
||||
|
||||
.fedora-29-amd64: &fedora_29_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:fedora-29-amd64"
|
||||
.fedora-30-amd64: &fedora_30_amd64_image
|
||||
image: "$CI_REGISTRY_IMAGE:fedora-30-amd64"
|
||||
<<: *linux_amd64
|
||||
|
||||
# Ubuntu
|
||||
@@ -101,26 +115,66 @@ stages:
|
||||
<<: *debian_sid_amd64_image
|
||||
stage: precheck
|
||||
|
||||
.autoconf: &autoconf_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *debian_sid_amd64_image
|
||||
stage: precheck
|
||||
script:
|
||||
- autoreconf -fi
|
||||
artifacts:
|
||||
untracked: true
|
||||
expire_in: "1 hour"
|
||||
|
||||
.configure: &configure |
|
||||
./configure \
|
||||
--disable-maintainer-mode \
|
||||
--enable-developer \
|
||||
--with-randomdev=/dev/urandom \
|
||||
--with-libtool \
|
||||
--with-geoip2=auto \
|
||||
--disable-static \
|
||||
--with-cmocka \
|
||||
--with-libxml2 \
|
||||
--with-json \
|
||||
--prefix=$HOME/.local \
|
||||
--without-make-clean \
|
||||
$EXTRA_CONFIGURE \
|
||||
|| cat config.log
|
||||
|
||||
.build: &build_job
|
||||
<<: *default_triggering_rules
|
||||
stage: build
|
||||
before_script:
|
||||
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
||||
script:
|
||||
- ./configure --enable-developer --with-randomdev=/dev/urandom --with-libtool --disable-static --with-cmocka --prefix=$HOME/.local --without-make-clean ${EXTRA_CONFIGURE} || cat config.log
|
||||
- *configure
|
||||
- make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
|
||||
- test -z "${RUN_MAKE_INSTALL}" || make install
|
||||
dependencies:
|
||||
- autoreconf:sid:amd64
|
||||
needs:
|
||||
- autoreconf:sid:amd64
|
||||
artifacts:
|
||||
untracked: true
|
||||
expire_in: "1 hour"
|
||||
|
||||
.setup_interfaces: &setup_interfaces |
|
||||
if [ "$(id -u)" -eq "0" ]; then
|
||||
sh -x bin/tests/system/ifconfig.sh up;
|
||||
else
|
||||
sudo sh -x bin/tests/system/ifconfig.sh up;
|
||||
fi
|
||||
|
||||
.setup_softhsm: &setup_softhsm |
|
||||
sh -x util/prepare-softhsm2.sh
|
||||
|
||||
.system_test: &system_test_job
|
||||
<<: *default_triggering_rules
|
||||
stage: test
|
||||
stage: system
|
||||
retry: 2
|
||||
before_script:
|
||||
- bash -x bin/tests/system/ifconfig.sh up
|
||||
- bash -x util/prepare-softhsm2.sh
|
||||
- *setup_interfaces
|
||||
- *setup_softhsm
|
||||
script:
|
||||
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
|
||||
- test -s bin/tests/system/systests.output
|
||||
@@ -129,16 +183,22 @@ stages:
|
||||
expire_in: "1 week"
|
||||
when: on_failure
|
||||
|
||||
.kyua_report: &kyua_report_html |
|
||||
kyua report-html \
|
||||
--force \
|
||||
--results-file "$KYUA_RESULT" \
|
||||
--results-filter "" \
|
||||
--output kyua_html
|
||||
|
||||
.unit_test: &unit_test_job
|
||||
<<: *default_triggering_rules
|
||||
stage: test
|
||||
stage: unit
|
||||
before_script:
|
||||
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
|
||||
- bash -x util/prepare-softhsm2.sh
|
||||
- *setup_softhsm
|
||||
script:
|
||||
- make unit
|
||||
after_script:
|
||||
- kyua report-html --force --results-file kyua.results --results-filter "" --output kyua_html
|
||||
- *kyua_report_html
|
||||
artifacts:
|
||||
paths:
|
||||
- kyua.log
|
||||
@@ -151,6 +211,9 @@ stages:
|
||||
|
||||
# Jobs in the precheck stage
|
||||
|
||||
autoreconf:sid:amd64:
|
||||
<<: *autoconf_job
|
||||
|
||||
misc:sid:amd64:
|
||||
<<: *precheck_job
|
||||
script:
|
||||
@@ -167,6 +230,7 @@ misc:sid:amd64:
|
||||
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
|
||||
- xmllint --noout --nonet `git ls-files '*.xml' '*.docbook'`
|
||||
- xmllint --noout --nonet --html `git ls-files '*.html'`
|
||||
- sh util/check-win32util-configure
|
||||
artifacts:
|
||||
paths:
|
||||
- util/newcopyrights
|
||||
@@ -176,17 +240,23 @@ misc:sid:amd64:
|
||||
|
||||
🐞:sid:amd64:
|
||||
<<: *precheck_job
|
||||
script: util/check-cocci
|
||||
script:
|
||||
- util/check-cocci
|
||||
- if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi
|
||||
|
||||
# Jobs for doc builds on Debian Sid (amd64)
|
||||
|
||||
docs:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
stage: build
|
||||
stage: docs
|
||||
script:
|
||||
- ./configure || cat config.log
|
||||
- make -C doc/misc docbook
|
||||
- make -C doc/arm Bv9ARM.html
|
||||
dependencies:
|
||||
- autoreconf:sid:amd64
|
||||
needs:
|
||||
- autoreconf:sid:amd64
|
||||
artifacts:
|
||||
paths:
|
||||
- doc/arm/
|
||||
@@ -208,6 +278,30 @@ push:docs:sid:amd64:
|
||||
- master@isc-projects/bind9
|
||||
- /^v9_[1-9][0-9]$/@isc-projects/bind9
|
||||
|
||||
# Jobs for regular GCC builds on Alpine Linux 3.10 (amd64)
|
||||
|
||||
gcc:alpine3.10:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--enable-dnstap"
|
||||
<<: *alpine_3_10_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
system:gcc:alpine3.10:amd64:
|
||||
<<: *alpine_3_10_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:alpine3.10:amd64
|
||||
needs: ["gcc:alpine3.10:amd64"]
|
||||
|
||||
unit:gcc:alpine3.10:amd64:
|
||||
<<: *alpine_3_10_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:alpine3.10:amd64
|
||||
needs: ["gcc:alpine3.10:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on CentOS 6 (amd64)
|
||||
|
||||
gcc:centos6:amd64:
|
||||
@@ -223,12 +317,14 @@ system:gcc:centos6:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:centos6:amd64
|
||||
needs: ["gcc:centos6:amd64"]
|
||||
|
||||
unit:gcc:centos6:amd64:
|
||||
<<: *centos_centos6_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:centos6:amd64
|
||||
needs: ["gcc:centos6:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on CentOS 7 (amd64)
|
||||
|
||||
@@ -236,7 +332,7 @@ gcc:centos7:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
|
||||
<<: *centos_centos7_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
@@ -245,12 +341,14 @@ system:gcc:centos7:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:centos7:amd64
|
||||
needs: ["gcc:centos7:amd64"]
|
||||
|
||||
unit:gcc:centos7:amd64:
|
||||
<<: *centos_centos7_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:centos7:amd64
|
||||
needs: ["gcc:centos7:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Debian 8 Jessie (amd64)
|
||||
|
||||
@@ -258,7 +356,7 @@ gcc:jessie:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--without-cmocka --with-python"
|
||||
EXTRA_CONFIGURE: "--without-cmocka --with-python --disable-geoip"
|
||||
<<: *debian_jessie_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
@@ -267,12 +365,14 @@ system:gcc:jessie:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:jessie:amd64
|
||||
needs: ["gcc:jessie:amd64"]
|
||||
|
||||
unit:gcc:jessie:amd64:
|
||||
<<: *debian_jessie_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:jessie:amd64
|
||||
needs: ["gcc:jessie:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Debian 9 Stretch (amd64)
|
||||
|
||||
@@ -288,20 +388,45 @@ system:gcc:stretch:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:stretch:amd64
|
||||
needs: ["gcc:stretch:amd64"]
|
||||
|
||||
unit:gcc:stretch:amd64:
|
||||
<<: *debian_stretch_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:stretch:amd64
|
||||
needs: ["gcc:stretch:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Debian 10 Buster (amd64)
|
||||
|
||||
gcc:buster:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
<<: *debian_buster_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
system:gcc:buster:amd64:
|
||||
<<: *debian_buster_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:buster:amd64
|
||||
needs: ["gcc:buster:amd64"]
|
||||
|
||||
unit:gcc:buster:amd64:
|
||||
<<: *debian_buster_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:buster:amd64
|
||||
needs: ["gcc:buster:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Debian Sid (amd64)
|
||||
|
||||
gcc:sid:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
CFLAGS: "-Wall -Wextra -O3 -g"
|
||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
|
||||
RUN_MAKE_INSTALL: 1
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
@@ -311,20 +436,22 @@ system:gcc:sid:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:sid:amd64
|
||||
needs: ["gcc:sid:amd64"]
|
||||
|
||||
unit:gcc:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:sid:amd64
|
||||
needs: ["gcc:sid:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Debian Sid (i386)
|
||||
|
||||
gcc:sid:i386:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--with-libidn2 --without-python"
|
||||
CFLAGS: "-Wall -Wextra -O3 -g"
|
||||
EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2 --without-python"
|
||||
<<: *debian_sid_i386_image
|
||||
<<: *build_job
|
||||
|
||||
@@ -333,34 +460,38 @@ system:gcc:sid:i386:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:sid:i386
|
||||
needs: ["gcc:sid:i386"]
|
||||
|
||||
unit:gcc:sid:i386:
|
||||
<<: *debian_sid_i386_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:sid:i386
|
||||
needs: ["gcc:sid:i386"]
|
||||
|
||||
# Jobs for regular GCC builds on Fedora 29 (amd64)
|
||||
# Jobs for regular GCC builds on Fedora 30 (amd64)
|
||||
|
||||
gcc:fedora29:amd64:
|
||||
gcc:fedora30:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
<<: *fedora_29_amd64_image
|
||||
<<: *fedora_30_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
system:gcc:fedora29:amd64:
|
||||
<<: *fedora_29_amd64_image
|
||||
system:gcc:fedora30:amd64:
|
||||
<<: *fedora_30_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:fedora29:amd64
|
||||
- gcc:fedora30:amd64
|
||||
needs: ["gcc:fedora30:amd64"]
|
||||
|
||||
unit:gcc:fedora29:amd64:
|
||||
<<: *fedora_29_amd64_image
|
||||
unit:gcc:fedora30:amd64:
|
||||
<<: *fedora_30_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:fedora29:amd64
|
||||
- gcc:fedora30:amd64
|
||||
needs: ["gcc:fedora30:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Ubuntu 16.04 Xenial Xerus (amd64)
|
||||
|
||||
@@ -368,6 +499,7 @@ gcc:xenial:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--disable-geoip"
|
||||
<<: *ubuntu_xenial_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
@@ -376,12 +508,14 @@ system:gcc:xenial:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:xenial:amd64
|
||||
needs: ["gcc:xenial:amd64"]
|
||||
|
||||
unit:gcc:xenial:amd64:
|
||||
<<: *ubuntu_xenial_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:xenial:amd64
|
||||
needs: ["gcc:xenial:amd64"]
|
||||
|
||||
# Jobs for regular GCC builds on Ubuntu 18.04 Bionic Beaver (amd64)
|
||||
|
||||
@@ -398,12 +532,14 @@ system:gcc:bionic:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- gcc:bionic:amd64
|
||||
needs: ["gcc:bionic:amd64"]
|
||||
|
||||
unit:gcc:bionic:amd64:
|
||||
<<: *ubuntu_bionic_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- gcc:bionic:amd64
|
||||
needs: ["gcc:bionic:amd64"]
|
||||
|
||||
# Jobs for GCC builds with ASAN enabled on Debian Sid (amd64)
|
||||
|
||||
@@ -421,12 +557,14 @@ system:asan:sid:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- asan:sid:amd64
|
||||
needs: ["asan:sid:amd64"]
|
||||
|
||||
unit:asan:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- asan:sid:amd64
|
||||
needs: ["asan:sid:amd64"]
|
||||
|
||||
# Jobs for Clang builds on Debian Stretch (amd64)
|
||||
|
||||
@@ -443,6 +581,7 @@ unit:clang:stretch:amd64:
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- clang:stretch:amd64
|
||||
needs: ["clang:stretch:amd64"]
|
||||
|
||||
# Jobs for Clang builds on Debian Stretch (i386)
|
||||
|
||||
@@ -454,6 +593,28 @@ clang:stretch:i386:
|
||||
<<: *debian_stretch_i386_image
|
||||
<<: *build_job
|
||||
|
||||
# Jobs for nocrypt builds on Debian Sid (amd64)
|
||||
|
||||
nocrypto:sid:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||
EXTRA_CONFIGURE: "--with-openssl=no"
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
system:nocrypto:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- nocrypto:sid:amd64
|
||||
|
||||
unit:nocrypto:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- nocrypto:sid:amd64
|
||||
|
||||
# Jobs for PKCS#11-enabled GCC builds on Debian Sid (amd64)
|
||||
|
||||
pkcs11:sid:amd64:
|
||||
@@ -469,31 +630,35 @@ system:pkcs11:sid:amd64:
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- pkcs11:sid:amd64
|
||||
needs: ["pkcs11:sid:amd64"]
|
||||
|
||||
unit:pkcs11:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- pkcs11:sid:amd64
|
||||
needs: ["pkcs11:sid:amd64"]
|
||||
|
||||
# Jobs for GCC builds with assertions compiled away on Debian Sid (amd64)
|
||||
# Jobs with libtool disabled
|
||||
|
||||
noassert:sid:amd64:
|
||||
nolibtool:sid:amd64:
|
||||
variables:
|
||||
CC: gcc
|
||||
CFLAGS: "-Wall -Wextra -O2 -g -DISC_CHECK_NONE=1"
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
CFLAGS: "-Wall -Wextra -Og -g"
|
||||
EXTRA_CONFIGURE: "--with-libidn2 --without-libtool --with-dlopen"
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
system:noassert:sid:amd64:
|
||||
system:nolibtool:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *system_test_job
|
||||
dependencies:
|
||||
- noassert:sid:amd64
|
||||
- nolibtool:sid:amd64
|
||||
needs: ["nolibtool:sid:amd64"]
|
||||
|
||||
unit:noassert:sid:amd64:
|
||||
unit:nolibtool:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- noassert:sid:amd64
|
||||
- nolibtool:sid:amd64
|
||||
needs: ["nolibtool:sid:amd64"]
|
||||
|
||||
@@ -1,3 +1,229 @@
|
||||
--- 9.11.11 released ---
|
||||
|
||||
5291. [cleanup] Revert change #4825 as it was not appropriate for 9.11.
|
||||
[GL #1213]
|
||||
|
||||
5290. [bug] Address potential NULL pointer dereference in
|
||||
isc_ht_find. [GL #1211]
|
||||
|
||||
5287. [bug] Address potential NULL pointer dereference. [GL #1208]
|
||||
|
||||
5286. [contrib] Address potential NULL pointer dereferences in
|
||||
dlz_mysqldyn_mod.c. [GL #1207]
|
||||
|
||||
5285. [port] win32: implement "-T maxudpXXX". [GL #837]
|
||||
|
||||
5282. [bug] Fixed a bug in searching for possible wildcard matches
|
||||
for query names in the RPZ summary database. [GL #1146]
|
||||
|
||||
5281. [cleanup] Don't escape commas when reporting named's command
|
||||
line. [GL #1189]
|
||||
|
||||
5280. [protocol] Add support for displaying EDNS option LLQ. [GL #1201]
|
||||
|
||||
5279. [bug] When loading, reject zones containing CDS or CDNSKEY
|
||||
RRsets at the zone apex if they would cause DNSSEC
|
||||
validation failures if published in the parent zone
|
||||
as the DS RRset. [GL #1187]
|
||||
|
||||
--- 9.11.10 released ---
|
||||
|
||||
5275. [bug] Mark DS records included in referral messages
|
||||
with trust level "pending" so that they can be
|
||||
validated and cached immediately, with no need to
|
||||
re-query. [GL #964]
|
||||
|
||||
5273. [bug] Check that bits [64..71] of a dns64 prefix are zero.
|
||||
[GL #1159]
|
||||
|
||||
5269. [port] cygwin: can return ETIMEDOUT on connect() with a
|
||||
non-blocking socket. [GL #1133]
|
||||
|
||||
5268. [bug] named could crash during configuration if
|
||||
configured to use "geoip continent" ACLs with
|
||||
legacy GeoIP. [GL #1163]
|
||||
|
||||
5266. [bug] named-checkconf failed to report dnstap-output
|
||||
missing from named.conf when dnstap was specified.
|
||||
[GL #1136]
|
||||
|
||||
5265. [bug] DNS64 and RPZ nodata (CNAME *.) rules interacted badly
|
||||
[GL #1106]
|
||||
|
||||
5264. [func] New DNS Cookie algorithm - siphash24 - has been added to
|
||||
BIND 9. [GL #605]
|
||||
|
||||
--- 9.11.9 released ---
|
||||
|
||||
5260. [bug] dnstap-read was producing malformed output for large
|
||||
packets. [GL #1093]
|
||||
|
||||
5258. [func] Added support for the GeoIP2 API from MaxMind,
|
||||
when BIND is compiled using "configure --with-geoip2".
|
||||
The legacy GeoIP API can be enabled by using
|
||||
"configure --with-geoip" instead. These options
|
||||
cannot be used together.
|
||||
|
||||
Certain geoip ACL settings that were available with
|
||||
legacy GeoIP are not available when using GeoIP2.
|
||||
See the ARM for details. [GL #182]
|
||||
|
||||
5257. [bug] Some statistics data was not being displayed.
|
||||
Add shading to the zone tables. [GL #1030]
|
||||
|
||||
5256. [bug] Ensure that glue records are included in root
|
||||
priming responses if "minimal-responses" is not
|
||||
set to "yes". [GL #1092]
|
||||
|
||||
5255. [bug] Errors encountered while reloading inline-signing
|
||||
zones could be ignored, causing the zone content to
|
||||
be left in an incompletely updated state rather than
|
||||
reverted. [GL #1109]
|
||||
|
||||
5253. [port] Support platforms that don't define ULLONG_MAX.
|
||||
[GL #1098]
|
||||
|
||||
5249. [bug] Fix a possible underflow in recursion clients
|
||||
statistics when hitting recursive clients
|
||||
soft quota. [GL #1067]
|
||||
|
||||
--- 9.11.8 released ---
|
||||
|
||||
5244. [security] Fixed a race condition in dns_dispatch_getnext()
|
||||
that could cause an assertion failure if a
|
||||
significant number of incoming packets were
|
||||
rejected. (CVE-2019-6471) [GL #942]
|
||||
|
||||
5241. [bug] Fix Ed448 private and public key ASN.1 prefix blobs.
|
||||
[GL #225]
|
||||
|
||||
5237. [bug] Recurse to find the root server list with 'dig +trace'.
|
||||
[GL #1028]
|
||||
|
||||
--- 9.11.7 released ---
|
||||
|
||||
5233. [bug] Negative trust anchors did not work with "forward only;"
|
||||
to validating resolvers. [GL #997]
|
||||
|
||||
5232. [bug] Fix a high-load race/crash in isc_socket_cancel().
|
||||
[GL #834]
|
||||
|
||||
5231. [protocol] Add support for displaying CLIENT-TAG and SERVER-TAG.
|
||||
[GL #960]
|
||||
|
||||
5229. [protocol] Enforce known SSHFP fingerprint lengths. [GL #852]
|
||||
|
||||
5228. [cleanup] If trusted-keys and managed-keys are configured
|
||||
simultaneously for the same name, the key cannot
|
||||
be rolled automatically. This configuration now
|
||||
logs a warning. [GL #868]
|
||||
|
||||
5224. [bug] Only test provide-ixfr on TCP streams. [GL #991]
|
||||
|
||||
5222. [bug] 'delv -t ANY' could leak memory. [GL #983]
|
||||
|
||||
5221. [test] Enable parallel execution of system tests on
|
||||
Windows. [GL !4101]
|
||||
|
||||
5218. [bug] Conditionally include <dlfcn.h>. [GL #995]
|
||||
|
||||
5214. [bug] win32: named now removes its lock file upon shutdown.
|
||||
[GL #979]
|
||||
|
||||
5213. [bug] win32: Eliminated a race which allowed named.exe running
|
||||
as a service to be killed prematurely during shutdown.
|
||||
[GL #978]
|
||||
|
||||
5210. [bug] When dnstap is enabled and recursion is not
|
||||
available, incoming queries are now logged
|
||||
as "auth". Previously, this depended on whether
|
||||
recursion was requested by the client, not on
|
||||
whether recursion was available. [GL #963]
|
||||
|
||||
5209. [bug] When update-check-ksk is true, add_sigs was not
|
||||
considering offline keys, leaving record sets signed
|
||||
with the incorrect type key. [GL #763]
|
||||
|
||||
5208. [test] Run valid rdata wire encodings through totext+fromtext
|
||||
and tofmttext+fromtext methods to check these methods.
|
||||
[GL #899]
|
||||
|
||||
5207. [test] Check delv and dig TTL values. [GL #965]
|
||||
|
||||
5205. [bug] Enforce that a DS hash exists. [GL #899]
|
||||
|
||||
5204. [test] Check that dns_rdata_fromtext() produces a record that
|
||||
will be accepted by dns_rdata_fromwire(). [GL #852]
|
||||
|
||||
5203. [bug] Enforce whether key rdata exists or not in KEY,
|
||||
DNSKEY, CDNSKEY and RKEY. [GL #899]
|
||||
|
||||
5197. [bug] dig could die in best effort mode on multiple SIG(0)
|
||||
records. Similarly on multiple OPT and multiple TSIG
|
||||
records. [GL #920]
|
||||
|
||||
5194. [bug] Enforce non empty ZOMEMD hash. [GL #899]
|
||||
|
||||
5193. [bug] EID and NIMLOC failed to do multi-line output
|
||||
correctly. [GL #899]
|
||||
|
||||
5192. [bug] configure --fips-mode failed. [GL #946]
|
||||
|
||||
5191. [port] Darwin: dlzexternal/driver.so was not building.
|
||||
[GL #948]
|
||||
|
||||
5189. [cleanup] Remove revoked root DNSKEY from bind.keys. [GL #945]
|
||||
|
||||
5187. [test] Set time zone before running any tests in dnstap_test.
|
||||
[GL #940]
|
||||
|
||||
5185. [bug] PKCS11 build could fail if ECDSA is not supported.
|
||||
[GL #935]
|
||||
|
||||
5184. [bug] Missing unlocks in sdlz.c. [GL #936]
|
||||
|
||||
5182. [bug] Fix a high-load race/crash in handling of
|
||||
isc_socket_close() in resolver. [GL #834]
|
||||
|
||||
5180. [bug] delv now honors the operating system's preferred
|
||||
ephemeral port range. [GL #925]
|
||||
|
||||
5179. [cleanup] Replace some vague type declarations with the more
|
||||
specific dns_secalg_t and dns_dsdigest_t.
|
||||
Thanks to Tony Finch. [GL !1498]
|
||||
|
||||
5178. [bug] Handle EDQUOT (disk quota) and ENOSPC (disk full)
|
||||
errors when writing files. [GL #902]
|
||||
|
||||
5176. [tests] Remove a dependency on libxml in statschannel system
|
||||
test. [GL #926]
|
||||
|
||||
5175. [bug] Fixed a problem with file input in dnssec-keymgr,
|
||||
dnssec-coverage and dnssec-checkds when using
|
||||
python3. [GL #882]
|
||||
|
||||
5174. [doc] Tidy dnssec-keygen manual. [GL !1557]
|
||||
|
||||
5172. [bug] nsupdate now honors the operating system's preferred
|
||||
ephemeral port range. [GL #905]
|
||||
|
||||
5170. [test] Added --with-dlz-filesystem to feature-test. [GL !1587]
|
||||
|
||||
5168. [test] Do not crash on shutdown when RPZ fails to load. Also,
|
||||
keep previous version of the database if RPZ fails to
|
||||
load. [GL #813]
|
||||
|
||||
5167. [bug] nxdomain-redirect could sometimes lookup the wrong
|
||||
redirect name. [GL #892]
|
||||
|
||||
--- 9.11.6-P1 released ---
|
||||
|
||||
5200. [security] tcp-clients settings could be exceeded in some cases,
|
||||
which could lead to exhaustion of file descriptors.
|
||||
(CVE-2018-5743) [GL #615]
|
||||
|
||||
--- 9.11.6 released ---
|
||||
|
||||
--- 9.11.6rc1 released ---
|
||||
|
||||
5166. [port] openbsd: Threads are now enabled by default. [GL !1548]
|
||||
@@ -135,8 +361,8 @@
|
||||
5092. [bug] Address memory leak on SIGTERM in nsupdate when using
|
||||
GSS-TSIG. [GL #558]
|
||||
|
||||
5090. [bug] dig and mdig failed to properly preparse dash value
|
||||
pairs when value was a seperate argument and started
|
||||
5090. [bug] dig and mdig failed to properly pre-parse dash value
|
||||
pairs when value was a separate argument and started
|
||||
with a dash. [GL #584]
|
||||
|
||||
5088. [bug] dig/host/nslookup could crash when interrupted close to
|
||||
@@ -162,7 +388,7 @@
|
||||
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]
|
||||
5071. [bug] Comparison 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]
|
||||
@@ -172,7 +398,7 @@
|
||||
|
||||
5065. [bug] Only set IPV6_USE_MIN_MTU on IPv6. [GL #553]
|
||||
|
||||
5064. [test] Initalize TZ environment variable before calling
|
||||
5064. [test] Initialize TZ environment variable before calling
|
||||
dns_test_begin in dnstap_test. [GL #624]
|
||||
|
||||
5061. [protocol] Add support for EID and NIMLOC. [GL #626]
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
CONTRIBUTING
|
||||
|
||||
BIND Source Access and Contributor Guidelines
|
||||
|
||||
Feb 22, 2018
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
HISTORY
|
||||
|
||||
Functional enhancements from prior major releases of BIND 9
|
||||
|
||||
BIND 9.10.0
|
||||
@@ -303,11 +305,11 @@ BIND 9.4.0
|
||||
* Detect duplicates of UDP queries we are recursing on and drop them.
|
||||
New stats category "duplicates".
|
||||
* "USE INTERNAL MALLOC" is now runtime selectable.
|
||||
* The lame cache is now done on a basis as some servers only appear to
|
||||
be lame for certain query types.
|
||||
* The lame cache is now done on a <qname,qclass,qtype> basis as some
|
||||
servers only appear to be lame for certain query types.
|
||||
* Limit the number of recursive clients that can be waiting for a single
|
||||
query () to resolve. New options clients-per-query and
|
||||
max-clients-per-query.
|
||||
query (<qname,qtype,qclass>) to resolve. New options clients-per-query
|
||||
and max-clients-per-query.
|
||||
* dig: report the number of extra bytes still left in the packet after
|
||||
processing all the records.
|
||||
* Support for IPSECKEY rdata type.
|
||||
|
||||
+4
-4
@@ -95,22 +95,22 @@ test-force:
|
||||
exit $$status
|
||||
|
||||
README: README.md
|
||||
${PANDOC} --email-obfuscation=none -s -t html README.md | \
|
||||
${PANDOC} --email-obfuscation=none -s --metadata title="README" -f markdown-smart -t html README.md | \
|
||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||
sed -e '$${/^$$/d;}' > $@
|
||||
|
||||
HISTORY: HISTORY.md
|
||||
${PANDOC} --email-obfuscation=none -s -t html HISTORY.md | \
|
||||
${PANDOC} --email-obfuscation=none -s --metadata title="HISTORY" -f markdown-smart -t html HISTORY.md | \
|
||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||
sed -e '$${/^$$/d;}' > $@
|
||||
|
||||
OPTIONS: OPTIONS.md
|
||||
${PANDOC} --email-obfuscation=none -s -t html OPTIONS.md | \
|
||||
${PANDOC} --email-obfuscation=none -s --metadata title="OPTIONS" -f markdown-smart -t html OPTIONS.md | \
|
||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||
sed -e '$${/^$$/d;}' > $@
|
||||
|
||||
CONTRIBUTING: CONTRIBUTING.md
|
||||
${PANDOC} --email-obfuscation=none -s -t html CONTRIBUTING.md | \
|
||||
${PANDOC} --email-obfuscation=none -s --metadata title="CONTRIBUTING" -f markdown-smart -t html CONTRIBUTING.md | \
|
||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||
sed -e '$${/^$$/d;}' > $@
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
OPTIONS
|
||||
|
||||
Setting the STD_CDEFINES environment variable before running configure can
|
||||
be used to enable certain compile-time options that are not explicitly
|
||||
defined in configure.
|
||||
|
||||
Some of these settings are:
|
||||
|
||||
Setting Description
|
||||
Setting Description
|
||||
Don't ovewrite memory when allocating or freeing
|
||||
-DISC_MEM_FILL=0 it; this improves performance but makes
|
||||
debugging more difficult.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
README
|
||||
|
||||
BIND 9
|
||||
|
||||
Contents
|
||||
@@ -37,9 +39,9 @@ versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a 501
|
||||
(c)(3) public benefit corporation dedicated to providing software and
|
||||
services in support of the Internet infrastructure, developed BIND 9 and
|
||||
is responsible for its ongoing maintenance and improvement. BIND is open
|
||||
source software licenced under the terms of ISC License for all versions
|
||||
source software licensed under the terms of ISC License for all versions
|
||||
up to and including BIND 9.10, and the Mozilla Public License version 2.0
|
||||
for all subsequent verisons.
|
||||
for all subsequent versions.
|
||||
|
||||
For a summary of features introduced in past major releases of BIND, see
|
||||
the file HISTORY.
|
||||
@@ -128,7 +130,7 @@ releases. New features include:
|
||||
fetches-per-server, this value is not self-tuning.)
|
||||
+ New stats counters have been added to count queries spilled due to
|
||||
these quotas.
|
||||
* Added a new dnssec-keymgr key mainenance utility, which can generate
|
||||
* Added a new dnssec-keymgr key maintenance utility, which can generate
|
||||
or update keys as needed to ensure that a zone's keys match a defined
|
||||
DNSSEC policy.
|
||||
* The experimental "SIT" feature in BIND 9.10 has been renamed "COOKIE"
|
||||
@@ -249,7 +251,9 @@ disclosed in CVE-2017-3145.
|
||||
BIND 9.11.4
|
||||
|
||||
BIND 9.11.4 is a maintenance release, and addresses the security flaw
|
||||
disclosed in CVE-2018-5738.
|
||||
disclosed in CVE-2018-5738. It also introduces "root key sentinel"
|
||||
support, enabling validating resolvers to indicate via a special query
|
||||
which trust anchors are configured for the root zone.
|
||||
|
||||
BIND 9.11.5
|
||||
|
||||
@@ -263,7 +267,31 @@ correcting faulty documentation and introducing the following new feature:
|
||||
BIND 9.11.6
|
||||
|
||||
BIND 9.11.6 is a maintenance release, and also addresses the security
|
||||
flaws disclosed in CVE-2018-5744, CVE-2018-5745, and CVE-2019-6465.
|
||||
flaws disclosed in CVE-2018-5743, CVE-2018-5745, CVE-2018-5744, and
|
||||
CVE-2019-6465.
|
||||
|
||||
BIND 9.11.7
|
||||
|
||||
BIND 9.11.7 is a maintenance release, and also addresses the security flaw
|
||||
disclosed in CVE-2018-5743.
|
||||
|
||||
BIND 9.11.8
|
||||
|
||||
BIND 9.11.8 is a maintenance release, and also addresses the security flaw
|
||||
disclosed in CVE-2019-6471.
|
||||
|
||||
BIND 9.11.9
|
||||
|
||||
BIND 9.11.9 is a maintenance release, and also adds support for the new
|
||||
MaxMind GeoIP2 geolocation API when built with configure --with-geoip2.
|
||||
|
||||
BIND 9.11.10
|
||||
|
||||
BIND 9.11.10 is a maintenance release.
|
||||
|
||||
BIND 9.11.11
|
||||
|
||||
BIND 9.11.11 is a maintenance release.
|
||||
|
||||
Building BIND
|
||||
|
||||
@@ -287,7 +315,7 @@ make depend. If you're using Emacs, you might find make tags helpful.
|
||||
Several environment variables that can be set before running configure
|
||||
will affect compilation:
|
||||
|
||||
Variable Description
|
||||
Variable Description
|
||||
CC The C compiler to use. configure tries to figure out the
|
||||
right one for supported systems.
|
||||
C compiler flags. Defaults to include -g and/or -O2 as
|
||||
@@ -449,7 +477,7 @@ development BIND 9 is included in the file CHANGES, with the most recent
|
||||
changes listed first. Change notes include tags indicating the category of
|
||||
the change that was made; these categories are:
|
||||
|
||||
Category Description
|
||||
Category Description
|
||||
[func] New feature
|
||||
[bug] General bug fix
|
||||
[security] Fix for a significant security flaw
|
||||
@@ -477,26 +505,46 @@ releases (i.e., those with version numbers ending in zero). Some new
|
||||
functionality may be backported to older releases on a case-by-case basis.
|
||||
All other change types may be applied to all currently-supported releases.
|
||||
|
||||
Bug report identifiers
|
||||
|
||||
Most notes in the CHANGES file include a reference to a bug report or
|
||||
issue number. Prior to 2018, these were usually of the form [RT #NNN] and
|
||||
referred to entries in the "bind9-bugs" RT database, which was not open to
|
||||
the public. More recent entries use the form [GL #NNN] or, less often, [GL
|
||||
!NNN], which, respectively, refer to issues or merge requests in the
|
||||
Gitlab database. Most of these are publicly readable, unless they include
|
||||
information which is confidential or security senstive.
|
||||
|
||||
To look up a Gitlab issue by its number, use the URL https://
|
||||
gitlab.isc.org/isc-projects/bind9/issues/NNN. To look up a merge request,
|
||||
use https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN.
|
||||
|
||||
In rare cases, an issue or merge request number may be followed with the
|
||||
letter "P". This indicates that the information is in the private ISC
|
||||
Gitlab instance, which is not visible to the public.
|
||||
|
||||
Acknowledgments
|
||||
|
||||
* The original development of BIND 9 was underwritten by the following
|
||||
organizations:
|
||||
|
||||
Sun Microsystems, Inc.
|
||||
Hewlett Packard
|
||||
Compaq Computer Corporation
|
||||
IBM
|
||||
Process Software Corporation
|
||||
Silicon Graphics, Inc.
|
||||
Network Associates, Inc.
|
||||
U.S. Defense Information Systems Agency
|
||||
USENIX Association
|
||||
Stichting NLnet - NLnet Foundation
|
||||
Nominum, Inc.
|
||||
Sun Microsystems, Inc.
|
||||
Hewlett Packard
|
||||
Compaq Computer Corporation
|
||||
IBM
|
||||
Process Software Corporation
|
||||
Silicon Graphics, Inc.
|
||||
Network Associates, Inc.
|
||||
U.S. Defense Information Systems Agency
|
||||
USENIX Association
|
||||
Stichting NLnet - NLnet Foundation
|
||||
Nominum, Inc.
|
||||
|
||||
* This product includes software developed by the OpenSSL Project for
|
||||
use in the OpenSSL Toolkit. http://www.OpenSSL.org/
|
||||
|
||||
* This product includes cryptographic software written by Eric Young
|
||||
(eay@cryptsoft.com)
|
||||
|
||||
* This product includes software written by Tim Hudson
|
||||
(tjh@cryptsoft.com)
|
||||
|
||||
@@ -48,9 +48,9 @@ versions 4 and 8. Internet Systems Consortium
|
||||
corporation dedicated to providing software and services in support of the
|
||||
Internet infrastructure, developed BIND 9 and is responsible for its
|
||||
ongoing maintenance and improvement. BIND is open source software
|
||||
licenced under the terms of ISC License for all versions up to and
|
||||
licensed under the terms of ISC License for all versions up to and
|
||||
including BIND 9.10, and the Mozilla Public License version 2.0 for all
|
||||
subsequent verisons.
|
||||
subsequent versions.
|
||||
|
||||
For a summary of features introduced in past major releases of BIND,
|
||||
see the file [HISTORY](HISTORY.md).
|
||||
@@ -146,7 +146,7 @@ releases. New features include:
|
||||
`fetches-per-server`, this value is not self-tuning.)
|
||||
* New stats counters have been added to count queries spilled due to
|
||||
these quotas.
|
||||
* Added a new `dnssec-keymgr` key mainenance utility, which can generate or
|
||||
* Added a new `dnssec-keymgr` key maintenance utility, which can generate or
|
||||
update keys as needed to ensure that a zone's keys match a defined DNSSEC
|
||||
policy.
|
||||
* The experimental "SIT" feature in BIND 9.10 has been renamed "COOKIE" and
|
||||
@@ -265,7 +265,9 @@ disclosed in CVE-2017-3145.
|
||||
#### BIND 9.11.4
|
||||
|
||||
BIND 9.11.4 is a maintenance release, and addresses the security flaw
|
||||
disclosed in CVE-2018-5738.
|
||||
disclosed in CVE-2018-5738. It also introduces "root key sentinel" support,
|
||||
enabling validating resolvers to indicate via a special query which trust
|
||||
anchors are configured for the root zone.
|
||||
|
||||
#### BIND 9.11.5
|
||||
|
||||
@@ -280,7 +282,32 @@ feature:
|
||||
#### BIND 9.11.6
|
||||
|
||||
BIND 9.11.6 is a maintenance release, and also addresses the security
|
||||
flaws disclosed in CVE-2018-5744, CVE-2018-5745, and CVE-2019-6465.
|
||||
flaws disclosed in CVE-2018-5743, CVE-2018-5745, CVE-2018-5744,
|
||||
and CVE-2019-6465.
|
||||
|
||||
#### BIND 9.11.7
|
||||
|
||||
BIND 9.11.7 is a maintenance release, and also addresses the security
|
||||
flaw disclosed in CVE-2018-5743.
|
||||
|
||||
#### BIND 9.11.8
|
||||
|
||||
BIND 9.11.8 is a maintenance release, and also addresses the security
|
||||
flaw disclosed in CVE-2019-6471.
|
||||
|
||||
#### BIND 9.11.9
|
||||
|
||||
BIND 9.11.9 is a maintenance release, and also adds support for
|
||||
the new MaxMind GeoIP2 geolocation API when built with
|
||||
`configure --with-geoip2`.
|
||||
|
||||
#### BIND 9.11.10
|
||||
|
||||
BIND 9.11.10 is a maintenance release.
|
||||
|
||||
#### BIND 9.11.11
|
||||
|
||||
BIND 9.11.11 is a maintenance release.
|
||||
|
||||
### <a name="build"/> Building BIND
|
||||
|
||||
@@ -484,6 +511,25 @@ releases (i.e., those with version numbers ending in zero). Some new
|
||||
functionality may be backported to older releases on a case-by-case basis.
|
||||
All other change types may be applied to all currently-supported releases.
|
||||
|
||||
#### Bug report identifiers
|
||||
|
||||
Most notes in the CHANGES file include a reference to a bug report or
|
||||
issue number. Prior to 2018, these were usually of the form `[RT #NNN]`
|
||||
and referred to entries in the "bind9-bugs" RT database, which was not open
|
||||
to the public. More recent entries use the form `[GL #NNN]` or, less often,
|
||||
`[GL !NNN]`, which, respectively, refer to issues or merge requests in the
|
||||
Gitlab database. Most of these are publicly readable, unless they include
|
||||
information which is confidential or security senstive.
|
||||
|
||||
To look up a Gitlab issue by its number, use the URL
|
||||
[https://gitlab.isc.org/isc-projects/bind9/issues/NNN](https://gitlab.isc.org/isc-projects/bind9/issues).
|
||||
To look up a merge request, use
|
||||
[https://gitlab.isc.org/isc-projects/bind9/merge_requests/NNN](https://gitlab.isc.org/isc-projects/bind9/merge_requests).
|
||||
|
||||
In rare cases, an issue or merge request number may be followed with the
|
||||
letter "P". This indicates that the information is in the private ISC
|
||||
Gitlab instance, which is not visible to the public.
|
||||
|
||||
### <a name="ack"/> Acknowledgments
|
||||
|
||||
* The original development of BIND 9 was underwritten by the
|
||||
|
||||
Vendored
+2
@@ -288,6 +288,8 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])dnl PKG_CHECK_VAR
|
||||
|
||||
m4_include([libtool.m4/ax_restore_flags.m4])
|
||||
m4_include([libtool.m4/ax_save_flags.m4])
|
||||
m4_include([libtool.m4/libtool.m4])
|
||||
m4_include([libtool.m4/ltoptions.m4])
|
||||
m4_include([libtool.m4/ltsugar.m4])
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# $Id: Makefile.in,v 1.36 2009/12/05 23:31:40 each Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -23,7 +21,7 @@ CINCLUDES = ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISCCFG_INCLUDES} \
|
||||
CDEFINES = @CRYPTO@ -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
||||
CWARNINGS =
|
||||
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# $Id: Makefile.in,v 1.8 2009/12/05 23:31:40 each Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -31,7 +29,7 @@ ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||
|
||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
|
||||
@@ -23,7 +23,7 @@ CDEFINES = @CRYPTO@ -DVERSION=\"${VERSION}\" \
|
||||
CWARNINGS =
|
||||
|
||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
IRSLIBS = ../../lib/irs/libirs.@A@
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ CDEFINES = -DVERSION=\"${VERSION}\" @CRYPTO@
|
||||
CWARNINGS =
|
||||
|
||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
|
||||
+16
-10
@@ -368,14 +368,20 @@ Display [do not display] the CLASS when printing the record\&.
|
||||
.PP
|
||||
\fB+[no]cmd\fR
|
||||
.RS 4
|
||||
Toggles the printing of the initial comment in the output identifying the version of
|
||||
Toggles the printing of the initial comment in the output, identifying the version of
|
||||
\fBdig\fR
|
||||
and the query options that have been applied\&. This comment is printed by default\&.
|
||||
and the query options that have been applied\&. This option always has global effect; it cannot be set globally and then overridden on a per\-lookup basis\&. The default is to print this comment\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]comments\fR
|
||||
.RS 4
|
||||
Toggle the display of comment lines in the output\&. The default is to print comments\&.
|
||||
Toggles the display of some comment lines in the output, containing information about the packet header and OPT pseudosection, and the names of the response section\&. The default is to print these comments\&.
|
||||
.sp
|
||||
Other types of comments in the output are not affected by this option, but can be controlled using other command line switches\&. These include
|
||||
\fB+[no]cmd\fR,
|
||||
\fB+[no]question\fR,
|
||||
\fB+[no]stats\fR, and
|
||||
\fB+[no]rrcomments\fR\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]cookie\fR\fB[=####]\fR
|
||||
@@ -554,12 +560,12 @@ Set [restore] the DNS message opcode to the specified value\&. The default value
|
||||
.PP
|
||||
\fB+[no]qr\fR
|
||||
.RS 4
|
||||
Print [do not print] the query as it is sent\&. By default, the query is not printed\&.
|
||||
Toggles the display of the query message as it is sent\&. By default, the query is not printed\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]question\fR
|
||||
.RS 4
|
||||
Print [do not print] the question section of a query when an answer is returned\&. The default is to print the question section as a comment\&.
|
||||
Toggles the display of the question section of a query when an answer is returned\&. The default is to print the question section as a comment\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]rdflag\fR
|
||||
@@ -572,11 +578,11 @@ A synonym for
|
||||
.RS 4
|
||||
Toggle the setting of the RD (recursion desired) bit in the query\&. This bit is set by default, which means
|
||||
\fBdig\fR
|
||||
normally sends recursive queries\&. Recursion is automatically disabled when the
|
||||
normally sends recursive queries\&. Recursion is automatically disabled when using the
|
||||
\fI+nssearch\fR
|
||||
or
|
||||
option, and when using
|
||||
\fI+trace\fR
|
||||
query options are used\&.
|
||||
except for an initial recursive query to get the list of root servers\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+retry=T\fR
|
||||
@@ -607,7 +613,7 @@ determines if the name will be treated as relative or not and hence whether a se
|
||||
.PP
|
||||
\fB+[no]short\fR
|
||||
.RS 4
|
||||
Provide a terse answer\&. The default is to print the answer in a verbose form\&.
|
||||
Provide a terse answer\&. The default is to print the answer in a verbose form\&. This option always has global effect; it cannot be set globally and then overridden on a per\-lookup basis\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]showsearch\fR
|
||||
@@ -637,7 +643,7 @@ causes fields not to be split at all\&. The default is 56 characters, or 44 char
|
||||
.PP
|
||||
\fB+[no]stats\fR
|
||||
.RS 4
|
||||
This query option toggles the printing of statistics: when the query was made, the size of the reply and so on\&. The default behavior is to print the query statistics\&.
|
||||
Toggles the printing of statistics: when the query was made, the size of the reply and so on\&. The default behavior is to print the query statistics as a comment after each lookup\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]subnet=addr[/prefix\-length]\fR
|
||||
|
||||
+19
-12
@@ -176,11 +176,13 @@ help(void) {
|
||||
" +bufsize=### (Set EDNS0 Max UDP packet size)\n"
|
||||
" +[no]cdflag (Set checking disabled flag in query)\n"
|
||||
" +[no]class (Control display of class in records)\n"
|
||||
" +[no]cmd (Control display of command line)\n"
|
||||
" +[no]comments (Control display of comment lines)\n"
|
||||
" +[no]cmd (Control display of command line -\n"
|
||||
" global option)\n"
|
||||
" +[no]comments (Control display of packet header\n"
|
||||
" and section name comments)\n"
|
||||
" +[no]cookie (Add a COOKIE option to the request)\n"
|
||||
" +[no]crypto (Control display of cryptographic "
|
||||
"fields in records)\n"
|
||||
" +[no]crypto (Control display of cryptographic\n"
|
||||
" fields in records)\n"
|
||||
" +[no]defname (Use search list (+[no]search))\n"
|
||||
" +[no]dnssec (Request DNSSEC records)\n"
|
||||
" +domain=### (Set default domainname)\n"
|
||||
@@ -196,10 +198,12 @@ help(void) {
|
||||
" +[no]identify (ID responders in short answers)\n"
|
||||
#ifdef HAVE_LIBIDN2
|
||||
" +[no]idnin (Parse IDN names [default=on on tty])\n"
|
||||
" +[no]idnout (Convert IDN response [default=on on tty])\n"
|
||||
" +[no]idnout (Convert IDN response "
|
||||
"[default=on on tty])\n"
|
||||
#endif
|
||||
" +[no]ignore (Don't revert to TCP for TC responses.)\n"
|
||||
" +[no]keepopen (Keep the TCP socket open between queries)\n"
|
||||
" +[no]keepopen (Keep the TCP socket open between "
|
||||
"queries)\n"
|
||||
" +[no]mapped (Allow mapped IPv4 over IPv6)\n"
|
||||
" +[no]multiline (Print records in an expanded format)\n"
|
||||
" +ndots=### (Set search NDOTS value)\n"
|
||||
@@ -216,7 +220,7 @@ help(void) {
|
||||
"comments)\n"
|
||||
" +[no]search (Set whether to use searchlist)\n"
|
||||
" +[no]short (Display nothing except short\n"
|
||||
" form of answer)\n"
|
||||
" form of answers - global option)\n"
|
||||
" +[no]showsearch (Search with intermediate results)\n"
|
||||
#ifdef DIG_SIGCHASE
|
||||
" +[no]sigchase (Chase DNSSEC signatures)\n"
|
||||
@@ -229,14 +233,16 @@ help(void) {
|
||||
#if defined(DIG_SIGCHASE) && DIG_SIGCHASE_TD
|
||||
" +[no]topdown (Do +sigchase in top-down mode)\n"
|
||||
#endif
|
||||
" +[no]trace (Trace delegation down from root [+dnssec])\n"
|
||||
" +[no]trace (Trace delegation down from root "
|
||||
"[+dnssec])\n"
|
||||
#ifdef DIG_SIGCHASE
|
||||
" +trusted-key=#### (Trusted Key to use with +sigchase)\n"
|
||||
#endif
|
||||
" +tries=### (Set number of UDP attempts) [3]\n"
|
||||
" +[no]ttlid (Control display of ttls in records)\n"
|
||||
" +[no]ttlunits (Display TTLs in human-readable units)\n"
|
||||
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" format)\n"
|
||||
" +[no]unknownformat (Print RDATA in RFC 3597 \"unknown\" "
|
||||
"format)\n"
|
||||
" +[no]vc (TCP mode (+[no]tcp))\n"
|
||||
" +[no]zflag (Set Z flag in query)\n"
|
||||
" global d-opts and servers (before host name) affect all queries.\n"
|
||||
@@ -565,8 +571,9 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||
check_result(result, "dns_master_stylecreate");
|
||||
|
||||
if (query->lookup->cmdline[0] != 0) {
|
||||
if (!short_form)
|
||||
if (!short_form && printcmd) {
|
||||
fputs(query->lookup->cmdline, stdout);
|
||||
}
|
||||
query->lookup->cmdline[0]=0;
|
||||
}
|
||||
debug("printmessage(%s %s %s)", headers ? "headers" : "noheaders",
|
||||
@@ -588,7 +595,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
|
||||
if (query->lookup->comments && !short_form) {
|
||||
if (query->lookup->cmdline[0] != 0)
|
||||
if (query->lookup->cmdline[0] != 0 && printcmd)
|
||||
printf("; %s\n", query->lookup->cmdline);
|
||||
if (msg == query->lookup->sendmsg)
|
||||
printf(";; Sending:\n");
|
||||
@@ -1431,7 +1438,7 @@ plus_option(const char *option, bool is_batchfile,
|
||||
lookup->trace = state;
|
||||
lookup->trace_root = state;
|
||||
if (state) {
|
||||
lookup->recurse = false;
|
||||
lookup->recurse = true;
|
||||
lookup->identify = true;
|
||||
lookup->comments = false;
|
||||
rrcomments = 0;
|
||||
|
||||
+30
-15
@@ -605,9 +605,11 @@
|
||||
<listitem>
|
||||
<para>
|
||||
Toggles the printing of the initial comment in the
|
||||
output identifying the version of <command>dig</command>
|
||||
and the query options that have been applied. This
|
||||
comment is printed by default.
|
||||
output, identifying the version of <command>dig</command>
|
||||
and the query options that have been applied. This option
|
||||
always has global effect; it cannot be set globally
|
||||
and then overridden on a per-lookup basis. The default
|
||||
is to print this comment.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -616,8 +618,18 @@
|
||||
<term><option>+[no]comments</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Toggle the display of comment lines in the output.
|
||||
The default is to print comments.
|
||||
Toggles the display of some comment lines in the output,
|
||||
containing information about the packet header and
|
||||
OPT pseudosection, and the names of the response
|
||||
section. The default is to print these comments.
|
||||
</para>
|
||||
<para>
|
||||
Other types of comments in the output are not affected by
|
||||
this option, but can be controlled using other command
|
||||
line switches. These include <command>+[no]cmd</command>,
|
||||
<command>+[no]question</command>,
|
||||
<command>+[no]stats</command>, and
|
||||
<command>+[no]rrcomments</command>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -940,8 +952,8 @@
|
||||
<term><option>+[no]qr</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print [do not print] the query as it is sent. By
|
||||
default, the query is not printed.
|
||||
Toggles the display of the query message as it is sent.
|
||||
By default, the query is not printed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -950,7 +962,7 @@
|
||||
<term><option>+[no]question</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print [do not print] the question section of a query
|
||||
Toggles the display of the question section of a query
|
||||
when an answer is returned. The default is to print
|
||||
the question section as a comment.
|
||||
</para>
|
||||
@@ -974,8 +986,10 @@
|
||||
in the query. This bit is set by default, which means
|
||||
<command>dig</command> normally sends recursive
|
||||
queries. Recursion is automatically disabled when
|
||||
the <parameter>+nssearch</parameter> or
|
||||
<parameter>+trace</parameter> query options are used.
|
||||
using the <parameter>+nssearch</parameter> option, and
|
||||
when using <parameter>+trace</parameter> except for
|
||||
an initial recursive query to get the list of root
|
||||
servers.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -1028,7 +1042,9 @@
|
||||
<listitem>
|
||||
<para>
|
||||
Provide a terse answer. The default is to print the
|
||||
answer in a verbose form.
|
||||
answer in a verbose form. This option always has global
|
||||
effect; it cannot be set globally and then overridden on
|
||||
a per-lookup basis.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -1074,10 +1090,9 @@
|
||||
<term><option>+[no]stats</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This query option toggles the printing of statistics:
|
||||
when the query was made, the size of the reply and
|
||||
so on. The default behavior is to print the query
|
||||
statistics.
|
||||
Toggles the printing of statistics: when the query was made,
|
||||
the size of the reply and so on. The default behavior is to
|
||||
print the query statistics as a comment after each lookup.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
+30
-15
@@ -490,16 +490,28 @@
|
||||
<dd>
|
||||
<p>
|
||||
Toggles the printing of the initial comment in the
|
||||
output identifying the version of <span class="command"><strong>dig</strong></span>
|
||||
and the query options that have been applied. This
|
||||
comment is printed by default.
|
||||
output, identifying the version of <span class="command"><strong>dig</strong></span>
|
||||
and the query options that have been applied. This option
|
||||
always has global effect; it cannot be set globally
|
||||
and then overridden on a per-lookup basis. The default
|
||||
is to print this comment.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+[no]comments</code></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Toggle the display of comment lines in the output.
|
||||
The default is to print comments.
|
||||
Toggles the display of some comment lines in the output,
|
||||
containing information about the packet header and
|
||||
OPT pseudosection, and the names of the response
|
||||
section. The default is to print these comments.
|
||||
</p>
|
||||
<p>
|
||||
Other types of comments in the output are not affected by
|
||||
this option, but can be controlled using other command
|
||||
line switches. These include <span class="command"><strong>+[no]cmd</strong></span>,
|
||||
<span class="command"><strong>+[no]question</strong></span>,
|
||||
<span class="command"><strong>+[no]stats</strong></span>, and
|
||||
<span class="command"><strong>+[no]rrcomments</strong></span>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+[no]cookie[<span class="optional">=####</span>]</code></span></dt>
|
||||
@@ -745,14 +757,14 @@
|
||||
<dt><span class="term"><code class="option">+[no]qr</code></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Print [do not print] the query as it is sent. By
|
||||
default, the query is not printed.
|
||||
Toggles the display of the query message as it is sent.
|
||||
By default, the query is not printed.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+[no]question</code></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Print [do not print] the question section of a query
|
||||
Toggles the display of the question section of a query
|
||||
when an answer is returned. The default is to print
|
||||
the question section as a comment.
|
||||
</p>
|
||||
@@ -770,8 +782,10 @@
|
||||
in the query. This bit is set by default, which means
|
||||
<span class="command"><strong>dig</strong></span> normally sends recursive
|
||||
queries. Recursion is automatically disabled when
|
||||
the <em class="parameter"><code>+nssearch</code></em> or
|
||||
<em class="parameter"><code>+trace</code></em> query options are used.
|
||||
using the <em class="parameter"><code>+nssearch</code></em> option, and
|
||||
when using <em class="parameter"><code>+trace</code></em> except for
|
||||
an initial recursive query to get the list of root
|
||||
servers.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+retry=T</code></span></dt>
|
||||
@@ -812,7 +826,9 @@
|
||||
<dd>
|
||||
<p>
|
||||
Provide a terse answer. The default is to print the
|
||||
answer in a verbose form.
|
||||
answer in a verbose form. This option always has global
|
||||
effect; it cannot be set globally and then overridden on
|
||||
a per-lookup basis.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+[no]showsearch</code></span></dt>
|
||||
@@ -846,10 +862,9 @@
|
||||
<dt><span class="term"><code class="option">+[no]stats</code></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
This query option toggles the printing of statistics:
|
||||
when the query was made, the size of the reply and
|
||||
so on. The default behavior is to print the query
|
||||
statistics.
|
||||
Toggles the printing of statistics: when the query was made,
|
||||
the size of the reply and so on. The default behavior is to
|
||||
print the query statistics as a comment after each lookup.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="option">+[no]subnet=addr[/prefix-length]</code></span></dt>
|
||||
|
||||
+8
-3
@@ -1670,6 +1670,7 @@ typedef struct dig_ednsoptname {
|
||||
} dig_ednsoptname_t;
|
||||
|
||||
dig_ednsoptname_t optnames[] = {
|
||||
{ 1, "LLQ" }, /* draft-sekar-dns-llq */
|
||||
{ 3, "NSID" }, /* RFC 5001 */
|
||||
{ 5, "DAU" }, /* RFC 6975 */
|
||||
{ 6, "DHU" }, /* RFC 6975 */
|
||||
@@ -1682,6 +1683,8 @@ dig_ednsoptname_t optnames[] = {
|
||||
{ 12, "PAD" }, /* shorthand */
|
||||
{ 13, "CHAIN" }, /* RFC 7901 */
|
||||
{ 14, "KEY-TAG" }, /* RFC 8145 */
|
||||
{ 16, "CLIENT-TAG" }, /* draft-bellis-dnsop-edns-tags */
|
||||
{ 17, "SERVER-TAG" }, /* draft-bellis-dnsop-edns-tags */
|
||||
{ 26946, "DEVICEID" }, /* Brian Hartvigsen */
|
||||
};
|
||||
|
||||
@@ -2540,12 +2543,14 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
lookup->sendmsg->id = (unsigned short)id & 0xFFFF;
|
||||
lookup->sendmsg->opcode = lookup->opcode;
|
||||
lookup->msgcounter = 0;
|
||||
|
||||
/*
|
||||
* If this is a trace request, completely disallow recursion, since
|
||||
* it's meaningless for traces.
|
||||
* If this is a trace request, completely disallow recursion after
|
||||
* looking up the root name servers, since it's meaningless for traces.
|
||||
*/
|
||||
if (lookup->trace || (lookup->ns_search_only && !lookup->trace_root))
|
||||
if ((lookup->trace || lookup->ns_search_only) && !lookup->trace_root) {
|
||||
lookup->recurse = false;
|
||||
}
|
||||
|
||||
if (lookup->recurse &&
|
||||
lookup->rdtype != dns_rdatatype_axfr &&
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# $Id: Makefile.in,v 1.42.332.1 2011/03/16 06:37:51 each Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -23,7 +21,7 @@ CDEFINES = -DVERSION=\"${VERSION}\" @USE_PKCS11@ @PKCS11_ENGINE@ \
|
||||
@CRYPTO@ -DPK11_LIB_LOCATION=\"@PKCS11_PROVIDER@\"
|
||||
CWARNINGS =
|
||||
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@ logkey(dns_rdata_t *rdata)
|
||||
}
|
||||
|
||||
static void
|
||||
emit(unsigned int dtype, bool showall, char *lookaside,
|
||||
emit(dns_dsdigest_t dtype, bool showall, char *lookaside,
|
||||
bool cds, dns_rdata_t *rdata)
|
||||
{
|
||||
isc_result_t result;
|
||||
@@ -351,7 +351,7 @@ main(int argc, char **argv) {
|
||||
char *lookaside = NULL;
|
||||
char *endp;
|
||||
int ch;
|
||||
unsigned int dtype = DNS_DSDIGEST_SHA1;
|
||||
dns_dsdigest_t dtype = DNS_DSDIGEST_SHA1;
|
||||
bool cds = false;
|
||||
bool both = true;
|
||||
bool usekeyset = false;
|
||||
|
||||
+29
-21
@@ -39,7 +39,7 @@
|
||||
dnssec-keygen \- DNSSEC key generation tool
|
||||
.SH "SYNOPSIS"
|
||||
.HP \w'\fBdnssec\-keygen\fR\ 'u
|
||||
\fBdnssec\-keygen\fR [\fB\-a\ \fR\fB\fIalgorithm\fR\fR] [\fB\-b\ \fR\fB\fIkeysize\fR\fR] [\fB\-n\ \fR\fB\fInametype\fR\fR] [\fB\-3\fR] [\fB\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-C\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] [\fB\-f\ \fR\fB\fIflag\fR\fR] [\fB\-G\fR] [\fB\-g\ \fR\fB\fIgenerator\fR\fR] [\fB\-h\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-k\fR] [\fB\-L\ \fR\fB\fIttl\fR\fR] [\fB\-P\ \fR\fB\fIdate/offset\fR\fR] [\fB\-P\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-p\ \fR\fB\fIprotocol\fR\fR] [\fB\-q\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-r\ \fR\fB\fIrandomdev\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-s\ \fR\fB\fIstrength\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-z\fR] {name}
|
||||
\fBdnssec\-keygen\fR [\fB\-3\fR] [\fB\-A\ \fR\fB\fIdate/offset\fR\fR] [\fB\-a\ \fR\fB\fIalgorithm\fR\fR] [\fB\-b\ \fR\fB\fIkeysize\fR\fR] [\fB\-C\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-D\ \fR\fB\fIdate/offset\fR\fR] [\fB\-D\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-E\ \fR\fB\fIengine\fR\fR] [\fB\-f\ \fR\fB\fIflag\fR\fR] [\fB\-G\fR] [\fB\-g\ \fR\fB\fIgenerator\fR\fR] [\fB\-h\fR] [\fB\-I\ \fR\fB\fIdate/offset\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-K\ \fR\fB\fIdirectory\fR\fR] [\fB\-k\fR] [\fB\-L\ \fR\fB\fIttl\fR\fR] [\fB\-n\ \fR\fB\fInametype\fR\fR] [\fB\-P\ \fR\fB\fIdate/offset\fR\fR] [\fB\-P\ sync\ \fR\fB\fIdate/offset\fR\fR] [\fB\-p\ \fR\fB\fIprotocol\fR\fR] [\fB\-q\fR] [\fB\-R\ \fR\fB\fIdate/offset\fR\fR] [\fB\-r\ \fR\fB\fIrandomdev\fR\fR] [\fB\-S\ \fR\fB\fIkey\fR\fR] [\fB\-s\ \fR\fB\fIstrength\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-V\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] {name}
|
||||
.SH "DESCRIPTION"
|
||||
.PP
|
||||
\fBdnssec\-keygen\fR
|
||||
@@ -50,6 +50,13 @@ The
|
||||
of the key is specified on the command line\&. For DNSSEC keys, this must match the name of the zone for which the key is being generated\&.
|
||||
.SH "OPTIONS"
|
||||
.PP
|
||||
\-3
|
||||
.RS 4
|
||||
Use an NSEC3\-capable algorithm to generate a DNSSEC key\&. If this option is used with an algorithm that has both NSEC and NSEC3 versions, then the NSEC3 version will be used; for example,
|
||||
\fBdnssec\-keygen \-3a RSASHA1\fR
|
||||
specifies the NSEC3RSASHA1 algorithm\&.
|
||||
.RE
|
||||
.PP
|
||||
\-a \fIalgorithm\fR
|
||||
.RS 4
|
||||
Selects the cryptographic algorithm\&. For DNSSEC keys, the value of
|
||||
@@ -78,21 +85,9 @@ The key size does not need to be specified if using a default algorithm\&. The d
|
||||
must be used\&.
|
||||
.RE
|
||||
.PP
|
||||
\-n \fInametype\fR
|
||||
.RS 4
|
||||
Specifies the owner type of the key\&. The value of
|
||||
\fBnametype\fR
|
||||
must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY)\&. These values are case insensitive\&. Defaults to ZONE for DNSKEY generation\&.
|
||||
.RE
|
||||
.PP
|
||||
\-3
|
||||
.RS 4
|
||||
Use an NSEC3\-capable algorithm to generate a DNSSEC key\&. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by default\&. Note that RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448 algorithms are NSEC3\-capable\&.
|
||||
.RE
|
||||
.PP
|
||||
\-C
|
||||
.RS 4
|
||||
Compatibility mode: generates an old\-style key, without any metadata\&. By default,
|
||||
Compatibility mode: generates an old\-style key, without any timing metadata\&. By default,
|
||||
\fBdnssec\-keygen\fR
|
||||
will include the key\*(Aqs creation date in the metadata stored with the private key, and other dates may be set there as well (publication date, activation date, etc)\&. Keys that include this data may be incompatible with older versions of BIND; the
|
||||
\fB\-C\fR
|
||||
@@ -151,9 +146,17 @@ none
|
||||
is the same as leaving it unset\&.
|
||||
.RE
|
||||
.PP
|
||||
\-n \fInametype\fR
|
||||
.RS 4
|
||||
Specifies the owner type of the key\&. The value of
|
||||
\fBnametype\fR
|
||||
must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with a host (KEY)), USER (for a key associated with a user(KEY)) or OTHER (DNSKEY)\&. These values are case insensitive\&. Defaults to ZONE for DNSKEY generation\&.
|
||||
.RE
|
||||
.PP
|
||||
\-p \fIprotocol\fR
|
||||
.RS 4
|
||||
Sets the protocol value for the generated key\&. The protocol is a number between 0 and 255\&. The default is 3 (DNSSEC)\&. Other possible values for this argument are listed in RFC 2535 and its successors\&.
|
||||
Sets the protocol value for the generated key, for use with
|
||||
\fB\-T KEY\fR\&. The protocol is a number between 0 and 255\&. The default is 3 (DNSSEC)\&. Other possible values for this argument are listed in RFC 2535 and its successors\&.
|
||||
.RE
|
||||
.PP
|
||||
\-q
|
||||
@@ -196,20 +199,21 @@ Using any TSIG algorithm (HMAC\-* or DH) forces this option to KEY\&.
|
||||
.PP
|
||||
\-t \fItype\fR
|
||||
.RS 4
|
||||
Indicates the use of the key\&.
|
||||
Indicates the use of the key, for use with
|
||||
\fB\-T KEY\fR\&.
|
||||
\fBtype\fR
|
||||
must be one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF\&. The default is AUTHCONF\&. AUTH refers to the ability to authenticate data, and CONF the ability to encrypt data\&.
|
||||
.RE
|
||||
.PP
|
||||
\-v \fIlevel\fR
|
||||
.RS 4
|
||||
Sets the debugging level\&.
|
||||
.RE
|
||||
.PP
|
||||
\-V
|
||||
.RS 4
|
||||
Prints version information\&.
|
||||
.RE
|
||||
.PP
|
||||
\-v \fIlevel\fR
|
||||
.RS 4
|
||||
Sets the debugging level\&.
|
||||
.RE
|
||||
.SH "TIMING OPTIONS"
|
||||
.PP
|
||||
Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS\&. If the argument begins with a \*(Aq+\*(Aq or \*(Aq\-\*(Aq, it is interpreted as an offset from the present time\&. For convenience, if such an offset is followed by one of the suffixes \*(Aqy\*(Aq, \*(Aqmo\*(Aq, \*(Aqw\*(Aq, \*(Aqd\*(Aq, \*(Aqh\*(Aq, or \*(Aqmi\*(Aq, then the offset is computed in years (defined as 365 24\-hour days, ignoring leap years), months (defined as 30 24\-hour days), weeks, days, hours, or minutes, respectively\&. Without a suffix, the offset is computed in seconds\&. To explicitly prevent a date from being set, use \*(Aqnone\*(Aq or \*(Aqnever\*(Aq\&.
|
||||
@@ -338,6 +342,10 @@ creates the files
|
||||
Kexample\&.com\&.+003+26160\&.key
|
||||
and
|
||||
Kexample\&.com\&.+003+26160\&.private\&.
|
||||
.PP
|
||||
To generate a matching key\-signing key, issue the command:
|
||||
.PP
|
||||
\fBdnssec\-keygen \-a DSA \-b 768 \-n ZONE \-f KSK example\&.com\fR
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
\fBdnssec-signzone\fR(8),
|
||||
|
||||
@@ -58,11 +58,10 @@
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis sepchar=" ">
|
||||
<command>dnssec-keygen</command>
|
||||
<arg choice="opt" rep="norepeat"><option>-a <replaceable class="parameter">algorithm</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-b <replaceable class="parameter">keysize</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-n <replaceable class="parameter">nametype</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-3</option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-A <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||
<arg rep="norepeat"><option>-a <replaceable class="parameter">algorithm</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-b <replaceable class="parameter">keysize</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-C</option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-c <replaceable class="parameter">class</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-D <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||
@@ -77,6 +76,7 @@
|
||||
<arg choice="opt" rep="norepeat"><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-k</option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-L <replaceable class="parameter">ttl</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-n <replaceable class="parameter">nametype</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-P <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-P sync <replaceable class="parameter">date/offset</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-p <replaceable class="parameter">protocol</replaceable></option></arg>
|
||||
@@ -88,7 +88,6 @@
|
||||
<arg choice="opt" rep="norepeat"><option>-t <replaceable class="parameter">type</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-V</option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-v <replaceable class="parameter">level</replaceable></option></arg>
|
||||
<arg choice="opt" rep="norepeat"><option>-z</option></arg>
|
||||
<arg choice="req" rep="norepeat">name</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
@@ -112,6 +111,20 @@
|
||||
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>-3</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||
If this option is used with an algorithm that has both
|
||||
NSEC and NSEC3 versions, then the NSEC3 version will be
|
||||
used; for example, <command>dnssec-keygen -3a RSASHA1</command>
|
||||
specifies the NSEC3RSASHA1 algorithm.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-a <replaceable class="parameter">algorithm</replaceable></term>
|
||||
<listitem>
|
||||
@@ -168,45 +181,16 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-n <replaceable class="parameter">nametype</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the owner type of the key. The value of
|
||||
<option>nametype</option> must either be ZONE (for a DNSSEC
|
||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with
|
||||
a host (KEY)),
|
||||
USER (for a key associated with a user(KEY)) or OTHER (DNSKEY).
|
||||
These values are case insensitive. Defaults to ZONE for DNSKEY
|
||||
generation.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-3</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||
If this option is used and no algorithm is explicitly
|
||||
set on the command line, NSEC3RSASHA1 will be used by
|
||||
default. Note that RSASHA256, RSASHA512, ECCGOST,
|
||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448
|
||||
algorithms are NSEC3-capable.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-C</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Compatibility mode: generates an old-style key, without
|
||||
any metadata. By default, <command>dnssec-keygen</command>
|
||||
will include the key's creation date in the metadata stored
|
||||
with the private key, and other dates may be set there as well
|
||||
(publication date, activation date, etc). Keys that include
|
||||
this data may be incompatible with older versions of BIND; the
|
||||
Compatibility mode: generates an old-style key, without any
|
||||
timing metadata. By default, <command>dnssec-keygen</command>
|
||||
will include the key's creation date in the metadata stored with
|
||||
the private key, and other dates may be set there as well
|
||||
(publication date, activation date, etc). Keys that include this
|
||||
data may be incompatible with older versions of BIND; the
|
||||
<option>-C</option> option suppresses them.
|
||||
</para>
|
||||
</listitem>
|
||||
@@ -315,14 +299,28 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-n <replaceable class="parameter">nametype</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the owner type of the key. The value of
|
||||
<option>nametype</option> must either be ZONE (for a DNSSEC
|
||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
||||
with a host (KEY)), USER (for a key associated with a
|
||||
user(KEY)) or OTHER (DNSKEY). These values are case
|
||||
insensitive. Defaults to ZONE for DNSKEY generation.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-p <replaceable class="parameter">protocol</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the protocol value for the generated key. The protocol
|
||||
is a number between 0 and 255. The default is 3 (DNSSEC).
|
||||
Other possible values for this argument are listed in
|
||||
RFC 2535 and its successors.
|
||||
Sets the protocol value for the generated key, for use
|
||||
with <option>-T KEY</option>. The protocol is a number between 0
|
||||
and 255. The default is 3 (DNSSEC). Other possible values for
|
||||
this argument are listed in RFC 2535 and its successors.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -409,19 +407,11 @@
|
||||
<term>-t <replaceable class="parameter">type</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Indicates the use of the key. <option>type</option> must be
|
||||
one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default
|
||||
is AUTHCONF. AUTH refers to the ability to authenticate
|
||||
data, and CONF the ability to encrypt data.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-v <replaceable class="parameter">level</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the debugging level.
|
||||
Indicates the use of the key, for use with <option>-T
|
||||
KEY</option>. <option>type</option> must be one of AUTHCONF,
|
||||
NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH
|
||||
refers to the ability to authenticate data, and CONF the ability
|
||||
to encrypt data.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -435,6 +425,15 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-v <replaceable class="parameter">level</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the debugging level.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsection>
|
||||
|
||||
@@ -637,6 +636,12 @@
|
||||
and
|
||||
<filename>Kexample.com.+003+26160.private</filename>.
|
||||
</para>
|
||||
<para>
|
||||
To generate a matching key-signing key, issue the command:
|
||||
</para>
|
||||
<para>
|
||||
<userinput>dnssec-keygen -a DSA -b 768 -n ZONE -f KSK example.com</userinput>
|
||||
</para>
|
||||
</refsection>
|
||||
|
||||
<refsection><info><title>SEE ALSO</title></info>
|
||||
|
||||
@@ -33,11 +33,10 @@
|
||||
<h2>Synopsis</h2>
|
||||
<div class="cmdsynopsis"><p>
|
||||
<code class="command">dnssec-keygen</code>
|
||||
[<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>]
|
||||
[<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>]
|
||||
[<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>]
|
||||
[<code class="option">-3</code>]
|
||||
[<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>]
|
||||
[<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>]
|
||||
[<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>]
|
||||
[<code class="option">-C</code>]
|
||||
[<code class="option">-c <em class="replaceable"><code>class</code></em></code>]
|
||||
[<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>]
|
||||
@@ -52,6 +51,7 @@
|
||||
[<code class="option">-K <em class="replaceable"><code>directory</code></em></code>]
|
||||
[<code class="option">-k</code>]
|
||||
[<code class="option">-L <em class="replaceable"><code>ttl</code></em></code>]
|
||||
[<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>]
|
||||
[<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>]
|
||||
[<code class="option">-P sync <em class="replaceable"><code>date/offset</code></em></code>]
|
||||
[<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>]
|
||||
@@ -63,7 +63,6 @@
|
||||
[<code class="option">-t <em class="replaceable"><code>type</code></em></code>]
|
||||
[<code class="option">-V</code>]
|
||||
[<code class="option">-v <em class="replaceable"><code>level</code></em></code>]
|
||||
[<code class="option">-z</code>]
|
||||
{name}
|
||||
</p></div>
|
||||
</div>
|
||||
@@ -89,6 +88,16 @@
|
||||
|
||||
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt><span class="term">-3</span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||
If this option is used with an algorithm that has both
|
||||
NSEC and NSEC3 versions, then the NSEC3 version will be
|
||||
used; for example, <span class="command"><strong>dnssec-keygen -3a RSASHA1</strong></span>
|
||||
specifies the NSEC3RSASHA1 algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
@@ -139,38 +148,15 @@
|
||||
must be used.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Specifies the owner type of the key. The value of
|
||||
<code class="option">nametype</code> must either be ZONE (for a DNSSEC
|
||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated with
|
||||
a host (KEY)),
|
||||
USER (for a key associated with a user(KEY)) or OTHER (DNSKEY).
|
||||
These values are case insensitive. Defaults to ZONE for DNSKEY
|
||||
generation.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-3</span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Use an NSEC3-capable algorithm to generate a DNSSEC key.
|
||||
If this option is used and no algorithm is explicitly
|
||||
set on the command line, NSEC3RSASHA1 will be used by
|
||||
default. Note that RSASHA256, RSASHA512, ECCGOST,
|
||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 and ED448
|
||||
algorithms are NSEC3-capable.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-C</span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Compatibility mode: generates an old-style key, without
|
||||
any metadata. By default, <span class="command"><strong>dnssec-keygen</strong></span>
|
||||
will include the key's creation date in the metadata stored
|
||||
with the private key, and other dates may be set there as well
|
||||
(publication date, activation date, etc). Keys that include
|
||||
this data may be incompatible with older versions of BIND; the
|
||||
Compatibility mode: generates an old-style key, without any
|
||||
timing metadata. By default, <span class="command"><strong>dnssec-keygen</strong></span>
|
||||
will include the key's creation date in the metadata stored with
|
||||
the private key, and other dates may be set there as well
|
||||
(publication date, activation date, etc). Keys that include this
|
||||
data may be incompatible with older versions of BIND; the
|
||||
<code class="option">-C</code> option suppresses them.
|
||||
</p>
|
||||
</dd>
|
||||
@@ -250,13 +236,24 @@
|
||||
or <code class="literal">none</code> is the same as leaving it unset.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-n <em class="replaceable"><code>nametype</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Specifies the owner type of the key. The value of
|
||||
<code class="option">nametype</code> must either be ZONE (for a DNSSEC
|
||||
zone key (KEY/DNSKEY)), HOST or ENTITY (for a key associated
|
||||
with a host (KEY)), USER (for a key associated with a
|
||||
user(KEY)) or OTHER (DNSKEY). These values are case
|
||||
insensitive. Defaults to ZONE for DNSKEY generation.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-p <em class="replaceable"><code>protocol</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Sets the protocol value for the generated key. The protocol
|
||||
is a number between 0 and 255. The default is 3 (DNSSEC).
|
||||
Other possible values for this argument are listed in
|
||||
RFC 2535 and its successors.
|
||||
Sets the protocol value for the generated key, for use
|
||||
with <code class="option">-T KEY</code>. The protocol is a number between 0
|
||||
and 255. The default is 3 (DNSSEC). Other possible values for
|
||||
this argument are listed in RFC 2535 and its successors.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-q</span></dt>
|
||||
@@ -327,16 +324,11 @@
|
||||
<dt><span class="term">-t <em class="replaceable"><code>type</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Indicates the use of the key. <code class="option">type</code> must be
|
||||
one of AUTHCONF, NOAUTHCONF, NOAUTH, or NOCONF. The default
|
||||
is AUTHCONF. AUTH refers to the ability to authenticate
|
||||
data, and CONF the ability to encrypt data.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Sets the debugging level.
|
||||
Indicates the use of the key, for use with <code class="option">-T
|
||||
KEY</code>. <code class="option">type</code> must be one of AUTHCONF,
|
||||
NOAUTHCONF, NOAUTH, or NOCONF. The default is AUTHCONF. AUTH
|
||||
refers to the ability to authenticate data, and CONF the ability
|
||||
to encrypt data.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-V</span></dt>
|
||||
@@ -345,6 +337,12 @@
|
||||
Prints version information.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term">-v <em class="replaceable"><code>level</code></em></span></dt>
|
||||
<dd>
|
||||
<p>
|
||||
Sets the debugging level.
|
||||
</p>
|
||||
</dd>
|
||||
</dl></div>
|
||||
</div>
|
||||
|
||||
@@ -526,6 +524,12 @@
|
||||
and
|
||||
<code class="filename">Kexample.com.+003+26160.private</code>.
|
||||
</p>
|
||||
<p>
|
||||
To generate a matching key-signing key, issue the command:
|
||||
</p>
|
||||
<p>
|
||||
<strong class="userinput"><code>dnssec-keygen -a DSA -b 768 -n ZONE -f KSK example.com</code></strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="refsection">
|
||||
|
||||
+14
-6
@@ -45,13 +45,14 @@ DLZDRIVER_LIBS = @DLZ_DRIVER_LIBS@
|
||||
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
||||
${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
|
||||
${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
|
||||
${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} @DST_OPENSSL_INC@
|
||||
${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} ${MAXMINDDB_CFLAGS} \
|
||||
@DST_OPENSSL_INC@
|
||||
|
||||
CDEFINES = @CONTRIB_DLZ@ @USE_PKCS11@ @PKCS11_ENGINE@ @CRYPTO@
|
||||
|
||||
CWARNINGS =
|
||||
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
@@ -82,10 +83,13 @@ SUBDIRS = unix
|
||||
TARGETS = named@EXEEXT@ lwresd@EXEEXT@
|
||||
|
||||
GEOIPLINKOBJS = geoip.@O@
|
||||
GEOIP2LINKOBJS = geoip.@O@
|
||||
|
||||
OBJS = builtin.@O@ client.@O@ config.@O@ control.@O@ \
|
||||
controlconf.@O@ fuzz.@O@ @GEOIPLINKOBJS@ interfacemgr.@O@ \
|
||||
listenlist.@O@ log.@O@ logconf.@O@ main.@O@ notify.@O@ \
|
||||
controlconf.@O@ fuzz.@O@ \
|
||||
@GEOIPLINKOBJS@ @GEOIP2LINKOBJS@ \
|
||||
interfacemgr.@O@ listenlist.@O@ log.@O@ logconf.@O@ \
|
||||
main.@O@ notify.@O@ \
|
||||
query.@O@ server.@O@ sortlist.@O@ statschannel.@O@ \
|
||||
tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
|
||||
zoneconf.@O@ \
|
||||
@@ -98,10 +102,13 @@ UOBJS = unix/os.@O@ unix/dlz_dlopen_driver.@O@
|
||||
SYMOBJS = symtbl.@O@
|
||||
|
||||
GEOIPLINKSRCS = geoip.c
|
||||
GEOIP2LINKSRCS = geoip.c
|
||||
|
||||
SRCS = builtin.c client.c config.c control.c \
|
||||
controlconf.c fuzz.c @GEOIPLINKSRCS@ interfacemgr.c \
|
||||
listenlist.c log.c logconf.c main.c notify.c \
|
||||
controlconf.c fuzz.c \
|
||||
@GEOIPLINKSRCS@ @GEOIP2LINKSRCS@ \
|
||||
interfacemgr.c \ listenlist.c log.c logconf.c \
|
||||
main.c notify.c \
|
||||
query.c server.c sortlist.c statschannel.c \
|
||||
tkeyconf.c tsigconf.c update.c xfrout.c \
|
||||
zoneconf.c \
|
||||
@@ -135,6 +142,7 @@ config.@O@: config.c
|
||||
-DDYNDB_LIBDIR=\"@libdir@/bind\" \
|
||||
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
|
||||
-DNS_SYSCONFDIR=\"${sysconfdir}\" \
|
||||
-DMAXMINDDB_PREFIX=\"@MAXMINDDB_PREFIX@\" \
|
||||
-c ${srcdir}/config.c
|
||||
|
||||
server.@O@: server.c
|
||||
|
||||
+69
-40
@@ -15,6 +15,15 @@
|
||||
<xsl:template match="statistics[@version="3.8"]">
|
||||
<html>
|
||||
<head>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(function($) {
|
||||
var wid=0;
|
||||
$('table.zones').each(function(i) { if( $(this).width() > wid ) wid = $(this).width(); return true; });
|
||||
$('table.zones').css('min-width', wid );
|
||||
});
|
||||
</script>
|
||||
|
||||
<xsl:if test="system-property('xsl:vendor')!='Transformiix'">
|
||||
<!-- Non Mozilla specific markup -->
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi"/>
|
||||
@@ -221,6 +230,22 @@
|
||||
background-color: rgb(1,169,206);
|
||||
color: #ffffff;
|
||||
}
|
||||
table.zones {
|
||||
border: 1px solid grey;
|
||||
}
|
||||
table.zones td {
|
||||
text-align: right;
|
||||
font-family: monospace;
|
||||
}
|
||||
table.zones td:nth-child(2) {
|
||||
text-align: center;
|
||||
}
|
||||
table.zones td:nth-child(3) {
|
||||
text-align: left;
|
||||
}
|
||||
table.zones tr:hover{
|
||||
background-color: #99ddff;
|
||||
}
|
||||
|
||||
td, th {
|
||||
padding-right: 5px;
|
||||
@@ -293,25 +318,25 @@
|
||||
<hr/>
|
||||
<h2>Server Status</h2>
|
||||
<table class="info">
|
||||
<tr>
|
||||
<tr class="odd">
|
||||
<th>Boot time:</th>
|
||||
<td>
|
||||
<xsl:value-of select="server/boot-time"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="even">
|
||||
<th>Last reconfigured:</th>
|
||||
<td>
|
||||
<xsl:value-of select="server/config-time"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="odd">
|
||||
<th>Current time:</th>
|
||||
<td>
|
||||
<xsl:value-of select="server/current-time"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="even">
|
||||
<th>Server version:</th>
|
||||
<td>
|
||||
<xsl:value-of select="server/version"/>
|
||||
@@ -330,7 +355,13 @@
|
||||
<table class="counters">
|
||||
<xsl:for-each select="server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']">
|
||||
<xsl:sort select="." data-type="number" order="descending"/>
|
||||
<tr>
|
||||
<xsl:variable name="css-class0">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
<xsl:otherwise>odd</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class0}">
|
||||
<th>
|
||||
<xsl:value-of select="@name"/>
|
||||
</th>
|
||||
@@ -611,13 +642,13 @@
|
||||
<br/>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:if test="traffic/udp/counters[@type="request-size"]/counter[.>0] or traffic/udp/counters[@type="response-size"]/counter[.>0] or traffic/tcp/counters[@type="request-size"]/counter[.>0] or traffic/tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:if test="traffic//udp/counters[@type="request-size"]/counter[.>0] or traffic//udp/counters[@type="response-size"]/counter[.>0] or traffic//tcp/counters[@type="request-size"]/counter[.>0] or traffic//tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<h2>Traffic Size Statistics</h2>
|
||||
</xsl:if>
|
||||
<xsl:if test="traffic/udp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:if test="traffic//udp/counters[@type="request-size"]/counter[.>0]">
|
||||
<h4>UDP Requests Received</h4>
|
||||
<table class="counters">
|
||||
<xsl:for-each select="traffic/udp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:for-each select="traffic//udp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:variable name="css-class7">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
@@ -625,6 +656,7 @@
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class7}">
|
||||
<th><xsl:value-of select="local-name(../../..)"/></th>
|
||||
<th>
|
||||
<xsl:value-of select="@name"/>
|
||||
</th>
|
||||
@@ -636,10 +668,10 @@
|
||||
</table>
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<xsl:if test="traffic/udp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:if test="traffic//udp/counters[@type="response-size"]/counter[.>0]">
|
||||
<h4>UDP Responses Sent</h4>
|
||||
<table class="counters">
|
||||
<xsl:for-each select="traffic/udp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:for-each select="traffic//udp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:variable name="css-class7">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
@@ -647,6 +679,7 @@
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class7}">
|
||||
<th><xsl:value-of select="local-name(../../..)"/></th>
|
||||
<th>
|
||||
<xsl:value-of select="@name"/>
|
||||
</th>
|
||||
@@ -658,10 +691,10 @@
|
||||
</table>
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<xsl:if test="traffic/tcp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:if test="traffic//tcp/counters[@type="request-size"]/counter[.>0]">
|
||||
<h4>TCP Requests Received</h4>
|
||||
<table class="counters">
|
||||
<xsl:for-each select="traffic/tcp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:for-each select="traffic//tcp/counters[@type="request-size"]/counter[.>0]">
|
||||
<xsl:variable name="css-class7">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
@@ -669,6 +702,7 @@
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class7}">
|
||||
<th><xsl:value-of select="local-name(../../..)"/></th>
|
||||
<th>
|
||||
<xsl:value-of select="@name"/>
|
||||
</th>
|
||||
@@ -680,10 +714,10 @@
|
||||
</table>
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<xsl:if test="traffic/tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:if test="traffic//tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<h4>TCP Responses Sent</h4>
|
||||
<table class="counters">
|
||||
<xsl:for-each select="traffic/tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:for-each select="traffic//tcp/counters[@type="response-size"]/counter[.>0]">
|
||||
<xsl:variable name="css-class7">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
@@ -691,6 +725,7 @@
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class7}">
|
||||
<th><xsl:value-of select="local-name(../../..)"/></th>
|
||||
<th>
|
||||
<xsl:value-of select="@name"/>
|
||||
</th>
|
||||
@@ -724,35 +759,29 @@
|
||||
</table>
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="views/view">
|
||||
<xsl:if test="zones/zone">
|
||||
<xsl:if test="views/view/zones/zone">
|
||||
<xsl:for-each select="views/view">
|
||||
<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>
|
||||
<thead><tr><th>Name</th><th>Class</th><th>Type</th><th>Serial</th></tr></thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="zones/zone">
|
||||
<xsl:variable name="css-class15">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position() mod 2 = 0">even</xsl:when>
|
||||
<xsl:otherwise>odd</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<tr class="{$css-class15}">
|
||||
<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>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
<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]">
|
||||
|
||||
+65
-36
@@ -20,6 +20,15 @@ static char xslmsg[] =
|
||||
" <xsl:template match=\"statistics[@version="3.8"]\">\n"
|
||||
" <html>\n"
|
||||
" <head>\n"
|
||||
" <script type=\"text/javascript\" src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js\"></script>\n"
|
||||
" <script type=\"text/javascript\">\n"
|
||||
" $(function($) {\n"
|
||||
" var wid=0;\n"
|
||||
" $('table.zones').each(function(i) { if( $(this).width() > wid ) wid = $(this).width(); return true; });\n"
|
||||
" $('table.zones').css('min-width', wid );\n"
|
||||
" });\n"
|
||||
" </script>\n"
|
||||
"\n"
|
||||
" <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n"
|
||||
" <!-- Non Mozilla specific markup -->\n"
|
||||
" <script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"/>\n"
|
||||
@@ -226,6 +235,22 @@ static char xslmsg[] =
|
||||
" background-color: rgb(1,169,206);\n"
|
||||
" color: #ffffff;\n"
|
||||
" }\n"
|
||||
" table.zones {\n"
|
||||
" border: 1px solid grey;\n"
|
||||
" }\n"
|
||||
" table.zones td {\n"
|
||||
" text-align: right;\n"
|
||||
" font-family: monospace;\n"
|
||||
" }\n"
|
||||
" table.zones td:nth-child(2) {\n"
|
||||
" text-align: center;\n"
|
||||
" }\n"
|
||||
" table.zones td:nth-child(3) {\n"
|
||||
" text-align: left;\n"
|
||||
" }\n"
|
||||
" table.zones tr:hover{\n"
|
||||
" background-color: #99ddff;\n"
|
||||
" }\n"
|
||||
"\n"
|
||||
" td, th {\n"
|
||||
" padding-right: 5px;\n"
|
||||
@@ -298,25 +323,25 @@ static char xslmsg[] =
|
||||
" <hr/>\n"
|
||||
" <h2>Server Status</h2>\n"
|
||||
" <table class=\"info\">\n"
|
||||
" <tr>\n"
|
||||
" <tr class=\"odd\">\n"
|
||||
" <th>Boot time:</th>\n"
|
||||
" <td>\n"
|
||||
" <xsl:value-of select=\"server/boot-time\"/>\n"
|
||||
" </td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <tr class=\"even\">\n"
|
||||
" <th>Last reconfigured:</th>\n"
|
||||
" <td>\n"
|
||||
" <xsl:value-of select=\"server/config-time\"/>\n"
|
||||
" </td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <tr class=\"odd\">\n"
|
||||
" <th>Current time:</th>\n"
|
||||
" <td>\n"
|
||||
" <xsl:value-of select=\"server/current-time\"/>\n"
|
||||
" </td>\n"
|
||||
" </tr>\n"
|
||||
" <tr>\n"
|
||||
" <tr class=\"even\">\n"
|
||||
" <th>Server version:</th>\n"
|
||||
" <td>\n"
|
||||
" <xsl:value-of select=\"server/version\"/>\n"
|
||||
@@ -335,7 +360,13 @@ static char xslmsg[] =
|
||||
" <table class=\"counters\">\n"
|
||||
" <xsl:for-each select=\"server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']\">\n"
|
||||
" <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
|
||||
" <tr>\n"
|
||||
" <xsl:variable name=\"css-class0\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
" <xsl:otherwise>odd</xsl:otherwise>\n"
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class0}\">\n"
|
||||
" <th>\n"
|
||||
" <xsl:value-of select=\"@name\"/>\n"
|
||||
" </th>\n"
|
||||
@@ -616,13 +647,13 @@ static char xslmsg[] =
|
||||
" <br/>\n"
|
||||
" </xsl:if>\n"
|
||||
" </xsl:for-each>\n"
|
||||
" <xsl:if test=\"traffic/udp/counters[@type="request-size"]/counter[.>0] or traffic/udp/counters[@type="response-size"]/counter[.>0] or traffic/tcp/counters[@type="request-size"]/counter[.>0] or traffic/tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:if test=\"traffic//udp/counters[@type="request-size"]/counter[.>0] or traffic//udp/counters[@type="response-size"]/counter[.>0] or traffic//tcp/counters[@type="request-size"]/counter[.>0] or traffic//tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <h2>Traffic Size Statistics</h2>\n"
|
||||
" </xsl:if>\n"
|
||||
" <xsl:if test=\"traffic/udp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:if test=\"traffic//udp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <h4>UDP Requests Received</h4>\n"
|
||||
" <table class=\"counters\">\n"
|
||||
" <xsl:for-each select=\"traffic/udp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:for-each select=\"traffic//udp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:variable name=\"css-class7\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
@@ -630,6 +661,7 @@ static char xslmsg[] =
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class7}\">\n"
|
||||
" <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
|
||||
" <th>\n"
|
||||
" <xsl:value-of select=\"@name\"/>\n"
|
||||
" </th>\n"
|
||||
@@ -641,10 +673,10 @@ static char xslmsg[] =
|
||||
" </table>\n"
|
||||
" <br/>\n"
|
||||
" </xsl:if>\n"
|
||||
" <xsl:if test=\"traffic/udp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:if test=\"traffic//udp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <h4>UDP Responses Sent</h4>\n"
|
||||
" <table class=\"counters\">\n"
|
||||
" <xsl:for-each select=\"traffic/udp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:for-each select=\"traffic//udp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:variable name=\"css-class7\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
@@ -652,6 +684,7 @@ static char xslmsg[] =
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class7}\">\n"
|
||||
" <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
|
||||
" <th>\n"
|
||||
" <xsl:value-of select=\"@name\"/>\n"
|
||||
" </th>\n"
|
||||
@@ -663,10 +696,10 @@ static char xslmsg[] =
|
||||
" </table>\n"
|
||||
" <br/>\n"
|
||||
" </xsl:if>\n"
|
||||
" <xsl:if test=\"traffic/tcp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:if test=\"traffic//tcp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <h4>TCP Requests Received</h4>\n"
|
||||
" <table class=\"counters\">\n"
|
||||
" <xsl:for-each select=\"traffic/tcp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:for-each select=\"traffic//tcp/counters[@type="request-size"]/counter[.>0]\">\n"
|
||||
" <xsl:variable name=\"css-class7\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
@@ -674,6 +707,7 @@ static char xslmsg[] =
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class7}\">\n"
|
||||
" <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
|
||||
" <th>\n"
|
||||
" <xsl:value-of select=\"@name\"/>\n"
|
||||
" </th>\n"
|
||||
@@ -685,10 +719,10 @@ static char xslmsg[] =
|
||||
" </table>\n"
|
||||
" <br/>\n"
|
||||
" </xsl:if>\n"
|
||||
" <xsl:if test=\"traffic/tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:if test=\"traffic//tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <h4>TCP Responses Sent</h4>\n"
|
||||
" <table class=\"counters\">\n"
|
||||
" <xsl:for-each select=\"traffic/tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:for-each select=\"traffic//tcp/counters[@type="response-size"]/counter[.>0]\">\n"
|
||||
" <xsl:variable name=\"css-class7\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
@@ -696,6 +730,7 @@ static char xslmsg[] =
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class7}\">\n"
|
||||
" <th><xsl:value-of select=\"local-name(../../..)\"/></th>\n"
|
||||
" <th>\n"
|
||||
" <xsl:value-of select=\"@name\"/>\n"
|
||||
" </th>\n"
|
||||
@@ -729,35 +764,29 @@ static char xslmsg[] =
|
||||
" </table>\n"
|
||||
" <br/>\n"
|
||||
" </xsl:if>\n"
|
||||
" <xsl:if test=\"views/view/zones/zone\">\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"
|
||||
" <thead><tr><th>Name</th><th>Class</th><th>Type</th><th>Serial</th></tr></thead>\n"
|
||||
" <tbody>\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:variable name=\"css-class15\">\n"
|
||||
" <xsl:choose>\n"
|
||||
" <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
|
||||
" <xsl:otherwise>odd</xsl:otherwise>\n"
|
||||
" </xsl:choose>\n"
|
||||
" </xsl:variable>\n"
|
||||
" <tr class=\"{$css-class15}\">\n"
|
||||
" <td><xsl:value-of select=\"@name\"/></td>\n"
|
||||
" <td><xsl:value-of select=\"@rdataclass\"/></td>\n"
|
||||
" <td><xsl:value-of select=\"type\"/></td>\n"
|
||||
" <td><xsl:value-of select=\"serial\"/></td></tr>\n"
|
||||
" </xsl:for-each>\n"
|
||||
" </tbody>\n"
|
||||
" </table>\n"
|
||||
" </xsl:if>\n"
|
||||
" </xsl:for-each>\n"
|
||||
" </xsl:if>\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"
|
||||
|
||||
+411
-100
@@ -25,6 +25,7 @@
|
||||
#include <isc/random.h>
|
||||
#include <isc/safe.h>
|
||||
#include <isc/serial.h>
|
||||
#include <isc/siphash.h>
|
||||
#include <isc/stats.h>
|
||||
#include <isc/stdio.h>
|
||||
#include <isc/string.h>
|
||||
@@ -246,10 +247,11 @@ static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
|
||||
static isc_result_t get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
|
||||
dns_dispatch_t *disp, bool tcp);
|
||||
static isc_result_t get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp,
|
||||
isc_socket_t *sock);
|
||||
isc_socket_t *sock, ns_client_t *oldclient);
|
||||
static inline bool
|
||||
allowed(isc_netaddr_t *addr, dns_name_t *signer, isc_netaddr_t *ecs_addr,
|
||||
uint8_t ecs_addrlen, uint8_t *ecs_scope, dns_acl_t *acl);
|
||||
allowed(isc_netaddr_t *addr, dns_name_t *signer,
|
||||
isc_netaddr_t *ecs_addr, uint8_t ecs_addrlen,
|
||||
uint8_t *ecs_scope, dns_acl_t *acl);
|
||||
static void compute_cookie(ns_client_t *client, uint32_t when,
|
||||
uint32_t nonce, const unsigned char *secret,
|
||||
isc_buffer_t *buf);
|
||||
@@ -298,6 +300,121 @@ ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
* Allocate a reference-counted object that will maintain a single pointer to
|
||||
* the (also reference-counted) TCP client quota, shared between all the
|
||||
* clients processing queries on a single TCP connection, so that all
|
||||
* clients sharing the one socket will together consume only one slot in
|
||||
* the 'tcp-clients' quota.
|
||||
*/
|
||||
static isc_result_t
|
||||
tcpconn_init(ns_client_t *client, bool force) {
|
||||
isc_result_t result;
|
||||
isc_quota_t *quota = NULL;
|
||||
ns_tcpconn_t *tconn = NULL;
|
||||
|
||||
REQUIRE(client->tcpconn == NULL);
|
||||
|
||||
/*
|
||||
* Try to attach to the quota first, so we won't pointlessly
|
||||
* allocate memory for a tcpconn object if we can't get one.
|
||||
*/
|
||||
if (force) {
|
||||
result = isc_quota_force(&ns_g_server->tcpquota, "a);
|
||||
} else {
|
||||
result = isc_quota_attach(&ns_g_server->tcpquota, "a);
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*
|
||||
* A global memory context is used for the allocation as different
|
||||
* client structures may have different memory contexts assigned and a
|
||||
* reference counter allocated here might need to be freed by a
|
||||
* different client. The performance impact caused by memory context
|
||||
* contention here is expected to be negligible, given that this code
|
||||
* is only executed for TCP connections.
|
||||
*/
|
||||
tconn = isc_mem_allocate(ns_g_mctx, sizeof(*tconn));
|
||||
if (tconn == NULL) {
|
||||
isc_quota_detach("a);
|
||||
return (ISC_R_NOMEMORY);
|
||||
}
|
||||
|
||||
isc_refcount_init(&tconn->refs, 1);
|
||||
tconn->tcpquota = quota;
|
||||
quota = NULL;
|
||||
tconn->pipelined = false;
|
||||
|
||||
client->tcpconn = tconn;
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
/*%
|
||||
* Increase the count of client structures sharing the TCP connection
|
||||
* that 'source' is associated with; add a pointer to the same tcpconn
|
||||
* to 'target', thus associating it with the same TCP connection.
|
||||
*/
|
||||
static void
|
||||
tcpconn_attach(ns_client_t *source, ns_client_t *target) {
|
||||
int refs;
|
||||
|
||||
REQUIRE(source->tcpconn != NULL);
|
||||
REQUIRE(target->tcpconn == NULL);
|
||||
REQUIRE(source->tcpconn->pipelined);
|
||||
|
||||
isc_refcount_increment(&source->tcpconn->refs, &refs);
|
||||
INSIST(refs > 1);
|
||||
target->tcpconn = source->tcpconn;
|
||||
}
|
||||
|
||||
/*%
|
||||
* Decrease the count of client structures sharing the TCP connection that
|
||||
* 'client' is associated with. If this is the last client using this TCP
|
||||
* connection, we detach from the TCP quota and free the tcpconn
|
||||
* object. Either way, client->tcpconn is set to NULL.
|
||||
*/
|
||||
static void
|
||||
tcpconn_detach(ns_client_t *client) {
|
||||
ns_tcpconn_t *tconn = NULL;
|
||||
int refs;
|
||||
|
||||
REQUIRE(client->tcpconn != NULL);
|
||||
|
||||
tconn = client->tcpconn;
|
||||
client->tcpconn = NULL;
|
||||
|
||||
isc_refcount_decrement(&tconn->refs, &refs);
|
||||
if (refs == 0) {
|
||||
isc_quota_detach(&tconn->tcpquota);
|
||||
isc_mem_free(ns_g_mctx, tconn);
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
* Mark a client as active and increment the interface's 'ntcpactive'
|
||||
* counter, as a signal that there is at least one client servicing
|
||||
* TCP queries for the interface. If we reach the TCP client quota at
|
||||
* some point, this will be used to determine whether a quota overrun
|
||||
* should be permitted.
|
||||
*
|
||||
* Marking the client active with the 'tcpactive' flag ensures proper
|
||||
* accounting, by preventing us from incrementing or decrementing
|
||||
* 'ntcpactive' more than once per client.
|
||||
*/
|
||||
static void
|
||||
mark_tcp_active(ns_client_t *client, bool active) {
|
||||
if (active && !client->tcpactive) {
|
||||
isc_refcount_increment0(&client->interface->ntcpactive, NULL);
|
||||
client->tcpactive = active;
|
||||
} else if (!active && client->tcpactive) {
|
||||
isc_refcount_decrement(&client->interface->ntcpactive, NULL);
|
||||
client->tcpactive = active;
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
* Check for a deactivation or shutdown request and take appropriate
|
||||
* action. Returns true if either is in progress; in this case
|
||||
@@ -387,7 +504,8 @@ exit_check(ns_client_t *client) {
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
if (NS_CLIENTSTATE_READING == client->newstate) {
|
||||
if (!client->pipelined) {
|
||||
INSIST(client->tcpconn != NULL);
|
||||
if (!client->tcpconn->pipelined) {
|
||||
client_read(client);
|
||||
client->newstate = NS_CLIENTSTATE_MAX;
|
||||
return (true); /* We're done. */
|
||||
@@ -405,10 +523,13 @@ exit_check(ns_client_t *client) {
|
||||
*/
|
||||
INSIST(client->recursionquota == NULL);
|
||||
INSIST(client->newstate <= NS_CLIENTSTATE_READY);
|
||||
if (client->nreads > 0)
|
||||
|
||||
if (client->nreads > 0) {
|
||||
dns_tcpmsg_cancelread(&client->tcpmsg);
|
||||
if (client->nreads != 0) {
|
||||
/* Still waiting for read cancel completion. */
|
||||
}
|
||||
|
||||
/* Still waiting for read cancel completion. */
|
||||
if (client->nreads > 0) {
|
||||
return (true);
|
||||
}
|
||||
|
||||
@@ -416,14 +537,49 @@ exit_check(ns_client_t *client) {
|
||||
dns_tcpmsg_invalidate(&client->tcpmsg);
|
||||
client->tcpmsg_valid = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Soon the client will be ready to accept a new TCP
|
||||
* connection or UDP request, but we may have enough
|
||||
* clients doing that already. Check whether this client
|
||||
* needs to remain active and allow it go inactive if
|
||||
* not.
|
||||
*
|
||||
* UDP clients always go inactive at this point, but a TCP
|
||||
* client may need to stay active and return to READY
|
||||
* state if no other clients are available to listen
|
||||
* for TCP requests on this interface.
|
||||
*
|
||||
* Regardless, if we're going to FREED state, that means
|
||||
* the system is shutting down and we don't need to
|
||||
* retain clients.
|
||||
*/
|
||||
if (client->mortal && TCP_CLIENT(client) &&
|
||||
client->newstate != NS_CLIENTSTATE_FREED &&
|
||||
!ns_g_clienttest &&
|
||||
isc_refcount_current(&client->interface->ntcpaccepting) == 0)
|
||||
{
|
||||
/* Nobody else is accepting */
|
||||
client->mortal = false;
|
||||
client->newstate = NS_CLIENTSTATE_READY;
|
||||
}
|
||||
|
||||
/*
|
||||
* Detach from TCP connection and TCP client quota,
|
||||
* if appropriate. If this is the last reference to
|
||||
* the TCP connection in our pipeline group, the
|
||||
* TCP quota slot will be released.
|
||||
*/
|
||||
if (client->tcpconn) {
|
||||
tcpconn_detach(client);
|
||||
}
|
||||
|
||||
if (client->tcpsocket != NULL) {
|
||||
CTRACE("closetcp");
|
||||
isc_socket_detach(&client->tcpsocket);
|
||||
mark_tcp_active(client, false);
|
||||
}
|
||||
|
||||
if (client->tcpquota != NULL)
|
||||
isc_quota_detach(&client->tcpquota);
|
||||
|
||||
if (client->timerset) {
|
||||
(void)isc_timer_reset(client->timer,
|
||||
isc_timertype_inactive,
|
||||
@@ -431,45 +587,26 @@ exit_check(ns_client_t *client) {
|
||||
client->timerset = false;
|
||||
}
|
||||
|
||||
client->pipelined = false;
|
||||
|
||||
client->peeraddr_valid = false;
|
||||
|
||||
client->state = NS_CLIENTSTATE_READY;
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
/*
|
||||
* Now the client is ready to accept a new TCP connection
|
||||
* or UDP request, but we may have enough clients doing
|
||||
* that already. Check whether this client needs to remain
|
||||
* active and force it to go inactive if not.
|
||||
*
|
||||
* UDP clients go inactive at this point, but TCP clients
|
||||
* may remain active if we have fewer active TCP client
|
||||
* objects than desired due to an earlier quota exhaustion.
|
||||
*/
|
||||
if (client->mortal && TCP_CLIENT(client) && !ns_g_clienttest) {
|
||||
LOCK(&client->interface->lock);
|
||||
if (client->interface->ntcpcurrent <
|
||||
client->interface->ntcptarget)
|
||||
client->mortal = false;
|
||||
UNLOCK(&client->interface->lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* We don't need the client; send it to the inactive
|
||||
* queue for recycling.
|
||||
*/
|
||||
if (client->mortal) {
|
||||
if (client->newstate > NS_CLIENTSTATE_INACTIVE)
|
||||
if (client->newstate > NS_CLIENTSTATE_INACTIVE) {
|
||||
client->newstate = NS_CLIENTSTATE_INACTIVE;
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_CLIENTSTATE_READY == client->newstate) {
|
||||
if (TCP_CLIENT(client)) {
|
||||
client_accept(client);
|
||||
} else
|
||||
} else {
|
||||
client_udprecv(client);
|
||||
}
|
||||
client->newstate = NS_CLIENTSTATE_MAX;
|
||||
return (true);
|
||||
}
|
||||
@@ -481,41 +618,50 @@ exit_check(ns_client_t *client) {
|
||||
/*
|
||||
* We are trying to enter the inactive state.
|
||||
*/
|
||||
if (client->naccepts > 0)
|
||||
if (client->naccepts > 0) {
|
||||
isc_socket_cancel(client->tcplistener, client->task,
|
||||
ISC_SOCKCANCEL_ACCEPT);
|
||||
}
|
||||
|
||||
/* Still waiting for accept cancel completion. */
|
||||
if (! (client->naccepts == 0))
|
||||
if (client->naccepts > 0) {
|
||||
return (true);
|
||||
}
|
||||
|
||||
/* Accept cancel is complete. */
|
||||
if (client->nrecvs > 0)
|
||||
if (client->nrecvs > 0) {
|
||||
isc_socket_cancel(client->udpsocket, client->task,
|
||||
ISC_SOCKCANCEL_RECV);
|
||||
}
|
||||
|
||||
/* Still waiting for recv cancel completion. */
|
||||
if (! (client->nrecvs == 0))
|
||||
if (client->nrecvs > 0) {
|
||||
return (true);
|
||||
}
|
||||
|
||||
/* Still waiting for control event to be delivered */
|
||||
if (client->nctls > 0)
|
||||
if (client->nctls > 0) {
|
||||
return (true);
|
||||
|
||||
/* Deactivate the client. */
|
||||
if (client->interface)
|
||||
ns_interface_detach(&client->interface);
|
||||
}
|
||||
|
||||
INSIST(client->naccepts == 0);
|
||||
INSIST(client->recursionquota == NULL);
|
||||
if (client->tcplistener != NULL)
|
||||
if (client->tcplistener != NULL) {
|
||||
isc_socket_detach(&client->tcplistener);
|
||||
|
||||
if (client->udpsocket != NULL)
|
||||
mark_tcp_active(client, false);
|
||||
}
|
||||
if (client->udpsocket != NULL) {
|
||||
isc_socket_detach(&client->udpsocket);
|
||||
}
|
||||
|
||||
if (client->dispatch != NULL)
|
||||
/* Deactivate the client. */
|
||||
if (client->interface != NULL) {
|
||||
ns_interface_detach(&client->interface);
|
||||
}
|
||||
|
||||
if (client->dispatch != NULL) {
|
||||
dns_dispatch_detach(&client->dispatch);
|
||||
}
|
||||
|
||||
client->attributes = 0;
|
||||
client->mortal = false;
|
||||
@@ -540,10 +686,13 @@ exit_check(ns_client_t *client) {
|
||||
client->newstate = NS_CLIENTSTATE_MAX;
|
||||
if (!ns_g_clienttest && manager != NULL &&
|
||||
!manager->exiting)
|
||||
{
|
||||
ISC_QUEUE_PUSH(manager->inactive, client,
|
||||
ilink);
|
||||
if (client->needshutdown)
|
||||
}
|
||||
if (client->needshutdown) {
|
||||
isc_task_shutdown(client->task);
|
||||
}
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
@@ -654,7 +803,7 @@ client_start(isc_task_t *task, isc_event_t *event) {
|
||||
return;
|
||||
|
||||
if (TCP_CLIENT(client)) {
|
||||
if (client->pipelined) {
|
||||
if (client->tcpconn != NULL) {
|
||||
client_read(client);
|
||||
} else {
|
||||
client_accept(client);
|
||||
@@ -664,7 +813,6 @@ client_start(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*%
|
||||
* The client's task has received a shutdown event.
|
||||
*/
|
||||
@@ -1785,6 +1933,42 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
|
||||
const unsigned char *secret, isc_buffer_t *buf)
|
||||
{
|
||||
switch (ns_g_server->cookiealg) {
|
||||
case ns_cookiealg_siphash24: {
|
||||
unsigned char digest[ISC_SIPHASH24_TAG_LENGTH] = { 0 };
|
||||
unsigned char input[16 + 16] = { 0 };
|
||||
size_t inputlen = 0;
|
||||
isc_netaddr_t netaddr;
|
||||
unsigned char *cp;
|
||||
|
||||
cp = isc_buffer_used(buf);
|
||||
isc_buffer_putmem(buf, client->cookie, 8);
|
||||
isc_buffer_putuint8(buf, NS_COOKIE_VERSION_1);
|
||||
isc_buffer_putuint24(buf, 0); /* Reserved */
|
||||
isc_buffer_putuint32(buf, when);
|
||||
|
||||
memmove(input, cp, 16);
|
||||
|
||||
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
||||
switch (netaddr.family) {
|
||||
case AF_INET:
|
||||
cp = (unsigned char *)&netaddr.type.in;
|
||||
memmove(input + 16, cp, 4);
|
||||
inputlen = 20;
|
||||
break;
|
||||
case AF_INET6:
|
||||
cp = (unsigned char *)&netaddr.type.in6;
|
||||
memmove(input + 16, cp, 16);
|
||||
inputlen = 32;
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
isc_siphash24(secret, input, inputlen, digest);
|
||||
isc_buffer_putmem(buf, digest, 8);
|
||||
break;
|
||||
}
|
||||
#if defined(HAVE_OPENSSL_AES) || defined(HAVE_OPENSSL_EVP_AES)
|
||||
case ns_cookiealg_aes: {
|
||||
unsigned char digest[ISC_AES_BLOCK_LENGTH];
|
||||
@@ -1793,15 +1977,15 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
|
||||
unsigned char *cp;
|
||||
unsigned int i;
|
||||
|
||||
memset(input, 0, sizeof(input));
|
||||
cp = isc_buffer_used(buf);
|
||||
isc_buffer_putmem(buf, client->cookie, 8);
|
||||
isc_buffer_putuint32(buf, nonce);
|
||||
isc_buffer_putuint32(buf, when);
|
||||
memmove(input, cp, 16);
|
||||
isc_aes128_crypt(secret, input, digest);
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < 8; i++) {
|
||||
input[i] = digest[i] ^ digest[i + 8];
|
||||
}
|
||||
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
||||
switch (netaddr.family) {
|
||||
case AF_INET:
|
||||
@@ -1814,14 +1998,19 @@ compute_cookie(ns_client_t *client, uint32_t when, uint32_t nonce,
|
||||
cp = (unsigned char *)&netaddr.type.in6;
|
||||
memmove(input + 8, cp, 16);
|
||||
isc_aes128_crypt(secret, input, digest);
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < 8; i++) {
|
||||
input[i + 8] = digest[i] ^ digest[i + 8];
|
||||
}
|
||||
isc_aes128_crypt(ns_g_server->secret, input + 8,
|
||||
digest);
|
||||
break;
|
||||
default:
|
||||
INSIST(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < 8; i++) {
|
||||
digest[i] ^= digest[i + 8];
|
||||
}
|
||||
isc_buffer_putmem(buf, digest, 8);
|
||||
break;
|
||||
}
|
||||
@@ -2309,6 +2498,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
client->nrecvs--;
|
||||
} else {
|
||||
INSIST(TCP_CLIENT(client));
|
||||
INSIST(client->tcpconn != NULL);
|
||||
REQUIRE(event->ev_type == DNS_EVENT_TCPMSG);
|
||||
REQUIRE(event->ev_sender == &client->tcpmsg);
|
||||
buffer = &client->tcpmsg.buffer;
|
||||
@@ -2496,18 +2686,27 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
/*
|
||||
* Pipeline TCP query processing.
|
||||
*/
|
||||
if (client->message->opcode != dns_opcode_query)
|
||||
client->pipelined = false;
|
||||
if (TCP_CLIENT(client) && client->pipelined) {
|
||||
result = isc_quota_reserve(&ns_g_server->tcpquota);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
result = ns_client_replace(client);
|
||||
if (TCP_CLIENT(client) &&
|
||||
client->message->opcode != dns_opcode_query)
|
||||
{
|
||||
client->tcpconn->pipelined = false;
|
||||
}
|
||||
if (TCP_CLIENT(client) && client->tcpconn->pipelined) {
|
||||
/*
|
||||
* We're pipelining. Replace the client; the
|
||||
* replacement can read the TCP socket looking
|
||||
* for new messages and this one can process the
|
||||
* current message asynchronously.
|
||||
*
|
||||
* There will now be at least three clients using this
|
||||
* TCP socket - one accepting new connections,
|
||||
* one reading an existing connection to get new
|
||||
* messages, and one answering the message already
|
||||
* received.
|
||||
*/
|
||||
result = ns_client_replace(client);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
|
||||
"no more TCP clients(read): %s",
|
||||
isc_result_totext(result));
|
||||
client->pipelined = false;
|
||||
client->tcpconn->pipelined = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2543,6 +2742,31 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
client->ecs_scope = 0;
|
||||
|
||||
if (opt != NULL) {
|
||||
/*
|
||||
* Are returning FORMERR to all EDNS queries?
|
||||
* Simulate a STD13 compliant server.
|
||||
*/
|
||||
if (ns_g_ednsformerr) {
|
||||
ns_client_error(client, DNS_R_FORMERR);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Are returning NOTIMP to all EDNS queries?
|
||||
*/
|
||||
if (ns_g_ednsnotimp) {
|
||||
ns_client_error(client, DNS_R_NOTIMP);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Are returning REFUSED to all EDNS queries?
|
||||
*/
|
||||
if (ns_g_ednsrefused) {
|
||||
ns_client_error(client, DNS_R_REFUSED);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Are we dropping all EDNS queries?
|
||||
*/
|
||||
@@ -2550,6 +2774,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
ns_client_next(client, ISC_R_SUCCESS);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
result = process_opt(client, opt);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
@@ -2825,8 +3050,9 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
true) == ISC_R_SUCCESS)
|
||||
ra = true;
|
||||
|
||||
if (ra == true)
|
||||
if (ra == true) {
|
||||
client->attributes |= NS_CLIENTATTR_RA;
|
||||
}
|
||||
|
||||
ns_client_log(client, DNS_LOGCATEGORY_SECURITY, NS_LOGMODULE_CLIENT,
|
||||
ISC_LOG_DEBUG(3), ra ? "recursion available" :
|
||||
@@ -2852,10 +3078,11 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
case dns_opcode_query:
|
||||
CTRACE("query");
|
||||
#ifdef HAVE_DNSTAP
|
||||
if ((client->message->flags & DNS_MESSAGEFLAG_RD) != 0)
|
||||
if (ra && (client->message->flags & DNS_MESSAGEFLAG_RD) != 0) {
|
||||
dtmsgtype = DNS_DTTYPE_CQ;
|
||||
else
|
||||
} else {
|
||||
dtmsgtype = DNS_DTTYPE_AQ;
|
||||
}
|
||||
|
||||
dns_dt_send(view, dtmsgtype, &client->peeraddr,
|
||||
&client->destsockaddr, TCP_CLIENT(client), NULL,
|
||||
@@ -3063,8 +3290,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
|
||||
client->signer = NULL;
|
||||
dns_name_init(&client->signername, NULL);
|
||||
client->mortal = false;
|
||||
client->pipelined = false;
|
||||
client->tcpquota = NULL;
|
||||
client->tcpconn = NULL;
|
||||
client->recursionquota = NULL;
|
||||
client->interface = NULL;
|
||||
client->peeraddr_valid = false;
|
||||
@@ -3074,6 +3300,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp) {
|
||||
client->filter_aaaa = dns_aaaa_ok;
|
||||
#endif
|
||||
client->needshutdown = ns_g_clienttest;
|
||||
client->tcpactive = false;
|
||||
|
||||
ISC_EVENT_INIT(&client->ctlevent, sizeof(client->ctlevent), 0, NULL,
|
||||
NS_EVENT_CLIENTCONTROL, client_start, client, client,
|
||||
@@ -3168,9 +3395,9 @@ client_read(ns_client_t *client) {
|
||||
|
||||
static void
|
||||
client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
isc_result_t result;
|
||||
ns_client_t *client = event->ev_arg;
|
||||
isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event;
|
||||
isc_result_t result;
|
||||
|
||||
REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN);
|
||||
REQUIRE(NS_CLIENT_VALID(client));
|
||||
@@ -3180,13 +3407,17 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
INSIST(client->state == NS_CLIENTSTATE_READY);
|
||||
|
||||
/*
|
||||
* The accept() was successful and we're now establishing a new
|
||||
* connection. We need to make note of it in the client and
|
||||
* interface objects so client objects can do the right thing
|
||||
* when going inactive in exit_check() (see comments in
|
||||
* client_accept() for details).
|
||||
*/
|
||||
INSIST(client->naccepts == 1);
|
||||
client->naccepts--;
|
||||
|
||||
LOCK(&client->interface->lock);
|
||||
INSIST(client->interface->ntcpcurrent > 0);
|
||||
client->interface->ntcpcurrent--;
|
||||
UNLOCK(&client->interface->lock);
|
||||
isc_refcount_decrement(&client->interface->ntcpaccepting, NULL);
|
||||
|
||||
/*
|
||||
* We must take ownership of the new socket before the exit
|
||||
@@ -3219,6 +3450,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
||||
"accept failed: %s",
|
||||
isc_result_totext(nevent->result));
|
||||
tcpconn_detach(client);
|
||||
}
|
||||
|
||||
if (exit_check(client))
|
||||
@@ -3256,20 +3488,13 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
* telnetting to port 53 (once per CPU) will
|
||||
* deny service to legitimate TCP clients.
|
||||
*/
|
||||
client->pipelined = false;
|
||||
result = isc_quota_attach(&ns_g_server->tcpquota,
|
||||
&client->tcpquota);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
result = ns_client_replace(client);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
|
||||
"no more TCP clients(accept): %s",
|
||||
isc_result_totext(result));
|
||||
} else if (ns_g_server->keepresporder == NULL ||
|
||||
!allowed(&netaddr, NULL, NULL, 0, NULL,
|
||||
ns_g_server->keepresporder)) {
|
||||
client->pipelined = true;
|
||||
result = ns_client_replace(client);
|
||||
if (result == ISC_R_SUCCESS &&
|
||||
(ns_g_server->keepresporder == NULL ||
|
||||
!allowed(&netaddr, NULL, NULL, 0, NULL,
|
||||
ns_g_server->keepresporder)))
|
||||
{
|
||||
client->tcpconn->pipelined = true;
|
||||
}
|
||||
|
||||
client_read(client);
|
||||
@@ -3285,12 +3510,66 @@ client_accept(ns_client_t *client) {
|
||||
|
||||
CTRACE("accept");
|
||||
|
||||
/*
|
||||
* Set up a new TCP connection. This means try to attach to the
|
||||
* TCP client quota (tcp-clients), but fail if we're over quota.
|
||||
*/
|
||||
result = tcpconn_init(client, false);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
bool exit;
|
||||
|
||||
ns_client_log(client, NS_LOGCATEGORY_CLIENT,
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_WARNING,
|
||||
"TCP client quota reached: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
/*
|
||||
* We have exceeded the system-wide TCP client quota. But,
|
||||
* we can't just block this accept in all cases, because if
|
||||
* we did, a heavy TCP load on other interfaces might cause
|
||||
* this interface to be starved, with no clients able to
|
||||
* accept new connections.
|
||||
*
|
||||
* So, we check here to see if any other clients are
|
||||
* already servicing TCP queries on this interface (whether
|
||||
* accepting, reading, or processing). If we find that at
|
||||
* least one client other than this one is active, then
|
||||
* it's okay *not* to call accept - we can let this
|
||||
* client go inactive and another will take over when it's
|
||||
* done.
|
||||
*
|
||||
* If there aren't enough active clients on the interface,
|
||||
* then we can be a little bit flexible about the quota.
|
||||
* We'll allow *one* extra client through to ensure we're
|
||||
* listening on every interface; we do this by setting the
|
||||
* 'force' option to tcpconn_init().
|
||||
*
|
||||
* (Note: In practice this means that the real TCP client
|
||||
* quota is tcp-clients plus the number of listening
|
||||
* interfaces plus 1.)
|
||||
*/
|
||||
exit = (isc_refcount_current(&client->interface->ntcpactive) >
|
||||
(client->tcpactive ? 1U : 0U));
|
||||
if (exit) {
|
||||
client->newstate = NS_CLIENTSTATE_INACTIVE;
|
||||
(void)exit_check(client);
|
||||
return;
|
||||
}
|
||||
|
||||
result = tcpconn_init(client, true);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
/*
|
||||
* If this client was set up using get_client() or get_worker(),
|
||||
* then TCP is already marked active. However, if it was restarted
|
||||
* from exit_check(), it might not be, so we take care of it now.
|
||||
*/
|
||||
mark_tcp_active(client, true);
|
||||
|
||||
result = isc_socket_accept(client->tcplistener, client->task,
|
||||
client_newconn, client);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"isc_socket_accept() failed: %s",
|
||||
isc_result_totext(result));
|
||||
/*
|
||||
* XXXRTH What should we do? We're trying to accept but
|
||||
* it didn't work. If we just give up, then TCP
|
||||
@@ -3298,13 +3577,37 @@ client_accept(ns_client_t *client) {
|
||||
*
|
||||
* For now, we just go idle.
|
||||
*/
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"isc_socket_accept() failed: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
tcpconn_detach(client);
|
||||
mark_tcp_active(client, false);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* The client's 'naccepts' counter indicates that this client has
|
||||
* called accept() and is waiting for a new connection. It should
|
||||
* never exceed 1.
|
||||
*/
|
||||
INSIST(client->naccepts == 0);
|
||||
client->naccepts++;
|
||||
LOCK(&client->interface->lock);
|
||||
client->interface->ntcpcurrent++;
|
||||
UNLOCK(&client->interface->lock);
|
||||
|
||||
/*
|
||||
* The interface's 'ntcpaccepting' counter is incremented when
|
||||
* any client calls accept(), and decremented in client_newconn()
|
||||
* once the connection is established.
|
||||
*
|
||||
* When the client object is shutting down after handling a TCP
|
||||
* request (see exit_check()), if this value is at least one, that
|
||||
* means another client has called accept() and is waiting to
|
||||
* establish the next connection. That means the client may be
|
||||
* be free to become inactive; otherwise it may need to start
|
||||
* listening for connections itself to prevent the interface
|
||||
* going dead.
|
||||
*/
|
||||
isc_refcount_increment0(&client->interface->ntcpaccepting, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -3375,15 +3678,17 @@ ns_client_replace(ns_client_t *client) {
|
||||
REQUIRE(client->manager != NULL);
|
||||
|
||||
tcp = TCP_CLIENT(client);
|
||||
if (tcp && client->pipelined) {
|
||||
if (tcp && client->tcpconn != NULL && client->tcpconn->pipelined) {
|
||||
result = get_worker(client->manager, client->interface,
|
||||
client->tcpsocket);
|
||||
client->tcpsocket, client);
|
||||
} else {
|
||||
result = get_client(client->manager, client->interface,
|
||||
client->dispatch, tcp);
|
||||
|
||||
}
|
||||
if (result != ISC_R_SUCCESS)
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*
|
||||
* The responsibility for listening for new requests is hereby
|
||||
@@ -3569,9 +3874,12 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
|
||||
client->dscp = ifp->dscp;
|
||||
|
||||
if (tcp) {
|
||||
mark_tcp_active(client, true);
|
||||
|
||||
client->attributes |= NS_CLIENTATTR_TCP;
|
||||
isc_socket_attach(ifp->tcpsocket,
|
||||
&client->tcplistener);
|
||||
|
||||
} else {
|
||||
isc_socket_t *sock;
|
||||
|
||||
@@ -3589,7 +3897,8 @@ get_client(ns_clientmgr_t *manager, ns_interface_t *ifp,
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
|
||||
get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock,
|
||||
ns_client_t *oldclient)
|
||||
{
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
isc_event_t *ev;
|
||||
@@ -3597,6 +3906,7 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
|
||||
MTRACE("get worker");
|
||||
|
||||
REQUIRE(manager != NULL);
|
||||
REQUIRE(oldclient != NULL);
|
||||
|
||||
if (manager->exiting)
|
||||
return (ISC_R_SHUTTINGDOWN);
|
||||
@@ -3629,14 +3939,15 @@ get_worker(ns_clientmgr_t *manager, ns_interface_t *ifp, isc_socket_t *sock)
|
||||
ns_interface_attach(ifp, &client->interface);
|
||||
client->newstate = client->state = NS_CLIENTSTATE_WORKING;
|
||||
INSIST(client->recursionquota == NULL);
|
||||
client->tcpquota = &ns_g_server->tcpquota;
|
||||
|
||||
client->dscp = ifp->dscp;
|
||||
|
||||
client->attributes |= NS_CLIENTATTR_TCP;
|
||||
client->pipelined = true;
|
||||
client->mortal = true;
|
||||
|
||||
tcpconn_attach(oldclient, client);
|
||||
mark_tcp_active(client, true);
|
||||
|
||||
isc_socket_attach(ifp->tcpsocket, &client->tcplistener);
|
||||
isc_socket_attach(sock, &client->tcpsocket);
|
||||
isc_socket_setname(client->tcpsocket, "worker-tcp", NULL);
|
||||
|
||||
+7
-1
@@ -70,6 +70,11 @@ options {\n\
|
||||
#ifndef WIN32
|
||||
" files unlimited;\n"
|
||||
#endif
|
||||
#if defined(HAVE_GEOIP2) && !defined(WIN32)
|
||||
" geoip-directory \"" MAXMINDDB_PREFIX "/share/GeoIP2\";\n"
|
||||
#elif defined(HAVE_GEOIP2)
|
||||
" geoip-directory \".\";\n"
|
||||
#endif
|
||||
"\
|
||||
# has-old-clients <obsolete>;\n\
|
||||
heartbeat-interval 60;\n\
|
||||
@@ -167,7 +172,7 @@ options {\n\
|
||||
filter-aaaa-on-v6 no;\n\
|
||||
filter-aaaa { any; };\n"
|
||||
#endif
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
" geoip-use-ecs yes;\n"
|
||||
#endif
|
||||
" lame-ttl 600;\n"
|
||||
@@ -859,6 +864,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
isc_mem_put(mctx, stack, stackcount * sizeof(*stack));
|
||||
|
||||
INSIST(keycount == addrcount);
|
||||
INSIST(keycount == dscpcount);
|
||||
|
||||
ipkl->addrs = addrs;
|
||||
ipkl->dscps = dscps;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
#ifdef ENABLE_AFL
|
||||
#include <named/globals.h>
|
||||
#include <named/server.h>
|
||||
#include <sys/errno.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/condition.h>
|
||||
|
||||
+123
-20
@@ -13,20 +13,27 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#if defined(HAVE_GEOIP2)
|
||||
#include <maxminddb.h>
|
||||
#elif defined(HAVE_GEOIP)
|
||||
#include <GeoIP.h>
|
||||
#include <GeoIPCity.h>
|
||||
#endif
|
||||
|
||||
#include <isc/print.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
#include <dns/geoip.h>
|
||||
|
||||
#include <named/log.h>
|
||||
#include <named/geoip.h>
|
||||
|
||||
#include <dns/geoip.h>
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
static dns_geoip_databases_t geoip_table = {
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
};
|
||||
static dns_geoip_databases_t geoip_table;
|
||||
|
||||
#if defined(HAVE_GEOIP)
|
||||
static void
|
||||
init_geoip_db(GeoIP **dbp, GeoIPDBTypes edition, GeoIPDBTypes fallback,
|
||||
init_geoip_db(void **dbp, GeoIPDBTypes edition, GeoIPDBTypes fallback,
|
||||
GeoIPOptions method, const char *name)
|
||||
{
|
||||
char *info;
|
||||
@@ -34,7 +41,7 @@ init_geoip_db(GeoIP **dbp, GeoIPDBTypes edition, GeoIPDBTypes fallback,
|
||||
|
||||
REQUIRE(dbp != NULL);
|
||||
|
||||
db = *dbp;
|
||||
db = (GeoIP *)*dbp;
|
||||
|
||||
if (db != NULL) {
|
||||
GeoIP_delete(db);
|
||||
@@ -72,32 +79,96 @@ init_geoip_db(GeoIP **dbp, GeoIPDBTypes edition, GeoIPDBTypes fallback,
|
||||
|
||||
*dbp = db;
|
||||
return;
|
||||
|
||||
fail:
|
||||
if (fallback != 0)
|
||||
if (fallback != 0) {
|
||||
init_geoip_db(dbp, fallback, 0, method, name);
|
||||
}
|
||||
|
||||
}
|
||||
#endif /* HAVE_GEOIP */
|
||||
#elif defined(HAVE_GEOIP2)
|
||||
static MMDB_s geoip_country, geoip_city, geoip_as, geoip_isp, geoip_domain;
|
||||
|
||||
static MMDB_s *
|
||||
open_geoip2(const char *dir, const char *dbfile, MMDB_s *mmdb) {
|
||||
char pathbuf[PATH_MAX];
|
||||
unsigned int n;
|
||||
int ret;
|
||||
|
||||
n = snprintf(pathbuf, sizeof(pathbuf), "%s/%s", dir, dbfile);
|
||||
if (n >= sizeof(pathbuf)) {
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
|
||||
"GeoIP2 database '%s/%s': path too long",
|
||||
dir, dbfile);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
ret = MMDB_open(pathbuf, MMDB_MODE_MMAP, mmdb);
|
||||
if (ret == MMDB_SUCCESS) {
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"opened GeoIP2 database '%s'", pathbuf);
|
||||
return (mmdb);
|
||||
}
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_DEBUG(1),
|
||||
"unable to open GeoIP2 database '%s' (status %d)",
|
||||
pathbuf, ret);
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
#endif /* HAVE_GEOIP2 */
|
||||
|
||||
|
||||
void
|
||||
ns_geoip_init(void) {
|
||||
#ifndef HAVE_GEOIP
|
||||
return;
|
||||
#else
|
||||
GeoIP_cleanup();
|
||||
if (ns_g_geoip == NULL)
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
if (ns_g_geoip == NULL) {
|
||||
ns_g_geoip = &geoip_table;
|
||||
}
|
||||
#if defined(HAVE_GEOIP)
|
||||
GeoIP_cleanup();
|
||||
#endif
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ns_geoip_load(char *dir) {
|
||||
#ifndef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP2)
|
||||
REQUIRE(dir != NULL);
|
||||
|
||||
UNUSED(dir);
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"looking for GeoIP2 databases in '%s'", dir);
|
||||
|
||||
return;
|
||||
#else
|
||||
ns_g_geoip->country = open_geoip2(dir, "GeoIP2-Country.mmdb",
|
||||
&geoip_country);
|
||||
if (ns_g_geoip->country == NULL) {
|
||||
ns_g_geoip->country = open_geoip2(dir,
|
||||
"GeoLite2-Country.mmdb",
|
||||
&geoip_country);
|
||||
}
|
||||
|
||||
ns_g_geoip->city = open_geoip2(dir, "GeoIP2-City.mmdb", &geoip_city);
|
||||
if (ns_g_geoip->city == NULL) {
|
||||
ns_g_geoip->city = open_geoip2(dir, "GeoLite2-City.mmdb",
|
||||
&geoip_city);
|
||||
}
|
||||
|
||||
ns_g_geoip->as = open_geoip2(dir, "GeoIP2-ASN.mmdb", &geoip_as);
|
||||
if (ns_g_geoip->as == NULL) {
|
||||
ns_g_geoip->as = open_geoip2(dir, "GeoLite2-ASN.mmdb",
|
||||
&geoip_as);
|
||||
}
|
||||
|
||||
ns_g_geoip->isp = open_geoip2(dir, "GeoIP2-ISP.mmdb", &geoip_isp);
|
||||
ns_g_geoip->domain = open_geoip2(dir, "GeoIP2-Domain.mmdb",
|
||||
&geoip_domain);
|
||||
#elif defined(HAVE_GEOIP)
|
||||
GeoIPOptions method;
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -141,5 +212,37 @@ ns_geoip_load(char *dir) {
|
||||
method, "Domain");
|
||||
init_geoip_db(&ns_g_geoip->netspeed, GEOIP_NETSPEED_EDITION, 0,
|
||||
method, "NetSpeed");
|
||||
#endif /* HAVE_GEOIP */
|
||||
#else
|
||||
UNUSED(dir);
|
||||
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
ns_geoip_shutdown(void) {
|
||||
#ifdef HAVE_GEOIP2
|
||||
if (ns_g_geoip->country != NULL) {
|
||||
MMDB_close(ns_g_geoip->country);
|
||||
ns_g_geoip->country = NULL;
|
||||
}
|
||||
if (ns_g_geoip->city != NULL) {
|
||||
MMDB_close(ns_g_geoip->city);
|
||||
ns_g_geoip->city = NULL;
|
||||
}
|
||||
if (ns_g_geoip->as != NULL) {
|
||||
MMDB_close(ns_g_geoip->as);
|
||||
ns_g_geoip->as = NULL;
|
||||
}
|
||||
if (ns_g_geoip->isp != NULL) {
|
||||
MMDB_close(ns_g_geoip->isp);
|
||||
ns_g_geoip->isp = NULL;
|
||||
}
|
||||
if (ns_g_geoip->domain != NULL) {
|
||||
MMDB_close(ns_g_geoip->domain);
|
||||
ns_g_geoip->domain = NULL;
|
||||
}
|
||||
#endif /* HAVE_GEOIP2 */
|
||||
|
||||
dns_geoip_shutdown();
|
||||
}
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/* $Id: client.h,v 1.96 2012/01/31 23:47:31 tbox Exp $ */
|
||||
|
||||
#ifndef NAMED_CLIENT_H
|
||||
#define NAMED_CLIENT_H 1
|
||||
|
||||
@@ -80,6 +78,13 @@
|
||||
*** Types
|
||||
***/
|
||||
|
||||
/*% reference-counted TCP connection object */
|
||||
typedef struct ns_tcpconn {
|
||||
isc_refcount_t refs;
|
||||
isc_quota_t *tcpquota;
|
||||
bool pipelined;
|
||||
} ns_tcpconn_t;
|
||||
|
||||
/*% nameserver client structure */
|
||||
struct ns_client {
|
||||
unsigned int magic;
|
||||
@@ -94,7 +99,8 @@ struct ns_client {
|
||||
int nupdates;
|
||||
int nctls;
|
||||
int references;
|
||||
bool needshutdown; /*
|
||||
bool tcpactive;
|
||||
bool needshutdown; /*
|
||||
* Used by clienttest to get
|
||||
* the client to go from
|
||||
* inactive to free state
|
||||
@@ -130,10 +136,9 @@ struct ns_client {
|
||||
isc_stdtime_t now;
|
||||
isc_time_t tnow;
|
||||
dns_name_t signername; /*%< [T]SIG key name */
|
||||
dns_name_t * signer; /*%< NULL if not valid sig */
|
||||
bool mortal; /*%< Die after handling request */
|
||||
bool pipelined; /*%< TCP queries not in sequence */
|
||||
isc_quota_t *tcpquota;
|
||||
dns_name_t *signer; /*%< NULL if not valid sig */
|
||||
bool mortal; /*%< Die after handling request */
|
||||
ns_tcpconn_t *tcpconn;
|
||||
isc_quota_t *recursionquota;
|
||||
ns_interface_t *interface;
|
||||
|
||||
@@ -143,8 +148,8 @@ struct ns_client {
|
||||
isc_sockaddr_t destsockaddr;
|
||||
|
||||
isc_netaddr_t ecs_addr; /*%< EDNS client subnet */
|
||||
uint8_t ecs_addrlen;
|
||||
uint8_t ecs_scope;
|
||||
uint8_t ecs_addrlen;
|
||||
uint8_t ecs_scope;
|
||||
|
||||
struct in6_pktinfo pktinfo;
|
||||
isc_dscp_t dscp;
|
||||
|
||||
@@ -12,15 +12,14 @@
|
||||
#ifndef _GEOIP_H
|
||||
#define _GEOIP_H
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
#include <GeoIP.h>
|
||||
#include <GeoIPCity.h>
|
||||
#endif /* HAVE_GEOIP */
|
||||
|
||||
void ns_geoip_init(void);
|
||||
void ns_geoip_load(char *dir);
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
extern dns_geoip_databases_t *ns_g_geoip;
|
||||
#endif /* HAVE_GEOIP */
|
||||
|
||||
void
|
||||
ns_geoip_init(void);
|
||||
|
||||
void
|
||||
ns_geoip_load(char *dir);
|
||||
|
||||
void
|
||||
ns_geoip_shutdown(void);
|
||||
#endif
|
||||
|
||||
@@ -77,7 +77,7 @@ EXTERN in_port_t lwresd_g_listenport INIT(0);
|
||||
|
||||
EXTERN ns_server_t * ns_g_server INIT(NULL);
|
||||
|
||||
EXTERN bool ns_g_lwresdonly INIT(false);
|
||||
EXTERN bool ns_g_lwresdonly INIT(false);
|
||||
|
||||
/*
|
||||
* Logging.
|
||||
@@ -105,9 +105,9 @@ EXTERN const char * lwresd_g_conffile INIT(NS_SYSCONFDIR
|
||||
"/lwresd.conf");
|
||||
EXTERN const char * lwresd_g_resolvconffile INIT("/etc"
|
||||
"/resolv.conf");
|
||||
EXTERN bool ns_g_conffileset INIT(false);
|
||||
EXTERN bool lwresd_g_useresolvconf INIT(false);
|
||||
EXTERN uint16_t ns_g_udpsize INIT(4096);
|
||||
EXTERN bool ns_g_conffileset INIT(false);
|
||||
EXTERN bool lwresd_g_useresolvconf INIT(false);
|
||||
EXTERN uint16_t ns_g_udpsize INIT(4096);
|
||||
EXTERN cfg_aclconfctx_t * ns_g_aclconfctx INIT(NULL);
|
||||
|
||||
/*
|
||||
@@ -121,11 +121,11 @@ EXTERN isc_resourcevalue_t ns_g_initopenfiles INIT(0);
|
||||
/*
|
||||
* Misc.
|
||||
*/
|
||||
EXTERN bool ns_g_coreok INIT(true);
|
||||
EXTERN bool ns_g_coreok INIT(true);
|
||||
EXTERN const char * ns_g_chrootdir INIT(NULL);
|
||||
EXTERN bool ns_g_foreground INIT(false);
|
||||
EXTERN bool ns_g_logstderr INIT(false);
|
||||
EXTERN bool ns_g_nosyslog INIT(false);
|
||||
EXTERN bool ns_g_foreground INIT(false);
|
||||
EXTERN bool ns_g_logstderr INIT(false);
|
||||
EXTERN bool ns_g_nosyslog INIT(false);
|
||||
EXTERN const char * ns_g_logfile INIT(NULL);
|
||||
|
||||
EXTERN const char * ns_g_defaultsessionkeyfile
|
||||
@@ -134,7 +134,7 @@ EXTERN const char * ns_g_defaultsessionkeyfile
|
||||
EXTERN const char * ns_g_defaultlockfile INIT(NS_LOCALSTATEDIR
|
||||
"/run/named/"
|
||||
"named.lock");
|
||||
EXTERN bool ns_g_forcelock INIT(false);
|
||||
EXTERN bool ns_g_forcelock INIT(false);
|
||||
|
||||
#if NS_RUN_PID_DIR
|
||||
EXTERN const char * ns_g_defaultpidfile INIT(NS_LOCALSTATEDIR
|
||||
@@ -169,23 +169,26 @@ EXTERN const char * ns_g_engine INIT(NULL);
|
||||
EXTERN int ns_g_listen INIT(3);
|
||||
EXTERN isc_time_t ns_g_boottime;
|
||||
EXTERN isc_time_t ns_g_configtime;
|
||||
EXTERN bool ns_g_memstatistics INIT(false);
|
||||
EXTERN bool ns_g_clienttest INIT(false);
|
||||
EXTERN bool ns_g_dropedns INIT(false);
|
||||
EXTERN bool ns_g_noedns INIT(false);
|
||||
EXTERN bool ns_g_nosoa INIT(false);
|
||||
EXTERN bool ns_g_noaa INIT(false);
|
||||
EXTERN bool ns_g_keepstderr INIT(false);
|
||||
EXTERN bool ns_g_memstatistics INIT(false);
|
||||
EXTERN bool ns_g_clienttest INIT(false);
|
||||
EXTERN bool ns_g_dropedns INIT(false);
|
||||
EXTERN bool ns_g_ednsformerr INIT(false);
|
||||
EXTERN bool ns_g_ednsnotimp INIT(false);
|
||||
EXTERN bool ns_g_ednsrefused INIT(false);
|
||||
EXTERN bool ns_g_noedns INIT(false);
|
||||
EXTERN bool ns_g_nosoa INIT(false);
|
||||
EXTERN bool ns_g_noaa INIT(false);
|
||||
EXTERN bool ns_g_keepstderr INIT(false);
|
||||
EXTERN unsigned int ns_g_delay INIT(0);
|
||||
EXTERN bool ns_g_nonearest INIT(false);
|
||||
EXTERN bool ns_g_notcp INIT(false);
|
||||
EXTERN bool ns_g_disable6 INIT(false);
|
||||
EXTERN bool ns_g_disable4 INIT(false);
|
||||
EXTERN bool ns_g_nonearest INIT(false);
|
||||
EXTERN bool ns_g_notcp INIT(false);
|
||||
EXTERN bool ns_g_disable6 INIT(false);
|
||||
EXTERN bool ns_g_disable4 INIT(false);
|
||||
EXTERN unsigned int ns_g_tat_interval INIT(24*3600);
|
||||
EXTERN bool ns_g_fixedlocal INIT(false);
|
||||
EXTERN bool ns_g_sigvalinsecs INIT(false);
|
||||
EXTERN bool ns_g_fixedlocal INIT(false);
|
||||
EXTERN bool ns_g_sigvalinsecs INIT(false);
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
EXTERN dns_geoip_databases_t *ns_g_geoip INIT(NULL);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/* $Id: interfacemgr.h,v 1.35 2011/07/28 23:47:58 tbox Exp $ */
|
||||
|
||||
#ifndef NAMED_INTERFACEMGR_H
|
||||
#define NAMED_INTERFACEMGR_H 1
|
||||
|
||||
@@ -47,6 +45,7 @@
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/socket.h>
|
||||
#include <isc/refcount.h>
|
||||
|
||||
#include <dns/result.h>
|
||||
|
||||
@@ -77,9 +76,14 @@ struct ns_interface {
|
||||
/*%< UDP dispatchers. */
|
||||
isc_socket_t * tcpsocket; /*%< TCP socket. */
|
||||
isc_dscp_t dscp; /*%< "listen-on" DSCP value */
|
||||
int ntcptarget; /*%< Desired number of concurrent
|
||||
TCP accepts */
|
||||
int ntcpcurrent; /*%< Current ditto, locked */
|
||||
isc_refcount_t ntcpaccepting; /*%< Number of clients
|
||||
ready to accept new
|
||||
TCP connections on this
|
||||
interface */
|
||||
isc_refcount_t ntcpactive; /*%< Number of clients
|
||||
servicing TCP queries
|
||||
(whether accepting or
|
||||
connected) */
|
||||
int nudpdispatch; /*%< Number of UDP dispatches */
|
||||
ns_clientmgr_t * clientmgr; /*%< Client manager. */
|
||||
ISC_LINK(ns_interface_t) link;
|
||||
|
||||
@@ -43,7 +43,10 @@ typedef ISC_LIST(ns_altsecret_t) ns_altsecretlist_t;
|
||||
typedef enum {
|
||||
ns_cookiealg_aes,
|
||||
ns_cookiealg_sha1,
|
||||
ns_cookiealg_sha256
|
||||
ns_cookiealg_sha256,
|
||||
ns_cookiealg_siphash24
|
||||
} ns_cookiealg_t;
|
||||
|
||||
#define NS_COOKIE_VERSION_1 1
|
||||
|
||||
#endif /* NAMED_TYPES_H */
|
||||
|
||||
@@ -211,7 +211,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
||||
result = dns_aclenv_init(mctx, &mgr->aclenv);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_listenon;
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
mgr->aclenv.geoip = ns_g_geoip;
|
||||
#endif
|
||||
|
||||
@@ -386,8 +386,9 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
|
||||
* connections will be handled in parallel even though there is
|
||||
* only one client initially.
|
||||
*/
|
||||
ifp->ntcptarget = 1;
|
||||
ifp->ntcpcurrent = 0;
|
||||
isc_refcount_init(&ifp->ntcpaccepting, 0);
|
||||
isc_refcount_init(&ifp->ntcpactive, 0);
|
||||
|
||||
ifp->nudpdispatch = 0;
|
||||
|
||||
ifp->dscp = -1;
|
||||
@@ -522,9 +523,7 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
|
||||
*/
|
||||
(void)isc_socket_filter(ifp->tcpsocket, "dataready");
|
||||
|
||||
result = ns_clientmgr_createclients(ifp->clientmgr,
|
||||
ifp->ntcptarget, ifp,
|
||||
true);
|
||||
result = ns_clientmgr_createclients(ifp->clientmgr, 1, ifp, true);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"TCP ns_clientmgr_createclients(): %s",
|
||||
@@ -619,6 +618,9 @@ ns_interface_destroy(ns_interface_t *ifp) {
|
||||
|
||||
ns_interfacemgr_detach(&ifp->mgr);
|
||||
|
||||
isc_refcount_destroy(&ifp->ntcpactive);
|
||||
isc_refcount_destroy(&ifp->ntcpaccepting);
|
||||
|
||||
ifp->magic = 0;
|
||||
isc_mem_put(mctx, ifp, sizeof(*ifp));
|
||||
}
|
||||
|
||||
+11
-2
@@ -356,7 +356,7 @@ save_command_line(int argc, char *argv[]) {
|
||||
* nearly always be fine.
|
||||
*/
|
||||
if (quoted || isalnum(*src & 0xff) ||
|
||||
*src == '-' || *src == '_' ||
|
||||
*src == ',' || *src == '-' || *src == '_' ||
|
||||
*src == '.' || *src == '/') {
|
||||
*dst++ = *src++;
|
||||
quoted = false;
|
||||
@@ -479,6 +479,12 @@ parse_T_opt(char *option) {
|
||||
ns_g_dropedns = true;
|
||||
} else if (!strncmp(option, "dscp=", 5)) {
|
||||
isc_dscp_check_value = atoi(option + 5);
|
||||
} else if (!strcmp(option, "ednsformerr")) {
|
||||
ns_g_ednsformerr = true;
|
||||
} else if (!strcmp(option, "ednsnotimp")) {
|
||||
ns_g_ednsnotimp = true;
|
||||
} else if (!strcmp(option, "ednsrefused")) {
|
||||
ns_g_ednsrefused = true;
|
||||
} else if (!strcmp(option, "fixedlocal")) {
|
||||
ns_g_fixedlocal = true;
|
||||
} else if (!strcmp(option, "keepstderr")) {
|
||||
@@ -501,6 +507,9 @@ parse_T_opt(char *option) {
|
||||
maxudp = 1460;
|
||||
} else if (!strncmp(option, "maxudp=", 7)) {
|
||||
maxudp = atoi(option + 7);
|
||||
if (maxudp <= 0) {
|
||||
ns_main_earlyfatal("bad maxudp");
|
||||
}
|
||||
} else if (!strncmp(option, "mkeytimers=", 11)) {
|
||||
p = strtok(option + 11, "/");
|
||||
if (p == NULL) {
|
||||
@@ -538,7 +547,7 @@ parse_T_opt(char *option) {
|
||||
} else if (!strncmp(option, "tat=", 4)) {
|
||||
ns_g_tat_interval = atoi(option + 4);
|
||||
} else {
|
||||
fprintf(stderr, "unknown -T flag '%s\n", option);
|
||||
fprintf(stderr, "unknown -T flag '%s'\n", option);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+23
-23
@@ -10,12 +10,12 @@
|
||||
.\" Title: named.conf
|
||||
.\" Author:
|
||||
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
||||
.\" Date: 2018-06-21
|
||||
.\" Date: 2019-07-22
|
||||
.\" Manual: BIND9
|
||||
.\" Source: ISC
|
||||
.\" Language: English
|
||||
.\"
|
||||
.TH "NAMED\&.CONF" "5" "2018\-06\-21" "ISC" "BIND9"
|
||||
.TH "NAMED\&.CONF" "5" "2019\-07\-22" "ISC" "BIND9"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
@@ -232,9 +232,9 @@ options {
|
||||
bindkeys\-file \fIquoted_string\fR;
|
||||
blackhole { \fIaddress_match_element\fR; \&.\&.\&. };
|
||||
cache\-file \fIquoted_string\fR;
|
||||
catalog\-zones { zone \fIquoted_string\fR [ default\-masters [ port
|
||||
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
||||
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||
catalog\-zones { zone \fIstring\fR [ default\-masters [ port \fIinteger\fR ]
|
||||
[ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [ port
|
||||
\fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
||||
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
|
||||
check\-dup\-records ( fail | warn | ignore );
|
||||
@@ -249,7 +249,7 @@ options {
|
||||
check\-wildcard \fIboolean\fR;
|
||||
cleaning\-interval \fIinteger\fR;
|
||||
clients\-per\-query \fIinteger\fR;
|
||||
cookie\-algorithm ( aes | sha1 | sha256 );
|
||||
cookie\-algorithm ( aes | sha1 | sha256 | siphash24 );
|
||||
cookie\-secret \fIstring\fR;
|
||||
coresize ( default | unlimited | \fIsizeval\fR );
|
||||
datasize ( default | unlimited | \fIsizeval\fR );
|
||||
@@ -418,13 +418,13 @@ options {
|
||||
require\-server\-cookie \fIboolean\fR;
|
||||
reserved\-sockets \fIinteger\fR;
|
||||
resolver\-query\-timeout \fIinteger\fR;
|
||||
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
||||
max\-policy\-ttl \fIinteger\fR ] [ policy ( cname | disabled | drop |
|
||||
given | no\-op | nodata | nxdomain | passthru | tcp\-only
|
||||
\fIquoted_string\fR ) ] [ recursive\-only \fIboolean\fR ]; \&.\&.\&. } [
|
||||
break\-dnssec \fIboolean\fR ] [ max\-policy\-ttl \fIinteger\fR ] [
|
||||
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
||||
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ];
|
||||
response\-policy { zone \fIstring\fR [ log \fIboolean\fR ] [ max\-policy\-ttl
|
||||
\fIinteger\fR ] [ policy ( cname | disabled | drop | given | no\-op
|
||||
| nodata | nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
||||
recursive\-only \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
||||
max\-policy\-ttl \fIinteger\fR ] [ min\-ns\-dots \fIinteger\fR ] [
|
||||
nsip\-wait\-recurse \fIboolean\fR ] [ qname\-wait\-recurse \fIboolean\fR ]
|
||||
[ recursive\-only \fIboolean\fR ];
|
||||
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
||||
root\-key\-sentinel \fIboolean\fR;
|
||||
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
||||
@@ -578,9 +578,9 @@ view \fIstring\fR [ \fIclass\fR ] {
|
||||
auth\-nxdomain \fIboolean\fR; // default changed
|
||||
auto\-dnssec ( allow | maintain | off );
|
||||
cache\-file \fIquoted_string\fR;
|
||||
catalog\-zones { zone \fIquoted_string\fR [ default\-masters [ port
|
||||
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
||||
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||
catalog\-zones { zone \fIstring\fR [ default\-masters [ port \fIinteger\fR ]
|
||||
[ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [ port
|
||||
\fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
||||
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
|
||||
check\-dup\-records ( fail | warn | ignore );
|
||||
@@ -734,13 +734,13 @@ view \fIstring\fR [ \fIclass\fR ] {
|
||||
request\-nsid \fIboolean\fR;
|
||||
require\-server\-cookie \fIboolean\fR;
|
||||
resolver\-query\-timeout \fIinteger\fR;
|
||||
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
||||
max\-policy\-ttl \fIinteger\fR ] [ policy ( cname | disabled | drop |
|
||||
given | no\-op | nodata | nxdomain | passthru | tcp\-only
|
||||
\fIquoted_string\fR ) ] [ recursive\-only \fIboolean\fR ]; \&.\&.\&. } [
|
||||
break\-dnssec \fIboolean\fR ] [ max\-policy\-ttl \fIinteger\fR ] [
|
||||
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
||||
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ];
|
||||
response\-policy { zone \fIstring\fR [ log \fIboolean\fR ] [ max\-policy\-ttl
|
||||
\fIinteger\fR ] [ policy ( cname | disabled | drop | given | no\-op
|
||||
| nodata | nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
||||
recursive\-only \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
||||
max\-policy\-ttl \fIinteger\fR ] [ min\-ns\-dots \fIinteger\fR ] [
|
||||
nsip\-wait\-recurse \fIboolean\fR ] [ qname\-wait\-recurse \fIboolean\fR ]
|
||||
[ recursive\-only \fIboolean\fR ];
|
||||
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
||||
root\-key\-sentinel \fIboolean\fR;
|
||||
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
|
||||
<info>
|
||||
<date>2018-06-21</date>
|
||||
<date>2019-07-22</date>
|
||||
</info>
|
||||
<refentryinfo>
|
||||
<corpname>ISC</corpname>
|
||||
@@ -221,9 +221,9 @@ options {
|
||||
bindkeys-file <replaceable>quoted_string</replaceable>;
|
||||
blackhole { <replaceable>address_match_element</replaceable>; ... };
|
||||
cache-file <replaceable>quoted_string</replaceable>;
|
||||
catalog-zones { zone <replaceable>quoted_string</replaceable> [ default-masters [ port
|
||||
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
|
||||
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||
catalog-zones { zone <replaceable>string</replaceable> [ default-masters [ port <replaceable>integer</replaceable> ]
|
||||
[ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [ port
|
||||
<replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
||||
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
|
||||
check-dup-records ( fail | warn | ignore );
|
||||
@@ -238,7 +238,7 @@ options {
|
||||
check-wildcard <replaceable>boolean</replaceable>;
|
||||
cleaning-interval <replaceable>integer</replaceable>;
|
||||
clients-per-query <replaceable>integer</replaceable>;
|
||||
cookie-algorithm ( aes | sha1 | sha256 );
|
||||
cookie-algorithm ( aes | sha1 | sha256 | siphash24 );
|
||||
cookie-secret <replaceable>string</replaceable>;
|
||||
coresize ( default | unlimited | <replaceable>sizeval</replaceable> );
|
||||
datasize ( default | unlimited | <replaceable>sizeval</replaceable> );
|
||||
@@ -407,13 +407,13 @@ options {
|
||||
require-server-cookie <replaceable>boolean</replaceable>;
|
||||
reserved-sockets <replaceable>integer</replaceable>;
|
||||
resolver-query-timeout <replaceable>integer</replaceable>;
|
||||
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
||||
max-policy-ttl <replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop |
|
||||
given | no-op | nodata | nxdomain | passthru | tcp-only
|
||||
<replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ]; ... } [
|
||||
break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>integer</replaceable> ] [
|
||||
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
||||
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ];
|
||||
response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
|
||||
<replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop | given | no-op
|
||||
| nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
||||
recursive-only <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
|
||||
nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
|
||||
[ recursive-only <replaceable>boolean</replaceable> ];
|
||||
root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
|
||||
root-key-sentinel <replaceable>boolean</replaceable>;
|
||||
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
|
||||
@@ -551,9 +551,9 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
auth-nxdomain <replaceable>boolean</replaceable>; // default changed
|
||||
auto-dnssec ( allow | maintain | off );
|
||||
cache-file <replaceable>quoted_string</replaceable>;
|
||||
catalog-zones { zone <replaceable>quoted_string</replaceable> [ default-masters [ port
|
||||
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
|
||||
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||
catalog-zones { zone <replaceable>string</replaceable> [ default-masters [ port <replaceable>integer</replaceable> ]
|
||||
[ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [ port
|
||||
<replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
||||
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
|
||||
check-dup-records ( fail | warn | ignore );
|
||||
@@ -707,13 +707,13 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
||||
request-nsid <replaceable>boolean</replaceable>;
|
||||
require-server-cookie <replaceable>boolean</replaceable>;
|
||||
resolver-query-timeout <replaceable>integer</replaceable>;
|
||||
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
||||
max-policy-ttl <replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop |
|
||||
given | no-op | nodata | nxdomain | passthru | tcp-only
|
||||
<replaceable>quoted_string</replaceable> ) ] [ recursive-only <replaceable>boolean</replaceable> ]; ... } [
|
||||
break-dnssec <replaceable>boolean</replaceable> ] [ max-policy-ttl <replaceable>integer</replaceable> ] [
|
||||
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
||||
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ];
|
||||
response-policy { zone <replaceable>string</replaceable> [ log <replaceable>boolean</replaceable> ] [ max-policy-ttl
|
||||
<replaceable>integer</replaceable> ] [ policy ( cname | disabled | drop | given | no-op
|
||||
| nodata | nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
||||
recursive-only <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-ns-dots <replaceable>integer</replaceable> ] [
|
||||
nsip-wait-recurse <replaceable>boolean</replaceable> ] [ qname-wait-recurse <replaceable>boolean</replaceable> ]
|
||||
[ recursive-only <replaceable>boolean</replaceable> ];
|
||||
root-delegation-only [ exclude { <replaceable>quoted_string</replaceable>; ... } ];
|
||||
root-key-sentinel <replaceable>boolean</replaceable>;
|
||||
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
|
||||
|
||||
+21
-21
@@ -209,9 +209,9 @@ options
|
||||
bindkeys-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||
blackhole { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
||||
cache-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||
catalog-zones { zone <em class="replaceable"><code>quoted_string</code></em> [ default-masters [ port<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<br>
|
||||
port <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
|
||||
catalog-zones { zone <em class="replaceable"><code>string</code></em> [ default-masters [ port <em class="replaceable"><code>integer</code></em> ]<br>
|
||||
[ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
|
||||
<em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<br>
|
||||
in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ]; ... };<br>
|
||||
check-dup-records ( fail | warn | ignore );<br>
|
||||
@@ -226,7 +226,7 @@ options
|
||||
check-wildcard <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
cleaning-interval <em class="replaceable"><code>integer</code></em>;<br>
|
||||
clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
|
||||
cookie-algorithm ( aes | sha1 | sha256 );<br>
|
||||
cookie-algorithm ( aes | sha1 | sha256 | siphash24 );<br>
|
||||
cookie-secret <em class="replaceable"><code>string</code></em>;<br>
|
||||
coresize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
||||
datasize ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
||||
@@ -395,13 +395,13 @@ options
|
||||
require-server-cookie <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
reserved-sockets <em class="replaceable"><code>integer</code></em>;<br>
|
||||
resolver-query-timeout <em class="replaceable"><code>integer</code></em>;<br>
|
||||
response-policy { zone <em class="replaceable"><code>quoted_string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop |<br>
|
||||
given | no-op | nodata | nxdomain | passthru | tcp-only<br>
|
||||
<em class="replaceable"><code>quoted_string</code></em> ) ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [<br>
|
||||
break-dnssec <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [<br>
|
||||
min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
|
||||
response-policy { zone <em class="replaceable"><code>string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop | given | no-op<br>
|
||||
| nodata | nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
||||
recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ min-ns-dots <em class="replaceable"><code>integer</code></em> ] [<br>
|
||||
nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ]<br>
|
||||
[ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
|
||||
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
|
||||
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
|
||||
@@ -543,9 +543,9 @@ view
|
||||
auth-nxdomain <em class="replaceable"><code>boolean</code></em>; // default changed<br>
|
||||
auto-dnssec ( allow | maintain | off );<br>
|
||||
cache-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||
catalog-zones { zone <em class="replaceable"><code>quoted_string</code></em> [ default-masters [ port<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] [ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<br>
|
||||
port <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
|
||||
catalog-zones { zone <em class="replaceable"><code>string</code></em> [ default-masters [ port <em class="replaceable"><code>integer</code></em> ]<br>
|
||||
[ dscp <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [ port<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port <em class="replaceable"><code>integer</code></em> ] ) [ key<br>
|
||||
<em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<br>
|
||||
in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ]; ... };<br>
|
||||
check-dup-records ( fail | warn | ignore );<br>
|
||||
@@ -699,13 +699,13 @@ view
|
||||
request-nsid <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
require-server-cookie <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
resolver-query-timeout <em class="replaceable"><code>integer</code></em>;<br>
|
||||
response-policy { zone <em class="replaceable"><code>quoted_string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop |<br>
|
||||
given | no-op | nodata | nxdomain | passthru | tcp-only<br>
|
||||
<em class="replaceable"><code>quoted_string</code></em> ) ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [<br>
|
||||
break-dnssec <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [<br>
|
||||
min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
|
||||
response-policy { zone <em class="replaceable"><code>string</code></em> [ log <em class="replaceable"><code>boolean</code></em> ] [ max-policy-ttl<br>
|
||||
<em class="replaceable"><code>integer</code></em> ] [ policy ( cname | disabled | drop | given | no-op<br>
|
||||
| nodata | nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
||||
recursive-only <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||
max-policy-ttl <em class="replaceable"><code>integer</code></em> ] [ min-ns-dots <em class="replaceable"><code>integer</code></em> ] [<br>
|
||||
nsip-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ]<br>
|
||||
[ recursive-only <em class="replaceable"><code>boolean</code></em> ];<br>
|
||||
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</code></em>; ... } ];<br>
|
||||
root-key-sentinel <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
|
||||
|
||||
+47
-13
@@ -4220,12 +4220,14 @@ query_prefetch(ns_client_t *client, dns_name_t *qname,
|
||||
if (client->recursionquota == NULL) {
|
||||
result = isc_quota_attach(&ns_g_server->recursionquota,
|
||||
&client->recursionquota);
|
||||
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
}
|
||||
if (result == ISC_R_SUCCESS && !client->mortal && !TCP(client))
|
||||
result = ns_client_replace(client);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return;
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
}
|
||||
|
||||
tmprdataset = query_newrdataset(client);
|
||||
@@ -4277,8 +4279,10 @@ query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname,
|
||||
result = isc_quota_attach(&ns_g_server->recursionquota,
|
||||
&client->recursionquota);
|
||||
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
}
|
||||
|
||||
if (result == ISC_R_SOFTQUOTA) {
|
||||
static isc_stdtime_t last = 0;
|
||||
@@ -4535,12 +4539,14 @@ query_rpzfetch(ns_client_t *client, dns_name_t *qname, dns_rdatatype_t type) {
|
||||
if (client->recursionquota == NULL) {
|
||||
result = isc_quota_attach(&ns_g_server->recursionquota,
|
||||
&client->recursionquota);
|
||||
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
}
|
||||
if (result == ISC_R_SUCCESS && !client->mortal && !TCP(client))
|
||||
result = ns_client_replace(client);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return;
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_recursclients);
|
||||
}
|
||||
|
||||
tmprdataset = query_newrdataset(client);
|
||||
@@ -4777,6 +4783,7 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype,
|
||||
isc_result_t result;
|
||||
dns_clientinfomethods_t cm;
|
||||
dns_clientinfo_t ci;
|
||||
bool found_a = false;
|
||||
|
||||
REQUIRE(nodep != NULL);
|
||||
|
||||
@@ -4820,6 +4827,18 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype,
|
||||
"rpz_find_p: allrdatasets failed");
|
||||
return (DNS_R_SERVFAIL);
|
||||
}
|
||||
if (qtype == dns_rdatatype_aaaa &&
|
||||
!ISC_LIST_EMPTY(client->view->dns64)) {
|
||||
for (result = dns_rdatasetiter_first(rdsiter);
|
||||
result == ISC_R_SUCCESS;
|
||||
result = dns_rdatasetiter_next(rdsiter)) {
|
||||
dns_rdatasetiter_current(rdsiter, *rdatasetp);
|
||||
if ((*rdatasetp)->type == dns_rdatatype_a) {
|
||||
found_a = true;
|
||||
}
|
||||
dns_rdataset_disassociate(*rdatasetp);
|
||||
}
|
||||
}
|
||||
for (result = dns_rdatasetiter_first(rdsiter);
|
||||
result == ISC_R_SUCCESS;
|
||||
result = dns_rdatasetiter_next(rdsiter)) {
|
||||
@@ -4872,7 +4891,11 @@ rpz_find_p(ns_client_t *client, dns_name_t *self_name, dns_rdatatype_t qtype,
|
||||
}
|
||||
return (ISC_R_SUCCESS);
|
||||
case DNS_R_NXRRSET:
|
||||
*policyp = DNS_RPZ_POLICY_NODATA;
|
||||
if (found_a) {
|
||||
*policyp = DNS_RPZ_POLICY_DNS64;
|
||||
} else {
|
||||
*policyp = DNS_RPZ_POLICY_NODATA;
|
||||
}
|
||||
return (result);
|
||||
case DNS_R_DNAME:
|
||||
/*
|
||||
@@ -6568,6 +6591,7 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
|
||||
dns_dbversion_t *version = NULL;
|
||||
dns_zone_t *zone = NULL;
|
||||
bool is_zone;
|
||||
unsigned int labels;
|
||||
unsigned int options;
|
||||
|
||||
CTRACE(ISC_LOG_DEBUG(3), "redirect2");
|
||||
@@ -6610,12 +6634,13 @@ redirect2(ns_client_t *client, dns_name_t *name, dns_rdataset_t *rdataset,
|
||||
}
|
||||
|
||||
redirectname = dns_fixedname_initname(&fixedredirect);
|
||||
if (dns_name_countlabels(name) > 1U) {
|
||||
labels = dns_name_countlabels(client->query.qname);
|
||||
if (labels > 1U) {
|
||||
dns_name_t prefix;
|
||||
unsigned int labels = dns_name_countlabels(name) - 1;
|
||||
|
||||
dns_name_init(&prefix, NULL);
|
||||
dns_name_getlabelsequence(name, 0, labels, &prefix);
|
||||
dns_name_getlabelsequence(client->query.qname, 0, labels - 1,
|
||||
&prefix);
|
||||
result = dns_name_concatenate(&prefix,
|
||||
client->view->redirectzone,
|
||||
redirectname, NULL);
|
||||
@@ -6764,7 +6789,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
bool failcache;
|
||||
uint32_t flags;
|
||||
#ifdef WANT_QUERYTRACE
|
||||
char mbuf[BUFSIZ];
|
||||
char mbuf[4 * DNS_NAME_FORMATSIZE];
|
||||
char qbuf[DNS_NAME_FORMATSIZE];
|
||||
char tbuf[DNS_RDATATYPE_FORMATSIZE];
|
||||
#endif
|
||||
@@ -7500,8 +7525,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
rpz = true;
|
||||
break;
|
||||
case DNS_RPZ_POLICY_NODATA:
|
||||
result = DNS_R_NXRRSET;
|
||||
nxrewrite = true;
|
||||
/* FALLTHROUGH */
|
||||
case DNS_RPZ_POLICY_DNS64:
|
||||
result = DNS_R_NXRRSET;
|
||||
rpz = true;
|
||||
break;
|
||||
case DNS_RPZ_POLICY_RECORD:
|
||||
@@ -7962,6 +7989,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
#endif
|
||||
} else if (result == DNS_R_NXRRSET &&
|
||||
!ISC_LIST_EMPTY(client->view->dns64) &&
|
||||
!nxrewrite &&
|
||||
client->message->rdclass == dns_rdataclass_in &&
|
||||
qtype == dns_rdatatype_aaaa)
|
||||
{
|
||||
@@ -9020,11 +9048,13 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
}
|
||||
|
||||
/*
|
||||
* BIND 8 priming queries need the additional section.
|
||||
* Always add glue for root priming queries, regardless
|
||||
* of "minimal-responses" setting.
|
||||
*/
|
||||
if (dns_name_equal(client->query.qname, dns_rootname)) {
|
||||
client->query.attributes &=
|
||||
~NS_QUERYATTR_NOADDITIONAL;
|
||||
dns_db_attach(db, &client->query.gluedb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9176,6 +9206,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
free_devent(client, ISC_EVENT_PTR(&event), &event);
|
||||
}
|
||||
|
||||
if (client->query.gluedb != NULL) {
|
||||
dns_db_detach(&client->query.gluedb);
|
||||
}
|
||||
|
||||
/*
|
||||
* AA bit.
|
||||
*/
|
||||
|
||||
+20
-14
@@ -42,6 +42,7 @@
|
||||
#include <isc/refcount.h>
|
||||
#include <isc/resource.h>
|
||||
#include <isc/sha2.h>
|
||||
#include <isc/siphash.h>
|
||||
#include <isc/socket.h>
|
||||
#include <isc/stat.h>
|
||||
#include <isc/stats.h>
|
||||
@@ -105,9 +106,9 @@
|
||||
#include <named/client.h>
|
||||
#include <named/config.h>
|
||||
#include <named/control.h>
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
#include <named/geoip.h>
|
||||
#endif /* HAVE_GEOIP */
|
||||
#endif /* HAVE_GEOIP || HAVE_GEOIP2 */
|
||||
#include <named/interfacemgr.h>
|
||||
#include <named/log.h>
|
||||
#include <named/logconf.h>
|
||||
@@ -844,7 +845,7 @@ load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig,
|
||||
key = cfg_listelt_value(elt2);
|
||||
result = dstkey_fromconfig(vconfig, key, managed,
|
||||
&dstkey, mctx);
|
||||
if (result == DST_R_UNSUPPORTEDALG) {
|
||||
if (result == DST_R_UNSUPPORTEDALG) {
|
||||
result = ISC_R_SUCCESS;
|
||||
continue;
|
||||
}
|
||||
@@ -7631,7 +7632,7 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
}
|
||||
isc__socketmgr_setreserved(ns_g_socketmgr, reserved);
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
/*
|
||||
* Initialize GeoIP databases from the configured location.
|
||||
* This should happen before configuring any ACLs, so that we
|
||||
@@ -7644,8 +7645,6 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
char *dir;
|
||||
DE_CONST(cfg_obj_asstring(obj), dir);
|
||||
ns_geoip_load(dir);
|
||||
} else {
|
||||
ns_geoip_load(NULL);
|
||||
}
|
||||
ns_g_aclconfctx->geoip = ns_g_geoip;
|
||||
|
||||
@@ -7653,7 +7652,7 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
result = ns_config_get(maps, "geoip-use-ecs", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
ns_g_server->aclenv.geoip_use_ecs = cfg_obj_asboolean(obj);
|
||||
#endif /* HAVE_GEOIP */
|
||||
#endif /* HAVE_GEOIP || HAVE_GEOIP2 */
|
||||
|
||||
/*
|
||||
* Configure various server options.
|
||||
@@ -8484,7 +8483,9 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "cookie-algorithm", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "aes") == 0) {
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "siphash24") == 0) {
|
||||
server->cookiealg = ns_cookiealg_siphash24;
|
||||
} else if (strcasecmp(cfg_obj_asstring(obj), "aes") == 0) {
|
||||
#if defined(HAVE_OPENSSL_AES) || defined(HAVE_OPENSSL_EVP_AES)
|
||||
server->cookiealg = ns_cookiealg_aes;
|
||||
#else
|
||||
@@ -8547,11 +8548,16 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
|
||||
usedlength = isc_buffer_usedlength(&b);
|
||||
switch (server->cookiealg) {
|
||||
case ns_cookiealg_siphash24:
|
||||
if (usedlength != ISC_SIPHASH24_KEY_LENGTH) {
|
||||
CHECKM(ISC_R_RANGE,
|
||||
"SipHash-2-4 cookie-secret must be 128 bits");
|
||||
}
|
||||
break;
|
||||
case ns_cookiealg_aes:
|
||||
if (usedlength != ISC_AES128_KEYLENGTH) {
|
||||
CHECKM(ISC_R_RANGE,
|
||||
"AES cookie-secret must be "
|
||||
"128 bits");
|
||||
"AES cookie-secret must be 128 bits");
|
||||
}
|
||||
break;
|
||||
case ns_cookiealg_sha1:
|
||||
@@ -8960,9 +8966,9 @@ shutdown_server(isc_task_t *task, isc_event_t *event) {
|
||||
#ifdef HAVE_DNSTAP
|
||||
dns_dt_shutdown();
|
||||
#endif
|
||||
#ifdef HAVE_GEOIP
|
||||
dns_geoip_shutdown();
|
||||
#endif
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
ns_geoip_shutdown();
|
||||
#endif /* HAVE_GEOIP || HAVE_GEOIP2 */
|
||||
|
||||
dns_db_detach(&server->in_roothints);
|
||||
|
||||
@@ -8995,7 +9001,7 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
|
||||
result = dns_aclenv_init(mctx, &server->aclenv);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
#if defined(HAVE_GEOIP) || defined(HAVE_GEOIP2)
|
||||
/* Initialize GeoIP before using ACL environment */
|
||||
ns_geoip_init();
|
||||
server->aclenv.geoip = ns_g_geoip;
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#if HAVE_DLFCN_H
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#include <dns/log.h>
|
||||
#include <dns/result.h>
|
||||
|
||||
@@ -44,6 +44,11 @@
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@END GEOIP
|
||||
@IF GEOIPLEGACY
|
||||
<ClCompile Include="..\geoip.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@END GEOIPLEGACY
|
||||
<ClCompile Include="..\interfacemgr.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -141,6 +146,11 @@
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@END GEOIP
|
||||
@IF GEOIPLEGACY
|
||||
<ClInclude Include="..\include\named\geoip.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@END GEOIPLEGACY
|
||||
<ClInclude Include="..\include\named\globals.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
||||
@@ -110,6 +110,9 @@
|
||||
@IF GEOIP
|
||||
<ClCompile Include="..\geoip.c" />
|
||||
@END GEOIP
|
||||
@IF GEOIPLEGACY
|
||||
<ClCompile Include="..\geoip.c" />
|
||||
@END GEOIPLEGACY
|
||||
<ClCompile Include="..\interfacemgr.c" />
|
||||
<ClCompile Include="..\listenlist.c" />
|
||||
<ClCompile Include="..\log.c" />
|
||||
@@ -146,6 +149,9 @@
|
||||
@IF GEOIP
|
||||
<ClInclude Include="..\include\named\geoip.h" />
|
||||
@END GEOIP
|
||||
@IF GEOIPLEGACY
|
||||
<ClInclude Include="..\include\named\geoip.h" />
|
||||
@END GEOIPLEGACY
|
||||
<ClInclude Include="..\include\named\globals.h" />
|
||||
<ClInclude Include="..\include\named\interfacemgr.h" />
|
||||
<ClInclude Include="..\include\named\listenlist.h" />
|
||||
|
||||
@@ -82,7 +82,7 @@ ServiceControl(DWORD dwCtrlCode) {
|
||||
case SERVICE_CONTROL_STOP:
|
||||
ns_server_flushonshutdown(ns_g_server, true);
|
||||
isc_app_shutdown();
|
||||
UpdateSCM(SERVICE_STOPPED);
|
||||
UpdateSCM(SERVICE_STOP_PENDING);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -350,9 +350,9 @@ ns_os_shutdown(void) {
|
||||
if (lockfilefd != -1) {
|
||||
(void) UnlockFile((HANDLE) _get_osfhandle(lockfilefd),
|
||||
0, 0, 0, 1);
|
||||
close(lockfilefd);
|
||||
lockfilefd = -1;
|
||||
}
|
||||
cleanup_lockfile();
|
||||
|
||||
ntservice_shutdown(); /* This MUST be the last thing done */
|
||||
}
|
||||
|
||||
|
||||
+66
-40
@@ -9,8 +9,6 @@
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
@@ -797,11 +795,13 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
question_rdataset = ISC_LIST_HEAD(question_name->list);
|
||||
question_class = question_rdataset->rdclass;
|
||||
INSIST(question_rdataset->type == reqtype);
|
||||
if (ISC_LIST_NEXT(question_rdataset, link) != NULL)
|
||||
if (ISC_LIST_NEXT(question_rdataset, link) != NULL) {
|
||||
FAILC(DNS_R_FORMERR, "multiple questions");
|
||||
}
|
||||
result = dns_message_nextname(request, DNS_SECTION_QUESTION);
|
||||
if (result != ISC_R_NOMORE)
|
||||
if (result != ISC_R_NOMORE) {
|
||||
FAILC(DNS_R_FORMERR, "multiple questions");
|
||||
}
|
||||
|
||||
result = dns_zt_find(client->view->zonetable, question_name, 0, NULL,
|
||||
&zone);
|
||||
@@ -880,8 +880,9 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
/*
|
||||
* Ignore data whose owner name is not the zone apex.
|
||||
*/
|
||||
if (! dns_name_equal(soa_name, question_name))
|
||||
if (! dns_name_equal(soa_name, question_name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (soa_rdataset = ISC_LIST_HEAD(soa_name->list);
|
||||
soa_rdataset != NULL;
|
||||
@@ -890,25 +891,29 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
/*
|
||||
* Ignore non-SOA data.
|
||||
*/
|
||||
if (soa_rdataset->type != dns_rdatatype_soa)
|
||||
if (soa_rdataset->type != dns_rdatatype_soa) {
|
||||
continue;
|
||||
if (soa_rdataset->rdclass != question_class)
|
||||
}
|
||||
if (soa_rdataset->rdclass != question_class) {
|
||||
continue;
|
||||
}
|
||||
|
||||
CHECK(dns_rdataset_first(soa_rdataset));
|
||||
dns_rdataset_current(soa_rdataset, &soa_rdata);
|
||||
result = dns_rdataset_next(soa_rdataset);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
FAILC(DNS_R_FORMERR,
|
||||
"IXFR authority section "
|
||||
"has multiple SOAs");
|
||||
}
|
||||
have_soa = true;
|
||||
goto got_soa;
|
||||
}
|
||||
}
|
||||
got_soa:
|
||||
if (result != ISC_R_NOMORE)
|
||||
if (result != ISC_R_NOMORE) {
|
||||
CHECK(result);
|
||||
}
|
||||
|
||||
xfrout_log1(client, question_name, question_class, ISC_LOG_DEBUG(6),
|
||||
"%s authority section OK", mnemonic);
|
||||
@@ -928,8 +933,9 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
* AXFR over UDP is not possible.
|
||||
*/
|
||||
if (reqtype == dns_rdatatype_axfr &&
|
||||
(client->attributes & NS_CLIENTATTR_TCP) == 0)
|
||||
(client->attributes & NS_CLIENTATTR_TCP) == 0) {
|
||||
FAILC(DNS_R_FORMERR, "attempted AXFR over UDP");
|
||||
}
|
||||
|
||||
/*
|
||||
* Look up the requesting server in the peer table.
|
||||
@@ -940,8 +946,9 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
/*
|
||||
* Decide on the transfer format (one-answer or many-answers).
|
||||
*/
|
||||
if (peer != NULL)
|
||||
if (peer != NULL) {
|
||||
(void)dns_peer_gettransferformat(peer, &format);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a dynamically allocated copy of the current SOA.
|
||||
@@ -954,21 +961,27 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
|
||||
current_serial = dns_soa_getserial(¤t_soa_tuple->rdata);
|
||||
if (reqtype == dns_rdatatype_ixfr) {
|
||||
bool provide_ixfr;
|
||||
|
||||
/*
|
||||
* Outgoing IXFR may have been disabled for this peer
|
||||
* or globally.
|
||||
*/
|
||||
provide_ixfr = client->view->provideixfr;
|
||||
if (peer != NULL)
|
||||
(void) dns_peer_getprovideixfr(peer, &provide_ixfr);
|
||||
if (provide_ixfr == false)
|
||||
goto axfr_fallback;
|
||||
if ((client->attributes & NS_CLIENTATTR_TCP) != 0) {
|
||||
bool provide_ixfr;
|
||||
|
||||
if (! have_soa)
|
||||
provide_ixfr = client->view->provideixfr;
|
||||
if (peer != NULL) {
|
||||
(void) dns_peer_getprovideixfr(peer,
|
||||
&provide_ixfr);
|
||||
}
|
||||
if (provide_ixfr == false) {
|
||||
goto axfr_fallback;
|
||||
}
|
||||
}
|
||||
|
||||
if (! have_soa) {
|
||||
FAILC(DNS_R_FORMERR,
|
||||
"IXFR request missing SOA");
|
||||
}
|
||||
|
||||
begin_serial = dns_soa_getserial(&soa_rdata);
|
||||
|
||||
@@ -991,16 +1004,16 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
goto have_stream;
|
||||
}
|
||||
journalfile = is_dlz ? NULL : dns_zone_getjournal(zone);
|
||||
if (journalfile != NULL)
|
||||
if (journalfile != NULL) {
|
||||
result = ixfr_rrstream_create(mctx,
|
||||
journalfile,
|
||||
begin_serial,
|
||||
current_serial,
|
||||
&data_stream);
|
||||
else
|
||||
} else {
|
||||
result = ISC_R_NOTFOUND;
|
||||
if (result == ISC_R_NOTFOUND ||
|
||||
result == ISC_R_RANGE) {
|
||||
}
|
||||
if (result == ISC_R_NOTFOUND || result == ISC_R_RANGE) {
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_DEBUG(4),
|
||||
"IXFR version not in journal, "
|
||||
@@ -1033,7 +1046,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
|
||||
|
||||
|
||||
if (is_dlz)
|
||||
if (is_dlz) {
|
||||
CHECK(xfrout_ctx_create(mctx, client, request->id,
|
||||
question_name, reqtype, question_class,
|
||||
zone, db, ver, quota, stream,
|
||||
@@ -1045,7 +1058,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
(format == dns_many_answers) ?
|
||||
true : false,
|
||||
&xfr));
|
||||
else
|
||||
} else {
|
||||
CHECK(xfrout_ctx_create(mctx, client, request->id,
|
||||
question_name, reqtype, question_class,
|
||||
zone, db, ver, quota, stream,
|
||||
@@ -1057,6 +1070,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
(format == dns_many_answers) ?
|
||||
true : false,
|
||||
&xfr));
|
||||
}
|
||||
|
||||
xfr->mnemonic = mnemonic;
|
||||
stream = NULL;
|
||||
@@ -1064,24 +1078,26 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
|
||||
CHECK(xfr->stream->methods->first(xfr->stream));
|
||||
|
||||
if (xfr->tsigkey != NULL)
|
||||
if (xfr->tsigkey != NULL) {
|
||||
dns_name_format(&xfr->tsigkey->name, keyname, sizeof(keyname));
|
||||
else
|
||||
} else {
|
||||
keyname[0] = '\0';
|
||||
if (is_poll)
|
||||
}
|
||||
if (is_poll) {
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_DEBUG(1), "IXFR poll up to date%s%s",
|
||||
(xfr->tsigkey != NULL) ? ": TSIG " : "", keyname);
|
||||
else if (is_ixfr)
|
||||
} else if (is_ixfr) {
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_INFO, "%s started%s%s (serial %u -> %u)",
|
||||
mnemonic, (xfr->tsigkey != NULL) ? ": TSIG " : "",
|
||||
keyname, begin_serial, current_serial);
|
||||
else
|
||||
} else {
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_INFO, "%s started%s%s (serial %u)",
|
||||
mnemonic, (xfr->tsigkey != NULL) ? ": TSIG " : "",
|
||||
keyname, current_serial);
|
||||
}
|
||||
|
||||
|
||||
if (zone != NULL) {
|
||||
@@ -1098,8 +1114,9 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
client->expire = secs - client->now;
|
||||
}
|
||||
}
|
||||
if (raw != NULL)
|
||||
if (raw != NULL) {
|
||||
dns_zone_detach(&raw);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1113,24 +1130,33 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
result = ISC_R_SUCCESS;
|
||||
|
||||
failure:
|
||||
if (result == DNS_R_REFUSED)
|
||||
if (result == DNS_R_REFUSED) {
|
||||
inc_stats(zone, dns_nsstatscounter_xfrrej);
|
||||
if (quota != NULL)
|
||||
}
|
||||
if (quota != NULL) {
|
||||
isc_quota_detach("a);
|
||||
if (current_soa_tuple != NULL)
|
||||
}
|
||||
if (current_soa_tuple != NULL) {
|
||||
dns_difftuple_free(¤t_soa_tuple);
|
||||
if (stream != NULL)
|
||||
}
|
||||
if (stream != NULL) {
|
||||
stream->methods->destroy(&stream);
|
||||
if (soa_stream != NULL)
|
||||
}
|
||||
if (soa_stream != NULL) {
|
||||
soa_stream->methods->destroy(&soa_stream);
|
||||
if (data_stream != NULL)
|
||||
}
|
||||
if (data_stream != NULL) {
|
||||
data_stream->methods->destroy(&data_stream);
|
||||
if (ver != NULL)
|
||||
}
|
||||
if (ver != NULL) {
|
||||
dns_db_closeversion(db, &ver, false);
|
||||
if (db != NULL)
|
||||
}
|
||||
if (db != NULL) {
|
||||
dns_db_detach(&db);
|
||||
if (zone != NULL)
|
||||
}
|
||||
if (zone != NULL) {
|
||||
dns_zone_detach(&zone);
|
||||
}
|
||||
/* XXX kludge */
|
||||
if (xfr != NULL) {
|
||||
xfrout_fail(xfr, result, "setting up zone transfer");
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# $Id: Makefile.in,v 1.36 2009/12/05 23:31:40 each Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -29,7 +27,7 @@ CDEFINES = -DVERSION=\"${VERSION}\" @CRYPTO@ @USE_GSSAPI@
|
||||
CWARNINGS =
|
||||
|
||||
LWRESLIBS = ../../lib/lwres/liblwres.@A@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <isc/log.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/parseint.h>
|
||||
#include <isc/portset.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/random.h>
|
||||
#include <isc/region.h>
|
||||
@@ -850,6 +851,34 @@ shutdown_program(isc_task_t *task, isc_event_t *event) {
|
||||
maybeshutdown();
|
||||
}
|
||||
|
||||
/*
|
||||
* Try honoring the operating system's preferred ephemeral port range.
|
||||
*/
|
||||
static void
|
||||
set_source_ports(dns_dispatchmgr_t *manager) {
|
||||
isc_portset_t *v4portset = NULL, *v6portset = NULL;
|
||||
in_port_t udpport_low, udpport_high;
|
||||
isc_result_t result;
|
||||
|
||||
result = isc_portset_create(gmctx, &v4portset);
|
||||
check_result(result, "isc_portset_create (v4)");
|
||||
result = isc_net_getudpportrange(AF_INET, &udpport_low, &udpport_high);
|
||||
check_result(result, "isc_net_getudpportrange (v4)");
|
||||
isc_portset_addrange(v4portset, udpport_low, udpport_high);
|
||||
|
||||
result = isc_portset_create(gmctx, &v6portset);
|
||||
check_result(result, "isc_portset_create (v6)");
|
||||
result = isc_net_getudpportrange(AF_INET6, &udpport_low, &udpport_high);
|
||||
check_result(result, "isc_net_getudpportrange (v6)");
|
||||
isc_portset_addrange(v6portset, udpport_low, udpport_high);
|
||||
|
||||
result = dns_dispatchmgr_setavailports(manager, v4portset, v6portset);
|
||||
check_result(result, "dns_dispatchmgr_setavailports");
|
||||
|
||||
isc_portset_destroy(gmctx, &v4portset);
|
||||
isc_portset_destroy(gmctx, &v6portset);
|
||||
}
|
||||
|
||||
static void
|
||||
setup_system(void) {
|
||||
isc_result_t result;
|
||||
@@ -975,6 +1004,8 @@ setup_system(void) {
|
||||
check_result(result, "dst_lib_init");
|
||||
is_dst_up = true;
|
||||
|
||||
set_source_ports(dispatchmgr);
|
||||
|
||||
attrmask = DNS_DISPATCHATTR_UDP | DNS_DISPATCHATTR_TCP;
|
||||
attrmask |= DNS_DISPATCHATTR_IPV4 | DNS_DISPATCHATTR_IPV6;
|
||||
|
||||
|
||||
+20
-11
@@ -373,10 +373,12 @@ main(int argc, char *argv[]) {
|
||||
switch (keyclass) {
|
||||
case key_rsa:
|
||||
op_type = OP_RSA;
|
||||
if (expsize == 0)
|
||||
if (expsize == 0) {
|
||||
expsize = 3;
|
||||
if (bits == 0)
|
||||
}
|
||||
if (bits == 0) {
|
||||
usage();
|
||||
}
|
||||
|
||||
mech.mechanism = CKM_RSA_PKCS_KEY_PAIR_GEN;
|
||||
mech.pParameter = NULL;
|
||||
@@ -389,9 +391,9 @@ main(int argc, char *argv[]) {
|
||||
/* Set public exponent to F4 or F5 */
|
||||
exponent[0] = 0x01;
|
||||
exponent[1] = 0x00;
|
||||
if (expsize == 3)
|
||||
if (expsize == 3) {
|
||||
exponent[2] = 0x01;
|
||||
else {
|
||||
} else {
|
||||
exponent[2] = 0x00;
|
||||
exponent[3] = 0x00;
|
||||
exponent[4] = 0x01;
|
||||
@@ -403,10 +405,15 @@ main(int argc, char *argv[]) {
|
||||
public_template[RSA_PUBLIC_EXPONENT].ulValueLen = expsize;
|
||||
break;
|
||||
case key_ecc:
|
||||
#if !defined(HAVE_PKCS11_ECDSA)
|
||||
fprintf(stderr,
|
||||
"prime256v1 and secp3841r1 are not supported\n");
|
||||
usage();
|
||||
#else
|
||||
op_type = OP_EC;
|
||||
if (bits == 0)
|
||||
if (bits == 0) {
|
||||
bits = 256;
|
||||
else if (bits != 256 && bits != 384) {
|
||||
} else if (bits != 256 && bits != 384) {
|
||||
fprintf(stderr, "ECC keys only support bit sizes of "
|
||||
"256 and 384\n");
|
||||
exit(2);
|
||||
@@ -429,7 +436,7 @@ main(int argc, char *argv[]) {
|
||||
public_template[4].ulValueLen =
|
||||
sizeof(pk11_ecc_secp384r1);
|
||||
}
|
||||
|
||||
#endif
|
||||
break;
|
||||
case key_ecx:
|
||||
#if !defined(CKM_EDDSA_KEY_PAIR_GEN)
|
||||
@@ -437,9 +444,9 @@ main(int argc, char *argv[]) {
|
||||
usage();
|
||||
#else
|
||||
op_type = OP_EC;
|
||||
if (bits == 0)
|
||||
if (bits == 0) {
|
||||
bits = 256;
|
||||
else if (bits != 256 && bits != 456) {
|
||||
} else if (bits != 256 && bits != 456) {
|
||||
fprintf(stderr, "ECX keys only support bit sizes of "
|
||||
"256 and 456\n");
|
||||
exit(2);
|
||||
@@ -570,8 +577,9 @@ main(int argc, char *argv[]) {
|
||||
pk11_result_register();
|
||||
|
||||
/* Initialize the CRYPTOKI library */
|
||||
if (lib_name != NULL)
|
||||
if (lib_name != NULL) {
|
||||
pk11_set_lib_name(lib_name);
|
||||
}
|
||||
|
||||
if (pin == NULL)
|
||||
pin = getpassphrase("Enter Pin: ");
|
||||
@@ -729,8 +737,9 @@ main(int argc, char *argv[]) {
|
||||
if (rv != CKR_OK) {
|
||||
fprintf(stderr, "C_GenerateKeyPair: Error = 0x%.8lX\n", rv);
|
||||
error = 1;
|
||||
} else if (!quiet)
|
||||
} else if (!quiet) {
|
||||
printf("Key pair generation complete.\n");
|
||||
}
|
||||
|
||||
exit_params:
|
||||
/* Free parameter attributes */
|
||||
|
||||
@@ -37,7 +37,11 @@ class SECRR:
|
||||
if not rrtext:
|
||||
raise Exception
|
||||
|
||||
fields = rrtext.decode('ascii').split()
|
||||
# 'str' does not have decode method in python3
|
||||
if type(rrtext) is not str:
|
||||
fields = rrtext.decode('ascii').split()
|
||||
else:
|
||||
fields = rrtext.split()
|
||||
if len(fields) < 7:
|
||||
raise Exception
|
||||
|
||||
@@ -99,6 +103,8 @@ def check(zone, args, masterfile=None, lookaside=None):
|
||||
fp, _ = Popen(cmd, stdout=PIPE).communicate()
|
||||
|
||||
for line in fp.splitlines():
|
||||
if type(line) is not str:
|
||||
line = line.decode('ascii')
|
||||
rrlist.append(SECRR(line, lookaside))
|
||||
rrlist = sorted(rrlist, key=lambda rr: (rr.keyid, rr.keyalg, rr.hashalg))
|
||||
|
||||
@@ -120,6 +126,8 @@ def check(zone, args, masterfile=None, lookaside=None):
|
||||
fp, _ = Popen(cmd, stdin=PIPE, stdout=PIPE).communicate(intods)
|
||||
|
||||
for line in fp.splitlines():
|
||||
if type(line) is not str:
|
||||
line = line.decode('ascii')
|
||||
klist.append(SECRR(line, lookaside))
|
||||
|
||||
if len(klist) < 1:
|
||||
|
||||
@@ -43,6 +43,8 @@ class keyzone:
|
||||
fp, _ = Popen([czpath, "-o", "-", name, filename],
|
||||
stdout=PIPE, stderr=PIPE).communicate()
|
||||
for line in fp.splitlines():
|
||||
if type(line) is not str:
|
||||
line = line.decode('ascii')
|
||||
if re.search('^[:space:]*;', line):
|
||||
continue
|
||||
fields = line.split()
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# $Id: Makefile.in,v 1.49 2009/12/05 23:31:40 each Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -27,7 +25,7 @@ ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||
|
||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
|
||||
+1
-1
@@ -584,7 +584,7 @@ Delete a given TKEY\-negotiated key from the server\&. (This does not apply to s
|
||||
.RS 4
|
||||
List the names of all TSIG keys currently configured for use by
|
||||
\fBnamed\fR
|
||||
in each view\&. The list both statically configured keys and dynamic TKEY\-negotiated keys\&.
|
||||
in each view\&. The list includes both statically configured keys and dynamic TKEY\-negotiated keys\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBvalidation ( on | off | status ) \fR\fB[\fIview \&.\&.\&.\fR]\fR\fB \fR
|
||||
|
||||
@@ -936,7 +936,7 @@
|
||||
<para>
|
||||
List the names of all TSIG keys currently configured
|
||||
for use by <command>named</command> in each view. The
|
||||
list both statically configured keys and dynamic
|
||||
list includes both statically configured keys and dynamic
|
||||
TKEY-negotiated keys.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
+1
-1
@@ -787,7 +787,7 @@
|
||||
<p>
|
||||
List the names of all TSIG keys currently configured
|
||||
for use by <span class="command"><strong>named</strong></span> in each view. The
|
||||
list both statically configured keys and dynamic
|
||||
list includes both statically configured keys and dynamic
|
||||
TKEY-negotiated keys.
|
||||
</p>
|
||||
</dd>
|
||||
|
||||
@@ -20,7 +20,7 @@ CDEFINES = @CRYPTO@
|
||||
CWARNINGS =
|
||||
BACKTRACECFLAGS = @BACKTRACECFLAGS@
|
||||
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||
|
||||
@@ -21,7 +21,7 @@ CDEFINES = @CRYPTO@ @USE_GSSAPI@
|
||||
CWARNINGS =
|
||||
BACKTRACECFLAGS = @BACKTRACECFLAGS@
|
||||
|
||||
DNSLIBS = ../../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||
DNSLIBS = ../../../lib/dns/libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
|
||||
ISCLIBS = ../../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
||||
ISCNOSYMLIBS = ../../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
||||
ISCCFGLIBS = ../../../lib/isccfg/libisccfg.@A@
|
||||
|
||||
@@ -19,7 +19,7 @@ SUBDIRS = dlzexternal dyndb lwresd pipelined rndc rsabigexponent tkey
|
||||
|
||||
CINCLUDES = ${ISC_INCLUDES} ${DNS_INCLUDES}
|
||||
|
||||
CDEFINES = @USE_GSSAPI@
|
||||
CDEFINES = @USE_GSSAPI@ @CONTRIB_DLZ@
|
||||
CWARNINGS =
|
||||
|
||||
DNSLIBS =
|
||||
@@ -47,32 +47,6 @@ feature-test@EXEEXT@: feature-test.@O@
|
||||
# Running the scripts below is bypassed when a separate build directory is
|
||||
# used.
|
||||
|
||||
# Define the tests that can be run in parallel. This should be identical to
|
||||
# the definition of PARALLELDIRS in conf.sh. Note: longer-running tests
|
||||
# such as serve-stale and rpzrecurse are scheduled first to get more
|
||||
# benefit from parallelism.
|
||||
PARALLEL = rpzrecurse dnssec \
|
||||
acl additional addzone allow-query autosign \
|
||||
builtin cacheclean case catz chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr \
|
||||
legacy limits logfileconfig \
|
||||
masterfile masterformat metadata mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
pending pipelined \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub \
|
||||
tcp tsig tsiggss \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks
|
||||
|
||||
# Produce intermediate makefile that assigns unique port numbers to each
|
||||
# parallel test. The start port number of 5,000 is arbitrary - it must just
|
||||
# be greater than the highest privileged port, 1024.
|
||||
@@ -84,26 +58,7 @@ PARALLEL = rpzrecurse dnssec \
|
||||
.PHONY: parallel.mk
|
||||
|
||||
parallel.mk:
|
||||
@PARALLEL_SANITIZED=`echo $(PARALLEL) | sed "s|\([^ ][^ ]*\)|test-\1|g;" | tr _ -` ; \
|
||||
echo ".PHONY: $$PARALLEL_SANITIZED" > $@ ; \
|
||||
echo "" >> $@ ; \
|
||||
echo "check_interfaces:" >> $@ ; \
|
||||
echo " @${PERL} testsock.pl > /dev/null 2>&1 || { \\" >> $@ ; \
|
||||
echo " echo \"I:NOTE: System tests were skipped because they require that the\"; \\" >> $@ ; \
|
||||
echo " echo \"I: IP addresses 10.53.0.1 through 10.53.0.8 be configured\"; \\" >> $@ ; \
|
||||
echo " echo \"I: as alias addresses on the loopback interface. Please run\"; \\" >> $@ ; \
|
||||
echo " echo \"I: \"bin/tests/system/ifconfig.sh up\" as root to configure them.\"; \\" >> $@ ; \
|
||||
echo " exit 1; \\" >> $@ ; \
|
||||
echo " }" >> $@ ; \
|
||||
echo "" >> $@ ; \
|
||||
echo "test check: $$PARALLEL_SANITIZED" >> $@ ; \
|
||||
port=$${STARTPORT:-5000} ; \
|
||||
for directory in $(PARALLEL) ; do \
|
||||
echo "" >> $@ ; \
|
||||
echo "test-`echo $$directory | tr _ -`: check_interfaces" >> $@ ; \
|
||||
echo " @$(SHELL) ./run.sh -r -p $$port $$directory 2>&1 | tee $$directory/test.output" >> $@ ; \
|
||||
port=`expr $$port + 100` ; \
|
||||
done
|
||||
$(SHELL) parallel.sh > parallel.mk
|
||||
|
||||
# Targets to run the tests.
|
||||
|
||||
|
||||
@@ -29,6 +29,11 @@ controls {
|
||||
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type master;
|
||||
file "root.db";
|
||||
};
|
||||
|
||||
zone "rt.example" {
|
||||
type master;
|
||||
file "rt.db";
|
||||
|
||||
@@ -29,6 +29,11 @@ controls {
|
||||
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type master;
|
||||
file "root.db";
|
||||
};
|
||||
|
||||
zone "rt.example" {
|
||||
type master;
|
||||
file "rt.db";
|
||||
|
||||
@@ -30,6 +30,11 @@ controls {
|
||||
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type master;
|
||||
file "root.db";
|
||||
};
|
||||
|
||||
zone "rt.example" {
|
||||
type master;
|
||||
file "rt.db";
|
||||
|
||||
@@ -29,6 +29,11 @@ controls {
|
||||
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type master;
|
||||
file "root.db";
|
||||
};
|
||||
|
||||
zone "mx.example" {
|
||||
type master;
|
||||
file "mx.db";
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
; 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.
|
||||
|
||||
. IN SOA ns2. hostmaster ( 2 8H 2H 4W 1D);
|
||||
. NS ns1.rt.example.
|
||||
. NS ns2.rt.example.
|
||||
ns1.rt.example. A 10.53.0.1
|
||||
ns2.rt.example. A 10.53.0.2
|
||||
rt.example. NS ns1.
|
||||
naptr.example. NS ns1.
|
||||
rt2.example. NS ns1.
|
||||
naptr2.example. NS ns1.
|
||||
nid.example. NS ns1.
|
||||
@@ -210,6 +210,38 @@ dotests() {
|
||||
if [ $ret -eq 1 ] ; then
|
||||
echo_i " failed"; status=1
|
||||
fi
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "test with NS, root zone ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS -t NS . @10.53.0.1 > dig.out.$n || ret=1
|
||||
# Always expect glue for root priming queries, regardless $minimal
|
||||
grep 'ADDITIONAL: 3' dig.out.$n > /dev/null || ret=1
|
||||
if [ $ret -eq 1 ] ; then
|
||||
echo_i " failed"; status=1
|
||||
fi
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "test with NS, non-root zone ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS -t NS rt.example @10.53.0.1 > dig.out.$n || ret=1
|
||||
case $minimal in
|
||||
yes)
|
||||
grep 'ADDITIONAL: 1' dig.out.$n > /dev/null || ret=1
|
||||
;;
|
||||
no)
|
||||
grep 'ADDITIONAL: 2' dig.out.$n > /dev/null || ret=1
|
||||
;;
|
||||
no-auth)
|
||||
grep 'ADDITIONAL: 2' dig.out.$n > /dev/null || ret=1
|
||||
;;
|
||||
no-auth-recursive)
|
||||
grep 'ADDITIONAL: 2' dig.out.$n > /dev/null || ret=1
|
||||
;;
|
||||
esac
|
||||
if [ $ret -eq 1 ] ; then
|
||||
echo_i " failed"; status=1
|
||||
fi
|
||||
}
|
||||
|
||||
echo_i "testing with 'minimal-responses yes;'"
|
||||
|
||||
@@ -18,7 +18,3 @@ copy_setports ns1/named.conf.in ns1/named.conf
|
||||
copy_setports ns2/named1.conf.in ns2/named.conf
|
||||
cp -f ns2/default.nzf.in ns2/3bf305731dd26307.nzf
|
||||
copy_setports ns3/named1.conf.in ns3/named.conf
|
||||
|
||||
rm -f ns3/*.nzf ns3/*.nzf~
|
||||
rm -f ns3/*.nzd ns3/*.nzd-lock
|
||||
rm -f ns3/inlineslave.db
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
$SHELL clean.sh
|
||||
|
||||
copy_setports ../common/controls.conf.in ns2/controls.conf
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
||||
copy_setports ns2/named01.conf.in ns2/named.conf
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
. ./clean.sh
|
||||
$SHELL clean.sh
|
||||
|
||||
test -r $RANDFILE || $GENRANDOM $RANDOMSIZE $RANDFILE
|
||||
|
||||
|
||||
@@ -283,7 +283,7 @@ sleep 3
|
||||
|
||||
echo_i "checking that expired RRSIGs from missing key are not deleted ($n)"
|
||||
ret=0
|
||||
missing=`sed 's/^K.*+007+0*\([0-9]\)/\1/' < missingzsk.key`
|
||||
missing=`keyfile_to_key_id \`cat missingzsk.key\``
|
||||
$JOURNALPRINT ns3/nozsk.example.db.jnl | \
|
||||
awk '{if ($1 == "del" && $5 == "RRSIG" && $12 == id) {exit 1}} END {exit 0}' id=$missing || ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -292,7 +292,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking that expired RRSIGs from inactive key are not deleted ($n)"
|
||||
ret=0
|
||||
inactive=`sed 's/^K.*+007+0*\([0-9]\)/\1/' < inactivezsk.key`
|
||||
inactive=`keyfile_to_key_id \`cat inactivezsk.key\``
|
||||
$JOURNALPRINT ns3/inaczsk.example.db.jnl | \
|
||||
awk '{if ($1 == "del" && $5 == "RRSIG" && $12 == id) {exit 1}} END {exit 0}' id=$inactive || ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -842,7 +842,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for unpublished key ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < unpub.key`
|
||||
id=`keyfile_to_key_id \`cat unpub.key\``
|
||||
$DIG $DIGOPTS +multi dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep '; key id = '"$id"'$' dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -851,7 +851,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for activated but unpublished key ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < activate-now-publish-1day.key`
|
||||
id=`keyfile_to_key_id \`cat activate-now-publish-1day.key\``
|
||||
$DIG $DIGOPTS +multi dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep '; key id = '"$id"'$' dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -860,7 +860,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking that standby key does not sign records ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < standby.key`
|
||||
id=`keyfile_to_key_id \`cat standby.key\``
|
||||
$DIG $DIGOPTS dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep 'RRSIG.*'" $id "'\. ' dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -869,7 +869,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking that deactivated key does not sign records ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < inact.key`
|
||||
id=`keyfile_to_key_id \`cat inact.key\``
|
||||
$DIG $DIGOPTS dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep 'RRSIG.*'" $id "'\. ' dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -878,7 +878,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking insertion of public-only key ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < nopriv.key`
|
||||
id=`keyfile_to_key_id \`cat nopriv.key\``
|
||||
file="ns1/`cat nopriv.key`.key"
|
||||
keydata=`grep DNSKEY $file`
|
||||
$NSUPDATE > /dev/null 2>&1 <<END || status=1
|
||||
@@ -897,7 +897,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking key deletion ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < del.key`
|
||||
id=`keyfile_to_key_id \`cat del.key\``
|
||||
$DIG $DIGOPTS +multi dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep '; key id = '"$id"'$' dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -978,9 +978,9 @@ rm -f $file
|
||||
echo_i "preparing ZSK roll"
|
||||
starttime=`$PERL -e 'print time(), "\n";'`
|
||||
oldfile=`cat active.key`
|
||||
oldid=`sed 's/^K.+007+0*\([0-9]\)/\1/' < active.key`
|
||||
oldid=`keyfile_to_key_id \`cat active.key\``
|
||||
newfile=`cat standby.key`
|
||||
newid=`sed 's/^K.+007+0*\([0-9]\)/\1/' < standby.key`
|
||||
newid=`keyfile_to_key_id \`cat standby.key\``
|
||||
$SETTIME -K ns1 -I now+2s -D now+25 $oldfile > /dev/null
|
||||
$SETTIME -K ns1 -i 0 -S $oldfile $newfile > /dev/null
|
||||
|
||||
@@ -998,7 +998,7 @@ $RNDCCMD 10.53.0.2 loadkeys bar. 2>&1 | sed 's/^/ns2 /' | cat_i
|
||||
echo_i "waiting for changes to take effect"
|
||||
sleep 5
|
||||
|
||||
echo_i "checking former standby key is now active ($n)"
|
||||
echo_i "checking former standby key $newid is now active ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep 'RRSIG.*'" $newid "'\. ' dig.out.ns1.test$n > /dev/null || ret=1
|
||||
@@ -1142,7 +1142,7 @@ status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking private key file removal caused no immediate harm ($n)"
|
||||
ret=0
|
||||
id=`sed 's/^K.+007+0*\([0-9]\)/\1/' < vanishing.key`
|
||||
id=`keyfile_to_key_id \`cat vanishing.key\``
|
||||
$DIG $DIGOPTS dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1
|
||||
grep 'RRSIG.*'" $id "'\. ' dig.out.ns1.test$n > /dev/null || ret=1
|
||||
n=`expr $n + 1`
|
||||
@@ -1173,7 +1173,7 @@ status=`expr $status + $ret`
|
||||
# event scheduled is within 10 seconds of expected interval.
|
||||
check_interval () {
|
||||
awk '/next key event/ {print $2 ":" $9}' $1/named.run |
|
||||
sed 's/\.//g' |
|
||||
sed -e 's/\.//g' -e 's/:0\{1,4\}/:/g' |
|
||||
awk -F: '
|
||||
{
|
||||
x = ($6+ $5*60000 + $4*3600000) - ($3+ $2*60000 + $1*3600000);
|
||||
@@ -1379,8 +1379,12 @@ for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
$DIG $DIGOPTS delzsk.example NSEC3PARAM @10.53.0.3 > dig.out.ns3.1.test$n 2>&1 || ret=1
|
||||
grep "NSEC3PARAM.*12345678" dig.out.ns3.1.test$n > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
_ret=0
|
||||
break
|
||||
$RNDCCMD 10.53.0.3 signing -list delzsk.example > signing.out.2.test$n 2>&1
|
||||
grep "Creating NSEC3 chain " signing.out.2.test$n > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
_ret=0
|
||||
break
|
||||
fi
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
@@ -1395,10 +1399,10 @@ $SETTIME -D now-1h $file > settime.out.test$n 2>&1 || ret=1
|
||||
$RNDCCMD 10.53.0.3 loadkeys delzsk.example 2>&1 | sed 's/^/ns3 /' | cat_i
|
||||
for i in 0 1 2 3 4 5 6 7 8 9; do
|
||||
_ret=1
|
||||
$RNDCCMD 10.53.0.3 signing -list delzsk.example > signing.out.2.test$n 2>&1
|
||||
grep "Signing " signing.out.2.test$n > /dev/null 2>&1
|
||||
$RNDCCMD 10.53.0.3 signing -list delzsk.example > signing.out.3.test$n 2>&1
|
||||
grep "Signing " signing.out.3.test$n > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
if [ `cat signing.out.2.test$n | wc -l` -eq 2 ]; then
|
||||
if [ `grep "Done signing " signing.out.3.test$n | wc -l` -eq 2 ]; then
|
||||
_ret=0
|
||||
break
|
||||
fi
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
rm -f dig.out.ns2
|
||||
rm -f dig.out.expire
|
||||
rm -f rndc.out.*
|
||||
rm -f sed.out.*
|
||||
rm -f */named.memstats
|
||||
rm -f */named.run
|
||||
|
||||
@@ -57,13 +57,7 @@ EOF
|
||||
}
|
||||
|
||||
dump_cache () {
|
||||
$RNDC $RNDCOPTS dumpdb -cache _default
|
||||
for i in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
grep '^; Dump complete$' ns2/named_dump.db > /dev/null && break
|
||||
sleep 1
|
||||
done
|
||||
mv ns2/named_dump.db ns2/named_dump.db.$n
|
||||
rndc_dumpdb ns2 -cache _default
|
||||
}
|
||||
|
||||
clear_cache () {
|
||||
@@ -98,7 +92,7 @@ echo_i "reset and check that records are correctly cached initially ($n)"
|
||||
ret=0
|
||||
load_cache
|
||||
dump_cache
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.$n | grep -v '^;' | egrep '(TXT|ANY)'| wc -l`
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.test$n | grep -v '^;' | egrep '(TXT|ANY)'| wc -l`
|
||||
[ $nrecords -eq 17 ] || { ret=1; echo_i "found $nrecords records expected 17"; }
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -108,7 +102,7 @@ echo_i "check flushing of the full cache ($n)"
|
||||
ret=0
|
||||
clear_cache
|
||||
dump_cache
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.$n | grep -v '^;' | wc -l`
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.test$n | grep -v '^;' | wc -l`
|
||||
[ $nrecords -eq 0 ] || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -192,7 +186,7 @@ n=`expr $n + 1`
|
||||
echo_i "check the number of cached records remaining ($n)"
|
||||
ret=0
|
||||
dump_cache
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.$n | grep -v '^;' | egrep '(TXT|ANY)' | wc -l`
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.test$n | grep -v '^;' | egrep '(TXT|ANY)' | wc -l`
|
||||
[ $nrecords -eq 17 ] || { ret=1; echo_i "found $nrecords records expected 17"; }
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -210,7 +204,7 @@ n=`expr $n + 1`
|
||||
echo_i "check the number of cached records remaining ($n)"
|
||||
ret=0
|
||||
dump_cache
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.$n | grep -v '^;' | egrep '(TXT|ANY)' | wc -l`
|
||||
nrecords=`grep flushtest.example ns2/named_dump.db.test$n | grep -v '^;' | egrep '(TXT|ANY)' | wc -l`
|
||||
[ $nrecords -eq 1 ] || { ret=1; echo_i "found $nrecords records expected 1"; }
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -220,17 +214,17 @@ echo_i "check flushtree clears adb correctly ($n)"
|
||||
ret=0
|
||||
load_cache
|
||||
dump_cache
|
||||
mv ns2/named_dump.db.$n ns2/named_dump.db.$n.a
|
||||
mv ns2/named_dump.db.test$n ns2/named_dump.db.test$n.a
|
||||
sed -n '/plain success\/timeout/,/Unassociated entries/p' \
|
||||
ns2/named_dump.db.$n.a > sed.out.$n.a
|
||||
ns2/named_dump.db.test$n.a > sed.out.$n.a
|
||||
grep 'plain success/timeout' sed.out.$n.a > /dev/null 2>&1 || ret=1
|
||||
grep 'Unassociated entries' sed.out.$n.a > /dev/null 2>&1 || ret=1
|
||||
grep 'ns.flushtest.example' sed.out.$n.a > /dev/null 2>&1 || ret=1
|
||||
$RNDC $RNDCOPTS flushtree flushtest.example || ret=1
|
||||
dump_cache
|
||||
mv ns2/named_dump.db.$n ns2/named_dump.db.$n.b
|
||||
mv ns2/named_dump.db.test$n ns2/named_dump.db.test$n.b
|
||||
sed -n '/plain success\/timeout/,/Unassociated entries/p' \
|
||||
ns2/named_dump.db.$n.b > sed.out.$n.b
|
||||
ns2/named_dump.db.test$n.b > sed.out.$n.b
|
||||
grep 'plain success/timeout' sed.out.$n.b > /dev/null 2>&1 || ret=1
|
||||
grep 'Unassociated entries' sed.out.$n.b > /dev/null 2>&1 || ret=1
|
||||
grep 'ns.flushtest.example' sed.out.$n.b > /dev/null 2>&1 && ret=1
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
${SHELL} clean.sh
|
||||
$SHELL clean.sh
|
||||
|
||||
cp -f ns1/dynamic.db.in ns1/dynamic.db
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
||||
copy_setports ns2/named.conf.in ns2/named.conf
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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 {
|
||||
dnssec-validation yes;
|
||||
};
|
||||
|
||||
managed-keys {
|
||||
example. initial-key 257 3 8 "AwEAAawvFp8GlBx8Qt6yaIqXkDe+nMkSk2HkTAG7qlVBo++AQwZ1j3Xl
|
||||
25IN4jsw0VTMbKUbafw9DYsVzztIwx1sNkKRLo6qP9SSkBL8RicQaafG
|
||||
tURtsYI3oqte5qqLve1CUpRD8J06Pg1xkOxsDlz9sQAyiQrOyvMbykJY
|
||||
kYrFYGLzYAgl/JtMyVVYlBl9pqxQuAPKYPOuO1axaad/wLN3+wTy/hcJ
|
||||
fpvJpqzXlDF9bI5RmpoX/7geZ06vpcYJEoT0xkkmPlEl0ZjEDrm/WIaS
|
||||
WG0/CEDpHcOXFz4OEczMVpY+lnuFfKybwF1WHFn2BwVEOS6cMM6ukIjI
|
||||
NQyrszHhWUU=";
|
||||
example. initial-key 257 3 8 "AwEAAZtP9+RAA+W33A97e+HnnH8WTXzCWiEICyWj1B6rvZ9hd50ysbod
|
||||
y0NLx7b3vZ1bzMLxLSRAr/n3Wi0TDZ1fvCKZhennfW8Wlc7ulCvHntSQ
|
||||
YfKHUP0YWEo84sQAqIi850N1aiddj6CidwFo9JNW/HQ+8yarfrnGMFhX
|
||||
2STtkE0hNJ/R6JYKmD2EH7k1nyqJd08ibrEt55DuV4BiUjyyERdVbsuw
|
||||
E60jVqAwCKyVBYXb2sI+zv1yPNDBIANd6KTgnq6YWzx5ZodQP3W4K7Z/
|
||||
Bk3EKmVCvrTKZK/ADLAKaL0/6DD07+1jXA4BiNyoZTLTapkudkGad+Rn
|
||||
6zqCkwuMmrU=";
|
||||
};
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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 {
|
||||
dnssec-validation yes;
|
||||
};
|
||||
|
||||
trusted-keys {
|
||||
example. 257 3 8 "AwEAAawvFp8GlBx8Qt6yaIqXkDe+nMkSk2HkTAG7qlVBo++AQwZ1j3Xl
|
||||
25IN4jsw0VTMbKUbafw9DYsVzztIwx1sNkKRLo6qP9SSkBL8RicQaafG
|
||||
tURtsYI3oqte5qqLve1CUpRD8J06Pg1xkOxsDlz9sQAyiQrOyvMbykJY
|
||||
kYrFYGLzYAgl/JtMyVVYlBl9pqxQuAPKYPOuO1axaad/wLN3+wTy/hcJ
|
||||
fpvJpqzXlDF9bI5RmpoX/7geZ06vpcYJEoT0xkkmPlEl0ZjEDrm/WIaS
|
||||
WG0/CEDpHcOXFz4OEczMVpY+lnuFfKybwF1WHFn2BwVEOS6cMM6ukIjI
|
||||
NQyrszHhWUU=";
|
||||
example. 257 3 8 "AwEAAZtP9+RAA+W33A97e+HnnH8WTXzCWiEICyWj1B6rvZ9hd50ysbod
|
||||
y0NLx7b3vZ1bzMLxLSRAr/n3Wi0TDZ1fvCKZhennfW8Wlc7ulCvHntSQ
|
||||
YfKHUP0YWEo84sQAqIi850N1aiddj6CidwFo9JNW/HQ+8yarfrnGMFhX
|
||||
2STtkE0hNJ/R6JYKmD2EH7k1nyqJd08ibrEt55DuV4BiUjyyERdVbsuw
|
||||
E60jVqAwCKyVBYXb2sI+zv1yPNDBIANd6KTgnq6YWzx5ZodQP3W4K7Z/
|
||||
Bk3EKmVCvrTKZK/ADLAKaL0/6DD07+1jXA4BiNyoZTLTapkudkGad+Rn
|
||||
6zqCkwuMmrU=";
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. "$SYSTEMTESTTOP/conf.sh"
|
||||
|
||||
$SHELL clean.sh
|
||||
@@ -16,7 +16,7 @@ n=0
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf handles a known good config ($n)"
|
||||
ret=0
|
||||
$CHECKCONF good.conf > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF good.conf > checkconf.out$n 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -25,7 +25,8 @@ echo_i "checking that named-checkconf prints a known good config ($n)"
|
||||
ret=0
|
||||
awk 'BEGIN { ok = 0; } /cut here/ { ok = 1; getline } ok == 1 { print }' good.conf > good.conf.in
|
||||
[ -s good.conf.in ] || ret=1
|
||||
$CHECKCONF -p good.conf.in | grep -v '^good.conf.in:' > good.conf.out 2>&1 || ret=1
|
||||
$CHECKCONF -p good.conf.in > checkconf.out$n || ret=1
|
||||
grep -v '^good.conf.in:' < checkconf.out$n > good.conf.out 2>&1 || ret=1
|
||||
cmp good.conf.in good.conf.out || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -36,7 +37,8 @@ ret=0
|
||||
# ensure there is a secret and that it is not the check string.
|
||||
grep 'secret "' good.conf.in > /dev/null || ret=1
|
||||
grep 'secret "????????????????"' good.conf.in > /dev/null 2>&1 && ret=1
|
||||
$CHECKCONF -p -x good.conf.in | grep -v '^good.conf.in:' > good.conf.out 2>&1 || ret=1
|
||||
$CHECKCONF -p -x good.conf.in > checkconf.out$n || ret=1
|
||||
grep -v '^good.conf.in:' < checkconf.out$n > good.conf.out 2>&1 || ret=1
|
||||
grep 'secret "????????????????"' good.conf.out > /dev/null 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -46,21 +48,21 @@ do
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf detects error in $bad ($n)"
|
||||
ret=0
|
||||
$CHECKCONF $bad > checkconf.out 2>&1
|
||||
$CHECKCONF $bad > checkconf.out$n 2>&1
|
||||
if [ $? != 1 ]; then ret=1; fi
|
||||
grep "^$bad:[0-9]*: " checkconf.out > /dev/null || ret=1
|
||||
grep "^$bad:[0-9]*: " < checkconf.out$n > /dev/null || ret=1
|
||||
case $bad in
|
||||
bad-update-policy[123].conf)
|
||||
pat="identity and name fields are not the same"
|
||||
grep "$pat" checkconf.out > /dev/null || ret=1
|
||||
grep "$pat" < checkconf.out$n > /dev/null || ret=1
|
||||
;;
|
||||
bad-update-policy[4589].conf|bad-update-policy1[01].conf)
|
||||
pat="name field not set to placeholder value"
|
||||
grep "$pat" checkconf.out > /dev/null || ret=1
|
||||
grep "$pat" < checkconf.out$n > /dev/null || ret=1
|
||||
;;
|
||||
bad-update-policy[67].conf|bad-update-policy1[2345].conf)
|
||||
pat="missing name field type '.*' found"
|
||||
grep "$pat" checkconf.out > /dev/null || ret=1
|
||||
grep "$pat" < checkconf.out$n > /dev/null || ret=1
|
||||
;;
|
||||
esac
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
@@ -72,7 +74,7 @@ do
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf detects no error in $good ($n)"
|
||||
ret=0
|
||||
$CHECKCONF $good > /dev/null 2>&1
|
||||
$CHECKCONF $good > checkconf.out$n 2>&1
|
||||
if [ $? != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
done
|
||||
@@ -88,14 +90,15 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf catches range errors ($n)"
|
||||
ret=0
|
||||
$CHECKCONF range.conf > /dev/null 2>&1 && ret=1
|
||||
$CHECKCONF range.conf > checkconf.out$n 2>&1 && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf warns of notify inconsistencies ($n)"
|
||||
ret=0
|
||||
warnings=`$CHECKCONF notify.conf 2>&1 | grep "'notify' is disabled" | wc -l`
|
||||
$CHECKCONF notify.conf > checkconf.out$n 2>&1
|
||||
warnings=`grep "'notify' is disabled" < checkconf.out$n | wc -l`
|
||||
[ $warnings -eq 3 ] || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -103,12 +106,17 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking named-checkconf dnssec warnings ($n)"
|
||||
ret=0
|
||||
$CHECKCONF dnssec.1 2>&1 | grep 'validation yes.*enable no' > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 2>&1 | grep 'auto-dnssec may only be ' > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 2>&1 | grep 'validation auto.*enable no' > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 2>&1 | grep 'validation yes.*enable no' > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.1 > checkconf.out$n.1 2>&1
|
||||
grep 'validation yes.*enable no' < checkconf.out$n.1 > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 > checkconf.out$n.2 2>&1
|
||||
grep 'auto-dnssec may only be ' < checkconf.out$n.2 > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 > checkconf.out$n.3 2>&1
|
||||
grep 'validation auto.*enable no' < checkconf.out$n.3 > /dev/null || ret=1
|
||||
$CHECKCONF dnssec.2 > checkconf.out$n.4 2>&1
|
||||
grep 'validation yes.*enable no' < checkconf.out$n.4 > /dev/null || ret=1
|
||||
# this one should have no warnings
|
||||
$CHECKCONF dnssec.3 2>&1 | grep '.*' && ret=1
|
||||
$CHECKCONF dnssec.3 > checkconf.out$n.5 2>&1
|
||||
grep '.*' < checkconf.out$n.5 > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -121,14 +129,14 @@ options {
|
||||
$field 0;
|
||||
};
|
||||
EOF
|
||||
$CHECKCONF badzero.conf > /dev/null 2>&1
|
||||
$CHECKCONF badzero.conf > checkconf.out$n.1 2>&1
|
||||
[ $? -eq 1 ] || { echo_i "options $field failed" ; ret=1; }
|
||||
cat > badzero.conf << EOF
|
||||
view dummy {
|
||||
$field 0;
|
||||
};
|
||||
EOF
|
||||
$CHECKCONF badzero.conf > /dev/null 2>&1
|
||||
$CHECKCONF badzero.conf > checkconf.out$n.2 2>&1
|
||||
[ $? -eq 1 ] || { echo_i "view $field failed" ; ret=1; }
|
||||
cat > badzero.conf << EOF
|
||||
options {
|
||||
@@ -137,7 +145,7 @@ options {
|
||||
view dummy {
|
||||
};
|
||||
EOF
|
||||
$CHECKCONF badzero.conf > /dev/null 2>&1
|
||||
$CHECKCONF badzero.conf > checkconf.out$n.3 2>&1
|
||||
[ $? -eq 1 ] || { echo_i "options + view $field failed" ; ret=1; }
|
||||
cat > badzero.conf << EOF
|
||||
zone dummy {
|
||||
@@ -146,7 +154,7 @@ zone dummy {
|
||||
$field 0;
|
||||
};
|
||||
EOF
|
||||
$CHECKCONF badzero.conf > /dev/null 2>&1
|
||||
$CHECKCONF badzero.conf > checkconf.out$n.4 2>&1
|
||||
[ $? -eq 1 ] || { echo_i "zone $field failed" ; ret=1; }
|
||||
done
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
@@ -155,22 +163,28 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking options allowed in inline-signing slaves ($n)"
|
||||
ret=0
|
||||
l=`$CHECKCONF bad-dnssec.conf 2>&1 | grep "dnssec-dnskey-kskonly.*requires inline" | wc -l`
|
||||
$CHECKCONF bad-dnssec.conf > checkconf.out$n.1 2>&1
|
||||
l=`grep "dnssec-dnskey-kskonly.*requires inline" < checkconf.out$n.1 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
l=`$CHECKCONF bad-dnssec.conf 2>&1 | grep "dnssec-loadkeys-interval.*requires inline" | wc -l`
|
||||
$CHECKCONF bad-dnssec.conf > checkconf.out$n.2 2>&1
|
||||
l=`grep "dnssec-loadkeys-interval.*requires inline" < checkconf.out$n.2 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
l=`$CHECKCONF bad-dnssec.conf 2>&1 | grep "update-check-ksk.*requires inline" | wc -l`
|
||||
$CHECKCONF bad-dnssec.conf > checkconf.out$n.3 2>&1
|
||||
l=`grep "update-check-ksk.*requires inline" < checkconf.out$n.3 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "check file + inline-signing for slave zones ($n)"
|
||||
l=`$CHECKCONF inline-no.conf 2>&1 | grep "missing 'file' entry" | wc -l`
|
||||
$CHECKCONF inline-no.conf > checkconf.out$n.1 2>&1
|
||||
l=`grep "missing 'file' entry" < checkconf.out$n.1 | wc -l`
|
||||
[ $l -eq 0 ] || ret=1
|
||||
l=`$CHECKCONF inline-good.conf 2>&1 | grep "missing 'file' entry" | wc -l`
|
||||
$CHECKCONF inline-good.conf > checkconf.out$n.2 2>&1
|
||||
l=`grep "missing 'file' entry" < checkconf.out$n.2 | wc -l`
|
||||
[ $l -eq 0 ] || ret=1
|
||||
l=`$CHECKCONF inline-bad.conf 2>&1 | grep "missing 'file' entry" | wc -l`
|
||||
$CHECKCONF inline-bad.conf > checkconf.out$n.3 2>&1
|
||||
l=`grep "missing 'file' entry" < checkconf.out$n.3 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -178,7 +192,8 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking named-checkconf DLZ warnings ($n)"
|
||||
ret=0
|
||||
$CHECKCONF dlz-bad.conf 2>&1 | grep "'dlz' and 'database'" > /dev/null || ret=1
|
||||
$CHECKCONF dlz-bad.conf > checkconf.out$n 2>&1
|
||||
grep "'dlz' and 'database'" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -186,17 +201,30 @@ n=`expr $n + 1`
|
||||
echo_i "checking for missing key directory warning ($n)"
|
||||
ret=0
|
||||
rm -rf test.keydir
|
||||
l=`$CHECKCONF warn-keydir.conf 2>&1 | grep "'test.keydir' does not exist" | wc -l`
|
||||
$CHECKCONF warn-keydir.conf > checkconf.out$n.1 2>&1
|
||||
l=`grep "'test.keydir' does not exist" < checkconf.out$n.1 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
touch test.keydir
|
||||
l=`$CHECKCONF warn-keydir.conf 2>&1 | grep "'test.keydir' is not a directory" | wc -l`
|
||||
$CHECKCONF warn-keydir.conf > checkconf.out$n.2 2>&1
|
||||
l=`grep "'test.keydir' is not a directory" < checkconf.out$n.2 | wc -l`
|
||||
[ $l -eq 1 ] || ret=1
|
||||
rm -f test.keydir
|
||||
mkdir test.keydir
|
||||
l=`$CHECKCONF warn-keydir.conf 2>&1 | grep "key-directory" | wc -l`
|
||||
$CHECKCONF warn-keydir.conf > checkconf.out$n.3 2>&1
|
||||
l=`grep "key-directory" < checkconf.out$n.3 | wc -l`
|
||||
[ $l -eq 0 ] || ret=1
|
||||
rm -rf test.keydir
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking for trusted-key/managed-key collision warning ($n)"
|
||||
ret=0
|
||||
$CHECKCONF warn-duplicate-key.conf 2>&1 | grep "ROLLOVERS WILL FAIL" > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF warn-duplicate-root-key.conf 2>&1 | grep "ROLLOVERS WILL FAIL" > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF warn-validation-auto-key.conf 2>&1 | grep "ROLLOVERS WILL FAIL" > /dev/null 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z catches conflicting ttl with max-ttl ($n)"
|
||||
@@ -211,49 +239,49 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z catches invalid max-ttl ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z max-ttl-bad.conf > /dev/null 2>&1 && ret=1
|
||||
$CHECKCONF -z max-ttl-bad.conf > checkconf.out$n 2>&1 && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z skips zone check with alternate databases ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z altdb.conf > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF -z altdb.conf > checkconf.out$n 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z skips zone check with DLZ ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z altdlz.conf > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF -z altdlz.conf > checkconf.out$n 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z fails on view with ANY class ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z view-class-any1.conf > /dev/null 2>&1 && ret=1
|
||||
$CHECKCONF -z view-class-any1.conf > checkconf.out$n 2>&1 && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z fails on view with CLASS255 class ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z view-class-any2.conf > /dev/null 2>&1 && ret=1
|
||||
$CHECKCONF -z view-class-any2.conf > checkconf.out$n 2>&1 && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z passes on view with IN class ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z view-class-in1.conf > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF -z view-class-in1.conf > checkconf.out$n 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf -z passes on view with CLASS1 class ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z view-class-in2.conf > /dev/null 2>&1 || ret=1
|
||||
$CHECKCONF -z view-class-in2.conf > checkconf.out$n 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -261,7 +289,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-names fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-names-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "near '_underscore': bad name (check-names)" checkconf.out$n > /dev/null || ret=1
|
||||
grep "near '_underscore': bad name (check-names)" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-names/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -270,7 +298,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-mx fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-mx-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "near '10.0.0.1': MX is an address" checkconf.out$n > /dev/null || ret=1
|
||||
grep "near '10.0.0.1': MX is an address" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-mx/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -279,7 +307,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-dup-records fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-dup-records-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "has semantically identical records" checkconf.out$n > /dev/null || ret=1
|
||||
grep "has semantically identical records" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-dup-records/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -288,7 +316,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-mx fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-mx-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "failed: MX is an address" checkconf.out$n > /dev/null || ret=1
|
||||
grep "failed: MX is an address" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-mx/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -297,7 +325,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-mx-cname fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-mx-cname-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "MX.* is a CNAME (illegal)" checkconf.out$n > /dev/null || ret=1
|
||||
grep "MX.* is a CNAME (illegal)" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-mx-cname/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -306,7 +334,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that check-srv-cname fails as configured ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -z check-srv-cname-fail.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "SRV.* is a CNAME (illegal)" checkconf.out$n > /dev/null || ret=1
|
||||
grep "SRV.* is a CNAME (illegal)" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "zone check-mx-cname/IN: loaded serial" < checkconf.out$n > /dev/null && ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
@@ -315,7 +343,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that named-checkconf -p properly print a port range ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -p portrange-good.conf > checkconf.out$n 2>&1 || ret=1
|
||||
grep "range 8610 8614;" checkconf.out$n > /dev/null || ret=1
|
||||
grep "range 8610 8614;" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -330,8 +358,8 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "check that named-checkconf prints max-cache-size <percentage> correctly ($n)"
|
||||
ret=0
|
||||
$CHECKCONF -p max-cache-size-good.conf > checkconf.out8 2>&1 || ret=1
|
||||
grep "max-cache-size 60%;" checkconf.out8 > /dev/null || ret=1
|
||||
$CHECKCONF -p max-cache-size-good.conf > checkconf.out$n 2>&1 || ret=1
|
||||
grep "max-cache-size 60%;" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -339,7 +367,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that 'dnssec-lookaside auto;' generates a warning ($n)"
|
||||
ret=0
|
||||
$CHECKCONF warn-dlv-auto.conf > checkconf.out$n 2>/dev/null || ret=1
|
||||
grep "dnssec-lookaside 'auto' is no longer supported" checkconf.out$n > /dev/null || ret=1
|
||||
grep "dnssec-lookaside 'auto' is no longer supported" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -347,7 +375,7 @@ n=`expr $n + 1`
|
||||
echo_i "check that 'dnssec-lookaside . trust-anchor dlv.isc.org;' generates a warning ($n)"
|
||||
ret=0
|
||||
$CHECKCONF warn-dlv-dlv.isc.org.conf > checkconf.out$n 2>/dev/null || ret=1
|
||||
grep "dlv.isc.org has been shut down" checkconf.out$n > /dev/null || ret=1
|
||||
grep "dlv.isc.org has been shut down" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -364,11 +392,12 @@ echo_i "check that the 2010 ICANN ROOT KSK without the 2017 ICANN ROOT KSK gener
|
||||
ret=0
|
||||
$CHECKCONF check-root-ksk-2010.conf > checkconf.out$n 2>/dev/null || ret=1
|
||||
[ -s checkconf.out$n ] || ret=1
|
||||
grep "trusted-key for root from 2010 without updated" checkconf.out$n > /dev/null || ret=1
|
||||
grep "trusted-key for root from 2010 without updated" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "check that the 2010 ICANN ROOT KSK with the 2017 ICANN ROOT KSK does not warning ($n)"
|
||||
n=`expr $n + 1`
|
||||
echo_i "check that the 2010 ICANN ROOT KSK with the 2017 ICANN ROOT KSK does not generate a warning ($n)"
|
||||
ret=0
|
||||
$CHECKCONF check-root-ksk-both.conf > checkconf.out$n 2>/dev/null || ret=1
|
||||
[ -s checkconf.out$n ] && ret=1
|
||||
@@ -386,7 +415,7 @@ echo_i "check that the dlv.isc.org KSK generates a warning ($n)"
|
||||
ret=0
|
||||
$CHECKCONF check-dlv-ksk-key.conf > checkconf.out$n 2>/dev/null || ret=1
|
||||
[ -s checkconf.out$n ] || ret=1
|
||||
grep "trusted-key for dlv.isc.org still present" checkconf.out$n > /dev/null || ret=1
|
||||
grep "trusted-key for dlv.isc.org still present" < checkconf.out$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
options {
|
||||
dnssec-validation yes;
|
||||
};
|
||||
|
||||
managed-keys {
|
||||
example. initial-key 257 3 8 "AwEAAawvFp8GlBx8Qt6yaIqXkDe+nMkSk2HkTAG7qlVBo++AQwZ1j3Xl
|
||||
25IN4jsw0VTMbKUbafw9DYsVzztIwx1sNkKRLo6qP9SSkBL8RicQaafG
|
||||
tURtsYI3oqte5qqLve1CUpRD8J06Pg1xkOxsDlz9sQAyiQrOyvMbykJY
|
||||
kYrFYGLzYAgl/JtMyVVYlBl9pqxQuAPKYPOuO1axaad/wLN3+wTy/hcJ
|
||||
fpvJpqzXlDF9bI5RmpoX/7geZ06vpcYJEoT0xkkmPlEl0ZjEDrm/WIaS
|
||||
WG0/CEDpHcOXFz4OEczMVpY+lnuFfKybwF1WHFn2BwVEOS6cMM6ukIjI
|
||||
NQyrszHhWUU=";
|
||||
};
|
||||
|
||||
trusted-keys {
|
||||
example. 257 3 8 "AwEAAZtP9+RAA+W33A97e+HnnH8WTXzCWiEICyWj1B6rvZ9hd50ysbod
|
||||
y0NLx7b3vZ1bzMLxLSRAr/n3Wi0TDZ1fvCKZhennfW8Wlc7ulCvHntSQ
|
||||
YfKHUP0YWEo84sQAqIi850N1aiddj6CidwFo9JNW/HQ+8yarfrnGMFhX
|
||||
2STtkE0hNJ/R6JYKmD2EH7k1nyqJd08ibrEt55DuV4BiUjyyERdVbsuw
|
||||
E60jVqAwCKyVBYXb2sI+zv1yPNDBIANd6KTgnq6YWzx5ZodQP3W4K7Z/
|
||||
Bk3EKmVCvrTKZK/ADLAKaL0/6DD07+1jXA4BiNyoZTLTapkudkGad+Rn
|
||||
6zqCkwuMmrU=";
|
||||
};
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
options {
|
||||
dnssec-validation yes;
|
||||
};
|
||||
|
||||
managed-keys {
|
||||
. initial-key 257 3 8 "AwEAAawvFp8GlBx8Qt6yaIqXkDe+nMkSk2HkTAG7qlVBo++AQwZ1j3Xl
|
||||
25IN4jsw0VTMbKUbafw9DYsVzztIwx1sNkKRLo6qP9SSkBL8RicQaafG
|
||||
tURtsYI3oqte5qqLve1CUpRD8J06Pg1xkOxsDlz9sQAyiQrOyvMbykJY
|
||||
kYrFYGLzYAgl/JtMyVVYlBl9pqxQuAPKYPOuO1axaad/wLN3+wTy/hcJ
|
||||
fpvJpqzXlDF9bI5RmpoX/7geZ06vpcYJEoT0xkkmPlEl0ZjEDrm/WIaS
|
||||
WG0/CEDpHcOXFz4OEczMVpY+lnuFfKybwF1WHFn2BwVEOS6cMM6ukIjI
|
||||
NQyrszHhWUU=";
|
||||
};
|
||||
|
||||
trusted-keys {
|
||||
. 257 3 8 "AwEAAZtP9+RAA+W33A97e+HnnH8WTXzCWiEICyWj1B6rvZ9hd50ysbod
|
||||
y0NLx7b3vZ1bzMLxLSRAr/n3Wi0TDZ1fvCKZhennfW8Wlc7ulCvHntSQ
|
||||
YfKHUP0YWEo84sQAqIi850N1aiddj6CidwFo9JNW/HQ+8yarfrnGMFhX
|
||||
2STtkE0hNJ/R6JYKmD2EH7k1nyqJd08ibrEt55DuV4BiUjyyERdVbsuw
|
||||
E60jVqAwCKyVBYXb2sI+zv1yPNDBIANd6KTgnq6YWzx5ZodQP3W4K7Z/
|
||||
Bk3EKmVCvrTKZK/ADLAKaL0/6DD07+1jXA4BiNyoZTLTapkudkGad+Rn
|
||||
6zqCkwuMmrU=";
|
||||
};
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* 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 {
|
||||
dnssec-validation auto;
|
||||
};
|
||||
|
||||
trusted-keys {
|
||||
. 257 3 8 "AwEAAZtP9+RAA+W33A97e+HnnH8WTXzCWiEICyWj1B6rvZ9hd50ysbod
|
||||
y0NLx7b3vZ1bzMLxLSRAr/n3Wi0TDZ1fvCKZhennfW8Wlc7ulCvHntSQ
|
||||
YfKHUP0YWEo84sQAqIi850N1aiddj6CidwFo9JNW/HQ+8yarfrnGMFhX
|
||||
2STtkE0hNJ/R6JYKmD2EH7k1nyqJd08ibrEt55DuV4BiUjyyERdVbsuw
|
||||
E60jVqAwCKyVBYXb2sI+zv1yPNDBIANd6KTgnq6YWzx5ZodQP3W4K7Z/
|
||||
Bk3EKmVCvrTKZK/ADLAKaL0/6DD07+1jXA4BiNyoZTLTapkudkGad+Rn
|
||||
6zqCkwuMmrU=";
|
||||
};
|
||||
@@ -10,7 +10,8 @@
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
rm -f named-compilezone
|
||||
$SHELL clean.sh
|
||||
|
||||
ln -s $CHECKZONE named-compilezone
|
||||
|
||||
./named-compilezone -D -F raw -o good1.db.raw example \
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
; 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.
|
||||
|
||||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
example. 0 CDNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTXXXX WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
@@ -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.
|
||||
|
||||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
; Actual CDS
|
||||
; example. 0 CDS 14364 10 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0C
|
||||
example. 0 CDS 14364 10 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0B
|
||||
@@ -0,0 +1,13 @@
|
||||
; 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.
|
||||
|
||||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
example. 0 CDNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
@@ -0,0 +1,13 @@
|
||||
; 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.
|
||||
|
||||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
example. 0 CDS 14364 10 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0C
|
||||
+100
-35
@@ -27,6 +27,13 @@ ALTERNATIVE_ALGORITHM=RSASHA1
|
||||
ALTERNATIVE_ALGORITHM_NUMBER=5
|
||||
ALTERNATIVE_BITS=1280
|
||||
|
||||
# This is an algorithm that is used for tests against the
|
||||
# "disable-algorithms" configuration option. Must be different from above
|
||||
# algorithms.
|
||||
DISABLED_ALGORITHM=ECDSAP384SHA384
|
||||
DISABLED_ALGORITHM_NUMBER=14
|
||||
DISABLED_BITS=384
|
||||
|
||||
NAMED=$TOP/bin/named/named
|
||||
# We must use "named -l" instead of "lwresd" because argv[0] is lost
|
||||
# if the program is libtoolized.
|
||||
@@ -97,31 +104,32 @@ SEQUENTIALDIRS="ecdsa eddsa gost lwresd @PKCS11_TEST@ tkey"
|
||||
# and 9953). Because separate blocks of ports can be used for teach
|
||||
# test, these tests can be run in parallel.
|
||||
#
|
||||
# This symbol must be kept in step with the PARALLEL macro in Makefile.in
|
||||
PARALLELDIRS="acl additional addzone allow-query autosign \
|
||||
# Note: some of the longer-running tests are scheduled first,
|
||||
# in order to get more benefit from parallelism.
|
||||
PARALLELDIRS="dnssec rpzrecurse \
|
||||
acl additional addzone allow-query autosign \
|
||||
builtin cacheclean case catz chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr \
|
||||
legacy limits logfileconfig lwresd \
|
||||
masterfile masterformat metadata mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
pending pipelined \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub \
|
||||
tcp tools tsig tsiggss \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks"
|
||||
geoip geoip2 glue idna inline integrity ixfr \
|
||||
legacy limits logfileconfig \
|
||||
masterfile masterformat metadata mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
pending pipelined \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub \
|
||||
tcp tsig tsiggss \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks"
|
||||
|
||||
SUBDIRS="$SEQUENTIALDIRS $PARALLELDIRS"
|
||||
|
||||
|
||||
# Things that are different on Windows
|
||||
KILL=kill
|
||||
DIFF=diff
|
||||
@@ -138,6 +146,9 @@ CURL=@CURL@
|
||||
# XMLLINT will be empty if no program was found by configure
|
||||
XMLLINT=@XMLLINT@
|
||||
|
||||
# XSLTPROC will be empty if no program was found by configure
|
||||
XSLTPROC=@XSLTPROC@
|
||||
|
||||
# PERL will be an empty string if no perl interpreter was found.
|
||||
PERL=@PERL@
|
||||
|
||||
@@ -154,9 +165,9 @@ else
|
||||
fi
|
||||
|
||||
if grep "^#define WANT_IPV6 1" $TOP/config.h > /dev/null 2>&1 ; then
|
||||
TESTSOCK6="$TESTSOCK6"
|
||||
TESTSOCK6="$TESTSOCK6"
|
||||
else
|
||||
TESTSOCK6=false
|
||||
TESTSOCK6=false
|
||||
fi
|
||||
|
||||
# Windows process management leave empty
|
||||
@@ -292,13 +303,13 @@ keyfile_to_keys_section() {
|
||||
shift
|
||||
echo "$section_name {"
|
||||
for keyname in $*; do
|
||||
awk '!/^; /{
|
||||
printf "\t\""$1"\" "
|
||||
printf "'"$key_prefix"'"
|
||||
printf $4 " " $5 " " $6 " \""
|
||||
for (i=7; i<=NF; i++) printf $i
|
||||
printf "\";\n"
|
||||
}' $keyname.key
|
||||
awk '!/^; /{
|
||||
printf "\t\""$1"\" "
|
||||
printf "'"$key_prefix"'"
|
||||
printf $4 " " $5 " " $6 " \""
|
||||
for (i=7; i<=NF; i++) printf $i
|
||||
printf "\";\n"
|
||||
}' $keyname.key
|
||||
done
|
||||
echo "};"
|
||||
}
|
||||
@@ -317,13 +328,64 @@ keyfile_to_managed_keys() {
|
||||
keyfile_to_keys_section "managed-keys" "initial-key " $*
|
||||
}
|
||||
|
||||
# keyfile_to_key_id: convert a key file name to a key ID
|
||||
#
|
||||
# For a given key file name (e.g. "Kexample.+013+06160") provided as $1,
|
||||
# print the key ID with leading zeros stripped ("6160" for the
|
||||
# aforementioned example).
|
||||
keyfile_to_key_id() {
|
||||
echo "$1" | sed "s/.*+0\{0,4\}//"
|
||||
}
|
||||
|
||||
# nextpart: read everything that's been appended to a file since the
|
||||
# last time 'nextpart' was called.
|
||||
nextpart () {
|
||||
[ -f $1.prev ] || echo "0" > $1.prev
|
||||
prev=`cat $1.prev`
|
||||
awk "NR > $prev "'{ print }
|
||||
END { print NR > "/dev/stderr" }' $1 2> $1.prev
|
||||
END { print NR > "/dev/stderr" }' $1 2> $1.prev
|
||||
}
|
||||
|
||||
# rndc_dumpdb: call "rndc dumpdb [...]" and wait until it completes
|
||||
#
|
||||
# The first argument is the name server instance to send the command to, in the
|
||||
# form of "nsX" (where "X" is the instance number), e.g. "ns5". The remaining
|
||||
# arguments, if any, are appended to the rndc command line after "dumpdb".
|
||||
#
|
||||
# Control channel configuration for the name server instance to send the
|
||||
# command to must match the contents of bin/tests/system/common/rndc.conf.
|
||||
#
|
||||
# rndc output is stored in a file called rndc.out.test${n}; the "n" variable is
|
||||
# required to be set by the calling tests.sh script.
|
||||
#
|
||||
# Return 0 if the dump completes successfully; return 1 if rndc returns an exit
|
||||
# code other than 0 or if the "; Dump complete" string does not appear in the
|
||||
# dump within 10 seconds.
|
||||
rndc_dumpdb() {
|
||||
__ret=0
|
||||
__dump_complete=0
|
||||
__server="${1}"
|
||||
__ip="10.53.0.`echo "${__server}" | tr -c -d "0-9"`"
|
||||
|
||||
shift
|
||||
${RNDC} -c ../common/rndc.conf -p "${CONTROLPORT}" -s "${__ip}" dumpdb "$@" > "rndc.out.test${n}" 2>&1 || __ret=1
|
||||
|
||||
for _ in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
if grep '^; Dump complete$' "${__server}/named_dump.db" > /dev/null; then
|
||||
mv "${__server}/named_dump.db" "${__server}/named_dump.db.test${n}"
|
||||
__dump_complete=1
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if [ ${__dump_complete} -eq 0 ]; then
|
||||
echo_i "timed out waiting for 'rndc dumpdb' to finish"
|
||||
__ret=1
|
||||
fi
|
||||
|
||||
return ${__ret}
|
||||
}
|
||||
|
||||
# copy_setports - Copy Configuration File and Replace Ports
|
||||
@@ -338,21 +400,24 @@ nextpart () {
|
||||
|
||||
copy_setports() {
|
||||
sed -e "s/@PORT@/${PORT}/g" \
|
||||
-e "s/@EXTRAPORT1@/${EXTRAPORT1}/g" \
|
||||
-e "s/@EXTRAPORT2@/${EXTRAPORT2}/g" \
|
||||
-e "s/@EXTRAPORT3@/${EXTRAPORT3}/g" \
|
||||
-e "s/@EXTRAPORT4@/${EXTRAPORT4}/g" \
|
||||
-e "s/@EXTRAPORT5@/${EXTRAPORT5}/g" \
|
||||
-e "s/@EXTRAPORT6@/${EXTRAPORT6}/g" \
|
||||
-e "s/@EXTRAPORT7@/${EXTRAPORT7}/g" \
|
||||
-e "s/@EXTRAPORT8@/${EXTRAPORT8}/g" \
|
||||
-e "s/@CONTROLPORT@/${CONTROLPORT}/g" \
|
||||
-e "s/@EXTRAPORT1@/${EXTRAPORT1}/g" \
|
||||
-e "s/@EXTRAPORT2@/${EXTRAPORT2}/g" \
|
||||
-e "s/@EXTRAPORT3@/${EXTRAPORT3}/g" \
|
||||
-e "s/@EXTRAPORT4@/${EXTRAPORT4}/g" \
|
||||
-e "s/@EXTRAPORT5@/${EXTRAPORT5}/g" \
|
||||
-e "s/@EXTRAPORT6@/${EXTRAPORT6}/g" \
|
||||
-e "s/@EXTRAPORT7@/${EXTRAPORT7}/g" \
|
||||
-e "s/@EXTRAPORT8@/${EXTRAPORT8}/g" \
|
||||
-e "s/@CONTROLPORT@/${CONTROLPORT}/g" \
|
||||
-e "s/@DEFAULT_ALGORITHM@/${DEFAULT_ALGORITHM}/g" \
|
||||
-e "s/@DEFAULT_ALGORITHM_NUMBER@/${DEFAULT_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/@DEFAULT_BITS@/${DEFAULT_BITS}/g" \
|
||||
-e "s/@ALTERNATIVE_ALGORITHM@/${ALTERNATIVE_ALGORITHM}/g" \
|
||||
-e "s/@ALTERNATIVE_ALGORITHM_NUMBER@/${ALTERNATIVE_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/@ALTERNATIVE_BITS@/${ALTERNATIVE_BITS}/g" \
|
||||
-e "s/@DISABLED_ALGORITHM@/${DISABLED_ALGORITHM}/g" \
|
||||
-e "s/@DISABLED_ALGORITHM_NUMBER@/${DISABLED_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/@DISABLED_BITS@/${DISABLED_BITS}/g" \
|
||||
$1 > $2
|
||||
}
|
||||
|
||||
|
||||
+101
-41
@@ -36,6 +36,13 @@ ALTERNATIVE_ALGORITHM=RSASHA1
|
||||
ALTERNATIVE_ALGORITHM_NUMBER=5
|
||||
ALTERNATIVE_BITS=1280
|
||||
|
||||
# This is an algorithm that is used for tests against the
|
||||
# "disable-algorithms" configuration option. Must be different from above
|
||||
# algorithms.
|
||||
DISABLED_ALGORITHM=ECDSAP384SHA384
|
||||
DISABLED_ALGORITHM_NUMBER=14
|
||||
DISABLED_BITS=384
|
||||
|
||||
ARPANAME=$TOP/Build/$VSCONF/arpaname@EXEEXT@
|
||||
CHECKCONF=$TOP/Build/$VSCONF/named-checkconf@EXEEXT@
|
||||
CHECKDS="$PYTHON `cygpath -w $TOP/bin/python/dnssec-checkds.py`"
|
||||
@@ -109,31 +116,30 @@ SEQUENTIALDIRS="ecdsa eddsa gost lwresd @PKCS11_TEST@ tkey"
|
||||
# List of tests that use unique ports (other than 5300 and 9953). These
|
||||
# tests can be run in parallel.
|
||||
#
|
||||
# XXX: Note that tests are not currently run in parallel on Windows, so it
|
||||
# isn't strictly necessary to maintain these as separate lists in this file,
|
||||
# but using the same variable names as in conf.sh.in may simplify keeping the
|
||||
# lists in sync.
|
||||
# Note: some of the longer-running tests are scheduled first, in
|
||||
# order to get more benefit from parallelism.
|
||||
#
|
||||
# XXX: removed logfileconfig as it doesn't currently work on windows.
|
||||
PARALLELDIRS="acl additional addzone allow-query autosign \
|
||||
PARALLELDIRS="dnssec rpzrecurse \
|
||||
acl additional addzone allow-query autosign \
|
||||
builtin cacheclean case catz chain \
|
||||
checkconf checknames checkzone \
|
||||
@CHECKDS@ @COVERAGE@ @KEYMGR@ \
|
||||
cookie database digdelv dlv dlz dlzexternal \
|
||||
dns64 dnssec @DNSTAP@ dscp dsdigest dyndb \
|
||||
dns64 @DNSTAP@ dscp dsdigest dyndb \
|
||||
ednscompliance emptyzones \
|
||||
fetchlimit filter-aaaa formerr forward \
|
||||
geoip glue idna inline integrity ixfr \
|
||||
geoip geoip2 glue idna inline integrity ixfr \
|
||||
legacy limits lwresd masterfile masterformat metadata mkeys \
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
pending pipelined \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz rpzrecurse \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub \
|
||||
tcp tools tsig tsiggss \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks"
|
||||
names notify nslookup nsupdate nzd2nzf \
|
||||
pending pipelined \
|
||||
reclimit redirect resolver rndc rootkeysentinel rpz \
|
||||
rrchecker rrl rrsetorder rsabigexponent runtime \
|
||||
sfcache smartsign sortlist \
|
||||
spf staticstub statistics statschannel stub \
|
||||
tcp tsig tsiggss \
|
||||
unknown upforwd verify views wildcard \
|
||||
xfer xferquota zero zonechecks"
|
||||
|
||||
SUBDIRS="$SEQUENTIALDIRS $PARALLELDIRS"
|
||||
|
||||
@@ -164,9 +170,9 @@ else
|
||||
fi
|
||||
|
||||
if grep "^#define WANT_IPV6 1" $TOP/config.h > /dev/null 2>&1 ; then
|
||||
TESTSOCK6="$TESTSOCK6"
|
||||
TESTSOCK6="$TESTSOCK6"
|
||||
else
|
||||
TESTSOCK6=false
|
||||
TESTSOCK6=false
|
||||
fi
|
||||
|
||||
#
|
||||
@@ -210,22 +216,22 @@ else
|
||||
fi
|
||||
|
||||
echofail () {
|
||||
printf "${COLOR_FAIL}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_FAIL}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
echowarn () {
|
||||
printf "${COLOR_WARN}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_WARN}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
echopass () {
|
||||
printf "${COLOR_PASS}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_PASS}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
echoinfo () {
|
||||
printf "${COLOR_INFO}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_INFO}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
echostart () {
|
||||
printf "${COLOR_START}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_START}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
echoend () {
|
||||
printf "${COLOR_END}%s${COLOR_NONE}\n" "$*"
|
||||
printf "${COLOR_END}%s${COLOR_NONE}\n" "$*"
|
||||
}
|
||||
|
||||
SYSTESTDIR="`basename $PWD`"
|
||||
@@ -269,13 +275,13 @@ keyfile_to_keys_section() {
|
||||
shift
|
||||
echo "$section_name {"
|
||||
for keyname in $*; do
|
||||
awk '!/^; /{
|
||||
printf "\t\""$1"\" "
|
||||
printf "'"$key_prefix"'"
|
||||
printf $4 " " $5 " " $6 " \""
|
||||
for (i=7; i<=NF; i++) printf $i
|
||||
printf "\";\n"
|
||||
}' $keyname.key
|
||||
awk '!/^; /{
|
||||
printf "\t\""$1"\" "
|
||||
printf "'"$key_prefix"'"
|
||||
printf $4 " " $5 " " $6 " \""
|
||||
for (i=7; i<=NF; i++) printf $i
|
||||
printf "\";\n"
|
||||
}' $keyname.key
|
||||
done
|
||||
echo "};"
|
||||
}
|
||||
@@ -294,13 +300,64 @@ keyfile_to_managed_keys() {
|
||||
keyfile_to_keys_section "managed-keys" "initial-key " $*
|
||||
}
|
||||
|
||||
# keyfile_to_key_id: convert a key file name to a key ID
|
||||
#
|
||||
# For a given key file name (e.g. "Kexample.+013+06160") provided as $1,
|
||||
# print the key ID with leading zeros stripped ("6160" for the
|
||||
# aforementioned example).
|
||||
keyfile_to_key_id() {
|
||||
echo "$1" | sed "s/.*+0\{0,4\}//"
|
||||
}
|
||||
|
||||
# nextpart: read everything that's been appended to a file since the
|
||||
# last time 'nextpart' was called.
|
||||
nextpart () {
|
||||
[ -f $1.prev ] || echo "0" > $1.prev
|
||||
prev=`cat $1.prev`
|
||||
awk "NR > $prev "'{ print }
|
||||
END { print NR > "/dev/stderr" }' $1 2> $1.prev
|
||||
END { print NR > "/dev/stderr" }' $1 2> $1.prev
|
||||
}
|
||||
|
||||
# rndc_dumpdb: call "rndc dumpdb [...]" and wait until it completes
|
||||
#
|
||||
# The first argument is the name server instance to send the command to, in the
|
||||
# form of "nsX" (where "X" is the instance number), e.g. "ns5". The remaining
|
||||
# arguments, if any, are appended to the rndc command line after "dumpdb".
|
||||
#
|
||||
# Control channel configuration for the name server instance to send the
|
||||
# command to must match the contents of bin/tests/system/common/rndc.conf.
|
||||
#
|
||||
# rndc output is stored in a file called rndc.out.test${n}; the "n" variable is
|
||||
# required to be set by the calling tests.sh script.
|
||||
#
|
||||
# Return 0 if the dump completes successfully; return 1 if rndc returns an exit
|
||||
# code other than 0 or if the "; Dump complete" string does not appear in the
|
||||
# dump within 10 seconds.
|
||||
rndc_dumpdb() {
|
||||
__ret=0
|
||||
__dump_complete=0
|
||||
__server="${1}"
|
||||
__ip="10.53.0.`echo "${__server}" | tr -c -d "0-9"`"
|
||||
|
||||
shift
|
||||
${RNDC} -c ../common/rndc.conf -p "${CONTROLPORT}" -s "${__ip}" dumpdb "$@" > "rndc.out.test${n}" 2>&1 || __ret=1
|
||||
|
||||
for _ in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
if grep '^; Dump complete$' "${__server}/named_dump.db" > /dev/null; then
|
||||
mv "${__server}/named_dump.db" "${__server}/named_dump.db.test${n}"
|
||||
__dump_complete=1
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
if [ ${__dump_complete} -eq 0 ]; then
|
||||
echo_i "timed out waiting for 'rndc dumpdb' to finish"
|
||||
__ret=1
|
||||
fi
|
||||
|
||||
return ${__ret}
|
||||
}
|
||||
|
||||
# copy_setports - Copy Configuration File and Replace Ports
|
||||
@@ -321,21 +378,24 @@ copy_setports() {
|
||||
# tokens when it processes this file and produces conf.sh.
|
||||
atsign="@"
|
||||
sed -e "s/${atsign}PORT${atsign}/${PORT}/g" \
|
||||
-e "s/${atsign}EXTRAPORT1${atsign}/${EXTRAPORT1}/g" \
|
||||
-e "s/${atsign}EXTRAPORT2${atsign}/${EXTRAPORT2}/g" \
|
||||
-e "s/${atsign}EXTRAPORT3${atsign}/${EXTRAPORT3}/g" \
|
||||
-e "s/${atsign}EXTRAPORT4${atsign}/${EXTRAPORT4}/g" \
|
||||
-e "s/${atsign}EXTRAPORT5${atsign}/${EXTRAPORT5}/g" \
|
||||
-e "s/${atsign}EXTRAPORT6${atsign}/${EXTRAPORT6}/g" \
|
||||
-e "s/${atsign}EXTRAPORT7${atsign}/${EXTRAPORT7}/g" \
|
||||
-e "s/${atsign}EXTRAPORT8${atsign}/${EXTRAPORT8}/g" \
|
||||
-e "s/${atsign}CONTROLPORT${atsign}/${CONTROLPORT}/g" \
|
||||
-e "s/${atsign}EXTRAPORT1${atsign}/${EXTRAPORT1}/g" \
|
||||
-e "s/${atsign}EXTRAPORT2${atsign}/${EXTRAPORT2}/g" \
|
||||
-e "s/${atsign}EXTRAPORT3${atsign}/${EXTRAPORT3}/g" \
|
||||
-e "s/${atsign}EXTRAPORT4${atsign}/${EXTRAPORT4}/g" \
|
||||
-e "s/${atsign}EXTRAPORT5${atsign}/${EXTRAPORT5}/g" \
|
||||
-e "s/${atsign}EXTRAPORT6${atsign}/${EXTRAPORT6}/g" \
|
||||
-e "s/${atsign}EXTRAPORT7${atsign}/${EXTRAPORT7}/g" \
|
||||
-e "s/${atsign}EXTRAPORT8${atsign}/${EXTRAPORT8}/g" \
|
||||
-e "s/${atsign}CONTROLPORT${atsign}/${CONTROLPORT}/g" \
|
||||
-e "s/${atsign}DEFAULT_ALGORITHM${atsign}/${DEFAULT_ALGORITHM}/g" \
|
||||
-e "s/${atsign}DEFAULT_ALGORITHM_NUMBER${atsign}/${DEFAULT_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/${atsign}DEFAULT_BITS${atsign}/${DEFAULT_BITS}/g" \
|
||||
-e "s/${atsign}ALTERNATIVE_ALGORITHM${atsign}/${ALTERNATIVE_ALGORITHM}/g" \
|
||||
-e "s/${atsign}ALTERNATIVE_ALGORITHM_NUMBER${atsign}/${ALTERNATIVE_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/${atsign}ALTERNATIVE_BITS${atsign}/${ALTERNATIVE_BITS}/g" \
|
||||
-e "s/${atsign}DISABLED_ALGORITHM${atsign}/${DISABLED_ALGORITHM}/g" \
|
||||
-e "s/${atsign}DISABLED_ALGORITHM_NUMBER${atsign}/${DISABLED_ALGORITHM_NUMBER}/g" \
|
||||
-e "s/${atsign}DISABLED_BITS${atsign}/${DISABLED_BITS}/g" \
|
||||
$1 > $2
|
||||
}
|
||||
|
||||
|
||||
+4
-13
@@ -9,16 +9,7 @@
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/* */
|
||||
#ifndef GENERIC_UNSPEC_103_H
|
||||
#define GENERIC_UNSPEC_103_H 1
|
||||
|
||||
|
||||
typedef struct dns_rdata_unspec_t {
|
||||
dns_rdatacommon_t common;
|
||||
isc_mem_t *mctx;
|
||||
unsigned char *data;
|
||||
uint16_t datalen;
|
||||
} dns_rdata_unspec_t;
|
||||
|
||||
#endif /* GENERIC_UNSPEC_103_H */
|
||||
options {
|
||||
cookie-algorithm aes;
|
||||
cookie-secret "ebc7701beabb4a40c57d140eeb6733faaa"; // 136 bits
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
options {
|
||||
cookie-algorithm siphash24;
|
||||
cookie-secret "ebc7701beabb4a40c57d140eeb6733faaabbccdd"; // 160 bits
|
||||
};
|
||||
@@ -9,7 +9,10 @@
|
||||
|
||||
rm -f ns*/named.conf
|
||||
rm -f dig.out.*
|
||||
rm -f ns1/named_dump.db
|
||||
rm -f rndc.out.*
|
||||
rm -f ns1/named_dump.db*
|
||||
rm -f ns*/named.memstats
|
||||
rm -f ns*/named.run
|
||||
rm -f ns*/named.lock
|
||||
rm -f ./good-cookie-aes.conf
|
||||
rm -f ./bad-cookie-badaes.conf
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
options {
|
||||
cookie-algorithm aes;
|
||||
cookie-secret "ebc7701beabb4a40c57d140eeb6733fa"; // 128 bits
|
||||
};
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
options {
|
||||
cookie-algorithm siphash24;
|
||||
cookie-secret "ebc7701beabb4a40c57d140eeb6733fa"; // 128 bits
|
||||
};
|
||||
@@ -27,8 +27,8 @@ options {
|
||||
listen-on { 10.53.0.4; };
|
||||
listen-on-v6 { none; };
|
||||
recursion yes;
|
||||
cookie-algorithm sha1;
|
||||
cookie-secret "569d36a6cc27d6bf55502183302ba352745255a2";
|
||||
cookie-algorithm siphash24;
|
||||
cookie-secret "569d36a6cc27d6bf55502183302ba352";
|
||||
require-server-cookie yes;
|
||||
};
|
||||
|
||||
|
||||
@@ -27,9 +27,9 @@ options {
|
||||
listen-on { 10.53.0.5; };
|
||||
listen-on-v6 { none; };
|
||||
recursion yes;
|
||||
cookie-algorithm sha1;
|
||||
cookie-secret "569d36a6cc27d6bf55502183302ba352745255a2";
|
||||
cookie-secret "6b300e27a0db46d4b046e4189790fa7db3c1ffb3";
|
||||
cookie-algorithm siphash24;
|
||||
cookie-secret "569d36a6cc27d6bf55502183302ba352";
|
||||
cookie-secret "6b300e27a0db46d4b046e4189790fa7d";
|
||||
require-server-cookie yes;
|
||||
};
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ options {
|
||||
listen-on { 10.53.0.6; };
|
||||
listen-on-v6 { none; };
|
||||
recursion yes;
|
||||
cookie-algorithm sha1;
|
||||
cookie-secret "6b300e27a0db46d4b046e4189790fa7db3c1ffb3";
|
||||
cookie-algorithm siphash24;
|
||||
cookie-secret "6b300e27a0db46d4b046e4189790fa7d";
|
||||
require-server-cookie yes;
|
||||
};
|
||||
|
||||
|
||||
@@ -21,3 +21,8 @@ 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
|
||||
|
||||
if ../feature-test --have-aes; then
|
||||
cp good-cookie-aes.conf.in good-cookie-aes.conf
|
||||
cp bad-cookie-badaes.conf.in bad-cookie-badaes.conf
|
||||
fi
|
||||
|
||||
@@ -141,13 +141,8 @@ status=`expr $status + $ret`
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking for COOKIE value in adb ($n)"
|
||||
ret=0
|
||||
$RNDCCMD 10.53.0.1 dumpdb
|
||||
for i in 1 2 3 4 5 6 7 8 9 10
|
||||
do
|
||||
sleep 1
|
||||
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db > /dev/null && break
|
||||
done
|
||||
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db > /dev/null || ret=1
|
||||
rndc_dumpdb ns1
|
||||
grep "10.53.0.2.*\[cookie=" ns1/named_dump.db.test$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
@@ -211,12 +206,12 @@ status=`expr $status + $ret`
|
||||
#
|
||||
# Test shared cookie-secret support.
|
||||
#
|
||||
# NS4 has cookie-secret "569d36a6cc27d6bf55502183302ba352745255a2";
|
||||
# NS4 has cookie-secret "569d36a6cc27d6bf55502183302ba352";
|
||||
#
|
||||
# NS5 has cookie-secret "569d36a6cc27d6bf55502183302ba352745255a2";
|
||||
# NS5 has cookie-secret "6b300e27a0db46d4b046e4189790fa7db3c1ffb3"; (alternate)
|
||||
# NS5 has cookie-secret "569d36a6cc27d6bf55502183302ba352";
|
||||
# NS5 has cookie-secret "6b300e27a0db46d4b046e4189790fa7d"; (alternate)
|
||||
#
|
||||
# NS6 has cookie-secret "6b300e27a0db46d4b046e4189790fa7db3c1ffb3";
|
||||
# NS6 has cookie-secret "6b300e27a0db46d4b046e4189790fa7d";
|
||||
#
|
||||
# Server cookies from NS4 are accepted by NS5 and not NS6
|
||||
# Server cookies from NS5 are accepted by NS4 and not NS6
|
||||
|
||||
@@ -20,8 +20,6 @@ ln -s $CHECKZONE named-compilezone
|
||||
|
||||
# Test 1: KSK goes inactive before successor is active
|
||||
dir=01-ksk-inactive
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $ksk1 > /dev/null 2>&1
|
||||
ksk2=`$KEYGEN -q -K $dir -S $ksk1`
|
||||
@@ -30,8 +28,6 @@ zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
|
||||
# Test 2: ZSK goes inactive before successor is active
|
||||
dir=02-zsk-inactive
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
@@ -40,8 +36,6 @@ ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
|
||||
# Test 3: KSK is unpublished before its successor is published
|
||||
dir=03-ksk-unpublished
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $ksk1 > /dev/null 2>&1
|
||||
ksk2=`$KEYGEN -q -K $dir -S $ksk1`
|
||||
@@ -50,8 +44,6 @@ zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
|
||||
# Test 4: ZSK is unpublished before its successor is published
|
||||
dir=04-zsk-unpublished
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
@@ -61,8 +53,6 @@ ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
# Test 5: KSK deleted and successor published before KSK is deactivated
|
||||
# and successor activated.
|
||||
dir=05-ksk-unpub-active
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +8mo $ksk1 > /dev/null 2>&1
|
||||
ksk2=`$KEYGEN -q -K $dir -S $ksk1`
|
||||
@@ -71,8 +61,6 @@ zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
# Test 6: ZSK deleted and successor published before ZSK is deactivated
|
||||
# and successor activated.
|
||||
dir=06-zsk-unpub-active
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +8mo $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
@@ -80,8 +68,6 @@ ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
|
||||
# Test 7: KSK rolled with insufficient delay after prepublication.
|
||||
dir=07-ksk-ttl
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $ksk1 > /dev/null 2>&1
|
||||
ksk2=`$KEYGEN -q -K $dir -S $ksk1`
|
||||
@@ -91,8 +77,6 @@ zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
|
||||
# Test 8: ZSK rolled with insufficient delay after prepublication.
|
||||
dir=08-zsk-ttl
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
@@ -102,8 +86,6 @@ ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
|
||||
# Test 9: KSK goes inactive before successor is active, but checking ZSKs
|
||||
dir=09-check-zsk
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $ksk1 > /dev/null 2>&1
|
||||
ksk2=`$KEYGEN -q -K $dir -S $ksk1`
|
||||
@@ -112,8 +94,6 @@ zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
|
||||
# Test 10: ZSK goes inactive before successor is active, but checking KSKs
|
||||
dir=10-check-ksk
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +9mo -D +1y $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
@@ -122,8 +102,6 @@ ksk1=`$KEYGEN -q -K $dir -3fk example.com`
|
||||
|
||||
# Test 11: ZSK goes inactive before successor is active, but after cutoff
|
||||
dir=11-cutoff
|
||||
rm -f $dir/K*.key
|
||||
rm -f $dir/K*.private
|
||||
zsk1=`$KEYGEN -q -K $dir -3 example.com`
|
||||
$SETTIME -K $dir -I +18mo -D +2y $zsk1 > /dev/null 2>&1
|
||||
zsk2=`$KEYGEN -q -K $dir -S $zsk1`
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
rm -f ns2/example.bk
|
||||
rm -f ns3/example.bk
|
||||
rm -f */named.memstats */named.run
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user