Compare commits
489
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e38c8b9aee | ||
|
|
c16fcbf9a4 | ||
|
|
2a33835a96 | ||
|
|
446b58f36b | ||
|
|
fb73a88f78 | ||
|
|
b40b6c3970 | ||
|
|
1e358dbc98 | ||
|
|
337f9dd0ec | ||
|
|
b4b4277f5a | ||
|
|
3f907b8bee | ||
|
|
9d7ad52506 | ||
|
|
cac3978af2 | ||
|
|
fa03f94102 | ||
|
|
75c2356f42 | ||
|
|
7351c505a0 | ||
|
|
994e656977 | ||
|
|
cb6a185c69 | ||
|
|
055278c936 | ||
|
|
64fe6bbaf2 | ||
|
|
9e493798c6 | ||
|
|
e5ee96fc1b | ||
|
|
b55338e447 | ||
|
|
20c52bf9b8 | ||
|
|
1d9c37876b | ||
|
|
8e3fc5725f | ||
|
|
7db4dedf6b | ||
|
|
b6c77202cb | ||
|
|
ec25056b48 | ||
|
|
e3131b8d52 | ||
|
|
21a547c100 | ||
|
|
9e11b54bbc | ||
|
|
e80c26b22e | ||
|
|
afddc2781e | ||
|
|
41a68425ea | ||
|
|
f7986c8d1a | ||
|
|
9c4fb3b3e6 | ||
|
|
83a1e87dd2 | ||
|
|
5146cbc092 | ||
|
|
49cd3aac9c | ||
|
|
a94db46631 | ||
|
|
c3c0481293 | ||
|
|
69380eb033 | ||
|
|
2c816e745b | ||
|
|
10e6bfc864 | ||
|
|
84385bc717 | ||
|
|
d6d9fd1c71 | ||
|
|
9130f055f4 | ||
|
|
cfccd8d246 | ||
|
|
3ea9861e7a | ||
|
|
a71823bc5c | ||
|
|
7425252207 | ||
|
|
c0bd1bf944 | ||
|
|
12d45c5cd1 | ||
|
|
d30f6e5f99 | ||
|
|
abe41ba011 | ||
|
|
6b30bc73c0 | ||
|
|
f335795068 | ||
|
|
b0b76d259f | ||
|
|
57eadf4d4f | ||
|
|
fb8bb4e306 | ||
|
|
d7ae24c868 | ||
|
|
84f1d9a204 | ||
|
|
2e688488f7 | ||
|
|
d2943440a0 | ||
|
|
1a5620db01 | ||
|
|
63c9ec367f | ||
|
|
d9929b1b0a | ||
|
|
88f913ac81 | ||
|
|
8abf2f23d0 | ||
|
|
20faf4652a | ||
|
|
7785f644c3 | ||
|
|
519bfe4c97 | ||
|
|
6a6dc2f410 | ||
|
|
63aaff50df | ||
|
|
4093efc900 | ||
|
|
e91da20dc3 | ||
|
|
c8b07932e4 | ||
|
|
ebcaae4ae5 | ||
|
|
7671aba67d | ||
|
|
e7c34d5179 | ||
|
|
187d22e090 | ||
|
|
537f2284a3 | ||
|
|
71877806e8 | ||
|
|
e0d42538f9 | ||
|
|
083461d332 | ||
|
|
b105ccee68 | ||
|
|
66ba2fdad5 | ||
|
|
8b9b270c7d | ||
|
|
8e6d89ad97 | ||
|
|
4c3386ad95 | ||
|
|
7fc59e384c | ||
|
|
83cde08522 | ||
|
|
51f7ed99fe | ||
|
|
08974f39f1 | ||
|
|
fc496b2b5d | ||
|
|
919179b369 | ||
|
|
ed090fed56 | ||
|
|
0937e281a8 | ||
|
|
0a73c9f137 | ||
|
|
45abf438f8 | ||
|
|
c40425d0f6 | ||
|
|
9d1f4696ec | ||
|
|
c3b8130fe8 | ||
|
|
3322e41eeb | ||
|
|
d34aa0ccd0 | ||
|
|
f5cb3d707a | ||
|
|
1d8a62713d | ||
|
|
d5ec498e26 | ||
|
|
636e9fc259 | ||
|
|
8666f8d28f | ||
|
|
2975f37f1c | ||
|
|
378e36a955 | ||
|
|
5bf1e8781e | ||
|
|
48eedb8108 | ||
|
|
e10e6756c9 | ||
|
|
82082ecd56 | ||
|
|
122a1a00be | ||
|
|
c96ca40023 | ||
|
|
c8b36ea6b9 | ||
|
|
15db6ee6e4 | ||
|
|
618921902a | ||
|
|
229dfb5dc8 | ||
|
|
ae1aa55c6f | ||
|
|
939824fce5 | ||
|
|
f0966d1485 | ||
|
|
2be97feb46 | ||
|
|
fd30a03f2b | ||
|
|
cc0e8cda71 | ||
|
|
12df6829d1 | ||
|
|
45e77a3680 | ||
|
|
c08e60adcb | ||
|
|
6e06d3e7c6 | ||
|
|
da3044f2df | ||
|
|
8ae1774089 | ||
|
|
ad86878d61 | ||
|
|
408bcf9c07 | ||
|
|
cc9c97fdfc | ||
|
|
a7e6a584ea | ||
|
|
1b7598a045 | ||
|
|
9bd14e2d1f | ||
|
|
a554eb1ea0 | ||
|
|
a64750e428 | ||
|
|
a7657dc150 | ||
|
|
127810e512 | ||
|
|
b722c92e76 | ||
|
|
718c527e1d | ||
|
|
96907d636d | ||
|
|
9f37641d81 | ||
|
|
f8f32ac1fc | ||
|
|
f781a1bd96 | ||
|
|
23f69e5626 | ||
|
|
a319b82421 | ||
|
|
adebe28b52 | ||
|
|
9f38be5064 | ||
|
|
9dfaf03b31 | ||
|
|
329a0e7812 | ||
|
|
440380ac41 | ||
|
|
6eec7fe092 | ||
|
|
5ae0906b23 | ||
|
|
cc3c8f1a7c | ||
|
|
4f18b6a09a | ||
|
|
69fd3f5ba4 | ||
|
|
f83a64072b | ||
|
|
bb1937aaec | ||
|
|
5519c76639 | ||
|
|
e63376fd0a | ||
|
|
dbfd19c668 | ||
|
|
802a58d5c6 | ||
|
|
5a879071d0 | ||
|
|
8ac0152651 | ||
|
|
cffb1ef0ac | ||
|
|
c4209418a5 | ||
|
|
96256e260a | ||
|
|
6c3c6aea37 | ||
|
|
3e0d30a642 | ||
|
|
e05784fd64 | ||
|
|
bf6efbc9a9 | ||
|
|
b896fc4972 | ||
|
|
e5ef038134 | ||
|
|
19c42d46e8 | ||
|
|
5106a18e9e | ||
|
|
bcf4d20603 | ||
|
|
59cdaef4f7 | ||
|
|
9a25368c8c | ||
|
|
fafc7c7b8a | ||
|
|
a0571d3851 | ||
|
|
f02e3c4bab | ||
|
|
8ef23f9fb0 | ||
|
|
7f60bb39df | ||
|
|
cd0e7df6fc | ||
|
|
ecb2f20324 | ||
|
|
4f6ef2f3e5 | ||
|
|
b65d19f9fd | ||
|
|
fffc671219 | ||
|
|
3245eb98f4 | ||
|
|
51161526a4 | ||
|
|
e9ed9b8eec | ||
|
|
b2f65ddbf0 | ||
|
|
a511c8cc0e | ||
|
|
6993d9131e | ||
|
|
5bc0e41008 | ||
|
|
48bbef71f7 | ||
|
|
b5ea00158d | ||
|
|
cebcd9184e | ||
|
|
7d4cbca5b0 | ||
|
|
c356413294 | ||
|
|
e299a870b3 | ||
|
|
c4a436569a | ||
|
|
8d9196bed7 | ||
|
|
b529de9109 | ||
|
|
8ccd8f4f90 | ||
|
|
6f719b482b | ||
|
|
92ae05e1bc | ||
|
|
dbe6a1a05f | ||
|
|
73d64de779 | ||
|
|
dd30f53edc | ||
|
|
3af412c0e0 | ||
|
|
c3f3b824e7 | ||
|
|
18ced94241 | ||
|
|
cde16236fb | ||
|
|
e9f17da6e9 | ||
|
|
8d996fd79c | ||
|
|
e3160b27f7 | ||
|
|
ad0ec2ea93 | ||
|
|
179d5faa28 | ||
|
|
c9accfde28 | ||
|
|
edbb256c3a | ||
|
|
befd429434 | ||
|
|
6439a76c6d | ||
|
|
d86f1d00ad | ||
|
|
eaf1c0f6eb | ||
|
|
fc3dd703d8 | ||
|
|
f86f314d7e | ||
|
|
facb68b22e | ||
|
|
49201f10cb | ||
|
|
be38c1f041 | ||
|
|
2aee33f412 | ||
|
|
b1254430df | ||
|
|
0db7130f2b | ||
|
|
45722aa4f7 | ||
|
|
7288d321ae | ||
|
|
75888a1f16 | ||
|
|
03568d6ec6 | ||
|
|
f1ee5e4a16 | ||
|
|
f553dac1b0 | ||
|
|
cc5c3b5948 | ||
|
|
379d407773 | ||
|
|
8c98e7abfe | ||
|
|
a60cef9dec | ||
|
|
0ba997b4c2 | ||
|
|
5d0b48474f | ||
|
|
2b075c2881 | ||
|
|
06d3106002 | ||
|
|
be26328849 | ||
|
|
27fb31580c | ||
|
|
116a2333ec | ||
|
|
8afeda645c | ||
|
|
0a33957c94 | ||
|
|
14a3193dfb | ||
|
|
d0314a14fa | ||
|
|
49f90025a0 | ||
|
|
d79be7dd5e | ||
|
|
dfed04605d | ||
|
|
f7d346357e | ||
|
|
e01a4bcb20 | ||
|
|
ddc9a8be97 | ||
|
|
51522a2b84 | ||
|
|
ff6b717955 | ||
|
|
730c6651a0 | ||
|
|
dc2c707a98 | ||
|
|
05a752c443 | ||
|
|
b8e273b47f | ||
|
|
33ff03db58 | ||
|
|
ad20284104 | ||
|
|
90e886cfc0 | ||
|
|
2bf388a31b | ||
|
|
6a756ab654 | ||
|
|
16a67911d8 | ||
|
|
3ba1d1e43b | ||
|
|
f6e1daba05 | ||
|
|
25d693f0c1 | ||
|
|
5f2f68985b | ||
|
|
8755a249bc | ||
|
|
4795f0ca89 | ||
|
|
dfdc6d61aa | ||
|
|
0158c1a4ea | ||
|
|
5ed0b0d852 | ||
|
|
ad94787cca | ||
|
|
e1400e3667 | ||
|
|
45bee4d3c3 | ||
|
|
ed8000f333 | ||
|
|
3385fb6456 | ||
|
|
52731c000d | ||
|
|
10535d1c79 | ||
|
|
bd2ddec58f | ||
|
|
07910f0153 | ||
|
|
b364445fc2 | ||
|
|
cdbe639fe6 | ||
|
|
681a07229b | ||
|
|
e8154b50d4 | ||
|
|
e495999c62 | ||
|
|
ad118d6eef | ||
|
|
8649c59a75 | ||
|
|
c094d1e4f3 | ||
|
|
24bca1c4b4 | ||
|
|
a7ae615743 | ||
|
|
5609472fbe | ||
|
|
11a552a614 | ||
|
|
5ac14cb753 | ||
|
|
bf65f72934 | ||
|
|
0d07de9228 | ||
|
|
0ed3a2b269 | ||
|
|
c76fcdd2a2 | ||
|
|
8448691159 | ||
|
|
0ed9ec49ed | ||
|
|
30e837f31a | ||
|
|
d782fcc638 | ||
|
|
7a996f0c0d | ||
|
|
04038baf1a | ||
|
|
4354f44d9c | ||
|
|
00ecbad2d0 | ||
|
|
7c3f653112 | ||
|
|
1a6525ffa2 | ||
|
|
ee06182057 | ||
|
|
fc6b5ad585 | ||
|
|
b3d2ab442c | ||
|
|
eb17957c3d | ||
|
|
dc81d8cb67 | ||
|
|
f06a755dd2 | ||
|
|
d4f3b14c78 | ||
|
|
097b57744a | ||
|
|
d949a5d83c | ||
|
|
730cc3e3c5 | ||
|
|
5d666f533b | ||
|
|
43d0fb84e7 | ||
|
|
ffc7997723 | ||
|
|
7554e8d2ca | ||
|
|
3a14450d39 | ||
|
|
ffe8ddd95f | ||
|
|
c37537cfe7 | ||
|
|
abb2fd1027 | ||
|
|
3668e152bb | ||
|
|
8ee23a47e8 | ||
|
|
38060959c7 | ||
|
|
0b559ccb33 | ||
|
|
7a0c7bf9c8 | ||
|
|
85da0086a8 | ||
|
|
05f25f8970 | ||
|
|
03ecba2cdc | ||
|
|
92b4e70d35 | ||
|
|
369d8cd432 | ||
|
|
e4295bb46c | ||
|
|
de23b20ccf | ||
|
|
302c6cbe7f | ||
|
|
be8a607341 | ||
|
|
524233a9d0 | ||
|
|
9b58500c6a | ||
|
|
f467ba8e1f | ||
|
|
7be900a98f | ||
|
|
75c0d85fc4 | ||
|
|
cf9fd889a6 | ||
|
|
c92d09320b | ||
|
|
337e37a6cf | ||
|
|
68f056b2a0 | ||
|
|
120af964ce | ||
|
|
2392b8bc7d | ||
|
|
7dc84eaa8e | ||
|
|
7ec88b384d | ||
|
|
dfa43e6dd5 | ||
|
|
1c36eed760 | ||
|
|
dde66b8012 | ||
|
|
265052df49 | ||
|
|
9cef87d835 | ||
|
|
1bf6b3ea65 | ||
|
|
31b0dc1f20 | ||
|
|
058ce1e732 | ||
|
|
c04784c144 | ||
|
|
c8015eb33b | ||
|
|
2ea47c7f34 | ||
|
|
4f9c718803 | ||
|
|
dd7bb617be | ||
|
|
0698158eb0 | ||
|
|
b7968f6c25 | ||
|
|
c8de677eae | ||
|
|
5c03cd339e | ||
|
|
bb2dfb3f49 | ||
|
|
b8fbe4aab4 | ||
|
|
bde9c2ec39 | ||
|
|
8d923a05a9 | ||
|
|
4aecd153de | ||
|
|
0e10223029 | ||
|
|
2368c3d2de | ||
|
|
b313084af2 | ||
|
|
2a7025f962 | ||
|
|
befff9452c | ||
|
|
d70726b0d2 | ||
|
|
cb3208aa43 | ||
|
|
5fc4bd3f76 | ||
|
|
013a49474c | ||
|
|
b4aa7a9d7e | ||
|
|
e582a10133 | ||
|
|
82e68ffbf0 | ||
|
|
18c3a08471 | ||
|
|
ba7a343156 | ||
|
|
0db5b087ed | ||
|
|
87a3dc8ab9 | ||
|
|
0667bf7ae7 | ||
|
|
b8b731bd20 | ||
|
|
71f2335f5a | ||
|
|
d7c5400798 | ||
|
|
41b29a436b | ||
|
|
56bbad6b78 | ||
|
|
ef7401e4a7 | ||
|
|
b491ceeb50 | ||
|
|
f0d97a7cb4 | ||
|
|
edcdfe9619 | ||
|
|
3d39d805c7 | ||
|
|
2f7ffadfc0 | ||
|
|
e771326f60 | ||
|
|
27593e65dc | ||
|
|
57f0949e2b | ||
|
|
94567f96ef | ||
|
|
3b66a7bbd7 | ||
|
|
4862d8ffc1 | ||
|
|
abfbedc0b1 | ||
|
|
193cc42b44 | ||
|
|
f98d8115e3 | ||
|
|
b0d9198e03 | ||
|
|
d4ea1edd2c | ||
|
|
374746430d | ||
|
|
3a643ee5b8 | ||
|
|
cabf9ab27a | ||
|
|
4cbe9c501d | ||
|
|
d91e313337 | ||
|
|
a7a2fa296a | ||
|
|
bef18ecac6 | ||
|
|
1f743fe0da | ||
|
|
192f777ee8 | ||
|
|
3dcc303d10 | ||
|
|
4f6d6919ab | ||
|
|
29be9cddaf | ||
|
|
e50210c695 | ||
|
|
ed3389a72c | ||
|
|
eb242959cb | ||
|
|
05d7aa5734 | ||
|
|
57c3064785 | ||
|
|
430e8d6858 | ||
|
|
12bdee3aa7 | ||
|
|
28e0b2c4c4 | ||
|
|
b1e2ecbc03 | ||
|
|
79bf79082b | ||
|
|
09aaed4329 | ||
|
|
75d348bed6 | ||
|
|
02f591f54c | ||
|
|
3abb2db9e8 | ||
|
|
0369ee1b85 | ||
|
|
a3aed02e43 | ||
|
|
ce71d94434 | ||
|
|
99ba29bc52 | ||
|
|
1a9a1b48d7 | ||
|
|
e9134b15eb | ||
|
|
cb5802e854 | ||
|
|
d71ee81676 | ||
|
|
3006ccb7f0 | ||
|
|
e7b2b097ed | ||
|
|
049777d6c5 | ||
|
|
4b442c309d | ||
|
|
d1ca21d50a | ||
|
|
58ad54e7a1 | ||
|
|
1e31fdb76d | ||
|
|
17871ac914 | ||
|
|
5a509f9e54 | ||
|
|
7fbffa6c44 | ||
|
|
5354adc403 | ||
|
|
9f8ba2eb82 | ||
|
|
cb96608fd8 | ||
|
|
e324449349 | ||
|
|
59d076caed | ||
|
|
ab22160a1c | ||
|
|
101eafb044 | ||
|
|
af73e16c9c | ||
|
|
4049ba866e | ||
|
|
b4d8349237 | ||
|
|
86899552cc | ||
|
|
e1358d1460 | ||
|
|
c91770549f | ||
|
|
2d750a15a9 | ||
|
|
9147a31b94 | ||
|
|
7c955e0eb8 |
@@ -7,6 +7,8 @@ libtool
|
|||||||
/isc-config.sh
|
/isc-config.sh
|
||||||
/configure.lineno
|
/configure.lineno
|
||||||
autom4te.cache/
|
autom4te.cache/
|
||||||
|
*.rej
|
||||||
|
*.orig
|
||||||
*.o
|
*.o
|
||||||
*.lo
|
*.lo
|
||||||
*.so
|
*.so
|
||||||
|
|||||||
+129
-3
@@ -2,7 +2,7 @@ variables:
|
|||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
LC_ALL: C
|
LC_ALL: C
|
||||||
DOCKER_DRIVER: overlay2
|
DOCKER_DRIVER: overlay2
|
||||||
CI_REGISTRY_IMAGE: oerdnj/bind9
|
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9
|
||||||
CCACHE_DIR: "/ccache"
|
CCACHE_DIR: "/ccache"
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
@@ -10,6 +10,20 @@ stages:
|
|||||||
- build
|
- build
|
||||||
- test
|
- test
|
||||||
|
|
||||||
|
.centos-centos6-amd64: ¢os_centos6_amd64_image
|
||||||
|
image: "$CI_REGISTRY_IMAGE:centos-centos6-amd64"
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
|
.centos-centos7-amd64: ¢os_centos7_amd64_image
|
||||||
|
image: "$CI_REGISTRY_IMAGE:centos-centos7-amd64"
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
- docker
|
||||||
|
- amd64
|
||||||
|
|
||||||
.debian-jessie-amd64: &debian_jessie_amd64_image
|
.debian-jessie-amd64: &debian_jessie_amd64_image
|
||||||
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
|
image: "$CI_REGISTRY_IMAGE:debian-jessie-amd64"
|
||||||
tags:
|
tags:
|
||||||
@@ -98,9 +112,9 @@ stages:
|
|||||||
stage: build
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
- test -w "${CCACHE_DIR}" && export PATH="/usr/lib/ccache:${PATH}"
|
||||||
- ./autogen.sh
|
# - ./autogen.sh
|
||||||
script:
|
script:
|
||||||
- ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr/local --with-libidn2
|
- ./configure --enable-developer --with-libtool --disable-static --with-atf=/usr $EXTRA_CONFIGURE
|
||||||
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
|
- make -j${PARALLEL_JOBS_BUILD:-1} -k all V=1
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: '1 hour'
|
expire_in: '1 hour'
|
||||||
@@ -111,6 +125,9 @@ stages:
|
|||||||
before_script:
|
before_script:
|
||||||
- rm -rf .ccache
|
- rm -rf .ccache
|
||||||
- bash -x bin/tests/system/ifconfig.sh up
|
- bash -x bin/tests/system/ifconfig.sh up
|
||||||
|
- export SOFTHSM_CONF="/tmp/softhsm.conf"
|
||||||
|
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
|
||||||
|
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
|
||||||
script:
|
script:
|
||||||
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
|
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
|
||||||
- test -s bin/tests/system/systests.output
|
- test -s bin/tests/system/systests.output
|
||||||
@@ -123,6 +140,9 @@ stages:
|
|||||||
stage: test
|
stage: test
|
||||||
before_script:
|
before_script:
|
||||||
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
|
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
|
||||||
|
- export SOFTHSM_CONF="/tmp/softhsm.conf"
|
||||||
|
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
|
||||||
|
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
|
||||||
script:
|
script:
|
||||||
- make unit
|
- make unit
|
||||||
after_script:
|
after_script:
|
||||||
@@ -140,13 +160,17 @@ precheck:debian:sid:amd64:
|
|||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
stage: precheck
|
stage: precheck
|
||||||
script:
|
script:
|
||||||
|
- sh util/checklibs.sh > checklibs.out
|
||||||
- perl util/check-changes CHANGES
|
- perl util/check-changes CHANGES
|
||||||
- perl -w util/merge_copyrights
|
- perl -w util/merge_copyrights
|
||||||
- diff -urNap util/copyrights util/newcopyrights
|
- diff -urNap util/copyrights util/newcopyrights
|
||||||
- rm util/newcopyrights
|
- rm util/newcopyrights
|
||||||
|
- xmllint --noout --nonet `git ls-files '*.xml' '*.docbook'`
|
||||||
|
- xmllint --noout --nonet --html `git ls-files '*.html'`
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- util/newcopyrights
|
- util/newcopyrights
|
||||||
|
- checklibs.out
|
||||||
expire_in: '1 week'
|
expire_in: '1 week'
|
||||||
when: on_failure
|
when: on_failure
|
||||||
|
|
||||||
@@ -174,17 +198,49 @@ precheck:debian:sid:amd64:
|
|||||||
# <<: *ubuntu_xenial_i386_image
|
# <<: *ubuntu_xenial_i386_image
|
||||||
# <<: *build_job
|
# <<: *build_job
|
||||||
|
|
||||||
|
build:centos:centos6:amd64:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error"
|
||||||
|
<<: *centos_centos6_amd64_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
|
build:centos:centos7:amd64:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
|
<<: *centos_centos7_amd64_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
build:clang:debian:sid:amd64:
|
build:clang:debian:sid:amd64:
|
||||||
variables:
|
variables:
|
||||||
CC: clang-6.0
|
CC: clang-6.0
|
||||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
|
build:debian:jessie:amd64:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
<<: *debian_jessie_amd64_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
|
build:debian:stretch:amd64:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
<<: *debian_stretch_amd64_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
build:debian:sid:amd64:
|
build:debian:sid:amd64:
|
||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
@@ -192,6 +248,7 @@ build:clang:debian:sid:i386:
|
|||||||
variables:
|
variables:
|
||||||
CC: clang-6.0
|
CC: clang-6.0
|
||||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *debian_sid_i386_image
|
<<: *debian_sid_i386_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
@@ -199,9 +256,34 @@ build:debian:sid:i386:
|
|||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "-Wall -Wextra -O2 -g"
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--with-libidn2"
|
||||||
<<: *debian_sid_i386_image
|
<<: *debian_sid_i386_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
|
unittest:centos:centos6:amd64:
|
||||||
|
<<: *centos_centos6_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:centos:centos6:amd64
|
||||||
|
|
||||||
|
unittest:centos:centos7:amd64:
|
||||||
|
<<: *centos_centos7_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:centos:centos7:amd64
|
||||||
|
|
||||||
|
unittest:debian:jessie:amd64:
|
||||||
|
<<: *debian_jessie_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:debian:jessie:amd64
|
||||||
|
|
||||||
|
unittest:debian:stretch:amd64:
|
||||||
|
<<: *debian_stretch_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:debian:stretch:amd64
|
||||||
|
|
||||||
unittest:debian:sid:amd64:
|
unittest:debian:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *unit_test_job
|
<<: *unit_test_job
|
||||||
@@ -220,6 +302,30 @@ unittest:debian:sid:i386:
|
|||||||
dependencies:
|
dependencies:
|
||||||
- build:debian:sid:i386
|
- build:debian:sid:i386
|
||||||
|
|
||||||
|
systemtest:centos:centos6:amd64:
|
||||||
|
<<: *centos_centos6_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:centos:centos6:amd64
|
||||||
|
|
||||||
|
systemtest:centos:centos7:amd64:
|
||||||
|
<<: *centos_centos7_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:centos:centos7:amd64
|
||||||
|
|
||||||
|
systemtest:debian:jessie:amd64:
|
||||||
|
<<: *debian_jessie_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:debian:jessie:amd64
|
||||||
|
|
||||||
|
systemtest:debian:stretch:amd64:
|
||||||
|
<<: *debian_stretch_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- build:debian:stretch:amd64
|
||||||
|
|
||||||
systemtest:debian:sid:amd64:
|
systemtest:debian:sid:amd64:
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *system_test_job
|
<<: *system_test_job
|
||||||
@@ -231,3 +337,23 @@ systemtest:debian:sid:i386:
|
|||||||
<<: *system_test_job
|
<<: *system_test_job
|
||||||
dependencies:
|
dependencies:
|
||||||
- build:debian:sid:i386
|
- build:debian:sid:i386
|
||||||
|
|
||||||
|
pkcs11:build:debian:sid:amd64:
|
||||||
|
variables:
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: "-Wall -Wextra -O2 -g"
|
||||||
|
EXTRA_CONFIGURE: "--enable-native-pkcs11 --with-pkcs11=/usr/lib/softhsm/libsofthsm2.so"
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *build_job
|
||||||
|
|
||||||
|
pkcs11:unittest:debian:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *unit_test_job
|
||||||
|
dependencies:
|
||||||
|
- pkcs11:build:debian:sid:amd64
|
||||||
|
|
||||||
|
pkcs11:systemtest:debian:sid:amd64:
|
||||||
|
<<: *debian_sid_amd64_image
|
||||||
|
<<: *system_test_job
|
||||||
|
dependencies:
|
||||||
|
- pkcs11:build:debian:sid:amd64
|
||||||
|
|||||||
@@ -1,5 +1,211 @@
|
|||||||
|
5007. [cleanup] Replace custom ISC boolean and integer data types
|
||||||
|
with C99 stdint.h and stdbool.h types. [GL #9]
|
||||||
|
|
||||||
|
5006. [cleanup] Code preparing a delegation response was extracted from
|
||||||
|
query_delegation() and query_zone_delegation() into a
|
||||||
|
separate function in order to decrease code
|
||||||
|
duplication. [GL #431]
|
||||||
|
|
||||||
|
5005. [bug] dnssec-verify, and dnssec-signzone at the verification
|
||||||
|
step, failed on some validly signed zones. [GL #442]
|
||||||
|
|
||||||
|
5004. [bug] 'rndc reconfig' could cause inline zones to stop
|
||||||
|
re-signing. [GL #439]
|
||||||
|
|
||||||
|
5003. [bug] dns_acl_isinsecure did not handle geoip elements.
|
||||||
|
[GL #406]
|
||||||
|
|
||||||
|
5002. [bug] mdig: Handle malformed +ednsopt option, support 100
|
||||||
|
+ednsopt options per query rather than 100 total and
|
||||||
|
address memory leaks if +ednsopt was specified.
|
||||||
|
[GL #410]
|
||||||
|
|
||||||
|
5001. [bug] Fix refcount errors on error paths. [GL !563]
|
||||||
|
|
||||||
|
5000. [bug] named_server_servestale() could leave the server in
|
||||||
|
exclusive mode if an error occured. [GL #441]
|
||||||
|
|
||||||
|
4999. [cleanup] Remove custom printf implementaion in lib/isc/print.c.
|
||||||
|
[GL #261]
|
||||||
|
|
||||||
|
4998. [test] Make resolver and cacheclean tests more civilized.
|
||||||
|
|
||||||
|
4997. [security] named could crash during recursive processing
|
||||||
|
of DNAME records when "deny-answer-aliases" was
|
||||||
|
in use. (CVE-2018-5740) [GL #387]
|
||||||
|
|
||||||
|
4996. [bug] dig: Handle malformed +ednsopt option. [GL #403]
|
||||||
|
|
||||||
|
4995. [test] Add tests for "tcp-self" update policy. [GL !282]
|
||||||
|
|
||||||
|
4994. [bug] Trust anchor telemetry queries were not being sent
|
||||||
|
upstream for locally served zones. [GL #392]
|
||||||
|
|
||||||
|
4993. [cleanup] Remove support for silently ignoring 'no-change' deltas
|
||||||
|
from BIND 8 when processing an IXFR stream. 'no-change'
|
||||||
|
deltas will now trigger a fallback to AXFR as the
|
||||||
|
recovery mechanism. [GL #369]
|
||||||
|
|
||||||
|
4992. [bug] The wrong address was being logged for trust anchor
|
||||||
|
telemetry queries. [GL #379]
|
||||||
|
|
||||||
|
4991. [bug] "rndc reconfig" was incorrectly handling zones whose
|
||||||
|
"mirror" setting was changed. [GL #381]
|
||||||
|
|
||||||
|
4990. [bug] Prevent a possible NULL reference in pkcs11-keygen.
|
||||||
|
[GL #401]
|
||||||
|
|
||||||
|
4989. [cleanup] IDN support in dig has been reworked. IDNA2003
|
||||||
|
fallbacks were removed in the process. [GL #384]
|
||||||
|
|
||||||
|
4988. [bug] Don't synthesize NXDOMAIN from NSEC for records under
|
||||||
|
a DNAME.
|
||||||
|
|
||||||
|
--- 9.13.2 released ---
|
||||||
|
|
||||||
|
4987. [cleanup] dns_rdataslab_tordataset() and its related
|
||||||
|
dns_rdatasetmethods_t callbacks were removed as they
|
||||||
|
were not being used by anything in BIND. [GL #371]
|
||||||
|
|
||||||
|
4986. [func] When built on Linux, BIND now requires the libcap
|
||||||
|
library to set process privileges, unless capability
|
||||||
|
support is explicitly overridden with "configure
|
||||||
|
--disable-linux-caps". [GL #321]
|
||||||
|
|
||||||
|
4985. [func] Add a new slave zone option, "mirror", to enable
|
||||||
|
serving a non-authoritative copy of a zone that
|
||||||
|
is subject to DNSSEC validation before being
|
||||||
|
used. For now, this option is only meant to
|
||||||
|
facilitate deployment of an RFC 7706-style local
|
||||||
|
copy of the root zone. [GL #33]
|
||||||
|
|
||||||
|
4984. [bug] Improve handling of very large incremental
|
||||||
|
zone transfers to prevent journal corruption. [GL #339]
|
||||||
|
|
||||||
|
4983. [func] Add the ability to not return a DNS COOKIE option
|
||||||
|
when one is present in the request (answer-cookie no;).
|
||||||
|
[GL #173]
|
||||||
|
|
||||||
|
4982. [cleanup] Return FORMERR if the question section is empty
|
||||||
|
and no COOKIE option is present; this restores
|
||||||
|
older behavior except in the newly specified
|
||||||
|
COOKIE case. [GL #260]
|
||||||
|
|
||||||
|
4981. [bug] Fix race in cmsg buffer usage in socket code.
|
||||||
|
[GL #180]
|
||||||
|
|
||||||
|
4980. [bug] Named-checkconf failed to detect bad in-view targets.
|
||||||
|
[GL #288]
|
||||||
|
|
||||||
|
4979. [placeholder]
|
||||||
|
|
||||||
|
4978. [test] Fix error handling and resolver configuration in the
|
||||||
|
"rpz" system test. [GL #312]
|
||||||
|
|
||||||
|
4977. [func] When starting up, log the same details that
|
||||||
|
would be reported by 'named -V'. [GL #247]
|
||||||
|
|
||||||
|
4976. [bug] Log the label with invalid prefix length correctly
|
||||||
|
when loading RPZ zones. [GL #254]
|
||||||
|
|
||||||
|
4975. [bug] The server cookie computation for sha1 and sha256 did
|
||||||
|
not match the method described in RFC 7873. [GL #356]
|
||||||
|
|
||||||
|
4974. [bug] Restore default rrset-order to random. [GL #336]
|
||||||
|
|
||||||
|
4973. [func] verifyzone() and the functions it uses were moved to
|
||||||
|
libdns and refactored to prevent exit() from being
|
||||||
|
called upon failure. A side effect of that is that
|
||||||
|
dnssec-signzone and dnssec-verify now check for memory
|
||||||
|
leaks upon shutdown. [GL #266]
|
||||||
|
|
||||||
|
4972. [func] Declare the 'rdata' argument for dns_rdata_tostruct()
|
||||||
|
to be const. [GL #341]
|
||||||
|
|
||||||
|
4971. [bug] dnssec-signzone and dnssec-verify did not treat records
|
||||||
|
below a DNAME as out-of-zone data. [GL #298]
|
||||||
|
|
||||||
|
4970. [func] Add QNAME minimization option to resolver. [GL #16]
|
||||||
|
|
||||||
|
4969. [cleanup] Refactor zone logging functions. [GL #269]
|
||||||
|
|
||||||
|
--- 9.13.1 released ---
|
||||||
|
|
||||||
|
4968. [bug] If glue records are signed, attempt to validate them.
|
||||||
|
[GL #209]
|
||||||
|
|
||||||
|
4967. [cleanup] Add "answer-cookie" to the parser, marked obsolete.
|
||||||
|
|
||||||
|
4966. [placeholder]
|
||||||
|
|
||||||
|
4965. [func] Add support for marking options as deprecated.
|
||||||
|
[GL #322]
|
||||||
|
|
||||||
|
4964. [bug] Reduce the probabilty of double signature when deleting
|
||||||
|
a DNSKEY by checking if the node is otherwise signed
|
||||||
|
by the algorithm of the key to be deleted. [GL #240]
|
||||||
|
|
||||||
|
4963. [test] ifconfig.sh now uses "ip" instead of "ifconfig",
|
||||||
|
if available, to configure the test interfaces on
|
||||||
|
linux. [GL #302]
|
||||||
|
|
||||||
|
4962. [cleanup] Move 'named -T' processing to its own function.
|
||||||
|
[GL #316]
|
||||||
|
|
||||||
|
4961. [protocol] Remove support for ECC-GOST (GOST R 34.11-94).
|
||||||
|
[GL #295]
|
||||||
|
|
||||||
|
4960. [security] When recursion is enabled, but the "allow-recursion"
|
||||||
|
and "allow-query-cache" ACLs are not specified,
|
||||||
|
they should be limited to local networks,
|
||||||
|
but were inadvertently set to match the default
|
||||||
|
"allow-query", thus allowing remote queries.
|
||||||
|
(CVE-2018-5738) [GL #309]
|
||||||
|
|
||||||
|
4959. [func] NSID logging (enabled by the "request-nsid" option)
|
||||||
|
now has its own "nsid" category, instead of using the
|
||||||
|
"resolver" category. [GL !332]
|
||||||
|
|
||||||
|
4958. [bug] Remove redundant space from NSEC3 record. [GL #281]
|
||||||
|
|
||||||
|
4957. [func] The default setting for "dnssec-validation" is now
|
||||||
|
"auto", which activates DNSSEC validation using the
|
||||||
|
IANA root key. (The default can be changed back to
|
||||||
|
"yes", which activates DNSSEC validation only when keys
|
||||||
|
are explicitly configured in named.conf, by building
|
||||||
|
BIND with "configure --disable-auto-validation".)
|
||||||
|
[GL #30]
|
||||||
|
|
||||||
|
4956. [func] Change isc_random() to be just PRNG using xoshiro128**,
|
||||||
|
and add isc_nonce_buf() that uses CSPRNG. [GL #289]
|
||||||
|
|
||||||
|
4955. [cleanup] Silence cppcheck warnings in lib/dns/master.c.
|
||||||
|
[GL #286]
|
||||||
|
|
||||||
|
4954. [func] Messages about serving of stale answers are now
|
||||||
|
directed to the "serve-stale" logging category.
|
||||||
|
Also clarified serve-stale documentation. [GL !323]
|
||||||
|
|
||||||
|
4953. [bug] Removed the option to build the red black tree
|
||||||
|
database without a hash table; the non-hashing
|
||||||
|
version was buggy and is not needed. [GL #184]
|
||||||
|
|
||||||
|
4952. [func] Authoritative server support in named for the
|
||||||
|
EDNS CLIENT-SUBNET option (which was experimental
|
||||||
|
and not practical to deploy) has been removed.
|
||||||
|
|
||||||
|
The ECS option is still supported in dig and mdig
|
||||||
|
via the +subnet option, and can be parsed and logged
|
||||||
|
when received by named, but it is no longer used
|
||||||
|
for ACL processing. The "geoip-use-ecs" option
|
||||||
|
is now obsolete; a warning will be logged if it is
|
||||||
|
used in named.conf. "ecs" tags in an ACL definition
|
||||||
|
are also obsolete and will cause the configuration
|
||||||
|
to fail to load. [GL #32]
|
||||||
|
|
||||||
4951. [protocol] Add "HOME.ARPA" to list of built in empty zones as
|
4951. [protocol] Add "HOME.ARPA" to list of built in empty zones as
|
||||||
per RFC 8375. [GL #273]
|
per RFC 8375. [GL #273]
|
||||||
|
|
||||||
--- 9.13.0 released ---
|
--- 9.13.0 released ---
|
||||||
|
|
||||||
4950. [bug] ISC_SOCKEVENTATTR_TRUNC was not be set. [GL #238]
|
4950. [bug] ISC_SOCKEVENTATTR_TRUNC was not be set. [GL #238]
|
||||||
@@ -663,8 +869,8 @@
|
|||||||
|
|
||||||
4760. [func] Add glue cache statistics counters. [RT #46028]
|
4760. [func] Add glue cache statistics counters. [RT #46028]
|
||||||
|
|
||||||
4759. [func] Add logging channel "trust-anchor-telementry" to
|
4759. [func] Add logging channel "trust-anchor-telemetry" to
|
||||||
record trust-anchor-telementry in incoming requests.
|
record trust-anchor-telemetry in incoming requests.
|
||||||
Both _ta-XXXX.<anchor>/NULL and EDNS KEY-TAG options
|
Both _ta-XXXX.<anchor>/NULL and EDNS KEY-TAG options
|
||||||
are logged. [RT #46124]
|
are logged. [RT #46124]
|
||||||
|
|
||||||
@@ -733,10 +939,10 @@
|
|||||||
tests when running on terminals that support them.
|
tests when running on terminals that support them.
|
||||||
[RT #45977]
|
[RT #45977]
|
||||||
|
|
||||||
4744. [bug] Suppress trust-anchor-telementry queries if
|
4744. [bug] Suppress trust-anchor-telemetry queries if
|
||||||
validation is disabled. [RT #46131]
|
validation is disabled. [RT #46131]
|
||||||
|
|
||||||
4743. [func] Exclude trust-anchor-telementry queries from
|
4743. [func] Exclude trust-anchor-telemetry queries from
|
||||||
synth-from-dnssec processing. [RT #46123]
|
synth-from-dnssec processing. [RT #46123]
|
||||||
|
|
||||||
4742. [func] Synthesis of responses from DNSSEC-verified records.
|
4742. [func] Synthesis of responses from DNSSEC-verified records.
|
||||||
|
|||||||
+7
-1
@@ -22,7 +22,8 @@ MANPAGES = isc-config.sh.1
|
|||||||
|
|
||||||
HTMLPAGES = isc-config.sh.html
|
HTMLPAGES = isc-config.sh.html
|
||||||
|
|
||||||
MANOBJS = README HISTORY OPTIONS CONTRIBUTING ${MANPAGES} ${HTMLPAGES}
|
MANOBJS = README HISTORY OPTIONS CONTRIBUTING PLATFORMS \
|
||||||
|
${MANPAGES} ${HTMLPAGES}
|
||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
@BIND9_MAKE_RULES@
|
||||||
|
|
||||||
@@ -114,6 +115,11 @@ CONTRIBUTING: CONTRIBUTING.md
|
|||||||
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
sed -e '$${/^$$/d;}' > $@
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
|
PLATFORMS: PLATFORMS.md
|
||||||
|
${PANDOC} --email-obfuscation=none -s -t html PLATFORMS.md | \
|
||||||
|
${W3M} -dump -cols 75 -O ascii -T text/html | \
|
||||||
|
sed -e '$${/^$$/d;}' > $@
|
||||||
|
|
||||||
unit::
|
unit::
|
||||||
sh ${top_builddir}/unit/unittest.sh
|
sh ${top_builddir}/unit/unittest.sh
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
Supported platforms
|
||||||
|
|
||||||
|
In general, this version of BIND will build and run on any POSIX-compliant
|
||||||
|
system with a C99-compliant C compiler, BSD-style sockets, and the OpenSSL
|
||||||
|
cryptography library. To build with multiprocessing support, a
|
||||||
|
C11-compliant C compiler will be needed for standard atomics.
|
||||||
|
|
||||||
|
ISC regularly tests BIND on many operating systems and architectures, but
|
||||||
|
lacks the resources to test all of them. Consequently, ISC is only able to
|
||||||
|
offer support on a "best effort" basis for some.
|
||||||
|
|
||||||
|
Regularly tested platforms
|
||||||
|
|
||||||
|
As of May 2018, BIND 9.13 is tested on the following systems:
|
||||||
|
|
||||||
|
* Debian 8, 9
|
||||||
|
* Ubuntu 16.04, 18.04
|
||||||
|
* Fedora 27, 28
|
||||||
|
* Red Hat/CentOS 6, 7
|
||||||
|
* FreeBSD 10.x, 11.x
|
||||||
|
* OpenBSD 6.3
|
||||||
|
|
||||||
|
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
||||||
|
supported.
|
||||||
|
|
||||||
|
Best effort
|
||||||
|
|
||||||
|
The following are platforms on which BIND is known to build and run, but
|
||||||
|
on which it is not routinely tested. ISC makes every effort to fix bugs on
|
||||||
|
these platforms, but may be unable to do so quickly due to lack of
|
||||||
|
hardware, less familiarity on the part of engineering staff, and other
|
||||||
|
constraints.
|
||||||
|
|
||||||
|
* Windows 10 / x64
|
||||||
|
* Windows Server 2012 R2, 2016 / x64
|
||||||
|
* macOS 10.12+
|
||||||
|
* Solaris 10
|
||||||
|
* FreeBSD 12+
|
||||||
|
* OpenBSD 6.2
|
||||||
|
* NetBSD
|
||||||
|
* Older or less popular Linux distributions still supported by their
|
||||||
|
vendors, such as:
|
||||||
|
+ Ubuntu 14.04, 18.10+
|
||||||
|
+ Gentoo
|
||||||
|
+ ArchLinux
|
||||||
|
+ Alpine Linux
|
||||||
|
* OpenWRT/LEDE 17.0
|
||||||
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
|
Unsupported platforms
|
||||||
|
|
||||||
|
These are platforms on which BIND is known not to build or run:
|
||||||
|
|
||||||
|
* Platforms without at least OpenSSL 1.0.2
|
||||||
|
* Windows 10 / x86
|
||||||
|
* Windows Server 2012
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<!--
|
||||||
|
- 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.
|
||||||
|
-->
|
||||||
|
## Supported platforms
|
||||||
|
|
||||||
|
In general, this version of BIND will build and run on any POSIX-compliant
|
||||||
|
system with a C99-compliant C compiler, BSD-style sockets, and the OpenSSL
|
||||||
|
cryptography library. To build with multiprocessing support, a
|
||||||
|
C11-compliant C compiler will be needed for standard atomics.
|
||||||
|
|
||||||
|
ISC regularly tests BIND on many operating systems and architectures, but
|
||||||
|
lacks the resources to test all of them. Consequently, ISC is only able to
|
||||||
|
offer support on a "best effort" basis for some.
|
||||||
|
|
||||||
|
### Regularly tested platforms
|
||||||
|
|
||||||
|
As of May 2018, BIND 9.13 is tested on the following systems:
|
||||||
|
|
||||||
|
* Debian 8, 9
|
||||||
|
* Ubuntu 16.04, 18.04
|
||||||
|
* Fedora 27, 28
|
||||||
|
* Red Hat/CentOS 6, 7
|
||||||
|
* FreeBSD 10.x, 11.x
|
||||||
|
* OpenBSD 6.3
|
||||||
|
|
||||||
|
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
||||||
|
|
||||||
|
### Best effort
|
||||||
|
|
||||||
|
The following are platforms on which BIND is known to build and run,
|
||||||
|
but on which it is not routinely tested. ISC makes every effort to fix bugs
|
||||||
|
on these platforms, but may be unable to do so quickly due to lack of
|
||||||
|
hardware, less familiarity on the part of engineering staff, and other
|
||||||
|
constraints.
|
||||||
|
|
||||||
|
* Windows 10 / x64
|
||||||
|
* Windows Server 2012 R2, 2016 / x64
|
||||||
|
* macOS 10.12+
|
||||||
|
* Solaris 10
|
||||||
|
* FreeBSD 12+
|
||||||
|
* OpenBSD 6.2
|
||||||
|
* NetBSD
|
||||||
|
* Older or less popular Linux distributions still supported by their vendors, such as:
|
||||||
|
* Ubuntu 14.04, 18.10+
|
||||||
|
* Gentoo
|
||||||
|
* ArchLinux
|
||||||
|
* Alpine Linux
|
||||||
|
* OpenWRT/LEDE 17.0
|
||||||
|
* Other CPU architectures (mips, mipsel, sparc, ...)
|
||||||
|
|
||||||
|
## Unsupported platforms
|
||||||
|
|
||||||
|
These are platforms on which BIND is known *not* to build or run:
|
||||||
|
|
||||||
|
* Platforms without at least OpenSSL 1.0.2
|
||||||
|
* Windows 10 / x86
|
||||||
|
* Windows Server 2012
|
||||||
@@ -31,9 +31,9 @@ administrative tools, including the dig and delv DNS lookup tools,
|
|||||||
nsupdate for dynamic DNS zone updates, rndc for remote name server
|
nsupdate for dynamic DNS zone updates, rndc for remote name server
|
||||||
administration, and more.
|
administration, and more.
|
||||||
|
|
||||||
BIND 9 is a complete re-write of the BIND architecture that was used in
|
BIND 9 began as a complete re-write of the BIND architecture that was used
|
||||||
versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a 501
|
in versions 4 and 8. Internet Systems Consortium (https://www.isc.org), a
|
||||||
(c)(3) public benefit corporation dedicated to providing software and
|
501(c)(3) public benefit corporation dedicated to providing software and
|
||||||
services in support of the Internet infrastructure, developed BIND 9 and
|
services in support of the Internet infrastructure, developed BIND 9 and
|
||||||
is responsible for its ongoing maintenance and improvement. BIND is open
|
is responsible for its ongoing maintenance and improvement. BIND is open
|
||||||
source software licenced under the terms of the Mozilla Public License,
|
source software licenced under the terms of the Mozilla Public License,
|
||||||
@@ -48,6 +48,8 @@ the file CHANGES. See below for details on the CHANGES file format.
|
|||||||
For up-to-date release notes and errata, see http://www.isc.org/software/
|
For up-to-date release notes and errata, see http://www.isc.org/software/
|
||||||
bind9/releasenotes
|
bind9/releasenotes
|
||||||
|
|
||||||
|
For information about supported platforms, see PLATFORMS.
|
||||||
|
|
||||||
Reporting bugs and getting help
|
Reporting bugs and getting help
|
||||||
|
|
||||||
To report non-security-sensitive bugs or request new features, you may
|
To report non-security-sensitive bugs or request new features, you may
|
||||||
@@ -99,19 +101,40 @@ format-patch.
|
|||||||
|
|
||||||
BIND 9.13 features
|
BIND 9.13 features
|
||||||
|
|
||||||
BIND 9.13.0 is the newest development branch of BIND 9. It includes a
|
BIND 9.13 is the newest development branch of BIND 9. It includes a number
|
||||||
number of changes from BIND 9.12 and earlier releases. New features
|
of changes from BIND 9.12 and earlier releases. New features include:
|
||||||
include:
|
|
||||||
|
|
||||||
* TBD
|
* The default value of "dnssec-validation" is now "auto".
|
||||||
|
* Support for IDNA2008 when linking with libidn2.
|
||||||
|
* "Root key sentinel" support, enabling validating resolvers to indicate
|
||||||
|
via a special query which trust anchors are configured for the root
|
||||||
|
zone.
|
||||||
|
* Secondary zones can now be configured as "mirror" zones; their
|
||||||
|
contents are transferred in as with traditional slave zones, but are
|
||||||
|
subject to DNSSEC validation and are not treated as authoritative data
|
||||||
|
when answering. This makes it easier to configure a local copy of the
|
||||||
|
root zone as described in RFC 7706.
|
||||||
|
|
||||||
|
In addition, cryptographic support has been modernized. BIND now uses the
|
||||||
|
best available pseudo-random number generator for the platform on which
|
||||||
|
it's built. Very old versions of OpenSSL are no longer supported.
|
||||||
|
Cryptography is now mandatory; building BIND without DNSSEC is now longer
|
||||||
|
supported.
|
||||||
|
|
||||||
Building BIND
|
Building BIND
|
||||||
|
|
||||||
BIND requires a UNIX or Linux system with an ANSI C compiler, basic POSIX
|
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
||||||
support, and a 64-bit integer type. Successful builds have been observed
|
basic POSIX support, and a 64-bit integer type. Successful builds have
|
||||||
on many versions of Linux and UNIX, including RedHat, Fedora, Debian,
|
been observed on many versions of Linux and UNIX, including RedHat,
|
||||||
Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X, Solaris,
|
Fedora, Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS
|
||||||
HP-UX, AIX, SCO OpenServer, and OpenWRT.
|
X, Solaris, HP-UX, AIX, SCO OpenServer, and OpenWRT.
|
||||||
|
|
||||||
|
BIND requires a cryptography provider library such as OpenSSL or a
|
||||||
|
hardware service module supporting PKCS#11. On Linux, BIND requires the
|
||||||
|
libcap library to set process privileges, though this requirement can be
|
||||||
|
overridden by disabling capability support at compile time. See
|
||||||
|
Compile-time options below for details on other libraries that may be
|
||||||
|
required to support optional features.
|
||||||
|
|
||||||
BIND is also available for Windows 2008 and higher. See win32utils/
|
BIND is also available for Windows 2008 and higher. See win32utils/
|
||||||
readme1st.txt for details on building for Windows systems.
|
readme1st.txt for details on building for Windows systems.
|
||||||
@@ -182,11 +205,10 @@ smaller systems.
|
|||||||
For the server to support DNSSEC, you need to build it with crypto
|
For the server to support DNSSEC, you need to build it with crypto
|
||||||
support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
|
support. To use OpenSSL, you should have OpenSSL 1.0.2e or newer
|
||||||
installed. If the OpenSSL library is installed in a nonstandard location,
|
installed. If the OpenSSL library is installed in a nonstandard location,
|
||||||
specify the prefix using "--with-openssl=<PREFIX>" on the configure
|
specify the prefix using --with-openssl=<PREFIX> on the configure command
|
||||||
command line. To use a PKCS#11 hardware service module for cryptographic
|
line. To use a PKCS#11 hardware service module for cryptographic
|
||||||
operations, specify the path to the PKCS#11 provider library using
|
operations, specify the path to the PKCS#11 provider library using
|
||||||
"--with-pkcs11=<PREFIX>", and configure BIND with
|
--with-pkcs11=<PREFIX>, and configure BIND with --enable-native-pkcs11.
|
||||||
"--enable-native-pkcs11".
|
|
||||||
|
|
||||||
To support the HTTP statistics channel, the server must be linked with at
|
To support the HTTP statistics channel, the server must be linked with at
|
||||||
least one of the following: libxml2 http://xmlsoft.org or json-c https://
|
least one of the following: libxml2 http://xmlsoft.org or json-c https://
|
||||||
@@ -199,17 +221,22 @@ specify the prefix using --with-zlib=/prefix.
|
|||||||
|
|
||||||
To support storing configuration data for runtime-added zones in an LMDB
|
To support storing configuration data for runtime-added zones in an LMDB
|
||||||
database, the server must be linked with liblmdb. If this is installed in
|
database, the server must be linked with liblmdb. If this is installed in
|
||||||
a nonstandard location, specify the prefix using "with-lmdb=/prefix".
|
a nonstandard location, specify the prefix using with-lmdb=/prefix.
|
||||||
|
|
||||||
To support GeoIP location-based ACLs, the server must be linked with
|
To support GeoIP location-based ACLs, the server must be linked with
|
||||||
libGeoIP. This is not turned on by default; BIND must be configured with
|
libGeoIP. This is not turned on by default; BIND must be configured with
|
||||||
"--with-geoip". If the library is installed in a nonstandard location, use
|
--with-geoip. If the library is installed in a nonstandard location,
|
||||||
specify the prefix using "--with-geoip=/prefix".
|
specify the prefix using --with-geoip=/prefix.
|
||||||
|
|
||||||
For DNSTAP packet logging, you must have installed libfstrm https://
|
For DNSTAP packet logging, you must have installed libfstrm https://
|
||||||
github.com/farsightsec/fstrm and libprotobuf-c https://
|
github.com/farsightsec/fstrm and libprotobuf-c https://
|
||||||
developers.google.com/protocol-buffers, and BIND must be configured with
|
developers.google.com/protocol-buffers, and BIND must be configured with
|
||||||
"--enable-dnstap".
|
--enable-dnstap.
|
||||||
|
|
||||||
|
On Linux, process capabilities are managed in user space using the libcap
|
||||||
|
library, which can be installed on most Linux systems via the libcap-dev
|
||||||
|
or libcap-devel module. Process capability support can also be disabled by
|
||||||
|
configuring with --disable-linux-caps.
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including dnssec-keymgr,
|
Portions of BIND that are written in Python, including dnssec-keymgr,
|
||||||
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
dnssec-coverage, dnssec-checkds, and some of the system tests, require the
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ administrative tools, including the `dig` and `delv` DNS lookup tools,
|
|||||||
`nsupdate` for dynamic DNS zone updates, `rndc` for remote name server
|
`nsupdate` for dynamic DNS zone updates, `rndc` for remote name server
|
||||||
administration, and more.
|
administration, and more.
|
||||||
|
|
||||||
BIND 9 is a complete re-write of the BIND architecture that was used in
|
BIND 9 began as a complete re-write of the BIND architecture that was
|
||||||
versions 4 and 8. Internet Systems Consortium
|
used in versions 4 and 8. Internet Systems Consortium
|
||||||
([https://www.isc.org](https://www.isc.org)), a 501(c)(3) public benefit
|
([https://www.isc.org](https://www.isc.org)), a 501(c)(3) public benefit
|
||||||
corporation dedicated to providing software and services in support of the
|
corporation dedicated to providing software and services in support of the
|
||||||
Internet infrastructure, developed BIND 9 and is responsible for its
|
Internet infrastructure, developed BIND 9 and is responsible for its
|
||||||
@@ -59,6 +59,8 @@ CHANGES file format.
|
|||||||
For up-to-date release notes and errata, see
|
For up-to-date release notes and errata, see
|
||||||
[http://www.isc.org/software/bind9/releasenotes](http://www.isc.org/software/bind9/releasenotes)
|
[http://www.isc.org/software/bind9/releasenotes](http://www.isc.org/software/bind9/releasenotes)
|
||||||
|
|
||||||
|
For information about supported platforms, see [PLATFORMS](PLATFORMS.md).
|
||||||
|
|
||||||
### <a name="help"/> Reporting bugs and getting help
|
### <a name="help"/> Reporting bugs and getting help
|
||||||
|
|
||||||
To report non-security-sensitive bugs or request new features, you may
|
To report non-security-sensitive bugs or request new features, you may
|
||||||
@@ -116,19 +118,40 @@ including your patch as an attachment, preferably generated by
|
|||||||
|
|
||||||
### <a name="features"/> BIND 9.13 features
|
### <a name="features"/> BIND 9.13 features
|
||||||
|
|
||||||
BIND 9.13.0 is the newest development branch of BIND 9. It includes a
|
BIND 9.13 is the newest development branch of BIND 9. It includes a
|
||||||
number of changes from BIND 9.12 and earlier releases. New features
|
number of changes from BIND 9.12 and earlier releases. New features
|
||||||
include:
|
include:
|
||||||
|
|
||||||
* TBD
|
* The default value of "dnssec-validation" is now "auto".
|
||||||
|
* Support for IDNA2008 when linking with `libidn2`.
|
||||||
|
* "Root key sentinel" support, enabling validating resolvers to indicate
|
||||||
|
via a special query which trust anchors are configured for the root zone.
|
||||||
|
* Secondary zones can now be configured as "mirror" zones; their contents
|
||||||
|
are transferred in as with traditional slave zones, but are subject to
|
||||||
|
DNSSEC validation and are not treated as authoritative data when
|
||||||
|
answering. This makes it easier to configure a local copy of the root
|
||||||
|
zone as described in RFC 7706.
|
||||||
|
|
||||||
|
In addition, cryptographic support has been modernized. BIND now uses the
|
||||||
|
best available pseudo-random number generator for the platform on which
|
||||||
|
it's built. Very old versions of OpenSSL are no longer supported.
|
||||||
|
Cryptography is now mandatory; building BIND without DNSSEC is now
|
||||||
|
longer supported.
|
||||||
|
|
||||||
### <a name="build"/> Building BIND
|
### <a name="build"/> Building BIND
|
||||||
|
|
||||||
BIND requires a UNIX or Linux system with an ANSI C compiler, basic POSIX
|
Minimally, BIND requires a UNIX or Linux system with an ANSI C compiler,
|
||||||
support, and a 64-bit integer type. Successful builds have been observed on
|
basic POSIX support, and a 64-bit integer type. Successful builds have been
|
||||||
many versions of Linux and UNIX, including RedHat, Fedora, Debian, Ubuntu,
|
observed on many versions of Linux and UNIX, including RedHat, Fedora,
|
||||||
SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X, Solaris, HP-UX, AIX,
|
Debian, Ubuntu, SuSE, Slackware, FreeBSD, NetBSD, OpenBSD, Mac OS X,
|
||||||
SCO OpenServer, and OpenWRT.
|
Solaris, HP-UX, AIX, SCO OpenServer, and OpenWRT.
|
||||||
|
|
||||||
|
BIND requires a cryptography provider library such as OpenSSL or a
|
||||||
|
hardware service module supporting PKCS#11. On Linux, BIND requires
|
||||||
|
the `libcap` library to set process privileges, though this requirement
|
||||||
|
can be overridden by disabling capability support at compile time.
|
||||||
|
See [Compile-time options](#opts) below for details on other libraries
|
||||||
|
that may be required to support optional features.
|
||||||
|
|
||||||
BIND is also available for Windows 2008 and higher. See
|
BIND is also available for Windows 2008 and higher. See
|
||||||
`win32utils/readme1st.txt` for details on building for Windows
|
`win32utils/readme1st.txt` for details on building for Windows
|
||||||
@@ -194,10 +217,10 @@ performance on smaller systems.
|
|||||||
For the server to support DNSSEC, you need to build it with crypto support.
|
For the server to support DNSSEC, you need to build it with crypto support.
|
||||||
To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the
|
To use OpenSSL, you should have OpenSSL 1.0.2e or newer installed. If the
|
||||||
OpenSSL library is installed in a nonstandard location, specify the prefix
|
OpenSSL library is installed in a nonstandard location, specify the prefix
|
||||||
using "--with-openssl=<PREFIX>" on the configure command line. To use a
|
using `--with-openssl=<PREFIX>` on the configure command line. To use a
|
||||||
PKCS#11 hardware service module for cryptographic operations, specify the
|
PKCS#11 hardware service module for cryptographic operations, specify the
|
||||||
path to the PKCS#11 provider library using "--with-pkcs11=<PREFIX>", and
|
path to the PKCS#11 provider library using `--with-pkcs11=<PREFIX>`, and
|
||||||
configure BIND with "--enable-native-pkcs11".
|
configure BIND with `--enable-native-pkcs11`.
|
||||||
|
|
||||||
To support the HTTP statistics channel, the server must be linked with at
|
To support the HTTP statistics channel, the server must be linked with at
|
||||||
least one of the following: libxml2
|
least one of the following: libxml2
|
||||||
@@ -212,18 +235,23 @@ specify the prefix using `--with-zlib=/prefix`.
|
|||||||
|
|
||||||
To support storing configuration data for runtime-added zones in an LMDB
|
To support storing configuration data for runtime-added zones in an LMDB
|
||||||
database, the server must be linked with liblmdb. If this is installed in a
|
database, the server must be linked with liblmdb. If this is installed in a
|
||||||
nonstandard location, specify the prefix using "with-lmdb=/prefix".
|
nonstandard location, specify the prefix using `with-lmdb=/prefix`.
|
||||||
|
|
||||||
To support GeoIP location-based ACLs, the server must be linked with
|
To support GeoIP location-based ACLs, the server must be linked with
|
||||||
libGeoIP. This is not turned on by default; BIND must be configured with
|
libGeoIP. This is not turned on by default; BIND must be configured with
|
||||||
"--with-geoip". If the library is installed in a nonstandard location, use
|
`--with-geoip`. If the library is installed in a nonstandard location,
|
||||||
specify the prefix using "--with-geoip=/prefix".
|
specify the prefix using `--with-geoip=/prefix`.
|
||||||
|
|
||||||
For DNSTAP packet logging, you must have installed libfstrm
|
For DNSTAP packet logging, you must have installed libfstrm
|
||||||
[https://github.com/farsightsec/fstrm](https://github.com/farsightsec/fstrm)
|
[https://github.com/farsightsec/fstrm](https://github.com/farsightsec/fstrm)
|
||||||
and libprotobuf-c
|
and libprotobuf-c
|
||||||
[https://developers.google.com/protocol-buffers](https://developers.google.com/protocol-buffers),
|
[https://developers.google.com/protocol-buffers](https://developers.google.com/protocol-buffers),
|
||||||
and BIND must be configured with "--enable-dnstap".
|
and BIND must be configured with `--enable-dnstap`.
|
||||||
|
|
||||||
|
On Linux, process capabilities are managed in user space using
|
||||||
|
the `libcap` library, which can be installed on most Linux systems via
|
||||||
|
the `libcap-dev` or `libcap-devel` module. Process capability support can
|
||||||
|
also be disabled by configuring with `--disable-linux-caps`.
|
||||||
|
|
||||||
Portions of BIND that are written in Python, including
|
Portions of BIND that are written in Python, including
|
||||||
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
`dnssec-keymgr`, `dnssec-coverage`, `dnssec-checkds`, and some of the
|
||||||
|
|||||||
@@ -121,12 +121,6 @@ int sigwait(const unsigned int *set, int *sig);
|
|||||||
/** define if you have strerror in the C library. */
|
/** define if you have strerror in the C library. */
|
||||||
#undef HAVE_STRERROR
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
/* Define if OpenSSL includes DSA support */
|
|
||||||
#undef HAVE_OPENSSL_DSA
|
|
||||||
|
|
||||||
/* Define if you have getpassphrase in the C library. */
|
|
||||||
#undef HAVE_GETPASSPHRASE
|
|
||||||
|
|
||||||
/* Define to the length type used by the socket API (socklen_t, size_t, int). */
|
/* Define to the length type used by the socket API (socklen_t, size_t, int). */
|
||||||
#undef ISC_SOCKADDR_LEN_T
|
#undef ISC_SOCKADDR_LEN_T
|
||||||
|
|
||||||
|
|||||||
Vendored
+294
-15
@@ -1,17 +1,296 @@
|
|||||||
sinclude(libtool.m4/libtool.m4)dnl
|
# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
|
||||||
sinclude(libtool.m4/ltoptions.m4)dnl
|
|
||||||
sinclude(libtool.m4/ltsugar.m4)dnl
|
|
||||||
sinclude(libtool.m4/ltversion.m4)dnl
|
|
||||||
sinclude(libtool.m4/lt~obsolete.m4)dnl
|
|
||||||
|
|
||||||
m4_divert_text(HELP_CANON, [[
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||||
NOTE: If PREFIX is not set, then the default values for --sysconfdir
|
|
||||||
and --localstatedir are /etc and /var, respectively.]])
|
|
||||||
m4_divert_text(HELP_END, [[
|
|
||||||
Professional support for BIND is provided by Internet Systems Consortium,
|
|
||||||
Inc. Information about paid support and training options is available at
|
|
||||||
https://www.isc.org/support.
|
|
||||||
|
|
||||||
Help can also often be found on the BIND Users mailing list
|
# This file is free software; the Free Software Foundation
|
||||||
(https://lists.isc.org/mailman/listinfo/bind-users) or in the #bind
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
channel of the Freenode IRC service.]])
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||||
|
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||||
|
dnl serial 11 (pkg-config-0.29.1)
|
||||||
|
dnl
|
||||||
|
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||||
|
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||||
|
dnl
|
||||||
|
dnl This program is free software; you can redistribute it and/or modify
|
||||||
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This program is distributed in the hope that it will be useful, but
|
||||||
|
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
dnl General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with this program; if not, write to the Free Software
|
||||||
|
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
dnl 02111-1307, USA.
|
||||||
|
dnl
|
||||||
|
dnl As a special exception to the GNU General Public License, if you
|
||||||
|
dnl distribute this file as part of a program that contains a
|
||||||
|
dnl configuration script generated by Autoconf, you may include it under
|
||||||
|
dnl the same distribution terms that you use for the rest of that
|
||||||
|
dnl program.
|
||||||
|
|
||||||
|
dnl PKG_PREREQ(MIN-VERSION)
|
||||||
|
dnl -----------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Verify that the version of the pkg-config macros are at least
|
||||||
|
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
|
||||||
|
dnl installed version of pkg-config, this checks the developer's version
|
||||||
|
dnl of pkg.m4 when generating configure.
|
||||||
|
dnl
|
||||||
|
dnl To ensure that this macro is defined, also add:
|
||||||
|
dnl m4_ifndef([PKG_PREREQ],
|
||||||
|
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
|
||||||
|
dnl
|
||||||
|
dnl See the "Since" comment for each macro you use to see what version
|
||||||
|
dnl of the macros you require.
|
||||||
|
m4_defun([PKG_PREREQ],
|
||||||
|
[m4_define([PKG_MACROS_VERSION], [0.29.1])
|
||||||
|
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||||
|
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||||
|
])dnl PKG_PREREQ
|
||||||
|
|
||||||
|
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||||
|
dnl ----------------------------------
|
||||||
|
dnl Since: 0.16
|
||||||
|
dnl
|
||||||
|
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
|
||||||
|
dnl first found in the path. Checks that the version of pkg-config found
|
||||||
|
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
|
||||||
|
dnl used since that's the first version where most current features of
|
||||||
|
dnl pkg-config existed.
|
||||||
|
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||||
|
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||||
|
|
||||||
|
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||||
|
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||||
|
fi
|
||||||
|
if test -n "$PKG_CONFIG"; then
|
||||||
|
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||||
|
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
PKG_CONFIG=""
|
||||||
|
fi
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
|
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------------------------------
|
||||||
|
dnl Since: 0.18
|
||||||
|
dnl
|
||||||
|
dnl Check to see whether a particular set of modules exists. Similar to
|
||||||
|
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||||
|
dnl
|
||||||
|
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
dnl only at the first occurence in configure.ac, so if the first place
|
||||||
|
dnl it's called might be skipped (such as if it is within an "if", you
|
||||||
|
dnl have to call PKG_CHECK_EXISTS manually
|
||||||
|
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
if test -n "$PKG_CONFIG" && \
|
||||||
|
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||||
|
m4_default([$2], [:])
|
||||||
|
m4_ifvaln([$3], [else
|
||||||
|
$3])dnl
|
||||||
|
fi])
|
||||||
|
|
||||||
|
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||||
|
dnl ---------------------------------------------
|
||||||
|
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
|
||||||
|
dnl pkg_failed based on the result.
|
||||||
|
m4_define([_PKG_CONFIG],
|
||||||
|
[if test -n "$$1"; then
|
||||||
|
pkg_cv_[]$1="$$1"
|
||||||
|
elif test -n "$PKG_CONFIG"; then
|
||||||
|
PKG_CHECK_EXISTS([$3],
|
||||||
|
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||||
|
test "x$?" != "x0" && pkg_failed=yes ],
|
||||||
|
[pkg_failed=yes])
|
||||||
|
else
|
||||||
|
pkg_failed=untried
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_CONFIG
|
||||||
|
|
||||||
|
dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
dnl ---------------------------
|
||||||
|
dnl Internal check to see if pkg-config supports short errors.
|
||||||
|
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||||
|
_pkg_short_errors_supported=yes
|
||||||
|
else
|
||||||
|
_pkg_short_errors_supported=no
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl --------------------------------------------------------------
|
||||||
|
dnl Since: 0.4.0
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||||
|
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||||
|
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
pkg_failed=no
|
||||||
|
AC_MSG_CHECKING([for $1])
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||||
|
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||||
|
|
||||||
|
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
|
||||||
|
and $1[]_LIBS to avoid the need to call pkg-config.
|
||||||
|
See the pkg-config man page for more details.])
|
||||||
|
|
||||||
|
if test $pkg_failed = yes; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
else
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
fi
|
||||||
|
# Put the nasty error message in config.log where it belongs
|
||||||
|
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||||
|
|
||||||
|
m4_default([$4], [AC_MSG_ERROR(
|
||||||
|
[Package requirements ($2) were not met:
|
||||||
|
|
||||||
|
$$1_PKG_ERRORS
|
||||||
|
|
||||||
|
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||||
|
installed software in a non-standard prefix.
|
||||||
|
|
||||||
|
_PKG_TEXT])[]dnl
|
||||||
|
])
|
||||||
|
elif test $pkg_failed = untried; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
m4_default([$4], [AC_MSG_FAILURE(
|
||||||
|
[The pkg-config script could not be found or is too old. Make sure it
|
||||||
|
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||||
|
path to pkg-config.
|
||||||
|
|
||||||
|
_PKG_TEXT
|
||||||
|
|
||||||
|
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||||
|
])
|
||||||
|
else
|
||||||
|
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||||
|
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
$3
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl ---------------------------------------------------------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Checks for existence of MODULES and gathers its build flags with
|
||||||
|
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
|
||||||
|
dnl and VARIABLE-PREFIX_LIBS from --libs.
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
|
||||||
|
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
|
||||||
|
dnl configure.ac.
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
_save_PKG_CONFIG=$PKG_CONFIG
|
||||||
|
PKG_CONFIG="$PKG_CONFIG --static"
|
||||||
|
PKG_CHECK_MODULES($@)
|
||||||
|
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES_STATIC
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl -------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable pkgconfigdir as the location where a module
|
||||||
|
dnl should install pkg-config .pc files. By default the directory is
|
||||||
|
dnl $libdir/pkgconfig, but the default can be changed by passing
|
||||||
|
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||||
|
dnl parameter.
|
||||||
|
AC_DEFUN([PKG_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl --------------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||||
|
dnl module should install arch-independent pkg-config .pc files. By
|
||||||
|
dnl default the directory is $datadir/pkgconfig, but the default can be
|
||||||
|
dnl changed by passing DIRECTORY. The user can override through the
|
||||||
|
dnl --with-noarch-pkgconfigdir parameter.
|
||||||
|
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([noarch-pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_noarch_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_NOARCH_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||||
|
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------
|
||||||
|
dnl Since: 0.28
|
||||||
|
dnl
|
||||||
|
dnl Retrieves the value of the pkg-config variable for the given module.
|
||||||
|
AC_DEFUN([PKG_CHECK_VAR],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||||
|
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||||
|
|
||||||
|
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||||
|
])dnl PKG_CHECK_VAR
|
||||||
|
|
||||||
|
m4_include([m4/ax_check_openssl.m4])
|
||||||
|
m4_include([m4/libtool.m4])
|
||||||
|
m4_include([m4/ltoptions.m4])
|
||||||
|
m4_include([m4/ltsugar.m4])
|
||||||
|
m4_include([m4/ltversion.m4])
|
||||||
|
m4_include([m4/lt~obsolete.m4])
|
||||||
|
|||||||
+1
-1
@@ -10,4 +10,4 @@
|
|||||||
# information regarding copyright ownership.
|
# information regarding copyright ownership.
|
||||||
|
|
||||||
# Run this script after modifying configure.in to generate configure
|
# Run this script after modifying configure.in to generate configure
|
||||||
autoreconf -i
|
autoreconf -f -i
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ VERSION=@BIND9_VERSION@
|
|||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = ${NS_INCLUDES} ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISCCFG_INCLUDES} \
|
CINCLUDES = ${NS_INCLUDES} ${BIND9_INCLUDES} ${DNS_INCLUDES} ${ISCCFG_INCLUDES} \
|
||||||
${ISC_INCLUDES} @DST_OPENSSL_INC@
|
${ISC_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES = -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
CDEFINES = -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
NSLIBS = ../../lib/ns/libns.@A@
|
NSLIBS = ../../lib/ns/libns.@A@
|
||||||
|
|
||||||
|
|||||||
+47
-45
@@ -14,7 +14,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <Winsock2.h>
|
#include <Winsock2.h>
|
||||||
@@ -88,15 +90,15 @@ static const char *dbtype[] = { "rbt" };
|
|||||||
|
|
||||||
int debug = 0;
|
int debug = 0;
|
||||||
const char *journal = NULL;
|
const char *journal = NULL;
|
||||||
isc_boolean_t nomerge = ISC_TRUE;
|
bool nomerge = true;
|
||||||
#if CHECK_LOCAL
|
#if CHECK_LOCAL
|
||||||
isc_boolean_t docheckmx = ISC_TRUE;
|
bool docheckmx = true;
|
||||||
isc_boolean_t dochecksrv = ISC_TRUE;
|
bool dochecksrv = true;
|
||||||
isc_boolean_t docheckns = ISC_TRUE;
|
bool docheckns = true;
|
||||||
#else
|
#else
|
||||||
isc_boolean_t docheckmx = ISC_FALSE;
|
bool docheckmx = false;
|
||||||
isc_boolean_t dochecksrv = ISC_FALSE;
|
bool dochecksrv = false;
|
||||||
isc_boolean_t docheckns = ISC_FALSE;
|
bool docheckns = false;
|
||||||
#endif
|
#endif
|
||||||
dns_zoneopt_t zone_options = DNS_ZONEOPT_CHECKNS |
|
dns_zoneopt_t zone_options = DNS_ZONEOPT_CHECKNS |
|
||||||
DNS_ZONEOPT_CHECKMX |
|
DNS_ZONEOPT_CHECKMX |
|
||||||
@@ -142,7 +144,7 @@ add(char *key, int value) {
|
|||||||
|
|
||||||
if (symtab == NULL) {
|
if (symtab == NULL) {
|
||||||
result = isc_symtab_create(sym_mctx, 100, freekey, sym_mctx,
|
result = isc_symtab_create(sym_mctx, 100, freekey, sym_mctx,
|
||||||
ISC_FALSE, &symtab);
|
false, &symtab);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -158,20 +160,20 @@ add(char *key, int value) {
|
|||||||
isc_mem_free(sym_mctx, key);
|
isc_mem_free(sym_mctx, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
logged(char *key, int value) {
|
logged(char *key, int value) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
if (symtab == NULL)
|
if (symtab == NULL)
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
|
|
||||||
result = isc_symtab_lookup(symtab, key, value, NULL);
|
result = isc_symtab_lookup(symtab, key, value, NULL);
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
||||||
dns_rdataset_t *a, dns_rdataset_t *aaaa)
|
dns_rdataset_t *a, dns_rdataset_t *aaaa)
|
||||||
{
|
{
|
||||||
@@ -182,8 +184,8 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
char namebuf[DNS_NAME_FORMATSIZE + 1];
|
char namebuf[DNS_NAME_FORMATSIZE + 1];
|
||||||
char ownerbuf[DNS_NAME_FORMATSIZE];
|
char ownerbuf[DNS_NAME_FORMATSIZE];
|
||||||
char addrbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:123.123.123.123")];
|
char addrbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:123.123.123.123")];
|
||||||
isc_boolean_t answer = ISC_TRUE;
|
bool answer = true;
|
||||||
isc_boolean_t match;
|
bool match;
|
||||||
const char *type;
|
const char *type;
|
||||||
void *ptr = NULL;
|
void *ptr = NULL;
|
||||||
int result;
|
int result;
|
||||||
@@ -232,7 +234,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
ownerbuf, namebuf,
|
ownerbuf, namebuf,
|
||||||
cur->ai_canonname);
|
cur->ai_canonname);
|
||||||
/* XXX950 make fatal for 9.5.0 */
|
/* XXX950 make fatal for 9.5.0 */
|
||||||
/* answer = ISC_FALSE; */
|
/* answer = false; */
|
||||||
add(namebuf, ERR_IS_CNAME);
|
add(namebuf, ERR_IS_CNAME);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -248,7 +250,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
add(namebuf, ERR_NO_ADDRESSES);
|
add(namebuf, ERR_NO_ADDRESSES);
|
||||||
}
|
}
|
||||||
/* XXX950 make fatal for 9.5.0 */
|
/* XXX950 make fatal for 9.5.0 */
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
||||||
@@ -257,7 +259,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
namebuf, gai_strerror(result));
|
namebuf, gai_strerror(result));
|
||||||
add(namebuf, ERR_LOOKUP_FAILURE);
|
add(namebuf, ERR_LOOKUP_FAILURE);
|
||||||
}
|
}
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -268,13 +270,13 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
result = dns_rdataset_first(a);
|
result = dns_rdataset_first(a);
|
||||||
while (result == ISC_R_SUCCESS) {
|
while (result == ISC_R_SUCCESS) {
|
||||||
dns_rdataset_current(a, &rdata);
|
dns_rdataset_current(a, &rdata);
|
||||||
match = ISC_FALSE;
|
match = false;
|
||||||
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
||||||
if (cur->ai_family != AF_INET)
|
if (cur->ai_family != AF_INET)
|
||||||
continue;
|
continue;
|
||||||
ptr = &((struct sockaddr_in *)(cur->ai_addr))->sin_addr;
|
ptr = &((struct sockaddr_in *)(cur->ai_addr))->sin_addr;
|
||||||
if (memcmp(ptr, rdata.data, rdata.length) == 0) {
|
if (memcmp(ptr, rdata.data, rdata.length) == 0) {
|
||||||
match = ISC_TRUE;
|
match = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -286,7 +288,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
addrbuf, sizeof(addrbuf)));
|
addrbuf, sizeof(addrbuf)));
|
||||||
add(namebuf, ERR_EXTRA_A);
|
add(namebuf, ERR_EXTRA_A);
|
||||||
/* XXX950 make fatal for 9.5.0 */
|
/* XXX950 make fatal for 9.5.0 */
|
||||||
/* answer = ISC_FALSE; */
|
/* answer = false; */
|
||||||
}
|
}
|
||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
result = dns_rdataset_next(a);
|
result = dns_rdataset_next(a);
|
||||||
@@ -298,13 +300,13 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
result = dns_rdataset_first(aaaa);
|
result = dns_rdataset_first(aaaa);
|
||||||
while (result == ISC_R_SUCCESS) {
|
while (result == ISC_R_SUCCESS) {
|
||||||
dns_rdataset_current(aaaa, &rdata);
|
dns_rdataset_current(aaaa, &rdata);
|
||||||
match = ISC_FALSE;
|
match = false;
|
||||||
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
||||||
if (cur->ai_family != AF_INET6)
|
if (cur->ai_family != AF_INET6)
|
||||||
continue;
|
continue;
|
||||||
ptr = &((struct sockaddr_in6 *)(cur->ai_addr))->sin6_addr;
|
ptr = &((struct sockaddr_in6 *)(cur->ai_addr))->sin6_addr;
|
||||||
if (memcmp(ptr, rdata.data, rdata.length) == 0) {
|
if (memcmp(ptr, rdata.data, rdata.length) == 0) {
|
||||||
match = ISC_TRUE;
|
match = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -316,7 +318,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
addrbuf, sizeof(addrbuf)));
|
addrbuf, sizeof(addrbuf)));
|
||||||
add(namebuf, ERR_EXTRA_AAAA);
|
add(namebuf, ERR_EXTRA_AAAA);
|
||||||
/* XXX950 make fatal for 9.5.0. */
|
/* XXX950 make fatal for 9.5.0. */
|
||||||
/* answer = ISC_FALSE; */
|
/* answer = false; */
|
||||||
}
|
}
|
||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
result = dns_rdataset_next(aaaa);
|
result = dns_rdataset_next(aaaa);
|
||||||
@@ -327,7 +329,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
* Check that all addresses appear in the glue.
|
* Check that all addresses appear in the glue.
|
||||||
*/
|
*/
|
||||||
if (!logged(namebuf, ERR_MISSING_GLUE)) {
|
if (!logged(namebuf, ERR_MISSING_GLUE)) {
|
||||||
isc_boolean_t missing_glue = ISC_FALSE;
|
bool missing_glue = false;
|
||||||
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
for (cur = ai; cur != NULL; cur = cur->ai_next) {
|
||||||
switch (cur->ai_family) {
|
switch (cur->ai_family) {
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
@@ -343,7 +345,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
match = ISC_FALSE;
|
match = false;
|
||||||
if (dns_rdataset_isassociated(rdataset))
|
if (dns_rdataset_isassociated(rdataset))
|
||||||
result = dns_rdataset_first(rdataset);
|
result = dns_rdataset_first(rdataset);
|
||||||
else
|
else
|
||||||
@@ -351,7 +353,7 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
while (result == ISC_R_SUCCESS && !match) {
|
while (result == ISC_R_SUCCESS && !match) {
|
||||||
dns_rdataset_current(rdataset, &rdata);
|
dns_rdataset_current(rdataset, &rdata);
|
||||||
if (memcmp(ptr, rdata.data, rdata.length) == 0)
|
if (memcmp(ptr, rdata.data, rdata.length) == 0)
|
||||||
match = ISC_TRUE;
|
match = true;
|
||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
result = dns_rdataset_next(rdataset);
|
result = dns_rdataset_next(rdataset);
|
||||||
}
|
}
|
||||||
@@ -362,8 +364,8 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
inet_ntop(cur->ai_family, ptr,
|
inet_ntop(cur->ai_family, ptr,
|
||||||
addrbuf, sizeof(addrbuf)));
|
addrbuf, sizeof(addrbuf)));
|
||||||
/* XXX950 make fatal for 9.5.0. */
|
/* XXX950 make fatal for 9.5.0. */
|
||||||
/* answer = ISC_FALSE; */
|
/* answer = false; */
|
||||||
missing_glue = ISC_TRUE;
|
missing_glue = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (missing_glue)
|
if (missing_glue)
|
||||||
@@ -372,11 +374,11 @@ checkns(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner,
|
|||||||
freeaddrinfo(ai);
|
freeaddrinfo(ai);
|
||||||
return (answer);
|
return (answer);
|
||||||
#else
|
#else
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
||||||
#ifdef USE_GETADDRINFO
|
#ifdef USE_GETADDRINFO
|
||||||
struct addrinfo hints, *ai, *cur;
|
struct addrinfo hints, *ai, *cur;
|
||||||
@@ -384,7 +386,7 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
char ownerbuf[DNS_NAME_FORMATSIZE];
|
char ownerbuf[DNS_NAME_FORMATSIZE];
|
||||||
int result;
|
int result;
|
||||||
int level = ISC_LOG_ERROR;
|
int level = ISC_LOG_ERROR;
|
||||||
isc_boolean_t answer = ISC_TRUE;
|
bool answer = true;
|
||||||
|
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_flags = AI_CANONNAME;
|
hints.ai_flags = AI_CANONNAME;
|
||||||
@@ -428,7 +430,7 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
add(namebuf, ERR_IS_MXCNAME);
|
add(namebuf, ERR_IS_MXCNAME);
|
||||||
}
|
}
|
||||||
if (level == ISC_LOG_ERROR)
|
if (level == ISC_LOG_ERROR)
|
||||||
answer = ISC_FALSE;
|
answer = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
freeaddrinfo(ai);
|
freeaddrinfo(ai);
|
||||||
@@ -446,7 +448,7 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
add(namebuf, ERR_NO_ADDRESSES);
|
add(namebuf, ERR_NO_ADDRESSES);
|
||||||
}
|
}
|
||||||
/* XXX950 make fatal for 9.5.0. */
|
/* XXX950 make fatal for 9.5.0. */
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
||||||
@@ -455,14 +457,14 @@ checkmx(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
namebuf, gai_strerror(result));
|
namebuf, gai_strerror(result));
|
||||||
add(namebuf, ERR_LOOKUP_FAILURE);
|
add(namebuf, ERR_LOOKUP_FAILURE);
|
||||||
}
|
}
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
||||||
#ifdef USE_GETADDRINFO
|
#ifdef USE_GETADDRINFO
|
||||||
struct addrinfo hints, *ai, *cur;
|
struct addrinfo hints, *ai, *cur;
|
||||||
@@ -470,7 +472,7 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
char ownerbuf[DNS_NAME_FORMATSIZE];
|
char ownerbuf[DNS_NAME_FORMATSIZE];
|
||||||
int result;
|
int result;
|
||||||
int level = ISC_LOG_ERROR;
|
int level = ISC_LOG_ERROR;
|
||||||
isc_boolean_t answer = ISC_TRUE;
|
bool answer = true;
|
||||||
|
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_flags = AI_CANONNAME;
|
hints.ai_flags = AI_CANONNAME;
|
||||||
@@ -513,7 +515,7 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
add(namebuf, ERR_IS_SRVCNAME);
|
add(namebuf, ERR_IS_SRVCNAME);
|
||||||
}
|
}
|
||||||
if (level == ISC_LOG_ERROR)
|
if (level == ISC_LOG_ERROR)
|
||||||
answer = ISC_FALSE;
|
answer = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
freeaddrinfo(ai);
|
freeaddrinfo(ai);
|
||||||
@@ -531,7 +533,7 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
add(namebuf, ERR_NO_ADDRESSES);
|
add(namebuf, ERR_NO_ADDRESSES);
|
||||||
}
|
}
|
||||||
/* XXX950 make fatal for 9.5.0. */
|
/* XXX950 make fatal for 9.5.0. */
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
if (!logged(namebuf, ERR_LOOKUP_FAILURE)) {
|
||||||
@@ -540,10 +542,10 @@ checksrv(dns_zone_t *zone, const dns_name_t *name, const dns_name_t *owner) {
|
|||||||
namebuf, gai_strerror(result));
|
namebuf, gai_strerror(result));
|
||||||
add(namebuf, ERR_LOOKUP_FAILURE);
|
add(namebuf, ERR_LOOKUP_FAILURE);
|
||||||
}
|
}
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -650,7 +652,7 @@ check_ttls(dns_zone_t *zone, dns_ttl_t maxttl) {
|
|||||||
if (dbiter != NULL)
|
if (dbiter != NULL)
|
||||||
dns_dbiterator_destroy(&dbiter);
|
dns_dbiterator_destroy(&dbiter);
|
||||||
if (version != NULL)
|
if (version != NULL)
|
||||||
dns_db_closeversion(db, &version, ISC_FALSE);
|
dns_db_closeversion(db, &version, false);
|
||||||
if (db != NULL)
|
if (db != NULL)
|
||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
|
|
||||||
@@ -697,7 +699,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
|
|||||||
CHECK(dns_rdataclass_fromtext(&rdclass, ®ion));
|
CHECK(dns_rdataclass_fromtext(&rdclass, ®ion));
|
||||||
|
|
||||||
dns_zone_setclass(zone, rdclass);
|
dns_zone_setclass(zone, rdclass);
|
||||||
dns_zone_setoption(zone, zone_options, ISC_TRUE);
|
dns_zone_setoption(zone, zone_options, true);
|
||||||
dns_zone_setoption(zone, DNS_ZONEOPT_NOMERGE, nomerge);
|
dns_zone_setoption(zone, DNS_ZONEOPT_NOMERGE, nomerge);
|
||||||
|
|
||||||
dns_zone_setmaxttl(zone, maxttl);
|
dns_zone_setmaxttl(zone, maxttl);
|
||||||
@@ -734,7 +736,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
||||||
dns_masterformat_t fileformat, const dns_master_style_t *style,
|
dns_masterformat_t fileformat, const dns_master_style_t *style,
|
||||||
const isc_uint32_t rawversion)
|
const uint32_t rawversion)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
FILE *output = stdout;
|
FILE *output = stdout;
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/lang.h>
|
#include <isc/lang.h>
|
||||||
#include <isc/stdio.h>
|
#include <isc/stdio.h>
|
||||||
#include <isc/types.h>
|
#include <isc/types.h>
|
||||||
@@ -36,7 +39,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
||||||
dns_masterformat_t fileformat, const dns_master_style_t *style,
|
dns_masterformat_t fileformat, const dns_master_style_t *style,
|
||||||
const isc_uint32_t rawversion);
|
const uint32_t rawversion);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
void InitSockets(void);
|
void InitSockets(void);
|
||||||
@@ -45,10 +48,10 @@ void DestroySockets(void);
|
|||||||
|
|
||||||
extern int debug;
|
extern int debug;
|
||||||
extern const char *journal;
|
extern const char *journal;
|
||||||
extern isc_boolean_t nomerge;
|
extern bool nomerge;
|
||||||
extern isc_boolean_t docheckmx;
|
extern bool docheckmx;
|
||||||
extern isc_boolean_t docheckns;
|
extern bool docheckns;
|
||||||
extern isc_boolean_t dochecksrv;
|
extern bool dochecksrv;
|
||||||
extern dns_zoneopt_t zone_options;
|
extern dns_zoneopt_t zone_options;
|
||||||
|
|
||||||
ISC_LANG_ENDDECLS
|
ISC_LANG_ENDDECLS
|
||||||
|
|||||||
+23
-22
@@ -15,6 +15,7 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -91,18 +92,18 @@ directory_callback(const char *clausename, const cfg_obj_t *obj, void *arg) {
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
get_maps(const cfg_obj_t **maps, const char *name, const cfg_obj_t **obj) {
|
get_maps(const cfg_obj_t **maps, const char *name, const cfg_obj_t **obj) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
if (maps[i] == NULL)
|
if (maps[i] == NULL)
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
if (cfg_map_get(maps[i], name, obj) == ISC_R_SUCCESS)
|
if (cfg_map_get(maps[i], name, obj) == ISC_R_SUCCESS)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
|
get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
|
||||||
const cfg_listelt_t *element;
|
const cfg_listelt_t *element;
|
||||||
const cfg_obj_t *checknames;
|
const cfg_obj_t *checknames;
|
||||||
@@ -113,14 +114,14 @@ get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
|
|||||||
|
|
||||||
for (i = 0;; i++) {
|
for (i = 0;; i++) {
|
||||||
if (maps[i] == NULL)
|
if (maps[i] == NULL)
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
checknames = NULL;
|
checknames = NULL;
|
||||||
result = cfg_map_get(maps[i], "check-names", &checknames);
|
result = cfg_map_get(maps[i], "check-names", &checknames);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
continue;
|
continue;
|
||||||
if (checknames != NULL && !cfg_obj_islist(checknames)) {
|
if (checknames != NULL && !cfg_obj_islist(checknames)) {
|
||||||
*obj = checknames;
|
*obj = checknames;
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
for (element = cfg_list_first(checknames);
|
for (element = cfg_list_first(checknames);
|
||||||
element != NULL;
|
element != NULL;
|
||||||
@@ -135,7 +136,7 @@ get_checknames(const cfg_obj_t **maps, const cfg_obj_t **obj) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*obj = cfg_tuple_get(value, "mode");
|
*obj = cfg_tuple_get(value, "mode");
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,7 +169,7 @@ configure_hint(const char *zfile, const char *zclass, isc_mem_t *mctx) {
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
configure_zone(const char *vclass, const char *view,
|
configure_zone(const char *vclass, const char *view,
|
||||||
const cfg_obj_t *zconfig, const cfg_obj_t *vconfig,
|
const cfg_obj_t *zconfig, const cfg_obj_t *vconfig,
|
||||||
const cfg_obj_t *config, isc_mem_t *mctx, isc_boolean_t list)
|
const cfg_obj_t *config, isc_mem_t *mctx, bool list)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -420,7 +421,7 @@ configure_zone(const char *vclass, const char *view,
|
|||||||
/*% configure a view */
|
/*% configure a view */
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
configure_view(const char *vclass, const char *view, const cfg_obj_t *config,
|
configure_view(const char *vclass, const char *view, const cfg_obj_t *config,
|
||||||
const cfg_obj_t *vconfig, isc_mem_t *mctx, isc_boolean_t list)
|
const cfg_obj_t *vconfig, isc_mem_t *mctx, bool list)
|
||||||
{
|
{
|
||||||
const cfg_listelt_t *element;
|
const cfg_listelt_t *element;
|
||||||
const cfg_obj_t *voptions;
|
const cfg_obj_t *voptions;
|
||||||
@@ -469,7 +470,7 @@ config_getclass(const cfg_obj_t *classobj, dns_rdataclass_t defclass,
|
|||||||
/*% load zones from the configuration */
|
/*% load zones from the configuration */
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx,
|
load_zones_fromconfig(const cfg_obj_t *config, isc_mem_t *mctx,
|
||||||
isc_boolean_t list_zones)
|
bool list_zones)
|
||||||
{
|
{
|
||||||
const cfg_listelt_t *element;
|
const cfg_listelt_t *element;
|
||||||
const cfg_obj_t *views;
|
const cfg_obj_t *views;
|
||||||
@@ -537,12 +538,12 @@ main(int argc, char **argv) {
|
|||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
int exit_status = 0;
|
int exit_status = 0;
|
||||||
isc_boolean_t load_zones = ISC_FALSE;
|
bool load_zones = false;
|
||||||
isc_boolean_t list_zones = ISC_FALSE;
|
bool list_zones = false;
|
||||||
isc_boolean_t print = ISC_FALSE;
|
bool print = false;
|
||||||
unsigned int flags = 0;
|
unsigned int flags = 0;
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Process memory debugging argument first.
|
* Process memory debugging argument first.
|
||||||
@@ -566,7 +567,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
@@ -577,11 +578,11 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'j':
|
case 'j':
|
||||||
nomerge = ISC_FALSE;
|
nomerge = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
list_zones = ISC_TRUE;
|
list_zones = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
@@ -597,7 +598,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
print = ISC_TRUE;
|
print = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'v':
|
case 'v':
|
||||||
@@ -609,10 +610,10 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'z':
|
case 'z':
|
||||||
load_zones = ISC_TRUE;
|
load_zones = true;
|
||||||
docheckmx = ISC_FALSE;
|
docheckmx = false;
|
||||||
docheckns = ISC_FALSE;
|
docheckns = false;
|
||||||
dochecksrv = ISC_FALSE;
|
dochecksrv = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
|
|||||||
+25
-23
@@ -14,7 +14,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include <isc/app.h>
|
#include <isc/app.h>
|
||||||
#include <isc/commandline.h>
|
#include <isc/commandline.h>
|
||||||
@@ -106,10 +108,10 @@ main(int argc, char **argv) {
|
|||||||
dns_masterformat_t inputformat = dns_masterformat_text;
|
dns_masterformat_t inputformat = dns_masterformat_text;
|
||||||
dns_masterformat_t outputformat = dns_masterformat_text;
|
dns_masterformat_t outputformat = dns_masterformat_text;
|
||||||
dns_masterrawheader_t header;
|
dns_masterrawheader_t header;
|
||||||
isc_uint32_t rawversion = 1, serialnum = 0;
|
uint32_t rawversion = 1, serialnum = 0;
|
||||||
dns_ttl_t maxttl = 0;
|
dns_ttl_t maxttl = 0;
|
||||||
isc_boolean_t snset = ISC_FALSE;
|
bool snset = false;
|
||||||
isc_boolean_t logdump = ISC_FALSE;
|
bool logdump = false;
|
||||||
FILE *errout = stdout;
|
FILE *errout = stdout;
|
||||||
char *endp;
|
char *endp;
|
||||||
|
|
||||||
@@ -159,7 +161,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
#define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0)
|
#define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0)
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
while ((c = isc_commandline_parse(argc, argv,
|
while ((c = isc_commandline_parse(argc, argv,
|
||||||
"c:df:hi:jJ:k:L:l:m:n:qr:s:t:o:vw:DF:M:S:T:W:"))
|
"c:df:hi:jJ:k:L:l:m:n:qr:s:t:o:vw:DF:M:S:T:W:"))
|
||||||
@@ -177,33 +179,33 @@ main(int argc, char **argv) {
|
|||||||
if (ARGCMP("full")) {
|
if (ARGCMP("full")) {
|
||||||
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY |
|
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY |
|
||||||
DNS_ZONEOPT_CHECKSIBLING;
|
DNS_ZONEOPT_CHECKSIBLING;
|
||||||
docheckmx = ISC_TRUE;
|
docheckmx = true;
|
||||||
docheckns = ISC_TRUE;
|
docheckns = true;
|
||||||
dochecksrv = ISC_TRUE;
|
dochecksrv = true;
|
||||||
} else if (ARGCMP("full-sibling")) {
|
} else if (ARGCMP("full-sibling")) {
|
||||||
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
||||||
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
||||||
docheckmx = ISC_TRUE;
|
docheckmx = true;
|
||||||
docheckns = ISC_TRUE;
|
docheckns = true;
|
||||||
dochecksrv = ISC_TRUE;
|
dochecksrv = true;
|
||||||
} else if (ARGCMP("local")) {
|
} else if (ARGCMP("local")) {
|
||||||
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
||||||
zone_options |= DNS_ZONEOPT_CHECKSIBLING;
|
zone_options |= DNS_ZONEOPT_CHECKSIBLING;
|
||||||
docheckmx = ISC_FALSE;
|
docheckmx = false;
|
||||||
docheckns = ISC_FALSE;
|
docheckns = false;
|
||||||
dochecksrv = ISC_FALSE;
|
dochecksrv = false;
|
||||||
} else if (ARGCMP("local-sibling")) {
|
} else if (ARGCMP("local-sibling")) {
|
||||||
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
zone_options |= DNS_ZONEOPT_CHECKINTEGRITY;
|
||||||
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
||||||
docheckmx = ISC_FALSE;
|
docheckmx = false;
|
||||||
docheckns = ISC_FALSE;
|
docheckns = false;
|
||||||
dochecksrv = ISC_FALSE;
|
dochecksrv = false;
|
||||||
} else if (ARGCMP("none")) {
|
} else if (ARGCMP("none")) {
|
||||||
zone_options &= ~DNS_ZONEOPT_CHECKINTEGRITY;
|
zone_options &= ~DNS_ZONEOPT_CHECKINTEGRITY;
|
||||||
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
||||||
docheckmx = ISC_FALSE;
|
docheckmx = false;
|
||||||
docheckns = ISC_FALSE;
|
docheckns = false;
|
||||||
dochecksrv = ISC_FALSE;
|
dochecksrv = false;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "invalid argument to -i: %s\n",
|
fprintf(stderr, "invalid argument to -i: %s\n",
|
||||||
isc_commandline_argument);
|
isc_commandline_argument);
|
||||||
@@ -220,12 +222,12 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'j':
|
case 'j':
|
||||||
nomerge = ISC_FALSE;
|
nomerge = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'J':
|
case 'J':
|
||||||
journal = isc_commandline_argument;
|
journal = isc_commandline_argument;
|
||||||
nomerge = ISC_FALSE;
|
nomerge = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'k':
|
case 'k':
|
||||||
@@ -246,7 +248,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'L':
|
case 'L':
|
||||||
snset = ISC_TRUE;
|
snset = true;
|
||||||
endp = NULL;
|
endp = NULL;
|
||||||
serialnum = strtol(isc_commandline_argument, &endp, 0);
|
serialnum = strtol(isc_commandline_argument, &endp, 0);
|
||||||
if (*endp != '\0') {
|
if (*endp != '\0') {
|
||||||
@@ -505,7 +507,7 @@ main(int argc, char **argv) {
|
|||||||
strcmp(output_filename, "/dev/fd/1") == 0 ||
|
strcmp(output_filename, "/dev/fd/1") == 0 ||
|
||||||
strcmp(output_filename, "/dev/stdout") == 0)) {
|
strcmp(output_filename, "/dev/stdout") == 0)) {
|
||||||
errout = stderr;
|
errout = stderr;
|
||||||
logdump = ISC_FALSE;
|
logdump = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isc_commandline_index + 2 != argc)
|
if (isc_commandline_index + 2 != argc)
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -87,7 +87,7 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ CWARNINGS =
|
|||||||
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
|
|
||||||
|
|||||||
+11
-10
@@ -19,8 +19,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/assertions.h>
|
#include <isc/assertions.h>
|
||||||
#include <isc/base64.h>
|
#include <isc/base64.h>
|
||||||
@@ -36,7 +37,7 @@
|
|||||||
#include <isc/time.h>
|
#include <isc/time.h>
|
||||||
#include <isc/util.h>
|
#include <isc/util.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
static char program[256];
|
static char program[256];
|
||||||
const char *progname;
|
const char *progname;
|
||||||
static enum { progmode_keygen, progmode_confgen} progmode;
|
static enum { progmode_keygen, progmode_confgen} progmode;
|
||||||
isc_boolean_t verbose = ISC_FALSE; /* needed by util.c but not used here */
|
bool verbose = false; /* needed by util.c but not used here */
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE static void
|
ISC_PLATFORM_NORETURN_PRE static void
|
||||||
usage(int status) ISC_PLATFORM_NORETURN_POST;
|
usage(int status) ISC_PLATFORM_NORETURN_POST;
|
||||||
@@ -87,8 +88,8 @@ Usage:\n\
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
isc_boolean_t show_final_mem = ISC_FALSE;
|
bool show_final_mem = false;
|
||||||
isc_boolean_t quiet = ISC_FALSE;
|
bool quiet = false;
|
||||||
isc_buffer_t key_txtbuffer;
|
isc_buffer_t key_txtbuffer;
|
||||||
char key_txtsecret[256];
|
char key_txtsecret[256];
|
||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
@@ -102,7 +103,7 @@ main(int argc, char **argv) {
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
int ch;
|
int ch;
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
@@ -124,13 +125,13 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
if (PROGCMP("tsig-keygen")) {
|
if (PROGCMP("tsig-keygen")) {
|
||||||
progmode = progmode_keygen;
|
progmode = progmode_keygen;
|
||||||
quiet = ISC_TRUE;
|
quiet = true;
|
||||||
} else if (PROGCMP("ddns-confgen"))
|
} else if (PROGCMP("ddns-confgen"))
|
||||||
progmode = progmode_confgen;
|
progmode = progmode_confgen;
|
||||||
else
|
else
|
||||||
INSIST(0);
|
INSIST(0);
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv,
|
while ((ch = isc_commandline_parse(argc, argv,
|
||||||
"a:hk:Mmr:qs:y:z:")) != -1) {
|
"a:hk:Mmr:qs:y:z:")) != -1) {
|
||||||
@@ -155,11 +156,11 @@ main(int argc, char **argv) {
|
|||||||
isc_mem_debugging = ISC_MEM_DEBUGTRACE;
|
isc_mem_debugging = ISC_MEM_DEBUGTRACE;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
show_final_mem = ISC_TRUE;
|
show_final_mem = true;
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
if (progmode == progmode_confgen)
|
if (progmode == progmode_confgen)
|
||||||
quiet = ISC_TRUE;
|
quiet = true;
|
||||||
else
|
else
|
||||||
usage(1);
|
usage(1);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -43,10 +43,8 @@
|
|||||||
const char *
|
const char *
|
||||||
alg_totext(dns_secalg_t alg) {
|
alg_totext(dns_secalg_t alg) {
|
||||||
switch (alg) {
|
switch (alg) {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
case DST_ALG_HMACMD5:
|
case DST_ALG_HMACMD5:
|
||||||
return "hmac-md5";
|
return "hmac-md5";
|
||||||
#endif
|
|
||||||
case DST_ALG_HMACSHA1:
|
case DST_ALG_HMACSHA1:
|
||||||
return "hmac-sha1";
|
return "hmac-sha1";
|
||||||
case DST_ALG_HMACSHA224:
|
case DST_ALG_HMACSHA224:
|
||||||
@@ -71,10 +69,8 @@ alg_fromtext(const char *name) {
|
|||||||
if (strncasecmp(p, "hmac-", 5) == 0)
|
if (strncasecmp(p, "hmac-", 5) == 0)
|
||||||
p = &name[5];
|
p = &name[5];
|
||||||
|
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
if (strcasecmp(p, "md5") == 0)
|
if (strcasecmp(p, "md5") == 0)
|
||||||
return DST_ALG_HMACMD5;
|
return DST_ALG_HMACMD5;
|
||||||
#endif
|
|
||||||
if (strcasecmp(p, "sha1") == 0)
|
if (strcasecmp(p, "sha1") == 0)
|
||||||
return DST_ALG_HMACSHA1;
|
return DST_ALG_HMACSHA1;
|
||||||
if (strcasecmp(p, "sha224") == 0)
|
if (strcasecmp(p, "sha224") == 0)
|
||||||
@@ -124,9 +120,7 @@ generate_key(isc_mem_t *mctx, dns_secalg_t alg, int keysize,
|
|||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
|
|
||||||
switch (alg) {
|
switch (alg) {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
case DST_ALG_HMACMD5:
|
case DST_ALG_HMACMD5:
|
||||||
#endif
|
|
||||||
case DST_ALG_HMACSHA1:
|
case DST_ALG_HMACSHA1:
|
||||||
case DST_ALG_HMACSHA224:
|
case DST_ALG_HMACSHA224:
|
||||||
case DST_ALG_HMACSHA256:
|
case DST_ALG_HMACSHA256:
|
||||||
|
|||||||
@@ -22,8 +22,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/assertions.h>
|
#include <isc/assertions.h>
|
||||||
#include <isc/base64.h>
|
#include <isc/base64.h>
|
||||||
@@ -57,7 +58,7 @@
|
|||||||
static char program[256];
|
static char program[256];
|
||||||
const char *progname;
|
const char *progname;
|
||||||
|
|
||||||
isc_boolean_t verbose = ISC_FALSE;
|
bool verbose = false;
|
||||||
|
|
||||||
const char *keyfile, *keydef;
|
const char *keyfile, *keydef;
|
||||||
|
|
||||||
@@ -87,7 +88,7 @@ Usage:\n\
|
|||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_boolean_t show_final_mem = ISC_FALSE;
|
bool show_final_mem = false;
|
||||||
isc_buffer_t key_txtbuffer;
|
isc_buffer_t key_txtbuffer;
|
||||||
char key_txtsecret[256];
|
char key_txtsecret[256];
|
||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
@@ -104,7 +105,7 @@ main(int argc, char **argv) {
|
|||||||
struct in6_addr addr6_dummy;
|
struct in6_addr addr6_dummy;
|
||||||
char *chrootdir = NULL;
|
char *chrootdir = NULL;
|
||||||
char *user = NULL;
|
char *user = NULL;
|
||||||
isc_boolean_t keyonly = ISC_FALSE;
|
bool keyonly = false;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
keydef = keyfile = RNDC_KEYFILE;
|
keydef = keyfile = RNDC_KEYFILE;
|
||||||
@@ -119,14 +120,14 @@ main(int argc, char **argv) {
|
|||||||
serveraddr = DEFAULT_SERVER;
|
serveraddr = DEFAULT_SERVER;
|
||||||
port = DEFAULT_PORT;
|
port = DEFAULT_PORT;
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv,
|
while ((ch = isc_commandline_parse(argc, argv,
|
||||||
"aA:b:c:hk:Mmp:r:s:t:u:Vy")) != -1)
|
"aA:b:c:hk:Mmp:r:s:t:u:Vy")) != -1)
|
||||||
{
|
{
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'a':
|
case 'a':
|
||||||
keyonly = ISC_TRUE;
|
keyonly = true;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
algname = isc_commandline_argument;
|
algname = isc_commandline_argument;
|
||||||
@@ -153,7 +154,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
show_final_mem = ISC_TRUE;
|
show_final_mem = true;
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
port = strtol(isc_commandline_argument, &p, 10);
|
port = strtol(isc_commandline_argument, &p, 10);
|
||||||
@@ -177,7 +178,7 @@ main(int argc, char **argv) {
|
|||||||
user = isc_commandline_argument;
|
user = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
verbose = ISC_TRUE;
|
verbose = true;
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
if (isc_commandline_option != '?') {
|
if (isc_commandline_option != '?') {
|
||||||
|
|||||||
+2
-2
@@ -15,15 +15,15 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <isc/boolean.h>
|
|
||||||
#include <isc/print.h>
|
#include <isc/print.h>
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
extern isc_boolean_t verbose;
|
extern bool verbose;
|
||||||
extern const char *progname;
|
extern const char *progname;
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ VERSION=@BIND9_VERSION@
|
|||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} ${ISC_INCLUDES} \
|
||||||
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @DST_OPENSSL_INC@
|
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\" \
|
CDEFINES = -DVERSION=\"${VERSION}\" \
|
||||||
-DSYSCONFDIR=\"${sysconfdir}\"
|
-DSYSCONFDIR=\"${sysconfdir}\"
|
||||||
@@ -24,8 +24,8 @@ CWARNINGS =
|
|||||||
|
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
IRSLIBS = ../../lib/irs/libirs.@A@
|
IRSLIBS = ../../lib/irs/libirs.@A@
|
||||||
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
|
|||||||
+76
-74
@@ -24,7 +24,9 @@
|
|||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@@ -94,40 +96,40 @@ static const char *port = "53";
|
|||||||
static isc_sockaddr_t *srcaddr4 = NULL, *srcaddr6 = NULL;
|
static isc_sockaddr_t *srcaddr4 = NULL, *srcaddr6 = NULL;
|
||||||
static isc_sockaddr_t a4, a6;
|
static isc_sockaddr_t a4, a6;
|
||||||
static char *curqname = NULL, *qname = NULL;
|
static char *curqname = NULL, *qname = NULL;
|
||||||
static isc_boolean_t classset = ISC_FALSE;
|
static bool classset = false;
|
||||||
static dns_rdatatype_t qtype = dns_rdatatype_none;
|
static dns_rdatatype_t qtype = dns_rdatatype_none;
|
||||||
static isc_boolean_t typeset = ISC_FALSE;
|
static bool typeset = false;
|
||||||
|
|
||||||
static unsigned int styleflags = 0;
|
static unsigned int styleflags = 0;
|
||||||
static isc_uint32_t splitwidth = 0xffffffff;
|
static uint32_t splitwidth = 0xffffffff;
|
||||||
static isc_boolean_t
|
static bool
|
||||||
showcomments = ISC_TRUE,
|
showcomments = true,
|
||||||
showdnssec = ISC_TRUE,
|
showdnssec = true,
|
||||||
showtrust = ISC_TRUE,
|
showtrust = true,
|
||||||
rrcomments = ISC_TRUE,
|
rrcomments = true,
|
||||||
noclass = ISC_FALSE,
|
noclass = false,
|
||||||
nocrypto = ISC_FALSE,
|
nocrypto = false,
|
||||||
nottl = ISC_FALSE,
|
nottl = false,
|
||||||
multiline = ISC_FALSE,
|
multiline = false,
|
||||||
short_form = ISC_FALSE,
|
short_form = false,
|
||||||
print_unknown_format = ISC_FALSE;
|
print_unknown_format = false;
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
resolve_trace = ISC_FALSE,
|
resolve_trace = false,
|
||||||
validator_trace = ISC_FALSE,
|
validator_trace = false,
|
||||||
message_trace = ISC_FALSE;
|
message_trace = false;
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
use_ipv4 = ISC_TRUE,
|
use_ipv4 = true,
|
||||||
use_ipv6 = ISC_TRUE;
|
use_ipv6 = true;
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
cdflag = ISC_FALSE,
|
cdflag = false,
|
||||||
no_sigs = ISC_FALSE,
|
no_sigs = false,
|
||||||
root_validation = ISC_TRUE,
|
root_validation = true,
|
||||||
dlv_validation = ISC_TRUE;
|
dlv_validation = true;
|
||||||
|
|
||||||
static isc_boolean_t use_tcp = ISC_FALSE;
|
static bool use_tcp = false;
|
||||||
|
|
||||||
static char *anchorfile = NULL;
|
static char *anchorfile = NULL;
|
||||||
static char *trust_anchor = NULL;
|
static char *trust_anchor = NULL;
|
||||||
@@ -144,10 +146,10 @@ static char anchortext[] = MANAGED_KEYS;
|
|||||||
* Static function prototypes
|
* Static function prototypes
|
||||||
*/
|
*/
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
get_reverse(char *reverse, size_t len, char *value, isc_boolean_t strict);
|
get_reverse(char *reverse, size_t len, char *value, bool strict);
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
|
parse_uint(uint32_t *uip, const char *value, uint32_t max,
|
||||||
const char *desc);
|
const char *desc);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -408,7 +410,7 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
{
|
{
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
static dns_trust_t trust;
|
static dns_trust_t trust;
|
||||||
static isc_boolean_t first = ISC_TRUE;
|
static bool first = true;
|
||||||
isc_buffer_t target;
|
isc_buffer_t target;
|
||||||
isc_region_t r;
|
isc_region_t r;
|
||||||
char *t = NULL;
|
char *t = NULL;
|
||||||
@@ -430,7 +432,7 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner,
|
|||||||
putchar('\n');
|
putchar('\n');
|
||||||
print_status(rdataset);
|
print_status(rdataset);
|
||||||
trust = rdataset->trust;
|
trust = rdataset->trust;
|
||||||
first = ISC_FALSE;
|
first = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@@ -566,7 +568,7 @@ convert_name(dns_fixedname_t *fn, dns_name_t **name, const char *text) {
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
||||||
dns_rdata_dnskey_t keystruct;
|
dns_rdata_dnskey_t keystruct;
|
||||||
isc_uint32_t flags, proto, alg;
|
uint32_t flags, proto, alg;
|
||||||
const char *keystr, *keynamestr;
|
const char *keystr, *keynamestr;
|
||||||
unsigned char keydata[4096];
|
unsigned char keydata[4096];
|
||||||
isc_buffer_t keydatabuf;
|
isc_buffer_t keydatabuf;
|
||||||
@@ -576,7 +578,7 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
|||||||
dns_fixedname_t fkeyname;
|
dns_fixedname_t fkeyname;
|
||||||
dns_name_t *keyname;
|
dns_name_t *keyname;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t match_root = ISC_FALSE, match_dlv = ISC_FALSE;
|
bool match_root = false, match_dlv = false;
|
||||||
|
|
||||||
keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name"));
|
keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name"));
|
||||||
CHECK(convert_name(&fkeyname, &keyname, keynamestr));
|
CHECK(convert_name(&fkeyname, &keyname, keynamestr));
|
||||||
@@ -621,9 +623,9 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) {
|
|||||||
if (alg > 0xff)
|
if (alg > 0xff)
|
||||||
CHECK(ISC_R_RANGE);
|
CHECK(ISC_R_RANGE);
|
||||||
|
|
||||||
keystruct.flags = (isc_uint16_t)flags;
|
keystruct.flags = (uint16_t)flags;
|
||||||
keystruct.protocol = (isc_uint8_t)proto;
|
keystruct.protocol = (uint8_t)proto;
|
||||||
keystruct.algorithm = (isc_uint8_t)alg;
|
keystruct.algorithm = (uint8_t)alg;
|
||||||
|
|
||||||
isc_buffer_init(&keydatabuf, keydata, sizeof(keydata));
|
isc_buffer_init(&keydatabuf, keydata, sizeof(keydata));
|
||||||
isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata));
|
isc_buffer_init(&rrdatabuf, rrdata, sizeof(rrdata));
|
||||||
@@ -778,7 +780,7 @@ addserver(dns_client_t *client) {
|
|||||||
struct in6_addr in6;
|
struct in6_addr in6;
|
||||||
isc_sockaddr_t *sa;
|
isc_sockaddr_t *sa;
|
||||||
isc_sockaddrlist_t servers;
|
isc_sockaddrlist_t servers;
|
||||||
isc_uint32_t destport;
|
uint32_t destport;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_name_t *name = NULL;
|
dns_name_t *name = NULL;
|
||||||
|
|
||||||
@@ -869,7 +871,7 @@ findserver(dns_client_t *client) {
|
|||||||
irs_resconf_t *resconf = NULL;
|
irs_resconf_t *resconf = NULL;
|
||||||
isc_sockaddrlist_t *nameservers;
|
isc_sockaddrlist_t *nameservers;
|
||||||
isc_sockaddr_t *sa, *next;
|
isc_sockaddr_t *sa, *next;
|
||||||
isc_uint32_t destport;
|
uint32_t destport;
|
||||||
|
|
||||||
result = parse_uint(&destport, port, 0xffff, "port");
|
result = parse_uint(&destport, port, 0xffff, "port");
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -944,9 +946,9 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
|
parse_uint(uint32_t *uip, const char *value, uint32_t max,
|
||||||
const char *desc) {
|
const char *desc) {
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
isc_result_t result = isc_parse_uint32(&n, value, 10);
|
isc_result_t result = isc_parse_uint32(&n, value, 10);
|
||||||
if (result == ISC_R_SUCCESS && n > max)
|
if (result == ISC_R_SUCCESS && n > max)
|
||||||
result = ISC_R_RANGE;
|
result = ISC_R_RANGE;
|
||||||
@@ -963,7 +965,7 @@ static void
|
|||||||
plus_option(char *option) {
|
plus_option(char *option) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
char *cmd, *value, *last = NULL;
|
char *cmd, *value, *last = NULL;
|
||||||
isc_boolean_t state = ISC_TRUE;
|
bool state = true;
|
||||||
|
|
||||||
INSIST(option != NULL);
|
INSIST(option != NULL);
|
||||||
|
|
||||||
@@ -974,7 +976,7 @@ plus_option(char *option) {
|
|||||||
}
|
}
|
||||||
if (strncasecmp(cmd, "no", 2)==0) {
|
if (strncasecmp(cmd, "no", 2)==0) {
|
||||||
cmd += 2;
|
cmd += 2;
|
||||||
state = ISC_FALSE;
|
state = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = strtok_r(NULL, "\0", &last);
|
value = strtok_r(NULL, "\0", &last);
|
||||||
@@ -1001,7 +1003,7 @@ plus_option(char *option) {
|
|||||||
break;
|
break;
|
||||||
case 'l': /* class */
|
case 'l': /* class */
|
||||||
FULLCHECK("class");
|
FULLCHECK("class");
|
||||||
noclass = ISC_TF(!state);
|
noclass = !state;
|
||||||
break;
|
break;
|
||||||
case 'o': /* comments */
|
case 'o': /* comments */
|
||||||
FULLCHECK("comments");
|
FULLCHECK("comments");
|
||||||
@@ -1009,7 +1011,7 @@ plus_option(char *option) {
|
|||||||
break;
|
break;
|
||||||
case 'r': /* crypto */
|
case 'r': /* crypto */
|
||||||
FULLCHECK("crypto");
|
FULLCHECK("crypto");
|
||||||
nocrypto = ISC_TF(!state);
|
nocrypto = !state;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto invalid_option;
|
goto invalid_option;
|
||||||
@@ -1082,10 +1084,10 @@ plus_option(char *option) {
|
|||||||
FULLCHECK("short");
|
FULLCHECK("short");
|
||||||
short_form = state;
|
short_form = state;
|
||||||
if (short_form) {
|
if (short_form) {
|
||||||
multiline = ISC_FALSE;
|
multiline = false;
|
||||||
showcomments = ISC_FALSE;
|
showcomments = false;
|
||||||
showtrust = ISC_FALSE;
|
showtrust = false;
|
||||||
showdnssec = ISC_FALSE;
|
showdnssec = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'p': /* split */
|
case 'p': /* split */
|
||||||
@@ -1137,7 +1139,7 @@ plus_option(char *option) {
|
|||||||
break;
|
break;
|
||||||
case 't': /* ttl */
|
case 't': /* ttl */
|
||||||
FULLCHECK("ttl");
|
FULLCHECK("ttl");
|
||||||
nottl = ISC_TF(!state);
|
nottl = !state;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto invalid_option;
|
goto invalid_option;
|
||||||
@@ -1165,11 +1167,11 @@ plus_option(char *option) {
|
|||||||
* options: "46a:b:c:d:himp:q:t:vx:";
|
* options: "46a:b:c:d:himp:q:t:vx:";
|
||||||
*/
|
*/
|
||||||
static const char *single_dash_opts = "46himv";
|
static const char *single_dash_opts = "46himv";
|
||||||
static isc_boolean_t
|
static bool
|
||||||
dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
dash_option(char *option, char *next, bool *open_type_class) {
|
||||||
char opt, *value;
|
char opt, *value;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t value_from_next;
|
bool value_from_next;
|
||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
@@ -1177,7 +1179,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
struct in_addr in4;
|
struct in_addr in4;
|
||||||
struct in6_addr in6;
|
struct in6_addr in6;
|
||||||
in_port_t srcport;
|
in_port_t srcport;
|
||||||
isc_uint32_t num;
|
uint32_t num;
|
||||||
char *hash;
|
char *hash;
|
||||||
|
|
||||||
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
||||||
@@ -1193,7 +1195,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
fatal("IPv4 networking not available");
|
fatal("IPv4 networking not available");
|
||||||
if (use_ipv6) {
|
if (use_ipv6) {
|
||||||
isc_net_disableipv6();
|
isc_net_disableipv6();
|
||||||
use_ipv6 = ISC_FALSE;
|
use_ipv6 = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
@@ -1201,7 +1203,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
fatal("IPv6 networking not available");
|
fatal("IPv6 networking not available");
|
||||||
if (use_ipv4) {
|
if (use_ipv4) {
|
||||||
isc_net_disableipv4();
|
isc_net_disableipv4();
|
||||||
use_ipv4 = ISC_FALSE;
|
use_ipv4 = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
@@ -1209,9 +1211,9 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
exit(0);
|
exit(0);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
case 'i':
|
case 'i':
|
||||||
no_sigs = ISC_TRUE;
|
no_sigs = true;
|
||||||
dlv_validation = ISC_FALSE;
|
dlv_validation = false;
|
||||||
root_validation = ISC_FALSE;
|
root_validation = false;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
/* handled in preparse_args() */
|
/* handled in preparse_args() */
|
||||||
@@ -1226,14 +1228,14 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
if (strlen(option) > 1U)
|
if (strlen(option) > 1U)
|
||||||
option = &option[1];
|
option = &option[1];
|
||||||
else
|
else
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
opt = option[0];
|
opt = option[0];
|
||||||
if (strlen(option) > 1U) {
|
if (strlen(option) > 1U) {
|
||||||
value_from_next = ISC_FALSE;
|
value_from_next = false;
|
||||||
value = &option[1];
|
value = &option[1];
|
||||||
} else {
|
} else {
|
||||||
value_from_next = ISC_TRUE;
|
value_from_next = true;
|
||||||
value = next;
|
value = next;
|
||||||
}
|
}
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
@@ -1279,13 +1281,13 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
if (classset)
|
if (classset)
|
||||||
warn("extra query class");
|
warn("extra query class");
|
||||||
|
|
||||||
*open_type_class = ISC_FALSE;
|
*open_type_class = false;
|
||||||
tr.base = value;
|
tr.base = value;
|
||||||
tr.length = strlen(value);
|
tr.length = strlen(value);
|
||||||
result = dns_rdataclass_fromtext(&rdclass,
|
result = dns_rdataclass_fromtext(&rdclass,
|
||||||
(isc_textregion_t *)&tr);
|
(isc_textregion_t *)&tr);
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
classset = ISC_TRUE;
|
classset = true;
|
||||||
else if (rdclass != dns_rdataclass_in)
|
else if (rdclass != dns_rdataclass_in)
|
||||||
warn("ignoring non-IN query class");
|
warn("ignoring non-IN query class");
|
||||||
else
|
else
|
||||||
@@ -1310,7 +1312,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 't':
|
case 't':
|
||||||
*open_type_class = ISC_FALSE;
|
*open_type_class = false;
|
||||||
tr.base = value;
|
tr.base = value;
|
||||||
tr.length = strlen(value);
|
tr.length = strlen(value);
|
||||||
result = dns_rdatatype_fromtext(&rdtype,
|
result = dns_rdatatype_fromtext(&rdtype,
|
||||||
@@ -1322,13 +1324,13 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
rdtype == dns_rdatatype_axfr)
|
rdtype == dns_rdatatype_axfr)
|
||||||
fatal("Transfer not supported");
|
fatal("Transfer not supported");
|
||||||
qtype = rdtype;
|
qtype = rdtype;
|
||||||
typeset = ISC_TRUE;
|
typeset = true;
|
||||||
} else
|
} else
|
||||||
warn("ignoring invalid type");
|
warn("ignoring invalid type");
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'x':
|
case 'x':
|
||||||
result = get_reverse(textname, sizeof(textname), value,
|
result = get_reverse(textname, sizeof(textname), value,
|
||||||
ISC_FALSE);
|
false);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
if (curqname != NULL) {
|
if (curqname != NULL) {
|
||||||
isc_mem_free(mctx, curqname);
|
isc_mem_free(mctx, curqname);
|
||||||
@@ -1340,7 +1342,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
if (typeset)
|
if (typeset)
|
||||||
warn("extra query type");
|
warn("extra query type");
|
||||||
qtype = dns_rdatatype_ptr;
|
qtype = dns_rdatatype_ptr;
|
||||||
typeset = ISC_TRUE;
|
typeset = true;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Invalid IP address %s\n", value);
|
fprintf(stderr, "Invalid IP address %s\n", value);
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -1352,7 +1354,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1361,7 +1363,7 @@ dash_option(char *option, char *next, isc_boolean_t *open_type_class) {
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
preparse_args(int argc, char **argv) {
|
preparse_args(int argc, char **argv) {
|
||||||
isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
|
bool ipv4only = false, ipv6only = false;
|
||||||
char *option;
|
char *option;
|
||||||
|
|
||||||
for (argc--, argv++; argc > 0; argc--, argv++) {
|
for (argc--, argv++; argc > 0; argc--, argv++) {
|
||||||
@@ -1378,13 +1380,13 @@ preparse_args(int argc, char **argv) {
|
|||||||
if (ipv6only) {
|
if (ipv6only) {
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
}
|
}
|
||||||
ipv4only = ISC_TRUE;
|
ipv4only = true;
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
if (ipv4only) {
|
if (ipv4only) {
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
}
|
}
|
||||||
ipv6only = ISC_TRUE;
|
ipv6only = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
option = &option[1];
|
option = &option[1];
|
||||||
@@ -1404,7 +1406,7 @@ parse_args(int argc, char **argv) {
|
|||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_boolean_t open_type_class = ISC_TRUE;
|
bool open_type_class = true;
|
||||||
|
|
||||||
for (; argc > 0; argc--, argv++) {
|
for (; argc > 0; argc--, argv++) {
|
||||||
if (argv[0][0] == '@') {
|
if (argv[0][0] == '@') {
|
||||||
@@ -1443,7 +1445,7 @@ parse_args(int argc, char **argv) {
|
|||||||
rdtype == dns_rdatatype_axfr)
|
rdtype == dns_rdatatype_axfr)
|
||||||
fatal("Transfer not supported");
|
fatal("Transfer not supported");
|
||||||
qtype = rdtype;
|
qtype = rdtype;
|
||||||
typeset = ISC_TRUE;
|
typeset = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
result = dns_rdataclass_fromtext(&rdclass,
|
result = dns_rdataclass_fromtext(&rdclass,
|
||||||
@@ -1512,7 +1514,7 @@ reverse_octets(const char *in, char **p, char *end) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
get_reverse(char *reverse, size_t len, char *value, isc_boolean_t strict) {
|
get_reverse(char *reverse, size_t len, char *value, bool strict) {
|
||||||
int r;
|
int r;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_netaddr_t addr;
|
isc_netaddr_t addr;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
+5
-3
@@ -19,7 +19,7 @@ READLINE_LIB = @READLINE_LIB@
|
|||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} \
|
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} \
|
||||||
${BIND9_INCLUDES} ${ISC_INCLUDES} \
|
${BIND9_INCLUDES} ${ISC_INCLUDES} \
|
||||||
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @LIBIDN2_CFLAGS@ @DST_OPENSSL_INC@
|
${IRS_INCLUDES} ${ISCCFG_INCLUDES} @LIBIDN2_CFLAGS@ @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\"
|
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
@@ -27,8 +27,8 @@ CWARNINGS =
|
|||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
IRSLIBS = ../../lib/irs/libirs.@A@
|
IRSLIBS = ../../lib/irs/libirs.@A@
|
||||||
|
|
||||||
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
@@ -64,6 +64,8 @@ MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
|||||||
|
|
||||||
@BIND9_MAKE_RULES@
|
@BIND9_MAKE_RULES@
|
||||||
|
|
||||||
|
LDFLAGS = @LDFLAGS@ @LIBIDN2_LDFLAGS@
|
||||||
|
|
||||||
dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
|
dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
|
||||||
export BASEOBJS="dig.@O@ dighost.@O@ ${UOBJS}"; \
|
export BASEOBJS="dig.@O@ dighost.@O@ ${UOBJS}"; \
|
||||||
export LIBS0="${DNSLIBS} ${IRSLIBS}"; \
|
export LIBS0="${DNSLIBS} ${IRSLIBS}"; \
|
||||||
|
|||||||
+157
-151
@@ -12,6 +12,9 @@
|
|||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -61,10 +64,10 @@ static int addresscount = 0;
|
|||||||
static char domainopt[DNS_NAME_MAXTEXT];
|
static char domainopt[DNS_NAME_MAXTEXT];
|
||||||
static char hexcookie[81];
|
static char hexcookie[81];
|
||||||
|
|
||||||
static isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
|
static bool short_form = false, printcmd = true,
|
||||||
ip6_int = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
|
ip6_int = false, plusquest = false, pluscomm = false,
|
||||||
ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
|
ipv4only = false, ipv6only = false;
|
||||||
static isc_uint32_t splitwidth = 0xffffffff;
|
static uint32_t splitwidth = 0xffffffff;
|
||||||
|
|
||||||
/*% opcode text */
|
/*% opcode text */
|
||||||
static const char * const opcodetext[] = {
|
static const char * const opcodetext[] = {
|
||||||
@@ -240,7 +243,7 @@ help(void) {
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||||
isc_uint64_t diff;
|
uint64_t diff;
|
||||||
time_t tnow;
|
time_t tnow;
|
||||||
struct tm tmnow;
|
struct tm tmnow;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
@@ -260,7 +263,7 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
printf(";; Query time: %ld msec\n", (long) diff / 1000);
|
printf(";; Query time: %ld msec\n", (long) diff / 1000);
|
||||||
printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
|
printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
|
||||||
time(&tnow);
|
time(&tnow);
|
||||||
#if defined(ISC_PLATFORM_USETHREADS) && !defined(WIN32)
|
#if !defined(WIN32)
|
||||||
(void)localtime_r(&tnow, &tmnow);
|
(void)localtime_r(&tnow, &tmnow);
|
||||||
#else
|
#else
|
||||||
tmnow = *localtime(&tnow);
|
tmnow = *localtime(&tnow);
|
||||||
@@ -281,7 +284,7 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
#endif
|
#endif
|
||||||
if (query->lookup->doing_xfr) {
|
if (query->lookup->doing_xfr) {
|
||||||
printf(";; XFR size: %u records (messages %u, "
|
printf(";; XFR size: %u records (messages %u, "
|
||||||
"bytes %" ISC_PRINT_QUADFORMAT "u)\n",
|
"bytes %" PRIu64 ")\n",
|
||||||
query->rr_count, query->msg_count,
|
query->rr_count, query->msg_count,
|
||||||
query->byte_count);
|
query->byte_count);
|
||||||
} else {
|
} else {
|
||||||
@@ -299,18 +302,18 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
|||||||
} else if (query->lookup->identify && !short_form) {
|
} else if (query->lookup->identify && !short_form) {
|
||||||
diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
|
diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
|
||||||
if (query->lookup->use_usec)
|
if (query->lookup->use_usec)
|
||||||
printf(";; Received %" ISC_PRINT_QUADFORMAT "u bytes "
|
printf(";; Received %" PRIu64 " bytes "
|
||||||
"from %s(%s) in %ld us\n\n",
|
"from %s(%s) in %ld us\n\n",
|
||||||
query->lookup->doing_xfr
|
query->lookup->doing_xfr
|
||||||
? query->byte_count
|
? query->byte_count
|
||||||
: (isc_uint64_t)bytes,
|
: (uint64_t)bytes,
|
||||||
fromtext, query->userarg, (long) diff);
|
fromtext, query->userarg, (long) diff);
|
||||||
else
|
else
|
||||||
printf(";; Received %" ISC_PRINT_QUADFORMAT "u bytes "
|
printf(";; Received %" PRIu64 " bytes "
|
||||||
"from %s(%s) in %ld ms\n\n",
|
"from %s(%s) in %ld ms\n\n",
|
||||||
query->lookup->doing_xfr
|
query->lookup->doing_xfr
|
||||||
? query->byte_count
|
? query->byte_count
|
||||||
: (isc_uint64_t)bytes,
|
: (uint64_t)bytes,
|
||||||
fromtext, query->userarg, (long) diff / 1000);
|
fromtext, query->userarg, (long) diff / 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -332,7 +335,7 @@ trying(char *frm, dig_lookup_t *lookup) {
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
|
say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_uint64_t diff;
|
uint64_t diff;
|
||||||
char store[sizeof(" in 18446744073709551616 us.")];
|
char store[sizeof(" in 18446744073709551616 us.")];
|
||||||
unsigned int styleflags = 0;
|
unsigned int styleflags = 0;
|
||||||
|
|
||||||
@@ -360,10 +363,11 @@ say_message(dns_rdata_t *rdata, dig_query_t *query, isc_buffer_t *buf) {
|
|||||||
diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
|
diff = isc_time_microdiff(&query->time_recv, &query->time_sent);
|
||||||
ADD_STRING(buf, " from server ");
|
ADD_STRING(buf, " from server ");
|
||||||
ADD_STRING(buf, query->servname);
|
ADD_STRING(buf, query->servname);
|
||||||
if (query->lookup->use_usec)
|
if (query->lookup->use_usec) {
|
||||||
snprintf(store, sizeof(store), " in %" ISC_PLATFORM_QUADFORMAT "u us.", diff);
|
snprintf(store, sizeof(store), " in %" PRIu64 " us.", diff);
|
||||||
else
|
} else {
|
||||||
snprintf(store, sizeof(store), " in %" ISC_PLATFORM_QUADFORMAT "u ms.", diff / 1000);
|
snprintf(store, sizeof(store), " in %" PRIu64 " ms.", diff / 1000);
|
||||||
|
}
|
||||||
ADD_STRING(buf, store);
|
ADD_STRING(buf, store);
|
||||||
}
|
}
|
||||||
ADD_STRING(buf, "\n");
|
ADD_STRING(buf, "\n");
|
||||||
@@ -421,7 +425,7 @@ short_answer(dns_message_t *msg, dns_messagetextflag_t flags,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
isdotlocal(dns_message_t *msg) {
|
isdotlocal(dns_message_t *msg) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
static unsigned char local_ndata[] = { "\005local\0" };
|
static unsigned char local_ndata[] = { "\005local\0" };
|
||||||
@@ -436,16 +440,16 @@ isdotlocal(dns_message_t *msg) {
|
|||||||
dns_name_t *name = NULL;
|
dns_name_t *name = NULL;
|
||||||
dns_message_currentname(msg, DNS_SECTION_QUESTION, &name);
|
dns_message_currentname(msg, DNS_SECTION_QUESTION, &name);
|
||||||
if (dns_name_issubdomain(name, &local))
|
if (dns_name_issubdomain(name, &local))
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback from dighost.c to print the reply from a server
|
* Callback from dighost.c to print the reply from a server
|
||||||
*/
|
*/
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_messagetextflag_t flags;
|
dns_messagetextflag_t flags;
|
||||||
isc_buffer_t *buf = NULL;
|
isc_buffer_t *buf = NULL;
|
||||||
@@ -689,7 +693,7 @@ cleanup:
|
|||||||
static void
|
static void
|
||||||
printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
|
printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
|
||||||
int i;
|
int i;
|
||||||
static isc_boolean_t first = ISC_TRUE;
|
static bool first = true;
|
||||||
char append[MXNAME];
|
char append[MXNAME];
|
||||||
|
|
||||||
if (printcmd) {
|
if (printcmd) {
|
||||||
@@ -716,7 +720,7 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
|
|||||||
";; global options:%s%s\n",
|
";; global options:%s%s\n",
|
||||||
short_form ? " +short" : "",
|
short_form ? " +short" : "",
|
||||||
printcmd ? " +cmd" : "");
|
printcmd ? " +cmd" : "");
|
||||||
first = ISC_FALSE;
|
first = false;
|
||||||
strlcat(lookup->cmdline, append,
|
strlcat(lookup->cmdline, append,
|
||||||
sizeof(lookup->cmdline));
|
sizeof(lookup->cmdline));
|
||||||
}
|
}
|
||||||
@@ -731,13 +735,13 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
plus_option(char *option, isc_boolean_t is_batchfile,
|
plus_option(char *option, bool is_batchfile,
|
||||||
dig_lookup_t *lookup)
|
dig_lookup_t *lookup)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
char *cmd, *value, *last = NULL, *code, *extra;
|
char *cmd, *value, *last = NULL, *code, *extra;
|
||||||
isc_uint32_t num;
|
uint32_t num;
|
||||||
isc_boolean_t state = ISC_TRUE;
|
bool state = true;
|
||||||
size_t n;
|
size_t n;
|
||||||
|
|
||||||
INSIST(option != NULL);
|
INSIST(option != NULL);
|
||||||
@@ -748,7 +752,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
}
|
}
|
||||||
if (strncasecmp(cmd, "no", 2)==0) {
|
if (strncasecmp(cmd, "no", 2)==0) {
|
||||||
cmd += 2;
|
cmd += 2;
|
||||||
state = ISC_FALSE;
|
state = false;
|
||||||
}
|
}
|
||||||
/* parse the rest of the string */
|
/* parse the rest of the string */
|
||||||
value = strtok_r(NULL, "", &last);
|
value = strtok_r(NULL, "", &last);
|
||||||
@@ -855,7 +859,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
case 'l': /* class */
|
case 'l': /* class */
|
||||||
/* keep +cl for backwards compatibility */
|
/* keep +cl for backwards compatibility */
|
||||||
FULLCHECK2("cl", "class");
|
FULLCHECK2("cl", "class");
|
||||||
lookup->noclass = ISC_TF(!state);
|
lookup->noclass = !state;
|
||||||
break;
|
break;
|
||||||
case 'm': /* cmd */
|
case 'm': /* cmd */
|
||||||
FULLCHECK("cmd");
|
FULLCHECK("cmd");
|
||||||
@@ -891,7 +895,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
FULLCHECK("crypto");
|
FULLCHECK("crypto");
|
||||||
lookup->nocrypto = ISC_TF(!state);
|
lookup->nocrypto = !state;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto invalid_option;
|
goto invalid_option;
|
||||||
@@ -1001,14 +1005,20 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
lookup->ednsoptscnt = 0;
|
lookup->ednsoptscnt = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (value == NULL) {
|
code = NULL;
|
||||||
|
if (value != NULL) {
|
||||||
|
code = strtok_r(value,
|
||||||
|
":",
|
||||||
|
&last);
|
||||||
|
}
|
||||||
|
if (code == NULL) {
|
||||||
warn("ednsopt no "
|
warn("ednsopt no "
|
||||||
"code point "
|
"code point "
|
||||||
"specified");
|
"specified");
|
||||||
goto exit_or_usage;
|
goto exit_or_usage;
|
||||||
}
|
}
|
||||||
code = strtok_r(value, ":", &last);
|
extra = strtok_r(NULL, "\0",
|
||||||
extra = strtok_r(NULL, "\0", &last);
|
&last);
|
||||||
save_opt(lookup, code, extra);
|
save_opt(lookup, code, extra);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1051,7 +1061,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
switch (cmd[3]) {
|
switch (cmd[3]) {
|
||||||
case 'i':
|
case 'i':
|
||||||
FULLCHECK("idnin");
|
FULLCHECK("idnin");
|
||||||
#ifndef WITH_IDN_SUPPORT
|
#ifndef HAVE_LIBIDN2
|
||||||
fprintf(stderr, ";; IDN input support"
|
fprintf(stderr, ";; IDN input support"
|
||||||
" not enabled\n");
|
" not enabled\n");
|
||||||
#else
|
#else
|
||||||
@@ -1060,7 +1070,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
FULLCHECK("idnout");
|
FULLCHECK("idnout");
|
||||||
#ifndef WITH_IDN_OUT_SUPPORT
|
#ifndef HAVE_LIBIDN2
|
||||||
fprintf(stderr, ";; IDN output support"
|
fprintf(stderr, ";; IDN output support"
|
||||||
" not enabled\n");
|
" not enabled\n");
|
||||||
#else
|
#else
|
||||||
@@ -1156,17 +1166,17 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
FULLCHECK("nssearch");
|
FULLCHECK("nssearch");
|
||||||
lookup->ns_search_only = state;
|
lookup->ns_search_only = state;
|
||||||
if (state) {
|
if (state) {
|
||||||
lookup->trace_root = ISC_TRUE;
|
lookup->trace_root = true;
|
||||||
lookup->recurse = ISC_TRUE;
|
lookup->recurse = true;
|
||||||
lookup->identify = ISC_TRUE;
|
lookup->identify = true;
|
||||||
lookup->stats = ISC_FALSE;
|
lookup->stats = false;
|
||||||
lookup->comments = ISC_FALSE;
|
lookup->comments = false;
|
||||||
lookup->section_additional = ISC_FALSE;
|
lookup->section_additional = false;
|
||||||
lookup->section_authority = ISC_FALSE;
|
lookup->section_authority = false;
|
||||||
lookup->section_question = ISC_FALSE;
|
lookup->section_question = false;
|
||||||
lookup->rdtype = dns_rdatatype_ns;
|
lookup->rdtype = dns_rdatatype_ns;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
short_form = ISC_TRUE;
|
short_form = true;
|
||||||
lookup->rrcomments = 0;
|
lookup->rrcomments = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1224,7 +1234,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
warn("Couldn't parse padding");
|
warn("Couldn't parse padding");
|
||||||
goto exit_or_usage;
|
goto exit_or_usage;
|
||||||
}
|
}
|
||||||
lookup->padding = (isc_uint16_t)num;
|
lookup->padding = (uint16_t)num;
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
switch (cmd[1]) {
|
switch (cmd[1]) {
|
||||||
@@ -1300,13 +1310,13 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
FULLCHECK("short");
|
FULLCHECK("short");
|
||||||
short_form = state;
|
short_form = state;
|
||||||
if (state) {
|
if (state) {
|
||||||
printcmd = ISC_FALSE;
|
printcmd = false;
|
||||||
lookup->section_additional = ISC_FALSE;
|
lookup->section_additional = false;
|
||||||
lookup->section_answer = ISC_TRUE;
|
lookup->section_answer = true;
|
||||||
lookup->section_authority = ISC_FALSE;
|
lookup->section_authority = false;
|
||||||
lookup->section_question = ISC_FALSE;
|
lookup->section_question = false;
|
||||||
lookup->comments = ISC_FALSE;
|
lookup->comments = false;
|
||||||
lookup->stats = ISC_FALSE;
|
lookup->stats = false;
|
||||||
lookup->rrcomments = -1;
|
lookup->rrcomments = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1400,7 +1410,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
FULLCHECK("tcp");
|
FULLCHECK("tcp");
|
||||||
if (!is_batchfile) {
|
if (!is_batchfile) {
|
||||||
lookup->tcp_mode = state;
|
lookup->tcp_mode = state;
|
||||||
lookup->tcp_mode_set = ISC_TRUE;
|
lookup->tcp_mode_set = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1433,17 +1443,17 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
lookup->trace = state;
|
lookup->trace = state;
|
||||||
lookup->trace_root = state;
|
lookup->trace_root = state;
|
||||||
if (state) {
|
if (state) {
|
||||||
lookup->recurse = ISC_FALSE;
|
lookup->recurse = false;
|
||||||
lookup->identify = ISC_TRUE;
|
lookup->identify = true;
|
||||||
lookup->comments = ISC_FALSE;
|
lookup->comments = false;
|
||||||
lookup->rrcomments = 0;
|
lookup->rrcomments = 0;
|
||||||
lookup->stats = ISC_FALSE;
|
lookup->stats = false;
|
||||||
lookup->section_additional = ISC_FALSE;
|
lookup->section_additional = false;
|
||||||
lookup->section_authority = ISC_TRUE;
|
lookup->section_authority = true;
|
||||||
lookup->section_question = ISC_FALSE;
|
lookup->section_question = false;
|
||||||
lookup->dnssec = ISC_TRUE;
|
lookup->dnssec = true;
|
||||||
lookup->sendcookie = ISC_TRUE;
|
lookup->sendcookie = true;
|
||||||
usesearch = ISC_FALSE;
|
usesearch = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'i': /* tries */
|
case 'i': /* tries */
|
||||||
@@ -1477,12 +1487,12 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
case 0:
|
case 0:
|
||||||
case 'i': /* ttlid */
|
case 'i': /* ttlid */
|
||||||
FULLCHECK2("ttl", "ttlid");
|
FULLCHECK2("ttl", "ttlid");
|
||||||
lookup->nottl = ISC_TF(!state);
|
lookup->nottl = !state;
|
||||||
break;
|
break;
|
||||||
case 'u': /* ttlunits */
|
case 'u': /* ttlunits */
|
||||||
FULLCHECK("ttlunits");
|
FULLCHECK("ttlunits");
|
||||||
lookup->nottl = ISC_FALSE;
|
lookup->nottl = false;
|
||||||
lookup->ttlunits = ISC_TF(state);
|
lookup->ttlunits = state;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto invalid_option;
|
goto invalid_option;
|
||||||
@@ -1504,7 +1514,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
FULLCHECK("vc");
|
FULLCHECK("vc");
|
||||||
if (!is_batchfile) {
|
if (!is_batchfile) {
|
||||||
lookup->tcp_mode = state;
|
lookup->tcp_mode = state;
|
||||||
lookup->tcp_mode_set = ISC_TRUE;
|
lookup->tcp_mode_set = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'z': /* zflag */
|
case 'z': /* zflag */
|
||||||
@@ -1530,19 +1540,19 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* #ISC_TRUE returned if value was used
|
* #true returned if value was used
|
||||||
*/
|
*/
|
||||||
static const char *single_dash_opts = "46dhimnuv";
|
static const char *single_dash_opts = "46dhimnuv";
|
||||||
static const char *dash_opts = "46bcdfhikmnptvyx";
|
static const char *dash_opts = "46bcdfhikmnptvyx";
|
||||||
static isc_boolean_t
|
static bool
|
||||||
dash_option(char *option, char *next, dig_lookup_t **lookup,
|
dash_option(char *option, char *next, dig_lookup_t **lookup,
|
||||||
isc_boolean_t *open_type_class, isc_boolean_t *need_clone,
|
bool *open_type_class, bool *need_clone,
|
||||||
isc_boolean_t config_only, int argc, char **argv,
|
bool config_only, int argc, char **argv,
|
||||||
isc_boolean_t *firstarg)
|
bool *firstarg)
|
||||||
{
|
{
|
||||||
char opt, *value, *ptr, *ptr2, *ptr3, *last;
|
char opt, *value, *ptr, *ptr2, *ptr3, *last;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t value_from_next;
|
bool value_from_next;
|
||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
@@ -1551,7 +1561,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
struct in6_addr in6;
|
struct in6_addr in6;
|
||||||
in_port_t srcport;
|
in_port_t srcport;
|
||||||
char *hash, *cmd;
|
char *hash, *cmd;
|
||||||
isc_uint32_t num;
|
uint32_t num;
|
||||||
|
|
||||||
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
||||||
/*
|
/*
|
||||||
@@ -1564,21 +1574,21 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
case '4':
|
case '4':
|
||||||
if (have_ipv4) {
|
if (have_ipv4) {
|
||||||
isc_net_disableipv6();
|
isc_net_disableipv6();
|
||||||
have_ipv6 = ISC_FALSE;
|
have_ipv6 = false;
|
||||||
} else {
|
} else {
|
||||||
fatal("can't find IPv4 networking");
|
fatal("can't find IPv4 networking");
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
if (have_ipv6) {
|
if (have_ipv6) {
|
||||||
isc_net_disableipv4();
|
isc_net_disableipv4();
|
||||||
have_ipv4 = ISC_FALSE;
|
have_ipv4 = false;
|
||||||
} else {
|
} else {
|
||||||
fatal("can't find IPv6 networking");
|
fatal("can't find IPv6 networking");
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
@@ -1586,17 +1596,17 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
if (ptr != &option[1]) {
|
if (ptr != &option[1]) {
|
||||||
cmd = option;
|
cmd = option;
|
||||||
FULLCHECK("debug");
|
FULLCHECK("debug");
|
||||||
debugging = ISC_TRUE;
|
debugging = true;
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
} else
|
} else
|
||||||
debugging = ISC_TRUE;
|
debugging = true;
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
help();
|
help();
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
ip6_int = ISC_TRUE;
|
ip6_int = true;
|
||||||
break;
|
break;
|
||||||
case 'm': /* memdebug */
|
case 'm': /* memdebug */
|
||||||
/* memdebug is handled in preparse_args() */
|
/* memdebug is handled in preparse_args() */
|
||||||
@@ -1605,7 +1615,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
/* deprecated */
|
/* deprecated */
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
(*lookup)->use_usec = ISC_TRUE;
|
(*lookup)->use_usec = true;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
version();
|
version();
|
||||||
@@ -1615,14 +1625,14 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
if (strlen(option) > 1U)
|
if (strlen(option) > 1U)
|
||||||
option = &option[1];
|
option = &option[1];
|
||||||
else
|
else
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
opt = option[0];
|
opt = option[0];
|
||||||
if (strlen(option) > 1U) {
|
if (strlen(option) > 1U) {
|
||||||
value_from_next = ISC_FALSE;
|
value_from_next = false;
|
||||||
value = &option[1];
|
value = &option[1];
|
||||||
} else {
|
} else {
|
||||||
value_from_next = ISC_TRUE;
|
value_from_next = true;
|
||||||
value = next;
|
value = next;
|
||||||
}
|
}
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
@@ -1652,20 +1662,20 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
}
|
}
|
||||||
if (hash != NULL)
|
if (hash != NULL)
|
||||||
*hash = '#';
|
*hash = '#';
|
||||||
specified_source = ISC_TRUE;
|
specified_source = true;
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'c':
|
case 'c':
|
||||||
if ((*lookup)->rdclassset) {
|
if ((*lookup)->rdclassset) {
|
||||||
fprintf(stderr, ";; Warning, extra class option\n");
|
fprintf(stderr, ";; Warning, extra class option\n");
|
||||||
}
|
}
|
||||||
*open_type_class = ISC_FALSE;
|
*open_type_class = false;
|
||||||
tr.base = value;
|
tr.base = value;
|
||||||
tr.length = (unsigned int) strlen(value);
|
tr.length = (unsigned int) strlen(value);
|
||||||
result = dns_rdataclass_fromtext(&rdclass,
|
result = dns_rdataclass_fromtext(&rdclass,
|
||||||
(isc_textregion_t *)&tr);
|
(isc_textregion_t *)&tr);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
(*lookup)->rdclass = rdclass;
|
(*lookup)->rdclass = rdclass;
|
||||||
(*lookup)->rdclassset = ISC_TRUE;
|
(*lookup)->rdclassset = true;
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, ";; Warning, ignoring "
|
fprintf(stderr, ";; Warning, ignoring "
|
||||||
"invalid class %s\n",
|
"invalid class %s\n",
|
||||||
@@ -1687,23 +1697,23 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
if (!config_only) {
|
if (!config_only) {
|
||||||
if (*need_clone)
|
if (*need_clone)
|
||||||
(*lookup) = clone_lookup(default_lookup,
|
(*lookup) = clone_lookup(default_lookup,
|
||||||
ISC_TRUE);
|
true);
|
||||||
*need_clone = ISC_TRUE;
|
*need_clone = true;
|
||||||
strlcpy((*lookup)->textname, value,
|
strlcpy((*lookup)->textname, value,
|
||||||
sizeof((*lookup)->textname));
|
sizeof((*lookup)->textname));
|
||||||
(*lookup)->trace_root = ISC_TF((*lookup)->trace ||
|
(*lookup)->trace_root = ((*lookup)->trace ||
|
||||||
(*lookup)->ns_search_only);
|
(*lookup)->ns_search_only);
|
||||||
(*lookup)->new_search = ISC_TRUE;
|
(*lookup)->new_search = true;
|
||||||
if (*firstarg) {
|
if (*firstarg) {
|
||||||
printgreeting(argc, argv, *lookup);
|
printgreeting(argc, argv, *lookup);
|
||||||
*firstarg = ISC_FALSE;
|
*firstarg = false;
|
||||||
}
|
}
|
||||||
ISC_LIST_APPEND(lookup_list, (*lookup), link);
|
ISC_LIST_APPEND(lookup_list, (*lookup), link);
|
||||||
debug("looking up %s", (*lookup)->textname);
|
debug("looking up %s", (*lookup)->textname);
|
||||||
}
|
}
|
||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 't':
|
case 't':
|
||||||
*open_type_class = ISC_FALSE;
|
*open_type_class = false;
|
||||||
if (strncasecmp(value, "ixfr=", 5) == 0) {
|
if (strncasecmp(value, "ixfr=", 5) == 0) {
|
||||||
rdtype = dns_rdatatype_ixfr;
|
rdtype = dns_rdatatype_ixfr;
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
@@ -1723,9 +1733,9 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
"extra type option\n");
|
"extra type option\n");
|
||||||
}
|
}
|
||||||
if (rdtype == dns_rdatatype_ixfr) {
|
if (rdtype == dns_rdatatype_ixfr) {
|
||||||
isc_uint32_t serial;
|
uint32_t serial;
|
||||||
(*lookup)->rdtype = dns_rdatatype_ixfr;
|
(*lookup)->rdtype = dns_rdatatype_ixfr;
|
||||||
(*lookup)->rdtypeset = ISC_TRUE;
|
(*lookup)->rdtypeset = true;
|
||||||
result = parse_uint(&serial, &value[5],
|
result = parse_uint(&serial, &value[5],
|
||||||
MAXSERIAL, "serial number");
|
MAXSERIAL, "serial number");
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -1734,19 +1744,19 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
(*lookup)->section_question = plusquest;
|
(*lookup)->section_question = plusquest;
|
||||||
(*lookup)->comments = pluscomm;
|
(*lookup)->comments = pluscomm;
|
||||||
if (!(*lookup)->tcp_mode_set)
|
if (!(*lookup)->tcp_mode_set)
|
||||||
(*lookup)->tcp_mode = ISC_TRUE;
|
(*lookup)->tcp_mode = true;
|
||||||
} else {
|
} else {
|
||||||
(*lookup)->rdtype = rdtype;
|
(*lookup)->rdtype = rdtype;
|
||||||
if (!config_only)
|
if (!config_only)
|
||||||
(*lookup)->rdtypeset = ISC_TRUE;
|
(*lookup)->rdtypeset = true;
|
||||||
if (rdtype == dns_rdatatype_axfr) {
|
if (rdtype == dns_rdatatype_axfr) {
|
||||||
(*lookup)->section_question = plusquest;
|
(*lookup)->section_question = plusquest;
|
||||||
(*lookup)->comments = pluscomm;
|
(*lookup)->comments = pluscomm;
|
||||||
} else if (rdtype == dns_rdatatype_any) {
|
} else if (rdtype == dns_rdatatype_any) {
|
||||||
if (!(*lookup)->tcp_mode_set)
|
if (!(*lookup)->tcp_mode_set)
|
||||||
(*lookup)->tcp_mode = ISC_TRUE;
|
(*lookup)->tcp_mode = true;
|
||||||
}
|
}
|
||||||
(*lookup)->ixfr_serial = ISC_FALSE;
|
(*lookup)->ixfr_serial = false;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, ";; Warning, ignoring "
|
fprintf(stderr, ";; Warning, ignoring "
|
||||||
@@ -1765,11 +1775,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
ptr = ptr2;
|
ptr = ptr2;
|
||||||
ptr2 = ptr3;
|
ptr2 = ptr3;
|
||||||
} else {
|
} else {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
hmacname = DNS_TSIG_HMACMD5_NAME;
|
hmacname = DNS_TSIG_HMACMD5_NAME;
|
||||||
#else
|
|
||||||
hmacname = DNS_TSIG_HMACSHA256_NAME;
|
|
||||||
#endif
|
|
||||||
digestbits = 0;
|
digestbits = 0;
|
||||||
}
|
}
|
||||||
/* XXXONDREJ: FIXME */
|
/* XXXONDREJ: FIXME */
|
||||||
@@ -1778,24 +1784,24 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
return (value_from_next);
|
return (value_from_next);
|
||||||
case 'x':
|
case 'x':
|
||||||
if (*need_clone)
|
if (*need_clone)
|
||||||
*lookup = clone_lookup(default_lookup, ISC_TRUE);
|
*lookup = clone_lookup(default_lookup, true);
|
||||||
*need_clone = ISC_TRUE;
|
*need_clone = true;
|
||||||
if (get_reverse(textname, sizeof(textname), value,
|
if (get_reverse(textname, sizeof(textname), value,
|
||||||
ip6_int, ISC_FALSE) == ISC_R_SUCCESS) {
|
ip6_int, false) == ISC_R_SUCCESS) {
|
||||||
strlcpy((*lookup)->textname, textname,
|
strlcpy((*lookup)->textname, textname,
|
||||||
sizeof((*lookup)->textname));
|
sizeof((*lookup)->textname));
|
||||||
debug("looking up %s", (*lookup)->textname);
|
debug("looking up %s", (*lookup)->textname);
|
||||||
(*lookup)->trace_root = ISC_TF((*lookup)->trace ||
|
(*lookup)->trace_root = ((*lookup)->trace ||
|
||||||
(*lookup)->ns_search_only);
|
(*lookup)->ns_search_only);
|
||||||
(*lookup)->ip6_int = ip6_int;
|
(*lookup)->ip6_int = ip6_int;
|
||||||
if (!(*lookup)->rdtypeset)
|
if (!(*lookup)->rdtypeset)
|
||||||
(*lookup)->rdtype = dns_rdatatype_ptr;
|
(*lookup)->rdtype = dns_rdatatype_ptr;
|
||||||
if (!(*lookup)->rdclassset)
|
if (!(*lookup)->rdclassset)
|
||||||
(*lookup)->rdclass = dns_rdataclass_in;
|
(*lookup)->rdclass = dns_rdataclass_in;
|
||||||
(*lookup)->new_search = ISC_TRUE;
|
(*lookup)->new_search = true;
|
||||||
if (*firstarg) {
|
if (*firstarg) {
|
||||||
printgreeting(argc, argv, *lookup);
|
printgreeting(argc, argv, *lookup);
|
||||||
*firstarg = ISC_FALSE;
|
*firstarg = false;
|
||||||
}
|
}
|
||||||
ISC_LIST_APPEND(lookup_list, *lookup, link);
|
ISC_LIST_APPEND(lookup_list, *lookup, link);
|
||||||
} else {
|
} else {
|
||||||
@@ -1809,7 +1815,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
|||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@@ -1836,19 +1842,19 @@ preparse_args(int argc, char **argv) {
|
|||||||
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
while (strpbrk(option, single_dash_opts) == &option[0]) {
|
||||||
switch (option[0]) {
|
switch (option[0]) {
|
||||||
case 'm':
|
case 'm':
|
||||||
memdebugging = ISC_TRUE;
|
memdebugging = true;
|
||||||
isc_mem_debugging = ISC_MEM_DEBUGTRACE |
|
isc_mem_debugging = ISC_MEM_DEBUGTRACE |
|
||||||
ISC_MEM_DEBUGRECORD;
|
ISC_MEM_DEBUGRECORD;
|
||||||
break;
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
if (ipv6only)
|
if (ipv6only)
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
ipv4only = ISC_TRUE;
|
ipv4only = true;
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
if (ipv4only)
|
if (ipv4only)
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
ipv6only = ISC_TRUE;
|
ipv6only = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
option = &option[1];
|
option = &option[1];
|
||||||
@@ -1873,16 +1879,16 @@ split_batchline(char *batchline, char **bargv, int len, const char *msg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
parse_args(bool is_batchfile, bool config_only,
|
||||||
int argc, char **argv)
|
int argc, char **argv)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
isc_boolean_t firstarg = ISC_TRUE;
|
bool firstarg = true;
|
||||||
dig_lookup_t *lookup = NULL;
|
dig_lookup_t *lookup = NULL;
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_boolean_t open_type_class = ISC_TRUE;
|
bool open_type_class = true;
|
||||||
char batchline[MXNAME];
|
char batchline[MXNAME];
|
||||||
int bargc;
|
int bargc;
|
||||||
char *bargv[64];
|
char *bargv[64];
|
||||||
@@ -1892,7 +1898,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
char *homedir;
|
char *homedir;
|
||||||
char rcfile[PATH_MAX];
|
char rcfile[PATH_MAX];
|
||||||
#endif
|
#endif
|
||||||
isc_boolean_t need_clone = ISC_TRUE;
|
bool need_clone = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The semantics for parsing the args is a bit complex; if
|
* The semantics for parsing the args is a bit complex; if
|
||||||
@@ -1909,9 +1915,9 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
if (!is_batchfile) {
|
if (!is_batchfile) {
|
||||||
debug("making new lookup");
|
debug("making new lookup");
|
||||||
default_lookup = make_empty_lookup();
|
default_lookup = make_empty_lookup();
|
||||||
default_lookup->adflag = ISC_TRUE;
|
default_lookup->adflag = true;
|
||||||
default_lookup->edns = 0;
|
default_lookup->edns = 0;
|
||||||
default_lookup->sendcookie = ISC_TRUE;
|
default_lookup->sendcookie = true;
|
||||||
|
|
||||||
#ifndef NOPOSIX
|
#ifndef NOPOSIX
|
||||||
/*
|
/*
|
||||||
@@ -1933,10 +1939,10 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
{
|
{
|
||||||
debug("config line %s", batchline);
|
debug("config line %s", batchline);
|
||||||
bargc = split_batchline(batchline, bargv, 62,
|
bargc = split_batchline(batchline, bargv, 62,
|
||||||
".digrc argv");
|
".digrc argv");
|
||||||
bargv[0] = argv[0];
|
bargv[0] = argv[0];
|
||||||
argv0 = argv[0];
|
argv0 = argv[0];
|
||||||
parse_args(ISC_TRUE, ISC_TRUE,
|
parse_args(true, true,
|
||||||
bargc, (char **)bargv);
|
bargc, (char **)bargv);
|
||||||
}
|
}
|
||||||
fclose(batchfp);
|
fclose(batchfp);
|
||||||
@@ -1946,8 +1952,8 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
|
|
||||||
if (is_batchfile && !config_only) {
|
if (is_batchfile && !config_only) {
|
||||||
/* Processing '-f batchfile'. */
|
/* Processing '-f batchfile'. */
|
||||||
lookup = clone_lookup(default_lookup, ISC_TRUE);
|
lookup = clone_lookup(default_lookup, true);
|
||||||
need_clone = ISC_FALSE;
|
need_clone = false;
|
||||||
} else {
|
} else {
|
||||||
lookup = default_lookup;
|
lookup = default_lookup;
|
||||||
}
|
}
|
||||||
@@ -2030,10 +2036,10 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
"extra type option\n");
|
"extra type option\n");
|
||||||
}
|
}
|
||||||
if (rdtype == dns_rdatatype_ixfr) {
|
if (rdtype == dns_rdatatype_ixfr) {
|
||||||
isc_uint32_t serial;
|
uint32_t serial;
|
||||||
lookup->rdtype =
|
lookup->rdtype =
|
||||||
dns_rdatatype_ixfr;
|
dns_rdatatype_ixfr;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
result = parse_uint(&serial,
|
result = parse_uint(&serial,
|
||||||
&rv[0][5],
|
&rv[0][5],
|
||||||
MAXSERIAL,
|
MAXSERIAL,
|
||||||
@@ -2046,10 +2052,10 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
plusquest;
|
plusquest;
|
||||||
lookup->comments = pluscomm;
|
lookup->comments = pluscomm;
|
||||||
if (!lookup->tcp_mode_set)
|
if (!lookup->tcp_mode_set)
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
} else {
|
} else {
|
||||||
lookup->rdtype = rdtype;
|
lookup->rdtype = rdtype;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
if (rdtype ==
|
if (rdtype ==
|
||||||
dns_rdatatype_axfr) {
|
dns_rdatatype_axfr) {
|
||||||
lookup->section_question =
|
lookup->section_question =
|
||||||
@@ -2059,8 +2065,8 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
if (rdtype ==
|
if (rdtype ==
|
||||||
dns_rdatatype_any &&
|
dns_rdatatype_any &&
|
||||||
!lookup->tcp_mode_set)
|
!lookup->tcp_mode_set)
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
lookup->ixfr_serial = ISC_FALSE;
|
lookup->ixfr_serial = false;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -2072,7 +2078,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
"extra class option\n");
|
"extra class option\n");
|
||||||
}
|
}
|
||||||
lookup->rdclass = rdclass;
|
lookup->rdclass = rdclass;
|
||||||
lookup->rdclassset = ISC_TRUE;
|
lookup->rdclassset = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2080,16 +2086,16 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
if (!config_only) {
|
if (!config_only) {
|
||||||
if (need_clone)
|
if (need_clone)
|
||||||
lookup = clone_lookup(default_lookup,
|
lookup = clone_lookup(default_lookup,
|
||||||
ISC_TRUE);
|
true);
|
||||||
need_clone = ISC_TRUE;
|
need_clone = true;
|
||||||
strlcpy(lookup->textname, rv[0],
|
strlcpy(lookup->textname, rv[0],
|
||||||
sizeof(lookup->textname));
|
sizeof(lookup->textname));
|
||||||
lookup->trace_root = ISC_TF(lookup->trace ||
|
lookup->trace_root = (lookup->trace ||
|
||||||
lookup->ns_search_only);
|
lookup->ns_search_only);
|
||||||
lookup->new_search = ISC_TRUE;
|
lookup->new_search = true;
|
||||||
if (firstarg) {
|
if (firstarg) {
|
||||||
printgreeting(argc, argv, lookup);
|
printgreeting(argc, argv, lookup);
|
||||||
firstarg = ISC_FALSE;
|
firstarg = false;
|
||||||
}
|
}
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
debug("looking up %s", lookup->textname);
|
debug("looking up %s", lookup->textname);
|
||||||
@@ -2125,7 +2131,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
"batch argv");
|
"batch argv");
|
||||||
bargv[0] = argv[0];
|
bargv[0] = argv[0];
|
||||||
argv0 = argv[0];
|
argv0 = argv[0];
|
||||||
parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
|
parse_args(true, false, bargc, (char **)bargv);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -2135,17 +2141,17 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
*/
|
*/
|
||||||
if ((lookup_list.head == NULL) && !config_only) {
|
if ((lookup_list.head == NULL) && !config_only) {
|
||||||
if (need_clone)
|
if (need_clone)
|
||||||
lookup = clone_lookup(default_lookup, ISC_TRUE);
|
lookup = clone_lookup(default_lookup, true);
|
||||||
need_clone = ISC_TRUE;
|
need_clone = true;
|
||||||
lookup->trace_root = ISC_TF(lookup->trace ||
|
lookup->trace_root = (lookup->trace ||
|
||||||
lookup->ns_search_only);
|
lookup->ns_search_only);
|
||||||
lookup->new_search = ISC_TRUE;
|
lookup->new_search = true;
|
||||||
strlcpy(lookup->textname, ".", sizeof(lookup->textname));
|
strlcpy(lookup->textname, ".", sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_ns;
|
lookup->rdtype = dns_rdatatype_ns;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
if (firstarg) {
|
if (firstarg) {
|
||||||
printgreeting(argc, argv, lookup);
|
printgreeting(argc, argv, lookup);
|
||||||
firstarg = ISC_FALSE;
|
firstarg = false;
|
||||||
}
|
}
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
}
|
}
|
||||||
@@ -2182,7 +2188,7 @@ query_finished(void) {
|
|||||||
debug("batch line %s", batchline);
|
debug("batch line %s", batchline);
|
||||||
bargc = split_batchline(batchline, bargv, 14, "batch argv");
|
bargc = split_batchline(batchline, bargv, 14, "batch argv");
|
||||||
bargv[0] = argv0;
|
bargv[0] = argv0;
|
||||||
parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
|
parse_args(true, false, bargc, (char **)bargv);
|
||||||
start_lookup();
|
start_lookup();
|
||||||
} else {
|
} else {
|
||||||
batchname = NULL;
|
batchname = NULL;
|
||||||
@@ -2219,7 +2225,7 @@ void dig_setup(int argc, char **argv)
|
|||||||
setup_system(ipv4only, ipv6only);
|
setup_system(ipv4only, ipv6only);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dig_query_setup(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
void dig_query_setup(bool is_batchfile, bool config_only,
|
||||||
int argc, char **argv)
|
int argc, char **argv)
|
||||||
{
|
{
|
||||||
debug("dig_query_setup");
|
debug("dig_query_setup");
|
||||||
@@ -2231,7 +2237,7 @@ void dig_query_setup(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
setup_text_key();
|
setup_text_key();
|
||||||
if (domainopt[0] != '\0') {
|
if (domainopt[0] != '\0') {
|
||||||
set_search_domain(domainopt);
|
set_search_domain(domainopt);
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2268,7 +2274,7 @@ int
|
|||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
|
|
||||||
dig_setup(argc, argv);
|
dig_setup(argc, argv);
|
||||||
dig_query_setup(ISC_FALSE, ISC_FALSE, argc, argv);
|
dig_query_setup(false, false, argc, argv);
|
||||||
dig_startup();
|
dig_startup();
|
||||||
dig_shutdown();
|
dig_shutdown();
|
||||||
|
|
||||||
|
|||||||
+400
-417
File diff suppressed because it is too large
Load Diff
+87
-84
@@ -12,6 +12,9 @@
|
|||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
@@ -40,14 +43,14 @@
|
|||||||
|
|
||||||
#include <dig/dig.h>
|
#include <dig/dig.h>
|
||||||
|
|
||||||
static isc_boolean_t short_form = ISC_TRUE, listed_server = ISC_FALSE;
|
static bool short_form = true, listed_server = false;
|
||||||
static isc_boolean_t default_lookups = ISC_TRUE;
|
static bool default_lookups = true;
|
||||||
static int seen_error = -1;
|
static int seen_error = -1;
|
||||||
static isc_boolean_t list_addresses = ISC_TRUE;
|
static bool list_addresses = true;
|
||||||
static isc_boolean_t list_almost_all = ISC_FALSE;
|
static bool list_almost_all = false;
|
||||||
static dns_rdatatype_t list_type = dns_rdatatype_a;
|
static dns_rdatatype_t list_type = dns_rdatatype_a;
|
||||||
static isc_boolean_t printed_server = ISC_FALSE;
|
static bool printed_server = false;
|
||||||
static isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
|
static bool ipv4only = false, ipv6only = false;
|
||||||
|
|
||||||
static const char *opcodetext[] = {
|
static const char *opcodetext[] = {
|
||||||
"QUERY",
|
"QUERY",
|
||||||
@@ -224,7 +227,7 @@ say_message(dns_name_t *name, const char *msg, dns_rdata_t *rdata,
|
|||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printsection(dns_message_t *msg, dns_section_t sectionid,
|
printsection(dns_message_t *msg, dns_section_t sectionid,
|
||||||
const char *section_name, isc_boolean_t headers,
|
const char *section_name, bool headers,
|
||||||
dig_query_t *query)
|
dig_query_t *query)
|
||||||
{
|
{
|
||||||
dns_name_t *name, *print_name;
|
dns_name_t *name, *print_name;
|
||||||
@@ -235,13 +238,13 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
|
|||||||
isc_region_t r;
|
isc_region_t r;
|
||||||
dns_name_t empty_name;
|
dns_name_t empty_name;
|
||||||
char tbuf[4096];
|
char tbuf[4096];
|
||||||
isc_boolean_t first;
|
bool first;
|
||||||
isc_boolean_t no_rdata;
|
bool no_rdata;
|
||||||
|
|
||||||
if (sectionid == DNS_SECTION_QUESTION)
|
if (sectionid == DNS_SECTION_QUESTION)
|
||||||
no_rdata = ISC_TRUE;
|
no_rdata = true;
|
||||||
else
|
else
|
||||||
no_rdata = ISC_FALSE;
|
no_rdata = false;
|
||||||
|
|
||||||
if (headers)
|
if (headers)
|
||||||
printf(";; %s SECTION:\n", section_name);
|
printf(";; %s SECTION:\n", section_name);
|
||||||
@@ -259,7 +262,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
|
|||||||
dns_message_currentname(msg, sectionid, &name);
|
dns_message_currentname(msg, sectionid, &name);
|
||||||
|
|
||||||
isc_buffer_init(&target, tbuf, sizeof(tbuf));
|
isc_buffer_init(&target, tbuf, sizeof(tbuf));
|
||||||
first = ISC_TRUE;
|
first = true;
|
||||||
print_name = name;
|
print_name = name;
|
||||||
|
|
||||||
for (rdataset = ISC_LIST_HEAD(name->list);
|
for (rdataset = ISC_LIST_HEAD(name->list);
|
||||||
@@ -283,7 +286,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
|
|||||||
if (!short_form) {
|
if (!short_form) {
|
||||||
result = dns_rdataset_totext(rdataset,
|
result = dns_rdataset_totext(rdataset,
|
||||||
print_name,
|
print_name,
|
||||||
ISC_FALSE,
|
false,
|
||||||
no_rdata,
|
no_rdata,
|
||||||
&target);
|
&target);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
@@ -291,7 +294,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
|
|||||||
#ifdef USEINITALWS
|
#ifdef USEINITALWS
|
||||||
if (first) {
|
if (first) {
|
||||||
print_name = &empty_name;
|
print_name = &empty_name;
|
||||||
first = ISC_FALSE;
|
first = false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
UNUSED(first); /* Shut up compiler. */
|
UNUSED(first); /* Shut up compiler. */
|
||||||
@@ -350,7 +353,7 @@ printsection(dns_message_t *msg, dns_section_t sectionid,
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
printrdata(dns_message_t *msg, dns_rdataset_t *rdataset,
|
printrdata(dns_message_t *msg, dns_rdataset_t *rdataset,
|
||||||
const dns_name_t *owner, const char *set_name,
|
const dns_name_t *owner, const char *set_name,
|
||||||
isc_boolean_t headers)
|
bool headers)
|
||||||
{
|
{
|
||||||
isc_buffer_t target;
|
isc_buffer_t target;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -363,7 +366,7 @@ printrdata(dns_message_t *msg, dns_rdataset_t *rdataset,
|
|||||||
|
|
||||||
isc_buffer_init(&target, tbuf, sizeof(tbuf));
|
isc_buffer_init(&target, tbuf, sizeof(tbuf));
|
||||||
|
|
||||||
result = dns_rdataset_totext(rdataset, owner, ISC_FALSE, ISC_FALSE,
|
result = dns_rdataset_totext(rdataset, owner, false, false,
|
||||||
&target);
|
&target);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
@@ -400,8 +403,8 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
isc_boolean_t did_flag = ISC_FALSE;
|
bool did_flag = false;
|
||||||
dns_rdataset_t *opt, *tsig = NULL;
|
dns_rdataset_t *opt, *tsig = NULL;
|
||||||
const dns_name_t *tsigname;
|
const dns_name_t *tsigname;
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
@@ -424,7 +427,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
sizeof(sockstr));
|
sizeof(sockstr));
|
||||||
printf("Address: %s\n", sockstr);
|
printf("Address: %s\n", sockstr);
|
||||||
printf("Aliases: \n\n");
|
printf("Aliases: \n\n");
|
||||||
printed_server = ISC_TRUE;
|
printed_server = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msg->rcode != 0) {
|
if (msg->rcode != 0) {
|
||||||
@@ -456,22 +459,22 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
dns_name_copy(query->lookup->name, name, NULL);
|
dns_name_copy(query->lookup->name, name, NULL);
|
||||||
chase_cnamechain(msg, name);
|
chase_cnamechain(msg, name);
|
||||||
dns_name_format(name, namestr, sizeof(namestr));
|
dns_name_format(name, namestr, sizeof(namestr));
|
||||||
lookup = clone_lookup(query->lookup, ISC_FALSE);
|
lookup = clone_lookup(query->lookup, false);
|
||||||
if (lookup != NULL) {
|
if (lookup != NULL) {
|
||||||
strlcpy(lookup->textname, namestr,
|
strlcpy(lookup->textname, namestr,
|
||||||
sizeof(lookup->textname));
|
sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_aaaa;
|
lookup->rdtype = dns_rdatatype_aaaa;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
lookup->origin = NULL;
|
lookup->origin = NULL;
|
||||||
lookup->retries = tries;
|
lookup->retries = tries;
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
}
|
}
|
||||||
lookup = clone_lookup(query->lookup, ISC_FALSE);
|
lookup = clone_lookup(query->lookup, false);
|
||||||
if (lookup != NULL) {
|
if (lookup != NULL) {
|
||||||
strlcpy(lookup->textname, namestr,
|
strlcpy(lookup->textname, namestr,
|
||||||
sizeof(lookup->textname));
|
sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_mx;
|
lookup->rdtype = dns_rdatatype_mx;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
lookup->origin = NULL;
|
lookup->origin = NULL;
|
||||||
lookup->retries = tries;
|
lookup->retries = tries;
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
@@ -485,31 +488,31 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
printf(";; flags: ");
|
printf(";; flags: ");
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) {
|
||||||
printf("qr");
|
printf("qr");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) {
|
||||||
printf("%saa", did_flag ? " " : "");
|
printf("%saa", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {
|
||||||
printf("%stc", did_flag ? " " : "");
|
printf("%stc", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {
|
||||||
printf("%srd", did_flag ? " " : "");
|
printf("%srd", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) {
|
||||||
printf("%sra", did_flag ? " " : "");
|
printf("%sra", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) {
|
||||||
printf("%sad", did_flag ? " " : "");
|
printf("%sad", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
}
|
}
|
||||||
if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) {
|
if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) {
|
||||||
printf("%scd", did_flag ? " " : "");
|
printf("%scd", did_flag ? " " : "");
|
||||||
did_flag = ISC_TRUE;
|
did_flag = true;
|
||||||
POST(did_flag);
|
POST(did_flag);
|
||||||
}
|
}
|
||||||
printf("; QUERY: %u, ANSWER: %u, "
|
printf("; QUERY: %u, ANSWER: %u, "
|
||||||
@@ -532,7 +535,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
!short_form) {
|
!short_form) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION",
|
result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION",
|
||||||
ISC_TRUE, query);
|
true, query);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@@ -540,7 +543,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
if (!short_form)
|
if (!short_form)
|
||||||
printf("\n");
|
printf("\n");
|
||||||
result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER",
|
result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER",
|
||||||
ISC_TF(!short_form), query);
|
!short_form, query);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@@ -549,7 +552,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
!short_form) {
|
!short_form) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY",
|
result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY",
|
||||||
ISC_TRUE, query);
|
true, query);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@@ -557,14 +560,14 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
!short_form) {
|
!short_form) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
result = printsection(msg, DNS_SECTION_ADDITIONAL,
|
result = printsection(msg, DNS_SECTION_ADDITIONAL,
|
||||||
"ADDITIONAL", ISC_TRUE, query);
|
"ADDITIONAL", true, query);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
if ((tsig != NULL) && !short_form) {
|
if ((tsig != NULL) && !short_form) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
result = printrdata(msg, tsig, tsigname,
|
result = printrdata(msg, tsig, tsigname,
|
||||||
"PSEUDOSECTION TSIG", ISC_TRUE);
|
"PSEUDOSECTION TSIG", true);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
@@ -599,7 +602,7 @@ pre_parse_args(int argc, char **argv) {
|
|||||||
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
|
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'm':
|
case 'm':
|
||||||
memdebugging = ISC_TRUE;
|
memdebugging = true;
|
||||||
if (strcasecmp("trace", isc_commandline_argument) == 0)
|
if (strcasecmp("trace", isc_commandline_argument) == 0)
|
||||||
isc_mem_debugging |= ISC_MEM_DEBUGTRACE;
|
isc_mem_debugging |= ISC_MEM_DEBUGTRACE;
|
||||||
else if (strcasecmp("record",
|
else if (strcasecmp("record",
|
||||||
@@ -613,12 +616,12 @@ pre_parse_args(int argc, char **argv) {
|
|||||||
case '4':
|
case '4':
|
||||||
if (ipv6only)
|
if (ipv6only)
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
ipv4only = ISC_TRUE;
|
ipv4only = true;
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
if (ipv4only)
|
if (ipv4only)
|
||||||
fatal("only one of -4 and -6 allowed");
|
fatal("only one of -4 and -6 allowed");
|
||||||
ipv6only = ISC_TRUE;
|
ipv6only = true;
|
||||||
break;
|
break;
|
||||||
case 'a': break;
|
case 'a': break;
|
||||||
case 'A': break;
|
case 'A': break;
|
||||||
@@ -639,8 +642,8 @@ pre_parse_args(int argc, char **argv) {
|
|||||||
case 'C': break;
|
case 'C': break;
|
||||||
case 'D':
|
case 'D':
|
||||||
if (debugging)
|
if (debugging)
|
||||||
debugtiming = ISC_TRUE;
|
debugtiming = true;
|
||||||
debugging = ISC_TRUE;
|
debugging = true;
|
||||||
break;
|
break;
|
||||||
case 'N': break;
|
case 'N': break;
|
||||||
case 'R': break;
|
case 'R': break;
|
||||||
@@ -650,12 +653,12 @@ pre_parse_args(int argc, char **argv) {
|
|||||||
show_usage();
|
show_usage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = true;
|
||||||
isc_commandline_index = 1;
|
isc_commandline_index = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
parse_args(bool is_batchfile, int argc, char **argv) {
|
||||||
char hostname[MXNAME];
|
char hostname[MXNAME];
|
||||||
dig_lookup_t *lookup;
|
dig_lookup_t *lookup;
|
||||||
int c;
|
int c;
|
||||||
@@ -664,30 +667,30 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_uint32_t serial = 0;
|
uint32_t serial = 0;
|
||||||
|
|
||||||
UNUSED(is_batchfile);
|
UNUSED(is_batchfile);
|
||||||
|
|
||||||
lookup = make_empty_lookup();
|
lookup = make_empty_lookup();
|
||||||
|
|
||||||
lookup->servfail_stops = ISC_FALSE;
|
lookup->servfail_stops = false;
|
||||||
lookup->comments = ISC_FALSE;
|
lookup->comments = false;
|
||||||
short_form = !verbose;
|
short_form = !verbose;
|
||||||
|
|
||||||
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
|
while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'l':
|
case 'l':
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
lookup->rdtype = dns_rdatatype_axfr;
|
lookup->rdtype = dns_rdatatype_axfr;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
fatalexit = 3;
|
fatalexit = 3;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
case 'd':
|
case 'd':
|
||||||
short_form = ISC_FALSE;
|
short_form = false;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
lookup->recurse = ISC_FALSE;
|
lookup->recurse = false;
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
if (strncasecmp(isc_commandline_argument,
|
if (strncasecmp(isc_commandline_argument,
|
||||||
@@ -712,23 +715,23 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
if (!lookup->rdtypeset ||
|
if (!lookup->rdtypeset ||
|
||||||
lookup->rdtype != dns_rdatatype_axfr)
|
lookup->rdtype != dns_rdatatype_axfr)
|
||||||
lookup->rdtype = rdtype;
|
lookup->rdtype = rdtype;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
if (rdtype == dns_rdatatype_axfr) {
|
if (rdtype == dns_rdatatype_axfr) {
|
||||||
/* -l -t any -v */
|
/* -l -t any -v */
|
||||||
list_type = dns_rdatatype_any;
|
list_type = dns_rdatatype_any;
|
||||||
short_form = ISC_FALSE;
|
short_form = false;
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
} else if (rdtype == dns_rdatatype_ixfr) {
|
} else if (rdtype == dns_rdatatype_ixfr) {
|
||||||
lookup->ixfr_serial = serial;
|
lookup->ixfr_serial = serial;
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
list_type = rdtype;
|
list_type = rdtype;
|
||||||
} else if (rdtype == dns_rdatatype_any) {
|
} else if (rdtype == dns_rdatatype_any) {
|
||||||
if (!lookup->tcp_mode_set)
|
if (!lookup->tcp_mode_set)
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
} else
|
} else
|
||||||
list_type = rdtype;
|
list_type = rdtype;
|
||||||
list_addresses = ISC_FALSE;
|
list_addresses = false;
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
tr.base = isc_commandline_argument;
|
tr.base = isc_commandline_argument;
|
||||||
@@ -742,25 +745,25 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
isc_commandline_argument);
|
isc_commandline_argument);
|
||||||
} else {
|
} else {
|
||||||
lookup->rdclass = rdclass;
|
lookup->rdclass = rdclass;
|
||||||
lookup->rdclassset = ISC_TRUE;
|
lookup->rdclassset = true;
|
||||||
}
|
}
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
list_almost_all = ISC_TRUE;
|
list_almost_all = true;
|
||||||
/* FALL THROUGH */
|
/* FALL THROUGH */
|
||||||
case 'a':
|
case 'a':
|
||||||
if (!lookup->rdtypeset ||
|
if (!lookup->rdtypeset ||
|
||||||
lookup->rdtype != dns_rdatatype_axfr)
|
lookup->rdtype != dns_rdatatype_axfr)
|
||||||
lookup->rdtype = dns_rdatatype_any;
|
lookup->rdtype = dns_rdatatype_any;
|
||||||
list_type = dns_rdatatype_any;
|
list_type = dns_rdatatype_any;
|
||||||
list_addresses = ISC_FALSE;
|
list_addresses = false;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
short_form = ISC_FALSE;
|
short_form = false;
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
lookup->ip6_int = ISC_TRUE;
|
lookup->ip6_int = true;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
/* deprecated */
|
/* deprecated */
|
||||||
@@ -786,23 +789,23 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
tries = 2;
|
tries = 2;
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
lookup->tcp_mode_set = ISC_TRUE;
|
lookup->tcp_mode_set = true;
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
lookup->tcp_mode = ISC_FALSE;
|
lookup->tcp_mode = false;
|
||||||
lookup->tcp_mode_set = ISC_TRUE;
|
lookup->tcp_mode_set = true;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
debug("showing all SOAs");
|
debug("showing all SOAs");
|
||||||
lookup->rdtype = dns_rdatatype_ns;
|
lookup->rdtype = dns_rdatatype_ns;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
lookup->rdclass = dns_rdataclass_in;
|
lookup->rdclass = dns_rdataclass_in;
|
||||||
lookup->rdclassset = ISC_TRUE;
|
lookup->rdclassset = true;
|
||||||
lookup->ns_search_only = ISC_TRUE;
|
lookup->ns_search_only = true;
|
||||||
lookup->trace_root = ISC_TRUE;
|
lookup->trace_root = true;
|
||||||
lookup->identify_previous_line = ISC_TRUE;
|
lookup->identify_previous_line = true;
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
debug("setting NDOTS to %s",
|
debug("setting NDOTS to %s",
|
||||||
@@ -819,7 +822,7 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
/* Handled by pre_parse_args(). */
|
/* Handled by pre_parse_args(). */
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
lookup->servfail_stops = ISC_TRUE;
|
lookup->servfail_stops = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -834,22 +837,22 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
|||||||
if (argc > isc_commandline_index + 1) {
|
if (argc > isc_commandline_index + 1) {
|
||||||
set_nameserver(argv[isc_commandline_index+1]);
|
set_nameserver(argv[isc_commandline_index+1]);
|
||||||
debug("server is %s", argv[isc_commandline_index+1]);
|
debug("server is %s", argv[isc_commandline_index+1]);
|
||||||
listed_server = ISC_TRUE;
|
listed_server = true;
|
||||||
} else
|
} else
|
||||||
check_ra = ISC_TRUE;
|
check_ra = true;
|
||||||
|
|
||||||
lookup->pending = ISC_FALSE;
|
lookup->pending = false;
|
||||||
if (get_reverse(store, sizeof(store), hostname,
|
if (get_reverse(store, sizeof(store), hostname,
|
||||||
lookup->ip6_int, ISC_TRUE) == ISC_R_SUCCESS) {
|
lookup->ip6_int, true) == ISC_R_SUCCESS) {
|
||||||
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_ptr;
|
lookup->rdtype = dns_rdatatype_ptr;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
} else {
|
} else {
|
||||||
strlcpy(lookup->textname, hostname, sizeof(lookup->textname));
|
strlcpy(lookup->textname, hostname, sizeof(lookup->textname));
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
}
|
}
|
||||||
lookup->new_search = ISC_TRUE;
|
lookup->new_search = true;
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -878,7 +881,7 @@ main(int argc, char **argv) {
|
|||||||
check_result(result, "isc_app_start");
|
check_result(result, "isc_app_start");
|
||||||
setup_libs();
|
setup_libs();
|
||||||
setup_system(ipv4only, ipv6only);
|
setup_system(ipv4only, ipv6only);
|
||||||
parse_args(ISC_FALSE, argc, argv);
|
parse_args(false, argc, argv);
|
||||||
if (keyfile[0] != 0)
|
if (keyfile[0] != 0)
|
||||||
setup_file_key();
|
setup_file_key();
|
||||||
else if (keysecret[0] != 0)
|
else if (keysecret[0] != 0)
|
||||||
|
|||||||
+35
-33
@@ -14,11 +14,13 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <dns/rdatalist.h>
|
#include <dns/rdatalist.h>
|
||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#include <isc/boolean.h>
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/bufferlist.h>
|
#include <isc/bufferlist.h>
|
||||||
#include <isc/formatcheck.h>
|
#include <isc/formatcheck.h>
|
||||||
@@ -81,7 +83,7 @@ typedef struct dig_searchlist dig_searchlist_t;
|
|||||||
|
|
||||||
/*% The dig_lookup structure */
|
/*% The dig_lookup structure */
|
||||||
struct dig_lookup {
|
struct dig_lookup {
|
||||||
isc_boolean_t
|
bool
|
||||||
pending, /*%< Pending a successful answer */
|
pending, /*%< Pending a successful answer */
|
||||||
waiting_connect,
|
waiting_connect,
|
||||||
doing_xfr,
|
doing_xfr,
|
||||||
@@ -139,8 +141,8 @@ struct dig_lookup {
|
|||||||
dns_rdatatype_t rdtype;
|
dns_rdatatype_t rdtype;
|
||||||
dns_rdatatype_t qrdtype;
|
dns_rdatatype_t qrdtype;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_boolean_t rdtypeset;
|
bool rdtypeset;
|
||||||
isc_boolean_t rdclassset;
|
bool rdclassset;
|
||||||
char name_space[BUFSIZE];
|
char name_space[BUFSIZE];
|
||||||
char oname_space[BUFSIZE];
|
char oname_space[BUFSIZE];
|
||||||
isc_buffer_t namebuf;
|
isc_buffer_t namebuf;
|
||||||
@@ -158,17 +160,17 @@ struct dig_lookup {
|
|||||||
dig_serverlist_t my_server_list;
|
dig_serverlist_t my_server_list;
|
||||||
dig_searchlist_t *origin;
|
dig_searchlist_t *origin;
|
||||||
dig_query_t *xfr_q;
|
dig_query_t *xfr_q;
|
||||||
isc_uint32_t retries;
|
uint32_t retries;
|
||||||
int nsfound;
|
int nsfound;
|
||||||
isc_uint16_t udpsize;
|
uint16_t udpsize;
|
||||||
isc_int16_t edns;
|
int16_t edns;
|
||||||
isc_int16_t padding;
|
int16_t padding;
|
||||||
isc_uint32_t ixfr_serial;
|
uint32_t ixfr_serial;
|
||||||
isc_buffer_t rdatabuf;
|
isc_buffer_t rdatabuf;
|
||||||
char rdatastore[MXNAME];
|
char rdatastore[MXNAME];
|
||||||
dst_context_t *tsigctx;
|
dst_context_t *tsigctx;
|
||||||
isc_buffer_t *querysig;
|
isc_buffer_t *querysig;
|
||||||
isc_uint32_t msgcounter;
|
uint32_t msgcounter;
|
||||||
dns_fixedname_t fdomain;
|
dns_fixedname_t fdomain;
|
||||||
isc_sockaddr_t *ecs_addr;
|
isc_sockaddr_t *ecs_addr;
|
||||||
char *cookie;
|
char *cookie;
|
||||||
@@ -184,7 +186,7 @@ struct dig_lookup {
|
|||||||
/*% The dig_query structure */
|
/*% The dig_query structure */
|
||||||
struct dig_query {
|
struct dig_query {
|
||||||
dig_lookup_t *lookup;
|
dig_lookup_t *lookup;
|
||||||
isc_boolean_t waiting_connect,
|
bool waiting_connect,
|
||||||
pending_free,
|
pending_free,
|
||||||
waiting_senddone,
|
waiting_senddone,
|
||||||
first_pass,
|
first_pass,
|
||||||
@@ -194,11 +196,11 @@ struct dig_query {
|
|||||||
recv_made,
|
recv_made,
|
||||||
warn_id,
|
warn_id,
|
||||||
timedout;
|
timedout;
|
||||||
isc_uint32_t first_rr_serial;
|
uint32_t first_rr_serial;
|
||||||
isc_uint32_t second_rr_serial;
|
uint32_t second_rr_serial;
|
||||||
isc_uint32_t msg_count;
|
uint32_t msg_count;
|
||||||
isc_uint32_t rr_count;
|
uint32_t rr_count;
|
||||||
isc_boolean_t ixfr_axfr;
|
bool ixfr_axfr;
|
||||||
char *servname;
|
char *servname;
|
||||||
char *userarg;
|
char *userarg;
|
||||||
isc_bufferlist_t sendlist,
|
isc_bufferlist_t sendlist,
|
||||||
@@ -216,7 +218,7 @@ struct dig_query {
|
|||||||
isc_sockaddr_t sockaddr;
|
isc_sockaddr_t sockaddr;
|
||||||
isc_time_t time_sent;
|
isc_time_t time_sent;
|
||||||
isc_time_t time_recv;
|
isc_time_t time_recv;
|
||||||
isc_uint64_t byte_count;
|
uint64_t byte_count;
|
||||||
isc_buffer_t sendbuf;
|
isc_buffer_t sendbuf;
|
||||||
isc_timer_t *timer;
|
isc_timer_t *timer;
|
||||||
};
|
};
|
||||||
@@ -244,7 +246,7 @@ extern dig_serverlist_t server_list;
|
|||||||
extern dig_searchlistlist_t search_list;
|
extern dig_searchlistlist_t search_list;
|
||||||
extern unsigned int extrabytes;
|
extern unsigned int extrabytes;
|
||||||
|
|
||||||
extern isc_boolean_t check_ra, have_ipv4, have_ipv6, specified_source,
|
extern bool check_ra, have_ipv4, have_ipv6, specified_source,
|
||||||
usesearch, showsearch;
|
usesearch, showsearch;
|
||||||
extern in_port_t port;
|
extern in_port_t port;
|
||||||
extern unsigned int timeout;
|
extern unsigned int timeout;
|
||||||
@@ -260,17 +262,17 @@ extern char keysecret[MXNAME];
|
|||||||
extern const dns_name_t *hmacname;
|
extern const dns_name_t *hmacname;
|
||||||
extern unsigned int digestbits;
|
extern unsigned int digestbits;
|
||||||
extern dns_tsigkey_t *tsigkey;
|
extern dns_tsigkey_t *tsigkey;
|
||||||
extern isc_boolean_t validated;
|
extern bool validated;
|
||||||
extern isc_taskmgr_t *taskmgr;
|
extern isc_taskmgr_t *taskmgr;
|
||||||
extern isc_task_t *global_task;
|
extern isc_task_t *global_task;
|
||||||
extern isc_boolean_t free_now;
|
extern bool free_now;
|
||||||
extern isc_boolean_t debugging, debugtiming, memdebugging;
|
extern bool debugging, debugtiming, memdebugging;
|
||||||
extern isc_boolean_t keep_open;
|
extern bool keep_open;
|
||||||
|
|
||||||
extern char *progname;
|
extern char *progname;
|
||||||
extern int tries;
|
extern int tries;
|
||||||
extern int fatalexit;
|
extern int fatalexit;
|
||||||
extern isc_boolean_t verbose;
|
extern bool verbose;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routines in dighost.c.
|
* Routines in dighost.c.
|
||||||
@@ -282,8 +284,8 @@ int
|
|||||||
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
|
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
get_reverse(char *reverse, size_t len, char *value, isc_boolean_t ip6_int,
|
get_reverse(char *reverse, size_t len, char *value, bool ip6_int,
|
||||||
isc_boolean_t strict);
|
bool strict);
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE void
|
ISC_PLATFORM_NORETURN_PRE void
|
||||||
fatal(const char *format, ...)
|
fatal(const char *format, ...)
|
||||||
@@ -302,7 +304,7 @@ debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
|||||||
void
|
void
|
||||||
check_result(isc_result_t result, const char *msg);
|
check_result(isc_result_t result, const char *msg);
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
setup_lookup(dig_lookup_t *lookup);
|
setup_lookup(dig_lookup_t *lookup);
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -324,14 +326,14 @@ void
|
|||||||
setup_libs(void);
|
setup_libs(void);
|
||||||
|
|
||||||
void
|
void
|
||||||
setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only);
|
setup_system(bool ipv4only, bool ipv6only);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
|
parse_uint(uint32_t *uip, const char *value, uint32_t max,
|
||||||
const char *desc);
|
const char *desc);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
parse_xint(isc_uint32_t *uip, const char *value, isc_uint32_t max,
|
parse_xint(uint32_t *uip, const char *value, uint32_t max,
|
||||||
const char *desc);
|
const char *desc);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
@@ -341,13 +343,13 @@ void
|
|||||||
parse_hmac(const char *hmacstr);
|
parse_hmac(const char *hmacstr);
|
||||||
|
|
||||||
dig_lookup_t *
|
dig_lookup_t *
|
||||||
requeue_lookup(dig_lookup_t *lookold, isc_boolean_t servers);
|
requeue_lookup(dig_lookup_t *lookold, bool servers);
|
||||||
|
|
||||||
dig_lookup_t *
|
dig_lookup_t *
|
||||||
make_empty_lookup(void);
|
make_empty_lookup(void);
|
||||||
|
|
||||||
dig_lookup_t *
|
dig_lookup_t *
|
||||||
clone_lookup(dig_lookup_t *lookold, isc_boolean_t servers);
|
clone_lookup(dig_lookup_t *lookold, bool servers);
|
||||||
|
|
||||||
dig_server_t *
|
dig_server_t *
|
||||||
make_server(const char *servname, const char *userarg);
|
make_server(const char *servname, const char *userarg);
|
||||||
@@ -376,7 +378,7 @@ set_search_domain(char *domain);
|
|||||||
* then assigned to the appropriate function pointer
|
* then assigned to the appropriate function pointer
|
||||||
*/
|
*/
|
||||||
extern isc_result_t
|
extern isc_result_t
|
||||||
(*dighost_printmessage)(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers);
|
(*dighost_printmessage)(dig_query_t *query, dns_message_t *msg, bool headers);
|
||||||
/*%<
|
/*%<
|
||||||
* Print the final result of the lookup.
|
* Print the final result of the lookup.
|
||||||
*/
|
*/
|
||||||
@@ -418,7 +420,7 @@ dig_setup(int argc, char **argv);
|
|||||||
* Call to supply new parameters for the next lookup
|
* Call to supply new parameters for the next lookup
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dig_query_setup(isc_boolean_t, isc_boolean_t, int argc, char **argv);
|
dig_query_setup(bool, bool, int argc, char **argv);
|
||||||
|
|
||||||
/*%<
|
/*%<
|
||||||
* set the main application event cycle running
|
* set the main application event cycle running
|
||||||
|
|||||||
+88
-86
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@@ -53,18 +55,18 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static isc_boolean_t short_form = ISC_TRUE,
|
static bool short_form = true,
|
||||||
tcpmode = ISC_FALSE, tcpmode_set = ISC_FALSE,
|
tcpmode = false, tcpmode_set = false,
|
||||||
identify = ISC_FALSE, stats = ISC_TRUE,
|
identify = false, stats = true,
|
||||||
comments = ISC_TRUE, section_question = ISC_TRUE,
|
comments = true, section_question = true,
|
||||||
section_answer = ISC_TRUE, section_authority = ISC_TRUE,
|
section_answer = true, section_authority = true,
|
||||||
section_additional = ISC_TRUE, recurse = ISC_TRUE,
|
section_additional = true, recurse = true,
|
||||||
aaonly = ISC_FALSE, nofail = ISC_TRUE,
|
aaonly = false, nofail = true,
|
||||||
default_lookups = ISC_TRUE, a_noanswer = ISC_FALSE;
|
default_lookups = true, a_noanswer = false;
|
||||||
|
|
||||||
static isc_boolean_t interactive;
|
static bool interactive;
|
||||||
|
|
||||||
static isc_boolean_t in_use = ISC_FALSE;
|
static bool in_use = false;
|
||||||
static char defclass[MXRD] = "IN";
|
static char defclass[MXRD] = "IN";
|
||||||
static char deftype[MXRD] = "A";
|
static char deftype[MXRD] = "A";
|
||||||
static isc_event_t *global_event = NULL;
|
static isc_event_t *global_event = NULL;
|
||||||
@@ -213,7 +215,7 @@ printrdata(dns_rdata_t *rdata) {
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_buffer_t *b = NULL;
|
isc_buffer_t *b = NULL;
|
||||||
unsigned int size = 1024;
|
unsigned int size = 1024;
|
||||||
isc_boolean_t done = ISC_FALSE;
|
bool done = false;
|
||||||
|
|
||||||
if (rdata->type < N_KNOWN_RRTYPES)
|
if (rdata->type < N_KNOWN_RRTYPES)
|
||||||
printf("%s", rtypetext[rdata->type]);
|
printf("%s", rtypetext[rdata->type]);
|
||||||
@@ -228,7 +230,7 @@ printrdata(dns_rdata_t *rdata) {
|
|||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
printf("%.*s\n", (int)isc_buffer_usedlength(b),
|
printf("%.*s\n", (int)isc_buffer_usedlength(b),
|
||||||
(char *)isc_buffer_base(b));
|
(char *)isc_buffer_base(b));
|
||||||
done = ISC_TRUE;
|
done = true;
|
||||||
} else if (result != ISC_R_NOSPACE)
|
} else if (result != ISC_R_NOSPACE)
|
||||||
check_result(result, "dns_rdata_totext");
|
check_result(result, "dns_rdata_totext");
|
||||||
isc_buffer_free(&b);
|
isc_buffer_free(&b);
|
||||||
@@ -237,7 +239,7 @@ printrdata(dns_rdata_t *rdata) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printsection(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers,
|
printsection(dig_query_t *query, dns_message_t *msg, bool headers,
|
||||||
dns_section_t section) {
|
dns_section_t section) {
|
||||||
isc_result_t result, loopresult;
|
isc_result_t result, loopresult;
|
||||||
dns_name_t *name;
|
dns_name_t *name;
|
||||||
@@ -304,7 +306,7 @@ printsection(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
detailsection(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers,
|
detailsection(dig_query_t *query, dns_message_t *msg, bool headers,
|
||||||
dns_section_t section) {
|
dns_section_t section) {
|
||||||
isc_result_t result, loopresult;
|
isc_result_t result, loopresult;
|
||||||
dns_name_t *name;
|
dns_name_t *name;
|
||||||
@@ -429,7 +431,7 @@ chase_cnamechain(dns_message_t *msg, dns_name_t *qname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
printmessage(dig_query_t *query, dns_message_t *msg, bool headers) {
|
||||||
char servtext[ISC_SOCKADDR_FORMATSIZE];
|
char servtext[ISC_SOCKADDR_FORMATSIZE];
|
||||||
|
|
||||||
/* I've we've gotten this far, we've reached a server. */
|
/* I've we've gotten this far, we've reached a server. */
|
||||||
@@ -448,10 +450,10 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
if (!short_form) {
|
if (!short_form) {
|
||||||
puts("------------");
|
puts("------------");
|
||||||
/* detailheader(query, msg);*/
|
/* detailheader(query, msg);*/
|
||||||
detailsection(query, msg, ISC_TRUE, DNS_SECTION_QUESTION);
|
detailsection(query, msg, true, DNS_SECTION_QUESTION);
|
||||||
detailsection(query, msg, ISC_TRUE, DNS_SECTION_ANSWER);
|
detailsection(query, msg, true, DNS_SECTION_ANSWER);
|
||||||
detailsection(query, msg, ISC_TRUE, DNS_SECTION_AUTHORITY);
|
detailsection(query, msg, true, DNS_SECTION_AUTHORITY);
|
||||||
detailsection(query, msg, ISC_TRUE, DNS_SECTION_ADDITIONAL);
|
detailsection(query, msg, true, DNS_SECTION_ADDITIONAL);
|
||||||
puts("------------");
|
puts("------------");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,12 +481,12 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
dns_name_copy(query->lookup->name, name, NULL);
|
dns_name_copy(query->lookup->name, name, NULL);
|
||||||
chase_cnamechain(msg, name);
|
chase_cnamechain(msg, name);
|
||||||
dns_name_format(name, namestr, sizeof(namestr));
|
dns_name_format(name, namestr, sizeof(namestr));
|
||||||
lookup = clone_lookup(query->lookup, ISC_FALSE);
|
lookup = clone_lookup(query->lookup, false);
|
||||||
if (lookup != NULL) {
|
if (lookup != NULL) {
|
||||||
strlcpy(lookup->textname, namestr,
|
strlcpy(lookup->textname, namestr,
|
||||||
sizeof(lookup->textname));
|
sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_aaaa;
|
lookup->rdtype = dns_rdatatype_aaaa;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
lookup->origin = NULL;
|
lookup->origin = NULL;
|
||||||
lookup->retries = tries;
|
lookup->retries = tries;
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
@@ -498,7 +500,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
printsection(query, msg, headers, DNS_SECTION_ANSWER);
|
printsection(query, msg, headers, DNS_SECTION_ANSWER);
|
||||||
else {
|
else {
|
||||||
if (default_lookups && query->lookup->rdtype == dns_rdatatype_a)
|
if (default_lookups && query->lookup->rdtype == dns_rdatatype_a)
|
||||||
a_noanswer = ISC_TRUE;
|
a_noanswer = true;
|
||||||
|
|
||||||
else if (!default_lookups ||
|
else if (!default_lookups ||
|
||||||
(query->lookup->rdtype == dns_rdatatype_aaaa &&
|
(query->lookup->rdtype == dns_rdatatype_aaaa &&
|
||||||
@@ -520,7 +522,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
|
show_settings(bool full, bool serv_only) {
|
||||||
dig_server_t *srv;
|
dig_server_t *srv;
|
||||||
isc_sockaddr_t sockaddr;
|
isc_sockaddr_t sockaddr;
|
||||||
dig_searchlist_t *listent;
|
dig_searchlist_t *listent;
|
||||||
@@ -565,7 +567,7 @@ show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
testtype(char *typetext) {
|
testtype(char *typetext) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
@@ -575,14 +577,14 @@ testtype(char *typetext) {
|
|||||||
tr.length = strlen(typetext);
|
tr.length = strlen(typetext);
|
||||||
result = dns_rdatatype_fromtext(&rdtype, &tr);
|
result = dns_rdatatype_fromtext(&rdtype, &tr);
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
else {
|
else {
|
||||||
printf("unknown query type: %s\n", typetext);
|
printf("unknown query type: %s\n", typetext);
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
testclass(char *typetext) {
|
testclass(char *typetext) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_textregion_t tr;
|
isc_textregion_t tr;
|
||||||
@@ -592,24 +594,24 @@ testclass(char *typetext) {
|
|||||||
tr.length = strlen(typetext);
|
tr.length = strlen(typetext);
|
||||||
result = dns_rdataclass_fromtext(&rdclass, &tr);
|
result = dns_rdataclass_fromtext(&rdclass, &tr);
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
else {
|
else {
|
||||||
printf("unknown query class: %s\n", typetext);
|
printf("unknown query class: %s\n", typetext);
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_port(const char *value) {
|
set_port(const char *value) {
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
isc_result_t result = parse_uint(&n, value, 65535, "port");
|
isc_result_t result = parse_uint(&n, value, 65535, "port");
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
port = (isc_uint16_t) n;
|
port = (uint16_t) n;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_timeout(const char *value) {
|
set_timeout(const char *value) {
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
isc_result_t result = parse_uint(&n, value, UINT_MAX, "timeout");
|
isc_result_t result = parse_uint(&n, value, UINT_MAX, "timeout");
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
timeout = n;
|
timeout = n;
|
||||||
@@ -617,7 +619,7 @@ set_timeout(const char *value) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
set_tries(const char *value) {
|
set_tries(const char *value) {
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
isc_result_t result = parse_uint(&n, value, INT_MAX, "tries");
|
isc_result_t result = parse_uint(&n, value, INT_MAX, "tries");
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
tries = n;
|
tries = n;
|
||||||
@@ -625,7 +627,7 @@ set_tries(const char *value) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
set_ndots(const char *value) {
|
set_ndots(const char *value) {
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
isc_result_t result = parse_uint(&n, value, 128, "ndots");
|
isc_result_t result = parse_uint(&n, value, 128, "ndots");
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
ndots = n;
|
ndots = n;
|
||||||
@@ -644,7 +646,7 @@ setoption(char *opt) {
|
|||||||
((l >= N) && (l < sizeof(A)) && (strncasecmp(opt, A, l) == 0))
|
((l >= N) && (l < sizeof(A)) && (strncasecmp(opt, A, l) == 0))
|
||||||
|
|
||||||
if (CHECKOPT("all", 3)) {
|
if (CHECKOPT("all", 3)) {
|
||||||
show_settings(ISC_TRUE, ISC_FALSE);
|
show_settings(true, false);
|
||||||
} else if (strncasecmp(opt, "class=", 6) == 0) {
|
} else if (strncasecmp(opt, "class=", 6) == 0) {
|
||||||
if (testclass(&opt[6]))
|
if (testclass(&opt[6]))
|
||||||
strlcpy(defclass, &opt[6], sizeof(defclass));
|
strlcpy(defclass, &opt[6], sizeof(defclass));
|
||||||
@@ -654,41 +656,41 @@ setoption(char *opt) {
|
|||||||
} else if (strncasecmp(opt, "type=", 5) == 0) {
|
} else if (strncasecmp(opt, "type=", 5) == 0) {
|
||||||
if (testtype(&opt[5])) {
|
if (testtype(&opt[5])) {
|
||||||
strlcpy(deftype, &opt[5], sizeof(deftype));
|
strlcpy(deftype, &opt[5], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "ty=", 3) == 0) {
|
} else if (strncasecmp(opt, "ty=", 3) == 0) {
|
||||||
if (testtype(&opt[3])) {
|
if (testtype(&opt[3])) {
|
||||||
strlcpy(deftype, &opt[3], sizeof(deftype));
|
strlcpy(deftype, &opt[3], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "querytype=", 10) == 0) {
|
} else if (strncasecmp(opt, "querytype=", 10) == 0) {
|
||||||
if (testtype(&opt[10])) {
|
if (testtype(&opt[10])) {
|
||||||
strlcpy(deftype, &opt[10], sizeof(deftype));
|
strlcpy(deftype, &opt[10], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "query=", 6) == 0) {
|
} else if (strncasecmp(opt, "query=", 6) == 0) {
|
||||||
if (testtype(&opt[6])) {
|
if (testtype(&opt[6])) {
|
||||||
strlcpy(deftype, &opt[6], sizeof(deftype));
|
strlcpy(deftype, &opt[6], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "qu=", 3) == 0) {
|
} else if (strncasecmp(opt, "qu=", 3) == 0) {
|
||||||
if (testtype(&opt[3])) {
|
if (testtype(&opt[3])) {
|
||||||
strlcpy(deftype, &opt[3], sizeof(deftype));
|
strlcpy(deftype, &opt[3], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "q=", 2) == 0) {
|
} else if (strncasecmp(opt, "q=", 2) == 0) {
|
||||||
if (testtype(&opt[2])) {
|
if (testtype(&opt[2])) {
|
||||||
strlcpy(deftype, &opt[2], sizeof(deftype));
|
strlcpy(deftype, &opt[2], sizeof(deftype));
|
||||||
default_lookups = ISC_FALSE;
|
default_lookups = false;
|
||||||
}
|
}
|
||||||
} else if (strncasecmp(opt, "domain=", 7) == 0) {
|
} else if (strncasecmp(opt, "domain=", 7) == 0) {
|
||||||
strlcpy(domainopt, &opt[7], sizeof(domainopt));
|
strlcpy(domainopt, &opt[7], sizeof(domainopt));
|
||||||
set_search_domain(domainopt);
|
set_search_domain(domainopt);
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
} else if (strncasecmp(opt, "do=", 3) == 0) {
|
} else if (strncasecmp(opt, "do=", 3) == 0) {
|
||||||
strlcpy(domainopt, &opt[3], sizeof(domainopt));
|
strlcpy(domainopt, &opt[3], sizeof(domainopt));
|
||||||
set_search_domain(domainopt);
|
set_search_domain(domainopt);
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
} else if (strncasecmp(opt, "port=", 5) == 0) {
|
} else if (strncasecmp(opt, "port=", 5) == 0) {
|
||||||
set_port(&opt[5]);
|
set_port(&opt[5]);
|
||||||
} else if (strncasecmp(opt, "po=", 3) == 0) {
|
} else if (strncasecmp(opt, "po=", 3) == 0) {
|
||||||
@@ -698,43 +700,43 @@ setoption(char *opt) {
|
|||||||
} else if (strncasecmp(opt, "t=", 2) == 0) {
|
} else if (strncasecmp(opt, "t=", 2) == 0) {
|
||||||
set_timeout(&opt[2]);
|
set_timeout(&opt[2]);
|
||||||
} else if (CHECKOPT("recurse", 3)) {
|
} else if (CHECKOPT("recurse", 3)) {
|
||||||
recurse = ISC_TRUE;
|
recurse = true;
|
||||||
} else if (CHECKOPT("norecurse", 5)) {
|
} else if (CHECKOPT("norecurse", 5)) {
|
||||||
recurse = ISC_FALSE;
|
recurse = false;
|
||||||
} else if (strncasecmp(opt, "retry=", 6) == 0) {
|
} else if (strncasecmp(opt, "retry=", 6) == 0) {
|
||||||
set_tries(&opt[6]);
|
set_tries(&opt[6]);
|
||||||
} else if (strncasecmp(opt, "ret=", 4) == 0) {
|
} else if (strncasecmp(opt, "ret=", 4) == 0) {
|
||||||
set_tries(&opt[4]);
|
set_tries(&opt[4]);
|
||||||
} else if (CHECKOPT("defname", 3)) {
|
} else if (CHECKOPT("defname", 3)) {
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
} else if (CHECKOPT("nodefname", 5)) {
|
} else if (CHECKOPT("nodefname", 5)) {
|
||||||
usesearch = ISC_FALSE;
|
usesearch = false;
|
||||||
} else if (CHECKOPT("vc", 2)) {
|
} else if (CHECKOPT("vc", 2)) {
|
||||||
tcpmode = ISC_TRUE;
|
tcpmode = true;
|
||||||
tcpmode_set = ISC_TRUE;
|
tcpmode_set = true;
|
||||||
} else if (CHECKOPT("novc", 4)) {
|
} else if (CHECKOPT("novc", 4)) {
|
||||||
tcpmode = ISC_FALSE;
|
tcpmode = false;
|
||||||
tcpmode_set = ISC_TRUE;
|
tcpmode_set = true;
|
||||||
} else if (CHECKOPT("debug", 3)) {
|
} else if (CHECKOPT("debug", 3)) {
|
||||||
short_form = ISC_FALSE;
|
short_form = false;
|
||||||
showsearch = ISC_TRUE;
|
showsearch = true;
|
||||||
} else if (CHECKOPT("nodebug", 5)) {
|
} else if (CHECKOPT("nodebug", 5)) {
|
||||||
short_form = ISC_TRUE;
|
short_form = true;
|
||||||
showsearch = ISC_FALSE;
|
showsearch = false;
|
||||||
} else if (CHECKOPT("d2", 2)) {
|
} else if (CHECKOPT("d2", 2)) {
|
||||||
debugging = ISC_TRUE;
|
debugging = true;
|
||||||
} else if (CHECKOPT("nod2", 4)) {
|
} else if (CHECKOPT("nod2", 4)) {
|
||||||
debugging = ISC_FALSE;
|
debugging = false;
|
||||||
} else if (CHECKOPT("search", 3)) {
|
} else if (CHECKOPT("search", 3)) {
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
} else if (CHECKOPT("nosearch", 5)) {
|
} else if (CHECKOPT("nosearch", 5)) {
|
||||||
usesearch = ISC_FALSE;
|
usesearch = false;
|
||||||
} else if (CHECKOPT("sil", 3)) {
|
} else if (CHECKOPT("sil", 3)) {
|
||||||
/* deprecation_msg = ISC_FALSE; */
|
/* deprecation_msg = false; */
|
||||||
} else if (CHECKOPT("fail", 3)) {
|
} else if (CHECKOPT("fail", 3)) {
|
||||||
nofail=ISC_FALSE;
|
nofail=false;
|
||||||
} else if (CHECKOPT("nofail", 5)) {
|
} else if (CHECKOPT("nofail", 5)) {
|
||||||
nofail=ISC_TRUE;
|
nofail=true;
|
||||||
} else if (strncasecmp(opt, "ndots=", 6) == 0) {
|
} else if (strncasecmp(opt, "ndots=", 6) == 0) {
|
||||||
set_ndots(&opt[6]);
|
set_ndots(&opt[6]);
|
||||||
} else {
|
} else {
|
||||||
@@ -753,7 +755,7 @@ addlookup(char *opt) {
|
|||||||
|
|
||||||
debug("addlookup()");
|
debug("addlookup()");
|
||||||
|
|
||||||
a_noanswer = ISC_FALSE;
|
a_noanswer = false;
|
||||||
|
|
||||||
tr.base = deftype;
|
tr.base = deftype;
|
||||||
tr.length = strlen(deftype);
|
tr.length = strlen(deftype);
|
||||||
@@ -770,21 +772,21 @@ addlookup(char *opt) {
|
|||||||
rdclass = dns_rdataclass_in;
|
rdclass = dns_rdataclass_in;
|
||||||
}
|
}
|
||||||
lookup = make_empty_lookup();
|
lookup = make_empty_lookup();
|
||||||
if (get_reverse(store, sizeof(store), opt, lookup->ip6_int, ISC_TRUE)
|
if (get_reverse(store, sizeof(store), opt, lookup->ip6_int, true)
|
||||||
== ISC_R_SUCCESS) {
|
== ISC_R_SUCCESS) {
|
||||||
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
strlcpy(lookup->textname, store, sizeof(lookup->textname));
|
||||||
lookup->rdtype = dns_rdatatype_ptr;
|
lookup->rdtype = dns_rdatatype_ptr;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
} else {
|
} else {
|
||||||
strlcpy(lookup->textname, opt, sizeof(lookup->textname));
|
strlcpy(lookup->textname, opt, sizeof(lookup->textname));
|
||||||
lookup->rdtype = rdtype;
|
lookup->rdtype = rdtype;
|
||||||
lookup->rdtypeset = ISC_TRUE;
|
lookup->rdtypeset = true;
|
||||||
}
|
}
|
||||||
lookup->rdclass = rdclass;
|
lookup->rdclass = rdclass;
|
||||||
lookup->rdclassset = ISC_TRUE;
|
lookup->rdclassset = true;
|
||||||
lookup->trace = ISC_FALSE;
|
lookup->trace = false;
|
||||||
lookup->trace_root = lookup->trace;
|
lookup->trace_root = lookup->trace;
|
||||||
lookup->ns_search_only = ISC_FALSE;
|
lookup->ns_search_only = false;
|
||||||
lookup->identify = identify;
|
lookup->identify = identify;
|
||||||
lookup->recurse = recurse;
|
lookup->recurse = recurse;
|
||||||
lookup->aaonly = aaonly;
|
lookup->aaonly = aaonly;
|
||||||
@@ -792,7 +794,7 @@ addlookup(char *opt) {
|
|||||||
lookup->udpsize = 0;
|
lookup->udpsize = 0;
|
||||||
lookup->comments = comments;
|
lookup->comments = comments;
|
||||||
if (lookup->rdtype == dns_rdatatype_any && !tcpmode_set)
|
if (lookup->rdtype == dns_rdatatype_any && !tcpmode_set)
|
||||||
lookup->tcp_mode = ISC_TRUE;
|
lookup->tcp_mode = true;
|
||||||
else
|
else
|
||||||
lookup->tcp_mode = tcpmode;
|
lookup->tcp_mode = tcpmode;
|
||||||
lookup->stats = stats;
|
lookup->stats = stats;
|
||||||
@@ -800,9 +802,9 @@ addlookup(char *opt) {
|
|||||||
lookup->section_answer = section_answer;
|
lookup->section_answer = section_answer;
|
||||||
lookup->section_authority = section_authority;
|
lookup->section_authority = section_authority;
|
||||||
lookup->section_additional = section_additional;
|
lookup->section_additional = section_additional;
|
||||||
lookup->new_search = ISC_TRUE;
|
lookup->new_search = true;
|
||||||
if (nofail)
|
if (nofail)
|
||||||
lookup->servfail_stops = ISC_FALSE;
|
lookup->servfail_stops = false;
|
||||||
ISC_LIST_INIT(lookup->q);
|
ISC_LIST_INIT(lookup->q);
|
||||||
ISC_LINK_INIT(lookup, link);
|
ISC_LINK_INIT(lookup, link);
|
||||||
ISC_LIST_APPEND(lookup_list, lookup, link);
|
ISC_LIST_APPEND(lookup_list, lookup, link);
|
||||||
@@ -826,11 +828,11 @@ do_next_command(char *input) {
|
|||||||
(strcasecmp(ptr, "lserver") == 0)) {
|
(strcasecmp(ptr, "lserver") == 0)) {
|
||||||
isc_app_block();
|
isc_app_block();
|
||||||
set_nameserver(arg);
|
set_nameserver(arg);
|
||||||
check_ra = ISC_FALSE;
|
check_ra = false;
|
||||||
isc_app_unblock();
|
isc_app_unblock();
|
||||||
show_settings(ISC_TRUE, ISC_TRUE);
|
show_settings(true, true);
|
||||||
} else if (strcasecmp(ptr, "exit") == 0) {
|
} else if (strcasecmp(ptr, "exit") == 0) {
|
||||||
in_use = ISC_FALSE;
|
in_use = false;
|
||||||
} else if (strcasecmp(ptr, "help") == 0 ||
|
} else if (strcasecmp(ptr, "help") == 0 ||
|
||||||
strcasecmp(ptr, "?") == 0) {
|
strcasecmp(ptr, "?") == 0) {
|
||||||
printf("The '%s' command is not yet implemented.\n", ptr);
|
printf("The '%s' command is not yet implemented.\n", ptr);
|
||||||
@@ -867,7 +869,7 @@ get_next_command(void) {
|
|||||||
ptr = fgets(buf, COMMSIZE, stdin);
|
ptr = fgets(buf, COMMSIZE, stdin);
|
||||||
isc_app_unblock();
|
isc_app_unblock();
|
||||||
if (ptr == NULL) {
|
if (ptr == NULL) {
|
||||||
in_use = ISC_FALSE;
|
in_use = false;
|
||||||
} else
|
} else
|
||||||
do_next_command(ptr);
|
do_next_command(ptr);
|
||||||
#ifdef HAVE_READLINE
|
#ifdef HAVE_READLINE
|
||||||
@@ -879,9 +881,9 @@ get_next_command(void) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
parse_args(int argc, char **argv) {
|
parse_args(int argc, char **argv) {
|
||||||
isc_boolean_t have_lookup = ISC_FALSE;
|
bool have_lookup = false;
|
||||||
|
|
||||||
usesearch = ISC_TRUE;
|
usesearch = true;
|
||||||
for (argc--, argv++; argc > 0; argc--, argv++) {
|
for (argc--, argv++; argc > 0; argc--, argv++) {
|
||||||
debug("main parsing %s", argv[0]);
|
debug("main parsing %s", argv[0]);
|
||||||
if (argv[0][0] == '-') {
|
if (argv[0][0] == '-') {
|
||||||
@@ -891,15 +893,15 @@ parse_args(int argc, char **argv) {
|
|||||||
} else if (argv[0][1] != 0) {
|
} else if (argv[0][1] != 0) {
|
||||||
setoption(&argv[0][1]);
|
setoption(&argv[0][1]);
|
||||||
} else
|
} else
|
||||||
have_lookup = ISC_TRUE;
|
have_lookup = true;
|
||||||
} else {
|
} else {
|
||||||
if (!have_lookup) {
|
if (!have_lookup) {
|
||||||
have_lookup = ISC_TRUE;
|
have_lookup = true;
|
||||||
in_use = ISC_TRUE;
|
in_use = true;
|
||||||
addlookup(argv[0]);
|
addlookup(argv[0]);
|
||||||
} else {
|
} else {
|
||||||
set_nameserver(argv[0]);
|
set_nameserver(argv[0]);
|
||||||
check_ra = ISC_FALSE;
|
check_ra = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -970,13 +972,13 @@ int
|
|||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
interactive = ISC_TF(isatty(0));
|
interactive = isatty(0);
|
||||||
|
|
||||||
ISC_LIST_INIT(lookup_list);
|
ISC_LIST_INIT(lookup_list);
|
||||||
ISC_LIST_INIT(server_list);
|
ISC_LIST_INIT(server_list);
|
||||||
ISC_LIST_INIT(search_list);
|
ISC_LIST_INIT(search_list);
|
||||||
|
|
||||||
check_ra = ISC_TRUE;
|
check_ra = true;
|
||||||
|
|
||||||
/* setup dighost callbacks */
|
/* setup dighost callbacks */
|
||||||
dighost_printmessage = printmessage;
|
dighost_printmessage = printmessage;
|
||||||
@@ -990,7 +992,7 @@ main(int argc, char **argv) {
|
|||||||
setup_libs();
|
setup_libs();
|
||||||
progname = argv[0];
|
progname = argv[0];
|
||||||
|
|
||||||
setup_system(ISC_FALSE, ISC_FALSE);
|
setup_system(false, false);
|
||||||
parse_args(argc, argv);
|
parse_args(argc, argv);
|
||||||
if (keyfile[0] != 0)
|
if (keyfile[0] != 0)
|
||||||
setup_file_key();
|
setup_file_key();
|
||||||
@@ -1004,7 +1006,7 @@ main(int argc, char **argv) {
|
|||||||
else
|
else
|
||||||
result = isc_app_onrun(mctx, global_task, getinput, NULL);
|
result = isc_app_onrun(mctx, global_task, getinput, NULL);
|
||||||
check_result(result, "isc_app_onrun");
|
check_result(result, "isc_app_onrun");
|
||||||
in_use = ISC_TF(!in_use);
|
in_use = !in_use;
|
||||||
|
|
||||||
(void)isc_app_run();
|
(void)isc_app_run();
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@USE_READLINE_STATIC;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;USE_READLINE_STATIC;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@USE_READLINE_STATIC;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;USE_READLINE_STATIC;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -15,15 +15,14 @@ VERSION=@BIND9_VERSION@
|
|||||||
|
|
||||||
@BIND9_MAKE_INCLUDES@
|
@BIND9_MAKE_INCLUDES@
|
||||||
|
|
||||||
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @DST_OPENSSL_INC@
|
CINCLUDES = ${DNS_INCLUDES} ${ISC_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES = -DVERSION=\"${VERSION}\" @USE_PKCS11@ @PKCS11_ENGINE@ \
|
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||||
-DPK11_LIB_LOCATION=\"@PKCS11_PROVIDER@\"
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
|
|
||||||
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
DNSDEPLIBS = ../../lib/dns/libdns.@A@
|
||||||
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
ISCDEPLIBS = ../../lib/isc/libisc.@A@
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ Specify a digest algorithm to use when converting CDNSKEY records to DS records\
|
|||||||
.sp
|
.sp
|
||||||
The
|
The
|
||||||
\fIalgorithm\fR
|
\fIalgorithm\fR
|
||||||
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256), GOST, or SHA\-384 (SHA384)\&. These values are case insensitive\&. If no algorithm is specified, the default is SHA\-256\&.
|
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256), or SHA\-384 (SHA384)\&. These values are case insensitive\&. If no algorithm is specified, the default is SHA\-256\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-c \fIclass\fR
|
\-c \fIclass\fR
|
||||||
|
|||||||
+49
-47
@@ -19,6 +19,8 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
@@ -53,7 +55,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -84,7 +86,7 @@ static dns_rdataclass_t rdclass = dns_rdataclass_in;
|
|||||||
* List of digest types used by ds_from_cdnskey(), filled in by add_dtype()
|
* List of digest types used by ds_from_cdnskey(), filled in by add_dtype()
|
||||||
* from -a arguments. The size of the array is an arbitrary limit.
|
* from -a arguments. The size of the array is an arbitrary limit.
|
||||||
*/
|
*/
|
||||||
static isc_uint8_t dtype[8];
|
static uint8_t dtype[8];
|
||||||
|
|
||||||
static const char *startstr = NULL; /* from which we derive notbefore */
|
static const char *startstr = NULL; /* from which we derive notbefore */
|
||||||
static isc_stdtime_t notbefore = 0; /* restrict sig inception times */
|
static isc_stdtime_t notbefore = 0; /* restrict sig inception times */
|
||||||
@@ -127,7 +129,7 @@ static int nkey; /* number of child zone DNSKEY records */
|
|||||||
typedef struct keyinfo {
|
typedef struct keyinfo {
|
||||||
dns_rdata_t rdata;
|
dns_rdata_t rdata;
|
||||||
dst_key_t *dst;
|
dst_key_t *dst;
|
||||||
isc_uint8_t algo;
|
uint8_t algo;
|
||||||
dns_keytag_t tag;
|
dns_keytag_t tag;
|
||||||
} keyinfo_t;
|
} keyinfo_t;
|
||||||
|
|
||||||
@@ -258,7 +260,7 @@ load_db(const char *filename, dns_db_t **dbp, dns_dbnode_t **nodep) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_db_findnode(*dbp, name, ISC_FALSE, nodep);
|
result = dns_db_findnode(*dbp, name, false, nodep);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
fatal("can't find %s node in %s", namestr, filename);
|
fatal("can't find %s node in %s", namestr, filename);
|
||||||
}
|
}
|
||||||
@@ -312,7 +314,7 @@ get_dsset_name(char *filename, size_t size,
|
|||||||
}
|
}
|
||||||
isc_buffer_putstr(&buf, prefix);
|
isc_buffer_putstr(&buf, prefix);
|
||||||
|
|
||||||
result = dns_name_tofilenametext(name, ISC_FALSE, &buf);
|
result = dns_name_tofilenametext(name, false, &buf);
|
||||||
check_result(result, "dns_name_tofilenametext()");
|
check_result(result, "dns_name_tofilenametext()");
|
||||||
if (isc_buffer_availablelength(&buf) == 0) {
|
if (isc_buffer_availablelength(&buf) == 0) {
|
||||||
fatal("%s: pathname too long", path);
|
fatal("%s: pathname too long", path);
|
||||||
@@ -400,7 +402,7 @@ formatset(dns_rdataset_t *rdataset) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
write_parent_set(const char *path, const char *inplace,
|
write_parent_set(const char *path, const char *inplace,
|
||||||
isc_boolean_t nsupdate, dns_rdataset_t *rdataset)
|
bool nsupdate, dns_rdataset_t *rdataset)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_buffer_t *buf = NULL;
|
isc_buffer_t *buf = NULL;
|
||||||
@@ -467,7 +469,7 @@ typedef enum { LOOSE, TIGHT } strictness_t;
|
|||||||
/*
|
/*
|
||||||
* Find out if any (C)DS record matches a particular (C)DNSKEY.
|
* Find out if any (C)DS record matches a particular (C)DNSKEY.
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -481,7 +483,7 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
|||||||
dns_rdata_t dsrdata = DNS_RDATA_INIT;
|
dns_rdata_t dsrdata = DNS_RDATA_INIT;
|
||||||
dns_rdata_t newdsrdata = DNS_RDATA_INIT;
|
dns_rdata_t newdsrdata = DNS_RDATA_INIT;
|
||||||
dns_rdatatype_t keytype;
|
dns_rdatatype_t keytype;
|
||||||
isc_boolean_t c;
|
bool c;
|
||||||
|
|
||||||
dns_rdataset_current(dsset, &dsrdata);
|
dns_rdataset_current(dsset, &dsrdata);
|
||||||
result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
|
result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
|
||||||
@@ -511,13 +513,13 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
|||||||
vbprintf(1, "found matching %s %d %d %d\n",
|
vbprintf(1, "found matching %s %d %d %d\n",
|
||||||
c ? "CDS" : "DS",
|
c ? "CDS" : "DS",
|
||||||
ds.key_tag, ds.algorithm, ds.digest_type);
|
ds.key_tag, ds.algorithm, ds.digest_type);
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
} else if (strictness == TIGHT) {
|
} else if (strictness == TIGHT) {
|
||||||
vbprintf(0, "key does not match %s %d %d %d "
|
vbprintf(0, "key does not match %s %d %d %d "
|
||||||
"when it looks like it should\n",
|
"when it looks like it should\n",
|
||||||
c ? "CDS" : "DS",
|
c ? "CDS" : "DS",
|
||||||
ds.key_tag, ds.algorithm, ds.digest_type);
|
ds.key_tag, ds.algorithm, ds.digest_type);
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -528,7 +530,7 @@ match_key_dsset(keyinfo_t *ki, dns_rdataset_t *dsset, strictness_t strictness)
|
|||||||
? "CDNSKEY" : "DNSKEY",
|
? "CDNSKEY" : "DNSKEY",
|
||||||
ki->tag, ki->algo);
|
ki->tag, ki->algo);
|
||||||
|
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -617,12 +619,12 @@ free_keytable(keyinfo_t **keytable_p) {
|
|||||||
* otherwise the key algorithm. This is used by the signature coverage
|
* otherwise the key algorithm. This is used by the signature coverage
|
||||||
* check functions below.
|
* check functions below.
|
||||||
*/
|
*/
|
||||||
static isc_uint8_t *
|
static uint8_t *
|
||||||
matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
||||||
dns_rdataset_t *sigset)
|
dns_rdataset_t *sigset)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_uint8_t *algo;
|
uint8_t *algo;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
algo = isc_mem_get(mctx, nkey);
|
algo = isc_mem_get(mctx, nkey);
|
||||||
@@ -668,7 +670,7 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
result = dns_dnssec_verify(name, rdataset, ki->dst,
|
result = dns_dnssec_verify(name, rdataset, ki->dst,
|
||||||
ISC_FALSE, 0, mctx,
|
false, 0, mctx,
|
||||||
&sigrdata, NULL);
|
&sigrdata, NULL);
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS &&
|
if (result != ISC_R_SUCCESS &&
|
||||||
@@ -704,13 +706,13 @@ matching_sigs(keyinfo_t *keytbl, dns_rdataset_t *rdataset,
|
|||||||
* Consume the result of matching_sigs(). When checking records
|
* Consume the result of matching_sigs(). When checking records
|
||||||
* fetched from the child zone, any working signature is enough.
|
* fetched from the child zone, any working signature is enough.
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
signed_loose(isc_uint8_t *algo) {
|
signed_loose(uint8_t *algo) {
|
||||||
isc_boolean_t ok = ISC_FALSE;
|
bool ok = false;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < nkey; i++) {
|
for (i = 0; i < nkey; i++) {
|
||||||
if (algo[i] != 0) {
|
if (algo[i] != 0) {
|
||||||
ok = ISC_TRUE;
|
ok = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_mem_put(mctx, algo, nkey);
|
isc_mem_put(mctx, algo, nkey);
|
||||||
@@ -723,10 +725,10 @@ signed_loose(isc_uint8_t *algo) {
|
|||||||
* key algorithm in the DS RRset must have a signature in the DNSKEY
|
* key algorithm in the DS RRset must have a signature in the DNSKEY
|
||||||
* RRset.
|
* RRset.
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
signed_strict(dns_rdataset_t *dsset, isc_uint8_t *algo) {
|
signed_strict(dns_rdataset_t *dsset, uint8_t *algo) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t all_ok = ISC_TRUE;
|
bool all_ok = true;
|
||||||
|
|
||||||
for (result = dns_rdataset_first(dsset);
|
for (result = dns_rdataset_first(dsset);
|
||||||
result == ISC_R_SUCCESS;
|
result == ISC_R_SUCCESS;
|
||||||
@@ -734,23 +736,23 @@ signed_strict(dns_rdataset_t *dsset, isc_uint8_t *algo) {
|
|||||||
{
|
{
|
||||||
dns_rdata_t dsrdata = DNS_RDATA_INIT;
|
dns_rdata_t dsrdata = DNS_RDATA_INIT;
|
||||||
dns_rdata_ds_t ds;
|
dns_rdata_ds_t ds;
|
||||||
isc_boolean_t ds_ok;
|
bool ds_ok;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dns_rdataset_current(dsset, &dsrdata);
|
dns_rdataset_current(dsset, &dsrdata);
|
||||||
result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
|
result = dns_rdata_tostruct(&dsrdata, &ds, NULL);
|
||||||
check_result(result, "dns_rdata_tostruct(DS)");
|
check_result(result, "dns_rdata_tostruct(DS)");
|
||||||
|
|
||||||
ds_ok = ISC_FALSE;
|
ds_ok = false;
|
||||||
for (i = 0; i < nkey; i++) {
|
for (i = 0; i < nkey; i++) {
|
||||||
if (algo[i] == ds.algorithm) {
|
if (algo[i] == ds.algorithm) {
|
||||||
ds_ok = ISC_TRUE;
|
ds_ok = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ds_ok) {
|
if (!ds_ok) {
|
||||||
vbprintf(0, "missing signature for algorithm %d "
|
vbprintf(0, "missing signature for algorithm %d "
|
||||||
"(key %d)\n", ds.algorithm, ds.key_tag);
|
"(key %d)\n", ds.algorithm, ds.key_tag);
|
||||||
all_ok = ISC_FALSE;
|
all_ok = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,14 +850,14 @@ ds_from_cdnskey(dns_rdatalist_t *dslist, isc_buffer_t *buf,
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
cmp_dtype(const void *ap, const void *bp) {
|
cmp_dtype(const void *ap, const void *bp) {
|
||||||
int a = *(const isc_uint8_t *)ap;
|
int a = *(const uint8_t *)ap;
|
||||||
int b = *(const isc_uint8_t *)bp;
|
int b = *(const uint8_t *)bp;
|
||||||
return (a - b);
|
return (a - b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_dtype(const char *dn) {
|
add_dtype(const char *dn) {
|
||||||
isc_uint8_t dt;
|
uint8_t dt;
|
||||||
unsigned i, n;
|
unsigned i, n;
|
||||||
|
|
||||||
dt = strtodsdigest(dn);
|
dt = strtodsdigest(dn);
|
||||||
@@ -872,7 +874,7 @@ add_dtype(const char *dn) {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
make_new_ds_set(ds_maker_func_t *ds_from_rdata,
|
make_new_ds_set(ds_maker_func_t *ds_from_rdata,
|
||||||
isc_uint32_t ttl, dns_rdataset_t *rdset)
|
uint32_t ttl, dns_rdataset_t *rdset)
|
||||||
{
|
{
|
||||||
unsigned int size = 16;
|
unsigned int size = 16;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@@ -934,14 +936,14 @@ rdata_cmp(const void *rdata1, const void *rdata2) {
|
|||||||
* Ensure that every key identified by the DS RRset has the same set of
|
* Ensure that every key identified by the DS RRset has the same set of
|
||||||
* digest types.
|
* digest types.
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
consistent_digests(dns_rdataset_t *dsset) {
|
consistent_digests(dns_rdataset_t *dsset) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_rdata_t *arrdata;
|
dns_rdata_t *arrdata;
|
||||||
dns_rdata_ds_t *ds;
|
dns_rdata_ds_t *ds;
|
||||||
dns_keytag_t key_tag;
|
dns_keytag_t key_tag;
|
||||||
isc_uint8_t algorithm;
|
uint8_t algorithm;
|
||||||
isc_boolean_t match;
|
bool match;
|
||||||
int i, j, n, d;
|
int i, j, n, d;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -995,7 +997,7 @@ consistent_digests(dns_rdataset_t *dsset) {
|
|||||||
/*
|
/*
|
||||||
* Check subsequent keys match the first one
|
* Check subsequent keys match the first one
|
||||||
*/
|
*/
|
||||||
match = ISC_TRUE;
|
match = true;
|
||||||
while (i < n) {
|
while (i < n) {
|
||||||
key_tag = ds[i].key_tag;
|
key_tag = ds[i].key_tag;
|
||||||
algorithm = ds[i].algorithm;
|
algorithm = ds[i].algorithm;
|
||||||
@@ -1004,7 +1006,7 @@ consistent_digests(dns_rdataset_t *dsset) {
|
|||||||
ds[i+j].algorithm != algorithm ||
|
ds[i+j].algorithm != algorithm ||
|
||||||
ds[i+j].digest_type != ds[j].digest_type)
|
ds[i+j].digest_type != ds[j].digest_type)
|
||||||
{
|
{
|
||||||
match = ISC_FALSE;
|
match = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
i += d;
|
i += d;
|
||||||
@@ -1039,7 +1041,7 @@ print_diff(const char *cmd, dns_rdataset_t *rdataset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_diff(const char *cmd, isc_uint32_t ttl,
|
update_diff(const char *cmd, uint32_t ttl,
|
||||||
dns_rdataset_t *addset, dns_rdataset_t *delset)
|
dns_rdataset_t *addset, dns_rdataset_t *delset)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -1047,7 +1049,7 @@ update_diff(const char *cmd, isc_uint32_t ttl,
|
|||||||
dns_dbnode_t *node;
|
dns_dbnode_t *node;
|
||||||
dns_dbversion_t *ver;
|
dns_dbversion_t *ver;
|
||||||
dns_rdataset_t diffset;
|
dns_rdataset_t diffset;
|
||||||
isc_uint32_t save;
|
uint32_t save;
|
||||||
|
|
||||||
db = NULL;
|
db = NULL;
|
||||||
result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone,
|
result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone,
|
||||||
@@ -1059,7 +1061,7 @@ update_diff(const char *cmd, isc_uint32_t ttl,
|
|||||||
check_result(result, "dns_db_newversion()");
|
check_result(result, "dns_db_newversion()");
|
||||||
|
|
||||||
node = NULL;
|
node = NULL;
|
||||||
result = dns_db_findnode(db, name, ISC_TRUE, &node);
|
result = dns_db_findnode(db, name, true, &node);
|
||||||
check_result(result, "dns_db_findnode()");
|
check_result(result, "dns_db_findnode()");
|
||||||
|
|
||||||
dns_rdataset_init(&diffset);
|
dns_rdataset_init(&diffset);
|
||||||
@@ -1083,12 +1085,12 @@ update_diff(const char *cmd, isc_uint32_t ttl,
|
|||||||
}
|
}
|
||||||
|
|
||||||
dns_db_detachnode(db, &node);
|
dns_db_detachnode(db, &node);
|
||||||
dns_db_closeversion(db, &ver, ISC_FALSE);
|
dns_db_closeversion(db, &ver, false);
|
||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nsdiff(isc_uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) {
|
nsdiff(uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) {
|
||||||
if (ttl == 0) {
|
if (ttl == 0) {
|
||||||
vbprintf(1, "warning: no TTL in nsupdate script\n");
|
vbprintf(1, "warning: no TTL in nsupdate script\n");
|
||||||
}
|
}
|
||||||
@@ -1115,7 +1117,7 @@ usage(void) {
|
|||||||
program);
|
program);
|
||||||
fprintf(stderr, "Version: %s\n", VERSION);
|
fprintf(stderr, "Version: %s\n", VERSION);
|
||||||
fprintf(stderr, "Options:\n"
|
fprintf(stderr, "Options:\n"
|
||||||
" -a <algorithm> digest algorithm (SHA-1 / SHA-256 / GOST / SHA-384)\n"
|
" -a <algorithm> digest algorithm (SHA-1 / SHA-256 / SHA-384)\n"
|
||||||
" -c <class> of domain (default IN)\n"
|
" -c <class> of domain (default IN)\n"
|
||||||
" -D prefer CDNSKEY records instead of CDS\n"
|
" -D prefer CDNSKEY records instead of CDS\n"
|
||||||
" -d <file|dir> where to find parent dsset- file\n"
|
" -d <file|dir> where to find parent dsset- file\n"
|
||||||
@@ -1136,9 +1138,9 @@ main(int argc, char *argv[]) {
|
|||||||
const char *ds_path = NULL;
|
const char *ds_path = NULL;
|
||||||
const char *inplace = NULL;
|
const char *inplace = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_boolean_t prefer_cdnskey = ISC_FALSE;
|
bool prefer_cdnskey = false;
|
||||||
isc_boolean_t nsupdate = ISC_FALSE;
|
bool nsupdate = false;
|
||||||
isc_uint32_t ttl = 0;
|
uint32_t ttl = 0;
|
||||||
int ch;
|
int ch;
|
||||||
char *endp;
|
char *endp;
|
||||||
|
|
||||||
@@ -1147,12 +1149,12 @@ main(int argc, char *argv[]) {
|
|||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
#define OPTIONS "a:c:Dd:f:i:ms:T:uv:V"
|
#define OPTIONS "a:c:Dd:f:i:ms:T:uv:V"
|
||||||
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
||||||
@@ -1164,7 +1166,7 @@ main(int argc, char *argv[]) {
|
|||||||
rdclass = strtoclass(isc_commandline_argument);
|
rdclass = strtoclass(isc_commandline_argument);
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
prefer_cdnskey = ISC_TRUE;
|
prefer_cdnskey = true;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
ds_path = isc_commandline_argument;
|
ds_path = isc_commandline_argument;
|
||||||
@@ -1197,7 +1199,7 @@ main(int argc, char *argv[]) {
|
|||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
nsupdate = ISC_TRUE;
|
nsupdate = true;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
/* Does not return. */
|
/* Does not return. */
|
||||||
|
|||||||
@@ -144,7 +144,7 @@
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The <replaceable>algorithm</replaceable> must be one of SHA-1
|
The <replaceable>algorithm</replaceable> must be one of SHA-1
|
||||||
(SHA1), SHA-256 (SHA256), GOST, or SHA-384 (SHA384). These
|
(SHA1), SHA-256 (SHA256), or SHA-384 (SHA384). These
|
||||||
values are case insensitive. If no algorithm is specified,
|
values are case insensitive. If no algorithm is specified,
|
||||||
the default is SHA-256.
|
the default is SHA-256.
|
||||||
</para>
|
</para>
|
||||||
|
|||||||
@@ -130,7 +130,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The <em class="replaceable"><code>algorithm</code></em> must be one of SHA-1
|
The <em class="replaceable"><code>algorithm</code></em> must be one of SHA-1
|
||||||
(SHA1), SHA-256 (SHA256), GOST, or SHA-384 (SHA384). These
|
(SHA1), SHA-256 (SHA256), or SHA-384 (SHA384). These
|
||||||
values are case insensitive. If no algorithm is specified,
|
values are case insensitive. If no algorithm is specified,
|
||||||
the default is SHA-256.
|
the default is SHA-256.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ Use SHA\-256 as the digest algorithm\&.
|
|||||||
.RS 4
|
.RS 4
|
||||||
Select the digest algorithm\&. The value of
|
Select the digest algorithm\&. The value of
|
||||||
\fBalgorithm\fR
|
\fBalgorithm\fR
|
||||||
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256), GOST or SHA\-384 (SHA384)\&. These values are case insensitive\&.
|
must be one of SHA\-1 (SHA1), SHA\-256 (SHA256) or SHA\-384 (SHA384)\&. These values are case insensitive\&.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
\-C
|
\-C
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
@@ -41,7 +43,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -58,8 +60,8 @@ static dns_rdataclass_t rdclass;
|
|||||||
static dns_fixedname_t fixed;
|
static dns_fixedname_t fixed;
|
||||||
static dns_name_t *name = NULL;
|
static dns_name_t *name = NULL;
|
||||||
static isc_mem_t *mctx = NULL;
|
static isc_mem_t *mctx = NULL;
|
||||||
static isc_uint32_t ttl;
|
static uint32_t ttl;
|
||||||
static isc_boolean_t emitttl = ISC_FALSE;
|
static bool emitttl = false;
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
initname(char *setname) {
|
initname(char *setname) {
|
||||||
@@ -118,7 +120,7 @@ loadset(const char *filename, dns_rdataset_t *rdataset) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_db_findnode(db, name, ISC_FALSE, &node);
|
result = dns_db_findnode(db, name, false, &node);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't find %s node in %s", setname, filename);
|
fatal("can't find %s node in %s", setname, filename);
|
||||||
|
|
||||||
@@ -159,7 +161,7 @@ loadkeyset(char *dirname, dns_rdataset_t *rdataset) {
|
|||||||
return (ISC_R_NOSPACE);
|
return (ISC_R_NOSPACE);
|
||||||
isc_buffer_putstr(&buf, "keyset-");
|
isc_buffer_putstr(&buf, "keyset-");
|
||||||
|
|
||||||
result = dns_name_tofilenametext(name, ISC_FALSE, &buf);
|
result = dns_name_tofilenametext(name, false, &buf);
|
||||||
check_result(result, "dns_name_tofilenametext()");
|
check_result(result, "dns_name_tofilenametext()");
|
||||||
if (isc_buffer_availablelength(&buf) == 0)
|
if (isc_buffer_availablelength(&buf) == 0)
|
||||||
return (ISC_R_NOSPACE);
|
return (ISC_R_NOSPACE);
|
||||||
@@ -233,8 +235,8 @@ logkey(dns_rdata_t *rdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
emit(unsigned int dtype, isc_boolean_t showall, char *lookaside,
|
emit(unsigned int dtype, bool showall, char *lookaside,
|
||||||
isc_boolean_t cds, dns_rdata_t *rdata)
|
bool cds, dns_rdata_t *rdata)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
unsigned char buf[DNS_DS_BUFFERSIZE];
|
unsigned char buf[DNS_DS_BUFFERSIZE];
|
||||||
@@ -263,7 +265,7 @@ emit(unsigned int dtype, isc_boolean_t showall, char *lookaside,
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't build record");
|
fatal("can't build record");
|
||||||
|
|
||||||
result = dns_name_totext(name, ISC_FALSE, &nameb);
|
result = dns_name_totext(name, false, &nameb);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't print name");
|
fatal("can't print name");
|
||||||
|
|
||||||
@@ -352,10 +354,10 @@ main(int argc, char **argv) {
|
|||||||
char *endp;
|
char *endp;
|
||||||
int ch;
|
int ch;
|
||||||
unsigned int dtype = DNS_DSDIGEST_SHA1;
|
unsigned int dtype = DNS_DSDIGEST_SHA1;
|
||||||
isc_boolean_t cds = ISC_FALSE;
|
bool cds = false;
|
||||||
isc_boolean_t both = ISC_TRUE;
|
bool both = true;
|
||||||
isc_boolean_t usekeyset = ISC_FALSE;
|
bool usekeyset = false;
|
||||||
isc_boolean_t showall = ISC_FALSE;
|
bool showall = false;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_log_t *log = NULL;
|
isc_log_t *log = NULL;
|
||||||
dns_rdataset_t rdataset;
|
dns_rdataset_t rdataset;
|
||||||
@@ -370,36 +372,36 @@ main(int argc, char **argv) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
#define OPTIONS "12Aa:Cc:d:Ff:K:l:sT:v:hV"
|
#define OPTIONS "12Aa:Cc:d:Ff:K:l:sT:v:hV"
|
||||||
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, OPTIONS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '1':
|
case '1':
|
||||||
dtype = DNS_DSDIGEST_SHA1;
|
dtype = DNS_DSDIGEST_SHA1;
|
||||||
both = ISC_FALSE;
|
both = false;
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
dtype = DNS_DSDIGEST_SHA256;
|
dtype = DNS_DSDIGEST_SHA256;
|
||||||
both = ISC_FALSE;
|
both = false;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
showall = ISC_TRUE;
|
showall = true;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
dtype = strtodsdigest(isc_commandline_argument);
|
dtype = strtodsdigest(isc_commandline_argument);
|
||||||
both = ISC_FALSE;
|
both = false;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
if (lookaside != NULL)
|
if (lookaside != NULL)
|
||||||
fatal("lookaside and CDS are mutually"
|
fatal("lookaside and CDS are mutually"
|
||||||
" exclusive");
|
" exclusive");
|
||||||
cds = ISC_TRUE;
|
cds = true;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
classname = isc_commandline_argument;
|
classname = isc_commandline_argument;
|
||||||
@@ -425,10 +427,10 @@ main(int argc, char **argv) {
|
|||||||
fatal("lookaside must be a non-empty string");
|
fatal("lookaside must be a non-empty string");
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
usekeyset = ISC_TRUE;
|
usekeyset = true;
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
emitttl = ISC_TRUE;
|
emitttl = true;
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
@@ -466,7 +468,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
/* When not using -f, -A is implicit */
|
/* When not using -f, -A is implicit */
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
showall = ISC_TRUE;
|
showall = true;
|
||||||
|
|
||||||
if (argc < isc_commandline_index + 1 && filename == NULL)
|
if (argc < isc_commandline_index + 1 && filename == NULL)
|
||||||
fatal("the key file name was not specified");
|
fatal("the key file name was not specified");
|
||||||
|
|||||||
@@ -117,7 +117,7 @@
|
|||||||
<para>
|
<para>
|
||||||
Select the digest algorithm. The value of
|
Select the digest algorithm. The value of
|
||||||
<option>algorithm</option> must be one of SHA-1 (SHA1),
|
<option>algorithm</option> must be one of SHA-1 (SHA1),
|
||||||
SHA-256 (SHA256), GOST or SHA-384 (SHA384).
|
SHA-256 (SHA256) or SHA-384 (SHA384).
|
||||||
These values are case insensitive.
|
These values are case insensitive.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
<p>
|
<p>
|
||||||
Select the digest algorithm. The value of
|
Select the digest algorithm. The value of
|
||||||
<code class="option">algorithm</code> must be one of SHA-1 (SHA1),
|
<code class="option">algorithm</code> must be one of SHA-1 (SHA1),
|
||||||
SHA-256 (SHA256), GOST or SHA-384 (SHA384).
|
SHA-256 (SHA256) or SHA-384 (SHA384).
|
||||||
These values are case insensitive.
|
These values are case insensitive.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
@@ -41,7 +42,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -58,13 +59,13 @@ static dns_rdataclass_t rdclass;
|
|||||||
static dns_fixedname_t fixed;
|
static dns_fixedname_t fixed;
|
||||||
static dns_name_t *name = NULL;
|
static dns_name_t *name = NULL;
|
||||||
static isc_mem_t *mctx = NULL;
|
static isc_mem_t *mctx = NULL;
|
||||||
static isc_boolean_t setpub = ISC_FALSE, setdel = ISC_FALSE;
|
static bool setpub = false, setdel = false;
|
||||||
static isc_boolean_t setttl = ISC_FALSE;
|
static bool setttl = false;
|
||||||
static isc_stdtime_t pub = 0, del = 0;
|
static isc_stdtime_t pub = 0, del = 0;
|
||||||
static dns_ttl_t ttl = 0;
|
static dns_ttl_t ttl = 0;
|
||||||
static isc_stdtime_t syncadd = 0, syncdel = 0;
|
static isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
static isc_boolean_t setsyncadd = ISC_FALSE;
|
static bool setsyncadd = false;
|
||||||
static isc_boolean_t setsyncdel = ISC_FALSE;
|
static bool setsyncdel = false;
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
initname(char *setname) {
|
initname(char *setname) {
|
||||||
@@ -124,7 +125,7 @@ loadset(const char *filename, dns_rdataset_t *rdataset) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
result = dns_db_findnode(db, name, ISC_FALSE, &node);
|
result = dns_db_findnode(db, name, false, &node);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("can't find %s node in %s", setname, filename);
|
fatal("can't find %s node in %s", setname, filename);
|
||||||
|
|
||||||
@@ -226,7 +227,7 @@ emit(const char *dir, dns_rdata_t *rdata) {
|
|||||||
dst_key_free(&tmp);
|
dst_key_free(&tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
dst_key_setexternal(key, ISC_TRUE);
|
dst_key_setexternal(key, true);
|
||||||
if (setpub)
|
if (setpub)
|
||||||
dst_key_settime(key, DST_TIME_PUBLISH, pub);
|
dst_key_settime(key, DST_TIME_PUBLISH, pub);
|
||||||
if (setdel)
|
if (setdel)
|
||||||
@@ -310,12 +311,12 @@ main(int argc, char **argv) {
|
|||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
#define CMDLINE_FLAGS "D:f:hK:L:P:v:V"
|
#define CMDLINE_FLAGS "D:f:hK:L:P:v:V"
|
||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
@@ -346,7 +347,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
setttl = ISC_TRUE;
|
setttl = true;
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
/* -Psync ? */
|
/* -Psync ? */
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ of the key is specified on the command line\&. This must match the name of the z
|
|||||||
.RS 4
|
.RS 4
|
||||||
Selects the cryptographic algorithm\&. The value of
|
Selects the cryptographic algorithm\&. The value of
|
||||||
\fBalgorithm\fR
|
\fBalgorithm\fR
|
||||||
must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&.
|
must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&.
|
||||||
.sp
|
.sp
|
||||||
If no algorithm is specified, then RSASHA1 will be used by default, unless the
|
If no algorithm is specified, then RSASHA1 will be used by default, unless the
|
||||||
\fB\-3\fR
|
\fB\-3\fR
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
@@ -37,7 +39,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -64,17 +66,14 @@ usage(void) {
|
|||||||
fprintf(stderr, " -a algorithm: \n"
|
fprintf(stderr, " -a algorithm: \n"
|
||||||
" RSA | RSAMD5 | DH | DSA | RSASHA1 |\n"
|
" RSA | RSAMD5 | DH | DSA | RSASHA1 |\n"
|
||||||
" NSEC3DSA | NSEC3RSASHA1 |\n"
|
" NSEC3DSA | NSEC3RSASHA1 |\n"
|
||||||
" RSASHA256 | RSASHA512 | ECCGOST |\n"
|
" RSASHA256 | RSASHA512 |\n"
|
||||||
" ECDSAP256SHA256 | ECDSAP384SHA384\n");
|
" ECDSAP256SHA256 | ECDSAP384SHA384\n");
|
||||||
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
||||||
fprintf(stderr, " -c class (default: IN)\n");
|
fprintf(stderr, " -c class (default: IN)\n");
|
||||||
fprintf(stderr, " -E <engine>:\n");
|
fprintf(stderr, " -E <engine>:\n");
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
fprintf(stderr, " path to PKCS#11 provider library "
|
fprintf(stderr, " path to PKCS#11 provider library "
|
||||||
"(default is %s)\n", PK11_LIB_LOCATION);
|
"(default is %s)\n", PK11_LIB_LOCATION);
|
||||||
#elif defined(USE_PKCS11)
|
|
||||||
fprintf(stderr, " name of an OpenSSL engine to use "
|
|
||||||
"(default is \"pkcs11\")\n");
|
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, " name of an OpenSSL engine to use\n");
|
fprintf(stderr, " name of an OpenSSL engine to use\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -124,19 +123,15 @@ main(int argc, char **argv) {
|
|||||||
const char *directory = NULL;
|
const char *directory = NULL;
|
||||||
const char *predecessor = NULL;
|
const char *predecessor = NULL;
|
||||||
dst_key_t *prevkey = NULL;
|
dst_key_t *prevkey = NULL;
|
||||||
#ifdef USE_PKCS11
|
|
||||||
const char *engine = PKCS11_ENGINE;
|
|
||||||
#else
|
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
#endif
|
|
||||||
char *classname = NULL;
|
char *classname = NULL;
|
||||||
char *endp;
|
char *endp;
|
||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
dns_fixedname_t fname;
|
dns_fixedname_t fname;
|
||||||
dns_name_t *name;
|
dns_name_t *name;
|
||||||
isc_uint16_t flags = 0, kskflag = 0, revflag = 0;
|
uint16_t flags = 0, kskflag = 0, revflag = 0;
|
||||||
dns_secalg_t alg;
|
dns_secalg_t alg;
|
||||||
isc_boolean_t oldstyle = ISC_FALSE;
|
bool oldstyle = false;
|
||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
int ch;
|
int ch;
|
||||||
int protocol = -1, signatory = 0;
|
int protocol = -1, signatory = 0;
|
||||||
@@ -153,32 +148,32 @@ main(int argc, char **argv) {
|
|||||||
isc_stdtime_t inactive = 0, deltime = 0;
|
isc_stdtime_t inactive = 0, deltime = 0;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
int prepub = -1;
|
int prepub = -1;
|
||||||
isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
|
bool setpub = false, setact = false;
|
||||||
isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
|
bool setrev = false, setinact = false;
|
||||||
isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
|
bool setdel = false, setttl = false;
|
||||||
isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
|
bool unsetpub = false, unsetact = false;
|
||||||
isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
|
bool unsetrev = false, unsetinact = false;
|
||||||
isc_boolean_t unsetdel = ISC_FALSE;
|
bool unsetdel = false;
|
||||||
isc_boolean_t genonly = ISC_FALSE;
|
bool genonly = false;
|
||||||
isc_boolean_t use_nsec3 = ISC_FALSE;
|
bool use_nsec3 = false;
|
||||||
isc_boolean_t avoid_collisions = ISC_TRUE;
|
bool avoid_collisions = true;
|
||||||
isc_boolean_t exact;
|
bool exact;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
isc_stdtime_t syncadd = 0, syncdel = 0;
|
isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
isc_boolean_t unsetsyncadd = ISC_FALSE, setsyncadd = ISC_FALSE;
|
bool unsetsyncadd = false, setsyncadd = false;
|
||||||
isc_boolean_t unsetsyncdel = ISC_FALSE, setsyncdel = ISC_FALSE;
|
bool unsetsyncdel = false, setsyncdel = false;
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
|
|
||||||
@@ -186,13 +181,13 @@ main(int argc, char **argv) {
|
|||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '3':
|
case '3':
|
||||||
use_nsec3 = ISC_TRUE;
|
use_nsec3 = true;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
algname = isc_commandline_argument;
|
algname = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
oldstyle = ISC_TRUE;
|
oldstyle = true;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
classname = isc_commandline_argument;
|
classname = isc_commandline_argument;
|
||||||
@@ -222,7 +217,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
setttl = ISC_TRUE;
|
setttl = true;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
label = isc_mem_strdup(mctx, isc_commandline_argument);
|
label = isc_mem_strdup(mctx, isc_commandline_argument);
|
||||||
@@ -245,10 +240,10 @@ main(int argc, char **argv) {
|
|||||||
fatal("-v must be followed by a number");
|
fatal("-v must be followed by a number");
|
||||||
break;
|
break;
|
||||||
case 'y':
|
case 'y':
|
||||||
avoid_collisions = ISC_FALSE;
|
avoid_collisions = false;
|
||||||
break;
|
break;
|
||||||
case 'G':
|
case 'G':
|
||||||
genonly = ISC_TRUE;
|
genonly = true;
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
/* -Psync ? */
|
/* -Psync ? */
|
||||||
@@ -388,20 +383,10 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strcasecmp(algname, "RSA") == 0) {
|
if (strcasecmp(algname, "RSA") == 0) {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
||||||
"recommended.\nIf you still wish to "
|
"recommended.\nIf you still wish to "
|
||||||
"use RSA (RSAMD5) please specify "
|
"use RSA (RSAMD5) please specify "
|
||||||
"\"-a RSAMD5\"\n");
|
"\"-a RSAMD5\"\n");
|
||||||
#else
|
|
||||||
fprintf(stderr,
|
|
||||||
"The use of RSA (RSAMD5) was disabled\n");
|
|
||||||
if (freeit != NULL)
|
|
||||||
free(freeit);
|
|
||||||
return (1);
|
|
||||||
} else if (strcasecmp(algname, "RSAMD5") == 0) {
|
|
||||||
fprintf(stderr, "The use of RSAMD5 was disabled\n");
|
|
||||||
#endif
|
|
||||||
if (freeit != NULL)
|
if (freeit != NULL)
|
||||||
free(freeit);
|
free(freeit);
|
||||||
return (1);
|
return (1);
|
||||||
@@ -427,7 +412,6 @@ main(int argc, char **argv) {
|
|||||||
case DST_ALG_NSEC3RSASHA1:
|
case DST_ALG_NSEC3RSASHA1:
|
||||||
case DST_ALG_RSASHA256:
|
case DST_ALG_RSASHA256:
|
||||||
case DST_ALG_RSASHA512:
|
case DST_ALG_RSASHA512:
|
||||||
case DST_ALG_ECCGOST:
|
|
||||||
case DST_ALG_ECDSA256:
|
case DST_ALG_ECDSA256:
|
||||||
case DST_ALG_ECDSA384:
|
case DST_ALG_ECDSA384:
|
||||||
case DST_ALG_ED25519:
|
case DST_ALG_ED25519:
|
||||||
@@ -460,14 +444,14 @@ main(int argc, char **argv) {
|
|||||||
"prepublication interval.");
|
"prepublication interval.");
|
||||||
|
|
||||||
if (!setpub && !setact) {
|
if (!setpub && !setact) {
|
||||||
setpub = setact = ISC_TRUE;
|
setpub = setact = true;
|
||||||
publish = now;
|
publish = now;
|
||||||
activate = now + prepub;
|
activate = now + prepub;
|
||||||
} else if (setpub && !setact) {
|
} else if (setpub && !setact) {
|
||||||
setact = ISC_TRUE;
|
setact = true;
|
||||||
activate = publish + prepub;
|
activate = publish + prepub;
|
||||||
} else if (setact && !setpub) {
|
} else if (setact && !setpub) {
|
||||||
setpub = ISC_TRUE;
|
setpub = true;
|
||||||
publish = activate - prepub;
|
publish = activate - prepub;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -513,11 +497,6 @@ main(int argc, char **argv) {
|
|||||||
alg = dst_key_alg(prevkey);
|
alg = dst_key_alg(prevkey);
|
||||||
flags = dst_key_flags(prevkey);
|
flags = dst_key_flags(prevkey);
|
||||||
|
|
||||||
#ifdef PK11_MD5_DISABLE
|
|
||||||
if (alg == DST_ALG_RSAMD5)
|
|
||||||
fatal("Key %s uses disabled RSAMD5", predecessor);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dst_key_format(prevkey, keystr, sizeof(keystr));
|
dst_key_format(prevkey, keystr, sizeof(keystr));
|
||||||
dst_key_getprivateformat(prevkey, &major, &minor);
|
dst_key_getprivateformat(prevkey, &major, &minor);
|
||||||
if (major != DST_MAJOR_VERSION || minor < DST_MINOR_VERSION)
|
if (major != DST_MAJOR_VERSION || minor < DST_MINOR_VERSION)
|
||||||
@@ -555,7 +534,7 @@ main(int argc, char **argv) {
|
|||||||
"You can use dnssec-settime -D to "
|
"You can use dnssec-settime -D to "
|
||||||
"change this.\n", program, keystr);
|
"change this.\n", program, keystr);
|
||||||
|
|
||||||
setpub = setact = ISC_TRUE;
|
setpub = setact = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nametype == NULL) {
|
if (nametype == NULL) {
|
||||||
@@ -607,7 +586,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
/* associate the key */
|
/* associate the key */
|
||||||
ret = dst_key_fromlabel(name, alg, flags, protocol, rdclass,
|
ret = dst_key_fromlabel(name, alg, flags, protocol, rdclass,
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
"pkcs11",
|
"pkcs11",
|
||||||
#else
|
#else
|
||||||
engine,
|
engine,
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
<para>
|
<para>
|
||||||
Selects the cryptographic algorithm. The value of
|
Selects the cryptographic algorithm. The value of
|
||||||
<option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
<option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST,
|
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
<p>
|
<p>
|
||||||
Selects the cryptographic algorithm. The value of
|
Selects the cryptographic algorithm. The value of
|
||||||
<code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
<code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
||||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST,
|
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ may be preferable to direct use of
|
|||||||
.RS 4
|
.RS 4
|
||||||
Selects the cryptographic algorithm\&. For DNSSEC keys, the value of
|
Selects the cryptographic algorithm\&. For DNSSEC keys, the value of
|
||||||
\fBalgorithm\fR
|
\fBalgorithm\fR
|
||||||
must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&. For TKEY, the value must be DH (Diffie Hellman); specifying his value will automatically set the
|
must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448\&. For TKEY, the value must be DH (Diffie Hellman); specifying his value will automatically set the
|
||||||
\fB\-T KEY\fR
|
\fB\-T KEY\fR
|
||||||
option as well\&.
|
option as well\&.
|
||||||
.sp
|
.sp
|
||||||
|
|||||||
+41
-61
@@ -28,6 +28,8 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@@ -52,7 +54,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -79,7 +81,7 @@ usage(void) {
|
|||||||
fprintf(stderr, " -a <algorithm>:\n");
|
fprintf(stderr, " -a <algorithm>:\n");
|
||||||
fprintf(stderr, " RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1"
|
fprintf(stderr, " RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1"
|
||||||
" | NSEC3DSA |\n");
|
" | NSEC3DSA |\n");
|
||||||
fprintf(stderr, " RSASHA256 | RSASHA512 | ECCGOST |\n");
|
fprintf(stderr, " RSASHA256 | RSASHA512 |\n");
|
||||||
fprintf(stderr, " ECDSAP256SHA256 | ECDSAP384SHA384 |\n");
|
fprintf(stderr, " ECDSAP256SHA256 | ECDSAP384SHA384 |\n");
|
||||||
fprintf(stderr, " ED25519 | ED448 | DH\n");
|
fprintf(stderr, " ED25519 | ED448 | DH\n");
|
||||||
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
fprintf(stderr, " -3: use NSEC3-capable algorithm\n");
|
||||||
@@ -106,12 +108,9 @@ usage(void) {
|
|||||||
fprintf(stderr, " -c <class>: (default: IN)\n");
|
fprintf(stderr, " -c <class>: (default: IN)\n");
|
||||||
fprintf(stderr, " -d <digest bits> (0 => max, default)\n");
|
fprintf(stderr, " -d <digest bits> (0 => max, default)\n");
|
||||||
fprintf(stderr, " -E <engine>:\n");
|
fprintf(stderr, " -E <engine>:\n");
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
fprintf(stderr, " path to PKCS#11 provider library "
|
fprintf(stderr, " path to PKCS#11 provider library "
|
||||||
"(default is %s)\n", PK11_LIB_LOCATION);
|
"(default is %s)\n", PK11_LIB_LOCATION);
|
||||||
#elif defined(USE_PKCS11)
|
|
||||||
fprintf(stderr, " name of an OpenSSL engine to use "
|
|
||||||
"(default is \"pkcs11\")\n");
|
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, " name of an OpenSSL engine to use\n");
|
fprintf(stderr, " name of an OpenSSL engine to use\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -162,9 +161,9 @@ usage(void) {
|
|||||||
exit (-1);
|
exit (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
dsa_size_ok(int size) {
|
dsa_size_ok(int size) {
|
||||||
return (ISC_TF(size >= 512 && size <= 1024 && size % 64 == 0));
|
return (size >= 512 && size <= 1024 && size % 64 == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -201,10 +200,10 @@ main(int argc, char **argv) {
|
|||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
dns_fixedname_t fname;
|
dns_fixedname_t fname;
|
||||||
dns_name_t *name;
|
dns_name_t *name;
|
||||||
isc_uint16_t flags = 0, kskflag = 0, revflag = 0;
|
uint16_t flags = 0, kskflag = 0, revflag = 0;
|
||||||
dns_secalg_t alg;
|
dns_secalg_t alg;
|
||||||
isc_boolean_t conflict = ISC_FALSE, null_key = ISC_FALSE;
|
bool conflict = false, null_key = false;
|
||||||
isc_boolean_t oldstyle = ISC_FALSE;
|
bool oldstyle = false;
|
||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
int ch, generator = 0, param = 0;
|
int ch, generator = 0, param = 0;
|
||||||
int protocol = -1, size = -1, signatory = 0;
|
int protocol = -1, size = -1, signatory = 0;
|
||||||
@@ -216,43 +215,39 @@ main(int argc, char **argv) {
|
|||||||
dst_key_t *prevkey = NULL;
|
dst_key_t *prevkey = NULL;
|
||||||
isc_buffer_t buf;
|
isc_buffer_t buf;
|
||||||
isc_log_t *log = NULL;
|
isc_log_t *log = NULL;
|
||||||
#ifdef USE_PKCS11
|
|
||||||
const char *engine = PKCS11_ENGINE;
|
|
||||||
#else
|
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
#endif
|
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
int options = DST_TYPE_PRIVATE | DST_TYPE_PUBLIC;
|
int options = DST_TYPE_PRIVATE | DST_TYPE_PUBLIC;
|
||||||
int dbits = 0;
|
int dbits = 0;
|
||||||
dns_ttl_t ttl = 0;
|
dns_ttl_t ttl = 0;
|
||||||
isc_boolean_t use_nsec3 = ISC_FALSE;
|
bool use_nsec3 = false;
|
||||||
isc_stdtime_t publish = 0, activate = 0, revokekey = 0;
|
isc_stdtime_t publish = 0, activate = 0, revokekey = 0;
|
||||||
isc_stdtime_t inactive = 0, deltime = 0;
|
isc_stdtime_t inactive = 0, deltime = 0;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
int prepub = -1;
|
int prepub = -1;
|
||||||
isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
|
bool setpub = false, setact = false;
|
||||||
isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
|
bool setrev = false, setinact = false;
|
||||||
isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
|
bool setdel = false, setttl = false;
|
||||||
isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
|
bool unsetpub = false, unsetact = false;
|
||||||
isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
|
bool unsetrev = false, unsetinact = false;
|
||||||
isc_boolean_t unsetdel = ISC_FALSE;
|
bool unsetdel = false;
|
||||||
isc_boolean_t genonly = ISC_FALSE;
|
bool genonly = false;
|
||||||
isc_boolean_t quiet = ISC_FALSE;
|
bool quiet = false;
|
||||||
isc_boolean_t show_progress = ISC_FALSE;
|
bool show_progress = false;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
isc_stdtime_t syncadd = 0, syncdel = 0;
|
isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
isc_boolean_t setsyncadd = ISC_FALSE;
|
bool setsyncadd = false;
|
||||||
isc_boolean_t setsyncdel = ISC_FALSE;
|
bool setsyncdel = false;
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Process memory debugging argument first.
|
* Process memory debugging argument first.
|
||||||
@@ -277,7 +272,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
@@ -286,7 +281,7 @@ main(int argc, char **argv) {
|
|||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '3':
|
case '3':
|
||||||
use_nsec3 = ISC_TRUE;
|
use_nsec3 = true;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
algname = isc_commandline_argument;
|
algname = isc_commandline_argument;
|
||||||
@@ -297,7 +292,7 @@ main(int argc, char **argv) {
|
|||||||
fatal("-b requires a non-negative number");
|
fatal("-b requires a non-negative number");
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
oldstyle = ISC_TRUE;
|
oldstyle = true;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
classname = isc_commandline_argument;
|
classname = isc_commandline_argument;
|
||||||
@@ -345,7 +340,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
setttl = ISC_TRUE;
|
setttl = true;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
nametype = isc_commandline_argument;
|
nametype = isc_commandline_argument;
|
||||||
@@ -359,7 +354,7 @@ main(int argc, char **argv) {
|
|||||||
"[0..255]");
|
"[0..255]");
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
quiet = ISC_TRUE;
|
quiet = true;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
fatal("The -r option has been deprecated.\n"
|
fatal("The -r option has been deprecated.\n"
|
||||||
@@ -396,7 +391,7 @@ main(int argc, char **argv) {
|
|||||||
/* already the default */
|
/* already the default */
|
||||||
break;
|
break;
|
||||||
case 'G':
|
case 'G':
|
||||||
genonly = ISC_TRUE;
|
genonly = true;
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
/* -Psync ? */
|
/* -Psync ? */
|
||||||
@@ -490,7 +485,7 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isatty(0))
|
if (!isatty(0))
|
||||||
quiet = ISC_TRUE;
|
quiet = true;
|
||||||
|
|
||||||
ret = dst_lib_init(mctx, engine);
|
ret = dst_lib_init(mctx, engine);
|
||||||
if (ret != ISC_R_SUCCESS)
|
if (ret != ISC_R_SUCCESS)
|
||||||
@@ -523,23 +518,12 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strcasecmp(algname, "RSA") == 0) {
|
if (strcasecmp(algname, "RSA") == 0) {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
fprintf(stderr, "The use of RSA (RSAMD5) is not "
|
||||||
"recommended.\nIf you still wish to "
|
"recommended.\nIf you still wish to "
|
||||||
"use RSA (RSAMD5) please specify "
|
"use RSA (RSAMD5) please specify "
|
||||||
"\"-a RSAMD5\"\n");
|
"\"-a RSAMD5\"\n");
|
||||||
INSIST(freeit == NULL);
|
INSIST(freeit == NULL);
|
||||||
return (1);
|
return (1);
|
||||||
#else
|
|
||||||
fprintf(stderr,
|
|
||||||
"The use of RSA (RSAMD5) was disabled\n");
|
|
||||||
INSIST(freeit == NULL);
|
|
||||||
return (1);
|
|
||||||
} else if (strcasecmp(algname, "RSAMD5") == 0) {
|
|
||||||
fprintf(stderr, "The use of RSAMD5 was disabled\n");
|
|
||||||
INSIST(freeit == NULL);
|
|
||||||
return (1);
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
r.base = algname;
|
r.base = algname;
|
||||||
r.length = strlen(algname);
|
r.length = strlen(algname);
|
||||||
@@ -552,10 +536,6 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PK11_MD5_DISABLE
|
|
||||||
INSIST((alg != DNS_KEYALG_RSAMD5));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!dst_algorithm_supported(alg)) {
|
if (!dst_algorithm_supported(alg)) {
|
||||||
fatal("unsupported algorithm: %d", alg);
|
fatal("unsupported algorithm: %d", alg);
|
||||||
}
|
}
|
||||||
@@ -636,14 +616,14 @@ main(int argc, char **argv) {
|
|||||||
"prepublication interval.");
|
"prepublication interval.");
|
||||||
|
|
||||||
if (!setpub && !setact) {
|
if (!setpub && !setact) {
|
||||||
setpub = setact = ISC_TRUE;
|
setpub = setact = true;
|
||||||
publish = now;
|
publish = now;
|
||||||
activate = now + prepub;
|
activate = now + prepub;
|
||||||
} else if (setpub && !setact) {
|
} else if (setpub && !setact) {
|
||||||
setact = ISC_TRUE;
|
setact = true;
|
||||||
activate = publish + prepub;
|
activate = publish + prepub;
|
||||||
} else if (setact && !setpub) {
|
} else if (setact && !setpub) {
|
||||||
setpub = ISC_TRUE;
|
setpub = true;
|
||||||
publish = activate - prepub;
|
publish = activate - prepub;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +709,7 @@ main(int argc, char **argv) {
|
|||||||
"You can use dnssec-settime -D to "
|
"You can use dnssec-settime -D to "
|
||||||
"change this.\n", program, keystr);
|
"change this.\n", program, keystr);
|
||||||
|
|
||||||
setpub = setact = ISC_TRUE;
|
setpub = setact = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (alg) {
|
switch (alg) {
|
||||||
@@ -828,7 +808,7 @@ main(int argc, char **argv) {
|
|||||||
case DNS_KEYALG_NSEC3RSASHA1:
|
case DNS_KEYALG_NSEC3RSASHA1:
|
||||||
case DNS_KEYALG_RSASHA256:
|
case DNS_KEYALG_RSASHA256:
|
||||||
case DNS_KEYALG_RSASHA512:
|
case DNS_KEYALG_RSASHA512:
|
||||||
show_progress = ISC_TRUE;
|
show_progress = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DNS_KEYALG_DH:
|
case DNS_KEYALG_DH:
|
||||||
@@ -842,17 +822,17 @@ main(int argc, char **argv) {
|
|||||||
case DST_ALG_ECDSA384:
|
case DST_ALG_ECDSA384:
|
||||||
case DST_ALG_ED25519:
|
case DST_ALG_ED25519:
|
||||||
case DST_ALG_ED448:
|
case DST_ALG_ED448:
|
||||||
show_progress = ISC_TRUE;
|
show_progress = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY)
|
if ((flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY)
|
||||||
null_key = ISC_TRUE;
|
null_key = true;
|
||||||
|
|
||||||
isc_buffer_init(&buf, filename, sizeof(filename) - 1);
|
isc_buffer_init(&buf, filename, sizeof(filename) - 1);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
conflict = ISC_FALSE;
|
conflict = false;
|
||||||
|
|
||||||
if (!quiet && show_progress) {
|
if (!quiet && show_progress) {
|
||||||
fprintf(stderr, "Generating key pair.");
|
fprintf(stderr, "Generating key pair.");
|
||||||
@@ -973,7 +953,7 @@ main(int argc, char **argv) {
|
|||||||
* or another key being revoked.
|
* or another key being revoked.
|
||||||
*/
|
*/
|
||||||
if (key_collision(key, name, directory, mctx, NULL)) {
|
if (key_collision(key, name, directory, mctx, NULL)) {
|
||||||
conflict = ISC_TRUE;
|
conflict = true;
|
||||||
if (null_key) {
|
if (null_key) {
|
||||||
dst_key_free(&key);
|
dst_key_free(&key);
|
||||||
break;
|
break;
|
||||||
@@ -994,7 +974,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
dst_key_free(&key);
|
dst_key_free(&key);
|
||||||
}
|
}
|
||||||
} while (conflict == ISC_TRUE);
|
} while (conflict == true);
|
||||||
|
|
||||||
if (conflict)
|
if (conflict)
|
||||||
fatal("cannot generate a null key due to possible key ID "
|
fatal("cannot generate a null key due to possible key ID "
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
<para>
|
<para>
|
||||||
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
||||||
of <option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
of <option>algorithm</option> must be one of RSAMD5, RSASHA1,
|
||||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST,
|
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
|
||||||
TKEY, the value must be DH (Diffie Hellman); specifying
|
TKEY, the value must be DH (Diffie Hellman); specifying
|
||||||
his value will automatically set the <option>-T KEY</option>
|
his value will automatically set the <option>-T KEY</option>
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
<p>
|
<p>
|
||||||
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
Selects the cryptographic algorithm. For DNSSEC keys, the value
|
||||||
of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1,
|
||||||
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST,
|
DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512,
|
||||||
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
|
ECDSAP256SHA256, ECDSAP384SHA384, ED25519 or ED448. For
|
||||||
TKEY, the value must be DH (Diffie Hellman); specifying
|
TKEY, the value must be DH (Diffie Hellman); specifying
|
||||||
his value will automatically set the <code class="option">-T KEY</code>
|
his value will automatically set the <code class="option">-T KEY</code>
|
||||||
|
|||||||
+12
-17
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@@ -30,7 +32,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -49,12 +51,9 @@ usage(void) {
|
|||||||
fprintf(stderr, "Usage:\n");
|
fprintf(stderr, "Usage:\n");
|
||||||
fprintf(stderr, " %s [options] keyfile\n\n", program);
|
fprintf(stderr, " %s [options] keyfile\n\n", program);
|
||||||
fprintf(stderr, "Version: %s\n", VERSION);
|
fprintf(stderr, "Version: %s\n", VERSION);
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
fprintf(stderr, " -E engine: specify PKCS#11 provider "
|
fprintf(stderr, " -E engine: specify PKCS#11 provider "
|
||||||
"(default: %s)\n", PK11_LIB_LOCATION);
|
"(default: %s)\n", PK11_LIB_LOCATION);
|
||||||
#elif defined(USE_PKCS11)
|
|
||||||
fprintf(stderr, " -E engine: specify OpenSSL engine "
|
|
||||||
"(default \"pkcs11\")\n");
|
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, " -E engine: specify OpenSSL engine\n");
|
fprintf(stderr, " -E engine: specify OpenSSL engine\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -75,11 +74,7 @@ usage(void) {
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
#ifdef USE_PKCS11
|
|
||||||
const char *engine = PKCS11_ENGINE;
|
|
||||||
#else
|
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
#endif
|
|
||||||
char const *filename = NULL;
|
char const *filename = NULL;
|
||||||
char *dir = NULL;
|
char *dir = NULL;
|
||||||
char newname[1024], oldname[1024];
|
char newname[1024], oldname[1024];
|
||||||
@@ -87,11 +82,11 @@ main(int argc, char **argv) {
|
|||||||
char *endp;
|
char *endp;
|
||||||
int ch;
|
int ch;
|
||||||
dst_key_t *key = NULL;
|
dst_key_t *key = NULL;
|
||||||
isc_uint32_t flags;
|
uint32_t flags;
|
||||||
isc_buffer_t buf;
|
isc_buffer_t buf;
|
||||||
isc_boolean_t force = ISC_FALSE;
|
bool force = false;
|
||||||
isc_boolean_t removefile = ISC_FALSE;
|
bool removefile = false;
|
||||||
isc_boolean_t id = ISC_FALSE;
|
bool id = false;
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
@@ -105,7 +100,7 @@ main(int argc, char **argv) {
|
|||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:V")) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:V")) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@@ -113,7 +108,7 @@ main(int argc, char **argv) {
|
|||||||
engine = isc_commandline_argument;
|
engine = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
force = ISC_TRUE;
|
force = true;
|
||||||
break;
|
break;
|
||||||
case 'K':
|
case 'K':
|
||||||
/*
|
/*
|
||||||
@@ -127,10 +122,10 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
removefile = ISC_TRUE;
|
removefile = true;
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
id = ISC_TRUE;
|
id = true;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
verbose = strtol(isc_commandline_argument, &endp, 0);
|
verbose = strtol(isc_commandline_argument, &endp, 0);
|
||||||
|
|||||||
+54
-56
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@@ -33,7 +35,7 @@
|
|||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -53,7 +55,7 @@ usage(void) {
|
|||||||
fprintf(stderr, " %s [options] keyfile\n\n", program);
|
fprintf(stderr, " %s [options] keyfile\n\n", program);
|
||||||
fprintf(stderr, "Version: %s\n", VERSION);
|
fprintf(stderr, "Version: %s\n", VERSION);
|
||||||
fprintf(stderr, "General options:\n");
|
fprintf(stderr, "General options:\n");
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
fprintf(stderr, " -E engine: specify PKCS#11 provider "
|
fprintf(stderr, " -E engine: specify PKCS#11 provider "
|
||||||
"(default: %s)\n", PK11_LIB_LOCATION);
|
"(default: %s)\n", PK11_LIB_LOCATION);
|
||||||
#elif defined(USE_PKCS11)
|
#elif defined(USE_PKCS11)
|
||||||
@@ -102,7 +104,7 @@ usage(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
printtime(dst_key_t *key, int type, const char *tag, isc_boolean_t epoch,
|
printtime(dst_key_t *key, int type, const char *tag, bool epoch,
|
||||||
FILE *stream)
|
FILE *stream)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
@@ -127,11 +129,7 @@ printtime(dst_key_t *key, int type, const char *tag, isc_boolean_t epoch,
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
#ifdef USE_PKCS11
|
|
||||||
const char *engine = PKCS11_ENGINE;
|
|
||||||
#else
|
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
#endif
|
|
||||||
const char *filename = NULL;
|
const char *filename = NULL;
|
||||||
char *directory = NULL;
|
char *directory = NULL;
|
||||||
char newname[1024];
|
char newname[1024];
|
||||||
@@ -145,29 +143,29 @@ main(int argc, char **argv) {
|
|||||||
dns_name_t *name = NULL;
|
dns_name_t *name = NULL;
|
||||||
dns_secalg_t alg = 0;
|
dns_secalg_t alg = 0;
|
||||||
unsigned int size = 0;
|
unsigned int size = 0;
|
||||||
isc_uint16_t flags = 0;
|
uint16_t flags = 0;
|
||||||
int prepub = -1;
|
int prepub = -1;
|
||||||
dns_ttl_t ttl = 0;
|
dns_ttl_t ttl = 0;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0;
|
isc_stdtime_t pub = 0, act = 0, rev = 0, inact = 0, del = 0;
|
||||||
isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0;
|
isc_stdtime_t prevact = 0, previnact = 0, prevdel = 0;
|
||||||
isc_boolean_t setpub = ISC_FALSE, setact = ISC_FALSE;
|
bool setpub = false, setact = false;
|
||||||
isc_boolean_t setrev = ISC_FALSE, setinact = ISC_FALSE;
|
bool setrev = false, setinact = false;
|
||||||
isc_boolean_t setdel = ISC_FALSE, setttl = ISC_FALSE;
|
bool setdel = false, setttl = false;
|
||||||
isc_boolean_t unsetpub = ISC_FALSE, unsetact = ISC_FALSE;
|
bool unsetpub = false, unsetact = false;
|
||||||
isc_boolean_t unsetrev = ISC_FALSE, unsetinact = ISC_FALSE;
|
bool unsetrev = false, unsetinact = false;
|
||||||
isc_boolean_t unsetdel = ISC_FALSE;
|
bool unsetdel = false;
|
||||||
isc_boolean_t printcreate = ISC_FALSE, printpub = ISC_FALSE;
|
bool printcreate = false, printpub = false;
|
||||||
isc_boolean_t printact = ISC_FALSE, printrev = ISC_FALSE;
|
bool printact = false, printrev = false;
|
||||||
isc_boolean_t printinact = ISC_FALSE, printdel = ISC_FALSE;
|
bool printinact = false, printdel = false;
|
||||||
isc_boolean_t force = ISC_FALSE;
|
bool force = false;
|
||||||
isc_boolean_t epoch = ISC_FALSE;
|
bool epoch = false;
|
||||||
isc_boolean_t changed = ISC_FALSE;
|
bool changed = false;
|
||||||
isc_log_t *log = NULL;
|
isc_log_t *log = NULL;
|
||||||
isc_stdtime_t syncadd = 0, syncdel = 0;
|
isc_stdtime_t syncadd = 0, syncdel = 0;
|
||||||
isc_boolean_t unsetsyncadd = ISC_FALSE, setsyncadd = ISC_FALSE;
|
bool unsetsyncadd = false, setsyncadd = false;
|
||||||
isc_boolean_t unsetsyncdel = ISC_FALSE, setsyncdel = ISC_FALSE;
|
bool unsetsyncdel = false, setsyncdel = false;
|
||||||
isc_boolean_t printsyncadd = ISC_FALSE, printsyncdel = ISC_FALSE;
|
bool printsyncadd = false, printsyncdel = false;
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage();
|
usage();
|
||||||
@@ -178,12 +176,12 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
setup_logging(mctx, &log);
|
setup_logging(mctx, &log);
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
|
|
||||||
@@ -194,51 +192,51 @@ main(int argc, char **argv) {
|
|||||||
engine = isc_commandline_argument;
|
engine = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
force = ISC_TRUE;
|
force = true;
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
p = isc_commandline_argument;
|
p = isc_commandline_argument;
|
||||||
if (!strcasecmp(p, "all")) {
|
if (!strcasecmp(p, "all")) {
|
||||||
printcreate = ISC_TRUE;
|
printcreate = true;
|
||||||
printpub = ISC_TRUE;
|
printpub = true;
|
||||||
printact = ISC_TRUE;
|
printact = true;
|
||||||
printrev = ISC_TRUE;
|
printrev = true;
|
||||||
printinact = ISC_TRUE;
|
printinact = true;
|
||||||
printdel = ISC_TRUE;
|
printdel = true;
|
||||||
printsyncadd = ISC_TRUE;
|
printsyncadd = true;
|
||||||
printsyncdel = ISC_TRUE;
|
printsyncdel = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
switch (*p++) {
|
switch (*p++) {
|
||||||
case 'C':
|
case 'C':
|
||||||
printcreate = ISC_TRUE;
|
printcreate = true;
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
if (!strncmp(p, "sync", 4)) {
|
if (!strncmp(p, "sync", 4)) {
|
||||||
p += 4;
|
p += 4;
|
||||||
printsyncadd = ISC_TRUE;
|
printsyncadd = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printpub = ISC_TRUE;
|
printpub = true;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
printact = ISC_TRUE;
|
printact = true;
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
printrev = ISC_TRUE;
|
printrev = true;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
printinact = ISC_TRUE;
|
printinact = true;
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
if (!strncmp(p, "sync", 4)) {
|
if (!strncmp(p, "sync", 4)) {
|
||||||
p += 4;
|
p += 4;
|
||||||
printsyncdel = ISC_TRUE;
|
printsyncdel = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printdel = ISC_TRUE;
|
printdel = true;
|
||||||
break;
|
break;
|
||||||
case ' ':
|
case ' ':
|
||||||
break;
|
break;
|
||||||
@@ -249,7 +247,7 @@ main(int argc, char **argv) {
|
|||||||
} while (*p != '\0');
|
} while (*p != '\0');
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
epoch = ISC_TRUE;
|
epoch = true;
|
||||||
break;
|
break;
|
||||||
case 'K':
|
case 'K':
|
||||||
/*
|
/*
|
||||||
@@ -265,7 +263,7 @@ main(int argc, char **argv) {
|
|||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
ttl = strtottl(isc_commandline_argument);
|
ttl = strtottl(isc_commandline_argument);
|
||||||
setttl = ISC_TRUE;
|
setttl = true;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
verbose = strtol(isc_commandline_argument, &endp, 0);
|
verbose = strtol(isc_commandline_argument, &endp, 0);
|
||||||
@@ -279,7 +277,7 @@ main(int argc, char **argv) {
|
|||||||
fatal("-P sync specified more than "
|
fatal("-P sync specified more than "
|
||||||
"once");
|
"once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
syncadd = strtotime(isc_commandline_argument,
|
syncadd = strtotime(isc_commandline_argument,
|
||||||
now, now, &setsyncadd);
|
now, now, &setsyncadd);
|
||||||
unsetsyncadd = !setsyncadd;
|
unsetsyncadd = !setsyncadd;
|
||||||
@@ -289,7 +287,7 @@ main(int argc, char **argv) {
|
|||||||
if (setpub || unsetpub)
|
if (setpub || unsetpub)
|
||||||
fatal("-P specified more than once");
|
fatal("-P specified more than once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
pub = strtotime(isc_commandline_argument,
|
pub = strtotime(isc_commandline_argument,
|
||||||
now, now, &setpub);
|
now, now, &setpub);
|
||||||
unsetpub = !setpub;
|
unsetpub = !setpub;
|
||||||
@@ -298,7 +296,7 @@ main(int argc, char **argv) {
|
|||||||
if (setact || unsetact)
|
if (setact || unsetact)
|
||||||
fatal("-A specified more than once");
|
fatal("-A specified more than once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
act = strtotime(isc_commandline_argument,
|
act = strtotime(isc_commandline_argument,
|
||||||
now, now, &setact);
|
now, now, &setact);
|
||||||
unsetact = !setact;
|
unsetact = !setact;
|
||||||
@@ -307,7 +305,7 @@ main(int argc, char **argv) {
|
|||||||
if (setrev || unsetrev)
|
if (setrev || unsetrev)
|
||||||
fatal("-R specified more than once");
|
fatal("-R specified more than once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
rev = strtotime(isc_commandline_argument,
|
rev = strtotime(isc_commandline_argument,
|
||||||
now, now, &setrev);
|
now, now, &setrev);
|
||||||
unsetrev = !setrev;
|
unsetrev = !setrev;
|
||||||
@@ -316,7 +314,7 @@ main(int argc, char **argv) {
|
|||||||
if (setinact || unsetinact)
|
if (setinact || unsetinact)
|
||||||
fatal("-I specified more than once");
|
fatal("-I specified more than once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
inact = strtotime(isc_commandline_argument,
|
inact = strtotime(isc_commandline_argument,
|
||||||
now, now, &setinact);
|
now, now, &setinact);
|
||||||
unsetinact = !setinact;
|
unsetinact = !setinact;
|
||||||
@@ -328,7 +326,7 @@ main(int argc, char **argv) {
|
|||||||
fatal("-D sync specified more than "
|
fatal("-D sync specified more than "
|
||||||
"once");
|
"once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
syncdel = strtotime(isc_commandline_argument,
|
syncdel = strtotime(isc_commandline_argument,
|
||||||
now, now, &setsyncdel);
|
now, now, &setsyncdel);
|
||||||
unsetsyncdel = !setsyncdel;
|
unsetsyncdel = !setsyncdel;
|
||||||
@@ -339,7 +337,7 @@ main(int argc, char **argv) {
|
|||||||
if (setdel || unsetdel)
|
if (setdel || unsetdel)
|
||||||
fatal("-D specified more than once");
|
fatal("-D specified more than once");
|
||||||
|
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
del = strtotime(isc_commandline_argument,
|
del = strtotime(isc_commandline_argument,
|
||||||
now, now, &setdel);
|
now, now, &setdel);
|
||||||
unsetdel = !setdel;
|
unsetdel = !setdel;
|
||||||
@@ -450,7 +448,7 @@ main(int argc, char **argv) {
|
|||||||
"before it is scheduled to be "
|
"before it is scheduled to be "
|
||||||
"inactive.\n", program);
|
"inactive.\n", program);
|
||||||
|
|
||||||
changed = setpub = setact = ISC_TRUE;
|
changed = setpub = setact = true;
|
||||||
} else {
|
} else {
|
||||||
if (prepub < 0)
|
if (prepub < 0)
|
||||||
prepub = 0;
|
prepub = 0;
|
||||||
@@ -462,10 +460,10 @@ main(int argc, char **argv) {
|
|||||||
"prepublication interval.");
|
"prepublication interval.");
|
||||||
|
|
||||||
if (setpub && !setact) {
|
if (setpub && !setact) {
|
||||||
setact = ISC_TRUE;
|
setact = true;
|
||||||
act = pub + prepub;
|
act = pub + prepub;
|
||||||
} else if (setact && !setpub) {
|
} else if (setact && !setpub) {
|
||||||
setpub = ISC_TRUE;
|
setpub = true;
|
||||||
pub = act - prepub;
|
pub = act - prepub;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -596,11 +594,11 @@ main(int argc, char **argv) {
|
|||||||
if (force && !changed) {
|
if (force && !changed) {
|
||||||
dst_key_settime(key, DST_TIME_PUBLISH, now);
|
dst_key_settime(key, DST_TIME_PUBLISH, now);
|
||||||
dst_key_settime(key, DST_TIME_ACTIVATE, now);
|
dst_key_settime(key, DST_TIME_ACTIVATE, now);
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!changed && setttl)
|
if (!changed && setttl)
|
||||||
changed = ISC_TRUE;
|
changed = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out time values, if -p was used.
|
* Print out time values, if -p was used.
|
||||||
|
|||||||
+319
-236
File diff suppressed because it is too large
Load Diff
+15
-20
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
@@ -58,10 +59,11 @@
|
|||||||
#include <dns/result.h>
|
#include <dns/result.h>
|
||||||
#include <dns/soa.h>
|
#include <dns/soa.h>
|
||||||
#include <dns/time.h>
|
#include <dns/time.h>
|
||||||
|
#include <dns/zoneverify.h>
|
||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -77,8 +79,8 @@ static dns_db_t *gdb; /* The database */
|
|||||||
static dns_dbversion_t *gversion; /* The database version */
|
static dns_dbversion_t *gversion; /* The database version */
|
||||||
static dns_rdataclass_t gclass; /* The class */
|
static dns_rdataclass_t gclass; /* The class */
|
||||||
static dns_name_t *gorigin; /* The database origin */
|
static dns_name_t *gorigin; /* The database origin */
|
||||||
static isc_boolean_t ignore_kskflag = ISC_FALSE;
|
static bool ignore_kskflag = false;
|
||||||
static isc_boolean_t keyset_kskonly = ISC_FALSE;
|
static bool keyset_kskonly = false;
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Load the zone file from disk
|
* Load the zone file from disk
|
||||||
@@ -149,12 +151,9 @@ usage(void) {
|
|||||||
fprintf(stderr, "\t\tfile format of input zonefile (text)\n");
|
fprintf(stderr, "\t\tfile format of input zonefile (text)\n");
|
||||||
fprintf(stderr, "\t-c class (IN)\n");
|
fprintf(stderr, "\t-c class (IN)\n");
|
||||||
fprintf(stderr, "\t-E engine:\n");
|
fprintf(stderr, "\t-E engine:\n");
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
fprintf(stderr, "\t\tpath to PKCS#11 provider library "
|
fprintf(stderr, "\t\tpath to PKCS#11 provider library "
|
||||||
"(default is %s)\n", PK11_LIB_LOCATION);
|
"(default is %s)\n", PK11_LIB_LOCATION);
|
||||||
#elif defined(USE_PKCS11)
|
|
||||||
fprintf(stderr, "\t\tname of an OpenSSL engine to use "
|
|
||||||
"(default is \"pkcs11\")\n");
|
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "\t\tname of an OpenSSL engine to use\n");
|
fprintf(stderr, "\t\tname of an OpenSSL engine to use\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -170,11 +169,7 @@ main(int argc, char *argv[]) {
|
|||||||
char *inputformatstr = NULL;
|
char *inputformatstr = NULL;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_log_t *log = NULL;
|
isc_log_t *log = NULL;
|
||||||
#ifdef USE_PKCS11
|
|
||||||
const char *engine = PKCS11_ENGINE;
|
|
||||||
#else
|
|
||||||
const char *engine = NULL;
|
const char *engine = NULL;
|
||||||
#endif
|
|
||||||
char *classname = NULL;
|
char *classname = NULL;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
char *endp;
|
char *endp;
|
||||||
@@ -204,19 +199,19 @@ main(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = true;
|
||||||
check_result(isc_app_start(), "isc_app_start");
|
check_result(isc_app_start(), "isc_app_start");
|
||||||
|
|
||||||
result = isc_mem_create(0, 0, &mctx);
|
result = isc_mem_create(0, 0, &mctx);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
fatal("out of memory");
|
fatal("out of memory");
|
||||||
|
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
dns_result_register();
|
dns_result_register();
|
||||||
|
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@@ -247,11 +242,11 @@ main(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'x':
|
case 'x':
|
||||||
keyset_kskonly = ISC_TRUE;
|
keyset_kskonly = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'z':
|
case 'z':
|
||||||
ignore_kskflag = ISC_TRUE;
|
ignore_kskflag = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
@@ -322,10 +317,10 @@ main(int argc, char *argv[]) {
|
|||||||
result = dns_db_newversion(gdb, &gversion);
|
result = dns_db_newversion(gdb, &gversion);
|
||||||
check_result(result, "dns_db_newversion()");
|
check_result(result, "dns_db_newversion()");
|
||||||
|
|
||||||
verifyzone(gdb, gversion, gorigin, mctx,
|
result = dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, NULL,
|
||||||
ignore_kskflag, keyset_kskonly);
|
mctx, ignore_kskflag, keyset_kskonly);
|
||||||
|
|
||||||
dns_db_closeversion(gdb, &gversion, ISC_FALSE);
|
dns_db_closeversion(gdb, &gversion, false);
|
||||||
dns_db_detach(&gdb);
|
dns_db_detach(&gdb);
|
||||||
|
|
||||||
cleanup_logging(&log);
|
cleanup_logging(&log);
|
||||||
@@ -337,5 +332,5 @@ main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
(void) isc_app_finish();
|
(void) isc_app_finish();
|
||||||
|
|
||||||
return (0);
|
return (result == ISC_R_SUCCESS ? 0 : 1);
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-1360
File diff suppressed because it is too large
Load Diff
+8
-23
@@ -13,16 +13,14 @@
|
|||||||
#ifndef DNSSECTOOL_H
|
#ifndef DNSSECTOOL_H
|
||||||
#define DNSSECTOOL_H 1
|
#define DNSSECTOOL_H 1
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/log.h>
|
#include <isc/log.h>
|
||||||
#include <isc/stdtime.h>
|
#include <isc/stdtime.h>
|
||||||
#include <dns/rdatastruct.h>
|
#include <dns/rdatastruct.h>
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
|
|
||||||
#define check_dns_dbiterator_current(result) \
|
|
||||||
check_result((result == DNS_R_NEWORIGIN) ? ISC_R_SUCCESS : result, \
|
|
||||||
"dns_dbiterator_current()")
|
|
||||||
|
|
||||||
|
|
||||||
typedef void (fatalcallback_t)(void);
|
typedef void (fatalcallback_t)(void);
|
||||||
|
|
||||||
ISC_PLATFORM_NORETURN_PRE void
|
ISC_PLATFORM_NORETURN_PRE void
|
||||||
@@ -41,10 +39,6 @@ vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
|
|||||||
ISC_PLATFORM_NORETURN_PRE void
|
ISC_PLATFORM_NORETURN_PRE void
|
||||||
version(const char *program) ISC_PLATFORM_NORETURN_POST;
|
version(const char *program) ISC_PLATFORM_NORETURN_POST;
|
||||||
|
|
||||||
void
|
|
||||||
type_format(const dns_rdatatype_t type, char *cp, unsigned int size);
|
|
||||||
#define TYPE_FORMATSIZE 20
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sig_format(dns_rdata_rrsig_t *sig, char *cp, unsigned int size);
|
sig_format(dns_rdata_rrsig_t *sig, char *cp, unsigned int size);
|
||||||
#define SIG_FORMATSIZE (DNS_NAME_FORMATSIZE + DNS_SECALG_FORMATSIZE + sizeof("65535"))
|
#define SIG_FORMATSIZE (DNS_NAME_FORMATSIZE + DNS_SECALG_FORMATSIZE + sizeof("65535"))
|
||||||
@@ -58,8 +52,8 @@ cleanup_logging(isc_log_t **logp);
|
|||||||
dns_ttl_t strtottl(const char *str);
|
dns_ttl_t strtottl(const char *str);
|
||||||
|
|
||||||
isc_stdtime_t
|
isc_stdtime_t
|
||||||
strtotime(const char *str, isc_int64_t now, isc_int64_t base,
|
strtotime(const char *str, int64_t now, int64_t base,
|
||||||
isc_boolean_t *setp);
|
bool *setp);
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
strtodsdigest(const char *str);
|
strtodsdigest(const char *str);
|
||||||
@@ -76,20 +70,11 @@ check_keyversion(dst_key_t *key, char *keystr);
|
|||||||
void
|
void
|
||||||
set_keyversion(dst_key_t *key);
|
set_keyversion(dst_key_t *key);
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
key_collision(dst_key_t *key, dns_name_t *name, const char *dir,
|
key_collision(dst_key_t *key, dns_name_t *name, const char *dir,
|
||||||
isc_mem_t *mctx, isc_boolean_t *exact);
|
isc_mem_t *mctx, bool *exact);
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
is_delegation(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *origin,
|
|
||||||
dns_name_t *name, dns_dbnode_t *node, isc_uint32_t *ttlp);
|
|
||||||
|
|
||||||
void
|
|
||||||
verifyzone(dns_db_t *db, dns_dbversion_t *ver,
|
|
||||||
dns_name_t *origin, isc_mem_t *mctx,
|
|
||||||
isc_boolean_t ignore_kskflag, isc_boolean_t keyset_kskonly);
|
|
||||||
|
|
||||||
isc_boolean_t
|
|
||||||
isoptarg(const char *arg, char **argv, void (*usage)(void));
|
isoptarg(const char *arg, char **argv, void (*usage)(void));
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -94,7 +94,7 @@ set PYTHONPATH=.
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(ProjectName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -46,17 +46,17 @@ CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \
|
|||||||
${NS_INCLUDES} ${DNS_INCLUDES} \
|
${NS_INCLUDES} ${DNS_INCLUDES} \
|
||||||
${BIND9_INCLUDES} ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} \
|
${BIND9_INCLUDES} ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
${ISC_INCLUDES} ${DLZDRIVER_INCLUDES} \
|
${ISC_INCLUDES} ${DLZDRIVER_INCLUDES} \
|
||||||
${DBDRIVER_INCLUDES} @DST_OPENSSL_INC@
|
${DBDRIVER_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES = @CONTRIB_DLZ@ @USE_PKCS11@ @PKCS11_ENGINE@
|
CDEFINES = @CONTRIB_DLZ@
|
||||||
|
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|
||||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
|
||||||
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
ISCCFGLIBS = ../../lib/isccfg/libisccfg.@A@
|
||||||
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
ISCCCLIBS = ../../lib/isccc/libisccc.@A@
|
||||||
ISCLIBS = ../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
|
ISCLIBS = ../../lib/isc/libisc.@A@ @OPENSSL_LIBS@
|
||||||
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @ISC_OPENSSL_LIBS@
|
ISCNOSYMLIBS = ../../lib/isc/libisc-nosymtbl.@A@ @OPENSSL_LIBS@
|
||||||
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
BIND9LIBS = ../../lib/bind9/libbind9.@A@
|
||||||
NSLIBS = ../../lib/ns/libns.@A@
|
NSLIBS = ../../lib/ns/libns.@A@
|
||||||
|
|
||||||
@@ -72,11 +72,13 @@ DEPLIBS = ${NSDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
|
|||||||
|
|
||||||
LIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
LIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
|
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} \
|
||||||
${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBCAP_LIBS@ \
|
||||||
|
@LIBS@
|
||||||
|
|
||||||
NOSYMLIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
NOSYMLIBS = ${NSLIBS} ${DNSLIBS} ${BIND9LIBS} \
|
||||||
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCNOSYMLIBS} \
|
${ISCCFGLIBS} ${ISCCCLIBS} ${ISCNOSYMLIBS} \
|
||||||
${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBS@
|
${DLZDRIVER_LIBS} ${DBDRIVER_LIBS} @LIBCAP_LIBS@ \
|
||||||
|
@LIBS@
|
||||||
|
|
||||||
SUBDIRS = unix
|
SUBDIRS = unix
|
||||||
|
|
||||||
|
|||||||
+26
-28
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
|
|
||||||
#include <pk11/site.h>
|
#include <pk11/site.h>
|
||||||
|
|
||||||
|
#include <isccfg/grammar.h>
|
||||||
#include <isccfg/namedconf.h>
|
#include <isccfg/namedconf.h>
|
||||||
|
|
||||||
#include <dns/fixedname.h>
|
#include <dns/fixedname.h>
|
||||||
@@ -46,14 +48,11 @@
|
|||||||
/*% default configuration */
|
/*% default configuration */
|
||||||
static char defaultconf[] = "\
|
static char defaultconf[] = "\
|
||||||
options {\n\
|
options {\n\
|
||||||
|
answer-cookie true;\n\
|
||||||
automatic-interface-scan yes;\n\
|
automatic-interface-scan yes;\n\
|
||||||
bindkeys-file \"" NAMED_SYSCONFDIR "/bind.keys\";\n\
|
bindkeys-file \"" NAMED_SYSCONFDIR "/bind.keys\";\n\
|
||||||
# blackhole {none;};\n"
|
# blackhole {none;};\n"
|
||||||
#if defined(HAVE_OPENSSL_AES) || defined(HAVE_OPENSSL_EVP_AES)
|
|
||||||
" cookie-algorithm aes;\n"
|
" cookie-algorithm aes;\n"
|
||||||
#else
|
|
||||||
" cookie-algorithm sha256;\n"
|
|
||||||
#endif
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
" coresize default;\n\
|
" coresize default;\n\
|
||||||
datasize default;\n"
|
datasize default;\n"
|
||||||
@@ -94,6 +93,7 @@ options {\n\
|
|||||||
request-nsid false;\n\
|
request-nsid false;\n\
|
||||||
reserved-sockets 512;\n\
|
reserved-sockets 512;\n\
|
||||||
resolver-query-timeout 10;\n\
|
resolver-query-timeout 10;\n\
|
||||||
|
rrset-order { order random; };\n\
|
||||||
secroots-file \"named.secroots\";\n\
|
secroots-file \"named.secroots\";\n\
|
||||||
send-cookie true;\n\
|
send-cookie true;\n\
|
||||||
# serial-queries <obsolete>;\n\
|
# serial-queries <obsolete>;\n\
|
||||||
@@ -146,7 +146,7 @@ options {\n\
|
|||||||
clients-per-query 10;\n\
|
clients-per-query 10;\n\
|
||||||
dnssec-accept-expired no;\n\
|
dnssec-accept-expired no;\n\
|
||||||
dnssec-enable yes;\n\
|
dnssec-enable yes;\n\
|
||||||
dnssec-validation yes; \n"
|
dnssec-validation " VALIDATION_DEFAULT "; \n"
|
||||||
#ifdef HAVE_DNSTAP
|
#ifdef HAVE_DNSTAP
|
||||||
" dnstap-identity hostname;\n"
|
" dnstap-identity hostname;\n"
|
||||||
#endif
|
#endif
|
||||||
@@ -181,6 +181,7 @@ options {\n\
|
|||||||
notify-source-v6 *;\n\
|
notify-source-v6 *;\n\
|
||||||
nsec3-test-zone no;\n\
|
nsec3-test-zone no;\n\
|
||||||
provide-ixfr true;\n\
|
provide-ixfr true;\n\
|
||||||
|
qname-minimization relaxed;\n\
|
||||||
query-source address *;\n\
|
query-source address *;\n\
|
||||||
query-source-v6 address *;\n\
|
query-source-v6 address *;\n\
|
||||||
recursion true;\n\
|
recursion true;\n\
|
||||||
@@ -308,8 +309,9 @@ named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf) {
|
|||||||
|
|
||||||
isc_buffer_init(&b, defaultconf, sizeof(defaultconf) - 1);
|
isc_buffer_init(&b, defaultconf, sizeof(defaultconf) - 1);
|
||||||
isc_buffer_add(&b, sizeof(defaultconf) - 1);
|
isc_buffer_add(&b, sizeof(defaultconf) - 1);
|
||||||
return (cfg_parse_buffer3(parser, &b, __FILE__, 0,
|
return (cfg_parse_buffer4(parser, &b, __FILE__, 0,
|
||||||
&cfg_type_namedconf, conf));
|
&cfg_type_namedconf,
|
||||||
|
CFG_PCTX_NODEPRECATED, conf));
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
@@ -446,7 +448,7 @@ isc_result_t
|
|||||||
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||||
in_port_t defport, isc_mem_t *mctx,
|
in_port_t defport, isc_mem_t *mctx,
|
||||||
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
|
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
|
||||||
isc_uint32_t *countp)
|
uint32_t *countp)
|
||||||
{
|
{
|
||||||
int count, i = 0;
|
int count, i = 0;
|
||||||
const cfg_obj_t *addrlist;
|
const cfg_obj_t *addrlist;
|
||||||
@@ -466,8 +468,8 @@ named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
|
|
||||||
portobj = cfg_tuple_get(list, "port");
|
portobj = cfg_tuple_get(list, "port");
|
||||||
if (cfg_obj_isuint32(portobj)) {
|
if (cfg_obj_isuint32(portobj)) {
|
||||||
isc_uint32_t val = cfg_obj_asuint32(portobj);
|
uint32_t val = cfg_obj_asuint32(portobj);
|
||||||
if (val > ISC_UINT16_MAX) {
|
if (val > UINT16_MAX) {
|
||||||
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
||||||
"port '%u' out of range", val);
|
"port '%u' out of range", val);
|
||||||
return (ISC_R_RANGE);
|
return (ISC_R_RANGE);
|
||||||
@@ -537,7 +539,7 @@ named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
|
|
||||||
void
|
void
|
||||||
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
||||||
isc_dscp_t **dscpsp, isc_uint32_t count)
|
isc_dscp_t **dscpsp, uint32_t count)
|
||||||
{
|
{
|
||||||
INSIST(addrsp != NULL && *addrsp != NULL);
|
INSIST(addrsp != NULL && *addrsp != NULL);
|
||||||
INSIST(dscpsp == NULL || *dscpsp != NULL);
|
INSIST(dscpsp == NULL || *dscpsp != NULL);
|
||||||
@@ -583,9 +585,9 @@ isc_result_t
|
|||||||
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||||
isc_mem_t *mctx, dns_ipkeylist_t *ipkl)
|
isc_mem_t *mctx, dns_ipkeylist_t *ipkl)
|
||||||
{
|
{
|
||||||
isc_uint32_t addrcount = 0, dscpcount = 0, keycount = 0, i = 0;
|
uint32_t addrcount = 0, dscpcount = 0, keycount = 0, i = 0;
|
||||||
isc_uint32_t listcount = 0, l = 0, j;
|
uint32_t listcount = 0, l = 0, j;
|
||||||
isc_uint32_t stackcount = 0, pushed = 0;
|
uint32_t stackcount = 0, pushed = 0;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
const cfg_listelt_t *element;
|
const cfg_listelt_t *element;
|
||||||
const cfg_obj_t *addrlist;
|
const cfg_obj_t *addrlist;
|
||||||
@@ -629,8 +631,8 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
dscpobj = cfg_tuple_get(list, "dscp");
|
dscpobj = cfg_tuple_get(list, "dscp");
|
||||||
|
|
||||||
if (cfg_obj_isuint32(portobj)) {
|
if (cfg_obj_isuint32(portobj)) {
|
||||||
isc_uint32_t val = cfg_obj_asuint32(portobj);
|
uint32_t val = cfg_obj_asuint32(portobj);
|
||||||
if (val > ISC_UINT16_MAX) {
|
if (val > UINT16_MAX) {
|
||||||
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
||||||
"port '%u' out of range", val);
|
"port '%u' out of range", val);
|
||||||
result = ISC_R_RANGE;
|
result = ISC_R_RANGE;
|
||||||
@@ -674,7 +676,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
/* Grow lists? */
|
/* Grow lists? */
|
||||||
if (listcount == l) {
|
if (listcount == l) {
|
||||||
void * tmp;
|
void * tmp;
|
||||||
isc_uint32_t newlen = listcount + 16;
|
uint32_t newlen = listcount + 16;
|
||||||
size_t newsize, oldsize;
|
size_t newsize, oldsize;
|
||||||
|
|
||||||
newsize = newlen * sizeof(*lists);
|
newsize = newlen * sizeof(*lists);
|
||||||
@@ -709,7 +711,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
/* Grow stack? */
|
/* Grow stack? */
|
||||||
if (stackcount == pushed) {
|
if (stackcount == pushed) {
|
||||||
void * tmp;
|
void * tmp;
|
||||||
isc_uint32_t newlen = stackcount + 16;
|
uint32_t newlen = stackcount + 16;
|
||||||
size_t newsize, oldsize;
|
size_t newsize, oldsize;
|
||||||
|
|
||||||
newsize = newlen * sizeof(*stack);
|
newsize = newlen * sizeof(*stack);
|
||||||
@@ -737,7 +739,7 @@ named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
|||||||
|
|
||||||
if (i == addrcount) {
|
if (i == addrcount) {
|
||||||
void * tmp;
|
void * tmp;
|
||||||
isc_uint32_t newlen = addrcount + 16;
|
uint32_t newlen = addrcount + 16;
|
||||||
size_t newsize, oldsize;
|
size_t newsize, oldsize;
|
||||||
|
|
||||||
newsize = newlen * sizeof(isc_sockaddr_t);
|
newsize = newlen * sizeof(isc_sockaddr_t);
|
||||||
@@ -910,7 +912,7 @@ named_config_getport(const cfg_obj_t *config, in_port_t *portp) {
|
|||||||
|
|
||||||
result = named_config_get(maps, "port", &portobj);
|
result = named_config_get(maps, "port", &portobj);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
if (cfg_obj_asuint32(portobj) >= ISC_UINT16_MAX) {
|
if (cfg_obj_asuint32(portobj) >= UINT16_MAX) {
|
||||||
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
cfg_obj_log(portobj, named_g_lctx, ISC_LOG_ERROR,
|
||||||
"port '%u' out of range",
|
"port '%u' out of range",
|
||||||
cfg_obj_asuint32(portobj));
|
cfg_obj_asuint32(portobj));
|
||||||
@@ -950,13 +952,11 @@ struct keyalgorithms {
|
|||||||
enum { hmacnone, hmacmd5, hmacsha1, hmacsha224,
|
enum { hmacnone, hmacmd5, hmacsha1, hmacsha224,
|
||||||
hmacsha256, hmacsha384, hmacsha512 } hmac;
|
hmacsha256, hmacsha384, hmacsha512 } hmac;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
isc_uint16_t size;
|
uint16_t size;
|
||||||
} algorithms[] = {
|
} algorithms[] = {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
{ "hmac-md5", hmacmd5, DST_ALG_HMACMD5, 128 },
|
{ "hmac-md5", hmacmd5, DST_ALG_HMACMD5, 128 },
|
||||||
{ "hmac-md5.sig-alg.reg.int", hmacmd5, DST_ALG_HMACMD5, 0 },
|
{ "hmac-md5.sig-alg.reg.int", hmacmd5, DST_ALG_HMACMD5, 0 },
|
||||||
{ "hmac-md5.sig-alg.reg.int.", hmacmd5, DST_ALG_HMACMD5, 0 },
|
{ "hmac-md5.sig-alg.reg.int.", hmacmd5, DST_ALG_HMACMD5, 0 },
|
||||||
#endif
|
|
||||||
{ "hmac-sha1", hmacsha1, DST_ALG_HMACSHA1, 160 },
|
{ "hmac-sha1", hmacsha1, DST_ALG_HMACSHA1, 160 },
|
||||||
{ "hmac-sha224", hmacsha224, DST_ALG_HMACSHA224, 224 },
|
{ "hmac-sha224", hmacsha224, DST_ALG_HMACSHA224, 224 },
|
||||||
{ "hmac-sha256", hmacsha256, DST_ALG_HMACSHA256, 256 },
|
{ "hmac-sha256", hmacsha256, DST_ALG_HMACSHA256, 256 },
|
||||||
@@ -967,18 +967,18 @@ struct keyalgorithms {
|
|||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
|
named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
|
||||||
isc_uint16_t *digestbits)
|
uint16_t *digestbits)
|
||||||
{
|
{
|
||||||
return (named_config_getkeyalgorithm2(str, name, NULL, digestbits));
|
return (named_config_getkeyalgorithm2(str, name, NULL, digestbits));
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
||||||
unsigned int *typep, isc_uint16_t *digestbits)
|
unsigned int *typep, uint16_t *digestbits)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
isc_uint16_t bits;
|
uint16_t bits;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
for (i = 0; algorithms[i].str != NULL; i++) {
|
for (i = 0; algorithms[i].str != NULL; i++) {
|
||||||
@@ -1003,9 +1003,7 @@ named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
|||||||
|
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
switch (algorithms[i].hmac) {
|
switch (algorithms[i].hmac) {
|
||||||
#ifndef PK11_MD5_DISABLE
|
|
||||||
case hmacmd5: *name = dns_tsig_hmacmd5_name; break;
|
case hmacmd5: *name = dns_tsig_hmacmd5_name; break;
|
||||||
#endif
|
|
||||||
case hmacsha1: *name = dns_tsig_hmacsha1_name; break;
|
case hmacsha1: *name = dns_tsig_hmacsha1_name; break;
|
||||||
case hmacsha224: *name = dns_tsig_hmacsha224_name; break;
|
case hmacsha224: *name = dns_tsig_hmacsha224_name; break;
|
||||||
case hmacsha256: *name = dns_tsig_hmacsha256_name; break;
|
case hmacsha256: *name = dns_tsig_hmacsha256_name; break;
|
||||||
|
|||||||
+10
-9
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/app.h>
|
#include <isc/app.h>
|
||||||
#include <isc/event.h>
|
#include <isc/event.h>
|
||||||
@@ -59,9 +60,9 @@ getcommand(isc_lex_t *lex, char **cmdp) {
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline isc_boolean_t
|
static inline bool
|
||||||
command_compare(const char *str, const char *command) {
|
command_compare(const char *str, const char *command) {
|
||||||
return ISC_TF(strcasecmp(str, command) == 0);
|
return (strcasecmp(str, command) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@@ -69,7 +70,7 @@ command_compare(const char *str, const char *command) {
|
|||||||
* when a control channel message is received.
|
* when a control channel message is received.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
named_control_docommand(isccc_sexpr_t *message, bool readonly,
|
||||||
isc_buffer_t **text)
|
isc_buffer_t **text)
|
||||||
{
|
{
|
||||||
isccc_sexpr_t *data;
|
isccc_sexpr_t *data;
|
||||||
@@ -184,7 +185,7 @@ named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
|||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
/* Do not flush master files */
|
/* Do not flush master files */
|
||||||
named_server_flushonshutdown(named_g_server, ISC_FALSE);
|
named_server_flushonshutdown(named_g_server, false);
|
||||||
named_os_shutdownmsg(cmdline, *text);
|
named_os_shutdownmsg(cmdline, *text);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
@@ -201,7 +202,7 @@ named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
|||||||
if (named_smf_got_instance == 1 && named_smf_chroot == 0)
|
if (named_smf_got_instance == 1 && named_smf_chroot == 0)
|
||||||
named_smf_want_disable = 1;
|
named_smf_want_disable = 1;
|
||||||
#endif
|
#endif
|
||||||
named_server_flushonshutdown(named_g_server, ISC_TRUE);
|
named_server_flushonshutdown(named_g_server, true);
|
||||||
named_os_shutdownmsg(cmdline, *text);
|
named_os_shutdownmsg(cmdline, *text);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
@@ -223,9 +224,9 @@ named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
|||||||
} else if (command_compare(command, NAMED_COMMAND_FLUSH)) {
|
} else if (command_compare(command, NAMED_COMMAND_FLUSH)) {
|
||||||
result = named_server_flushcache(named_g_server, lex);
|
result = named_server_flushcache(named_g_server, lex);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_FLUSHNAME)) {
|
} else if (command_compare(command, NAMED_COMMAND_FLUSHNAME)) {
|
||||||
result = named_server_flushnode(named_g_server, lex, ISC_FALSE);
|
result = named_server_flushnode(named_g_server, lex, false);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_FLUSHTREE)) {
|
} else if (command_compare(command, NAMED_COMMAND_FLUSHTREE)) {
|
||||||
result = named_server_flushnode(named_g_server, lex, ISC_TRUE);
|
result = named_server_flushnode(named_g_server, lex, true);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_STATUS)) {
|
} else if (command_compare(command, NAMED_COMMAND_STATUS)) {
|
||||||
result = named_server_status(named_g_server, text);
|
result = named_server_status(named_g_server, text);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_TSIGLIST)) {
|
} else if (command_compare(command, NAMED_COMMAND_TSIGLIST)) {
|
||||||
@@ -233,11 +234,11 @@ named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
|||||||
} else if (command_compare(command, NAMED_COMMAND_TSIGDELETE)) {
|
} else if (command_compare(command, NAMED_COMMAND_TSIGDELETE)) {
|
||||||
result = named_server_tsigdelete(named_g_server, lex, text);
|
result = named_server_tsigdelete(named_g_server, lex, text);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_FREEZE)) {
|
} else if (command_compare(command, NAMED_COMMAND_FREEZE)) {
|
||||||
result = named_server_freeze(named_g_server, ISC_TRUE, lex,
|
result = named_server_freeze(named_g_server, true, lex,
|
||||||
text);
|
text);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_UNFREEZE) ||
|
} else if (command_compare(command, NAMED_COMMAND_UNFREEZE) ||
|
||||||
command_compare(command, NAMED_COMMAND_THAW)) {
|
command_compare(command, NAMED_COMMAND_THAW)) {
|
||||||
result = named_server_freeze(named_g_server, ISC_FALSE, lex,
|
result = named_server_freeze(named_g_server, false, lex,
|
||||||
text);
|
text);
|
||||||
} else if (command_compare(command, NAMED_COMMAND_SCAN)) {
|
} else if (command_compare(command, NAMED_COMMAND_SCAN)) {
|
||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
|
|||||||
+39
-40
@@ -13,6 +13,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/base64.h>
|
#include <isc/base64.h>
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/event.h>
|
#include <isc/event.h>
|
||||||
@@ -20,6 +23,7 @@
|
|||||||
#include <isc/mem.h>
|
#include <isc/mem.h>
|
||||||
#include <isc/net.h>
|
#include <isc/net.h>
|
||||||
#include <isc/netaddr.h>
|
#include <isc/netaddr.h>
|
||||||
|
#include <isc/nonce.h>
|
||||||
#include <isc/random.h>
|
#include <isc/random.h>
|
||||||
#include <isc/result.h>
|
#include <isc/result.h>
|
||||||
#include <isc/stdtime.h>
|
#include <isc/stdtime.h>
|
||||||
@@ -64,7 +68,7 @@ typedef ISC_LIST(controllistener_t) controllistenerlist_t;
|
|||||||
|
|
||||||
struct controlkey {
|
struct controlkey {
|
||||||
char * keyname;
|
char * keyname;
|
||||||
isc_uint32_t algorithm;
|
uint32_t algorithm;
|
||||||
isc_region_t secret;
|
isc_region_t secret;
|
||||||
ISC_LINK(controlkey_t) link;
|
ISC_LINK(controlkey_t) link;
|
||||||
};
|
};
|
||||||
@@ -72,12 +76,12 @@ struct controlkey {
|
|||||||
struct controlconnection {
|
struct controlconnection {
|
||||||
isc_socket_t * sock;
|
isc_socket_t * sock;
|
||||||
isccc_ccmsg_t ccmsg;
|
isccc_ccmsg_t ccmsg;
|
||||||
isc_boolean_t ccmsg_valid;
|
bool ccmsg_valid;
|
||||||
isc_boolean_t sending;
|
bool sending;
|
||||||
isc_timer_t * timer;
|
isc_timer_t * timer;
|
||||||
isc_buffer_t * buffer;
|
isc_buffer_t * buffer;
|
||||||
controllistener_t * listener;
|
controllistener_t * listener;
|
||||||
isc_uint32_t nonce;
|
uint32_t nonce;
|
||||||
ISC_LINK(controlconnection_t) link;
|
ISC_LINK(controlconnection_t) link;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -88,22 +92,22 @@ struct controllistener {
|
|||||||
isc_sockaddr_t address;
|
isc_sockaddr_t address;
|
||||||
isc_socket_t * sock;
|
isc_socket_t * sock;
|
||||||
dns_acl_t * acl;
|
dns_acl_t * acl;
|
||||||
isc_boolean_t listening;
|
bool listening;
|
||||||
isc_boolean_t exiting;
|
bool exiting;
|
||||||
controlkeylist_t keys;
|
controlkeylist_t keys;
|
||||||
controlconnectionlist_t connections;
|
controlconnectionlist_t connections;
|
||||||
isc_sockettype_t type;
|
isc_sockettype_t type;
|
||||||
isc_uint32_t perm;
|
uint32_t perm;
|
||||||
isc_uint32_t owner;
|
uint32_t owner;
|
||||||
isc_uint32_t group;
|
uint32_t group;
|
||||||
isc_boolean_t readonly;
|
bool readonly;
|
||||||
ISC_LINK(controllistener_t) link;
|
ISC_LINK(controllistener_t) link;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct named_controls {
|
struct named_controls {
|
||||||
named_server_t *server;
|
named_server_t *server;
|
||||||
controllistenerlist_t listeners;
|
controllistenerlist_t listeners;
|
||||||
isc_boolean_t shuttingdown;
|
bool shuttingdown;
|
||||||
isccc_symtab_t *symtab;
|
isccc_symtab_t *symtab;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -201,8 +205,8 @@ shutdown_listener(controllistener_t *listener) {
|
|||||||
NAMED_LOGMODULE_CONTROL, ISC_LOG_NOTICE,
|
NAMED_LOGMODULE_CONTROL, ISC_LOG_NOTICE,
|
||||||
"stopping command channel on %s", socktext);
|
"stopping command channel on %s", socktext);
|
||||||
if (listener->type == isc_sockettype_unix)
|
if (listener->type == isc_sockettype_unix)
|
||||||
isc_socket_cleanunix(&listener->address, ISC_TRUE);
|
isc_socket_cleanunix(&listener->address, true);
|
||||||
listener->exiting = ISC_TRUE;
|
listener->exiting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (conn = ISC_LIST_HEAD(listener->connections);
|
for (conn = ISC_LIST_HEAD(listener->connections);
|
||||||
@@ -220,7 +224,7 @@ shutdown_listener(controllistener_t *listener) {
|
|||||||
maybe_free_listener(listener);
|
maybe_free_listener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) {
|
address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) {
|
||||||
dns_aclenv_t *env =
|
dns_aclenv_t *env =
|
||||||
ns_interfacemgr_getaclenv(named_g_server->interfacemgr);
|
ns_interfacemgr_getaclenv(named_g_server->interfacemgr);
|
||||||
@@ -230,13 +234,8 @@ address_ok(isc_sockaddr_t *sockaddr, dns_acl_t *acl) {
|
|||||||
|
|
||||||
isc_netaddr_fromsockaddr(&netaddr, sockaddr);
|
isc_netaddr_fromsockaddr(&netaddr, sockaddr);
|
||||||
|
|
||||||
result = dns_acl_match(&netaddr, NULL, NULL, 0, NULL, acl, env, &match,
|
result = dns_acl_match(&netaddr, NULL, acl, env, &match, NULL);
|
||||||
NULL);
|
return (result == ISC_R_SUCCESS && match > 0);
|
||||||
|
|
||||||
if (result != ISC_R_SUCCESS || match <= 0)
|
|
||||||
return (ISC_FALSE);
|
|
||||||
else
|
|
||||||
return (ISC_TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -250,7 +249,7 @@ control_accept(controllistener_t *listener) {
|
|||||||
"isc_socket_accept() failed: %s",
|
"isc_socket_accept() failed: %s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
else
|
else
|
||||||
listener->listening = ISC_TRUE;
|
listener->listening = true;
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,7 +282,7 @@ control_senddone(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
UNUSED(task);
|
UNUSED(task);
|
||||||
|
|
||||||
conn->sending = ISC_FALSE;
|
conn->sending = false;
|
||||||
|
|
||||||
if (sevent->result != ISC_R_SUCCESS &&
|
if (sevent->result != ISC_R_SUCCESS &&
|
||||||
sevent->result != ISC_R_CANCELED)
|
sevent->result != ISC_R_CANCELED)
|
||||||
@@ -329,7 +328,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
controlkey_t *key = NULL;
|
controlkey_t *key = NULL;
|
||||||
isccc_sexpr_t *request = NULL;
|
isccc_sexpr_t *request = NULL;
|
||||||
isccc_sexpr_t *response = NULL;
|
isccc_sexpr_t *response = NULL;
|
||||||
isc_uint32_t algorithm;
|
uint32_t algorithm;
|
||||||
isccc_region_t secret;
|
isccc_region_t secret;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
isc_buffer_t b;
|
isc_buffer_t b;
|
||||||
@@ -340,7 +339,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
isccc_sexpr_t *_ctrl = NULL;
|
isccc_sexpr_t *_ctrl = NULL;
|
||||||
isccc_time_t sent;
|
isccc_time_t sent;
|
||||||
isccc_time_t exp;
|
isccc_time_t exp;
|
||||||
isc_uint32_t nonce;
|
uint32_t nonce;
|
||||||
isccc_sexpr_t *data = NULL;
|
isccc_sexpr_t *data = NULL;
|
||||||
|
|
||||||
REQUIRE(event->ev_type == ISCCC_EVENT_CCMSG);
|
REQUIRE(event->ev_type == ISCCC_EVENT_CCMSG);
|
||||||
@@ -458,7 +457,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
*/
|
*/
|
||||||
if (conn->nonce == 0) {
|
if (conn->nonce == 0) {
|
||||||
while (conn->nonce == 0) {
|
while (conn->nonce == 0) {
|
||||||
isc_random_buf(&conn->nonce, sizeof(conn->nonce));
|
isc_nonce_buf(&conn->nonce, sizeof(conn->nonce));
|
||||||
}
|
}
|
||||||
eresult = ISC_R_SUCCESS;
|
eresult = ISC_R_SUCCESS;
|
||||||
} else
|
} else
|
||||||
@@ -520,7 +519,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
result = isc_socket_send(conn->sock, &r, task, control_senddone, conn);
|
result = isc_socket_send(conn->sock, &r, task, control_senddone, conn);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto cleanup_response;
|
goto cleanup_response;
|
||||||
conn->sending = ISC_TRUE;
|
conn->sending = true;
|
||||||
|
|
||||||
isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
|
isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
|
||||||
isccc_sexpr_free(&request);
|
isccc_sexpr_free(&request);
|
||||||
@@ -540,7 +539,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
|||||||
cleanup:
|
cleanup:
|
||||||
isc_socket_detach(&conn->sock);
|
isc_socket_detach(&conn->sock);
|
||||||
isccc_ccmsg_invalidate(&conn->ccmsg);
|
isccc_ccmsg_invalidate(&conn->ccmsg);
|
||||||
conn->ccmsg_valid = ISC_FALSE;
|
conn->ccmsg_valid = false;
|
||||||
maybe_free_connection(conn);
|
maybe_free_connection(conn);
|
||||||
maybe_free_listener(listener);
|
maybe_free_listener(listener);
|
||||||
}
|
}
|
||||||
@@ -573,8 +572,8 @@ newconnection(controllistener_t *listener, isc_socket_t *sock) {
|
|||||||
/* Set a 32 KiB upper limit on incoming message. */
|
/* Set a 32 KiB upper limit on incoming message. */
|
||||||
isccc_ccmsg_setmaxsize(&conn->ccmsg, 32768);
|
isccc_ccmsg_setmaxsize(&conn->ccmsg, 32768);
|
||||||
|
|
||||||
conn->ccmsg_valid = ISC_TRUE;
|
conn->ccmsg_valid = true;
|
||||||
conn->sending = ISC_FALSE;
|
conn->sending = false;
|
||||||
conn->buffer = NULL;
|
conn->buffer = NULL;
|
||||||
conn->timer = NULL;
|
conn->timer = NULL;
|
||||||
isc_interval_set(&interval, 60, 0);
|
isc_interval_set(&interval, 60, 0);
|
||||||
@@ -621,7 +620,7 @@ control_newconn(isc_task_t *task, isc_event_t *event) {
|
|||||||
|
|
||||||
UNUSED(task);
|
UNUSED(task);
|
||||||
|
|
||||||
listener->listening = ISC_FALSE;
|
listener->listening = false;
|
||||||
|
|
||||||
if (nevent->result != ISC_R_SUCCESS) {
|
if (nevent->result != ISC_R_SUCCESS) {
|
||||||
if (nevent->result == ISC_R_CANCELED) {
|
if (nevent->result == ISC_R_CANCELED) {
|
||||||
@@ -685,7 +684,7 @@ controls_shutdown(named_controls_t *controls) {
|
|||||||
void
|
void
|
||||||
named_controls_shutdown(named_controls_t *controls) {
|
named_controls_shutdown(named_controls_t *controls) {
|
||||||
controls_shutdown(controls);
|
controls_shutdown(controls);
|
||||||
controls->shuttingdown = ISC_TRUE;
|
controls->shuttingdown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@@ -1091,7 +1090,7 @@ update_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
socktext, isc_result_totext(result));
|
socktext, isc_result_totext(result));
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) {
|
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) {
|
||||||
isc_uint32_t perm, owner, group;
|
uint32_t perm, owner, group;
|
||||||
perm = cfg_obj_asuint32(cfg_tuple_get(control, "perm"));
|
perm = cfg_obj_asuint32(cfg_tuple_get(control, "perm"));
|
||||||
owner = cfg_obj_asuint32(cfg_tuple_get(control, "owner"));
|
owner = cfg_obj_asuint32(cfg_tuple_get(control, "owner"));
|
||||||
group = cfg_obj_asuint32(cfg_tuple_get(control, "group"));
|
group = cfg_obj_asuint32(cfg_tuple_get(control, "group"));
|
||||||
@@ -1138,14 +1137,14 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
listener->task = cp->server->task;
|
listener->task = cp->server->task;
|
||||||
listener->address = *addr;
|
listener->address = *addr;
|
||||||
listener->sock = NULL;
|
listener->sock = NULL;
|
||||||
listener->listening = ISC_FALSE;
|
listener->listening = false;
|
||||||
listener->exiting = ISC_FALSE;
|
listener->exiting = false;
|
||||||
listener->acl = NULL;
|
listener->acl = NULL;
|
||||||
listener->type = type;
|
listener->type = type;
|
||||||
listener->perm = 0;
|
listener->perm = 0;
|
||||||
listener->owner = 0;
|
listener->owner = 0;
|
||||||
listener->group = 0;
|
listener->group = 0;
|
||||||
listener->readonly = ISC_FALSE;
|
listener->readonly = false;
|
||||||
ISC_LINK_INIT(listener, link);
|
ISC_LINK_INIT(listener, link);
|
||||||
ISC_LIST_INIT(listener->keys);
|
ISC_LIST_INIT(listener->keys);
|
||||||
ISC_LIST_INIT(listener->connections);
|
ISC_LIST_INIT(listener->connections);
|
||||||
@@ -1208,7 +1207,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix)
|
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix)
|
||||||
isc_socket_cleanunix(&listener->address, ISC_FALSE);
|
isc_socket_cleanunix(&listener->address, false);
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
result = isc_socket_create(named_g_socketmgr,
|
result = isc_socket_create(named_g_socketmgr,
|
||||||
@@ -1219,7 +1218,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
|
|
||||||
#ifndef ISC_ALLOW_MAPPED
|
#ifndef ISC_ALLOW_MAPPED
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
isc_socket_ipv6only(listener->sock, ISC_TRUE);
|
isc_socket_ipv6only(listener->sock, true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (result == ISC_R_SUCCESS)
|
if (result == ISC_R_SUCCESS)
|
||||||
@@ -1250,7 +1249,7 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp,
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (listener != NULL) {
|
if (listener != NULL) {
|
||||||
listener->exiting = ISC_TRUE;
|
listener->exiting = true;
|
||||||
free_listener(listener);
|
free_listener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1510,7 +1509,7 @@ named_controls_create(named_server_t *server, named_controls_t **ctrlsp) {
|
|||||||
return (ISC_R_NOMEMORY);
|
return (ISC_R_NOMEMORY);
|
||||||
controls->server = server;
|
controls->server = server;
|
||||||
ISC_LIST_INIT(controls->listeners);
|
ISC_LIST_INIT(controls->listeners);
|
||||||
controls->shuttingdown = ISC_FALSE;
|
controls->shuttingdown = false;
|
||||||
controls->symtab = NULL;
|
controls->symtab = NULL;
|
||||||
result = isccc_cc_createsymtab(&controls->symtab);
|
result = isccc_cc_createsymtab(&controls->symtab);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
|||||||
+20
-16
@@ -11,6 +11,9 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <named/fuzz.h>
|
#include <named/fuzz.h>
|
||||||
|
|
||||||
#ifdef ENABLE_AFL
|
#ifdef ENABLE_AFL
|
||||||
@@ -44,7 +47,7 @@
|
|||||||
*/
|
*/
|
||||||
static pthread_cond_t cond;
|
static pthread_cond_t cond;
|
||||||
static pthread_mutex_t mutex;
|
static pthread_mutex_t mutex;
|
||||||
static isc_boolean_t ready;
|
static bool ready;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In "client:" mode, this thread reads fuzzed query messages from AFL
|
* In "client:" mode, this thread reads fuzzed query messages from AFL
|
||||||
@@ -122,7 +125,7 @@ fuzz_thread_client(void *arg) {
|
|||||||
free(buf);
|
free(buf);
|
||||||
close(sockfd);
|
close(sockfd);
|
||||||
named_server_flushonshutdown(named_g_server,
|
named_server_flushonshutdown(named_g_server,
|
||||||
ISC_FALSE);
|
false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@@ -132,7 +135,7 @@ fuzz_thread_client(void *arg) {
|
|||||||
|
|
||||||
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
||||||
|
|
||||||
ready = ISC_FALSE;
|
ready = false;
|
||||||
|
|
||||||
sent = sendto(sockfd, buf, length, 0,
|
sent = sendto(sockfd, buf, length, 0,
|
||||||
(struct sockaddr *) &servaddr, sizeof(servaddr));
|
(struct sockaddr *) &servaddr, sizeof(servaddr));
|
||||||
@@ -153,7 +156,7 @@ fuzz_thread_client(void *arg) {
|
|||||||
free(buf);
|
free(buf);
|
||||||
close(sockfd);
|
close(sockfd);
|
||||||
|
|
||||||
named_server_flushonshutdown(named_g_server, ISC_FALSE);
|
named_server_flushonshutdown(named_g_server, false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
@@ -200,7 +203,7 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
* have to be updated. 0x8d, 0xf6 at the start is the ID field
|
* have to be updated. 0x8d, 0xf6 at the start is the ID field
|
||||||
* which will be made to match the query.
|
* which will be made to match the query.
|
||||||
*/
|
*/
|
||||||
const isc_uint8_t dnskey_wf[] = {
|
const uint8_t dnskey_wf[] = {
|
||||||
0x8d, 0xf6, 0x84, 0x00, 0x00, 0x01, 0x00, 0x02,
|
0x8d, 0xf6, 0x84, 0x00, 0x00, 0x01, 0x00, 0x02,
|
||||||
0x00, 0x00, 0x00, 0x01, 0x07, 0x65, 0x78, 0x61,
|
0x00, 0x00, 0x00, 0x01, 0x07, 0x65, 0x78, 0x61,
|
||||||
0x6d, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x30, 0x00,
|
0x6d, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x30, 0x00,
|
||||||
@@ -282,12 +285,12 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
int sockfd;
|
int sockfd;
|
||||||
int listenfd;
|
int listenfd;
|
||||||
int loop;
|
int loop;
|
||||||
isc_uint16_t qtype;
|
uint16_t qtype;
|
||||||
char *buf, *rbuf;
|
char *buf, *rbuf;
|
||||||
char *nameptr;
|
char *nameptr;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
isc_uint8_t llen;
|
uint8_t llen;
|
||||||
isc_uint64_t seed;
|
uint64_t seed;
|
||||||
|
|
||||||
UNUSED(arg);
|
UNUSED(arg);
|
||||||
|
|
||||||
@@ -385,7 +388,7 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
close(sockfd);
|
close(sockfd);
|
||||||
close(listenfd);
|
close(listenfd);
|
||||||
named_server_flushonshutdown(named_g_server,
|
named_server_flushonshutdown(named_g_server,
|
||||||
ISC_FALSE);
|
false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@@ -399,7 +402,7 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
|
|
||||||
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
||||||
|
|
||||||
ready = ISC_FALSE;
|
ready = false;
|
||||||
|
|
||||||
/* Use a unique query ID. */
|
/* Use a unique query ID. */
|
||||||
seed = 1664525 * seed + 1013904223;
|
seed = 1664525 * seed + 1013904223;
|
||||||
@@ -549,7 +552,7 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
* "example."
|
* "example."
|
||||||
*/
|
*/
|
||||||
if ((nameptr - buf) < (length - 2)) {
|
if ((nameptr - buf) < (length - 2)) {
|
||||||
isc_uint8_t hb, lb;
|
uint8_t hb, lb;
|
||||||
hb = *nameptr++;
|
hb = *nameptr++;
|
||||||
lb = *nameptr++;
|
lb = *nameptr++;
|
||||||
qtype = (hb << 8) | lb;
|
qtype = (hb << 8) | lb;
|
||||||
@@ -577,9 +580,10 @@ fuzz_thread_resolver(void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(buf);
|
free(buf);
|
||||||
|
free(rbuf);
|
||||||
close(sockfd);
|
close(sockfd);
|
||||||
close(listenfd);
|
close(listenfd);
|
||||||
named_server_flushonshutdown(named_g_server, ISC_FALSE);
|
named_server_flushonshutdown(named_g_server, false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -686,7 +690,7 @@ fuzz_thread_tcp(void *arg) {
|
|||||||
|
|
||||||
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
||||||
|
|
||||||
ready = ISC_FALSE;
|
ready = false;
|
||||||
yes = 1;
|
yes = 1;
|
||||||
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
|
||||||
@@ -717,7 +721,7 @@ fuzz_thread_tcp(void *arg) {
|
|||||||
|
|
||||||
free(buf);
|
free(buf);
|
||||||
close(sockfd);
|
close(sockfd);
|
||||||
named_server_flushonshutdown(named_g_server, ISC_FALSE);
|
named_server_flushonshutdown(named_g_server, false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
@@ -734,7 +738,7 @@ void
|
|||||||
named_fuzz_notify(void) {
|
named_fuzz_notify(void) {
|
||||||
#ifdef ENABLE_AFL
|
#ifdef ENABLE_AFL
|
||||||
if (getenv("AFL_CMIN")) {
|
if (getenv("AFL_CMIN")) {
|
||||||
named_server_flushonshutdown(named_g_server, ISC_FALSE);
|
named_server_flushonshutdown(named_g_server, false);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -743,7 +747,7 @@ named_fuzz_notify(void) {
|
|||||||
|
|
||||||
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
RUNTIME_CHECK(pthread_mutex_lock(&mutex) == 0);
|
||||||
|
|
||||||
ready = ISC_TRUE;
|
ready = true;
|
||||||
|
|
||||||
RUNTIME_CHECK(pthread_cond_signal(&cond) == 0);
|
RUNTIME_CHECK(pthread_cond_signal(&cond) == 0);
|
||||||
RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0);
|
RUNTIME_CHECK(pthread_mutex_unlock(&mutex) == 0);
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include <isccfg/cfg.h>
|
#include <isccfg/cfg.h>
|
||||||
|
|
||||||
#include <dns/types.h>
|
#include <dns/types.h>
|
||||||
@@ -49,11 +51,11 @@ isc_result_t
|
|||||||
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
named_config_getiplist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||||
in_port_t defport, isc_mem_t *mctx,
|
in_port_t defport, isc_mem_t *mctx,
|
||||||
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
|
isc_sockaddr_t **addrsp, isc_dscp_t **dscpsp,
|
||||||
isc_uint32_t *countp);
|
uint32_t *countp);
|
||||||
|
|
||||||
void
|
void
|
||||||
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
named_config_putiplist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
||||||
isc_dscp_t **dscpsp, isc_uint32_t count);
|
isc_dscp_t **dscpsp, uint32_t count);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
named_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||||
@@ -64,10 +66,10 @@ named_config_getport(const cfg_obj_t *config, in_port_t *portp);
|
|||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
|
named_config_getkeyalgorithm(const char *str, const dns_name_t **name,
|
||||||
isc_uint16_t *digestbits);
|
uint16_t *digestbits);
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
named_config_getkeyalgorithm2(const char *str, const dns_name_t **name,
|
||||||
unsigned int *typep, isc_uint16_t *digestbits);
|
unsigned int *typep, uint16_t *digestbits);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_config_getdscp(const cfg_obj_t *config, isc_dscp_t *dscpp);
|
named_config_getdscp(const cfg_obj_t *config, isc_dscp_t *dscpp);
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
* The name server command channel.
|
* The name server command channel.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isccc/types.h>
|
#include <isccc/types.h>
|
||||||
|
|
||||||
#include <isccfg/aclconf.h>
|
#include <isccfg/aclconf.h>
|
||||||
@@ -101,7 +103,7 @@ named_controls_shutdown(named_controls_t *controls);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
|
named_control_docommand(isccc_sexpr_t *message, bool readonly,
|
||||||
isc_buffer_t **text);
|
isc_buffer_t **text);
|
||||||
|
|
||||||
#endif /* NAMED_CONTROL_H */
|
#endif /* NAMED_CONTROL_H */
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/rwlock.h>
|
#include <isc/rwlock.h>
|
||||||
#include <isc/log.h>
|
#include <isc/log.h>
|
||||||
#include <isc/net.h>
|
#include <isc/net.h>
|
||||||
@@ -51,7 +53,7 @@ EXTERN dns_dispatchmgr_t * named_g_dispatchmgr INIT(NULL);
|
|||||||
EXTERN unsigned int named_g_cpus_detected INIT(1);
|
EXTERN unsigned int named_g_cpus_detected INIT(1);
|
||||||
|
|
||||||
#ifdef ENABLE_AFL
|
#ifdef ENABLE_AFL
|
||||||
EXTERN isc_boolean_t named_g_run_done INIT(ISC_FALSE);
|
EXTERN bool named_g_run_done INIT(false);
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* XXXRTH We're going to want multiple timer managers eventually. One
|
* XXXRTH We're going to want multiple timer managers eventually. One
|
||||||
@@ -94,7 +96,7 @@ EXTERN const char * named_g_keyfile INIT(NAMED_SYSCONFDIR
|
|||||||
|
|
||||||
EXTERN dns_tsigkey_t * named_g_sessionkey INIT(NULL);
|
EXTERN dns_tsigkey_t * named_g_sessionkey INIT(NULL);
|
||||||
EXTERN dns_name_t named_g_sessionkeyname;
|
EXTERN dns_name_t named_g_sessionkeyname;
|
||||||
EXTERN isc_boolean_t named_g_conffileset INIT(ISC_FALSE);
|
EXTERN bool named_g_conffileset INIT(false);
|
||||||
EXTERN cfg_aclconfctx_t * named_g_aclconfctx INIT(NULL);
|
EXTERN cfg_aclconfctx_t * named_g_aclconfctx INIT(NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -108,11 +110,11 @@ EXTERN isc_resourcevalue_t named_g_initopenfiles INIT(0);
|
|||||||
/*
|
/*
|
||||||
* Misc.
|
* Misc.
|
||||||
*/
|
*/
|
||||||
EXTERN isc_boolean_t named_g_coreok INIT(ISC_TRUE);
|
EXTERN bool named_g_coreok INIT(true);
|
||||||
EXTERN const char * named_g_chrootdir INIT(NULL);
|
EXTERN const char * named_g_chrootdir INIT(NULL);
|
||||||
EXTERN isc_boolean_t named_g_foreground INIT(ISC_FALSE);
|
EXTERN bool named_g_foreground INIT(false);
|
||||||
EXTERN isc_boolean_t named_g_logstderr INIT(ISC_FALSE);
|
EXTERN bool named_g_logstderr INIT(false);
|
||||||
EXTERN isc_boolean_t named_g_nosyslog INIT(ISC_FALSE);
|
EXTERN bool named_g_nosyslog INIT(false);
|
||||||
EXTERN const char * named_g_logfile INIT(NULL);
|
EXTERN const char * named_g_logfile INIT(NULL);
|
||||||
|
|
||||||
EXTERN const char * named_g_defaultsessionkeyfile
|
EXTERN const char * named_g_defaultsessionkeyfile
|
||||||
@@ -121,7 +123,7 @@ EXTERN const char * named_g_defaultsessionkeyfile
|
|||||||
EXTERN const char * named_g_defaultlockfile INIT(NAMED_LOCALSTATEDIR
|
EXTERN const char * named_g_defaultlockfile INIT(NAMED_LOCALSTATEDIR
|
||||||
"/run/named/"
|
"/run/named/"
|
||||||
"named.lock");
|
"named.lock");
|
||||||
EXTERN isc_boolean_t named_g_forcelock INIT(ISC_FALSE);
|
EXTERN bool named_g_forcelock INIT(false);
|
||||||
|
|
||||||
#if NAMED_RUN_PID_DIR
|
#if NAMED_RUN_PID_DIR
|
||||||
EXTERN const char * named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR
|
EXTERN const char * named_g_defaultpidfile INIT(NAMED_LOCALSTATEDIR
|
||||||
@@ -142,16 +144,12 @@ EXTERN const char * named_g_defaultdnstap INIT(NULL);
|
|||||||
|
|
||||||
EXTERN const char * named_g_username INIT(NULL);
|
EXTERN const char * named_g_username INIT(NULL);
|
||||||
|
|
||||||
#if defined(USE_PKCS11)
|
|
||||||
EXTERN const char * named_g_engine INIT(PKCS11_ENGINE);
|
|
||||||
#else
|
|
||||||
EXTERN const char * named_g_engine INIT(NULL);
|
EXTERN const char * named_g_engine INIT(NULL);
|
||||||
#endif
|
|
||||||
|
|
||||||
EXTERN isc_time_t named_g_boottime;
|
EXTERN isc_time_t named_g_boottime;
|
||||||
EXTERN isc_time_t named_g_configtime;
|
EXTERN isc_time_t named_g_configtime;
|
||||||
EXTERN isc_boolean_t named_g_memstatistics INIT(ISC_FALSE);
|
EXTERN bool named_g_memstatistics INIT(false);
|
||||||
EXTERN isc_boolean_t named_g_keepstderr INIT(ISC_FALSE);
|
EXTERN bool named_g_keepstderr INIT(false);
|
||||||
|
|
||||||
EXTERN unsigned int named_g_tat_interval INIT(24*3600);
|
EXTERN unsigned int named_g_tat_interval INIT(24*3600);
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
#define NAMED_LOGMODULE_CONTROL (&named_g_modules[2])
|
#define NAMED_LOGMODULE_CONTROL (&named_g_modules[2])
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_log_init(isc_boolean_t safe);
|
named_log_init(bool safe);
|
||||||
/*%
|
/*%
|
||||||
* Initialize the logging system and set up an initial default
|
* Initialize the logging system and set up an initial default
|
||||||
* logging default configuration that will be used until the
|
* logging default configuration that will be used until the
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/log.h>
|
#include <isc/log.h>
|
||||||
#include <isc/magic.h>
|
#include <isc/magic.h>
|
||||||
#include <isc/quota.h>
|
#include <isc/quota.h>
|
||||||
@@ -53,9 +56,9 @@ struct named_server {
|
|||||||
char * secrootsfile; /*%< Secroots file name */
|
char * secrootsfile; /*%< Secroots file name */
|
||||||
char * bindkeysfile; /*%< bind.keys file name */
|
char * bindkeysfile; /*%< bind.keys file name */
|
||||||
char * recfile; /*%< Recursive file name */
|
char * recfile; /*%< Recursive file name */
|
||||||
isc_boolean_t version_set; /*%< User has set version */
|
bool version_set; /*%< User has set version */
|
||||||
char * version; /*%< User-specified version */
|
char * version; /*%< User-specified version */
|
||||||
isc_boolean_t hostname_set; /*%< User has set hostname */
|
bool hostname_set; /*%< User has set hostname */
|
||||||
char * hostname; /*%< User-specified hostname */
|
char * hostname; /*%< User-specified hostname */
|
||||||
|
|
||||||
/* Server data structures. */
|
/* Server data structures. */
|
||||||
@@ -70,13 +73,13 @@ struct named_server {
|
|||||||
isc_timer_t * pps_timer;
|
isc_timer_t * pps_timer;
|
||||||
isc_timer_t * tat_timer;
|
isc_timer_t * tat_timer;
|
||||||
|
|
||||||
isc_uint32_t interface_interval;
|
uint32_t interface_interval;
|
||||||
isc_uint32_t heartbeat_interval;
|
uint32_t heartbeat_interval;
|
||||||
|
|
||||||
isc_mutex_t reload_event_lock;
|
isc_mutex_t reload_event_lock;
|
||||||
isc_event_t * reload_event;
|
isc_event_t * reload_event;
|
||||||
|
|
||||||
isc_boolean_t flushonshutdown;
|
bool flushonshutdown;
|
||||||
|
|
||||||
named_cachelist_t cachelist; /*%< Possibly shared caches */
|
named_cachelist_t cachelist; /*%< Possibly shared caches */
|
||||||
isc_stats_t * zonestats; /*% Zone management stats */
|
isc_stats_t * zonestats; /*% Zone management stats */
|
||||||
@@ -93,8 +96,8 @@ struct named_server {
|
|||||||
char *session_keyfile;
|
char *session_keyfile;
|
||||||
dns_name_t *session_keyname;
|
dns_name_t *session_keyname;
|
||||||
unsigned int session_keyalg;
|
unsigned int session_keyalg;
|
||||||
isc_uint16_t session_keybits;
|
uint16_t session_keybits;
|
||||||
isc_boolean_t interface_auto;
|
bool interface_auto;
|
||||||
unsigned char secret[32]; /*%< Server Cookie Secret */
|
unsigned char secret[32]; /*%< Server Cookie Secret */
|
||||||
ns_cookiealg_t cookiealg;
|
ns_cookiealg_t cookiealg;
|
||||||
|
|
||||||
@@ -137,7 +140,7 @@ named_server_scan_interfaces(named_server_t *server);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
named_server_flushonshutdown(named_server_t *server, isc_boolean_t flush);
|
named_server_flushonshutdown(named_server_t *server, bool flush);
|
||||||
/*%<
|
/*%<
|
||||||
* Inform the server that the zones should be flushed to disk on shutdown.
|
* Inform the server that the zones should be flushed to disk on shutdown.
|
||||||
*/
|
*/
|
||||||
@@ -234,7 +237,7 @@ named_server_flushcache(named_server_t *server, isc_lex_t *lex);
|
|||||||
*/
|
*/
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_server_flushnode(named_server_t *server, isc_lex_t *lex,
|
named_server_flushnode(named_server_t *server, isc_lex_t *lex,
|
||||||
isc_boolean_t tree);
|
bool tree);
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Report the server's status.
|
* Report the server's status.
|
||||||
@@ -259,7 +262,7 @@ named_server_tsigdelete(named_server_t *server, isc_lex_t *lex,
|
|||||||
* Enable or disable updates for a zone.
|
* Enable or disable updates for a zone.
|
||||||
*/
|
*/
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_server_freeze(named_server_t *server, isc_boolean_t freeze,
|
named_server_freeze(named_server_t *server, bool freeze,
|
||||||
isc_lex_t *lex, isc_buffer_t **text);
|
isc_lex_t *lex, isc_buffer_t **text);
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
@@ -339,7 +342,7 @@ named_server_zonestatus(named_server_t *server, isc_lex_t *lex,
|
|||||||
*/
|
*/
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_server_nta(named_server_t *server, isc_lex_t *lex,
|
named_server_nta(named_server_t *server, isc_lex_t *lex,
|
||||||
isc_boolean_t readonly, isc_buffer_t **text);
|
bool readonly, isc_buffer_t **text);
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Generates a test sequence that is only for use in system tests. The
|
* Generates a test sequence that is only for use in system tests. The
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/lang.h>
|
#include <isc/lang.h>
|
||||||
#include <isc/types.h>
|
#include <isc/types.h>
|
||||||
|
|
||||||
@@ -41,13 +43,13 @@ named_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
|||||||
* \li 'zone' to be initialized.
|
* \li 'zone' to be initialized.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig);
|
named_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig);
|
||||||
/*%<
|
/*%<
|
||||||
* If 'zone' can be safely reconfigured according to the configuration
|
* If 'zone' can be safely reconfigured according to the configuration
|
||||||
* data in 'zconfig', return ISC_TRUE. If the configuration data is so
|
* data in 'zconfig', return true. If the configuration data is so
|
||||||
* different from the current zone state that the zone needs to be destroyed
|
* different from the current zone state that the zone needs to be destroyed
|
||||||
* and recreated, return ISC_FALSE.
|
* and recreated, return false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
|
|||||||
+1
-1
@@ -50,7 +50,7 @@ static isc_logmodule_t modules[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
named_log_init(isc_boolean_t safe) {
|
named_log_init(bool safe) {
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
isc_logconfig_t *lcfg = NULL;
|
isc_logconfig_t *lcfg = NULL;
|
||||||
|
|
||||||
|
|||||||
+9
-6
@@ -13,6 +13,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/file.h>
|
#include <isc/file.h>
|
||||||
#include <isc/offset.h>
|
#include <isc/offset.h>
|
||||||
#include <isc/print.h>
|
#include <isc/print.h>
|
||||||
@@ -136,10 +139,10 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig) {
|
|||||||
cfg_tuple_get(fileobj, "versions");
|
cfg_tuple_get(fileobj, "versions");
|
||||||
const cfg_obj_t *suffixobj =
|
const cfg_obj_t *suffixobj =
|
||||||
cfg_tuple_get(fileobj, "suffix");
|
cfg_tuple_get(fileobj, "suffix");
|
||||||
isc_int32_t versions = ISC_LOG_ROLLNEVER;
|
int32_t versions = ISC_LOG_ROLLNEVER;
|
||||||
isc_log_rollsuffix_t suffix = isc_log_rollsuffix_increment;
|
isc_log_rollsuffix_t suffix = isc_log_rollsuffix_increment;
|
||||||
isc_offset_t size = 0;
|
isc_offset_t size = 0;
|
||||||
isc_uint64_t maxoffset;
|
uint64_t maxoffset;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* isc_offset_t is a signed integer type, so the maximum
|
* isc_offset_t is a signed integer type, so the maximum
|
||||||
@@ -302,8 +305,8 @@ named_logconfig(isc_logconfig_t *logconfig, const cfg_obj_t *logstmt) {
|
|||||||
const cfg_obj_t *channels = NULL;
|
const cfg_obj_t *channels = NULL;
|
||||||
const cfg_obj_t *categories = NULL;
|
const cfg_obj_t *categories = NULL;
|
||||||
const cfg_listelt_t *element;
|
const cfg_listelt_t *element;
|
||||||
isc_boolean_t default_set = ISC_FALSE;
|
bool default_set = false;
|
||||||
isc_boolean_t unmatched_set = ISC_FALSE;
|
bool unmatched_set = false;
|
||||||
const cfg_obj_t *catname;
|
const cfg_obj_t *catname;
|
||||||
|
|
||||||
if (logconfig != NULL)
|
if (logconfig != NULL)
|
||||||
@@ -328,12 +331,12 @@ named_logconfig(isc_logconfig_t *logconfig, const cfg_obj_t *logstmt) {
|
|||||||
if (!default_set) {
|
if (!default_set) {
|
||||||
catname = cfg_tuple_get(category, "name");
|
catname = cfg_tuple_get(category, "name");
|
||||||
if (strcmp(cfg_obj_asstring(catname), "default") == 0)
|
if (strcmp(cfg_obj_asstring(catname), "default") == 0)
|
||||||
default_set = ISC_TRUE;
|
default_set = true;
|
||||||
}
|
}
|
||||||
if (!unmatched_set) {
|
if (!unmatched_set) {
|
||||||
catname = cfg_tuple_get(category, "name");
|
catname = cfg_tuple_get(category, "name");
|
||||||
if (strcmp(cfg_obj_asstring(catname), "unmatched") == 0)
|
if (strcmp(cfg_obj_asstring(catname), "unmatched") == 0)
|
||||||
unmatched_set = ISC_TRUE;
|
unmatched_set = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+220
-161
@@ -14,6 +14,8 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -44,7 +46,7 @@
|
|||||||
#include <dns/view.h>
|
#include <dns/view.h>
|
||||||
|
|
||||||
#include <dst/result.h>
|
#include <dst/result.h>
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
#include <pk11/result.h>
|
#include <pk11/result.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -75,10 +77,8 @@
|
|||||||
#include <named/smf_globals.h>
|
#include <named/smf_globals.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_OPENSSL
|
|
||||||
#include <openssl/opensslv.h>
|
#include <openssl/opensslv.h>
|
||||||
#include <openssl/crypto.h>
|
#include <openssl/crypto.h>
|
||||||
#endif
|
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
#include <libxml/xmlversion.h>
|
#include <libxml/xmlversion.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -109,7 +109,7 @@ LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_hour;
|
|||||||
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_day;
|
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_day;
|
||||||
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_month;
|
LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_month;
|
||||||
|
|
||||||
static isc_boolean_t want_stats = ISC_FALSE;
|
static bool want_stats = false;
|
||||||
static char program_name[ISC_DIR_NAMEMAX] = "named";
|
static char program_name[ISC_DIR_NAMEMAX] = "named";
|
||||||
static char absolute_conffile[ISC_DIR_PATHMAX];
|
static char absolute_conffile[ISC_DIR_PATHMAX];
|
||||||
static char saved_command_line[512];
|
static char saved_command_line[512];
|
||||||
@@ -120,21 +120,22 @@ static int maxudp = 0;
|
|||||||
/*
|
/*
|
||||||
* -T options:
|
* -T options:
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t clienttest = ISC_FALSE;
|
static bool clienttest = false;
|
||||||
static isc_boolean_t dropedns = ISC_FALSE;
|
static bool dropedns = false;
|
||||||
static isc_boolean_t noedns = ISC_FALSE;
|
static bool noedns = false;
|
||||||
static isc_boolean_t nosoa = ISC_FALSE;
|
static bool nosoa = false;
|
||||||
static isc_boolean_t noaa = ISC_FALSE;
|
static bool noaa = false;
|
||||||
static unsigned int delay = 0;
|
static unsigned int delay = 0;
|
||||||
static isc_boolean_t nonearest = ISC_FALSE;
|
static bool nonearest = false;
|
||||||
static isc_boolean_t notcp = ISC_FALSE;
|
static bool notcp = false;
|
||||||
static isc_boolean_t fixedlocal = ISC_FALSE;
|
static bool fixedlocal = false;
|
||||||
|
static bool sigvalinsecs = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* -4 and -6
|
* -4 and -6
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t disable6 = ISC_FALSE;
|
static bool disable6 = false;
|
||||||
static isc_boolean_t disable4 = ISC_FALSE;
|
static bool disable4 = false;
|
||||||
|
|
||||||
void
|
void
|
||||||
named_main_earlywarning(const char *format, ...) {
|
named_main_earlywarning(const char *format, ...) {
|
||||||
@@ -337,7 +338,7 @@ save_command_line(int argc, char *argv[]) {
|
|||||||
char *dst;
|
char *dst;
|
||||||
char *eob;
|
char *eob;
|
||||||
const char truncated[] = "...";
|
const char truncated[] = "...";
|
||||||
isc_boolean_t quoted = ISC_FALSE;
|
bool quoted = false;
|
||||||
|
|
||||||
dst = saved_command_line;
|
dst = saved_command_line;
|
||||||
eob = saved_command_line + sizeof(saved_command_line);
|
eob = saved_command_line + sizeof(saved_command_line);
|
||||||
@@ -357,10 +358,10 @@ save_command_line(int argc, char *argv[]) {
|
|||||||
*src == '-' || *src == '_' ||
|
*src == '-' || *src == '_' ||
|
||||||
*src == '.' || *src == '/') {
|
*src == '.' || *src == '/') {
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
quoted = ISC_FALSE;
|
quoted = false;
|
||||||
} else {
|
} else {
|
||||||
*dst++ = '\\';
|
*dst++ = '\\';
|
||||||
quoted = ISC_TRUE;
|
quoted = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -391,25 +392,25 @@ parse_int(char *arg, const char *desc) {
|
|||||||
static struct flag_def {
|
static struct flag_def {
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned int value;
|
unsigned int value;
|
||||||
isc_boolean_t negate;
|
bool negate;
|
||||||
} mem_debug_flags[] = {
|
} mem_debug_flags[] = {
|
||||||
{ "none", 0, ISC_FALSE },
|
{ "none", 0, false },
|
||||||
{ "trace", ISC_MEM_DEBUGTRACE, ISC_FALSE },
|
{ "trace", ISC_MEM_DEBUGTRACE, false },
|
||||||
{ "record", ISC_MEM_DEBUGRECORD, ISC_FALSE },
|
{ "record", ISC_MEM_DEBUGRECORD, false },
|
||||||
{ "usage", ISC_MEM_DEBUGUSAGE, ISC_FALSE },
|
{ "usage", ISC_MEM_DEBUGUSAGE, false },
|
||||||
{ "size", ISC_MEM_DEBUGSIZE, ISC_FALSE },
|
{ "size", ISC_MEM_DEBUGSIZE, false },
|
||||||
{ "mctx", ISC_MEM_DEBUGCTX, ISC_FALSE },
|
{ "mctx", ISC_MEM_DEBUGCTX, false },
|
||||||
{ NULL, 0, ISC_FALSE }
|
{ NULL, 0, false }
|
||||||
}, mem_context_flags[] = {
|
}, mem_context_flags[] = {
|
||||||
{ "external", ISC_MEMFLAG_INTERNAL, ISC_TRUE },
|
{ "external", ISC_MEMFLAG_INTERNAL, true },
|
||||||
{ "fill", ISC_MEMFLAG_FILL, ISC_FALSE },
|
{ "fill", ISC_MEMFLAG_FILL, false },
|
||||||
{ "nofill", ISC_MEMFLAG_FILL, ISC_TRUE },
|
{ "nofill", ISC_MEMFLAG_FILL, true },
|
||||||
{ NULL, 0, ISC_FALSE }
|
{ NULL, 0, false }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) {
|
set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) {
|
||||||
isc_boolean_t clear = ISC_FALSE;
|
bool clear = false;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
const struct flag_def *def;
|
const struct flag_def *def;
|
||||||
@@ -422,7 +423,7 @@ set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) {
|
|||||||
if (arglen == (int)strlen(def->name) &&
|
if (arglen == (int)strlen(def->name) &&
|
||||||
memcmp(arg, def->name, arglen) == 0) {
|
memcmp(arg, def->name, arglen) == 0) {
|
||||||
if (def->value == 0)
|
if (def->value == 0)
|
||||||
clear = ISC_TRUE;
|
clear = true;
|
||||||
if (def->negate)
|
if (def->negate)
|
||||||
*ret &= ~(def->value);
|
*ret &= ~(def->value);
|
||||||
else
|
else
|
||||||
@@ -464,12 +465,97 @@ parse_fuzz_arg(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parse_T_opt(char *option) {
|
||||||
|
const char *p;
|
||||||
|
char *last = NULL;
|
||||||
|
/*
|
||||||
|
* force the server to behave (or misbehave) in
|
||||||
|
* specified ways for testing purposes.
|
||||||
|
*
|
||||||
|
* clienttest: make clients single shot with their
|
||||||
|
* own memory context.
|
||||||
|
* delay=xxxx: delay client responses by xxxx ms to
|
||||||
|
* simulate remote servers.
|
||||||
|
* dscp=x: check that dscp values are as
|
||||||
|
* expected and assert otherwise.
|
||||||
|
*/
|
||||||
|
if (!strcmp(option, "clienttest")) {
|
||||||
|
clienttest = true;
|
||||||
|
} else if (!strncmp(option, "delay=", 6)) {
|
||||||
|
delay = atoi(option + 6);
|
||||||
|
} else if (!strcmp(option, "dropedns")) {
|
||||||
|
dropedns = true;
|
||||||
|
} else if (!strncmp(option, "dscp=", 5)) {
|
||||||
|
isc_dscp_check_value = atoi(option + 5);
|
||||||
|
} else if (!strcmp(option, "fixedlocal")) {
|
||||||
|
fixedlocal = true;
|
||||||
|
} else if (!strcmp(option, "keepstderr")) {
|
||||||
|
named_g_keepstderr = true;
|
||||||
|
} else if (!strcmp(option, "noaa")) {
|
||||||
|
noaa = true;
|
||||||
|
} else if (!strcmp(option, "noedns")) {
|
||||||
|
noedns = true;
|
||||||
|
} else if (!strcmp(option, "nonearest")) {
|
||||||
|
nonearest = true;
|
||||||
|
} else if (!strcmp(option, "nosoa")) {
|
||||||
|
nosoa = true;
|
||||||
|
} else if (!strcmp(option, "nosyslog")) {
|
||||||
|
named_g_nosyslog = true;
|
||||||
|
} else if (!strcmp(option, "notcp")) {
|
||||||
|
notcp = true;
|
||||||
|
} else if (!strcmp(option, "maxudp512")) {
|
||||||
|
maxudp = 512;
|
||||||
|
} else if (!strcmp(option, "maxudp1460")) {
|
||||||
|
maxudp = 1460;
|
||||||
|
} else if (!strncmp(option, "maxudp=", 7)) {
|
||||||
|
maxudp = atoi(option + 7);
|
||||||
|
} else if (!strncmp(option, "mkeytimers=", 11)) {
|
||||||
|
p = strtok_r(option + 11, "/", &last);
|
||||||
|
if (p == NULL) {
|
||||||
|
named_main_earlyfatal("bad mkeytimer");
|
||||||
|
}
|
||||||
|
|
||||||
|
dns_zone_mkey_hour = atoi(p);
|
||||||
|
if (dns_zone_mkey_hour == 0) {
|
||||||
|
named_main_earlyfatal("bad mkeytimer");
|
||||||
|
}
|
||||||
|
|
||||||
|
p = strtok_r(NULL, "/", &last);
|
||||||
|
if (p == NULL) {
|
||||||
|
dns_zone_mkey_day = (24 * dns_zone_mkey_hour);
|
||||||
|
dns_zone_mkey_month = (30 * dns_zone_mkey_day);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dns_zone_mkey_day = atoi(p);
|
||||||
|
if (dns_zone_mkey_day < dns_zone_mkey_hour)
|
||||||
|
named_main_earlyfatal("bad mkeytimer");
|
||||||
|
|
||||||
|
p = strtok_r(NULL, "/", &last);
|
||||||
|
if (p == NULL) {
|
||||||
|
dns_zone_mkey_month = (30 * dns_zone_mkey_day);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dns_zone_mkey_month = atoi(p);
|
||||||
|
if (dns_zone_mkey_month < dns_zone_mkey_day) {
|
||||||
|
named_main_earlyfatal("bad mkeytimer");
|
||||||
|
}
|
||||||
|
} else if (!strcmp(option, "sigvalinsecs")) {
|
||||||
|
sigvalinsecs = true;
|
||||||
|
} else if (!strncmp(option, "tat=", 4)) {
|
||||||
|
named_g_tat_interval = atoi(option + 4);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "unknown -T flag '%s\n", option);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_command_line(int argc, char *argv[]) {
|
parse_command_line(int argc, char *argv[]) {
|
||||||
int ch;
|
int ch;
|
||||||
int port;
|
int port;
|
||||||
const char *p;
|
const char *p;
|
||||||
char *last;
|
|
||||||
|
|
||||||
save_command_line(argc, argv);
|
save_command_line(argc, argv);
|
||||||
|
|
||||||
@@ -477,7 +563,7 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
* NAMED_MAIN_ARGS is defined in main.h, so that it can be used
|
* NAMED_MAIN_ARGS is defined in main.h, so that it can be used
|
||||||
* both by named and by ntservice hooks.
|
* both by named and by ntservice hooks.
|
||||||
*/
|
*/
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
while ((ch = isc_commandline_parse(argc, argv,
|
while ((ch = isc_commandline_parse(argc, argv,
|
||||||
NAMED_MAIN_ARGS)) != -1)
|
NAMED_MAIN_ARGS)) != -1)
|
||||||
{
|
{
|
||||||
@@ -490,7 +576,7 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
named_main_earlyfatal("IPv4 not supported "
|
named_main_earlyfatal("IPv4 not supported "
|
||||||
"by OS");
|
"by OS");
|
||||||
isc_net_disableipv6();
|
isc_net_disableipv6();
|
||||||
disable6 = ISC_TRUE;
|
disable6 = true;
|
||||||
break;
|
break;
|
||||||
case '6':
|
case '6':
|
||||||
if (disable6)
|
if (disable6)
|
||||||
@@ -500,14 +586,14 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
named_main_earlyfatal("IPv6 not supported "
|
named_main_earlyfatal("IPv6 not supported "
|
||||||
"by OS");
|
"by OS");
|
||||||
isc_net_disableipv4();
|
isc_net_disableipv4();
|
||||||
disable4 = ISC_TRUE;
|
disable4 = true;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
parse_fuzz_arg();
|
parse_fuzz_arg();
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
named_g_conffile = isc_commandline_argument;
|
named_g_conffile = isc_commandline_argument;
|
||||||
named_g_conffileset = ISC_TRUE;
|
named_g_conffileset = true;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
named_g_debuglevel = parse_int(isc_commandline_argument,
|
named_g_debuglevel = parse_int(isc_commandline_argument,
|
||||||
@@ -520,11 +606,11 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
named_g_engine = isc_commandline_argument;
|
named_g_engine = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
named_g_foreground = ISC_TRUE;
|
named_g_foreground = true;
|
||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
named_g_foreground = ISC_TRUE;
|
named_g_foreground = true;
|
||||||
named_g_logstderr = ISC_TRUE;
|
named_g_logstderr = true;
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
named_g_logfile = isc_commandline_argument;
|
named_g_logfile = isc_commandline_argument;
|
||||||
@@ -553,7 +639,7 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
/* XXXRTH temporary syntax */
|
/* XXXRTH temporary syntax */
|
||||||
want_stats = ISC_TRUE;
|
want_stats = true;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
maxsocks = parse_int(isc_commandline_argument,
|
maxsocks = parse_int(isc_commandline_argument,
|
||||||
@@ -564,95 +650,7 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
named_g_chrootdir = isc_commandline_argument;
|
named_g_chrootdir = isc_commandline_argument;
|
||||||
break;
|
break;
|
||||||
case 'T': /* NOT DOCUMENTED */
|
case 'T': /* NOT DOCUMENTED */
|
||||||
/*
|
parse_T_opt(isc_commandline_argument);
|
||||||
* force the server to behave (or misbehave) in
|
|
||||||
* specified ways for testing purposes.
|
|
||||||
*
|
|
||||||
* clienttest: make clients single shot with their
|
|
||||||
* own memory context.
|
|
||||||
* delay=xxxx: delay client responses by xxxx ms to
|
|
||||||
* simulate remote servers.
|
|
||||||
* dscp=x: check that dscp values are as
|
|
||||||
* expected and assert otherwise.
|
|
||||||
*/
|
|
||||||
if (!strcmp(isc_commandline_argument, "clienttest"))
|
|
||||||
clienttest = ISC_TRUE;
|
|
||||||
else if (!strcmp(isc_commandline_argument, "nosoa"))
|
|
||||||
nosoa = ISC_TRUE;
|
|
||||||
else if (!strcmp(isc_commandline_argument, "noaa"))
|
|
||||||
noaa = ISC_TRUE;
|
|
||||||
else if (!strcmp(isc_commandline_argument,
|
|
||||||
"maxudp512"))
|
|
||||||
maxudp = 512;
|
|
||||||
else if (!strcmp(isc_commandline_argument,
|
|
||||||
"maxudp1460"))
|
|
||||||
maxudp = 1460;
|
|
||||||
else if (!strcmp(isc_commandline_argument, "dropedns"))
|
|
||||||
dropedns = ISC_TRUE;
|
|
||||||
else if (!strcmp(isc_commandline_argument, "noedns"))
|
|
||||||
noedns = ISC_TRUE;
|
|
||||||
else if (!strncmp(isc_commandline_argument,
|
|
||||||
"maxudp=", 7))
|
|
||||||
maxudp = atoi(isc_commandline_argument + 7);
|
|
||||||
else if (!strncmp(isc_commandline_argument,
|
|
||||||
"delay=", 6))
|
|
||||||
delay = atoi(isc_commandline_argument + 6);
|
|
||||||
else if (!strcmp(isc_commandline_argument, "nosyslog"))
|
|
||||||
named_g_nosyslog = ISC_TRUE;
|
|
||||||
else if (!strcmp(isc_commandline_argument, "nonearest"))
|
|
||||||
nonearest = ISC_TRUE;
|
|
||||||
else if (!strncmp(isc_commandline_argument, "dscp=", 5))
|
|
||||||
isc_dscp_check_value =
|
|
||||||
atoi(isc_commandline_argument + 5);
|
|
||||||
else if (!strncmp(isc_commandline_argument,
|
|
||||||
"mkeytimers=", 11))
|
|
||||||
{
|
|
||||||
p = strtok_r(isc_commandline_argument + 11, "/", &last);
|
|
||||||
if (p == NULL)
|
|
||||||
named_main_earlyfatal("bad mkeytimer");
|
|
||||||
dns_zone_mkey_hour = atoi(p);
|
|
||||||
if (dns_zone_mkey_hour == 0)
|
|
||||||
named_main_earlyfatal("bad mkeytimer");
|
|
||||||
|
|
||||||
p = strtok_r(NULL, "/", &last);
|
|
||||||
if (p == NULL) {
|
|
||||||
dns_zone_mkey_day =
|
|
||||||
(24 * dns_zone_mkey_hour);
|
|
||||||
dns_zone_mkey_month =
|
|
||||||
(30 * dns_zone_mkey_day);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dns_zone_mkey_day = atoi(p);
|
|
||||||
if (dns_zone_mkey_day < dns_zone_mkey_hour)
|
|
||||||
named_main_earlyfatal("bad mkeytimer");
|
|
||||||
|
|
||||||
p = strtok_r(NULL, "/", &last);
|
|
||||||
if (p == NULL) {
|
|
||||||
dns_zone_mkey_month =
|
|
||||||
(30 * dns_zone_mkey_day);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dns_zone_mkey_month = atoi(p);
|
|
||||||
if (dns_zone_mkey_month < dns_zone_mkey_day)
|
|
||||||
named_main_earlyfatal("bad mkeytimer");
|
|
||||||
} else if (!strcmp(isc_commandline_argument, "notcp"))
|
|
||||||
notcp = ISC_TRUE;
|
|
||||||
else if (!strncmp(isc_commandline_argument, "tat=", 4))
|
|
||||||
{
|
|
||||||
named_g_tat_interval =
|
|
||||||
atoi(isc_commandline_argument + 4);
|
|
||||||
} else if (!strcmp(isc_commandline_argument,
|
|
||||||
"keepstderr"))
|
|
||||||
{
|
|
||||||
named_g_keepstderr = ISC_TRUE;
|
|
||||||
} else if (!strcmp(isc_commandline_argument,
|
|
||||||
"fixedlocal"))
|
|
||||||
{
|
|
||||||
fixedlocal = ISC_TRUE;
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "unknown -T flag '%s\n",
|
|
||||||
isc_commandline_argument);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
named_g_udpdisp = parse_int(isc_commandline_argument,
|
named_g_udpdisp = parse_int(isc_commandline_argument,
|
||||||
@@ -693,7 +691,6 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
#ifdef __SUNPRO_C
|
#ifdef __SUNPRO_C
|
||||||
printf("compiled by Solaris Studio %x\n", __SUNPRO_C);
|
printf("compiled by Solaris Studio %x\n", __SUNPRO_C);
|
||||||
#endif
|
#endif
|
||||||
#if HAVE_OPENSSL
|
|
||||||
printf("compiled with OpenSSL version: %s\n",
|
printf("compiled with OpenSSL version: %s\n",
|
||||||
OPENSSL_VERSION_TEXT);
|
OPENSSL_VERSION_TEXT);
|
||||||
#if !defined(LIBRESSL_VERSION_NUMBER) && \
|
#if !defined(LIBRESSL_VERSION_NUMBER) && \
|
||||||
@@ -705,7 +702,6 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
printf("linked to OpenSSL version: %s\n",
|
printf("linked to OpenSSL version: %s\n",
|
||||||
SSLeay_version(SSLEAY_VERSION));
|
SSLeay_version(SSLEAY_VERSION));
|
||||||
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
|
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
|
||||||
#endif
|
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
printf("compiled with libxml2 version: %s\n",
|
printf("compiled with libxml2 version: %s\n",
|
||||||
LIBXML_DOTTED_VERSION);
|
LIBXML_DOTTED_VERSION);
|
||||||
@@ -724,17 +720,13 @@ parse_command_line(int argc, char *argv[]) {
|
|||||||
printf("linked to zlib version: %s\n",
|
printf("linked to zlib version: %s\n",
|
||||||
zlibVersion());
|
zlibVersion());
|
||||||
#endif
|
#endif
|
||||||
#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
printf("threads support is enabled\n");
|
printf("threads support is enabled\n");
|
||||||
#else
|
|
||||||
printf("threads support is disabled\n");
|
|
||||||
#endif
|
|
||||||
exit(0);
|
exit(0);
|
||||||
case 'x':
|
case 'x':
|
||||||
/* Obsolete. No longer in use. Ignore. */
|
/* Obsolete. No longer in use. Ignore. */
|
||||||
break;
|
break;
|
||||||
case 'X':
|
case 'X':
|
||||||
named_g_forcelock = ISC_TRUE;
|
named_g_forcelock = true;
|
||||||
if (strcasecmp(isc_commandline_argument, "none") != 0)
|
if (strcasecmp(isc_commandline_argument, "none") != 0)
|
||||||
named_g_defaultlockfile =
|
named_g_defaultlockfile =
|
||||||
isc_commandline_argument;
|
isc_commandline_argument;
|
||||||
@@ -780,18 +772,14 @@ create_managers(void) {
|
|||||||
|
|
||||||
INSIST(named_g_cpus_detected > 0);
|
INSIST(named_g_cpus_detected > 0);
|
||||||
|
|
||||||
#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
if (named_g_cpus == 0)
|
if (named_g_cpus == 0)
|
||||||
named_g_cpus = named_g_cpus_detected;
|
named_g_cpus = named_g_cpus_detected * 1.5;
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||||
"found %u CPU%s, using %u worker thread%s",
|
"found %u CPU%s, using %u worker thread%s",
|
||||||
named_g_cpus_detected,
|
named_g_cpus_detected,
|
||||||
named_g_cpus_detected == 1 ? "" : "s",
|
named_g_cpus_detected == 1 ? "" : "s",
|
||||||
named_g_cpus, named_g_cpus == 1 ? "" : "s");
|
named_g_cpus, named_g_cpus == 1 ? "" : "s");
|
||||||
#else
|
|
||||||
named_g_cpus = 1;
|
|
||||||
#endif
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
named_g_udpdisp = 1;
|
named_g_udpdisp = 1;
|
||||||
#else
|
#else
|
||||||
@@ -799,17 +787,15 @@ create_managers(void) {
|
|||||||
if (named_g_cpus_detected == 1)
|
if (named_g_cpus_detected == 1)
|
||||||
named_g_udpdisp = 1;
|
named_g_udpdisp = 1;
|
||||||
else
|
else
|
||||||
named_g_udpdisp = named_g_cpus_detected - 1;
|
named_g_udpdisp = named_g_cpus_detected;
|
||||||
}
|
}
|
||||||
if (named_g_udpdisp > named_g_cpus)
|
if (named_g_udpdisp > named_g_cpus)
|
||||||
named_g_udpdisp = named_g_cpus;
|
named_g_udpdisp = named_g_cpus;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||||
"using %u UDP listener%s per interface",
|
"using %u UDP listener%s per interface",
|
||||||
named_g_udpdisp, named_g_udpdisp == 1 ? "" : "s");
|
named_g_udpdisp, named_g_udpdisp == 1 ? "" : "s");
|
||||||
#endif
|
|
||||||
|
|
||||||
result = isc_taskmgr_create(named_g_mctx, named_g_cpus, 0,
|
result = isc_taskmgr_create(named_g_mctx, named_g_cpus, 0,
|
||||||
&named_g_taskmgr);
|
&named_g_taskmgr);
|
||||||
@@ -836,7 +822,7 @@ create_managers(void) {
|
|||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
return (ISC_R_UNEXPECTED);
|
return (ISC_R_UNEXPECTED);
|
||||||
}
|
}
|
||||||
isc__socketmgr_maxudp(named_g_socketmgr, maxudp);
|
isc_socketmgr_maxudp(named_g_socketmgr, maxudp);
|
||||||
result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks);
|
result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
@@ -921,12 +907,10 @@ setup(void) {
|
|||||||
isc_mem_free(named_g_mctx, instance);
|
isc_mem_free(named_g_mctx, instance);
|
||||||
#endif /* HAVE_LIBSCF */
|
#endif /* HAVE_LIBSCF */
|
||||||
|
|
||||||
#ifdef ISC_PLATFORM_USETHREADS
|
|
||||||
/*
|
/*
|
||||||
* Check for the number of cpu's before named_os_chroot().
|
* Check for the number of cpu's before named_os_chroot().
|
||||||
*/
|
*/
|
||||||
named_g_cpus_detected = isc_os_ncpus();
|
named_g_cpus_detected = isc_os_ncpus();
|
||||||
#endif
|
|
||||||
|
|
||||||
named_os_chroot(named_g_chrootdir);
|
named_os_chroot(named_g_chrootdir);
|
||||||
|
|
||||||
@@ -940,7 +924,7 @@ setup(void) {
|
|||||||
*/
|
*/
|
||||||
named_os_minprivs();
|
named_os_minprivs();
|
||||||
|
|
||||||
result = named_log_init(ISC_TF(named_g_username != NULL));
|
result = named_log_init(named_g_username != NULL);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
named_main_earlyfatal("named_log_init() failed: %s",
|
named_main_earlyfatal("named_log_init() failed: %s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(result));
|
||||||
@@ -983,6 +967,79 @@ setup(void) {
|
|||||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
"running as: %s%s",
|
"running as: %s%s",
|
||||||
program_name, saved_command_line);
|
program_name, saved_command_line);
|
||||||
|
#ifdef __clang__
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled by CLANG %s", __VERSION__);
|
||||||
|
#else
|
||||||
|
#if defined(__ICC) || defined(__INTEL_COMPILER)
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled by ICC %s", __VERSION__);
|
||||||
|
#else
|
||||||
|
#ifdef __GNUC__
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled by GCC %s", __VERSION__);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled by MSVC %d", _MSC_VER);
|
||||||
|
#endif
|
||||||
|
#ifdef __SUNPRO_C
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled by Solaris Studio %x", __SUNPRO_C);
|
||||||
|
#endif
|
||||||
|
#ifdef OPENSSL
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled with OpenSSL version: %s",
|
||||||
|
OPENSSL_VERSION_TEXT);
|
||||||
|
#if !defined(LIBRESSL_VERSION_NUMBER) && \
|
||||||
|
OPENSSL_VERSION_NUMBER >= 0x10100000L /* 1.1.0 or higher */
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"linked to OpenSSL version: %s",
|
||||||
|
OpenSSL_version(OPENSSL_VERSION));
|
||||||
|
#else
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"linked to OpenSSL version: %s",
|
||||||
|
SSLeay_version(SSLEAY_VERSION));
|
||||||
|
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_LIBXML2
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled with libxml2 version: %s",
|
||||||
|
LIBXML_DOTTED_VERSION);
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"linked to libxml2 version: %s", xmlParserVersion);
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_JSON) && defined(JSON_C_VERSION)
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled with libjson-c version: %s", JSON_C_VERSION);
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"linked to libjson-c version: %s", json_c_version());
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_ZLIB) && defined(ZLIB_VERSION)
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"compiled with zlib version: %s", ZLIB_VERSION);
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"linked to zlib version: %s", zlibVersion());
|
||||||
|
#endif
|
||||||
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
|
"threads support is enabled");
|
||||||
|
|
||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
@@ -1029,8 +1086,8 @@ setup(void) {
|
|||||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||||
"adjusted limit on open files from "
|
"adjusted limit on open files from "
|
||||||
"%" ISC_PRINT_QUADFORMAT "u to "
|
"%" PRIu64 " to "
|
||||||
"%" ISC_PRINT_QUADFORMAT "u",
|
"%" PRIu64,
|
||||||
old_openfiles, named_g_initopenfiles);
|
old_openfiles, named_g_initopenfiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1097,25 +1154,27 @@ setup(void) {
|
|||||||
* Modify server context according to command line options
|
* Modify server context according to command line options
|
||||||
*/
|
*/
|
||||||
if (clienttest)
|
if (clienttest)
|
||||||
ns_server_setoption(sctx, NS_SERVER_CLIENTTEST, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_CLIENTTEST, true);
|
||||||
if (dropedns)
|
if (dropedns)
|
||||||
ns_server_setoption(sctx, NS_SERVER_DROPEDNS, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_DROPEDNS, true);
|
||||||
if (noedns)
|
if (noedns)
|
||||||
ns_server_setoption(sctx, NS_SERVER_NOEDNS, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_NOEDNS, true);
|
||||||
if (nosoa)
|
if (nosoa)
|
||||||
ns_server_setoption(sctx, NS_SERVER_NOSOA, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_NOSOA, true);
|
||||||
if (noaa)
|
if (noaa)
|
||||||
ns_server_setoption(sctx, NS_SERVER_NOAA, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_NOAA, true);
|
||||||
if (nonearest)
|
if (nonearest)
|
||||||
ns_server_setoption(sctx, NS_SERVER_NONEAREST, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_NONEAREST, true);
|
||||||
if (notcp)
|
if (notcp)
|
||||||
ns_server_setoption(sctx, NS_SERVER_NOTCP, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_NOTCP, true);
|
||||||
if (fixedlocal)
|
if (fixedlocal)
|
||||||
ns_server_setoption(sctx, NS_SERVER_FIXEDLOCAL, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_FIXEDLOCAL, true);
|
||||||
if (disable4)
|
if (disable4)
|
||||||
ns_server_setoption(sctx, NS_SERVER_DISABLE4, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_DISABLE4, true);
|
||||||
if (disable6)
|
if (disable6)
|
||||||
ns_server_setoption(sctx, NS_SERVER_DISABLE6, ISC_TRUE);
|
ns_server_setoption(sctx, NS_SERVER_DISABLE6, true);
|
||||||
|
if (sigvalinsecs)
|
||||||
|
ns_server_setoption(sctx, NS_SERVER_SIGVALINSECS, true);
|
||||||
|
|
||||||
named_g_server->sctx->delay = delay;
|
named_g_server->sctx->delay = delay;
|
||||||
}
|
}
|
||||||
@@ -1279,7 +1338,7 @@ main(int argc, char *argv[]) {
|
|||||||
dns_result_register();
|
dns_result_register();
|
||||||
dst_result_register();
|
dst_result_register();
|
||||||
isccc_result_register();
|
isccc_result_register();
|
||||||
#if HAVE_PKCS11
|
#if USE_PKCS11
|
||||||
pk11_result_register();
|
pk11_result_register();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
+24
-15
@@ -10,12 +10,12 @@
|
|||||||
.\" Title: named.conf
|
.\" Title: named.conf
|
||||||
.\" Author:
|
.\" Author:
|
||||||
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
|
||||||
.\" Date: 2018-01-22
|
.\" Date: 2018-05-29
|
||||||
.\" Manual: BIND9
|
.\" Manual: BIND9
|
||||||
.\" Source: ISC
|
.\" Source: ISC
|
||||||
.\" Language: English
|
.\" Language: English
|
||||||
.\"
|
.\"
|
||||||
.TH "NAMED\&.CONF" "5" "2018\-01\-22" "ISC" "BIND9"
|
.TH "NAMED\&.CONF" "5" "2018\-05\-29" "ISC" "BIND9"
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
.\" * Define some portability stuff
|
.\" * Define some portability stuff
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
@@ -212,7 +212,7 @@ options {
|
|||||||
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
||||||
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||||
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
||||||
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
|
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIttlval\fR ]; \&.\&.\&. };
|
||||||
check\-dup\-records ( fail | warn | ignore );
|
check\-dup\-records ( fail | warn | ignore );
|
||||||
check\-integrity \fIboolean\fR;
|
check\-integrity \fIboolean\fR;
|
||||||
check\-mx ( fail | warn | ignore );
|
check\-mx ( fail | warn | ignore );
|
||||||
@@ -251,6 +251,7 @@ options {
|
|||||||
};
|
};
|
||||||
dns64\-contact \fIstring\fR;
|
dns64\-contact \fIstring\fR;
|
||||||
dns64\-server \fIstring\fR;
|
dns64\-server \fIstring\fR;
|
||||||
|
dnskey\-sig\-validity \fIinteger\fR;
|
||||||
dnsrps\-enable \fIboolean\fR;
|
dnsrps\-enable \fIboolean\fR;
|
||||||
dnsrps\-options { \fIunspecified\-text\fR };
|
dnsrps\-options { \fIunspecified\-text\fR };
|
||||||
dnssec\-accept\-expired \fIboolean\fR;
|
dnssec\-accept\-expired \fIboolean\fR;
|
||||||
@@ -299,14 +300,13 @@ options {
|
|||||||
fstrm\-set\-output\-notify\-threshold \fIinteger\fR;
|
fstrm\-set\-output\-notify\-threshold \fIinteger\fR;
|
||||||
fstrm\-set\-output\-queue\-model ( mpsc | spsc );
|
fstrm\-set\-output\-queue\-model ( mpsc | spsc );
|
||||||
fstrm\-set\-output\-queue\-size \fIinteger\fR;
|
fstrm\-set\-output\-queue\-size \fIinteger\fR;
|
||||||
fstrm\-set\-reopen\-interval \fIinteger\fR;
|
fstrm\-set\-reopen\-interval \fIttlval\fR;
|
||||||
geoip\-directory ( \fIquoted_string\fR | none );
|
geoip\-directory ( \fIquoted_string\fR | none );
|
||||||
geoip\-use\-ecs \fIboolean\fR;
|
|
||||||
glue\-cache \fIboolean\fR;
|
glue\-cache \fIboolean\fR;
|
||||||
heartbeat\-interval \fIinteger\fR;
|
heartbeat\-interval \fIinteger\fR;
|
||||||
hostname ( \fIquoted_string\fR | none );
|
hostname ( \fIquoted_string\fR | none );
|
||||||
inline\-signing \fIboolean\fR;
|
inline\-signing \fIboolean\fR;
|
||||||
interface\-interval \fIinteger\fR;
|
interface\-interval \fIttlval\fR;
|
||||||
ixfr\-from\-differences ( primary | master | secondary | slave |
|
ixfr\-from\-differences ( primary | master | secondary | slave |
|
||||||
\fIboolean\fR );
|
\fIboolean\fR );
|
||||||
keep\-response\-order { \fIaddress_match_element\fR; \&.\&.\&. };
|
keep\-response\-order { \fIaddress_match_element\fR; \&.\&.\&. };
|
||||||
@@ -325,10 +325,10 @@ options {
|
|||||||
masterfile\-style ( full | relative );
|
masterfile\-style ( full | relative );
|
||||||
match\-mapped\-addresses \fIboolean\fR;
|
match\-mapped\-addresses \fIboolean\fR;
|
||||||
max\-cache\-size ( default | unlimited | \fIsizeval\fR | \fIpercentage\fR );
|
max\-cache\-size ( default | unlimited | \fIsizeval\fR | \fIpercentage\fR );
|
||||||
max\-cache\-ttl \fIinteger\fR;
|
max\-cache\-ttl \fIttlval\fR;
|
||||||
max\-clients\-per\-query \fIinteger\fR;
|
max\-clients\-per\-query \fIinteger\fR;
|
||||||
max\-journal\-size ( default | unlimited | \fIsizeval\fR );
|
max\-journal\-size ( default | unlimited | \fIsizeval\fR );
|
||||||
max\-ncache\-ttl \fIinteger\fR;
|
max\-ncache\-ttl \fIttlval\fR;
|
||||||
max\-records \fIinteger\fR;
|
max\-records \fIinteger\fR;
|
||||||
max\-recursion\-depth \fIinteger\fR;
|
max\-recursion\-depth \fIinteger\fR;
|
||||||
max\-recursion\-queries \fIinteger\fR;
|
max\-recursion\-queries \fIinteger\fR;
|
||||||
@@ -369,6 +369,7 @@ options {
|
|||||||
preferred\-glue \fIstring\fR;
|
preferred\-glue \fIstring\fR;
|
||||||
prefetch \fIinteger\fR [ \fIinteger\fR ];
|
prefetch \fIinteger\fR [ \fIinteger\fR ];
|
||||||
provide\-ixfr \fIboolean\fR;
|
provide\-ixfr \fIboolean\fR;
|
||||||
|
qname\-minimization ( strict | relaxed | disabled );
|
||||||
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
|
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
|
||||||
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
|
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
|
||||||
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
|
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
|
||||||
@@ -408,18 +409,19 @@ options {
|
|||||||
response\-padding { \fIaddress_match_element\fR; \&.\&.\&. } block\-size
|
response\-padding { \fIaddress_match_element\fR; \&.\&.\&. } block\-size
|
||||||
\fIinteger\fR;
|
\fIinteger\fR;
|
||||||
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
||||||
max\-policy\-ttl \fIinteger\fR ] [ min\-update\-interval \fIinteger\fR ] [
|
max\-policy\-ttl \fIttlval\fR ] [ min\-update\-interval \fIttlval\fR ] [
|
||||||
policy ( cname | disabled | drop | given | no\-op | nodata |
|
policy ( cname | disabled | drop | given | no\-op | nodata |
|
||||||
nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
||||||
recursive\-only \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [
|
recursive\-only \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [
|
||||||
nsdname\-enable \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
nsdname\-enable \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
||||||
max\-policy\-ttl \fIinteger\fR ] [ min\-update\-interval \fIinteger\fR ] [
|
max\-policy\-ttl \fIttlval\fR ] [ min\-update\-interval \fIttlval\fR ] [
|
||||||
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
||||||
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ] [
|
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ] [
|
||||||
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
|
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
|
||||||
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
|
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
|
||||||
} ];
|
} ];
|
||||||
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
||||||
|
root\-key\-sentinel \fIboolean\fR;
|
||||||
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
||||||
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
|
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
|
||||||
secroots\-file \fIquoted_string\fR;
|
secroots\-file \fIquoted_string\fR;
|
||||||
@@ -580,7 +582,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
\fIinteger\fR ] [ dscp \fIinteger\fR ] { ( \fImasters\fR | \fIipv4_address\fR [
|
||||||
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
port \fIinteger\fR ] | \fIipv6_address\fR [ port \fIinteger\fR ] ) [ key
|
||||||
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
\fIstring\fR ]; \&.\&.\&. } ] [ zone\-directory \fIquoted_string\fR ] [
|
||||||
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIinteger\fR ]; \&.\&.\&. };
|
in\-memory \fIboolean\fR ] [ min\-update\-interval \fIttlval\fR ]; \&.\&.\&. };
|
||||||
check\-dup\-records ( fail | warn | ignore );
|
check\-dup\-records ( fail | warn | ignore );
|
||||||
check\-integrity \fIboolean\fR;
|
check\-integrity \fIboolean\fR;
|
||||||
check\-mx ( fail | warn | ignore );
|
check\-mx ( fail | warn | ignore );
|
||||||
@@ -618,6 +620,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
};
|
};
|
||||||
dns64\-contact \fIstring\fR;
|
dns64\-contact \fIstring\fR;
|
||||||
dns64\-server \fIstring\fR;
|
dns64\-server \fIstring\fR;
|
||||||
|
dnskey\-sig\-validity \fIinteger\fR;
|
||||||
dnsrps\-enable \fIboolean\fR;
|
dnsrps\-enable \fIboolean\fR;
|
||||||
dnsrps\-options { \fIunspecified\-text\fR };
|
dnsrps\-options { \fIunspecified\-text\fR };
|
||||||
dnssec\-accept\-expired \fIboolean\fR;
|
dnssec\-accept\-expired \fIboolean\fR;
|
||||||
@@ -671,10 +674,10 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
match\-destinations { \fIaddress_match_element\fR; \&.\&.\&. };
|
match\-destinations { \fIaddress_match_element\fR; \&.\&.\&. };
|
||||||
match\-recursive\-only \fIboolean\fR;
|
match\-recursive\-only \fIboolean\fR;
|
||||||
max\-cache\-size ( default | unlimited | \fIsizeval\fR | \fIpercentage\fR );
|
max\-cache\-size ( default | unlimited | \fIsizeval\fR | \fIpercentage\fR );
|
||||||
max\-cache\-ttl \fIinteger\fR;
|
max\-cache\-ttl \fIttlval\fR;
|
||||||
max\-clients\-per\-query \fIinteger\fR;
|
max\-clients\-per\-query \fIinteger\fR;
|
||||||
max\-journal\-size ( default | unlimited | \fIsizeval\fR );
|
max\-journal\-size ( default | unlimited | \fIsizeval\fR );
|
||||||
max\-ncache\-ttl \fIinteger\fR;
|
max\-ncache\-ttl \fIttlval\fR;
|
||||||
max\-records \fIinteger\fR;
|
max\-records \fIinteger\fR;
|
||||||
max\-recursion\-depth \fIinteger\fR;
|
max\-recursion\-depth \fIinteger\fR;
|
||||||
max\-recursion\-queries \fIinteger\fR;
|
max\-recursion\-queries \fIinteger\fR;
|
||||||
@@ -709,6 +712,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
preferred\-glue \fIstring\fR;
|
preferred\-glue \fIstring\fR;
|
||||||
prefetch \fIinteger\fR [ \fIinteger\fR ];
|
prefetch \fIinteger\fR [ \fIinteger\fR ];
|
||||||
provide\-ixfr \fIboolean\fR;
|
provide\-ixfr \fIboolean\fR;
|
||||||
|
qname\-minimization ( strict | relaxed | disabled );
|
||||||
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
|
query\-source ( ( [ address ] ( \fIipv4_address\fR | * ) [ port (
|
||||||
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
|
\fIinteger\fR | * ) ] ) | ( [ [ address ] ( \fIipv4_address\fR | * ) ]
|
||||||
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
|
port ( \fIinteger\fR | * ) ) ) [ dscp \fIinteger\fR ];
|
||||||
@@ -743,18 +747,19 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
response\-padding { \fIaddress_match_element\fR; \&.\&.\&. } block\-size
|
response\-padding { \fIaddress_match_element\fR; \&.\&.\&. } block\-size
|
||||||
\fIinteger\fR;
|
\fIinteger\fR;
|
||||||
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
response\-policy { zone \fIquoted_string\fR [ log \fIboolean\fR ] [
|
||||||
max\-policy\-ttl \fIinteger\fR ] [ min\-update\-interval \fIinteger\fR ] [
|
max\-policy\-ttl \fIttlval\fR ] [ min\-update\-interval \fIttlval\fR ] [
|
||||||
policy ( cname | disabled | drop | given | no\-op | nodata |
|
policy ( cname | disabled | drop | given | no\-op | nodata |
|
||||||
nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
nxdomain | passthru | tcp\-only \fIquoted_string\fR ) ] [
|
||||||
recursive\-only \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [
|
recursive\-only \fIboolean\fR ] [ nsip\-enable \fIboolean\fR ] [
|
||||||
nsdname\-enable \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
nsdname\-enable \fIboolean\fR ]; \&.\&.\&. } [ break\-dnssec \fIboolean\fR ] [
|
||||||
max\-policy\-ttl \fIinteger\fR ] [ min\-update\-interval \fIinteger\fR ] [
|
max\-policy\-ttl \fIttlval\fR ] [ min\-update\-interval \fIttlval\fR ] [
|
||||||
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
min\-ns\-dots \fIinteger\fR ] [ nsip\-wait\-recurse \fIboolean\fR ] [
|
||||||
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ] [
|
qname\-wait\-recurse \fIboolean\fR ] [ recursive\-only \fIboolean\fR ] [
|
||||||
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
|
nsip\-enable \fIboolean\fR ] [ nsdname\-enable \fIboolean\fR ] [
|
||||||
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
|
dnsrps\-enable \fIboolean\fR ] [ dnsrps\-options { \fIunspecified\-text\fR
|
||||||
} ];
|
} ];
|
||||||
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
root\-delegation\-only [ exclude { \fIquoted_string\fR; \&.\&.\&. } ];
|
||||||
|
root\-key\-sentinel \fIboolean\fR;
|
||||||
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
rrset\-order { [ class \fIstring\fR ] [ type \fIstring\fR ] [ name
|
||||||
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
|
\fIquoted_string\fR ] \fIstring\fR \fIstring\fR; \&.\&.\&. };
|
||||||
send\-cookie \fIboolean\fR;
|
send\-cookie \fIboolean\fR;
|
||||||
@@ -847,6 +852,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
dialup ( notify | notify\-passive | passive | refresh |
|
dialup ( notify | notify\-passive | passive | refresh |
|
||||||
\fIboolean\fR );
|
\fIboolean\fR );
|
||||||
dlz \fIstring\fR;
|
dlz \fIstring\fR;
|
||||||
|
dnskey\-sig\-validity \fIinteger\fR;
|
||||||
dnssec\-dnskey\-kskonly \fIboolean\fR;
|
dnssec\-dnskey\-kskonly \fIboolean\fR;
|
||||||
dnssec\-loadkeys\-interval \fIinteger\fR;
|
dnssec\-loadkeys\-interval \fIinteger\fR;
|
||||||
dnssec\-secure\-to\-insecure \fIboolean\fR;
|
dnssec\-secure\-to\-insecure \fIboolean\fR;
|
||||||
@@ -878,6 +884,7 @@ view \fIstring\fR [ \fIclass\fR ] {
|
|||||||
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
||||||
min\-refresh\-time \fIinteger\fR;
|
min\-refresh\-time \fIinteger\fR;
|
||||||
min\-retry\-time \fIinteger\fR;
|
min\-retry\-time \fIinteger\fR;
|
||||||
|
mirror \fIboolean\fR;
|
||||||
multi\-master \fIboolean\fR;
|
multi\-master \fIboolean\fR;
|
||||||
notify ( explicit | master\-only | \fIboolean\fR );
|
notify ( explicit | master\-only | \fIboolean\fR );
|
||||||
notify\-delay \fIinteger\fR;
|
notify\-delay \fIinteger\fR;
|
||||||
@@ -957,6 +964,7 @@ zone \fIstring\fR [ \fIclass\fR ] {
|
|||||||
delegation\-only \fIboolean\fR;
|
delegation\-only \fIboolean\fR;
|
||||||
dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR );
|
dialup ( notify | notify\-passive | passive | refresh | \fIboolean\fR );
|
||||||
dlz \fIstring\fR;
|
dlz \fIstring\fR;
|
||||||
|
dnskey\-sig\-validity \fIinteger\fR;
|
||||||
dnssec\-dnskey\-kskonly \fIboolean\fR;
|
dnssec\-dnskey\-kskonly \fIboolean\fR;
|
||||||
dnssec\-loadkeys\-interval \fIinteger\fR;
|
dnssec\-loadkeys\-interval \fIinteger\fR;
|
||||||
dnssec\-secure\-to\-insecure \fIboolean\fR;
|
dnssec\-secure\-to\-insecure \fIboolean\fR;
|
||||||
@@ -986,6 +994,7 @@ zone \fIstring\fR [ \fIclass\fR ] {
|
|||||||
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
max\-zone\-ttl ( unlimited | \fIttlval\fR );
|
||||||
min\-refresh\-time \fIinteger\fR;
|
min\-refresh\-time \fIinteger\fR;
|
||||||
min\-retry\-time \fIinteger\fR;
|
min\-retry\-time \fIinteger\fR;
|
||||||
|
mirror \fIboolean\fR;
|
||||||
multi\-master \fIboolean\fR;
|
multi\-master \fIboolean\fR;
|
||||||
notify ( explicit | master\-only | \fIboolean\fR );
|
notify ( explicit | master\-only | \fIboolean\fR );
|
||||||
notify\-delay \fIinteger\fR;
|
notify\-delay \fIinteger\fR;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
|
<refentry xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="man.named.conf">
|
||||||
<info>
|
<info>
|
||||||
<date>2018-01-22</date>
|
<date>2018-05-29</date>
|
||||||
</info>
|
</info>
|
||||||
<refentryinfo>
|
<refentryinfo>
|
||||||
<corpname>ISC</corpname>
|
<corpname>ISC</corpname>
|
||||||
@@ -205,7 +205,7 @@ options {
|
|||||||
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
|
<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
|
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||||
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
||||||
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
|
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ]; ... };
|
||||||
check-dup-records ( fail | warn | ignore );
|
check-dup-records ( fail | warn | ignore );
|
||||||
check-integrity <replaceable>boolean</replaceable>;
|
check-integrity <replaceable>boolean</replaceable>;
|
||||||
check-mx ( fail | warn | ignore );
|
check-mx ( fail | warn | ignore );
|
||||||
@@ -244,6 +244,7 @@ options {
|
|||||||
};
|
};
|
||||||
dns64-contact <replaceable>string</replaceable>;
|
dns64-contact <replaceable>string</replaceable>;
|
||||||
dns64-server <replaceable>string</replaceable>;
|
dns64-server <replaceable>string</replaceable>;
|
||||||
|
dnskey-sig-validity <replaceable>integer</replaceable>;
|
||||||
dnsrps-enable <replaceable>boolean</replaceable>;
|
dnsrps-enable <replaceable>boolean</replaceable>;
|
||||||
dnsrps-options { <replaceable>unspecified-text</replaceable> };
|
dnsrps-options { <replaceable>unspecified-text</replaceable> };
|
||||||
dnssec-accept-expired <replaceable>boolean</replaceable>;
|
dnssec-accept-expired <replaceable>boolean</replaceable>;
|
||||||
@@ -292,14 +293,13 @@ options {
|
|||||||
fstrm-set-output-notify-threshold <replaceable>integer</replaceable>;
|
fstrm-set-output-notify-threshold <replaceable>integer</replaceable>;
|
||||||
fstrm-set-output-queue-model ( mpsc | spsc );
|
fstrm-set-output-queue-model ( mpsc | spsc );
|
||||||
fstrm-set-output-queue-size <replaceable>integer</replaceable>;
|
fstrm-set-output-queue-size <replaceable>integer</replaceable>;
|
||||||
fstrm-set-reopen-interval <replaceable>integer</replaceable>;
|
fstrm-set-reopen-interval <replaceable>ttlval</replaceable>;
|
||||||
geoip-directory ( <replaceable>quoted_string</replaceable> | none );
|
geoip-directory ( <replaceable>quoted_string</replaceable> | none );
|
||||||
geoip-use-ecs <replaceable>boolean</replaceable>;
|
|
||||||
glue-cache <replaceable>boolean</replaceable>;
|
glue-cache <replaceable>boolean</replaceable>;
|
||||||
heartbeat-interval <replaceable>integer</replaceable>;
|
heartbeat-interval <replaceable>integer</replaceable>;
|
||||||
hostname ( <replaceable>quoted_string</replaceable> | none );
|
hostname ( <replaceable>quoted_string</replaceable> | none );
|
||||||
inline-signing <replaceable>boolean</replaceable>;
|
inline-signing <replaceable>boolean</replaceable>;
|
||||||
interface-interval <replaceable>integer</replaceable>;
|
interface-interval <replaceable>ttlval</replaceable>;
|
||||||
ixfr-from-differences ( primary | master | secondary | slave |
|
ixfr-from-differences ( primary | master | secondary | slave |
|
||||||
<replaceable>boolean</replaceable> );
|
<replaceable>boolean</replaceable> );
|
||||||
keep-response-order { <replaceable>address_match_element</replaceable>; ... };
|
keep-response-order { <replaceable>address_match_element</replaceable>; ... };
|
||||||
@@ -318,10 +318,10 @@ options {
|
|||||||
masterfile-style ( full | relative );
|
masterfile-style ( full | relative );
|
||||||
match-mapped-addresses <replaceable>boolean</replaceable>;
|
match-mapped-addresses <replaceable>boolean</replaceable>;
|
||||||
max-cache-size ( default | unlimited | <replaceable>sizeval</replaceable> | <replaceable>percentage</replaceable> );
|
max-cache-size ( default | unlimited | <replaceable>sizeval</replaceable> | <replaceable>percentage</replaceable> );
|
||||||
max-cache-ttl <replaceable>integer</replaceable>;
|
max-cache-ttl <replaceable>ttlval</replaceable>;
|
||||||
max-clients-per-query <replaceable>integer</replaceable>;
|
max-clients-per-query <replaceable>integer</replaceable>;
|
||||||
max-journal-size ( default | unlimited | <replaceable>sizeval</replaceable> );
|
max-journal-size ( default | unlimited | <replaceable>sizeval</replaceable> );
|
||||||
max-ncache-ttl <replaceable>integer</replaceable>;
|
max-ncache-ttl <replaceable>ttlval</replaceable>;
|
||||||
max-records <replaceable>integer</replaceable>;
|
max-records <replaceable>integer</replaceable>;
|
||||||
max-recursion-depth <replaceable>integer</replaceable>;
|
max-recursion-depth <replaceable>integer</replaceable>;
|
||||||
max-recursion-queries <replaceable>integer</replaceable>;
|
max-recursion-queries <replaceable>integer</replaceable>;
|
||||||
@@ -362,6 +362,7 @@ options {
|
|||||||
preferred-glue <replaceable>string</replaceable>;
|
preferred-glue <replaceable>string</replaceable>;
|
||||||
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
|
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
|
||||||
provide-ixfr <replaceable>boolean</replaceable>;
|
provide-ixfr <replaceable>boolean</replaceable>;
|
||||||
|
qname-minimization ( strict | relaxed | disabled );
|
||||||
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
|
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
|
||||||
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
|
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
|
||||||
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
|
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
|
||||||
@@ -401,18 +402,19 @@ options {
|
|||||||
response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
|
response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
|
||||||
<replaceable>integer</replaceable>;
|
<replaceable>integer</replaceable>;
|
||||||
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
||||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ] [
|
max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [
|
||||||
policy ( cname | disabled | drop | given | no-op | nodata |
|
policy ( cname | disabled | drop | given | no-op | nodata |
|
||||||
nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
||||||
recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
|
recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
|
||||||
nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
||||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ] [
|
max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [
|
||||||
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
||||||
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ] [
|
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ] [
|
||||||
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
|
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
|
||||||
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
|
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
|
||||||
} ];
|
} ];
|
||||||
root-delegation-only [ exclude { <replaceable>quoted_string</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
|
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
|
||||||
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
|
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
|
||||||
secroots-file <replaceable>quoted_string</replaceable>;
|
secroots-file <replaceable>quoted_string</replaceable>;
|
||||||
@@ -557,7 +559,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
<replaceable>integer</replaceable> ] [ dscp <replaceable>integer</replaceable> ] { ( <replaceable>masters</replaceable> | <replaceable>ipv4_address</replaceable> [
|
<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
|
port <replaceable>integer</replaceable> ] | <replaceable>ipv6_address</replaceable> [ port <replaceable>integer</replaceable> ] ) [ key
|
||||||
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
<replaceable>string</replaceable> ]; ... } ] [ zone-directory <replaceable>quoted_string</replaceable> ] [
|
||||||
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ]; ... };
|
in-memory <replaceable>boolean</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ]; ... };
|
||||||
check-dup-records ( fail | warn | ignore );
|
check-dup-records ( fail | warn | ignore );
|
||||||
check-integrity <replaceable>boolean</replaceable>;
|
check-integrity <replaceable>boolean</replaceable>;
|
||||||
check-mx ( fail | warn | ignore );
|
check-mx ( fail | warn | ignore );
|
||||||
@@ -595,6 +597,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
};
|
};
|
||||||
dns64-contact <replaceable>string</replaceable>;
|
dns64-contact <replaceable>string</replaceable>;
|
||||||
dns64-server <replaceable>string</replaceable>;
|
dns64-server <replaceable>string</replaceable>;
|
||||||
|
dnskey-sig-validity <replaceable>integer</replaceable>;
|
||||||
dnsrps-enable <replaceable>boolean</replaceable>;
|
dnsrps-enable <replaceable>boolean</replaceable>;
|
||||||
dnsrps-options { <replaceable>unspecified-text</replaceable> };
|
dnsrps-options { <replaceable>unspecified-text</replaceable> };
|
||||||
dnssec-accept-expired <replaceable>boolean</replaceable>;
|
dnssec-accept-expired <replaceable>boolean</replaceable>;
|
||||||
@@ -648,10 +651,10 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
match-destinations { <replaceable>address_match_element</replaceable>; ... };
|
match-destinations { <replaceable>address_match_element</replaceable>; ... };
|
||||||
match-recursive-only <replaceable>boolean</replaceable>;
|
match-recursive-only <replaceable>boolean</replaceable>;
|
||||||
max-cache-size ( default | unlimited | <replaceable>sizeval</replaceable> | <replaceable>percentage</replaceable> );
|
max-cache-size ( default | unlimited | <replaceable>sizeval</replaceable> | <replaceable>percentage</replaceable> );
|
||||||
max-cache-ttl <replaceable>integer</replaceable>;
|
max-cache-ttl <replaceable>ttlval</replaceable>;
|
||||||
max-clients-per-query <replaceable>integer</replaceable>;
|
max-clients-per-query <replaceable>integer</replaceable>;
|
||||||
max-journal-size ( default | unlimited | <replaceable>sizeval</replaceable> );
|
max-journal-size ( default | unlimited | <replaceable>sizeval</replaceable> );
|
||||||
max-ncache-ttl <replaceable>integer</replaceable>;
|
max-ncache-ttl <replaceable>ttlval</replaceable>;
|
||||||
max-records <replaceable>integer</replaceable>;
|
max-records <replaceable>integer</replaceable>;
|
||||||
max-recursion-depth <replaceable>integer</replaceable>;
|
max-recursion-depth <replaceable>integer</replaceable>;
|
||||||
max-recursion-queries <replaceable>integer</replaceable>;
|
max-recursion-queries <replaceable>integer</replaceable>;
|
||||||
@@ -686,6 +689,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
preferred-glue <replaceable>string</replaceable>;
|
preferred-glue <replaceable>string</replaceable>;
|
||||||
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
|
prefetch <replaceable>integer</replaceable> [ <replaceable>integer</replaceable> ];
|
||||||
provide-ixfr <replaceable>boolean</replaceable>;
|
provide-ixfr <replaceable>boolean</replaceable>;
|
||||||
|
qname-minimization ( strict | relaxed | disabled );
|
||||||
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
|
query-source ( ( [ address ] ( <replaceable>ipv4_address</replaceable> | * ) [ port (
|
||||||
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
|
<replaceable>integer</replaceable> | * ) ] ) | ( [ [ address ] ( <replaceable>ipv4_address</replaceable> | * ) ]
|
||||||
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
|
port ( <replaceable>integer</replaceable> | * ) ) ) [ dscp <replaceable>integer</replaceable> ];
|
||||||
@@ -720,18 +724,19 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
|
response-padding { <replaceable>address_match_element</replaceable>; ... } block-size
|
||||||
<replaceable>integer</replaceable>;
|
<replaceable>integer</replaceable>;
|
||||||
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
response-policy { zone <replaceable>quoted_string</replaceable> [ log <replaceable>boolean</replaceable> ] [
|
||||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ] [
|
max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [
|
||||||
policy ( cname | disabled | drop | given | no-op | nodata |
|
policy ( cname | disabled | drop | given | no-op | nodata |
|
||||||
nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
nxdomain | passthru | tcp-only <replaceable>quoted_string</replaceable> ) ] [
|
||||||
recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
|
recursive-only <replaceable>boolean</replaceable> ] [ nsip-enable <replaceable>boolean</replaceable> ] [
|
||||||
nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
nsdname-enable <replaceable>boolean</replaceable> ]; ... } [ break-dnssec <replaceable>boolean</replaceable> ] [
|
||||||
max-policy-ttl <replaceable>integer</replaceable> ] [ min-update-interval <replaceable>integer</replaceable> ] [
|
max-policy-ttl <replaceable>ttlval</replaceable> ] [ min-update-interval <replaceable>ttlval</replaceable> ] [
|
||||||
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
min-ns-dots <replaceable>integer</replaceable> ] [ nsip-wait-recurse <replaceable>boolean</replaceable> ] [
|
||||||
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ] [
|
qname-wait-recurse <replaceable>boolean</replaceable> ] [ recursive-only <replaceable>boolean</replaceable> ] [
|
||||||
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
|
nsip-enable <replaceable>boolean</replaceable> ] [ nsdname-enable <replaceable>boolean</replaceable> ] [
|
||||||
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
|
dnsrps-enable <replaceable>boolean</replaceable> ] [ dnsrps-options { <replaceable>unspecified-text</replaceable>
|
||||||
} ];
|
} ];
|
||||||
root-delegation-only [ exclude { <replaceable>quoted_string</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
|
rrset-order { [ class <replaceable>string</replaceable> ] [ type <replaceable>string</replaceable> ] [ name
|
||||||
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
|
<replaceable>quoted_string</replaceable> ] <replaceable>string</replaceable> <replaceable>string</replaceable>; ... };
|
||||||
send-cookie <replaceable>boolean</replaceable>;
|
send-cookie <replaceable>boolean</replaceable>;
|
||||||
@@ -824,6 +829,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
dialup ( notify | notify-passive | passive | refresh |
|
dialup ( notify | notify-passive | passive | refresh |
|
||||||
<replaceable>boolean</replaceable> );
|
<replaceable>boolean</replaceable> );
|
||||||
dlz <replaceable>string</replaceable>;
|
dlz <replaceable>string</replaceable>;
|
||||||
|
dnskey-sig-validity <replaceable>integer</replaceable>;
|
||||||
dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
|
dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
|
||||||
dnssec-loadkeys-interval <replaceable>integer</replaceable>;
|
dnssec-loadkeys-interval <replaceable>integer</replaceable>;
|
||||||
dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
|
dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
|
||||||
@@ -855,6 +861,7 @@ view <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
||||||
min-refresh-time <replaceable>integer</replaceable>;
|
min-refresh-time <replaceable>integer</replaceable>;
|
||||||
min-retry-time <replaceable>integer</replaceable>;
|
min-retry-time <replaceable>integer</replaceable>;
|
||||||
|
mirror <replaceable>boolean</replaceable>;
|
||||||
multi-master <replaceable>boolean</replaceable>;
|
multi-master <replaceable>boolean</replaceable>;
|
||||||
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
||||||
notify-delay <replaceable>integer</replaceable>;
|
notify-delay <replaceable>integer</replaceable>;
|
||||||
@@ -930,6 +937,7 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
delegation-only <replaceable>boolean</replaceable>;
|
delegation-only <replaceable>boolean</replaceable>;
|
||||||
dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> );
|
dialup ( notify | notify-passive | passive | refresh | <replaceable>boolean</replaceable> );
|
||||||
dlz <replaceable>string</replaceable>;
|
dlz <replaceable>string</replaceable>;
|
||||||
|
dnskey-sig-validity <replaceable>integer</replaceable>;
|
||||||
dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
|
dnssec-dnskey-kskonly <replaceable>boolean</replaceable>;
|
||||||
dnssec-loadkeys-interval <replaceable>integer</replaceable>;
|
dnssec-loadkeys-interval <replaceable>integer</replaceable>;
|
||||||
dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
|
dnssec-secure-to-insecure <replaceable>boolean</replaceable>;
|
||||||
@@ -959,6 +967,7 @@ zone <replaceable>string</replaceable> [ <replaceable>class</replaceable> ] {
|
|||||||
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
max-zone-ttl ( unlimited | <replaceable>ttlval</replaceable> );
|
||||||
min-refresh-time <replaceable>integer</replaceable>;
|
min-refresh-time <replaceable>integer</replaceable>;
|
||||||
min-retry-time <replaceable>integer</replaceable>;
|
min-retry-time <replaceable>integer</replaceable>;
|
||||||
|
mirror <replaceable>boolean</replaceable>;
|
||||||
multi-master <replaceable>boolean</replaceable>;
|
multi-master <replaceable>boolean</replaceable>;
|
||||||
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
notify ( explicit | master-only | <replaceable>boolean</replaceable> );
|
||||||
notify-delay <replaceable>integer</replaceable>;
|
notify-delay <replaceable>integer</replaceable>;
|
||||||
|
|||||||
+22
-13
@@ -193,7 +193,7 @@ options
|
|||||||
<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>
|
<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>
|
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>
|
||||||
<em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<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>
|
in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ]; ... };<br>
|
||||||
check-dup-records ( fail | warn | ignore );<br>
|
check-dup-records ( fail | warn | ignore );<br>
|
||||||
check-integrity <em class="replaceable"><code>boolean</code></em>;<br>
|
check-integrity <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
check-mx ( fail | warn | ignore );<br>
|
check-mx ( fail | warn | ignore );<br>
|
||||||
@@ -232,6 +232,7 @@ options
|
|||||||
};<br>
|
};<br>
|
||||||
dns64-contact <em class="replaceable"><code>string</code></em>;<br>
|
dns64-contact <em class="replaceable"><code>string</code></em>;<br>
|
||||||
dns64-server <em class="replaceable"><code>string</code></em>;<br>
|
dns64-server <em class="replaceable"><code>string</code></em>;<br>
|
||||||
|
dnskey-sig-validity <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnsrps-enable <em class="replaceable"><code>boolean</code></em>;<br>
|
dnsrps-enable <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em> };<br>
|
dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em> };<br>
|
||||||
dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
@@ -280,14 +281,13 @@ options
|
|||||||
fstrm-set-output-notify-threshold <em class="replaceable"><code>integer</code></em>;<br>
|
fstrm-set-output-notify-threshold <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
fstrm-set-output-queue-model ( mpsc | spsc );<br>
|
fstrm-set-output-queue-model ( mpsc | spsc );<br>
|
||||||
fstrm-set-output-queue-size <em class="replaceable"><code>integer</code></em>;<br>
|
fstrm-set-output-queue-size <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
fstrm-set-reopen-interval <em class="replaceable"><code>integer</code></em>;<br>
|
fstrm-set-reopen-interval <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
geoip-directory ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
|
geoip-directory ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
|
||||||
geoip-use-ecs <em class="replaceable"><code>boolean</code></em>;<br>
|
|
||||||
glue-cache <em class="replaceable"><code>boolean</code></em>;<br>
|
glue-cache <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
heartbeat-interval <em class="replaceable"><code>integer</code></em>;<br>
|
heartbeat-interval <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
hostname ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
|
hostname ( <em class="replaceable"><code>quoted_string</code></em> | none );<br>
|
||||||
inline-signing <em class="replaceable"><code>boolean</code></em>;<br>
|
inline-signing <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
interface-interval <em class="replaceable"><code>integer</code></em>;<br>
|
interface-interval <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
ixfr-from-differences ( primary | master | secondary | slave |<br>
|
ixfr-from-differences ( primary | master | secondary | slave |<br>
|
||||||
<em class="replaceable"><code>boolean</code></em> );<br>
|
<em class="replaceable"><code>boolean</code></em> );<br>
|
||||||
keep-response-order { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
keep-response-order { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
||||||
@@ -306,10 +306,10 @@ options
|
|||||||
masterfile-style ( full | relative );<br>
|
masterfile-style ( full | relative );<br>
|
||||||
match-mapped-addresses <em class="replaceable"><code>boolean</code></em>;<br>
|
match-mapped-addresses <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
max-cache-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> | <em class="replaceable"><code>percentage</code></em> );<br>
|
max-cache-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> | <em class="replaceable"><code>percentage</code></em> );<br>
|
||||||
max-cache-ttl <em class="replaceable"><code>integer</code></em>;<br>
|
max-cache-ttl <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
max-clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
|
max-clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-journal-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
max-journal-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
||||||
max-ncache-ttl <em class="replaceable"><code>integer</code></em>;<br>
|
max-ncache-ttl <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
max-records <em class="replaceable"><code>integer</code></em>;<br>
|
max-records <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-recursion-depth <em class="replaceable"><code>integer</code></em>;<br>
|
max-recursion-depth <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-recursion-queries <em class="replaceable"><code>integer</code></em>;<br>
|
max-recursion-queries <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
@@ -350,6 +350,7 @@ options
|
|||||||
preferred-glue <em class="replaceable"><code>string</code></em>;<br>
|
preferred-glue <em class="replaceable"><code>string</code></em>;<br>
|
||||||
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
|
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
|
||||||
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
|
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
|
qname-minimization ( strict | relaxed | disabled );<br>
|
||||||
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
|
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
|
||||||
<em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
|
<em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
|
||||||
port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
||||||
@@ -389,18 +390,19 @@ options
|
|||||||
response-padding { <em class="replaceable"><code>address_match_element</code></em>; ... } block-size<br>
|
response-padding { <em class="replaceable"><code>address_match_element</code></em>; ... } block-size<br>
|
||||||
<em class="replaceable"><code>integer</code></em>;<br>
|
<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>
|
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> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ] [<br>
|
max-policy-ttl <em class="replaceable"><code>ttlval</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ] [<br>
|
||||||
policy ( cname | disabled | drop | given | no-op | nodata |<br>
|
policy ( cname | disabled | drop | given | no-op | nodata |<br>
|
||||||
nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
||||||
recursive-only <em class="replaceable"><code>boolean</code></em> ] [ nsip-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
recursive-only <em class="replaceable"><code>boolean</code></em> ] [ nsip-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
nsdname-enable <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
|
nsdname-enable <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-update-interval <em class="replaceable"><code>integer</code></em> ] [<br>
|
max-policy-ttl <em class="replaceable"><code>ttlval</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ] [<br>
|
||||||
min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</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>
|
qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
|
dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
|
||||||
} ];<br>
|
} ];<br>
|
||||||
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</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>
|
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
|
||||||
<em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
|
<em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
|
||||||
secroots-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
secroots-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||||
@@ -549,7 +551,7 @@ view
|
|||||||
<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>
|
<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>
|
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>
|
||||||
<em class="replaceable"><code>string</code></em> ]; ... } ] [ zone-directory <em class="replaceable"><code>quoted_string</code></em> ] [<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>
|
in-memory <em class="replaceable"><code>boolean</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ]; ... };<br>
|
||||||
check-dup-records ( fail | warn | ignore );<br>
|
check-dup-records ( fail | warn | ignore );<br>
|
||||||
check-integrity <em class="replaceable"><code>boolean</code></em>;<br>
|
check-integrity <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
check-mx ( fail | warn | ignore );<br>
|
check-mx ( fail | warn | ignore );<br>
|
||||||
@@ -587,6 +589,7 @@ view
|
|||||||
};<br>
|
};<br>
|
||||||
dns64-contact <em class="replaceable"><code>string</code></em>;<br>
|
dns64-contact <em class="replaceable"><code>string</code></em>;<br>
|
||||||
dns64-server <em class="replaceable"><code>string</code></em>;<br>
|
dns64-server <em class="replaceable"><code>string</code></em>;<br>
|
||||||
|
dnskey-sig-validity <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnsrps-enable <em class="replaceable"><code>boolean</code></em>;<br>
|
dnsrps-enable <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em> };<br>
|
dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em> };<br>
|
||||||
dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
@@ -640,10 +643,10 @@ view
|
|||||||
match-destinations { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
match-destinations { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
||||||
match-recursive-only <em class="replaceable"><code>boolean</code></em>;<br>
|
match-recursive-only <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
max-cache-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> | <em class="replaceable"><code>percentage</code></em> );<br>
|
max-cache-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> | <em class="replaceable"><code>percentage</code></em> );<br>
|
||||||
max-cache-ttl <em class="replaceable"><code>integer</code></em>;<br>
|
max-cache-ttl <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
max-clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
|
max-clients-per-query <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-journal-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
max-journal-size ( default | unlimited | <em class="replaceable"><code>sizeval</code></em> );<br>
|
||||||
max-ncache-ttl <em class="replaceable"><code>integer</code></em>;<br>
|
max-ncache-ttl <em class="replaceable"><code>ttlval</code></em>;<br>
|
||||||
max-records <em class="replaceable"><code>integer</code></em>;<br>
|
max-records <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-recursion-depth <em class="replaceable"><code>integer</code></em>;<br>
|
max-recursion-depth <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
max-recursion-queries <em class="replaceable"><code>integer</code></em>;<br>
|
max-recursion-queries <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
@@ -678,6 +681,7 @@ view
|
|||||||
preferred-glue <em class="replaceable"><code>string</code></em>;<br>
|
preferred-glue <em class="replaceable"><code>string</code></em>;<br>
|
||||||
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
|
prefetch <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ];<br>
|
||||||
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
|
provide-ixfr <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
|
qname-minimization ( strict | relaxed | disabled );<br>
|
||||||
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
|
query-source ( ( [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) [ port (<br>
|
||||||
<em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
|
<em class="replaceable"><code>integer</code></em> | * ) ] ) | ( [ [ address ] ( <em class="replaceable"><code>ipv4_address</code></em> | * ) ]<br>
|
||||||
port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
port ( <em class="replaceable"><code>integer</code></em> | * ) ) ) [ dscp <em class="replaceable"><code>integer</code></em> ];<br>
|
||||||
@@ -712,18 +716,19 @@ view
|
|||||||
response-padding { <em class="replaceable"><code>address_match_element</code></em>; ... } block-size<br>
|
response-padding { <em class="replaceable"><code>address_match_element</code></em>; ... } block-size<br>
|
||||||
<em class="replaceable"><code>integer</code></em>;<br>
|
<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>
|
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> ] [ min-update-interval <em class="replaceable"><code>integer</code></em> ] [<br>
|
max-policy-ttl <em class="replaceable"><code>ttlval</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ] [<br>
|
||||||
policy ( cname | disabled | drop | given | no-op | nodata |<br>
|
policy ( cname | disabled | drop | given | no-op | nodata |<br>
|
||||||
nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
nxdomain | passthru | tcp-only <em class="replaceable"><code>quoted_string</code></em> ) ] [<br>
|
||||||
recursive-only <em class="replaceable"><code>boolean</code></em> ] [ nsip-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
recursive-only <em class="replaceable"><code>boolean</code></em> ] [ nsip-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
nsdname-enable <em class="replaceable"><code>boolean</code></em> ]; ... } [ break-dnssec <em class="replaceable"><code>boolean</code></em> ] [<br>
|
nsdname-enable <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-update-interval <em class="replaceable"><code>integer</code></em> ] [<br>
|
max-policy-ttl <em class="replaceable"><code>ttlval</code></em> ] [ min-update-interval <em class="replaceable"><code>ttlval</code></em> ] [<br>
|
||||||
min-ns-dots <em class="replaceable"><code>integer</code></em> ] [ nsip-wait-recurse <em class="replaceable"><code>boolean</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>
|
qname-wait-recurse <em class="replaceable"><code>boolean</code></em> ] [ recursive-only <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
nsip-enable <em class="replaceable"><code>boolean</code></em> ] [ nsdname-enable <em class="replaceable"><code>boolean</code></em> ] [<br>
|
||||||
dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
|
dnsrps-enable <em class="replaceable"><code>boolean</code></em> ] [ dnsrps-options { <em class="replaceable"><code>unspecified-text</code></em><br>
|
||||||
} ];<br>
|
} ];<br>
|
||||||
root-delegation-only [ exclude { <em class="replaceable"><code>quoted_string</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>
|
rrset-order { [ class <em class="replaceable"><code>string</code></em> ] [ type <em class="replaceable"><code>string</code></em> ] [ name<br>
|
||||||
<em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
|
<em class="replaceable"><code>quoted_string</code></em> ] <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>string</code></em>; ... };<br>
|
||||||
send-cookie <em class="replaceable"><code>boolean</code></em>;<br>
|
send-cookie <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
@@ -816,6 +821,7 @@ view
|
|||||||
dialup ( notify | notify-passive | passive | refresh |<br>
|
dialup ( notify | notify-passive | passive | refresh |<br>
|
||||||
<em class="replaceable"><code>boolean</code></em> );<br>
|
<em class="replaceable"><code>boolean</code></em> );<br>
|
||||||
dlz <em class="replaceable"><code>string</code></em>;<br>
|
dlz <em class="replaceable"><code>string</code></em>;<br>
|
||||||
|
dnskey-sig-validity <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnssec-dnskey-kskonly <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-dnskey-kskonly <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
dnssec-loadkeys-interval <em class="replaceable"><code>integer</code></em>;<br>
|
dnssec-loadkeys-interval <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
@@ -847,6 +853,7 @@ view
|
|||||||
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
||||||
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
|
mirror <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
||||||
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
@@ -923,6 +930,7 @@ zone
|
|||||||
delegation-only <em class="replaceable"><code>boolean</code></em>;<br>
|
delegation-only <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br>
|
dialup ( notify | notify-passive | passive | refresh | <em class="replaceable"><code>boolean</code></em> );<br>
|
||||||
dlz <em class="replaceable"><code>string</code></em>;<br>
|
dlz <em class="replaceable"><code>string</code></em>;<br>
|
||||||
|
dnskey-sig-validity <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnssec-dnskey-kskonly <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-dnskey-kskonly <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
dnssec-loadkeys-interval <em class="replaceable"><code>integer</code></em>;<br>
|
dnssec-loadkeys-interval <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
|
dnssec-secure-to-insecure <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
@@ -952,6 +960,7 @@ zone
|
|||||||
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
max-zone-ttl ( unlimited | <em class="replaceable"><code>ttlval</code></em> );<br>
|
||||||
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
min-refresh-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
min-retry-time <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
|
mirror <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
multi-master <em class="replaceable"><code>boolean</code></em>;<br>
|
||||||
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
notify ( explicit | master-only | <em class="replaceable"><code>boolean</code></em> );<br>
|
||||||
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
notify-delay <em class="replaceable"><code>integer</code></em>;<br>
|
||||||
|
|||||||
+667
-574
File diff suppressed because it is too large
Load Diff
+74
-71
@@ -13,6 +13,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/httpd.h>
|
#include <isc/httpd.h>
|
||||||
#include <isc/json.h>
|
#include <isc/json.h>
|
||||||
@@ -67,7 +70,7 @@ stats_dumparg {
|
|||||||
void *arg; /* type dependent argument */
|
void *arg; /* type dependent argument */
|
||||||
int ncounters; /* for general statistics */
|
int ncounters; /* for general statistics */
|
||||||
int *counterindices; /* for general statistics */
|
int *counterindices; /* for general statistics */
|
||||||
isc_uint64_t *countervalues; /* for general statistics */
|
uint64_t *countervalues; /* for general statistics */
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
} stats_dumparg_t;
|
} stats_dumparg_t;
|
||||||
|
|
||||||
@@ -1048,7 +1051,7 @@ init_desc(void) {
|
|||||||
* Dump callback functions.
|
* Dump callback functions.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
generalstat_dump(isc_statscounter_t counter, isc_uint64_t val, void *arg) {
|
generalstat_dump(isc_statscounter_t counter, uint64_t val, void *arg) {
|
||||||
stats_dumparg_t *dumparg = arg;
|
stats_dumparg_t *dumparg = arg;
|
||||||
|
|
||||||
REQUIRE(counter < dumparg->ncounters);
|
REQUIRE(counter < dumparg->ncounters);
|
||||||
@@ -1058,10 +1061,10 @@ generalstat_dump(isc_statscounter_t counter, isc_uint64_t val, void *arg) {
|
|||||||
static isc_result_t
|
static isc_result_t
|
||||||
dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
||||||
const char *category, const char **desc, int ncounters,
|
const char *category, const char **desc, int ncounters,
|
||||||
int *indices, isc_uint64_t *values, int options)
|
int *indices, uint64_t *values, int options)
|
||||||
{
|
{
|
||||||
int i, idx;
|
int i, idx;
|
||||||
isc_uint64_t value;
|
uint64_t value;
|
||||||
stats_dumparg_t dumparg;
|
stats_dumparg_t dumparg;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
@@ -1106,7 +1109,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
|||||||
switch (dumparg.type) {
|
switch (dumparg.type) {
|
||||||
case isc_statsformat_file:
|
case isc_statsformat_file:
|
||||||
fp = arg;
|
fp = arg;
|
||||||
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n",
|
fprintf(fp, "%20" PRIu64 " %s\n",
|
||||||
value, desc[idx]);
|
value, desc[idx]);
|
||||||
break;
|
break;
|
||||||
case isc_statsformat_xml:
|
case isc_statsformat_xml:
|
||||||
@@ -1134,7 +1137,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
|||||||
ISC_XMLCHAR
|
ISC_XMLCHAR
|
||||||
"counter"));
|
"counter"));
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u", value));
|
"%" PRIu64, value));
|
||||||
|
|
||||||
TRY0(xmlTextWriterEndElement(writer));
|
TRY0(xmlTextWriterEndElement(writer));
|
||||||
/* </counter> */
|
/* </counter> */
|
||||||
@@ -1151,7 +1154,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
|||||||
ISC_XMLCHAR
|
ISC_XMLCHAR
|
||||||
desc[idx]));
|
desc[idx]));
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u", value));
|
"%" PRIu64, value));
|
||||||
TRY0(xmlTextWriterEndElement(writer));
|
TRY0(xmlTextWriterEndElement(writer));
|
||||||
/* counter */
|
/* counter */
|
||||||
}
|
}
|
||||||
@@ -1179,7 +1182,7 @@ dump_counters(isc_stats_t *stats, isc_statsformat_t type, void *arg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
rdtypestat_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
|
||||||
char typebuf[64];
|
char typebuf[64];
|
||||||
const char *typestr;
|
const char *typestr;
|
||||||
stats_dumparg_t *dumparg = arg;
|
stats_dumparg_t *dumparg = arg;
|
||||||
@@ -1203,7 +1206,7 @@ rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
switch (dumparg->type) {
|
switch (dumparg->type) {
|
||||||
case isc_statsformat_file:
|
case isc_statsformat_file:
|
||||||
fp = dumparg->arg;
|
fp = dumparg->arg;
|
||||||
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, typestr);
|
fprintf(fp, "%20" PRIu64 " %s\n", val, typestr);
|
||||||
break;
|
break;
|
||||||
case isc_statsformat_xml:
|
case isc_statsformat_xml:
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
@@ -1215,7 +1218,7 @@ rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
ISC_XMLCHAR typestr));
|
ISC_XMLCHAR typestr));
|
||||||
|
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u",
|
"%" PRIu64,
|
||||||
val));
|
val));
|
||||||
|
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* type */
|
TRY0(xmlTextWriterEndElement(writer)); /* type */
|
||||||
@@ -1243,13 +1246,13 @@ rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
rdatasetstats_dump(dns_rdatastatstype_t type, uint64_t val, void *arg) {
|
||||||
stats_dumparg_t *dumparg = arg;
|
stats_dumparg_t *dumparg = arg;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char typebuf[64];
|
char typebuf[64];
|
||||||
const char *typestr;
|
const char *typestr;
|
||||||
isc_boolean_t nxrrset = ISC_FALSE;
|
bool nxrrset = false;
|
||||||
isc_boolean_t stale = ISC_FALSE;
|
bool stale = false;
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
xmlTextWriterPtr writer;
|
xmlTextWriterPtr writer;
|
||||||
int xmlrc;
|
int xmlrc;
|
||||||
@@ -1273,16 +1276,16 @@ rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
|
|
||||||
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXRRSET)
|
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXRRSET)
|
||||||
!= 0)
|
!= 0)
|
||||||
nxrrset = ISC_TRUE;
|
nxrrset = true;
|
||||||
|
|
||||||
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_STALE)
|
if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_STALE)
|
||||||
!= 0)
|
!= 0)
|
||||||
stale = ISC_TRUE;
|
stale = true;
|
||||||
|
|
||||||
switch (dumparg->type) {
|
switch (dumparg->type) {
|
||||||
case isc_statsformat_file:
|
case isc_statsformat_file:
|
||||||
fp = dumparg->arg;
|
fp = dumparg->arg;
|
||||||
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s%s%s\n", val,
|
fprintf(fp, "%20" PRIu64 " %s%s%s\n", val,
|
||||||
stale ? "#" : "", nxrrset ? "!" : "", typestr);
|
stale ? "#" : "", nxrrset ? "!" : "", typestr);
|
||||||
break;
|
break;
|
||||||
case isc_statsformat_xml:
|
case isc_statsformat_xml:
|
||||||
@@ -1298,7 +1301,7 @@ rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
|
|
||||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"));
|
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"));
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u",
|
"%" PRIu64,
|
||||||
val));
|
val));
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
||||||
|
|
||||||
@@ -1329,7 +1332,7 @@ rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) {
|
opcodestat_dump(dns_opcode_t code, uint64_t val, void *arg) {
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
isc_buffer_t b;
|
isc_buffer_t b;
|
||||||
char codebuf[64];
|
char codebuf[64];
|
||||||
@@ -1349,7 +1352,7 @@ opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) {
|
|||||||
switch (dumparg->type) {
|
switch (dumparg->type) {
|
||||||
case isc_statsformat_file:
|
case isc_statsformat_file:
|
||||||
fp = dumparg->arg;
|
fp = dumparg->arg;
|
||||||
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, codebuf);
|
fprintf(fp, "%20" PRIu64 " %s\n", val, codebuf);
|
||||||
break;
|
break;
|
||||||
case isc_statsformat_xml:
|
case isc_statsformat_xml:
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
@@ -1358,7 +1361,7 @@ opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) {
|
|||||||
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
|
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
|
||||||
ISC_XMLCHAR codebuf ));
|
ISC_XMLCHAR codebuf ));
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u",
|
"%" PRIu64,
|
||||||
val));
|
val));
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
||||||
#endif
|
#endif
|
||||||
@@ -1386,7 +1389,7 @@ opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rcodestat_dump(dns_rcode_t code, isc_uint64_t val, void *arg) {
|
rcodestat_dump(dns_rcode_t code, uint64_t val, void *arg) {
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
isc_buffer_t b;
|
isc_buffer_t b;
|
||||||
char codebuf[64];
|
char codebuf[64];
|
||||||
@@ -1406,7 +1409,7 @@ rcodestat_dump(dns_rcode_t code, isc_uint64_t val, void *arg) {
|
|||||||
switch (dumparg->type) {
|
switch (dumparg->type) {
|
||||||
case isc_statsformat_file:
|
case isc_statsformat_file:
|
||||||
fp = dumparg->arg;
|
fp = dumparg->arg;
|
||||||
fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, codebuf);
|
fprintf(fp, "%20" PRIu64 " %s\n", val, codebuf);
|
||||||
break;
|
break;
|
||||||
case isc_statsformat_xml:
|
case isc_statsformat_xml:
|
||||||
#ifdef HAVE_LIBXML2
|
#ifdef HAVE_LIBXML2
|
||||||
@@ -1415,7 +1418,7 @@ rcodestat_dump(dns_rcode_t code, isc_uint64_t val, void *arg) {
|
|||||||
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
|
TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "name",
|
||||||
ISC_XMLCHAR codebuf ));
|
ISC_XMLCHAR codebuf ));
|
||||||
TRY0(xmlTextWriterWriteFormatString(writer,
|
TRY0(xmlTextWriterWriteFormatString(writer,
|
||||||
"%" ISC_PRINT_QUADFORMAT "u",
|
"%" PRIu64,
|
||||||
val));
|
val));
|
||||||
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
TRY0(xmlTextWriterEndElement(writer)); /* counter */
|
||||||
#endif
|
#endif
|
||||||
@@ -1460,7 +1463,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
char buf[1024 + 32]; /* sufficiently large for zone name and class */
|
char buf[1024 + 32]; /* sufficiently large for zone name and class */
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_uint32_t serial;
|
uint32_t serial;
|
||||||
xmlTextWriterPtr writer = arg;
|
xmlTextWriterPtr writer = arg;
|
||||||
dns_zonestat_level_t statlevel;
|
dns_zonestat_level_t statlevel;
|
||||||
int xmlrc;
|
int xmlrc;
|
||||||
@@ -1504,8 +1507,8 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
|
|||||||
isc_stats_t *zonestats;
|
isc_stats_t *zonestats;
|
||||||
isc_stats_t *gluecachestats;
|
isc_stats_t *gluecachestats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
isc_uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
||||||
|
|
||||||
zonestats = dns_zone_getrequeststats(zone);
|
zonestats = dns_zone_getrequeststats(zone);
|
||||||
if (zonestats != NULL) {
|
if (zonestats != NULL) {
|
||||||
@@ -1578,7 +1581,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
generatexml(named_server_t *server, isc_uint32_t flags,
|
generatexml(named_server_t *server, uint32_t flags,
|
||||||
int *buflen, xmlChar **buf)
|
int *buflen, xmlChar **buf)
|
||||||
{
|
{
|
||||||
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
|
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
|
||||||
@@ -1591,17 +1594,17 @@ generatexml(named_server_t *server, isc_uint32_t flags,
|
|||||||
dns_view_t *view;
|
dns_view_t *view;
|
||||||
stats_dumparg_t dumparg;
|
stats_dumparg_t dumparg;
|
||||||
dns_stats_t *cacherrstats;
|
dns_stats_t *cacherrstats;
|
||||||
isc_uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
isc_uint64_t resstat_values[dns_resstatscounter_max];
|
uint64_t resstat_values[dns_resstatscounter_max];
|
||||||
isc_uint64_t adbstat_values[dns_adbstats_max];
|
uint64_t adbstat_values[dns_adbstats_max];
|
||||||
isc_uint64_t zonestat_values[dns_zonestatscounter_max];
|
uint64_t zonestat_values[dns_zonestatscounter_max];
|
||||||
isc_uint64_t sockstat_values[isc_sockstatscounter_max];
|
uint64_t sockstat_values[isc_sockstatscounter_max];
|
||||||
isc_uint64_t udpinsizestat_values[dns_sizecounter_in_max];
|
uint64_t udpinsizestat_values[dns_sizecounter_in_max];
|
||||||
isc_uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
|
uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
|
||||||
isc_uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
|
uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
|
||||||
isc_uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
|
uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
|
||||||
#ifdef HAVE_DNSTAP
|
#ifdef HAVE_DNSTAP
|
||||||
isc_uint64_t dnstapstat_values[dns_dnstapcounter_max];
|
uint64_t dnstapstat_values[dns_dnstapcounter_max];
|
||||||
#endif
|
#endif
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
|
|
||||||
@@ -1915,7 +1918,7 @@ generatexml(named_server_t *server, isc_uint32_t flags,
|
|||||||
if ((flags & STATS_XML_ZONES) != 0) {
|
if ((flags & STATS_XML_ZONES) != 0) {
|
||||||
TRY0(xmlTextWriterStartElement(writer,
|
TRY0(xmlTextWriterStartElement(writer,
|
||||||
ISC_XMLCHAR "zones"));
|
ISC_XMLCHAR "zones"));
|
||||||
result = dns_zt_apply(view->zonetable, ISC_TRUE,
|
result = dns_zt_apply(view->zonetable, true,
|
||||||
NULL, zone_xmlrender, writer);
|
NULL, zone_xmlrender, writer);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -2053,7 +2056,7 @@ wrap_xmlfree(isc_buffer_t *buffer, void *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
render_xml(isc_uint32_t flags, const char *url, isc_httpdurl_t *urlinfo,
|
render_xml(uint32_t flags, const char *url, isc_httpdurl_t *urlinfo,
|
||||||
const char *querystring, const char *headers, void *arg,
|
const char *querystring, const char *headers, void *arg,
|
||||||
unsigned int *retcode, const char **retmsg,
|
unsigned int *retcode, const char **retmsg,
|
||||||
const char **mimetype, isc_buffer_t *b,
|
const char **mimetype, isc_buffer_t *b,
|
||||||
@@ -2228,7 +2231,7 @@ wrap_jsonfree(isc_buffer_t *buffer, void *arg) {
|
|||||||
|
|
||||||
static json_object *
|
static json_object *
|
||||||
addzone(char *name, char *classname, const char *ztype,
|
addzone(char *name, char *classname, const char *ztype,
|
||||||
isc_uint32_t serial, isc_boolean_t add_serial)
|
uint32_t serial, bool add_serial)
|
||||||
{
|
{
|
||||||
json_object *node = json_object_new_object();
|
json_object *node = json_object_new_object();
|
||||||
|
|
||||||
@@ -2255,7 +2258,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
char *zone_name_only = NULL;
|
char *zone_name_only = NULL;
|
||||||
char *class_only = NULL;
|
char *class_only = NULL;
|
||||||
dns_rdataclass_t rdclass;
|
dns_rdataclass_t rdclass;
|
||||||
isc_uint32_t serial;
|
uint32_t serial;
|
||||||
json_object *zonearray = (json_object *) arg;
|
json_object *zonearray = (json_object *) arg;
|
||||||
json_object *zoneobj = NULL;
|
json_object *zoneobj = NULL;
|
||||||
dns_zonestat_level_t statlevel;
|
dns_zonestat_level_t statlevel;
|
||||||
@@ -2273,10 +2276,10 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
|
|
||||||
if (dns_zone_getserial(zone, &serial) != ISC_R_SUCCESS)
|
if (dns_zone_getserial(zone, &serial) != ISC_R_SUCCESS)
|
||||||
zoneobj = addzone(zone_name_only, class_only,
|
zoneobj = addzone(zone_name_only, class_only,
|
||||||
user_zonetype(zone), 0, ISC_FALSE);
|
user_zonetype(zone), 0, false);
|
||||||
else
|
else
|
||||||
zoneobj = addzone(zone_name_only, class_only,
|
zoneobj = addzone(zone_name_only, class_only,
|
||||||
user_zonetype(zone), serial, ISC_TRUE);
|
user_zonetype(zone), serial, true);
|
||||||
|
|
||||||
if (zoneobj == NULL)
|
if (zoneobj == NULL)
|
||||||
return (ISC_R_NOMEMORY);
|
return (ISC_R_NOMEMORY);
|
||||||
@@ -2285,8 +2288,8 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
isc_stats_t *zonestats;
|
isc_stats_t *zonestats;
|
||||||
isc_stats_t *gluecachestats;
|
isc_stats_t *gluecachestats;
|
||||||
dns_stats_t *rcvquerystats;
|
dns_stats_t *rcvquerystats;
|
||||||
isc_uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
||||||
|
|
||||||
zonestats = dns_zone_getrequeststats(zone);
|
zonestats = dns_zone_getrequeststats(zone);
|
||||||
if (zonestats != NULL) {
|
if (zonestats != NULL) {
|
||||||
@@ -2376,7 +2379,7 @@ zone_jsonrender(dns_zone_t *zone, void *arg) {
|
|||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
generatejson(named_server_t *server, size_t *msglen,
|
generatejson(named_server_t *server, size_t *msglen,
|
||||||
const char **msg, json_object **rootp, isc_uint32_t flags)
|
const char **msg, json_object **rootp, uint32_t flags)
|
||||||
{
|
{
|
||||||
dns_view_t *view;
|
dns_view_t *view;
|
||||||
isc_result_t result = ISC_R_SUCCESS;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
@@ -2386,17 +2389,17 @@ generatejson(named_server_t *server, size_t *msglen,
|
|||||||
json_object *tcpreq4 = NULL, *tcpresp4 = NULL;
|
json_object *tcpreq4 = NULL, *tcpresp4 = NULL;
|
||||||
json_object *udpreq6 = NULL, *udpresp6 = NULL;
|
json_object *udpreq6 = NULL, *udpresp6 = NULL;
|
||||||
json_object *tcpreq6 = NULL, *tcpresp6 = NULL;
|
json_object *tcpreq6 = NULL, *tcpresp6 = NULL;
|
||||||
isc_uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
isc_uint64_t resstat_values[dns_resstatscounter_max];
|
uint64_t resstat_values[dns_resstatscounter_max];
|
||||||
isc_uint64_t adbstat_values[dns_adbstats_max];
|
uint64_t adbstat_values[dns_adbstats_max];
|
||||||
isc_uint64_t zonestat_values[dns_zonestatscounter_max];
|
uint64_t zonestat_values[dns_zonestatscounter_max];
|
||||||
isc_uint64_t sockstat_values[isc_sockstatscounter_max];
|
uint64_t sockstat_values[isc_sockstatscounter_max];
|
||||||
isc_uint64_t udpinsizestat_values[dns_sizecounter_in_max];
|
uint64_t udpinsizestat_values[dns_sizecounter_in_max];
|
||||||
isc_uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
|
uint64_t udpoutsizestat_values[dns_sizecounter_out_max];
|
||||||
isc_uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
|
uint64_t tcpinsizestat_values[dns_sizecounter_in_max];
|
||||||
isc_uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
|
uint64_t tcpoutsizestat_values[dns_sizecounter_out_max];
|
||||||
#ifdef HAVE_DNSTAP
|
#ifdef HAVE_DNSTAP
|
||||||
isc_uint64_t dnstapstat_values[dns_dnstapcounter_max];
|
uint64_t dnstapstat_values[dns_dnstapcounter_max];
|
||||||
#endif
|
#endif
|
||||||
stats_dumparg_t dumparg;
|
stats_dumparg_t dumparg;
|
||||||
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
|
char boottime[sizeof "yyyy-mm-ddThh:mm:ss.sssZ"];
|
||||||
@@ -2610,7 +2613,7 @@ generatejson(named_server_t *server, size_t *msglen,
|
|||||||
|
|
||||||
if ((flags & STATS_JSON_ZONES) != 0) {
|
if ((flags & STATS_JSON_ZONES) != 0) {
|
||||||
result = dns_zt_apply(view->zonetable,
|
result = dns_zt_apply(view->zonetable,
|
||||||
ISC_TRUE,
|
true,
|
||||||
NULL, zone_jsonrender,
|
NULL, zone_jsonrender,
|
||||||
za);
|
za);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
@@ -2955,7 +2958,7 @@ generatejson(named_server_t *server, size_t *msglen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
render_json(isc_uint32_t flags,
|
render_json(uint32_t flags,
|
||||||
const char *url, isc_httpdurl_t *urlinfo,
|
const char *url, isc_httpdurl_t *urlinfo,
|
||||||
const char *querystring, const char *headers,
|
const char *querystring, const char *headers,
|
||||||
void *arg, unsigned int *retcode, const char **retmsg,
|
void *arg, unsigned int *retcode, const char **retmsg,
|
||||||
@@ -3182,7 +3185,7 @@ shutdown_listener(named_statschannel_t *listener) {
|
|||||||
isc_httpdmgr_shutdown(&listener->httpdmgr);
|
isc_httpdmgr_shutdown(&listener->httpdmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
||||||
named_statschannel_t *listener = arg;
|
named_statschannel_t *listener = arg;
|
||||||
dns_aclenv_t *env =
|
dns_aclenv_t *env =
|
||||||
@@ -3196,11 +3199,11 @@ client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
|||||||
isc_netaddr_fromsockaddr(&netaddr, fromaddr);
|
isc_netaddr_fromsockaddr(&netaddr, fromaddr);
|
||||||
|
|
||||||
LOCK(&listener->lock);
|
LOCK(&listener->lock);
|
||||||
if (dns_acl_match(&netaddr, NULL, NULL, 0, NULL, listener->acl, env,
|
if ((dns_acl_match(&netaddr, NULL, listener->acl, env,
|
||||||
&match, NULL) == ISC_R_SUCCESS && match > 0)
|
&match, NULL) == ISC_R_SUCCESS) && match > 0)
|
||||||
{
|
{
|
||||||
UNLOCK(&listener->lock);
|
UNLOCK(&listener->lock);
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
UNLOCK(&listener->lock);
|
UNLOCK(&listener->lock);
|
||||||
|
|
||||||
@@ -3209,7 +3212,7 @@ client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
|||||||
NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
NAMED_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||||
"rejected statistics connection from %s", socktext);
|
"rejected statistics connection from %s", socktext);
|
||||||
|
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -3281,7 +3284,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
isc_socket_setname(sock, "statchannel", NULL);
|
isc_socket_setname(sock, "statchannel", NULL);
|
||||||
|
|
||||||
#ifndef ISC_ALLOW_MAPPED
|
#ifndef ISC_ALLOW_MAPPED
|
||||||
isc_socket_ipv6only(sock, ISC_TRUE);
|
isc_socket_ipv6only(sock, true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
result = isc_socket_bind(sock, addr, ISC_SOCKET_REUSEADDRESS);
|
result = isc_socket_bind(sock, addr, ISC_SOCKET_REUSEADDRESS);
|
||||||
@@ -3336,7 +3339,7 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
|||||||
isc_httpdmgr_addurl(listener->httpdmgr, "/json/v1/traffic",
|
isc_httpdmgr_addurl(listener->httpdmgr, "/json/v1/traffic",
|
||||||
render_json_traffic, server);
|
render_json_traffic, server);
|
||||||
#endif
|
#endif
|
||||||
isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.xsl", ISC_TRUE,
|
isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.xsl", true,
|
||||||
render_xsl, server);
|
render_xsl, server);
|
||||||
|
|
||||||
*listenerp = listener;
|
*listenerp = listener;
|
||||||
@@ -3566,12 +3569,12 @@ named_stats_dump(named_server_t *server, FILE *fp) {
|
|||||||
dns_view_t *view;
|
dns_view_t *view;
|
||||||
dns_zone_t *zone, *next;
|
dns_zone_t *zone, *next;
|
||||||
stats_dumparg_t dumparg;
|
stats_dumparg_t dumparg;
|
||||||
isc_uint64_t nsstat_values[ns_statscounter_max];
|
uint64_t nsstat_values[ns_statscounter_max];
|
||||||
isc_uint64_t resstat_values[dns_resstatscounter_max];
|
uint64_t resstat_values[dns_resstatscounter_max];
|
||||||
isc_uint64_t adbstat_values[dns_adbstats_max];
|
uint64_t adbstat_values[dns_adbstats_max];
|
||||||
isc_uint64_t zonestat_values[dns_zonestatscounter_max];
|
uint64_t zonestat_values[dns_zonestatscounter_max];
|
||||||
isc_uint64_t sockstat_values[isc_sockstatscounter_max];
|
uint64_t sockstat_values[isc_sockstatscounter_max];
|
||||||
isc_uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
uint64_t gluecachestats_values[dns_gluecachestatscounter_max];
|
||||||
|
|
||||||
RUNTIME_CHECK(isc_once_do(&once, init_desc) == ISC_R_SUCCESS);
|
RUNTIME_CHECK(isc_once_do(&once, init_desc) == ISC_R_SUCCESS);
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/string.h> /* Required for HP/UX (and others?) */
|
#include <isc/string.h> /* Required for HP/UX (and others?) */
|
||||||
#include <isc/mem.h>
|
#include <isc/mem.h>
|
||||||
@@ -50,7 +52,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
|||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
dns_tkeyctx_t *tctx = NULL;
|
dns_tkeyctx_t *tctx = NULL;
|
||||||
const char *s;
|
const char *s;
|
||||||
isc_uint32_t n;
|
uint32_t n;
|
||||||
dns_fixedname_t fname;
|
dns_fixedname_t fname;
|
||||||
dns_name_t *name;
|
dns_name_t *name;
|
||||||
isc_buffer_t b;
|
isc_buffer_t b;
|
||||||
@@ -101,7 +103,7 @@ named_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
|||||||
isc_buffer_add(&b, strlen(s));
|
isc_buffer_add(&b, strlen(s));
|
||||||
name = dns_fixedname_initname(&fname);
|
name = dns_fixedname_initname(&fname);
|
||||||
RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
|
RETERR(dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
|
||||||
RETERR(dst_gssapi_acquirecred(name, ISC_FALSE, &tctx->gsscred));
|
RETERR(dst_gssapi_acquirecred(name, false, &tctx->gsscred));
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include <isc/base64.h>
|
#include <isc/base64.h>
|
||||||
#include <isc/buffer.h>
|
#include <isc/buffer.h>
|
||||||
#include <isc/mem.h>
|
#include <isc/mem.h>
|
||||||
@@ -43,7 +45,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring,
|
|||||||
int secretlen = 0;
|
int secretlen = 0;
|
||||||
isc_result_t ret;
|
isc_result_t ret;
|
||||||
isc_stdtime_t now;
|
isc_stdtime_t now;
|
||||||
isc_uint16_t bits;
|
uint16_t bits;
|
||||||
|
|
||||||
for (element = cfg_list_first(list);
|
for (element = cfg_list_first(list);
|
||||||
element != NULL;
|
element != NULL;
|
||||||
@@ -109,7 +111,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring,
|
|||||||
|
|
||||||
isc_stdtime_get(&now);
|
isc_stdtime_get(&now);
|
||||||
ret = dns_tsigkey_create(&keyname, alg, secret, secretlen,
|
ret = dns_tsigkey_create(&keyname, alg, secret, secretlen,
|
||||||
ISC_FALSE, NULL, now, now,
|
false, NULL, now, now,
|
||||||
mctx, ring, &tsigkey);
|
mctx, ring, &tsigkey);
|
||||||
isc_mem_put(mctx, secret, secretalloc);
|
isc_mem_put(mctx, secret, secretalloc);
|
||||||
secret = NULL;
|
secret = NULL;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ top_srcdir = @top_srcdir@
|
|||||||
|
|
||||||
CINCLUDES = -I${srcdir}/include -I${srcdir}/../include \
|
CINCLUDES = -I${srcdir}/include -I${srcdir}/../include \
|
||||||
${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} \
|
${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} \
|
||||||
${DNS_INCLUDES} ${ISC_INCLUDES} @DST_OPENSSL_INC@
|
${DNS_INCLUDES} ${ISC_INCLUDES} @OPENSSL_INCLUDES@
|
||||||
|
|
||||||
CDEFINES =
|
CDEFINES =
|
||||||
CWARNINGS =
|
CWARNINGS =
|
||||||
|
|||||||
@@ -12,9 +12,11 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <inttypes.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#include <dns/log.h>
|
#include <dns/log.h>
|
||||||
@@ -43,7 +45,7 @@ typedef struct dlopen_data {
|
|||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
isc_mutex_t lock;
|
isc_mutex_t lock;
|
||||||
int version;
|
int version;
|
||||||
isc_boolean_t in_configure;
|
bool in_configure;
|
||||||
|
|
||||||
dlz_dlopen_version_t *dlz_version;
|
dlz_dlopen_version_t *dlz_version;
|
||||||
dlz_dlopen_create_t *dlz_create;
|
dlz_dlopen_create_t *dlz_create;
|
||||||
@@ -66,14 +68,14 @@ typedef struct dlopen_data {
|
|||||||
#define MAYBE_LOCK(cd) \
|
#define MAYBE_LOCK(cd) \
|
||||||
do { \
|
do { \
|
||||||
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
||||||
cd->in_configure == ISC_FALSE) \
|
cd->in_configure == false) \
|
||||||
LOCK(&cd->lock); \
|
LOCK(&cd->lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MAYBE_UNLOCK(cd) \
|
#define MAYBE_UNLOCK(cd) \
|
||||||
do { \
|
do { \
|
||||||
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
||||||
cd->in_configure == ISC_FALSE) \
|
cd->in_configure == false) \
|
||||||
UNLOCK(&cd->lock); \
|
UNLOCK(&cd->lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -193,7 +195,7 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
|
|||||||
* Load a symbol from the library
|
* Load a symbol from the library
|
||||||
*/
|
*/
|
||||||
static void *
|
static void *
|
||||||
dl_load_symbol(dlopen_data_t *cd, const char *symbol, isc_boolean_t mandatory) {
|
dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) {
|
||||||
void *ptr = dlsym(cd->dl_handle, symbol);
|
void *ptr = dlsym(cd->dl_handle, symbol);
|
||||||
if (ptr == NULL && mandatory) {
|
if (ptr == NULL && mandatory) {
|
||||||
dlopen_log(ISC_LOG_ERROR,
|
dlopen_log(ISC_LOG_ERROR,
|
||||||
@@ -281,13 +283,13 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
|
|
||||||
/* Find the symbols */
|
/* Find the symbols */
|
||||||
cd->dlz_version = (dlz_dlopen_version_t *)
|
cd->dlz_version = (dlz_dlopen_version_t *)
|
||||||
dl_load_symbol(cd, "dlz_version", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_version", true);
|
||||||
cd->dlz_create = (dlz_dlopen_create_t *)
|
cd->dlz_create = (dlz_dlopen_create_t *)
|
||||||
dl_load_symbol(cd, "dlz_create", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_create", true);
|
||||||
cd->dlz_lookup = (dlz_dlopen_lookup_t *)
|
cd->dlz_lookup = (dlz_dlopen_lookup_t *)
|
||||||
dl_load_symbol(cd, "dlz_lookup", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_lookup", true);
|
||||||
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
|
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
|
||||||
dl_load_symbol(cd, "dlz_findzonedb", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_findzonedb", true);
|
||||||
|
|
||||||
if (cd->dlz_create == NULL ||
|
if (cd->dlz_create == NULL ||
|
||||||
cd->dlz_version == NULL ||
|
cd->dlz_version == NULL ||
|
||||||
@@ -300,29 +302,29 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
}
|
}
|
||||||
|
|
||||||
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
|
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
|
||||||
dl_load_symbol(cd, "dlz_allowzonexfr", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_allowzonexfr", false);
|
||||||
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
|
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
|
||||||
dl_load_symbol(cd, "dlz_allnodes",
|
dl_load_symbol(cd, "dlz_allnodes",
|
||||||
ISC_TF(cd->dlz_allowzonexfr != NULL));
|
(cd->dlz_allowzonexfr != NULL));
|
||||||
cd->dlz_authority = (dlz_dlopen_authority_t *)
|
cd->dlz_authority = (dlz_dlopen_authority_t *)
|
||||||
dl_load_symbol(cd, "dlz_authority", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_authority", false);
|
||||||
cd->dlz_newversion = (dlz_dlopen_newversion_t *)
|
cd->dlz_newversion = (dlz_dlopen_newversion_t *)
|
||||||
dl_load_symbol(cd, "dlz_newversion", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_newversion", false);
|
||||||
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
|
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
|
||||||
dl_load_symbol(cd, "dlz_closeversion",
|
dl_load_symbol(cd, "dlz_closeversion",
|
||||||
ISC_TF(cd->dlz_newversion != NULL));
|
(cd->dlz_newversion != NULL));
|
||||||
cd->dlz_configure = (dlz_dlopen_configure_t *)
|
cd->dlz_configure = (dlz_dlopen_configure_t *)
|
||||||
dl_load_symbol(cd, "dlz_configure", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_configure", false);
|
||||||
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
|
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
|
||||||
dl_load_symbol(cd, "dlz_ssumatch", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_ssumatch", false);
|
||||||
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
|
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_addrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_addrdataset", false);
|
||||||
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
|
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_subrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_subrdataset", false);
|
||||||
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
|
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_delrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_delrdataset", false);
|
||||||
cd->dlz_destroy = (dlz_dlopen_destroy_t *)
|
cd->dlz_destroy = (dlz_dlopen_destroy_t *)
|
||||||
dl_load_symbol(cd, "dlz_destroy", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_destroy", false);
|
||||||
|
|
||||||
/* Check the version of the API is the same */
|
/* Check the version of the API is the same */
|
||||||
cd->version = cd->dlz_version(&cd->flags);
|
cd->version = cd->dlz_version(&cd->flags);
|
||||||
@@ -435,7 +437,7 @@ dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata,
|
|||||||
* Called to end a transaction
|
* Called to end a transaction
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit,
|
dlopen_dlz_closeversion(const char *zone, bool commit,
|
||||||
void *driverarg, void *dbdata, void **versionp)
|
void *driverarg, void *dbdata, void **versionp)
|
||||||
{
|
{
|
||||||
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
||||||
@@ -468,9 +470,9 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
MAYBE_LOCK(cd);
|
MAYBE_LOCK(cd);
|
||||||
cd->in_configure = ISC_TRUE;
|
cd->in_configure = true;
|
||||||
result = cd->dlz_configure(view, dlzdb, cd->dbdata);
|
result = cd->dlz_configure(view, dlzdb, cd->dbdata);
|
||||||
cd->in_configure = ISC_FALSE;
|
cd->in_configure = false;
|
||||||
MAYBE_UNLOCK(cd);
|
MAYBE_UNLOCK(cd);
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
@@ -480,18 +482,18 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
|
|||||||
/*
|
/*
|
||||||
* Check for authority to change a name.
|
* Check for authority to change a name.
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
||||||
const char *type, const char *key, isc_uint32_t keydatalen,
|
const char *type, const char *key, uint32_t keydatalen,
|
||||||
unsigned char *keydata, void *driverarg, void *dbdata)
|
unsigned char *keydata, void *driverarg, void *dbdata)
|
||||||
{
|
{
|
||||||
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
||||||
isc_boolean_t ret;
|
bool ret;
|
||||||
|
|
||||||
UNUSED(driverarg);
|
UNUSED(driverarg);
|
||||||
|
|
||||||
if (cd->dlz_ssumatch == NULL)
|
if (cd->dlz_ssumatch == NULL)
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
|
|
||||||
MAYBE_LOCK(cd);
|
MAYBE_LOCK(cd);
|
||||||
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
|
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/types.h>
|
#include <isc/types.h>
|
||||||
|
|
||||||
@@ -49,12 +50,12 @@ void
|
|||||||
named_os_minprivs(void);
|
named_os_minprivs(void);
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user);
|
named_os_openfile(const char *filename, mode_t mode, bool switch_user);
|
||||||
|
|
||||||
void
|
void
|
||||||
named_os_writepidfile(const char *filename, isc_boolean_t first_time);
|
named_os_writepidfile(const char *filename, bool first_time);
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
named_os_issingleton(const char *filename);
|
named_os_issingleton(const char *filename);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+39
-105
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <sys/types.h> /* dev_t FreeBSD 2.1 */
|
#include <sys/types.h> /* dev_t FreeBSD 2.1 */
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
@@ -59,16 +60,16 @@ static int singletonfd = -1;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there's no <linux/capability.h>, we don't care about <sys/prctl.h>
|
* If there's no <sys/capability.h>, we don't care about <sys/prctl.h>
|
||||||
*/
|
*/
|
||||||
#ifndef HAVE_LINUX_CAPABILITY_H
|
#ifndef HAVE_SYS_CAPABILITY_H
|
||||||
#undef HAVE_SYS_PRCTL_H
|
#undef HAVE_SYS_PRCTL_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Linux defines:
|
* Linux defines:
|
||||||
* (T) HAVE_LINUXTHREADS
|
* (T) HAVE_LINUXTHREADS
|
||||||
* (C) HAVE_SYS_CAPABILITY_H (or HAVE_LINUX_CAPABILITY_H)
|
* (C) HAVE_SYS_CAPABILITY_H
|
||||||
* (P) HAVE_SYS_PRCTL_H
|
* (P) HAVE_SYS_PRCTL_H
|
||||||
* The possible cases are:
|
* The possible cases are:
|
||||||
* none: setuid() normally
|
* none: setuid() normally
|
||||||
@@ -107,92 +108,36 @@ static pid_t mainpid = 0;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct passwd *runas_pw = NULL;
|
static struct passwd *runas_pw = NULL;
|
||||||
static isc_boolean_t done_setuid = ISC_FALSE;
|
static bool done_setuid = false;
|
||||||
static int dfd[2] = { -1, -1 };
|
static int dfd[2] = { -1, -1 };
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_CAPABILITY_H
|
|
||||||
|
|
||||||
static isc_boolean_t non_root = ISC_FALSE;
|
|
||||||
static isc_boolean_t non_root_caps = ISC_FALSE;
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_CAPABILITY_H
|
#ifdef HAVE_SYS_CAPABILITY_H
|
||||||
|
|
||||||
|
static bool non_root = false;
|
||||||
|
static bool non_root_caps = false;
|
||||||
|
|
||||||
#include <sys/capability.h>
|
#include <sys/capability.h>
|
||||||
#else
|
|
||||||
#ifdef HAVE_LINUX_TYPES_H
|
|
||||||
#include <linux/types.h>
|
|
||||||
#endif
|
|
||||||
/*%
|
|
||||||
* We define _LINUX_FS_H to prevent it from being included. We don't need
|
|
||||||
* anything from it, and the files it includes cause warnings with 2.2
|
|
||||||
* kernels, and compilation failures (due to conflicts between <linux/string.h>
|
|
||||||
* and <string.h>) on 2.3 kernels.
|
|
||||||
*/
|
|
||||||
#define _LINUX_FS_H
|
|
||||||
#include <linux/capability.h>
|
|
||||||
#include <syscall.h>
|
|
||||||
#ifndef SYS_capset
|
|
||||||
#ifndef __NR_capset
|
|
||||||
#include <asm/unistd.h> /* Slackware 4.0 needs this. */
|
|
||||||
#endif /* __NR_capset */
|
|
||||||
#define SYS_capset __NR_capset
|
|
||||||
#endif /* SYS_capset */
|
|
||||||
#endif /* HAVE_SYS_CAPABILITY_H */
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_PRCTL_H
|
#ifdef HAVE_SYS_PRCTL_H
|
||||||
#include <sys/prctl.h> /* Required for prctl(). */
|
#include <sys/prctl.h> /* Required for prctl(). */
|
||||||
|
|
||||||
/*
|
|
||||||
* If the value of PR_SET_KEEPCAPS is not in <sys/prctl.h>, define it
|
|
||||||
* here. This allows setuid() to work on systems running a new enough
|
|
||||||
* kernel but with /usr/include/linux pointing to "standard" kernel
|
|
||||||
* headers.
|
|
||||||
*/
|
|
||||||
#ifndef PR_SET_KEEPCAPS
|
|
||||||
#define PR_SET_KEEPCAPS 8
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* HAVE_SYS_PRCTL_H */
|
#endif /* HAVE_SYS_PRCTL_H */
|
||||||
|
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
#define SETCAPS_FUNC "cap_set_proc "
|
|
||||||
#else
|
|
||||||
typedef unsigned int cap_t;
|
|
||||||
#define SETCAPS_FUNC "syscall(capset) "
|
|
||||||
#endif /* HAVE_LIBCAP */
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
linux_setcaps(cap_t caps) {
|
linux_setcaps(cap_t caps) {
|
||||||
#ifndef HAVE_LIBCAP
|
|
||||||
struct __user_cap_header_struct caphead;
|
|
||||||
struct __user_cap_data_struct cap;
|
|
||||||
#endif
|
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
|
|
||||||
if ((getuid() != 0 && !non_root_caps) || non_root)
|
if ((getuid() != 0 && !non_root_caps) || non_root) {
|
||||||
return;
|
return;
|
||||||
#ifndef HAVE_LIBCAP
|
}
|
||||||
memset(&caphead, 0, sizeof(caphead));
|
|
||||||
caphead.version = _LINUX_CAPABILITY_VERSION;
|
|
||||||
caphead.pid = 0;
|
|
||||||
memset(&cap, 0, sizeof(cap));
|
|
||||||
cap.effective = caps;
|
|
||||||
cap.permitted = caps;
|
|
||||||
cap.inheritable = 0;
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
if (cap_set_proc(caps) < 0) {
|
if (cap_set_proc(caps) < 0) {
|
||||||
#else
|
|
||||||
if (syscall(SYS_capset, &caphead, &cap) < 0) {
|
|
||||||
#endif
|
|
||||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||||
named_main_earlyfatal(SETCAPS_FUNC "failed: %s:"
|
named_main_earlyfatal("cap_set_proc() failed: %s:"
|
||||||
" please ensure that the capset kernel"
|
" please ensure that the capset kernel"
|
||||||
" module is loaded. see insmod(8)",
|
" module is loaded. see insmod(8)",
|
||||||
strbuf);
|
strbuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
#define SET_CAP(flag) \
|
#define SET_CAP(flag) \
|
||||||
do { \
|
do { \
|
||||||
cap_flag_value_t curval; \
|
cap_flag_value_t curval; \
|
||||||
@@ -230,20 +175,14 @@ linux_setcaps(cap_t caps) {
|
|||||||
cap_free(caps); \
|
cap_free(caps); \
|
||||||
cap_free(curcaps); \
|
cap_free(curcaps); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
|
||||||
#define SET_CAP(flag) do { caps |= (1 << (flag)); } while (0)
|
|
||||||
#define INIT_CAP do { caps = 0; } while (0)
|
|
||||||
#endif /* HAVE_LIBCAP */
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
linux_initialprivs(void) {
|
linux_initialprivs(void) {
|
||||||
cap_t caps;
|
cap_t caps;
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
cap_t curcaps;
|
cap_t curcaps;
|
||||||
cap_value_t capval;
|
cap_value_t capval;
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
int err;
|
int err;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* We don't need most privileges, so we drop them right away.
|
* We don't need most privileges, so we drop them right away.
|
||||||
@@ -300,20 +239,16 @@ linux_initialprivs(void) {
|
|||||||
|
|
||||||
linux_setcaps(caps);
|
linux_setcaps(caps);
|
||||||
|
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
FREE_CAP;
|
FREE_CAP;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
linux_minprivs(void) {
|
linux_minprivs(void) {
|
||||||
cap_t caps;
|
cap_t caps;
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
cap_t curcaps;
|
cap_t curcaps;
|
||||||
cap_value_t capval;
|
cap_value_t capval;
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
int err;
|
int err;
|
||||||
#endif
|
|
||||||
|
|
||||||
INIT_CAP;
|
INIT_CAP;
|
||||||
/*%
|
/*%
|
||||||
@@ -337,9 +272,7 @@ linux_minprivs(void) {
|
|||||||
|
|
||||||
linux_setcaps(caps);
|
linux_setcaps(caps);
|
||||||
|
|
||||||
#ifdef HAVE_LIBCAP
|
|
||||||
FREE_CAP;
|
FREE_CAP;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_SYS_PRCTL_H
|
#ifdef HAVE_SYS_PRCTL_H
|
||||||
@@ -357,14 +290,14 @@ linux_keepcaps(void) {
|
|||||||
named_main_earlyfatal("prctl() failed: %s", strbuf);
|
named_main_earlyfatal("prctl() failed: %s", strbuf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
non_root_caps = ISC_TRUE;
|
non_root_caps = true;
|
||||||
if (getuid() != 0)
|
if (getuid() != 0)
|
||||||
non_root = ISC_TRUE;
|
non_root = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* HAVE_LINUX_CAPABILITY_H */
|
#endif /* HAVE_SYS_CAPABILITY_H */
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -381,7 +314,7 @@ setup_syslog(const char *progname) {
|
|||||||
void
|
void
|
||||||
named_os_init(const char *progname) {
|
named_os_init(const char *progname) {
|
||||||
setup_syslog(progname);
|
setup_syslog(progname);
|
||||||
#ifdef HAVE_LINUX_CAPABILITY_H
|
#ifdef HAVE_SYS_CAPABILITY_H
|
||||||
linux_initialprivs();
|
linux_initialprivs();
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_LINUXTHREADS
|
#ifdef HAVE_LINUXTHREADS
|
||||||
@@ -496,16 +429,16 @@ named_os_closedevnull(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_boolean_t
|
static bool
|
||||||
all_digits(const char *s) {
|
all_digits(const char *s) {
|
||||||
if (*s == '\0')
|
if (*s == '\0')
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
while (*s != '\0') {
|
while (*s != '\0') {
|
||||||
if (!isdigit((*s)&0xff))
|
if (!isdigit((*s)&0xff))
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -564,14 +497,15 @@ named_os_changeuser(void) {
|
|||||||
if (runas_pw == NULL || done_setuid)
|
if (runas_pw == NULL || done_setuid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
done_setuid = ISC_TRUE;
|
done_setuid = true;
|
||||||
|
|
||||||
#ifdef HAVE_LINUXTHREADS
|
#ifdef HAVE_LINUXTHREADS
|
||||||
#ifdef HAVE_LINUX_CAPABILITY_H
|
#ifdef HAVE_SYS_CAPABILITY_H
|
||||||
if (!non_root_caps)
|
if (!non_root_caps) {
|
||||||
named_main_earlyfatal("-u with Linux threads not supported: "
|
named_main_earlyfatal("-u with Linux threads not supported: "
|
||||||
"requires kernel support for "
|
"requires kernel support for "
|
||||||
"prctl(PR_SET_KEEPCAPS)");
|
"prctl(PR_SET_KEEPCAPS)");
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
named_main_earlyfatal("-u with Linux threads not supported: "
|
named_main_earlyfatal("-u with Linux threads not supported: "
|
||||||
"no capabilities support or capabilities "
|
"no capabilities support or capabilities "
|
||||||
@@ -600,7 +534,7 @@ named_os_changeuser(void) {
|
|||||||
strbuf);
|
strbuf);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAVE_LINUX_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS)
|
#if defined(HAVE_SYS_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS)
|
||||||
linux_minprivs();
|
linux_minprivs();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -640,13 +574,13 @@ named_os_minprivs(void) {
|
|||||||
named_os_changeuser(); /* Call setuid() before threads are started */
|
named_os_changeuser(); /* Call setuid() before threads are started */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_LINUX_CAPABILITY_H) && defined(HAVE_LINUXTHREADS)
|
#if defined(HAVE_SYS_CAPABILITY_H) && defined(HAVE_LINUXTHREADS)
|
||||||
linux_minprivs();
|
linux_minprivs();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
safe_open(const char *filename, mode_t mode, isc_boolean_t append) {
|
safe_open(const char *filename, mode_t mode, bool append) {
|
||||||
int fd;
|
int fd;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
|
||||||
@@ -803,7 +737,7 @@ setperms(uid_t uid, gid_t gid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user) {
|
named_os_openfile(const char *filename, mode_t mode, bool switch_user) {
|
||||||
char strbuf[ISC_STRERRORSIZE], *f;
|
char strbuf[ISC_STRERRORSIZE], *f;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int fd;
|
int fd;
|
||||||
@@ -831,7 +765,7 @@ named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user)
|
|||||||
/* Set UID/GID to the one we'll be running with eventually */
|
/* Set UID/GID to the one we'll be running with eventually */
|
||||||
setperms(runas_pw->pw_uid, runas_pw->pw_gid);
|
setperms(runas_pw->pw_uid, runas_pw->pw_gid);
|
||||||
|
|
||||||
fd = safe_open(filename, mode, ISC_FALSE);
|
fd = safe_open(filename, mode, false);
|
||||||
|
|
||||||
#ifndef HAVE_LINUXTHREADS
|
#ifndef HAVE_LINUXTHREADS
|
||||||
/* Restore UID/GID to root */
|
/* Restore UID/GID to root */
|
||||||
@@ -840,7 +774,7 @@ named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user)
|
|||||||
|
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
#ifndef HAVE_LINUXTHREADS
|
#ifndef HAVE_LINUXTHREADS
|
||||||
fd = safe_open(filename, mode, ISC_FALSE);
|
fd = safe_open(filename, mode, false);
|
||||||
if (fd != -1) {
|
if (fd != -1) {
|
||||||
named_main_earlywarning("Required root "
|
named_main_earlywarning("Required root "
|
||||||
"permissions to open "
|
"permissions to open "
|
||||||
@@ -861,7 +795,7 @@ named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user)
|
|||||||
#endif /* HAVE_LINUXTHREADS */
|
#endif /* HAVE_LINUXTHREADS */
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fd = safe_open(filename, mode, ISC_FALSE);
|
fd = safe_open(filename, mode, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
@@ -882,7 +816,7 @@ named_os_openfile(const char *filename, mode_t mode, isc_boolean_t switch_user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
|
named_os_writepidfile(const char *filename, bool first_time) {
|
||||||
FILE *fh;
|
FILE *fh;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
@@ -932,16 +866,16 @@ named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
|
|||||||
(void)fclose(fh);
|
(void)fclose(fh);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
named_os_issingleton(const char *filename) {
|
named_os_issingleton(const char *filename) {
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
struct flock lock;
|
struct flock lock;
|
||||||
|
|
||||||
if (singletonfd != -1)
|
if (singletonfd != -1)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
if (strcasecmp(filename, "none") == 0)
|
if (strcasecmp(filename, "none") == 0)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make the containing directory if it doesn't exist.
|
* Make the containing directory if it doesn't exist.
|
||||||
@@ -957,7 +891,7 @@ named_os_issingleton(const char *filename) {
|
|||||||
named_main_earlywarning("couldn't create '%s'",
|
named_main_earlywarning("couldn't create '%s'",
|
||||||
filename);
|
filename);
|
||||||
cleanup_lockfile();
|
cleanup_lockfile();
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -969,7 +903,7 @@ named_os_issingleton(const char *filename) {
|
|||||||
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||||
if (singletonfd == -1) {
|
if (singletonfd == -1) {
|
||||||
cleanup_lockfile();
|
cleanup_lockfile();
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&lock, 0, sizeof(lock));
|
memset(&lock, 0, sizeof(lock));
|
||||||
@@ -982,10 +916,10 @@ named_os_issingleton(const char *filename) {
|
|||||||
if (fcntl(singletonfd, F_SETLK, &lock) == -1) {
|
if (fcntl(singletonfd, F_SETLK, &lock) == -1) {
|
||||||
close(singletonfd);
|
close(singletonfd);
|
||||||
singletonfd = -1;
|
singletonfd = -1;
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -14,9 +14,11 @@
|
|||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <inttypes.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <dns/log.h>
|
#include <dns/log.h>
|
||||||
#include <dns/result.h>
|
#include <dns/result.h>
|
||||||
@@ -44,7 +46,7 @@ typedef struct dlopen_data {
|
|||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
isc_mutex_t lock;
|
isc_mutex_t lock;
|
||||||
int version;
|
int version;
|
||||||
isc_boolean_t in_configure;
|
bool in_configure;
|
||||||
|
|
||||||
dlz_dlopen_version_t *dlz_version;
|
dlz_dlopen_version_t *dlz_version;
|
||||||
dlz_dlopen_create_t *dlz_create;
|
dlz_dlopen_create_t *dlz_create;
|
||||||
@@ -67,14 +69,14 @@ typedef struct dlopen_data {
|
|||||||
#define MAYBE_LOCK(cd) \
|
#define MAYBE_LOCK(cd) \
|
||||||
do { \
|
do { \
|
||||||
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
||||||
cd->in_configure == ISC_FALSE) \
|
cd->in_configure == false) \
|
||||||
LOCK(&cd->lock); \
|
LOCK(&cd->lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MAYBE_UNLOCK(cd) \
|
#define MAYBE_UNLOCK(cd) \
|
||||||
do { \
|
do { \
|
||||||
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
|
||||||
cd->in_configure == ISC_FALSE) \
|
cd->in_configure == false) \
|
||||||
UNLOCK(&cd->lock); \
|
UNLOCK(&cd->lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -194,7 +196,7 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
|
|||||||
* Load a symbol from the library
|
* Load a symbol from the library
|
||||||
*/
|
*/
|
||||||
static void *
|
static void *
|
||||||
dl_load_symbol(dlopen_data_t *cd, const char *symbol, isc_boolean_t mandatory) {
|
dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) {
|
||||||
void *ptr = GetProcAddress(cd->dl_handle, symbol);
|
void *ptr = GetProcAddress(cd->dl_handle, symbol);
|
||||||
if (ptr == NULL && mandatory) {
|
if (ptr == NULL && mandatory) {
|
||||||
dlopen_log(ISC_LOG_ERROR,
|
dlopen_log(ISC_LOG_ERROR,
|
||||||
@@ -214,7 +216,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
dlopen_data_t *cd;
|
dlopen_data_t *cd;
|
||||||
isc_mem_t *mctx = NULL;
|
isc_mem_t *mctx = NULL;
|
||||||
isc_result_t result = ISC_R_FAILURE;
|
isc_result_t result = ISC_R_FAILURE;
|
||||||
isc_boolean_t triedload = ISC_FALSE;
|
bool triedload = false;
|
||||||
|
|
||||||
UNUSED(driverarg);
|
UNUSED(driverarg);
|
||||||
|
|
||||||
@@ -248,7 +250,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
triedload = ISC_TRUE;
|
triedload = true;
|
||||||
|
|
||||||
/* Initialize the lock */
|
/* Initialize the lock */
|
||||||
result = isc_mutex_init(&cd->lock);
|
result = isc_mutex_init(&cd->lock);
|
||||||
@@ -269,13 +271,13 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
|
|
||||||
/* Find the symbols */
|
/* Find the symbols */
|
||||||
cd->dlz_version = (dlz_dlopen_version_t *)
|
cd->dlz_version = (dlz_dlopen_version_t *)
|
||||||
dl_load_symbol(cd, "dlz_version", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_version", true);
|
||||||
cd->dlz_create = (dlz_dlopen_create_t *)
|
cd->dlz_create = (dlz_dlopen_create_t *)
|
||||||
dl_load_symbol(cd, "dlz_create", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_create", true);
|
||||||
cd->dlz_lookup = (dlz_dlopen_lookup_t *)
|
cd->dlz_lookup = (dlz_dlopen_lookup_t *)
|
||||||
dl_load_symbol(cd, "dlz_lookup", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_lookup", true);
|
||||||
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
|
cd->dlz_findzonedb = (dlz_dlopen_findzonedb_t *)
|
||||||
dl_load_symbol(cd, "dlz_findzonedb", ISC_TRUE);
|
dl_load_symbol(cd, "dlz_findzonedb", true);
|
||||||
|
|
||||||
if (cd->dlz_create == NULL ||
|
if (cd->dlz_create == NULL ||
|
||||||
cd->dlz_version == NULL ||
|
cd->dlz_version == NULL ||
|
||||||
@@ -288,27 +290,27 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
|
|||||||
}
|
}
|
||||||
|
|
||||||
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
|
cd->dlz_allowzonexfr = (dlz_dlopen_allowzonexfr_t *)
|
||||||
dl_load_symbol(cd, "dlz_allowzonexfr", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_allowzonexfr", false);
|
||||||
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
|
cd->dlz_allnodes = (dlz_dlopen_allnodes_t *)
|
||||||
dl_load_symbol(cd, "dlz_allnodes",
|
dl_load_symbol(cd, "dlz_allnodes",
|
||||||
ISC_TF(cd->dlz_allowzonexfr != NULL));
|
(cd->dlz_allowzonexfr != NULL));
|
||||||
cd->dlz_authority = (dlz_dlopen_authority_t *)
|
cd->dlz_authority = (dlz_dlopen_authority_t *)
|
||||||
dl_load_symbol(cd, "dlz_authority", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_authority", false);
|
||||||
cd->dlz_newversion = (dlz_dlopen_newversion_t *)
|
cd->dlz_newversion = (dlz_dlopen_newversion_t *)
|
||||||
dl_load_symbol(cd, "dlz_newversion", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_newversion", false);
|
||||||
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
|
cd->dlz_closeversion = (dlz_dlopen_closeversion_t *)
|
||||||
dl_load_symbol(cd, "dlz_closeversion",
|
dl_load_symbol(cd, "dlz_closeversion",
|
||||||
ISC_TF(cd->dlz_newversion != NULL));
|
(cd->dlz_newversion != NULL));
|
||||||
cd->dlz_configure = (dlz_dlopen_configure_t *)
|
cd->dlz_configure = (dlz_dlopen_configure_t *)
|
||||||
dl_load_symbol(cd, "dlz_configure", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_configure", false);
|
||||||
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
|
cd->dlz_ssumatch = (dlz_dlopen_ssumatch_t *)
|
||||||
dl_load_symbol(cd, "dlz_ssumatch", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_ssumatch", false);
|
||||||
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
|
cd->dlz_addrdataset = (dlz_dlopen_addrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_addrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_addrdataset", false);
|
||||||
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
|
cd->dlz_subrdataset = (dlz_dlopen_subrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_subrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_subrdataset", false);
|
||||||
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
|
cd->dlz_delrdataset = (dlz_dlopen_delrdataset_t *)
|
||||||
dl_load_symbol(cd, "dlz_delrdataset", ISC_FALSE);
|
dl_load_symbol(cd, "dlz_delrdataset", false);
|
||||||
|
|
||||||
/* Check the version of the API is the same */
|
/* Check the version of the API is the same */
|
||||||
cd->version = cd->dlz_version(&cd->flags);
|
cd->version = cd->dlz_version(&cd->flags);
|
||||||
@@ -420,7 +422,7 @@ dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata,
|
|||||||
* Called to end a transaction
|
* Called to end a transaction
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit,
|
dlopen_dlz_closeversion(const char *zone, bool commit,
|
||||||
void *driverarg, void *dbdata, void **versionp)
|
void *driverarg, void *dbdata, void **versionp)
|
||||||
{
|
{
|
||||||
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
||||||
@@ -453,9 +455,9 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
|
||||||
MAYBE_LOCK(cd);
|
MAYBE_LOCK(cd);
|
||||||
cd->in_configure = ISC_TRUE;
|
cd->in_configure = true;
|
||||||
result = cd->dlz_configure(view, dlzdb, cd->dbdata);
|
result = cd->dlz_configure(view, dlzdb, cd->dbdata);
|
||||||
cd->in_configure = ISC_FALSE;
|
cd->in_configure = false;
|
||||||
MAYBE_UNLOCK(cd);
|
MAYBE_UNLOCK(cd);
|
||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
@@ -465,18 +467,18 @@ dlopen_dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
|
|||||||
/*
|
/*
|
||||||
* Check for authority to change a name
|
* Check for authority to change a name
|
||||||
*/
|
*/
|
||||||
static isc_boolean_t
|
static bool
|
||||||
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
||||||
const char *type, const char *key, isc_uint32_t keydatalen,
|
const char *type, const char *key, uint32_t keydatalen,
|
||||||
unsigned char *keydata, void *driverarg, void *dbdata)
|
unsigned char *keydata, void *driverarg, void *dbdata)
|
||||||
{
|
{
|
||||||
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
dlopen_data_t *cd = (dlopen_data_t *) dbdata;
|
||||||
isc_boolean_t ret;
|
bool ret;
|
||||||
|
|
||||||
UNUSED(driverarg);
|
UNUSED(driverarg);
|
||||||
|
|
||||||
if (cd->dlz_ssumatch == NULL)
|
if (cd->dlz_ssumatch == NULL)
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
|
|
||||||
MAYBE_LOCK(cd);
|
MAYBE_LOCK(cd);
|
||||||
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
|
ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
#ifndef NAMED_OS_H
|
#ifndef NAMED_OS_H
|
||||||
#define NAMED_OS_H 1
|
#define NAMED_OS_H 1
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <isc/types.h>
|
#include <isc/types.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -45,12 +47,12 @@ void
|
|||||||
named_os_minprivs(void);
|
named_os_minprivs(void);
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
named_os_openfile(const char *filename, int mode, isc_boolean_t switch_user);
|
named_os_openfile(const char *filename, int mode, bool switch_user);
|
||||||
|
|
||||||
void
|
void
|
||||||
named_os_writepidfile(const char *filename, isc_boolean_t first_time);
|
named_os_writepidfile(const char *filename, bool first_time);
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
named_os_issingleton(const char *filename);
|
named_os_issingleton(const char *filename);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@@USE_GSSAPI@BUILDER="Visual Studio";_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;@USE_GSSAPI@BUILDER="Visual Studio";_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
<PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||||
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
<AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
<IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>WIN32;@CRYPTO@@USE_GSSAPI@BUILDER="Visual Studio";NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;@USE_GSSAPI@BUILDER="Visual Studio";NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ ServiceControl(DWORD dwCtrlCode) {
|
|||||||
|
|
||||||
case SERVICE_CONTROL_SHUTDOWN:
|
case SERVICE_CONTROL_SHUTDOWN:
|
||||||
case SERVICE_CONTROL_STOP:
|
case SERVICE_CONTROL_STOP:
|
||||||
named_server_flushonshutdown(named_g_server, ISC_TRUE);
|
named_server_flushonshutdown(named_g_server, true);
|
||||||
isc_app_shutdown();
|
isc_app_shutdown();
|
||||||
UpdateSCM(SERVICE_STOPPED);
|
UpdateSCM(SERVICE_STOPPED);
|
||||||
break;
|
break;
|
||||||
@@ -131,7 +131,7 @@ int main(int argc, char *argv[])
|
|||||||
int rc, ch;
|
int rc, ch;
|
||||||
|
|
||||||
/* Command line users should put -f in the options. */
|
/* Command line users should put -f in the options. */
|
||||||
isc_commandline_errprint = ISC_FALSE;
|
isc_commandline_errprint = false;
|
||||||
while ((ch = isc_commandline_parse(argc, argv,
|
while ((ch = isc_commandline_parse(argc, argv,
|
||||||
NAMED_MAIN_ARGS)) != -1)
|
NAMED_MAIN_ARGS)) != -1)
|
||||||
{
|
{
|
||||||
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = true;
|
||||||
|
|
||||||
if (foreground) {
|
if (foreground) {
|
||||||
/* run in console window */
|
/* run in console window */
|
||||||
|
|||||||
+12
-11
@@ -20,6 +20,7 @@
|
|||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
@@ -176,7 +177,7 @@ named_os_minprivs(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
safe_open(const char *filename, int mode, isc_boolean_t append) {
|
safe_open(const char *filename, int mode, bool append) {
|
||||||
int fd;
|
int fd;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
|
||||||
@@ -222,13 +223,13 @@ cleanup_lockfile(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FILE *
|
FILE *
|
||||||
named_os_openfile(const char *filename, int mode, isc_boolean_t switch_user) {
|
named_os_openfile(const char *filename, int mode, bool switch_user) {
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
UNUSED(switch_user);
|
UNUSED(switch_user);
|
||||||
fd = safe_open(filename, mode, ISC_FALSE);
|
fd = safe_open(filename, mode, false);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||||
named_main_earlywarning("could not open file '%s': %s",
|
named_main_earlywarning("could not open file '%s': %s",
|
||||||
@@ -248,7 +249,7 @@ named_os_openfile(const char *filename, int mode, isc_boolean_t switch_user) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
|
named_os_writepidfile(const char *filename, bool first_time) {
|
||||||
FILE *pidlockfile;
|
FILE *pidlockfile;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
@@ -274,7 +275,7 @@ named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
|
|||||||
|
|
||||||
pidlockfile = named_os_openfile(filename,
|
pidlockfile = named_os_openfile(filename,
|
||||||
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH,
|
||||||
ISC_FALSE);
|
false);
|
||||||
if (pidlockfile == NULL) {
|
if (pidlockfile == NULL) {
|
||||||
free(pidfile);
|
free(pidfile);
|
||||||
pidfile = NULL;
|
pidfile = NULL;
|
||||||
@@ -298,16 +299,16 @@ named_os_writepidfile(const char *filename, isc_boolean_t first_time) {
|
|||||||
(void)fclose(pidlockfile);
|
(void)fclose(pidlockfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_boolean_t
|
bool
|
||||||
named_os_issingleton(const char *filename) {
|
named_os_issingleton(const char *filename) {
|
||||||
char strbuf[ISC_STRERRORSIZE];
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
OVERLAPPED o;
|
OVERLAPPED o;
|
||||||
|
|
||||||
if (lockfilefd != -1)
|
if (lockfilefd != -1)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
if (strcasecmp(filename, "none") == 0)
|
if (strcasecmp(filename, "none") == 0)
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
|
|
||||||
lockfile = strdup(filename);
|
lockfile = strdup(filename);
|
||||||
if (lockfile == NULL) {
|
if (lockfile == NULL) {
|
||||||
@@ -324,7 +325,7 @@ named_os_issingleton(const char *filename) {
|
|||||||
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||||
if (lockfilefd == -1) {
|
if (lockfilefd == -1) {
|
||||||
cleanup_lockfile();
|
cleanup_lockfile();
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&o, 0, sizeof(o));
|
memset(&o, 0, sizeof(o));
|
||||||
@@ -333,10 +334,10 @@ named_os_issingleton(const char *filename) {
|
|||||||
LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY,
|
LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY,
|
||||||
0, 0, 1, &o)) {
|
0, 0, 1, &o)) {
|
||||||
cleanup_lockfile();
|
cleanup_lockfile();
|
||||||
return (ISC_FALSE);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_TRUE);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user