Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bb68b2cb7 | ||
|
|
6611c18046 | ||
|
|
fde8269185 | ||
|
|
53a96ddd53 | ||
|
|
e0bffa6517 | ||
|
|
a51c70decc | ||
|
|
caa8797a00 | ||
|
|
73d7583d98 | ||
|
|
50b0a27f48 | ||
|
|
97cee754a9 | ||
|
|
8db1db6295 | ||
|
|
c42af00541 | ||
|
|
08102bb28c | ||
|
|
9ae90732df | ||
|
|
c1567cb58c | ||
|
|
f3222d48cc | ||
|
|
e95cc59f90 | ||
|
|
64ea670052 | ||
|
|
60e9e70654 | ||
|
|
47db0efda1 | ||
|
|
8839b6acbf | ||
|
|
db462c020e | ||
|
|
32dd66cc5e | ||
|
|
6c62c34a5b | ||
|
|
ecb55f9962 | ||
|
|
c6d29fbd5f | ||
|
|
51693f0bd9 | ||
|
|
18b7133679 | ||
|
|
23e4260821 | ||
|
|
45ddf396e9 | ||
|
|
4ca54c8f3b | ||
|
|
9ecd36e0de | ||
|
|
6383d77950 | ||
|
|
b39e8e9c00 | ||
|
|
1ed8794070 | ||
|
|
5cd1e83a84 | ||
|
|
a9f5be4348 | ||
|
|
41f154b98e | ||
|
|
94b4f2728e | ||
|
|
f29583dca7 | ||
|
|
f1457d6c8c | ||
|
|
cc0a7affe9 | ||
|
|
ec02e04ead | ||
|
|
8fb0f1fa42 | ||
|
|
a20b2c5f53 | ||
|
|
f5cb884c84 | ||
|
|
206c9e7f5d | ||
|
|
0062c1ddfe | ||
|
|
07eee0ceda | ||
|
|
35ae209f35 | ||
|
|
360a56a4a4 | ||
|
|
aa75c92b6b | ||
|
|
bfe7da9c6b | ||
|
|
323de351b3 | ||
|
|
6b345bc209 | ||
|
|
d3fafb3213 | ||
|
|
6fedbb60b2 | ||
|
|
0e84be2c52 | ||
|
|
c363d0fed8 | ||
|
|
f5e4a39e62 | ||
|
|
e227c896a2 | ||
|
|
0f0e3ffdc1 | ||
|
|
b8c4c3aade | ||
|
|
c2f1d683c9 | ||
|
|
fa85f47357 | ||
|
|
efd263562b | ||
|
|
8a044e464b | ||
|
|
d7979cbb6c | ||
|
|
5295debde0 | ||
|
|
3e69f0cd72 | ||
|
|
c592760e76 | ||
|
|
b172c78a9a | ||
|
|
f64f89606f | ||
|
|
3f25cb17e3 | ||
|
|
e2352fb8cd | ||
|
|
21b4f15c60 | ||
|
|
db18d1997e | ||
|
|
b6279d0b4b | ||
|
|
417cddb8c1 | ||
|
|
42e74b77f5 | ||
|
|
f27e47b5ff | ||
|
|
2a091ec932 | ||
|
|
9445e10377 | ||
|
|
c3e0aed7da | ||
|
|
f6bd49ffd0 | ||
|
|
b938d2af61 | ||
|
|
fff1dbdf55 | ||
|
|
69e7554caa | ||
|
|
b2ca6fd3a8 | ||
|
|
99df95697c | ||
|
|
d778d61208 | ||
|
|
d0bb045c79 | ||
|
|
3fa36cb79d | ||
|
|
ab92fa0aca | ||
|
|
7e715a0fc5 | ||
|
|
3a7c194000 | ||
|
|
8a4f85e204 | ||
|
|
622a5774e6 | ||
|
|
feed58ca64 | ||
|
|
eab966fdb3 | ||
|
|
c45ca0b839 | ||
|
|
5eeb5ddc67 | ||
|
|
4c7c397275 | ||
|
|
05b8c412f8 | ||
|
|
023dd2cfe0 | ||
|
|
413463f215 | ||
|
|
bc1268ea83 | ||
|
|
d8f67a1d88 | ||
|
|
b6e20238b6 | ||
|
|
b7f8bca629 | ||
|
|
8bb8f9c6c8 | ||
|
|
de619d1e81 | ||
|
|
e6450a5811 | ||
|
|
d8b140ce00 | ||
|
|
5804bf8118 | ||
|
|
e47a6956a1 | ||
|
|
d83346263d | ||
|
|
93aba2cb04 | ||
|
|
7366e9c47d | ||
|
|
a818127616 | ||
|
|
6e574a8b30 | ||
|
|
a7859ded82 | ||
|
|
d7224e6672 | ||
|
|
2adafac25f | ||
|
|
057fc2ec3f | ||
|
|
80670d2633 | ||
|
|
6430d5b4ef | ||
|
|
473ca0bf8c | ||
|
|
48b0f5ff87 | ||
|
|
0b809e3e23 | ||
|
|
cde7dfea4c | ||
|
|
915c16e8aa | ||
|
|
ec52edeff2 | ||
|
|
47af71b523 | ||
|
|
15033eed4d | ||
|
|
fca9cc33ad | ||
|
|
2ca2e1a1ce | ||
|
|
84185d19c7 | ||
|
|
16a160ea8a | ||
|
|
f132d4023a | ||
|
|
a50304c317 | ||
|
|
8ac220d5cc | ||
|
|
683f10428e | ||
|
|
022e33bfc7 | ||
|
|
3bc24a3a90 | ||
|
|
5ef63950cf | ||
|
|
4f0ddc4fc1 | ||
|
|
f5ea135066 | ||
|
|
bedd38297c | ||
|
|
2bffec87ac | ||
|
|
f9409b10fd | ||
|
|
5da1e589c2 | ||
|
|
852fa3b2e3 | ||
|
|
f10e90ebb4 | ||
|
|
8569ab045a | ||
|
|
a5c077e40c | ||
|
|
2ca556300b | ||
|
|
930ecd3756 | ||
|
|
97527fc03c | ||
|
|
c46f10e4a1 | ||
|
|
e1c2a8b9c1 | ||
|
|
73442acbe7 | ||
|
|
a4f0e6d8d6 | ||
|
|
3a8d4a316e | ||
|
|
b7064914ca | ||
|
|
6e8b843125 | ||
|
|
ef38731b6f | ||
|
|
3e67a87fc6 | ||
|
|
49f62849e5 | ||
|
|
b627356826 | ||
|
|
e9472e9f18 | ||
|
|
9cf6d43887 | ||
|
|
d073663cb4 | ||
|
|
80278e8856 | ||
|
|
7ead8b72ea | ||
|
|
cad61731f8 | ||
|
|
ac69ec1294 | ||
|
|
54469c2b22 | ||
|
|
21143c2afa | ||
|
|
f9ff782e79 | ||
|
|
6646cc41d7 | ||
|
|
ca2ebf900d | ||
|
|
e74100e3f4 | ||
|
|
90e303b114 | ||
|
|
cfbdb5e079 | ||
|
|
9c827a3997 | ||
|
|
adbb11147c | ||
|
|
6a2a7fbfd1 | ||
|
|
669e9657c7 | ||
|
|
b3ebf6f275 | ||
|
|
c58088e3a0 | ||
|
|
60c2c8814f | ||
|
|
9ab461a6ff | ||
|
|
77467267d9 | ||
|
|
b7dca533e0 | ||
|
|
0fa218cc7c | ||
|
|
13ba983cc8 | ||
|
|
3036da0109 | ||
|
|
84d8c0166d | ||
|
|
da5d1cf1b1 | ||
|
|
df1415d1e8 | ||
|
|
82107a8889 | ||
|
|
13f20ab1fa | ||
|
|
4099c201ff | ||
|
|
6cb12c44a3 | ||
|
|
66291de206 | ||
|
|
0118965e19 | ||
|
|
6c06bc591a | ||
|
|
486e212005 | ||
|
|
58d9437115 | ||
|
|
c36f45e354 | ||
|
|
b31471255d | ||
|
|
07caa8f1f9 | ||
|
|
7caf656a15 | ||
|
|
5fc932977a | ||
|
|
9cec4ca6ca | ||
|
|
19f0d00107 | ||
|
|
fefd6c28ab | ||
|
|
23fb770906 | ||
|
|
793711f26e | ||
|
|
1898837a5e | ||
|
|
9af8851b85 | ||
|
|
6124a262fa | ||
|
|
0cb27602e5 | ||
|
|
3e86caf335 | ||
|
|
2c63b97c09 | ||
|
|
21b1491aa2 | ||
|
|
0d6f70f1db | ||
|
|
11dbb6dc6b | ||
|
|
5af6873693 | ||
|
|
ff1b064f5e | ||
|
|
8e40433e34 | ||
|
|
23924b681e | ||
|
|
5157792c8d | ||
|
|
efc01ed4ad | ||
|
|
e57e32e575 | ||
|
|
708f3fd049 | ||
|
|
192cd0c440 | ||
|
|
8740bb8af0 | ||
|
|
68d9a8bddf | ||
|
|
b01b0bb771 | ||
|
|
1b1f3fca3a | ||
|
|
880723fb13 | ||
|
|
e128be1387 | ||
|
|
e23cb8a303 | ||
|
|
ee515ce130 | ||
|
|
f3cee71ee5 | ||
|
|
d25f6fac98 | ||
|
|
dd7c36abb9 | ||
|
|
8f44fd4f8d | ||
|
|
09de14b4e6 | ||
|
|
fefbb64a75 | ||
|
|
772ef7e815 | ||
|
|
41e50ece38 | ||
|
|
4de7f30751 | ||
|
|
ba1549060f | ||
|
|
5d727330e4 | ||
|
|
111e3433d2 | ||
|
|
3acadb07f4 | ||
|
|
cf300e03de | ||
|
|
439a2f855b | ||
|
|
d906600f7d | ||
|
|
06ccdb9fe7 | ||
|
|
2995f8205e | ||
|
|
093823a75c | ||
|
|
bc53aacc6e | ||
|
|
b7415ddd79 | ||
|
|
5e8f2512a6 | ||
|
|
2e4bec457d | ||
|
|
fdba3257ce | ||
|
|
1f1d36a87b | ||
|
|
9ac8796f16 | ||
|
|
700847b76c | ||
|
|
d5cc778a3e | ||
|
|
f2c49862fb | ||
|
|
242bba8991 | ||
|
|
ce78304c4f | ||
|
|
b1e7bb6aef | ||
|
|
45fe575607 | ||
|
|
02bdc23f8e | ||
|
|
b90dc3fc6a | ||
|
|
6b53351ce2 | ||
|
|
54ef87c8c9 | ||
|
|
eba289dabe | ||
|
|
4463c6f19e | ||
|
|
f59d47928e | ||
|
|
ef29912666 | ||
|
|
0cfa2fb26d | ||
|
|
06a949d2ce | ||
|
|
db080b7310 | ||
|
|
9ecb35e7d4 | ||
|
|
6785447aaf | ||
|
|
bfbea562e6 | ||
|
|
af36ecc41a | ||
|
|
fa85eab969 | ||
|
|
3a8943b2d2 | ||
|
|
790f33c772 | ||
|
|
c9114f35c0 | ||
|
|
6c8ae8b9ef | ||
|
|
0b81e99ddf | ||
|
|
bbc985b36e | ||
|
|
9dfa8979a7 | ||
|
|
5c898d95dc | ||
|
|
d486854a4a | ||
|
|
cd801a4ed8 | ||
|
|
3638017bd3 | ||
|
|
c14c7e14cd | ||
|
|
ed37e8811a | ||
|
|
892476530f | ||
|
|
eacbf2cc01 | ||
|
|
6737b6ebf0 | ||
|
|
e8c4b14cde | ||
|
|
72ad976640 | ||
|
|
8bb79fc9b9 | ||
|
|
8771fbe4a2 | ||
|
|
b541c10d04 | ||
|
|
c01237c6bc | ||
|
|
c52806164c | ||
|
|
189dcca2c9 | ||
|
|
5d7c50da51 | ||
|
|
e15532f8c6 | ||
|
|
462b062d7f | ||
|
|
e181d9899b | ||
|
|
06a316a2fe | ||
|
|
559fe25977 | ||
|
|
60213f2815 | ||
|
|
6c8abf481d | ||
|
|
1e4bfff185 | ||
|
|
91cd0f93ad | ||
|
|
b414eb4312 | ||
|
|
db1bdb20a5 | ||
|
|
f1b6872550 | ||
|
|
0797eebc66 | ||
|
|
4d1d37a19d | ||
|
|
751af0ee2f | ||
|
|
6b31d9c568 | ||
|
|
d61bc8ca1c | ||
|
|
d5a0b9c15c | ||
|
|
8f4ecd4a9e | ||
|
|
ee80f45064 | ||
|
|
022dd8775a | ||
|
|
c2cee22ec1 | ||
|
|
7869e8ad05 | ||
|
|
d67b892041 | ||
|
|
acf6bcebf9 | ||
|
|
9a762177e6 | ||
|
|
402313b3db | ||
|
|
27f9274cb4 | ||
|
|
38ba66e41b | ||
|
|
fdf2eaf21b | ||
|
|
887c9d05c2 | ||
|
|
d9d6d2f77f | ||
|
|
9b2c0d2924 | ||
|
|
61cdf27dc2 | ||
|
|
eb2c518a38 | ||
|
|
d5f394f4c4 | ||
|
|
05903e6b3a | ||
|
|
622a594a7c | ||
|
|
3cac42f8db | ||
|
|
3c17c8b945 | ||
|
|
6bbb37a184 | ||
|
|
e4946c508e | ||
|
|
d2e371201c | ||
|
|
4f30395c97 | ||
|
|
e2fd9af691 | ||
|
|
6af3a0d53c | ||
|
|
81f6192a0c | ||
|
|
4072dfb9b8 | ||
|
|
945f7311ca | ||
|
|
17453368fa | ||
|
|
d8720af3a3 | ||
|
|
6cd7bd1fb5 | ||
|
|
459d31fa83 | ||
|
|
10640b2e3e | ||
|
|
b0a1fa9b20 | ||
|
|
e61793f086 | ||
|
|
707b733dc3 | ||
|
|
cff4f731e4 | ||
|
|
33b8775d3a | ||
|
|
0021672451 | ||
|
|
74dfe6155f | ||
|
|
cde2f4dabe | ||
|
|
8733f0d86c | ||
|
|
25fd0feeea | ||
|
|
04999a9c03 | ||
|
|
92094d44a2 | ||
|
|
1e1f1edb7d | ||
|
|
11fe3dcfe2 | ||
|
|
fefab489c7 | ||
|
|
d1abb8bb02 | ||
|
|
db0e722d83 | ||
|
|
09ce736e9a | ||
|
|
d972554740 | ||
|
|
b4aeceec73 | ||
|
|
db40c6bfdf | ||
|
|
a831ffc8fe | ||
|
|
f8aa552edb | ||
|
|
b8f2869bef | ||
|
|
307ba34fa0 | ||
|
|
d9af67ef70 | ||
|
|
36d8518388 | ||
|
|
913e3def6d | ||
|
|
5b477dd3b9 | ||
|
|
3179bab5b8 | ||
|
|
00c8cf21f0 | ||
|
|
309979a136 | ||
|
|
20c21edada | ||
|
|
cef23f1f01 | ||
|
|
06364bcf06 | ||
|
|
a79f12ba46 | ||
|
|
47b4920f08 | ||
|
|
78f0b08d54 | ||
|
|
fc67f3e0e3 | ||
|
|
420e5e1022 | ||
|
|
f547209bf6 | ||
|
|
452606f147 | ||
|
|
ca1ecf38c6 | ||
|
|
3f96cf3e4f | ||
|
|
b6b9d8b843 | ||
|
|
0f1938c982 | ||
|
|
ca50fa0230 | ||
|
|
08e4f1ac94 | ||
|
|
a873540eb6 | ||
|
|
b493dfe8bc | ||
|
|
cab27680d6 | ||
|
|
f109354dce | ||
|
|
31f6e44dca | ||
|
|
77e0ae46ee | ||
|
|
fbdbb3e8fa | ||
|
|
abbc8ed09b | ||
|
|
3c53361901 | ||
|
|
6d6529b5e5 | ||
|
|
0b07b9482c | ||
|
|
c0fe9b0d1b | ||
|
|
10a6442013 | ||
|
|
2869504d83 | ||
|
|
ce6caa0759 | ||
|
|
138cc7f283 | ||
|
|
2edb8bce12 | ||
|
|
0258aea36c | ||
|
|
2ce3018081 | ||
|
|
2053e8c26c | ||
|
|
b8b17a7732 | ||
|
|
ac81ee4d14 | ||
|
|
63d380e078 | ||
|
|
46879265d7 | ||
|
|
5c859d99f0 | ||
|
|
ae29b66fbf | ||
|
|
ac1a59e95c | ||
|
|
aa51fc8106 | ||
|
|
0316cd0c04 | ||
|
|
58930ca980 | ||
|
|
5c4e92b973 | ||
|
|
29d7ef1bca | ||
|
|
80c7cf7e5d | ||
|
|
2612cf1a5e | ||
|
|
be7d7a6638 | ||
|
|
d0b2beb93d | ||
|
|
f3ca27e9fe | ||
|
|
e3e94dd137 | ||
|
|
6358746e6f | ||
|
|
4a2df0557c | ||
|
|
014f9142bc | ||
|
|
c0bf2b179a | ||
|
|
9656a02498 | ||
|
|
d76ac5ddfd | ||
|
|
9fbcea8dba | ||
|
|
7c014c5bf4 | ||
|
|
b5c8773673 | ||
|
|
3e42bdfdc9 | ||
|
|
b20eef7ab0 | ||
|
|
a571ebca8b | ||
|
|
f498427f17 | ||
|
|
eb9945c49a | ||
|
|
727f5b8846 | ||
|
|
7ff4660fa4 | ||
|
|
0a792c72e6 | ||
|
|
bad3251d3f | ||
|
|
ea01b618d9 | ||
|
|
9eec883bf8 | ||
|
|
80dd46d7aa | ||
|
|
993572b249 | ||
|
|
afce5ee1c8 | ||
|
|
3700c88538 | ||
|
|
8b672d6342 | ||
|
|
868c254c18 | ||
|
|
f5385613e2 | ||
|
|
088eaf3878 | ||
|
|
46ba6046bc | ||
|
|
bcf53cf8d0 | ||
|
|
66923d616a | ||
|
|
1c398fd83c | ||
|
|
78bf1ca895 | ||
|
|
c9b0b5d9bf | ||
|
|
c29d36bdf7 | ||
|
|
15491d8b1f | ||
|
|
c529637d60 | ||
|
|
2ffd8b0788 | ||
|
|
b7554e2bc9 | ||
|
|
6b13908f70 | ||
|
|
afeabf9f70 | ||
|
|
3842a051ba | ||
|
|
a89d1aea0c | ||
|
|
773e64ec15 | ||
|
|
e209942448 | ||
|
|
be9932698b | ||
|
|
85477ac281 | ||
|
|
d35b058b31 | ||
|
|
51e66e5dee | ||
|
|
88d64279bb | ||
|
|
364da4eb0f | ||
|
|
f368466f81 | ||
|
|
26c8b645f8 | ||
|
|
8786484edf | ||
|
|
ba45e16a66 | ||
|
|
d8c1b06854 | ||
|
|
98c08f4dbe | ||
|
|
04f158ce9a | ||
|
|
1a1eba30c3 | ||
|
|
0e40083fdd | ||
|
|
d2a23df349 | ||
|
|
78baa4ccb8 | ||
|
|
fb17fdbd0e | ||
|
|
2f93757751 | ||
|
|
3bc4de1f1b | ||
|
|
62c1fe7b45 | ||
|
|
7b5bf4bea4 | ||
|
|
712bf9b0cc | ||
|
|
19c189b7a3 | ||
|
|
2cd386a02f | ||
|
|
d8389bdac5 | ||
|
|
abe885e016 | ||
|
|
d3d785705a | ||
|
|
ad923a3d6f | ||
|
|
035ef37ffa | ||
|
|
f38324fe6c | ||
|
|
67308c2197 | ||
|
|
93ca4b367d | ||
|
|
20d0c8c5bb | ||
|
|
06278dd28a | ||
|
|
bcf3845c01 | ||
|
|
52c5fd5684 | ||
|
|
a0e8772150 | ||
|
|
497514c667 | ||
|
|
ca08f931b9 | ||
|
|
569b52d136 | ||
|
|
e81b4c677b | ||
|
|
9476a30889 | ||
|
|
ff303bcf27 | ||
|
|
67145f44e5 | ||
|
|
7e2f4ceafa | ||
|
|
639fef047e | ||
|
|
ec5ff01338 | ||
|
|
72499be79f | ||
|
|
29406d7aa3 | ||
|
|
22dd55305b | ||
|
|
474acc7dd9 | ||
|
|
c5f432d9c2 | ||
|
|
0902c53969 | ||
|
|
8dda8ff186 | ||
|
|
c8d9ff1fe8 | ||
|
|
50c7ddaa5e | ||
|
|
adcfb59d04 | ||
|
|
7c6f960a20 | ||
|
|
75c43836c1 | ||
|
|
7752f1112e | ||
|
|
148fd45777 | ||
|
|
c7443ec439 | ||
|
|
2f65d19e93 | ||
|
|
6cb735c864 | ||
|
|
ad7a535899 | ||
|
|
84189fe5ad | ||
|
|
b15ba3f20d | ||
|
|
a3a89d7c36 | ||
|
|
6c87ddb75d | ||
|
|
aa224791dd | ||
|
|
73865279b1 | ||
|
|
cad0e68589 | ||
|
|
93c498f0c6 | ||
|
|
e5cba9f559 | ||
|
|
513fe0ca30 | ||
|
|
a7757e30aa | ||
|
|
4e99bcb060 | ||
|
|
90c5477ca1 | ||
|
|
540f27d8bc | ||
|
|
552a117791 | ||
|
|
4e07f65d62 | ||
|
|
c78ef9f491 | ||
|
|
785d1541b6 | ||
|
|
63bdedb251 | ||
|
|
2f330bed30 | ||
|
|
8342523519 | ||
|
|
9f6c66e1b3 | ||
|
|
50d93bb5f8 | ||
|
|
64e9b7eafb | ||
|
|
9d34aaa2bd | ||
|
|
f3e4c3d6c5 | ||
|
|
6fb633bc3f | ||
|
|
ca033e166c | ||
|
|
ca6cee1837 | ||
|
|
c82af3a7f1 | ||
|
|
e82a62f172 | ||
|
|
f9321a16fb | ||
|
|
c8bedec446 | ||
|
|
7a104af70f | ||
|
|
923de3bb9c | ||
|
|
2359261a25 | ||
|
|
769cd7d5dd | ||
|
|
6bad645917 | ||
|
|
11931cc68d | ||
|
|
d91d025def | ||
|
|
985b4f1c86 | ||
|
|
1d556695ef | ||
|
|
e9ca87459a | ||
|
|
4b711da3c2 | ||
|
|
ca690f9802 | ||
|
|
137a1f98e3 | ||
|
|
e301648774 | ||
|
|
1260bf0573 | ||
|
|
bdbaee5cfc | ||
|
|
43c69727ea | ||
|
|
589dce8281 | ||
|
|
5f4804c7e4 | ||
|
|
5cd7e9d4db | ||
|
|
1418d7292d | ||
|
|
cc8e8b59d6 | ||
|
|
3b0c7a322a | ||
|
|
65775fe205 | ||
|
|
30e3e23338 | ||
|
|
8ced0871d2 | ||
|
|
6032e43f38 | ||
|
|
17b687ef36 | ||
|
|
cd60cef97d | ||
|
|
219a694aca | ||
|
|
3c76e82a76 | ||
|
|
998358fa90 | ||
|
|
bc508906db | ||
|
|
6a1e7c8565 | ||
|
|
5e8d4ff0bf | ||
|
|
e169fd331c | ||
|
|
58fbc62a4a | ||
|
|
fde3820de9 | ||
|
|
f33fe250cf | ||
|
|
a504607ef1 | ||
|
|
e8108e60c9 | ||
|
|
479c6fc458 | ||
|
|
8cb2bd68c9 | ||
|
|
b352902413 | ||
|
|
7736b3327e | ||
|
|
a680e06bac | ||
|
|
72e8c079c4 | ||
|
|
74ceb7b203 | ||
|
|
7923de0ddd | ||
|
|
d3f58baf38 | ||
|
|
6b07de6abf | ||
|
|
f2b515e117 | ||
|
|
9615df2e83 | ||
|
|
4785e8e98a | ||
|
|
5fc04b8135 | ||
|
|
c8ab83c08e | ||
|
|
469a5f80ae | ||
|
|
7e7bede4bd | ||
|
|
339335189b | ||
|
|
4e57d3ff7d | ||
|
|
06289aeea8 | ||
|
|
66bea4d912 | ||
|
|
6a4c22bc4d | ||
|
|
081cff0c33 | ||
|
|
2562a84dc5 | ||
|
|
ee3085e9e2 | ||
|
|
d352f188cb | ||
|
|
3d38596530 | ||
|
|
449733f214 | ||
|
|
75063dd6d2 | ||
|
|
c6eac4f169 | ||
|
|
a7cb695600 | ||
|
|
5b4f07a4f3 | ||
|
|
b19619260f | ||
|
|
897f762e3c | ||
|
|
1a32d316dd | ||
|
|
7f800a6b10 | ||
|
|
94f960b541 | ||
|
|
381f821556 | ||
|
|
5d4bffa427 | ||
|
|
f0a464d58a | ||
|
|
3a0f5543c9 | ||
|
|
1ae369c9d2 | ||
|
|
8153dde6c8 | ||
|
|
3476dfe9d7 | ||
|
|
ce3c351d81 | ||
|
|
fa52840ac8 | ||
|
|
e7468041e7 | ||
|
|
b9043a19e2 | ||
|
|
ae0cb2960d | ||
|
|
85939fa773 | ||
|
|
5a78ccdf1f | ||
|
|
b13fa0acde | ||
|
|
2a590fe988 | ||
|
|
fd837244be | ||
|
|
5dcfb7ce2e | ||
|
|
9bbc786bf0 | ||
|
|
c4157085cd | ||
|
|
d904d3c59a | ||
|
|
40a31ba506 | ||
|
|
8bdf7f2972 | ||
|
|
1500a4fe5d | ||
|
|
a9bc22bf37 | ||
|
|
3931325c6d | ||
|
|
7209c50da4 | ||
|
|
d1029cbcf0 | ||
|
|
f04c15adc7 | ||
|
|
0ae6a5f852 | ||
|
|
53c07ca216 | ||
|
|
1255d388f0 | ||
|
|
c615c2ddce | ||
|
|
8a02be5fc2 | ||
|
|
31d3464c0c | ||
|
|
2f6d1483f6 | ||
|
|
ea7b38cd1e | ||
|
|
31e12a627d | ||
|
|
e94a2fdd30 | ||
|
|
32d248107a | ||
|
|
3b19037ccd | ||
|
|
97bb372529 | ||
|
|
e94a3385d6 | ||
|
|
b8685833f1 | ||
|
|
0e27dac042 | ||
|
|
059a29a179 | ||
|
|
2ef5add037 | ||
|
|
bada421314 | ||
|
|
eb7f938194 | ||
|
|
c65bd9be83 | ||
|
|
dfafc36515 | ||
|
|
05a1fd6093 | ||
|
|
4574714ad4 | ||
|
|
8d8c145175 | ||
|
|
07eaf0b8d0 | ||
|
|
cf70df7d0e | ||
|
|
9234d92d4e | ||
|
|
86a292d459 | ||
|
|
937ccb270e | ||
|
|
7d5b9de6c7 | ||
|
|
f6132a5038 | ||
|
|
7a89c23c2d | ||
|
|
5a23b8523d | ||
|
|
0cf9ce19cc | ||
|
|
6ca3f52bee | ||
|
|
42f61e5c46 | ||
|
|
2ba574f329 | ||
|
|
dcfc52bbba | ||
|
|
4c706de3c7 | ||
|
|
3c3fe07225 | ||
|
|
248732d66f | ||
|
|
31f15d225d | ||
|
|
8d2b885018 | ||
|
|
c535e67633 | ||
|
|
05cd9da1d8 | ||
|
|
64ea5fd972 | ||
|
|
35ef866dcc | ||
|
|
ec95dac291 | ||
|
|
05a4a299b5 | ||
|
|
c8b58baa78 | ||
|
|
3b3d01b318 | ||
|
|
0e71bf20df | ||
|
|
106423c056 | ||
|
|
d510e8695e | ||
|
|
c33679b400 | ||
|
|
3ad07fa335 | ||
|
|
6812f56fa2 | ||
|
|
0ebade1fcd | ||
|
|
f3c187e0c7 | ||
|
|
559eecb115 | ||
|
|
fe6a60a7c3 | ||
|
|
5419c0c2d0 | ||
|
|
a1a06d7854 | ||
|
|
1094dec52a | ||
|
|
392b3526d8 | ||
|
|
7ce9f2dbe8 | ||
|
|
267d8eb613 | ||
|
|
b38ab99bdc | ||
|
|
6e93e6ea45 | ||
|
|
01818a424a | ||
|
|
79432444e8 | ||
|
|
0bd2ea544e | ||
|
|
afe5729a33 | ||
|
|
2975d0f819 | ||
|
|
a7e1dcd84a | ||
|
|
fc9acafe15 | ||
|
|
e31320a1d0 | ||
|
|
fa2fb620c7 | ||
|
|
62a3dbe63e | ||
|
|
5cb1e19b03 | ||
|
|
23b81eeddd | ||
|
|
31da643c6a | ||
|
|
3c17010ba5 | ||
|
|
dd0319d149 | ||
|
|
315eafec07 | ||
|
|
cf638fc378 | ||
|
|
9df7cf8ea3 | ||
|
|
9bdb01e6c3 | ||
|
|
ff52c72095 | ||
|
|
417872b98a | ||
|
|
a4fbe403e4 | ||
|
|
a3ed377607 | ||
|
|
e69b9ffb0f | ||
|
|
29ca9003a5 | ||
|
|
d25365515e | ||
|
|
a77ad145d0 | ||
|
|
ce1d4c7aeb | ||
|
|
85532057dc | ||
|
|
86457878fd | ||
|
|
8ba4e82f53 | ||
|
|
7779b6cbf6 | ||
|
|
ac5c31df78 | ||
|
|
e370391b5e | ||
|
|
3c9b2e6250 | ||
|
|
8b57e8fcf6 | ||
|
|
61d5bfc06b | ||
|
|
ada9b8ab20 | ||
|
|
e17f6f7ab6 | ||
|
|
3a92768cad | ||
|
|
329fd2fe75 | ||
|
|
8002894e6e | ||
|
|
bb60abb445 | ||
|
|
890db7ab7d | ||
|
|
9e3fe84689 | ||
|
|
024face21c | ||
|
|
78d811f8fb | ||
|
|
1beaa9e457 | ||
|
|
f953788d75 | ||
|
|
f6bcdffe6d | ||
|
|
e3af4e83dd | ||
|
|
247b6de61b | ||
|
|
13f2c161db | ||
|
|
55ab8cebff | ||
|
|
4fa5d53e75 | ||
|
|
ae62248c8a | ||
|
|
fbdde79262 | ||
|
|
1c31f17f89 | ||
|
|
06365907a0 | ||
|
|
094d1d9a27 | ||
|
|
173a45b43c | ||
|
|
3fc4c1434d | ||
|
|
0aba41458d | ||
|
|
5f7516bee5 | ||
|
|
2e24e82fc3 | ||
|
|
d5169236b7 | ||
|
|
96bc10707a | ||
|
|
6c6ceac1bc | ||
|
|
c7302ffd98 | ||
|
|
df7596a03e | ||
|
|
f3fcde886c | ||
|
|
f08782f092 | ||
|
|
4186249fea | ||
|
|
1d19dc5411 | ||
|
|
5ea492b94d | ||
|
|
8db00cd940 | ||
|
|
fdef562ba7 | ||
|
|
4cef36044c | ||
|
|
49d23a92a9 | ||
|
|
290e1b94e4 | ||
|
|
818d9fec02 | ||
|
|
41ea62ace5 | ||
|
|
94ce9c52fb | ||
|
|
ed2cefaf0e | ||
|
|
a325a8cbed | ||
|
|
e17d517a93 | ||
|
|
edf97be2b5 | ||
|
|
f5b3693207 | ||
|
|
b923e27853 | ||
|
|
2616068121 | ||
|
|
4e9291c48b | ||
|
|
61e30d3194 | ||
|
|
678be98a63 | ||
|
|
f216f79834 | ||
|
|
1e219db778 | ||
|
|
840c7a02b3 | ||
|
|
cddaf5def3 | ||
|
|
07aa5a2c61 | ||
|
|
1550dcfff2 | ||
|
|
b8e65dbc1e | ||
|
|
9e46f410e7 | ||
|
|
c6e0cb8fa6 | ||
|
|
769ef0b7bd | ||
|
|
a1d2958b24 | ||
|
|
3dff229f5d | ||
|
|
3d34454472 | ||
|
|
de32eba8a8 | ||
|
|
dd95699054 | ||
|
|
b09f4e054c | ||
|
|
2ee55879d1 | ||
|
|
66065f71b3 | ||
|
|
40dd9cb8cc | ||
|
|
8f534756ca | ||
|
|
2d4f039432 | ||
|
|
6bebabb376 | ||
|
|
de5247ae16 | ||
|
|
b1dfd324cf | ||
|
|
ff9cad0802 | ||
|
|
6a252184e2 | ||
|
|
5ab25a0ab8 | ||
|
|
dece3a1f7c | ||
|
|
9c9cf3a8d0 | ||
|
|
08bed4d70a | ||
|
|
c54091c8ed | ||
|
|
e1fdebdcc8 | ||
|
|
23438327a1 | ||
|
|
8682b8f7f7 | ||
|
|
064fadaa40 | ||
|
|
a255936e1e | ||
|
|
1b8eaf4143 | ||
|
|
24dd4582a2 | ||
|
|
d9edf3ad42 | ||
|
|
9066d09c3e | ||
|
|
1ebadd777b | ||
|
|
792de65053 | ||
|
|
96ea98af24 | ||
|
|
54c4aa0f62 | ||
|
|
1df69830bd | ||
|
|
37f08fab28 | ||
|
|
3e1f3de348 | ||
|
|
6d7c0fd73b | ||
|
|
27ef660057 | ||
|
|
e83e8e7734 | ||
|
|
febc2e8db5 | ||
|
|
93b9133cfa | ||
|
|
90787e192c | ||
|
|
3e93426766 | ||
|
|
0f66180e24 | ||
|
|
4f3d12c632 | ||
|
|
ea34bcc637 | ||
|
|
09e103cd36 | ||
|
|
4748473739 | ||
|
|
a5aca6df16 | ||
|
|
84b0ad0959 | ||
|
|
513dd4a616 | ||
|
|
d65168b7a7 | ||
|
|
7c91a38c54 | ||
|
|
4b09cca4b9 | ||
|
|
e5100b1367 | ||
|
|
a4e8b19b83 | ||
|
|
846474d5a6 | ||
|
|
041153229d | ||
|
|
c3312fd9d0 | ||
|
|
edaf5b86ce | ||
|
|
7655e78c36 | ||
|
|
6859033d42 | ||
|
|
f558da602e | ||
|
|
ff7b9eede9 | ||
|
|
538bbefb23 | ||
|
|
82c168127c | ||
|
|
3f4c95eb98 | ||
|
|
29c9e88c6c | ||
|
|
dfcd28cce9 | ||
|
|
8bd6c39d5e | ||
|
|
99f08fc172 | ||
|
|
a6def371e4 | ||
|
|
089ad40b1f | ||
|
|
83515c3462 | ||
|
|
f642eb7b9f | ||
|
|
1123872a47 | ||
|
|
d30fcb907b | ||
|
|
d924384f72 | ||
|
|
7e22eec300 | ||
|
|
a4701d3b7e | ||
|
|
0d1a72385e | ||
|
|
ff4322d44f | ||
|
|
f2d88ed98c | ||
|
|
c9b3f64262 | ||
|
|
cf38d58b79 | ||
|
|
5044d03efa | ||
|
|
ecd67d8109 | ||
|
|
53b7400731 | ||
|
|
1ebeb6bbf3 | ||
|
|
7e351cd18f | ||
|
|
ecde762a60 | ||
|
|
8d146b6e11 | ||
|
|
f8d86ef2f6 | ||
|
|
589a8a85b3 | ||
|
|
4632c084a6 | ||
|
|
43022c8c8f | ||
|
|
1d89523b69 | ||
|
|
4fdcaf0cc7 | ||
|
|
7e470ba93b | ||
|
|
a9617effd0 | ||
|
|
1716d085b1 | ||
|
|
18914183d9 | ||
|
|
ce55c7fc7d | ||
|
|
808b909f27 | ||
|
|
f0f9aa979b | ||
|
|
0617eaff38 | ||
|
|
a3ec9e6c3b | ||
|
|
bd08442637 | ||
|
|
47871e33fb | ||
|
|
9b4df1505e | ||
|
|
126095a3e6 | ||
|
|
8296690f17 | ||
|
|
595a14576e | ||
|
|
fe57fad800 | ||
|
|
9cdfffc7ce | ||
|
|
9cc98b104e | ||
|
|
b73cc0ff07 | ||
|
|
b21236d838 | ||
|
|
7a74126eb8 | ||
|
|
39504d4517 | ||
|
|
8f674b13e8 | ||
|
|
87647e12e9 | ||
|
|
9f89b34f4d | ||
|
|
d9e690eb71 | ||
|
|
3bf31a5161 | ||
|
|
1299e93989 | ||
|
|
f1491358ff | ||
|
|
bf097e2a31 | ||
|
|
b32e75f3e1 | ||
|
|
640923da58 | ||
|
|
2e189b0677 | ||
|
|
53fea9cd68 | ||
|
|
3fafd7c0c4 | ||
|
|
858cbfa961 | ||
|
|
4b611cca1d | ||
|
|
897adbe920 | ||
|
|
d6baaf3649 | ||
|
|
c10a62a070 | ||
|
|
c2bc56dc65 | ||
|
|
ae5df22719 | ||
|
|
ad8e6236a4 | ||
|
|
e19a1c3cd9 | ||
|
|
aa30ee42c4 | ||
|
|
0bd1b2fbfe | ||
|
|
822cd79080 | ||
|
|
2f734e0a7e | ||
|
|
66ed65d1b7 | ||
|
|
33a1b09738 | ||
|
|
dea6647faa | ||
|
|
0bb3203216 | ||
|
|
a25169ea43 | ||
|
|
01446841be | ||
|
|
b4c38fdd69 | ||
|
|
e4b5f088ca | ||
|
|
97f4d2e8f4 | ||
|
|
1301637cc5 | ||
|
|
19d684e84f | ||
|
|
f8dd2aeebd | ||
|
|
99a0822e3c | ||
|
|
5e8c385e64 | ||
|
|
2dee13b8b8 | ||
|
|
21825a8d00 | ||
|
|
b7b9b499f4 | ||
|
|
28cf7340b9 | ||
|
|
1de63e34f1 | ||
|
|
56ae0ccb87 | ||
|
|
d11cc41b2b | ||
|
|
9b009c9f5a | ||
|
|
feb1f6a4ac | ||
|
|
bbece796a9 | ||
|
|
2bb3d8bdfe | ||
|
|
0375d5da0c | ||
|
|
6e1b2ebcd6 | ||
|
|
94c8b1aa0f | ||
|
|
06f12c290c | ||
|
|
2fddd0b746 | ||
|
|
e1e635578d | ||
|
|
66870de523 | ||
|
|
b40cb80704 | ||
|
|
0b3abc3faf | ||
|
|
62f58f434c | ||
|
|
f6cbc666f5 | ||
|
|
f4f9761c84 | ||
|
|
67298a4b2f | ||
|
|
81b172466c | ||
|
|
206bced36f | ||
|
|
36a91ab163 | ||
|
|
8138bb315d | ||
|
|
9054558fbd | ||
|
|
f0261e88a8 | ||
|
|
7931a483d7 | ||
|
|
d1a6976967 | ||
|
|
fc14ca7a8f | ||
|
|
5e4c83cfec | ||
|
|
8423b244ec | ||
|
|
e6f17474cb | ||
|
|
5fe21da364 | ||
|
|
5fe1a246cf | ||
|
|
43efd9fa56 | ||
|
|
b2eeaf6500 | ||
|
|
4fb42a8382 | ||
|
|
5c831a1a1b | ||
|
|
36e37042c6 | ||
|
|
8be3f42f6b | ||
|
|
967ecc6264 | ||
|
|
4a20a92f4f | ||
|
|
34aa790937 | ||
|
|
63fe5ccb87 | ||
|
|
be2d2c1599 | ||
|
|
9e3c3e4139 | ||
|
|
1b1f63339c | ||
|
|
d4678a75ed | ||
|
|
98e231525f | ||
|
|
da5795a32a | ||
|
|
d4196128b3 | ||
|
|
e49238474c | ||
|
|
56d69016f4 | ||
|
|
48cddfee7c | ||
|
|
41a0c85888 | ||
|
|
4c30c4d572 | ||
|
|
e60b3717f0 | ||
|
|
0262406cea | ||
|
|
72baa6528d | ||
|
|
3d8ab44d14 | ||
|
|
f8baa72034 | ||
|
|
5de2109e1c | ||
|
|
ee3555e8c0 | ||
|
|
db3822841c | ||
|
|
115019ee2c | ||
|
|
da4535c4b4 | ||
|
|
7bfb0145d6 | ||
|
|
67adc92106 | ||
|
|
625aae0fba | ||
|
|
db235e6588 | ||
|
|
1015c4cdea | ||
|
|
3426f7118c | ||
|
|
6eeefeb3eb | ||
|
|
36c1674e0a | ||
|
|
588372b853 | ||
|
|
9de04a5713 | ||
|
|
1592bf7349 | ||
|
|
c54833a8e9 | ||
|
|
64a5004a66 | ||
|
|
1e9efeeb22 | ||
|
|
976dd45973 | ||
|
|
b1ae7a591a | ||
|
|
f3352b9bec | ||
|
|
cab0ee644d | ||
|
|
783cf0d73d | ||
|
|
7780a3e5a4 | ||
|
|
928d42e559 | ||
|
|
deb2c2ffab | ||
|
|
699a26726c | ||
|
|
4c692849bc | ||
|
|
7f9bc71eca | ||
|
|
7fca810d87 | ||
|
|
470208d879 | ||
|
|
2341995e2d | ||
|
|
6dbc6fae49 | ||
|
|
99f467f016 | ||
|
|
8cccaeaee1 | ||
|
|
8c4b35bbd5 | ||
|
|
260696e5e3 | ||
|
|
f3bbe7772f | ||
|
|
0363b921c9 | ||
|
|
a91e1db13e | ||
|
|
4b8b883127 | ||
|
|
e0806ab5ed | ||
|
|
d794aac9ca | ||
|
|
7aac53eb69 | ||
|
|
fe6b7ccc8d | ||
|
|
f56cdc894f | ||
|
|
11a4398874 | ||
|
|
b39ad8a69b | ||
|
|
ae35d154ce | ||
|
|
50a8312c9f | ||
|
|
f8dbd659d0 | ||
|
|
6d858e75d4 | ||
|
|
fe5146716e | ||
|
|
18159f6f60 | ||
|
|
d5dbfd6f17 | ||
|
|
ad8c0c65aa | ||
|
|
42b48b7156 | ||
|
|
c9c55707eb | ||
|
|
201c75e55a | ||
|
|
d472e353c8 | ||
|
|
a24d253a3f | ||
|
|
eb70ba210b | ||
|
|
2958e100b5 | ||
|
|
aa6e560fbd | ||
|
|
3f538ef15c | ||
|
|
3f543c371f | ||
|
|
847169dab2 | ||
|
|
ed29aefe31 | ||
|
|
68b62e1c45 | ||
|
|
aba9f3dd7e | ||
|
|
f58f6043ce | ||
|
|
f17bffa68d | ||
|
|
b1436346a0 | ||
|
|
26f327f1f5 | ||
|
|
ff6e834f7d | ||
|
|
fdd3a3e7fa | ||
|
|
33f87146a8 | ||
|
|
e282509475 | ||
|
|
e6e233e73f | ||
|
|
ec495a6ade | ||
|
|
ed03e26c44 | ||
|
|
7f006841fc | ||
|
|
1d32e01f17 | ||
|
|
e78a28ffb5 | ||
|
|
fdacf913e1 | ||
|
|
539cad8f49 | ||
|
|
d73ed70241 | ||
|
|
aa8953a586 | ||
|
|
caaa091d76 | ||
|
|
f5c726cbef | ||
|
|
181232550d | ||
|
|
b7d04c63c0 | ||
|
|
7ee450d5f6 | ||
|
|
641e33bdd4 | ||
|
|
faedfb6dce | ||
|
|
89227c76be | ||
|
|
f6fc4b1391 | ||
|
|
44caf20759 | ||
|
|
e5094285ce | ||
|
|
15fd491c85 | ||
|
|
f1eda76d36 | ||
|
|
76d9120dd6 | ||
|
|
2c141ce0fb | ||
|
|
c6b5faa001 | ||
|
|
9aba20edee | ||
|
|
e8d86192fc | ||
|
|
aa7638fce5 | ||
|
|
6f2e507e7e | ||
|
|
7c7b389ae0 | ||
|
|
dcc35bf6a4 | ||
|
|
606e919ae3 | ||
|
|
34b1adb9b3 | ||
|
|
bae5d9fcb4 | ||
|
|
92551304a9 | ||
|
|
a8842a35df | ||
|
|
a9c2c07c96 | ||
|
|
5af0708e7f | ||
|
|
102e532c65 | ||
|
|
a22a4084dd | ||
|
|
ad82fd0a25 | ||
|
|
530ee49d07 | ||
|
|
98a5dc52bf | ||
|
|
687b7ef998 | ||
|
|
847ed3fccf | ||
|
|
0c5233171f | ||
|
|
cb8fd52bbe | ||
|
|
c5b14e2676 | ||
|
|
2f2b076705 | ||
|
|
355cc22e32 | ||
|
|
43f117d5f0 | ||
|
|
b3034d815c | ||
|
|
bdec94477c | ||
|
|
528baec07b | ||
|
|
ff8cd3afa7 | ||
|
|
6184f9fc1e | ||
|
|
c8563aaf86 | ||
|
|
0674850fcb | ||
|
|
130904d648 | ||
|
|
9113f8b75c | ||
|
|
4b87939256 | ||
|
|
6db92bd107 | ||
|
|
ac9d955cdd | ||
|
|
cfa3ab7f89 | ||
|
|
54706e9e57 | ||
|
|
7edac4480f | ||
|
|
452b30ddb3 | ||
|
|
39125379e5 | ||
|
|
faa96aba6d | ||
|
|
c2df80e759 | ||
|
|
6aa1a89bf1 | ||
|
|
31d635e582 | ||
|
|
9ec3c7b42d | ||
|
|
6668eca26b | ||
|
|
06a960c681 | ||
|
|
1eaad22e11 | ||
|
|
90989375ca | ||
|
|
bd3091eb7d | ||
|
|
cc0a5f7142 | ||
|
|
fa59c08f71 | ||
|
|
2c64908ae0 | ||
|
|
53e3724e23 | ||
|
|
0914e94965 | ||
|
|
59251c9e9c | ||
|
|
91579a2424 | ||
|
|
2c839b25ad | ||
|
|
02da396800 | ||
|
|
c654449ccf | ||
|
|
b602bf9e8b | ||
|
|
e2a35f7524 | ||
|
|
91be5c8cce | ||
|
|
8068ceb2a9 | ||
|
|
9cb39bbe40 | ||
|
|
2c2b29b6ff | ||
|
|
cad3210bb9 | ||
|
|
f462b9aed2 | ||
|
|
5f5b407b19 | ||
|
|
7231717254 | ||
|
|
afeded2289 | ||
|
|
06b47b13db | ||
|
|
9559bf89b1 | ||
|
|
b885fd1d53 | ||
|
|
688023c91e | ||
|
|
71bfe170e1 | ||
|
|
a0766ff416 | ||
|
|
d41977127f | ||
|
|
259b1b8c03 | ||
|
|
28fc90e6c8 | ||
|
|
31f4d4ac63 | ||
|
|
aec9f4d072 | ||
|
|
9c067741f1 | ||
|
|
187bf10eb5 | ||
|
|
fba21fcab9 | ||
|
|
b495fd2992 | ||
|
|
aa9a67adeb | ||
|
|
c7eb99970e | ||
|
|
135c1c53b8 | ||
|
|
89555ff443 | ||
|
|
440906ce59 | ||
|
|
73ac1894ea | ||
|
|
718b57f849 | ||
|
|
bc3143cc86 | ||
|
|
919caa020b | ||
|
|
ea72586fc5 | ||
|
|
49fa7b3b6e | ||
|
|
bd1db480f3 | ||
|
|
d20b7d6bea | ||
|
|
7d1501a44f | ||
|
|
eaf7c63f0d | ||
|
|
330b421487 | ||
|
|
9b30c8e8f0 | ||
|
|
e22dca2a9a | ||
|
|
d7728fcf85 | ||
|
|
2c0b26955e | ||
|
|
a32e981584 | ||
|
|
2449f41e75 | ||
|
|
874d2a5138 | ||
|
|
6f7660093e | ||
|
|
63742a7fbf | ||
|
|
8f3dd8f8e7 | ||
|
|
180936722e | ||
|
|
1fdbadc594 | ||
|
|
c132e9113c | ||
|
|
a1898260ad | ||
|
|
bcd097060d | ||
|
|
8ff4edd14e | ||
|
|
40aa8b407a | ||
|
|
305b0eda33 | ||
|
|
7bda91f314 | ||
|
|
b9eaebe882 | ||
|
|
f504adce37 | ||
|
|
a28db387fc | ||
|
|
2861ab6188 | ||
|
|
0122a1f716 | ||
|
|
8e6813696a | ||
|
|
51ac5c28de | ||
|
|
58c48b3b48 | ||
|
|
155552f1be | ||
|
|
d16b4e8ba8 | ||
|
|
976e43c3ef | ||
|
|
b4636f4587 | ||
|
|
e076d0c88b | ||
|
|
33682c92e9 | ||
|
|
f4909f01a7 | ||
|
|
f30cab801a | ||
|
|
b1600c0b02 | ||
|
|
c0b6c1a5ab | ||
|
|
c961e08413 | ||
|
|
a158d032df | ||
|
|
76c8294c81 | ||
|
|
b21320abb5 | ||
|
|
5439bb1725 | ||
|
|
569caae79d | ||
|
|
1c9afb96b5 | ||
|
|
73a9f8ec94 | ||
|
|
eae21e533a | ||
|
|
de9833be77 | ||
|
|
6a05eadab2 | ||
|
|
0a77211c80 | ||
|
|
b199e25ab7 | ||
|
|
4e400cb7a2 | ||
|
|
e5656b4aeb | ||
|
|
66352c0a05 | ||
|
|
3571e1bda4 | ||
|
|
ec5a06ccf7 | ||
|
|
ac3c4e9981 | ||
|
|
a769eca4e3 | ||
|
|
907ec2c618 | ||
|
|
8173a963d2 | ||
|
|
276a77c22a | ||
|
|
d8ec3078d4 | ||
|
|
ee8a5c01e2 | ||
|
|
9bac746a3c | ||
|
|
4c69379d79 | ||
|
|
66ff5b7d78 | ||
|
|
b769845105 | ||
|
|
7dacac1909 | ||
|
|
0094faa6e0 | ||
|
|
644772cf06 | ||
|
|
dfe3edd7cd | ||
|
|
89209405b7 | ||
|
|
b4b47bf187 | ||
|
|
f5862b6f22 | ||
|
|
1bcdcce64b | ||
|
|
3dfc806ddf | ||
|
|
f8c304e5a5 | ||
|
|
337a8fe16a | ||
|
|
7dac8d231c | ||
|
|
f4effb700a | ||
|
|
326bcfa0e2 | ||
|
|
faf2b80fe3 | ||
|
|
5c213fcd1d | ||
|
|
a59a1d313a | ||
|
|
288d7b9c55 | ||
|
|
0d1316c563 | ||
|
|
c87248869d | ||
|
|
2627aca3bb | ||
|
|
0a53284205 | ||
|
|
9d1b0204c6 | ||
|
|
58b137edfd | ||
|
|
e0315f2160 | ||
|
|
23a020bc13 | ||
|
|
44c141f947 | ||
|
|
a6a23642ea | ||
|
|
ab54086529 | ||
|
|
b76883e1cc | ||
|
|
43e2ec89d8 | ||
|
|
7250c1a261 | ||
|
|
4d77dbcfa0 | ||
|
|
9f5a862a90 | ||
|
|
42300f375f | ||
|
|
e1a153c3f0 | ||
|
|
ab3eaa20e9 | ||
|
|
4e6b8a18ff | ||
|
|
91216cff91 | ||
|
|
4e71e9b6c8 | ||
|
|
50851586b6 | ||
|
|
9261ca5fc8 | ||
|
|
ff5760e233 | ||
|
|
cca68b1ff6 | ||
|
|
5f25ebaaa0 | ||
|
|
c38b92000c | ||
|
|
ecc38edf79 | ||
|
|
9729bb1e46 | ||
|
|
3a6dab5906 | ||
|
|
b59115de5f | ||
|
|
238e6556ea | ||
|
|
7c09f7ba44 | ||
|
|
adee3a73e6 | ||
|
|
00086b09fe | ||
|
|
3d388146c6 | ||
|
|
a0d965e7b1 | ||
|
|
3806886c28 | ||
|
|
d0de20156a | ||
|
|
57bccaacd0 | ||
|
|
321fd0ceb4 | ||
|
|
1d78c8d7cd | ||
|
|
8cf1357c5a | ||
|
|
a492e2366b | ||
|
|
637b4b4392 | ||
|
|
0e0e575ec1 | ||
|
|
f3f143f249 | ||
|
|
46e349e515 | ||
|
|
f9521c63ea | ||
|
|
924b2e8230 | ||
|
|
0ce385e126 | ||
|
|
0794ffffee | ||
|
|
075a7534a8 | ||
|
|
61e561c2ca | ||
|
|
1f43af072f | ||
|
|
ed1f8b162a | ||
|
|
66a38d1693 | ||
|
|
a246e32f29 | ||
|
|
6bc58751c6 | ||
|
|
e1ad5fdd33 | ||
|
|
6087f3bfc8 | ||
|
|
a781910430 | ||
|
|
90e289c59f | ||
|
|
113b83a9e2 | ||
|
|
db8c4a3519 | ||
|
|
22f0b13f28 | ||
|
|
657a6a6f3c | ||
|
|
455ab32690 | ||
|
|
26a5f97dd8 | ||
|
|
ee3ab6063d | ||
|
|
e5b18854e3 | ||
|
|
929b55a64d | ||
|
|
38f0e0520c | ||
|
|
05de675386 | ||
|
|
1ecd9d30a0 | ||
|
|
5da31b1ebe | ||
|
|
dcfaeabc63 | ||
|
|
922a15c7c0 | ||
|
|
64dab5aca2 | ||
|
|
7b1ad32ff2 | ||
|
|
d81622b537 | ||
|
|
b61c97cebd | ||
|
|
accf0d5f29 | ||
|
|
831bbce008 | ||
|
|
6fa7a247a1 | ||
|
|
4eb5d27bae | ||
|
|
2fa436a15c | ||
|
|
b0232b4bbe | ||
|
|
90228beed3 | ||
|
|
af898946e4 | ||
|
|
3ef9b0c10f | ||
|
|
a1a421899e | ||
|
|
dfca19a1aa | ||
|
|
1bf250400e | ||
|
|
2b9debd520 | ||
|
|
10266aa76f | ||
|
|
80b67b3a4f | ||
|
|
18829cc203 | ||
|
|
a5b9c2b208 | ||
|
|
06596f0ec7 | ||
|
|
33654a83db | ||
|
|
75b3a86c57 | ||
|
|
ab35bf14bd | ||
|
|
70d1a774f4 | ||
|
|
f1ef2614aa | ||
|
|
a81f09d395 | ||
|
|
cfbf09786e | ||
|
|
72dc0b0824 | ||
|
|
1186577d90 | ||
|
|
e056d87076 | ||
|
|
138fc7eeba | ||
|
|
22a0a2c432 | ||
|
|
71542eaf04 | ||
|
|
0b98125d1e | ||
|
|
396ed5ef23 | ||
|
|
1c810e5739 | ||
|
|
45847c3039 | ||
|
|
63169f237f | ||
|
|
a9c57ae221 | ||
|
|
70f500794d | ||
|
|
78346b6670 | ||
|
|
7d4e4d4984 | ||
|
|
1fac3f0e70 | ||
|
|
caae0e0b44 | ||
|
|
6ceca14e5e | ||
|
|
3a7d69494d | ||
|
|
f92422fcc5 | ||
|
|
4bec81d388 | ||
|
|
2da0b7dfbd | ||
|
|
d3243476c2 | ||
|
|
aeb08e7086 | ||
|
|
21e0def4b2 | ||
|
|
3cb3f6867c | ||
|
|
7faa8f35e5 | ||
|
|
001d1ceec6 | ||
|
|
1cb6e8cbe4 | ||
|
|
4645932212 | ||
|
|
7a665402a5 | ||
|
|
9dec38d1ee | ||
|
|
3316814025 | ||
|
|
2033e30585 | ||
|
|
3489d64bde | ||
|
|
7181165333 | ||
|
|
68a8db1efb | ||
|
|
9ae5c33fe4 | ||
|
|
3dba71207f | ||
|
|
7ecaf69507 | ||
|
|
9bf5a10fbd | ||
|
|
9fe9eb9ee5 | ||
|
|
3abbed44db | ||
|
|
aac5a28f1f | ||
|
|
e50706867a | ||
|
|
073719ac71 | ||
|
|
964a14ad23 | ||
|
|
f24920422d | ||
|
|
9c1a4265ad | ||
|
|
51bb20b0d7 | ||
|
|
29493eee3d | ||
|
|
01c7700793 | ||
|
|
8423783bd0 | ||
|
|
5236050c0f | ||
|
|
d2a7d7e26c | ||
|
|
6ef891fbe9 | ||
|
|
8b8812c41d | ||
|
|
5aaf43590f | ||
|
|
e980502db4 | ||
|
|
6443201354 | ||
|
|
07dcadc6e2 | ||
|
|
f9d068745d | ||
|
|
e78c072771 | ||
|
|
e4757e3daf | ||
|
|
b6a370c37f | ||
|
|
1dfa282056 | ||
|
|
4954945531 | ||
|
|
15903c9f3a | ||
|
|
ecd1addb86 | ||
|
|
fd0ec4bfad | ||
|
|
c84e68d720 | ||
|
|
0176adc7c5 | ||
|
|
6529f9ffb6 | ||
|
|
ba35e9924e | ||
|
|
cda18e7813 | ||
|
|
ea20115e34 | ||
|
|
7dd2d8b1ff | ||
|
|
a548a3c20c | ||
|
|
dee69dd3aa | ||
|
|
5827c8e0a6 | ||
|
|
83018d6cf9 | ||
|
|
ac1f768061 | ||
|
|
47dfc702de | ||
|
|
cabaeca9ae | ||
|
|
e88c4a4917 | ||
|
|
101e6adfe0 | ||
|
|
fd61f111a8 | ||
|
|
16b5ecc6f3 | ||
|
|
1336066b63 | ||
|
|
acee1ae35c | ||
|
|
7c7c717788 | ||
|
|
8c8d889d10 | ||
|
|
f621719829 | ||
|
|
5deaff6621 | ||
|
|
3024819c2e | ||
|
|
692d2a9c7e | ||
|
|
4ccd54f3af | ||
|
|
42f476472a | ||
|
|
6cf48dea49 | ||
|
|
9115330256 | ||
|
|
3bd4083e48 | ||
|
|
f73c8fffee | ||
|
|
bddfe77128 | ||
|
|
bd12be6e88 | ||
|
|
aa0dc8d920 | ||
|
|
9ec26a1862 | ||
|
|
159b83ff18 | ||
|
|
5c2551db52 | ||
|
|
47d48791fc | ||
|
|
72568ce039 | ||
|
|
b9be76ed89 | ||
|
|
f46b1b2329 | ||
|
|
fb173de212 | ||
|
|
18a71db562 | ||
|
|
aff4e48c82 | ||
|
|
be745062fd | ||
|
|
86a733bc74 | ||
|
|
e576c7352e | ||
|
|
caa736a754 | ||
|
|
3a76f8d5e8 | ||
|
|
a0ad323da3 |
@@ -1,3 +1,471 @@
|
||||
--- 9.2.0-P2 released ---
|
||||
|
||||
2203. [security] Query id generation was cryptographically weak.
|
||||
[RT # 16915]
|
||||
|
||||
--- 9.2.0-P1 released ---
|
||||
|
||||
1243. [bug] It was possible to trigger a REQUIRE() in
|
||||
dns_message_findtype(). [RT #2659]
|
||||
|
||||
--- 9.2.0 released ---
|
||||
|
||||
1134. [bug] Multithreaded servers could deadlock in ferror()
|
||||
when reloading zone files. [RT #1951, #1998]
|
||||
|
||||
1133. [bug] IN6_IS_ADDR_LOOPBACK was not portably defined on
|
||||
platforms without IN6_IS_ADDR_LOOPBACK. [RT #2106]
|
||||
|
||||
--- 9.2.0rc10 released ---
|
||||
|
||||
1131. [bug] The match-destinations view option did not work with
|
||||
IPv6 destinations. [RT #2073, #2074]
|
||||
|
||||
1130. [bug] Log messages reporting an out-of-range serial number
|
||||
did not include the out-of-range number but the
|
||||
following token. [RT #2076]
|
||||
|
||||
1129. [bug] Multithreaded servers could crash under heavy
|
||||
resolution load due to a race condition. [RT #2018]
|
||||
|
||||
1126. [bug] The server could access a freed event if shut
|
||||
down while a client start event was pending
|
||||
delivery. [RT #2061]
|
||||
|
||||
1121. [bug] The server could attempt to access a NULL zone
|
||||
table if shut down while resolving.
|
||||
[RT #1587, #2054]
|
||||
|
||||
1120. [bug] Errors in options were not fatal. [RT #2002]
|
||||
|
||||
1118. [bug] On multithreaded servers, a race condition
|
||||
could cause an assertion failure in resolver.c
|
||||
during resolver shutdown. [RT #2029]
|
||||
|
||||
1117. [port] The configure check for in6addr_loopback incorrectly
|
||||
succeeded on AIX 4.3 when compiling with -O2
|
||||
because the test code was optimized away.
|
||||
[RT #2016]
|
||||
|
||||
1116. [bug] Setting transfers in a server clause, transfers-in,
|
||||
or transfers-per-ns to a value greater than
|
||||
2147483647 disabled transfers. [RT #2002]
|
||||
|
||||
1114. [port] Ignore more accept() errors. [RT #2021]
|
||||
|
||||
1113. [bug] The allow-update-forwarding option was ignored
|
||||
when specified in a view. [RT #2014]
|
||||
|
||||
1111. [bug] Multithreaded servers could deadlock processing
|
||||
recursive queries due to a locking hieararchy
|
||||
violation in adb.c. [RT #2017]
|
||||
|
||||
--- 9.2.0rc9 released ---
|
||||
|
||||
1107. [bug] nsupdate could catch an assertion failure if an
|
||||
invalid domain name was given as the argument to
|
||||
the "zone" command.
|
||||
|
||||
1106. [bug] After seeing an out of range TTL, nsupdate would
|
||||
treat all TTLs as out of range. [RT #2001]
|
||||
|
||||
1104. [bug] Invalid arguments to the transfer-format option
|
||||
could cause an assertion failure. [RT #1995]
|
||||
|
||||
1103. [port] OpenUNIX 8 support (ifconfig.sh). [RT #1970]
|
||||
|
||||
1102. [doc] Note that query logging is enabled by directing the
|
||||
queries category to a channel.
|
||||
|
||||
1101. [bug] Array bounds read error in lwres_gai_strerror.
|
||||
|
||||
1100. [bug] libbind: DNSSEC key ids were computed incorrectly.
|
||||
|
||||
1099. [cleanup] libbind: defining REPORT_ERRORS in lib/bind/dst caused
|
||||
compile time errors.
|
||||
|
||||
1098. [bug] libbind: HMAC-MD5 key files are now mode 0600.
|
||||
|
||||
1093. [doc] libbind: miscellaneous nroff fixes.
|
||||
|
||||
1092. [bug] libbind: get*by*() failed to check if res_init() had
|
||||
been called.
|
||||
|
||||
1091. [bug] libbind: misplaced va_end().
|
||||
|
||||
1090. [bug] libbind: dns_ho.c:add_hostent() was not returning
|
||||
the amount of memory consumed resulting in garbage
|
||||
address being returned. Alignment calculations were
|
||||
wasting space. We weren't suppressing duplicate
|
||||
addresses.
|
||||
|
||||
1088. [port] libbind: MPE/iX C.70 (incomplete)
|
||||
|
||||
1087. [bug] libbind: struct __res_state too large on 64 bit arch.
|
||||
|
||||
1086. [port] libbind: sunos: old sprintf.
|
||||
|
||||
1085. [port] libbind: solaris: sys_nerr and sys_errlist do not
|
||||
exist when compiling in 64 bit mode.
|
||||
|
||||
1084. [cleanup] libbind: gai_strerror() rewritten.
|
||||
|
||||
1083. [bug] The default control channel listened on the
|
||||
wildcard adress, not the loopback as documented.
|
||||
[RT #1975]
|
||||
|
||||
1082. [bug] The -g option to named incorrectly caused logging
|
||||
to be sent to syslog in addition to stderr.
|
||||
[RT #1974]
|
||||
|
||||
1078. [bug] We failed to correct bad tv_usec values in one case.
|
||||
[RT #1966]
|
||||
|
||||
1076. [bug] A badly defined global key could trigger an assertion
|
||||
on load/reload if views were used. [RT #1947]
|
||||
|
||||
1075. [bug] Out-of-range network prefix lengths were not
|
||||
reported. [RT #1954]
|
||||
|
||||
1074. [bug] Running out of memory in dump_rdataset() could
|
||||
cause an assertion failure. [RT #1946]
|
||||
|
||||
--- 9.2.0rc8 released ---
|
||||
|
||||
1068. [bug] errno could be overwritten by catgets(). [RT #1921]
|
||||
|
||||
1066. [bug] Provide a thread safe wrapper for strerror().
|
||||
[RT #1689]
|
||||
|
||||
1064. [bug] Do not shut down active network interfaces if we
|
||||
are unable to scan the interface list. [RT #1921]
|
||||
|
||||
1063. [bug] libbind: "make install" was failing on IRIX.
|
||||
|
||||
1062. [bug] If the control channel listener socket was shut
|
||||
down before server exit, the listener object could
|
||||
be freed twice. [RT #1916]
|
||||
|
||||
1061. [bug] If periodic cache cleaning happened to start
|
||||
while cleaning due to reaching the configured
|
||||
maximum cache size was in progress, the server
|
||||
could catch an assertion failure. [RT #1912]
|
||||
|
||||
1057. [bug] Reloading the server after adding a "file" clause
|
||||
to a zone statement could cause the server to
|
||||
crash due to a typo in change 1016.
|
||||
|
||||
1056. [bug] Rndc could catch an assertion failure on SIGINT due
|
||||
to an uninitialized variable. [RT #1908]
|
||||
|
||||
--- 9.2.0rc7 released ---
|
||||
|
||||
1054. [bug] On Win32, cfg_categories and cfg_modules need to be
|
||||
exported from the libisccfg DLL.
|
||||
|
||||
1053. [bug] Dig did not increase its timeout when receiving
|
||||
AXFRs unless the +time option was used. [RT #1904]
|
||||
|
||||
1052. [bug] Journals were not being created in binary mode
|
||||
resulting in "journal format not recognized" error
|
||||
under Win32. [RT #1889]
|
||||
|
||||
1051. [bug] Do not ignore a network interface completely just
|
||||
because it has a noncontiguous netmask. Instead,
|
||||
omit it from the localnets ACL and issue a warning.
|
||||
[RT #1891]
|
||||
|
||||
1050. [bug] Log messages reporting malformed IP addresses in
|
||||
address lists such as that of the forwarders option
|
||||
failed to include the correct error code, file
|
||||
name, and line number. [RT #1890]
|
||||
|
||||
1048. [bug] Servers built with -DISC_MEM_USE_INTERNAL_MALLOC=1
|
||||
didn't work.
|
||||
|
||||
1047. [bug] named was incorrectly refusing all requests signed
|
||||
with a TSIG key derived from an unsigned TKEY
|
||||
negotiation with a NOERROR response. [RT #1886]
|
||||
|
||||
1046. [bug] The help message for the --with-openssl configure
|
||||
option was inaccurate. [RT #1880]
|
||||
|
||||
1045. [bug] It was possible to skip saving glue for a nameserver
|
||||
for a stub zone.
|
||||
|
||||
1044. [bug] Specifying allow-transfer, notify-source, or
|
||||
notify-source-v6 in a stub zone was not treated
|
||||
as an error.
|
||||
|
||||
1043. [bug] Specifying a transfer-source or transfer-source-v6
|
||||
option in the zone statement for a master zone was
|
||||
not treated as an error. [RT #1876]
|
||||
|
||||
1042. [bug] The "config" logging category did not work properly.
|
||||
[RT #1873]
|
||||
|
||||
1041. [bug] Dig/host/nslookup could catch an assertion failure
|
||||
on SIGINT due to an uninitialized variable. [RT #1867]
|
||||
|
||||
1040. [bug] Multiple listen-on-v6 options with different ports
|
||||
were not accepted. [RT #1875]
|
||||
|
||||
1039. [bug] Negative responses with CNAMEs in the answer section
|
||||
were cached incorrectly. [RT #1862]
|
||||
|
||||
1038. [bug] In servers configured with a tkey-domain option,
|
||||
TKEY queries with an owner name other than the root
|
||||
could cause an assertion failure. [RT #1866, #1869]
|
||||
|
||||
1033. [bug] Always respond to requests with an unsupported opcode
|
||||
with NOTIMP, even if we don't have a matching view
|
||||
or cannot determine the class.
|
||||
|
||||
--- 9.2.0rc6 released ---
|
||||
|
||||
1031. [bug] libbind.a: isc__gettimeofday() infinite recursion.
|
||||
[RT #1858]
|
||||
|
||||
1030. [bug] On systems with no resolv.conf file, nsupdate
|
||||
exited with an error rather than defaulting
|
||||
to using the loopback address. [RT #1836]
|
||||
|
||||
1029. [bug] Some named.conf errors did not cause the loading
|
||||
of the configuration file to return a failure
|
||||
status even though they were logged. [RT #1847]
|
||||
|
||||
1028. [bug] On Win32, dig/host/nslookup looked for resolv.conf
|
||||
in the wrong directory. [RT #1833]
|
||||
|
||||
1027. [bug] RRs having the reserved type 0 should be rejected.
|
||||
[RT #1471]
|
||||
|
||||
1026. [port] Recognize OpenUNIX 8 in config.guess. [RT #1830]
|
||||
|
||||
1022. [bug] Don't report empty root hints as "extra data".
|
||||
[RT #1802]
|
||||
|
||||
--- 9.2.0rc5 released ---
|
||||
|
||||
1021. [bug] On Win32, log message timestamps were one month
|
||||
later than they should have been, and the server
|
||||
would exhibit unspecified behavior in December.
|
||||
|
||||
1020. [bug] IXFR log messages did not distinguish between
|
||||
true IXFRs, AXFR-style IXFRs, and mere version
|
||||
polls. [RT #1811]
|
||||
|
||||
1019. [bug] The value of the lame-ttl option was limited to 18000
|
||||
seconds, not 1800 seconds as documented. [RT #1803]
|
||||
|
||||
1018. [bug] The default log channel was not always initialized
|
||||
correctly. [RT #1813]
|
||||
|
||||
1017. [bug] When specifying TSIG keys to dig and nsupdate using
|
||||
the -k option, they must be HMAC-MD5 keys. [RT #1810]
|
||||
|
||||
1016. [bug] Slave zones with no backup file were re-transferred
|
||||
on every server reload.
|
||||
|
||||
1015. [bug] Log channels that had a "versions" option but no
|
||||
"size" option failed to create numbered log
|
||||
files. [RT #1783]
|
||||
|
||||
--- 9.2.0rc4 released ---
|
||||
|
||||
1013. [bug] It was possible to cancel a query twice when marking
|
||||
a server as bogus or by having a blackhole acl.
|
||||
[RT #1776]
|
||||
|
||||
1010. [bug] The server could attempt to execute a command channel
|
||||
command after initiating server shutdown, causing
|
||||
an assertion failure. [RT #1766]
|
||||
|
||||
1006. [bug] If a KEY RR was found missing during DNSSEC validation,
|
||||
an assertion failure could subsequently be triggered
|
||||
in the resolver. [RT #1763]
|
||||
|
||||
1005. [bug] Don't copy nonzero RCODEs from request to response.
|
||||
[RT #1765]
|
||||
|
||||
1004. [port] Deal with recvfrom() returning EHOSTDOWN. [RT #1770]
|
||||
|
||||
1002. [bug] When reporting an unknown class name in named.conf,
|
||||
including the file name and line number. [RT #1759]
|
||||
|
||||
1001. [bug] win32 socket code doio_recv was not catching a
|
||||
WSACONNRESET error when a client was timing out
|
||||
the request and closing its socket. [RT #1745]
|
||||
|
||||
1000. [bug] BIND 8 compatibility: accept "HESIOD" as an alias
|
||||
for class "HS". [RT #1759]
|
||||
|
||||
--- 9.2.0rc3 released ---
|
||||
|
||||
990. [bug] The rndc-confgen man page was not installed.
|
||||
|
||||
989. [bug] Report filename if $INCLUDE fails for file related
|
||||
errors. [RT #1736]
|
||||
|
||||
987. [bug] "dig -help" didn't show "+[no]stats".
|
||||
|
||||
986. [bug] "dig +noall" failed to clear stats and command
|
||||
printing.
|
||||
|
||||
984. [bug] Multithreading should be enabled by default on
|
||||
Solaris 2.7 and newer, but it wasn't.
|
||||
|
||||
--- 9.2.0rc2 released ---
|
||||
|
||||
980. [bug] Incoming zone transfers restarting after an error
|
||||
could trigger an assertion failure. [RT #1692]
|
||||
|
||||
978. [bug] dns_db_attachversion() had an invalid REQUIRE()
|
||||
condition.
|
||||
|
||||
977. [bug] Improve "not at top of zone" error message.
|
||||
|
||||
975. [bug] "max-cache-size default;" as a view option
|
||||
caused an assertion failure.
|
||||
|
||||
974. [bug] "max-cache-size unlimited;" as a global option
|
||||
was not accepted.
|
||||
|
||||
973. [bug] Failed to log the question name when logging:
|
||||
"bad zone transfer request: non-authoritative zone
|
||||
(NOTAUTH)".
|
||||
|
||||
972. [bug] The file modification time code in zone.c was using the
|
||||
wrong epoch. [RT #1667]
|
||||
|
||||
968. [bug] On win32, the isc_time_now() function was unnecessarily
|
||||
calling strtime(). [RT #1671]
|
||||
|
||||
967. [bug] On win32, the link for bindevt was not including the
|
||||
required resource file to enable the event viewer
|
||||
to interpret the error messages in the event log,
|
||||
[RT #1668]
|
||||
|
||||
966. [placeholder]
|
||||
|
||||
965. [bug] Including data other than root server NS and A
|
||||
records in the root hint file could cause a rbtdb
|
||||
node reference leak. [RT #1581, #1618]
|
||||
|
||||
964. [func] Warn if data other than root server NS and A records
|
||||
are found in the root hint file. [RT #1581, #1618]
|
||||
|
||||
963. [bug] Bad ISC_LANG_ENDDECLS. [RT #1645]
|
||||
|
||||
962. [bug] libbind: bad "#undef", don't attempt to install
|
||||
non-existant nlist.h. [RT #1640]
|
||||
|
||||
961. [bug] Tried to use a IPV6 feature when ISC_PLATFORM_HAVEIPV6
|
||||
was not defined. [RT #1482]
|
||||
|
||||
960. [port] liblwres failed to build on systems with support for
|
||||
getrrsetbyname() in the OS. [RT #1592]
|
||||
|
||||
959. [port] On FreeBSD, determine the number of CPUs by calling
|
||||
sysctlbyname(). [RT #1584]
|
||||
|
||||
958. [port] ssize_t is not available on all platforms. [RT #1607]
|
||||
|
||||
957. [bug] sys/select.h inclusion was broken on older platforms.
|
||||
[RT #1607]
|
||||
|
||||
956. [bug] ns_g_autorndcfile changed to ns_g_keyfile
|
||||
in named/win32/os.c due to code changes in
|
||||
change #953. win32 .make file for rndc-confgen
|
||||
updated to add include path for os.h header.
|
||||
|
||||
--- 9.2.0rc1 released ---
|
||||
|
||||
955. [bug] When using views, the zone's class was not being
|
||||
inherited from the view's class. [RT #1583]
|
||||
|
||||
954. [bug] When requesting AXFRs or IXFRs using dig, host, or
|
||||
nslookup, the RD bit should not be set as zone
|
||||
transfers are inherently nonrecursive. [RT #1575]
|
||||
|
||||
953. [func] The /var/run/named.key file from change #843
|
||||
has been replaced by /etc/rndc.key. Both
|
||||
named and rndc will look for this file and use
|
||||
it to configure a default control channel key
|
||||
if not already configured using a different
|
||||
method (rndc.conf / controls). Unlike
|
||||
named.key, rndc.key is not created automatically;
|
||||
it must be created by manually running
|
||||
"rndc-confgen -a".
|
||||
|
||||
952. [bug] The server required manual intervention to serve the
|
||||
affected zones if it died between creating a journal
|
||||
and committing the first change to it.
|
||||
|
||||
951. [bug] CFLAGS was not passed to the linker when
|
||||
linking some of the test programs under
|
||||
bin/tests. [RT #1555].
|
||||
|
||||
950. [bug] Explicit TTLs did not properly override $TTL
|
||||
due to a bug in change 834. [RT #1558]
|
||||
|
||||
949. [bug] host was unable to print records larger than 512
|
||||
bytes. [RT #1557]
|
||||
|
||||
--- 9.2.0b2 released ---
|
||||
|
||||
948. [port] Integrated support for building on Windows NT /
|
||||
Windows 2000.
|
||||
|
||||
947. [bug] dns_rdata_soa_t had a badly named element "mname" which
|
||||
was really the RNAME field from RFC1035. To avoid
|
||||
confusion and silent errors that would occur it the
|
||||
"origin" and "mname" elements were given their correct
|
||||
names "mname" and "rname" respectively, the "mname"
|
||||
element is renamed to "contact".
|
||||
|
||||
946. [cleanup] doc/misc/options is now machine-generated from the
|
||||
configuration parser syntax tables, and therefore
|
||||
more likely to be correct.
|
||||
|
||||
945. [func] Add the new view-specific options
|
||||
"match-destinations" and "match-recursive-only".
|
||||
|
||||
944. [func] Check for expired signatures on load.
|
||||
|
||||
943. [bug] The server could crash when receiving a command
|
||||
via rndc if the configuration file listed only
|
||||
nonexistent keys in the controls statement. [RT #1530]
|
||||
|
||||
942. [port] libbind: GETNETBYADDR_ADDR_T was not correctly
|
||||
defined on some platforms.
|
||||
|
||||
941. [bug] The configuration checker crashed if a slave
|
||||
zone didn't contain a masters statement. [RT #1514]
|
||||
|
||||
940. [bug] Double zone locking failure on error path. [RT #1510]
|
||||
|
||||
--- 9.2.0b1 released ---
|
||||
|
||||
939. [port] Add the --disable-linux-caps option to configure for
|
||||
systems that manage capabilities outside of named.
|
||||
[RT #1503]
|
||||
|
||||
938. [placeholder]
|
||||
|
||||
937. [bug] A race when shutting down a zone could trigger a
|
||||
INSIST() failure. [RT #1034]
|
||||
|
||||
936. [func] Warn about IPv4 addresses that are not complete
|
||||
dotted quads. [RT #1084]
|
||||
|
||||
935. [bug] inet_pton failed to reject leading zeros.
|
||||
|
||||
934. [port] Deal with systems where accept() spuriously returns
|
||||
ECONNRESET.
|
||||
|
||||
933. [bug] configure failed doing libbind on platforms not
|
||||
supported by BIND 8. [RT #1496]
|
||||
|
||||
--- 9.2.0a3 released ---
|
||||
|
||||
@@ -159,7 +627,7 @@
|
||||
TSIG key. [RT #1392]
|
||||
|
||||
887. [port] Detect broken compilers that can't call static
|
||||
functions from inline functions. [RT #1212]
|
||||
functions from inline functions. [RT #1212]
|
||||
|
||||
866. [func] Close debug only file channels when debug is set to
|
||||
zero. [RT #1246]
|
||||
@@ -203,13 +671,13 @@
|
||||
|
||||
856. [func] Allow partial rdatasets to be returned in answer and
|
||||
authority sections to help non-TCP capable clients
|
||||
recover from truncation. [RT #1301]
|
||||
recover from truncation. [RT #1301]
|
||||
|
||||
855. [bug] Stop spurious "using RFC 1035 TTL semantics" warnings.
|
||||
|
||||
854. [bug] The config parser didn't properly handle config
|
||||
options that were specified in units of time other
|
||||
than seconds. [RT #1372]
|
||||
than seconds. [RT #1372]
|
||||
|
||||
853. [bug] configure_view_acl() failed to detach existing acls.
|
||||
[RT #1374]
|
||||
@@ -1253,7 +1721,7 @@
|
||||
reload. [RT #410]
|
||||
|
||||
528. [func] The ISC_LIST_XXXX macros now perform sanity checks
|
||||
on their arguements. ISC_LIST_XXXXUNSAFE can be use
|
||||
on their arguments. ISC_LIST_XXXXUNSAFE can be use
|
||||
to skip the checks however use with caution.
|
||||
|
||||
527. [func] New function dns_rdata_clone().
|
||||
@@ -2264,7 +2732,7 @@
|
||||
242. [cleanup] fixed incorrect warning about auth-nxdomain usage.
|
||||
|
||||
241. [cleanup] nscount and soacount have been removed from the
|
||||
dns_master_*() arguement lists.
|
||||
dns_master_*() argument lists.
|
||||
|
||||
240. [func] databases now come in three flavours: zone, cache
|
||||
and stub.
|
||||
@@ -2480,10 +2948,10 @@
|
||||
188. [func] Log a warning message when an incoming zone transfer
|
||||
contains out-of-zone data.
|
||||
|
||||
187. [func] isc_ratelimter_enqueue() has an additional arguement
|
||||
187. [func] isc_ratelimter_enqueue() has an additional argument
|
||||
'task'.
|
||||
|
||||
186. [func] dns_request_getresponse() has an additional arguement
|
||||
186. [func] dns_request_getresponse() has an additional argument
|
||||
'preserve_order'.
|
||||
|
||||
185. [bug] Fixed up handling of ISC_MEMCLUSTER_LEGACY. Several
|
||||
|
||||
@@ -12,3 +12,18 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
Portions Copyright (C) 1996-2001 Nominum, Inc.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
@@ -65,12 +65,13 @@ A: This is often caused by TXT records with missing close quotes. Check that
|
||||
all TXT records containing quoted strings have both open and close quotes.
|
||||
|
||||
|
||||
Q: How do I produce a usable core file from a multithreaded named
|
||||
on Linux?
|
||||
Q: How do I produce a usable core file from a multithreaded named on Linux?
|
||||
|
||||
A: Apply the kernel patch found in bind9/linux/coredump-patch and rebuild
|
||||
the kernel. This patch causes multithreaded programs to dump the correct
|
||||
thread.
|
||||
A: If the Linux kernel is 2.4.7 or newer, multithreaded core dumps
|
||||
are usable (that is, the correct thread is dumped). Otherwise, if using
|
||||
a 2.2 kernel, apply the kernel patch found in contrib/linux/coredump-patch
|
||||
and rebuild the kernel. This patch will cause multithreaded programs to dump
|
||||
the correct thread.
|
||||
|
||||
|
||||
Q: How do I restrict people from looking up the server version?
|
||||
@@ -144,7 +145,7 @@ Q: I keep getting log messages like the following. Why?
|
||||
|
||||
Jun 21 12:00:00.000 client 10.0.0.1#1234: update denied
|
||||
|
||||
Someone is trying to update your DNS data using the RFC2136 Dynamic
|
||||
A: Someone is trying to update your DNS data using the RFC2136 Dynamic
|
||||
Update protocol. Windows 2000 machines have a habit of sending dynamic
|
||||
update requests to DNS servers without being specifically configured to
|
||||
do so. If the update requests are coming from a Windows 2000 machine,
|
||||
@@ -156,10 +157,111 @@ Q: I see a log message like the following. Why?
|
||||
|
||||
couldn't open pid file '/var/run/named.pid': Permission denied
|
||||
|
||||
You are most likely running named as a non-root user, and that user
|
||||
A: You are most likely running named as a non-root user, and that user
|
||||
does not have permission to write in /var/run. The common ways of
|
||||
fixing this are to create a /var/run/named directory owned by the named
|
||||
user and set pid-file to "/var/run/named/named.pid", or set
|
||||
pid-file to "named.pid", which will put the file in the directory
|
||||
specified by the directory option (which, in this case, must be writable
|
||||
by the named user).
|
||||
|
||||
|
||||
Q: When I do a "dig . ns", many of the A records for the root
|
||||
servers are missing. Why?
|
||||
|
||||
A: This is normal and harmless. It is a somewhat confusing side effect
|
||||
of the way BIND 9 does RFC2181 trust ranking and of the efforts BIND 9
|
||||
makes to avoid promoting glue into answers.
|
||||
|
||||
When BIND 9 first starts up and primes its cache, it receives the root
|
||||
server addresses as additional data in an authoritative response from
|
||||
a root server, and these records are eligible for inclusion as
|
||||
additional data in responses. Subsequently it receives a subset of
|
||||
the root server addresses as additional data in a non-authoritative
|
||||
(referral) response from a root server. This causes the addresses to
|
||||
now be considered non-authoritative (glue) data, which is not eligible
|
||||
for inclusion in responses.
|
||||
|
||||
The server does have a complete set of root server addresses cached
|
||||
at all times, it just may not include all of them as additional data,
|
||||
depending on whether they were last received as answers or as glue.
|
||||
You can always look up the addresses with explicit queries like
|
||||
"dig a.root-servers.net A".
|
||||
|
||||
|
||||
Q: Zone transfers from my BIND 9 master to my Windows 2000 slave
|
||||
fail. Why?
|
||||
|
||||
A: This may be caused by a bug in the Windows 2000 DNS server where
|
||||
DNS messages larger than 16K are not handled properly. This can be
|
||||
worked around by setting the option "transfer-format one-answer;".
|
||||
Also check whether your zone contains domain names with embedded
|
||||
spaces or other special characters, like "John\032Doe\213s\032Computer",
|
||||
since such names have been known to cause Windows 2000 slaves to
|
||||
incorrectly reject the zone.
|
||||
|
||||
|
||||
Q: Why don't my zones reload when I do an "rndc reload" or SIGHUP?
|
||||
|
||||
A: A zone can be updated either by editing zone files and reloading
|
||||
the server or by dynamic update, but not both. If you have enabled
|
||||
dynamic update for a zone using the "allow-update" option, you are not
|
||||
supposed to edit the zone file by hand, and the server will not
|
||||
attempt to reload it.
|
||||
|
||||
|
||||
Q: I can query the nameserver from the nameserver but not from other
|
||||
machines. Why?
|
||||
|
||||
A: This is usually the result of the firewall configuration stopping
|
||||
the queries and / or the replies.
|
||||
|
||||
|
||||
Q: How can I make a server a slave for both an internal and
|
||||
an external view at the same time? When I tried, both views
|
||||
on the slave were transfered from the same view on the master.
|
||||
|
||||
A: You will need to give the master and slave multiple IP addresses and
|
||||
use those to make sure you reach the correct view on the other machine.
|
||||
|
||||
e.g.
|
||||
Master: 10.0.1.1 (internal), 10.0.1.2 (external, IP alias)
|
||||
internal:
|
||||
match-clients { !10.0.1.2; !10.0.1.4; 10.0.1/24; };
|
||||
notify-source 10.0.1.1;
|
||||
transfer-source 10.0.1.1;
|
||||
query-source 10.0.1.1;
|
||||
external:
|
||||
match-clients { any; };
|
||||
recursion no; // don't offer recursion to the world
|
||||
notify-source 10.0.1.2;
|
||||
transfer-source 10.0.1.2;
|
||||
query-source 10.0.1.2;
|
||||
|
||||
Slave: 10.0.1.3 (internal), 10.0.1.4 (external, IP alias)
|
||||
internal:
|
||||
match-clients { !10.0.1.2; !10.0.1.4; 10.0.1/24; };
|
||||
notify-source 10.0.1.3;
|
||||
transfer-source 10.0.1.3;
|
||||
query-source 10.0.1.3;
|
||||
external:
|
||||
match-clients { any; };
|
||||
recursion no; // don't offer recursion to the world
|
||||
notify-source 10.0.1.4;
|
||||
transfer-source 10.0.1.4;
|
||||
query-source 10.0.1.4;
|
||||
|
||||
You put the external address on the alias so that all the other
|
||||
dns clients on these boxes see the internal view by default.
|
||||
|
||||
|
||||
Q: When I try to use rndc, I get the error message "network
|
||||
unreachable" or "connection refused", even though I know named is
|
||||
running.
|
||||
|
||||
A: You probably have "default-server localhost" in /etc/rndc.conf,
|
||||
your /etc/hosts or DNS maps "localhost" to both the IPv4 loopback
|
||||
address 127.0.0.1 and the IPv6 loopback address ::1, and you do not
|
||||
have IPv6 fully operational. Change the "default-server localhost" to
|
||||
"default-server 127.0.0.1" to make sure rdnc does not try to contact
|
||||
the name server using IPv6.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
BIND 9
|
||||
|
||||
BIND version 9 is a major rewrite of nearly all aspects of the
|
||||
@@ -42,13 +41,13 @@ BIND 9
|
||||
U.S. Defense Information Systems Agency
|
||||
USENIX Association
|
||||
Stichting NLnet - NLnet Foundation
|
||||
Nominum, Inc.
|
||||
|
||||
|
||||
BIND 9.2.0
|
||||
|
||||
BIND 9.2.0a3
|
||||
|
||||
BIND 9.2.0a3 is an alpha release of BIND 9.2.0.
|
||||
It includes a number of new features over 9.1, including:
|
||||
BIND 9.2.0 introduces a number of new features over 9.1,
|
||||
including:
|
||||
|
||||
- The size of the cache can now be limited using the
|
||||
"max-cache-size" option.
|
||||
@@ -85,6 +84,10 @@ BIND 9.2.0a3
|
||||
This does not apply to the use of TSIG, which does not
|
||||
require OpenSSL.
|
||||
|
||||
- The source distribution now builds on Windows NT/2000.
|
||||
See win32utils/readme1.txt and win32utils/win32-build.txt
|
||||
for details.
|
||||
|
||||
This distribution also includes a new lightweight stub
|
||||
resolver library and associated resolver daemon that fully
|
||||
support forward and reverse lookups of both IPv4 and IPv6
|
||||
@@ -131,6 +134,7 @@ BIND 9.2.0a3
|
||||
For a detailed list of user-visible changes from
|
||||
previous releases, see the CHANGES file.
|
||||
|
||||
|
||||
Building
|
||||
|
||||
BIND 9 currently requires a UNIX system with an ANSI C compiler,
|
||||
@@ -142,21 +146,28 @@ Building
|
||||
COMPAQ Tru64 UNIX 4.0D
|
||||
COMPAQ Tru64 UNIX 5 (with IPv6 EAK)
|
||||
FreeBSD 3.4-STABLE, 3.5, 4.0, 4.1
|
||||
HP-UX 11
|
||||
HP-UX 11.x, x < 11
|
||||
IRIX64 6.5
|
||||
NetBSD 1.5
|
||||
Red Hat Linux 6.0, 6.1, 6.2, 7.0
|
||||
Solaris 2.6, 7, 8
|
||||
Windows NT/W2K
|
||||
|
||||
HP-UX 11.11 is not yet supported due to its incompatible
|
||||
SIOCGLIFCONF ioctl.
|
||||
|
||||
Additionally, we have unverified reports of success building
|
||||
previous versions of BIND 9 from users of the following systems:
|
||||
|
||||
AIX 5L
|
||||
SuSE Linux 7.0
|
||||
Slackware Linux 7.x
|
||||
Slackware Linux 7.x, 8.0
|
||||
Red Hat Linux 7.1
|
||||
OpenBSD 2.6, 2.8, -current
|
||||
OpenBSD 2.6, 2.8, 2.9
|
||||
UnixWare 7.1.1
|
||||
HP-UX 10.20
|
||||
BSD/OS 4.2
|
||||
OpenUNIX 8
|
||||
|
||||
To build, just
|
||||
|
||||
@@ -188,7 +199,8 @@ Building
|
||||
To build shared libraries, specify "--with-libtool" on the
|
||||
configure command line.
|
||||
|
||||
To build with DNSSEC support, you must have OpenSSL 0.9.5a
|
||||
For the server to support DNSSEC, you need to build it
|
||||
with crypto support. You must have OpenSSL 0.9.5a
|
||||
or newer installed and specify "--with-openssl" on the
|
||||
configure command line. If OpenSSL is installed under
|
||||
a nonstandard prefix, you can tell configure where to
|
||||
@@ -237,6 +249,7 @@ Building
|
||||
on your system, and some require Perl; see bin/tests/system/README
|
||||
for details.
|
||||
|
||||
|
||||
Documentation
|
||||
|
||||
The BIND 9 Administrator Reference Manual is included with the
|
||||
@@ -254,6 +267,7 @@ Documentation
|
||||
|
||||
|
||||
Bug Reports and Mailing Lists
|
||||
|
||||
Bugs reports should be sent to
|
||||
|
||||
bind9-bugs@isc.org
|
||||
|
||||
+10
-4
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: acconfig.h,v 1.34 2001/07/04 00:34:40 bwelling Exp $ */
|
||||
/* $Id: acconfig.h,v 1.35.2.1 2001/10/22 23:28:07 gson Exp $ */
|
||||
|
||||
/***
|
||||
*** This file is not to be included by any public header files, because
|
||||
@@ -23,6 +23,9 @@
|
||||
***/
|
||||
@TOP@
|
||||
|
||||
/* define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef ssize_t
|
||||
|
||||
/* define on DEC OSF to enable 4.4BSD style sa_len support */
|
||||
#undef _SOCKADDR_LEN
|
||||
|
||||
@@ -44,6 +47,9 @@
|
||||
/* define if sysconf() is available */
|
||||
#undef HAVE_SYSCONF
|
||||
|
||||
/* define if sysctlbyname() is available */
|
||||
#undef HAVE_SYSCTLBYNAME
|
||||
|
||||
/* define if catgets() is available */
|
||||
#undef HAVE_CATGETS
|
||||
|
||||
@@ -84,9 +90,6 @@
|
||||
/* define if getc_unlocked() is available */
|
||||
#undef HAVE_GETCUNLOCKED
|
||||
|
||||
/* define if rlim_t is defined via sys/types.h or sys/resource.h */
|
||||
#undef HAVE_RLIM_T
|
||||
|
||||
/* Shut up warnings about sputaux in stdio.h on BSD/OS pre-4.1 */
|
||||
#undef SHUTUP_SPUTAUX
|
||||
#ifdef SHUTUP_SPUTAUX
|
||||
@@ -123,3 +126,6 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
|
||||
/* define if pthread_attr_getstacksize() is available */
|
||||
#undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
|
||||
|
||||
/* define if you have strerror in the C library. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: Makefile.in,v 1.14 2001/06/29 01:04:53 gson Exp $
|
||||
# $Id: Makefile.in,v 1.15 2001/07/27 17:45:27 gson Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
@@ -25,7 +25,7 @@ top_srcdir = @top_srcdir@
|
||||
|
||||
CINCLUDES = ${DNS_INCLUDES} ${ISCCFG_INCLUDES} ${ISC_INCLUDES}
|
||||
|
||||
CDEFINES = -DNS_SYSCONFDIR=\"${sysconfdir}\"
|
||||
CDEFINES = -DNAMED_CONFFILE=\"${sysconfdir}/named.conf\"
|
||||
CWARNINGS =
|
||||
|
||||
DNSLIBS = ../../lib/dns/libdns.@A@ @DNS_OPENSSL_LIBS@ @DNS_GSSAPI_LIBS@
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: named-checkconf.c,v 1.9 2001/06/29 01:04:55 gson Exp $ */
|
||||
/* $Id: named-checkconf.c,v 1.12 2001/07/27 17:45:26 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
#include "check-tool.h"
|
||||
|
||||
isc_log_t *log = NULL;
|
||||
isc_log_t *logc = NULL;
|
||||
|
||||
static void
|
||||
usage(void) {
|
||||
@@ -60,7 +60,7 @@ directory_callback(const char *clausename, cfg_obj_t *obj, void *arg) {
|
||||
directory = cfg_obj_asstring(obj);
|
||||
result = isc_dir_chdir(directory);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
cfg_obj_log(obj, log, ISC_LOG_ERROR,
|
||||
cfg_obj_log(obj, logc, ISC_LOG_ERROR,
|
||||
"change directory to '%s' failed: %s",
|
||||
directory, isc_result_totext(result));
|
||||
return (result);
|
||||
@@ -77,6 +77,7 @@ main(int argc, char **argv) {
|
||||
const char *conffile = NULL;
|
||||
isc_mem_t *mctx = NULL;
|
||||
isc_result_t result;
|
||||
int exit_status = 0;
|
||||
|
||||
while ((c = isc_commandline_parse(argc, argv, "t:v")) != EOF) {
|
||||
switch (c) {
|
||||
@@ -107,13 +108,13 @@ main(int argc, char **argv) {
|
||||
if (argv[isc_commandline_index] != NULL)
|
||||
conffile = argv[isc_commandline_index];
|
||||
if (conffile == NULL || conffile[0] == '\0')
|
||||
conffile = NS_SYSCONFDIR "/named.conf";
|
||||
conffile = NAMED_CONFFILE;
|
||||
|
||||
RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
|
||||
|
||||
RUNTIME_CHECK(setup_logging(mctx, &log) == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(setup_logging(mctx, &logc) == ISC_R_SUCCESS);
|
||||
|
||||
RUNTIME_CHECK(cfg_parser_create(mctx, log, &parser) == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(cfg_parser_create(mctx, logc, &parser) == ISC_R_SUCCESS);
|
||||
|
||||
cfg_parser_setcallback(parser, directory_callback, NULL);
|
||||
|
||||
@@ -121,15 +122,17 @@ main(int argc, char **argv) {
|
||||
ISC_R_SUCCESS)
|
||||
exit(1);
|
||||
|
||||
RUNTIME_CHECK(cfg_check_namedconf(config, log, mctx) == ISC_R_SUCCESS);
|
||||
result = cfg_check_namedconf(config, logc, mctx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
exit_status = 1;
|
||||
|
||||
cfg_obj_destroy(parser, &config);
|
||||
|
||||
cfg_parser_destroy(&parser);
|
||||
|
||||
isc_log_destroy(&log);
|
||||
isc_log_destroy(&logc);
|
||||
|
||||
isc_mem_destroy(&mctx);
|
||||
|
||||
return (0);
|
||||
return (exit_status);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
# Microsoft Developer Studio Project File - Name="namedcheckconf" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=namedcheckconf - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckconf.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckconf.mak" CFG="namedcheckconf - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "namedcheckconf - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "namedcheckconf - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "namedcheckconf - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isccfg/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /FR /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/isccfg/win32/Release/libisccfg.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/named-checkconf.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "namedcheckconf - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isccfg/include" /D "_DEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/isccfg/win32/Debug/libisccfg.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/named-checkconf.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "namedcheckconf - Win32 Release"
|
||||
# Name "namedcheckconf - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\check-tool.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\named-checkconf.c"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\check-tool.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "namedcheckconf"=".\namedcheckconf.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on namedcheckconf.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=namedcheckconf - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to namedcheckconf - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "namedcheckconf - Win32 Release" && "$(CFG)" != "namedcheckconf - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckconf.mak" CFG="namedcheckconf - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "namedcheckconf - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "namedcheckconf - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "namedcheckconf - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Release
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Release\named-checkconf.exe" "$(OUTDIR)\namedcheckconf.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\check-tool.obj"
|
||||
-@erase "$(INTDIR)\check-tool.sbr"
|
||||
-@erase "$(INTDIR)\named-checkconf.obj"
|
||||
-@erase "$(INTDIR)\named-checkconf.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(OUTDIR)\namedcheckconf.bsc"
|
||||
-@erase "..\..\..\Build\Release\named-checkconf.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isccfg/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\namedcheckconf.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\namedcheckconf.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\check-tool.sbr" \
|
||||
"$(INTDIR)\named-checkconf.sbr"
|
||||
|
||||
"$(OUTDIR)\namedcheckconf.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/isccfg/win32/Release/libisccfg.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\named-checkconf.pdb" /machine:I386 /out:"../../../Build/Release/named-checkconf.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\check-tool.obj" \
|
||||
"$(INTDIR)\named-checkconf.obj"
|
||||
|
||||
"..\..\..\Build\Release\named-checkconf.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "namedcheckconf - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\named-checkconf.exe" "$(OUTDIR)\namedcheckconf.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\check-tool.obj"
|
||||
-@erase "$(INTDIR)\check-tool.sbr"
|
||||
-@erase "$(INTDIR)\named-checkconf.obj"
|
||||
-@erase "$(INTDIR)\named-checkconf.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\named-checkconf.pdb"
|
||||
-@erase "$(OUTDIR)\namedcheckconf.bsc"
|
||||
-@erase "..\..\..\Build\Debug\named-checkconf.exe"
|
||||
-@erase "..\..\..\Build\Debug\named-checkconf.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isccfg/include" /D "_DEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\namedcheckconf.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\check-tool.sbr" \
|
||||
"$(INTDIR)\named-checkconf.sbr"
|
||||
|
||||
"$(OUTDIR)\namedcheckconf.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/isccfg/win32/Debug/libisccfg.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\named-checkconf.pdb" /debug /machine:I386 /out:"../../../Build/Debug/named-checkconf.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\check-tool.obj" \
|
||||
"$(INTDIR)\named-checkconf.obj"
|
||||
|
||||
"..\..\..\Build\Debug\named-checkconf.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("namedcheckconf.dep")
|
||||
!INCLUDE "namedcheckconf.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "namedcheckconf.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "namedcheckconf - Win32 Release" || "$(CFG)" == "namedcheckconf - Win32 Debug"
|
||||
SOURCE="..\check-tool.c"
|
||||
|
||||
"$(INTDIR)\check-tool.obj" "$(INTDIR)\check-tool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE="..\named-checkconf.c"
|
||||
|
||||
"$(INTDIR)\named-checkconf.obj" "$(INTDIR)\named-checkconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
# Microsoft Developer Studio Project File - Name="namedcheckzone" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=namedcheckzone - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckzone.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckzone.mak" CFG="namedcheckzone - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "namedcheckzone - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "namedcheckzone - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "namedcheckzone - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /FR /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/named-checkzone.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "namedcheckzone - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /D "_DEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/named-checkzone.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "namedcheckzone - Win32 Release"
|
||||
# Name "namedcheckzone - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\check-tool.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\named-checkzone.c"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\check-tool.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "namedcheckzone"=".\namedcheckzone.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on namedcheckzone.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=namedcheckzone - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to namedcheckzone - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "namedcheckzone - Win32 Release" && "$(CFG)" != "namedcheckzone - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "namedcheckzone.mak" CFG="namedcheckzone - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "namedcheckzone - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "namedcheckzone - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "namedcheckzone - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Release
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Release\named-checkzone.exe" "$(OUTDIR)\namedcheckzone.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\check-tool.obj"
|
||||
-@erase "$(INTDIR)\check-tool.sbr"
|
||||
-@erase "$(INTDIR)\named-checkzone.obj"
|
||||
-@erase "$(INTDIR)\named-checkzone.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(OUTDIR)\namedcheckzone.bsc"
|
||||
-@erase "..\..\..\Build\Release\named-checkzone.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\namedcheckzone.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\namedcheckzone.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\check-tool.sbr" \
|
||||
"$(INTDIR)\named-checkzone.sbr"
|
||||
|
||||
"$(OUTDIR)\namedcheckzone.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\named-checkzone.pdb" /machine:I386 /out:"../../../Build/Release/named-checkzone.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\check-tool.obj" \
|
||||
"$(INTDIR)\named-checkzone.obj"
|
||||
|
||||
"..\..\..\Build\Release\named-checkzone.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "namedcheckzone - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\named-checkzone.exe" "$(OUTDIR)\namedcheckzone.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\check-tool.obj"
|
||||
-@erase "$(INTDIR)\check-tool.sbr"
|
||||
-@erase "$(INTDIR)\named-checkzone.obj"
|
||||
-@erase "$(INTDIR)\named-checkzone.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\named-checkzone.pdb"
|
||||
-@erase "$(OUTDIR)\namedcheckzone.bsc"
|
||||
-@erase "..\..\..\Build\Debug\named-checkzone.exe"
|
||||
-@erase "..\..\..\Build\Debug\named-checkzone.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /D "_DEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\namedcheckzone.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\check-tool.sbr" \
|
||||
"$(INTDIR)\named-checkzone.sbr"
|
||||
|
||||
"$(OUTDIR)\namedcheckzone.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\named-checkzone.pdb" /debug /machine:I386 /out:"../../../Build/Debug/named-checkzone.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\check-tool.obj" \
|
||||
"$(INTDIR)\named-checkzone.obj"
|
||||
|
||||
"..\..\..\Build\Debug\named-checkzone.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("namedcheckzone.dep")
|
||||
!INCLUDE "namedcheckzone.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "namedcheckzone.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "namedcheckzone - Win32 Release" || "$(CFG)" == "namedcheckzone - Win32 Debug"
|
||||
SOURCE="..\check-tool.c"
|
||||
|
||||
"$(INTDIR)\check-tool.obj" "$(INTDIR)\check-tool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE="..\named-checkzone.c"
|
||||
|
||||
"$(INTDIR)\named-checkzone.obj" "$(INTDIR)\named-checkzone.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
+5
-3
@@ -59,8 +59,9 @@ A typical invocation of \fBdig\fR looks like:
|
||||
where:
|
||||
.TP
|
||||
\fBserver\fR
|
||||
is the name or IP address of the name server to query. An IPv4
|
||||
address can be provided in dotted-decimal notation. When the supplied
|
||||
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
|
||||
\fIserver\fR argument is a hostname,
|
||||
\fBdig\fR resolves that name before querying that name
|
||||
server. If no \fIserver\fR argument is provided,
|
||||
@@ -317,7 +318,8 @@ should be applied to that query.
|
||||
A global set of query options, which should be applied to all queries,
|
||||
can also be supplied. These global query options must precede the
|
||||
first tuple of name, class, type, options, flags, and query options
|
||||
supplied on the command line. Any global query options can be
|
||||
supplied on the command line. Any global query options (except
|
||||
the \fB+[no]cmd\fR option) can be
|
||||
overridden by a query-specific set of query options. For example:
|
||||
.sp
|
||||
.nf
|
||||
|
||||
+43
-86
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dig.c,v 1.149 2001/07/01 23:47:49 bwelling Exp $ */
|
||||
/* $Id: dig.c,v 1.157.2.3 2001/11/15 01:24:10 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
#include <stdlib.h>
|
||||
@@ -60,8 +60,6 @@ extern in_port_t port;
|
||||
extern unsigned int timeout;
|
||||
extern isc_mem_t *mctx;
|
||||
extern dns_messageid_t id;
|
||||
extern char *rootspace[BUFSIZE];
|
||||
extern isc_buffer_t rootbuf;
|
||||
extern int sendcount;
|
||||
extern int ndots;
|
||||
extern int tries;
|
||||
@@ -79,19 +77,16 @@ extern isc_boolean_t free_now;
|
||||
dig_lookup_t *default_lookup = NULL;
|
||||
|
||||
extern isc_boolean_t debugging, memdebugging;
|
||||
char *batchname = NULL;
|
||||
FILE *batchfp = NULL;
|
||||
char *argv0;
|
||||
static char *batchname = NULL;
|
||||
static FILE *batchfp = NULL;
|
||||
static char *argv0;
|
||||
|
||||
char domainopt[DNS_NAME_MAXTEXT];
|
||||
static char domainopt[DNS_NAME_MAXTEXT];
|
||||
|
||||
isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
|
||||
static isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
|
||||
nibble = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
|
||||
multiline = ISC_FALSE;
|
||||
|
||||
isc_uint16_t bufsize = 0;
|
||||
isc_boolean_t forcecomment = ISC_FALSE;
|
||||
|
||||
static const char *opcodetext[] = {
|
||||
"QUERY",
|
||||
"IQUERY",
|
||||
@@ -189,6 +184,7 @@ help(void) {
|
||||
" +[no]answer (Control display of answer)\n"
|
||||
" +[no]authority (Control display of authority)\n"
|
||||
" +[no]additional (Control display of additional)\n"
|
||||
" +[no]stats (Control display of statistics)\n"
|
||||
" +[no]short (Disable everything except short\n"
|
||||
" form of answer)\n"
|
||||
" +[no]all (Set or clear all display flags)\n"
|
||||
@@ -219,7 +215,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
result = isc_time_now(&now);
|
||||
check_result(result, "isc_time_now");
|
||||
|
||||
if (query->lookup->stats) {
|
||||
if (query->lookup->stats && !short_form) {
|
||||
diff = isc_time_microdiff(&now, &query->time_sent);
|
||||
printf(";; Query time: %ld msec\n", (long int)diff/1000);
|
||||
printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
|
||||
@@ -255,8 +251,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query) {
|
||||
* XXX print_trying
|
||||
*/
|
||||
void
|
||||
trying(int frmsize, char *frm, dig_lookup_t *lookup) {
|
||||
UNUSED(frmsize);
|
||||
trying(char *frm, dig_lookup_t *lookup) {
|
||||
UNUSED(frm);
|
||||
UNUSED(lookup);
|
||||
}
|
||||
@@ -351,7 +346,6 @@ short_answer(dns_message_t *msg, dns_messagetextflag_t flags,
|
||||
*/
|
||||
isc_result_t
|
||||
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
isc_boolean_t did_flag = ISC_FALSE;
|
||||
isc_result_t result;
|
||||
dns_messagetextflag_t flags;
|
||||
isc_buffer_t *buf = NULL;
|
||||
@@ -364,7 +358,8 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
style = &dns_master_style_debug;
|
||||
|
||||
if (query->lookup->cmdline[0] != 0) {
|
||||
fputs(query->lookup->cmdline, stdout);
|
||||
if (!short_form)
|
||||
fputs(query->lookup->cmdline, stdout);
|
||||
query->lookup->cmdline[0]=0;
|
||||
}
|
||||
debug("printmessage(%s %s %s)", headers ? "headers" : "noheaders",
|
||||
@@ -397,34 +392,21 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
"id: %u\n",
|
||||
opcodetext[msg->opcode], rcodetext[msg->rcode],
|
||||
msg->id);
|
||||
printf(";; flags: ");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) {
|
||||
printf("qr");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) {
|
||||
printf("%saa", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE; }
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {
|
||||
printf("%stc", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {
|
||||
printf("%srd", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) {
|
||||
printf("%sra", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) {
|
||||
printf("%sad", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) {
|
||||
printf("%scd", did_flag ? " " : "");
|
||||
did_flag = ISC_TRUE;
|
||||
}
|
||||
printf(";; flags:");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0)
|
||||
printf(" qr");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0)
|
||||
printf(" aa");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0)
|
||||
printf(" tc");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0)
|
||||
printf(" rd");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0)
|
||||
printf(" ra");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0)
|
||||
printf(" ad");
|
||||
if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0)
|
||||
printf(" cd");
|
||||
|
||||
printf("; QUERY: %u, ANSWER: %u, "
|
||||
"AUTHORITY: %u, ADDITIONAL: %u\n",
|
||||
@@ -606,7 +588,7 @@ reorder_args(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
static isc_uint32_t
|
||||
parse_int(char *arg, const char *desc, isc_uint32_t max) {
|
||||
parse_uint(char *arg, const char *desc, isc_uint32_t max) {
|
||||
char *endp;
|
||||
isc_uint32_t tmp;
|
||||
|
||||
@@ -670,6 +652,8 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
lookup->section_answer = state;
|
||||
lookup->section_additional = state;
|
||||
lookup->comments = state;
|
||||
lookup->stats = state;
|
||||
printcmd = state;
|
||||
break;
|
||||
case 'n': /* answer */
|
||||
lookup->section_answer = state;
|
||||
@@ -691,10 +675,8 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
lookup->udpsize = (isc_uint16_t) parse_int(value, "buffer size",
|
||||
COMMSIZE);
|
||||
if (lookup->udpsize <= 0)
|
||||
lookup->udpsize = 0;
|
||||
lookup->udpsize = (isc_uint16_t) parse_uint(value,
|
||||
"buffer size", COMMSIZE);
|
||||
if (lookup->udpsize > COMMSIZE)
|
||||
lookup->udpsize = COMMSIZE;
|
||||
break;
|
||||
@@ -762,9 +744,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
ndots = parse_int(value, "ndots", MAXNDOTS);
|
||||
if (ndots < 0)
|
||||
ndots = 0;
|
||||
ndots = parse_uint(value, "ndots", MAXNDOTS);
|
||||
break;
|
||||
case 's': /* nssearch */
|
||||
lookup->ns_search_only = state;
|
||||
@@ -777,7 +757,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
lookup->section_additional = ISC_FALSE;
|
||||
lookup->section_authority = ISC_FALSE;
|
||||
lookup->section_question = ISC_FALSE;
|
||||
lookup->rdtype = dns_rdatatype_soa;
|
||||
lookup->rdtype = dns_rdatatype_ns;
|
||||
lookup->rdtypeset = ISC_TRUE;
|
||||
short_form = ISC_TRUE;
|
||||
}
|
||||
@@ -813,6 +793,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
if (state) {
|
||||
printcmd = ISC_FALSE;
|
||||
lookup->section_additional = ISC_FALSE;
|
||||
lookup->section_answer = ISC_TRUE;
|
||||
lookup->section_authority = ISC_FALSE;
|
||||
lookup->section_question = ISC_FALSE;
|
||||
lookup->comments = ISC_FALSE;
|
||||
@@ -837,8 +818,8 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
timeout = parse_int(value, "timeout", MAXTIMEOUT);
|
||||
if (timeout <= 0)
|
||||
timeout = parse_uint(value, "timeout", MAXTIMEOUT);
|
||||
if (timeout == 0)
|
||||
timeout = 1;
|
||||
break;
|
||||
case 'r':
|
||||
@@ -861,9 +842,9 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
lookup->retries = parse_int(value, "retries",
|
||||
lookup->retries = parse_uint(value, "retries",
|
||||
MAXTRIES);
|
||||
if (lookup->retries <= 0)
|
||||
if (lookup->retries == 0)
|
||||
lookup->retries = 1;
|
||||
break;
|
||||
default:
|
||||
@@ -875,32 +856,9 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
switch (cmd[1]) {
|
||||
default:
|
||||
case 'c': /* vc, and default */
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
if (!is_batchfile)
|
||||
lookup->tcp_mode = state;
|
||||
break;
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
case 'i': /* view */
|
||||
if (value == NULL)
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
strncpy(lookup->viewname, value, MXNAME);
|
||||
break;
|
||||
}
|
||||
if (!is_batchfile)
|
||||
lookup->tcp_mode = state;
|
||||
break;
|
||||
case 'z': /* zone */
|
||||
if (value == NULL)
|
||||
goto need_value;
|
||||
if (!state)
|
||||
goto invalid_option;
|
||||
strncpy(lookup->zonename, value, MXNAME);
|
||||
break;
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
default:
|
||||
invalid_option:
|
||||
need_value:
|
||||
@@ -990,7 +948,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
||||
keyfile[sizeof(keyfile)-1]=0;
|
||||
return (value_from_next);
|
||||
case 'p':
|
||||
port = (in_port_t) parse_int(value, "port number", MAXPORT);
|
||||
port = (in_port_t) parse_uint(value, "port number", MAXPORT);
|
||||
return (value_from_next);
|
||||
case 't':
|
||||
*open_type_class = ISC_FALSE;
|
||||
@@ -1017,7 +975,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
|
||||
(*lookup)->rdtype = dns_rdatatype_ixfr;
|
||||
(*lookup)->rdtypeset = ISC_TRUE;
|
||||
(*lookup)->ixfr_serial =
|
||||
parse_int(&value[5], "serial number",
|
||||
parse_uint(&value[5], "serial number",
|
||||
MAXSERIAL);
|
||||
(*lookup)->section_question = plusquest;
|
||||
(*lookup)->comments = pluscomm;
|
||||
@@ -1244,7 +1202,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
||||
lookup->rdtype = dns_rdatatype_ixfr;
|
||||
lookup->rdtypeset = ISC_TRUE;
|
||||
lookup->ixfr_serial =
|
||||
parse_int(&rv[0][5],
|
||||
parse_uint(&rv[0][5],
|
||||
"serial number",
|
||||
MAXSERIAL);
|
||||
lookup->section_question = plusquest;
|
||||
@@ -1443,4 +1401,3 @@ main(int argc, char **argv) {
|
||||
isc_app_finish();
|
||||
return (exitcode);
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -16,7 +16,7 @@
|
||||
- WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: dig.docbook,v 1.4 2001/07/12 16:29:11 bwelling Exp $ -->
|
||||
<!-- $Id: dig.docbook,v 1.4.2.1 2001/11/08 00:15:23 gson Exp $ -->
|
||||
|
||||
<refentry>
|
||||
|
||||
@@ -480,7 +480,8 @@ should be applied to that query.
|
||||
A global set of query options, which should be applied to all queries,
|
||||
can also be supplied. These global query options must precede the
|
||||
first tuple of name, class, type, options, flags, and query options
|
||||
supplied on the command line. Any global query options can be
|
||||
supplied on the command line. Any global query options (except
|
||||
the <option>+[no]cmd</option> option) can be
|
||||
overridden by a query-specific set of query options. For example:
|
||||
<programlisting>
|
||||
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
||||
|
||||
+11
-6
@@ -216,8 +216,9 @@ CLASS="CONSTANT"
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
>is the name or IP address of the name server to query. An IPv4
|
||||
address can be provided in dotted-decimal notation. When the supplied
|
||||
>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
|
||||
<TT
|
||||
CLASS="PARAMETER"
|
||||
><I
|
||||
@@ -996,7 +997,11 @@ should be applied to that query.</P
|
||||
>A global set of query options, which should be applied to all queries,
|
||||
can also be supplied. These global query options must precede the
|
||||
first tuple of name, class, type, options, flags, and query options
|
||||
supplied on the command line. Any global query options can be
|
||||
supplied on the command line. Any global query options (except
|
||||
the <TT
|
||||
CLASS="OPTION"
|
||||
>+[no]cmd</TT
|
||||
> option) can be
|
||||
overridden by a query-specific set of query options. For example:
|
||||
<PRE
|
||||
CLASS="PROGRAMLISTING"
|
||||
@@ -1045,7 +1050,7 @@ CLASS="LITERAL"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN337"
|
||||
NAME="AEN338"
|
||||
></A
|
||||
><H2
|
||||
>FILES</H2
|
||||
@@ -1058,7 +1063,7 @@ CLASS="FILENAME"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN341"
|
||||
NAME="AEN342"
|
||||
></A
|
||||
><H2
|
||||
>SEE ALSO</H2
|
||||
@@ -1092,7 +1097,7 @@ CLASS="CITETITLE"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN354"
|
||||
NAME="AEN355"
|
||||
></A
|
||||
><H2
|
||||
>BUGS </H2
|
||||
|
||||
+403
-665
File diff suppressed because it is too large
Load Diff
+30
-48
@@ -15,14 +15,12 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: host.c,v 1.66 2001/03/14 18:08:17 bwelling Exp $ */
|
||||
/* $Id: host.c,v 1.76 2001/08/27 21:31:29 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
||||
extern int h_errno;
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/commandline.h>
|
||||
#include <isc/netaddr.h>
|
||||
@@ -54,7 +52,7 @@ extern int tries;
|
||||
extern char *progname;
|
||||
extern isc_task_t *global_task;
|
||||
|
||||
isc_boolean_t short_form = ISC_TRUE, listed_server = ISC_FALSE;
|
||||
static isc_boolean_t short_form = ISC_TRUE, listed_server = ISC_FALSE;
|
||||
|
||||
static const char *opcodetext[] = {
|
||||
"QUERY",
|
||||
@@ -240,50 +238,53 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query)
|
||||
isc_sockaddr_format(from, fromtext, sizeof(fromtext));
|
||||
result = isc_time_now(&now);
|
||||
check_result(result, "isc_time_now");
|
||||
diff = isc_time_microdiff(&now, &query->time_sent);
|
||||
diff = (int) isc_time_microdiff(&now, &query->time_sent);
|
||||
printf("Received %u bytes from %s in %d ms\n",
|
||||
bytes, fromtext, diff/1000);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
trying(int frmsize, char *frm, dig_lookup_t *lookup) {
|
||||
trying(char *frm, dig_lookup_t *lookup) {
|
||||
UNUSED(lookup);
|
||||
|
||||
if (!short_form)
|
||||
printf("Trying \"%.*s\"\n", frmsize, frm);
|
||||
printf("Trying \"%s\"\n", frm);
|
||||
}
|
||||
|
||||
static void
|
||||
say_message(dns_name_t *name, const char *msg, dns_rdata_t *rdata,
|
||||
dig_query_t *query)
|
||||
{
|
||||
isc_buffer_t *b = NULL, *b2 = NULL;
|
||||
isc_region_t r, r2;
|
||||
isc_buffer_t *b = NULL;
|
||||
char namestr[DNS_NAME_FORMATSIZE];
|
||||
isc_region_t r;
|
||||
isc_result_t result;
|
||||
unsigned int bufsize = BUFSIZ;
|
||||
|
||||
result = isc_buffer_allocate(mctx, &b, BUFSIZE);
|
||||
dns_name_format(name, namestr, sizeof(namestr));
|
||||
retry:
|
||||
result = isc_buffer_allocate(mctx, &b, bufsize);
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
result = isc_buffer_allocate(mctx, &b2, BUFSIZE);
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
result = dns_name_totext(name, ISC_FALSE, b);
|
||||
check_result(result, "dns_name_totext");
|
||||
isc_buffer_usedregion(b, &r);
|
||||
result = dns_rdata_totext(rdata, NULL, b2);
|
||||
result = dns_rdata_totext(rdata, NULL, b);
|
||||
if (result == ISC_R_NOSPACE) {
|
||||
isc_buffer_free(&b);
|
||||
bufsize *= 2;
|
||||
goto retry;
|
||||
}
|
||||
check_result(result, "dns_rdata_totext");
|
||||
isc_buffer_usedregion(b2, &r2);
|
||||
isc_buffer_usedregion(b, &r);
|
||||
if (query->lookup->identify_previous_line) {
|
||||
printf("Nameserver %s:\n\t",
|
||||
query->servname);
|
||||
}
|
||||
printf("%.*s %s %.*s", (int)r.length, (char *)r.base,
|
||||
msg, (int)r2.length, (char *)r2.base);
|
||||
printf("%s %s %.*s", namestr,
|
||||
msg, (int)r.length, (char *)r.base);
|
||||
if (query->lookup->identify) {
|
||||
printf(" on server %s", query->servname);
|
||||
}
|
||||
printf("\n");
|
||||
isc_buffer_free(&b);
|
||||
isc_buffer_free(&b2);
|
||||
}
|
||||
|
||||
|
||||
@@ -417,44 +418,25 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
|
||||
dns_rdataset_t *opt, *tsig = NULL;
|
||||
dns_name_t *tsigname;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
isc_buffer_t *b = NULL;
|
||||
isc_region_t r;
|
||||
|
||||
UNUSED(headers);
|
||||
|
||||
/*
|
||||
* Special case. If we're doing an ns_search_only query, but we're
|
||||
* still following pointers, haven't gotten to the real NS records
|
||||
* yet, don't print anything.
|
||||
*/
|
||||
if (query->lookup->ns_search_only && !query->lookup->ns_search_only_leafnode)
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
if (listed_server) {
|
||||
char sockstr[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
printf("Using domain server:\n");
|
||||
printf("Name: %s\n", query->servname);
|
||||
result = isc_buffer_allocate(mctx, &b, MXNAME);
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
result = isc_sockaddr_totext(&query->sockaddr, b);
|
||||
check_result(result, "isc_sockaddr_totext");
|
||||
printf("Address: %.*s\n",
|
||||
(int)isc_buffer_usedlength(b),
|
||||
(char*)isc_buffer_base(b));
|
||||
isc_buffer_free(&b);
|
||||
isc_sockaddr_format(&query->sockaddr, sockstr,
|
||||
sizeof(sockstr));
|
||||
printf("Address: %s\n", sockstr);
|
||||
printf("Aliases: \n\n");
|
||||
}
|
||||
|
||||
if (msg->rcode != 0) {
|
||||
result = isc_buffer_allocate(mctx, &b, MXNAME);
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
result = dns_name_totext(query->lookup->name, ISC_FALSE,
|
||||
b);
|
||||
check_result(result, "dns_name_totext");
|
||||
isc_buffer_usedregion(b, &r);
|
||||
printf("Host %.*s not found: %d(%s)\n",
|
||||
(int)r.length, (char *)r.base,
|
||||
char namestr[DNS_NAME_FORMATSIZE];
|
||||
dns_name_format(query->lookup->name, namestr, sizeof(namestr));
|
||||
printf("Host %s not found: %d(%s)\n", namestr,
|
||||
msg->rcode, rcodetext[msg->rcode]);
|
||||
isc_buffer_free(&b);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
if (!short_form) {
|
||||
@@ -641,7 +623,7 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
|
||||
break;
|
||||
case 'C':
|
||||
debug("showing all SOAs");
|
||||
lookup->rdtype = dns_rdatatype_soa;
|
||||
lookup->rdtype = dns_rdatatype_ns;
|
||||
lookup->rdtypeset = ISC_TRUE;
|
||||
lookup->rdclass = dns_rdataclass_in;
|
||||
lookup->rdclassset = ISC_TRUE;
|
||||
|
||||
+15
-14
@@ -15,16 +15,19 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dig.h,v 1.67 2001/02/17 01:05:30 gson Exp $ */
|
||||
/* $Id: dig.h,v 1.71.2.3 2001/11/15 01:24:13 marka Exp $ */
|
||||
|
||||
#ifndef DIG_H
|
||||
#define DIG_H
|
||||
|
||||
#include <dns/rdatalist.h>
|
||||
|
||||
#include <dst/dst.h>
|
||||
|
||||
#include <isc/boolean.h>
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/bufferlist.h>
|
||||
#include <isc/formatcheck.h>
|
||||
#include <isc/lang.h>
|
||||
#include <isc/list.h>
|
||||
#include <isc/mem.h>
|
||||
@@ -37,7 +40,9 @@
|
||||
#define MXRD 32
|
||||
#define BUFSIZE 512
|
||||
#define COMMSIZE 0xffff
|
||||
#define RESOLVCONF "/etc/resolv.conf"
|
||||
#ifndef RESOLV_CONF
|
||||
#define RESOLV_CONF "/etc/resolv.conf"
|
||||
#endif
|
||||
#define OUTPUTBUF 32767
|
||||
#define MAXRRLIMIT 0xffffffff
|
||||
#define MAXTIMEOUT 0xffff
|
||||
@@ -82,8 +87,7 @@ struct dig_lookup {
|
||||
pending, /* Pending a successful answer */
|
||||
waiting_connect,
|
||||
doing_xfr,
|
||||
ns_search_only,
|
||||
ns_search_only_leafnode,
|
||||
ns_search_only, /* dig +nssearch, host -C */
|
||||
identify, /* Append an "on server <foo>" message */
|
||||
identify_previous_line, /* Prepend a "Nameserver <foo>:"
|
||||
message, with newline and tab */
|
||||
@@ -92,8 +96,8 @@ struct dig_lookup {
|
||||
aaonly,
|
||||
adflag,
|
||||
cdflag,
|
||||
trace,
|
||||
trace_root,
|
||||
trace, /* dig +trace */
|
||||
trace_root, /* initial query for either +trace or +nssearch */
|
||||
tcp_mode,
|
||||
nibble,
|
||||
comments,
|
||||
@@ -109,6 +113,7 @@ struct dig_lookup {
|
||||
char textname[MXNAME]; /* Name we're going to be looking up */
|
||||
char cmdline[MXNAME];
|
||||
dns_rdatatype_t rdtype;
|
||||
dns_rdatatype_t qrdtype;
|
||||
dns_rdataclass_t rdclass;
|
||||
isc_boolean_t rdtypeset;
|
||||
isc_boolean_t rdclassset;
|
||||
@@ -135,10 +140,6 @@ struct dig_lookup {
|
||||
isc_uint32_t ixfr_serial;
|
||||
isc_buffer_t rdatabuf;
|
||||
char rdatastore[MXNAME];
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
char zonename[MXNAME];
|
||||
char viewname[MXNAME];
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
dst_context_t *tsigctx;
|
||||
isc_buffer_t *querysig;
|
||||
isc_uint32_t msgcounter;
|
||||
@@ -188,13 +189,13 @@ void
|
||||
get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr);
|
||||
|
||||
isc_result_t
|
||||
get_reverse(char reverse[MXNAME], char *value, isc_boolean_t nibble);
|
||||
get_reverse(char *reverse, char *value, isc_boolean_t nibble);
|
||||
|
||||
void
|
||||
fatal(const char *format, ...);
|
||||
fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
void
|
||||
debug(const char *format, ...);
|
||||
debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
void
|
||||
check_result(isc_result_t result, const char *msg);
|
||||
@@ -264,7 +265,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query);
|
||||
*/
|
||||
|
||||
void
|
||||
trying(int frmsize, char *frm, dig_lookup_t *lookup);
|
||||
trying(char *frm, dig_lookup_t *lookup);
|
||||
|
||||
void
|
||||
dighost_shutdown(void);
|
||||
|
||||
+21
-37
@@ -15,14 +15,12 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: nslookup.c,v 1.82 2001/03/16 22:13:41 bwelling Exp $ */
|
||||
/* $Id: nslookup.c,v 1.90 2001/07/30 01:09:14 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
extern int h_errno;
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/commandline.h>
|
||||
@@ -49,14 +47,11 @@ extern ISC_LIST(dig_lookup_t) lookup_list;
|
||||
extern ISC_LIST(dig_server_t) server_list;
|
||||
extern ISC_LIST(dig_searchlist_t) search_list;
|
||||
|
||||
extern isc_boolean_t have_ipv6,
|
||||
usesearch, trace, qr, debugging;
|
||||
extern isc_boolean_t have_ipv6, usesearch, qr, debugging;
|
||||
extern in_port_t port;
|
||||
extern unsigned int timeout;
|
||||
extern isc_mem_t *mctx;
|
||||
extern dns_messageid_t id;
|
||||
extern char *rootspace[BUFSIZE];
|
||||
extern isc_buffer_t rootbuf;
|
||||
extern int sendcount;
|
||||
extern int ndots;
|
||||
extern int tries;
|
||||
@@ -66,24 +61,19 @@ extern isc_taskmgr_t *taskmgr;
|
||||
extern isc_task_t *global_task;
|
||||
extern char *progname;
|
||||
|
||||
isc_boolean_t short_form = ISC_TRUE, printcmd = ISC_TRUE,
|
||||
filter = ISC_FALSE, showallsoa = ISC_FALSE,
|
||||
tcpmode = ISC_FALSE, deprecation_msg = ISC_TRUE;
|
||||
|
||||
isc_uint16_t bufsize = 0;
|
||||
isc_boolean_t identify = ISC_FALSE,
|
||||
trace = ISC_FALSE, ns_search_only = ISC_FALSE,
|
||||
forcecomment = ISC_FALSE, stats = ISC_TRUE,
|
||||
static isc_boolean_t short_form = ISC_TRUE,
|
||||
tcpmode = ISC_FALSE, deprecation_msg = ISC_TRUE,
|
||||
identify = ISC_FALSE, stats = ISC_TRUE,
|
||||
comments = ISC_TRUE, section_question = ISC_TRUE,
|
||||
section_answer = ISC_TRUE, section_authority = ISC_TRUE,
|
||||
section_additional = ISC_TRUE, recurse = ISC_TRUE,
|
||||
aaonly = ISC_FALSE;
|
||||
isc_boolean_t busy = ISC_FALSE, in_use = ISC_FALSE;
|
||||
char defclass[MXRD] = "IN";
|
||||
char deftype[MXRD] = "A";
|
||||
isc_event_t *global_event = NULL;
|
||||
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;
|
||||
|
||||
char domainopt[DNS_NAME_MAXTEXT];
|
||||
static char domainopt[DNS_NAME_MAXTEXT];
|
||||
|
||||
static const char *rcodetext[] = {
|
||||
"NOERROR",
|
||||
@@ -180,7 +170,7 @@ printsoa(dns_rdata_t *rdata) {
|
||||
|
||||
dns_name_format(&soa.origin, namebuf, sizeof(namebuf));
|
||||
printf("\torigin = %s\n", namebuf);
|
||||
dns_name_format(&soa.mname, namebuf, sizeof(namebuf));
|
||||
dns_name_format(&soa.contact, namebuf, sizeof(namebuf));
|
||||
printf("\tmail addr = %s\n", namebuf);
|
||||
printf("\tserial = %u\n", soa.serial);
|
||||
printf("\trefresh = %u\n", soa.refresh);
|
||||
@@ -391,8 +381,7 @@ received(int bytes, isc_sockaddr_t *from, dig_query_t *query)
|
||||
}
|
||||
|
||||
void
|
||||
trying(int frmsize, char *frm, dig_lookup_t *lookup) {
|
||||
UNUSED(frmsize);
|
||||
trying(char *frm, dig_lookup_t *lookup) {
|
||||
UNUSED(frm);
|
||||
UNUSED(lookup);
|
||||
|
||||
@@ -454,22 +443,17 @@ static void
|
||||
show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
|
||||
dig_server_t *srv;
|
||||
isc_sockaddr_t sockaddr;
|
||||
isc_buffer_t *b = NULL;
|
||||
isc_result_t result;
|
||||
dig_searchlist_t *listent;
|
||||
|
||||
srv = ISC_LIST_HEAD(server_list);
|
||||
|
||||
while (srv != NULL) {
|
||||
result = isc_buffer_allocate(mctx, &b, MXNAME);
|
||||
check_result(result, "isc_buffer_allocate");
|
||||
char sockstr[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
get_address(srv->servername, port, &sockaddr);
|
||||
result = isc_sockaddr_totext(&sockaddr, b);
|
||||
check_result(result, "isc_sockaddr_totext");
|
||||
printf("Default server: %s\nAddress: %.*s\n",
|
||||
srv->servername, (int)isc_buffer_usedlength(b),
|
||||
(char*)isc_buffer_base(b));
|
||||
isc_buffer_free(&b);
|
||||
isc_sockaddr_format(&sockaddr, sockstr, sizeof(sockstr));
|
||||
printf("Default server: %s\nAddress: %s\n",
|
||||
srv->servername, sockstr);
|
||||
if (!full)
|
||||
return;
|
||||
srv = ISC_LIST_NEXT(srv, link);
|
||||
@@ -651,14 +635,14 @@ addlookup(char *opt) {
|
||||
}
|
||||
lookup->rdclass = rdclass;
|
||||
lookup->rdclassset = ISC_TRUE;
|
||||
lookup->trace = ISC_TF(trace || ns_search_only);
|
||||
lookup->trace_root = trace;
|
||||
lookup->ns_search_only = ns_search_only;
|
||||
lookup->trace = ISC_FALSE;
|
||||
lookup->trace_root = lookup->trace;
|
||||
lookup->ns_search_only = ISC_FALSE;
|
||||
lookup->identify = identify;
|
||||
lookup->recurse = recurse;
|
||||
lookup->aaonly = aaonly;
|
||||
lookup->retries = tries;
|
||||
lookup->udpsize = bufsize;
|
||||
lookup->udpsize = 0;
|
||||
lookup->comments = comments;
|
||||
lookup->tcp_mode = tcpmode;
|
||||
lookup->stats = stats;
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="dig" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=dig - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "dig.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "dig.mak" CFG="dig - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "dig - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "dig - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "dig - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dig.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "dig - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /u /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dig.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "dig - Win32 Release"
|
||||
# Name "dig - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dig.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dighost.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "dig"=".\dig.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on dig.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=dig - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to dig - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "dig - Win32 Release" && "$(CFG)" != "dig - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "dig.mak" CFG="dig - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "dig - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "dig - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "dig - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\dig.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dig.obj"
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\dig.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dig.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\dig.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dig.pdb" /machine:I386 /out:"../../../Build/Release/dig.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dig.obj" \
|
||||
"$(INTDIR)\dighost.obj"
|
||||
|
||||
"..\..\..\Build\Release\dig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "dig - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\dig.exe" "$(OUTDIR)\dig.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dig.obj"
|
||||
-@erase "$(INTDIR)\dig.sbr"
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\dighost.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\dig.bsc"
|
||||
-@erase "$(OUTDIR)\dig.pdb"
|
||||
-@erase "..\..\..\Build\Debug\dig.exe"
|
||||
-@erase "..\..\..\Build\Debug\dig.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\dig.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dig.sbr" \
|
||||
"$(INTDIR)\dighost.sbr"
|
||||
|
||||
"$(OUTDIR)\dig.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dig.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dig.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dig.obj" \
|
||||
"$(INTDIR)\dighost.obj"
|
||||
|
||||
"..\..\..\Build\Debug\dig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("dig.dep")
|
||||
!INCLUDE "dig.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "dig.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "dig - Win32 Release" || "$(CFG)" == "dig - Win32 Debug"
|
||||
SOURCE=..\dig.c
|
||||
|
||||
!IF "$(CFG)" == "dig - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dig.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "dig - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dig.obj" "$(INTDIR)\dig.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\dighost.c
|
||||
|
||||
!IF "$(CFG)" == "dig - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "dig - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="host" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=host - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "host.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "host.mak" CFG="host - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "host - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "host - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "host - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/host.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "host - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /u /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/host.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "host - Win32 Release"
|
||||
# Name "host - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dighost.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\host.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "host"=".\host.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on host.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=host - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to host - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "host - Win32 Release" && "$(CFG)" != "host - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "host.mak" CFG="host - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "host - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "host - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "host - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\host.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\host.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\host.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\host.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\host.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\host.pdb" /machine:I386 /out:"../../../Build/Release/host.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dighost.obj" \
|
||||
"$(INTDIR)\host.obj"
|
||||
|
||||
"..\..\..\Build\Release\host.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "host - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\host.exe" "$(OUTDIR)\host.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\dighost.sbr"
|
||||
-@erase "$(INTDIR)\host.obj"
|
||||
-@erase "$(INTDIR)\host.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\host.bsc"
|
||||
-@erase "$(OUTDIR)\host.pdb"
|
||||
-@erase "..\..\..\Build\Debug\host.exe"
|
||||
-@erase "..\..\..\Build\Debug\host.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\host.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dighost.sbr" \
|
||||
"$(INTDIR)\host.sbr"
|
||||
|
||||
"$(OUTDIR)\host.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\host.pdb" /debug /machine:I386 /out:"../../../Build/Debug/host.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dighost.obj" \
|
||||
"$(INTDIR)\host.obj"
|
||||
|
||||
"..\..\..\Build\Debug\host.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("host.dep")
|
||||
!INCLUDE "host.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "host.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "host - Win32 Release" || "$(CFG)" == "host - Win32 Debug"
|
||||
SOURCE=..\dighost.c
|
||||
|
||||
!IF "$(CFG)" == "host - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "host - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\host.c
|
||||
|
||||
!IF "$(CFG)" == "host - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\host.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "host - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\host.obj" "$(INTDIR)\host.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="nslookup" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=nslookup - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nslookup.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nslookup.mak" CFG="nslookup - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "nslookup - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "nslookup - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "nslookup - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/nslookup.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "nslookup - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /u /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/nslookup.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "nslookup - Win32 Release"
|
||||
# Name "nslookup - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dighost.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\nslookup.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "nslookup"=".\nslookup.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on nslookup.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=nslookup - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to nslookup - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "nslookup - Win32 Release" && "$(CFG)" != "nslookup - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nslookup.mak" CFG="nslookup - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "nslookup - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "nslookup - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "nslookup - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\nslookup.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\nslookup.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\nslookup.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\nslookup.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nslookup.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\nslookup.pdb" /machine:I386 /out:"../../../Build/Release/nslookup.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dighost.obj" \
|
||||
"$(INTDIR)\nslookup.obj"
|
||||
|
||||
"..\..\..\Build\Release\nslookup.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "nslookup - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\nslookup.exe" "$(OUTDIR)\nslookup.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dighost.obj"
|
||||
-@erase "$(INTDIR)\dighost.sbr"
|
||||
-@erase "$(INTDIR)\nslookup.obj"
|
||||
-@erase "$(INTDIR)\nslookup.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\nslookup.bsc"
|
||||
-@erase "$(OUTDIR)\nslookup.pdb"
|
||||
-@erase "..\..\..\Build\Debug\nslookup.exe"
|
||||
-@erase "..\..\..\Build\Debug\nslookup.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nslookup.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dighost.sbr" \
|
||||
"$(INTDIR)\nslookup.sbr"
|
||||
|
||||
"$(OUTDIR)\nslookup.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\nslookup.pdb" /debug /machine:I386 /out:"../../../Build/Debug/nslookup.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dighost.obj" \
|
||||
"$(INTDIR)\nslookup.obj"
|
||||
|
||||
"..\..\..\Build\Debug\nslookup.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("nslookup.dep")
|
||||
!INCLUDE "nslookup.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "nslookup.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "nslookup - Win32 Release" || "$(CFG)" == "nslookup - Win32 Debug"
|
||||
SOURCE=..\dighost.c
|
||||
|
||||
!IF "$(CFG)" == "nslookup - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "nslookup - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dighost.obj" "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\nslookup.c
|
||||
|
||||
!IF "$(CFG)" == "nslookup - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\nslookup.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "nslookup - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\nslookup.obj" "$(INTDIR)\nslookup.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssec-keygen.c,v 1.48 2001/07/10 18:53:09 bwelling Exp $ */
|
||||
/* $Id: dnssec-keygen.c,v 1.48.2.1 2001/10/05 00:21:44 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
#include <dns/secalg.h>
|
||||
|
||||
#include <dst/dst.h>
|
||||
#include <dst/result.h>
|
||||
|
||||
#include "dnssectool.h"
|
||||
|
||||
@@ -342,7 +341,7 @@ main(int argc, char **argv) {
|
||||
dns_name_format(name, namestr, sizeof namestr);
|
||||
alg_format(alg, algstr, sizeof algstr);
|
||||
fatal("failed to generate key %s/%s: %s\n",
|
||||
namestr, algstr, dst_result_totext(ret));
|
||||
namestr, algstr, isc_result_totext(ret));
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ The default is 3600 seconds.
|
||||
Sets the debugging level.
|
||||
.TP
|
||||
\fBkey\fR
|
||||
Lists the keys included in the keyset file. These keys
|
||||
The list of keys to be included in the keyset file. These keys
|
||||
are expressed in the form \fIKnnnn.+aaa+iiiii\fR
|
||||
as generated by \fBdnssec-keygen\fR.
|
||||
.SH "EXAMPLE"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssec-makekeyset.c,v 1.52 2001/05/10 06:04:56 bwelling Exp $ */
|
||||
/* $Id: dnssec-makekeyset.c,v 1.52.2.1 2001/10/05 00:21:45 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -214,7 +214,8 @@ main(int argc, char *argv[]) {
|
||||
eflags |= ISC_ENTROPY_GOODONLY;
|
||||
result = dst_lib_init(mctx, ectx, eflags);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not initialize dst");
|
||||
fatal("could not initialize dst: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
|
||||
@@ -252,7 +253,8 @@ main(int argc, char *argv[]) {
|
||||
result = dst_key_fromnamedfile(argv[i], DST_TYPE_PUBLIC,
|
||||
mctx, &key);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("error loading key from %s", argv[i]);
|
||||
fatal("error loading key from %s: %s", argv[i],
|
||||
isc_result_totext(result));
|
||||
if (rdatalist.rdclass == 0)
|
||||
rdatalist.rdclass = dst_key_class(key);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: dnssec-makekeyset.docbook,v 1.2 2001/04/10 21:50:30 bwelling Exp $ -->
|
||||
<!-- $Id: dnssec-makekeyset.docbook,v 1.2.2.1 2001/09/14 20:29:32 gson Exp $ -->
|
||||
|
||||
<refentry>
|
||||
<refentryinfo>
|
||||
@@ -166,7 +166,7 @@
|
||||
<term>key</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Lists the keys included in the keyset file. These keys
|
||||
The list of keys to be included in the keyset file. These keys
|
||||
are expressed in the form <filename>Knnnn.+aaa+iiiii</filename>
|
||||
as generated by <command>dnssec-keygen</command>.
|
||||
</para>
|
||||
|
||||
@@ -281,7 +281,7 @@ CLASS="REPLACEABLE"
|
||||
>key</DT
|
||||
><DD
|
||||
><P
|
||||
> Lists the keys included in the keyset file. These keys
|
||||
> The list of keys to be included in the keyset file. These keys
|
||||
are expressed in the form <TT
|
||||
CLASS="FILENAME"
|
||||
>Knnnn.+aaa+iiiii</TT
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssec-signkey.c,v 1.50 2001/05/10 06:04:57 bwelling Exp $ */
|
||||
/* $Id: dnssec-signkey.c,v 1.50.2.1 2001/10/05 00:21:46 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -247,7 +247,8 @@ main(int argc, char *argv[]) {
|
||||
eflags |= ISC_ENTROPY_GOODONLY;
|
||||
result = dst_lib_init(mctx, ectx, eflags);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not initialize dst");
|
||||
fatal("could not initialize dst: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssec-signzone.c,v 1.138 2001/05/10 06:04:58 bwelling Exp $ */
|
||||
/* $Id: dnssec-signzone.c,v 1.139.2.1 2001/10/05 00:21:48 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -100,7 +100,7 @@ static isc_entropy_t *ectx = NULL;
|
||||
static dns_ttl_t zonettl;
|
||||
static FILE *fp;
|
||||
static char *tempfile = NULL;
|
||||
static const dns_master_style_t *masterstyle = &dns_master_style_explicitttl;
|
||||
static const dns_master_style_t *masterstyle;
|
||||
static unsigned int nsigned = 0, nretained = 0, ndropped = 0;
|
||||
static unsigned int nverified = 0, nverifyfailed = 0;
|
||||
static const char *directory;
|
||||
@@ -491,7 +491,8 @@ hasnullkey(dns_rdataset_t *rdataset) {
|
||||
result = dns_dnssec_keyfromrdata(dns_rootname,
|
||||
&rdata, mctx, &key);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not convert KEY into internal format");
|
||||
fatal("could not convert KEY into internal format: %s",
|
||||
isc_result_totext(result));
|
||||
if (dst_key_isnullkey(key))
|
||||
found = ISC_TRUE;
|
||||
dst_key_free(&key);
|
||||
@@ -1513,6 +1514,7 @@ main(int argc, char *argv[]) {
|
||||
dns_rdataclass_t rdclass;
|
||||
isc_textregion_t r;
|
||||
isc_task_t **tasks = NULL;
|
||||
masterstyle = &dns_master_style_explicitttl;
|
||||
|
||||
check_result(isc_app_start(), "isc_app_start");
|
||||
|
||||
@@ -1683,7 +1685,8 @@ main(int argc, char *argv[]) {
|
||||
DST_TYPE_PRIVATE,
|
||||
mctx, &newkey);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("cannot load key %s", argv[i]);
|
||||
fatal("cannot load key %s: %s", argv[i],
|
||||
isc_result_totext(result));
|
||||
|
||||
key = ISC_LIST_HEAD(keylist);
|
||||
while (key != NULL) {
|
||||
|
||||
+16
-7
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssectool.c,v 1.30 2001/06/22 17:05:54 tale Exp $ */
|
||||
/* $Id: dnssectool.c,v 1.31.2.1 2001/09/06 00:14:15 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/entropy.h>
|
||||
#include <isc/keyboard.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/time.h>
|
||||
#include <isc/util.h>
|
||||
@@ -126,7 +125,7 @@ key_format(const dst_key_t *key, char *cp, unsigned int size) {
|
||||
char algstr[DNS_NAME_FORMATSIZE];
|
||||
|
||||
dns_name_format(dst_key_name(key), namestr, sizeof namestr);
|
||||
alg_format(dst_key_alg(key), algstr, sizeof algstr);
|
||||
alg_format((dns_secalg_t) dst_key_alg(key), algstr, sizeof algstr);
|
||||
snprintf(cp, size, "%s/%s/%d", namestr, algstr, dst_key_id(key));
|
||||
}
|
||||
|
||||
@@ -202,13 +201,23 @@ cleanup_logging(isc_log_t **logp) {
|
||||
void
|
||||
setup_entropy(isc_mem_t *mctx, const char *randomfile, isc_entropy_t **ectx) {
|
||||
isc_result_t result;
|
||||
int usekeyboard = ISC_ENTROPY_KEYBOARDMAYBE;
|
||||
|
||||
result = isc_entropy_create(mctx, ectx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not create entropy object");
|
||||
REQUIRE(ectx != NULL);
|
||||
|
||||
if (*ectx == NULL) {
|
||||
result = isc_entropy_create(mctx, ectx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not create entropy object");
|
||||
}
|
||||
|
||||
if (randomfile != NULL && strcmp(randomfile, "keyboard") == 0) {
|
||||
usekeyboard = ISC_ENTROPY_KEYBOARDYES;
|
||||
randomfile = NULL;
|
||||
}
|
||||
|
||||
result = isc_entropy_usebestsource(*ectx, &source, randomfile,
|
||||
ISC_ENTROPY_KEYBOARDMAYBE);
|
||||
usekeyboard);
|
||||
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fatal("could not initialize entropy source: %s",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dnssectool.h,v 1.14 2001/03/31 02:12:26 bwelling Exp $ */
|
||||
/* $Id: dnssectool.h,v 1.15 2001/08/08 22:54:16 gson Exp $ */
|
||||
|
||||
#ifndef DNSSECTOOL_H
|
||||
#define DNSSECTOOL_H 1
|
||||
@@ -37,7 +37,7 @@ void
|
||||
check_result(isc_result_t result, const char *message);
|
||||
|
||||
void
|
||||
vbprintf(int level, const char *fmt, ...);
|
||||
vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
|
||||
|
||||
void
|
||||
type_format(const dns_rdatatype_t type, char *cp, unsigned int size);
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="keygen" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=keygen - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "keygen.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "keygen.mak" CFG="keygen - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "keygen - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "keygen - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "keygen - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dnssec-keygen.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "keygen - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dnssec-keygen.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "keygen - Win32 Release"
|
||||
# Name "keygen - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\dnssec-keygen.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "keygen"=".\keygen.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on keygen.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=keygen - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to keygen - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "keygen - Win32 Release" && "$(CFG)" != "keygen - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "keygen.mak" CFG="keygen - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "keygen - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "keygen - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "keygen - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\dnssec-keygen.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-keygen.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\dnssec-keygen.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\keygen.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\keygen.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dnssec-keygen.pdb" /machine:I386 /out:"../../../Build/Release/dnssec-keygen.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-keygen.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Release\dnssec-keygen.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "keygen - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\dnssec-keygen.exe" "$(OUTDIR)\keygen.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-keygen.obj"
|
||||
-@erase "$(INTDIR)\dnssec-keygen.sbr"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\dnssec-keygen.pdb"
|
||||
-@erase "$(OUTDIR)\keygen.bsc"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-keygen.exe"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-keygen.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\keygen.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dnssec-keygen.sbr" \
|
||||
"$(INTDIR)\dnssectool.sbr"
|
||||
|
||||
"$(OUTDIR)\keygen.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dnssec-keygen.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dnssec-keygen.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-keygen.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Debug\dnssec-keygen.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("keygen.dep")
|
||||
!INCLUDE "keygen.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "keygen.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "keygen - Win32 Release" || "$(CFG)" == "keygen - Win32 Debug"
|
||||
SOURCE="..\dnssec-keygen.c"
|
||||
|
||||
!IF "$(CFG)" == "keygen - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-keygen.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "keygen - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-keygen.obj" "$(INTDIR)\dnssec-keygen.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
|
||||
!IF "$(CFG)" == "keygen - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "keygen - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" "$(INTDIR)\dnssectool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="makekeyset" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=makekeyset - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "makekeyset.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "makekeyset.mak" CFG="makekeyset - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "makekeyset - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "makekeyset - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "makekeyset - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dnssec-makekeyset.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "makekeyset - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dnssec-makekeyset.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "makekeyset - Win32 Release"
|
||||
# Name "makekeyset - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\dnssec-makekeyset.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "makekeyset"=".\makekeyset.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on makekeyset.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=makekeyset - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to makekeyset - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "makekeyset - Win32 Release" && "$(CFG)" != "makekeyset - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "makekeyset.mak" CFG="makekeyset - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "makekeyset - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "makekeyset - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "makekeyset - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\dnssec-makekeyset.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-makekeyset.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\dnssec-makekeyset.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\makekeyset.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\makekeyset.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dnssec-makekeyset.pdb" /machine:I386 /out:"../../../Build/Release/dnssec-makekeyset.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-makekeyset.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Release\dnssec-makekeyset.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "makekeyset - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\dnssec-makekeyset.exe" "$(OUTDIR)\makekeyset.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-makekeyset.obj"
|
||||
-@erase "$(INTDIR)\dnssec-makekeyset.sbr"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\dnssec-makekeyset.pdb"
|
||||
-@erase "$(OUTDIR)\makekeyset.bsc"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-makekeyset.exe"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-makekeyset.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\makekeyset.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dnssec-makekeyset.sbr" \
|
||||
"$(INTDIR)\dnssectool.sbr"
|
||||
|
||||
"$(OUTDIR)\makekeyset.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dnssec-makekeyset.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dnssec-makekeyset.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-makekeyset.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Debug\dnssec-makekeyset.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("makekeyset.dep")
|
||||
!INCLUDE "makekeyset.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "makekeyset.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "makekeyset - Win32 Release" || "$(CFG)" == "makekeyset - Win32 Debug"
|
||||
SOURCE="..\dnssec-makekeyset.c"
|
||||
|
||||
!IF "$(CFG)" == "makekeyset - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-makekeyset.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "makekeyset - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-makekeyset.obj" "$(INTDIR)\dnssec-makekeyset.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
|
||||
!IF "$(CFG)" == "makekeyset - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "makekeyset - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" "$(INTDIR)\dnssectool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# Microsoft Developer Studio Project File - Name="nsupdate" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=nsupdate - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nsupdate.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nsupdate.mak" CFG="nsupdate - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "nsupdate - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "nsupdate - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "nsupdate - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/lwres/win32/Release/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/nsupdate.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "nsupdate - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /u /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/lwres/win32/Debug/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/nsupdate.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "nsupdate - Win32 Release"
|
||||
# Name "nsupdate - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\nsupdate.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "nsupdate"=".\nsupdate.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="signkey" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=signkey - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signkey.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signkey.mak" CFG="signkey - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "signkey - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "signkey - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "signkey - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dnssec-signkey.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "signkey - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dnssec-signkey.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "signkey - Win32 Release"
|
||||
# Name "signkey - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\dnssec-signkey.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "signkey"=".\signkey.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on signkey.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=signkey - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to signkey - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "signkey - Win32 Release" && "$(CFG)" != "signkey - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signkey.mak" CFG="signkey - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "signkey - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "signkey - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "signkey - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\dnssec-signkey.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-signkey.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\dnssec-signkey.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\signkey.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\signkey.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dnssec-signkey.pdb" /machine:I386 /out:"../../../Build/Release/dnssec-signkey.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-signkey.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Release\dnssec-signkey.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "signkey - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\dnssec-signkey.exe" "$(OUTDIR)\signkey.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-signkey.obj"
|
||||
-@erase "$(INTDIR)\dnssec-signkey.sbr"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\dnssec-signkey.pdb"
|
||||
-@erase "$(OUTDIR)\signkey.bsc"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-signkey.exe"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-signkey.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\signkey.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dnssec-signkey.sbr" \
|
||||
"$(INTDIR)\dnssectool.sbr"
|
||||
|
||||
"$(OUTDIR)\signkey.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dnssec-signkey.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dnssec-signkey.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-signkey.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Debug\dnssec-signkey.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("signkey.dep")
|
||||
!INCLUDE "signkey.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "signkey.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "signkey - Win32 Release" || "$(CFG)" == "signkey - Win32 Debug"
|
||||
SOURCE="..\dnssec-signkey.c"
|
||||
|
||||
!IF "$(CFG)" == "signkey - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-signkey.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "signkey - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-signkey.obj" "$(INTDIR)\dnssec-signkey.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
|
||||
!IF "$(CFG)" == "signkey - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "signkey - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" "$(INTDIR)\dnssectool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# Microsoft Developer Studio Project File - Name="signzone" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=signzone - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signzone.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signzone.mak" CFG="signzone - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "signzone - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "signzone - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "signzone - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dnssec-signzone.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "signzone - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dnssec-signzone.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "signzone - Win32 Release"
|
||||
# Name "signzone - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\dnssec-signzone.c"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "signzone"=".\signzone.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on signzone.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=signzone - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to signzone - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "signzone - Win32 Release" && "$(CFG)" != "signzone - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "signzone.mak" CFG="signzone - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "signzone - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "signzone - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "signzone - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\dnssec-signzone.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-signzone.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\dnssec-signzone.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "__STDC__" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\signzone.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\signzone.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dnssec-signzone.pdb" /machine:I386 /out:"../../../Build/Release/dnssec-signzone.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-signzone.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Release\dnssec-signzone.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "signzone - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\dnssec-signzone.exe" "$(OUTDIR)\signzone.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\dnssec-signzone.obj"
|
||||
-@erase "$(INTDIR)\dnssec-signzone.sbr"
|
||||
-@erase "$(INTDIR)\dnssectool.obj"
|
||||
-@erase "$(INTDIR)\dnssectool.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\dnssec-signzone.pdb"
|
||||
-@erase "$(OUTDIR)\signzone.bsc"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-signzone.exe"
|
||||
-@erase "..\..\..\Build\Debug\dnssec-signzone.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\signzone.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dnssec-signzone.sbr" \
|
||||
"$(INTDIR)\dnssectool.sbr"
|
||||
|
||||
"$(OUTDIR)\signzone.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dnssec-signzone.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dnssec-signzone.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dnssec-signzone.obj" \
|
||||
"$(INTDIR)\dnssectool.obj"
|
||||
|
||||
"..\..\..\Build\Debug\dnssec-signzone.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("signzone.dep")
|
||||
!INCLUDE "signzone.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "signzone.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "signzone - Win32 Release" || "$(CFG)" == "signzone - Win32 Debug"
|
||||
SOURCE="..\dnssec-signzone.c"
|
||||
|
||||
!IF "$(CFG)" == "signzone - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-signzone.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "signzone - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssec-signzone.obj" "$(INTDIR)\dnssec-signzone.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\dnssectool.c
|
||||
|
||||
!IF "$(CFG)" == "signzone - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "signzone - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dnssectool.obj" "$(INTDIR)\dnssectool.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
+185
-305
@@ -15,10 +15,11 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: client.c,v 1.174 2001/06/28 02:39:46 marka Exp $ */
|
||||
/* $Id: client.c,v 1.176.2.8.2.1 2007/08/12 23:33:23 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <isc/formatcheck.h>
|
||||
#include <isc/mutex.h>
|
||||
#include <isc/once.h>
|
||||
#include <isc/print.h>
|
||||
@@ -32,9 +33,6 @@
|
||||
#include <dns/dispatch.h>
|
||||
#include <dns/events.h>
|
||||
#include <dns/message.h>
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
#include <dns/opt.h>
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
#include <dns/rdata.h>
|
||||
#include <dns/rdataclass.h>
|
||||
#include <dns/rdatalist.h>
|
||||
@@ -175,113 +173,6 @@ static void client_start(isc_task_t *task, isc_event_t *event);
|
||||
static void client_request(isc_task_t *task, isc_event_t *event);
|
||||
static void ns_client_dumpmessage(ns_client_t *client, const char *reason);
|
||||
|
||||
/*
|
||||
* Enter the inactive state.
|
||||
*
|
||||
* Requires:
|
||||
* No requests are outstanding.
|
||||
*/
|
||||
static void
|
||||
client_deactivate(ns_client_t *client) {
|
||||
REQUIRE(NS_CLIENT_VALID(client));
|
||||
|
||||
if (client->interface)
|
||||
ns_interface_detach(&client->interface);
|
||||
|
||||
INSIST(client->naccepts == 0);
|
||||
INSIST(client->recursionquota == NULL);
|
||||
if (client->tcplistener != NULL)
|
||||
isc_socket_detach(&client->tcplistener);
|
||||
|
||||
if (client->udpsocket != NULL)
|
||||
isc_socket_detach(&client->udpsocket);
|
||||
|
||||
if (client->dispatch != NULL)
|
||||
dns_dispatch_detach(&client->dispatch);
|
||||
|
||||
client->attributes = 0;
|
||||
client->mortal = ISC_FALSE;
|
||||
|
||||
LOCK(&client->manager->lock);
|
||||
ISC_LIST_UNLINK(client->manager->active, client, link);
|
||||
ISC_LIST_APPEND(client->manager->inactive, client, link);
|
||||
client->list = &client->manager->inactive;
|
||||
UNLOCK(&client->manager->lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clean up a client object and free its memory.
|
||||
* Requires:
|
||||
* The client is in the inactive state.
|
||||
*/
|
||||
|
||||
static void
|
||||
client_free(ns_client_t *client) {
|
||||
isc_boolean_t need_clientmgr_destroy = ISC_FALSE;
|
||||
ns_clientmgr_t *manager = NULL;
|
||||
|
||||
REQUIRE(NS_CLIENT_VALID(client));
|
||||
|
||||
/*
|
||||
* When "shuttingdown" is true, either the task has received
|
||||
* its shutdown event or no shutdown event has ever been
|
||||
* set up. Thus, we have no outstanding shutdown
|
||||
* event at this point.
|
||||
*/
|
||||
REQUIRE(client->state == NS_CLIENTSTATE_INACTIVE);
|
||||
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
ns_query_free(client);
|
||||
isc_mem_put(client->mctx, client->recvbuf, RECV_BUFFER_SIZE);
|
||||
isc_event_free((isc_event_t **)&client->sendevent);
|
||||
isc_event_free((isc_event_t **)&client->recvevent);
|
||||
isc_timer_detach(&client->timer);
|
||||
|
||||
if (client->tcpbuf != NULL)
|
||||
isc_mem_put(client->mctx, client->tcpbuf, TCP_BUFFER_SIZE);
|
||||
if (client->opt != NULL) {
|
||||
INSIST(dns_rdataset_isassociated(client->opt));
|
||||
dns_rdataset_disassociate(client->opt);
|
||||
dns_message_puttemprdataset(client->message, &client->opt);
|
||||
}
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
if (client->opt_zone != NULL) {
|
||||
isc_mem_put(client->mctx, client->opt_zone,
|
||||
sizeof(*client->opt_zone));
|
||||
client->opt_zone = NULL;
|
||||
}
|
||||
if (client->opt_view != NULL)
|
||||
isc_buffer_free(&client->opt_view);
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
dns_message_destroy(&client->message);
|
||||
if (client->manager != NULL) {
|
||||
manager = client->manager;
|
||||
LOCK(&manager->lock);
|
||||
ISC_LIST_UNLINK(*client->list, client, link);
|
||||
client->list = NULL;
|
||||
if (manager->exiting &&
|
||||
ISC_LIST_EMPTY(manager->active) &&
|
||||
ISC_LIST_EMPTY(manager->inactive))
|
||||
need_clientmgr_destroy = ISC_TRUE;
|
||||
UNLOCK(&manager->lock);
|
||||
}
|
||||
/*
|
||||
* Detaching the task must be done after unlinking from
|
||||
* the manager's lists because the manager accesses
|
||||
* client->task.
|
||||
*/
|
||||
if (client->task != NULL)
|
||||
isc_task_detach(&client->task);
|
||||
|
||||
CTRACE("free");
|
||||
client->magic = 0;
|
||||
isc_mem_put(client->mctx, client, sizeof *client);
|
||||
|
||||
if (need_clientmgr_destroy)
|
||||
clientmgr_destroy(manager);
|
||||
}
|
||||
|
||||
void
|
||||
ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
|
||||
isc_result_t result;
|
||||
@@ -308,6 +199,9 @@ ns_client_settimeout(ns_client_t *client, unsigned int seconds) {
|
||||
*/
|
||||
static isc_boolean_t
|
||||
exit_check(ns_client_t *client) {
|
||||
ns_clientmgr_t *locked_manager = NULL;
|
||||
ns_clientmgr_t *destroy_manager = NULL;
|
||||
|
||||
REQUIRE(NS_CLIENT_VALID(client));
|
||||
|
||||
if (client->state <= client->newstate)
|
||||
@@ -447,12 +341,47 @@ exit_check(ns_client_t *client) {
|
||||
}
|
||||
/* Recv cancel is complete. */
|
||||
|
||||
client_deactivate(client);
|
||||
if (client->nctls > 0) {
|
||||
/* Still waiting for control event to be delivered */
|
||||
return (ISC_TRUE);
|
||||
}
|
||||
|
||||
/* Deactivate the client. */
|
||||
if (client->interface)
|
||||
ns_interface_detach(&client->interface);
|
||||
|
||||
INSIST(client->naccepts == 0);
|
||||
INSIST(client->recursionquota == NULL);
|
||||
if (client->tcplistener != NULL)
|
||||
isc_socket_detach(&client->tcplistener);
|
||||
|
||||
if (client->udpsocket != NULL)
|
||||
isc_socket_detach(&client->udpsocket);
|
||||
|
||||
if (client->dispatch != NULL)
|
||||
dns_dispatch_detach(&client->dispatch);
|
||||
|
||||
client->attributes = 0;
|
||||
client->mortal = ISC_FALSE;
|
||||
|
||||
LOCK(&client->manager->lock);
|
||||
/*
|
||||
* Put the client on the inactive list. If we are aiming for
|
||||
* the "freed" state, it will be removed from the inactive
|
||||
* list shortly, and we need to keep the manager locked until
|
||||
* that has been done, lest the manager decide to reactivate
|
||||
* the dying client inbetween.
|
||||
*/
|
||||
locked_manager = client->manager;
|
||||
ISC_LIST_UNLINK(*client->list, client, link);
|
||||
ISC_LIST_APPEND(client->manager->inactive, client, link);
|
||||
client->list = &client->manager->inactive;
|
||||
client->state = NS_CLIENTSTATE_INACTIVE;
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
if (client->state == client->newstate) {
|
||||
client->newstate = NS_CLIENTSTATE_MAX;
|
||||
return (ISC_TRUE); /* We're done. */
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -460,11 +389,71 @@ exit_check(ns_client_t *client) {
|
||||
INSIST(client->newstate == NS_CLIENTSTATE_FREED);
|
||||
/*
|
||||
* We are trying to free the client.
|
||||
*
|
||||
* When "shuttingdown" is true, either the task has received
|
||||
* its shutdown event or no shutdown event has ever been
|
||||
* set up. Thus, we have no outstanding shutdown
|
||||
* event at this point.
|
||||
*/
|
||||
client_free(client);
|
||||
return (ISC_TRUE);
|
||||
REQUIRE(client->state == NS_CLIENTSTATE_INACTIVE);
|
||||
|
||||
INSIST(client->recursionquota == NULL);
|
||||
|
||||
ns_query_free(client);
|
||||
isc_mem_put(client->mctx, client->recvbuf, RECV_BUFFER_SIZE);
|
||||
isc_event_free((isc_event_t **)&client->sendevent);
|
||||
isc_event_free((isc_event_t **)&client->recvevent);
|
||||
isc_timer_detach(&client->timer);
|
||||
|
||||
if (client->tcpbuf != NULL)
|
||||
isc_mem_put(client->mctx, client->tcpbuf, TCP_BUFFER_SIZE);
|
||||
if (client->opt != NULL) {
|
||||
INSIST(dns_rdataset_isassociated(client->opt));
|
||||
dns_rdataset_disassociate(client->opt);
|
||||
dns_message_puttemprdataset(client->message, &client->opt);
|
||||
}
|
||||
dns_message_destroy(&client->message);
|
||||
if (client->manager != NULL) {
|
||||
ns_clientmgr_t *manager = client->manager;
|
||||
if (locked_manager == NULL) {
|
||||
LOCK(&manager->lock);
|
||||
locked_manager = manager;
|
||||
}
|
||||
ISC_LIST_UNLINK(*client->list, client, link);
|
||||
client->list = NULL;
|
||||
if (manager->exiting &&
|
||||
ISC_LIST_EMPTY(manager->active) &&
|
||||
ISC_LIST_EMPTY(manager->inactive))
|
||||
destroy_manager = manager;
|
||||
}
|
||||
/*
|
||||
* Detaching the task must be done after unlinking from
|
||||
* the manager's lists because the manager accesses
|
||||
* client->task.
|
||||
*/
|
||||
if (client->task != NULL)
|
||||
isc_task_detach(&client->task);
|
||||
|
||||
CTRACE("free");
|
||||
client->magic = 0;
|
||||
isc_mem_put(client->mctx, client, sizeof(*client));
|
||||
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
unlock:
|
||||
if (locked_manager != NULL) {
|
||||
UNLOCK(&locked_manager->lock);
|
||||
locked_manager = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Only now is it safe to destroy the client manager (if needed),
|
||||
* because we have accessed its lock for the last time.
|
||||
*/
|
||||
if (destroy_manager != NULL)
|
||||
clientmgr_destroy(destroy_manager);
|
||||
|
||||
return (ISC_TRUE);
|
||||
}
|
||||
|
||||
@@ -480,6 +469,12 @@ client_start(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
INSIST(client->nctls == 1);
|
||||
client->nctls--;
|
||||
|
||||
if (exit_check(client))
|
||||
return;
|
||||
|
||||
if (TCP_CLIENT(client)) {
|
||||
client_accept(client);
|
||||
} else {
|
||||
@@ -985,75 +980,6 @@ ns_client_error(ns_client_t *client, isc_result_t result) {
|
||||
ns_client_send(client);
|
||||
}
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
static isc_result_t
|
||||
client_addoptattrs(ns_client_t *client, dns_rdata_t *rdata) {
|
||||
isc_result_t result;
|
||||
isc_buffer_t *zonebuf = NULL, *buf = NULL;
|
||||
dns_optlist_t attrlist;
|
||||
dns_optattr_t attrs[CLIENT_NUMATTRS];
|
||||
dns_compress_t cctx;
|
||||
int i, sizeneeded = 0;
|
||||
|
||||
result = dns_compress_init(&cctx, 0, client->mctx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail1;
|
||||
dns_compress_setmethods(&cctx, DNS_COMPRESS_NONE);
|
||||
attrlist.size=2;
|
||||
attrlist.used=0;
|
||||
attrlist.attrs=attrs;
|
||||
for (i=0; i<CLIENT_NUMATTRS; i++) {
|
||||
attrs[i].code = 0;
|
||||
attrs[i].value.base = NULL;
|
||||
attrs[i].value.length = 0;
|
||||
}
|
||||
if (client->opt_zone != NULL) {
|
||||
result = isc_buffer_allocate(client->mctx, &zonebuf,
|
||||
DNS_NAME_MAXWIRE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail2;
|
||||
result = dns_name_towire(dns_fixedname_name(client->opt_zone),
|
||||
&cctx, zonebuf);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail2;
|
||||
attrs[attrlist.used].code = DNS_OPTCODE_ZONE;
|
||||
attrs[attrlist.used].value.base = isc_buffer_base(zonebuf);
|
||||
attrs[attrlist.used].value.length =
|
||||
isc_buffer_usedlength(zonebuf);
|
||||
attrlist.used++;
|
||||
sizeneeded += 4 + isc_buffer_usedlength(zonebuf);
|
||||
}
|
||||
if (client->opt_view != NULL) {
|
||||
attrs[attrlist.used].code = DNS_OPTCODE_VIEW;
|
||||
attrs[attrlist.used].value.base =
|
||||
isc_buffer_base(client->opt_view);
|
||||
attrs[attrlist.used].value.length =
|
||||
isc_buffer_usedlength(client->opt_view);
|
||||
attrlist.used++;
|
||||
sizeneeded += 4 + isc_buffer_usedlength(client->opt_view);
|
||||
}
|
||||
if (sizeneeded == 0) {
|
||||
result = ISC_R_SUCCESS;
|
||||
goto fail2;
|
||||
}
|
||||
result = isc_buffer_allocate(client->mctx, &buf, sizeneeded+1);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail2;
|
||||
result = dns_opt_add(rdata, &attrlist, buf);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail2;
|
||||
dns_message_takebuffer(client->message, &buf);
|
||||
fail2:
|
||||
dns_compress_invalidate(&cctx);
|
||||
fail1:
|
||||
if (buf != NULL)
|
||||
isc_buffer_free(&buf);
|
||||
if (zonebuf != NULL)
|
||||
isc_buffer_free(&zonebuf);
|
||||
return (result);
|
||||
}
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
|
||||
static inline isc_result_t
|
||||
client_addopt(ns_client_t *client) {
|
||||
dns_rdataset_t *rdataset;
|
||||
@@ -1099,13 +1025,6 @@ client_addopt(ns_client_t *client) {
|
||||
rdata->type = rdatalist->type;
|
||||
rdata->flags = 0;
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
/*
|
||||
* Set the attributes
|
||||
*/
|
||||
client_addoptattrs(client, rdata);
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
|
||||
ISC_LIST_INIT(rdatalist->rdata);
|
||||
ISC_LIST_APPEND(rdatalist->rdata, rdata, link);
|
||||
dns_rdatalist_tordataset(rdatalist, rdataset);
|
||||
@@ -1115,80 +1034,19 @@ client_addopt(ns_client_t *client) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
static void
|
||||
client_getoptattrs(ns_client_t *client, dns_rdataset_t *opt) {
|
||||
dns_optlist_t optlist;
|
||||
dns_optattr_t optattr;
|
||||
isc_result_t result, iresult;
|
||||
isc_buffer_t zonebuf;
|
||||
dns_decompress_t dctx;
|
||||
static inline isc_boolean_t
|
||||
allowed(isc_netaddr_t *addr, dns_acl_t *acl) {
|
||||
int match;
|
||||
isc_result_t result;
|
||||
|
||||
/* If an old set of opts are still around, free them. */
|
||||
if (client->opt_zone != NULL) {
|
||||
isc_mem_put(client->mctx, client->opt_zone,
|
||||
sizeof(*client->opt_zone));
|
||||
client->opt_zone = NULL;
|
||||
}
|
||||
if (client->opt_view != NULL)
|
||||
isc_buffer_free(&client->opt_view);
|
||||
|
||||
/*
|
||||
* If there are any options, extract them here
|
||||
*/
|
||||
optlist.size = 1;
|
||||
optlist.used = 0;
|
||||
optlist.next = 0;
|
||||
optlist.attrs = &optattr;
|
||||
do {
|
||||
result = dns_opt_decodeall(&optlist, opt);
|
||||
if (result == ISC_R_SUCCESS ||
|
||||
result == DNS_R_MOREDATA) {
|
||||
switch (optattr.code) {
|
||||
case DNS_OPTCODE_ZONE:
|
||||
dns_decompress_init(&dctx, 0,
|
||||
DNS_DECOMPRESS_NONE);
|
||||
client->opt_zone = isc_mem_get(
|
||||
client->mctx,
|
||||
sizeof(*client->opt_zone));
|
||||
if (client->opt_zone == NULL)
|
||||
goto zonefail1;
|
||||
dns_fixedname_init(client->opt_zone);
|
||||
isc_buffer_init(&zonebuf,
|
||||
optattr.value.base,
|
||||
optattr.value.length);
|
||||
isc_buffer_add(&zonebuf,optattr.value.length);
|
||||
isc_buffer_setactive(&zonebuf,
|
||||
optattr.value.length);
|
||||
iresult = dns_name_fromwire(
|
||||
dns_fixedname_name(
|
||||
client->opt_zone),
|
||||
&zonebuf,
|
||||
&dctx, ISC_FALSE,
|
||||
NULL);
|
||||
if (iresult != ISC_R_SUCCESS) {
|
||||
dns_fixedname_invalidate(
|
||||
client->opt_zone);
|
||||
zonefail1:
|
||||
dns_decompress_invalidate(&dctx);
|
||||
}
|
||||
break;
|
||||
case DNS_OPTCODE_VIEW:
|
||||
iresult = isc_buffer_allocate(client->mctx,
|
||||
&client->opt_view,
|
||||
optattr.value.length);
|
||||
if (iresult != ISC_R_SUCCESS)
|
||||
break;
|
||||
isc_buffer_putmem(client->opt_view,
|
||||
optattr.value.base,
|
||||
optattr.value.length);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (result == DNS_R_MOREDATA);
|
||||
if (acl == NULL)
|
||||
return (ISC_TRUE);
|
||||
result = dns_acl_match(addr, NULL, acl, &ns_g_server->aclenv,
|
||||
&match, NULL);
|
||||
if (result == ISC_R_SUCCESS && match > 0)
|
||||
return (ISC_TRUE);
|
||||
return (ISC_FALSE);
|
||||
}
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
|
||||
|
||||
/*
|
||||
* Handle an incoming request event from the socket (UDP case)
|
||||
@@ -1206,9 +1064,11 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
dns_rdataset_t *opt;
|
||||
isc_boolean_t ra; /* Recursion available. */
|
||||
isc_netaddr_t netaddr;
|
||||
isc_netaddr_t destaddr;
|
||||
int match;
|
||||
dns_messageid_t id;
|
||||
unsigned int flags;
|
||||
isc_boolean_t notimp;
|
||||
|
||||
REQUIRE(event != NULL);
|
||||
client = event->ev_arg;
|
||||
@@ -1343,6 +1203,14 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Hash the incoming request here as it is after
|
||||
* dns_dispatch_importrecv().
|
||||
*/
|
||||
dns_dispatch_hash(&client->now, sizeof(client->now));
|
||||
dns_dispatch_hash(isc_buffer_base(buffer),
|
||||
isc_buffer_usedlength(buffer));
|
||||
|
||||
/*
|
||||
* It's a request. Parse it.
|
||||
*/
|
||||
@@ -1356,6 +1224,20 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
switch (client->message->opcode) {
|
||||
case dns_opcode_query:
|
||||
case dns_opcode_update:
|
||||
case dns_opcode_notify:
|
||||
notimp = ISC_FALSE;
|
||||
break;
|
||||
case dns_opcode_iquery:
|
||||
default:
|
||||
notimp = ISC_TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
client->message->rcode = dns_rcode_noerror;
|
||||
|
||||
/*
|
||||
* Deal with EDNS.
|
||||
*/
|
||||
@@ -1375,28 +1257,10 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
if (client->udpsize < 512)
|
||||
client->udpsize = 512;
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
/*
|
||||
* Get the flags out of the OPT record.
|
||||
*/
|
||||
client->extflags = DNS_OPT_FLAGS(opt);
|
||||
|
||||
/*
|
||||
* Set up the rest of the opt stuff
|
||||
*/
|
||||
client_getoptattrs(client, opt);
|
||||
/*
|
||||
* If we're using a fixed zone option (opt_zone), set it to
|
||||
* allow glue here.
|
||||
*/
|
||||
if (client->opt_zone != NULL)
|
||||
client->query.dboptions |= DNS_DBFIND_GLUEOK;
|
||||
#else /* DNS_OPT_NEWCODES */
|
||||
/*
|
||||
* Get the flags out of the OPT record.
|
||||
*/
|
||||
client->extflags = (isc_uint16_t)(opt->ttl & 0xFFFF);
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
|
||||
/*
|
||||
* Create an OPT for our reply.
|
||||
@@ -1425,10 +1289,24 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
"message class could not be determined");
|
||||
ns_client_dumpmessage(client,
|
||||
"message class could not be determined");
|
||||
ns_client_error(client, DNS_R_FORMERR);
|
||||
ns_client_error(client, notimp ? DNS_R_NOTIMP : DNS_R_FORMERR);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine the destination address. For IPv6, we get this from the
|
||||
* pktinfo structure (if supported). For IPv4, we have to make do with
|
||||
* the address of the interface where the request was received.
|
||||
*/
|
||||
if (client->interface->addr.type.sa.sa_family == AF_INET6) {
|
||||
if ((client->attributes & NS_CLIENTATTR_PKTINFO) != 0)
|
||||
isc_netaddr_fromin6(&destaddr, &client->pktinfo.ipi6_addr);
|
||||
else
|
||||
isc_netaddr_any6(&destaddr);
|
||||
} else {
|
||||
isc_netaddr_fromsockaddr(&destaddr, &client->interface->addr);
|
||||
}
|
||||
|
||||
/*
|
||||
* Find a view that matches the client's source address.
|
||||
*/
|
||||
@@ -1438,11 +1316,10 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
if (client->message->rdclass == view->rdclass ||
|
||||
client->message->rdclass == dns_rdataclass_any)
|
||||
{
|
||||
if (view->matchclients == NULL ||
|
||||
(dns_acl_match(&netaddr, NULL, view->matchclients,
|
||||
&ns_g_server->aclenv,
|
||||
&match, NULL) == ISC_R_SUCCESS &&
|
||||
match > 0))
|
||||
if (allowed(&netaddr, view->matchclients) &&
|
||||
allowed(&destaddr, view->matchdestinations) &&
|
||||
!((flags & DNS_MESSAGEFLAG_RD) == 0 &&
|
||||
view->matchrecursiveonly))
|
||||
{
|
||||
dns_view_attach(view, &client->view);
|
||||
break;
|
||||
@@ -1471,7 +1348,7 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(1),
|
||||
"no matching view in class '%s'", classname);
|
||||
ns_client_dumpmessage(client, "no matching view in class");
|
||||
ns_client_error(client, DNS_R_REFUSED);
|
||||
ns_client_error(client, notimp ? DNS_R_NOTIMP : DNS_R_REFUSED);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@@ -1502,22 +1379,17 @@ client_request(isc_task_t *task, isc_event_t *event) {
|
||||
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3),
|
||||
"request is signed by a nonauthoritative key");
|
||||
/*
|
||||
* Accept update messages signed by unknown keys so that
|
||||
* update forwarding works transparently through slaves
|
||||
* that don't have all the same keys as the master.
|
||||
*/
|
||||
if (!(client->message->tsigstatus == dns_tsigerror_badkey &&
|
||||
client->message->opcode == dns_opcode_update)) {
|
||||
ns_client_error(client, sigresult);
|
||||
goto cleanup;
|
||||
}
|
||||
} else {
|
||||
/* There is a signature, but it is bad. */
|
||||
ns_client_log(client, DNS_LOGCATEGORY_SECURITY,
|
||||
NS_LOGMODULE_CLIENT, ISC_LOG_ERROR,
|
||||
"request has invalid signature: %s",
|
||||
isc_result_totext(result));
|
||||
/*
|
||||
* Accept update messages signed by unknown keys so that
|
||||
* update forwarding works transparently through slaves
|
||||
* that don't have all the same keys as the master.
|
||||
*/
|
||||
if (!(client->message->tsigstatus == dns_tsigerror_badkey &&
|
||||
client->message->opcode == dns_opcode_update)) {
|
||||
ns_client_error(client, sigresult);
|
||||
@@ -1628,9 +1500,6 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp)
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_client;
|
||||
isc_task_setname(client->task, "client", client);
|
||||
result = isc_task_onshutdown(client->task, client_shutdown, client);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_task;
|
||||
|
||||
client->timer = NULL;
|
||||
result = isc_timer_create(manager->timermgr, isc_timertype_inactive,
|
||||
@@ -1683,6 +1552,7 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp)
|
||||
client->nreads = 0;
|
||||
client->nsends = 0;
|
||||
client->nrecvs = 0;
|
||||
client->nctls = 0;
|
||||
client->references = 0;
|
||||
client->attributes = 0;
|
||||
client->view = NULL;
|
||||
@@ -1695,10 +1565,6 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp)
|
||||
client->opt = NULL;
|
||||
client->udpsize = 512;
|
||||
client->extflags = 0;
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
client->opt_zone = NULL;
|
||||
client->opt_view = NULL;
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
client->next = NULL;
|
||||
client->shutdown = NULL;
|
||||
client->shutdown_arg = NULL;
|
||||
@@ -1730,12 +1596,19 @@ client_create(ns_clientmgr_t *manager, ns_client_t **clientp)
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_recvevent;
|
||||
|
||||
result = isc_task_onshutdown(client->task, client_shutdown, client);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_query;
|
||||
|
||||
CTRACE("create");
|
||||
|
||||
*clientp = client;
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
cleanup_query:
|
||||
ns_query_free(client);
|
||||
|
||||
cleanup_recvevent:
|
||||
isc_event_free((isc_event_t **)&client->recvevent);
|
||||
|
||||
@@ -2150,6 +2023,8 @@ ns_clientmgr_createclients(ns_clientmgr_t *manager, unsigned int n,
|
||||
ISC_LIST_APPEND(manager->active, client, link);
|
||||
client->list = &manager->active;
|
||||
|
||||
INSIST(client->nctls == 0);
|
||||
client->nctls++;
|
||||
ev = &client->ctlevent;
|
||||
isc_task_send(client->task, &ev);
|
||||
}
|
||||
@@ -2231,6 +2106,11 @@ ns_client_name(ns_client_t *client, char *peerbuf, size_t len) {
|
||||
snprintf(peerbuf, len, "@%p", client);
|
||||
}
|
||||
|
||||
static void
|
||||
ns_client_logv(ns_client_t *client, isc_logcategory_t *category,
|
||||
isc_logmodule_t *module, int level, const char *fmt, va_list ap)
|
||||
ISC_FORMAT_PRINTF(5, 0);
|
||||
|
||||
static void
|
||||
ns_client_logv(ns_client_t *client, isc_logcategory_t *category,
|
||||
isc_logmodule_t *module, int level, const char *fmt, va_list ap)
|
||||
|
||||
+25
-4
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: config.c,v 1.9 2001/06/04 21:51:23 bwelling Exp $ */
|
||||
/* $Id: config.c,v 1.11.2.1 2001/09/21 20:30:32 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <dns/fixedname.h>
|
||||
#include <dns/name.h>
|
||||
#include <dns/rdataclass.h>
|
||||
#include <dns/tsig.h>
|
||||
#include <dns/zone.h>
|
||||
|
||||
#include <named/config.h>
|
||||
@@ -176,18 +177,24 @@ ns_config_listcount(cfg_obj_t *list) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t *classp) {
|
||||
ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t defclass,
|
||||
dns_rdataclass_t *classp) {
|
||||
char *str;
|
||||
isc_textregion_t r;
|
||||
isc_result_t result;
|
||||
|
||||
if (!cfg_obj_isstring(classobj)) {
|
||||
*classp = dns_rdataclass_in;
|
||||
*classp = defclass;
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
str = cfg_obj_asstring(classobj);
|
||||
r.base = str;
|
||||
r.length = strlen(str);
|
||||
return (dns_rdataclass_fromtext(classp, &r));
|
||||
result = dns_rdataclass_fromtext(classp, &r);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
cfg_obj_log(classobj, ns_g_lctx, ISC_LOG_ERROR,
|
||||
"unknown class '%s'", str);
|
||||
return (result);
|
||||
}
|
||||
|
||||
dns_zonetype_t
|
||||
@@ -435,3 +442,17 @@ ns_config_getport(cfg_obj_t *config, in_port_t *portp) {
|
||||
*portp = (in_port_t)cfg_obj_asuint32(portobj);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
ns_config_getkeyalgorithm(const char *str, dns_name_t **name)
|
||||
{
|
||||
if (strcasecmp(str, "hmac-md5") == 0 ||
|
||||
strcasecmp(str, "hmac-md5.sig-alg.reg.int") == 0 ||
|
||||
strcasecmp(str, "hmac-md5.sig-alg.reg.int.") == 0)
|
||||
{
|
||||
if (name != NULL)
|
||||
*name = dns_tsig_hmacmd5_name;
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
return (ISC_R_NOTFOUND);
|
||||
}
|
||||
|
||||
+231
-341
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: controlconf.c,v 1.16 2001/07/05 18:39:14 bwelling Exp $ */
|
||||
/* $Id: controlconf.c,v 1.28.2.6 2001/10/31 23:00:44 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <isc/file.h>
|
||||
#include <isc/fsaccess.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/net.h>
|
||||
#include <isc/netaddr.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/random.h>
|
||||
@@ -36,6 +37,7 @@
|
||||
#include <isc/util.h>
|
||||
|
||||
#include <isccfg/cfg.h>
|
||||
#include <isccfg/check.h>
|
||||
|
||||
#include <isccc/alist.h>
|
||||
#include <isccc/cc.h>
|
||||
@@ -50,6 +52,7 @@
|
||||
|
||||
#include <dst/dst.h>
|
||||
|
||||
#include <named/config.h>
|
||||
#include <named/control.h>
|
||||
#include <named/log.h>
|
||||
#include <named/server.h>
|
||||
@@ -100,20 +103,10 @@ struct controllistener {
|
||||
ISC_LINK(controllistener_t) link;
|
||||
};
|
||||
|
||||
static struct {
|
||||
char name[64];
|
||||
char secret[192];
|
||||
cfg_parser_t *parser;
|
||||
cfg_obj_t *config;
|
||||
isc_sockaddr_t address; /* Last channel that needed automagic. */
|
||||
} automagic_key;
|
||||
|
||||
#define NS_AUTOKEY_BITS 128
|
||||
#define NS_AUTOKEY_NAME "control_autokey"
|
||||
|
||||
struct ns_controls {
|
||||
ns_server_t *server;
|
||||
controllistenerlist_t listeners;
|
||||
isc_boolean_t shuttingdown;
|
||||
};
|
||||
|
||||
static void control_newconn(isc_task_t *task, isc_event_t *event);
|
||||
@@ -186,11 +179,14 @@ maybe_free_connection(controlconnection_t *conn) {
|
||||
|
||||
static void
|
||||
shutdown_listener(controllistener_t *listener) {
|
||||
isc_boolean_t destroy = ISC_TRUE;
|
||||
controlconnection_t *conn;
|
||||
controlconnection_t *next;
|
||||
|
||||
if (!listener->exiting) {
|
||||
char socktext[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
ISC_LIST_UNLINK(listener->controls->listeners, listener, link);
|
||||
|
||||
isc_sockaddr_format(&listener->address, socktext,
|
||||
sizeof(socktext));
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
@@ -199,23 +195,19 @@ shutdown_listener(controllistener_t *listener) {
|
||||
listener->exiting = ISC_TRUE;
|
||||
}
|
||||
|
||||
if (!ISC_LIST_EMPTY(listener->connections)) {
|
||||
controlconnection_t *conn;
|
||||
for (conn = ISC_LIST_HEAD(listener->connections);
|
||||
conn != NULL;
|
||||
conn = ISC_LIST_NEXT(conn, link))
|
||||
maybe_free_connection(conn);
|
||||
destroy = ISC_FALSE;
|
||||
for (conn = ISC_LIST_HEAD(listener->connections);
|
||||
conn != NULL;
|
||||
conn = next)
|
||||
{
|
||||
next = ISC_LIST_NEXT(conn, link);
|
||||
maybe_free_connection(conn);
|
||||
}
|
||||
|
||||
if (listener->sock != NULL) {
|
||||
if (listener->listening)
|
||||
isc_socket_cancel(listener->sock, listener->task,
|
||||
ISC_SOCKCANCEL_ACCEPT);
|
||||
destroy = ISC_FALSE;
|
||||
}
|
||||
|
||||
if (destroy)
|
||||
free_listener(listener);
|
||||
maybe_free_listener(listener);
|
||||
}
|
||||
|
||||
static isc_boolean_t
|
||||
@@ -342,6 +334,10 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
||||
listener = conn->listener;
|
||||
secret.rstart = NULL;
|
||||
|
||||
/* Is the server shutting down? */
|
||||
if (listener->controls->shuttingdown)
|
||||
goto cleanup;
|
||||
|
||||
if (conn->ccmsg.result != ISC_R_SUCCESS) {
|
||||
if (conn->ccmsg.result != ISC_R_CANCELED &&
|
||||
conn->ccmsg.result != ISC_R_EOF)
|
||||
@@ -350,7 +346,6 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
|
||||
request = NULL;
|
||||
INSIST(!ISC_LIST_EMPTY(listener->keys));
|
||||
|
||||
for (key = ISC_LIST_HEAD(listener->keys);
|
||||
key != NULL;
|
||||
@@ -525,10 +520,10 @@ control_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
listener->listening = ISC_FALSE;
|
||||
|
||||
if (nevent->result != ISC_R_SUCCESS) {
|
||||
if (nevent->result == ISC_R_CANCELED) {
|
||||
isc_socket_detach(&listener->sock);
|
||||
listener->listening = ISC_FALSE;
|
||||
shutdown_listener(listener);
|
||||
goto cleanup;
|
||||
}
|
||||
@@ -564,8 +559,8 @@ control_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
isc_event_free(&event);
|
||||
}
|
||||
|
||||
void
|
||||
ns_controls_shutdown(ns_controls_t *controls) {
|
||||
static void
|
||||
controls_shutdown(ns_controls_t *controls) {
|
||||
controllistener_t *listener;
|
||||
controllistener_t *next;
|
||||
|
||||
@@ -578,11 +573,16 @@ ns_controls_shutdown(ns_controls_t *controls) {
|
||||
* call their callbacks.
|
||||
*/
|
||||
next = ISC_LIST_NEXT(listener, link);
|
||||
ISC_LIST_UNLINK(controls->listeners, listener, link);
|
||||
shutdown_listener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ns_controls_shutdown(ns_controls_t *controls) {
|
||||
controls_shutdown(controls);
|
||||
controls->shuttingdown = ISC_TRUE;
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
cfgkeylist_find(cfg_obj_t *keylist, const char *keyname, cfg_obj_t **objp) {
|
||||
cfg_listelt_t *element;
|
||||
@@ -648,7 +648,7 @@ controlkeylist_fromcfg(cfg_obj_t *keylist, isc_mem_t *mctx,
|
||||
|
||||
static void
|
||||
register_keys(cfg_obj_t *control, cfg_obj_t *keylist,
|
||||
controlkeylist_t *keyids, isc_mem_t *mctx, char *socktext)
|
||||
controlkeylist_t *keyids, isc_mem_t *mctx, const char *socktext)
|
||||
{
|
||||
controlkey_t *keyid, *next;
|
||||
cfg_obj_t *keydef;
|
||||
@@ -683,7 +683,9 @@ register_keys(cfg_obj_t *control, cfg_obj_t *keylist,
|
||||
algstr = cfg_obj_asstring(algobj);
|
||||
secretstr = cfg_obj_asstring(secretobj);
|
||||
|
||||
if (strcasecmp(algstr, "hmac-md5") != 0) {
|
||||
if (ns_config_getkeyalgorithm(algstr, NULL) !=
|
||||
ISC_R_SUCCESS)
|
||||
{
|
||||
cfg_obj_log(control, ns_g_lctx,
|
||||
ISC_LOG_WARNING,
|
||||
"unsupported algorithm '%s' in "
|
||||
@@ -726,288 +728,129 @@ register_keys(cfg_obj_t *control, cfg_obj_t *keylist,
|
||||
}
|
||||
}
|
||||
|
||||
#define CHECK(x) \
|
||||
do { \
|
||||
result = (x); \
|
||||
if (result != ISC_R_SUCCESS) \
|
||||
goto cleanup; \
|
||||
} while (0)
|
||||
|
||||
static isc_result_t
|
||||
make_automagic_key(isc_mem_t *mctx) {
|
||||
unsigned char key_rawsecret[32];
|
||||
unsigned char key_txtsecret[32];
|
||||
isc_buffer_t key_rawbuffer;
|
||||
isc_buffer_t key_txtbuffer;
|
||||
isc_region_t key_rawregion;
|
||||
isc_uint32_t key_id;
|
||||
get_rndckey(isc_mem_t *mctx, controlkeylist_t *keyids) {
|
||||
isc_result_t result;
|
||||
dst_key_t *key = NULL;
|
||||
cfg_parser_t *pctx = NULL;
|
||||
cfg_obj_t *config = NULL;
|
||||
cfg_obj_t *key = NULL;
|
||||
cfg_obj_t *algobj = NULL;
|
||||
cfg_obj_t *secretobj = NULL;
|
||||
char *algstr = NULL;
|
||||
char *secretstr = NULL;
|
||||
controlkey_t *keyid = NULL;
|
||||
char secret[1024];
|
||||
isc_buffer_t b;
|
||||
|
||||
/*
|
||||
* First generate a secret. The fourth parameter non-zero means
|
||||
* that pseudorandom data is ok; good entropy is not required.
|
||||
*/
|
||||
result = dst_key_generate(dns_rootname, DST_ALG_HMACMD5,
|
||||
NS_AUTOKEY_BITS, 1, 0, DNS_KEYPROTO_ANY,
|
||||
dns_rdataclass_in, mctx, &key);
|
||||
CHECK(cfg_parser_create(mctx, ns_g_lctx, &pctx));
|
||||
CHECK(cfg_parse_file(pctx, ns_g_keyfile, &cfg_type_rndckey, &config));
|
||||
CHECK(cfg_map_get(config, "key", &key));
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
isc_buffer_init(&key_rawbuffer, &key_rawsecret,
|
||||
sizeof(key_rawsecret));
|
||||
result = dst_key_tobuffer(key, &key_rawbuffer);
|
||||
keyid = isc_mem_get(mctx, sizeof(*keyid));
|
||||
if (keyid == NULL)
|
||||
CHECK(ISC_R_NOMEMORY);
|
||||
keyid->keyname = isc_mem_strdup(mctx,
|
||||
cfg_obj_asstring(cfg_map_getname(key)));
|
||||
keyid->secret.base = NULL;
|
||||
keyid->secret.length = 0;
|
||||
ISC_LINK_INIT(keyid, link);
|
||||
if (keyid->keyname == NULL)
|
||||
CHECK(ISC_R_NOMEMORY);
|
||||
|
||||
CHECK(cfg_check_key(key, ns_g_lctx));
|
||||
|
||||
(void)cfg_map_get(key, "algorithm", &algobj);
|
||||
(void)cfg_map_get(key, "secret", &secretobj);
|
||||
INSIST(algobj != NULL && secretobj != NULL);
|
||||
|
||||
algstr = cfg_obj_asstring(algobj);
|
||||
secretstr = cfg_obj_asstring(secretobj);
|
||||
|
||||
if (ns_config_getkeyalgorithm(algstr, NULL) != ISC_R_SUCCESS) {
|
||||
cfg_obj_log(key, ns_g_lctx,
|
||||
ISC_LOG_WARNING,
|
||||
"unsupported algorithm '%s' in "
|
||||
"key '%s' for use with command "
|
||||
"channel",
|
||||
algstr, keyid->keyname);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
isc_buffer_init(&key_txtbuffer, &key_txtsecret,
|
||||
sizeof(key_txtsecret));
|
||||
isc_buffer_usedregion(&key_rawbuffer, &key_rawregion);
|
||||
result = isc_base64_totext(&key_rawregion, -1, "",
|
||||
&key_txtbuffer);
|
||||
isc_buffer_init(&b, secret, sizeof(secret));
|
||||
result = isc_base64_decodestring(secretstr, &b);
|
||||
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
cfg_obj_log(key, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"secret for key '%s' on command channel: %s",
|
||||
keyid->keyname, isc_result_totext(result));
|
||||
CHECK(result);
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
unsigned int len = isc_buffer_usedlength(&key_txtbuffer);
|
||||
|
||||
INSIST(len < sizeof(automagic_key.secret));
|
||||
|
||||
memcpy(automagic_key.secret, isc_buffer_base(&key_txtbuffer),
|
||||
len);
|
||||
automagic_key.secret[len] = '\0';
|
||||
|
||||
/*
|
||||
* Make a random name for the key and generate the config
|
||||
* file statement for it.
|
||||
*/
|
||||
isc_random_get(&key_id);
|
||||
len = snprintf(automagic_key.name, sizeof(automagic_key.name),
|
||||
NS_AUTOKEY_NAME ".%u", key_id);
|
||||
INSIST(len < sizeof(automagic_key.name));
|
||||
keyid->secret.length = isc_buffer_usedlength(&b);
|
||||
keyid->secret.base = isc_mem_get(mctx,
|
||||
keyid->secret.length);
|
||||
if (keyid->secret.base == NULL) {
|
||||
cfg_obj_log(key, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"couldn't register key '%s': "
|
||||
"out of memory", keyid->keyname);
|
||||
CHECK(ISC_R_NOMEMORY);
|
||||
}
|
||||
memcpy(keyid->secret.base, isc_buffer_base(&b),
|
||||
keyid->secret.length);
|
||||
ISC_LIST_APPEND(*keyids, keyid, link);
|
||||
keyid = NULL;
|
||||
result = ISC_R_SUCCESS;
|
||||
|
||||
if (key != NULL)
|
||||
dst_key_free(&key);
|
||||
|
||||
if (result != ISC_R_SUCCESS)
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL, ISC_LOG_WARNING,
|
||||
"could not generate control channel key: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
cleanup:
|
||||
if (keyid != NULL)
|
||||
free_controlkey(keyid, mctx);
|
||||
if (config != NULL)
|
||||
cfg_obj_destroy(pctx, &config);
|
||||
if (pctx != NULL)
|
||||
cfg_parser_destroy(&pctx);
|
||||
return (result);
|
||||
}
|
||||
|
||||
static void
|
||||
format_automagic_keycfg(isc_buffer_t *conf) {
|
||||
unsigned int len;
|
||||
|
||||
len = snprintf(isc_buffer_base(conf), isc_buffer_length(conf),
|
||||
"key \"%s\" {\n"
|
||||
"\talgorithm hmac-md5;\n"
|
||||
"\tsecret \"%s\";\n"
|
||||
"};\n",
|
||||
automagic_key.name, automagic_key.secret);
|
||||
|
||||
INSIST(len < isc_buffer_length(conf));
|
||||
|
||||
isc_buffer_add(conf, len);
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
parse_automagic_key(isc_mem_t *mctx) {
|
||||
unsigned int len;
|
||||
char cfg_data[512];
|
||||
isc_buffer_t cfg_buffer;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
cfg_obj_t *cfg = NULL;
|
||||
cfg_parser_t *parser = NULL;
|
||||
|
||||
if (automagic_key.name[0] == '\0')
|
||||
result = make_automagic_key(mctx);
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
/*
|
||||
* Fake up a configuration with a dummy inet control
|
||||
* to grab the keylist tuple.
|
||||
*/
|
||||
isc_buffer_init(&cfg_buffer, cfg_data, sizeof(cfg_data));
|
||||
format_automagic_keycfg(&cfg_buffer);
|
||||
len = snprintf(isc_buffer_used(&cfg_buffer),
|
||||
isc_buffer_availablelength(&cfg_buffer),
|
||||
"controls { inet 127.0.0.1 allow { localhost; }"
|
||||
" keys { %s; }; };",
|
||||
automagic_key.name);
|
||||
INSIST(len < isc_buffer_availablelength(&cfg_buffer));
|
||||
isc_buffer_add(&cfg_buffer, len);
|
||||
|
||||
result = cfg_parser_create(mctx, ns_g_lctx, &parser);
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
result = cfg_parse_buffer(parser, &cfg_buffer,
|
||||
&cfg_type_namedconf, &cfg);
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
automagic_key.parser = parser;
|
||||
automagic_key.config = cfg;
|
||||
} else {
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL, ISC_LOG_WARNING,
|
||||
"could not parse autogenerated "
|
||||
"control channel key: %s",
|
||||
isc_result_totext(result));
|
||||
|
||||
if (parser != NULL)
|
||||
cfg_parser_destroy(&parser);
|
||||
}
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
static void
|
||||
finalize_automagic_key(void) {
|
||||
unsigned int fsaccess;
|
||||
int i;
|
||||
FILE *fp;
|
||||
isc_result_t result;
|
||||
|
||||
(void)isc_file_remove(ns_g_autorndckeyfile);
|
||||
|
||||
if (automagic_key.parser != NULL) {
|
||||
/*
|
||||
* An automagic key was parsed, so some channel needed it.
|
||||
* Try to write the rndc.conf file.
|
||||
*/
|
||||
char cfg_data[512];
|
||||
char nettext[ISC_NETADDR_FORMATSIZE];
|
||||
isc_buffer_t cfg_buffer;
|
||||
isc_netaddr_t netaddr;
|
||||
|
||||
|
||||
result = isc_stdio_open(ns_g_autorndckeyfile, "w", &fp);
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
fsaccess = 0;
|
||||
isc_fsaccess_add(ISC_FSACCESS_OWNER, ISC_FSACCESS_READ,
|
||||
&fsaccess);
|
||||
result = isc_fsaccess_set(ns_g_autorndckeyfile,
|
||||
fsaccess);
|
||||
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(ns_g_lctx,
|
||||
NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL,
|
||||
ISC_LOG_WARNING,
|
||||
"could not set owner-only "
|
||||
"access on %s: %s: "
|
||||
"server control key might be "
|
||||
"exposed to local users",
|
||||
ns_g_autorndckeyfile,
|
||||
isc_result_totext(result));
|
||||
}
|
||||
|
||||
isc_buffer_init(&cfg_buffer, cfg_data,
|
||||
sizeof(cfg_data));
|
||||
format_automagic_keycfg(&cfg_buffer);
|
||||
|
||||
isc_netaddr_fromsockaddr(&netaddr,
|
||||
&automagic_key.address);
|
||||
isc_netaddr_format(&netaddr, nettext, sizeof(nettext));
|
||||
|
||||
i = fputs(isc_buffer_base(&cfg_buffer), fp);
|
||||
|
||||
if (i != EOF)
|
||||
i = fprintf(fp, "options {\n"
|
||||
"\tdefault-server %s;\n"
|
||||
"\tdefault-port %hu;\n"
|
||||
"\tdefault-key \"%s\";\n"
|
||||
"};\n",
|
||||
nettext,
|
||||
isc_sockaddr_getport(
|
||||
&automagic_key.address),
|
||||
automagic_key.name);
|
||||
|
||||
if (i == EOF)
|
||||
isc_log_write(ns_g_lctx,
|
||||
NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL,
|
||||
ISC_LOG_WARNING,
|
||||
"could not write %s",
|
||||
ns_g_autorndckeyfile);
|
||||
|
||||
result = isc_stdio_close(fp);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
isc_log_write(ns_g_lctx,
|
||||
NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL,
|
||||
ISC_LOG_WARNING,
|
||||
"error closing %s: %s",
|
||||
ns_g_autorndckeyfile,
|
||||
isc_result_totext(result));
|
||||
}
|
||||
|
||||
cfg_obj_destroy(automagic_key.parser, &automagic_key.config);
|
||||
cfg_parser_destroy(&automagic_key.parser);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Ensures that both '*global_keylistp' and '*control_keylistp' are
|
||||
* valid or both are NULL.
|
||||
*/
|
||||
static void
|
||||
get_key_info(isc_mem_t *mctx, cfg_obj_t *config, cfg_obj_t *control,
|
||||
cfg_obj_t **global_keylistp, cfg_obj_t **control_keylistp,
|
||||
isc_boolean_t *explicit_key)
|
||||
get_key_info(cfg_obj_t *config, cfg_obj_t *control,
|
||||
cfg_obj_t **global_keylistp, cfg_obj_t **control_keylistp)
|
||||
{
|
||||
isc_result_t result;
|
||||
cfg_obj_t *control_keylist = NULL;
|
||||
cfg_obj_t *global_keylist = NULL;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
REQUIRE(global_keylistp != NULL && *global_keylistp == NULL);
|
||||
REQUIRE(control_keylistp != NULL && *control_keylistp == NULL);
|
||||
|
||||
control_keylist = cfg_tuple_get(control, "keys");
|
||||
|
||||
if (cfg_obj_isvoid(control_keylist) ||
|
||||
cfg_list_first(control_keylist) == NULL) {
|
||||
cfg_obj_t *controls = NULL;
|
||||
cfg_obj_t *inet = NULL;
|
||||
|
||||
if (automagic_key.parser == NULL)
|
||||
result = parse_automagic_key(mctx);
|
||||
if (!cfg_obj_isvoid(control_keylist) &&
|
||||
cfg_list_first(control_keylist) != NULL) {
|
||||
result = cfg_map_get(config, "key", &global_keylist);
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
config = automagic_key.config;
|
||||
|
||||
/*
|
||||
* All of these should succeed.
|
||||
*/
|
||||
(void)cfg_map_get(config, "key", &global_keylist);
|
||||
INSIST(global_keylist != NULL);
|
||||
|
||||
(void)cfg_map_get(config, "controls", &controls);
|
||||
INSIST(controls != NULL);
|
||||
(void)cfg_map_get(cfg_listelt_value
|
||||
(cfg_list_first(controls)),
|
||||
"inet", &inet);
|
||||
INSIST(inet != NULL);
|
||||
control_keylist =
|
||||
cfg_tuple_get(cfg_listelt_value
|
||||
(cfg_list_first(inet)), "keys");
|
||||
INSIST(control_keylist != NULL);
|
||||
*global_keylistp = global_keylist;
|
||||
*control_keylistp = control_keylist;
|
||||
}
|
||||
|
||||
*explicit_key = ISC_FALSE;
|
||||
|
||||
} else {
|
||||
result = cfg_map_get(config, "key", &global_keylist);
|
||||
*explicit_key = config != automagic_key.config
|
||||
? ISC_TRUE : ISC_FALSE;
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
*global_keylistp = global_keylist;
|
||||
*control_keylistp = control_keylist;
|
||||
} else
|
||||
cfg_obj_log(control, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"no key statements for use by control channel");
|
||||
}
|
||||
|
||||
static void
|
||||
update_listener(ns_controls_t *cp,
|
||||
controllistener_t **listenerp, cfg_obj_t *control,
|
||||
cfg_obj_t *config, isc_sockaddr_t *addr,
|
||||
ns_aclconfctx_t *aclconfctx, char *socktext)
|
||||
ns_aclconfctx_t *aclconfctx, const char *socktext)
|
||||
{
|
||||
controllistener_t *listener;
|
||||
cfg_obj_t *allow;
|
||||
@@ -1015,7 +858,6 @@ update_listener(ns_controls_t *cp,
|
||||
cfg_obj_t *control_keylist = NULL;
|
||||
dns_acl_t *new_acl = NULL;
|
||||
controlkeylist_t keys;
|
||||
isc_boolean_t explicit_key;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
for (listener = ISC_LIST_HEAD(cp->listeners);
|
||||
@@ -1047,11 +889,11 @@ update_listener(ns_controls_t *cp,
|
||||
* XXXDCL There is one other hazard that has not been dealt with,
|
||||
* the problem that if a key change is being caused by a control
|
||||
* channel reload, then the response will be with the new key
|
||||
* and not able to be decrypted by the client. For this reason,
|
||||
* the automagic key is not regenerated on each reload.
|
||||
* and not able to be decrypted by the client.
|
||||
*/
|
||||
get_key_info(listener->mctx, config, control,
|
||||
&global_keylist, &control_keylist, &explicit_key);
|
||||
if (control != NULL)
|
||||
get_key_info(config, control, &global_keylist,
|
||||
&control_keylist);
|
||||
|
||||
if (control_keylist != NULL) {
|
||||
INSIST(global_keylist != NULL);
|
||||
@@ -1059,18 +901,18 @@ update_listener(ns_controls_t *cp,
|
||||
ISC_LIST_INIT(keys);
|
||||
result = controlkeylist_fromcfg(control_keylist,
|
||||
listener->mctx, &keys);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
free_controlkeylist(&listener->keys, listener->mctx);
|
||||
listener->keys = keys;
|
||||
register_keys(control, global_keylist, &listener->keys,
|
||||
listener->mctx, socktext);
|
||||
}
|
||||
} else {
|
||||
free_controlkeylist(&listener->keys, listener->mctx);
|
||||
result = get_rndckey(listener->mctx, &listener->keys);
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
free_controlkeylist(&listener->keys, listener->mctx);
|
||||
listener->keys = keys;
|
||||
register_keys(control, global_keylist, &listener->keys,
|
||||
listener->mctx, socktext);
|
||||
|
||||
if (! explicit_key)
|
||||
automagic_key.address = listener->address;
|
||||
|
||||
} else if (global_keylist != NULL)
|
||||
if (result != ISC_R_SUCCESS && global_keylist != NULL)
|
||||
/*
|
||||
* This message might be a little misleading since the
|
||||
* "new keys" might in fact be identical to the old ones,
|
||||
@@ -1086,9 +928,14 @@ update_listener(ns_controls_t *cp,
|
||||
/*
|
||||
* Now, keep the old access list unless a new one can be made.
|
||||
*/
|
||||
allow = cfg_tuple_get(control, "allow");
|
||||
result = ns_acl_fromconfig(allow, config, aclconfctx,
|
||||
listener->mctx, &new_acl);
|
||||
if (control != NULL) {
|
||||
allow = cfg_tuple_get(control, "allow");
|
||||
result = ns_acl_fromconfig(allow, config, aclconfctx,
|
||||
listener->mctx, &new_acl);
|
||||
} else {
|
||||
result = dns_acl_any(listener->mctx, &new_acl);
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
dns_acl_detach(&listener->acl);
|
||||
dns_acl_attach(new_acl, &listener->acl);
|
||||
@@ -1106,7 +953,7 @@ update_listener(ns_controls_t *cp,
|
||||
static void
|
||||
add_listener(ns_controls_t *cp, controllistener_t **listenerp,
|
||||
cfg_obj_t *control, cfg_obj_t *config, isc_sockaddr_t *addr,
|
||||
ns_aclconfctx_t *aclconfctx, char *socktext)
|
||||
ns_aclconfctx_t *aclconfctx, const char *socktext)
|
||||
{
|
||||
isc_mem_t *mctx = cp->server->mctx;
|
||||
controllistener_t *listener;
|
||||
@@ -1114,7 +961,6 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
|
||||
cfg_obj_t *global_keylist = NULL;
|
||||
cfg_obj_t *control_keylist = NULL;
|
||||
dns_acl_t *new_acl = NULL;
|
||||
isc_boolean_t explicit_key;
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
listener = isc_mem_get(mctx, sizeof(*listener));
|
||||
@@ -1137,30 +983,35 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
|
||||
/*
|
||||
* Make the acl.
|
||||
*/
|
||||
allow = cfg_tuple_get(control, "allow");
|
||||
result = ns_acl_fromconfig(allow, config, aclconfctx, mctx,
|
||||
&new_acl);
|
||||
if (control != NULL) {
|
||||
allow = cfg_tuple_get(control, "allow");
|
||||
result = ns_acl_fromconfig(allow, config, aclconfctx,
|
||||
mctx, &new_acl);
|
||||
} else {
|
||||
result = dns_acl_any(mctx, &new_acl);
|
||||
}
|
||||
}
|
||||
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
dns_acl_attach(new_acl, &listener->acl);
|
||||
dns_acl_detach(&new_acl);
|
||||
|
||||
get_key_info(listener->mctx, config, control,
|
||||
&global_keylist, &control_keylist, &explicit_key);
|
||||
if (config != NULL)
|
||||
get_key_info(config, control, &global_keylist,
|
||||
&control_keylist);
|
||||
|
||||
if (control_keylist != NULL)
|
||||
if (control_keylist != NULL) {
|
||||
result = controlkeylist_fromcfg(control_keylist,
|
||||
listener->mctx,
|
||||
&listener->keys);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
register_keys(control, global_keylist, &listener->keys,
|
||||
listener->mctx, socktext);
|
||||
|
||||
if (! explicit_key)
|
||||
automagic_key.address = listener->address;
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
register_keys(control, global_keylist,
|
||||
&listener->keys,
|
||||
listener->mctx, socktext);
|
||||
} else
|
||||
result = get_rndckey(mctx, &listener->keys);
|
||||
|
||||
if (result != ISC_R_SUCCESS && control != NULL)
|
||||
cfg_obj_log(control, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"couldn't install keys for "
|
||||
"command channel %s: %s",
|
||||
@@ -1202,9 +1053,15 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
|
||||
free_listener(listener);
|
||||
}
|
||||
|
||||
cfg_obj_log(control, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"couldn't add command channel %s: %s",
|
||||
socktext, isc_result_totext(result));
|
||||
if (control != NULL)
|
||||
cfg_obj_log(control, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"couldn't add command channel %s: %s",
|
||||
socktext, isc_result_totext(result));
|
||||
else
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_CONTROL, ISC_LOG_NOTICE,
|
||||
"couldn't add command channel %s: %s",
|
||||
socktext, isc_result_totext(result));
|
||||
|
||||
*listenerp = NULL;
|
||||
}
|
||||
@@ -1305,34 +1162,66 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
|
||||
listener, link);
|
||||
}
|
||||
}
|
||||
|
||||
finalize_automagic_key();
|
||||
|
||||
/*
|
||||
* ns_control_shutdown() will stop whatever is on the global
|
||||
* listeners list, which currently only has whatever sockaddrs
|
||||
* were in the previous configuration (if any) that do not
|
||||
* remain in the current configuration.
|
||||
*/
|
||||
ns_controls_shutdown(cp);
|
||||
|
||||
/*
|
||||
* Put all of the valid listeners on the listeners list.
|
||||
* Anything already on listeners in the process of shutting
|
||||
* down will be taken care of by listen_done().
|
||||
*/
|
||||
ISC_LIST_APPENDLIST(cp->listeners, new_listeners, link);
|
||||
|
||||
} else {
|
||||
isc_result_t result;
|
||||
int i;
|
||||
|
||||
result = parse_automagic_key(cp->server->mctx);
|
||||
for (i = 0; i < 2; i++) {
|
||||
isc_sockaddr_t addr;
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
ns_controls_configure(cp, automagic_key.config,
|
||||
aclconfctx);
|
||||
if (i == 0) {
|
||||
struct in_addr localhost;
|
||||
|
||||
if (isc_net_probeipv4() != ISC_R_SUCCESS)
|
||||
continue;
|
||||
localhost.s_addr = htonl(INADDR_LOOPBACK);
|
||||
isc_sockaddr_fromin(&addr, &localhost, 0);
|
||||
} else {
|
||||
if (isc_net_probeipv6() != ISC_R_SUCCESS)
|
||||
continue;
|
||||
isc_sockaddr_fromin6(&addr,
|
||||
&in6addr_loopback, 0);
|
||||
}
|
||||
isc_sockaddr_setport(&addr, NS_CONTROL_PORT);
|
||||
|
||||
isc_sockaddr_format(&addr, socktext, sizeof(socktext));
|
||||
|
||||
update_listener(cp, &listener, NULL, NULL,
|
||||
&addr, NULL, socktext);
|
||||
|
||||
if (listener != NULL)
|
||||
/*
|
||||
* Remove the listener from the old
|
||||
* list, so it won't be shut down.
|
||||
*/
|
||||
ISC_LIST_UNLINK(cp->listeners,
|
||||
listener, link);
|
||||
else
|
||||
/*
|
||||
* This is a new listener.
|
||||
*/
|
||||
add_listener(cp, &listener, NULL, NULL,
|
||||
&addr, NULL, socktext);
|
||||
|
||||
if (listener != NULL)
|
||||
ISC_LIST_APPEND(new_listeners,
|
||||
listener, link);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ns_control_shutdown() will stop whatever is on the global
|
||||
* listeners list, which currently only has whatever sockaddrs
|
||||
* were in the previous configuration (if any) that do not
|
||||
* remain in the current configuration.
|
||||
*/
|
||||
controls_shutdown(cp);
|
||||
|
||||
/*
|
||||
* Put all of the valid listeners on the listeners list.
|
||||
* Anything already on listeners in the process of shutting
|
||||
* down will be taken care of by listen_done().
|
||||
*/
|
||||
ISC_LIST_APPENDLIST(cp->listeners, new_listeners, link);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -1344,6 +1233,7 @@ ns_controls_create(ns_server_t *server, ns_controls_t **ctrlsp) {
|
||||
return (ISC_R_NOMEMORY);
|
||||
controls->server = server;
|
||||
ISC_LIST_INIT(controls->listeners);
|
||||
controls->shuttingdown = ISC_FALSE;
|
||||
*ctrlsp = controls;
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: client.h,v 1.58 2001/06/15 23:28:29 gson Exp $ */
|
||||
/* $Id: client.h,v 1.60.2.2 2001/11/15 02:51:46 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_CLIENT_H
|
||||
#define NAMED_CLIENT_H 1
|
||||
@@ -64,6 +64,7 @@
|
||||
***/
|
||||
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/stdtime.h>
|
||||
#include <isc/quota.h>
|
||||
|
||||
@@ -71,9 +72,6 @@
|
||||
#include <dns/types.h>
|
||||
#include <dns/tcpmsg.h>
|
||||
#include <dns/fixedname.h>
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
#include <dns/opt.h>
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
#include <named/types.h>
|
||||
#include <named/query.h>
|
||||
|
||||
@@ -93,6 +91,7 @@ struct ns_client {
|
||||
int nreads;
|
||||
int nsends;
|
||||
int nrecvs;
|
||||
int nctls;
|
||||
int references;
|
||||
unsigned int attributes;
|
||||
isc_task_t * task;
|
||||
@@ -113,10 +112,6 @@ struct ns_client {
|
||||
dns_rdataset_t * opt;
|
||||
isc_uint16_t udpsize;
|
||||
isc_uint16_t extflags;
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
dns_fixedname_t * opt_zone;
|
||||
isc_buffer_t * opt_view;
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
void (*next)(ns_client_t *);
|
||||
void (*shutdown)(void *arg, isc_result_t result);
|
||||
void *shutdown_arg;
|
||||
@@ -151,15 +146,7 @@ struct ns_client {
|
||||
client_list_t *list;
|
||||
};
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
/*
|
||||
* Number of attr fields (opt_zone, opt_view) in above structure. Used in
|
||||
* client_addoptattrs()
|
||||
*/
|
||||
#define CLIENT_NUMATTRS 2
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
|
||||
#define NS_CLIENT_MAGIC 0x4E534363U /* NSCc */
|
||||
#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
|
||||
@@ -314,7 +301,7 @@ ns_client_checkacl(ns_client_t *client,
|
||||
void
|
||||
ns_client_log(ns_client_t *client, isc_logcategory_t *category,
|
||||
isc_logmodule_t *module, int level,
|
||||
const char *fmt, ...);
|
||||
const char *fmt, ...) ISC_FORMAT_PRINTF(5, 6);
|
||||
|
||||
void
|
||||
ns_client_aclmsg(const char *msg, dns_name_t *name, dns_rdataclass_t rdclass,
|
||||
|
||||
@@ -15,9 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: config.h,v 1.1 2001/03/04 21:21:32 bwelling Exp $ */
|
||||
|
||||
/* $Id: config.h,v 1.1 2001/03/04 21:21:32 bwelling Exp $ */
|
||||
/* $Id: config.h,v 1.4 2001/08/09 17:21:06 gson Exp $ */
|
||||
|
||||
#ifndef NAMED_CONFIG_H
|
||||
#define NAMED_CONFIG_H 1
|
||||
@@ -37,7 +35,8 @@ int
|
||||
ns_config_listcount(cfg_obj_t *list);
|
||||
|
||||
isc_result_t
|
||||
ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t *classp);
|
||||
ns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t defclass,
|
||||
dns_rdataclass_t *classp);
|
||||
|
||||
dns_zonetype_t
|
||||
ns_config_getzonetype(cfg_obj_t *zonetypeobj);
|
||||
@@ -63,4 +62,7 @@ ns_config_putipandkeylist(isc_mem_t *mctx, isc_sockaddr_t **addrsp,
|
||||
isc_result_t
|
||||
ns_config_getport(cfg_obj_t *config, in_port_t *portp);
|
||||
|
||||
isc_result_t
|
||||
ns_config_getkeyalgorithm(const char *str, dns_name_t **name);
|
||||
|
||||
#endif /* NAMED_CONFIG_H */
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: globals.h,v 1.57 2001/05/31 10:38:56 tale Exp $ */
|
||||
/* $Id: globals.h,v 1.59 2001/08/08 20:37:31 gson Exp $ */
|
||||
|
||||
#ifndef NAMED_GLOBALS_H
|
||||
#define NAMED_GLOBALS_H 1
|
||||
@@ -76,6 +76,8 @@ EXTERN cfg_obj_t * ns_g_config INIT(NULL);
|
||||
EXTERN cfg_obj_t * ns_g_defaults INIT(NULL);
|
||||
EXTERN const char * ns_g_conffile INIT(NS_SYSCONFDIR
|
||||
"/named.conf");
|
||||
EXTERN const char * ns_g_keyfile INIT(NS_SYSCONFDIR
|
||||
"/rndc.key");
|
||||
EXTERN const char * lwresd_g_conffile INIT(NS_SYSCONFDIR
|
||||
"/lwresd.conf");
|
||||
EXTERN const char * lwresd_g_resolvconffile INIT("/etc"
|
||||
@@ -103,8 +105,6 @@ EXTERN const char * ns_g_defaultpidfile INIT(NS_LOCALSTATEDIR
|
||||
"/run/named.pid");
|
||||
EXTERN const char * lwresd_g_defaultpidfile INIT(NS_LOCALSTATEDIR
|
||||
"/run/lwresd.pid");
|
||||
EXTERN const char * ns_g_autorndckeyfile INIT(NS_LOCALSTATEDIR
|
||||
"/run/named.key");
|
||||
EXTERN const char * ns_g_username INIT(NULL);
|
||||
|
||||
#undef EXTERN
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: interfacemgr.h,v 1.22 2001/01/09 21:40:14 bwelling Exp $ */
|
||||
/* $Id: interfacemgr.h,v 1.23 2001/08/28 03:58:00 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_INTERFACEMGR_H
|
||||
#define NAMED_INTERFACEMGR_H 1
|
||||
@@ -62,7 +62,7 @@
|
||||
*** Types
|
||||
***/
|
||||
|
||||
#define IFACE_MAGIC 0x493A2D29U /* I:-). */
|
||||
#define IFACE_MAGIC ISC_MAGIC('I',':','-',')')
|
||||
#define NS_INTERFACE_VALID(t) ISC_MAGIC_VALID(t, IFACE_MAGIC)
|
||||
|
||||
struct ns_interface {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: lwdclient.h,v 1.12 2001/01/22 22:29:04 gson Exp $ */
|
||||
/* $Id: lwdclient.h,v 1.13 2001/08/08 22:54:24 gson Exp $ */
|
||||
|
||||
#ifndef NAMED_LWDCLIENT_H
|
||||
#define NAMED_LWDCLIENT_H 1
|
||||
@@ -224,6 +224,7 @@ void ns_lwdclient_processnoop(ns_lwdclient_t *, lwres_buffer_t *);
|
||||
|
||||
void ns_lwdclient_errorpktsend(ns_lwdclient_t *, isc_uint32_t);
|
||||
|
||||
void ns_lwdclient_log(int level, const char *format, ...);
|
||||
void ns_lwdclient_log(int level, const char *format, ...)
|
||||
ISC_FORMAT_PRINTF(2, 3);
|
||||
|
||||
#endif /* NAMED_LWDCLIENT_H */
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: lwresd.h,v 1.11 2001/03/04 21:21:34 bwelling Exp $ */
|
||||
/* $Id: lwresd.h,v 1.12 2001/08/28 03:58:02 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_LWRESD_H
|
||||
#define NAMED_LWRESD_H 1
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <dns/types.h>
|
||||
|
||||
struct ns_lwresd {
|
||||
isc_uint32_t magic;
|
||||
unsigned int magic;
|
||||
|
||||
isc_mutex_t lock;
|
||||
dns_view_t *view;
|
||||
@@ -40,7 +40,7 @@ struct ns_lwresd {
|
||||
};
|
||||
|
||||
struct ns_lwreslistener {
|
||||
isc_uint32_t magic;
|
||||
unsigned int magic;
|
||||
|
||||
isc_mutex_t lock;
|
||||
isc_mem_t *mctx;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: lwsearch.h,v 1.3 2001/01/09 21:40:22 bwelling Exp $ */
|
||||
/* $Id: lwsearch.h,v 1.4 2001/08/28 03:58:03 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_LWSEARCH_H
|
||||
#define NAMED_LWSEARCH_H 1
|
||||
@@ -38,7 +38,7 @@
|
||||
*/
|
||||
|
||||
struct ns_lwsearchlist {
|
||||
isc_uint32_t magic;
|
||||
unsigned int magic;
|
||||
|
||||
isc_mutex_t lock;
|
||||
isc_mem_t *mctx;
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: main.h,v 1.7 2001/01/09 21:40:23 bwelling Exp $ */
|
||||
/* $Id: main.h,v 1.8 2001/08/08 22:54:26 gson Exp $ */
|
||||
|
||||
#ifndef NAMED_MAIN_H
|
||||
#define NAMED_MAIN_H 1
|
||||
|
||||
void
|
||||
ns_main_earlyfatal(const char *format, ...);
|
||||
ns_main_earlyfatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
#endif /* NAMED_MAIN_H */
|
||||
|
||||
@@ -15,19 +15,22 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.h,v 1.57 2001/05/31 01:21:09 bwelling Exp $ */
|
||||
/* $Id: server.h,v 1.58.2.1 2001/09/04 19:38:46 gson Exp $ */
|
||||
|
||||
#ifndef NAMED_SERVER_H
|
||||
#define NAMED_SERVER_H 1
|
||||
|
||||
#include <isc/log.h>
|
||||
#include <isc/sockaddr.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/types.h>
|
||||
#include <isc/quota.h>
|
||||
|
||||
#include <dns/types.h>
|
||||
#include <dns/acl.h>
|
||||
|
||||
#include <named/types.h>
|
||||
|
||||
#define NS_EVENTCLASS ISC_EVENTCLASS(0x4E43)
|
||||
#define NS_EVENT_RELOAD (NS_EVENTCLASS + 0)
|
||||
#define NS_EVENT_CLIENTCONTROL (NS_EVENTCLASS + 1)
|
||||
@@ -36,7 +39,7 @@
|
||||
* Name server state. Better here than in lots of separate global variables.
|
||||
*/
|
||||
struct ns_server {
|
||||
isc_uint32_t magic;
|
||||
unsigned int magic;
|
||||
isc_mem_t * mctx;
|
||||
|
||||
isc_task_t * task;
|
||||
@@ -81,9 +84,8 @@ struct ns_server {
|
||||
ns_controls_t * controls; /* Control channels */
|
||||
};
|
||||
|
||||
#define NS_SERVER_MAGIC 0x53564552 /* SVER */
|
||||
#define NS_SERVER_VALID(s) ((s) != NULL && \
|
||||
(s)->magic == NS_SERVER_MAGIC)
|
||||
#define NS_SERVER_MAGIC ISC_MAGIC('S','V','E','R')
|
||||
#define NS_SERVER_VALID(s) ISC_MAGIC_VALID(s, NS_SERVER_MAGIC)
|
||||
|
||||
void
|
||||
ns_server_create(isc_mem_t *mctx, ns_server_t **serverp);
|
||||
|
||||
+72
-60
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: interfacemgr.c,v 1.59 2001/06/15 23:18:04 gson Exp $ */
|
||||
/* $Id: interfacemgr.c,v 1.59.2.3 2001/10/22 17:42:05 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -469,14 +469,14 @@ clearacl(isc_mem_t *mctx, dns_acl_t **aclp) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
static void
|
||||
static isc_result_t
|
||||
do_ipv4(ns_interfacemgr_t *mgr) {
|
||||
isc_interfaceiter_t *iter = NULL;
|
||||
isc_result_t result;
|
||||
|
||||
result = isc_interfaceiter_create(mgr->mctx, &iter);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return;
|
||||
return (result);
|
||||
|
||||
result = clearacl(mgr->mctx, &mgr->aclenv.localhost);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
@@ -505,23 +505,32 @@ do_ipv4(ns_interfacemgr_t *mgr) {
|
||||
if ((interface.flags & INTERFACE_F_UP) == 0)
|
||||
continue;
|
||||
|
||||
result = isc_netaddr_masktoprefixlen(&interface.netmask,
|
||||
&prefixlen);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto ignore_interface;
|
||||
elt.type = dns_aclelementtype_ipprefix;
|
||||
elt.negative = ISC_FALSE;
|
||||
elt.u.ip_prefix.address = interface.address;
|
||||
elt.u.ip_prefix.prefixlen = prefixlen;
|
||||
/* XXX suppress duplicates */
|
||||
result = dns_acl_appendelement(mgr->aclenv.localnets, &elt);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto ignore_interface;
|
||||
elt.u.ip_prefix.prefixlen = 32;
|
||||
result = dns_acl_appendelement(mgr->aclenv.localhost, &elt);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto ignore_interface;
|
||||
|
||||
result = isc_netaddr_masktoprefixlen(&interface.netmask,
|
||||
&prefixlen);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
ISC_LOG_WARNING,
|
||||
"omitting IPv4 interface %s from "
|
||||
"localnets ACL: %s",
|
||||
interface.name,
|
||||
isc_result_totext(result));
|
||||
} else {
|
||||
elt.u.ip_prefix.prefixlen = prefixlen;
|
||||
/* XXX suppress duplicates */
|
||||
result = dns_acl_appendelement(mgr->aclenv.localnets,
|
||||
&elt);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto ignore_interface;
|
||||
}
|
||||
|
||||
for (le = ISC_LIST_HEAD(mgr->listenon4->elts);
|
||||
le != NULL;
|
||||
le = ISC_LIST_NEXT(le, link))
|
||||
@@ -590,18 +599,15 @@ do_ipv4(ns_interfacemgr_t *mgr) {
|
||||
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||
"IPv4: interface iteration failed: %s",
|
||||
isc_result_totext(result));
|
||||
else
|
||||
result = ISC_R_SUCCESS;
|
||||
cleanup_iter:
|
||||
isc_interfaceiter_destroy(&iter);
|
||||
return (result);
|
||||
}
|
||||
|
||||
static isc_boolean_t
|
||||
listenon_is_ip6_none(ns_listenlist_t *p) {
|
||||
ns_listenelt_t *elt;
|
||||
if (ISC_LIST_EMPTY(p->elts))
|
||||
return (ISC_TRUE); /* No listen-on-v6 statements */
|
||||
elt = ISC_LIST_HEAD(p->elts);
|
||||
if (ISC_LIST_NEXT(elt, link) != NULL)
|
||||
return (ISC_FALSE); /* More than one listen-on-v6 stmt */
|
||||
listenon_is_ip6_none(ns_listenelt_t *elt) {
|
||||
if (elt->acl->length == 0)
|
||||
return (ISC_TRUE); /* listen-on-v6 { } */
|
||||
if (elt->acl->length > 1)
|
||||
@@ -613,69 +619,73 @@ listenon_is_ip6_none(ns_listenlist_t *p) {
|
||||
}
|
||||
|
||||
static isc_boolean_t
|
||||
listenon_is_ip6_any(ns_listenlist_t *p, in_port_t *portp) {
|
||||
ns_listenelt_t *elt;
|
||||
if (ISC_LIST_EMPTY(p->elts))
|
||||
return (ISC_FALSE); /* No listen-on-v6 statements */
|
||||
elt = ISC_LIST_HEAD(p->elts);
|
||||
if (ISC_LIST_NEXT(elt, link) != NULL)
|
||||
return (ISC_FALSE); /* More than one listen-on-v6 stmt */
|
||||
listenon_is_ip6_any(ns_listenelt_t *elt) {
|
||||
if (elt->acl->length != 1)
|
||||
return (ISC_FALSE);
|
||||
if (elt->acl->elements[0].negative == ISC_FALSE &&
|
||||
elt->acl->elements[0].type == dns_aclelementtype_any) {
|
||||
*portp = elt->port;
|
||||
elt->acl->elements[0].type == dns_aclelementtype_any)
|
||||
return (ISC_TRUE); /* listen-on-v6 { any; } */
|
||||
}
|
||||
return (ISC_FALSE); /* All others */
|
||||
}
|
||||
|
||||
static void
|
||||
static isc_result_t
|
||||
do_ipv6(ns_interfacemgr_t *mgr) {
|
||||
isc_result_t result;
|
||||
ns_interface_t *ifp;
|
||||
isc_sockaddr_t listen_addr;
|
||||
struct in6_addr in6a;
|
||||
in_port_t port;
|
||||
ns_listenelt_t *le;
|
||||
|
||||
if (listenon_is_ip6_none(mgr->listenon6))
|
||||
return;
|
||||
|
||||
if (! listenon_is_ip6_any(mgr->listenon6, &port)) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
ISC_LOG_ERROR,
|
||||
"bad IPv6 listen-on list: must be 'any' or 'none'");
|
||||
return;
|
||||
}
|
||||
|
||||
in6a = in6addr_any;
|
||||
isc_sockaddr_fromin6(&listen_addr, &in6a, port);
|
||||
|
||||
ifp = find_matching_interface(mgr, &listen_addr);
|
||||
if (ifp != NULL) {
|
||||
ifp->generation = mgr->generation;
|
||||
} else {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_INFO,
|
||||
"listening on IPv6 interfaces, port %u", port);
|
||||
result = ns_interface_setup(mgr, &listen_addr, "<any>", &ifp);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
for (le = ISC_LIST_HEAD(mgr->listenon6->elts);
|
||||
le != NULL;
|
||||
le = ISC_LIST_NEXT(le, link))
|
||||
{
|
||||
if (listenon_is_ip6_none(le))
|
||||
continue;
|
||||
if (! listenon_is_ip6_any(le)) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
ISC_LOG_ERROR,
|
||||
"listening on IPv6 interfaces failed");
|
||||
/* Continue. */
|
||||
"bad IPv6 listen-on list: "
|
||||
"must be 'any' or 'none'");
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
|
||||
in6a = in6addr_any;
|
||||
isc_sockaddr_fromin6(&listen_addr, &in6a, le->port);
|
||||
|
||||
ifp = find_matching_interface(mgr, &listen_addr);
|
||||
if (ifp != NULL) {
|
||||
ifp->generation = mgr->generation;
|
||||
} else {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_INFO,
|
||||
"listening on IPv6 interfaces, port %u",
|
||||
le->port);
|
||||
result = ns_interface_setup(mgr, &listen_addr,
|
||||
"<any>", &ifp);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
ISC_LOG_ERROR,
|
||||
"listening on IPv6 interfaces "
|
||||
"failed");
|
||||
/* Continue. */
|
||||
}
|
||||
}
|
||||
}
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
void
|
||||
ns_interfacemgr_scan(ns_interfacemgr_t *mgr, isc_boolean_t verbose) {
|
||||
isc_boolean_t purge = ISC_TRUE;
|
||||
|
||||
REQUIRE(NS_INTERFACEMGR_VALID(mgr));
|
||||
|
||||
mgr->generation++; /* Increment the generation count. */
|
||||
|
||||
if (isc_net_probeipv6() == ISC_R_SUCCESS)
|
||||
do_ipv6(mgr);
|
||||
if (isc_net_probeipv6() == ISC_R_SUCCESS) {
|
||||
if (do_ipv6(mgr) != ISC_R_SUCCESS)
|
||||
purge = ISC_FALSE;
|
||||
}
|
||||
#ifdef WANT_IPV6
|
||||
else
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
@@ -683,9 +693,10 @@ ns_interfacemgr_scan(ns_interfacemgr_t *mgr, isc_boolean_t verbose) {
|
||||
"no IPv6 interfaces found");
|
||||
#endif
|
||||
|
||||
if (isc_net_probeipv4() == ISC_R_SUCCESS)
|
||||
do_ipv4(mgr);
|
||||
else
|
||||
if (isc_net_probeipv4() == ISC_R_SUCCESS) {
|
||||
if (do_ipv4(mgr) != ISC_R_SUCCESS)
|
||||
purge = ISC_FALSE;
|
||||
} else
|
||||
isc_log_write(IFMGR_COMMON_LOGARGS,
|
||||
verbose ? ISC_LOG_INFO : ISC_LOG_DEBUG(1),
|
||||
"no IPv4 interfaces found");
|
||||
@@ -696,7 +707,8 @@ ns_interfacemgr_scan(ns_interfacemgr_t *mgr, isc_boolean_t verbose) {
|
||||
* how we catch interfaces that go away or change their
|
||||
* addresses.
|
||||
*/
|
||||
purge_old_interfaces(mgr);
|
||||
if (purge)
|
||||
purge_old_interfaces(mgr);
|
||||
|
||||
/*
|
||||
* Warn if we are not listening on any interface, unless
|
||||
|
||||
+7
-5
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: log.c,v 1.33 2001/06/14 14:14:17 gson Exp $ */
|
||||
/* $Id: log.c,v 1.33.2.1 2001/10/31 22:44:15 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -168,10 +168,12 @@ isc_result_t
|
||||
ns_log_setdefaultcategory(isc_logconfig_t *lcfg) {
|
||||
isc_result_t result;
|
||||
|
||||
result = isc_log_usechannel(lcfg, "default_syslog",
|
||||
ISC_LOGCATEGORY_DEFAULT, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
if (! ns_g_logstderr) {
|
||||
result = isc_log_usechannel(lcfg, "default_syslog",
|
||||
ISC_LOGCATEGORY_DEFAULT, NULL);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
result = isc_log_usechannel(lcfg, "default_debug",
|
||||
ISC_LOGCATEGORY_DEFAULT, NULL);
|
||||
|
||||
+6
-6
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: logconf.c,v 1.30 2001/05/28 05:16:57 marka Exp $ */
|
||||
/* $Id: logconf.c,v 1.30.2.3 2001/10/11 02:03:20 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -74,7 +74,7 @@ category_fromconf(cfg_obj_t *ccat, isc_logconfig_t *lctx) {
|
||||
result = isc_log_usechannel(lctx, channelname, category,
|
||||
module);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_CONFIG,
|
||||
isc_log_write(ns_g_lctx, CFG_LOGCATEGORY_CONFIG,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
|
||||
"logging channel '%s': %s", channelname,
|
||||
isc_result_totext(result));
|
||||
@@ -134,7 +134,7 @@ channel_fromconf(cfg_obj_t *channel, isc_logconfig_t *lctx) {
|
||||
cfg_obj_t *sizeobj = cfg_tuple_get(fileobj, "size");
|
||||
cfg_obj_t *versionsobj = cfg_tuple_get(fileobj, "versions");
|
||||
isc_int32_t versions = ISC_LOG_ROLLNEVER;
|
||||
isc_offset_t size = ISC_OFFSET_MAXIMUM;
|
||||
isc_offset_t size = 0;
|
||||
|
||||
type = ISC_LOG_TOFILE;
|
||||
|
||||
@@ -221,7 +221,7 @@ channel_fromconf(cfg_obj_t *channel, isc_logconfig_t *lctx) {
|
||||
*/
|
||||
result = isc_stdio_open(dest.file.name, "a", &fp);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_CONFIG,
|
||||
isc_log_write(ns_g_lctx, CFG_LOGCATEGORY_CONFIG,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
|
||||
"logging channel '%s' file '%s': %s",
|
||||
channelname, dest.file.name,
|
||||
@@ -267,12 +267,12 @@ ns_log_configure(isc_logconfig_t *logconf, cfg_obj_t *logstmt) {
|
||||
CHECK(category_fromconf(category, logconf));
|
||||
if (!default_set) {
|
||||
cfg_obj_t *catname = cfg_tuple_get(category, "name");
|
||||
if (strcmp(cfg_obj_asstring(catname), "default"))
|
||||
if (strcmp(cfg_obj_asstring(catname), "default") == 0)
|
||||
default_set = ISC_TRUE;
|
||||
}
|
||||
if (!unmatched_set) {
|
||||
cfg_obj_t *catname = cfg_tuple_get(category, "name");
|
||||
if (strcmp(cfg_obj_asstring(catname), "unmatched"))
|
||||
if (strcmp(cfg_obj_asstring(catname), "unmatched") == 0)
|
||||
unmatched_set = ISC_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: lwdgnba.c,v 1.12 2001/01/22 22:29:01 gson Exp $ */
|
||||
/* $Id: lwdgnba.c,v 1.13 2001/08/08 22:54:19 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -98,7 +98,7 @@ byaddr_done(isc_task_t *task, isc_event_t *event) {
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto out;
|
||||
ns_lwdclient_log(50, "found name '%.*s'",
|
||||
client->recv_buffer.used - b.used,
|
||||
(int)(client->recv_buffer.used - b.used),
|
||||
(char *)(b.base) + b.used);
|
||||
if (gnba->realname == NULL) {
|
||||
gnba->realname = (char *)(b.base) + b.used;
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: lwresd.c,v 1.36 2001/04/02 22:52:07 bwelling Exp $ */
|
||||
/* $Id: lwresd.c,v 1.37 2001/08/07 01:58:55 marka Exp $ */
|
||||
|
||||
/*
|
||||
* Main program for the Lightweight Resolver Daemon.
|
||||
@@ -323,7 +323,7 @@ ns_lwdmanager_create(isc_mem_t *mctx, cfg_obj_t *lwres,
|
||||
if (viewobj != NULL) {
|
||||
vname = cfg_obj_asstring(cfg_tuple_get(viewobj, "name"));
|
||||
obj = cfg_tuple_get(viewobj, "class");
|
||||
result = ns_config_getclass(obj, &vclass);
|
||||
result = ns_config_getclass(obj, dns_rdataclass_in, &vclass);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto fail;
|
||||
} else {
|
||||
|
||||
+15
-16
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: main.c,v 1.116 2001/06/28 01:08:24 marka Exp $ */
|
||||
/* $Id: main.c,v 1.119 2001/08/08 22:54:20 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -124,6 +124,10 @@ assertion_failed(const char *file, int line, isc_assertiontype_t type,
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void
|
||||
library_fatal_error(const char *file, int line, const char *format,
|
||||
va_list args) ISC_FORMAT_PRINTF(3, 0);
|
||||
|
||||
static void
|
||||
library_fatal_error(const char *file, int line, const char *format,
|
||||
va_list args)
|
||||
@@ -160,6 +164,10 @@ library_fatal_error(const char *file, int line, const char *format,
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void
|
||||
library_unexpected_error(const char *file, int line, const char *format,
|
||||
va_list args) ISC_FORMAT_PRINTF(3, 0);
|
||||
|
||||
static void
|
||||
library_unexpected_error(const char *file, int line, const char *format,
|
||||
va_list args)
|
||||
@@ -482,20 +490,13 @@ setup(void) {
|
||||
* directory's name before possibly changing to another directory.
|
||||
*/
|
||||
if (! isc_file_isabsolute(ns_g_conffile)) {
|
||||
result = isc_dir_current(absolute_conffile,
|
||||
sizeof(absolute_conffile), ISC_TRUE);
|
||||
result = isc_file_absolutepath(ns_g_conffile,
|
||||
absolute_conffile,
|
||||
sizeof(absolute_conffile));
|
||||
if (result != ISC_R_SUCCESS)
|
||||
ns_main_earlyfatal("getting current directory failed: "
|
||||
"%s", isc_result_totext(result));
|
||||
|
||||
if (strlen(absolute_conffile) + strlen(ns_g_conffile) + 1 >
|
||||
sizeof(absolute_conffile))
|
||||
ns_main_earlyfatal("configuration filename too long: "
|
||||
"%s%s", absolute_conffile,
|
||||
ns_g_conffile);
|
||||
|
||||
strcat(absolute_conffile, ns_g_conffile);
|
||||
|
||||
ns_main_earlyfatal("could not construct absolute path of "
|
||||
"configuration file: %s",
|
||||
isc_result_totext(result));
|
||||
ns_g_conffile = absolute_conffile;
|
||||
}
|
||||
|
||||
@@ -523,8 +524,6 @@ cleanup(void) {
|
||||
*/
|
||||
/* xxdb_clear(); */
|
||||
|
||||
(void)isc_file_remove(ns_g_autorndckeyfile);
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,
|
||||
ISC_LOG_NOTICE, "exiting");
|
||||
ns_log_shutdown();
|
||||
|
||||
+12
-44
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: query.c,v 1.196 2001/06/15 23:28:27 gson Exp $ */
|
||||
/* $Id: query.c,v 1.198.2.1 2001/11/15 01:24:17 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
#include <dns/db.h>
|
||||
#include <dns/events.h>
|
||||
#include <dns/message.h>
|
||||
#ifdef DNS_OPT_NEWCODES
|
||||
#include <dns/opt.h>
|
||||
#endif /* DNS_OPT_NEWCODES */
|
||||
#include <dns/rdata.h>
|
||||
#include <dns/rdataclass.h>
|
||||
#include <dns/rdatalist.h>
|
||||
@@ -789,25 +786,6 @@ query_getdb(ns_client_t *client, dns_name_t *name, unsigned int options,
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
if (client->opt_zone != NULL) {
|
||||
result = query_getzonedb(client, &(client->opt_zone->name),
|
||||
options, zonep, dbp, versionp);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
*is_zonep = ISC_TRUE;
|
||||
else
|
||||
result = DNS_R_REFUSED;
|
||||
} else {
|
||||
result = query_getzonedb(client, name, options, zonep, dbp,
|
||||
versionp);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
*is_zonep = ISC_TRUE;
|
||||
} else if (result == ISC_R_NOTFOUND) {
|
||||
result = query_getcachedb(client, dbp, options);
|
||||
*is_zonep = ISC_FALSE;
|
||||
}
|
||||
}
|
||||
#else /* DNS_OPT_NEWCODES_LIVE */
|
||||
result = query_getzonedb(client, name, options, zonep, dbp, versionp);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
*is_zonep = ISC_TRUE;
|
||||
@@ -815,7 +793,6 @@ query_getdb(ns_client_t *client, dns_name_t *name, unsigned int options,
|
||||
result = query_getcachedb(client, dbp, options);
|
||||
*is_zonep = ISC_FALSE;
|
||||
}
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
return (result);
|
||||
}
|
||||
|
||||
@@ -2569,11 +2546,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
*/
|
||||
break;
|
||||
case DNS_R_GLUE:
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
if (client->opt_zone != NULL)
|
||||
break;
|
||||
/* Fallthrough if we don't have opt_zone */
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
case DNS_R_ZONECUT:
|
||||
/*
|
||||
* These cases are handled in the main line below.
|
||||
@@ -2582,13 +2554,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
authoritative = ISC_FALSE;
|
||||
break;
|
||||
case ISC_R_NOTFOUND:
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
/*
|
||||
* If we've passed in opt_zone, don't try anything more.
|
||||
*/
|
||||
if (client->opt_zone != NULL)
|
||||
break;
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
/*
|
||||
* The cache doesn't even have the root NS. Get them from
|
||||
* the hints DB.
|
||||
@@ -2608,6 +2573,17 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
rdataset, sigrdataset);
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
/*
|
||||
* Nonsensical root hints may require cleanup.
|
||||
*/
|
||||
if (dns_rdataset_isassociated(rdataset))
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (sigrdataset != NULL &&
|
||||
dns_rdataset_isassociated(sigrdataset))
|
||||
dns_rdataset_disassociate(sigrdataset);
|
||||
if (node != NULL)
|
||||
dns_db_detachnode(db, &node);
|
||||
|
||||
/*
|
||||
* We don't have any root server hints, but
|
||||
* we may have working forwarders, so try to
|
||||
@@ -2641,14 +2617,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
*/
|
||||
/* FALLTHROUGH */
|
||||
case DNS_R_DELEGATION:
|
||||
#ifdef DNS_OPT_NEWCODES_LIVE
|
||||
/*
|
||||
* If we've passed in opt_zone, don't try anything more.
|
||||
*/
|
||||
if (client->opt_zone != NULL) {
|
||||
break;
|
||||
}
|
||||
#endif /* DNS_OPT_NEWCODES_LIVE */
|
||||
authoritative = ISC_FALSE;
|
||||
if (is_zone) {
|
||||
/*
|
||||
|
||||
+41
-12
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.c,v 1.333 2001/07/11 22:22:37 bwelling Exp $ */
|
||||
/* $Id: server.c,v 1.339.2.1 2001/09/28 05:35:47 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -192,7 +192,8 @@ configure_view_dnsseckey(cfg_obj_t *vconfig, cfg_obj_t *key,
|
||||
viewclass = dns_rdataclass_in;
|
||||
else {
|
||||
cfg_obj_t *classobj = cfg_tuple_get(vconfig, "class");
|
||||
CHECK(ns_config_getclass(classobj, &viewclass));
|
||||
CHECK(ns_config_getclass(classobj, dns_rdataclass_in,
|
||||
&viewclass));
|
||||
}
|
||||
keystruct.common.rdclass = viewclass;
|
||||
keystruct.common.rdtype = dns_rdatatype_key;
|
||||
@@ -648,8 +649,8 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
||||
result = ns_config_get(maps, "lame-ttl", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
lame_ttl = cfg_obj_asuint32(obj);
|
||||
if (lame_ttl > 18000)
|
||||
lame_ttl = 18000;
|
||||
if (lame_ttl > 1800)
|
||||
lame_ttl = 1800;
|
||||
dns_resolver_setlamettl(view->resolver, lame_ttl);
|
||||
|
||||
/*
|
||||
@@ -728,10 +729,22 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
||||
dns_aclenv_copy(&view->aclenv, &ns_g_server->aclenv);
|
||||
|
||||
/*
|
||||
* Configure the "match-clients" ACL.
|
||||
* Configure the "match-clients" and "match-destinations" ACL.
|
||||
*/
|
||||
CHECK(configure_view_acl(vconfig, config, "match-clients", actx,
|
||||
ns_g_mctx, &view->matchclients));
|
||||
CHECK(configure_view_acl(vconfig, config, "match-destinations", actx,
|
||||
ns_g_mctx, &view->matchdestinations));
|
||||
|
||||
/*
|
||||
* Configure the "match-recursive-only" option.
|
||||
*/
|
||||
obj = NULL;
|
||||
(void) ns_config_get(maps, "match-recursive-only", &obj);
|
||||
if (obj != NULL && cfg_obj_asboolean(obj))
|
||||
view->matchrecursiveonly = ISC_TRUE;
|
||||
else
|
||||
view->matchrecursiveonly = ISC_FALSE;
|
||||
|
||||
/*
|
||||
* Configure other configurable data.
|
||||
@@ -973,6 +986,7 @@ create_authors_zone(cfg_obj_t *options, dns_zonemgr_t *zmgr, dns_view_t *view)
|
||||
"\022Andreas Gustafsson",
|
||||
"\012Bob Halley",
|
||||
"\016David Lawrence",
|
||||
"\013Danny Mayer",
|
||||
"\013Damien Neil",
|
||||
"\013Matt Nelson",
|
||||
"\016Michael Sawyer",
|
||||
@@ -1134,8 +1148,14 @@ configure_forward(cfg_obj_t *config, dns_view_t *view, dns_name_t *origin,
|
||||
|
||||
result = dns_fwdtable_add(view->fwdtable, origin, &addresses,
|
||||
fwdpolicy);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
char namebuf[DNS_NAME_FORMATSIZE];
|
||||
dns_name_format(origin, namebuf, sizeof(namebuf));
|
||||
cfg_obj_log(forwarders, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"could not set up forwarding for domain '%s': %s",
|
||||
namebuf, isc_result_totext(result));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
result = ISC_R_SUCCESS;
|
||||
|
||||
@@ -1169,7 +1189,8 @@ create_view(cfg_obj_t *vconfig, dns_viewlist_t *viewlist, dns_view_t **viewp) {
|
||||
|
||||
viewname = cfg_obj_asstring(cfg_tuple_get(vconfig, "name"));
|
||||
classobj = cfg_tuple_get(vconfig, "class");
|
||||
result = ns_config_getclass(classobj, &viewclass);
|
||||
result = ns_config_getclass(classobj, dns_rdataclass_in,
|
||||
&viewclass);
|
||||
} else {
|
||||
viewname = "_default";
|
||||
viewclass = dns_rdataclass_in;
|
||||
@@ -1230,7 +1251,8 @@ configure_zone(cfg_obj_t *config, cfg_obj_t *zconfig, cfg_obj_t *vconfig,
|
||||
&buffer, dns_rootname, ISC_FALSE, NULL));
|
||||
origin = dns_fixedname_name(&fixorigin);
|
||||
|
||||
CHECK(ns_config_getclass(cfg_tuple_get(zconfig, "class"), &zclass));
|
||||
CHECK(ns_config_getclass(cfg_tuple_get(zconfig, "class"),
|
||||
view->rdclass, &zclass));
|
||||
if (zclass != view->rdclass) {
|
||||
const char *vname = NULL;
|
||||
if (vconfig != NULL)
|
||||
@@ -1270,8 +1292,15 @@ configure_zone(cfg_obj_t *config, cfg_obj_t *zconfig, cfg_obj_t *vconfig,
|
||||
goto cleanup;
|
||||
}
|
||||
if (dns_name_equal(origin, dns_rootname)) {
|
||||
result = configure_hints(view,
|
||||
cfg_obj_asstring(fileobj));
|
||||
char *hintsfile = cfg_obj_asstring(fileobj);
|
||||
result = configure_hints(view, hintsfile);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER,
|
||||
ISC_LOG_ERROR,
|
||||
"could not configure root hints "
|
||||
"from '%s': %s", hintsfile,
|
||||
isc_result_totext(result));
|
||||
} else {
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
|
||||
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
|
||||
@@ -1279,6 +1308,7 @@ configure_zone(cfg_obj_t *config, cfg_obj_t *zconfig, cfg_obj_t *vconfig,
|
||||
zname);
|
||||
result = ISC_R_SUCCESS;
|
||||
}
|
||||
/* Skip ordinary zone processing. */
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@@ -1416,8 +1446,7 @@ directory_callback(const char *clausename, cfg_obj_t *obj, void *arg) {
|
||||
*/
|
||||
directory = cfg_obj_asstring(obj);
|
||||
|
||||
if (!isc_file_isabsolute(directory) &&
|
||||
!isc_file_iscurrentdir(directory))
|
||||
if (! isc_file_ischdiridempotent(directory))
|
||||
cfg_obj_log(obj, ns_g_lctx, ISC_LOG_WARNING,
|
||||
"option 'directory' contains relative path '%s'",
|
||||
directory);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: tsigconf.c,v 1.18 2001/06/10 02:37:08 bwelling Exp $ */
|
||||
/* $Id: tsigconf.c,v 1.21 2001/08/03 18:39:50 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <named/log.h>
|
||||
|
||||
#include <named/config.h>
|
||||
#include <named/tsigconf.h>
|
||||
|
||||
static isc_result_t
|
||||
@@ -83,11 +84,7 @@ add_initial_keys(cfg_obj_t *list, dns_tsig_keyring_t *ring, isc_mem_t *mctx) {
|
||||
* Create the algorithm.
|
||||
*/
|
||||
algstr = cfg_obj_asstring(algobj);
|
||||
if (strcasecmp(algstr, "hmac-md5") == 0 ||
|
||||
strcasecmp(algstr, "hmac-md5.sig-alg.reg.int") ||
|
||||
strcasecmp(algstr, "hmac-md5.sig-alg.reg.int."))
|
||||
alg = dns_tsig_hmacmd5_name;
|
||||
else {
|
||||
if (ns_config_getkeyalgorithm(algstr, &alg) != ISC_R_SUCCESS) {
|
||||
cfg_obj_log(algobj, ns_g_lctx, ISC_LOG_ERROR,
|
||||
"key '%s': the only supported algorithm "
|
||||
"is hmac-md5", keyid);
|
||||
@@ -122,7 +119,7 @@ add_initial_keys(cfg_obj_t *list, dns_tsig_keyring_t *ring, isc_mem_t *mctx) {
|
||||
|
||||
failure:
|
||||
cfg_obj_log(key, ns_g_lctx, ISC_LOG_ERROR,
|
||||
"configuring TSIG key '%s': %s", keyid,
|
||||
"configuring key '%s': %s", keyid,
|
||||
isc_result_totext(ret));
|
||||
|
||||
if (secret != NULL)
|
||||
|
||||
+57
-26
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: os.c,v 1.44 2001/05/25 07:42:15 marka Exp $ */
|
||||
/* $Id: os.c,v 1.46.2.1 2001/10/22 23:28:12 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
#include <stdarg.h>
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <isc/file.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/result.h>
|
||||
#include <isc/strerror.h>
|
||||
#include <isc/string.h>
|
||||
|
||||
#include <named/main.h>
|
||||
@@ -133,6 +134,7 @@ static void
|
||||
linux_setcaps(unsigned int caps) {
|
||||
struct __user_cap_header_struct caphead;
|
||||
struct __user_cap_data_struct cap;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
|
||||
if ((getuid() != 0 && !non_root_caps) || non_root)
|
||||
return;
|
||||
@@ -144,8 +146,10 @@ linux_setcaps(unsigned int caps) {
|
||||
cap.effective = caps;
|
||||
cap.permitted = caps;
|
||||
cap.inheritable = caps;
|
||||
if (syscall(SYS_capset, &caphead, &cap) < 0)
|
||||
ns_main_earlyfatal("capset failed: %s", strerror(errno));
|
||||
if (syscall(SYS_capset, &caphead, &cap) < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("capset failed: %s", strbuf);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -233,15 +237,17 @@ linux_minprivs(void) {
|
||||
#ifdef HAVE_SYS_PRCTL_H
|
||||
static void
|
||||
linux_keepcaps(void) {
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
/*
|
||||
* Ask the kernel to allow us to keep our capabilities after we
|
||||
* setuid().
|
||||
*/
|
||||
|
||||
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) {
|
||||
if (errno != EINVAL)
|
||||
ns_main_earlyfatal("prctl() failed: %s",
|
||||
strerror(errno));
|
||||
if (errno != EINVAL) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("prctl() failed: %s", strbuf);
|
||||
}
|
||||
} else {
|
||||
non_root_caps = ISC_TRUE;
|
||||
if (getuid() != 0)
|
||||
@@ -280,10 +286,13 @@ void
|
||||
ns_os_daemonize(void) {
|
||||
pid_t pid;
|
||||
int fd;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
|
||||
pid = fork();
|
||||
if (pid == -1)
|
||||
ns_main_earlyfatal("fork(): %s", strerror(errno));
|
||||
if (pid == -1) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("fork(): %s", strbuf);
|
||||
}
|
||||
if (pid != 0)
|
||||
_exit(0);
|
||||
|
||||
@@ -295,8 +304,10 @@ ns_os_daemonize(void) {
|
||||
mainpid = getpid();
|
||||
#endif
|
||||
|
||||
if (setsid() == -1)
|
||||
ns_main_earlyfatal("setsid(): %s", strerror(errno));
|
||||
if (setsid() == -1) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("setsid(): %s", strbuf);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try to set stdin, stdout, and stderr to /dev/null, but press
|
||||
@@ -337,16 +348,22 @@ all_digits(const char *s) {
|
||||
|
||||
void
|
||||
ns_os_chroot(const char *root) {
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
if (root != NULL) {
|
||||
if (chroot(root) < 0)
|
||||
ns_main_earlyfatal("chroot(): %s", strerror(errno));
|
||||
if (chdir("/") < 0)
|
||||
ns_main_earlyfatal("chdir(/): %s", strerror(errno));
|
||||
if (chroot(root) < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("chroot(): %s", strbuf);
|
||||
}
|
||||
if (chdir("/") < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("chdir(/): %s", strbuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_inituserinfo(const char *username) {
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
if (username == NULL)
|
||||
return;
|
||||
|
||||
@@ -360,14 +377,17 @@ ns_os_inituserinfo(const char *username) {
|
||||
ns_main_earlyfatal("user '%s' unknown", username);
|
||||
|
||||
if (getuid() == 0) {
|
||||
if (initgroups(runas_pw->pw_name, runas_pw->pw_gid) < 0)
|
||||
ns_main_earlyfatal("initgroups(): %s", strerror(errno));
|
||||
if (initgroups(runas_pw->pw_name, runas_pw->pw_gid) < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("initgroups(): %s", strbuf);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_changeuser(void) {
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
if (runas_pw == NULL || done_setuid)
|
||||
return;
|
||||
|
||||
@@ -382,11 +402,15 @@ ns_os_changeuser(void) {
|
||||
"2.3.99-pre3 or 2.2.18 when using threads");
|
||||
#endif
|
||||
|
||||
if (setgid(runas_pw->pw_gid) < 0)
|
||||
ns_main_earlyfatal("setgid(): %s", strerror(errno));
|
||||
if (setgid(runas_pw->pw_gid) < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("setgid(): %s", strbuf);
|
||||
}
|
||||
|
||||
if (setuid(runas_pw->pw_uid) < 0)
|
||||
ns_main_earlyfatal("setuid(): %s", strerror(errno));
|
||||
if (setuid(runas_pw->pw_uid) < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("setuid(): %s", strbuf);
|
||||
}
|
||||
|
||||
#if defined(HAVE_LINUX_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS)
|
||||
linux_minprivs();
|
||||
@@ -447,6 +471,7 @@ ns_os_writepidfile(const char *filename) {
|
||||
FILE *lockfile;
|
||||
size_t len;
|
||||
pid_t pid;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
|
||||
/*
|
||||
* The caller must ensure any required synchronization.
|
||||
@@ -456,20 +481,26 @@ ns_os_writepidfile(const char *filename) {
|
||||
|
||||
len = strlen(filename);
|
||||
pidfile = malloc(len + 1);
|
||||
if (pidfile == NULL)
|
||||
if (pidfile == NULL) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("couldn't malloc '%s': %s",
|
||||
filename, strerror(errno));
|
||||
filename, strbuf);
|
||||
}
|
||||
/* This is safe. */
|
||||
strcpy(pidfile, filename);
|
||||
|
||||
fd = safe_open(filename, ISC_FALSE);
|
||||
if (fd < 0)
|
||||
if (fd < 0) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("couldn't open pid file '%s': %s",
|
||||
filename, strerror(errno));
|
||||
filename, strbuf);
|
||||
}
|
||||
lockfile = fdopen(fd, "w");
|
||||
if (lockfile == NULL)
|
||||
if (lockfile == NULL) {
|
||||
isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
ns_main_earlyfatal("could not fdopen() pid file '%s': %s",
|
||||
filename, strerror(errno));
|
||||
filename, strbuf);
|
||||
}
|
||||
#ifdef HAVE_LINUXTHREADS
|
||||
pid = mainpid;
|
||||
#else
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: ntservice.h,v 1.1 2001/07/18 03:43:18 mayer Exp $ */
|
||||
|
||||
#ifndef NTSERVICE_H
|
||||
#define NTSERVICE_H
|
||||
|
||||
#include <winsvc.h>
|
||||
|
||||
#define BIND_DISPLAY_NAME "ISC BIND"
|
||||
#define BIND_SERVICE_NAME "named"
|
||||
|
||||
void
|
||||
ntservice_init();
|
||||
void UpdateSCM(DWORD);
|
||||
void ServiceControl(DWORD dwCtrlCode);
|
||||
void
|
||||
ntservice_shutdown();
|
||||
#endif
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: os.h,v 1.1 2001/07/18 03:43:18 mayer Exp $ */
|
||||
|
||||
#ifndef NS_OS_H
|
||||
#define NS_OS_H 1
|
||||
|
||||
#include <isc/types.h>
|
||||
|
||||
void
|
||||
ns_os_init(const char *progname);
|
||||
|
||||
void
|
||||
ns_os_daemonize(void);
|
||||
|
||||
void
|
||||
ns_os_chroot(const char *root);
|
||||
|
||||
void
|
||||
ns_os_inituserinfo(const char *username);
|
||||
|
||||
void
|
||||
ns_os_changeuser(void);
|
||||
|
||||
void
|
||||
ns_os_minprivs(void);
|
||||
|
||||
void
|
||||
ns_os_writepidfile(const char *filename);
|
||||
|
||||
void
|
||||
ns_os_shutdown(void);
|
||||
|
||||
#endif /* NS_OS_H */
|
||||
@@ -0,0 +1,323 @@
|
||||
# Microsoft Developer Studio Project File - Name="named" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=named - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "named.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "named.mak" CFG="named - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "named - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "named - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/isccc/win32/Release/libisccc.lib ../../../lib/lwres/win32/Release/liblwres.lib ../../../lib/isccfg/win32/Release/libisccfg.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/named.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/isccc/win32/Debug/libisccc.lib ../../../lib/lwres/win32/Debug/liblwres.lib ../../../lib/isccfg/win32/Debug/libisccfg.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"../../../Build/Debug/named.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "named - Win32 Release"
|
||||
# Name "named - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\aclconf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\client.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\config.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\control.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\controlconf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\interfacemgr.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\listenlist.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\log.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\logconf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwaddr.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwdclient.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwderror.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwdgabn.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwdgnba.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwdgrbn.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwdnoop.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwresd.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\lwsearch.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\main.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\notify.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ntservice.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\os.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\query.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\server.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\sortlist.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\tkeyconf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\tsigconf.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\update.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\xfrout.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\zoneconf.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\aclconf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\client.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\config.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\globals.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\interfacemgr.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\listenlist.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\log.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\logconf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\lwaddr.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\lwdclient.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\lwresd.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\lwsearch.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\main.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\notify.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\include\named\ntservice.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\omapi.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\include\named\os.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\query.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\server.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\sortlist.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\tkeyconf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\tsigconf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\types.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\update.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\xfrout.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\include\named\zoneconf.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "named"=".\named.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,896 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on named.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=named - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to named - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "named - Win32 Release" && "$(CFG)" != "named - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "named.mak" CFG="named - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "named - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "named - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\named.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\aclconf.obj"
|
||||
-@erase "$(INTDIR)\client.obj"
|
||||
-@erase "$(INTDIR)\config.obj"
|
||||
-@erase "$(INTDIR)\control.obj"
|
||||
-@erase "$(INTDIR)\controlconf.obj"
|
||||
-@erase "$(INTDIR)\interfacemgr.obj"
|
||||
-@erase "$(INTDIR)\listenlist.obj"
|
||||
-@erase "$(INTDIR)\log.obj"
|
||||
-@erase "$(INTDIR)\logconf.obj"
|
||||
-@erase "$(INTDIR)\lwaddr.obj"
|
||||
-@erase "$(INTDIR)\lwdclient.obj"
|
||||
-@erase "$(INTDIR)\lwderror.obj"
|
||||
-@erase "$(INTDIR)\lwdgabn.obj"
|
||||
-@erase "$(INTDIR)\lwdgnba.obj"
|
||||
-@erase "$(INTDIR)\lwdgrbn.obj"
|
||||
-@erase "$(INTDIR)\lwdnoop.obj"
|
||||
-@erase "$(INTDIR)\lwresd.obj"
|
||||
-@erase "$(INTDIR)\lwsearch.obj"
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\notify.obj"
|
||||
-@erase "$(INTDIR)\ntservice.obj"
|
||||
-@erase "$(INTDIR)\os.obj"
|
||||
-@erase "$(INTDIR)\query.obj"
|
||||
-@erase "$(INTDIR)\server.obj"
|
||||
-@erase "$(INTDIR)\sortlist.obj"
|
||||
-@erase "$(INTDIR)\tkeyconf.obj"
|
||||
-@erase "$(INTDIR)\tsigconf.obj"
|
||||
-@erase "$(INTDIR)\update.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\xfrout.obj"
|
||||
-@erase "$(INTDIR)\zoneconf.obj"
|
||||
-@erase "..\..\..\Build\Release\named.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\named.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\named.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/isccc/win32/Release/libisccc.lib ../../../lib/lwres/win32/Release/liblwres.lib ../../../lib/isccfg/win32/Release/libisccfg.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\named.pdb" /machine:I386 /out:"../../../Build/Release/named.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\aclconf.obj" \
|
||||
"$(INTDIR)\client.obj" \
|
||||
"$(INTDIR)\config.obj" \
|
||||
"$(INTDIR)\control.obj" \
|
||||
"$(INTDIR)\controlconf.obj" \
|
||||
"$(INTDIR)\interfacemgr.obj" \
|
||||
"$(INTDIR)\listenlist.obj" \
|
||||
"$(INTDIR)\log.obj" \
|
||||
"$(INTDIR)\logconf.obj" \
|
||||
"$(INTDIR)\lwaddr.obj" \
|
||||
"$(INTDIR)\lwdclient.obj" \
|
||||
"$(INTDIR)\lwderror.obj" \
|
||||
"$(INTDIR)\lwdgabn.obj" \
|
||||
"$(INTDIR)\lwdgnba.obj" \
|
||||
"$(INTDIR)\lwdgrbn.obj" \
|
||||
"$(INTDIR)\lwdnoop.obj" \
|
||||
"$(INTDIR)\lwresd.obj" \
|
||||
"$(INTDIR)\lwsearch.obj" \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\notify.obj" \
|
||||
"$(INTDIR)\ntservice.obj" \
|
||||
"$(INTDIR)\os.obj" \
|
||||
"$(INTDIR)\query.obj" \
|
||||
"$(INTDIR)\server.obj" \
|
||||
"$(INTDIR)\sortlist.obj" \
|
||||
"$(INTDIR)\tkeyconf.obj" \
|
||||
"$(INTDIR)\tsigconf.obj" \
|
||||
"$(INTDIR)\update.obj" \
|
||||
"$(INTDIR)\xfrout.obj" \
|
||||
"$(INTDIR)\zoneconf.obj"
|
||||
|
||||
"..\..\..\Build\Release\named.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\named.exe" "$(OUTDIR)\named.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\aclconf.obj"
|
||||
-@erase "$(INTDIR)\aclconf.sbr"
|
||||
-@erase "$(INTDIR)\client.obj"
|
||||
-@erase "$(INTDIR)\client.sbr"
|
||||
-@erase "$(INTDIR)\config.obj"
|
||||
-@erase "$(INTDIR)\config.sbr"
|
||||
-@erase "$(INTDIR)\control.obj"
|
||||
-@erase "$(INTDIR)\control.sbr"
|
||||
-@erase "$(INTDIR)\controlconf.obj"
|
||||
-@erase "$(INTDIR)\controlconf.sbr"
|
||||
-@erase "$(INTDIR)\interfacemgr.obj"
|
||||
-@erase "$(INTDIR)\interfacemgr.sbr"
|
||||
-@erase "$(INTDIR)\listenlist.obj"
|
||||
-@erase "$(INTDIR)\listenlist.sbr"
|
||||
-@erase "$(INTDIR)\log.obj"
|
||||
-@erase "$(INTDIR)\log.sbr"
|
||||
-@erase "$(INTDIR)\logconf.obj"
|
||||
-@erase "$(INTDIR)\logconf.sbr"
|
||||
-@erase "$(INTDIR)\lwaddr.obj"
|
||||
-@erase "$(INTDIR)\lwaddr.sbr"
|
||||
-@erase "$(INTDIR)\lwdclient.obj"
|
||||
-@erase "$(INTDIR)\lwdclient.sbr"
|
||||
-@erase "$(INTDIR)\lwderror.obj"
|
||||
-@erase "$(INTDIR)\lwderror.sbr"
|
||||
-@erase "$(INTDIR)\lwdgabn.obj"
|
||||
-@erase "$(INTDIR)\lwdgabn.sbr"
|
||||
-@erase "$(INTDIR)\lwdgnba.obj"
|
||||
-@erase "$(INTDIR)\lwdgnba.sbr"
|
||||
-@erase "$(INTDIR)\lwdgrbn.obj"
|
||||
-@erase "$(INTDIR)\lwdgrbn.sbr"
|
||||
-@erase "$(INTDIR)\lwdnoop.obj"
|
||||
-@erase "$(INTDIR)\lwdnoop.sbr"
|
||||
-@erase "$(INTDIR)\lwresd.obj"
|
||||
-@erase "$(INTDIR)\lwresd.sbr"
|
||||
-@erase "$(INTDIR)\lwsearch.obj"
|
||||
-@erase "$(INTDIR)\lwsearch.sbr"
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\main.sbr"
|
||||
-@erase "$(INTDIR)\notify.obj"
|
||||
-@erase "$(INTDIR)\notify.sbr"
|
||||
-@erase "$(INTDIR)\ntservice.obj"
|
||||
-@erase "$(INTDIR)\ntservice.sbr"
|
||||
-@erase "$(INTDIR)\os.obj"
|
||||
-@erase "$(INTDIR)\os.sbr"
|
||||
-@erase "$(INTDIR)\query.obj"
|
||||
-@erase "$(INTDIR)\query.sbr"
|
||||
-@erase "$(INTDIR)\server.obj"
|
||||
-@erase "$(INTDIR)\server.sbr"
|
||||
-@erase "$(INTDIR)\sortlist.obj"
|
||||
-@erase "$(INTDIR)\sortlist.sbr"
|
||||
-@erase "$(INTDIR)\tkeyconf.obj"
|
||||
-@erase "$(INTDIR)\tkeyconf.sbr"
|
||||
-@erase "$(INTDIR)\tsigconf.obj"
|
||||
-@erase "$(INTDIR)\tsigconf.sbr"
|
||||
-@erase "$(INTDIR)\update.obj"
|
||||
-@erase "$(INTDIR)\update.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(INTDIR)\xfrout.obj"
|
||||
-@erase "$(INTDIR)\xfrout.sbr"
|
||||
-@erase "$(INTDIR)\zoneconf.obj"
|
||||
-@erase "$(INTDIR)\zoneconf.sbr"
|
||||
-@erase "$(OUTDIR)\named.bsc"
|
||||
-@erase "$(OUTDIR)\named.map"
|
||||
-@erase "$(OUTDIR)\named.pdb"
|
||||
-@erase "..\..\..\Build\Debug\named.exe"
|
||||
-@erase "..\..\..\Build\Debug\named.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\named.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\aclconf.sbr" \
|
||||
"$(INTDIR)\client.sbr" \
|
||||
"$(INTDIR)\config.sbr" \
|
||||
"$(INTDIR)\control.sbr" \
|
||||
"$(INTDIR)\controlconf.sbr" \
|
||||
"$(INTDIR)\interfacemgr.sbr" \
|
||||
"$(INTDIR)\listenlist.sbr" \
|
||||
"$(INTDIR)\log.sbr" \
|
||||
"$(INTDIR)\logconf.sbr" \
|
||||
"$(INTDIR)\lwaddr.sbr" \
|
||||
"$(INTDIR)\lwdclient.sbr" \
|
||||
"$(INTDIR)\lwderror.sbr" \
|
||||
"$(INTDIR)\lwdgabn.sbr" \
|
||||
"$(INTDIR)\lwdgnba.sbr" \
|
||||
"$(INTDIR)\lwdgrbn.sbr" \
|
||||
"$(INTDIR)\lwdnoop.sbr" \
|
||||
"$(INTDIR)\lwresd.sbr" \
|
||||
"$(INTDIR)\lwsearch.sbr" \
|
||||
"$(INTDIR)\main.sbr" \
|
||||
"$(INTDIR)\notify.sbr" \
|
||||
"$(INTDIR)\ntservice.sbr" \
|
||||
"$(INTDIR)\os.sbr" \
|
||||
"$(INTDIR)\query.sbr" \
|
||||
"$(INTDIR)\server.sbr" \
|
||||
"$(INTDIR)\sortlist.sbr" \
|
||||
"$(INTDIR)\tkeyconf.sbr" \
|
||||
"$(INTDIR)\tsigconf.sbr" \
|
||||
"$(INTDIR)\update.sbr" \
|
||||
"$(INTDIR)\xfrout.sbr" \
|
||||
"$(INTDIR)\zoneconf.sbr"
|
||||
|
||||
"$(OUTDIR)\named.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/isccc/win32/Debug/libisccc.lib ../../../lib/lwres/win32/Debug/liblwres.lib ../../../lib/isccfg/win32/Debug/libisccfg.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\named.pdb" /map:"$(INTDIR)\named.map" /debug /machine:I386 /out:"../../../Build/Debug/named.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\aclconf.obj" \
|
||||
"$(INTDIR)\client.obj" \
|
||||
"$(INTDIR)\config.obj" \
|
||||
"$(INTDIR)\control.obj" \
|
||||
"$(INTDIR)\controlconf.obj" \
|
||||
"$(INTDIR)\interfacemgr.obj" \
|
||||
"$(INTDIR)\listenlist.obj" \
|
||||
"$(INTDIR)\log.obj" \
|
||||
"$(INTDIR)\logconf.obj" \
|
||||
"$(INTDIR)\lwaddr.obj" \
|
||||
"$(INTDIR)\lwdclient.obj" \
|
||||
"$(INTDIR)\lwderror.obj" \
|
||||
"$(INTDIR)\lwdgabn.obj" \
|
||||
"$(INTDIR)\lwdgnba.obj" \
|
||||
"$(INTDIR)\lwdgrbn.obj" \
|
||||
"$(INTDIR)\lwdnoop.obj" \
|
||||
"$(INTDIR)\lwresd.obj" \
|
||||
"$(INTDIR)\lwsearch.obj" \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\notify.obj" \
|
||||
"$(INTDIR)\ntservice.obj" \
|
||||
"$(INTDIR)\os.obj" \
|
||||
"$(INTDIR)\query.obj" \
|
||||
"$(INTDIR)\server.obj" \
|
||||
"$(INTDIR)\sortlist.obj" \
|
||||
"$(INTDIR)\tkeyconf.obj" \
|
||||
"$(INTDIR)\tsigconf.obj" \
|
||||
"$(INTDIR)\update.obj" \
|
||||
"$(INTDIR)\xfrout.obj" \
|
||||
"$(INTDIR)\zoneconf.obj"
|
||||
|
||||
"..\..\..\Build\Debug\named.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("named.dep")
|
||||
!INCLUDE "named.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "named.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release" || "$(CFG)" == "named - Win32 Debug"
|
||||
SOURCE=..\aclconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\aclconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\aclconf.obj" "$(INTDIR)\aclconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\client.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\client.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\client.obj" "$(INTDIR)\client.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\config.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\config.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\config.obj" "$(INTDIR)\config.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\control.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\control.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\control.obj" "$(INTDIR)\control.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\controlconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\controlconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\controlconf.obj" "$(INTDIR)\controlconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\interfacemgr.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\interfacemgr.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\interfacemgr.obj" "$(INTDIR)\interfacemgr.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\listenlist.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\listenlist.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\listenlist.obj" "$(INTDIR)\listenlist.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\log.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\log.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\log.obj" "$(INTDIR)\log.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\logconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\logconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\logconf.obj" "$(INTDIR)\logconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwaddr.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwaddr.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwaddr.obj" "$(INTDIR)\lwaddr.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwdclient.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdclient.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdclient.obj" "$(INTDIR)\lwdclient.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwderror.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwderror.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwderror.obj" "$(INTDIR)\lwderror.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwdgabn.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgabn.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgabn.obj" "$(INTDIR)\lwdgabn.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwdgnba.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgnba.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgnba.obj" "$(INTDIR)\lwdgnba.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwdgrbn.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgrbn.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdgrbn.obj" "$(INTDIR)\lwdgrbn.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwdnoop.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdnoop.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwdnoop.obj" "$(INTDIR)\lwdnoop.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwresd.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwresd.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwresd.obj" "$(INTDIR)\lwresd.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\lwsearch.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\lwsearch.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\lwsearch.obj" "$(INTDIR)\lwsearch.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\main.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\notify.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\notify.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\notify.obj" "$(INTDIR)\notify.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=.\ntservice.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\ntservice.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\ntservice.obj" "$(INTDIR)\ntservice.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=.\os.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\os.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\os.obj" "$(INTDIR)\os.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\query.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\query.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\query.obj" "$(INTDIR)\query.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\server.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\server.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\server.obj" "$(INTDIR)\server.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\sortlist.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\sortlist.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\sortlist.obj" "$(INTDIR)\sortlist.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\tkeyconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\tkeyconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\tkeyconf.obj" "$(INTDIR)\tkeyconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\tsigconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\tsigconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\tsigconf.obj" "$(INTDIR)\tsigconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\update.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\update.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\update.obj" "$(INTDIR)\update.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\xfrout.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\xfrout.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\xfrout.obj" "$(INTDIR)\xfrout.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=..\zoneconf.c
|
||||
|
||||
!IF "$(CFG)" == "named - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\zoneconf.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "named - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\zoneconf.obj" "$(INTDIR)\zoneconf.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
/*
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: ntservice.c,v 1.3.2.1 2001/09/04 19:40:20 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/log.h>
|
||||
|
||||
#include <named/globals.h>
|
||||
#include <named/ntservice.h>
|
||||
#include <named/main.h>
|
||||
#include <named/server.h>
|
||||
|
||||
/* Handle to SCM for updating service status */
|
||||
static SERVICE_STATUS_HANDLE hServiceStatus = 0;
|
||||
static int foreground = FALSE;
|
||||
static char ConsoleTitle[128];
|
||||
|
||||
/*
|
||||
* Forward declarations
|
||||
*/
|
||||
void ServiceControl(DWORD dwCtrlCode);
|
||||
void GetArgs(int *, char ***, char ***);
|
||||
int main(int, char *[], char *[]); /* From ns_main.c */
|
||||
|
||||
/*
|
||||
* Here we change the entry point for the executable to bindmain() from main()
|
||||
* This allows us to invoke as a service or from the command line easily.
|
||||
*/
|
||||
#pragma comment(linker, "/entry:bindmain")
|
||||
|
||||
/*
|
||||
* This is the entry point for the executable
|
||||
* We can now call main() explicitly or via StartServiceCtrlDispatcher()
|
||||
* as we need to.
|
||||
*/
|
||||
int bindmain()
|
||||
{
|
||||
int rc,
|
||||
i = 1;
|
||||
|
||||
int argc;
|
||||
char **envp, **argv;
|
||||
|
||||
/*
|
||||
* We changed the entry point function, so we must initialize argv,
|
||||
* etc. ourselves. Ick.
|
||||
*/
|
||||
GetArgs(&argc, &argv, &envp);
|
||||
|
||||
/* Command line users should put -f in the options */
|
||||
while (argv[i]) {
|
||||
if (!strcmp(argv[i], "-f") || !strcmp(argv[i], "-g")) {
|
||||
foreground = TRUE;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (foreground) {
|
||||
/* run in console window */
|
||||
exit(main(argc, argv, envp));
|
||||
} else {
|
||||
/* Start up as service */
|
||||
char *SERVICE_NAME = BIND_SERVICE_NAME;
|
||||
|
||||
SERVICE_TABLE_ENTRY dispatchTable[] = {
|
||||
{ TEXT(SERVICE_NAME), (LPSERVICE_MAIN_FUNCTION)main },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
rc = StartServiceCtrlDispatcher(dispatchTable);
|
||||
if (!rc) {
|
||||
fprintf(stderr, "Use -f to run from the command line.\n");
|
||||
exit(GetLastError());
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the Service by registering it.
|
||||
*/
|
||||
void
|
||||
ntservice_init() {
|
||||
if (!foreground) {
|
||||
/* Register handler with the SCM */
|
||||
hServiceStatus = RegisterServiceCtrlHandler(BIND_SERVICE_NAME,
|
||||
(LPHANDLER_FUNCTION)ServiceControl);
|
||||
if (!hServiceStatus) {
|
||||
ns_main_earlyfatal(
|
||||
"could not register service control handler");
|
||||
UpdateSCM(SERVICE_STOPPED);
|
||||
exit(1);
|
||||
}
|
||||
UpdateSCM(SERVICE_RUNNING);
|
||||
} else {
|
||||
strcpy(ConsoleTitle, "BIND Version ");
|
||||
strcat(ConsoleTitle, VERSION);
|
||||
SetConsoleTitle(ConsoleTitle);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ntservice_shutdown() {
|
||||
UpdateSCM(SERVICE_STOPPED);
|
||||
}
|
||||
|
||||
/*
|
||||
* ServiceControl(): Handles requests from the SCM and passes them on
|
||||
* to named.
|
||||
*/
|
||||
void
|
||||
ServiceControl(DWORD dwCtrlCode) {
|
||||
/* Handle the requested control code */
|
||||
switch(dwCtrlCode) {
|
||||
case SERVICE_CONTROL_INTERROGATE:
|
||||
UpdateSCM(0);
|
||||
break;
|
||||
|
||||
case SERVICE_CONTROL_STOP:
|
||||
ns_server_flushonshutdown(ns_g_server, ISC_TRUE);
|
||||
isc_app_shutdown();
|
||||
UpdateSCM(SERVICE_STOPPED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Tell the Service Control Manager the state of the service.
|
||||
*/
|
||||
void UpdateSCM(DWORD state) {
|
||||
SERVICE_STATUS ss;
|
||||
static DWORD dwState = SERVICE_STOPPED;
|
||||
|
||||
if (hServiceStatus) {
|
||||
if (state)
|
||||
dwState = state;
|
||||
|
||||
memset(&ss, 0, sizeof(SERVICE_STATUS));
|
||||
ss.dwServiceType |= SERVICE_WIN32_OWN_PROCESS;
|
||||
ss.dwCurrentState = dwState;
|
||||
ss.dwControlsAccepted = SERVICE_ACCEPT_STOP |
|
||||
SERVICE_ACCEPT_SHUTDOWN;
|
||||
ss.dwCheckPoint = 0;
|
||||
ss.dwServiceSpecificExitCode = 0;
|
||||
ss.dwWin32ExitCode = NO_ERROR;
|
||||
ss.dwWaitHint = dwState == SERVICE_STOP_PENDING ? 10000 : 1000;
|
||||
|
||||
if (!SetServiceStatus(hServiceStatus, &ss)) {
|
||||
ss.dwCurrentState = SERVICE_STOPPED;
|
||||
SetServiceStatus(hServiceStatus, &ss);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* C-runtime stuff used to initialize the app and
|
||||
* get argv, argc, envp.
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int newmode;
|
||||
} _startupinfo;
|
||||
|
||||
_CRTIMP void __cdecl __set_app_type(int);
|
||||
_CRTIMP void __cdecl __getmainargs(int *, char ***, char ***, int,
|
||||
_startupinfo *);
|
||||
void __cdecl _setargv(void);
|
||||
|
||||
#ifdef _M_IX86
|
||||
/* Pentium FDIV adjustment */
|
||||
extern int _adjust_fdiv;
|
||||
extern int * _imp___adjust_fdiv;
|
||||
/* Floating point precision */
|
||||
extern void _setdefaultprecision();
|
||||
#endif
|
||||
|
||||
extern int _newmode; /* malloc new() handler mode */
|
||||
extern int _dowildcard; /* passed to __getmainargs() */
|
||||
|
||||
typedef void (__cdecl *_PVFV)(void);
|
||||
extern void __cdecl _initterm(_PVFV *, _PVFV *);
|
||||
extern _PVFV *__onexitbegin;
|
||||
extern _PVFV *__onexitend;
|
||||
extern _CRTIMP char **__initenv;
|
||||
|
||||
/*
|
||||
* Do the work that mainCRTStartup() would normally do
|
||||
*/
|
||||
void GetArgs(int *argc, char ***argv, char ***envp)
|
||||
{
|
||||
_startupinfo startinfo;
|
||||
|
||||
/*
|
||||
* Set the app type to Console (check CRT/SRC/INTERNAL.H:
|
||||
* #define _CONSOLE_APP 1)
|
||||
*/
|
||||
__set_app_type(1);
|
||||
|
||||
/* Mark this module as an EXE file */
|
||||
__onexitbegin = __onexitend = (_PVFV *)(-1);
|
||||
|
||||
startinfo.newmode = _newmode;
|
||||
__getmainargs(argc, argv, envp, _dowildcard, &startinfo);
|
||||
__initenv = *envp;
|
||||
|
||||
#ifdef _M_IX86
|
||||
_adjust_fdiv = * _imp___adjust_fdiv;
|
||||
_setdefaultprecision();
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
/*
|
||||
* Copyright (C) 1999-2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: os.c,v 1.5 2001/08/09 23:44:13 mayer Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <io.h>
|
||||
#include <process.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include <isc/print.h>
|
||||
#include <isc/result.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/ntpaths.h>
|
||||
|
||||
#include <named/main.h>
|
||||
#include <named/os.h>
|
||||
#include <named/globals.h>
|
||||
#include <named/ntservice.h>
|
||||
|
||||
|
||||
static char *pidfile = NULL;
|
||||
|
||||
static BOOL Initialized = FALSE;
|
||||
|
||||
void
|
||||
ns_paths_init() {
|
||||
if (!Initialized)
|
||||
isc_ntpaths_init();
|
||||
|
||||
ns_g_conffile = isc_ntpaths_get(NAMED_CONF_PATH);
|
||||
lwresd_g_conffile = isc_ntpaths_get(LWRES_CONF_PATH);
|
||||
lwresd_g_resolvconffile = isc_ntpaths_get(RESOLV_CONF_PATH);
|
||||
ns_g_conffile = isc_ntpaths_get(NAMED_CONF_PATH);
|
||||
ns_g_defaultpidfile = isc_ntpaths_get(NAMED_PID_PATH);
|
||||
lwresd_g_defaultpidfile = isc_ntpaths_get(LWRESD_PID_PATH);
|
||||
ns_g_keyfile = isc_ntpaths_get(RNDC_KEY_PATH);
|
||||
|
||||
Initialized = TRUE;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
setup_syslog(const char *progname) {
|
||||
int options;
|
||||
|
||||
options = LOG_PID;
|
||||
#ifdef LOG_NDELAY
|
||||
options |= LOG_NDELAY;
|
||||
#endif
|
||||
|
||||
openlog(progname, options, LOG_DAEMON);
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_init(const char *progname) {
|
||||
ns_paths_init();
|
||||
setup_syslog(progname);
|
||||
ntservice_init();
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_daemonize(void) {
|
||||
int fd;
|
||||
|
||||
/*
|
||||
* Try to set stdin, stdout, and stderr to /dev/null, but press
|
||||
* on even if it fails.
|
||||
*
|
||||
* XXXMLG The close() calls here are unneeded on all but NetBSD, but
|
||||
* are harmless to include everywhere. dup2() is supposed to close
|
||||
* the FD if it is in use, but unproven-pthreads-0.16 is broken
|
||||
* and will end up closing the wrong FD. This will be fixed eventually,
|
||||
* and these calls will be removed.
|
||||
*/
|
||||
fd = open("NUL", O_RDWR, 0);
|
||||
if (fd != -1) {
|
||||
close(_fileno(stdin));
|
||||
(void)_dup2(fd, _fileno(stdin));
|
||||
close(_fileno(stdout));
|
||||
(void)_dup2(fd, _fileno(stdout));
|
||||
close(_fileno(stderr));
|
||||
(void)_dup2(fd, _fileno(stderr));
|
||||
if (fd != _fileno(stdin) &&
|
||||
fd != _fileno(stdout) &&
|
||||
fd != _fileno(stderr))
|
||||
(void)close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_chroot(const char *root) {
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_inituserinfo(const char *username) {
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_changeuser(void) {
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_minprivs(void) {
|
||||
}
|
||||
|
||||
static int
|
||||
safe_open(const char *filename, isc_boolean_t append) {
|
||||
int fd;
|
||||
struct stat sb;
|
||||
|
||||
if (stat(filename, &sb) == -1) {
|
||||
if (errno != ENOENT)
|
||||
return (-1);
|
||||
} else if ((sb.st_mode & S_IFREG) == 0)
|
||||
return (-1);
|
||||
|
||||
if (append)
|
||||
fd = open(filename, O_WRONLY|O_CREAT|O_APPEND,
|
||||
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||
else {
|
||||
(void)unlink(filename);
|
||||
fd = open(filename, O_WRONLY|O_CREAT|O_EXCL,
|
||||
S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||
}
|
||||
return (fd);
|
||||
}
|
||||
|
||||
static void
|
||||
cleanup_pidfile(void) {
|
||||
if (pidfile != NULL) {
|
||||
(void)unlink(pidfile);
|
||||
free(pidfile);
|
||||
}
|
||||
pidfile = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_writepidfile(const char *filename) {
|
||||
int fd;
|
||||
FILE *lockfile;
|
||||
size_t len;
|
||||
pid_t pid;
|
||||
|
||||
/*
|
||||
* The caller must ensure any required synchronization.
|
||||
*/
|
||||
|
||||
cleanup_pidfile();
|
||||
|
||||
len = strlen(filename);
|
||||
pidfile = malloc(len + 1);
|
||||
if (pidfile == NULL)
|
||||
ns_main_earlyfatal("couldn't malloc '%s': %s",
|
||||
filename, strerror(errno));
|
||||
/* This is safe. */
|
||||
strcpy(pidfile, filename);
|
||||
|
||||
fd = safe_open(filename, ISC_FALSE);
|
||||
if (fd < 0)
|
||||
ns_main_earlyfatal("couldn't open pid file '%s': %s",
|
||||
filename, strerror(errno));
|
||||
lockfile = fdopen(fd, "w");
|
||||
if (lockfile == NULL)
|
||||
ns_main_earlyfatal("could not fdopen() pid file '%s': %s",
|
||||
filename, strerror(errno));
|
||||
|
||||
pid = getpid();
|
||||
if (fprintf(lockfile, "%ld\n", (long)pid) < 0)
|
||||
ns_main_earlyfatal("fprintf() to pid file '%s' failed",
|
||||
filename);
|
||||
if (fflush(lockfile) == EOF)
|
||||
ns_main_earlyfatal("fflush() to pid file '%s' failed",
|
||||
filename);
|
||||
(void)fclose(lockfile);
|
||||
}
|
||||
|
||||
void
|
||||
ns_os_shutdown(void) {
|
||||
closelog();
|
||||
cleanup_pidfile();
|
||||
ntservice_shutdown(); /* This MUST be the last thing done */
|
||||
}
|
||||
+35
-7
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: xfrout.c,v 1.100 2001/06/18 19:04:32 gson Exp $ */
|
||||
/* $Id: xfrout.c,v 1.101.2.3 2001/10/30 01:28:29 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -85,6 +85,20 @@
|
||||
if (result != ISC_R_SUCCESS) goto failure; \
|
||||
} while (0)
|
||||
|
||||
#define FAILQ(code, msg, question, rdclass) \
|
||||
do { \
|
||||
char _buf1[DNS_NAME_FORMATSIZE]; \
|
||||
char _buf2[DNS_RDATACLASS_FORMATSIZE]; \
|
||||
result = (code); \
|
||||
dns_name_format(question, _buf1, sizeof(_buf1)); \
|
||||
dns_rdataclass_format(rdclass, _buf2, sizeof(_buf2)); \
|
||||
ns_client_log(client, DNS_LOGCATEGORY_XFER_OUT, \
|
||||
NS_LOGMODULE_XFER_OUT, ISC_LOG_INFO, \
|
||||
"bad zone transfer request: '%s/%s': %s (%s)", \
|
||||
_buf1, _buf2, msg, isc_result_totext(code)); \
|
||||
if (result != ISC_R_SUCCESS) goto failure; \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(op) \
|
||||
do { result = (op); \
|
||||
if (result != ISC_R_SUCCESS) goto failure; \
|
||||
@@ -875,6 +889,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
char *journalfile;
|
||||
char msg[DNS_RDATACLASS_FORMATSIZE + DNS_NAME_FORMATSIZE
|
||||
+ sizeof("zone transfer '/'")];
|
||||
isc_boolean_t is_poll = ISC_FALSE;
|
||||
|
||||
switch (reqtype) {
|
||||
case dns_rdatatype_axfr:
|
||||
@@ -926,13 +941,15 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
result = dns_zt_find(client->view->zonetable, question_name, 0, NULL,
|
||||
&zone);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
FAILC(DNS_R_NOTAUTH, "non-authoritative zone");
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone",
|
||||
question_name, question_class);
|
||||
switch(dns_zone_gettype(zone)) {
|
||||
case dns_zone_master:
|
||||
case dns_zone_slave:
|
||||
break; /* Master and slave zones are OK for transfer. */
|
||||
default:
|
||||
FAILC(DNS_R_NOTAUTH, "non-authoritative zone");
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone",
|
||||
question_name, question_class);
|
||||
}
|
||||
CHECK(dns_zone_getdb(zone, &db));
|
||||
dns_db_currentversion(db, &ver);
|
||||
@@ -1058,6 +1075,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
(client->attributes & NS_CLIENTATTR_TCP) == 0)
|
||||
{
|
||||
CHECK(soa_rrstream_create(mctx, db, ver, &stream));
|
||||
is_poll = ISC_TRUE;
|
||||
goto have_stream;
|
||||
}
|
||||
journalfile = dns_zone_getjournal(zone);
|
||||
@@ -1075,6 +1093,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
ISC_LOG_DEBUG(4),
|
||||
"IXFR version not in journal, "
|
||||
"falling back to AXFR");
|
||||
mnemonic = "AXFR-style IXFR";
|
||||
goto axfr_fallback;
|
||||
}
|
||||
CHECK(result);
|
||||
@@ -1115,8 +1134,12 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
|
||||
CHECK(xfr->stream->methods->first(xfr->stream));
|
||||
|
||||
xfrout_log1(client, question_name, question_class, ISC_LOG_INFO,
|
||||
"%s started", mnemonic);
|
||||
if (is_poll)
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_DEBUG(1), "IXFR poll up to date");
|
||||
else
|
||||
xfrout_log1(client, question_name, question_class,
|
||||
ISC_LOG_INFO, "%s started", mnemonic);
|
||||
|
||||
/*
|
||||
* Hand the context over to sendstream(). Set xfr to NULL;
|
||||
@@ -1619,6 +1642,12 @@ xfrout_client_shutdown(void *arg, isc_result_t result) {
|
||||
* Log outgoing zone transfer messages in a format like
|
||||
* <client>: transfer of <zone>: <message>
|
||||
*/
|
||||
|
||||
static void
|
||||
xfrout_logv(ns_client_t *client, dns_name_t *zonename,
|
||||
dns_rdataclass_t rdclass, int level, const char *fmt, va_list ap)
|
||||
ISC_FORMAT_PRINTF(5, 0);
|
||||
|
||||
static void
|
||||
xfrout_logv(ns_client_t *client, dns_name_t *zonename,
|
||||
dns_rdataclass_t rdclass, int level, const char *fmt, va_list ap)
|
||||
@@ -1640,8 +1669,7 @@ xfrout_logv(ns_client_t *client, dns_name_t *zonename,
|
||||
*/
|
||||
static void
|
||||
xfrout_log1(ns_client_t *client, dns_name_t *zonename,
|
||||
dns_rdataclass_t rdclass, int level, const char *fmt, ...)
|
||||
{
|
||||
dns_rdataclass_t rdclass, int level, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
xfrout_logv(client, zonename, rdclass, level, fmt, ap);
|
||||
|
||||
+27
-17
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: zoneconf.c,v 1.86 2001/06/04 21:51:26 bwelling Exp $ */
|
||||
/* $Id: zoneconf.c,v 1.87.2.4 2001/11/13 01:15:33 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -295,6 +295,7 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
|
||||
isc_result_t result;
|
||||
char *zname;
|
||||
dns_rdataclass_t zclass;
|
||||
dns_rdataclass_t vclass;
|
||||
cfg_obj_t *maps[5];
|
||||
cfg_obj_t *zoptions = NULL;
|
||||
cfg_obj_t *options = NULL;
|
||||
@@ -327,13 +328,21 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
|
||||
}
|
||||
maps[i++] = ns_g_defaults;
|
||||
maps[i++] = NULL;
|
||||
|
||||
if (vconfig != NULL)
|
||||
RETERR(ns_config_getclass(cfg_tuple_get(vconfig, "class"),
|
||||
dns_rdataclass_in, &vclass));
|
||||
else
|
||||
vclass = dns_rdataclass_in;
|
||||
|
||||
/*
|
||||
* Configure values common to all zone types.
|
||||
*/
|
||||
|
||||
zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name"));
|
||||
|
||||
RETERR(ns_config_getclass(cfg_tuple_get(zconfig, "class"), &zclass));
|
||||
RETERR(ns_config_getclass(cfg_tuple_get(zconfig, "class"),
|
||||
vclass, &zclass));
|
||||
dns_zone_setclass(zone, zclass);
|
||||
|
||||
ztype = zonetype_fromconfig(zoptions);
|
||||
@@ -473,7 +482,7 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
|
||||
*/
|
||||
if (ztype == dns_zone_master) {
|
||||
dns_acl_t *updateacl;
|
||||
RETERR(configure_zone_acl(zconfig, NULL, config,
|
||||
RETERR(configure_zone_acl(zconfig, vconfig, config,
|
||||
"allow-update", ac, zone,
|
||||
dns_zone_setupdateacl,
|
||||
dns_zone_clearupdateacl));
|
||||
@@ -494,22 +503,12 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
|
||||
dns_zone_setsigvalidityinterval(zone,
|
||||
cfg_obj_asuint32(obj) * 86400);
|
||||
} else if (ztype == dns_zone_slave) {
|
||||
RETERR(configure_zone_acl(zconfig, NULL, config,
|
||||
RETERR(configure_zone_acl(zconfig, vconfig, config,
|
||||
"allow-update-forwarding", ac, zone,
|
||||
dns_zone_setforwardacl,
|
||||
dns_zone_clearforwardacl));
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "transfer-source", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_zone_setxfrsource4(zone, cfg_obj_assockaddr(obj));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "transfer-source-v6", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_zone_setxfrsource6(zone, cfg_obj_assockaddr(obj));
|
||||
|
||||
/*
|
||||
* Configure slave functionality.
|
||||
*/
|
||||
@@ -562,6 +561,16 @@ ns_zone_configure(cfg_obj_t *config, cfg_obj_t *vconfig, cfg_obj_t *zconfig,
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_zone_setminretrytime(zone, cfg_obj_asuint32(obj));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "transfer-source", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_zone_setxfrsource4(zone, cfg_obj_assockaddr(obj));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "transfer-source-v6", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_zone_setxfrsource6(zone, cfg_obj_assockaddr(obj));
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -590,9 +599,10 @@ ns_zone_reusable(dns_zone_t *zone, cfg_obj_t *zconfig) {
|
||||
else
|
||||
cfilename = NULL;
|
||||
zfilename = dns_zone_getfile(zone);
|
||||
if (cfilename == NULL || zfilename == NULL ||
|
||||
strcmp(cfilename, zfilename) != 0)
|
||||
return (ISC_FALSE);
|
||||
if (!((cfilename == NULL && zfilename == NULL) ||
|
||||
(cfilename != NULL && zfilename != NULL &&
|
||||
strcmp(cfilename, zfilename) == 0)))
|
||||
return (ISC_FALSE);
|
||||
|
||||
return (ISC_TRUE);
|
||||
}
|
||||
|
||||
+10
-2
@@ -138,8 +138,9 @@ Every update request consists of zero or more prerequisites
|
||||
and zero or more updates.
|
||||
This allows a suitably authenticated update request to proceed if some
|
||||
specified resource records are present or missing from the zone.
|
||||
A blank input line causes the accumulated commands to be sent as one Dynamic
|
||||
DNS update request to the name server.
|
||||
A blank input line (or the \fBsend\fR command) causes the
|
||||
accumulated commands to be sent as one Dynamic DNS update request to the
|
||||
name server.
|
||||
.PP
|
||||
The command formats and their meaning are as follows:
|
||||
.TP
|
||||
@@ -255,6 +256,13 @@ Adds a new resource record with the specified
|
||||
\fIclass\fR
|
||||
and
|
||||
\fIdata\fR.
|
||||
.TP
|
||||
\fBshow\fR
|
||||
Displays the current message, containing all of the prerequisites and
|
||||
updates specified since the last send.
|
||||
.TP
|
||||
\fBsend\fR
|
||||
Sends the current message. This is equivalent to entering a blank line.
|
||||
.PP
|
||||
Lines beginning with a semicolon are comments, and are ignored.
|
||||
.SH "EXAMPLES"
|
||||
|
||||
+112
-101
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: nsupdate.c,v 1.99 2001/07/12 04:13:39 bwelling Exp $ */
|
||||
/* $Id: nsupdate.c,v 1.103.2.6 2001/11/06 21:50:35 bwelling Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -75,8 +75,10 @@
|
||||
#endif
|
||||
|
||||
#ifndef USE_GETADDRINFO
|
||||
#ifndef ISC_PLATFORM_NONSTDHERRNO
|
||||
extern int h_errno;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define MAXCMD (4 * 1024)
|
||||
#define INITDATA (32 * 1024)
|
||||
@@ -91,7 +93,9 @@ extern int h_errno;
|
||||
|
||||
#define DNSDEFAULTPORT 53
|
||||
|
||||
#ifndef RESOLV_CONF
|
||||
#define RESOLV_CONF "/etc/resolv.conf"
|
||||
#endif
|
||||
|
||||
static isc_boolean_t debugging = ISC_FALSE, ddebugging = ISC_FALSE;
|
||||
static isc_boolean_t memdebugging = ISC_FALSE;
|
||||
@@ -128,7 +132,7 @@ static isc_boolean_t shuttingdown = ISC_FALSE;
|
||||
static FILE *input;
|
||||
static isc_boolean_t interactive = ISC_TRUE;
|
||||
static isc_boolean_t seenerror = ISC_FALSE;
|
||||
static const dns_master_style_t *style = &dns_master_style_debug;
|
||||
static const dns_master_style_t *style;
|
||||
static int requests = 0;
|
||||
|
||||
typedef struct nsu_requestinfo {
|
||||
@@ -139,6 +143,14 @@ typedef struct nsu_requestinfo {
|
||||
static void
|
||||
sendrequest(isc_sockaddr_t *srcaddr, isc_sockaddr_t *destaddr,
|
||||
dns_message_t *msg, dns_request_t **request);
|
||||
static void
|
||||
fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
static void
|
||||
debug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
static void
|
||||
ddebug(const char *format, ...) ISC_FORMAT_PRINTF(1, 2);
|
||||
|
||||
#define STATUS_MORE (isc_uint16_t)0
|
||||
#define STATUS_SEND (isc_uint16_t)1
|
||||
@@ -261,102 +273,88 @@ reset_system(void) {
|
||||
}
|
||||
|
||||
static void
|
||||
setup_key(void) {
|
||||
setup_keystr(void) {
|
||||
unsigned char *secret = NULL;
|
||||
int secretlen;
|
||||
isc_buffer_t secretbuf;
|
||||
isc_result_t result;
|
||||
isc_buffer_t keynamesrc;
|
||||
char *secretstr;
|
||||
char *s;
|
||||
dns_fixedname_t fkeyname;
|
||||
dns_name_t *keyname;
|
||||
|
||||
dns_fixedname_init(&fkeyname);
|
||||
keyname = dns_fixedname_name(&fkeyname);
|
||||
|
||||
if (keystr != NULL) {
|
||||
isc_buffer_t keynamesrc;
|
||||
char *secretstr;
|
||||
char *s;
|
||||
debug("Creating key...");
|
||||
|
||||
debug("Creating key...");
|
||||
s = strchr(keystr, ':');
|
||||
if (s == NULL || s == keystr || *s == 0)
|
||||
fatal("key option must specify keyname:secret");
|
||||
secretstr = s + 1;
|
||||
|
||||
s = strchr(keystr, ':');
|
||||
if (s == NULL || s == keystr || *s == 0)
|
||||
fatal("key option must specify keyname:secret");
|
||||
secretstr = s + 1;
|
||||
isc_buffer_init(&keynamesrc, keystr, s - keystr);
|
||||
isc_buffer_add(&keynamesrc, s - keystr);
|
||||
|
||||
isc_buffer_init(&keynamesrc, keystr, s - keystr);
|
||||
isc_buffer_add(&keynamesrc, s - keystr);
|
||||
debug("namefromtext");
|
||||
result = dns_name_fromtext(keyname, &keynamesrc, dns_rootname,
|
||||
ISC_FALSE, NULL);
|
||||
check_result(result, "dns_name_fromtext");
|
||||
|
||||
debug("namefromtext");
|
||||
result = dns_name_fromtext(keyname, &keynamesrc, dns_rootname,
|
||||
ISC_FALSE, NULL);
|
||||
check_result(result, "dns_name_fromtext");
|
||||
secretlen = strlen(secretstr) * 3 / 4;
|
||||
secret = isc_mem_allocate(mctx, secretlen);
|
||||
if (secret == NULL)
|
||||
fatal("out of memory");
|
||||
|
||||
secretlen = strlen(secretstr) * 3 / 4;
|
||||
secret = isc_mem_allocate(mctx, secretlen);
|
||||
if (secret == NULL)
|
||||
fatal("out of memory");
|
||||
|
||||
isc_buffer_init(&secretbuf, secret, secretlen);
|
||||
result = isc_base64_decodestring(secretstr, &secretbuf);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not create key from %s: %s\n",
|
||||
keystr, isc_result_totext(result));
|
||||
goto failure;
|
||||
}
|
||||
|
||||
secretlen = isc_buffer_usedlength(&secretbuf);
|
||||
debug("close");
|
||||
} else {
|
||||
dst_key_t *dstkey = NULL;
|
||||
|
||||
result = dst_key_fromnamedfile(keyfile, DST_TYPE_PRIVATE,
|
||||
mctx, &dstkey);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not read key from %s: %s\n",
|
||||
keyfile, isc_result_totext(result));
|
||||
goto failure;
|
||||
}
|
||||
secretlen = (dst_key_size(dstkey) + 7) >> 3;
|
||||
secret = isc_mem_allocate(mctx, secretlen);
|
||||
if (secret == NULL)
|
||||
fatal("out of memory");
|
||||
isc_buffer_init(&secretbuf, secret, secretlen);
|
||||
result = dst_key_tobuffer(dstkey, &secretbuf);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not read key from %s: %s\n",
|
||||
keyfile, isc_result_totext(result));
|
||||
goto failure;
|
||||
}
|
||||
result = dns_name_concatenate(dst_key_name(dstkey), NULL,
|
||||
keyname, NULL);
|
||||
check_result(result, "dns_name_concatenate");
|
||||
dst_key_free(&dstkey);
|
||||
|
||||
isc_buffer_init(&secretbuf, secret, secretlen);
|
||||
result = isc_base64_decodestring(secretstr, &secretbuf);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not create key from %s: %s\n",
|
||||
keystr, isc_result_totext(result));
|
||||
goto failure;
|
||||
}
|
||||
|
||||
secretlen = isc_buffer_usedlength(&secretbuf);
|
||||
|
||||
debug("keycreate");
|
||||
result = dns_tsigkey_create(keyname, dns_tsig_hmacmd5_name,
|
||||
secret, secretlen, ISC_TRUE, NULL, 0, 0,
|
||||
mctx, NULL, &key);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
char *str;
|
||||
if (keystr != NULL)
|
||||
str = keystr;
|
||||
else
|
||||
str = keyfile;
|
||||
secret, secretlen, ISC_TRUE, NULL,
|
||||
0, 0, mctx, NULL, &key);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fprintf(stderr, "could not create key from %s: %s\n",
|
||||
str, dns_result_totext(result));
|
||||
}
|
||||
isc_mem_free(mctx, secret);
|
||||
return;
|
||||
|
||||
keystr, dns_result_totext(result));
|
||||
failure:
|
||||
|
||||
if (secret != NULL)
|
||||
isc_mem_free(mctx, secret);
|
||||
}
|
||||
|
||||
static void
|
||||
setup_keyfile(void) {
|
||||
dst_key_t *dstkey = NULL;
|
||||
isc_result_t result;
|
||||
|
||||
debug("Creating key...");
|
||||
|
||||
result = dst_key_fromnamedfile(keyfile, DST_TYPE_PRIVATE, mctx,
|
||||
&dstkey);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not read key from %s: %s\n",
|
||||
keyfile, isc_result_totext(result));
|
||||
return;
|
||||
}
|
||||
result = dns_tsigkey_createfromkey(dst_key_name(dstkey),
|
||||
dns_tsig_hmacmd5_name,
|
||||
dstkey, ISC_FALSE, NULL,
|
||||
0, 0, mctx, NULL, &key);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
fprintf(stderr, "could not create key from %s: %s\n",
|
||||
keyfile, isc_result_totext(result));
|
||||
dst_key_free(&dstkey);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
doshutdown(void) {
|
||||
isc_task_detach(&global_task);
|
||||
@@ -368,7 +366,7 @@ doshutdown(void) {
|
||||
isc_mem_put(mctx, localaddr, sizeof(isc_sockaddr_t));
|
||||
|
||||
if (key != NULL) {
|
||||
debug("Freeing key");
|
||||
ddebug("Freeing key");
|
||||
dns_tsigkey_detach(&key);
|
||||
}
|
||||
|
||||
@@ -376,13 +374,13 @@ doshutdown(void) {
|
||||
dns_message_destroy(&updatemsg);
|
||||
|
||||
if (is_dst_up) {
|
||||
debug("Destroy DST lib");
|
||||
ddebug("Destroy DST lib");
|
||||
dst_lib_destroy();
|
||||
is_dst_up = ISC_FALSE;
|
||||
}
|
||||
|
||||
if (entp != NULL) {
|
||||
debug("Detach from entropy");
|
||||
ddebug("Detach from entropy");
|
||||
isc_entropy_detach(&entp);
|
||||
}
|
||||
|
||||
@@ -459,29 +457,34 @@ setup_system(void) {
|
||||
if (lwresult != LWRES_R_SUCCESS)
|
||||
fatal("lwres_context_create failed");
|
||||
|
||||
lwresult = lwres_conf_parse(lwctx, RESOLV_CONF);
|
||||
if (lwresult != LWRES_R_SUCCESS)
|
||||
fprintf(stderr,
|
||||
"an error was encountered in %s\n", RESOLV_CONF);
|
||||
|
||||
(void)lwres_conf_parse(lwctx, RESOLV_CONF);
|
||||
lwconf = lwres_conf_get(lwctx);
|
||||
|
||||
ns_total = lwconf->nsnext;
|
||||
if (ns_total <= 0)
|
||||
fatal("no valid servers found");
|
||||
servers = isc_mem_get(mctx, ns_total * sizeof(isc_sockaddr_t));
|
||||
if (servers == NULL)
|
||||
fatal("out of memory");
|
||||
for (i = 0; i < ns_total; i++) {
|
||||
if (lwconf->nameservers[i].family == LWRES_ADDRTYPE_V4) {
|
||||
struct in_addr in4;
|
||||
memcpy(&in4, lwconf->nameservers[i].address, 4);
|
||||
isc_sockaddr_fromin(&servers[i], &in4, DNSDEFAULTPORT);
|
||||
} else {
|
||||
struct in6_addr in6;
|
||||
memcpy(&in6, lwconf->nameservers[i].address, 16);
|
||||
isc_sockaddr_fromin6(&servers[i], &in6,
|
||||
DNSDEFAULTPORT);
|
||||
if (ns_total <= 0) {
|
||||
/* No name servers in resolv.conf; default to loopback. */
|
||||
struct in_addr localhost;
|
||||
ns_total = 1;
|
||||
servers = isc_mem_get(mctx, ns_total * sizeof(isc_sockaddr_t));
|
||||
if (servers == NULL)
|
||||
fatal("out of memory");
|
||||
localhost.s_addr = htonl(INADDR_LOOPBACK);
|
||||
isc_sockaddr_fromin(&servers[0], &localhost, DNSDEFAULTPORT);
|
||||
} else {
|
||||
servers = isc_mem_get(mctx, ns_total * sizeof(isc_sockaddr_t));
|
||||
if (servers == NULL)
|
||||
fatal("out of memory");
|
||||
for (i = 0; i < ns_total; i++) {
|
||||
if (lwconf->nameservers[i].family == LWRES_ADDRTYPE_V4) {
|
||||
struct in_addr in4;
|
||||
memcpy(&in4, lwconf->nameservers[i].address, 4);
|
||||
isc_sockaddr_fromin(&servers[i], &in4, DNSDEFAULTPORT);
|
||||
} else {
|
||||
struct in6_addr in6;
|
||||
memcpy(&in6, lwconf->nameservers[i].address, 16);
|
||||
isc_sockaddr_fromin6(&servers[i], &in6,
|
||||
DNSDEFAULTPORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -556,8 +559,10 @@ setup_system(void) {
|
||||
else
|
||||
origin = dns_rootname;
|
||||
|
||||
if (keystr != NULL || keyfile != NULL)
|
||||
setup_key();
|
||||
if (keystr != NULL)
|
||||
setup_keystr();
|
||||
else if (keyfile != NULL)
|
||||
setup_keyfile();
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -653,7 +658,8 @@ parse_args(int argc, char **argv) {
|
||||
fprintf(stderr, "%s: invalid argument -%c\n",
|
||||
argv[0], ch);
|
||||
fprintf(stderr, "usage: nsupdate [-d] "
|
||||
"[-y keyname:secret | -k keyfile] [-v]\n");
|
||||
"[-y keyname:secret | -k keyfile] [-v] "
|
||||
"[filename]\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
@@ -1083,6 +1089,7 @@ evaluate_zone(char *cmdline) {
|
||||
result = dns_name_fromtext(userzone, &b, dns_rootname, ISC_FALSE,
|
||||
NULL);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
userzone = NULL; /* Lest it point to an invalid name */
|
||||
fprintf(stderr, "could not parse zone name\n");
|
||||
return (STATUS_SYNTAX);
|
||||
}
|
||||
@@ -1140,6 +1147,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
|
||||
goto doneparsing;
|
||||
}
|
||||
}
|
||||
errno = 0;
|
||||
ttl = strtol(word, &endp, 0);
|
||||
if (*endp != '\0') {
|
||||
if (isdelete) {
|
||||
@@ -1153,7 +1161,9 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
|
||||
|
||||
if (isdelete)
|
||||
ttl = 0;
|
||||
else if (ttl < 0 || ttl > TTL_MAX || errno == ERANGE) {
|
||||
else if (ttl < 0 || ttl > TTL_MAX ||
|
||||
(ttl == LONG_MAX && errno == ERANGE))
|
||||
{
|
||||
/*
|
||||
* The errno test is needed to catch when strtol()
|
||||
* overflows on a platform where sizeof(int) ==
|
||||
@@ -1555,7 +1565,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
|
||||
fatal("could not talk to specified name server");
|
||||
else if (++ns_inuse >= lwconf->nsnext)
|
||||
fatal("could not talk to any default name server");
|
||||
ddebug("Destroying request [%lx]", request);
|
||||
ddebug("Destroying request [%p]", request);
|
||||
dns_request_destroy(&request);
|
||||
dns_message_renderreset(soaquery);
|
||||
sendrequest(localaddr, &servers[ns_inuse], soaquery, &request);
|
||||
@@ -1845,6 +1855,7 @@ getinput(isc_task_t *task, isc_event_t *event) {
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
isc_result_t result;
|
||||
style = &dns_master_style_debug;
|
||||
|
||||
input = stdin;
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: nsupdate.docbook,v 1.6 2001/07/02 18:48:26 gson Exp $ -->
|
||||
<!-- $Id: nsupdate.docbook,v 1.8 2001/07/14 18:30:01 bwelling Exp $ -->
|
||||
|
||||
<refentry>
|
||||
<refentryinfo>
|
||||
@@ -177,8 +177,9 @@ Every update request consists of zero or more prerequisites
|
||||
and zero or more updates.
|
||||
This allows a suitably authenticated update request to proceed if some
|
||||
specified resource records are present or missing from the zone.
|
||||
A blank input line causes the accumulated commands to be sent as one Dynamic
|
||||
DNS update request to the name server.
|
||||
A blank input line (or the <command>send</command> command) causes the
|
||||
accumulated commands to be sent as one Dynamic DNS update request to the
|
||||
name server.
|
||||
</para>
|
||||
<para>
|
||||
The command formats and their meaning are as follows:
|
||||
@@ -401,6 +402,27 @@ Adds a new resource record with the specified
|
||||
and
|
||||
<parameter>data</parameter>.
|
||||
</para>
|
||||
|
||||
<varlistentry><term>
|
||||
<cmdsynopsis>
|
||||
<command>show</command>
|
||||
</cmdsynopsis>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Displays the current message, containing all of the prerequisites and
|
||||
updates specified since the last send.
|
||||
</para>
|
||||
|
||||
<varlistentry><term>
|
||||
<cmdsynopsis>
|
||||
<command>send</command>
|
||||
</cmdsynopsis>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sends the current message. This is equivalent to entering a blank line.
|
||||
</para>
|
||||
</listitem>
|
||||
</variablelist>
|
||||
|
||||
|
||||
@@ -311,8 +311,12 @@ Updates will be rejected if the tests for the prerequisite conditions fail.</P
|
||||
and zero or more updates.
|
||||
This allows a suitably authenticated update request to proceed if some
|
||||
specified resource records are present or missing from the zone.
|
||||
A blank input line causes the accumulated commands to be sent as one Dynamic
|
||||
DNS update request to the name server.</P
|
||||
A blank input line (or the <B
|
||||
CLASS="COMMAND"
|
||||
>send</B
|
||||
> command) causes the
|
||||
accumulated commands to be sent as one Dynamic DNS update request to the
|
||||
name server.</P
|
||||
><P
|
||||
>The command formats and their meaning are as follows:
|
||||
<P
|
||||
@@ -716,6 +720,29 @@ CLASS="PARAMETER"
|
||||
></TT
|
||||
>.</P
|
||||
></DD
|
||||
><DT
|
||||
><P
|
||||
><B
|
||||
CLASS="COMMAND"
|
||||
>show</B
|
||||
> </P
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
>Displays the current message, containing all of the prerequisites and
|
||||
updates specified since the last send.</P
|
||||
></DD
|
||||
><DT
|
||||
><P
|
||||
><B
|
||||
CLASS="COMMAND"
|
||||
>send</B
|
||||
> </P
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
>Sends the current message. This is equivalent to entering a blank line.</P
|
||||
></DD
|
||||
></DL
|
||||
></DIV
|
||||
> </P
|
||||
@@ -725,7 +752,7 @@ CLASS="PARAMETER"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN210"
|
||||
NAME="AEN223"
|
||||
></A
|
||||
><H2
|
||||
>EXAMPLES</H2
|
||||
@@ -796,7 +823,7 @@ SIG, KEY and NXT records.)</P
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN223"
|
||||
NAME="AEN236"
|
||||
></A
|
||||
><H2
|
||||
>FILES</H2
|
||||
@@ -852,7 +879,7 @@ CLASS="REFENTRYTITLE"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN247"
|
||||
NAME="AEN260"
|
||||
></A
|
||||
><H2
|
||||
>SEE ALSO</H2
|
||||
@@ -917,7 +944,7 @@ CLASS="REFENTRYTITLE"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN268"
|
||||
NAME="AEN281"
|
||||
></A
|
||||
><H2
|
||||
>BUGS</H2
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# Microsoft Developer Studio Project File - Name="nsupdate" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=nsupdate - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nsupdate.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nsupdate.mak" CFG="nsupdate - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "nsupdate - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "nsupdate - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "nsupdate - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/lwres/win32/Release/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/nsupdate.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "nsupdate - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /X /u /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/lwres/win32/Debug/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/nsupdate.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "nsupdate - Win32 Release"
|
||||
# Name "nsupdate - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\nsupdate.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "nsupdate"=".\nsupdate.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on nsupdate.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=nsupdate - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to nsupdate - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "nsupdate - Win32 Release" && "$(CFG)" != "nsupdate - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "nsupdate.mak" CFG="nsupdate - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "nsupdate - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "nsupdate - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "nsupdate - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
|
||||
ALL : "..\..\..\Build\Release\nsupdate.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\nsupdate.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "..\..\..\Build\Release\nsupdate.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\nsupdate.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nsupdate.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/lwres/win32/Release/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\nsupdate.pdb" /machine:I386 /out:"../../../Build/Release/nsupdate.exe"
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\nsupdate.obj"
|
||||
|
||||
"..\..\..\Build\Release\nsupdate.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "nsupdate - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "..\..\..\Build\Debug\nsupdate.exe" "$(OUTDIR)\nsupdate.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\nsupdate.obj"
|
||||
-@erase "$(INTDIR)\nsupdate.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\nsupdate.bsc"
|
||||
-@erase "$(OUTDIR)\nsupdate.pdb"
|
||||
-@erase "..\..\..\Build\Debug\nsupdate.exe"
|
||||
-@erase "..\..\..\Build\Debug\nsupdate.ilk"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/lwres/win32/include/lwres" /I "../../../lib/dns/include" /I "../../../lib/dns/sec/dst/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
RSC=rc.exe
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\nsupdate.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\nsupdate.sbr"
|
||||
|
||||
"$(OUTDIR)\nsupdate.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/lwres/win32/Debug/liblwres.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\nsupdate.pdb" /debug /machine:I386 /out:"../../../Build/Debug/nsupdate.exe" /pdbtype:sept
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\nsupdate.obj"
|
||||
|
||||
"..\..\..\Build\Debug\nsupdate.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("nsupdate.dep")
|
||||
!INCLUDE "nsupdate.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "nsupdate.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "nsupdate - Win32 Release" || "$(CFG)" == "nsupdate - Win32 Debug"
|
||||
SOURCE=..\nsupdate.c
|
||||
|
||||
!IF "$(CFG)" == "nsupdate - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\nsupdate.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "nsupdate - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\nsupdate.obj" "$(INTDIR)\nsupdate.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
+19
-15
@@ -13,7 +13,7 @@
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: Makefile.in,v 1.27 2001/06/27 06:32:20 bwelling Exp $
|
||||
# $Id: Makefile.in,v 1.32.2.1 2001/09/07 16:46:11 gson Exp $
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
@@ -23,11 +23,8 @@ top_srcdir = @top_srcdir@
|
||||
|
||||
@BIND9_INCLUDES@
|
||||
|
||||
CINCLUDES = ${ISC_INCLUDES}
|
||||
|
||||
RNDCINCLUDES = ${CINCLUDES} ${ISCCC_INCLUDES} ${ISCCFG_INCLUDES}
|
||||
|
||||
CONFINCLUDES = ${CINCLUDES} ${DNS_INCLUDES}
|
||||
CINCLUDES = -I${srcdir}/include ${ISC_INCLUDES} ${ISCCC_INCLUDES} \
|
||||
${ISCCFG_INCLUDES} ${DNS_INCLUDES}
|
||||
|
||||
CDEFINES =
|
||||
CWARNINGS =
|
||||
@@ -48,33 +45,39 @@ RNDCDEPLIBS = ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}
|
||||
CONFLIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
|
||||
CONFDEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
|
||||
|
||||
SUBDIRS = unix
|
||||
|
||||
TARGETS = rndc rndc-confgen
|
||||
|
||||
MANPAGES = rndc.8 rndc.conf.5
|
||||
MANPAGES = rndc.8 rndc-confgen.8 rndc.conf.5
|
||||
|
||||
HTMLPAGES = rndc.html rndc.conf.html
|
||||
HTMLPAGES = rndc.html rndc-confgen.html rndc.conf.html
|
||||
|
||||
MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
||||
|
||||
UOBJS = unix/os.@O@
|
||||
|
||||
@BIND9_MAKE_RULES@
|
||||
|
||||
rndc.@O@: rndc.c
|
||||
${LIBTOOL} ${CC} ${ALL_CFLAGS} ${RNDCINCLUDES} \
|
||||
${LIBTOOL} ${CC} ${ALL_CFLAGS} \
|
||||
-DVERSION=\"${VERSION}\" \
|
||||
-DRNDC_SYSCONFDIR=\"${sysconfdir}\" \
|
||||
-DNS_LOCALSTATEDIR=\"${localstatedir}\" -c ${srcdir}/rndc.c
|
||||
-DRNDC_CONFFILE=\"${sysconfdir}/rndc.conf\" \
|
||||
-DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\" \
|
||||
-c ${srcdir}/rndc.c
|
||||
|
||||
rndc-confgen.@O@: rndc-confgen.c
|
||||
${LIBTOOL} ${CC} ${ALL_CFLAGS} ${CONFINCLUDES} \
|
||||
-DRNDC_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/rndc-confgen.c
|
||||
${LIBTOOL} ${CC} ${ALL_CFLAGS} \
|
||||
-DRNDC_KEYFILE=\"${sysconfdir}/rndc.key\" \
|
||||
-c ${srcdir}/rndc-confgen.c
|
||||
|
||||
rndc: rndc.@O@ util.@O@ ${RNDCDEPLIBS}
|
||||
${LIBTOOL} ${PURIFY} ${CC} ${CFLAGS} -o $@ rndc.@O@ util.@O@ \
|
||||
${RNDCLIBS}
|
||||
|
||||
rndc-confgen: rndc-confgen.@O@ util.@O@ ${CONFDEPLIBS}
|
||||
rndc-confgen: rndc-confgen.@O@ util.@O@ ${UOBJS} ${CONFDEPLIBS}
|
||||
${LIBTOOL} ${PURIFY} ${CC} ${CFLAGS} -o $@ rndc-confgen.@O@ util.@O@ \
|
||||
${CONFLIBS}
|
||||
${UOBJS} ${CONFLIBS}
|
||||
|
||||
doc man:: ${MANOBJS}
|
||||
|
||||
@@ -90,6 +93,7 @@ install:: rndc installdirs
|
||||
${LIBTOOL} ${INSTALL_PROGRAM} rndc ${DESTDIR}${sbindir}
|
||||
${LIBTOOL} ${INSTALL_PROGRAM} rndc-confgen ${DESTDIR}${sbindir}
|
||||
${INSTALL_DATA} ${srcdir}/rndc.8 ${DESTDIR}${mandir}/man8
|
||||
${INSTALL_DATA} ${srcdir}/rndc-confgen.8 ${DESTDIR}${mandir}/man8
|
||||
${INSTALL_DATA} ${srcdir}/rndc.conf.5 ${DESTDIR}${mandir}/man5
|
||||
|
||||
clean distclean maintainer-clean::
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2001 Internet Software Consortium.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: os.h,v 1.4 2001/08/06 05:33:17 mayer Exp $ */
|
||||
|
||||
#ifndef RNDC_OS_H
|
||||
#define RNDC_OS_H 1
|
||||
|
||||
#include <isc/lang.h>
|
||||
#include <stdio.h>
|
||||
|
||||
ISC_LANG_BEGINDECLS
|
||||
|
||||
FILE *safe_create(const char *filename);
|
||||
/*
|
||||
* Open 'filename' for writing, truncate if necessary. If the file was
|
||||
* created ensure that only the owner can read/write it.
|
||||
*/
|
||||
|
||||
int set_user(FILE *fd, const char *user);
|
||||
/*
|
||||
* Set the owner of the file refernced by 'fd' to 'user'.
|
||||
* Returns:
|
||||
* 0 success
|
||||
* -1 insufficient permissions, or 'user' does not exist.
|
||||
*/
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,129 @@
|
||||
.\"
|
||||
.\" Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this software for any
|
||||
.\" purpose with or without fee is hereby granted, provided that the above
|
||||
.\" copyright notice and this permission notice appear in all copies.
|
||||
.\"
|
||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
.\" DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
.\" INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.TH "RNDC-CONFGEN" "8" "Aug 27, 2001" "BIND9" ""
|
||||
.SH NAME
|
||||
rndc-confgen \- rndc key generation tool
|
||||
.SH SYNOPSIS
|
||||
.sp
|
||||
\fBrndc-confgen\fR [ \fB-a\fR ] [ \fB-b \fIkeysize\fB\fR ] [ \fB-c \fIkeyfile\fB\fR ] [ \fB-h\fR ] [ \fB-k \fIkeyname\fB\fR ] [ \fB-p \fIport\fB\fR ] [ \fB-r \fIrandomfile\fB\fR ] [ \fB-s \fIaddress\fB\fR ] [ \fB-t \fIchrootdir\fB\fR ] [ \fB-u \fIuser\fB\fR ]
|
||||
.SH "DESCRIPTION"
|
||||
.PP
|
||||
\fBrndc-confgen\fR generates configuration files
|
||||
for \fBrndc\fR. It can be used as a
|
||||
convenient alternative to writing the
|
||||
\fIrndc.conf\fR file
|
||||
and the corresponding \fBcontrols\fR
|
||||
and \fBkey\fR
|
||||
statements in \fInamed.conf\fR by hand.
|
||||
Alternatively, it can be run with the \fB-a\fR
|
||||
option to set up a \fIrndc.key\fR file and
|
||||
avoid the need for a \fIrndc.conf\fR file
|
||||
and a \fBcontrols\fR statement altogether.
|
||||
.SH "OPTIONS"
|
||||
.TP
|
||||
\fB-a\fR
|
||||
Do automatic \fBrndc\fR configuration.
|
||||
This creates a file \fIrndc.key\fR
|
||||
in \fI/etc\fR (or whatever
|
||||
sysconfdir
|
||||
was specified as when BIND was built)
|
||||
that is read by both \fBrndc\fR
|
||||
and \fBnamed\fR on startup. The
|
||||
\fIrndc.key\fR file defines a default
|
||||
command channel and authentication key allowing
|
||||
\fBrndc\fR to communicate with
|
||||
\fBnamed\fR with no further configuration.
|
||||
|
||||
Running \fBrndc-confgen -a\fR allows
|
||||
BIND 9 and \fBrndc\fR to be used as drop-in
|
||||
replacements for BIND 8 and \fBndc\fR,
|
||||
with no changes to the existing BIND 8
|
||||
\fInamed.conf\fR file.
|
||||
.TP
|
||||
\fB-b \fIkeysize\fB\fR
|
||||
Specifies the size of the authentication key in bits.
|
||||
Must be between 1 and 512 bits; the default is 128.
|
||||
.TP
|
||||
\fB-c \fIkeyfile\fB\fR
|
||||
Used with the \fB-a\fR option to specify
|
||||
an alternate location for \fIrndc.key\fR.
|
||||
.TP
|
||||
\fB-h\fR
|
||||
Prints a short summary of the options and arguments to
|
||||
\fBrndc-confgen\fR.
|
||||
.TP
|
||||
\fB-k \fIkeyname\fB\fR
|
||||
Specifies the key name of the rndc authentication key.
|
||||
This must be a valid domain name.
|
||||
The default is rndc-key.
|
||||
.TP
|
||||
\fB-p \fIport\fB\fR
|
||||
Specifies the command channel port where \fBnamed\fR
|
||||
listens for connections from \fBrndc\fR.
|
||||
The default is 953.
|
||||
.TP
|
||||
\fB-r \fIrandomfile\fB\fR
|
||||
Specifies a source of random data for generating the
|
||||
authoriazation. If the operating
|
||||
system does not provide a \fI/dev/random\fR
|
||||
or equivalent device, the default source of randomness
|
||||
is keyboard input. \fIrandomdev\fR specifies
|
||||
the name of a character device or file containing random
|
||||
data to be used instead of the default. The special value
|
||||
\fIkeyboard\fR indicates that keyboard
|
||||
input should be used.
|
||||
.TP
|
||||
\fB-s \fIaddress\fB\fR
|
||||
Specifies the IP address where \fBnamed\fR
|
||||
listens for command channel connections from
|
||||
\fBrndc\fR. The default is the loopback
|
||||
address 127.0.0.1.
|
||||
.TP
|
||||
\fB-t \fIchrootdir\fB\fR
|
||||
Used with the \fB-a\fR option to specify
|
||||
a directory where \fBnamed\fR will run
|
||||
chrooted. An additional copy of the \fIrndc.key\fR
|
||||
will be written relative to this directory so that
|
||||
it will be found by the chrooted \fBnamed\fR.
|
||||
.TP
|
||||
\fB-u \fIuser\fB\fR
|
||||
Used with the \fB-a\fR option to set the owner
|
||||
of the \fIrndc.key\fR file generated. If
|
||||
\fB-t\fR is also specified only the file in
|
||||
the chroot area has its owner changed.
|
||||
.SH "EXAMPLES"
|
||||
.PP
|
||||
To allow \fBrndc\fR to be used with
|
||||
no manual configuration, run
|
||||
.PP
|
||||
\fBrndc-confgen -a\fR
|
||||
.PP
|
||||
To print a sample \fIrndc.conf\fR file and
|
||||
corresponding \fBcontrols\fR and \fBkey\fR
|
||||
statements to be manually inserted into \fInamed.conf\fR,
|
||||
run
|
||||
.PP
|
||||
\fBrndc-confgen\fR
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
\fBrndc\fR(8),
|
||||
\fBrndc.conf\fR(5),
|
||||
\fBnamed\fR(8),
|
||||
\fIBIND 9 Administrator Reference Manual\fR.
|
||||
.SH "AUTHOR"
|
||||
.PP
|
||||
Internet Software Consortium
|
||||
+112
-32
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rndc-confgen.c,v 1.2 2001/06/29 23:32:09 gson Exp $ */
|
||||
/* $Id: rndc-confgen.c,v 1.9.2.1 2001/09/06 00:14:16 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <isc/keyboard.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/net.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/result.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/time.h>
|
||||
@@ -40,6 +41,7 @@
|
||||
#include <dns/name.h>
|
||||
|
||||
#include <dst/dst.h>
|
||||
#include <rndc/os.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
@@ -48,29 +50,76 @@
|
||||
#define DEFAULT_SERVER "127.0.0.1"
|
||||
#define DEFAULT_PORT 953
|
||||
|
||||
char progname[256];
|
||||
static char program[256];
|
||||
char *progname;
|
||||
|
||||
isc_boolean_t verbose = ISC_FALSE;
|
||||
|
||||
const char *keyfile, *keydef;
|
||||
|
||||
static void
|
||||
usage(int status) {
|
||||
|
||||
fprintf(stderr, "\
|
||||
Usage:\n\
|
||||
%s [-b bits] [-k keyname] [-P] [-p port] [-r randomfile] [-s addr]\n\
|
||||
%s [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] \
|
||||
[-s addr] [-t chrootdir] [-u user]\n\
|
||||
-a: generate just the key clause and write it to keyfile (%s)\n\
|
||||
-b bits: from 1 through 512, default %d; total length of the secret\n\
|
||||
-c keyfile: specify a alterate keyfile (requires -a)\n\
|
||||
-k keyname: the name as it will be used in named.conf and rndc.conf\n\
|
||||
-P: using pseudorandom data for key generation is ok\n\
|
||||
-p port: the port named will listen on and rndc will connect to\n\
|
||||
-r randomfile: a file containing random data\n\
|
||||
-s addr: the address to which rndc should connect\n",
|
||||
progname, DEFAULT_KEYLENGTH);
|
||||
-s addr: the address to which rndc should connect\n\
|
||||
-t chrootdir: write a keyfile in chrootdir as well (requires -a)\n\
|
||||
-u user: set the keyfile owner to \"user\" (requires -a)\n",
|
||||
progname, keydef, DEFAULT_KEYLENGTH);
|
||||
|
||||
exit (status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Write an rndc.key file to 'keyfile'. If 'user' is non-NULL,
|
||||
* make that user the owner of the file. The key will have
|
||||
* the name 'keyname' and the secret in the buffer 'secret'.
|
||||
*/
|
||||
static void
|
||||
write_key_file(const char *keyfile, const char *user,
|
||||
const char *keyname, isc_buffer_t *secret )
|
||||
{
|
||||
FILE *fd;
|
||||
|
||||
fd = safe_create(keyfile);
|
||||
if (fd == NULL) {
|
||||
fprintf(stderr, "unable to create \"%s\"\n", keyfile);
|
||||
return;
|
||||
}
|
||||
if (user != NULL) {
|
||||
if (set_user(fd, user) == -1) {
|
||||
fprintf(stderr, "unable to set file owner\n");
|
||||
fclose(fd);
|
||||
return;
|
||||
}
|
||||
}
|
||||
fprintf(fd, "key \"%s\" {\n\talgorithm hmac-md5;\n"
|
||||
"\tsecret \"%.*s\";\n};\n", keyname,
|
||||
(int)isc_buffer_usedlength(secret),
|
||||
(char *)isc_buffer_base(secret));
|
||||
fflush(fd);
|
||||
if (ferror(fd)) {
|
||||
fprintf(stderr, "write to %s failed\n", keyfile);
|
||||
fclose(fd);
|
||||
return;
|
||||
}
|
||||
if (fclose(fd)) {
|
||||
fprintf(stderr, "fclose(%s) failed\n", keyfile);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
isc_boolean_t show_final_mem = ISC_FALSE;
|
||||
isc_boolean_t pseudorandom = ISC_FALSE;
|
||||
isc_buffer_t key_rawbuffer;
|
||||
isc_buffer_t key_txtbuffer;
|
||||
isc_region_t key_rawregion;
|
||||
@@ -91,19 +140,29 @@ main(int argc, char **argv) {
|
||||
int entropy_flags = 0;
|
||||
int open_keyboard = ISC_ENTROPY_KEYBOARDMAYBE;
|
||||
struct in_addr addr;
|
||||
char *chrootdir = NULL;
|
||||
char *user = NULL;
|
||||
isc_boolean_t keyonly = ISC_FALSE;
|
||||
int len;
|
||||
|
||||
result = isc_file_progname(*argv, progname, sizeof(progname));
|
||||
keydef = keyfile = RNDC_KEYFILE;
|
||||
|
||||
result = isc_file_progname(*argv, program, sizeof(program));
|
||||
if (result != ISC_R_SUCCESS)
|
||||
memcpy(progname, "rndc", 5);
|
||||
memcpy(program, "rndc-confgen", 13);
|
||||
progname = program;
|
||||
|
||||
keyname = DEFAULT_KEYNAME;
|
||||
keysize = DEFAULT_KEYLENGTH;
|
||||
serveraddr = DEFAULT_SERVER;
|
||||
port = DEFAULT_PORT;
|
||||
|
||||
while ((ch = isc_commandline_parse(argc, argv, "b:hk:MmPp:r:s:Vy"))
|
||||
!= -1) {
|
||||
while ((ch = isc_commandline_parse(argc, argv,
|
||||
"ab:c:hk:Mmp:r:s:t:u:Vy")) != -1) {
|
||||
switch (ch) {
|
||||
case 'a':
|
||||
keyonly = ISC_TRUE;
|
||||
break;
|
||||
case 'b':
|
||||
keysize = strtol(isc_commandline_argument, &p, 10);
|
||||
if (*p != '\0' || keysize < 0)
|
||||
@@ -111,6 +170,9 @@ main(int argc, char **argv) {
|
||||
if (keysize < 1 || keysize > 512)
|
||||
fatal("-b must be in the range 1 through 512");
|
||||
break;
|
||||
case 'c':
|
||||
keyfile = isc_commandline_argument;
|
||||
break;
|
||||
case 'h':
|
||||
usage(0);
|
||||
case 'k':
|
||||
@@ -124,10 +186,6 @@ main(int argc, char **argv) {
|
||||
case 'm':
|
||||
show_final_mem = ISC_TRUE;
|
||||
break;
|
||||
case 'P':
|
||||
pseudorandom = ISC_TRUE;
|
||||
open_keyboard = ISC_ENTROPY_KEYBOARDNO;
|
||||
break;
|
||||
case 'p':
|
||||
port = strtol(isc_commandline_argument, &p, 10);
|
||||
if (*p != '\0' || port < 0 || port > 65535)
|
||||
@@ -142,6 +200,12 @@ main(int argc, char **argv) {
|
||||
if (inet_aton(serveraddr, &addr) == 0)
|
||||
fatal("-s should be an IPv4 or IPv6 address");
|
||||
|
||||
break;
|
||||
case 't':
|
||||
chrootdir = isc_commandline_argument;
|
||||
break;
|
||||
case 'u':
|
||||
user = isc_commandline_argument;
|
||||
break;
|
||||
case 'V':
|
||||
verbose = ISC_TRUE;
|
||||
@@ -166,13 +230,16 @@ main(int argc, char **argv) {
|
||||
|
||||
DO("create entropy context", isc_entropy_create(mctx, &ectx));
|
||||
|
||||
if (randomfile != NULL && strcmp(randomfile, "keyboard") == 0) {
|
||||
randomfile = NULL;
|
||||
open_keyboard = ISC_ENTROPY_KEYBOARDYES;
|
||||
}
|
||||
DO("start entropy source", isc_entropy_usebestsource(ectx,
|
||||
&entropy_source,
|
||||
randomfile,
|
||||
open_keyboard));
|
||||
|
||||
if (! pseudorandom)
|
||||
entropy_flags = ISC_ENTROPY_BLOCKING | ISC_ENTROPY_GOODONLY;
|
||||
entropy_flags = ISC_ENTROPY_BLOCKING | ISC_ENTROPY_GOODONLY;
|
||||
|
||||
DO("initialize dst library", dst_lib_init(mctx, ectx, entropy_flags));
|
||||
|
||||
@@ -204,14 +271,25 @@ main(int argc, char **argv) {
|
||||
isc_entropy_detach(&ectx);
|
||||
dst_lib_destroy();
|
||||
|
||||
if (open_keyboard)
|
||||
/*
|
||||
* Add a little vertical whitespace to separate it
|
||||
* from the "stop typing" message".
|
||||
*/
|
||||
printf("\n\n");
|
||||
if (keyonly) {
|
||||
write_key_file(keyfile, chrootdir == NULL ? user : NULL,
|
||||
keyname, &key_txtbuffer);
|
||||
|
||||
printf("\
|
||||
if (chrootdir != NULL) {
|
||||
char *buf;
|
||||
len = strlen(chrootdir) + strlen(keyfile) + 2;
|
||||
buf = isc_mem_get(mctx, len);
|
||||
if (buf != NULL) {
|
||||
fprintf(stderr, "isc_mem_get(%d) failed\n", len);
|
||||
goto cleanup;
|
||||
}
|
||||
snprintf(buf, len, "%s/%s", chrootdir, keyfile);
|
||||
|
||||
write_key_file(buf, user, keyname, &key_txtbuffer);
|
||||
isc_mem_put(mctx, buf, len);
|
||||
}
|
||||
} else {
|
||||
printf("\
|
||||
# Start of rndc.conf\n\
|
||||
key \"%s\" {\n\
|
||||
algorithm hmac-md5;\n\
|
||||
@@ -236,15 +314,17 @@ options {\n\
|
||||
# allow { %s; } keys { \"%s\"; };\n\
|
||||
# };\n\
|
||||
# End of named.conf\n",
|
||||
keyname,
|
||||
(int)isc_buffer_usedlength(&key_txtbuffer),
|
||||
(char *)isc_buffer_base(&key_txtbuffer),
|
||||
keyname, serveraddr, port,
|
||||
keyname,
|
||||
(int)isc_buffer_usedlength(&key_txtbuffer),
|
||||
(char *)isc_buffer_base(&key_txtbuffer),
|
||||
serveraddr, port, serveraddr, keyname);
|
||||
keyname,
|
||||
(int)isc_buffer_usedlength(&key_txtbuffer),
|
||||
(char *)isc_buffer_base(&key_txtbuffer),
|
||||
keyname, serveraddr, port,
|
||||
keyname,
|
||||
(int)isc_buffer_usedlength(&key_txtbuffer),
|
||||
(char *)isc_buffer_base(&key_txtbuffer),
|
||||
serveraddr, port, serveraddr, keyname);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if (show_final_mem)
|
||||
isc_mem_stats(mctx, stderr);
|
||||
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
|
||||
<!--
|
||||
- Copyright (C) 2001 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
- copyright notice and this permission notice appear in all copies.
|
||||
-
|
||||
- THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
- DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
- INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
- FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
- NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
- WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: rndc-confgen.docbook,v 1.3 2001/08/29 03:27:57 marka Exp $ -->
|
||||
|
||||
<refentry>
|
||||
<refentryinfo>
|
||||
<date>Aug 27, 2001</date>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle><application>rndc-confgen</application></refentrytitle>
|
||||
<manvolnum>8</manvolnum>
|
||||
<refmiscinfo>BIND9</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname><application>rndc-confgen</application></refname>
|
||||
<refpurpose>rndc key generation tool</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>rndc-confgen</command>
|
||||
<arg><option>-a</option></arg>
|
||||
<arg><option>-b <replaceable class="parameter">keysize</replaceable></option></arg>
|
||||
<arg><option>-c <replaceable class="parameter">keyfile</replaceable></option></arg>
|
||||
<arg><option>-h</option></arg>
|
||||
<arg><option>-k <replaceable class="parameter">keyname</replaceable></option></arg>
|
||||
<arg><option>-p <replaceable class="parameter">port</replaceable></option></arg>
|
||||
<arg><option>-r <replaceable class="parameter">randomfile</replaceable></option></arg>
|
||||
<arg><option>-s <replaceable class="parameter">address</replaceable></option></arg>
|
||||
<arg><option>-t <replaceable class="parameter">chrootdir</replaceable></option></arg>
|
||||
<arg><option>-u <replaceable class="parameter">user</replaceable></option></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
<command>rndc-confgen</command> generates configuration files
|
||||
for <command>rndc</command>. It can be used as a
|
||||
convenient alternative to writing the
|
||||
<filename>rndc.conf</filename> file
|
||||
and the corresponding <command>controls</command>
|
||||
and <command>key</command>
|
||||
statements in <filename>named.conf</filename> by hand.
|
||||
Alternatively, it can be run with the <command>-a</command>
|
||||
option to set up a <filename>rndc.key</filename> file and
|
||||
avoid the need for a <filename>rndc.conf</filename> file
|
||||
and a <command>controls</command> statement altogether.
|
||||
</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>OPTIONS</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>-a</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Do automatic <command>rndc</command> configuration.
|
||||
This creates a file <filename>rndc.key</filename>
|
||||
in <filename>/etc</filename> (or whatever
|
||||
<varname>sysconfdir</varname>
|
||||
was specified as when <acronym>BIND</acronym> was built)
|
||||
that is read by both <command>rndc</command>
|
||||
and <command>named</command> on startup. The
|
||||
<filename>rndc.key</filename> file defines a default
|
||||
command channel and authentication key allowing
|
||||
<command>rndc</command> to communicate with
|
||||
<command>named</command> with no further configuration.
|
||||
</para>
|
||||
<para>
|
||||
Running <command>rndc-confgen -a</command> allows
|
||||
BIND 9 and <command>rndc</command> to be used as drop-in
|
||||
replacements for BIND 8 and <command>ndc</command>,
|
||||
with no changes to the existing BIND 8
|
||||
<filename>named.conf</filename> file.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-b <replaceable class="parameter">keysize</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the size of the authentication key in bits.
|
||||
Must be between 1 and 512 bits; the default is 128.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-c <replaceable class="parameter">keyfile</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Used with the <command>-a</command> option to specify
|
||||
an alternate location for <filename>rndc.key</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-h</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Prints a short summary of the options and arguments to
|
||||
<command>rndc-confgen</command>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-k <replaceable class="parameter">keyname</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the key name of the rndc authentication key.
|
||||
This must be a valid domain name.
|
||||
The default is <constant>rndc-key</constant>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-p <replaceable class="parameter">port</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the command channel port where <command>named</command>
|
||||
listens for connections from <command>rndc</command>.
|
||||
The default is 953.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-r <replaceable class="parameter">randomfile</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies a source of random data for generating the
|
||||
authoriazation. If the operating
|
||||
system does not provide a <filename>/dev/random</filename>
|
||||
or equivalent device, the default source of randomness
|
||||
is keyboard input. <filename>randomdev</filename> specifies
|
||||
the name of a character device or file containing random
|
||||
data to be used instead of the default. The special value
|
||||
<filename>keyboard</filename> indicates that keyboard
|
||||
input should be used.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-s <replaceable class="parameter">address</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the IP address where <command>named</command>
|
||||
listens for command channel connections from
|
||||
<command>rndc</command>. The default is the loopback
|
||||
address 127.0.0.1.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-t <replaceable class="parameter">chrootdir</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Used with the <command>-a</command> option to specify
|
||||
a directory where <command>named</command> will run
|
||||
chrooted. An additional copy of the <filename>rndc.key</filename>
|
||||
will be written relative to this directory so that
|
||||
it will be found by the chrooted <command>named</command>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-u <replaceable class="parameter">user</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Used with the <command>-a</command> option to set the owner
|
||||
of the <filename>rndc.key</filename> file generated. If
|
||||
<command>-t</command> is also specified only the file in
|
||||
the chroot area has its owner changed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>EXAMPLES</title>
|
||||
<para>
|
||||
To allow <command>rndc</command> to be used with
|
||||
no manual configuration, run
|
||||
</para>
|
||||
<para>
|
||||
<userinput>rndc-confgen -a</userinput>
|
||||
</para>
|
||||
<para>
|
||||
To print a sample <filename>rndc.conf</filename> file and
|
||||
corresponding <command>controls</command> and <command>key</command>
|
||||
statements to be manually inserted into <filename>named.conf</filename>,
|
||||
run
|
||||
</para>
|
||||
<para>
|
||||
<userinput>rndc-confgen</userinput>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>SEE ALSO</title>
|
||||
<para>
|
||||
<citerefentry>
|
||||
<refentrytitle>rndc</refentrytitle>
|
||||
<manvolnum>8</manvolnum>
|
||||
</citerefentry>,
|
||||
<citerefentry>
|
||||
<refentrytitle>rndc.conf</refentrytitle>
|
||||
<manvolnum>5</manvolnum>
|
||||
</citerefentry>,
|
||||
<citerefentry>
|
||||
<refentrytitle>named</refentrytitle>
|
||||
<manvolnum>8</manvolnum>
|
||||
</citerefentry>,
|
||||
<citetitle>BIND 9 Administrator Reference Manual</citetitle>.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>AUTHOR</title>
|
||||
<para>
|
||||
<corpauthor>Internet Software Consortium</corpauthor>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
<!--
|
||||
- Local variables:
|
||||
- mode: sgml
|
||||
- End:
|
||||
-->
|
||||
@@ -0,0 +1,545 @@
|
||||
<!--
|
||||
- Copyright (C) 2000, 2001 Internet Software Consortium.
|
||||
-
|
||||
- Permission to use, copy, modify, and distribute this software for any
|
||||
- purpose with or without fee is hereby granted, provided that the above
|
||||
- copyright notice and this permission notice appear in all copies.
|
||||
-
|
||||
- THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
|
||||
- DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
||||
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
- INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
- FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
- NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
- WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>rndc-confgen</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
|
||||
"></HEAD
|
||||
><BODY
|
||||
CLASS="REFENTRY"
|
||||
BGCOLOR="#FFFFFF"
|
||||
TEXT="#000000"
|
||||
LINK="#0000FF"
|
||||
VLINK="#840084"
|
||||
ALINK="#0000FF"
|
||||
><H1
|
||||
><A
|
||||
NAME="AEN1"
|
||||
><SPAN
|
||||
CLASS="APPLICATION"
|
||||
>rndc-confgen</SPAN
|
||||
></A
|
||||
></H1
|
||||
><DIV
|
||||
CLASS="REFNAMEDIV"
|
||||
><A
|
||||
NAME="AEN9"
|
||||
></A
|
||||
><H2
|
||||
>Name</H2
|
||||
><SPAN
|
||||
CLASS="APPLICATION"
|
||||
>rndc-confgen</SPAN
|
||||
> -- rndc key generation tool</DIV
|
||||
><DIV
|
||||
CLASS="REFSYNOPSISDIV"
|
||||
><A
|
||||
NAME="AEN13"
|
||||
></A
|
||||
><H2
|
||||
>Synopsis</H2
|
||||
><P
|
||||
><B
|
||||
CLASS="COMMAND"
|
||||
>rndc-confgen</B
|
||||
> [<TT
|
||||
CLASS="OPTION"
|
||||
>-a</TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-b <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keysize</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-c <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keyfile</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-h</TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-k <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keyname</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-p <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>port</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-r <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>randomfile</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-s <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>address</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-t <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>chrootdir</I
|
||||
></TT
|
||||
></TT
|
||||
>] [<TT
|
||||
CLASS="OPTION"
|
||||
>-u <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>user</I
|
||||
></TT
|
||||
></TT
|
||||
>]</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN44"
|
||||
></A
|
||||
><H2
|
||||
>DESCRIPTION</H2
|
||||
><P
|
||||
> <B
|
||||
CLASS="COMMAND"
|
||||
>rndc-confgen</B
|
||||
> generates configuration files
|
||||
for <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
>. It can be used as a
|
||||
convenient alternative to writing the
|
||||
<TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.conf</TT
|
||||
> file
|
||||
and the corresponding <B
|
||||
CLASS="COMMAND"
|
||||
>controls</B
|
||||
>
|
||||
and <B
|
||||
CLASS="COMMAND"
|
||||
>key</B
|
||||
>
|
||||
statements in <TT
|
||||
CLASS="FILENAME"
|
||||
>named.conf</TT
|
||||
> by hand.
|
||||
Alternatively, it can be run with the <B
|
||||
CLASS="COMMAND"
|
||||
>-a</B
|
||||
>
|
||||
option to set up a <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
> file and
|
||||
avoid the need for a <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.conf</TT
|
||||
> file
|
||||
and a <B
|
||||
CLASS="COMMAND"
|
||||
>controls</B
|
||||
> statement altogether.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN57"
|
||||
></A
|
||||
><H2
|
||||
>OPTIONS</H2
|
||||
><P
|
||||
></P
|
||||
><DIV
|
||||
CLASS="VARIABLELIST"
|
||||
><DL
|
||||
><DT
|
||||
>-a</DT
|
||||
><DD
|
||||
><P
|
||||
> Do automatic <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
> configuration.
|
||||
This creates a file <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
>
|
||||
in <TT
|
||||
CLASS="FILENAME"
|
||||
>/etc</TT
|
||||
> (or whatever
|
||||
<TT
|
||||
CLASS="VARNAME"
|
||||
>sysconfdir</TT
|
||||
>
|
||||
was specified as when <SPAN
|
||||
CLASS="ACRONYM"
|
||||
>BIND</SPAN
|
||||
> was built)
|
||||
that is read by both <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
>
|
||||
and <B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
> on startup. The
|
||||
<TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
> file defines a default
|
||||
command channel and authentication key allowing
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
> to communicate with
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
> with no further configuration.
|
||||
</P
|
||||
><P
|
||||
> Running <B
|
||||
CLASS="COMMAND"
|
||||
>rndc-confgen -a</B
|
||||
> allows
|
||||
BIND 9 and <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
> to be used as drop-in
|
||||
replacements for BIND 8 and <B
|
||||
CLASS="COMMAND"
|
||||
>ndc</B
|
||||
>,
|
||||
with no changes to the existing BIND 8
|
||||
<TT
|
||||
CLASS="FILENAME"
|
||||
>named.conf</TT
|
||||
> file.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-b <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keysize</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Specifies the size of the authentication key in bits.
|
||||
Must be between 1 and 512 bits; the default is 128.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-c <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keyfile</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Used with the <B
|
||||
CLASS="COMMAND"
|
||||
>-a</B
|
||||
> option to specify
|
||||
an alternate location for <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
>.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-h</DT
|
||||
><DD
|
||||
><P
|
||||
> Prints a short summary of the options and arguments to
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>rndc-confgen</B
|
||||
>.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-k <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>keyname</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Specifies the key name of the rndc authentication key.
|
||||
This must be a valid domain name.
|
||||
The default is <TT
|
||||
CLASS="CONSTANT"
|
||||
>rndc-key</TT
|
||||
>.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-p <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>port</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Specifies the command channel port where <B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
>
|
||||
listens for connections from <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
>.
|
||||
The default is 953.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-r <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>randomfile</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Specifies a source of random data for generating the
|
||||
authoriazation. If the operating
|
||||
system does not provide a <TT
|
||||
CLASS="FILENAME"
|
||||
>/dev/random</TT
|
||||
>
|
||||
or equivalent device, the default source of randomness
|
||||
is keyboard input. <TT
|
||||
CLASS="FILENAME"
|
||||
>randomdev</TT
|
||||
> specifies
|
||||
the name of a character device or file containing random
|
||||
data to be used instead of the default. The special value
|
||||
<TT
|
||||
CLASS="FILENAME"
|
||||
>keyboard</TT
|
||||
> indicates that keyboard
|
||||
input should be used.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-s <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>address</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Specifies the IP address where <B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
>
|
||||
listens for command channel connections from
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
>. The default is the loopback
|
||||
address 127.0.0.1.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-t <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>chrootdir</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Used with the <B
|
||||
CLASS="COMMAND"
|
||||
>-a</B
|
||||
> option to specify
|
||||
a directory where <B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
> will run
|
||||
chrooted. An additional copy of the <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
>
|
||||
will be written relative to this directory so that
|
||||
it will be found by the chrooted <B
|
||||
CLASS="COMMAND"
|
||||
>named</B
|
||||
>.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-u <TT
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>user</I
|
||||
></TT
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> Used with the <B
|
||||
CLASS="COMMAND"
|
||||
>-a</B
|
||||
> option to set the owner
|
||||
of the <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.key</TT
|
||||
> file generated. If
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>-t</B
|
||||
> is also specified only the file in
|
||||
the chroot area has its owner changed.
|
||||
</P
|
||||
></DD
|
||||
></DL
|
||||
></DIV
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN141"
|
||||
></A
|
||||
><H2
|
||||
>EXAMPLES</H2
|
||||
><P
|
||||
> To allow <B
|
||||
CLASS="COMMAND"
|
||||
>rndc</B
|
||||
> to be used with
|
||||
no manual configuration, run
|
||||
</P
|
||||
><P
|
||||
> <TT
|
||||
CLASS="USERINPUT"
|
||||
><B
|
||||
>rndc-confgen -a</B
|
||||
></TT
|
||||
>
|
||||
</P
|
||||
><P
|
||||
> To print a sample <TT
|
||||
CLASS="FILENAME"
|
||||
>rndc.conf</TT
|
||||
> file and
|
||||
corresponding <B
|
||||
CLASS="COMMAND"
|
||||
>controls</B
|
||||
> and <B
|
||||
CLASS="COMMAND"
|
||||
>key</B
|
||||
>
|
||||
statements to be manually inserted into <TT
|
||||
CLASS="FILENAME"
|
||||
>named.conf</TT
|
||||
>,
|
||||
run
|
||||
</P
|
||||
><P
|
||||
> <TT
|
||||
CLASS="USERINPUT"
|
||||
><B
|
||||
>rndc-confgen</B
|
||||
></TT
|
||||
>
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN154"
|
||||
></A
|
||||
><H2
|
||||
>SEE ALSO</H2
|
||||
><P
|
||||
> <SPAN
|
||||
CLASS="CITEREFENTRY"
|
||||
><SPAN
|
||||
CLASS="REFENTRYTITLE"
|
||||
>rndc</SPAN
|
||||
>(8)</SPAN
|
||||
>,
|
||||
<SPAN
|
||||
CLASS="CITEREFENTRY"
|
||||
><SPAN
|
||||
CLASS="REFENTRYTITLE"
|
||||
>rndc.conf</SPAN
|
||||
>(5)</SPAN
|
||||
>,
|
||||
<SPAN
|
||||
CLASS="CITEREFENTRY"
|
||||
><SPAN
|
||||
CLASS="REFENTRYTITLE"
|
||||
>named</SPAN
|
||||
>(8)</SPAN
|
||||
>,
|
||||
<I
|
||||
CLASS="CITETITLE"
|
||||
>BIND 9 Administrator Reference Manual</I
|
||||
>.
|
||||
</P
|
||||
></DIV
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN167"
|
||||
></A
|
||||
><H2
|
||||
>AUTHOR</H2
|
||||
><P
|
||||
> Internet Software Consortium
|
||||
</P
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
||||
+9
-1
@@ -19,7 +19,7 @@
|
||||
rndc \- name server control utility
|
||||
.SH SYNOPSIS
|
||||
.sp
|
||||
\fBrndc\fR [ \fB-c \fIconfig-file\fB\fR ] [ \fB-s \fIserver\fB\fR ] [ \fB-p \fIport\fB\fR ] [ \fB-V\fR ] [ \fB-y \fIkey_id\fB\fR ] \fBcommand\fR
|
||||
\fBrndc\fR [ \fB-c \fIconfig-file\fB\fR ] [ \fB-k \fIkey-file\fB\fR ] [ \fB-s \fIserver\fB\fR ] [ \fB-p \fIport\fB\fR ] [ \fB-V\fR ] [ \fB-y \fIkey_id\fB\fR ] \fBcommand\fR
|
||||
.SH "DESCRIPTION"
|
||||
.PP
|
||||
\fBrndc\fR controls the operation of a name
|
||||
@@ -51,6 +51,14 @@ Use \fIconfig-file\fR
|
||||
as the configuration file instead of the default,
|
||||
\fI/etc/rndc.conf\fR.
|
||||
.TP
|
||||
\fB-k \fIkey-file\fB\fR
|
||||
Use \fIkey-file\fR
|
||||
as the key file instead of the default,
|
||||
\fI/etc/rndc.key\fR. The key in
|
||||
\fI/etc/rndc.key\fR will be used to authenticate
|
||||
commands sent to the server if the \fIconfig-file\fR
|
||||
does not exist.
|
||||
.TP
|
||||
\fB-s \fIserver\fB\fR
|
||||
\fIserver\fR is
|
||||
the name or address of the server which matches a
|
||||
|
||||
+154
-134
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rndc.c,v 1.68 2001/07/09 22:02:15 gson Exp $ */
|
||||
/* $Id: rndc.c,v 1.77.2.1 2001/10/17 18:26:01 gson Exp $ */
|
||||
|
||||
/*
|
||||
* Principal Author: DCL
|
||||
@@ -61,17 +61,19 @@
|
||||
#endif
|
||||
|
||||
#ifndef USE_GETADDRINFO
|
||||
#ifndef ISC_PLATFORM_NONSTDHERRNO
|
||||
extern int h_errno;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
char *progname;
|
||||
isc_boolean_t verbose;
|
||||
|
||||
static const char *admin_conffile = RNDC_SYSCONFDIR "/rndc.conf";
|
||||
static const char *auto_conffile = NS_LOCALSTATEDIR "/run/named.key";
|
||||
static const char *admin_conffile;
|
||||
static const char *admin_keyfile;
|
||||
static const char *version = VERSION;
|
||||
static const char *servername = NULL;
|
||||
static unsigned int remoteport = NS_CONTROL_PORT;
|
||||
static unsigned int remoteport = 0;
|
||||
static isc_socketmgr_t *socketmgr = NULL;
|
||||
static unsigned char databuf[2048];
|
||||
static isccc_ccmsg_t ccmsg;
|
||||
@@ -82,6 +84,7 @@ static int sends, recvs, connects;
|
||||
static char *command;
|
||||
static char *args;
|
||||
static char program[256];
|
||||
static isc_socket_t *sock = NULL;
|
||||
|
||||
static void
|
||||
usage(int status) {
|
||||
@@ -147,6 +150,7 @@ get_address(const char *host, in_port_t port, isc_sockaddr_t *sockaddr) {
|
||||
hints.ai_family = PF_INET6;
|
||||
else
|
||||
hints.ai_family = PF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
isc_app_block();
|
||||
result = getaddrinfo(host, NULL, &hints, &res);
|
||||
isc_app_unblock();
|
||||
@@ -186,7 +190,6 @@ rndc_senddone(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
static void
|
||||
rndc_recvdone(isc_task_t *task, isc_event_t *event) {
|
||||
isc_socket_t *sock = ccmsg.sock;
|
||||
isccc_sexpr_t *response = NULL;
|
||||
isccc_sexpr_t *data;
|
||||
isccc_region_t source;
|
||||
@@ -199,9 +202,9 @@ rndc_recvdone(isc_task_t *task, isc_event_t *event) {
|
||||
if (ccmsg.result == ISC_R_EOF)
|
||||
fatal("connection to remote host closed\n"
|
||||
"This may indicate that the remote server is using "
|
||||
"an older version of the\n"
|
||||
"command protocol, this host is not authorized "
|
||||
"to connect, or the key is invalid.");
|
||||
"an older version of \n"
|
||||
"the command protocol, this host is not authorized "
|
||||
"to connect,\nor the key is invalid.");
|
||||
|
||||
if (ccmsg.result != ISC_R_SUCCESS)
|
||||
fatal("recv failed: %s", isc_result_totext(ccmsg.result));
|
||||
@@ -241,7 +244,6 @@ rndc_recvdone(isc_task_t *task, isc_event_t *event) {
|
||||
static void
|
||||
rndc_connected(isc_task_t *task, isc_event_t *event) {
|
||||
isc_socketevent_t *sevent = (isc_socketevent_t *)event;
|
||||
isc_socket_t *sock = event->ev_sender;
|
||||
isccc_sexpr_t *request = NULL;
|
||||
isccc_sexpr_t *data;
|
||||
isccc_time_t now;
|
||||
@@ -290,13 +292,12 @@ rndc_connected(isc_task_t *task, isc_event_t *event) {
|
||||
static void
|
||||
rndc_start(isc_task_t *task, isc_event_t *event) {
|
||||
isc_sockaddr_t addr;
|
||||
isc_socket_t *sock = NULL;
|
||||
isc_result_t result;
|
||||
char socktext[ISC_SOCKADDR_FORMATSIZE];
|
||||
|
||||
isc_event_free(&event);
|
||||
|
||||
get_address(servername, remoteport, &addr);
|
||||
get_address(servername, (in_port_t) remoteport, &addr);
|
||||
|
||||
isc_sockaddr_format(&addr, socktext, sizeof(socktext));
|
||||
|
||||
@@ -311,18 +312,36 @@ rndc_start(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
|
||||
static void
|
||||
parse_config(isc_mem_t *mctx, isc_log_t *log, cfg_parser_t **pctxp,
|
||||
cfg_obj_t **config)
|
||||
parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
|
||||
cfg_parser_t **pctxp, cfg_obj_t **configp)
|
||||
{
|
||||
isc_result_t result;
|
||||
const char *conffile = admin_conffile;
|
||||
cfg_obj_t *defkey = NULL;
|
||||
cfg_obj_t *options = NULL;
|
||||
cfg_obj_t *servers = NULL;
|
||||
cfg_obj_t *server = NULL;
|
||||
cfg_obj_t *keys = NULL;
|
||||
cfg_obj_t *key = NULL;
|
||||
cfg_obj_t *defport = NULL;
|
||||
cfg_obj_t *secretobj = NULL;
|
||||
cfg_obj_t *algorithmobj = NULL;
|
||||
cfg_obj_t *config = NULL;
|
||||
cfg_listelt_t *elt;
|
||||
const char *secretstr;
|
||||
const char *algorithm;
|
||||
static char secretarray[1024];
|
||||
const cfg_type_t *conftype = &cfg_type_rndcconf;
|
||||
isc_boolean_t key_only = ISC_FALSE;
|
||||
|
||||
if (! isc_file_exists(conffile)) {
|
||||
conffile = auto_conffile;
|
||||
conffile = admin_keyfile;
|
||||
conftype = &cfg_type_rndckey;
|
||||
|
||||
if (! isc_file_exists(conffile))
|
||||
fatal("neither %s nor %s was found",
|
||||
admin_conffile, auto_conffile);
|
||||
admin_conffile, admin_keyfile);
|
||||
key_only = ISC_TRUE;
|
||||
}
|
||||
|
||||
DO("create parser", cfg_parser_create(mctx, log, pctxp));
|
||||
@@ -330,10 +349,112 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, cfg_parser_t **pctxp,
|
||||
/*
|
||||
* The parser will output its own errors, so DO() is not used.
|
||||
*/
|
||||
result = cfg_parse_file(*pctxp, conffile, &cfg_type_rndcconf, config);
|
||||
|
||||
result = cfg_parse_file(*pctxp, conffile, conftype, &config);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
exit(1);
|
||||
fatal("could not load rndc configuration");
|
||||
|
||||
if (!key_only)
|
||||
(void)cfg_map_get(config, "options", &options);
|
||||
|
||||
if (key_only && servername == NULL)
|
||||
servername = "127.0.0.1";
|
||||
else if (servername == NULL && options != NULL) {
|
||||
cfg_obj_t *defserverobj = NULL;
|
||||
(void)cfg_map_get(options, "default-server", &defserverobj);
|
||||
if (defserverobj != NULL)
|
||||
servername = cfg_obj_asstring(defserverobj);
|
||||
}
|
||||
|
||||
if (servername == NULL)
|
||||
fatal("no server specified and no default");
|
||||
|
||||
if (!key_only) {
|
||||
cfg_map_get(config, "server", &servers);
|
||||
if (servers != NULL) {
|
||||
for (elt = cfg_list_first(servers);
|
||||
elt != NULL;
|
||||
elt = cfg_list_next(elt))
|
||||
{
|
||||
const char *name;
|
||||
server = cfg_listelt_value(elt);
|
||||
name = cfg_obj_asstring(cfg_map_getname(server));
|
||||
if (strcasecmp(name, servername) == 0)
|
||||
break;
|
||||
server = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Look for the name of the key to use.
|
||||
*/
|
||||
if (keyname != NULL)
|
||||
; /* Was set on command line, do nothing. */
|
||||
else if (server != NULL) {
|
||||
DO("get key for server", cfg_map_get(server, "key", &defkey));
|
||||
keyname = cfg_obj_asstring(defkey);
|
||||
} else if (options != NULL) {
|
||||
DO("get default key", cfg_map_get(options, "default-key",
|
||||
&defkey));
|
||||
keyname = cfg_obj_asstring(defkey);
|
||||
} else if (!key_only)
|
||||
fatal("no key for server and no default");
|
||||
|
||||
/*
|
||||
* Get the key's definition.
|
||||
*/
|
||||
if (key_only)
|
||||
DO("get key", cfg_map_get(config, "key", &key));
|
||||
else {
|
||||
DO("get config key list", cfg_map_get(config, "key", &keys));
|
||||
for (elt = cfg_list_first(keys);
|
||||
elt != NULL;
|
||||
elt = cfg_list_next(elt))
|
||||
{
|
||||
key = cfg_listelt_value(elt);
|
||||
if (strcasecmp(cfg_obj_asstring(cfg_map_getname(key)),
|
||||
keyname) == 0)
|
||||
break;
|
||||
}
|
||||
if (elt == NULL)
|
||||
fatal("no key definition for name %s", keyname);
|
||||
}
|
||||
(void)cfg_map_get(key, "secret", &secretobj);
|
||||
(void)cfg_map_get(key, "algorithm", &algorithmobj);
|
||||
if (secretobj == NULL || algorithmobj == NULL)
|
||||
fatal("key must have algorithm and secret");
|
||||
|
||||
secretstr = cfg_obj_asstring(secretobj);
|
||||
algorithm = cfg_obj_asstring(algorithmobj);
|
||||
|
||||
if (strcasecmp(algorithm, "hmac-md5") != 0)
|
||||
fatal("unsupported algorithm: %s", algorithm);
|
||||
|
||||
secret.rstart = (unsigned char *)secretarray;
|
||||
secret.rend = (unsigned char *)secretarray + sizeof(secretarray);
|
||||
DO("decode base64 secret", isccc_base64_decode(secretstr, &secret));
|
||||
secret.rend = secret.rstart;
|
||||
secret.rstart = (unsigned char *)secretarray;
|
||||
|
||||
/*
|
||||
* Find the port to connect to.
|
||||
*/
|
||||
if (remoteport != 0)
|
||||
; /* Was set on command line, do nothing. */
|
||||
else {
|
||||
if (server != NULL)
|
||||
(void)cfg_map_get(server, "port", &defport);
|
||||
if (defport == NULL && options != NULL)
|
||||
cfg_map_get(options, "default-port", &defport);
|
||||
}
|
||||
if (defport != NULL) {
|
||||
remoteport = cfg_obj_asuint32(defport);
|
||||
if (remoteport > 65535 || remoteport == 0)
|
||||
fatal("port %d out of range", remoteport);
|
||||
} else if (remoteport == 0)
|
||||
remoteport = NS_CONTROL_PORT;
|
||||
|
||||
*configp = config;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -347,40 +468,33 @@ main(int argc, char **argv) {
|
||||
isc_logdestination_t logdest;
|
||||
cfg_parser_t *pctx = NULL;
|
||||
cfg_obj_t *config = NULL;
|
||||
cfg_obj_t *options = NULL;
|
||||
cfg_obj_t *servers = NULL;
|
||||
cfg_obj_t *server = NULL;
|
||||
cfg_obj_t *defkey = NULL;
|
||||
cfg_obj_t *keys = NULL;
|
||||
cfg_obj_t *key = NULL;
|
||||
cfg_obj_t *defport = NULL;
|
||||
cfg_obj_t *secretobj = NULL;
|
||||
cfg_obj_t *algorithmobj = NULL;
|
||||
cfg_listelt_t *elt;
|
||||
const char *keyname = NULL;
|
||||
const char *secretstr;
|
||||
const char *algorithm;
|
||||
isc_boolean_t portset = ISC_FALSE;
|
||||
char secretarray[1024];
|
||||
char *p;
|
||||
size_t argslen;
|
||||
int ch;
|
||||
int i;
|
||||
|
||||
isc_app_start();
|
||||
|
||||
result = isc_file_progname(*argv, program, sizeof(program));
|
||||
if (result != ISC_R_SUCCESS)
|
||||
memcpy(progname, "rndc", 5);
|
||||
memcpy(program, "rndc", 5);
|
||||
progname = program;
|
||||
|
||||
while ((ch = isc_commandline_parse(argc, argv, "c:Mmp:s:Vy:"))
|
||||
admin_conffile = RNDC_CONFFILE;
|
||||
admin_keyfile = RNDC_KEYFILE;
|
||||
|
||||
isc_app_start();
|
||||
|
||||
while ((ch = isc_commandline_parse(argc, argv, "c:k:Mmp:s:Vy:"))
|
||||
!= -1) {
|
||||
switch (ch) {
|
||||
case 'c':
|
||||
admin_conffile = isc_commandline_argument;
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
admin_keyfile = isc_commandline_argument;
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
isc_mem_debugging = 1;
|
||||
break;
|
||||
@@ -391,10 +505,9 @@ main(int argc, char **argv) {
|
||||
|
||||
case 'p':
|
||||
remoteport = atoi(isc_commandline_argument);
|
||||
if (remoteport > 65535)
|
||||
if (remoteport > 65535 || remoteport == 0)
|
||||
fatal("port '%s' out of range",
|
||||
isc_commandline_argument);
|
||||
portset = ISC_TRUE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
@@ -441,100 +554,7 @@ main(int argc, char **argv) {
|
||||
DO("enabling log channel", isc_log_usechannel(logconfig, "stderr",
|
||||
NULL, NULL));
|
||||
|
||||
parse_config(mctx, log, &pctx, &config);
|
||||
|
||||
(void)cfg_map_get(config, "options", &options);
|
||||
|
||||
if (servername == NULL && options != NULL) {
|
||||
cfg_obj_t *defserverobj = NULL;
|
||||
(void)cfg_map_get(options, "default-server", &defserverobj);
|
||||
if (defserverobj != NULL)
|
||||
servername = cfg_obj_asstring(defserverobj);
|
||||
}
|
||||
|
||||
if (servername == NULL)
|
||||
fatal("no server specified and no default");
|
||||
|
||||
cfg_map_get(config, "server", &servers);
|
||||
if (servers != NULL) {
|
||||
for (elt = cfg_list_first(servers);
|
||||
elt != NULL;
|
||||
elt = cfg_list_next(elt))
|
||||
{
|
||||
const char *name;
|
||||
server = cfg_listelt_value(elt);
|
||||
name = cfg_obj_asstring(cfg_map_getname(server));
|
||||
if (strcasecmp(name, servername) == 0)
|
||||
break;
|
||||
server = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Look for the name of the key to use.
|
||||
*/
|
||||
if (keyname != NULL)
|
||||
; /* Was set on command line, do nothing. */
|
||||
else if (server != NULL) {
|
||||
DO("get key for server", cfg_map_get(server, "key", &defkey));
|
||||
keyname = cfg_obj_asstring(defkey);
|
||||
} else if (options != NULL) {
|
||||
DO("get default key", cfg_map_get(options, "default-key",
|
||||
&defkey));
|
||||
keyname = cfg_obj_asstring(defkey);
|
||||
} else
|
||||
fatal("no key for server and no default");
|
||||
|
||||
/*
|
||||
* Get the key's definition.
|
||||
*/
|
||||
DO("get config key list", cfg_map_get(config, "key", &keys));
|
||||
for (elt = cfg_list_first(keys);
|
||||
elt != NULL;
|
||||
elt = cfg_list_next(elt))
|
||||
{
|
||||
key = cfg_listelt_value(elt);
|
||||
if (strcasecmp(cfg_obj_asstring(cfg_map_getname(key)),
|
||||
keyname) == 0)
|
||||
break;
|
||||
}
|
||||
if (elt == NULL)
|
||||
fatal("no key definition for name %s", keyname);
|
||||
|
||||
(void)cfg_map_get(key, "secret", &secretobj);
|
||||
(void)cfg_map_get(key, "algorithm", &algorithmobj);
|
||||
if (secretobj == NULL || algorithmobj == NULL)
|
||||
fatal("key must have algorithm and secret");
|
||||
|
||||
secretstr = cfg_obj_asstring(secretobj);
|
||||
algorithm = cfg_obj_asstring(algorithmobj);
|
||||
|
||||
if (strcasecmp(algorithm, "hmac-md5") != 0)
|
||||
fatal("unsupported algorithm: %s", algorithm);
|
||||
|
||||
secret.rstart = (unsigned char *)secretarray;
|
||||
secret.rend = (unsigned char *)secretarray + sizeof(secretarray);
|
||||
DO("decode base64 secret", isccc_base64_decode(secretstr, &secret));
|
||||
secret.rend = secret.rstart;
|
||||
secret.rstart = (unsigned char *)secretarray;
|
||||
|
||||
/*
|
||||
* Find the port to connect to.
|
||||
*/
|
||||
if (portset)
|
||||
; /* Was set on command line, do nothing. */
|
||||
else {
|
||||
if (server != NULL)
|
||||
(void)cfg_map_get(server, "port", &defport);
|
||||
if (defport == NULL && options != NULL)
|
||||
cfg_map_get(options, "default-port", &defport);
|
||||
}
|
||||
if (defport != NULL) {
|
||||
remoteport = cfg_obj_asuint32(defport);
|
||||
if (remoteport > 65535)
|
||||
fatal("port %d out of range", remoteport);
|
||||
} else if (!portset)
|
||||
remoteport = NS_CONTROL_PORT;
|
||||
parse_config(mctx, log, keyname, &pctx, &config);
|
||||
|
||||
isccc_result_register();
|
||||
|
||||
@@ -565,7 +585,7 @@ main(int argc, char **argv) {
|
||||
*p++ = '\0';
|
||||
INSIST(p == args + argslen);
|
||||
|
||||
notify(command);
|
||||
notify("%s", command);
|
||||
|
||||
if (strcmp(command, "restart") == 0)
|
||||
fatal("'%s' is not implemented", command);
|
||||
@@ -575,7 +595,7 @@ main(int argc, char **argv) {
|
||||
isc_app_run();
|
||||
|
||||
if (connects > 0 || sends > 0 || recvs > 0)
|
||||
isc_socket_cancel(ccmsg.sock, task, ISC_SOCKCANCEL_ALL);
|
||||
isc_socket_cancel(sock, task, ISC_SOCKCANCEL_ALL);
|
||||
|
||||
isc_task_detach(&task);
|
||||
isc_taskmgr_destroy(&taskmgr);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user