Compare commits
897
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
051a810e4b | ||
|
|
0ff6e400ef | ||
|
|
aa7c993ded | ||
|
|
33a86c079a | ||
|
|
5c009b2f1d | ||
|
|
263618e847 | ||
|
|
cacc8fc782 | ||
|
|
2470cd0369 | ||
|
|
a2e6e9033d | ||
|
|
db9a2a2291 | ||
|
|
171c9675b0 | ||
|
|
21a4b2cc75 | ||
|
|
21e26d8f65 | ||
|
|
7ba2a7b8a7 | ||
|
|
15f24bad63 | ||
|
|
b10bcfabb8 | ||
|
|
39ce3f5e5c | ||
|
|
6aedca8783 | ||
|
|
b6dc9a1e00 | ||
|
|
e62688fb80 | ||
|
|
dfb88adc7c | ||
|
|
a6ba4245fc | ||
|
|
65047627e2 | ||
|
|
fc6c1a2c81 | ||
|
|
6500789c9c | ||
|
|
4d49146505 | ||
|
|
0e93df3d13 | ||
|
|
c87d9fdccf | ||
|
|
88d9b6752e | ||
|
|
0239dfa344 | ||
|
|
dc4634ebc7 | ||
|
|
906c765f9a | ||
|
|
6d47d7de8d | ||
|
|
c0dd9cb1b8 | ||
|
|
41da997a0c | ||
|
|
be4c5c3810 | ||
|
|
690e894997 | ||
|
|
f1c5e05b7a | ||
|
|
4733a1d216 | ||
|
|
13c15ce5d1 | ||
|
|
51901bce61 | ||
|
|
344130de7f | ||
|
|
cab7e0d34d | ||
|
|
860b5cf3e7 | ||
|
|
b278aecc9e | ||
|
|
86cb24eb06 | ||
|
|
d0c7132c79 | ||
|
|
c71d60e983 | ||
|
|
876164c45f | ||
|
|
44c8b0defc | ||
|
|
4599d2b5d6 | ||
|
|
b86c2c0e51 | ||
|
|
d4f0b9da4d | ||
|
|
b29c34ec5d | ||
|
|
26dcdf0de8 | ||
|
|
09b7d5191f | ||
|
|
5b1ee81b35 | ||
|
|
a714ae8cd9 | ||
|
|
339aa73489 | ||
|
|
37d9161561 | ||
|
|
0f54781dbf | ||
|
|
2b0066dc1a | ||
|
|
bb48d3d9c7 | ||
|
|
c0cdf5517d | ||
|
|
c7270666c2 | ||
|
|
c1061e4f80 | ||
|
|
b3c9161400 | ||
|
|
5d091bfe7c | ||
|
|
3a93dc9e59 | ||
|
|
40d9226217 | ||
|
|
12b6d39732 | ||
|
|
b972eaa32d | ||
|
|
5829fc62db | ||
|
|
d7faf343fe | ||
|
|
81ab934445 | ||
|
|
db56bdab05 | ||
|
|
c5b7770621 | ||
|
|
208d730bbb | ||
|
|
498e82b066 | ||
|
|
c9cd8e16d0 | ||
|
|
1b3eaf3fba | ||
|
|
7e15f645f4 | ||
|
|
8864cec8f7 | ||
|
|
f25ac175f3 | ||
|
|
7884295fef | ||
|
|
b84b5c2c17 | ||
|
|
e38e023215 | ||
|
|
17e856eff2 | ||
|
|
b5cbd22034 | ||
|
|
c894c96142 | ||
|
|
4d2f6583bf | ||
|
|
daf42b912c | ||
|
|
2bf1f4f1de | ||
|
|
d1fbf63986 | ||
|
|
d61392dc24 | ||
|
|
9b2eb2697d | ||
|
|
644148ca94 | ||
|
|
cf9d6b541f | ||
|
|
e81d1c4365 | ||
|
|
763ed17442 | ||
|
|
78e1b0e742 | ||
|
|
91d9a51e44 | ||
|
|
aae05daa5d | ||
|
|
ce3c4bd362 | ||
|
|
ef505e6148 | ||
|
|
6e5bc5165e | ||
|
|
75ae1f59bb | ||
|
|
b46a6d9b2f | ||
|
|
e2e00b772e | ||
|
|
7432649e34 | ||
|
|
6f9e900823 | ||
|
|
9ab6f8ac36 | ||
|
|
688b375048 | ||
|
|
1867547966 | ||
|
|
ad74027862 | ||
|
|
de0504d7af | ||
|
|
f658f6a219 | ||
|
|
3aae62c938 | ||
|
|
2fb2f90065 | ||
|
|
630424f3bc | ||
|
|
a38ef1cac6 | ||
|
|
d5de380a7c | ||
|
|
166b961979 | ||
|
|
10bf117b92 | ||
|
|
c7c06bd691 | ||
|
|
00cbc03bef | ||
|
|
3c54676758 | ||
|
|
a80f124e49 | ||
|
|
17078469da | ||
|
|
1c210d4957 | ||
|
|
2901e56bed | ||
|
|
8143baa1c5 | ||
|
|
0c55ac9cea | ||
|
|
2d80536643 | ||
|
|
07de450857 | ||
|
|
5da8799418 | ||
|
|
bfb778470a | ||
|
|
5fe566404a | ||
|
|
af353b88fe | ||
|
|
6c4f850040 | ||
|
|
3b5e12f336 | ||
|
|
90b24241b2 | ||
|
|
9c1639ead8 | ||
|
|
2840ff2dd9 | ||
|
|
f5407d206a | ||
|
|
0b1e7dff95 | ||
|
|
6d585912dc | ||
|
|
db1f35dfe8 | ||
|
|
e6d191a70c | ||
|
|
874bdcca60 | ||
|
|
6f8bc655a4 | ||
|
|
f212c720b2 | ||
|
|
0cfac3b6a2 | ||
|
|
67a3d018bd | ||
|
|
e209965393 | ||
|
|
c065d7e235 | ||
|
|
a48f76c95e | ||
|
|
e90d966657 | ||
|
|
e30629e0f1 | ||
|
|
57011672d8 | ||
|
|
7a3908784c | ||
|
|
806c07338d | ||
|
|
33dacc1073 | ||
|
|
f275a6891b | ||
|
|
4570929cfd | ||
|
|
6232249e0c | ||
|
|
e019b0ea9b | ||
|
|
07aacad8e6 | ||
|
|
8c6478be65 | ||
|
|
145229b4a9 | ||
|
|
f4d268083c | ||
|
|
1f1e984852 | ||
|
|
8af094afaa | ||
|
|
130849b80a | ||
|
|
b9cd7aabac | ||
|
|
d69f84e37e | ||
|
|
48d19b5ef7 | ||
|
|
1a2410c831 | ||
|
|
f0f7f94c3a | ||
|
|
df6009d6a9 | ||
|
|
fc8743de34 | ||
|
|
c07e71fdaf | ||
|
|
e13c57d8ad | ||
|
|
ca1c779211 | ||
|
|
7166d8c8ce | ||
|
|
8dfe8cb671 | ||
|
|
e88e15862f | ||
|
|
42f53742d5 | ||
|
|
9aa2e9be2d | ||
|
|
4ccca742e5 | ||
|
|
087f538cd4 | ||
|
|
124330f90c | ||
|
|
45ed2ddf7a | ||
|
|
3952d289eb | ||
|
|
bede97dffb | ||
|
|
d8ff87734c | ||
|
|
2a193947d5 | ||
|
|
ce6a3c3171 | ||
|
|
6485a82866 | ||
|
|
b334e3ea5d | ||
|
|
b7185a96f3 | ||
|
|
13054b76f3 | ||
|
|
355033bc8e | ||
|
|
b562b9d2c0 | ||
|
|
a32b34e372 | ||
|
|
a6c8464c0a | ||
|
|
a5ece61a01 | ||
|
|
4d895af83f | ||
|
|
7bc2657a2f | ||
|
|
5db7c351f7 | ||
|
|
4788c13306 | ||
|
|
5de139c4b6 | ||
|
|
302ec51e8b | ||
|
|
826d76f106 | ||
|
|
87ac4aed0a | ||
|
|
f9443063a6 | ||
|
|
a858ff7377 | ||
|
|
de63c98904 | ||
|
|
55d55663b8 | ||
|
|
8082249ced | ||
|
|
9b74f91ae1 | ||
|
|
3180fca874 | ||
|
|
beb6182ccd | ||
|
|
ce727499aa | ||
|
|
e7c19ac871 | ||
|
|
7f105aa581 | ||
|
|
a2e22141db | ||
|
|
71a076b64c | ||
|
|
23f3993502 | ||
|
|
8145bfee7e | ||
|
|
52e6093cb1 | ||
|
|
f88318ce7c | ||
|
|
26ac2106a3 | ||
|
|
427f5fc859 | ||
|
|
f281f86b36 | ||
|
|
470729289f | ||
|
|
a5023c4d80 | ||
|
|
50996ad2cd | ||
|
|
99aff30637 | ||
|
|
44871998e8 | ||
|
|
7bbc323137 | ||
|
|
1012927122 | ||
|
|
8a8948268f | ||
|
|
d2daecd408 | ||
|
|
234265bc55 | ||
|
|
4af84ed4ca | ||
|
|
da17b5c16b | ||
|
|
908a5408f3 | ||
|
|
792bf32389 | ||
|
|
a3cbc53ef9 | ||
|
|
e87824c038 | ||
|
|
220efa5bb5 | ||
|
|
3f9c93d180 | ||
|
|
71295785e7 | ||
|
|
a3283eed86 | ||
|
|
0e33a68292 | ||
|
|
1cf15d5c8c | ||
|
|
e9a90045d6 | ||
|
|
ab4c8657ea | ||
|
|
13dfd85853 | ||
|
|
542afbfead | ||
|
|
4b84eab1c7 | ||
|
|
566a5cff19 | ||
|
|
925d5a6a65 | ||
|
|
db55946ac7 | ||
|
|
47a509c0f4 | ||
|
|
858b15380a | ||
|
|
65e4ac073b | ||
|
|
5284fd1ce4 | ||
|
|
a72c1e02f8 | ||
|
|
12c57326d4 | ||
|
|
35ae2e4ee7 | ||
|
|
f7d6cd0feb | ||
|
|
60c82248ad | ||
|
|
680ca59c77 | ||
|
|
99c70387a3 | ||
|
|
3bc48a4e73 | ||
|
|
7e88d0af75 | ||
|
|
3e61bed773 | ||
|
|
62c7b520fc | ||
|
|
1ffc86cf6f | ||
|
|
5df9c92625 | ||
|
|
1479d6920d | ||
|
|
0eaea361af | ||
|
|
bbbd0b04e3 | ||
|
|
f27d3a8a83 | ||
|
|
80dafcd1f7 | ||
|
|
76456c3f6a | ||
|
|
b1cd4d7852 | ||
|
|
b564068b37 | ||
|
|
6b46223bde | ||
|
|
10d3ac0b18 | ||
|
|
b0f3042e37 | ||
|
|
c4bf484fdf | ||
|
|
f7f1907186 | ||
|
|
0c5b21f8d2 | ||
|
|
b8a04649f1 | ||
|
|
4a4ac126a7 | ||
|
|
b8cd20fa3c | ||
|
|
cbea577f2a | ||
|
|
6e64182fec | ||
|
|
2e4be4d888 | ||
|
|
bc0ecfe8f3 | ||
|
|
801cf525ab | ||
|
|
2120ac5e5c | ||
|
|
6a42935e90 | ||
|
|
90cc42d025 | ||
|
|
5a6afe688d | ||
|
|
6bcf6c9e47 | ||
|
|
80f14644b3 | ||
|
|
7ca530711c | ||
|
|
889497d7a8 | ||
|
|
ed897970ad | ||
|
|
e06d01139a | ||
|
|
6b6aef7492 | ||
|
|
88434def08 | ||
|
|
9c5238def5 | ||
|
|
46cd744950 | ||
|
|
e85ad696bb | ||
|
|
6f60b37d38 | ||
|
|
12a3b0a480 | ||
|
|
98cc9f6ead | ||
|
|
3482345a12 | ||
|
|
e2bcc6282d | ||
|
|
05045c3ef5 | ||
|
|
c7daf72017 | ||
|
|
481dc30c3a | ||
|
|
495e2c11bb | ||
|
|
eab85ef275 | ||
|
|
a98426f766 | ||
|
|
9bb13b5f19 | ||
|
|
4afa6cb717 | ||
|
|
4ac7971499 | ||
|
|
b4cacbf1fa | ||
|
|
915c1cd652 | ||
|
|
ec21d7b3f6 | ||
|
|
639b190505 | ||
|
|
1d096cbf8d | ||
|
|
309872bb5a | ||
|
|
a0d68463e1 | ||
|
|
83cc9ffe57 | ||
|
|
0508e22587 | ||
|
|
464b8634a5 | ||
|
|
7035fc0f93 | ||
|
|
4f18cc1174 | ||
|
|
63775871db | ||
|
|
6eeb32663e | ||
|
|
ee709e9393 | ||
|
|
47894d492d | ||
|
|
e4927b728e | ||
|
|
e01bdca94f | ||
|
|
5b6e1a6067 | ||
|
|
f7d9efd98b | ||
|
|
4c43678e8e | ||
|
|
3d145d5061 | ||
|
|
969799e84b | ||
|
|
fbe1c2cfd9 | ||
|
|
04b3e60a3e | ||
|
|
a9eeec72b4 | ||
|
|
9a66f76036 | ||
|
|
e08fe9752f | ||
|
|
bbb9aa3e3c | ||
|
|
7fe8320eed | ||
|
|
a79d139351 | ||
|
|
1f6dc1abee | ||
|
|
7a5d21ce36 | ||
|
|
dd65cba6c8 | ||
|
|
09bffc43ad | ||
|
|
6d5e5310fb | ||
|
|
14d71a66fc | ||
|
|
0be50bb94f | ||
|
|
152a3c7a0a | ||
|
|
aa19c3d96e | ||
|
|
70df3d06bc | ||
|
|
ce69235dce | ||
|
|
77e30358a8 | ||
|
|
159c34de3f | ||
|
|
fe73aec175 | ||
|
|
e252b8b8da | ||
|
|
e80cd3be84 | ||
|
|
4e290bf392 | ||
|
|
04902c6369 | ||
|
|
55d5562536 | ||
|
|
51c914b976 | ||
|
|
997176a75e | ||
|
|
6132d502b9 | ||
|
|
f057f3c98a | ||
|
|
6035caf7a3 | ||
|
|
15dba50013 | ||
|
|
3f9f034f89 | ||
|
|
46f93322c7 | ||
|
|
0983eab761 | ||
|
|
087cf7aa6c | ||
|
|
bfcc458e8e | ||
|
|
3d0c95fe2d | ||
|
|
7bc28859b9 | ||
|
|
2b59928888 | ||
|
|
86b746428f | ||
|
|
30194165fa | ||
|
|
c535907383 | ||
|
|
1db4de0cc0 | ||
|
|
ea03a55dc5 | ||
|
|
5c38fb079f | ||
|
|
138b7ad44a | ||
|
|
0782358696 | ||
|
|
6717184461 | ||
|
|
d6ad0ec371 | ||
|
|
eb0fce9258 | ||
|
|
bd002de585 | ||
|
|
0701549b85 | ||
|
|
4350719d29 | ||
|
|
8a1c58d755 | ||
|
|
2931e83af7 | ||
|
|
81083aaa75 | ||
|
|
1c4083048e | ||
|
|
5a1d49a1ef | ||
|
|
b7e251c4a2 | ||
|
|
e7df3e584e | ||
|
|
7a904931ad | ||
|
|
59c0cfc789 | ||
|
|
3dfef43868 | ||
|
|
c3fe41869f | ||
|
|
bd3e5de6d9 | ||
|
|
6f7a7dc5eb | ||
|
|
5f8762c504 | ||
|
|
d66b536512 | ||
|
|
a66479c66d | ||
|
|
eef1314b8b | ||
|
|
78738be0e1 | ||
|
|
6995c4567c | ||
|
|
e83ec5e03f | ||
|
|
1503ea6472 | ||
|
|
40535921ab | ||
|
|
e06306eb09 | ||
|
|
cc63b4f7f5 | ||
|
|
d191810ed3 | ||
|
|
9b6378026c | ||
|
|
52cc5ff8db | ||
|
|
e60b4aa460 | ||
|
|
c973a1dee7 | ||
|
|
b77bdaa5ce | ||
|
|
84dde6383c | ||
|
|
68f2c843be | ||
|
|
4f1853005d | ||
|
|
1b9f10181b | ||
|
|
ff2d989592 | ||
|
|
0fcbd40175 | ||
|
|
38215b46b7 | ||
|
|
a4e7c840ca | ||
|
|
2f74870f49 | ||
|
|
4b6f307bd7 | ||
|
|
22407050fe | ||
|
|
c35c678e1a | ||
|
|
4871328f72 | ||
|
|
240a1f6813 | ||
|
|
68e6bc8c55 | ||
|
|
4fe7f9e64d | ||
|
|
a6aeebda20 | ||
|
|
40869b938b | ||
|
|
01d3af945b | ||
|
|
0f7c52af38 | ||
|
|
66d5cfe992 | ||
|
|
a978b24900 | ||
|
|
b04d25d98f | ||
|
|
ba57636139 | ||
|
|
3910d31e1d | ||
|
|
f2ed4e1c5e | ||
|
|
179d1bd965 | ||
|
|
b847e7105e | ||
|
|
1f253dcf4d | ||
|
|
e266df465f | ||
|
|
5a6d0a9844 | ||
|
|
1ff8b5bef5 | ||
|
|
e1b09c2c48 | ||
|
|
9dc8381ff4 | ||
|
|
133ca384d1 | ||
|
|
961e45050f | ||
|
|
ab9d947465 | ||
|
|
2346a15d6c | ||
|
|
b6bfc7235d | ||
|
|
8338bbc282 | ||
|
|
705e16c394 | ||
|
|
bc032a97bb | ||
|
|
4d5ef03723 | ||
|
|
cecbe5bc42 | ||
|
|
a9cf59c7cb | ||
|
|
1aefd8ec88 | ||
|
|
40f92e3040 | ||
|
|
6b696ad957 | ||
|
|
caa58096b2 | ||
|
|
5d8eaba029 | ||
|
|
25c877f032 | ||
|
|
39621f0a19 | ||
|
|
c772a63639 | ||
|
|
fdfc5c763e | ||
|
|
dd03068db2 | ||
|
|
5079524c7c | ||
|
|
95eff34c01 | ||
|
|
3474f269c6 | ||
|
|
28cb874727 | ||
|
|
fb8813c89e | ||
|
|
35e2c35de1 | ||
|
|
f9d075bb26 | ||
|
|
980bd670b1 | ||
|
|
9923c4fe57 | ||
|
|
2eacd1be5c | ||
|
|
e5d6854aa2 | ||
|
|
7331f3d84b | ||
|
|
9b23de87dc | ||
|
|
12a275a9fc | ||
|
|
e68ab11c16 | ||
|
|
19842feafb | ||
|
|
620d76c6e0 | ||
|
|
48a322e5be | ||
|
|
4824bf6a6a | ||
|
|
b8888bfd55 | ||
|
|
c5987d9ebe | ||
|
|
ef70ea9f63 | ||
|
|
148413ff38 | ||
|
|
dce5155b28 | ||
|
|
a86ff30111 | ||
|
|
b87fa3e046 | ||
|
|
3260441570 | ||
|
|
e9df78aa34 | ||
|
|
2484c768ce | ||
|
|
8a8b37d36f | ||
|
|
5bef8ce420 | ||
|
|
231b8abbc1 | ||
|
|
e2b9eb7d4e | ||
|
|
cd20e4a109 | ||
|
|
a4c28497f5 | ||
|
|
49a924db3b | ||
|
|
26e22c238e | ||
|
|
9f519425b2 | ||
|
|
14d738b6d8 | ||
|
|
ad17ed2583 | ||
|
|
5610034a78 | ||
|
|
659ab661a2 | ||
|
|
6ac3fb5c5c | ||
|
|
f9d8debcd0 | ||
|
|
6589e64936 | ||
|
|
cfee4fb8a2 | ||
|
|
c0dcb1e04e | ||
|
|
98787faea2 | ||
|
|
8a1b751171 | ||
|
|
f7f370829e | ||
|
|
8c4c5e5cec | ||
|
|
61711df30d | ||
|
|
f88745517a | ||
|
|
11b4085796 | ||
|
|
ce03256f84 | ||
|
|
12bab5c663 | ||
|
|
efc3ad0392 | ||
|
|
79992558d9 | ||
|
|
00b0069eab | ||
|
|
6e8dc44545 | ||
|
|
e4e82b398c | ||
|
|
d0e2f6c6ca | ||
|
|
be6c81b03e | ||
|
|
61b52746c5 | ||
|
|
918eee6228 | ||
|
|
7e5d132c9c | ||
|
|
b1a4dd1c07 | ||
|
|
8aeff24b3d | ||
|
|
5bbba214b2 | ||
|
|
6103a5369b | ||
|
|
09b49ec9b4 | ||
|
|
4e24be19b6 | ||
|
|
21768e3aae | ||
|
|
180e413931 | ||
|
|
9e09039ce8 | ||
|
|
21ee08520c | ||
|
|
2d4c6e30a0 | ||
|
|
59ca4e0f4e | ||
|
|
96530bc8c1 | ||
|
|
8e4dd15561 | ||
|
|
7f1fab8b88 | ||
|
|
9c75dd9935 | ||
|
|
90530fa80f | ||
|
|
f4b3864bf8 | ||
|
|
d7befc6016 | ||
|
|
6a15e57e2a | ||
|
|
d5356fec3e | ||
|
|
551b3d0216 | ||
|
|
16dc282144 | ||
|
|
0365bb2101 | ||
|
|
1d6b9860c7 | ||
|
|
5f7545bf48 | ||
|
|
4b97f08c1f | ||
|
|
93bad11f96 | ||
|
|
006734c198 | ||
|
|
6e02beeec7 | ||
|
|
bc50f9cb0d | ||
|
|
e4263037ec | ||
|
|
1fed19d4a9 | ||
|
|
2f5502d687 | ||
|
|
33197da4f9 | ||
|
|
4df15f2b94 | ||
|
|
44c8d0d555 | ||
|
|
986fe5d9a6 | ||
|
|
7278b54211 | ||
|
|
8cddf4ff35 | ||
|
|
22e5707efa | ||
|
|
9b65e287fa | ||
|
|
f4a0e3aaff | ||
|
|
5e1cb0fff0 | ||
|
|
4d708d7eb8 | ||
|
|
c66dbce23d | ||
|
|
58085bf485 | ||
|
|
b19965e134 | ||
|
|
43f74fff0a | ||
|
|
19cb51c289 | ||
|
|
1221ba2fbf | ||
|
|
40f3ae7859 | ||
|
|
c13f4beb43 | ||
|
|
b34173241e | ||
|
|
ff56cee13c | ||
|
|
2bee7bd587 | ||
|
|
702cf023d3 | ||
|
|
145a695fc5 | ||
|
|
77ff7325ad | ||
|
|
9b1fb5da85 | ||
|
|
5c4f03600a | ||
|
|
281b87dc88 | ||
|
|
977d6987ae | ||
|
|
fd7deb9201 | ||
|
|
58cbd8c4fd | ||
|
|
41ff983eeb | ||
|
|
a6598d6709 | ||
|
|
6a7dca8e8c | ||
|
|
4a8fb790b0 | ||
|
|
1c53153757 | ||
|
|
433a832300 | ||
|
|
6678d435cc | ||
|
|
acba1a78d0 | ||
|
|
19f97857e4 | ||
|
|
fb1c254dd0 | ||
|
|
d026886b08 | ||
|
|
9623917ad8 | ||
|
|
734b0a4b9f | ||
|
|
8bc478c05f | ||
|
|
02fefa5b52 | ||
|
|
13e3932260 | ||
|
|
361165650f | ||
|
|
6cc8b4b8fd | ||
|
|
ff413dbe66 | ||
|
|
3782efb7d0 | ||
|
|
44f94b4af2 | ||
|
|
8e6b6115cd | ||
|
|
3fed8757e9 | ||
|
|
6929f23913 | ||
|
|
c9da7da070 | ||
|
|
6202b2ec2a | ||
|
|
cb7e02ba7f | ||
|
|
112f7c3785 | ||
|
|
136d2fada0 | ||
|
|
054a9cc454 | ||
|
|
af724aff4e | ||
|
|
58ee862835 | ||
|
|
2f65d30ad9 | ||
|
|
8dc862fe22 | ||
|
|
ee76b2ef38 | ||
|
|
53d0f8a914 | ||
|
|
c9acb5511f | ||
|
|
1486f91694 | ||
|
|
0b029832cd | ||
|
|
dd678452b9 | ||
|
|
61e1d262cd | ||
|
|
4dfb52131e | ||
|
|
2f16faf485 | ||
|
|
4dd24fbcf1 | ||
|
|
817bceaf01 | ||
|
|
0953cc2c36 | ||
|
|
c53306d856 | ||
|
|
9611cd2068 | ||
|
|
24c06f4799 | ||
|
|
2615007d77 | ||
|
|
2c6afd50e8 | ||
|
|
ccdb39648f | ||
|
|
8d74549a5c | ||
|
|
58d4e6452a | ||
|
|
779ec9984d | ||
|
|
8181ca0d97 | ||
|
|
bbe6cf8aed | ||
|
|
d72d9d5858 | ||
|
|
70fcea59c5 | ||
|
|
f69f6d9d65 | ||
|
|
a8ac2df240 | ||
|
|
ddf3b86e0b | ||
|
|
9644984506 | ||
|
|
228aed11b2 | ||
|
|
1cac29a57c | ||
|
|
7bd0a3c6a2 | ||
|
|
013e87384b | ||
|
|
29173e699a | ||
|
|
598a07a616 | ||
|
|
9a3a8f524c | ||
|
|
71083d9a1a | ||
|
|
3eae25e2ef | ||
|
|
88e814e0e4 | ||
|
|
72f2207fc5 | ||
|
|
6439173dae | ||
|
|
d92f5ce987 | ||
|
|
960012de77 | ||
|
|
484b950181 | ||
|
|
28aae970ea | ||
|
|
bc892cc381 | ||
|
|
794bd47f6d | ||
|
|
ae47f254c7 | ||
|
|
f149d3087f | ||
|
|
1ed281f48e | ||
|
|
77092470f0 | ||
|
|
0b51f38570 | ||
|
|
a4da60cb18 | ||
|
|
95dd83a7bc | ||
|
|
cbe6d5d7e1 | ||
|
|
cbba858415 | ||
|
|
916d7e4d87 | ||
|
|
eb4ad81ccb | ||
|
|
610e44c0e1 | ||
|
|
abf344768f | ||
|
|
aa6802d74b | ||
|
|
cf77da1598 | ||
|
|
db54e2dd5c | ||
|
|
0c0c7ae630 | ||
|
|
e1b256f3b7 | ||
|
|
abc4784748 | ||
|
|
779ceee98a | ||
|
|
aa3ed1b594 | ||
|
|
adb73a5926 | ||
|
|
981af8798a | ||
|
|
eae6301d93 | ||
|
|
1f6c540eb5 | ||
|
|
8c99375816 | ||
|
|
d5eb49141a | ||
|
|
0dce2c6123 | ||
|
|
242af366a8 | ||
|
|
b0ef27d2d7 | ||
|
|
3024c922ff | ||
|
|
3873426088 | ||
|
|
df79d703ed | ||
|
|
8cd91651ca | ||
|
|
5af98b88f1 | ||
|
|
26cde354f2 | ||
|
|
11496d8be5 | ||
|
|
855af5daaa | ||
|
|
d932ee4853 | ||
|
|
d1c848f8ca | ||
|
|
863cda8fd0 | ||
|
|
b40e492c83 | ||
|
|
718be0d6a2 | ||
|
|
390bdd73d2 | ||
|
|
01b8938dcb | ||
|
|
c149639f1a | ||
|
|
446f5852c6 | ||
|
|
d4b59ed307 | ||
|
|
9ab672f69e | ||
|
|
05e61fc99c | ||
|
|
4c8eb049f1 | ||
|
|
c66c4e78c9 | ||
|
|
26c0f0424c | ||
|
|
bd575ac7ec | ||
|
|
798f680440 | ||
|
|
ed9062cb49 | ||
|
|
938a013c39 | ||
|
|
f9e63ab5d9 | ||
|
|
83f94c2255 | ||
|
|
84e7b77ba8 | ||
|
|
43da4bdf27 | ||
|
|
c6076cafe2 | ||
|
|
37ab9b45c7 | ||
|
|
76c46f0fd3 | ||
|
|
6de0ec806a | ||
|
|
1ac5fa17b0 | ||
|
|
ba6db14388 | ||
|
|
65c60ad5eb | ||
|
|
cee7943a1b | ||
|
|
4bdc863453 | ||
|
|
c92cfa7eae | ||
|
|
511687b15b | ||
|
|
6950929fa4 | ||
|
|
4d588491b1 | ||
|
|
a7021ba3f7 | ||
|
|
758ea2a01d | ||
|
|
522f945e0f | ||
|
|
857d8059b1 | ||
|
|
f9d2229db9 | ||
|
|
ed420395f8 | ||
|
|
1511cda8b6 | ||
|
|
d151fbee99 | ||
|
|
477048a7c4 | ||
|
|
69f057944f | ||
|
|
485196a4cc | ||
|
|
e95785a789 | ||
|
|
12de90c2cc | ||
|
|
f2ab2af3b7 | ||
|
|
5f764bca6e | ||
|
|
cdd128b849 | ||
|
|
03f1bb8356 | ||
|
|
fa733320ca | ||
|
|
a4c2a6271b | ||
|
|
f4dd256dde | ||
|
|
131e246c26 | ||
|
|
6b27b3f08e | ||
|
|
56afba572b | ||
|
|
f0ab2408bf | ||
|
|
5d439f5238 | ||
|
|
9787eb680b | ||
|
|
40af8b5475 | ||
|
|
67546361cb | ||
|
|
b512d3659f | ||
|
|
453a4b6c3a | ||
|
|
d4a9f3b6cb | ||
|
|
2667843e65 | ||
|
|
c93fb40e31 | ||
|
|
f8cb5e5bc3 | ||
|
|
57299225a4 | ||
|
|
0bdc53c9ba | ||
|
|
8b27fd4b29 | ||
|
|
28bf17cf58 | ||
|
|
f8dda3b299 | ||
|
|
72a5b0d53e | ||
|
|
79b014d60b | ||
|
|
36c1751de0 | ||
|
|
fd0583a479 | ||
|
|
74203f8f02 | ||
|
|
8aa6e8da60 | ||
|
|
675eac11d7 | ||
|
|
480e8334e9 | ||
|
|
0992569f34 | ||
|
|
45fe615138 | ||
|
|
fea1c98c87 | ||
|
|
1d1958439c | ||
|
|
967fa276cf | ||
|
|
f66a5412c7 | ||
|
|
d3a3cf39e2 | ||
|
|
cb994f41ba | ||
|
|
694ffc6b26 | ||
|
|
e2b1577e08 | ||
|
|
8a4656e335 | ||
|
|
05f3f36cb9 | ||
|
|
fa31ca157f | ||
|
|
d920a41f95 | ||
|
|
ac902d0eec | ||
|
|
093ebbed91 | ||
|
|
b6a40587a9 | ||
|
|
6294217721 | ||
|
|
a18b781fac | ||
|
|
49c4cbffbe | ||
|
|
aa524d66eb | ||
|
|
f612ce4746 | ||
|
|
d02f8030f0 | ||
|
|
74da435353 | ||
|
|
56aec60ae3 | ||
|
|
7a75bfd9f7 | ||
|
|
877d3b185b | ||
|
|
a330dec0b5 | ||
|
|
970eeaff20 | ||
|
|
f0ada6657d | ||
|
|
00ff6766dd | ||
|
|
fbc355b20c | ||
|
|
c949afb3c1 | ||
|
|
8a593376be | ||
|
|
4aa8caeb53 | ||
|
|
cc86c4f840 | ||
|
|
5f69cd48c9 | ||
|
|
3b24367a06 | ||
|
|
628a7e5c60 | ||
|
|
3cd63e9198 | ||
|
|
1cd0e02533 | ||
|
|
e5602180dc | ||
|
|
3c83ce9313 | ||
|
|
0df5975731 | ||
|
|
8dc21f361a | ||
|
|
e71e4a4cdd | ||
|
|
4e5042b224 | ||
|
|
dfce21d27b | ||
|
|
ccced33af3 | ||
|
|
d3ff406fca | ||
|
|
df2a88e2b8 | ||
|
|
ce910b013f | ||
|
|
4b500a80b4 | ||
|
|
2e67f6cd68 | ||
|
|
983a82b5f7 | ||
|
|
0f86ffd4b6 | ||
|
|
b1803c627b | ||
|
|
b3afec046e | ||
|
|
b26782a1df | ||
|
|
dbab5b0036 | ||
|
|
9c7a8dc753 | ||
|
|
68864dc2a9 | ||
|
|
60cd8bcc56 | ||
|
|
8e7aa4e1a8 | ||
|
|
d38b0e91a3 | ||
|
|
f694d83e78 | ||
|
|
03c4e32d48 | ||
|
|
6a658a8677 |
@@ -1,3 +1,608 @@
|
||||
--- 9.6-ESV-R11b1 released ---
|
||||
|
||||
3679. [bug] dig could fail to clean up TCP sockets still
|
||||
waiting on connect(). [RT #35074]
|
||||
|
||||
3678. [port] Update config.guess and config.sub. [RT #35060]
|
||||
|
||||
3677. [bug] 'nsupdate' leaked memory if 'realm' was used multiple
|
||||
times. [RT #35073]
|
||||
|
||||
3676. [bug] "named-checkconf -z" now checks zones of type
|
||||
hint as well as master. [RT #35046]
|
||||
|
||||
3675. [misc] Provide a place for third parties to add version
|
||||
information for their extensions in the version
|
||||
file by setting the EXTENSIONS variable.
|
||||
|
||||
3670. [bug] Address read after free in server side of
|
||||
lwres_getrrsetbyname. [RT #29075]
|
||||
|
||||
3669. [port] freebsd: --with-gssapi needs -lhx509. [RT #35001]
|
||||
|
||||
3668. [bug] Fix cast in lex.c which could see 0xff treated as eof.
|
||||
[RT #34993]
|
||||
3667. [test] dig: add support to keep the TCP socket open between
|
||||
successive queries (+[no]keepopen). [RT #34918]
|
||||
|
||||
3663. [bug] Address bugs in dns_rdata_fromstruct and
|
||||
dns_rdata_tostruct for WKS and ISDN types. [RT #34910]
|
||||
|
||||
3662. [bug] 'host' could die if a UDP query timed out. [RT #34870]
|
||||
|
||||
3660. [cleanup] Changed the name of "isc-config.sh" to "bind9-config".
|
||||
[RT #23825]
|
||||
|
||||
3658. [port] linux: Address platform specific compilation issue
|
||||
when libcap-devel is installed. [RT #34838]
|
||||
|
||||
3656. [bug] Treat an all zero netmask as invalid when generating
|
||||
the localnets acl. [RT #34687]
|
||||
|
||||
3655. [cleanup] Simplify TCP message processing when requesting a
|
||||
zone transfer. [RT #34825]
|
||||
|
||||
3654. [bug] Address race condition with manual notify requests.
|
||||
[RT #34806]
|
||||
|
||||
3653. [func] Create delegations for all "children" of empty zones
|
||||
except "forward first". [RT #34826]
|
||||
|
||||
3651. [tuning] Adjust when a master server is deemed unreachable.
|
||||
[RT #27075]
|
||||
|
||||
3650. [tuning] Use separate rate limiting queues for refresh and
|
||||
notify requests. [RT #30589]
|
||||
|
||||
3648. [test] Updated the ATF test framework to version 0.17.
|
||||
[RT #25627]
|
||||
|
||||
3646. [bug] Journal filename string could be set incorrectly,
|
||||
causing garbage in log messages. [RT #34738]
|
||||
|
||||
3645. [protocol] Use case sensitive compression when responding to
|
||||
queries. [RT #34737]
|
||||
|
||||
3644. [protocol] Check that EDNS subnet client options are well formed.
|
||||
[RT #34718]
|
||||
|
||||
3641. [bug] Handle changes to sig-validity-interval settings
|
||||
better. [RT #34625]
|
||||
|
||||
3640. [bug] ndots was not being checked when searching. Only
|
||||
continue searching on NXDOMAIN responses. Add the
|
||||
ability to specify ndots to nslookup. [RT #34711]
|
||||
|
||||
--- 9.6-ESV-R10 released ---
|
||||
|
||||
3638. [cleanup] Add the ability to handle ENOPROTOOPT in case it is
|
||||
encountered. [RT #34668]
|
||||
|
||||
--- 9.6-ESV-R10rc2 released ---
|
||||
|
||||
3637. [bug] 'allow-query-on' was checking the source address
|
||||
rather than the destination address. [RT #34590]
|
||||
|
||||
3636. [bug] Automatic empty zones now behave better with
|
||||
forward only "zones" beneath them. [RT #34583]
|
||||
|
||||
3634. [func] Report build-id in rndc status. Report build-id
|
||||
when building from a git repository. [RT #20422]
|
||||
|
||||
3633. [cleanup] Refactor OPT processing in named to make it easier
|
||||
to support new EDNS options. [RT #34414]
|
||||
|
||||
3631. [bug] Remove spurious warning about missing signatures when
|
||||
qtype is SIG. [RT #34600]
|
||||
|
||||
3630. [bug] Ensure correct ID computation for MD5 keys. [RT #33033]
|
||||
|
||||
3625. [bug] Don't send notify messages to machines outside of the
|
||||
test setup.
|
||||
|
||||
--- 9.6-ESV-R10rc1 released ---
|
||||
|
||||
3615. [cleanup] "configure" now finishes by printing a summary
|
||||
of optional BIND features and whether they are
|
||||
active or inactive. ("configure --enable-full-report"
|
||||
increases the verbosity of the summary.) [RT #31777]
|
||||
|
||||
3614. [port] Check for <linux/types.h>. [RT #34162]
|
||||
|
||||
3611. [bug] Improved resistance to a theoretical authentication
|
||||
attack based on differential timing. [RT #33939]
|
||||
|
||||
3608. [port] win32: added todos.pl script to ensure all text files
|
||||
the win32 build depends on are converted to DOS
|
||||
newline format. [RT #22067]
|
||||
|
||||
--- 9.6-ESV-R10b1 released ---
|
||||
|
||||
3605. [port] win32: Addressed several compatibility issues
|
||||
with newer versions of Visual Studio. [RT #33916]
|
||||
|
||||
3603. [bug] Install <isc/stat.h>. [RT #33956]
|
||||
|
||||
3600. [cleanup] dig: Fixed a typo in the warning output when receiving
|
||||
an oversized response. [RT #33910]
|
||||
|
||||
3599. [tuning] Check for pointer equivalence in name comparisons.
|
||||
[RT #18125]
|
||||
|
||||
3594. [maint] Update config.guess and config.sub. [RT #33816]
|
||||
|
||||
3592. [doc] Moved documentation of rndc command options to the
|
||||
rndc man page. [RT #33506]
|
||||
|
||||
3588. [bug] dig: addressed a memory leak in the sigchase code
|
||||
that could cause a shutdown crash. [RT #33733]
|
||||
|
||||
3587. [func] 'named -g' now checks the logging configuration but
|
||||
does not use it. [RT #33473]
|
||||
|
||||
3586. [bug] Handle errors in xmlDocDumpFormatMemoryEnc. [RT #33706]
|
||||
|
||||
3584. [security] Caching data from an incompletely signed zone could
|
||||
trigger an assertion failure in resolver.c
|
||||
(CVE-2013-3919). [RT #33690]
|
||||
|
||||
3583. [bug] Address memory leak in GSS-API processing [RT #33574]
|
||||
|
||||
3581. [bug] Changed the tcp-listen-queue default to 10. [RT #33029]
|
||||
|
||||
3580. [bug] Addressed a possible race in acache.c [RT #33602]
|
||||
|
||||
3578. [bug] 'rndc -c file' now fails if 'file' does not exist.
|
||||
[RT #33571]
|
||||
|
||||
3577. [bug] Handle zero TTL values better. [RT #33411]
|
||||
|
||||
3576. [bug] Address a shutdown race when validating. [RT #33573]
|
||||
|
||||
3574. [doc] The 'hostname' keyword was missing from server-id
|
||||
description in the named.conf man page. [RT #33476]
|
||||
|
||||
--- 9.6-ESV-R9 released ---
|
||||
|
||||
3568. [cleanup] Add a product description line to the version file,
|
||||
to be reported by named -v/-V. [RT #33366]
|
||||
|
||||
3567. [bug] Silence clang static analyzer warnings. [RT #33365]
|
||||
|
||||
3563. [contrib] zone2sqlite failed with some table names. [RT #33375]
|
||||
|
||||
3561. [bug] dig: issue a warning if an EDNS query returns FORMERR
|
||||
or NOTIMP. Adjust usage message. [RT #33363]
|
||||
|
||||
--- 9.6-ESV-R9rc2 released ---
|
||||
|
||||
3560. [bug] isc-config.sh did not honor includedir and libdir
|
||||
when set via configure. [RT #33345]
|
||||
|
||||
3559. [func] Check that both forms of Sender Policy Framework
|
||||
records exist or do not exist. [RT #33355]
|
||||
|
||||
3558. [bug] IXFR of a DLZ stored zone was broken. [RT #33331]
|
||||
|
||||
3556. [maint] Added AAAA for D.ROOT-SERVERS.NET.
|
||||
|
||||
3555. [bug] Address theoretical race conditions in acache.c
|
||||
(change #3553 was incomplete). [RT #33252]
|
||||
|
||||
3553. [bug] Address suspected double free in acache. [RT #33252]
|
||||
|
||||
3552. [bug] Wrong getopt option string for 'nsupdate -r'.
|
||||
[RT #33280]
|
||||
|
||||
3549. [doc] Documentation for "request-nsid" was missing.
|
||||
[RT #33153]
|
||||
|
||||
3548. [bug] The NSID request code in resolver.c was broken
|
||||
resulting in invalid EDNS options being sent.
|
||||
[RT #33153]
|
||||
|
||||
3547. [bug] Some malformed unknown rdata records were not properly
|
||||
detected and rejected. [RT #33129]
|
||||
|
||||
3056. [func] Added support for URI resource record. [RT #23386]
|
||||
|
||||
2565. [func] Add support for HIP record. Includes new functions
|
||||
dns_rdata_hip_first(), dns_rdata_hip_next()
|
||||
and dns_rdata_hip_current(). [RT #19384]
|
||||
|
||||
--- 9.6-ESV-R9rc1 released ---
|
||||
|
||||
3546. [func] Add EUI48 and EUI64 types. [RT #33082]
|
||||
|
||||
3543. [bug] Update socket structure before attaching to socket
|
||||
manager after accept. [RT #33084]
|
||||
|
||||
3542. [test] masterformat system test was broken. [RT #33086]
|
||||
|
||||
3541. [bug] Parts of libdns were not properly initialized when
|
||||
built in libexport mode. [RT #33028]
|
||||
|
||||
3540. [test] libt_api: t_info and t_assert were not thread safe.
|
||||
|
||||
3539. [port] win32: timestamp format didn't match other platforms.
|
||||
|
||||
3538. [test] Running "make test" now requires loopback interfaces
|
||||
to be set up. [RT #32452]
|
||||
|
||||
3535. [bug] Minor win32 cleanups. [RT #32962]
|
||||
|
||||
3534. [bug] Extra text after an embedded NULL was ignored when
|
||||
parsing zone files. [RT #32699]
|
||||
|
||||
3533. [contrib] query-loc-0.4.0: memory leaks. [RT #32960]
|
||||
|
||||
3532. [contrib] zkt: fixed buffer overrun, resource leaks. [RT #32960]
|
||||
|
||||
3531. [bug] win32: A uninitialized value could be returned on out
|
||||
of memory. [RT #32960]
|
||||
|
||||
3530. [contrib] Better RTT tracking in queryperf. [RT #30128]
|
||||
|
||||
3526. [cleanup] Set up dependencies for unit tests correctly during
|
||||
build. [RT #32803]
|
||||
|
||||
3520. [bug] 'mctx' was not being referenced counted in some places
|
||||
where it should have been. [RT #32794]
|
||||
|
||||
--- 9.6-ESV-R9b2 released ---
|
||||
|
||||
3517. [bug] Reorder destruction to avoid shutdown race. [RT #32777]
|
||||
|
||||
3515. [port] '%T' is not portable in strftime(). [RT #32763]
|
||||
|
||||
3509. [cleanup] Added a product line to version file to allow for
|
||||
easy naming of different products (BIND
|
||||
vs BIND ESV, for example). [RT #32755]
|
||||
|
||||
3508. [contrib] queryperf was incorrectly rejecting the -T option.
|
||||
[RT #32338]
|
||||
|
||||
3503. [doc] Clarify size_spec syntax. [RT #32449]
|
||||
|
||||
3499. [doc] Corrected ARM documentation of built-in zones.
|
||||
[RT #32694]
|
||||
|
||||
3498. [bug] zone statistics for zones which matched a potential
|
||||
empty zone could have their zone-statistics setting
|
||||
overridden.
|
||||
|
||||
3489. [bug] --enable-developer now turns on ISC_LIST_CHECKINIT.
|
||||
When cloning a rdataset do not copy the link contents.
|
||||
[RT #32651]
|
||||
|
||||
3487. [bug] Change 3444 was not complete. There was a additional
|
||||
place where the NOQNAME proof needed to be saved.
|
||||
[RT #32629]
|
||||
|
||||
3481. [cleanup] Removed use of const const in atf.
|
||||
|
||||
3479. [bug] Address potential memory leaks in gssapi support
|
||||
code. [RT #32405]
|
||||
|
||||
3478. [port] Fix a build failure in strict C99 environments
|
||||
[RT #32475]
|
||||
|
||||
3474. [bug] nsupdate could assert when the local and remote
|
||||
address families didn't match. [RT #22897]
|
||||
|
||||
--- 9.6-ESV-R9b1 released ---
|
||||
|
||||
3465. [bug] Handle isolated reserved ports. [RT #31778]
|
||||
|
||||
3462. [doc] Clarify server selection behavior of dig when using
|
||||
-4 or -6 options. [RT #32181]
|
||||
|
||||
3461. [bug] Negative responses could incorrectly have AD=1
|
||||
set. [RT #32237]
|
||||
|
||||
3458. [bug] Return FORMERR when presented with a overly long
|
||||
domain named in a request. [RT #29682]
|
||||
|
||||
3457. [protocol] Add ILNP records (NID, LP, L32, L64). [RT #31836]
|
||||
|
||||
3456. [port] g++47: ATF failed to compile. [RT #32012]
|
||||
|
||||
3455. [contrib] queryperf: fix getopt option list. [RT #32338]
|
||||
|
||||
3454. [port] sparc64: improve atomic support. [RT #25182]
|
||||
|
||||
3452. [bug] Accept duplicate singleton records. [RT #32329]
|
||||
|
||||
3451. [port] Increase per thread stack size from 64K to 1M.
|
||||
[RT #32230]
|
||||
|
||||
3450. [bug] Stop logfileconfig system test spam system logs.
|
||||
[RT #32315]
|
||||
|
||||
3449. [bug] gen.c: use the pre-processor to construct format
|
||||
strings so that compiler can perform sanity checks;
|
||||
check the snprintf results. [RT #17576]
|
||||
|
||||
3448. [bug] The allow-query-on ACL was not processed correctly.
|
||||
[RT #29486]
|
||||
|
||||
3447. [port] Add support for libxml2-2.9.x [RT #32231]
|
||||
|
||||
3446. [port] win32: Add source ID (see change #3400) to build.
|
||||
[RT #31683]
|
||||
|
||||
3445. [bug] Warn about zone files with blank owner names
|
||||
immediately after $ORIGIN directives. [RT #31848]
|
||||
|
||||
3444. [bug] The NOQNAME proof was not being returned from cached
|
||||
insecure responses. [RT #21409]
|
||||
|
||||
3442. [port] Net::DNS 0.69 introduced a non backwards compatible
|
||||
change. [RT #32216]
|
||||
|
||||
3441. [maint] D.ROOT-SERVERS.NET is now 199.7.91.13.
|
||||
|
||||
3440. [bug] Reorder get_key_struct to not trigger a assertion when
|
||||
cleaning up due to out of memory error. [RT #32131]
|
||||
|
||||
3439. [bug] contrib/dlz error checking fixes. [RT #32102]
|
||||
|
||||
3438. [bug] Don't accept unknown data escape in quotes. [RT #32031]
|
||||
|
||||
3437. [bug] isc_buffer_init -> isc_buffer_constinit to initialize
|
||||
buffers with constant data. [RT #32064]
|
||||
|
||||
3436. [bug] Check malloc/calloc return values. [RT #32088]
|
||||
|
||||
3435. [bug] Cross compilation support in configure was broken.
|
||||
[RT #32078]
|
||||
|
||||
3430. [bug] win32: isc_time_formatISO8601 was missing the
|
||||
'T' between the date and time. [RT #32044]
|
||||
|
||||
3429. [bug] dns_zone_getserial2 could a return success without
|
||||
returning a valid serial. [RT #32007]
|
||||
|
||||
3428. [cleanup] dig: Add timezone to date output. [RT #2269]
|
||||
|
||||
3427. [bug] dig +trace incorrectly displayed name server
|
||||
addresses instead of names. [RT #31641]
|
||||
|
||||
3425. [bug] "acacheentry" reference counting was broken resulting
|
||||
in use after free. [RT #31908]
|
||||
|
||||
3421. [bug] Named loops when re-signing if all keys are offline.
|
||||
[RT #31916]
|
||||
|
||||
3420. [bug] Address VPATH compilation issues. [RT #31879]
|
||||
|
||||
3419. [bug] Memory leak on validation cancel. [RT #31869]
|
||||
|
||||
3415. [bug] named could die with a REQUIRE failure if a validation
|
||||
was canceled. [RT #31804]
|
||||
|
||||
3412. [bug] Copy timeval structure from control message data.
|
||||
[RT #31548]
|
||||
|
||||
3411. [tuning] Use IPV6_USE_MIN_MTU or equivalent with TCP in addition
|
||||
to UDP. [RT #31690]
|
||||
|
||||
3410. [bug] Addressed Coverity warnings. [RT #31626]
|
||||
|
||||
3409. [contrib] contrib/dane/mkdane.sh: Tool to generate TLSA RR's
|
||||
from X.509 certificates, for use with DANE
|
||||
(DNS-based Authentication of Named Entities).
|
||||
[RT #30513]
|
||||
|
||||
3406. [bug] mem.c: Fix compilation errors when building with
|
||||
ISC_MEM_TRACKLINES or ISC_MEMPOOL_NAMES disabled.
|
||||
Also, ISC_MEM_DEBUG is no longer optional. [RT #31559]
|
||||
|
||||
3405. [bug] Handle time going backwards in acache. [RT #31253]
|
||||
|
||||
3404. [bug] dnssec-signzone: When re-signing a zone, remove
|
||||
RRSIG and NSEC records from nodes that used to be
|
||||
in-zone but are now below a zone cut. [RT #31556]
|
||||
|
||||
3403. [bug] Silence noisy OpenSSL logging. [RT #31497]
|
||||
|
||||
3402. [test] The IPv6 interface numbers used for system
|
||||
tests were incorrect on some platforms. [RT #25085]
|
||||
|
||||
3401. [bug] Addressed Coverity warnings. [RT #31484]
|
||||
|
||||
3400. [cleanup] "named -V" can now report a source ID string, defined
|
||||
in the "srcid" file in the build tree and normally set
|
||||
to the most recent git hash. [RT #31494]
|
||||
|
||||
3397. [bug] dig crashed when using +nssearch with +tcp. [RT #25298]
|
||||
|
||||
3396. [bug] OPT records were incorrectly removed from signed,
|
||||
truncated responses. [RT #31439]
|
||||
|
||||
3395. [protocol] Add RFC 6598 reverse zones to built in empty zones
|
||||
list, 64.100.IN-ADDR.ARPA ... 127.100.IN-ADDR.ARPA.
|
||||
[RT #31336]
|
||||
|
||||
3394. [bug] Adjust 'successfully validated after lower casing
|
||||
signer' log level and category. [RT #31414]
|
||||
|
||||
3393. [bug] 'host -C' could core dump if REFUSED was received.
|
||||
[RT #31381]
|
||||
|
||||
3391. [bug] A DNSKEY lookup that encountered a CNAME failed.
|
||||
[RT #31262]
|
||||
|
||||
3390. [bug] Silence clang compiler warnings. [RT #30417]
|
||||
|
||||
3389. [bug] Always return NOERROR (not 0) in TSIG. [RT #31275]
|
||||
|
||||
3388. [bug] Fixed several Coverity warnings.
|
||||
Note: This change includes a fix for a bug that
|
||||
was subsequently determined to be an exploitable
|
||||
security vulnerability, CVE-2012-5688: named could
|
||||
die on specific queries with dns64 enabled.
|
||||
[RT #30996]
|
||||
|
||||
3386. [bug] Address locking violation when generating new NSEC /
|
||||
NSEC3 chains. [RT #31224]
|
||||
|
||||
3382. [bug] SOA query from slave used use-v6-udp-ports range,
|
||||
if set, regardless of the address family in use.
|
||||
[RT #24173]
|
||||
|
||||
3381. [contrib] Update queryperf to support more RR types.
|
||||
[RT #30762]
|
||||
|
||||
3380. [bug] named could die if a nonexistent master list was
|
||||
referenced in a also-notify. [RT #31004]
|
||||
|
||||
3379. [bug] isc_interval_zero and isc_time_epoch should be
|
||||
"const (type)* const". [RT #31069]
|
||||
|
||||
3376. [bug] Lack of EDNS support was being recorded without a
|
||||
successful response. [RT #30811]
|
||||
|
||||
3375. [func] Check that 'rndc dumpdb' works on a empty cache.
|
||||
[RT #30808]
|
||||
|
||||
3374. [bug] isc_parse_uint32 failed to return a range error on
|
||||
systems with 64 bit longs. [RT #30232]
|
||||
|
||||
3372. [bug] Silence spurious "deleted from unreachable cache"
|
||||
messages. [RT #30501]
|
||||
|
||||
3371. [bug] AD=1 should behave like DO=1 when deciding whether to
|
||||
add NS RRsets to the additional section or not.
|
||||
[RT #30479]
|
||||
|
||||
2512. [func] Print a summary of the cached records which make up
|
||||
the negative response. [RT #18885]
|
||||
|
||||
--- 9.6-ESV-R8 released ---
|
||||
|
||||
3383. [security] A certain combination of records in the RBT could
|
||||
cause named to hang while populating the additional
|
||||
section of a response. [RT #31090]
|
||||
|
||||
3373. [bug] win32: open raw files in binary mode. [RT #30944]
|
||||
|
||||
3364. [security] Named could die on specially crafted record.
|
||||
[RT #30416]
|
||||
|
||||
--- 9.6-ESV-R8rc1 released ---
|
||||
|
||||
3369. [bug] nsupdate terminated unexpectedly in interactive mode
|
||||
if built with readline support. [RT #29550]
|
||||
|
||||
3368. [bug] <dns/iptable.h> and <dns/zone.h> were not C++ safe.
|
||||
|
||||
3366. [bug] Fixed Read-After-Write dependency violation for IA64
|
||||
atomic operations. [RT #25181]
|
||||
|
||||
3365. [bug] Removed spurious newlines from log messages in
|
||||
zone.c [RT #30675]
|
||||
|
||||
3362. [bug] Setting some option values to 0 in named.conf
|
||||
could trigger an assertion failure on startup.
|
||||
[RT #27730]
|
||||
|
||||
3360. [bug] 'host -w' could die. [RT #18723]
|
||||
|
||||
3359. [bug] An improperly-formed TSIG secret could cause a
|
||||
memory leak. [RT #30607]
|
||||
|
||||
3358. [bug] Fix declaration of fatal in bin/named/server.c
|
||||
and bin/nsupdate/main.c. [RT #30522]
|
||||
|
||||
3357. [port] Add support for libxml2-2.8.x [RT #30440]
|
||||
|
||||
--- 9.6-ESV-R8b1 released ---
|
||||
|
||||
3354. [func] Improve OpenSSL error logging. [RT #29932]
|
||||
|
||||
3352. [bug] Ensure that learned server attributes timeout of the
|
||||
adb cache. [RT #29856]
|
||||
|
||||
3350. [bug] Memory read overrun in isc___mem_reallocate if
|
||||
ISC_MEM_DEBUGCTX memory debugging flag is set.
|
||||
[RT #30240]
|
||||
|
||||
3348. [bug] Prevent RRSIG data from being cached if a negative
|
||||
record matching the covering type exists at a higher
|
||||
trust level. Such data already can't be retrieved from
|
||||
the cache since change 3218 -- this prevents it
|
||||
being inserted into the cache as well. [RT #26809]
|
||||
|
||||
3346. [security] Bad-cache data could be used before it was
|
||||
initialized, causing an assert. [RT #30025]
|
||||
|
||||
3343. [bug] Relax isc_random_jitter() REQUIRE tests. [RT #29821]
|
||||
|
||||
3342. [bug] Change #3314 broke saving of stub zones to disk
|
||||
resulting in excessive cpu usage in some cases.
|
||||
[RT #29952]
|
||||
|
||||
3337. [bug] Change #3294 broke support for the multiple keys
|
||||
in controls. [RT #29694]
|
||||
|
||||
3335. [func] nslookup: return a nonzero exit code when unable
|
||||
to get an answer. [RT #29492]
|
||||
|
||||
3332. [bug] Re-use cached DS rrsets if possible. [RT #29446]
|
||||
|
||||
3331. [security] dns_rdataslab_fromrdataset could produce bad
|
||||
rdataslabs. [RT #29644]
|
||||
|
||||
3329. [bug] Handle RRSIG signer-name case consistently: We
|
||||
generate RRSIG records with the signer-name in
|
||||
lower case. We accept them with any case, but if
|
||||
they fail to validate, we try again in lower case.
|
||||
[RT #27451]
|
||||
|
||||
3328. [bug] Fixed inconsistent data checking in dst_parse.c.
|
||||
[RT #29401]
|
||||
|
||||
--- 9.6-ESV-R7 released ---
|
||||
|
||||
3318. [tuning] Reduce the amount of work performed while holding a
|
||||
bucket lock when finished with a fetch context.
|
||||
[RT #29239]
|
||||
|
||||
3314. [bug] The masters list could be updated while stub_callback
|
||||
or refresh_callback were using it. [RT #26732]
|
||||
|
||||
3313. [protocol] Add TLSA record type. [RT #28989]
|
||||
|
||||
3311. [bug] Abort the zone dump if zone->db is NULL in
|
||||
zone.c:zone_gotwritehandle. [RT #29028]
|
||||
|
||||
3310. [test] Increase table size for mutex profiling. [RT #28809]
|
||||
|
||||
3309. [bug] resolver.c:fctx_finddone() was not thread safe.
|
||||
[RT #27995]
|
||||
|
||||
3307. [bug] Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS.
|
||||
[RT #28956]
|
||||
|
||||
3304. [bug] Use hmctx, not mctx when freeing rbtdb->heaps.
|
||||
[RT #28571]
|
||||
|
||||
3301. [contrib] Update queryperf to build on darwin. Add -R flag
|
||||
for non-recursive queries. [RT #28565]
|
||||
|
||||
3300. [bug] Named could die if gssapi was enabled in named.conf
|
||||
but was not compiled in. [RT #28338]
|
||||
|
||||
3299. [bug] Make SDB handle errors from database drivers better.
|
||||
[RT #28534]
|
||||
|
||||
3232. [bug] Zero zone->curmaster before return in
|
||||
dns_zone_setmasterswithkeys(). [RT #26732]
|
||||
|
||||
3197. [bug] Don't try to log the filename and line number when
|
||||
the config parser can't open a file. [RT #22263]
|
||||
|
||||
--- 9.6-ESV-R6 released ---
|
||||
|
||||
3298. [bug] Named could dereference a NULL pointer in
|
||||
@@ -39,7 +644,7 @@
|
||||
despite succeeding over the loopback interface.
|
||||
[RT #27782]
|
||||
|
||||
3374. [bug] Log when a zone is not reusable. Only set loadtime
|
||||
3274. [bug] Log when a zone is not reusable. Only set loadtime
|
||||
on successful loads. [RT #27650]
|
||||
|
||||
3268. [bug] Convert RRSIG expiry times to 64 timestamps to work
|
||||
@@ -100,7 +705,7 @@
|
||||
|
||||
3234. [bug] 'make depend' produced invalid makefiles. [RT #26830]
|
||||
|
||||
3231. [bug] named could fail to send a uncompressable zone.
|
||||
3231. [bug] named could fail to send a incompressible zone.
|
||||
[RT #26796]
|
||||
|
||||
3230. [bug] 'dig axfr' failed to properly handle a multi-message
|
||||
@@ -116,7 +721,7 @@
|
||||
|
||||
--- 9.6-ESV-R6b1 released ---
|
||||
|
||||
3221. [bug] Fixed a potential coredump on shutdown due to
|
||||
3221. [bug] Fixed a potential core dump on shutdown due to
|
||||
referencing fetch context after it's been freed.
|
||||
[RT #26720]
|
||||
|
||||
@@ -132,7 +737,7 @@
|
||||
list prior to adding a reference to it leading a
|
||||
possible assertion failure. [RT #23219]
|
||||
|
||||
3208. [bug] 'dig -y' handle unknown tsig alorithm better.
|
||||
3208. [bug] 'dig -y' handle unknown tsig algorithm better.
|
||||
[RT #25522]
|
||||
|
||||
3207. [contrib] Fixed build error in Berkeley DB DLZ module. [RT #26444]
|
||||
@@ -168,7 +773,7 @@
|
||||
|
||||
3189. [test] Added a summary report after system tests. [RT #25517]
|
||||
|
||||
3187. [port] win32: support for Visual Studio 2008. [RT #26356]
|
||||
3187. [port] win32: support for Visual Studio 2008. [RT #26356]
|
||||
|
||||
3179. [port] kfreebsd: build issues. [RT #26273]
|
||||
|
||||
@@ -201,7 +806,7 @@
|
||||
an assert. [RT #25452]
|
||||
|
||||
3151. [bug] Queries for type RRSIG or SIG could be handled
|
||||
incorrectly. [RT #21050]
|
||||
incorrectly. [RT #21050]
|
||||
|
||||
3149. [tuning] Improve scalability by allocating one zone
|
||||
task per 100 zones at startup time. (The
|
||||
@@ -213,7 +818,7 @@
|
||||
3148. [bug] Processing of normal queries could be stalled when
|
||||
forwarding a UPDATE message. [RT #24711]
|
||||
|
||||
3146. [test] Fixed gcc4.6.0 errors in ATF. [RT #25598]
|
||||
3146. [test] Fixed gcc4.6.0 errors in ATF. [RT #25598]
|
||||
|
||||
3145. [test] Capture output of ATF unit tests in "./atf.out" if
|
||||
there were any errors while running them. [RT #25527]
|
||||
@@ -273,10 +878,10 @@
|
||||
dns_rdataset_totext() that could cause named to
|
||||
crash with an assertion failure. [RT #24777]
|
||||
|
||||
3121. [security] An authoritative name server sending a negative
|
||||
response containing a very large RRset could
|
||||
trigger an off-by-one error in the ncache code
|
||||
and crash named. [RT #24650]
|
||||
3121. [security] An authoritative name server sending a negative
|
||||
response containing a very large RRset could
|
||||
trigger an off-by-one error in the ncache code
|
||||
and crash named. [RT #24650]
|
||||
|
||||
3120. [bug] Named could fail to validate zones listed in a DLV
|
||||
that validated insecure without using DLV and had
|
||||
@@ -329,7 +934,7 @@
|
||||
glue learn for zone named is authoritative for.
|
||||
[RT #22842]
|
||||
|
||||
3071. [bug] has_nsec could be used unintialised in
|
||||
3071. [bug] has_nsec could be used uninitialized in
|
||||
update.c:next_active. [RT #20256]
|
||||
|
||||
3069. [cleanup] Silence warnings messages from clang static analysis.
|
||||
@@ -359,7 +964,7 @@
|
||||
max-cache-size, it was possible for cache memory
|
||||
to be exhausted and not recovered. [RT #23371]
|
||||
|
||||
3051. [bug] NS records obsure DNAME records at the bottom of the
|
||||
3051. [bug] NS records obscure DNAME records at the bottom of the
|
||||
zone if both are present. [RT #23035]
|
||||
|
||||
3046. [bug] Use RRSIG original TTL to compute validated RRset
|
||||
@@ -370,9 +975,9 @@
|
||||
|
||||
3043. [test] Merged in the NetBSD ATF test framework (currently
|
||||
version 0.12) for development of future unit tests.
|
||||
Use configure --with-atf to build ATF internally
|
||||
or configure --with-atf=prefix to use an external
|
||||
copy. [RT #23209]
|
||||
Use configure --with-atf to build ATF internally
|
||||
or configure --with-atf=prefix to use an external
|
||||
copy. [RT #23209]
|
||||
|
||||
3042. [bug] dig +trace could fail attempting to use IPv6
|
||||
addresses on systems with only IPv4 connectivity.
|
||||
@@ -562,7 +1167,7 @@
|
||||
2929. [bug] Improved handling of GSS security contexts:
|
||||
- added LRU expiration for generated TSIGs
|
||||
- added the ability to use a non-default realm
|
||||
- added new "realm" keyword in nsupdate
|
||||
- added new "realm" keyword in nsupdate
|
||||
- limited lifetime of generated keys to 1 hour
|
||||
or the lifetime of the context (whichever is
|
||||
smaller)
|
||||
@@ -668,7 +1273,7 @@
|
||||
2862. [bug] nsupdate didn't default to the parent zone when
|
||||
updating DS records. [RT #20896]
|
||||
|
||||
2859. [bug] When cancelling validation it was possible to leak
|
||||
2859. [bug] When canceling validation it was possible to leak
|
||||
memory. [RT #20800]
|
||||
|
||||
2858. [bug] RTT estimates were not being adjusted on ICMP errors.
|
||||
@@ -730,7 +1335,7 @@
|
||||
[RT #22062]
|
||||
|
||||
2952. [port] win32: named-checkzone and named-checkconf failed
|
||||
to initialise winsock. [RT #21932]
|
||||
to initialize winsock. [RT #21932]
|
||||
|
||||
2951. [bug] named failed to generate a correct signed response
|
||||
in a optout, delegation only zone with no secure
|
||||
@@ -927,11 +1532,11 @@
|
||||
trigger an assert. [RT #20368]
|
||||
|
||||
2705. [bug] Reconcile the XML stats version number with a later
|
||||
BIND9 release, by adding a "name" attribute to
|
||||
"cache" elements and increasing the version number
|
||||
to 2.2. (This is a minor version change, but may
|
||||
affect XML parsers if they assume the cache element
|
||||
doesn't take an attribute.)
|
||||
BIND9 release, by adding a "name" attribute to
|
||||
"cache" elements and increasing the version number
|
||||
to 2.2. (This is a minor version change, but may
|
||||
affect XML parsers if they assume the cache element
|
||||
doesn't take an attribute.)
|
||||
|
||||
2704. [bug] Serial of dynamic and stub zones could be inconsistent
|
||||
with their SOA serial. [RT #19387]
|
||||
@@ -1215,7 +1820,7 @@
|
||||
|
||||
2553. [bug] Reference leak on DNSSEC validation errors. [RT #19291]
|
||||
|
||||
2552. [bug] zero-no-soa-ttl-cache was not being honoured.
|
||||
2552. [bug] zero-no-soa-ttl-cache was not being honored.
|
||||
[RT #19340]
|
||||
|
||||
2551. [bug] Potential Reference leak on return. [RT #19341]
|
||||
@@ -1590,10 +2195,10 @@
|
||||
time. [RT #18277]
|
||||
|
||||
2423. [security] Randomize server selection on queries, so as to
|
||||
make forgery a little more difficult. Instead of
|
||||
always preferring the server with the lowest RTT,
|
||||
pick a server with RTT within the same 128
|
||||
millisecond band. [RT #18441]
|
||||
make forgery a little more difficult. Instead of
|
||||
always preferring the server with the lowest RTT,
|
||||
pick a server with RTT within the same 128
|
||||
millisecond band. [RT #18441]
|
||||
|
||||
2422. [bug] Handle the special return value of a empty node as
|
||||
if it was a NXRRSET in the validator. [RT #18447]
|
||||
@@ -1674,7 +2279,7 @@
|
||||
|
||||
2399. [placeholder]
|
||||
|
||||
2398. [bug] Improve file descriptor management. New,
|
||||
2398. [bug] Improve file descriptor management. New,
|
||||
temporary, named.conf option reserved-sockets,
|
||||
default 512. [RT #18344]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright (C) 1996-2003 Internet Software Consortium.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Frequently Asked Questions about BIND 9
|
||||
|
||||
Copyright © 2004-2010 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright © 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
|
||||
Copyright © 2000-2003 Internet Software Consortium.
|
||||
|
||||
@@ -869,7 +869,7 @@ A: If you run Tiger(Mac OS 10.4) or later then this is all you need to do:
|
||||
Copy the key statement from /etc/rndc.conf into /etc/rndc.key, e.g.:
|
||||
|
||||
key "rndc-key" {
|
||||
algorithm hmac-md5;
|
||||
algorithm hmac-sha256;
|
||||
secret "uvceheVuqf17ZwIcTydddw==";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" []>
|
||||
<!--
|
||||
- Copyright (C) 2004-2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -31,6 +31,7 @@
|
||||
<year>2009</year>
|
||||
<year>2010</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
@@ -1565,7 +1566,7 @@ rand_irqs="3 14 15"</programlisting>
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
key "rndc-key" {
|
||||
algorithm hmac-md5;
|
||||
algorithm hmac-sha256;
|
||||
secret "uvceheVuqf17ZwIcTydddw==";
|
||||
};</programlisting>
|
||||
</informalexample>
|
||||
|
||||
+19
-3
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1998-2002 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -54,15 +54,31 @@ installdirs:
|
||||
|
||||
install:: isc-config.sh installdirs
|
||||
${INSTALL_SCRIPT} isc-config.sh ${DESTDIR}${bindir}
|
||||
rm -f ${DESTDIR}${bindir}/bind9-config
|
||||
@LN@ ${DESTDIR}${bindir}/isc-config.sh ${DESTDIR}${bindir}/bind9-config
|
||||
${INSTALL_DATA} ${srcdir}/isc-config.sh.1 ${DESTDIR}${mandir}/man1
|
||||
rm -f ${DESTDIR}${mandir}/man1/bind9-config.1
|
||||
@LN@ ${DESTDIR}${mandir}/man1/isc-config.sh.1 ${DESTDIR}${mandir}/man1/bind9-config.1
|
||||
|
||||
tags:
|
||||
rm -f TAGS
|
||||
find lib bin -name "*.[ch]" -print | @ETAGS@ -
|
||||
|
||||
check: test
|
||||
test check:
|
||||
@if test -n "`${PERL} ${top_srcdir}/bin/tests/system/testsock.pl 2>&- || echo fail`"; then \
|
||||
echo I: NOTE: The tests were not run because they require that; \
|
||||
echo I: the IP addresses 10.53.0.1 through 10.53.0.8 are configured; \
|
||||
echo I: as alias addresses on the loopback interface. Please run; \
|
||||
echo I: \'bin/tests/system/ifconfig.sh up\' as root to configure; \
|
||||
echo I: them, then rerun the tests. Run make force-test to run the; \
|
||||
echo I: tests anyway.; \
|
||||
exit 1; \
|
||||
fi
|
||||
${MAKE} test-force
|
||||
|
||||
test:
|
||||
force-test: test-force
|
||||
|
||||
test-force:
|
||||
status=0; \
|
||||
(cd bin/tests && ${MAKE} ${MAKEDEFS} test) || status=1; \
|
||||
(test -f unit/unittest.sh && $(SHELL) unit/unittest.sh) || status=1; \
|
||||
|
||||
@@ -45,8 +45,38 @@ BIND 9
|
||||
For a detailed list of user-visible changes from
|
||||
previous releases, see the CHANGES file.
|
||||
|
||||
For up-to-date release notes and errata, see
|
||||
http://www.isc.org/software/bind9/releasenotes
|
||||
For up-to-date release notes and errata, see
|
||||
http://www.isc.org/software/bind9/releasenotes
|
||||
|
||||
BIND 9.6-ESV-R11 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R11 is a maintenance release, fixing bugs in
|
||||
BIND 9.6-ESV-R10, and also includes the following functional
|
||||
enhancement:
|
||||
|
||||
- "named" now preserves the capitalization of names when
|
||||
responding to queries.
|
||||
|
||||
BIND 9.6-ESV-R10 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R10 is a maintenance release, fixing bugs in BIND
|
||||
9.6-ESV-R9, and also patches the security flaw described in
|
||||
CVE-2013-3919.
|
||||
|
||||
BIND 9.6-ESV-R9 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R9 is a maintenance release, fixing bugs in BIND
|
||||
9.6-ESV-R8.
|
||||
|
||||
BIND 9.6-ESV-R8 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R8 includes several bug fixes and patches security
|
||||
flaws described in CVE-2012-1667, CVE-2012-3817 and CVE-2012-4244.
|
||||
|
||||
BIND 9.6-ESV-R7 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R7 is a maintenance release, fixing bugs in BIND
|
||||
9.6-ESV-R6.
|
||||
|
||||
BIND 9.6-ESV-R6 (Extended Support Version)
|
||||
|
||||
@@ -55,7 +85,7 @@ BIND 9.6-ESV-R6 (Extended Support Version)
|
||||
|
||||
BIND 9.6-ESV-R5 (Extended Support Version)
|
||||
|
||||
BIND 9.4-ESV-R5 is a maintenance release, fixing bugs in BIND
|
||||
BIND 9.6-ESV-R5 is a maintenance release, fixing bugs in BIND
|
||||
9.6-ESV-R4.
|
||||
|
||||
BIND 9.6.3/BIND 9.6-ESV-R4
|
||||
@@ -66,21 +96,21 @@ BIND 9.6.3/BIND 9.6-ESV-R4
|
||||
BIND 9.6.2
|
||||
|
||||
BIND 9.6.2 is a maintenance release, fixing bugs in 9.6.1.
|
||||
It also introduces support for the SHA-2 DNSSEC algorithms,
|
||||
RSASHA256 and RSASHA512.
|
||||
It also introduces support for the SHA-2 DNSSEC algorithms,
|
||||
RSASHA256 and RSASHA512.
|
||||
|
||||
Known issues in this release:
|
||||
Known issues in this release:
|
||||
|
||||
- A validating resolver that has been incorrectly configured with
|
||||
an invalid trust anchor will be unable to resolve names covered
|
||||
by that trust anchor. In all current versions of BIND 9, such a
|
||||
resolver will also generate significant unnecessary DNS traffic
|
||||
while trying to validate. The latter problem will be addressed
|
||||
in future BIND 9 releases. In the meantime, to avoid these
|
||||
problems, exercise caution when configuring "trusted-keys":
|
||||
make sure all keys are correct and current when you add them,
|
||||
and update your configuration in a timely manner when keys
|
||||
roll over.
|
||||
- A validating resolver that has been incorrectly configured with
|
||||
an invalid trust anchor will be unable to resolve names covered
|
||||
by that trust anchor. In all current versions of BIND 9, such a
|
||||
resolver will also generate significant unnecessary DNS traffic
|
||||
while trying to validate. The latter problem will be addressed
|
||||
in future BIND 9 releases. In the meantime, to avoid these
|
||||
problems, exercise caution when configuring "trusted-keys":
|
||||
make sure all keys are correct and current when you add them,
|
||||
and update your configuration in a timely manner when keys
|
||||
roll over.
|
||||
|
||||
BIND 9.6.1
|
||||
|
||||
@@ -88,17 +118,17 @@ BIND 9.6.1
|
||||
|
||||
BIND 9.6.0
|
||||
|
||||
BIND 9.6.0 includes a number of changes from BIND 9.5 and earlier
|
||||
releases, including:
|
||||
BIND 9.6.0 includes a number of changes from BIND 9.5 and earlier
|
||||
releases, including:
|
||||
|
||||
Full NSEC3 support
|
||||
Full NSEC3 support
|
||||
|
||||
Automatic zone re-signing
|
||||
Automatic zone re-signing
|
||||
|
||||
New update-policy methods tcp-self and 6to4-self
|
||||
|
||||
The BIND 8 resolver library, libbind, has been removed from the
|
||||
BIND 9 distribution and is now available as a separate download.
|
||||
The BIND 8 resolver library, libbind, has been removed from the
|
||||
BIND 9 distribution and is now available as a separate download.
|
||||
|
||||
Change the default pid file location from /var/run to
|
||||
/var/run/{named,lwresd} for improved chroot/setuid support.
|
||||
@@ -120,9 +150,9 @@ BIND 9.5.0
|
||||
|
||||
Use Doxygen to generate internal documentation.
|
||||
|
||||
Efficient LRU cache-cleaning mechanism.
|
||||
Efficient LRU cache-cleaning mechanism.
|
||||
|
||||
NSID support.
|
||||
NSID support.
|
||||
|
||||
BIND 9.4.0
|
||||
|
||||
@@ -331,28 +361,28 @@ BIND 9.2.0
|
||||
including:
|
||||
|
||||
- The size of the cache can now be limited using the
|
||||
"max-cache-size" option.
|
||||
"max-cache-size" option.
|
||||
|
||||
- The server can now automatically convert RFC1886-style
|
||||
recursive lookup requests into RFC2874-style lookups,
|
||||
when enabled using the new option "allow-v6-synthesis".
|
||||
This allows stub resolvers that support AAAA records
|
||||
but not A6 record chains or binary labels to perform
|
||||
lookups in domains that make use of these IPv6 DNS
|
||||
features.
|
||||
This allows stub resolvers that support AAAA records
|
||||
but not A6 record chains or binary labels to perform
|
||||
lookups in domains that make use of these IPv6 DNS
|
||||
features.
|
||||
|
||||
- Performance has been improved.
|
||||
|
||||
- The man pages now use the more portable "man" macros
|
||||
rather than the "mandoc" macros, and are installed
|
||||
by "make install".
|
||||
by "make install".
|
||||
|
||||
- The named.conf parser has been completely rewritten.
|
||||
It now supports "include" directives in more
|
||||
places such as inside "view" statements, and it no
|
||||
longer has any reserved words.
|
||||
- The named.conf parser has been completely rewritten.
|
||||
It now supports "include" directives in more
|
||||
places such as inside "view" statements, and it no
|
||||
longer has any reserved words.
|
||||
|
||||
- The "rndc status" command is now implemented.
|
||||
- The "rndc status" command is now implemented.
|
||||
|
||||
- rndc can now be configured automatically.
|
||||
|
||||
@@ -415,7 +445,7 @@ BIND 9.2.0
|
||||
--with-libtool does not work on AIX.
|
||||
|
||||
A bug in some versions of the Microsoft DNS server can cause zone
|
||||
transfers from a BIND 9 server to a W2K server to fail. For details,
|
||||
transfers from a BIND 9 server to a W2K server to fail. For details,
|
||||
see the "Zone Transfers" section in doc/misc/migration.
|
||||
|
||||
|
||||
@@ -437,9 +467,9 @@ Building
|
||||
Ubuntu 7.04, 7.10
|
||||
Windows XP/2003/2008
|
||||
|
||||
NOTE: As of BIND 9.5.1, 9.4.3, and 9.3.6, older versions of
|
||||
Windows, including Windows NT and Windows 2000, are no longer
|
||||
supported.
|
||||
NOTE: As of BIND 9.5.1, 9.4.3, and 9.3.6, older versions of
|
||||
Windows, including Windows NT and Windows 2000, are no longer
|
||||
supported.
|
||||
|
||||
We have recent reports from the user community that a supported
|
||||
version of BIND will build and run on the following systems:
|
||||
@@ -492,7 +522,7 @@ Building
|
||||
-DDIG_SIGCHASE_BU=1)
|
||||
Disable dropping queries from particular well known ports.
|
||||
-DNS_CLIENT_DROPPORT=0
|
||||
Sibling glue checking in named-checkzone is enabled by default.
|
||||
Sibling glue checking in named-checkzone is enabled by default.
|
||||
To disable the default check set. -DCHECK_SIBLING=0
|
||||
named-checkzone checks out-of-zone addresses by default.
|
||||
To disable this default set. -DCHECK_LOCAL=0
|
||||
@@ -539,10 +569,10 @@ Building
|
||||
on the configure command line. The default is operating
|
||||
system dependent.
|
||||
|
||||
Support for the "fixed" rrset-order option can be enabled
|
||||
or disabled by specifying "--enable-fixed-rrset" or
|
||||
"--disable-fixed-rrset" on the configure command line.
|
||||
The default is "disabled", to reduce memory footprint.
|
||||
Support for the "fixed" rrset-order option can be enabled
|
||||
or disabled by specifying "--enable-fixed-rrset" or
|
||||
"--disable-fixed-rrset" on the configure command line.
|
||||
The default is "disabled", to reduce memory footprint.
|
||||
|
||||
If your operating system has integrated support for IPv6, it
|
||||
will be used automatically. If you have installed KAME IPv6
|
||||
|
||||
Vendored
+5
-2
@@ -1,2 +1,5 @@
|
||||
sinclude(./libtool.m4)dnl
|
||||
|
||||
sinclude(libtool.m4/libtool.m4)dnl
|
||||
sinclude(libtool.m4/ltoptions.m4)dnl
|
||||
sinclude(libtool.m4/ltsugar.m4)dnl
|
||||
sinclude(libtool.m4/ltversion.m4)dnl
|
||||
sinclude(libtool.m4/lt~obsolete.m4)dnl
|
||||
|
||||
+10
-4
@@ -196,6 +196,10 @@ checkns(dns_zone_t *zone, dns_name_t *name, dns_name_t *owner,
|
||||
a->type == dns_rdatatype_a);
|
||||
REQUIRE(aaaa == NULL || !dns_rdataset_isassociated(aaaa) ||
|
||||
aaaa->type == dns_rdatatype_aaaa);
|
||||
|
||||
if (a == NULL || aaaa == NULL)
|
||||
return (answer);
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_flags = AI_CANONNAME;
|
||||
hints.ai_family = PF_UNSPEC;
|
||||
@@ -258,8 +262,7 @@ checkns(dns_zone_t *zone, dns_name_t *name, dns_name_t *owner,
|
||||
}
|
||||
return (ISC_TRUE);
|
||||
}
|
||||
if (a == NULL || aaaa == NULL)
|
||||
return (answer);
|
||||
|
||||
/*
|
||||
* Check that all glue records really exist.
|
||||
*/
|
||||
@@ -597,7 +600,7 @@ load_zone(isc_mem_t *mctx, const char *zonename, const char *filename,
|
||||
|
||||
dns_zone_settype(zone, dns_zone_master);
|
||||
|
||||
isc_buffer_init(&buffer, zonename, strlen(zonename));
|
||||
isc_buffer_constinit(&buffer, zonename, strlen(zonename));
|
||||
isc_buffer_add(&buffer, strlen(zonename));
|
||||
dns_fixedname_init(&fixorigin);
|
||||
origin = dns_fixedname_name(&fixorigin);
|
||||
@@ -640,6 +643,9 @@ dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
||||
{
|
||||
isc_result_t result;
|
||||
FILE *output = stdout;
|
||||
const char *flags;
|
||||
|
||||
flags = (fileformat == dns_masterformat_text) ? "w+" : "wb+";
|
||||
|
||||
if (debug) {
|
||||
if (filename != NULL && strcmp(filename, "-") != 0)
|
||||
@@ -650,7 +656,7 @@ dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
|
||||
}
|
||||
|
||||
if (filename != NULL && strcmp(filename, "-") != 0) {
|
||||
result = isc_stdio_open(filename, "w+", &output);
|
||||
result = isc_stdio_open(filename, flags, &output);
|
||||
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not open output "
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -39,10 +39,13 @@
|
||||
|
||||
#include <bind9/check.h>
|
||||
|
||||
#include <dns/db.h>
|
||||
#include <dns/fixedname.h>
|
||||
#include <dns/log.h>
|
||||
#include <dns/name.h>
|
||||
#include <dns/rdataclass.h>
|
||||
#include <dns/result.h>
|
||||
#include <dns/rootns.h>
|
||||
#include <dns/zone.h>
|
||||
|
||||
#include "check-tool.h"
|
||||
@@ -151,6 +154,30 @@ config_get(const cfg_obj_t **maps, const char *name, const cfg_obj_t **obj) {
|
||||
}
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
configure_hint(const char *zfile, const char *zclass, isc_mem_t *mctx) {
|
||||
isc_result_t result;
|
||||
dns_db_t *db = NULL;
|
||||
dns_rdataclass_t rdclass;
|
||||
isc_textregion_t r;
|
||||
|
||||
if (zfile == NULL)
|
||||
return (ISC_R_FAILURE);
|
||||
|
||||
DE_CONST(zclass, r.base);
|
||||
r.length = strlen(zclass);
|
||||
result = dns_rdataclass_fromtext(&rdclass, &r);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
|
||||
result = dns_rootns_create(mctx, rdclass, zfile, &db);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
|
||||
dns_db_detach(&db);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
/*% configure the zone */
|
||||
static isc_result_t
|
||||
configure_zone(const char *vclass, const char *view,
|
||||
@@ -161,7 +188,7 @@ configure_zone(const char *vclass, const char *view,
|
||||
isc_result_t result;
|
||||
const char *zclass;
|
||||
const char *zname;
|
||||
const char *zfile;
|
||||
const char *zfile = NULL;
|
||||
const cfg_obj_t *maps[4];
|
||||
const cfg_obj_t *zoptions = NULL;
|
||||
const cfg_obj_t *classobj = NULL;
|
||||
@@ -195,15 +222,26 @@ configure_zone(const char *vclass, const char *view,
|
||||
cfg_map_get(zoptions, "type", &typeobj);
|
||||
if (typeobj == NULL)
|
||||
return (ISC_R_FAILURE);
|
||||
if (strcasecmp(cfg_obj_asstring(typeobj), "master") != 0)
|
||||
|
||||
cfg_map_get(zoptions, "file", &fileobj);
|
||||
if (fileobj != NULL)
|
||||
zfile = cfg_obj_asstring(fileobj);
|
||||
|
||||
/*
|
||||
* Check hints files for hint zones.
|
||||
* Skip loading checks for any type other than master.
|
||||
*/
|
||||
if (strcasecmp(cfg_obj_asstring(typeobj), "hint") == 0)
|
||||
return (configure_hint(zfile, zclass, mctx));
|
||||
else if ((strcasecmp(cfg_obj_asstring(typeobj), "master") != 0))
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
if (zfile == NULL)
|
||||
return (ISC_R_FAILURE);
|
||||
|
||||
cfg_map_get(zoptions, "database", &dbobj);
|
||||
if (dbobj != NULL)
|
||||
return (ISC_R_SUCCESS);
|
||||
cfg_map_get(zoptions, "file", &fileobj);
|
||||
if (fileobj == NULL)
|
||||
return (ISC_R_FAILURE);
|
||||
zfile = cfg_obj_asstring(fileobj);
|
||||
|
||||
obj = NULL;
|
||||
if (get_maps(maps, "check-mx", &obj)) {
|
||||
@@ -276,6 +314,18 @@ configure_zone(const char *vclass, const char *view,
|
||||
zone_options &= ~DNS_ZONEOPT_CHECKSIBLING;
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
if (get_maps(maps, "check-spf", &obj)) {
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
|
||||
zone_options |= DNS_ZONEOPT_CHECKSPF;
|
||||
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
|
||||
zone_options &= ~DNS_ZONEOPT_CHECKSPF;
|
||||
} else
|
||||
INSIST(0);
|
||||
} else {
|
||||
zone_options |= DNS_ZONEOPT_CHECKSPF;
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
if (get_checknames(maps, &obj)) {
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
|
||||
@@ -311,7 +361,7 @@ configure_zone(const char *vclass, const char *view,
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fprintf(stderr, "%s/%s/%s: %s\n", view, zname, zclass,
|
||||
dns_result_totext(result));
|
||||
return(result);
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*% configure a view */
|
||||
@@ -439,6 +489,7 @@ main(int argc, char **argv) {
|
||||
if (isc_commandline_option != '?')
|
||||
fprintf(stderr, "%s: invalid argument -%c\n",
|
||||
program, isc_commandline_option);
|
||||
/* FALLTHROUGH */
|
||||
case 'h':
|
||||
usage();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004-2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2000-2002 Internet Software Consortium.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -33,9 +33,9 @@
|
||||
named\-checkzone, named\-compilezone \- zone file validity checking or converting tool
|
||||
.SH "SYNOPSIS"
|
||||
.HP 16
|
||||
\fBnamed\-checkzone\fR [\fB\-d\fR] [\fB\-h\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-M\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-S\ \fR\fB\fImode\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {zonename} {filename}
|
||||
\fBnamed\-checkzone\fR [\fB\-d\fR] [\fB\-h\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-M\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-S\ \fR\fB\fImode\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-T\ \fR\fB\fImode\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {zonename} {filename}
|
||||
.HP 18
|
||||
\fBnamed\-compilezone\fR [\fB\-d\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-C\ \fR\fB\fImode\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-o\ \fR\fB\fIfilename\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {\fB\-o\ \fR\fB\fIfilename\fR\fR} {zonename} {filename}
|
||||
\fBnamed\-compilezone\fR [\fB\-d\fR] [\fB\-j\fR] [\fB\-q\fR] [\fB\-v\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-C\ \fR\fB\fImode\fR\fR] [\fB\-f\ \fR\fB\fIformat\fR\fR] [\fB\-F\ \fR\fB\fIformat\fR\fR] [\fB\-i\ \fR\fB\fImode\fR\fR] [\fB\-k\ \fR\fB\fImode\fR\fR] [\fB\-m\ \fR\fB\fImode\fR\fR] [\fB\-n\ \fR\fB\fImode\fR\fR] [\fB\-o\ \fR\fB\fIfilename\fR\fR] [\fB\-s\ \fR\fB\fIstyle\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-T\ \fR\fB\fImode\fR\fR] [\fB\-w\ \fR\fB\fIdirectory\fR\fR] [\fB\-D\fR] [\fB\-W\ \fR\fB\fImode\fR\fR] {\fB\-o\ \fR\fB\fIfilename\fR\fR} {zonename} {filename}
|
||||
.SH "DESCRIPTION"
|
||||
.PP
|
||||
\fBnamed\-checkzone\fR
|
||||
@@ -227,6 +227,14 @@ Chroot to
|
||||
so that include directives in the configuration file are processed as if run by a similarly chrooted named.
|
||||
.RE
|
||||
.PP
|
||||
\-T \fImode\fR
|
||||
.RS 4
|
||||
Check if Sender Policy Framework records (TXT and SPF) both exist or both don't exist. A warning is issued if they don't match. Possible modes are
|
||||
\fB"warn"\fR
|
||||
(default),
|
||||
\fB"ignore"\fR.
|
||||
.RE
|
||||
.PP
|
||||
\-w \fIdirectory\fR
|
||||
.RS 4
|
||||
chdir to
|
||||
@@ -272,7 +280,7 @@ BIND 9 Administrator Reference Manual.
|
||||
.PP
|
||||
Internet Systems Consortium
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004\-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004\-2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
Copyright \(co 2000\-2002 Internet Software Consortium.
|
||||
.br
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -144,17 +144,19 @@ main(int argc, char **argv) {
|
||||
if (progmode == progmode_compile) {
|
||||
zone_options |= (DNS_ZONEOPT_CHECKNS |
|
||||
DNS_ZONEOPT_FATALNS |
|
||||
DNS_ZONEOPT_CHECKSPF |
|
||||
DNS_ZONEOPT_CHECKNAMES |
|
||||
DNS_ZONEOPT_CHECKNAMESFAIL |
|
||||
DNS_ZONEOPT_CHECKWILDCARD);
|
||||
}
|
||||
} else
|
||||
zone_options |= DNS_ZONEOPT_CHECKSPF;
|
||||
|
||||
#define ARGCMP(X) (strcmp(isc_commandline_argument, X) == 0)
|
||||
|
||||
isc_commandline_errprint = ISC_FALSE;
|
||||
|
||||
while ((c = isc_commandline_parse(argc, argv,
|
||||
"c:df:hi:jk:m:n:qs:t:o:vw:DF:M:S:W:"))
|
||||
"c:df:hi:jk:m:n:qs:t:o:vw:DF:M:S:T:W:"))
|
||||
!= EOF) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
@@ -343,6 +345,18 @@ main(int argc, char **argv) {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
if (ARGCMP("warn")) {
|
||||
zone_options |= DNS_ZONEOPT_CHECKSPF;
|
||||
} else if (ARGCMP("ignore")) {
|
||||
zone_options &= ~DNS_ZONEOPT_CHECKSPF;
|
||||
} else {
|
||||
fprintf(stderr, "invalid argument to -T: %s\n",
|
||||
isc_commandline_argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'W':
|
||||
if (ARGCMP("warn"))
|
||||
zone_options |= DNS_ZONEOPT_CHECKWILDCARD;
|
||||
@@ -354,6 +368,7 @@ main(int argc, char **argv) {
|
||||
if (isc_commandline_option != '?')
|
||||
fprintf(stderr, "%s: invalid argument -%c\n",
|
||||
prog_name, isc_commandline_option);
|
||||
/* FALLTHROUGH */
|
||||
case 'h':
|
||||
usage();
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2002 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -38,6 +38,7 @@
|
||||
<year>2007</year>
|
||||
<year>2009</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
@@ -73,6 +74,7 @@
|
||||
<arg><option>-s <replaceable class="parameter">style</replaceable></option></arg>
|
||||
<arg><option>-S <replaceable class="parameter">mode</replaceable></option></arg>
|
||||
<arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg>
|
||||
<arg><option>-T <replaceable class="parameter">mode</replaceable></option></arg>
|
||||
<arg><option>-w <replaceable class="parameter">directory</replaceable></option></arg>
|
||||
<arg><option>-D</option></arg>
|
||||
<arg><option>-W <replaceable class="parameter">mode</replaceable></option></arg>
|
||||
@@ -96,6 +98,7 @@
|
||||
<arg><option>-o <replaceable class="parameter">filename</replaceable></option></arg>
|
||||
<arg><option>-s <replaceable class="parameter">style</replaceable></option></arg>
|
||||
<arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg>
|
||||
<arg><option>-T <replaceable class="parameter">mode</replaceable></option></arg>
|
||||
<arg><option>-w <replaceable class="parameter">directory</replaceable></option></arg>
|
||||
<arg><option>-D</option></arg>
|
||||
<arg><option>-W <replaceable class="parameter">mode</replaceable></option></arg>
|
||||
@@ -364,6 +367,18 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-T <replaceable class="parameter">mode</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Check if Sender Policy Framework records (TXT and SPF)
|
||||
both exist or both don't exist. A warning is issued
|
||||
if they don't match. Possible modes are
|
||||
<command>"warn"</command> (default), <command>"ignore"</command>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-w <replaceable class="parameter">directory</replaceable></term>
|
||||
<listitem>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2002 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -29,11 +29,11 @@
|
||||
</div>
|
||||
<div class="refsynopsisdiv">
|
||||
<h2>Synopsis</h2>
|
||||
<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div>
|
||||
<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div>
|
||||
<div class="cmdsynopsis"><p><code class="command">named-checkzone</code> [<code class="option">-d</code>] [<code class="option">-h</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-M <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-S <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div>
|
||||
<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-T <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543677"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543698"></a><h2>DESCRIPTION</h2>
|
||||
<p><span><strong class="command">named-checkzone</strong></span>
|
||||
checks the syntax and integrity of a zone file. It performs the
|
||||
same checks as <span><strong class="command">named</strong></span> does when loading a
|
||||
@@ -53,7 +53,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543713"></a><h2>OPTIONS</h2>
|
||||
<a name="id2543733"></a><h2>OPTIONS</h2>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term">-d</span></dt>
|
||||
<dd><p>
|
||||
@@ -206,6 +206,13 @@
|
||||
directives in the configuration file are processed as if
|
||||
run by a similarly chrooted named.
|
||||
</p></dd>
|
||||
<dt><span class="term">-T <em class="replaceable"><code>mode</code></em></span></dt>
|
||||
<dd><p>
|
||||
Check if Sender Policy Framework records (TXT and SPF)
|
||||
both exist or both don't exist. A warning is issued
|
||||
if they don't match. Possible modes are
|
||||
<span><strong class="command">"warn"</strong></span> (default), <span><strong class="command">"ignore"</strong></span>.
|
||||
</p></dd>
|
||||
<dt><span class="term">-w <em class="replaceable"><code>directory</code></em></span></dt>
|
||||
<dd><p>
|
||||
chdir to <code class="filename">directory</code> so that
|
||||
@@ -239,14 +246,14 @@
|
||||
</dl></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544333"></a><h2>RETURN VALUES</h2>
|
||||
<a name="id2544377"></a><h2>RETURN VALUES</h2>
|
||||
<p><span><strong class="command">named-checkzone</strong></span>
|
||||
returns an exit status of 1 if
|
||||
errors were detected and 0 otherwise.
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544345"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2544389"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>,
|
||||
<em class="citetitle">RFC 1035</em>,
|
||||
@@ -254,7 +261,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544446"></a><h2>AUTHOR</h2>
|
||||
<a name="id2544422"></a><h2>AUTHOR</h2>
|
||||
<p><span class="corpauthor">Internet Systems Consortium</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+23
-8
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -20,11 +20,11 @@
|
||||
.\" Title: dig
|
||||
.\" Author:
|
||||
.\" Generator: DocBook XSL Stylesheets v1.71.1 <http://docbook.sf.net/>
|
||||
.\" Date: Jun 30, 2000
|
||||
.\" Date: June 30, 2000
|
||||
.\" Manual: BIND9
|
||||
.\" Source: BIND9
|
||||
.\"
|
||||
.TH "DIG" "1" "Jun 30, 2000" "BIND9" "BIND9"
|
||||
.TH "DIG" "1" "June 30, 2000" "BIND9" "BIND9"
|
||||
.\" disable hyphenation
|
||||
.nh
|
||||
.\" disable justification (adjust text to left margin only)
|
||||
@@ -57,7 +57,9 @@ allows multiple lookups to be issued from the command line.
|
||||
Unless it is told to query a specific name server,
|
||||
\fBdig\fR
|
||||
will try each of the servers listed in
|
||||
\fI/etc/resolv.conf\fR.
|
||||
\fI/etc/resolv.conf\fR. If no usable server addresses are found,
|
||||
\fBdig\fR
|
||||
will send the query to the local host.
|
||||
.PP
|
||||
When no command line arguments or options are given,
|
||||
\fBdig\fR
|
||||
@@ -95,13 +97,20 @@ is the name or IP address of the name server to query. This can be an IPv4 addre
|
||||
\fIserver\fR
|
||||
argument is a hostname,
|
||||
\fBdig\fR
|
||||
resolves that name before querying that name server. If no
|
||||
resolves that name before querying that name server.
|
||||
.sp
|
||||
If no
|
||||
\fIserver\fR
|
||||
argument is provided,
|
||||
\fBdig\fR
|
||||
consults
|
||||
\fI/etc/resolv.conf\fR
|
||||
and queries the name servers listed there. The reply from the name server that responds is displayed.
|
||||
\fI/etc/resolv.conf\fR; if an address is found there, it queries the name server at that address. If either of the
|
||||
\fB\-4\fR
|
||||
or
|
||||
\fB\-6\fR
|
||||
options are in use, then only addresses for the corresponding transport will be tried. If no usable addresses are found,
|
||||
\fBdig\fR
|
||||
will send the query to the local host. The reply from the name server that responds is displayed.
|
||||
.RE
|
||||
.PP
|
||||
\fBname\fR
|
||||
@@ -500,6 +509,12 @@ When chasing DNSSEC signature chains perform a top\-down validation. Requires di
|
||||
.RS 4
|
||||
Include an EDNS name server ID request when sending a query.
|
||||
.RE
|
||||
.PP
|
||||
\fB+[no]keepopen\fR
|
||||
.RS 4
|
||||
Keep the TCP socket open between queries and reuse it rather than creating a new TCP socket for each lookup. The default is
|
||||
\fB+nokeepopen\fR.
|
||||
.RE
|
||||
.SH "MULTIPLE QUERIES"
|
||||
.PP
|
||||
The BIND 9 implementation of
|
||||
@@ -562,7 +577,7 @@ RFC1035.
|
||||
.PP
|
||||
There are probably too many query options.
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004\-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004\-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
Copyright \(co 2000\-2003 Internet Software Consortium.
|
||||
.br
|
||||
|
||||
+27
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -185,7 +185,7 @@ help(void) {
|
||||
" +domain=### (Set default domainname)\n"
|
||||
" +bufsize=### (Set EDNS0 Max UDP packet size)\n"
|
||||
" +ndots=### (Set NDOTS value)\n"
|
||||
" +edns=### (Set EDNS version)\n"
|
||||
" +[no]edns[=###] (Set EDNS version) [0]\n"
|
||||
" +[no]search (Set whether to use searchlist)\n"
|
||||
" +[no]showsearch (Search with intermediate results)\n"
|
||||
" +[no]defname (Ditto)\n"
|
||||
@@ -223,6 +223,7 @@ help(void) {
|
||||
#endif
|
||||
#endif
|
||||
" +[no]multiline (Print records in an expanded format)\n"
|
||||
" +[no]keepopen (Keep the TCP socket open between queries)\n"
|
||||
" global d-opts and servers (before host name) affect all queries.\n"
|
||||
" local d-opts and servers (after host name) affect only that lookup.\n"
|
||||
" -h (print help and exit)\n"
|
||||
@@ -238,6 +239,8 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
isc_uint64_t diff;
|
||||
isc_time_t now;
|
||||
time_t tnow;
|
||||
struct tm tmnow;
|
||||
char time_str[100];
|
||||
char fromtext[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
isc_sockaddr_format(from, fromtext, sizeof(fromtext));
|
||||
@@ -249,7 +252,10 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
printf(";; Query time: %ld msec\n", (long int)diff/1000);
|
||||
printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
|
||||
time(&tnow);
|
||||
printf(";; WHEN: %s", ctime(&tnow));
|
||||
tmnow = *localtime(&tnow);
|
||||
if (strftime(time_str, sizeof(time_str),
|
||||
"%a %b %d %H:%M:%S %Z %Y", &tmnow) > 0U)
|
||||
printf(";; WHEN: %s\n", time_str);
|
||||
if (query->lookup->doing_xfr) {
|
||||
printf(";; XFR size: %u records (messages %u, "
|
||||
"bytes %" ISC_PRINT_QUADFORMAT "u)\n",
|
||||
@@ -257,7 +263,6 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
query->byte_count);
|
||||
} else {
|
||||
printf(";; MSG SIZE rcvd: %u\n", bytes);
|
||||
|
||||
}
|
||||
if (key != NULL) {
|
||||
if (!validated)
|
||||
@@ -274,7 +279,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
"from %s(%s) in %d ms\n\n",
|
||||
query->lookup->doing_xfr ?
|
||||
query->byte_count : (isc_uint64_t)bytes,
|
||||
fromtext, query->servname,
|
||||
fromtext, query->userarg,
|
||||
(int)diff/1000);
|
||||
}
|
||||
}
|
||||
@@ -520,8 +525,16 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
printf(";; WARNING: recursion requested "
|
||||
"but not available\n");
|
||||
}
|
||||
if (msg != query->lookup->sendmsg &&
|
||||
query->lookup->edns != -1 && msg->opt == NULL &&
|
||||
(msg->rcode == dns_rcode_formerr ||
|
||||
msg->rcode == dns_rcode_notimp))
|
||||
printf("\n;; WARNING: EDNS query returned status "
|
||||
"%s - retry with '%s+noedns'\n",
|
||||
rcode_totext(msg->rcode),
|
||||
query->lookup->dnssec ? "+nodnssec ": "");
|
||||
if (msg != query->lookup->sendmsg && extrabytes != 0U)
|
||||
printf(";; WARNING: Messages has %u extra byte%s at "
|
||||
printf(";; WARNING: Message has %u extra byte%s at "
|
||||
"end\n", extrabytes, extrabytes != 0 ? "s" : "");
|
||||
}
|
||||
|
||||
@@ -850,8 +863,10 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
lookup->edns = -1;
|
||||
break;
|
||||
}
|
||||
if (value == NULL)
|
||||
goto need_value;
|
||||
if (value == NULL) {
|
||||
lookup->edns = 0;
|
||||
break;
|
||||
}
|
||||
lookup->edns = (isc_int16_t) parse_uint(value, "edns", 255);
|
||||
break;
|
||||
case 'f': /* fail */
|
||||
@@ -870,6 +885,10 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
lookup->ignore = ISC_TRUE;
|
||||
}
|
||||
break;
|
||||
case 'k':
|
||||
FULLCHECK("keepopen");
|
||||
keep_open = state;
|
||||
break;
|
||||
case 'm': /* multiline */
|
||||
FULLCHECK("multiline");
|
||||
multiline = state;
|
||||
|
||||
+35
-18
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -22,7 +22,7 @@
|
||||
<refentry id="man.dig">
|
||||
|
||||
<refentryinfo>
|
||||
<date>Jun 30, 2000</date>
|
||||
<date>June 30, 2000</date>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
@@ -45,6 +45,7 @@
|
||||
<year>2008</year>
|
||||
<year>2009</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
@@ -116,9 +117,10 @@
|
||||
|
||||
<para>
|
||||
Unless it is told to query a specific name server,
|
||||
<command>dig</command> will try each of the servers listed
|
||||
in
|
||||
<filename>/etc/resolv.conf</filename>.
|
||||
<command>dig</command> will try each of the servers listed in
|
||||
<filename>/etc/resolv.conf</filename>. If no usable server addresses
|
||||
are found, <command>dig</command> will send the query to the local
|
||||
host.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@@ -157,20 +159,25 @@
|
||||
<term><constant>server</constant></term>
|
||||
<listitem>
|
||||
<para>
|
||||
is the name or IP address of the name server to query. This can
|
||||
be an IPv4
|
||||
address in dotted-decimal notation or an IPv6
|
||||
is the name or IP address of the name server to query. This
|
||||
can be an IPv4 address in dotted-decimal notation or an IPv6
|
||||
address in colon-delimited notation. When the supplied
|
||||
<parameter>server</parameter> argument is a
|
||||
hostname,
|
||||
<command>dig</command> resolves that name before
|
||||
querying that name
|
||||
server. If no <parameter>server</parameter>
|
||||
argument is provided,
|
||||
<command>dig</command> consults <filename>/etc/resolv.conf</filename>
|
||||
and queries the name servers listed there. The reply from the
|
||||
name
|
||||
server that responds is displayed.
|
||||
<parameter>server</parameter> argument is a hostname,
|
||||
<command>dig</command> resolves that name before querying
|
||||
that name server.
|
||||
</para>
|
||||
<para>
|
||||
If no <parameter>server</parameter> argument is
|
||||
provided, <command>dig</command> consults
|
||||
<filename>/etc/resolv.conf</filename>; if an
|
||||
address is found there, it queries the name server at
|
||||
that address. If either of the <option>-4</option> or
|
||||
<option>-6</option> options are in use, then
|
||||
only addresses for the corresponding transport
|
||||
will be tried. If no usable addresses are found,
|
||||
<command>dig</command> will send the query to the
|
||||
local host. The reply from the name server that
|
||||
responds is displayed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -850,6 +857,16 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>+[no]keepopen</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Keep the TCP socket open between queries and reuse it rather
|
||||
than creating a new TCP socket for each lookup. The default
|
||||
is <option>+nokeepopen</option>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
|
||||
+42
-28
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -34,7 +34,7 @@
|
||||
<div class="cmdsynopsis"><p><code class="command">dig</code> [global-queryopt...] [query...]</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543522"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543525"></a><h2>DESCRIPTION</h2>
|
||||
<p><span><strong class="command">dig</strong></span>
|
||||
(domain information groper) is a flexible tool
|
||||
for interrogating DNS name servers. It performs DNS lookups and
|
||||
@@ -57,9 +57,10 @@
|
||||
</p>
|
||||
<p>
|
||||
Unless it is told to query a specific name server,
|
||||
<span><strong class="command">dig</strong></span> will try each of the servers listed
|
||||
in
|
||||
<code class="filename">/etc/resolv.conf</code>.
|
||||
<span><strong class="command">dig</strong></span> will try each of the servers listed in
|
||||
<code class="filename">/etc/resolv.conf</code>. If no usable server addresses
|
||||
are found, <span><strong class="command">dig</strong></span> will send the query to the local
|
||||
host.
|
||||
</p>
|
||||
<p>
|
||||
When no command line arguments or options are given,
|
||||
@@ -80,7 +81,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543595"></a><h2>SIMPLE USAGE</h2>
|
||||
<a name="id2543604"></a><h2>SIMPLE USAGE</h2>
|
||||
<p>
|
||||
A typical invocation of <span><strong class="command">dig</strong></span> looks like:
|
||||
</p>
|
||||
@@ -91,22 +92,29 @@
|
||||
</p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term"><code class="constant">server</code></span></dt>
|
||||
<dd><p>
|
||||
is the name or IP address of the name server to query. This can
|
||||
be an IPv4
|
||||
address in dotted-decimal notation or an IPv6
|
||||
<dd>
|
||||
<p>
|
||||
is the name or IP address of the name server to query. This
|
||||
can be an IPv4 address in dotted-decimal notation or an IPv6
|
||||
address in colon-delimited notation. When the supplied
|
||||
<em class="parameter"><code>server</code></em> argument is a
|
||||
hostname,
|
||||
<span><strong class="command">dig</strong></span> resolves that name before
|
||||
querying that name
|
||||
server. If no <em class="parameter"><code>server</code></em>
|
||||
argument is provided,
|
||||
<span><strong class="command">dig</strong></span> consults <code class="filename">/etc/resolv.conf</code>
|
||||
and queries the name servers listed there. The reply from the
|
||||
name
|
||||
server that responds is displayed.
|
||||
</p></dd>
|
||||
<em class="parameter"><code>server</code></em> argument is a hostname,
|
||||
<span><strong class="command">dig</strong></span> resolves that name before querying
|
||||
that name server.
|
||||
</p>
|
||||
<p>
|
||||
If no <em class="parameter"><code>server</code></em> argument is
|
||||
provided, <span><strong class="command">dig</strong></span> consults
|
||||
<code class="filename">/etc/resolv.conf</code>; if an
|
||||
address is found there, it queries the name server at
|
||||
that address. If either of the <code class="option">-4</code> or
|
||||
<code class="option">-6</code> options are in use, then
|
||||
only addresses for the corresponding transport
|
||||
will be tried. If no usable addresses are found,
|
||||
<span><strong class="command">dig</strong></span> will send the query to the
|
||||
local host. The reply from the name server that
|
||||
responds is displayed.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="constant">name</code></span></dt>
|
||||
<dd><p>
|
||||
is the name of the resource record that is to be looked up.
|
||||
@@ -126,7 +134,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543686"></a><h2>OPTIONS</h2>
|
||||
<a name="id2543707"></a><h2>OPTIONS</h2>
|
||||
<p>
|
||||
The <code class="option">-b</code> option sets the source IP address of the query
|
||||
to <em class="parameter"><code>address</code></em>. This must be a valid
|
||||
@@ -230,7 +238,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544035"></a><h2>QUERY OPTIONS</h2>
|
||||
<a name="id2544056"></a><h2>QUERY OPTIONS</h2>
|
||||
<p><span><strong class="command">dig</strong></span>
|
||||
provides a number of query options which affect
|
||||
the way in which lookups are made and the results displayed. Some of
|
||||
@@ -549,13 +557,19 @@
|
||||
<dd><p>
|
||||
Include an EDNS name server ID request when sending a query.
|
||||
</p></dd>
|
||||
<dt><span class="term"><code class="option">+[no]keepopen</code></span></dt>
|
||||
<dd><p>
|
||||
Keep the TCP socket open between queries and reuse it rather
|
||||
than creating a new TCP socket for each lookup. The default
|
||||
is <code class="option">+nokeepopen</code>.
|
||||
</p></dd>
|
||||
</dl></div>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545170"></a><h2>MULTIPLE QUERIES</h2>
|
||||
<a name="id2545208"></a><h2>MULTIPLE QUERIES</h2>
|
||||
<p>
|
||||
The BIND 9 implementation of <span><strong class="command">dig </strong></span>
|
||||
supports
|
||||
@@ -601,7 +615,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545232"></a><h2>IDN SUPPORT</h2>
|
||||
<a name="id2545338"></a><h2>IDN SUPPORT</h2>
|
||||
<p>
|
||||
If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized
|
||||
domain name) support, it can accept and display non-ASCII domain names.
|
||||
@@ -615,14 +629,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545322"></a><h2>FILES</h2>
|
||||
<a name="id2545361"></a><h2>FILES</h2>
|
||||
<p><code class="filename">/etc/resolv.conf</code>
|
||||
</p>
|
||||
<p><code class="filename">${HOME}/.digrc</code>
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545339"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2545378"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
|
||||
@@ -630,7 +644,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545377"></a><h2>BUGS</h2>
|
||||
<a name="id2545415"></a><h2>BUGS</h2>
|
||||
<p>
|
||||
There are probably too many query options.
|
||||
</p>
|
||||
|
||||
+187
-169
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -46,8 +46,10 @@
|
||||
|
||||
#include <dns/byaddr.h>
|
||||
#ifdef DIG_SIGCHASE
|
||||
#include <dns/callbacks.h>
|
||||
#include <dns/dnssec.h>
|
||||
#include <dns/ds.h>
|
||||
#include <dns/master.h>
|
||||
#include <dns/nsec.h>
|
||||
#include <isc/random.h>
|
||||
#include <ctype.h>
|
||||
@@ -118,7 +120,8 @@ isc_boolean_t
|
||||
usesearch = ISC_FALSE,
|
||||
showsearch = ISC_FALSE,
|
||||
qr = ISC_FALSE,
|
||||
is_dst_up = ISC_FALSE;
|
||||
is_dst_up = ISC_FALSE,
|
||||
keep_open = ISC_FALSE;
|
||||
in_port_t port = 53;
|
||||
unsigned int timeout = 0;
|
||||
unsigned int extrabytes;
|
||||
@@ -149,6 +152,9 @@ static void idn_check_result(idn_result_t r, const char *msg);
|
||||
int idnoptions = 0;
|
||||
#endif
|
||||
|
||||
isc_socket_t *keep = NULL;
|
||||
isc_sockaddr_t keepaddr;
|
||||
|
||||
/*%
|
||||
* Exit Codes:
|
||||
*
|
||||
@@ -172,6 +178,7 @@ isc_boolean_t validated = ISC_TRUE;
|
||||
isc_entropy_t *entp = NULL;
|
||||
isc_mempool_t *commctx = NULL;
|
||||
isc_boolean_t debugging = ISC_FALSE;
|
||||
isc_boolean_t debugtiming = ISC_FALSE;
|
||||
isc_boolean_t memdebugging = ISC_FALSE;
|
||||
char *progname = NULL;
|
||||
isc_mutex_t lookup_lock;
|
||||
@@ -244,11 +251,10 @@ isc_result_t prove_nx(dns_message_t * msg, dns_name_t * name,
|
||||
dns_rdataset_t ** sigrdataset);
|
||||
static void nameFromString(const char *str, dns_name_t *p_ret);
|
||||
int inf_name(dns_name_t * name1, dns_name_t * name2);
|
||||
isc_result_t opentmpkey(isc_mem_t *mctx, const char *file,
|
||||
char **tempp, FILE **fp);
|
||||
isc_result_t removetmpkey(isc_mem_t *mctx, const char *file);
|
||||
void clean_trustedkey(void);
|
||||
void insert_trustedkey(dst_key_t **key);
|
||||
isc_result_t insert_trustedkey(void *arg, dns_name_t *name,
|
||||
dns_rdataset_t *rdataset);
|
||||
#if DIG_SIGCHASE_BU
|
||||
isc_result_t getneededrr(dns_message_t *msg);
|
||||
void sigchase_bottom_up(dns_message_t *msg);
|
||||
@@ -511,9 +517,15 @@ fatal(const char *format, ...) {
|
||||
void
|
||||
debug(const char *format, ...) {
|
||||
va_list args;
|
||||
isc_time_t t;
|
||||
|
||||
if (debugging) {
|
||||
fflush(stdout);
|
||||
if (debugtiming) {
|
||||
TIME_NOW(&t);
|
||||
fprintf(stderr, "%d.%06d: ", isc_time_seconds(&t),
|
||||
isc_time_nanoseconds(&t) / 1000);
|
||||
}
|
||||
va_start(args, format);
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
@@ -767,6 +779,7 @@ make_empty_lookup(void) {
|
||||
looknew->need_search = ISC_FALSE;
|
||||
ISC_LINK_INIT(looknew, link);
|
||||
ISC_LIST_INIT(looknew->q);
|
||||
ISC_LIST_INIT(looknew->connecting);
|
||||
ISC_LIST_INIT(looknew->my_server_list);
|
||||
return (looknew);
|
||||
}
|
||||
@@ -788,11 +801,11 @@ clone_lookup(dig_lookup_t *lookold, isc_boolean_t servers) {
|
||||
|
||||
looknew = make_empty_lookup();
|
||||
INSIST(looknew != NULL);
|
||||
strncpy(looknew->textname, lookold->textname, MXNAME);
|
||||
strlcpy(looknew->textname, lookold->textname, MXNAME);
|
||||
#if DIG_SIGCHASE_TD
|
||||
strncpy(looknew->textnamesigchase, lookold->textnamesigchase, MXNAME);
|
||||
strlcpy(looknew->textnamesigchase, lookold->textnamesigchase, MXNAME);
|
||||
#endif
|
||||
strncpy(looknew->cmdline, lookold->cmdline, MXNAME);
|
||||
strlcpy(looknew->cmdline, lookold->cmdline, MXNAME);
|
||||
looknew->textname[MXNAME-1] = 0;
|
||||
looknew->rdtype = lookold->rdtype;
|
||||
looknew->qrdtype = lookold->qrdtype;
|
||||
@@ -986,7 +999,7 @@ make_searchlist_entry(char *domain) {
|
||||
if (search == NULL)
|
||||
fatal("memory allocation failure in %s:%d",
|
||||
__FILE__, __LINE__);
|
||||
strncpy(search->origin, domain, MXNAME);
|
||||
strlcpy(search->origin, domain, MXNAME);
|
||||
search->origin[MXNAME-1] = 0;
|
||||
ISC_LINK_INIT(search, link);
|
||||
return (search);
|
||||
@@ -1138,12 +1151,14 @@ setup_libs(void) {
|
||||
|
||||
result = isc_mem_create(0, 0, &mctx);
|
||||
check_result(result, "isc_mem_create");
|
||||
isc_mem_setname(mctx, "dig", NULL);
|
||||
|
||||
result = isc_taskmgr_create(mctx, 1, 0, &taskmgr);
|
||||
check_result(result, "isc_taskmgr_create");
|
||||
|
||||
result = isc_task_create(taskmgr, 0, &global_task);
|
||||
check_result(result, "isc_task_create");
|
||||
isc_task_setname(global_task, "dig", NULL);
|
||||
|
||||
result = isc_timermgr_create(mctx, &timermgr);
|
||||
check_result(result, "isc_timermgr_create");
|
||||
@@ -1282,7 +1297,10 @@ clear_query(dig_query_t *query) {
|
||||
if (lookup->current_query == query)
|
||||
lookup->current_query = NULL;
|
||||
|
||||
ISC_LIST_UNLINK(lookup->q, query, link);
|
||||
if (ISC_LINK_LINKED(query, link))
|
||||
ISC_LIST_UNLINK(lookup->q, query, link);
|
||||
if (ISC_LINK_LINKED(query, clink))
|
||||
ISC_LIST_UNLINK(lookup->connecting, query, clink);
|
||||
if (ISC_LINK_LINKED(&query->recvbuf, link))
|
||||
ISC_LIST_DEQUEUE(query->recvlist, &query->recvbuf,
|
||||
link);
|
||||
@@ -1290,6 +1308,7 @@ clear_query(dig_query_t *query) {
|
||||
ISC_LIST_DEQUEUE(query->lengthlist, &query->lengthbuf,
|
||||
link);
|
||||
INSIST(query->recvspace != NULL);
|
||||
|
||||
if (query->sock != NULL) {
|
||||
isc_socket_detach(&query->sock);
|
||||
sockcount--;
|
||||
@@ -1317,13 +1336,22 @@ try_clear_lookup(dig_lookup_t *lookup) {
|
||||
|
||||
debug("try_clear_lookup(%p)", lookup);
|
||||
|
||||
if (ISC_LIST_HEAD(lookup->q) != NULL) {
|
||||
if (ISC_LIST_HEAD(lookup->q) != NULL ||
|
||||
ISC_LIST_HEAD(lookup->connecting) != NULL)
|
||||
{
|
||||
if (debugging) {
|
||||
q = ISC_LIST_HEAD(lookup->q);
|
||||
while (q != NULL) {
|
||||
debug("query to %s still pending", q->servname);
|
||||
q = ISC_LIST_NEXT(q, link);
|
||||
}
|
||||
|
||||
q = ISC_LIST_HEAD(lookup->connecting);
|
||||
while (q != NULL) {
|
||||
debug("query to %s still connecting",
|
||||
q->servname);
|
||||
q = ISC_LIST_NEXT(q, clink);
|
||||
}
|
||||
}
|
||||
return (ISC_FALSE);
|
||||
}
|
||||
@@ -1451,7 +1479,7 @@ start_lookup(void) {
|
||||
= current_lookup->rdclassset;
|
||||
current_lookup->rdclass = dns_rdataclass_in;
|
||||
|
||||
strncpy(current_lookup->textnamesigchase,
|
||||
strlcpy(current_lookup->textnamesigchase,
|
||||
current_lookup->textname, MXNAME);
|
||||
|
||||
current_lookup->trace_root_sigchase = ISC_TRUE;
|
||||
@@ -1463,7 +1491,7 @@ start_lookup(void) {
|
||||
check_result(result, "dns_name_totext");
|
||||
isc_buffer_usedregion(b, &r);
|
||||
r.base[r.length] = '\0';
|
||||
strncpy(current_lookup->textname, (char*)r.base,
|
||||
strlcpy(current_lookup->textname, (char*)r.base,
|
||||
MXNAME);
|
||||
isc_buffer_free(&b);
|
||||
|
||||
@@ -1680,6 +1708,9 @@ static isc_boolean_t
|
||||
next_origin(dns_message_t *msg, dig_query_t *query) {
|
||||
dig_lookup_t *lookup;
|
||||
dig_searchlist_t *search;
|
||||
dns_fixedname_t fixed;
|
||||
dns_name_t *name;
|
||||
isc_result_t result;
|
||||
|
||||
UNUSED(msg);
|
||||
|
||||
@@ -1694,6 +1725,19 @@ next_origin(dns_message_t *msg, dig_query_t *query) {
|
||||
* about finding the next entry.
|
||||
*/
|
||||
return (ISC_FALSE);
|
||||
|
||||
/*
|
||||
* Check for a absolute name or ndots being met.
|
||||
*/
|
||||
dns_fixedname_init(&fixed);
|
||||
name = dns_fixedname_name(&fixed);
|
||||
result = dns_name_fromstring2(name, query->lookup->textname, NULL,
|
||||
0, NULL);
|
||||
if (result == ISC_R_SUCCESS &&
|
||||
(dns_name_isabsolute(name) ||
|
||||
(int)dns_name_countlabels(name) > ndots))
|
||||
return (ISC_FALSE);
|
||||
|
||||
if (query->lookup->origin == NULL && !query->lookup->need_search)
|
||||
/*
|
||||
* Then we just did rootorg; there's nothing left.
|
||||
@@ -2104,7 +2148,6 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
query->rr_count = 0;
|
||||
query->msg_count = 0;
|
||||
query->byte_count = 0;
|
||||
ISC_LINK_INIT(query, link);
|
||||
ISC_LIST_INIT(query->recvlist);
|
||||
ISC_LIST_INIT(query->lengthlist);
|
||||
query->sock = NULL;
|
||||
@@ -2117,6 +2160,7 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
isc_buffer_init(&query->slbuf, query->slspace, 2);
|
||||
query->sendbuf = lookup->renderbuf;
|
||||
|
||||
ISC_LINK_INIT(query, clink);
|
||||
ISC_LINK_INIT(query, link);
|
||||
ISC_LIST_ENQUEUE(lookup->q, query, link);
|
||||
}
|
||||
@@ -2152,14 +2196,16 @@ send_done(isc_task_t *_task, isc_event_t *event) {
|
||||
|
||||
for (b = ISC_LIST_HEAD(sevent->bufferlist);
|
||||
b != NULL;
|
||||
b = ISC_LIST_HEAD(sevent->bufferlist))
|
||||
b = ISC_LIST_HEAD(sevent->bufferlist)) {
|
||||
ISC_LIST_DEQUEUE(sevent->bufferlist, b, link);
|
||||
isc_mem_free(mctx, b);
|
||||
}
|
||||
|
||||
query = event->ev_arg;
|
||||
query->waiting_senddone = ISC_FALSE;
|
||||
l = query->lookup;
|
||||
|
||||
if (l->ns_search_only && !l->trace_root) {
|
||||
if (l->ns_search_only && !l->trace_root && !l->tcp_mode) {
|
||||
debug("sending next, since searching");
|
||||
next = ISC_LIST_NEXT(query, link);
|
||||
if (next != NULL)
|
||||
@@ -2238,6 +2284,7 @@ static void
|
||||
force_timeout(dig_lookup_t *l, dig_query_t *query) {
|
||||
isc_event_t *event;
|
||||
|
||||
debug("force_timeout ()");
|
||||
event = isc_event_allocate(mctx, query, ISC_TIMEREVENT_IDLE,
|
||||
connect_timeout, l,
|
||||
sizeof(isc_event_t));
|
||||
@@ -2305,7 +2352,17 @@ send_tcp_connect(dig_query_t *query) {
|
||||
send_tcp_connect(next);
|
||||
return;
|
||||
}
|
||||
|
||||
INSIST(query->sock == NULL);
|
||||
|
||||
if (keep != NULL && isc_sockaddr_equal(&keepaddr, &query->sockaddr)) {
|
||||
sockcount++;
|
||||
isc_socket_attach(keep, &query->sock);
|
||||
query->waiting_connect = ISC_FALSE;
|
||||
launch_next_query(query, ISC_TRUE);
|
||||
goto search;
|
||||
}
|
||||
|
||||
result = isc_socket_create(socketmgr,
|
||||
isc_sockaddr_pf(&query->sockaddr),
|
||||
isc_sockettype_tcp, &query->sock);
|
||||
@@ -2328,6 +2385,7 @@ send_tcp_connect(dig_query_t *query) {
|
||||
result = isc_socket_connect(query->sock, &query->sockaddr,
|
||||
global_task, connect_done, query);
|
||||
check_result(result, "isc_socket_connect");
|
||||
search:
|
||||
/*
|
||||
* If we're at the endgame of a nameserver search, we need to
|
||||
* immediately bring up all the queries. Do it here.
|
||||
@@ -2335,11 +2393,25 @@ send_tcp_connect(dig_query_t *query) {
|
||||
if (l->ns_search_only && !l->trace_root) {
|
||||
debug("sending next, since searching");
|
||||
next = ISC_LIST_NEXT(query, link);
|
||||
if (ISC_LINK_LINKED(query, link))
|
||||
ISC_LIST_DEQUEUE(l->q, query, link);
|
||||
ISC_LIST_ENQUEUE(l->connecting, query, clink);
|
||||
if (next != NULL)
|
||||
send_tcp_connect(next);
|
||||
}
|
||||
}
|
||||
|
||||
static isc_buffer_t *
|
||||
clone_buffer(isc_buffer_t *source) {
|
||||
isc_buffer_t *buffer;
|
||||
buffer = isc_mem_allocate(mctx, sizeof(*buffer));
|
||||
if (buffer == NULL)
|
||||
fatal("memory allocation failure in %s:%d",
|
||||
__FILE__, __LINE__);
|
||||
*buffer = *source;
|
||||
return (buffer);
|
||||
}
|
||||
|
||||
/*%
|
||||
* Send a UDP packet to the remote nameserver, possible starting the
|
||||
* recv action as well. Also make sure that the timer is running and
|
||||
@@ -2349,6 +2421,7 @@ static void
|
||||
send_udp(dig_query_t *query) {
|
||||
dig_lookup_t *l = NULL;
|
||||
isc_result_t result;
|
||||
isc_buffer_t *sendbuf;
|
||||
|
||||
debug("send_udp(%p)", query);
|
||||
|
||||
@@ -2395,14 +2468,16 @@ send_udp(dig_query_t *query) {
|
||||
debug("recvcount=%d", recvcount);
|
||||
}
|
||||
ISC_LIST_INIT(query->sendlist);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
|
||||
sendbuf = clone_buffer(&query->sendbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, sendbuf, link);
|
||||
debug("sending a request");
|
||||
TIME_NOW(&query->time_sent);
|
||||
INSIST(query->sock != NULL);
|
||||
query->waiting_senddone = ISC_TRUE;
|
||||
result = isc_socket_sendtov(query->sock, &query->sendlist,
|
||||
global_task, send_done, query,
|
||||
&query->sockaddr, NULL);
|
||||
result = isc_socket_sendtov2(query->sock, &query->sendlist,
|
||||
global_task, send_done, query,
|
||||
&query->sockaddr, NULL,
|
||||
ISC_SOCKFLAG_NORETRY);
|
||||
check_result(result, "isc_socket_sendtov");
|
||||
sendcount++;
|
||||
}
|
||||
@@ -2415,7 +2490,7 @@ send_udp(dig_query_t *query) {
|
||||
static void
|
||||
connect_timeout(isc_task_t *task, isc_event_t *event) {
|
||||
dig_lookup_t *l = NULL;
|
||||
dig_query_t *query = NULL, *cq;
|
||||
dig_query_t *query = NULL, *next, *cq;
|
||||
|
||||
UNUSED(task);
|
||||
REQUIRE(event->ev_type == ISC_TIMEREVENT_IDLE);
|
||||
@@ -2439,7 +2514,9 @@ connect_timeout(isc_task_t *task, isc_event_t *event) {
|
||||
if (query->sock != NULL)
|
||||
isc_socket_cancel(query->sock, NULL,
|
||||
ISC_SOCKCANCEL_ALL);
|
||||
send_tcp_connect(ISC_LIST_NEXT(cq, link));
|
||||
next = ISC_LIST_NEXT(cq, link);
|
||||
if (next != NULL)
|
||||
send_tcp_connect(next);
|
||||
}
|
||||
UNLOCK_LOOKUP;
|
||||
return;
|
||||
@@ -2562,6 +2639,7 @@ static void
|
||||
launch_next_query(dig_query_t *query, isc_boolean_t include_question) {
|
||||
isc_result_t result;
|
||||
dig_lookup_t *l;
|
||||
isc_buffer_t *buffer;
|
||||
|
||||
INSIST(!free_now);
|
||||
|
||||
@@ -2585,9 +2663,15 @@ launch_next_query(dig_query_t *query, isc_boolean_t include_question) {
|
||||
isc_buffer_putuint16(&query->slbuf, (isc_uint16_t) query->sendbuf.used);
|
||||
ISC_LIST_INIT(query->sendlist);
|
||||
ISC_LINK_INIT(&query->slbuf, link);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, &query->slbuf, link);
|
||||
if (include_question)
|
||||
ISC_LIST_ENQUEUE(query->sendlist, &query->sendbuf, link);
|
||||
if (!query->first_soa_rcvd) {
|
||||
buffer = clone_buffer(&query->slbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
|
||||
if (include_question) {
|
||||
buffer = clone_buffer(&query->sendbuf);
|
||||
ISC_LIST_ENQUEUE(query->sendlist, buffer, link);
|
||||
}
|
||||
}
|
||||
|
||||
ISC_LINK_INIT(&query->lengthbuf, link);
|
||||
ISC_LIST_ENQUEUE(query->lengthlist, &query->lengthbuf, link);
|
||||
|
||||
@@ -2682,12 +2766,17 @@ connect_done(isc_task_t *task, isc_event_t *event) {
|
||||
if (next != NULL) {
|
||||
bringup_timer(next, TCP_TIMEOUT);
|
||||
send_tcp_connect(next);
|
||||
} else {
|
||||
} else
|
||||
check_next_lookup(l);
|
||||
}
|
||||
UNLOCK_LOOKUP;
|
||||
return;
|
||||
}
|
||||
if (keep_open) {
|
||||
if (keep != NULL)
|
||||
isc_socket_detach(&keep);
|
||||
isc_socket_attach(query->sock, &keep);
|
||||
keepaddr = query->sockaddr;
|
||||
}
|
||||
launch_next_query(query, ISC_TRUE);
|
||||
isc_event_free(&event);
|
||||
UNLOCK_LOOKUP;
|
||||
@@ -3195,7 +3284,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
|
||||
if (!l->doing_xfr || l->xfr_q == query) {
|
||||
if (msg->rcode != dns_rcode_noerror &&
|
||||
if (msg->rcode == dns_rcode_nxdomain &&
|
||||
(l->origin != NULL || l->need_search)) {
|
||||
if (!next_origin(msg, query) || showsearch) {
|
||||
printmessage(query, msg, ISC_TRUE);
|
||||
@@ -3241,6 +3330,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
|
||||
if (n == 0)
|
||||
docancel = ISC_TRUE;
|
||||
l->trace_root = ISC_FALSE;
|
||||
usesearch = ISC_FALSE;
|
||||
} else
|
||||
#ifdef DIG_SIGCHASE
|
||||
if (!do_sigchase)
|
||||
@@ -3417,15 +3507,19 @@ getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp) {
|
||||
*/
|
||||
void
|
||||
do_lookup(dig_lookup_t *lookup) {
|
||||
dig_query_t *query;
|
||||
|
||||
REQUIRE(lookup != NULL);
|
||||
|
||||
debug("do_lookup()");
|
||||
lookup->pending = ISC_TRUE;
|
||||
if (lookup->tcp_mode)
|
||||
send_tcp_connect(ISC_LIST_HEAD(lookup->q));
|
||||
else
|
||||
send_udp(ISC_LIST_HEAD(lookup->q));
|
||||
query = ISC_LIST_HEAD(lookup->q);
|
||||
if (query != NULL) {
|
||||
if (lookup->tcp_mode)
|
||||
send_tcp_connect(query);
|
||||
else
|
||||
send_udp(query);
|
||||
}
|
||||
}
|
||||
|
||||
/*%
|
||||
@@ -3461,18 +3555,31 @@ cancel_all(void) {
|
||||
if (current_lookup != NULL) {
|
||||
if (current_lookup->timer != NULL)
|
||||
isc_timer_detach(¤t_lookup->timer);
|
||||
q = ISC_LIST_HEAD(current_lookup->q);
|
||||
while (q != NULL) {
|
||||
debug("canceling query %p, belonging to %p",
|
||||
q, current_lookup);
|
||||
for (q = ISC_LIST_HEAD(current_lookup->q);
|
||||
q != NULL;
|
||||
q = nq)
|
||||
{
|
||||
nq = ISC_LIST_NEXT(q, link);
|
||||
if (q->sock != NULL) {
|
||||
debug("canceling pending query %p, belonging to %p",
|
||||
q, current_lookup);
|
||||
if (q->sock != NULL)
|
||||
isc_socket_cancel(q->sock, NULL,
|
||||
ISC_SOCKCANCEL_ALL);
|
||||
} else {
|
||||
else
|
||||
clear_query(q);
|
||||
}
|
||||
for (q = ISC_LIST_HEAD(current_lookup->connecting);
|
||||
q != NULL;
|
||||
q = nq)
|
||||
{
|
||||
nq = ISC_LIST_NEXT(q, clink);
|
||||
debug("canceling connecting query %p, belonging to %p",
|
||||
q, current_lookup);
|
||||
if (q->sock != NULL)
|
||||
isc_socket_cancel(q->sock, NULL,
|
||||
ISC_SOCKCANCEL_ALL);
|
||||
else
|
||||
clear_query(q);
|
||||
}
|
||||
q = nq;
|
||||
}
|
||||
}
|
||||
l = ISC_LIST_HEAD(lookup_list);
|
||||
@@ -3499,6 +3606,8 @@ destroy_libs(void) {
|
||||
isc_result_t result;
|
||||
#endif
|
||||
|
||||
if (keep != NULL)
|
||||
isc_socket_detach(&keep);
|
||||
debug("destroy_libs()");
|
||||
if (global_task != NULL) {
|
||||
debug("freeing task");
|
||||
@@ -3895,7 +4004,7 @@ sigchase_scanname(dns_rdatatype_t type, dns_rdatatype_t covers,
|
||||
check_result(result, "dns_name_totext");
|
||||
isc_buffer_usedregion(b, &r);
|
||||
r.base[r.length] = '\0';
|
||||
strcpy(lookup->textname, (char*)r.base);
|
||||
strlcpy(lookup->textname, (char*)r.base, sizeof(lookup->textname));
|
||||
isc_buffer_free(&b);
|
||||
|
||||
if (type == dns_rdatatype_rrsig)
|
||||
@@ -3920,17 +4029,35 @@ sigchase_scanname(dns_rdatatype_t type, dns_rdatatype_t covers,
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
void
|
||||
insert_trustedkey(dst_key_t **keyp)
|
||||
isc_result_t
|
||||
insert_trustedkey(void *arg, dns_name_t *name, dns_rdataset_t *rdataset)
|
||||
{
|
||||
if (*keyp == NULL)
|
||||
return;
|
||||
if (tk_list.nb_tk >= MAX_TRUSTED_KEY)
|
||||
return;
|
||||
isc_result_t result;
|
||||
dst_key_t *key;
|
||||
|
||||
tk_list.key[tk_list.nb_tk++] = *keyp;
|
||||
*keyp = NULL;
|
||||
return;
|
||||
UNUSED(arg);
|
||||
|
||||
if (rdataset == NULL || rdataset->type != dns_rdatatype_dnskey)
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
for (result = dns_rdataset_first(rdataset);
|
||||
result == ISC_R_SUCCESS;
|
||||
result = dns_rdataset_next(rdataset)) {
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
isc_buffer_t b;
|
||||
|
||||
dns_rdataset_current(rdataset, &rdata);
|
||||
isc_buffer_init(&b, rdata.data, rdata.length);
|
||||
isc_buffer_add(&b, rdata.length);
|
||||
if (tk_list.nb_tk >= MAX_TRUSTED_KEY)
|
||||
return (ISC_R_SUCCESS);
|
||||
key = NULL;
|
||||
result = dst_key_fromdns(name, rdata.rdclass, &b, mctx, &key);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
continue;
|
||||
tk_list.key[tk_list.nb_tk++] = key;
|
||||
}
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -3976,87 +4103,12 @@ removetmpkey(isc_mem_t *mctx, const char *file)
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
opentmpkey(isc_mem_t *mctx, const char *file, char **tempp, FILE **fp) {
|
||||
FILE *f = NULL;
|
||||
isc_result_t result;
|
||||
char *tempname = NULL;
|
||||
char *tempnamekey = NULL;
|
||||
int tempnamelen;
|
||||
int tempnamekeylen;
|
||||
char *x;
|
||||
char *cp;
|
||||
isc_uint32_t which;
|
||||
|
||||
while (1) {
|
||||
tempnamelen = strlen(file) + 20;
|
||||
tempname = isc_mem_allocate(mctx, tempnamelen);
|
||||
if (tempname == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
memset(tempname, 0, tempnamelen);
|
||||
|
||||
result = isc_file_mktemplate(file, tempname, tempnamelen);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
cp = tempname;
|
||||
while (*cp != '\0')
|
||||
cp++;
|
||||
if (cp == tempname) {
|
||||
isc_mem_free(mctx, tempname);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
|
||||
x = cp--;
|
||||
while (cp >= tempname && *cp == 'X') {
|
||||
isc_random_get(&which);
|
||||
*cp = alphnum[which % (sizeof(alphnum) - 1)];
|
||||
x = cp--;
|
||||
}
|
||||
|
||||
tempnamekeylen = tempnamelen+5;
|
||||
tempnamekey = isc_mem_allocate(mctx, tempnamekeylen);
|
||||
if (tempnamekey == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
memset(tempnamekey, 0, tempnamekeylen);
|
||||
strncpy(tempnamekey, tempname, tempnamelen);
|
||||
strcat(tempnamekey ,".key");
|
||||
|
||||
|
||||
if (isc_file_exists(tempnamekey)) {
|
||||
isc_mem_free(mctx, tempnamekey);
|
||||
isc_mem_free(mctx, tempname);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((f = fopen(tempnamekey, "w")) == NULL) {
|
||||
printf("get_trusted_key(): trusted key not found %s\n",
|
||||
tempnamekey);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
isc_mem_free(mctx, tempnamekey);
|
||||
*tempp = tempname;
|
||||
*fp = f;
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
cleanup:
|
||||
isc_mem_free(mctx, tempname);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
get_trusted_key(isc_mem_t *mctx)
|
||||
{
|
||||
isc_result_t result;
|
||||
const char *filename = NULL;
|
||||
char *filetemp = NULL;
|
||||
char buf[1500];
|
||||
FILE *fp, *fptemp;
|
||||
dst_key_t *key = NULL;
|
||||
dns_rdatacallbacks_t callbacks;
|
||||
|
||||
result = isc_file_exists(trustedkey);
|
||||
if (result != ISC_TRUE) {
|
||||
@@ -4077,40 +4129,11 @@ get_trusted_key(isc_mem_t *mctx)
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
|
||||
if ((fp = fopen(filename, "r")) == NULL) {
|
||||
printf("get_trusted_key(): trusted key not found %s\n",
|
||||
filename);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
while (fgets(buf, sizeof(buf), fp) != NULL) {
|
||||
result = opentmpkey(mctx,"tmp_file", &filetemp, &fptemp);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fclose(fp);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
if (fputs(buf, fptemp) < 0) {
|
||||
fclose(fp);
|
||||
fclose(fptemp);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
fclose(fptemp);
|
||||
result = dst_key_fromnamedfile(filetemp, DST_TYPE_PUBLIC,
|
||||
mctx, &key);
|
||||
removetmpkey(mctx, filetemp);
|
||||
isc_mem_free(mctx, filetemp);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fclose(fp);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
#if 0
|
||||
dst_key_tofile(key, DST_TYPE_PUBLIC,"/tmp");
|
||||
#endif
|
||||
insert_trustedkey(&key);
|
||||
if (key != NULL)
|
||||
dst_key_free(&key);
|
||||
}
|
||||
fclose(fp);
|
||||
return (ISC_R_SUCCESS);
|
||||
dns_rdatacallbacks_init_stdio(&callbacks);
|
||||
callbacks.add = insert_trustedkey;
|
||||
return (dns_master_loadfile(filename, dns_rootname, dns_rootname,
|
||||
current_lookup->rdclass, 0, &callbacks,
|
||||
mctx));
|
||||
}
|
||||
|
||||
|
||||
@@ -4124,7 +4147,7 @@ nameFromString(const char *str, dns_name_t *p_ret) {
|
||||
REQUIRE(p_ret != NULL);
|
||||
REQUIRE(str != NULL);
|
||||
|
||||
isc_buffer_init(&buffer, str, len);
|
||||
isc_buffer_constinit(&buffer, str, len);
|
||||
isc_buffer_add(&buffer, len);
|
||||
|
||||
dns_fixedname_init(&fixedname);
|
||||
@@ -4154,7 +4177,7 @@ prepare_lookup(dns_name_t *name)
|
||||
lookup->new_search = ISC_TRUE;
|
||||
lookup->trace_root_sigchase = ISC_FALSE;
|
||||
|
||||
strncpy(lookup->textname, lookup->textnamesigchase, MXNAME);
|
||||
strlcpy(lookup->textname, lookup->textnamesigchase, MXNAME);
|
||||
|
||||
lookup->rdtype = lookup->rdtype_sigchase;
|
||||
lookup->rdtypeset = ISC_TRUE;
|
||||
@@ -4213,7 +4236,7 @@ prepare_lookup(dns_name_t *name)
|
||||
dns_rdata_totext(&aaaa, &ns.name, b);
|
||||
isc_buffer_usedregion(b, &r);
|
||||
r.base[r.length] = '\0';
|
||||
strncpy(namestr, (char*)r.base,
|
||||
strlcpy(namestr, (char*)r.base,
|
||||
DNS_NAME_FORMATSIZE);
|
||||
isc_buffer_free(&b);
|
||||
dns_rdata_reset(&aaaa);
|
||||
@@ -4242,7 +4265,7 @@ prepare_lookup(dns_name_t *name)
|
||||
dns_rdata_totext(&a, &ns.name, b);
|
||||
isc_buffer_usedregion(b, &r);
|
||||
r.base[r.length] = '\0';
|
||||
strncpy(namestr, (char*)r.base,
|
||||
strlcpy(namestr, (char*)r.base,
|
||||
DNS_NAME_FORMATSIZE);
|
||||
isc_buffer_free(&b);
|
||||
dns_rdata_reset(&a);
|
||||
@@ -4421,7 +4444,6 @@ contains_trusted_key(dns_name_t *name, dns_rdataset_t *rdataset,
|
||||
{
|
||||
isc_result_t result;
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
dst_key_t *trustedKey = NULL;
|
||||
dst_key_t *dnsseckey = NULL;
|
||||
int i;
|
||||
|
||||
@@ -4465,10 +4487,6 @@ contains_trusted_key(dns_name_t *name, dns_rdataset_t *rdataset,
|
||||
dst_key_free(&dnsseckey);
|
||||
} while (dns_rdataset_next(rdataset) == ISC_R_SUCCESS);
|
||||
|
||||
if (trustedKey != NULL)
|
||||
dst_key_free(&trustedKey);
|
||||
trustedKey = NULL;
|
||||
|
||||
return (ISC_R_NOTFOUND);
|
||||
}
|
||||
|
||||
|
||||
+15
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -446,10 +446,18 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
if (msg->rcode != 0) {
|
||||
char namestr[DNS_NAME_FORMATSIZE];
|
||||
dns_name_format(query->lookup->name, namestr, sizeof(namestr));
|
||||
printf("Host %s not found: %d(%s)\n",
|
||||
(msg->rcode != dns_rcode_nxdomain) ? namestr :
|
||||
query->lookup->textname, msg->rcode,
|
||||
rcode_totext(msg->rcode));
|
||||
|
||||
if (query->lookup->identify_previous_line)
|
||||
printf("Nameserver %s:\n\t%s not found: %d(%s)\n",
|
||||
query->servname,
|
||||
(msg->rcode != dns_rcode_nxdomain) ? namestr :
|
||||
query->lookup->textname, msg->rcode,
|
||||
rcode_totext(msg->rcode));
|
||||
else
|
||||
printf("Host %s not found: %d(%s)\n",
|
||||
(msg->rcode != dns_rcode_nxdomain) ? namestr :
|
||||
query->lookup->textname, msg->rcode,
|
||||
rcode_totext(msg->rcode));
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -630,6 +638,8 @@ pre_parse_args(int argc, char **argv) {
|
||||
case 'w': break;
|
||||
case 'C': break;
|
||||
case 'D':
|
||||
if (debugging)
|
||||
debugtiming = ISC_TRUE;
|
||||
debugging = ISC_TRUE;
|
||||
break;
|
||||
case 'N': break;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -168,6 +168,7 @@ isc_boolean_t sigchase;
|
||||
dns_name_t *oname;
|
||||
ISC_LINK(dig_lookup_t) link;
|
||||
ISC_LIST(dig_query_t) q;
|
||||
ISC_LIST(dig_query_t) connecting;
|
||||
dig_query_t *current_query;
|
||||
dig_serverlist_t my_server_list;
|
||||
dig_searchlist_t *origin;
|
||||
@@ -214,6 +215,7 @@ struct dig_query {
|
||||
slspace[4];
|
||||
isc_socket_t *sock;
|
||||
ISC_LINK(dig_query_t) link;
|
||||
ISC_LINK(dig_query_t) clink;
|
||||
isc_sockaddr_t sockaddr;
|
||||
isc_time_t time_sent;
|
||||
isc_uint64_t byte_count;
|
||||
@@ -273,7 +275,8 @@ extern isc_boolean_t validated;
|
||||
extern isc_taskmgr_t *taskmgr;
|
||||
extern isc_task_t *global_task;
|
||||
extern isc_boolean_t free_now;
|
||||
extern isc_boolean_t debugging, memdebugging;
|
||||
extern isc_boolean_t debugging, debugtiming, memdebugging;
|
||||
extern isc_boolean_t keep_open;
|
||||
|
||||
extern char *progname;
|
||||
extern int tries;
|
||||
|
||||
+7
-2
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004-2007, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004-2007, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
.\" purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -216,6 +216,11 @@ Tell the name server to query other servers if it does not have the information.
|
||||
(Default = recurse; abbreviation = [no]rec)
|
||||
.RE
|
||||
.PP
|
||||
\fBndots=\fR\fInumber\fR
|
||||
.RS 4
|
||||
Set the number of dots (label separators) in a domain that will disable searching. Absolute names always stop searching.
|
||||
.RE
|
||||
.PP
|
||||
\fBretry=\fR\fInumber\fR
|
||||
.RS 4
|
||||
Set the number of retries to number.
|
||||
@@ -254,5 +259,5 @@ Try the next nameserver if a nameserver responds with SERVFAIL or a referral (no
|
||||
.PP
|
||||
Andrew Cherenson
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004\-2007, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004\-2007, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
|
||||
+22
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -57,6 +57,7 @@ static isc_boolean_t in_use = ISC_FALSE;
|
||||
static char defclass[MXRD] = "IN";
|
||||
static char deftype[MXRD] = "A";
|
||||
static isc_event_t *global_event = NULL;
|
||||
static int query_error = 1, print_error = 0;
|
||||
|
||||
static char domainopt[DNS_NAME_MAXTEXT];
|
||||
|
||||
@@ -406,6 +407,9 @@ isc_result_t
|
||||
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
char servtext[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
/* I've we've gotten this far, we've reached a server. */
|
||||
query_error = 0;
|
||||
|
||||
debug("printmessage()");
|
||||
|
||||
isc_sockaddr_format(&query->sockaddr, servtext, sizeof(servtext));
|
||||
@@ -430,9 +434,11 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
dns_name_format(query->lookup->name,
|
||||
nametext, sizeof(nametext));
|
||||
printf("** server can't find %s: %s\n",
|
||||
(msg->rcode != dns_rcode_nxdomain) ? nametext :
|
||||
query->lookup->textname, rcode_totext(msg->rcode));
|
||||
nametext, rcode_totext(msg->rcode));
|
||||
debug("returning with rcode == 0");
|
||||
|
||||
/* the lookup failed */
|
||||
print_error |= 1;
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -487,8 +493,8 @@ show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
|
||||
printf(" %s\t\t%s\n",
|
||||
usesearch ? "search" : "nosearch",
|
||||
recurse ? "recurse" : "norecurse");
|
||||
printf(" timeout = %d\t\tretry = %d\tport = %d\n",
|
||||
timeout, tries, port);
|
||||
printf(" timeout = %d\t\tretry = %d\tport = %d\tndots = %d\n",
|
||||
timeout, tries, port, ndots);
|
||||
printf(" querytype = %-8s\tclass = %s\n", deftype, defclass);
|
||||
printf(" srchlist = ");
|
||||
for (listent = ISC_LIST_HEAD(search_list);
|
||||
@@ -575,6 +581,14 @@ set_tries(const char *value) {
|
||||
tries = n;
|
||||
}
|
||||
|
||||
static void
|
||||
set_ndots(const char *value) {
|
||||
isc_uint32_t n;
|
||||
isc_result_t result = parse_uint(&n, value, 128, "ndots");
|
||||
if (result == ISC_R_SUCCESS)
|
||||
ndots = n;
|
||||
}
|
||||
|
||||
static void
|
||||
setoption(char *opt) {
|
||||
if (strncasecmp(opt, "all", 4) == 0) {
|
||||
@@ -655,6 +669,8 @@ setoption(char *opt) {
|
||||
nofail=ISC_FALSE;
|
||||
} else if (strncasecmp(opt, "nofail", 3) == 0) {
|
||||
nofail=ISC_TRUE;
|
||||
} else if (strncasecmp(opt, "ndots=", 6) == 0) {
|
||||
set_ndots(&opt[6]);
|
||||
} else {
|
||||
printf("*** Invalid option: %s\n", opt);
|
||||
}
|
||||
@@ -903,5 +919,5 @@ main(int argc, char **argv) {
|
||||
destroy_libs();
|
||||
isc_app_finish();
|
||||
|
||||
return (0);
|
||||
return (query_error | print_error);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004-2007, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2007, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -75,6 +75,7 @@
|
||||
<year>2007</year>
|
||||
<year>2010</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
</docinfo>
|
||||
@@ -410,6 +411,17 @@ nslookup -query=hinfo -timeout=10
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><constant>ndots=</constant><replaceable>number</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Set the number of dots (label separators) in a domain
|
||||
that will disable searching. Absolute names always
|
||||
stop searching.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><constant>retry=</constant><replaceable>number</replaceable></term>
|
||||
<listitem>
|
||||
|
||||
+13
-7
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004-2007, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2007, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -31,7 +31,7 @@
|
||||
<div class="cmdsynopsis"><p><code class="command">nslookup</code> [<code class="option">-option</code>] [name | -] [server]</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543362"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543365"></a><h2>DESCRIPTION</h2>
|
||||
<p><span><strong class="command">Nslookup</strong></span>
|
||||
is a program to query Internet domain name servers. <span><strong class="command">Nslookup</strong></span>
|
||||
has two modes: interactive and non-interactive. Interactive mode allows
|
||||
@@ -43,7 +43,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543378"></a><h2>ARGUMENTS</h2>
|
||||
<a name="id2543381"></a><h2>ARGUMENTS</h2>
|
||||
<p>
|
||||
Interactive mode is entered in the following cases:
|
||||
</p>
|
||||
@@ -78,7 +78,7 @@ nslookup -query=hinfo -timeout=10
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543421"></a><h2>INTERACTIVE COMMANDS</h2>
|
||||
<a name="id2543425"></a><h2>INTERACTIVE COMMANDS</h2>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term"><code class="constant">host</code> [<span class="optional">server</span>]</span></dt>
|
||||
<dd>
|
||||
@@ -249,6 +249,12 @@ nslookup -query=hinfo -timeout=10
|
||||
(Default = recurse; abbreviation = [no]rec)
|
||||
</p>
|
||||
</dd>
|
||||
<dt><span class="term"><code class="constant">ndots=</code><em class="replaceable"><code>number</code></em></span></dt>
|
||||
<dd><p>
|
||||
Set the number of dots (label separators) in a domain
|
||||
that will disable searching. Absolute names always
|
||||
stop searching.
|
||||
</p></dd>
|
||||
<dt><span class="term"><code class="constant">retry=</code><em class="replaceable"><code>number</code></em></span></dt>
|
||||
<dd><p>
|
||||
Set the number of retries to number.
|
||||
@@ -288,19 +294,19 @@ nslookup -query=hinfo -timeout=10
|
||||
</dl></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2546288"></a><h2>FILES</h2>
|
||||
<a name="id2546307"></a><h2>FILES</h2>
|
||||
<p><code class="filename">/etc/resolv.conf</code>
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2546299"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2546318"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">dig</span>(1)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2546333"></a><h2>Author</h2>
|
||||
<a name="id2546353"></a><h2>Author</h2>
|
||||
<p>
|
||||
Andrew Cherenson
|
||||
</p>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -230,7 +230,7 @@ Generate a NSEC3 chain with the given hex encoded salt. A dash (\fIsalt\fR) can
|
||||
.PP
|
||||
\-H \fIiterations\fR
|
||||
.RS 4
|
||||
When generating a NSEC3 chain use this many interations. The default is 100.
|
||||
When generating an NSEC3 chain, use this many iterations. The default is 100.
|
||||
.RE
|
||||
.PP
|
||||
\-A
|
||||
@@ -304,7 +304,7 @@ RFC 4033.
|
||||
.PP
|
||||
Internet Systems Consortium
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004\-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004\-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
Copyright \(co 2000\-2003 Internet Software Consortium.
|
||||
.br
|
||||
|
||||
@@ -641,6 +641,8 @@ hashlist_add(hashlist_t *l, const unsigned char *hash, size_t len)
|
||||
if (l->entries == l->size) {
|
||||
l->size = l->size * 2 + 100;
|
||||
l->hashbuf = realloc(l->hashbuf, l->size * l->length);
|
||||
if (l->hashbuf == NULL)
|
||||
fatal("unable to grow hashlist: out of memory");
|
||||
}
|
||||
memset(l->hashbuf + l->entries * l->length, 0, l->length);
|
||||
memcpy(l->hashbuf + l->entries * l->length, hash, len);
|
||||
@@ -1980,6 +1982,39 @@ remove_records(dns_dbnode_t *node, dns_rdatatype_t which) {
|
||||
dns_rdatasetiter_destroy(&rdsiter);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove signatures covering the given type (0 == all signatures).
|
||||
*/
|
||||
static void
|
||||
remove_sigs(dns_dbnode_t *node, dns_rdatatype_t which) {
|
||||
isc_result_t result;
|
||||
dns_rdatatype_t type, covers;
|
||||
dns_rdatasetiter_t *rdsiter = NULL;
|
||||
dns_rdataset_t rdataset;
|
||||
|
||||
dns_rdataset_init(&rdataset);
|
||||
result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
|
||||
check_result(result, "dns_db_allrdatasets()");
|
||||
for (result = dns_rdatasetiter_first(rdsiter);
|
||||
result == ISC_R_SUCCESS;
|
||||
result = dns_rdatasetiter_next(rdsiter)) {
|
||||
dns_rdatasetiter_current(rdsiter, &rdataset);
|
||||
type = rdataset.type;
|
||||
covers = rdataset.covers;
|
||||
dns_rdataset_disassociate(&rdataset);
|
||||
|
||||
if (type == dns_rdatatype_rrsig &&
|
||||
(covers == which || which == 0))
|
||||
{
|
||||
result = dns_db_deleterdataset(gdb, node, gversion,
|
||||
type, covers);
|
||||
check_result(result, "dns_db_deleterdataset()");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
dns_rdatasetiter_destroy(&rdsiter);
|
||||
}
|
||||
|
||||
/*%
|
||||
* Generate NSEC records for the zone and remove NSEC3/NSEC3PARAM records.
|
||||
*/
|
||||
@@ -2061,9 +2096,11 @@ nsecify(void) {
|
||||
if (delegation(name, node, &nsttl)) {
|
||||
zonecut = dns_fixedname_name(&fzonecut);
|
||||
dns_name_copy(name, zonecut, NULL);
|
||||
remove_sigs(node, 0);
|
||||
if (generateds)
|
||||
add_ds(name, node, nsttl);
|
||||
}
|
||||
|
||||
result = dns_dbiterator_next(dbiter);
|
||||
nextnode = NULL;
|
||||
while (result == ISC_R_SUCCESS) {
|
||||
@@ -2081,6 +2118,8 @@ nsecify(void) {
|
||||
(zonecut != NULL &&
|
||||
dns_name_issubdomain(nextname, zonecut)))
|
||||
{
|
||||
remove_sigs(nextnode, 0);
|
||||
remove_records(nextnode, dns_rdatatype_nsec);
|
||||
dns_db_detachnode(gdb, &nextnode);
|
||||
result = dns_dbiterator_next(dbiter);
|
||||
continue;
|
||||
@@ -2397,6 +2436,7 @@ nsec3ify(unsigned int hashalg, unsigned int iterations,
|
||||
if (!dns_name_issubdomain(nextname, gorigin) ||
|
||||
(zonecut != NULL &&
|
||||
dns_name_issubdomain(nextname, zonecut))) {
|
||||
remove_sigs(nextnode, 0);
|
||||
dns_db_detachnode(gdb, &nextnode);
|
||||
result = dns_dbiterator_next(dbiter);
|
||||
continue;
|
||||
@@ -2404,6 +2444,7 @@ nsec3ify(unsigned int hashalg, unsigned int iterations,
|
||||
if (delegation(nextname, nextnode, &nsttl)) {
|
||||
zonecut = dns_fixedname_name(&fzonecut);
|
||||
dns_name_copy(nextname, zonecut, NULL);
|
||||
remove_sigs(nextnode, 0);
|
||||
if (generateds)
|
||||
add_ds(nextname, nextnode, nsttl);
|
||||
if (OPTOUT(nsec3flags) &&
|
||||
@@ -2740,8 +2781,8 @@ warnifallksk(dns_db_t *db) {
|
||||
"Supply non-KSK dnskey or use '-z'.\n",
|
||||
program);
|
||||
else
|
||||
fatal("No non-KSK dnskey found. "
|
||||
"Supply non-KSK dnskey or use '-z'.");
|
||||
fatal("No non-KSK DNSKEY found; "
|
||||
"supply a ZSK or use '-z'.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3520,7 +3561,10 @@ main(int argc, char *argv[]) {
|
||||
check_result(result, "isc_file_mktemplate");
|
||||
|
||||
fp = NULL;
|
||||
result = isc_file_openunique(tempfile, &fp);
|
||||
if (outputformat == dns_masterformat_text)
|
||||
result = isc_file_openunique(tempfile, &fp);
|
||||
else
|
||||
result = isc_file_bopenunique(tempfile, &fp);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("failed to open temporary output file: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -44,6 +44,7 @@
|
||||
<year>2008</year>
|
||||
<year>2009</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
@@ -438,7 +439,7 @@
|
||||
<term>-H <replaceable class="parameter">iterations</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
When generating a NSEC3 chain use this many interations. The
|
||||
When generating an NSEC3 chain, use this many iterations. The
|
||||
default is 100.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -32,7 +32,7 @@
|
||||
<div class="cmdsynopsis"><p><code class="command">dnssec-signzone</code> [<code class="option">-a</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-d <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-e <em class="replaceable"><code>end-time</code></em></code>] [<code class="option">-f <em class="replaceable"><code>output-file</code></em></code>] [<code class="option">-g</code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>key</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-I <em class="replaceable"><code>input-format</code></em></code>] [<code class="option">-j <em class="replaceable"><code>jitter</code></em></code>] [<code class="option">-N <em class="replaceable"><code>soa-serial-format</code></em></code>] [<code class="option">-o <em class="replaceable"><code>origin</code></em></code>] [<code class="option">-O <em class="replaceable"><code>output-format</code></em></code>] [<code class="option">-p</code>] [<code class="option">-P</code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-s <em class="replaceable"><code>start-time</code></em></code>] [<code class="option">-t</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-z</code>] [<code class="option">-3 <em class="replaceable"><code>salt</code></em></code>] [<code class="option">-H <em class="replaceable"><code>iterations</code></em></code>] [<code class="option">-A</code>] {zonefile} [key...]</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543561"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543564"></a><h2>DESCRIPTION</h2>
|
||||
<p><span><strong class="command">dnssec-signzone</strong></span>
|
||||
signs a zone. It generates
|
||||
NSEC and RRSIG records and produces a signed version of the
|
||||
@@ -43,7 +43,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543579"></a><h2>OPTIONS</h2>
|
||||
<a name="id2543582"></a><h2>OPTIONS</h2>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term">-a</span></dt>
|
||||
<dd><p>
|
||||
@@ -249,7 +249,7 @@
|
||||
</p></dd>
|
||||
<dt><span class="term">-H <em class="replaceable"><code>iterations</code></em></span></dt>
|
||||
<dd><p>
|
||||
When generating a NSEC3 chain use this many interations. The
|
||||
When generating an NSEC3 chain, use this many iterations. The
|
||||
default is 100.
|
||||
</p></dd>
|
||||
<dt><span class="term">-A</span></dt>
|
||||
@@ -273,7 +273,7 @@
|
||||
</dl></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544506"></a><h2>EXAMPLE</h2>
|
||||
<a name="id2544509"></a><h2>EXAMPLE</h2>
|
||||
<p>
|
||||
The following command signs the <strong class="userinput"><code>example.com</code></strong>
|
||||
zone with the DSA key generated by <span><strong class="command">dnssec-keygen</strong></span>
|
||||
@@ -302,7 +302,7 @@ db.example.com.signed
|
||||
%</pre>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544557"></a><h2>KNOWN BUGS</h2>
|
||||
<a name="id2544561"></a><h2>KNOWN BUGS</h2>
|
||||
<p>
|
||||
<span><strong class="command">dnssec-signzone</strong></span> was designed so that it could
|
||||
sign a zone partially, using only a subset of the DNSSEC keys
|
||||
@@ -327,14 +327,14 @@ db.example.com.signed
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544720"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2544723"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
|
||||
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
|
||||
<em class="citetitle">RFC 4033</em>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544744"></a><h2>AUTHOR</h2>
|
||||
<a name="id2544747"></a><h2>AUTHOR</h2>
|
||||
<p><span class="corpauthor">Internet Systems Consortium</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+11
-1
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1998-2002 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -21,6 +21,12 @@ top_srcdir = @top_srcdir@
|
||||
|
||||
@BIND9_VERSION@
|
||||
|
||||
@BIND9_PRODUCT@
|
||||
|
||||
@BIND9_DESCRIPTION@
|
||||
|
||||
@BIND9_SRCID@
|
||||
|
||||
@BIND9_CONFIGARGS@
|
||||
|
||||
@BIND9_MAKE_INCLUDES@
|
||||
@@ -107,6 +113,9 @@ MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
||||
main.@O@: main.c
|
||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
||||
-DVERSION=\"${VERSION}\" \
|
||||
-DPRODUCT=\"${PRODUCT}\" \
|
||||
-DDESCRIPTION=\"${DESCRIPTION}\" \
|
||||
-DSRCID=\"${SRCID}\" \
|
||||
-DCONFIGARGS="\"${CONFIGARGS}\"" \
|
||||
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
|
||||
-DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c
|
||||
@@ -114,6 +123,7 @@ main.@O@: main.c
|
||||
config.@O@: config.c
|
||||
${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
|
||||
-DVERSION=\"${VERSION}\" \
|
||||
-DSRCID=\"${SRCID}\" \
|
||||
-DNS_LOCALSTATEDIR=\"${localstatedir}\" \
|
||||
-c ${srcdir}/config.c
|
||||
|
||||
|
||||
+101
-133
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -954,6 +954,7 @@ ns_client_send(ns_client_t *client) {
|
||||
result = dns_compress_init(&cctx, -1, client->mctx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto done;
|
||||
dns_compress_setsensitive(&cctx, ISC_TRUE);
|
||||
cleanup_cctx = ISC_TRUE;
|
||||
|
||||
result = dns_message_renderbegin(client->message, &cctx, &buffer);
|
||||
@@ -1170,62 +1171,30 @@ ns_client_error(ns_client_t *client, isc_result_t result) {
|
||||
|
||||
static inline isc_result_t
|
||||
client_addopt(ns_client_t *client) {
|
||||
dns_rdataset_t *rdataset;
|
||||
dns_rdatalist_t *rdatalist;
|
||||
dns_rdata_t *rdata;
|
||||
char nsid[BUFSIZ], *nsidp;
|
||||
isc_result_t result;
|
||||
dns_view_t *view;
|
||||
dns_resolver_t *resolver;
|
||||
isc_uint16_t udpsize;
|
||||
dns_ednsopt_t ednsopts[2];
|
||||
int count = 0;
|
||||
unsigned int flags;
|
||||
|
||||
REQUIRE(client->opt == NULL); /* XXXRTH free old. */
|
||||
|
||||
rdatalist = NULL;
|
||||
result = dns_message_gettemprdatalist(client->message, &rdatalist);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
rdata = NULL;
|
||||
result = dns_message_gettemprdata(client->message, &rdata);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
rdataset = NULL;
|
||||
result = dns_message_gettemprdataset(client->message, &rdataset);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
dns_rdataset_init(rdataset);
|
||||
|
||||
rdatalist->type = dns_rdatatype_opt;
|
||||
rdatalist->covers = 0;
|
||||
|
||||
/*
|
||||
* Set the maximum UDP buffer size.
|
||||
*/
|
||||
view = client->view;
|
||||
resolver = (view != NULL) ? view->resolver : NULL;
|
||||
if (resolver != NULL)
|
||||
udpsize = dns_resolver_getudpsize(resolver);
|
||||
else
|
||||
udpsize = ns_g_udpsize;
|
||||
rdatalist->rdclass = udpsize;
|
||||
|
||||
/*
|
||||
* Set EXTENDED-RCODE, VERSION and Z to 0.
|
||||
*/
|
||||
rdatalist->ttl = (client->extflags & DNS_MESSAGEEXTFLAG_REPLYPRESERVE);
|
||||
flags = client->extflags & DNS_MESSAGEEXTFLAG_REPLYPRESERVE;
|
||||
|
||||
/* Set EDNS options if applicable */
|
||||
if (client->attributes & NS_CLIENTATTR_WANTNSID &&
|
||||
if ((client->attributes & NS_CLIENTATTR_WANTNSID) != 0 &&
|
||||
(ns_g_server->server_id != NULL ||
|
||||
ns_g_server->server_usehostname)) {
|
||||
/*
|
||||
* Space required for NSID data:
|
||||
* 2 bytes for opt code
|
||||
* + 2 bytes for NSID length
|
||||
* + NSID itself
|
||||
*/
|
||||
char nsid[BUFSIZ], *nsidp;
|
||||
isc_buffer_t *buffer = NULL;
|
||||
|
||||
if (ns_g_server->server_usehostname) {
|
||||
isc_result_t result;
|
||||
result = ns_os_gethostname(nsid, sizeof(nsid));
|
||||
@@ -1236,35 +1205,15 @@ client_addopt(ns_client_t *client) {
|
||||
} else
|
||||
nsidp = ns_g_server->server_id;
|
||||
|
||||
rdata->length = strlen(nsidp) + 4;
|
||||
result = isc_buffer_allocate(client->mctx, &buffer,
|
||||
rdata->length);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto no_nsid;
|
||||
|
||||
isc_buffer_putuint16(buffer, DNS_OPT_NSID);
|
||||
isc_buffer_putuint16(buffer, strlen(nsidp));
|
||||
isc_buffer_putstr(buffer, nsidp);
|
||||
rdata->data = buffer->base;
|
||||
dns_message_takebuffer(client->message, &buffer);
|
||||
} else {
|
||||
no_nsid:
|
||||
rdata->data = NULL;
|
||||
rdata->length = 0;
|
||||
ednsopts[count].code = DNS_OPT_NSID;
|
||||
ednsopts[count].length = strlen(nsidp);
|
||||
ednsopts[count].value = (unsigned char *)nsidp;
|
||||
count++;
|
||||
}
|
||||
|
||||
rdata->rdclass = rdatalist->rdclass;
|
||||
rdata->type = rdatalist->type;
|
||||
rdata->flags = 0;
|
||||
|
||||
ISC_LIST_INIT(rdatalist->rdata);
|
||||
ISC_LIST_APPEND(rdatalist->rdata, rdata, link);
|
||||
RUNTIME_CHECK(dns_rdatalist_tordataset(rdatalist, rdataset)
|
||||
== ISC_R_SUCCESS);
|
||||
|
||||
client->opt = rdataset;
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
no_nsid:
|
||||
result = dns_message_buildopt(client->message, &client->opt, 0,
|
||||
udpsize, flags, ednsopts, count);
|
||||
return (result);
|
||||
}
|
||||
|
||||
static inline isc_boolean_t
|
||||
@@ -1345,6 +1294,83 @@ ns_client_isself(dns_view_t *myview, dns_tsigkey_t *mykey,
|
||||
return (ISC_TF(view == myview));
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
process_opt(ns_client_t *client, dns_rdataset_t *opt) {
|
||||
dns_rdata_t rdata;
|
||||
isc_buffer_t optbuf;
|
||||
isc_result_t result;
|
||||
isc_uint16_t optcode;
|
||||
isc_uint16_t optlen;
|
||||
|
||||
/*
|
||||
* Set the client's UDP buffer size.
|
||||
*/
|
||||
client->udpsize = opt->rdclass;
|
||||
|
||||
/*
|
||||
* If the requested UDP buffer size is less than 512,
|
||||
* ignore it and use 512.
|
||||
*/
|
||||
if (client->udpsize < 512)
|
||||
client->udpsize = 512;
|
||||
|
||||
/*
|
||||
* Get the flags out of the OPT record.
|
||||
*/
|
||||
client->extflags = (isc_uint16_t)(opt->ttl & 0xFFFF);
|
||||
|
||||
/*
|
||||
* Do we understand this version of EDNS?
|
||||
*
|
||||
* XXXRTH need library support for this!
|
||||
*/
|
||||
client->ednsversion = (opt->ttl & 0x00FF0000) >> 16;
|
||||
if (client->ednsversion > 0) {
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_badednsver);
|
||||
result = client_addopt(client);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
result = DNS_R_BADVERS;
|
||||
ns_client_error(client, result);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Check for NSID request */
|
||||
result = dns_rdataset_first(opt);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
dns_rdata_init(&rdata);
|
||||
dns_rdataset_current(opt, &rdata);
|
||||
isc_buffer_init(&optbuf, rdata.data, rdata.length);
|
||||
isc_buffer_add(&optbuf, rdata.length);
|
||||
while (isc_buffer_remaininglength(&optbuf) >= 4) {
|
||||
optcode = isc_buffer_getuint16(&optbuf);
|
||||
optlen = isc_buffer_getuint16(&optbuf);
|
||||
switch (optcode) {
|
||||
case DNS_OPT_NSID:
|
||||
client->attributes |= NS_CLIENTATTR_WANTNSID;
|
||||
isc_buffer_forward(&optbuf, optlen);
|
||||
break;
|
||||
default:
|
||||
isc_buffer_forward(&optbuf, optlen);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isc_stats_increment(ns_g_server->nsstats, dns_nsstatscounter_edns0in);
|
||||
|
||||
/*
|
||||
* Create an OPT for our reply.
|
||||
*/
|
||||
result = client_addopt(client);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
ns_client_error(client, result);
|
||||
goto cleanup;
|
||||
}
|
||||
cleanup:
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle an incoming request event from the socket (UDP case)
|
||||
* or tcpmsg (TCP case).
|
||||
@@ -1367,8 +1393,6 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
dns_messageid_t id;
|
||||
unsigned int flags;
|
||||
isc_boolean_t notimp;
|
||||
dns_rdata_t rdata;
|
||||
isc_uint16_t optcode;
|
||||
|
||||
REQUIRE(event != NULL);
|
||||
client = event->ev_arg;
|
||||
@@ -1377,10 +1401,9 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
INSIST(client->state ==
|
||||
TCP_CLIENT(client) ?
|
||||
NS_CLIENTSTATE_READING :
|
||||
NS_CLIENTSTATE_READY);
|
||||
INSIST(client->state == (TCP_CLIENT(client) ?
|
||||
NS_CLIENTSTATE_READING :
|
||||
NS_CLIENTSTATE_READY));
|
||||
|
||||
ns_client_requests++;
|
||||
|
||||
@@ -1569,67 +1592,9 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
*/
|
||||
opt = dns_message_getopt(client->message);
|
||||
if (opt != NULL) {
|
||||
/*
|
||||
* Set the client's UDP buffer size.
|
||||
*/
|
||||
client->udpsize = opt->rdclass;
|
||||
|
||||
/*
|
||||
* If the requested UDP buffer size is less than 512,
|
||||
* ignore it and use 512.
|
||||
*/
|
||||
if (client->udpsize < 512)
|
||||
client->udpsize = 512;
|
||||
|
||||
/*
|
||||
* Get the flags out of the OPT record.
|
||||
*/
|
||||
client->extflags = (isc_uint16_t)(opt->ttl & 0xFFFF);
|
||||
|
||||
/*
|
||||
* Do we understand this version of EDNS?
|
||||
*
|
||||
* XXXRTH need library support for this!
|
||||
*/
|
||||
client->ednsversion = (opt->ttl & 0x00FF0000) >> 16;
|
||||
if (client->ednsversion > 0) {
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_badednsver);
|
||||
result = client_addopt(client);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
result = DNS_R_BADVERS;
|
||||
ns_client_error(client, result);
|
||||
result = process_opt(client, opt);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Check for NSID request */
|
||||
result = dns_rdataset_first(opt);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
dns_rdata_init(&rdata);
|
||||
dns_rdataset_current(opt, &rdata);
|
||||
if (rdata.length >= 2) {
|
||||
isc_buffer_t nsidbuf;
|
||||
isc_buffer_init(&nsidbuf,
|
||||
rdata.data, rdata.length);
|
||||
isc_buffer_add(&nsidbuf, rdata.length);
|
||||
optcode = isc_buffer_getuint16(&nsidbuf);
|
||||
if (optcode == DNS_OPT_NSID)
|
||||
client->attributes |=
|
||||
NS_CLIENTATTR_WANTNSID;
|
||||
}
|
||||
}
|
||||
|
||||
isc_stats_increment(ns_g_server->nsstats,
|
||||
dns_nsstatscounter_edns0in);
|
||||
|
||||
/*
|
||||
* Create an OPT for our reply.
|
||||
*/
|
||||
result = client_addopt(client);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
ns_client_error(client, result);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (client->message->rdclass == 0) {
|
||||
@@ -2390,6 +2355,9 @@ ns_client_replace(ns_client_t *client) {
|
||||
|
||||
CTRACE("replace");
|
||||
|
||||
REQUIRE(client != NULL);
|
||||
REQUIRE(client->manager != NULL);
|
||||
|
||||
result = ns_clientmgr_createclients(client->manager,
|
||||
1, client->interface,
|
||||
(TCP_CLIENT(client) ?
|
||||
|
||||
+11
-12
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2001-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -87,7 +87,7 @@ options {\n\
|
||||
statistics-file \"named.stats\";\n\
|
||||
statistics-interval 60;\n\
|
||||
tcp-clients 100;\n\
|
||||
tcp-listen-queue 3;\n\
|
||||
tcp-listen-queue 10;\n\
|
||||
# tkey-dhkey <none>\n\
|
||||
# tkey-gssapi-credential <none>\n\
|
||||
# tkey-domain <none>\n\
|
||||
@@ -136,6 +136,7 @@ options {\n\
|
||||
check-names slave warn;\n\
|
||||
check-names response ignore;\n\
|
||||
check-mx warn;\n\
|
||||
check-spf warn;\n\
|
||||
acache-enable no;\n\
|
||||
acache-cleaning-interval 60;\n\
|
||||
max-acache-size 16M;\n\
|
||||
@@ -601,17 +602,16 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
if (isc_sockaddr_getport(&addrs[i]) == 0)
|
||||
isc_sockaddr_setport(&addrs[i], port);
|
||||
keys[i] = NULL;
|
||||
if (!cfg_obj_isstring(key)) {
|
||||
i++;
|
||||
i++; /* Increment here so that cleanup on error works. */
|
||||
if (!cfg_obj_isstring(key))
|
||||
continue;
|
||||
}
|
||||
keys[i] = isc_mem_get(mctx, sizeof(dns_name_t));
|
||||
if (keys[i] == NULL)
|
||||
keys[i - 1] = isc_mem_get(mctx, sizeof(dns_name_t));
|
||||
if (keys[i - 1] == NULL)
|
||||
goto cleanup;
|
||||
dns_name_init(keys[i], NULL);
|
||||
dns_name_init(keys[i - 1], NULL);
|
||||
|
||||
keystr = cfg_obj_asstring(key);
|
||||
isc_buffer_init(&b, keystr, strlen(keystr));
|
||||
isc_buffer_constinit(&b, keystr, strlen(keystr));
|
||||
isc_buffer_add(&b, strlen(keystr));
|
||||
dns_fixedname_init(&fname);
|
||||
result = dns_name_fromtext(dns_fixedname_name(&fname), &b,
|
||||
@@ -619,10 +619,9 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
result = dns_name_dup(dns_fixedname_name(&fname), mctx,
|
||||
keys[i]);
|
||||
keys[i - 1]);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
i++;
|
||||
}
|
||||
if (pushed != 0) {
|
||||
pushed--;
|
||||
@@ -678,7 +677,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
|
||||
if (addrs != NULL)
|
||||
isc_mem_put(mctx, addrs, addrcount * sizeof(isc_sockaddr_t));
|
||||
if (keys != NULL) {
|
||||
for (j = 0; j <= i; j++) {
|
||||
for (j = 0; j < i; j++) {
|
||||
if (keys[j] == NULL)
|
||||
continue;
|
||||
if (dns_name_dynamic(keys[j]))
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ command_compare(const char *text, const char *command) {
|
||||
isc_result_t
|
||||
ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) {
|
||||
isccc_sexpr_t *data;
|
||||
char *command;
|
||||
char *command = NULL;
|
||||
isc_result_t result;
|
||||
int log_level;
|
||||
#ifdef HAVE_LIBSCF
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2008, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2001-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -149,7 +149,7 @@ free_listener(controllistener_t *listener) {
|
||||
if (listener->acl != NULL)
|
||||
dns_acl_detach(&listener->acl);
|
||||
|
||||
isc_mem_put(listener->mctx, listener, sizeof(*listener));
|
||||
isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -373,8 +373,10 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
||||
if (result == ISC_R_SUCCESS)
|
||||
break;
|
||||
isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
|
||||
log_invalid(&conn->ccmsg, result);
|
||||
goto cleanup;
|
||||
if (result != ISCCC_R_BADAUTH) {
|
||||
log_invalid(&conn->ccmsg, result);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (key == NULL) {
|
||||
@@ -1064,8 +1066,9 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
|
||||
result = ISC_R_NOMEMORY;
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
listener->mctx = NULL;
|
||||
isc_mem_attach(mctx, &listener->mctx);
|
||||
listener->controls = cp;
|
||||
listener->mctx = mctx;
|
||||
listener->task = cp->server->task;
|
||||
listener->address = *addr;
|
||||
listener->sock = NULL;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env perl
|
||||
#
|
||||
# Copyright (C) 2006-2008 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2006-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
# purpose with or without fee is hereby granted, provided that the above
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
!named
|
||||
@@ -161,12 +161,13 @@ struct ns_client {
|
||||
#define NS_CLIENT_MAGIC ISC_MAGIC('N','S','C','c')
|
||||
#define NS_CLIENT_VALID(c) ISC_MAGIC_VALID(c, NS_CLIENT_MAGIC)
|
||||
|
||||
#define NS_CLIENTATTR_TCP 0x01
|
||||
#define NS_CLIENTATTR_RA 0x02 /*%< Client gets recursive service */
|
||||
#define NS_CLIENTATTR_PKTINFO 0x04 /*%< pktinfo is valid */
|
||||
#define NS_CLIENTATTR_MULTICAST 0x08 /*%< recv'd from multicast */
|
||||
#define NS_CLIENTATTR_WANTDNSSEC 0x10 /*%< include dnssec records */
|
||||
#define NS_CLIENTATTR_WANTNSID 0x20 /*%< include nameserver ID */
|
||||
#define NS_CLIENTATTR_TCP 0x001
|
||||
#define NS_CLIENTATTR_RA 0x002 /*%< Client gets recursive service */
|
||||
#define NS_CLIENTATTR_PKTINFO 0x004 /*%< pktinfo is valid */
|
||||
#define NS_CLIENTATTR_MULTICAST 0x008 /*%< recv'd from multicast */
|
||||
#define NS_CLIENTATTR_WANTDNSSEC 0x010 /*%< include dnssec records */
|
||||
#define NS_CLIENTATTR_WANTNSID 0x020 /*%< include nameserver ID */
|
||||
#define NS_CLIENTATTR_WANTAD 0x100 /*%< want AD in response if possible */
|
||||
|
||||
extern unsigned int ns_client_requests;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2008, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2008, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -63,6 +63,9 @@ EXTERN isc_timermgr_t * ns_g_timermgr INIT(NULL);
|
||||
EXTERN isc_socketmgr_t * ns_g_socketmgr INIT(NULL);
|
||||
EXTERN cfg_parser_t * ns_g_parser INIT(NULL);
|
||||
EXTERN const char * ns_g_version INIT(VERSION);
|
||||
EXTERN const char * ns_g_product INIT(PRODUCT);
|
||||
EXTERN const char * ns_g_description INIT(DESCRIPTION);
|
||||
EXTERN const char * ns_g_srcid INIT(SRCID);
|
||||
EXTERN const char * ns_g_configargs INIT(CONFIGARGS);
|
||||
EXTERN in_port_t ns_g_port INIT(0);
|
||||
EXTERN in_port_t lwresd_g_listenport INIT(0);
|
||||
@@ -111,6 +114,7 @@ EXTERN isc_boolean_t ns_g_coreok INIT(ISC_TRUE);
|
||||
EXTERN const char * ns_g_chrootdir INIT(NULL);
|
||||
EXTERN isc_boolean_t ns_g_foreground INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_logstderr INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_nosyslog INIT(ISC_FALSE);
|
||||
|
||||
#if NS_RUN_PID_DIR
|
||||
EXTERN const char * ns_g_defaultpidfile INIT(NS_LOCALSTATEDIR
|
||||
@@ -134,6 +138,7 @@ EXTERN isc_boolean_t ns_g_memstatistics INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_clienttest INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_nosoa INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_noaa INIT(ISC_FALSE);
|
||||
EXTERN isc_boolean_t ns_g_nonearest INIT(ISC_FALSE);
|
||||
|
||||
#undef EXTERN
|
||||
#undef INIT
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -79,11 +79,13 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
||||
if (mgr == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
mgr->mctx = NULL;
|
||||
isc_mem_attach(mctx, &mgr->mctx);
|
||||
|
||||
result = isc_mutex_init(&mgr->lock);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_mem;
|
||||
|
||||
mgr->mctx = mctx;
|
||||
mgr->taskmgr = taskmgr;
|
||||
mgr->socketmgr = socketmgr;
|
||||
mgr->dispatchmgr = dispatchmgr;
|
||||
@@ -115,7 +117,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
|
||||
ns_listenlist_detach(&mgr->listenon4);
|
||||
ns_listenlist_detach(&mgr->listenon6);
|
||||
cleanup_mem:
|
||||
isc_mem_put(mctx, mgr, sizeof(*mgr));
|
||||
isc_mem_putanddetach(&mgr->mctx, mgr, sizeof(*mgr));
|
||||
return (result);
|
||||
}
|
||||
|
||||
@@ -128,7 +130,7 @@ ns_interfacemgr_destroy(ns_interfacemgr_t *mgr) {
|
||||
clearlistenon(mgr);
|
||||
DESTROYLOCK(&mgr->lock);
|
||||
mgr->magic = 0;
|
||||
isc_mem_put(mgr->mctx, mgr, sizeof(*mgr));
|
||||
isc_mem_putanddetach(&mgr->mctx, mgr, sizeof(*mgr));
|
||||
}
|
||||
|
||||
dns_aclenv_t *
|
||||
@@ -523,15 +525,22 @@ setup_locals(ns_interfacemgr_t *mgr, isc_interface_t *interface) {
|
||||
return (result);
|
||||
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
ISC_LOG_WARNING,
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_WARNING,
|
||||
"omitting IPv4 interface %s from "
|
||||
"localnets ACL: %s",
|
||||
interface->name,
|
||||
"localnets ACL: %s", interface->name,
|
||||
isc_result_totext(result));
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
if (prefixlen == 0U) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_WARNING,
|
||||
"omitting %s interface %s from localnets ACL: "
|
||||
"zero prefix length detected",
|
||||
(netaddr->family == AF_INET) ? "IPv4" : "IPv6",
|
||||
interface->name);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
result = dns_iptable_addprefix(mgr->aclenv.localnets->iptable,
|
||||
netaddr, prefixlen, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -201,7 +201,7 @@ isc_result_t
|
||||
ns_log_setdefaultcategory(isc_logconfig_t *lcfg) {
|
||||
isc_result_t result;
|
||||
|
||||
if (! ns_g_logstderr) {
|
||||
if (! ns_g_logstderr && ! ns_g_nosyslog) {
|
||||
result = isc_log_usechannel(lcfg, "default_syslog",
|
||||
ISC_LOGCATEGORY_DEFAULT, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
|
||||
+39
-32
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
/*%
|
||||
* Set up a logging category according to the named.conf data
|
||||
* in 'ccat' and add it to 'lctx'.
|
||||
* in 'ccat' and add it to 'logconfig'.
|
||||
*/
|
||||
static isc_result_t
|
||||
category_fromconf(const cfg_obj_t *ccat, isc_logconfig_t *lctx) {
|
||||
category_fromconf(const cfg_obj_t *ccat, isc_logconfig_t *logconfig) {
|
||||
isc_result_t result;
|
||||
const char *catname;
|
||||
isc_logcategory_t *category;
|
||||
@@ -64,6 +64,9 @@ category_fromconf(const cfg_obj_t *ccat, isc_logconfig_t *lctx) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
if (logconfig == NULL)
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
module = NULL;
|
||||
|
||||
destinations = cfg_tuple_get(ccat, "destinations");
|
||||
@@ -74,7 +77,7 @@ category_fromconf(const cfg_obj_t *ccat, isc_logconfig_t *lctx) {
|
||||
const cfg_obj_t *channel = cfg_listelt_value(element);
|
||||
const char *channelname = cfg_obj_asstring(channel);
|
||||
|
||||
result = isc_log_usechannel(lctx, channelname, category,
|
||||
result = isc_log_usechannel(logconfig, channelname, category,
|
||||
module);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(ns_g_lctx, CFG_LOGCATEGORY_CONFIG,
|
||||
@@ -89,10 +92,11 @@ category_fromconf(const cfg_obj_t *ccat, isc_logconfig_t *lctx) {
|
||||
|
||||
/*%
|
||||
* Set up a logging channel according to the named.conf data
|
||||
* in 'cchan' and add it to 'lctx'.
|
||||
* in 'cchan' and add it to 'logconfig'.
|
||||
*/
|
||||
static isc_result_t
|
||||
channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *lctx) {
|
||||
channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *logconfig)
|
||||
{
|
||||
isc_result_t result;
|
||||
isc_logdestination_t dest;
|
||||
unsigned int type;
|
||||
@@ -215,8 +219,11 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *lctx) {
|
||||
level = cfg_obj_asuint32(severity);
|
||||
}
|
||||
|
||||
result = isc_log_createchannel(lctx, channelname,
|
||||
type, level, &dest, flags);
|
||||
if (logconfig == NULL)
|
||||
result = ISC_R_SUCCESS;
|
||||
else
|
||||
result = isc_log_createchannel(logconfig, channelname,
|
||||
type, level, &dest, flags);
|
||||
|
||||
if (result == ISC_R_SUCCESS && type == ISC_LOG_TOFILE) {
|
||||
FILE *fp;
|
||||
@@ -226,39 +233,40 @@ channel_fromconf(const cfg_obj_t *channel, isc_logconfig_t *lctx) {
|
||||
* Fix defect #22771
|
||||
*/
|
||||
result = isc_file_isplainfile(dest.file.name);
|
||||
if (result == ISC_R_SUCCESS ||
|
||||
result == ISC_R_FILENOTFOUND) {
|
||||
if (result == ISC_R_SUCCESS || result == ISC_R_FILENOTFOUND) {
|
||||
/*
|
||||
* Test that the file can be opened, since
|
||||
* isc_log_open() can't effectively report
|
||||
* failures when called in
|
||||
* isc_log_doit().
|
||||
* failures when called in isc_log_doit().
|
||||
*/
|
||||
result = isc_stdio_open(dest.file.name, "a", &fp);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
syslog(LOG_ERR,
|
||||
"isc_stdio_open '%s' failed: %s",
|
||||
dest.file.name,
|
||||
isc_result_totext(result));
|
||||
if (logconfig != NULL && !ns_g_nosyslog)
|
||||
syslog(LOG_ERR,
|
||||
"isc_stdio_open '%s' failed: "
|
||||
"%s", dest.file.name,
|
||||
isc_result_totext(result));
|
||||
fprintf(stderr,
|
||||
"isc_stdio_open '%s' failed: %s",
|
||||
"isc_stdio_open '%s' failed: %s\n",
|
||||
dest.file.name,
|
||||
isc_result_totext(result));
|
||||
} else
|
||||
(void)isc_stdio_close(fp);
|
||||
} else {
|
||||
syslog(LOG_ERR, "isc_file_isplainfile '%s' failed: %s",
|
||||
dest.file.name, isc_result_totext(result));
|
||||
fprintf(stderr, "isc_file_isplainfile '%s' failed: %s",
|
||||
dest.file.name, isc_result_totext(result));
|
||||
goto done;
|
||||
}
|
||||
if (logconfig != NULL && !ns_g_nosyslog)
|
||||
syslog(LOG_ERR, "isc_file_isplainfile '%s' failed: %s",
|
||||
dest.file.name, isc_result_totext(result));
|
||||
fprintf(stderr, "isc_file_isplainfile '%s' failed: %s\n",
|
||||
dest.file.name, isc_result_totext(result));
|
||||
}
|
||||
|
||||
done:
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
ns_log_configure(isc_logconfig_t *logconf, const cfg_obj_t *logstmt) {
|
||||
ns_log_configure(isc_logconfig_t *logconfig, const cfg_obj_t *logstmt) {
|
||||
isc_result_t result;
|
||||
const cfg_obj_t *channels = NULL;
|
||||
const cfg_obj_t *categories = NULL;
|
||||
@@ -267,7 +275,8 @@ ns_log_configure(isc_logconfig_t *logconf, const cfg_obj_t *logstmt) {
|
||||
isc_boolean_t unmatched_set = ISC_FALSE;
|
||||
const cfg_obj_t *catname;
|
||||
|
||||
CHECK(ns_log_setdefaultchannels(logconf));
|
||||
if (logconfig != NULL)
|
||||
CHECK(ns_log_setdefaultchannels(logconfig));
|
||||
|
||||
(void)cfg_map_get(logstmt, "channel", &channels);
|
||||
for (element = cfg_list_first(channels);
|
||||
@@ -275,7 +284,7 @@ ns_log_configure(isc_logconfig_t *logconf, const cfg_obj_t *logstmt) {
|
||||
element = cfg_list_next(element))
|
||||
{
|
||||
const cfg_obj_t *channel = cfg_listelt_value(element);
|
||||
CHECK(channel_fromconf(channel, logconf));
|
||||
CHECK(channel_fromconf(channel, logconfig));
|
||||
}
|
||||
|
||||
(void)cfg_map_get(logstmt, "category", &categories);
|
||||
@@ -284,7 +293,7 @@ ns_log_configure(isc_logconfig_t *logconf, const cfg_obj_t *logstmt) {
|
||||
element = cfg_list_next(element))
|
||||
{
|
||||
const cfg_obj_t *category = cfg_listelt_value(element);
|
||||
CHECK(category_fromconf(category, logconf));
|
||||
CHECK(category_fromconf(category, logconfig));
|
||||
if (!default_set) {
|
||||
catname = cfg_tuple_get(category, "name");
|
||||
if (strcmp(cfg_obj_asstring(catname), "default") == 0)
|
||||
@@ -297,16 +306,14 @@ ns_log_configure(isc_logconfig_t *logconf, const cfg_obj_t *logstmt) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!default_set)
|
||||
CHECK(ns_log_setdefaultcategory(logconf));
|
||||
if (logconfig != NULL && !default_set)
|
||||
CHECK(ns_log_setdefaultcategory(logconfig));
|
||||
|
||||
if (!unmatched_set)
|
||||
CHECK(ns_log_setunmatchedcategory(logconf));
|
||||
if (logconfig != NULL && !unmatched_set)
|
||||
CHECK(ns_log_setunmatchedcategory(logconfig));
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
cleanup:
|
||||
if (logconf != NULL)
|
||||
isc_logconfig_destroy(&logconf);
|
||||
return (result);
|
||||
}
|
||||
|
||||
+7
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -204,6 +204,8 @@ lookup_done(isc_task_t *task, isc_event_t *event) {
|
||||
lwres_grbnresponse_t *grbn;
|
||||
int i;
|
||||
|
||||
REQUIRE(event != NULL);
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
lwb.base = NULL;
|
||||
@@ -324,9 +326,6 @@ lookup_done(isc_task_t *task, isc_event_t *event) {
|
||||
(grbn->nsigs == 1) ? "" : "s");
|
||||
}
|
||||
|
||||
dns_lookup_destroy(&client->lookup);
|
||||
isc_event_free(&event);
|
||||
|
||||
/*
|
||||
* Render the packet.
|
||||
*/
|
||||
@@ -362,6 +361,9 @@ lookup_done(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
NS_LWDCLIENT_SETSEND(client);
|
||||
|
||||
dns_lookup_destroy(&client->lookup);
|
||||
isc_event_free(&event);
|
||||
|
||||
return;
|
||||
|
||||
out:
|
||||
@@ -384,8 +386,7 @@ lookup_done(isc_task_t *task, isc_event_t *event) {
|
||||
if (lwb.base != NULL)
|
||||
lwres_context_freemem(cm->lwctx, lwb.base, lwb.length);
|
||||
|
||||
if (event != NULL)
|
||||
isc_event_free(&event);
|
||||
isc_event_free(&event);
|
||||
|
||||
ns_lwdclient_log(50, "error constructing getrrsetbyname response");
|
||||
ns_lwdclient_errorpktsend(client, LWRES_R_FAILURE);
|
||||
|
||||
+1
-1
@@ -368,7 +368,7 @@ ns_lwdmanager_create(isc_mem_t *mctx, const cfg_obj_t *lwres,
|
||||
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
isc_buffer_init(&namebuf, searchstr,
|
||||
isc_buffer_constinit(&namebuf, searchstr,
|
||||
strlen(searchstr));
|
||||
isc_buffer_add(&namebuf, strlen(searchstr));
|
||||
result = dns_name_fromtext(name, &namebuf,
|
||||
|
||||
+18
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -462,6 +462,10 @@ parse_command_line(int argc, char *argv[]) {
|
||||
ns_g_nosoa = ISC_TRUE;
|
||||
else if (!strcmp(isc_commandline_argument, "noaa"))
|
||||
ns_g_noaa = ISC_TRUE;
|
||||
else if (!strcmp(isc_commandline_argument, "nosyslog"))
|
||||
ns_g_nosyslog = ISC_TRUE;
|
||||
else if (!strcmp(isc_commandline_argument, "nonearest"))
|
||||
ns_g_nonearest = ISC_TRUE;
|
||||
else
|
||||
fprintf(stderr, "unknown -T flag '%s\n",
|
||||
isc_commandline_argument);
|
||||
@@ -470,11 +474,18 @@ parse_command_line(int argc, char *argv[]) {
|
||||
ns_g_username = isc_commandline_argument;
|
||||
break;
|
||||
case 'v':
|
||||
printf("BIND %s\n", ns_g_version);
|
||||
printf("%s %s", ns_g_product, ns_g_version);
|
||||
if (*ns_g_description != 0)
|
||||
printf(" %s", ns_g_description);
|
||||
printf("\n");
|
||||
exit(0);
|
||||
case 'V':
|
||||
printf("BIND %s built with %s\n", ns_g_version,
|
||||
printf("%s %s", ns_g_product, ns_g_version);
|
||||
if (*ns_g_description != 0)
|
||||
printf(" %s", ns_g_description);
|
||||
printf(" <id:%s> built with %s\n", ns_g_srcid,
|
||||
ns_g_configargs);
|
||||
printf("\n");
|
||||
exit(0);
|
||||
case '?':
|
||||
usage();
|
||||
@@ -685,8 +696,8 @@ setup(void) {
|
||||
isc_result_totext(result));
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
||||
ISC_LOG_NOTICE, "starting BIND %s%s", ns_g_version,
|
||||
saved_command_line);
|
||||
ISC_LOG_NOTICE, "starting %s %s%s", ns_g_product,
|
||||
ns_g_version, saved_command_line);
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
||||
ISC_LOG_NOTICE, "built with %s", ns_g_configargs);
|
||||
@@ -909,9 +920,9 @@ main(int argc, char *argv[]) {
|
||||
*/
|
||||
strlcat(version,
|
||||
#if defined(NO_VERSION_DATE) || !defined(__DATE__)
|
||||
"named version: BIND " VERSION,
|
||||
"named version: BIND " VERSION " <" SRCID ">",
|
||||
#else
|
||||
"named version: BIND " VERSION " (" __DATE__ ")",
|
||||
"named version: BIND " VERSION " <" SRCID "> (" __DATE__ ")",
|
||||
#endif
|
||||
sizeof(version));
|
||||
result = isc_file_progname(*argv, program_name, sizeof(program_name));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
.\" purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -178,7 +178,7 @@ options {
|
||||
random\-device \fIquoted_string\fR;
|
||||
recursive\-clients \fIinteger\fR;
|
||||
serial\-query\-rate \fIinteger\fR;
|
||||
server\-id ( \fIquoted_string\fR | none |;
|
||||
server\-id ( \fIquoted_string\fR | hostname | none );
|
||||
stacksize \fIsize\fR;
|
||||
statistics\-file \fIquoted_string\fR;
|
||||
statistics\-interval \fIinteger\fR; // not yet implemented
|
||||
@@ -544,5 +544,5 @@ zone \fIstring\fR \fIoptional_class\fR {
|
||||
\fBrndc\fR(8),
|
||||
BIND 9 Administrator Reference Manual.
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004\-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004\-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -42,6 +42,7 @@
|
||||
<year>2007</year>
|
||||
<year>2008</year>
|
||||
<year>2012</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
</docinfo>
|
||||
@@ -207,7 +208,7 @@ options {
|
||||
random-device <replaceable>quoted_string</replaceable>;
|
||||
recursive-clients <replaceable>integer</replaceable>;
|
||||
serial-query-rate <replaceable>integer</replaceable>;
|
||||
server-id ( <replaceable>quoted_string</replaceable> | none |;
|
||||
server-id ( <replaceable>quoted_string</replaceable> | hostname | none );
|
||||
stacksize <replaceable>size</replaceable>;
|
||||
statistics-file <replaceable>quoted_string</replaceable>;
|
||||
statistics-interval <replaceable>integer</replaceable>; // not yet implemented
|
||||
|
||||
+16
-16
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -31,7 +31,7 @@
|
||||
<div class="cmdsynopsis"><p><code class="command">named.conf</code> </p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543346"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543349"></a><h2>DESCRIPTION</h2>
|
||||
<p><code class="filename">named.conf</code> is the configuration file
|
||||
for
|
||||
<span><strong class="command">named</strong></span>. Statements are enclosed
|
||||
@@ -50,14 +50,14 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543373"></a><h2>ACL</h2>
|
||||
<a name="id2543377"></a><h2>ACL</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
acl <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
||||
<br>
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543389"></a><h2>KEY</h2>
|
||||
<a name="id2543393"></a><h2>KEY</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
key <em class="replaceable"><code>domain_name</code></em> {<br>
|
||||
algorithm <em class="replaceable"><code>string</code></em>;<br>
|
||||
@@ -66,7 +66,7 @@ key
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543409"></a><h2>MASTERS</h2>
|
||||
<a name="id2543412"></a><h2>MASTERS</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
masters <em class="replaceable"><code>string</code></em> [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br>
|
||||
( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<span class="optional">port <em class="replaceable"><code>integer</code></em></span>] |<br>
|
||||
@@ -75,7 +75,7 @@ masters
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543454"></a><h2>SERVER</h2>
|
||||
<a name="id2543458"></a><h2>SERVER</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
server ( <em class="replaceable"><code>ipv4_address[<span class="optional">/prefixlen</span>]</code></em> | <em class="replaceable"><code>ipv6_address[<span class="optional">/prefixlen</span>]</code></em> ) {<br>
|
||||
bogus <em class="replaceable"><code>boolean</code></em>;<br>
|
||||
@@ -97,7 +97,7 @@ server
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543523"></a><h2>TRUSTED-KEYS</h2>
|
||||
<a name="id2543526"></a><h2>TRUSTED-KEYS</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
trusted-keys {<br>
|
||||
<em class="replaceable"><code>domain_name</code></em> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key</code></em>; ... <br>
|
||||
@@ -105,7 +105,7 @@ trusted-keys
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543548"></a><h2>CONTROLS</h2>
|
||||
<a name="id2543552"></a><h2>CONTROLS</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
controls {<br>
|
||||
inet ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> | * )<br>
|
||||
@@ -117,7 +117,7 @@ controls
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543584"></a><h2>LOGGING</h2>
|
||||
<a name="id2543587"></a><h2>LOGGING</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
logging {<br>
|
||||
channel <em class="replaceable"><code>string</code></em> {<br>
|
||||
@@ -135,7 +135,7 @@ logging
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543622"></a><h2>LWRES</h2>
|
||||
<a name="id2543625"></a><h2>LWRES</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
lwres {<br>
|
||||
listen-on [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br>
|
||||
@@ -148,7 +148,7 @@ lwres
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543664"></a><h2>OPTIONS</h2>
|
||||
<a name="id2543667"></a><h2>OPTIONS</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
options {<br>
|
||||
avoid-v4-udp-ports { <em class="replaceable"><code>port</code></em>; ... };<br>
|
||||
@@ -176,7 +176,7 @@ options
|
||||
random-device <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||
recursive-clients <em class="replaceable"><code>integer</code></em>;<br>
|
||||
serial-query-rate <em class="replaceable"><code>integer</code></em>;<br>
|
||||
server-id ( <em class="replaceable"><code>quoted_string</code></em> | none |;<br>
|
||||
server-id ( <em class="replaceable"><code>quoted_string</code></em> | hostname | none );<br>
|
||||
stacksize <em class="replaceable"><code>size</code></em>;<br>
|
||||
statistics-file <em class="replaceable"><code>quoted_string</code></em>;<br>
|
||||
statistics-interval <em class="replaceable"><code>integer</code></em>; // not yet implemented<br>
|
||||
@@ -329,7 +329,7 @@ options
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544455"></a><h2>VIEW</h2>
|
||||
<a name="id2544459"></a><h2>VIEW</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
view <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
|
||||
match-clients { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
|
||||
@@ -477,7 +477,7 @@ view
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545116"></a><h2>ZONE</h2>
|
||||
<a name="id2545121"></a><h2>ZONE</h2>
|
||||
<div class="literallayout"><p><br>
|
||||
zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
|
||||
type ( master | slave | stub | hint |<br>
|
||||
@@ -569,12 +569,12 @@ zone
|
||||
</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545413"></a><h2>FILES</h2>
|
||||
<a name="id2545417"></a><h2>FILES</h2>
|
||||
<p><code class="filename">/etc/named.conf</code>
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2545425"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2545429"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>,
|
||||
|
||||
+80
-42
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -57,6 +57,7 @@
|
||||
|
||||
#include <named/client.h>
|
||||
#include <named/globals.h>
|
||||
#include <named/interfacemgr.h>
|
||||
#include <named/log.h>
|
||||
#include <named/server.h>
|
||||
#include <named/sortlist.h>
|
||||
@@ -83,6 +84,10 @@
|
||||
/*% Want DNSSEC? */
|
||||
#define WANTDNSSEC(c) (((c)->attributes & \
|
||||
NS_CLIENTATTR_WANTDNSSEC) != 0)
|
||||
/*% Want WANTAD? */
|
||||
#define WANTAD(c) (((c)->attributes & \
|
||||
NS_CLIENTATTR_WANTAD) != 0)
|
||||
|
||||
/*% No authority? */
|
||||
#define NOAUTHORITY(c) (((c)->query.attributes & \
|
||||
NS_QUERYATTR_NOAUTHORITY) != 0)
|
||||
@@ -608,7 +613,7 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name,
|
||||
{
|
||||
isc_result_t result;
|
||||
isc_boolean_t check_acl, new_zone;
|
||||
dns_acl_t *queryacl;
|
||||
dns_acl_t *queryacl, *queryonacl;
|
||||
ns_dbversion_t *dbversion;
|
||||
|
||||
REQUIRE(zone != NULL);
|
||||
@@ -645,6 +650,7 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name,
|
||||
result = DNS_R_SERVFAIL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (new_zone) {
|
||||
check_acl = ISC_TRUE;
|
||||
} else if (!dbversion->queryok) {
|
||||
@@ -723,6 +729,25 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name,
|
||||
client->query.attributes |= NS_QUERYATTR_QUERYOKVALID;
|
||||
}
|
||||
|
||||
/*
|
||||
* If and only if we've gotten this far, check
|
||||
* allow-query-on too
|
||||
*/
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
queryonacl = dns_zone_getqueryonacl(zone);
|
||||
if (queryonacl == NULL)
|
||||
queryonacl = client->view->queryonacl;
|
||||
|
||||
result = ns_client_checkaclsilent(client,
|
||||
&client->interface->addr,
|
||||
queryonacl, ISC_TRUE);
|
||||
if ((options & DNS_GETDB_NOLOG) == 0 &&
|
||||
result != ISC_R_SUCCESS)
|
||||
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
|
||||
NS_LOGMODULE_QUERY, ISC_LOG_INFO,
|
||||
"query-on denied");
|
||||
}
|
||||
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto refuse;
|
||||
}
|
||||
@@ -1025,13 +1050,6 @@ query_isduplicate(ns_client_t *client, dns_name_t *name,
|
||||
mname = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the dns_name_t we're looking up is already in the message,
|
||||
* we don't want to trigger the caller's name replacement logic.
|
||||
*/
|
||||
if (name == mname)
|
||||
mname = NULL;
|
||||
|
||||
if (mnamep != NULL)
|
||||
*mnamep = mname;
|
||||
|
||||
@@ -1230,6 +1248,7 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
if (dns_rdataset_isassociated(rdataset) &&
|
||||
!query_isduplicate(client, fname, type, &mname)) {
|
||||
if (mname != NULL) {
|
||||
INSIST(mname != fname);
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
} else
|
||||
@@ -1292,11 +1311,13 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
mname = NULL;
|
||||
if (!query_isduplicate(client, fname,
|
||||
dns_rdatatype_a, &mname)) {
|
||||
if (mname != NULL) {
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
if (mname != fname) {
|
||||
if (mname != NULL) {
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
}
|
||||
ISC_LIST_APPEND(fname->list, rdataset, link);
|
||||
added_something = ISC_TRUE;
|
||||
if (sigrdataset != NULL &&
|
||||
@@ -1338,11 +1359,13 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
mname = NULL;
|
||||
if (!query_isduplicate(client, fname,
|
||||
dns_rdatatype_aaaa, &mname)) {
|
||||
if (mname != NULL) {
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
if (mname != fname) {
|
||||
if (mname != NULL) {
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
}
|
||||
ISC_LIST_APPEND(fname->list, rdataset, link);
|
||||
added_something = ISC_TRUE;
|
||||
if (sigrdataset != NULL &&
|
||||
@@ -1865,22 +1888,24 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
crdataset->type == dns_rdatatype_aaaa) {
|
||||
if (!query_isduplicate(client, fname, crdataset->type,
|
||||
&mname)) {
|
||||
if (mname != NULL) {
|
||||
/*
|
||||
* A different type of this name is
|
||||
* already stored in the additional
|
||||
* section. We'll reuse the name.
|
||||
* Note that this should happen at most
|
||||
* once. Otherwise, fname->link could
|
||||
* leak below.
|
||||
*/
|
||||
INSIST(mname0 == NULL);
|
||||
if (mname != fname) {
|
||||
if (mname != NULL) {
|
||||
/*
|
||||
* A different type of this name is
|
||||
* already stored in the additional
|
||||
* section. We'll reuse the name.
|
||||
* Note that this should happen at most
|
||||
* once. Otherwise, fname->link could
|
||||
* leak below.
|
||||
*/
|
||||
INSIST(mname0 == NULL);
|
||||
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
mname0 = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
query_releasename(client, &fname);
|
||||
fname = mname;
|
||||
mname0 = mname;
|
||||
} else
|
||||
need_addname = ISC_TRUE;
|
||||
}
|
||||
ISC_LIST_UNLINK(cfname.list, crdataset, link);
|
||||
ISC_LIST_APPEND(fname->list, crdataset, link);
|
||||
added_something = ISC_TRUE;
|
||||
@@ -2638,6 +2663,14 @@ query_addbestns(ns_client_t *client) {
|
||||
SECURE(client) && WANTDNSSEC(client))
|
||||
goto cleanup;
|
||||
|
||||
/*
|
||||
* If the answer is secure only add NS records if they are secure * when the client may be looking for AD in the response.
|
||||
*/
|
||||
if (SECURE(client) && (WANTDNSSEC(client) || WANTAD(client)) &&
|
||||
((rdataset->trust != dns_trust_secure) ||
|
||||
(sigrdataset != NULL && sigrdataset->trust != dns_trust_secure)))
|
||||
goto cleanup;
|
||||
|
||||
/*
|
||||
* If the client doesn't want DNSSEC we can discard the sigrdataset
|
||||
* now.
|
||||
@@ -2912,6 +2945,11 @@ query_addwildcardproof(ns_client_t *client, dns_db_t *db,
|
||||
dns_name_copy(name, cname, NULL);
|
||||
while (result == DNS_R_NXDOMAIN) {
|
||||
labels = dns_name_countlabels(cname) - 1;
|
||||
/*
|
||||
* Sanity check.
|
||||
*/
|
||||
if (labels == 0U)
|
||||
goto cleanup;
|
||||
dns_name_split(cname, labels, NULL, cname);
|
||||
result = dns_db_find(db, cname, version,
|
||||
dns_rdatatype_nsec,
|
||||
@@ -4277,7 +4315,9 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
*/
|
||||
if (found &&
|
||||
dns_rdataset_isassociated(rdataset) &&
|
||||
!dns_name_equal(qname, found))
|
||||
!dns_name_equal(qname, found) &&
|
||||
!(ns_g_nonearest &&
|
||||
qtype != dns_rdatatype_ds))
|
||||
{
|
||||
unsigned int count;
|
||||
unsigned int skip;
|
||||
@@ -4747,7 +4787,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
goto addauth;
|
||||
}
|
||||
|
||||
if (dns_db_issecure(db)) {
|
||||
if (qtype == dns_rdatatype_rrsig &&
|
||||
dns_db_issecure(db)) {
|
||||
char namebuf[DNS_NAME_FORMATSIZE];
|
||||
dns_name_format(client->query.qname,
|
||||
namebuf,
|
||||
@@ -5014,7 +5055,6 @@ ns_query_start(ns_client_t *client) {
|
||||
dns_rdatatype_t qtype;
|
||||
unsigned int saved_extflags = client->extflags;
|
||||
unsigned int saved_flags = client->message->flags;
|
||||
isc_boolean_t want_ad;
|
||||
|
||||
CTRACE("ns_query_start");
|
||||
|
||||
@@ -5176,13 +5216,11 @@ ns_query_start(ns_client_t *client) {
|
||||
client->query.attributes &= ~NS_QUERYATTR_SECURE;
|
||||
|
||||
/*
|
||||
* Set 'want_ad' if the client has set AD in the query.
|
||||
* Set NS_CLIENTATTR_WANTDNSSEC if the client has set AD in the query.
|
||||
* This allows AD to be returned on queries without DO set.
|
||||
*/
|
||||
if ((message->flags & DNS_MESSAGEFLAG_AD) != 0)
|
||||
want_ad = ISC_TRUE;
|
||||
else
|
||||
want_ad = ISC_FALSE;
|
||||
client->attributes |= NS_CLIENTATTR_WANTAD;
|
||||
|
||||
/*
|
||||
* This is an ordinary query.
|
||||
@@ -5207,7 +5245,7 @@ ns_query_start(ns_client_t *client) {
|
||||
* Set AD. We must clear it if we add non-validated data to a
|
||||
* response.
|
||||
*/
|
||||
if (WANTDNSSEC(client) || want_ad)
|
||||
if (WANTDNSSEC(client) || WANTAD(client))
|
||||
message->flags |= DNS_MESSAGEFLAG_AD;
|
||||
|
||||
qclient = NULL;
|
||||
|
||||
+360
-69
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -68,11 +68,13 @@
|
||||
#include <dns/portlist.h>
|
||||
#include <dns/rbt.h>
|
||||
#include <dns/rdataclass.h>
|
||||
#include <dns/rdatalist.h>
|
||||
#include <dns/rdataset.h>
|
||||
#include <dns/rdatastruct.h>
|
||||
#include <dns/resolver.h>
|
||||
#include <dns/rootns.h>
|
||||
#include <dns/secalg.h>
|
||||
#include <dns/soa.h>
|
||||
#include <dns/stats.h>
|
||||
#include <dns/tkey.h>
|
||||
#include <dns/tsig.h>
|
||||
@@ -203,6 +205,72 @@ static const struct {
|
||||
{ "31.172.IN-ADDR.ARPA", ISC_TRUE },
|
||||
{ "168.192.IN-ADDR.ARPA", ISC_TRUE },
|
||||
|
||||
/* RFC 6598 */
|
||||
{ "64.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "65.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "66.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "67.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "68.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "69.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "70.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "71.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "72.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "73.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "74.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "75.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "76.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "77.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "78.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "79.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "80.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "81.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "82.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "83.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "84.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "85.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "86.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "87.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "88.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "89.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "90.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "91.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "92.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "93.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "94.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "95.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "96.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "97.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "98.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "99.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "100.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "101.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "102.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "103.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "104.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "105.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "106.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "107.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "108.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "109.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "110.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "111.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "112.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "113.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "114.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "115.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "116.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "117.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "118.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "119.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "120.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "121.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "122.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "123.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "124.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "125.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "126.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
{ "127.100.IN-ADDR.ARPA", ISC_FALSE },
|
||||
|
||||
/* RFC 5735 and RFC 5737 */
|
||||
{ "0.IN-ADDR.ARPA", ISC_FALSE }, /* THIS NETWORK */
|
||||
{ "127.IN-ADDR.ARPA", ISC_FALSE }, /* LOOPBACK */
|
||||
@@ -228,7 +296,7 @@ static const struct {
|
||||
{ NULL, ISC_FALSE }
|
||||
};
|
||||
|
||||
ISC_PLATFORM_NORETURN_POST static void
|
||||
ISC_PLATFORM_NORETURN_PRE static void
|
||||
fatal(const char *msg, isc_result_t result) ISC_PLATFORM_NORETURN_POST;
|
||||
|
||||
static void
|
||||
@@ -414,7 +482,7 @@ configure_view_dnsseckey(const cfg_obj_t *vconfig, const cfg_obj_t *key,
|
||||
keystruct.common.rdtype,
|
||||
&keystruct, &rrdatabuf));
|
||||
dns_fixedname_init(&fkeyname);
|
||||
isc_buffer_init(&namebuf, keynamestr, strlen(keynamestr));
|
||||
isc_buffer_constinit(&namebuf, keynamestr, strlen(keynamestr));
|
||||
isc_buffer_add(&namebuf, strlen(keynamestr));
|
||||
CHECK(dns_name_fromtext(keyname, &namebuf,
|
||||
dns_rootname, ISC_FALSE,
|
||||
@@ -519,7 +587,7 @@ mustbesecure(const cfg_obj_t *mbs, dns_resolver_t *resolver)
|
||||
{
|
||||
obj = cfg_listelt_value(element);
|
||||
str = cfg_obj_asstring(cfg_tuple_get(obj, "name"));
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
CHECK(dns_name_fromtext(name, &b, dns_rootname,
|
||||
ISC_FALSE, NULL));
|
||||
@@ -673,7 +741,7 @@ configure_order(dns_order_t *order, const cfg_obj_t *ent) {
|
||||
else
|
||||
str = "*";
|
||||
addroot = ISC_TF(strcmp(str, "*") == 0);
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
dns_fixedname_init(&fixed);
|
||||
result = dns_name_fromtext(dns_fixedname_name(&fixed), &b,
|
||||
@@ -859,7 +927,7 @@ disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) {
|
||||
dns_fixedname_init(&fixed);
|
||||
name = dns_fixedname_name(&fixed);
|
||||
str = cfg_obj_asstring(cfg_tuple_get(disabled, "name"));
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
CHECK(dns_name_fromtext(name, &b, dns_rootname, ISC_FALSE, NULL));
|
||||
|
||||
@@ -911,7 +979,7 @@ on_disable_list(const cfg_obj_t *disablelist, dns_name_t *zonename) {
|
||||
{
|
||||
value = cfg_listelt_value(element);
|
||||
str = cfg_obj_asstring(value);
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
result = dns_name_fromtext(name, &b, dns_rootname,
|
||||
ISC_TRUE, NULL);
|
||||
@@ -989,6 +1057,244 @@ cache_reusable(dns_view_t *originview, dns_view_t *view,
|
||||
return (ISC_TRUE);
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
add_soa(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name,
|
||||
dns_name_t *origin, dns_name_t *contact)
|
||||
{
|
||||
dns_dbnode_t *node = NULL;
|
||||
dns_rdata_soa_t soa;
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
dns_rdatalist_t rdatalist;
|
||||
dns_rdataset_t rdataset;
|
||||
isc_buffer_t b;
|
||||
isc_result_t result;
|
||||
unsigned char buf[2 * DNS_NAME_MAXWIRE + 20];
|
||||
|
||||
dns_rdataset_init(&rdataset);
|
||||
dns_rdatalist_init(&rdatalist);
|
||||
isc_buffer_init(&b, buf, sizeof(buf));
|
||||
|
||||
soa.common.rdtype = dns_rdatatype_soa;
|
||||
soa.common.rdclass = dns_db_class(db);
|
||||
soa.mctx = NULL;
|
||||
soa.serial = 0;
|
||||
soa.refresh = 28800;
|
||||
soa.retry = 7200;
|
||||
soa.expire = 604800;
|
||||
soa.minimum = 86400;
|
||||
dns_name_init(&soa.origin, NULL);
|
||||
dns_name_clone(origin, &soa.origin);
|
||||
dns_name_init(&soa.contact, NULL);
|
||||
dns_name_clone(contact, &soa.contact);
|
||||
|
||||
CHECK(dns_rdata_fromstruct(&rdata, dns_db_class(db), dns_rdatatype_soa,
|
||||
&soa, &b));
|
||||
|
||||
rdatalist.type = rdata.type;
|
||||
rdatalist.covers = 0;
|
||||
rdatalist.rdclass = rdata.rdclass;
|
||||
rdatalist.ttl = 86400;
|
||||
ISC_LIST_APPEND(rdatalist.rdata, &rdata, link);
|
||||
CHECK(dns_rdatalist_tordataset(&rdatalist, &rdataset));
|
||||
CHECK(dns_db_findnode(db, name, ISC_TRUE, &node));
|
||||
CHECK(dns_db_addrdataset(db, node, version, 0, &rdataset, 0, NULL));
|
||||
cleanup:
|
||||
if (node != NULL)
|
||||
dns_db_detachnode(db, &node);
|
||||
return (result);
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
add_ns(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name,
|
||||
dns_name_t *nsname)
|
||||
{
|
||||
dns_dbnode_t *node = NULL;
|
||||
dns_rdata_ns_t ns;
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
dns_rdatalist_t rdatalist;
|
||||
dns_rdataset_t rdataset;
|
||||
isc_result_t result;
|
||||
isc_buffer_t b;
|
||||
unsigned char buf[DNS_NAME_MAXWIRE];
|
||||
|
||||
isc_buffer_init(&b, buf, sizeof(buf));
|
||||
|
||||
dns_rdataset_init(&rdataset);
|
||||
dns_rdatalist_init(&rdatalist);
|
||||
ns.common.rdtype = dns_rdatatype_ns;
|
||||
ns.common.rdclass = dns_db_class(db);
|
||||
ns.mctx = NULL;
|
||||
dns_name_init(&ns.name, NULL);
|
||||
dns_name_clone(nsname, &ns.name);
|
||||
CHECK(dns_rdata_fromstruct(&rdata, dns_db_class(db), dns_rdatatype_ns,
|
||||
&ns, &b));
|
||||
rdatalist.type = rdata.type;
|
||||
rdatalist.covers = 0;
|
||||
rdatalist.rdclass = rdata.rdclass;
|
||||
rdatalist.ttl = 86400;
|
||||
ISC_LIST_APPEND(rdatalist.rdata, &rdata, link);
|
||||
CHECK(dns_rdatalist_tordataset(&rdatalist, &rdataset));
|
||||
CHECK(dns_db_findnode(db, name, ISC_TRUE, &node));
|
||||
CHECK(dns_db_addrdataset(db, node, version, 0, &rdataset, 0, NULL));
|
||||
cleanup:
|
||||
if (node != NULL)
|
||||
dns_db_detachnode(db, &node);
|
||||
return (result);
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
create_empty_zone(dns_zone_t *zone, dns_name_t *name, dns_view_t *view,
|
||||
const cfg_obj_t *zonelist, const char **empty_dbtype,
|
||||
int empty_dbtypec, isc_boolean_t zonestats_on)
|
||||
{
|
||||
char namebuf[DNS_NAME_FORMATSIZE];
|
||||
const cfg_listelt_t *element;
|
||||
const cfg_obj_t *obj;
|
||||
const cfg_obj_t *zconfig;
|
||||
const cfg_obj_t *zoptions;
|
||||
const char *rbt_dbtype[4] = { "rbt" };
|
||||
const char *sep = ": view ";
|
||||
const char *str;
|
||||
const char *viewname = view->name;
|
||||
dns_db_t *db = NULL;
|
||||
dns_dbversion_t *version = NULL;
|
||||
dns_fixedname_t cfixed;
|
||||
dns_fixedname_t fixed;
|
||||
dns_fixedname_t nsfixed;
|
||||
dns_name_t *contact;
|
||||
dns_name_t *ns;
|
||||
dns_name_t *zname;
|
||||
dns_zone_t *myzone = NULL;
|
||||
int rbt_dbtypec = 1;
|
||||
isc_result_t result;
|
||||
dns_namereln_t namereln;
|
||||
int order;
|
||||
unsigned int nlabels;
|
||||
|
||||
dns_fixedname_init(&fixed);
|
||||
zname = dns_fixedname_name(&fixed);
|
||||
dns_fixedname_init(&nsfixed);
|
||||
ns = dns_fixedname_name(&nsfixed);
|
||||
dns_fixedname_init(&cfixed);
|
||||
contact = dns_fixedname_name(&cfixed);
|
||||
|
||||
/*
|
||||
* Look for forward "zones" beneath this empty zone and if so
|
||||
* create a custom db for the empty zone.
|
||||
*/
|
||||
for (element = cfg_list_first(zonelist);
|
||||
element != NULL;
|
||||
element = cfg_list_next(element)) {
|
||||
|
||||
zconfig = cfg_listelt_value(element);
|
||||
str = cfg_obj_asstring(cfg_tuple_get(zconfig, "name"));
|
||||
CHECK(dns_name_fromstring(zname, str, 0, NULL));
|
||||
namereln = dns_name_fullcompare(zname, name, &order, &nlabels);
|
||||
if (namereln != dns_namereln_subdomain)
|
||||
continue;
|
||||
|
||||
zoptions = cfg_tuple_get(zconfig, "options");
|
||||
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "type", &obj);
|
||||
INSIST(obj != NULL);
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "forward") == 0) {
|
||||
obj = NULL;
|
||||
(void)cfg_map_get(zoptions, "forward", &obj);
|
||||
if (obj == NULL)
|
||||
continue;
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "only") != 0)
|
||||
continue;
|
||||
}
|
||||
if (db == NULL) {
|
||||
CHECK(dns_db_create(view->mctx, "rbt", name,
|
||||
dns_dbtype_zone, view->rdclass,
|
||||
0, NULL, &db));
|
||||
CHECK(dns_db_newversion(db, &version));
|
||||
if (strcmp(empty_dbtype[2], "@") == 0)
|
||||
dns_name_clone(name, ns);
|
||||
else
|
||||
CHECK(dns_name_fromstring(ns, empty_dbtype[2],
|
||||
0, NULL));
|
||||
CHECK(dns_name_fromstring(contact, empty_dbtype[3],
|
||||
0, NULL));
|
||||
CHECK(add_soa(db, version, name, ns, contact));
|
||||
CHECK(add_ns(db, version, name, ns));
|
||||
}
|
||||
CHECK(add_ns(db, version, zname, dns_rootname));
|
||||
}
|
||||
|
||||
/*
|
||||
* Is the existing zone the ok to use?
|
||||
*/
|
||||
if (zone != NULL) {
|
||||
if (db != NULL)
|
||||
check_dbtype(&zone, rbt_dbtypec, rbt_dbtype,
|
||||
view->mctx);
|
||||
else
|
||||
check_dbtype(&zone, empty_dbtypec, empty_dbtype,
|
||||
view->mctx);
|
||||
if (zone != NULL && dns_zone_gettype(zone) != dns_zone_master)
|
||||
zone = NULL;
|
||||
if (zone != NULL && dns_zone_getfile(zone) != NULL)
|
||||
zone = NULL;
|
||||
}
|
||||
|
||||
if (zone == NULL) {
|
||||
CHECK(dns_zone_create(&myzone, view->mctx));
|
||||
zone = myzone;
|
||||
CHECK(dns_zone_setorigin(zone, name));
|
||||
CHECK(dns_zonemgr_managezone(ns_g_server->zonemgr, zone));
|
||||
if (db == NULL)
|
||||
CHECK(dns_zone_setdbtype(zone, empty_dbtypec,
|
||||
empty_dbtype));
|
||||
dns_zone_setclass(zone, view->rdclass);
|
||||
dns_zone_settype(zone, dns_zone_master);
|
||||
dns_zone_setstats(zone, ns_g_server->zonestats);
|
||||
}
|
||||
|
||||
dns_zone_setoption(zone, ~DNS_ZONEOPT_NOCHECKNS, ISC_FALSE);
|
||||
dns_zone_setoption(zone, DNS_ZONEOPT_NOCHECKNS, ISC_TRUE);
|
||||
dns_zone_setnotifytype(zone, dns_notifytype_no);
|
||||
dns_zone_setdialup(zone, dns_dialuptype_no);
|
||||
if (view->queryacl)
|
||||
dns_zone_setqueryacl(zone, view->queryacl);
|
||||
else
|
||||
dns_zone_clearqueryacl(zone);
|
||||
if (view->queryonacl)
|
||||
dns_zone_setqueryonacl(zone, view->queryonacl);
|
||||
else
|
||||
dns_zone_clearqueryonacl(zone);
|
||||
dns_zone_clearupdateacl(zone);
|
||||
dns_zone_clearxfracl(zone);
|
||||
|
||||
CHECK(setquerystats(zone, view->mctx, zonestats_on));
|
||||
if (db != NULL) {
|
||||
dns_db_closeversion(db, &version, ISC_TRUE);
|
||||
CHECK(dns_zone_replacedb(zone, db, ISC_FALSE));
|
||||
}
|
||||
dns_zone_setview(zone, view);
|
||||
CHECK(dns_view_addzone(view, zone));
|
||||
|
||||
if (!strcmp(viewname, "_default")) {
|
||||
sep = "";
|
||||
viewname = "";
|
||||
}
|
||||
dns_name_format(name, namebuf, sizeof(namebuf));
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
|
||||
ISC_LOG_INFO, "automatic empty zone%s%s: %s",
|
||||
sep, viewname, namebuf);
|
||||
|
||||
cleanup:
|
||||
if (myzone != NULL)
|
||||
dns_zone_detach(&myzone);
|
||||
if (version != NULL)
|
||||
dns_db_closeversion(db, &version, ISC_FALSE);
|
||||
if (db != NULL)
|
||||
dns_db_detach(&db);
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*
|
||||
* Configure 'view' according to 'vconfig', taking defaults from 'config'
|
||||
* where values are missing in 'vconfig'.
|
||||
@@ -1039,7 +1345,6 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
isc_uint32_t max_clients_per_query;
|
||||
const char *sep = ": view ";
|
||||
const char *viewname = view->name;
|
||||
const char *forview = " for view ";
|
||||
isc_boolean_t rfc1918;
|
||||
isc_boolean_t empty_zones_enable;
|
||||
const cfg_obj_t *disablelist = NULL;
|
||||
@@ -1072,8 +1377,6 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
if (!strcmp(viewname, "_default")) {
|
||||
sep = "";
|
||||
viewname = "";
|
||||
forview = "";
|
||||
POST(forview);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1773,7 +2076,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
#endif
|
||||
str = cfg_obj_asstring(cfg_tuple_get(obj,
|
||||
"trust-anchor"));
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
dlv = dns_fixedname_name(&view->dlv_fixed);
|
||||
CHECK(dns_name_fromtext(dlv, &b, dns_rootname,
|
||||
@@ -1826,7 +2129,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
element = cfg_list_next(element)) {
|
||||
exclude = cfg_listelt_value(element);
|
||||
str = cfg_obj_asstring(exclude);
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
CHECK(dns_name_fromtext(name, &b, dns_rootname,
|
||||
ISC_FALSE, NULL));
|
||||
@@ -1880,7 +2183,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
result = ns_config_get(maps, "empty-server", &obj);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
str = cfg_obj_asstring(obj);
|
||||
isc_buffer_init(&buffer, str, strlen(str));
|
||||
isc_buffer_constinit(&buffer, str, strlen(str));
|
||||
isc_buffer_add(&buffer, strlen(str));
|
||||
CHECK(dns_name_fromtext(name, &buffer, dns_rootname,
|
||||
ISC_FALSE, NULL));
|
||||
@@ -1895,7 +2198,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
result = ns_config_get(maps, "empty-contact", &obj);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
str = cfg_obj_asstring(obj);
|
||||
isc_buffer_init(&buffer, str, strlen(str));
|
||||
isc_buffer_constinit(&buffer, str, strlen(str));
|
||||
isc_buffer_add(&buffer, strlen(str));
|
||||
CHECK(dns_name_fromtext(name, &buffer, dns_rootname,
|
||||
ISC_FALSE, NULL));
|
||||
@@ -1919,7 +2222,7 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
dns_forwarders_t *forwarders = NULL;
|
||||
dns_view_t *pview = NULL;
|
||||
|
||||
isc_buffer_init(&buffer, empty, strlen(empty));
|
||||
isc_buffer_constinit(&buffer, empty, strlen(empty));
|
||||
isc_buffer_add(&buffer, strlen(empty));
|
||||
/*
|
||||
* Look for zone on drop list.
|
||||
@@ -1935,7 +2238,6 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
*/
|
||||
(void)dns_view_findzone(view, name, &zone);
|
||||
if (zone != NULL) {
|
||||
CHECK(setquerystats(zone, mctx, zonestats_on));
|
||||
dns_zone_detach(&zone);
|
||||
continue;
|
||||
}
|
||||
@@ -1980,43 +2282,13 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
|
||||
if (pview != NULL) {
|
||||
(void)dns_view_findzone(pview, name, &zone);
|
||||
dns_view_detach(&pview);
|
||||
if (zone != NULL)
|
||||
check_dbtype(&zone, empty_dbtypec,
|
||||
empty_dbtype, mctx);
|
||||
if (zone != NULL) {
|
||||
dns_zone_setview(zone, view);
|
||||
CHECK(dns_view_addzone(view, zone));
|
||||
CHECK(setquerystats(zone, mctx,
|
||||
zonestats_on));
|
||||
dns_zone_detach(&zone);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(dns_zone_create(&zone, mctx));
|
||||
CHECK(dns_zone_setorigin(zone, name));
|
||||
dns_zone_setview(zone, view);
|
||||
CHECK(dns_zonemgr_managezone(ns_g_server->zonemgr, zone));
|
||||
dns_zone_setclass(zone, view->rdclass);
|
||||
dns_zone_settype(zone, dns_zone_master);
|
||||
dns_zone_setstats(zone, ns_g_server->zonestats);
|
||||
CHECK(dns_zone_setdbtype(zone, empty_dbtypec,
|
||||
empty_dbtype));
|
||||
if (view->queryacl != NULL)
|
||||
dns_zone_setqueryacl(zone, view->queryacl);
|
||||
if (view->queryonacl != NULL)
|
||||
dns_zone_setqueryonacl(zone, view->queryonacl);
|
||||
dns_zone_setdialup(zone, dns_dialuptype_no);
|
||||
dns_zone_setnotifytype(zone, dns_notifytype_no);
|
||||
dns_zone_setoption(zone, DNS_ZONEOPT_NOCHECKNS,
|
||||
ISC_TRUE);
|
||||
CHECK(setquerystats(zone, mctx, zonestats_on));
|
||||
CHECK(dns_view_addzone(view, zone));
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"automatic empty zone%s%s: %s",
|
||||
sep, viewname, empty);
|
||||
dns_zone_detach(&zone);
|
||||
CHECK(create_empty_zone(zone, name, view, zonelist,
|
||||
empty_dbtype, empty_dbtypec,
|
||||
zonestats_on));
|
||||
if (zone != NULL)
|
||||
dns_zone_detach(&zone);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2113,7 +2385,7 @@ configure_alternates(const cfg_obj_t *config, dns_view_t *view,
|
||||
isc_buffer_t buffer;
|
||||
in_port_t myport = port;
|
||||
|
||||
isc_buffer_init(&buffer, str, strlen(str));
|
||||
isc_buffer_constinit(&buffer, str, strlen(str));
|
||||
isc_buffer_add(&buffer, strlen(str));
|
||||
dns_fixedname_init(&fixed);
|
||||
name = dns_fixedname_name(&fixed);
|
||||
@@ -2375,7 +2647,7 @@ configure_zone(const cfg_obj_t *config, const cfg_obj_t *zconfig,
|
||||
* Get the zone origin as a dns_name_t.
|
||||
*/
|
||||
zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name"));
|
||||
isc_buffer_init(&buffer, zname, strlen(zname));
|
||||
isc_buffer_constinit(&buffer, zname, strlen(zname));
|
||||
isc_buffer_add(&buffer, strlen(zname));
|
||||
dns_fixedname_init(&fixorigin);
|
||||
CHECK(dns_name_fromtext(dns_fixedname_name(&fixorigin),
|
||||
@@ -3011,7 +3283,10 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
dns_viewlist_t viewlist;
|
||||
in_port_t listen_port, udpport_low, udpport_high;
|
||||
int i;
|
||||
int num_zones = 0;
|
||||
isc_boolean_t exclusive = ISC_FALSE;
|
||||
isc_interval_t interval;
|
||||
isc_logconfig_t *logc = NULL;
|
||||
isc_portset_t *v4portset = NULL;
|
||||
isc_portset_t *v6portset = NULL;
|
||||
isc_resourcevalue_t nfiles;
|
||||
@@ -3021,8 +3296,6 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
isc_uint32_t reserved;
|
||||
isc_uint32_t udpsize;
|
||||
unsigned int maxsocks;
|
||||
int num_zones = 0;
|
||||
isc_boolean_t exclusive = ISC_FALSE;
|
||||
|
||||
cfg_aclconfctx_init(&aclconfctx);
|
||||
ISC_LIST_INIT(viewlist);
|
||||
@@ -3279,8 +3552,8 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
result = ns_config_get(maps, "tcp-listen-queue", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
ns_g_listen = cfg_obj_asuint32(obj);
|
||||
if (ns_g_listen < 3)
|
||||
ns_g_listen = 3;
|
||||
if ((ns_g_listen > 0) && (ns_g_listen < 10))
|
||||
ns_g_listen = 10;
|
||||
|
||||
/*
|
||||
* Configure the interface manager according to the "listen-on"
|
||||
@@ -3604,13 +3877,30 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
* unprivileged user, not root.
|
||||
*/
|
||||
if (ns_g_logstderr) {
|
||||
const cfg_obj_t *logobj = NULL;
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"ignoring config file logging "
|
||||
"statement due to -g option");
|
||||
"not using config file logging "
|
||||
"statement for logging due to "
|
||||
"-g option");
|
||||
|
||||
(void)cfg_map_get(config, "logging", &logobj);
|
||||
if (logobj != NULL) {
|
||||
result = ns_log_configure(NULL, logobj);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(ns_g_lctx,
|
||||
NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER,
|
||||
ISC_LOG_ERROR,
|
||||
"checking logging configuration "
|
||||
"failed: %s",
|
||||
isc_result_totext(result));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const cfg_obj_t *logobj = NULL;
|
||||
isc_logconfig_t *logc = NULL;
|
||||
|
||||
CHECKM(isc_logconfig_create(ns_g_lctx, &logc),
|
||||
"creating new logging configuration");
|
||||
@@ -3629,11 +3919,9 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
"setting up default 'category default'");
|
||||
}
|
||||
|
||||
result = isc_logconfig_use(ns_g_lctx, logc);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_logconfig_destroy(&logc);
|
||||
CHECKM(result, "installing logging configuration");
|
||||
}
|
||||
CHECKM(isc_logconfig_use(ns_g_lctx, logc),
|
||||
"installing logging configuration");
|
||||
logc = NULL;
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_DEBUG(1),
|
||||
@@ -3769,6 +4057,9 @@ load_configuration(const char *filename, ns_server_t *server,
|
||||
result = ISC_R_SUCCESS;
|
||||
|
||||
cleanup:
|
||||
if (logc != NULL)
|
||||
isc_logconfig_destroy(&logc);
|
||||
|
||||
if (v4portset != NULL)
|
||||
isc_portset_destroy(ns_g_mctx, &v4portset);
|
||||
|
||||
@@ -4442,7 +4733,7 @@ zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep) {
|
||||
viewtxt = next_token(&input, " \t");
|
||||
}
|
||||
|
||||
isc_buffer_init(&buf, zonetxt, strlen(zonetxt));
|
||||
isc_buffer_constinit(&buf, zonetxt, strlen(zonetxt));
|
||||
isc_buffer_add(&buf, strlen(zonetxt));
|
||||
dns_fixedname_init(&name);
|
||||
result = dns_name_fromtext(dns_fixedname_name(&name),
|
||||
@@ -5204,7 +5495,7 @@ ns_server_flushname(ns_server_t *server, char *args) {
|
||||
if (target == NULL)
|
||||
return (ISC_R_UNEXPECTEDEND);
|
||||
|
||||
isc_buffer_init(&b, target, strlen(target));
|
||||
isc_buffer_constinit(&b, target, strlen(target));
|
||||
isc_buffer_add(&b, strlen(target));
|
||||
dns_fixedname_init(&fixed);
|
||||
name = dns_fixedname_name(&fixed);
|
||||
@@ -5285,7 +5576,7 @@ ns_server_status(ns_server_t *server, isc_buffer_t *text) {
|
||||
|
||||
n = snprintf((char *)isc_buffer_used(text),
|
||||
isc_buffer_availablelength(text),
|
||||
"version: %s%s%s%s\n"
|
||||
"version: %s%s%s%s <id:%s>\n"
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
"CPUs found: %u\n"
|
||||
"worker threads: %u\n"
|
||||
@@ -5299,7 +5590,7 @@ ns_server_status(ns_server_t *server, isc_buffer_t *text) {
|
||||
"recursive clients: %d/%d/%d\n"
|
||||
"tcp clients: %d/%d\n"
|
||||
"server is up and running",
|
||||
ns_g_version, ob, alt, cb,
|
||||
ns_g_version, ob, alt, cb, ns_g_srcid,
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
ns_g_cpus_detected, ns_g_cpus,
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2008-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -84,16 +84,19 @@ static const char *nsstats_desc[dns_nsstatscounter_max];
|
||||
static const char *resstats_desc[dns_resstatscounter_max];
|
||||
static const char *zonestats_desc[dns_zonestatscounter_max];
|
||||
static const char *sockstats_desc[isc_sockstatscounter_max];
|
||||
static const char *dnssecstats_desc[dns_dnssecstats_max];
|
||||
#ifdef HAVE_LIBXML2
|
||||
static const char *nsstats_xmldesc[dns_nsstatscounter_max];
|
||||
static const char *resstats_xmldesc[dns_resstatscounter_max];
|
||||
static const char *zonestats_xmldesc[dns_zonestatscounter_max];
|
||||
static const char *sockstats_xmldesc[isc_sockstatscounter_max];
|
||||
static const char *dnssecstats_xmldesc[dns_dnssecstats_max];
|
||||
#else
|
||||
#define nsstats_xmldesc NULL
|
||||
#define resstats_xmldesc NULL
|
||||
#define zonestats_xmldesc NULL
|
||||
#define sockstats_xmldesc NULL
|
||||
#define dnssecstats_xmldesc NULL
|
||||
#endif /* HAVE_LIBXML2 */
|
||||
|
||||
#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0)
|
||||
@@ -107,6 +110,7 @@ static int nsstats_index[dns_nsstatscounter_max];
|
||||
static int resstats_index[dns_resstatscounter_max];
|
||||
static int zonestats_index[dns_zonestatscounter_max];
|
||||
static int sockstats_index[isc_sockstatscounter_max];
|
||||
static int dnssecstats_index[dns_dnssecstats_max];
|
||||
|
||||
static inline void
|
||||
set_desc(int counter, int maxcounter, const char *fdesc, const char **fdescs,
|
||||
@@ -408,6 +412,33 @@ init_desc(void) {
|
||||
"FDwatchRecvErr");
|
||||
INSIST(i == isc_sockstatscounter_max);
|
||||
|
||||
/* Initialize DNSSEC statistics */
|
||||
for (i = 0; i < dns_dnssecstats_max; i++)
|
||||
dnssecstats_desc[i] = NULL;
|
||||
#ifdef HAVE_LIBXML2
|
||||
for (i = 0; i < dns_dnssecstats_max; i++)
|
||||
dnssecstats_xmldesc[i] = NULL;
|
||||
#endif
|
||||
|
||||
#define SET_DNSSECSTATDESC(counterid, desc, xmldesc) \
|
||||
do { \
|
||||
set_desc(dns_dnssecstats_ ## counterid, \
|
||||
dns_dnssecstats_max, \
|
||||
desc, dnssecstats_desc,\
|
||||
xmldesc, dnssecstats_xmldesc); \
|
||||
dnssecstats_index[i++] = dns_dnssecstats_ ## counterid; \
|
||||
} while (0)
|
||||
|
||||
i = 0;
|
||||
SET_DNSSECSTATDESC(asis, "dnssec validation success with signer "
|
||||
"\"as is\"", "DNSSECasis");
|
||||
SET_DNSSECSTATDESC(downcase, "dnssec validation success with signer "
|
||||
"lower cased", "DNSSECdowncase");
|
||||
SET_DNSSECSTATDESC(wildcard, "dnssec validation of wildcard signature",
|
||||
"DNSSECwild");
|
||||
SET_DNSSECSTATDESC(fail, "dnssec validation failures", "DNSSECfail");
|
||||
INSIST(i == dns_dnssecstats_max);
|
||||
|
||||
/* Sanity check */
|
||||
for (i = 0; i < dns_nsstatscounter_max; i++)
|
||||
INSIST(nsstats_desc[i] != NULL);
|
||||
@@ -417,6 +448,8 @@ init_desc(void) {
|
||||
INSIST(zonestats_desc[i] != NULL);
|
||||
for (i = 0; i < isc_sockstatscounter_max; i++)
|
||||
INSIST(sockstats_desc[i] != NULL);
|
||||
for (i = 0; i < dns_dnssecstats_max; i++)
|
||||
INSIST(dnssecstats_desc[i] != NULL);
|
||||
#ifdef HAVE_LIBXML2
|
||||
for (i = 0; i < dns_nsstatscounter_max; i++)
|
||||
INSIST(nsstats_xmldesc[i] != NULL);
|
||||
@@ -426,6 +459,8 @@ init_desc(void) {
|
||||
INSIST(zonestats_xmldesc[i] != NULL);
|
||||
for (i = 0; i < isc_sockstatscounter_max; i++)
|
||||
INSIST(sockstats_xmldesc[i] != NULL);
|
||||
for (i = 0; i < dns_dnssecstats_max; i++)
|
||||
INSIST(dnssecstats_xmldesc[i] != NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -841,11 +876,11 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) {
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* views */
|
||||
|
||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "socketmgr"));
|
||||
isc_socketmgr_renderxml(ns_g_socketmgr, writer);
|
||||
TRY0(isc_socketmgr_renderxml(ns_g_socketmgr, writer));
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* socketmgr */
|
||||
|
||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "taskmgr"));
|
||||
isc_taskmgr_renderxml(ns_g_taskmgr, writer);
|
||||
TRY0(isc_taskmgr_renderxml(ns_g_taskmgr, writer));
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* taskmgr */
|
||||
|
||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "server"));
|
||||
@@ -908,7 +943,7 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) {
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* server */
|
||||
|
||||
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "memory"));
|
||||
isc_mem_renderxml(writer);
|
||||
TRY0(isc_mem_renderxml(writer));
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* memory */
|
||||
|
||||
TRY0(xmlTextWriterEndElement(writer)); /* statistics */
|
||||
@@ -920,6 +955,8 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) {
|
||||
xmlFreeTextWriter(writer);
|
||||
|
||||
xmlDocDumpFormatMemoryEnc(doc, buf, buflen, "UTF-8", 1);
|
||||
if (*buf == NULL)
|
||||
goto error;
|
||||
xmlFreeDoc(doc);
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
@@ -944,7 +981,7 @@ render_index(const char *url, const char *querystring, void *arg,
|
||||
isc_buffer_t *b, isc_httpdfree_t **freecb,
|
||||
void **freecb_args)
|
||||
{
|
||||
unsigned char *msg;
|
||||
unsigned char *msg = NULL;
|
||||
int msglen;
|
||||
ns_server_t *server = arg;
|
||||
isc_result_t result;
|
||||
|
||||
@@ -73,7 +73,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
s = cfg_obj_asstring(cfg_tuple_get(obj, "name"));
|
||||
n = cfg_obj_asuint32(cfg_tuple_get(obj, "keyid"));
|
||||
isc_buffer_init(&b, s, strlen(s));
|
||||
isc_buffer_constinit(&b, s, strlen(s));
|
||||
isc_buffer_add(&b, strlen(s));
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
@@ -88,7 +88,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
||||
result = cfg_map_get(options, "tkey-domain", &obj);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
s = cfg_obj_asstring(obj);
|
||||
isc_buffer_init(&b, s, strlen(s));
|
||||
isc_buffer_constinit(&b, s, strlen(s));
|
||||
isc_buffer_add(&b, strlen(s));
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
@@ -108,7 +108,7 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
s = cfg_obj_asstring(obj);
|
||||
|
||||
isc_buffer_init(&b, s, strlen(s));
|
||||
isc_buffer_constinit(&b, s, strlen(s));
|
||||
isc_buffer_add(&b, strlen(s));
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
|
||||
@@ -78,7 +78,7 @@ add_initial_keys(const cfg_obj_t *list, dns_tsig_keyring_t *ring,
|
||||
* Create the key name.
|
||||
*/
|
||||
dns_name_init(&keyname, NULL);
|
||||
isc_buffer_init(&keynamesrc, keyid, strlen(keyid));
|
||||
isc_buffer_constinit(&keynamesrc, keyid, strlen(keyid));
|
||||
isc_buffer_add(&keynamesrc, strlen(keyid));
|
||||
isc_buffer_init(&keynamebuf, keynamedata, sizeof(keynamedata));
|
||||
ret = dns_name_fromtext(&keyname, &keynamesrc, dns_rootname,
|
||||
|
||||
+4
-1
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -120,6 +120,9 @@ static isc_boolean_t non_root_caps = ISC_FALSE;
|
||||
#ifdef HAVE_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
|
||||
|
||||
+3
-4
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -355,7 +355,6 @@ do_one_tuple(dns_difftuple_t **tuple, dns_db_t *db, dns_dbversion_t *ver,
|
||||
* Create a singleton diff.
|
||||
*/
|
||||
dns_diff_init(diff->mctx, &temp_diff);
|
||||
temp_diff.resign = diff->resign;
|
||||
ISC_LIST_APPEND(temp_diff.tuples, *tuple, link);
|
||||
|
||||
/*
|
||||
@@ -2146,7 +2145,6 @@ update_signatures(ns_client_t *client, dns_zone_t *zone, dns_db_t *db,
|
||||
dns_diff_init(client->mctx, &affected);
|
||||
|
||||
dns_diff_init(client->mctx, &sig_diff);
|
||||
sig_diff.resign = dns_zone_getsigresigninginterval(zone);
|
||||
dns_diff_init(client->mctx, &nsec_diff);
|
||||
dns_diff_init(client->mctx, &nsec_mindiff);
|
||||
|
||||
@@ -3336,7 +3334,8 @@ add_signing_records(dns_db_t *db, dns_name_t *name, dns_dbversion_t *ver,
|
||||
ISC_LIST_UNLINK(temp_diff.tuples, tuple, link);
|
||||
ISC_LIST_APPEND(diff->tuples, tuple, link);
|
||||
|
||||
dns_rdata_tostruct(&tuple->rdata, &dnskey, NULL);
|
||||
result = dns_rdata_tostruct(&tuple->rdata, &dnskey, NULL);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
if ((dnskey.flags &
|
||||
(DNS_KEYFLAG_OWNERMASK|DNS_KEYTYPE_NOAUTH))
|
||||
!= DNS_KEYOWNER_ZONE)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2006, 2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2006, 2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -28,6 +28,11 @@
|
||||
#include <named/main.h>
|
||||
#include <named/server.h>
|
||||
|
||||
/* In fact more bound to the platform toolset... */
|
||||
#if defined(_M_IX86) && (_MSC_VER < 1600)
|
||||
#define ISC_ADJUST_FDIV
|
||||
#endif
|
||||
|
||||
/* Handle to SCM for updating service status */
|
||||
static SERVICE_STATUS_HANDLE hServiceStatus = 0;
|
||||
static BOOL foreground = FALSE;
|
||||
@@ -199,7 +204,7 @@ _CRTIMP void __cdecl __getmainargs(int *, char ***, char ***, int,
|
||||
_startupinfo *);
|
||||
void __cdecl _setargv(void);
|
||||
|
||||
#ifdef _M_IX86
|
||||
#ifdef ISC_ADJUST_FDIV
|
||||
/* Pentium FDIV adjustment */
|
||||
extern int _adjust_fdiv;
|
||||
extern int * _imp___adjust_fdiv;
|
||||
@@ -236,7 +241,7 @@ void GetArgs(int *argc, char ***argv, char ***envp)
|
||||
__getmainargs(argc, argv, envp, _dowildcard, &startinfo);
|
||||
__initenv = *envp;
|
||||
|
||||
#ifdef _M_IX86
|
||||
#ifdef ISC_ADJUST_FDIV
|
||||
_adjust_fdiv = * _imp___adjust_fdiv;
|
||||
_setdefaultprecision();
|
||||
#endif
|
||||
|
||||
+9
-11
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -1016,14 +1016,6 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
question_name, question_class);
|
||||
#ifdef DLZ
|
||||
is_dlz = ISC_TRUE;
|
||||
/*
|
||||
* DLZ only support full zone transfer, not incremental
|
||||
*/
|
||||
if (reqtype != dns_rdatatype_axfr) {
|
||||
mnemonic = "AXFR-style IXFR";
|
||||
reqtype = dns_rdatatype_axfr;
|
||||
}
|
||||
|
||||
} else {
|
||||
/*
|
||||
* not DLZ and not in normal zone table, we are
|
||||
@@ -1036,11 +1028,13 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
/* zone table has a match */
|
||||
#endif
|
||||
switch(dns_zone_gettype(zone)) {
|
||||
/* Master and slave zones are OK for transfer. */
|
||||
case dns_zone_master:
|
||||
case dns_zone_slave:
|
||||
break; /* Master and slave zones are OK for transfer. */
|
||||
break;
|
||||
default:
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class);
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone",
|
||||
question_name, question_class);
|
||||
}
|
||||
CHECK(dns_zone_getdb(zone, &db));
|
||||
dns_db_currentversion(db, &ver);
|
||||
@@ -1185,7 +1179,11 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
is_poll = ISC_TRUE;
|
||||
goto have_stream;
|
||||
}
|
||||
#ifdef DLZ
|
||||
journalfile = is_dlz ? NULL : dns_zone_getjournal(zone);
|
||||
#else
|
||||
journalfile = dns_zone_getjournal(zone);
|
||||
#endif
|
||||
if (journalfile != NULL)
|
||||
result = ixfr_rrstream_create(mctx,
|
||||
journalfile,
|
||||
|
||||
+25
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -50,6 +50,7 @@
|
||||
typedef enum {
|
||||
allow_notify,
|
||||
allow_query,
|
||||
allow_query_on,
|
||||
allow_transfer,
|
||||
allow_update,
|
||||
allow_update_forwarding
|
||||
@@ -96,6 +97,11 @@ configure_zone_acl(const cfg_obj_t *zconfig, const cfg_obj_t *vconfig,
|
||||
aclp = &view->queryacl;
|
||||
aclname = "allow-query";
|
||||
break;
|
||||
case allow_query_on:
|
||||
if (view != NULL)
|
||||
aclp = &view->queryonacl;
|
||||
aclname = "allow-query-on";
|
||||
break;
|
||||
case allow_transfer:
|
||||
if (view != NULL)
|
||||
aclp = &view->transferacl;
|
||||
@@ -242,7 +248,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone) {
|
||||
|
||||
dns_fixedname_init(&fident);
|
||||
str = cfg_obj_asstring(identity);
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
result = dns_name_fromtext(dns_fixedname_name(&fident), &b,
|
||||
dns_rootname, ISC_FALSE, NULL);
|
||||
@@ -254,7 +260,7 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone) {
|
||||
|
||||
dns_fixedname_init(&fname);
|
||||
str = cfg_obj_asstring(dname);
|
||||
isc_buffer_init(&b, str, strlen(str));
|
||||
isc_buffer_constinit(&b, str, strlen(str));
|
||||
isc_buffer_add(&b, strlen(str));
|
||||
result = dns_name_fromtext(dns_fixedname_name(&fname), &b,
|
||||
dns_rootname, ISC_FALSE, NULL);
|
||||
@@ -536,6 +542,11 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
dns_zone_setqueryacl,
|
||||
dns_zone_clearqueryacl));
|
||||
|
||||
RETERR(configure_zone_acl(zconfig, vconfig, config,
|
||||
allow_query_on, ac, zone,
|
||||
dns_zone_setqueryonacl,
|
||||
dns_zone_clearqueryonacl));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "dialup", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS && obj != NULL);
|
||||
@@ -713,6 +724,17 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
|
||||
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSIBLING,
|
||||
cfg_obj_asboolean(obj));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "check-spf", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS && obj != NULL);
|
||||
if (strcasecmp(cfg_obj_asstring(obj), "warn") == 0) {
|
||||
check = ISC_TRUE;
|
||||
} else if (strcasecmp(cfg_obj_asstring(obj), "ignore") == 0) {
|
||||
check = ISC_FALSE;
|
||||
} else
|
||||
INSIST(0);
|
||||
dns_zone_setoption(zone, DNS_ZONEOPT_CHECKSPF, check);
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "zero-no-soa-ttl", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS && obj != NULL);
|
||||
|
||||
+44
-27
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -174,7 +174,7 @@ typedef struct nsu_requestinfo {
|
||||
static void
|
||||
sendrequest(isc_sockaddr_t *srcaddr, isc_sockaddr_t *destaddr,
|
||||
dns_message_t *msg, dns_request_t **request);
|
||||
ISC_PLATFORM_NORETURN_POST static void
|
||||
ISC_PLATFORM_NORETURN_PRE static void
|
||||
fatal(const char *format, ...)
|
||||
ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
|
||||
|
||||
@@ -848,7 +848,7 @@ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) {
|
||||
INSIST(count == 1);
|
||||
}
|
||||
|
||||
#define PARSE_ARGS_FMT "dDMl:y:govk:rR::t:u:"
|
||||
#define PARSE_ARGS_FMT "dDMl:y:govk:r:R::t:u:"
|
||||
|
||||
static void
|
||||
pre_parse_args(int argc, char **argv) {
|
||||
@@ -1011,7 +1011,7 @@ parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) {
|
||||
isc_buffer_t source;
|
||||
|
||||
word = nsu_strsep(cmdlinep, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read owner name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1044,6 +1044,11 @@ parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
|
||||
dns_rdatacallbacks_t callbacks;
|
||||
isc_result_t result;
|
||||
|
||||
if (cmdline == NULL) {
|
||||
rdata->flags = DNS_RDATA_UPDATE;
|
||||
return (STATUS_MORE);
|
||||
}
|
||||
|
||||
while (*cmdline != 0 && isspace((unsigned char)*cmdline))
|
||||
cmdline++;
|
||||
|
||||
@@ -1110,7 +1115,7 @@ make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
|
||||
*/
|
||||
if (isrrset) {
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read class or type\n");
|
||||
goto failure;
|
||||
}
|
||||
@@ -1126,7 +1131,7 @@ make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
|
||||
* Now read the type.
|
||||
*/
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read type\n");
|
||||
goto failure;
|
||||
}
|
||||
@@ -1200,7 +1205,7 @@ evaluate_prereq(char *cmdline) {
|
||||
|
||||
ddebug("evaluate_prereq()");
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read operation code\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1229,14 +1234,14 @@ evaluate_server(char *cmdline) {
|
||||
long port;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read server name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
server = word;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0)
|
||||
if (word == NULL || *word == 0)
|
||||
port = DNSDEFAULTPORT;
|
||||
else {
|
||||
char *endp;
|
||||
@@ -1270,14 +1275,14 @@ evaluate_local(char *cmdline) {
|
||||
struct in6_addr in6;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read server name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
local = word;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0)
|
||||
if (word == NULL || *word == 0)
|
||||
port = 0;
|
||||
else {
|
||||
char *endp;
|
||||
@@ -1326,7 +1331,7 @@ evaluate_key(char *cmdline) {
|
||||
char *n;
|
||||
|
||||
namestr = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*namestr == 0) {
|
||||
if (namestr == NULL || *namestr == 0) {
|
||||
fprintf(stderr, "could not read key name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1350,7 +1355,7 @@ evaluate_key(char *cmdline) {
|
||||
}
|
||||
|
||||
secretstr = nsu_strsep(&cmdline, "\r\n");
|
||||
if (*secretstr == 0) {
|
||||
if (secretstr == NULL || *secretstr == 0) {
|
||||
fprintf(stderr, "could not read key secret\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1391,7 +1396,7 @@ evaluate_zone(char *cmdline) {
|
||||
isc_result_t result;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read zone name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1416,16 +1421,20 @@ evaluate_realm(char *cmdline) {
|
||||
#ifdef GSSAPI
|
||||
char *word;
|
||||
char buf[1024];
|
||||
int n;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (realm != NULL)
|
||||
isc_mem_free(mctx, realm);
|
||||
if (realm != NULL) {
|
||||
isc_mem_free(mctx, realm);
|
||||
realm = NULL;
|
||||
return (STATUS_MORE);
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), "@%s", word);
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (word == NULL || *word == 0)
|
||||
return (STATUS_MORE);
|
||||
|
||||
n = snprintf(buf, sizeof(buf), "@%s", word);
|
||||
if (n < 0 || (size_t)n >= sizeof(buf))
|
||||
fatal("realm is too long");
|
||||
realm = isc_mem_strdup(mctx, buf);
|
||||
if (realm == NULL)
|
||||
fatal("out of memory");
|
||||
@@ -1443,7 +1452,7 @@ evaluate_ttl(char *cmdline) {
|
||||
isc_uint32_t ttl;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not ttl\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1477,7 +1486,7 @@ evaluate_class(char *cmdline) {
|
||||
dns_rdataclass_t rdclass;
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read class name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1535,7 +1544,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
|
||||
* If it's a delete, ignore a TTL if present (for compatibility).
|
||||
*/
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
if (!isdelete) {
|
||||
fprintf(stderr, "could not read owner ttl\n");
|
||||
goto failure;
|
||||
@@ -1576,7 +1585,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
|
||||
*/
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
parseclass:
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
if (isdelete) {
|
||||
rdataclass = dns_rdataclass_any;
|
||||
rdatatype = dns_rdatatype_any;
|
||||
@@ -1600,7 +1609,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
|
||||
* Now read the type.
|
||||
*/
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
if (isdelete) {
|
||||
rdataclass = dns_rdataclass_any;
|
||||
rdatatype = dns_rdatatype_any;
|
||||
@@ -1680,7 +1689,7 @@ evaluate_update(char *cmdline) {
|
||||
|
||||
ddebug("evaluate_update()");
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
if (*word == 0) {
|
||||
if (word == NULL || *word == 0) {
|
||||
fprintf(stderr, "could not read operation code\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1770,6 +1779,7 @@ get_next_command(void) {
|
||||
char cmdlinebuf[MAXCMD];
|
||||
char *cmdline;
|
||||
char *word;
|
||||
char *tmp;
|
||||
|
||||
ddebug("get_next_command()");
|
||||
if (interactive) {
|
||||
@@ -1781,11 +1791,18 @@ get_next_command(void) {
|
||||
isc_app_unblock();
|
||||
if (cmdline == NULL)
|
||||
return (STATUS_QUIT);
|
||||
|
||||
/*
|
||||
* Normalize input by removing any eol.
|
||||
*/
|
||||
tmp = cmdline;
|
||||
(void)nsu_strsep(&tmp, "\r\n");
|
||||
|
||||
word = nsu_strsep(&cmdline, " \t\r\n");
|
||||
|
||||
if (feof(input))
|
||||
return (STATUS_QUIT);
|
||||
if (*word == 0)
|
||||
if (word == NULL || *word == 0)
|
||||
return (STATUS_SEND);
|
||||
if (word[0] == ';')
|
||||
return (STATUS_MORE);
|
||||
|
||||
+166
-12
@@ -1,4 +1,4 @@
|
||||
.\" Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.\" Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -20,11 +20,11 @@
|
||||
.\" Title: rndc
|
||||
.\" Author:
|
||||
.\" Generator: DocBook XSL Stylesheets v1.71.1 <http://docbook.sf.net/>
|
||||
.\" Date: June 30, 2000
|
||||
.\" Date: June 7, 2013
|
||||
.\" Manual: BIND9
|
||||
.\" Source: BIND9
|
||||
.\"
|
||||
.TH "RNDC" "8" "June 30, 2000" "BIND9" "BIND9"
|
||||
.TH "RNDC" "8" "June 7, 2013" "BIND9" "BIND9"
|
||||
.\" disable hyphenation
|
||||
.nh
|
||||
.\" disable justification (adjust text to left margin only)
|
||||
@@ -113,18 +113,172 @@ is specified,
|
||||
\fBrndc\fR
|
||||
will first look for a key clause in the server statement of the server being used, or if no server statement is present for that host, then the default\-key clause of the options statement. Note that the configuration file contains shared secrets which are used to send authenticated control commands to name servers. It should therefore not have general read or write access.
|
||||
.RE
|
||||
.SH "COMMANDS"
|
||||
.PP
|
||||
For the complete set of commands supported by
|
||||
\fBrndc\fR, see the BIND 9 Administrator Reference Manual or run
|
||||
A list of commands supported by
|
||||
\fBrndc\fR
|
||||
without arguments to see its help message.
|
||||
can be seen by running
|
||||
\fBrndc\fR
|
||||
without arguments.
|
||||
.PP
|
||||
Currently supported commands are:
|
||||
.PP
|
||||
\fBreload\fR
|
||||
.RS 4
|
||||
Reload configuration file and zones.
|
||||
.RE
|
||||
.PP
|
||||
\fBreload \fR\fB\fIzone\fR\fR\fB \fR\fB[\fIclass\fR [\fIview\fR]]\fR
|
||||
.RS 4
|
||||
Reload the given zone.
|
||||
.RE
|
||||
.PP
|
||||
\fBrefresh \fR\fB\fIzone\fR\fR\fB \fR\fB[\fIclass\fR [\fIview\fR]]\fR
|
||||
.RS 4
|
||||
Schedule zone maintenance for the given zone.
|
||||
.RE
|
||||
.PP
|
||||
\fBretransfer \fR\fB\fIzone\fR\fR\fB \fR\fB[\fIclass\fR [\fIview\fR]]\fR
|
||||
.RS 4
|
||||
Retransfer the given zone from the master.
|
||||
.RE
|
||||
.PP
|
||||
\fBfreeze \fR\fB[\fIzone\fR [\fIclass\fR [\fIview\fR]]]\fR
|
||||
.RS 4
|
||||
Suspend updates to a dynamic zone. If no zone is specified, then all zones are suspended. This allows manual edits to be made to a zone normally updated by dynamic update. It also causes changes in the journal file to be synced into the master file, and the journal file to be removed. All dynamic update attempts will be refused while the zone is frozen.
|
||||
.RE
|
||||
.PP
|
||||
\fBthaw \fR\fB[\fIzone\fR [\fIclass\fR [\fIview\fR]]]\fR
|
||||
.RS 4
|
||||
Enable updates to a frozen dynamic zone. If no zone is specified, then all frozen zones are enabled. This causes the server to reload the zone from disk, and re\-enables dynamic updates after the load has completed. After a zone is thawed, dynamic updates will no longer be refused.
|
||||
.RE
|
||||
.PP
|
||||
\fBnotify \fR\fB\fIzone\fR\fR\fB \fR\fB[\fIclass\fR [\fIview\fR]]\fR
|
||||
.RS 4
|
||||
Resend NOTIFY messages for the zone.
|
||||
.RE
|
||||
.PP
|
||||
\fBreconfig\fR
|
||||
.RS 4
|
||||
Reload the configuration file and load new zones, but do not reload existing zone files even if they have changed. This is faster than a full
|
||||
\fBreload\fR
|
||||
when there is a large number of zones because it avoids the need to examine the modification times of the zones files.
|
||||
.RE
|
||||
.PP
|
||||
\fBstats\fR
|
||||
.RS 4
|
||||
Write server statistics to the statistics file.
|
||||
.RE
|
||||
.PP
|
||||
\fBquerylog\fR [on|off]
|
||||
.RS 4
|
||||
Toggle query logging. Query logging can also be enabled by explicitly directing the
|
||||
\fBqueries\fR
|
||||
\fBcategory\fR
|
||||
to a
|
||||
\fBchannel\fR
|
||||
in the
|
||||
\fBlogging\fR
|
||||
section of
|
||||
\fInamed.conf\fR
|
||||
or by specifying
|
||||
\fBquerylog yes;\fR
|
||||
in the
|
||||
\fBoptions\fR
|
||||
section of
|
||||
\fInamed.conf\fR.
|
||||
.RE
|
||||
.PP
|
||||
\fBdumpdb \fR\fB[\-all|\-cache|\-zone]\fR\fB \fR\fB[\fIview ...\fR]\fR
|
||||
.RS 4
|
||||
Dump the server's caches (default) and/or zones to the dump file for the specified views. If no view is specified, all views are dumped.
|
||||
.RE
|
||||
.PP
|
||||
\fBstop \fR\fB[\-p]\fR
|
||||
.RS 4
|
||||
Stop the server, making sure any recent changes made through dynamic update or IXFR are first saved to the master files of the updated zones. If
|
||||
\fB\-p\fR
|
||||
is specified
|
||||
\fBnamed\fR's process id is returned. This allows an external process to determine when
|
||||
\fBnamed\fR
|
||||
had completed stopping.
|
||||
.RE
|
||||
.PP
|
||||
\fBhalt \fR\fB[\-p]\fR
|
||||
.RS 4
|
||||
Stop the server immediately. Recent changes made through dynamic update or IXFR are not saved to the master files, but will be rolled forward from the journal files when the server is restarted. If
|
||||
\fB\-p\fR
|
||||
is specified
|
||||
\fBnamed\fR's process id is returned. This allows an external process to determine when
|
||||
\fBnamed\fR
|
||||
had completed halting.
|
||||
.RE
|
||||
.PP
|
||||
\fBtrace\fR
|
||||
.RS 4
|
||||
Increment the servers debugging level by one.
|
||||
.RE
|
||||
.PP
|
||||
\fBtrace \fR\fB\fIlevel\fR\fR
|
||||
.RS 4
|
||||
Sets the server's debugging level to an explicit value.
|
||||
.RE
|
||||
.PP
|
||||
\fBnotrace\fR
|
||||
.RS 4
|
||||
Sets the server's debugging level to 0.
|
||||
.RE
|
||||
.PP
|
||||
\fBflush\fR
|
||||
.RS 4
|
||||
Flushes the server's cache.
|
||||
.RE
|
||||
.PP
|
||||
\fBflushname\fR \fIname\fR [\fIview\fR]
|
||||
.RS 4
|
||||
Flushes the given name from the server's cache.
|
||||
.RE
|
||||
.PP
|
||||
\fBstatus\fR
|
||||
.RS 4
|
||||
Display status of the server. Note that the number of zones includes the internal
|
||||
\fBbind/CH\fR
|
||||
zone and the default
|
||||
\fB./IN\fR
|
||||
hint zone if there is not an explicit root zone configured.
|
||||
.RE
|
||||
.PP
|
||||
\fBrecursing\fR
|
||||
.RS 4
|
||||
Dump the list of queries
|
||||
\fBnamed\fR
|
||||
is currently recursing on.
|
||||
.RE
|
||||
.PP
|
||||
\fBvalidation ( on | off | check ) \fR\fB[\fIview ...\fR]\fR\fB \fR
|
||||
.RS 4
|
||||
Enable, disable, or check the current status of DNSSEC validation. Note
|
||||
\fBdnssec\-enable\fR
|
||||
also needs to be set to
|
||||
\fByes\fR
|
||||
or
|
||||
\fBauto\fR
|
||||
to be effective. It defaults to enabled.
|
||||
.RE
|
||||
.PP
|
||||
\fBtsig\-list\fR
|
||||
.RS 4
|
||||
List the names of all TSIG keys currently configured for use by
|
||||
\fBnamed\fR
|
||||
in each view. The list both statically configured keys and dynamic TKEY\-negotiated keys.
|
||||
.RE
|
||||
.PP
|
||||
\fBtsig\-delete\fR \fIkeyname\fR [\fIview\fR]
|
||||
.RS 4
|
||||
Delete a given TKEY\-negotiated key from the server. (This does not apply to statically configured TSIG keys.)
|
||||
.RE
|
||||
.SH "LIMITATIONS"
|
||||
.PP
|
||||
\fBrndc\fR
|
||||
does not yet support all the commands of the BIND 8
|
||||
\fBndc\fR
|
||||
utility.
|
||||
.PP
|
||||
There is currently no way to provide the shared secret for a
|
||||
\fBkey_id\fR
|
||||
without using the configuration file.
|
||||
@@ -142,7 +296,7 @@ BIND 9 Administrator Reference Manual.
|
||||
.PP
|
||||
Internet Systems Consortium
|
||||
.SH "COPYRIGHT"
|
||||
Copyright \(co 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright \(co 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
.br
|
||||
Copyright \(co 2000, 2001 Internet Software Consortium.
|
||||
.br
|
||||
|
||||
+7
-1
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -79,6 +79,7 @@ static unsigned char databuf[2048];
|
||||
static isccc_ccmsg_t ccmsg;
|
||||
static isccc_region_t secret;
|
||||
static isc_boolean_t failed = ISC_FALSE;
|
||||
static isc_boolean_t c_flag = ISC_FALSE;
|
||||
static isc_mem_t *mctx;
|
||||
static int sends, recvs, connects;
|
||||
static char *command;
|
||||
@@ -458,6 +459,9 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
|
||||
conffile = admin_keyfile;
|
||||
conftype = &cfg_type_rndckey;
|
||||
|
||||
if (c_flag)
|
||||
fatal("%s does not exist", admin_conffile);
|
||||
|
||||
if (! isc_file_exists(conffile))
|
||||
fatal("neither %s nor %s was found",
|
||||
admin_conffile, admin_keyfile);
|
||||
@@ -716,6 +720,7 @@ main(int argc, char **argv) {
|
||||
|
||||
case 'c':
|
||||
admin_conffile = isc_commandline_argument;
|
||||
c_flag = ISC_TRUE;
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
@@ -755,6 +760,7 @@ main(int argc, char **argv) {
|
||||
program, isc_commandline_option);
|
||||
usage(1);
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
case 'h':
|
||||
usage(0);
|
||||
break;
|
||||
|
||||
+277
-10
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -21,7 +21,7 @@
|
||||
<!-- $Id: rndc.docbook,v 1.21 2007/12/14 20:39:14 marka Exp $ -->
|
||||
<refentry id="man.rndc">
|
||||
<refentryinfo>
|
||||
<date>June 30, 2000</date>
|
||||
<date>June 7, 2013</date>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
@@ -40,6 +40,7 @@
|
||||
<year>2004</year>
|
||||
<year>2005</year>
|
||||
<year>2007</year>
|
||||
<year>2013</year>
|
||||
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
@@ -194,22 +195,288 @@
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>COMMANDS</title>
|
||||
<para>
|
||||
For the complete set of commands supported by <command>rndc</command>,
|
||||
see the BIND 9 Administrator Reference Manual or run
|
||||
<command>rndc</command> without arguments to see its help
|
||||
message.
|
||||
A list of commands supported by <command>rndc</command> can
|
||||
be seen by running <command>rndc</command> without arguments.
|
||||
</para>
|
||||
<para>
|
||||
Currently supported commands are:
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><userinput>reload</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reload configuration file and zones.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>reload <replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reload the given zone.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>refresh <replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Schedule zone maintenance for the given zone.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>retransfer <replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Retransfer the given zone from the master.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>freeze <optional><replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Suspend updates to a dynamic zone. If no zone is
|
||||
specified, then all zones are suspended. This allows
|
||||
manual edits to be made to a zone normally updated by
|
||||
dynamic update. It also causes changes in the
|
||||
journal file to be synced into the master file,
|
||||
and the journal file to be removed.
|
||||
All dynamic update attempts will be refused while
|
||||
the zone is frozen.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>thaw <optional><replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enable updates to a frozen dynamic zone. If no
|
||||
zone is specified, then all frozen zones are
|
||||
enabled. This causes the server to reload the zone
|
||||
from disk, and re-enables dynamic updates after the
|
||||
load has completed. After a zone is thawed,
|
||||
dynamic updates will no longer be refused.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>notify <replaceable>zone</replaceable> <optional><replaceable>class</replaceable> <optional><replaceable>view</replaceable></optional></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Resend NOTIFY messages for the zone.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>reconfig</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reload the configuration file and load new zones,
|
||||
but do not reload existing zone files even if they
|
||||
have changed.
|
||||
This is faster than a full <command>reload</command> when there
|
||||
is a large number of zones because it avoids the need
|
||||
to examine the
|
||||
modification times of the zones files.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>stats</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Write server statistics to the statistics file.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>querylog</userinput> <optional>on|off</optional> </term>
|
||||
<listitem>
|
||||
<para>
|
||||
Toggle query logging. Query logging can also be enabled
|
||||
by explicitly directing the <command>queries</command>
|
||||
<command>category</command> to a
|
||||
<command>channel</command> in the
|
||||
<command>logging</command> section of
|
||||
<filename>named.conf</filename> or by specifying
|
||||
<command>querylog yes;</command> in the
|
||||
<command>options</command> section of
|
||||
<filename>named.conf</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>dumpdb <optional>-all|-cache|-zone</optional> <optional><replaceable>view ...</replaceable></optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Dump the server's caches (default) and/or zones to
|
||||
the
|
||||
dump file for the specified views. If no view is
|
||||
specified, all
|
||||
views are dumped.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>stop <optional>-p</optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Stop the server, making sure any recent changes
|
||||
made through dynamic update or IXFR are first saved to
|
||||
the master files of the updated zones.
|
||||
If <option>-p</option> is specified <command>named</command>'s process id is returned.
|
||||
This allows an external process to determine when <command>named</command>
|
||||
had completed stopping.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>halt <optional>-p</optional></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Stop the server immediately. Recent changes
|
||||
made through dynamic update or IXFR are not saved to
|
||||
the master files, but will be rolled forward from the
|
||||
journal files when the server is restarted.
|
||||
If <option>-p</option> is specified <command>named</command>'s process id is returned.
|
||||
This allows an external process to determine when <command>named</command>
|
||||
had completed halting.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>trace</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Increment the servers debugging level by one.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>trace <replaceable>level</replaceable></userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the server's debugging level to an explicit
|
||||
value.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>notrace</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the server's debugging level to 0.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>flush</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Flushes the server's cache.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>flushname</userinput> <replaceable>name</replaceable> <optional><replaceable>view</replaceable></optional> </term>
|
||||
<listitem>
|
||||
<para>
|
||||
Flushes the given name from the server's cache.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>status</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Display status of the server.
|
||||
Note that the number of zones includes the internal <command>bind/CH</command> zone
|
||||
and the default <command>./IN</command>
|
||||
hint zone if there is not an
|
||||
explicit root zone configured.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>recursing</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Dump the list of queries <command>named</command> is currently recursing
|
||||
on.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>validation ( on | off | check ) <optional><replaceable>view ...</replaceable></optional> </userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enable, disable, or check the current status of
|
||||
DNSSEC validation.
|
||||
Note <command>dnssec-enable</command> also needs to be
|
||||
set to <userinput>yes</userinput> or
|
||||
<userinput>auto</userinput> to be effective.
|
||||
It defaults to enabled.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>tsig-list</userinput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
List the names of all TSIG keys currently configured
|
||||
for use by <command>named</command> in each view. The
|
||||
list both statically configured keys and dynamic
|
||||
TKEY-negotiated keys.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><userinput>tsig-delete</userinput> <replaceable>keyname</replaceable> <optional><replaceable>view</replaceable></optional></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Delete a given TKEY-negotiated key from the server.
|
||||
(This does not apply to statically configured TSIG
|
||||
keys.)
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>LIMITATIONS</title>
|
||||
<para><command>rndc</command>
|
||||
does not yet support all the commands of
|
||||
the BIND 8 <command>ndc</command> utility.
|
||||
</para>
|
||||
<para>
|
||||
There is currently no way to provide the shared secret for a
|
||||
<option>key_id</option> without using the configuration file.
|
||||
|
||||
+166
-15
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
- Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -32,7 +32,7 @@
|
||||
<div class="cmdsynopsis"><p><code class="command">rndc</code> [<code class="option">-b <em class="replaceable"><code>source-address</code></em></code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key-file</code></em></code>] [<code class="option">-s <em class="replaceable"><code>server</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-V</code>] [<code class="option">-y <em class="replaceable"><code>key_id</code></em></code>] {command}</p></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543414"></a><h2>DESCRIPTION</h2>
|
||||
<a name="id2543417"></a><h2>DESCRIPTION</h2>
|
||||
<p><span><strong class="command">rndc</strong></span>
|
||||
controls the operation of a name
|
||||
server. It supersedes the <span><strong class="command">ndc</strong></span> utility
|
||||
@@ -61,7 +61,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543449"></a><h2>OPTIONS</h2>
|
||||
<a name="id2543452"></a><h2>OPTIONS</h2>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term">-b <em class="replaceable"><code>source-address</code></em></span></dt>
|
||||
<dd><p>
|
||||
@@ -125,19 +125,170 @@
|
||||
or write access.
|
||||
</p></dd>
|
||||
</dl></div>
|
||||
<p>
|
||||
For the complete set of commands supported by <span><strong class="command">rndc</strong></span>,
|
||||
see the BIND 9 Administrator Reference Manual or run
|
||||
<span><strong class="command">rndc</strong></span> without arguments to see its help
|
||||
message.
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543657"></a><h2>LIMITATIONS</h2>
|
||||
<p><span><strong class="command">rndc</strong></span>
|
||||
does not yet support all the commands of
|
||||
the BIND 8 <span><strong class="command">ndc</strong></span> utility.
|
||||
<a name="id2543649"></a><h2>COMMANDS</h2>
|
||||
<p>
|
||||
A list of commands supported by <span><strong class="command">rndc</strong></span> can
|
||||
be seen by running <span><strong class="command">rndc</strong></span> without arguments.
|
||||
</p>
|
||||
<p>
|
||||
Currently supported commands are:
|
||||
</p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt><span class="term"><strong class="userinput"><code>reload</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Reload configuration file and zones.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>reload <em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Reload the given zone.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>refresh <em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Schedule zone maintenance for the given zone.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>retransfer <em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Retransfer the given zone from the master.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>freeze [<span class="optional"><em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Suspend updates to a dynamic zone. If no zone is
|
||||
specified, then all zones are suspended. This allows
|
||||
manual edits to be made to a zone normally updated by
|
||||
dynamic update. It also causes changes in the
|
||||
journal file to be synced into the master file,
|
||||
and the journal file to be removed.
|
||||
All dynamic update attempts will be refused while
|
||||
the zone is frozen.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>thaw [<span class="optional"><em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Enable updates to a frozen dynamic zone. If no
|
||||
zone is specified, then all frozen zones are
|
||||
enabled. This causes the server to reload the zone
|
||||
from disk, and re-enables dynamic updates after the
|
||||
load has completed. After a zone is thawed,
|
||||
dynamic updates will no longer be refused.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>notify <em class="replaceable"><code>zone</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Resend NOTIFY messages for the zone.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>reconfig</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Reload the configuration file and load new zones,
|
||||
but do not reload existing zone files even if they
|
||||
have changed.
|
||||
This is faster than a full <span><strong class="command">reload</strong></span> when there
|
||||
is a large number of zones because it avoids the need
|
||||
to examine the
|
||||
modification times of the zones files.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>stats</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Write server statistics to the statistics file.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>querylog</code></strong> [<span class="optional">on|off</span>] </span></dt>
|
||||
<dd><p>
|
||||
Toggle query logging. Query logging can also be enabled
|
||||
by explicitly directing the <span><strong class="command">queries</strong></span>
|
||||
<span><strong class="command">category</strong></span> to a
|
||||
<span><strong class="command">channel</strong></span> in the
|
||||
<span><strong class="command">logging</strong></span> section of
|
||||
<code class="filename">named.conf</code> or by specifying
|
||||
<span><strong class="command">querylog yes;</strong></span> in the
|
||||
<span><strong class="command">options</strong></span> section of
|
||||
<code class="filename">named.conf</code>.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>dumpdb [<span class="optional">-all|-cache|-zone</span>] [<span class="optional"><em class="replaceable"><code>view ...</code></em></span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Dump the server's caches (default) and/or zones to
|
||||
the
|
||||
dump file for the specified views. If no view is
|
||||
specified, all
|
||||
views are dumped.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>stop [<span class="optional">-p</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Stop the server, making sure any recent changes
|
||||
made through dynamic update or IXFR are first saved to
|
||||
the master files of the updated zones.
|
||||
If <code class="option">-p</code> is specified <span><strong class="command">named</strong></span>'s process id is returned.
|
||||
This allows an external process to determine when <span><strong class="command">named</strong></span>
|
||||
had completed stopping.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>halt [<span class="optional">-p</span>]</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Stop the server immediately. Recent changes
|
||||
made through dynamic update or IXFR are not saved to
|
||||
the master files, but will be rolled forward from the
|
||||
journal files when the server is restarted.
|
||||
If <code class="option">-p</code> is specified <span><strong class="command">named</strong></span>'s process id is returned.
|
||||
This allows an external process to determine when <span><strong class="command">named</strong></span>
|
||||
had completed halting.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>trace</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Increment the servers debugging level by one.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>trace <em class="replaceable"><code>level</code></em></code></strong></span></dt>
|
||||
<dd><p>
|
||||
Sets the server's debugging level to an explicit
|
||||
value.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>notrace</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Sets the server's debugging level to 0.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>flush</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Flushes the server's cache.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>flushname</code></strong> <em class="replaceable"><code>name</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>] </span></dt>
|
||||
<dd><p>
|
||||
Flushes the given name from the server's cache.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>status</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Display status of the server.
|
||||
Note that the number of zones includes the internal <span><strong class="command">bind/CH</strong></span> zone
|
||||
and the default <span><strong class="command">./IN</strong></span>
|
||||
hint zone if there is not an
|
||||
explicit root zone configured.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>recursing</code></strong></span></dt>
|
||||
<dd><p>
|
||||
Dump the list of queries <span><strong class="command">named</strong></span> is currently recursing
|
||||
on.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>validation ( on | off | check ) [<span class="optional"><em class="replaceable"><code>view ...</code></em></span>] </code></strong></span></dt>
|
||||
<dd><p>
|
||||
Enable, disable, or check the current status of
|
||||
DNSSEC validation.
|
||||
Note <span><strong class="command">dnssec-enable</strong></span> also needs to be
|
||||
set to <strong class="userinput"><code>yes</code></strong> or
|
||||
<strong class="userinput"><code>auto</code></strong> to be effective.
|
||||
It defaults to enabled.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>tsig-list</code></strong></span></dt>
|
||||
<dd><p>
|
||||
List the names of all TSIG keys currently configured
|
||||
for use by <span><strong class="command">named</strong></span> in each view. The
|
||||
list both statically configured keys and dynamic
|
||||
TKEY-negotiated keys.
|
||||
</p></dd>
|
||||
<dt><span class="term"><strong class="userinput"><code>tsig-delete</code></strong> <em class="replaceable"><code>keyname</code></em> [<span class="optional"><em class="replaceable"><code>view</code></em></span>]</span></dt>
|
||||
<dd><p>
|
||||
Delete a given TKEY-negotiated key from the server.
|
||||
(This does not apply to statically configured TSIG
|
||||
keys.)
|
||||
</p></dd>
|
||||
</dl></div>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2544382"></a><h2>LIMITATIONS</h2>
|
||||
<p>
|
||||
There is currently no way to provide the shared secret for a
|
||||
<code class="option">key_id</code> without using the configuration file.
|
||||
@@ -147,7 +298,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543684"></a><h2>SEE ALSO</h2>
|
||||
<a name="id2544401"></a><h2>SEE ALSO</h2>
|
||||
<p><span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>,
|
||||
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
|
||||
@@ -157,7 +308,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
<a name="id2543739"></a><h2>AUTHOR</h2>
|
||||
<a name="id2544524"></a><h2>AUTHOR</h2>
|
||||
<p><span class="corpauthor">Internet Systems Consortium</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -18,12 +18,8 @@ t_rbt
|
||||
t_resolver
|
||||
t_sockaddr
|
||||
conf.sh
|
||||
prereq.sh
|
||||
dlopen
|
||||
named.conf
|
||||
filter-aaaa
|
||||
lwtest
|
||||
rpz
|
||||
keycreate
|
||||
keydelete
|
||||
gssapi_krb
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004-2008, 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004-2008, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1998-2003 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -131,6 +131,10 @@ XSRCS = adb_test.c \
|
||||
wire_test.c \
|
||||
zone_test.c
|
||||
|
||||
# override all rule to make sure top directory targets are built before
|
||||
# processing subdirectories.
|
||||
all: ${TARGETS} subdirs testdirs
|
||||
|
||||
@BIND9_MAKE_RULES@
|
||||
|
||||
all_tests: ${XTARGETS}
|
||||
|
||||
@@ -245,7 +245,7 @@ lookup(const char *target) {
|
||||
INSIST(target != NULL);
|
||||
|
||||
client = new_client();
|
||||
isc_buffer_init(&t, target, strlen(target));
|
||||
isc_buffer_constinit(&t, target, strlen(target));
|
||||
isc_buffer_add(&t, strlen(target));
|
||||
isc_buffer_init(&namebuf, namedata, sizeof(namedata));
|
||||
dns_name_init(&name, NULL);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ t_create(const char *db_type, const char *origin, const char *class,
|
||||
|
||||
dns_fixedname_init(&dns_origin);
|
||||
len = strlen(origin);
|
||||
isc_buffer_init(&origin_buffer, origin, len);
|
||||
isc_buffer_constinit(&origin_buffer, origin, len);
|
||||
isc_buffer_add(&origin_buffer, len);
|
||||
dns_result = dns_name_fromtext(dns_fixedname_name(&dns_origin),
|
||||
&origin_buffer, NULL, ISC_FALSE, NULL);
|
||||
|
||||
+13
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2005, 2007, 2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2005, 2007, 2008, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -263,7 +263,7 @@ load(const char *filename, const char *origintext, isc_boolean_t cache) {
|
||||
ISC_LINK_INIT(dbi, link);
|
||||
|
||||
len = strlen(origintext);
|
||||
isc_buffer_init(&source, origintext, len);
|
||||
isc_buffer_constinit(&source, origintext, len);
|
||||
isc_buffer_add(&source, len);
|
||||
dns_fixedname_init(&forigin);
|
||||
origin = dns_fixedname_name(&forigin);
|
||||
@@ -374,6 +374,7 @@ main(int argc, char *argv[]) {
|
||||
dns_trust_t trust = 0;
|
||||
unsigned int addopts;
|
||||
isc_log_t *lctx = NULL;
|
||||
size_t n;
|
||||
|
||||
dns_result_register();
|
||||
|
||||
@@ -395,7 +396,13 @@ main(int argc, char *argv[]) {
|
||||
isc_result_totext(result));
|
||||
break;
|
||||
case 'd':
|
||||
strcpy(dbtype, isc_commandline_argument);
|
||||
n = strlcpy(dbtype, isc_commandline_argument,
|
||||
sizeof(dbtype));
|
||||
if (n >= sizeof(dbtype)) {
|
||||
fprintf(stderr, "bad db type '%s'\n",
|
||||
isc_commandline_argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case 'g':
|
||||
options |= (DNS_DBFIND_GLUEOK|DNS_DBFIND_VALIDATEGLUE);
|
||||
@@ -606,10 +613,11 @@ main(int argc, char *argv[]) {
|
||||
} else if (strstr(s, "!V") == s) {
|
||||
DBI_CHECK(dbi);
|
||||
v = atoi(&s[2]);
|
||||
if (v >= dbi->rcount) {
|
||||
if (v >= dbi->rcount || v < 0) {
|
||||
printf("unknown open version %d\n", v);
|
||||
continue;
|
||||
} else if (dbi->rversions[v] == NULL) {
|
||||
}
|
||||
if (dbi->rversions[v] == NULL) {
|
||||
printf("version %d is not open\n", v);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
randomfile
|
||||
Kdh.+002+18602.key
|
||||
Kdh.+002+18602.private
|
||||
Kdh.+002+48957.key
|
||||
Kdh.+002+48957.private
|
||||
Ktest.+001+00002.key
|
||||
Ktest.+001+54622.key
|
||||
Ktest.+001+54622.private
|
||||
Ktest.+003+23616.key
|
||||
Ktest.+003+23616.private
|
||||
Ktest.+003+49667.key
|
||||
dst_2_data
|
||||
t2_data_1
|
||||
t2_data_2
|
||||
t2_dsasig
|
||||
t2_rsasig
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004, 2006-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2006-2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1999-2002 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -49,7 +49,7 @@ dst_test@EXEEXT@: dst_test.@O@ ${DEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
||||
dst_test.@O@ ${LIBS}
|
||||
|
||||
t_dst@EXEEXT@: t_dst.@O@ ${DEPLIBS} ${TLIB}
|
||||
t_dst@EXEEXT@: t_dst.@O@ ${DEPLIBS} ${TLIB} randomfile
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
||||
t_dst.@O@ ${TLIB} ${LIBS}
|
||||
|
||||
@@ -57,9 +57,29 @@ gsstest@EXEEXT@: gsstest.@O@ ${DEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
||||
gsstest.@O@ ${LIBS}
|
||||
|
||||
test: t_dst@EXEEXT@
|
||||
test: t_dst@EXEEXT@ randomfile
|
||||
../genrandom@EXEEXT@ 100 randomfile
|
||||
-@ ./t_dst@EXEEXT@ -q 1800 -a
|
||||
|
||||
randomfile:
|
||||
../genrandom@EXEEXT@ 100 randomfile
|
||||
-@ ./t_dst@EXEEXT@ -b @srcdir@ -q 1800 -a
|
||||
|
||||
clean distclean::
|
||||
rm -f ${TARGETS} randomfile
|
||||
|
||||
distclean::
|
||||
rm -f Kdh.+002+18602.key
|
||||
rm -f Kdh.+002+18602.private
|
||||
rm -f Kdh.+002+48957.key
|
||||
rm -f Kdh.+002+48957.private
|
||||
rm -f Ktest.+001+00002.key
|
||||
rm -f Ktest.+001+54622.key
|
||||
rm -f Ktest.+001+54622.private
|
||||
rm -f Ktest.+003+23616.key
|
||||
rm -f Ktest.+003+23616.private
|
||||
rm -f Ktest.+003+49667.key
|
||||
rm -f dst_2_data
|
||||
rm -f t2_data_1
|
||||
rm -f t2_data_2
|
||||
rm -f t2_dsasig
|
||||
rm -f t2_rsasig
|
||||
|
||||
@@ -54,7 +54,7 @@ use(dst_key_t *key, isc_mem_t *mctx) {
|
||||
*/
|
||||
isc_buffer_add(&sigbuf, 1);
|
||||
|
||||
isc_buffer_init(&databuf, data, strlen(data));
|
||||
isc_buffer_constinit(&databuf, data, strlen(data));
|
||||
isc_buffer_add(&databuf, strlen(data));
|
||||
isc_buffer_usedregion(&databuf, &datareg);
|
||||
|
||||
@@ -262,7 +262,7 @@ main(void) {
|
||||
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
isc_buffer_init(&b, "test.", 5);
|
||||
isc_buffer_constinit(&b, "test.", 5);
|
||||
isc_buffer_add(&b, 5);
|
||||
result = dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
@@ -274,7 +274,7 @@ main(void) {
|
||||
io(name, 49667, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
|
||||
io(name, 2, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
|
||||
|
||||
isc_buffer_init(&b, "dh.", 3);
|
||||
isc_buffer_constinit(&b, "dh.", 3);
|
||||
isc_buffer_add(&b, 3);
|
||||
result = dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
|
||||
+71
-52
@@ -61,6 +61,7 @@ cleandir(char *path) {
|
||||
DIR *dirp;
|
||||
struct dirent *pe;
|
||||
char fullname[PATH_MAX + 1];
|
||||
size_t l;
|
||||
|
||||
dirp = opendir(path);
|
||||
if (dirp == NULL) {
|
||||
@@ -73,11 +74,16 @@ cleandir(char *path) {
|
||||
continue;
|
||||
if (! strcmp(pe->d_name, ".."))
|
||||
continue;
|
||||
strcpy(fullname, path);
|
||||
strcat(fullname, "/");
|
||||
strcat(fullname, pe->d_name);
|
||||
if (remove(fullname))
|
||||
t_info("remove(%s) failed %d\n", fullname, errno);
|
||||
(void)strlcpy(fullname, path, sizeof(fullname));
|
||||
(void)strlcat(fullname, "/", sizeof(fullname));
|
||||
l = strlcat(fullname, pe->d_name, sizeof(fullname));
|
||||
if (l < sizeof(fullname)) {
|
||||
if (remove(fullname))
|
||||
t_info("remove(%s) failed %d\n", fullname,
|
||||
errno);
|
||||
} else
|
||||
t_info("unable to remove '%s/%s': path too long\n",
|
||||
path, pe->d_name);
|
||||
|
||||
}
|
||||
(void)closedir(dirp);
|
||||
@@ -98,7 +104,7 @@ use(dst_key_t *key, isc_mem_t *mctx, isc_result_t exp_result, int *nfails) {
|
||||
dst_context_t *ctx = NULL;
|
||||
|
||||
isc_buffer_init(&sigbuf, sig, sizeof(sig));
|
||||
isc_buffer_init(&databuf, data, strlen(data));
|
||||
isc_buffer_constinit(&databuf, data, strlen(data));
|
||||
isc_buffer_add(&databuf, strlen(data));
|
||||
isc_buffer_usedregion(&databuf, &datareg);
|
||||
|
||||
@@ -179,7 +185,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
if (p == NULL) {
|
||||
t_info("getcwd failed %d\n", errno);
|
||||
++*nprobs;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = dst_key_fromfile(name1, id1, alg, type, current, mctx, &key1);
|
||||
@@ -187,7 +193,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_key_fromfile(%d) returned: %s\n",
|
||||
alg, dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = dst_key_fromfile(name2, id2, alg, type, current, mctx, &key2);
|
||||
@@ -195,7 +201,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_key_fromfile(%d) returned: %s\n",
|
||||
alg, dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = isc_file_mktemplate("/tmp/", tmp, sizeof(tmp));
|
||||
@@ -203,7 +209,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("isc_file_mktemplate failed %s\n",
|
||||
isc_result_totext(ret));
|
||||
++*nprobs;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = isc_dir_createunique(tmp);
|
||||
@@ -211,7 +217,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("isc_dir_createunique failed %s\n",
|
||||
isc_result_totext(ret));
|
||||
++*nprobs;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = dst_key_tofile(key1, type, tmp);
|
||||
@@ -219,7 +225,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_key_tofile(%d) returned: %s\n",
|
||||
alg, dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = dst_key_tofile(key2, type, tmp);
|
||||
@@ -227,7 +233,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_key_tofile(%d) returned: %s\n",
|
||||
alg, dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleandir(tmp);
|
||||
@@ -238,7 +244,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_computesecret() returned: %s\n",
|
||||
dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
isc_buffer_init(&b2, array2, sizeof(array2));
|
||||
@@ -247,7 +253,7 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
t_info("dst_computesecret() returned: %s\n",
|
||||
dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
isc_buffer_usedregion(&b1, &r1);
|
||||
@@ -256,11 +262,14 @@ dh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx,
|
||||
{
|
||||
t_info("computed secrets don't match\n");
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
dst_key_free(&key1);
|
||||
dst_key_free(&key2);
|
||||
cleanup:
|
||||
if (key1 != NULL)
|
||||
dst_key_free(&key1);
|
||||
if (key2 != NULL)
|
||||
dst_key_free(&key2);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -330,12 +339,14 @@ generate(int alg, isc_mem_t *mctx, int size, int *nfails) {
|
||||
t_info("dst_key_generate(%d) returned: %s\n", alg,
|
||||
dst_result_totext(ret));
|
||||
++*nfails;
|
||||
return;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (alg != DST_ALG_DH)
|
||||
use(key, mctx, ISC_R_SUCCESS, nfails);
|
||||
dst_key_free(&key);
|
||||
cleanup:
|
||||
if (key != NULL)
|
||||
dst_key_free(&key);
|
||||
}
|
||||
|
||||
#define DBUFSIZ 25
|
||||
@@ -403,7 +414,7 @@ t1(void) {
|
||||
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
isc_buffer_init(&b, "test.", 5);
|
||||
isc_buffer_constinit(&b, "test.", 5);
|
||||
isc_buffer_add(&b, 5);
|
||||
isc_result = dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
|
||||
if (isc_result != ISC_R_SUCCESS) {
|
||||
@@ -425,7 +436,7 @@ t1(void) {
|
||||
io(name, 2, DST_ALG_RSAMD5, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC,
|
||||
mctx, DST_R_NULLKEY, &nfails, &nprobs);
|
||||
|
||||
isc_buffer_init(&b, "dh.", 3);
|
||||
isc_buffer_constinit(&b, "dh.", 3);
|
||||
isc_buffer_add(&b, 3);
|
||||
isc_result = dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
|
||||
if (isc_result != ISC_R_SUCCESS) {
|
||||
@@ -555,25 +566,27 @@ sig_fromfile(char *path, isc_buffer_t *iscbuf) {
|
||||
char *p;
|
||||
char *buf;
|
||||
|
||||
rval = stat(path, &sb);
|
||||
if (rval != 0) {
|
||||
t_info("stat %s failed, errno == %d\n", path, errno);
|
||||
return(1);
|
||||
}
|
||||
|
||||
buf = (char *) malloc((sb.st_size + 1) * sizeof(unsigned char));
|
||||
if (buf == NULL) {
|
||||
t_info("malloc failed, errno == %d\n", errno);
|
||||
return(1);
|
||||
}
|
||||
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
t_info("open failed, errno == %d\n", errno);
|
||||
(void) free(buf);
|
||||
return(1);
|
||||
}
|
||||
|
||||
rval = fstat(fd, &sb);
|
||||
if (rval != 0) {
|
||||
t_info("stat %s failed, errno == %d\n", path, errno);
|
||||
close(fd);
|
||||
return(1);
|
||||
}
|
||||
|
||||
buf = (char *) malloc((sb.st_size + 1) * sizeof(char));
|
||||
if (buf == NULL) {
|
||||
t_info("malloc failed, errno == %d\n", errno);
|
||||
close(fd);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
len = sb.st_size;
|
||||
p = buf;
|
||||
while (len) {
|
||||
@@ -646,28 +659,29 @@ t2_sigchk(char *datapath, char *sigpath, char *keyname,
|
||||
/*
|
||||
* Read data from file in a form usable by dst_verify.
|
||||
*/
|
||||
rval = stat(datapath, &sb);
|
||||
if (rval != 0) {
|
||||
t_info("t2_sigchk: stat (%s) failed %d\n", datapath, errno);
|
||||
++*nprobs;
|
||||
return;
|
||||
}
|
||||
|
||||
data = (unsigned char *) malloc(sb.st_size * sizeof(char));
|
||||
if (data == NULL) {
|
||||
t_info("t2_sigchk: malloc failed %d\n", errno);
|
||||
++*nprobs;
|
||||
return;
|
||||
}
|
||||
|
||||
fd = open(datapath, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
t_info("t2_sigchk: open failed %d\n", errno);
|
||||
(void) free(data);
|
||||
++*nprobs;
|
||||
return;
|
||||
}
|
||||
|
||||
rval = fstat(fd, &sb);
|
||||
if (rval != 0) {
|
||||
t_info("t2_sigchk: stat (%s) failed %d\n", datapath, errno);
|
||||
++*nprobs;
|
||||
close(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
data = (unsigned char *) malloc(sb.st_size * sizeof(unsigned char));
|
||||
if (data == NULL) {
|
||||
t_info("t2_sigchk: malloc failed %d\n", errno);
|
||||
++*nprobs;
|
||||
close(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
p = data;
|
||||
len = sb.st_size;
|
||||
do {
|
||||
@@ -684,7 +698,7 @@ t2_sigchk(char *datapath, char *sigpath, char *keyname,
|
||||
*/
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
isc_buffer_init(&b, keyname, strlen(keyname));
|
||||
isc_buffer_constinit(&b, keyname, strlen(keyname));
|
||||
isc_buffer_add(&b, strlen(keyname));
|
||||
isc_result = dns_name_fromtext(name, &b, dns_rootname, ISC_FALSE, NULL);
|
||||
if (isc_result != ISC_R_SUCCESS) {
|
||||
@@ -787,14 +801,20 @@ t2_sigchk(char *datapath, char *sigpath, char *keyname,
|
||||
if (isc_result != ISC_R_SUCCESS) {
|
||||
t_info("dst_context_create returned %s\n",
|
||||
isc_result_totext(isc_result));
|
||||
(void) free(data);
|
||||
dst_key_free(&key);
|
||||
++*nfails;
|
||||
return;
|
||||
}
|
||||
isc_result = dst_context_adddata(ctx, &datareg);
|
||||
if (isc_result != ISC_R_SUCCESS) {
|
||||
t_info("dst_context_adddata returned %s\n",
|
||||
isc_result_totext(isc_result));
|
||||
(void) free(data);
|
||||
dst_context_destroy(&ctx);
|
||||
dst_key_free(&key);
|
||||
++*nfails;
|
||||
return;
|
||||
}
|
||||
isc_result = dst_context_verify(ctx, &sigreg);
|
||||
if ( ((exp_res == 0) && (isc_result != ISC_R_SUCCESS)) ||
|
||||
@@ -803,7 +823,6 @@ t2_sigchk(char *datapath, char *sigpath, char *keyname,
|
||||
t_info("dst_context_verify returned %s, expected %s\n",
|
||||
isc_result_totext(isc_result),
|
||||
expected_result);
|
||||
dst_context_destroy(&ctx);
|
||||
++*nfails;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <sys/types.h> /* Non-portable. */
|
||||
#include <sys/stat.h> /* Non-portable. */
|
||||
@@ -35,10 +37,24 @@ int
|
||||
main(void) {
|
||||
isc_fsaccess_t access;
|
||||
isc_result_t result;
|
||||
FILE *fp;
|
||||
int n;
|
||||
|
||||
remove(PATH);
|
||||
fopen(PATH, "w");
|
||||
chmod(PATH, 0);
|
||||
n = remove(PATH);
|
||||
if (n != 0 && errno != ENOENT) {
|
||||
fprintf(stderr, "unable to remove(%s)\n", PATH);
|
||||
exit(1);
|
||||
}
|
||||
fp = fopen(PATH, "w");
|
||||
if (fp == NULL) {
|
||||
fprintf(stderr, "unable to fopen(%s)\n", PATH);
|
||||
exit(1);
|
||||
}
|
||||
n = chmod(PATH, 0);
|
||||
if (n != 0) {
|
||||
fprintf(stderr, "unable chmod(%s, 0)\n", PATH);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
access = 0;
|
||||
|
||||
@@ -55,6 +71,7 @@ main(void) {
|
||||
result = isc_fsaccess_set(PATH, access);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fprintf(stderr, "result = %s\n", isc_result_totext(result));
|
||||
(void)fclose(fp);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2007, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -15,7 +15,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: named.conf,v 1.58 2007/06/19 23:46:59 tbox Exp $ */
|
||||
/* $Id: named.conf,v 1.59 2011/03/03 14:10:26 fdupont Exp $ */
|
||||
|
||||
/*
|
||||
* This is a worthless, nonrunnable example of a named.conf file that has
|
||||
@@ -153,7 +153,7 @@ options {
|
||||
min-retry-time 1111;
|
||||
max-refresh-time 888;
|
||||
min-refresh-time 777;
|
||||
|
||||
|
||||
max-ncache-ttl 333;
|
||||
min-roots 15;
|
||||
serial-queries 34;
|
||||
@@ -287,7 +287,7 @@ view "test-view" in {
|
||||
transfer-source 10.0.0.55;
|
||||
transfer-source-v6 4:3:8:1:5:6:7:8;
|
||||
query-source port * address 10.0.0.54 ;
|
||||
query-source-v6 address 6:6:6:6:6:6:6:6 port *;
|
||||
query-source-v6 address 6:6:6:6:6:6:6:6 port *;
|
||||
max-transfer-time-out 45;
|
||||
max-transfer-idle-out 55;
|
||||
cleaning-interval 100;
|
||||
@@ -300,7 +300,7 @@ view "test-view" in {
|
||||
min-retry-time 4;
|
||||
max-refresh-time 999;
|
||||
min-refresh-time 111;
|
||||
|
||||
|
||||
zone "view-zone.com" {
|
||||
type master;
|
||||
allow-update-forwarding { 10.0.0.34;};
|
||||
@@ -337,7 +337,7 @@ zone "stub.demo.zone" {
|
||||
min-retry-time 11;
|
||||
max-refresh-time 12;
|
||||
min-refresh-time 13;
|
||||
|
||||
|
||||
max-transfer-time-in 120; // if not set, global option is used.
|
||||
pubkey 257 255 1 "a useless key";
|
||||
pubkey 257 255 1 "another useless key";
|
||||
@@ -394,7 +394,7 @@ zone "non-default-acl.demo.zone" {
|
||||
grant root.domain. name host.domain. a ns md mf cname soa mb mg
|
||||
mr "null" wks ptr hinfo minfo mx txt rp afsdb x25
|
||||
isdn rt nsap sig "key" px gpos aaaa loc nxt srv naptr kx
|
||||
cert a6 dname opt unspec tkey tsig ;
|
||||
cert a6 dname opt unspec uri tkey tsig ;
|
||||
grant foo.bar.com. self foo.bar.com. a;
|
||||
};
|
||||
};
|
||||
@@ -614,7 +614,7 @@ logging {
|
||||
* channel may be assigned to each of them, and it must be a
|
||||
* file channel. If you don't define them yourself, they default to
|
||||
*
|
||||
* category eventlib { default_debug; };
|
||||
* category eventlib { default_debug; };
|
||||
*
|
||||
* category packet { default_debug; };
|
||||
*/
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
# cishm is 0 if a case insensitive hash of testname1 should match a
|
||||
# case insensitive hash of testname2, otherwise cishm != 0
|
||||
#
|
||||
a.b.c.d a.b.c.d. 0 0
|
||||
a.b.c.d A.B.C.D 0 1
|
||||
|
||||
+162
-118
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1998-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -25,8 +25,10 @@
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
#include <dns/compress.h>
|
||||
#include <dns/fixedname.h>
|
||||
#include <dns/name.h>
|
||||
#include <dns/result.h>
|
||||
|
||||
@@ -38,7 +40,6 @@
|
||||
|
||||
static char *Tokens[MAXTOKS + 1];
|
||||
|
||||
|
||||
#ifdef NEED_PBUF
|
||||
|
||||
/*%
|
||||
@@ -121,20 +122,30 @@ chkdata(unsigned char *buf, size_t buflen, char *exp_data,
|
||||
|
||||
if (('0' <= *q) && (*q <= '9'))
|
||||
*p = *q - '0';
|
||||
else if (('a' <= *q) && (*q <= 'z'))
|
||||
else if (('a' <= *q) && (*q <= 'f'))
|
||||
*p = *q - 'a' + 10;
|
||||
else if (('A' <= *q) && (*q <= 'Z'))
|
||||
else if (('A' <= *q) && (*q <= 'F'))
|
||||
*p = *q - 'A' + 10;
|
||||
else {
|
||||
t_info("malformed comparison data\n");
|
||||
free(data);
|
||||
return (-1);
|
||||
}
|
||||
++q;
|
||||
|
||||
*p <<= 4;
|
||||
|
||||
if (('0' <= *q) && (*q <= '9'))
|
||||
*p |= ((*q - '0') & 0x0f);
|
||||
else if (('a' <= *q) && (*q <= 'z'))
|
||||
else if (('a' <= *q) && (*q <= 'f'))
|
||||
*p |= ((*q - 'a' + 10) & 0x0f);
|
||||
else if (('A' <= *q) && (*q <= 'Z'))
|
||||
else if (('A' <= *q) && (*q <= 'F'))
|
||||
*p |= ((*q - 'A' + 10) & 0x0f);
|
||||
else {
|
||||
t_info("malformed comparison data\n");
|
||||
free(data);
|
||||
return (-1);
|
||||
}
|
||||
++p;
|
||||
++q;
|
||||
++cnt;
|
||||
@@ -156,7 +167,7 @@ chkdata(unsigned char *buf, size_t buflen, char *exp_data,
|
||||
else {
|
||||
t_info("bad data at position %lu, "
|
||||
"got 0x%.2x, expected 0x%.2x\n",
|
||||
(unsigned long)cnt, *p, *q);
|
||||
(unsigned long)cnt, *p, *v);
|
||||
result = cnt + 1;
|
||||
}
|
||||
(void)free(data);
|
||||
@@ -174,13 +185,14 @@ chkdata(unsigned char *buf, size_t buflen, char *exp_data,
|
||||
* setup the buffer and return the data length.
|
||||
*/
|
||||
static int
|
||||
getmsg(char *datafile_name, unsigned char *buf, int buflen, isc_buffer_t *pbuf)
|
||||
getmsg(char *datafile_name, isc_buffer_t *pbuf)
|
||||
{
|
||||
int c;
|
||||
int len;
|
||||
int cnt;
|
||||
unsigned int len;
|
||||
unsigned int cnt;
|
||||
unsigned char *p;
|
||||
FILE *fp;
|
||||
unsigned int buflen;
|
||||
|
||||
fp = fopen(datafile_name, "r");
|
||||
if (fp == NULL) {
|
||||
@@ -188,7 +200,8 @@ getmsg(char *datafile_name, unsigned char *buf, int buflen, isc_buffer_t *pbuf)
|
||||
return (0);
|
||||
}
|
||||
|
||||
p = buf;
|
||||
p = isc_buffer_used(pbuf);
|
||||
buflen = isc_buffer_availablelength(pbuf);
|
||||
cnt = 0;
|
||||
len = 0;
|
||||
while ((c = getc(fp)) != EOF) {
|
||||
@@ -203,9 +216,9 @@ getmsg(char *datafile_name, unsigned char *buf, int buflen, isc_buffer_t *pbuf)
|
||||
}
|
||||
if (('0' <= c) && (c <= '9'))
|
||||
val = c - '0';
|
||||
else if (('a' <= c) && (c <= 'z'))
|
||||
else if (('a' <= c) && (c <= 'f'))
|
||||
val = c - 'a' + 10;
|
||||
else if (('A' <= c) && (c <= 'Z'))
|
||||
else if (('A' <= c) && (c <= 'F'))
|
||||
val = c - 'A'+ 10;
|
||||
else {
|
||||
(void)fclose(fp);
|
||||
@@ -237,7 +250,6 @@ getmsg(char *datafile_name, unsigned char *buf, int buflen, isc_buffer_t *pbuf)
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
isc_buffer_init(pbuf, buf, cnt);
|
||||
isc_buffer_add(pbuf, cnt);
|
||||
return (cnt);
|
||||
}
|
||||
@@ -320,41 +332,6 @@ hname_to_tname(char *src, char *target, size_t len) {
|
||||
|
||||
#endif /* NEED_HNAME_TO_TNAME */
|
||||
|
||||
/*%
|
||||
* initialize a dns_name_t from a text name, hiding all
|
||||
* buffer and other object initialization from the caller
|
||||
*
|
||||
*/
|
||||
|
||||
static isc_result_t
|
||||
dname_from_tname(char *name, dns_name_t *dns_name) {
|
||||
int len;
|
||||
isc_buffer_t txtbuf;
|
||||
isc_buffer_t *binbuf;
|
||||
unsigned char *junk;
|
||||
isc_result_t result;
|
||||
|
||||
len = strlen(name);
|
||||
isc_buffer_init(&txtbuf, name, len);
|
||||
isc_buffer_add(&txtbuf, len);
|
||||
junk = (unsigned char *)malloc(sizeof(unsigned char) * BUFLEN);
|
||||
binbuf = (isc_buffer_t *)malloc(sizeof(isc_buffer_t));
|
||||
if ((junk != NULL) && (binbuf != NULL)) {
|
||||
isc_buffer_init(binbuf, junk, BUFLEN);
|
||||
dns_name_init(dns_name, NULL);
|
||||
dns_name_setbuffer(dns_name, binbuf);
|
||||
result = dns_name_fromtext(dns_name, &txtbuf,
|
||||
NULL, ISC_FALSE, NULL);
|
||||
} else {
|
||||
result = ISC_R_NOSPACE;
|
||||
if (junk != NULL)
|
||||
(void)free(junk);
|
||||
if (binbuf != NULL)
|
||||
(void)free(binbuf);
|
||||
}
|
||||
return (result);
|
||||
}
|
||||
|
||||
static const char *a3 = "dns_name_init initializes 'name' to the empty name";
|
||||
|
||||
static void
|
||||
@@ -615,8 +592,10 @@ test_dns_name_hash(char *test_name1, char *test_name2,
|
||||
isc_boolean_t match;
|
||||
unsigned int hash1;
|
||||
unsigned int hash2;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
isc_result_t result;
|
||||
|
||||
rval = T_UNRESOLVED;
|
||||
@@ -624,12 +603,17 @@ test_dns_name_hash(char *test_name1, char *test_name2,
|
||||
|
||||
t_info("testing names %s and %s\n", test_name1, test_name2);
|
||||
|
||||
result = dname_from_tname(test_name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
result = dns_name_fromstring2(dns_name1, test_name1, NULL, 0, NULL);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
result = dname_from_tname(test_name2, &dns_name2);
|
||||
result = dns_name_fromstring2(dns_name2, test_name2, NULL,
|
||||
0, NULL);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
hash1 = dns_name_hash(&dns_name1, ISC_TRUE);
|
||||
hash2 = dns_name_hash(&dns_name2, ISC_TRUE);
|
||||
hash1 = dns_name_hash(dns_name1, ISC_TRUE);
|
||||
hash2 = dns_name_hash(dns_name2, ISC_TRUE);
|
||||
match = ISC_FALSE;
|
||||
if (hash1 == hash2)
|
||||
match = ISC_TRUE;
|
||||
@@ -637,8 +621,8 @@ test_dns_name_hash(char *test_name1, char *test_name2,
|
||||
++failures;
|
||||
t_info("hash mismatch when ISC_TRUE\n");
|
||||
}
|
||||
hash1 = dns_name_hash(&dns_name1, ISC_FALSE);
|
||||
hash2 = dns_name_hash(&dns_name2, ISC_FALSE);
|
||||
hash1 = dns_name_hash(dns_name1, ISC_FALSE);
|
||||
hash2 = dns_name_hash(dns_name2, ISC_FALSE);
|
||||
match = ISC_FALSE;
|
||||
if (hash1 == hash2)
|
||||
match = ISC_TRUE;
|
||||
@@ -651,11 +635,11 @@ test_dns_name_hash(char *test_name1, char *test_name2,
|
||||
else
|
||||
rval = T_FAIL;
|
||||
} else {
|
||||
t_info("dns_fromtext %s failed, result = %s\n",
|
||||
t_info("dns_name_fromstring2 %s failed, result = %s\n",
|
||||
test_name2, dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dns_fromtext %s failed, result = %s\n",
|
||||
t_info("dns_name_fromstring2 %s failed, result = %s\n",
|
||||
test_name1, dns_result_totext(result));
|
||||
}
|
||||
return (rval);
|
||||
@@ -757,8 +741,10 @@ test_dns_name_fullcompare(char *name1, char *name2,
|
||||
int nfails;
|
||||
int order;
|
||||
unsigned int nlabels;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
isc_result_t dns_result;
|
||||
dns_namereln_t dns_reln;
|
||||
|
||||
@@ -769,11 +755,16 @@ test_dns_name_fullcompare(char *name1, char *name2,
|
||||
t_info("testing names %s and %s for relation %s\n", name1, name2,
|
||||
dns_namereln_to_text(exp_dns_reln));
|
||||
|
||||
dns_result = dname_from_tname(name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, name1, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_reln = dns_name_fullcompare(&dns_name1, &dns_name2,
|
||||
dns_reln = dns_name_fullcompare(dns_name1, dns_name2,
|
||||
&order, &nlabels);
|
||||
|
||||
if (dns_reln != exp_dns_reln) {
|
||||
@@ -805,11 +796,11 @@ test_dns_name_fullcompare(char *name1, char *name2,
|
||||
else
|
||||
result = T_FAIL;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
|
||||
@@ -898,8 +889,10 @@ test_dns_name_compare(char *name1, char *name2, int exp_order) {
|
||||
int result;
|
||||
int order;
|
||||
isc_result_t dns_result;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
@@ -907,11 +900,16 @@ test_dns_name_compare(char *name1, char *name2, int exp_order) {
|
||||
exp_order == 0 ? "==": (exp_order == -1 ? "<" : ">"),
|
||||
name2);
|
||||
|
||||
dns_result = dname_from_tname(name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, name1, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
order = dns_name_compare(&dns_name1, &dns_name2);
|
||||
order = dns_name_compare(dns_name1, dns_name2);
|
||||
/*
|
||||
* Normalize order.
|
||||
*/
|
||||
@@ -926,11 +924,11 @@ test_dns_name_compare(char *name1, char *name2, int exp_order) {
|
||||
} else
|
||||
result = T_PASS;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
|
||||
@@ -1001,19 +999,26 @@ test_dns_name_rdatacompare(char *name1, char *name2, int exp_order) {
|
||||
int result;
|
||||
int order;
|
||||
isc_result_t dns_result;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
t_info("testing %s %s %s\n", name1,
|
||||
exp_order == 0 ? "==": (exp_order == -1 ? "<" : ">"), name2);
|
||||
|
||||
dns_result = dname_from_tname(name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, name1, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
order = dns_name_rdatacompare(&dns_name1, &dns_name2);
|
||||
order = dns_name_rdatacompare(dns_name1, dns_name2);
|
||||
/*
|
||||
* Normalize order.
|
||||
*/
|
||||
@@ -1028,11 +1033,11 @@ test_dns_name_rdatacompare(char *name1, char *name2, int exp_order) {
|
||||
} else
|
||||
result = T_PASS;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
|
||||
@@ -1104,19 +1109,26 @@ test_dns_name_issubdomain(char *name1, char *name2, isc_boolean_t exp_rval) {
|
||||
int result;
|
||||
isc_boolean_t rval;
|
||||
isc_result_t dns_result;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
t_info("testing %s %s a subdomain of %s\n", name1,
|
||||
exp_rval == 0 ? "is not" : "is", name2);
|
||||
|
||||
dns_result = dname_from_tname(name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, name1, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
rval = dns_name_issubdomain(&dns_name1, &dns_name2);
|
||||
rval = dns_name_issubdomain(dns_name1, dns_name2);
|
||||
|
||||
if (rval != exp_rval) {
|
||||
t_info("expected return value of %s, got %s\n",
|
||||
@@ -1126,11 +1138,11 @@ test_dns_name_issubdomain(char *name1, char *name2, isc_boolean_t exp_rval) {
|
||||
} else
|
||||
result = T_PASS;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
|
||||
@@ -1197,15 +1209,18 @@ test_dns_name_countlabels(char *test_name, unsigned int exp_nlabels) {
|
||||
int result;
|
||||
unsigned int nlabels;
|
||||
isc_result_t dns_result;
|
||||
dns_name_t dns_name;
|
||||
dns_fixedname_t fixed;
|
||||
dns_name_t *dns_name;
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
t_info("testing %s\n", test_name);
|
||||
|
||||
dns_result = dname_from_tname(test_name, &dns_name);
|
||||
dns_fixedname_init(&fixed);
|
||||
dns_name = dns_fixedname_name(&fixed);
|
||||
dns_result = dns_name_fromstring2(dns_name, test_name, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
nlabels = dns_name_countlabels(&dns_name);
|
||||
nlabels = dns_name_countlabels(dns_name);
|
||||
|
||||
if (nlabels != exp_nlabels) {
|
||||
t_info("expected %d, got %d\n", exp_nlabels, nlabels);
|
||||
@@ -1213,7 +1228,7 @@ test_dns_name_countlabels(char *test_name, unsigned int exp_nlabels) {
|
||||
} else
|
||||
result = T_PASS;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(dns_result));
|
||||
}
|
||||
|
||||
@@ -1287,8 +1302,10 @@ test_dns_name_getlabel(char *test_name1, int label1_pos, char *test_name2,
|
||||
unsigned int cnt;
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
dns_label_t dns_label1;
|
||||
dns_label_t dns_label2;
|
||||
isc_result_t dns_result;
|
||||
@@ -1298,12 +1315,18 @@ test_dns_name_getlabel(char *test_name1, int label1_pos, char *test_name2,
|
||||
|
||||
t_info("testing with %s and %s\n", test_name1, test_name2);
|
||||
|
||||
dns_result = dname_from_tname(test_name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, test_name1, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(test_name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, test_name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_name_getlabel(&dns_name1, label1_pos, &dns_label1);
|
||||
dns_name_getlabel(&dns_name2, label2_pos, &dns_label2);
|
||||
dns_name_getlabel(dns_name1, label1_pos, &dns_label1);
|
||||
dns_name_getlabel(dns_name2, label2_pos, &dns_label2);
|
||||
if (dns_label1.length != dns_label2.length) {
|
||||
t_info("label lengths differ\n");
|
||||
++nfails;
|
||||
@@ -1322,11 +1345,11 @@ test_dns_name_getlabel(char *test_name1, int label1_pos, char *test_name2,
|
||||
else
|
||||
result = T_FAIL;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s",
|
||||
t_info("dns_name_fromstring2 failed, result == %s",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s",
|
||||
t_info("dns_name_fromstring2 failed, result == %s",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
return (result);
|
||||
@@ -1400,8 +1423,10 @@ test_dns_name_getlabelsequence(char *test_name1, int label1_start,
|
||||
unsigned int cnt;
|
||||
unsigned char *p;
|
||||
unsigned char *q;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t *dns_name2;
|
||||
dns_name_t dns_targetname1;
|
||||
dns_name_t dns_targetname2;
|
||||
isc_result_t dns_result;
|
||||
@@ -1412,16 +1437,22 @@ test_dns_name_getlabelsequence(char *test_name1, int label1_start,
|
||||
|
||||
nfails = 0;
|
||||
result = T_UNRESOLVED;
|
||||
dns_result = dname_from_tname(test_name1, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name1, test_name1, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_result = dname_from_tname(test_name2, &dns_name2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, test_name2, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
t_info("testing %s %s\n", test_name1, test_name2);
|
||||
dns_name_init(&dns_targetname1, NULL);
|
||||
dns_name_init(&dns_targetname2, NULL);
|
||||
dns_name_getlabelsequence(&dns_name1, label1_start,
|
||||
dns_name_getlabelsequence(dns_name1, label1_start,
|
||||
range, &dns_targetname1);
|
||||
dns_name_getlabelsequence(&dns_name2, label2_start,
|
||||
dns_name_getlabelsequence(dns_name2, label2_start,
|
||||
range, &dns_targetname2);
|
||||
|
||||
/*
|
||||
@@ -1452,11 +1483,11 @@ test_dns_name_getlabelsequence(char *test_name1, int label1_start,
|
||||
else
|
||||
result = T_FAIL;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s",
|
||||
t_info("dns_name_fromstring2 failed, result == %s",
|
||||
dns_result_totext(dns_result));
|
||||
}
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s",
|
||||
t_info("dns_name_fromstring2 failed, result == %s",
|
||||
dns_result_totext(dns_result));
|
||||
}
|
||||
return (result);
|
||||
@@ -1523,7 +1554,8 @@ test_dns_name_fromregion(char *test_name) {
|
||||
int order;
|
||||
unsigned int nlabels;
|
||||
isc_result_t dns_result;
|
||||
dns_name_t dns_name1;
|
||||
dns_fixedname_t fixed1;
|
||||
dns_name_t *dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_namereln_t dns_namereln;
|
||||
isc_region_t region;
|
||||
@@ -1532,21 +1564,23 @@ test_dns_name_fromregion(char *test_name) {
|
||||
|
||||
t_info("testing %s\n", test_name);
|
||||
|
||||
dns_result = dname_from_tname(test_name, &dns_name1);
|
||||
dns_fixedname_init(&fixed1);
|
||||
dns_name1 = dns_fixedname_name(&fixed1);
|
||||
dns_result = dns_name_fromstring2(dns_name1, test_name, NULL, 0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
|
||||
dns_name_toregion(&dns_name1, ®ion);
|
||||
dns_name_toregion(dns_name1, ®ion);
|
||||
|
||||
dns_name_init(&dns_name2, NULL);
|
||||
dns_name_fromregion(&dns_name2, ®ion);
|
||||
dns_namereln = dns_name_fullcompare(&dns_name1, &dns_name2,
|
||||
dns_namereln = dns_name_fullcompare(dns_name1, &dns_name2,
|
||||
&order, &nlabels);
|
||||
if (dns_namereln == dns_namereln_equal)
|
||||
result = T_PASS;
|
||||
else
|
||||
result = T_FAIL;
|
||||
} else {
|
||||
t_info("dname_from_tname failed, result == %s\n",
|
||||
t_info("dns_name_fromstring2 failed, result == %s\n",
|
||||
dns_result_totext(result));
|
||||
}
|
||||
return (result);
|
||||
@@ -1975,14 +2009,18 @@ test_dns_name_fromwire(char *datafile_name, int testname_offset, int downcase,
|
||||
char buf2[BUFLEN];
|
||||
isc_buffer_t iscbuf1;
|
||||
isc_buffer_t iscbuf2;
|
||||
dns_fixedname_t fixed2;
|
||||
dns_name_t dns_name1;
|
||||
dns_name_t dns_name2;
|
||||
dns_name_t *dns_name2;
|
||||
isc_result_t dns_result;
|
||||
dns_namereln_t dns_namereln;
|
||||
dns_decompress_t dctx;
|
||||
|
||||
t_info("testing using %s\n", datafile_name);
|
||||
len = getmsg(datafile_name, buf1, BIGBUFLEN, &iscbuf1);
|
||||
isc_buffer_init(&iscbuf1, buf1, sizeof(buf1));
|
||||
len = getmsg(datafile_name, &iscbuf1);
|
||||
if (len == 0)
|
||||
return (T_FAIL);
|
||||
|
||||
isc_buffer_setactive(&iscbuf1, len);
|
||||
iscbuf1.current = testname_offset;
|
||||
@@ -1997,10 +2035,13 @@ test_dns_name_fromwire(char *datafile_name, int testname_offset, int downcase,
|
||||
|
||||
if ((dns_result == exp_result) && (exp_result == ISC_R_SUCCESS)) {
|
||||
|
||||
dns_result = dname_from_tname(exp_name, &dns_name2);
|
||||
dns_fixedname_init(&fixed2);
|
||||
dns_name2 = dns_fixedname_name(&fixed2);
|
||||
dns_result = dns_name_fromstring2(dns_name2, exp_name, NULL,
|
||||
0, NULL);
|
||||
if (dns_result == ISC_R_SUCCESS) {
|
||||
dns_namereln = dns_name_fullcompare(&dns_name1,
|
||||
&dns_name2,
|
||||
dns_name2,
|
||||
&order, &nlabels);
|
||||
if (dns_namereln != dns_namereln_equal) {
|
||||
t_info("dns_name_fullcompare returned %s\n",
|
||||
@@ -2155,7 +2196,8 @@ static const char *a52 =
|
||||
|
||||
static int
|
||||
test_dns_name_towire(char *testname, unsigned int dc_method, char *exp_data,
|
||||
int exp_data_len, isc_result_t exp_result, size_t buflen)
|
||||
size_t exp_data_len, isc_result_t exp_result,
|
||||
size_t buflen)
|
||||
{
|
||||
int result;
|
||||
int val;
|
||||
@@ -2225,6 +2267,7 @@ t_dns_name_towire_x(const char *testfile, size_t buflen) {
|
||||
int result;
|
||||
unsigned int dc_method;
|
||||
isc_result_t exp_result;
|
||||
size_t exp_data_len;
|
||||
char *p;
|
||||
FILE *fp;
|
||||
|
||||
@@ -2254,11 +2297,12 @@ t_dns_name_towire_x(const char *testfile, size_t buflen) {
|
||||
|
||||
dc_method = t_dc_method_fromtext(Tokens[3]);
|
||||
exp_result = t_dns_result_fromtext(Tokens[4]);
|
||||
exp_data_len = strtoul(Tokens[3], NULL, 10);
|
||||
|
||||
result = test_dns_name_towire(Tokens[0],
|
||||
dc_method,
|
||||
Tokens[2],
|
||||
atoi(Tokens[3]),
|
||||
exp_data_len,
|
||||
exp_result,
|
||||
buflen);
|
||||
} else {
|
||||
|
||||
@@ -1056,6 +1056,12 @@ t_dns_rbtnodechain_first(char *dbfile, char *expected_firstname,
|
||||
dns_fixedname_t dns_origin;
|
||||
isc_result_t expected_result;
|
||||
|
||||
REQUIRE(dbfile != NULL);
|
||||
REQUIRE(expected_firstname != NULL);
|
||||
REQUIRE(expected_firstorigin != NULL);
|
||||
REQUIRE(expected_nextname != NULL);
|
||||
REQUIRE(expected_nextorigin != NULL);
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
nfails = 0;
|
||||
@@ -1247,6 +1253,12 @@ t_dns_rbtnodechain_last(char *dbfile, char *expected_lastname,
|
||||
dns_fixedname_t dns_origin;
|
||||
isc_result_t expected_result;
|
||||
|
||||
REQUIRE(dbfile != NULL);
|
||||
REQUIRE(expected_lastname != NULL);
|
||||
REQUIRE(expected_lastorigin != NULL);
|
||||
REQUIRE(expected_prevname != NULL);
|
||||
REQUIRE(expected_prevorigin != NULL);
|
||||
|
||||
result = T_UNRESOLVED;
|
||||
|
||||
nfails = 0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
+108
-95
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004-2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1998-2003 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -15,8 +15,6 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -55,19 +53,19 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
|
||||
switch (rdata->type) {
|
||||
case dns_rdatatype_a6: {
|
||||
dns_rdata_in_a6_t in_a6;
|
||||
static dns_rdata_in_a6_t in_a6;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_a6, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_a: {
|
||||
switch (rdata->rdclass) {
|
||||
case dns_rdataclass_hs: {
|
||||
dns_rdata_hs_a_t hs_a;
|
||||
static dns_rdata_hs_a_t hs_a;
|
||||
result = dns_rdata_tostruct(rdata, sp = &hs_a, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdataclass_in: {
|
||||
dns_rdata_in_a_t in_a;
|
||||
static dns_rdata_in_a_t in_a;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_a, NULL);
|
||||
break;
|
||||
}
|
||||
@@ -78,12 +76,12 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_aaaa: {
|
||||
dns_rdata_in_aaaa_t in_aaaa;
|
||||
static dns_rdata_in_aaaa_t in_aaaa;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_aaaa, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_afsdb: {
|
||||
dns_rdata_afsdb_t afsdb;
|
||||
static dns_rdata_afsdb_t afsdb;
|
||||
result = dns_rdata_tostruct(rdata, sp = &afsdb, NULL);
|
||||
break;
|
||||
}
|
||||
@@ -94,7 +92,7 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
case dns_rdatatype_apl: {
|
||||
switch (rdata->rdclass) {
|
||||
case dns_rdataclass_in: {
|
||||
dns_rdata_in_apl_t in_apl;
|
||||
static dns_rdata_in_apl_t in_apl;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_apl, NULL);
|
||||
break;
|
||||
}
|
||||
@@ -105,202 +103,207 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_cert: {
|
||||
dns_rdata_cert_t cert;
|
||||
static dns_rdata_cert_t cert;
|
||||
result = dns_rdata_tostruct(rdata, sp = &cert, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_cname: {
|
||||
dns_rdata_cname_t cname;
|
||||
static dns_rdata_cname_t cname;
|
||||
result = dns_rdata_tostruct(rdata, sp = &cname, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_dname: {
|
||||
dns_rdata_dname_t dname;
|
||||
static dns_rdata_dname_t dname;
|
||||
result = dns_rdata_tostruct(rdata, sp = &dname, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_gpos: {
|
||||
dns_rdata_gpos_t gpos;
|
||||
static dns_rdata_gpos_t gpos;
|
||||
result = dns_rdata_tostruct(rdata, sp = &gpos, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_hinfo: {
|
||||
dns_rdata_hinfo_t hinfo;
|
||||
static dns_rdata_hinfo_t hinfo;
|
||||
result = dns_rdata_tostruct(rdata, sp = &hinfo, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_isdn: {
|
||||
dns_rdata_isdn_t isdn;
|
||||
static dns_rdata_isdn_t isdn;
|
||||
result = dns_rdata_tostruct(rdata, sp = &isdn, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_key: {
|
||||
dns_rdata_key_t key;
|
||||
static dns_rdata_key_t key;
|
||||
result = dns_rdata_tostruct(rdata, sp = &key, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_kx: {
|
||||
dns_rdata_in_kx_t in_kx;
|
||||
static dns_rdata_in_kx_t in_kx;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_kx, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_loc: {
|
||||
dns_rdata_loc_t loc;
|
||||
static dns_rdata_loc_t loc;
|
||||
result = dns_rdata_tostruct(rdata, sp = &loc, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mb: {
|
||||
dns_rdata_mb_t mb;
|
||||
static dns_rdata_mb_t mb;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mb, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_md: {
|
||||
dns_rdata_md_t md;
|
||||
static dns_rdata_md_t md;
|
||||
result = dns_rdata_tostruct(rdata, sp = &md, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mf: {
|
||||
dns_rdata_mf_t mf;
|
||||
static dns_rdata_mf_t mf;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mf, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mg: {
|
||||
dns_rdata_mg_t mg;
|
||||
static dns_rdata_mg_t mg;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mg, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_minfo: {
|
||||
dns_rdata_minfo_t minfo;
|
||||
static dns_rdata_minfo_t minfo;
|
||||
result = dns_rdata_tostruct(rdata, sp = &minfo, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mr: {
|
||||
dns_rdata_mr_t mr;
|
||||
static dns_rdata_mr_t mr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mr, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mx: {
|
||||
dns_rdata_mx_t mx;
|
||||
static dns_rdata_mx_t mx;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mx, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_naptr: {
|
||||
dns_rdata_naptr_t naptr;
|
||||
static dns_rdata_naptr_t naptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &naptr, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_ns: {
|
||||
dns_rdata_ns_t ns;
|
||||
static dns_rdata_ns_t ns;
|
||||
result = dns_rdata_tostruct(rdata, sp = &ns, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsap: {
|
||||
dns_rdata_in_nsap_t in_nsap;
|
||||
static dns_rdata_in_nsap_t in_nsap;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_nsap, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsap_ptr: {
|
||||
dns_rdata_in_nsap_ptr_t in_nsap_ptr;
|
||||
static dns_rdata_in_nsap_ptr_t in_nsap_ptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_nsap_ptr, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_null: {
|
||||
dns_rdata_null_t null;
|
||||
static dns_rdata_null_t null;
|
||||
result = dns_rdata_tostruct(rdata, sp = &null, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nxt: {
|
||||
dns_rdata_nxt_t nxt;
|
||||
static dns_rdata_nxt_t nxt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &nxt, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_opt: {
|
||||
dns_rdata_opt_t opt;
|
||||
static dns_rdata_opt_t opt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &opt, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_ptr: {
|
||||
dns_rdata_ptr_t ptr;
|
||||
static dns_rdata_ptr_t ptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &ptr, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_px: {
|
||||
dns_rdata_in_px_t in_px;
|
||||
static dns_rdata_in_px_t in_px;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_px, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rp: {
|
||||
dns_rdata_rp_t rp;
|
||||
static dns_rdata_rp_t rp;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rp, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rt: {
|
||||
dns_rdata_rt_t rt;
|
||||
static dns_rdata_rt_t rt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rt, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_sig: {
|
||||
dns_rdata_sig_t sig;
|
||||
static dns_rdata_sig_t sig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &sig, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_soa: {
|
||||
dns_rdata_soa_t soa;
|
||||
static dns_rdata_soa_t soa;
|
||||
result = dns_rdata_tostruct(rdata, sp = &soa, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_srv: {
|
||||
dns_rdata_in_srv_t in_srv;
|
||||
static dns_rdata_in_srv_t in_srv;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_srv, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_tkey: {
|
||||
dns_rdata_tkey_t tkey;
|
||||
static dns_rdata_tkey_t tkey;
|
||||
result = dns_rdata_tostruct(rdata, sp = &tkey, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_tsig: {
|
||||
dns_rdata_any_tsig_t tsig;
|
||||
static dns_rdata_any_tsig_t tsig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &tsig, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_txt: {
|
||||
dns_rdata_txt_t txt;
|
||||
static dns_rdata_txt_t txt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &txt, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_spf: {
|
||||
dns_rdata_spf_t spf;
|
||||
static dns_rdata_spf_t spf;
|
||||
result = dns_rdata_tostruct(rdata, sp = &spf, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_unspec: {
|
||||
dns_rdata_unspec_t unspec;
|
||||
static dns_rdata_unspec_t unspec;
|
||||
result = dns_rdata_tostruct(rdata, sp = &unspec, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_uri: {
|
||||
dns_rdata_uri_t uri;
|
||||
result = dns_rdata_tostruct(rdata, sp = &uri, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_wks: {
|
||||
dns_rdata_in_wks_t in_wks;
|
||||
static dns_rdata_in_wks_t in_wks;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_wks, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_x25: {
|
||||
dns_rdata_x25_t x25;
|
||||
static dns_rdata_x25_t x25;
|
||||
result = dns_rdata_tostruct(rdata, sp = &x25, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsec: {
|
||||
dns_rdata_nsec_t nsec;
|
||||
static dns_rdata_nsec_t nsec;
|
||||
result = dns_rdata_tostruct(rdata, sp = &nsec, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rrsig: {
|
||||
dns_rdata_rrsig_t rrsig;
|
||||
static dns_rdata_rrsig_t rrsig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rrsig, NULL);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_dnskey: {
|
||||
dns_rdata_dnskey_t dnskey;
|
||||
static dns_rdata_dnskey_t dnskey;
|
||||
result = dns_rdata_tostruct(rdata, sp = &dnskey, NULL);
|
||||
break;
|
||||
}
|
||||
@@ -317,19 +320,19 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
|
||||
switch (rdata->type) {
|
||||
case dns_rdatatype_a6: {
|
||||
dns_rdata_in_a6_t in_a6;
|
||||
static dns_rdata_in_a6_t in_a6;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_a6, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_a: {
|
||||
switch (rdata->rdclass) {
|
||||
case dns_rdataclass_hs: {
|
||||
dns_rdata_hs_a_t hs_a;
|
||||
static dns_rdata_hs_a_t hs_a;
|
||||
result = dns_rdata_tostruct(rdata, sp = &hs_a, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdataclass_in: {
|
||||
dns_rdata_in_a_t in_a;
|
||||
static dns_rdata_in_a_t in_a;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_a, mctx);
|
||||
break;
|
||||
}
|
||||
@@ -340,12 +343,12 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_aaaa: {
|
||||
dns_rdata_in_aaaa_t in_aaaa;
|
||||
static dns_rdata_in_aaaa_t in_aaaa;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_aaaa, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_afsdb: {
|
||||
dns_rdata_afsdb_t afsdb;
|
||||
static dns_rdata_afsdb_t afsdb;
|
||||
result = dns_rdata_tostruct(rdata, sp = &afsdb, mctx);
|
||||
break;
|
||||
}
|
||||
@@ -356,7 +359,7 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
case dns_rdatatype_apl: {
|
||||
switch (rdata->rdclass) {
|
||||
case dns_rdataclass_in: {
|
||||
dns_rdata_in_apl_t in_apl;
|
||||
static dns_rdata_in_apl_t in_apl;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_apl, mctx);
|
||||
break;
|
||||
}
|
||||
@@ -367,202 +370,207 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_cert: {
|
||||
dns_rdata_cert_t cert;
|
||||
static dns_rdata_cert_t cert;
|
||||
result = dns_rdata_tostruct(rdata, sp = &cert, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_cname: {
|
||||
dns_rdata_cname_t cname;
|
||||
static dns_rdata_cname_t cname;
|
||||
result = dns_rdata_tostruct(rdata, sp = &cname, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_dname: {
|
||||
dns_rdata_dname_t dname;
|
||||
static dns_rdata_dname_t dname;
|
||||
result = dns_rdata_tostruct(rdata, sp = &dname, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_gpos: {
|
||||
dns_rdata_gpos_t gpos;
|
||||
static dns_rdata_gpos_t gpos;
|
||||
result = dns_rdata_tostruct(rdata, sp = &gpos, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_hinfo: {
|
||||
dns_rdata_hinfo_t hinfo;
|
||||
static dns_rdata_hinfo_t hinfo;
|
||||
result = dns_rdata_tostruct(rdata, sp = &hinfo, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_isdn: {
|
||||
dns_rdata_isdn_t isdn;
|
||||
static dns_rdata_isdn_t isdn;
|
||||
result = dns_rdata_tostruct(rdata, sp = &isdn, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_key: {
|
||||
dns_rdata_key_t key;
|
||||
static dns_rdata_key_t key;
|
||||
result = dns_rdata_tostruct(rdata, sp = &key, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_kx: {
|
||||
dns_rdata_in_kx_t in_kx;
|
||||
static dns_rdata_in_kx_t in_kx;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_kx, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_loc: {
|
||||
dns_rdata_loc_t loc;
|
||||
static dns_rdata_loc_t loc;
|
||||
result = dns_rdata_tostruct(rdata, sp = &loc, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mb: {
|
||||
dns_rdata_mb_t mb;
|
||||
static dns_rdata_mb_t mb;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mb, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_md: {
|
||||
dns_rdata_md_t md;
|
||||
static dns_rdata_md_t md;
|
||||
result = dns_rdata_tostruct(rdata, sp = &md, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mf: {
|
||||
dns_rdata_mf_t mf;
|
||||
static dns_rdata_mf_t mf;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mf, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mg: {
|
||||
dns_rdata_mg_t mg;
|
||||
static dns_rdata_mg_t mg;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mg, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_minfo: {
|
||||
dns_rdata_minfo_t minfo;
|
||||
static dns_rdata_minfo_t minfo;
|
||||
result = dns_rdata_tostruct(rdata, sp = &minfo, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mr: {
|
||||
dns_rdata_mr_t mr;
|
||||
static dns_rdata_mr_t mr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mr, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_mx: {
|
||||
dns_rdata_mx_t mx;
|
||||
static dns_rdata_mx_t mx;
|
||||
result = dns_rdata_tostruct(rdata, sp = &mx, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_naptr: {
|
||||
dns_rdata_naptr_t naptr;
|
||||
static dns_rdata_naptr_t naptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &naptr, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_ns: {
|
||||
dns_rdata_ns_t ns;
|
||||
static dns_rdata_ns_t ns;
|
||||
result = dns_rdata_tostruct(rdata, sp = &ns, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsap: {
|
||||
dns_rdata_in_nsap_t in_nsap;
|
||||
static dns_rdata_in_nsap_t in_nsap;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_nsap, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsap_ptr: {
|
||||
dns_rdata_in_nsap_ptr_t in_nsap_ptr;
|
||||
static dns_rdata_in_nsap_ptr_t in_nsap_ptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_nsap_ptr, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_null: {
|
||||
dns_rdata_null_t null;
|
||||
static dns_rdata_null_t null;
|
||||
result = dns_rdata_tostruct(rdata, sp = &null, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nxt: {
|
||||
dns_rdata_nxt_t nxt;
|
||||
static dns_rdata_nxt_t nxt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &nxt, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_opt: {
|
||||
dns_rdata_opt_t opt;
|
||||
static dns_rdata_opt_t opt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &opt, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_ptr: {
|
||||
dns_rdata_ptr_t ptr;
|
||||
static dns_rdata_ptr_t ptr;
|
||||
result = dns_rdata_tostruct(rdata, sp = &ptr, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_px: {
|
||||
dns_rdata_in_px_t in_px;
|
||||
static dns_rdata_in_px_t in_px;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_px, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rp: {
|
||||
dns_rdata_rp_t rp;
|
||||
static dns_rdata_rp_t rp;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rp, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rt: {
|
||||
dns_rdata_rt_t rt;
|
||||
static dns_rdata_rt_t rt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rt, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_sig: {
|
||||
dns_rdata_sig_t sig;
|
||||
static dns_rdata_sig_t sig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &sig, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_soa: {
|
||||
dns_rdata_soa_t soa;
|
||||
static dns_rdata_soa_t soa;
|
||||
result = dns_rdata_tostruct(rdata, sp = &soa, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_srv: {
|
||||
dns_rdata_in_srv_t in_srv;
|
||||
static dns_rdata_in_srv_t in_srv;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_srv, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_tkey: {
|
||||
dns_rdata_tkey_t tkey;
|
||||
static dns_rdata_tkey_t tkey;
|
||||
result = dns_rdata_tostruct(rdata, sp = &tkey, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_tsig: {
|
||||
dns_rdata_any_tsig_t tsig;
|
||||
static dns_rdata_any_tsig_t tsig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &tsig, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_txt: {
|
||||
dns_rdata_txt_t txt;
|
||||
static dns_rdata_txt_t txt;
|
||||
result = dns_rdata_tostruct(rdata, sp = &txt, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_spf: {
|
||||
dns_rdata_spf_t spf;
|
||||
static dns_rdata_spf_t spf;
|
||||
result = dns_rdata_tostruct(rdata, sp = &spf, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_unspec: {
|
||||
dns_rdata_unspec_t unspec;
|
||||
static dns_rdata_unspec_t unspec;
|
||||
result = dns_rdata_tostruct(rdata, sp = &unspec, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_uri: {
|
||||
dns_rdata_uri_t uri;
|
||||
result = dns_rdata_tostruct(rdata, sp = &uri, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_wks: {
|
||||
dns_rdata_in_wks_t in_wks;
|
||||
static dns_rdata_in_wks_t in_wks;
|
||||
result = dns_rdata_tostruct(rdata, sp = &in_wks, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_x25: {
|
||||
dns_rdata_x25_t x25;
|
||||
static dns_rdata_x25_t x25;
|
||||
result = dns_rdata_tostruct(rdata, sp = &x25, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_nsec: {
|
||||
dns_rdata_nsec_t nsec;
|
||||
static dns_rdata_nsec_t nsec;
|
||||
result = dns_rdata_tostruct(rdata, sp = &nsec, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_rrsig: {
|
||||
dns_rdata_rrsig_t rrsig;
|
||||
static dns_rdata_rrsig_t rrsig;
|
||||
result = dns_rdata_tostruct(rdata, sp = &rrsig, mctx);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_dnskey: {
|
||||
dns_rdata_dnskey_t dnskey;
|
||||
static dns_rdata_dnskey_t dnskey;
|
||||
result = dns_rdata_tostruct(rdata, sp = &dnskey, mctx);
|
||||
break;
|
||||
}
|
||||
@@ -833,6 +841,11 @@ viastruct(dns_rdata_t *rdata, isc_mem_t *mctx,
|
||||
result = dns_rdata_fromstruct(rdata2, rdc, rdt, &unspec, b);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_uri: {
|
||||
dns_rdata_uri_t uri;
|
||||
result = dns_rdata_fromstruct(rdata2, rdc, rdt, &uri, b);
|
||||
break;
|
||||
}
|
||||
case dns_rdatatype_wks: {
|
||||
dns_rdata_in_wks_t in_wks;
|
||||
result = dns_rdata_fromstruct(rdata2, rdc, rdt, &in_wks, b);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1998-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -174,9 +174,13 @@ main(int argc, char *argv[]) {
|
||||
|
||||
RUNTIME_CHECK(isc_app_start() == ISC_R_SUCCESS);
|
||||
|
||||
if (argc > 1)
|
||||
if (argc > 1) {
|
||||
workers = atoi(argv[1]);
|
||||
else
|
||||
if (workers < 1)
|
||||
workers = 1;
|
||||
if (workers > 8192)
|
||||
workers = 8192;
|
||||
} else
|
||||
workers = 2;
|
||||
printf("%d workers\n", workers);
|
||||
|
||||
|
||||
@@ -262,7 +262,7 @@ main(int argc, char *argv[]) {
|
||||
|
||||
dns_fixedname_init(&fname);
|
||||
name = dns_fixedname_name(&fname);
|
||||
isc_buffer_init(&b, "child.example.", strlen("child.example."));
|
||||
isc_buffer_constinit(&b, "child.example.", strlen("child.example."));
|
||||
isc_buffer_add(&b, strlen("child.example."));
|
||||
result = dns_name_fromtext(name, &b, dns_rootname, ISC_FALSE, NULL);
|
||||
CHECK("dns_name_fromtext", result);
|
||||
|
||||
+10
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2004, 2007, 2008, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 1998-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
@@ -205,8 +205,9 @@ my_listen(isc_task_t *task, isc_event_t *event) {
|
||||
/*
|
||||
* Queue another listen on this socket.
|
||||
*/
|
||||
isc_socket_accept(event->ev_sender, task, my_listen,
|
||||
event->ev_arg);
|
||||
RUNTIME_CHECK(isc_socket_accept(event->ev_sender, task,
|
||||
my_listen, event->ev_arg)
|
||||
== ISC_R_SUCCESS);
|
||||
|
||||
region.base = isc_mem_get(mctx, 20);
|
||||
region.length = 20;
|
||||
@@ -262,9 +263,13 @@ main(int argc, char *argv[]) {
|
||||
isc_result_t result;
|
||||
int pf;
|
||||
|
||||
if (argc > 1)
|
||||
if (argc > 1) {
|
||||
workers = atoi(argv[1]);
|
||||
else
|
||||
if (workers < 1)
|
||||
workers = 1;
|
||||
if (workers > 8192)
|
||||
workers = 8192;
|
||||
} else
|
||||
workers = 2;
|
||||
printf("%d workers\n", workers);
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user