From 0da30d61e624fa6fbd4d6b2057244e0c9e0c213b Mon Sep 17 00:00:00 2001
From: Doug Barton
Date: Fri, 9 Jan 2009 09:58:33 +0000
Subject: Vendor import of BIND 9.3.6-P1
---
CHANGES | 464 ++-
FAQ | 105 +-
FAQ.xml | 154 +-
README | 34 +-
bin/dig/dig.1 | 18 +-
bin/dig/dig.c | 67 +-
bin/dig/dig.docbook | 22 +-
bin/dig/dig.html | 34 +-
bin/dig/dighost.c | 2 +-
bin/dig/host.1 | 8 +-
bin/dig/host.docbook | 7 +-
bin/dig/host.html | 12 +-
bin/dnssec/dnssec-keygen.8 | 10 +-
bin/dnssec/dnssec-keygen.docbook | 9 +-
bin/dnssec/dnssec-keygen.html | 20 +-
bin/dnssec/dnssec-signzone.8 | 8 +-
bin/dnssec/dnssec-signzone.c | 21 +-
bin/dnssec/dnssec-signzone.docbook | 7 +-
bin/dnssec/dnssec-signzone.html | 16 +-
bin/named/client.c | 2 +-
bin/named/config.c | 2 +-
bin/named/controlconf.c | 2 +-
bin/named/include/named/globals.h | 7 +-
bin/named/interfacemgr.c | 2 +-
bin/named/lwresd.8 | 14 +-
bin/named/lwresd.c | 2 +-
bin/named/lwresd.docbook | 9 +-
bin/named/lwresd.html | 18 +-
bin/named/main.c | 61 +-
bin/named/named.8 | 23 +-
bin/named/named.conf.5 | 7 +-
bin/named/named.conf.docbook | 2 +-
bin/named/named.conf.html | 33 +-
bin/named/named.docbook | 33 +-
bin/named/named.html | 45 +-
bin/named/query.c | 30 +-
bin/named/server.c | 219 +-
bin/named/unix/include/named/os.h | 8 +-
bin/named/unix/os.c | 44 +-
bin/named/update.c | 31 +-
bin/nsupdate/Makefile.in | 10 +-
bin/nsupdate/nsupdate.1 | 348 +++
bin/nsupdate/nsupdate.8 | 348 ---
bin/nsupdate/nsupdate.docbook | 7 +-
bin/nsupdate/nsupdate.html | 16 +-
bin/rndc/rndc-confgen.c | 12 +-
bin/rndc/rndc.c | 20 +-
configure.in | 118 +-
doc/arm/Bv9ARM-book.xml | 254 +-
doc/arm/Bv9ARM.ch02.html | 8 +-
doc/arm/Bv9ARM.ch04.html | 10 +-
doc/arm/Bv9ARM.ch06.html | 346 ++-
doc/arm/Bv9ARM.ch07.html | 14 +-
doc/arm/Bv9ARM.ch08.html | 18 +-
doc/arm/Bv9ARM.ch09.html | 94 +-
doc/arm/Bv9ARM.html | 72 +-
doc/arm/Bv9ARM.pdf | 5853 ++++++++++++++++++------------------
doc/misc/options | 38 +-
doc/rfc/index | 13 +-
doc/rfc/rfc4648.txt | 1011 +++++++
doc/rfc/rfc4701.txt | 675 +++++
doc/rfc/rfc5155.txt | 2915 ++++++++++++++++++
lib/bind/api | 6 +-
lib/bind/bsd/Makefile.in | 8 +-
lib/bind/bsd/strerror.c | 6 +-
lib/bind/bsd/strtoul.c | 10 +-
lib/bind/configure.in | 63 +-
lib/bind/dst/Makefile.in | 8 +-
lib/bind/dst/dst_api.c | 2 +-
lib/bind/dst/hmac_link.c | 2 +-
lib/bind/dst/support.c | 2 +-
lib/bind/include/arpa/nameser.h | 5 +-
lib/bind/include/isc/assertions.h | 7 +-
lib/bind/include/isc/misc.h | 3 +-
lib/bind/include/resolv.h | 6 +-
lib/bind/inet/Makefile.in | 8 +-
lib/bind/inet/inet_net_pton.c | 6 +-
lib/bind/irs/Makefile.in | 8 +-
lib/bind/irs/dns_ho.c | 11 +-
lib/bind/irs/irp.c | 10 +-
lib/bind/isc/Makefile.in | 8 +-
lib/bind/isc/assertions.c | 3 +-
lib/bind/isc/bitncmp.c | 4 +-
lib/bind/isc/ctl_clnt.c | 5 +-
lib/bind/isc/ctl_srvr.c | 5 +-
lib/bind/nameser/Makefile.in | 8 +-
lib/bind/port_after.h.in | 81 +-
lib/bind/resolv/Makefile.in | 8 +-
lib/bind/resolv/res_debug.c | 55 +-
lib/bind/resolv/res_mkquery.c | 69 +-
lib/bind/resolv/res_query.c | 14 +-
lib/bind9/api | 2 +-
lib/bind9/check.c | 111 +-
lib/dns/adb.c | 58 +-
lib/dns/api | 4 +-
lib/dns/cache.c | 27 +-
lib/dns/dispatch.c | 1314 ++++++--
lib/dns/include/dns/dispatch.h | 54 +-
lib/dns/journal.c | 28 +-
lib/dns/masterdump.c | 27 +-
lib/dns/message.c | 2 +-
lib/dns/openssldsa_link.c | 4 +-
lib/dns/opensslrsa_link.c | 4 +-
lib/dns/rbt.c | 17 +-
lib/dns/rdata/generic/nsec_47.c | 10 +-
lib/dns/rdata/generic/nsec_47.h | 9 +-
lib/dns/rdata/generic/txt_16.c | 6 +-
lib/dns/rdata/in_1/naptr_35.c | 14 +-
lib/dns/request.c | 84 +-
lib/dns/resolver.c | 253 +-
lib/dns/validator.c | 8 +-
lib/dns/view.c | 21 +-
lib/dns/xfrin.c | 6 +-
lib/isc/Makefile.in | 10 +-
lib/isc/api | 4 +-
lib/isc/assertions.c | 8 +-
lib/isc/include/isc/assertions.h | 11 +-
lib/isc/include/isc/mem.h | 76 +-
lib/isc/include/isc/msgs.h | 10 +-
lib/isc/include/isc/platform.h.in | 19 +-
lib/isc/include/isc/portset.h | 141 +
lib/isc/include/isc/resource.h | 15 +-
lib/isc/include/isc/socket.h | 75 +-
lib/isc/include/isc/timer.h | 2 +-
lib/isc/include/isc/types.h | 7 +-
lib/isc/mem.c | 25 +-
lib/isc/portset.c | 143 +
lib/isc/print.c | 95 +-
lib/isc/pthreads/mutex.c | 74 +-
lib/isc/timer.c | 2 +-
lib/isc/unix/app.c | 19 +-
lib/isc/unix/include/isc/net.h | 25 +-
lib/isc/unix/net.c | 161 +-
lib/isc/unix/resource.c | 8 +-
lib/isc/unix/socket.c | 1682 +++++++++--
lib/isc/unix/socket_p.h | 15 +-
lib/isc/unix/time.c | 10 +-
lib/isccfg/api | 2 +-
lib/isccfg/namedconf.c | 96 +-
version | 6 +-
140 files changed, 13924 insertions(+), 5123 deletions(-)
create mode 100644 bin/nsupdate/nsupdate.1
delete mode 100644 bin/nsupdate/nsupdate.8
create mode 100644 doc/rfc/rfc4648.txt
create mode 100644 doc/rfc/rfc4701.txt
create mode 100644 doc/rfc/rfc5155.txt
create mode 100644 lib/isc/include/isc/portset.h
create mode 100644 lib/isc/portset.c
diff --git a/CHANGES b/CHANGES
index df9ebf1c5eede..c390df909ad2e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,14 +1,154 @@
- --- 9.3.5-P2 released ---
-
-2406. [bug] Some operating systems have FD_SETSIZE set to a
- low value by default, which can cause resource
- exhaustion when many simultaneous connections are
- open. Linux in particular makes it difficult to
- increase this value. To use more sockets with
- select(), set ISC_SOCKET_FDSETSIZE. Example:
- STD_CDEFINES="-DISC_SOCKET_FDSETSIZE=4096" ./configure
- (This should not be necessary in most cases, and
- never for an authoritative-only server.) [RT #18328]
+ --- 9.3.6-P1 released ---
+
+2522. [security] Handle -1 from DSA_do_verify().
+
+2498. [bug] Removed a bogus function argument used with
+ ISC_SOCKET_USE_POLLWATCH: it could cause compiler
+ warning or crash named with the debug 1 level
+ of logging. [RT #18917]
+
+ --- 9.3.6 released ---
+
+2490. [port] aix: work around a kernel bug where IPV6_RECVPKTINFO
+ is cleared when IPV6_V6ONLY is set. [RT #18785]
+
+2489. [port] solaris: Workaround Solaris's kernel bug about
+ /dev/poll:
+ http://bugs.opensolaris.org/view_bug.do?bug_id=6724237
+ Define ISC_SOCKET_USE_POLLWATCH at build time to enable
+ this workaround. [RT #18870]
+
+ --- 9.3.6rc1 released ---
+
+2473. [port] linux: raise the limit on open files to the possible
+ maximum value before spawning threads; 'files'
+ specified in named.conf doesn't seem to work with
+ threads as expected. [RT #18784]
+
+2472. [port] linux: check the number of available cpu's before
+ calling chroot as it depends on "/proc". [RT #16923]
+
+2469. [port] solaris: Work around Solaris's select() limitations.
+ [RT #18769]
+
+2468. [bug] Resolver could try unreachable servers multiple times.
+ [RT #18739]
+
+2467. [bug] Failure of fcntl(F_DUPFD) wasn't logged. [RT #18740]
+
+2465. [bug] Adb's handling of lame addresses was different
+ for IPv4 and IPv6. [RT #18738]
+
+2463. [port] linux: POSIX doesn't include the IPv6 Advanced Socket
+ API and glibc hides parts of the IPv6 Advanced Socket
+ API as a result. This is stupid as it breaks how the
+ two halves (Basic and Advanced) of the IPv6 Socket API were designed to be used but we have to live with it.
+ Define _GNU_SOURCE to pull in the IPv6 Advanced Socket
+ API. [RT #18388]
+
+2462. [doc] Document -m (enable memory usage debugging)
+ option for dig. [RT #18757]
+
+2461. [port] sunos: Change #2363 was not complete. [RT #17513]
+
+2458. [doc] ARM: update and correction for max-cache-size.
+ [RT #18294]
+
+2455. [bug] Stop metadata being transfered via axfr/ixfr.
+ [RT #18639]
+
+2453. [bug] Remove NULL pointer dereference in dns_journal_print().
+ [RT #18316]
+
+2449. [bug] libbind: Out of bounds reference in dns_ho.c:addrsort.
+ [RT #18044]
+
+2444. [port] Linux, FreeBSD, AIX: Turn off path mtu discovery
+ (clear DF) for UDP responses and requests.
+
+ --- 9.3.6b1 released ---
+
+2443. [bug] win32: UDP connect() would not generate an event,
+ and so connected UDP sockets would never clean up.
+ Fix this by doing an immediate WSAConnect() rather
+ than an io completion port type for UDP.
+
+2438. [bug] Timeouts could be logged incorrectly under win32.
+ [RT #18617]
+
+2437. [bug] Sockets could be closed too early, leading to
+ inconsistent states in the socket module. [RT #18298]
+
+2436. [security] win32: UDP client handler can be shutdown. [RT #18576]
+
+2432. [bug] More Windows socket handling improvements. Stop
+ using I/O events and use IO Completion Ports
+ throughout. Rewrite the receive path logic to make
+ it easier to support multiple simultaneous
+ requestrs in the future. Add stricter consistency
+ checking as a compile-time option (define
+ ISC_SOCKET_CONSISTENCY_CHECKS; defaults to off).
+
+2430. [bug] win32: isc_interval_set() could round down to
+ zero if the input was less than NS_INTERVAL
+ nanoseconds. Round up instead. [RT #18549]
+
+2429. [doc] nsupdate should be in section 1 of the man pages.
+ [RT #18283]
+
+2426. [bug] libbind: inet_net_pton() can sometimes return the
+ wrong value if excessively large netmasks are
+ supplied. [RT #18512]
+
+2425. [bug] named didn't detect unavailable query source addresses
+ at load time. [RT #18536]
+
+2424. [port] configure now probes for a working epoll
+ implementation. Allow the use of kqueue,
+ epoll and /dev/poll to be selected at compile
+ time. [RT #18277]
+
+2422. [bug] Handle the special return value of a empty node as
+ if it was a NXRRSET in the validator. [RT #18447]
+
+2421. [func] Add new command line option '-S' for named to specify
+ the max number of sockets. [RT #18493]
+ Use caution: this option may not work for some
+ operating systems without rebuilding named.
+
+2420. [bug] Windows socket handling cleanup. Let the io
+ completion event send out cancelled read/write
+ done events, which keeps us from writing to memeory
+ we no longer have ownership of. Add debugging
+ socket_log() function. Rework TCP socket handling
+ to not leak sockets.
+
+2417. [bug] Connecting UDP sockets for outgoing queries could
+ unexpectedly fail with an 'address already in use'
+ error. [RT #18411]
+
+2416. [func] Log file descriptors that cause exceeding the
+ internal maximum. [RT #18460]
+
+2414. [bug] A masterdump context held the database lock too long,
+ causing various troubles such as dead lock and
+ recursive lock acquisition. [RT #18311, #18456]
+
+2413. [bug] Fixed an unreachable code path in socket.c. [RT #18442]
+
+2412. [bug] win32: address a resourse leak. [RT #18374]
+
+2411. [bug] Allow using a larger number of sockets than FD_SETSIZE
+ for select(). To enable this, set ISC_SOCKET_MAXSOCKETS
+ at compilation time. [RT #18433]
+
+2410. [bug] Correctly delete m_versionInfo. [RT #18432]
+
+2408. [bug] A duplicate TCP dispatch event could be sent, which
+ could then trigger an assertion failure in
+ resquery_response(). [RT #18275]
+
+2407. [port] hpux: test for sys/dyntune.h. [RT #18421]
2404. [port] hpux: files unlimited support.
@@ -22,7 +162,7 @@
2399. [bug] Abort timeout queries to reduce the number of open
UDP sockets. [RT #18367]
-2398. [bug] Improve file descriptor management. New,
+2398. [bug] Improve file descriptor management. New,
temporary, named.conf option reserved-sockets,
default 512. [RT #18344]
@@ -39,11 +179,111 @@
2392. [bug] remove 'grep -q' from acl test script, some platforms
don't support it. [RT #18253]
- --- 9.3.5-P1 released ---
+2391 [port] hpux: cover additional recvmsg() error codes.
+ [RT #18301]
+
+2390 [bug] dispatch.c could make a false warning on 'odd socket'.
+ [RT #18301].
+
+2389 [bug] Move the "working directory writable" check to after
+ the ns_os_changeuser() call. [RT #18326]
+
+2386. [func] Add warning about too small 'open files' limit.
+ [RT #18269]
+
+2385. [bug] A condition variable in socket.c could leak in
+ rare error handling [RT #17968].
+
+2384. [security] Additional support for query port randomization (change
+ #2375) including performance improvement and port range
+ specification. [RT #17949, #18098]
+
+2383. [bug] named could double queries when they resulted in
+ SERVFAIL due to overkilling EDNS0 failure detection.
+ [RT #18182]
+
+2382. [doc] Add a description SSHFP to ARM.
+
+2380. [bug] dns_view_find() was not returning NXDOMAIN/NXRRSET
+ proofs which, in turn, caused validation failures
+ for insecure zones immediately below a secure zone
+ the server was authoritative for. [RT #18112]
-2375. [security] Fully randomize UDP query ports to improve
+2379. [contrib] queryperf/gen-data-queryperf.py: removed redundant
+ TLDs and supported RRs with TTLs [RT #17972]
+
+2377. [bug] Address race condition in dnssec-signzone. [RT #18142]
+
+2376. [bug] Change #2144 was not complete.
+
+2375. [security] Fully randomize UDP query ports to improve
forgery resilience. [RT #17949]
+2369. [bug] libbind: Array bounds overrun on read in bitncmp().
+ [RT #18054]
+
+2364. [bug] named could trigger an assertion when serving a
+ malformed signed zone. [RT #17828]
+
+2363. [port] sunos: pre-set "lt_cv_sys_max_cmd_len=4096;".
+ [RT #17513]
+
+2361. [bug] "recursion" statistics counter could be counted
+ multiple times for a single query. [RT #17990]
+
+2358. [doc] Update host's default query description. [RT #17934]
+
+2356. [bug] Built in mutex profiler was not scalable enough.
+ [RT #17436]
+
+2353. [func] libbind: nsid support. [RT #17091]
+
+2350. [port] win32: IPv6 support. [RT #17797]
+
+2347. [bug] Delete now traverses the RB tree in the canonical
+ order. [RT #17451]
+
+2345. [bug] named-checkconf failed to detect when forwarders
+ were set at both the options/view level and in
+ a root zone. [RT #17671]
+
+2344. [bug] Improve "logging{ file ...; };" documentation.
+ [RT #17888]
+
+2343. [bug] (Seemingly) duplicate IPv6 entries could be
+ created in ADB. [RT #17837]
+
+2341. [bug] libbind: add missing -I../include for off source
+ tree builds. [RT #17606]
+
+2340. [port] openbsd: interface configuration. [RT #17700]
+
+2335. [port] sunos: libbind and *printf() support for long long.
+ [RT #17513]
+
+2334. [bug] Bad REQUIRES in fromstruct_in_naptr(), off by one
+ bug in fromstruct_txt(). [RT #17609]
+
+2333. [bug] Fix off by one error in isc_time_nowplusinterval().
+ [RT #17608]
+
+2332. [contrib] query-loc-0.4.0. [RT #17602]
+
+2331. [bug] Failure to regenerate any signatures was not being
+ reported nor being past back to the UPDATE client.
+ [RT #17570]
+
+2330. [bug] Remove potential race condition when handling
+ over memory events. [RT #17572]
+
+ WARNING: API CHANGE: over memory callback
+ function now needs to call isc_mem_waterack().
+ See for details.
+
+2329. [bug] Clearer help text for dig's '-x' and '-i' options.
+
+2325. [port] Linux: use capset() function if available. [RT #17557]
+
--- 9.3.5 released ---
--- 9.3.5rc2 released ---
@@ -65,11 +305,11 @@
2322. [port] MacOS: work around the limitation of setrlimit()
for RLIMIT_NOFILE. [RT #17526]
-2321. [bug] Silence Coverity warnings in lib/dns/master.c,
+2321. [bug] Silence Coverity warnings in lib/dns/master.c,
lib/dns/rbtdb.c, lib/isccfg/namedconf.c,
lib/dns/tsig.c and bin/dnssec/dnssec-signzone.c.
-2319. [bug] Silence Coverity warnings in
+2319. [bug] Silence Coverity warnings in
lib/dns/rdata/in_1/apl_42.c. [RT #17469]
2318. [port] sunos fixes for libbind. [RT #17514]
@@ -83,7 +323,7 @@
2312. [cleanup] Silence Coverity warning in lib/isc/unix/socket.c.
[RT #17458]
-2311. [func] Update ACL regression test. [RT #17462]
+2311. [func] Update ACL regression test. [RT #17462]
2310. [bug] dig, host, nslookup: flush stdout before emitting
debug/fatal messages. [RT #17501]
@@ -106,7 +346,7 @@
2301. [bug] Remove resource leak and fix error messages in
bin/tests/system/lwresd/lwtest.c. [RT #17474]
-2300. [bug] Fixed failure to close open file in
+2300. [bug] Fixed failure to close open file in
bin/tests/names/t_names.c. [RT #17473]
2299. [bug] Remove unnecessary NULL check in
@@ -129,7 +369,7 @@
2292. [bug] Log if the working directory is not writable.
[RT #17312]
-2291. [bug] PR_SET_DUMPABLE may be set too late. Also report
+2291. [bug] PR_SET_DUMPABLE may be set too late. Also report
failure to set PR_SET_DUMPABLE. [RT #17312]
2290. [bug] Let AD in the query signal that the client wants AD
@@ -148,7 +388,7 @@
memory context rather than the clients memory
context. [RT #17377]
-2279. [bug] Use setsockopt(SO_NOSIGPIPE), when available,
+2279. [bug] Use setsockopt(SO_NOSIGPIPE), when available,
to protect applications from receiving spurious
SIGPIPE signals when using the resolver.
@@ -157,7 +397,7 @@
--- 9.3.5b1 released ---
-2273. [bug] Adjust log level to WARNING when saving inconsistant
+2273. [bug] Adjust log level to WARNING when saving inconsistent
stub/slave master and journal files. [RT# 17279]
2272. [bug] Handle illegal dnssec-lookaside trust-anchor names.
@@ -194,10 +434,10 @@
reality. Note there is behaviour change for BIND 9.5.
[RT #17113]
-2249. [bug] Only set Authentic Data bit if client requested
+2249. [bug] Only set Authentic Data bit if client requested
DNSSEC, per RFC 3655 [RT #17175]
-2248. [cleanup] Fix several errors reported by Coverity. [RT #17160]
+2248. [cleanup] Fix several errors reported by Coverity. [RT #17160]
2247. [doc] Sort doc/misc/options. [RT #17067]
@@ -208,18 +448,18 @@
working. [RT #17151]
2238. [bug] It was possible to trigger a REQUIRE when a
- validation was cancelled. [RT #17106]
+ validation was canceled. [RT #17106]
2237. [bug] libbind: res_init() was not thread aware. [RT #17123]
2236. [bug] dnssec-signzone failed to preserve the case of
of wildcard owner names. [RT #17085]
-2234. [port] Correct some compiler warnings on SCO OSr5 [RT #17134]
-
+2234. [port] Correct some compiler warnings on SCO OSr5 [RT #17134]
+
2229. [bug] Null pointer dereference on query pool creation
- failure. [RT #17133]
-
+ failure. [RT #17133]
+
2232. [bug] dns_adb_findaddrinfo() could fail and return
ISC_R_SUCCESS. [RT #17137]
@@ -230,10 +470,10 @@
2227. [cleanup] Tidied up the FAQ. [RT #17121]
-2226. [bug] Fix build error. [RT #17124]
+2226. [bug] Fix build error. [RT #17124]
2225. [bug] More support for systems with no IPv4 addresses.
- [RT #17111]
+ [RT #17111]
2224. [bug] Defer journal compaction if a xfrin is in progress.
[RT #17119]
@@ -247,12 +487,12 @@
2220. [bug] win32: Address a race condition in final shutdown of
the Windows socket code. [RT #17028]
-
+
2218. [bug] Remove unnecessary REQUIRE from dns_validator_create().
[RT #16976]
2216. [cleanup] Fix a number of errors reported by Coverity.
- [RT #17094]
+ [RT #17094]
2214. [bug] Deregister OpenSSL lock callback when cleaning
up. [RT #17098]
@@ -297,7 +537,7 @@
2187. [bug] query_addds(), query_addwildcardproof() and
query_addnxrrsetnsec() should take a version
- arguement. [RT #16368]
+ argument. [RT #16368]
2186. [port] cygwin: libbind: check for struct sockaddr_storage
independently of IPv6. [RT #16482]
@@ -324,7 +564,7 @@
debug level 10+. [RT #16798]
2176. [contrib] dbus update to handle race condition during
- initialisation (Bugzilla 235809). [RT #16842]
+ initialization (Bugzilla 235809). [RT #16842]
2175. [bug] win32: windows broadcast condition variable support
was broken. [RT #16592]
@@ -444,7 +684,7 @@
2111. [bug] Fix a number of errors reported by Coverity.
[RT #16507]
-2110. [bug] "minimal-response yes;" interacted badly with BIND 8
+2110. [bug] "minimal-responses yes;" interacted badly with BIND 8
priming queries. [RT #16491]
2109. [port] libbind: silence aix 5.3 compiler warnings. [RT #16502]
@@ -453,7 +693,7 @@
2203. [security] Query id generation was cryptographically weak.
[RT # 16915]
-
+
2193. [port] win32: BINDInstall.exe is now linked statically.
[RT #16906]
@@ -463,7 +703,7 @@
--- 9.3.4 released ---
-2126. [security] Serialise validation of type ANY responses. [RT #16555]
+2126. [security] Serialize validation of type ANY responses. [RT #16555]
2124. [security] It was possible to dereference a freed fetch
context. [RT #16584]
@@ -477,14 +717,14 @@
2103. [port] Add /usr/sfw to list of locations for OpenSSL
under Solaris.
-2102. [port] Silence solaris 10 warnings.
+2102. [port] Silence Solaris 10 warnings.
2101. [bug] OpenSSL version checks were not quite right.
[RT #16476]
2100. [port] win32: copy libeay32.dll to Build\Debug.
-2099. [port] win32: more manifiest issues.
+2099. [port] win32: more manifest issues.
--- 9.3.3rc3 released ---
@@ -493,12 +733,12 @@
2095. [port] libbind: alway prototype inet_cidr_ntop_ipv6() and
net_cidr_ntop_ipv6(). [RT #16388]
-
+
2094. [contrib] Update named-bootconf. [RT# 16404]
2092. [bug] win32: dig, host, nslookup. Use registry config
if resolv.conf does not exist or no nameservers
- listed. [RT #15877]
+ listed. [RT #15877]
2091. [port] dighost.c: race condition on cleanup. [RT #16417]
@@ -588,7 +828,7 @@
[RT #16287]
2049. [bug] Restore SOA before AXFR when falling back from
- a attempted IXFR when transfering in a zone.
+ a attempted IXFR when transferring in a zone.
Allow a initial SOA query before attempting
a AXFR to be requested. [RT #16156]
@@ -597,7 +837,7 @@
the OS always returned the same local port.
[RT #16182]
-2047. [bug] Failed to initialise the interface flags to zero.
+2047. [bug] Failed to initialize the interface flags to zero.
[RT #16245]
2043. [port] nsupdate/nslookup: Force the flushing of the prompt
@@ -626,7 +866,7 @@
2029. [bug] host printed out the server multiple times when
specified on the command line. [RT #15992]
-2028. [port] linux: socket.c compatability for old systems.
+2028. [port] linux: socket.c compatibility for old systems.
[RT #16015]
2027. [port] libbind: Solaris x86 support. [RT #16020]
@@ -634,7 +874,7 @@
2026. [bug] Rate limit the two recursive client exceeded messages.
[RT #16044]
-2024. [bug] named emited spurious "zone serial unchanged"
+2024. [bug] named emitted spurious "zone serial unchanged"
messages on reload. [RT #16027]
2023. [bug] "make install" should create ${localstatedir}/run and
@@ -647,7 +887,7 @@
2013. [bug] Handle unexpected TSIGs on unsigned AXFR/IXFR
responses more gracefully. [RT #15941]
-2009. [bug] libbind: coverity fixes. [RT #15808]
+2009. [bug] libbind: Coverity fixes. [RT #15808]
2005. [bug] libbind: Retransmission timeouts should be
based on which attempt it is to the nameserver
@@ -679,16 +919,16 @@
1994. [port] OpenSSL 0.9.8 support. [RT #15694]
-1993. [bug] Log messsage, via syslog, were missing the space
+1993. [bug] Log messages, via syslog, were missing the space
after the timestamp if "print-time yes" was specified.
[RT #15844]
1991. [cleanup] The configuration data, once read, should be treated
- as readonly. Expand the use of const to enforce this
+ as read only. Expand the use of const to enforce this
at compile time. [RT #15813]
1990. [bug] libbind: isc's override of broken gettimeofday()
- implementions was not always effective.
+ implementations was not always effective.
[RT #15709]
1989. [bug] win32: don't check the service password when
@@ -703,7 +943,7 @@
server for the zone. Also any zones that contain
DLV records should be removed when upgrading a slave
zone. You do not however have to upgrade all
- servers for a zone with DLV records simultaniously.
+ servers for a zone with DLV records simultaneously.
1982. [bug] DNSKEY was being accepted on the parent side of
a delegation. KEY is still accepted there for
@@ -728,7 +968,7 @@
1974. [doc] List each of the zone types and associated zone
options separately in the ARM.
-1972. [contrib] DBUS dynamic forwarders integation from
+1972. [contrib] DBUS dynamic forwarders integration from
Jason Vas Dias .
1971. [port] linux: make detection of missing IF_NAMESIZE more
@@ -745,7 +985,7 @@
1966. [bug] Don't set CD when we have fallen back to plain DNS.
[RT #15727]
-1963. [port] Tru64 4.0E doesn't support send() and recv().
+1963. [port] Tru64 4.0E doesn't support send() and recv().
[RT #15586]
1962. [bug] Named failed to clear old update-policy when it
@@ -767,7 +1007,7 @@
by native compiler. See README for additional
cross compile support information. [RT #15148]
-1955. [bug] Pre-allocate the cache cleaning interator. [RT #14998]
+1955. [bug] Pre-allocate the cache cleaning iterator. [RT #14998]
1952. [port] hpux: tell the linker to build a runtime link
path "-Wl,+b:". [RT #14816].
@@ -775,7 +1015,7 @@
1951. [security] Drop queries from particular well known ports.
Don't return FORMERR to queries from particular
well known ports. [RT #15636]
-
+
1950. [port] Solaris 2.5.1 and earlier cannot bind() then connect()
a TCP socket. This prevents the source address being
set for TCP connections. [RT #15628]
@@ -803,7 +1043,7 @@
1940. [bug] Fixed a number of error conditions reported by
Coverity.
-1939. [bug] The resolver could dereference a null pointer after
+1939. [bug] The resolver could dereference a null pointer after
validation if all the queries have timed out.
[RT #15528]
@@ -848,7 +1088,7 @@
1914. [protocol] DS is required to accept mnemonic algorithms
(RFC 4034). Still emit numeric algorithms for
- compatability with RFC 3658. [RT #15354]
+ compatibility with RFC 3658. [RT #15354]
1911. [bug] Update windows socket code. [RT #14965]
@@ -892,7 +1132,7 @@
1881. [func] Add a system test for named-checkconf. [RT #14931]
1877. [bug] Fix unreasonably low quantum on call to
- dns_rbt_destroy2(). Remove unnecessay unhash_node()
+ dns_rbt_destroy2(). Remove unnecessary unhash_node()
call. [RT #14919]
1875. [bug] process_dhtkey() was using the wrong memory context
@@ -951,24 +1191,24 @@
1850. [bug] Memory leak in lwres_getipnodebyaddr(). [RT #14591]
1849. [doc] All forms of the man pages (docbook, man, html) should
- have consistant copyright dates.
+ have consistent copyright dates.
1848. [bug] Improve SMF integration. [RT #13238]
1847. [bug] isc_ondestroy_init() is called too late in
- dns_rbtdb_create()/dns_rbtdb64_create().
+ dns_rbtdb_create()/dns_rbtdb64_create().
[RT #13661]
-
+
1846. [contrib] query-loc-0.3.0 from Stephane Bortzmeyer
.
-1845. [bug] Improve error reporting to distingish between
+1845. [bug] Improve error reporting to distinguish between
accept()/fcntl() and socket()/fcntl() errors.
[RT #13745]
1844. [bug] inet_pton() accepted more that 4 hexadecimal digits
for each 16 bit piece of the IPv6 address. The text
- representation of a IPv6 address has been tighted
+ representation of a IPv6 address has been tightened
to disallow this (draft-ietf-ipv6-addr-arch-v4-02.txt).
[RT #5662]
@@ -1026,7 +1266,7 @@
1822. [bug] check-names test for RT was reversed. [RT #13382]
-1821. [doc] acls definitions are no longer required to be
+1821. [doc] acls definitions are no longer required to be
in named.conf prior to reference. They can be
defined after being referenced.
@@ -1052,7 +1292,7 @@
1807. [bug] When forwarding (forward only) set the active domain
from the forward zone name. [RT #13526]
-
+
1804. [bug] Ensure that if we are queried for glue that it fits
in the additional section or TC is set to tell the
client to retry using TCP. [RT #10114]
@@ -1165,7 +1405,7 @@
1765. [bug] configure --with-openssl=auto failed. [RT #12937]
1764. [bug] dns_zone_replacedb failed to emit a error message
- if there was no SOA record in the replacment db.
+ if there was no SOA record in the replacement db.
[RT #13016]
1762. [bug] isc_interfaceiter_create() could return ISC_R_SUCCESS
@@ -1180,7 +1420,7 @@
1759. [bug] Named failed to startup if the OS supported IPv6
but had no IPv6 interfaces configured. [RT #12942]
-1754. [bug] We wern't always attempting to query the parent
+1754. [bug] We weren't always attempting to query the parent
server for the DS records at the zone cut.
[RT #12774]
@@ -1199,7 +1439,7 @@
1749. [bug] 'check-names response ignore;' failed to ignore.
[RT #12866]
-1747. [bug] BIND 8 compatability: named/named-checkconf failed
+1747. [bug] BIND 8 compatibility: named/named-checkconf failed
to parse "host-statistics-max" in named.conf.
1745. [bug] Dig/host/nslookup accept replies from link locals
@@ -1213,7 +1453,7 @@
requested number of worker threads then destruction
of the manager would trigger an INSIST() failure.
[RT #12790]
-
+
1742. [bug] Deleting all records at a node then adding a
previously existing record, in a single UPDATE
transaction, failed to leave / regenerate the
@@ -1224,7 +1464,7 @@
1740. [bug] Replace rbt's hash algorithm as it performed badly
with certain zones. [RT #12729]
-
+
NOTE: a hash context now needs to be established
via isc_hash_create() if the application was not
already doing this.
@@ -1239,7 +1479,7 @@
1736. [bug] dst_key_fromnamedfile() could fail to read a
public key. [RT #12687]
-
+
1735. [bug] 'dig +sigtrace' could die with a REQUIRE failure.
[RE #12688]
@@ -1277,7 +1517,7 @@
[RT #12519]
1721. [bug] Error message from the journal processing were not
- always identifing the relevent journal. [RT #12519]
+ always identifying the relevant journal. [RT #12519]
1720. [bug] 'dig +chase' did not terminate on a RFC 2308 Type 1
negative response. [RT #12506]
@@ -1330,7 +1570,7 @@
1703. [bug] named would loop sending NOTIFY messages when it
failed to receive a response. [RT #12322]
-1702. [bug] also-notify should not be applied to builtin zones.
+1702. [bug] also-notify should not be applied to built in zones.
[RT #12323]
1701. [doc] A minimal named.conf man page.
@@ -1402,7 +1642,7 @@
1675. [bug] named would sometimes add extra NSEC records to
the authority section.
-
+
1674. [port] linux: increase buffer size used to scan
/proc/net/if_inet6.
@@ -1473,7 +1713,7 @@
1648. [func] Update dnssec-lookaside named.conf syntax to support
multiple dnssec-lookaside namespaces (not yet
- implemented).
+ implemented).
1647. [bug] It was possible trigger a INSIST when chasing a DS
record that required walking back over a empty node.
@@ -1486,7 +1726,7 @@
masters with keys are specified.
1644. [bug] Update the journal modification time after a
- sucessfull refresh query. [RT #11436]
+ successful refresh query. [RT #11436]
1643. [bug] dns_db_closeversion() could leak memory / node
references. [RT #11163]
@@ -1505,11 +1745,11 @@
1638. [bug] "ixfr-from-differences" could generate a REQUIRE
failure if the journal open failed. [RT #11347]
-
+
1637. [bug] Node reference leak on error in addnoqname().
1636. [bug] The dump done callback could get ISC_R_SUCCESS even if
- a error had occured. The database version no longer
+ a error had occurred. The database version no longer
matched the version of the database that was dumped.
1635. [bug] Memory leak on error in query_addds().
@@ -1542,7 +1782,7 @@
1625. [bug] named failed to load/transfer RFC2535 signed zones
which contained CNAMES. [RT# 11237]
-1606. [bug] DLV insecurity proof was failing.
+1606. [bug] DLV insecurity proof was failing.
1605. [func] New dns_db_find() option DNS_DBFIND_COVERINGNSEC.
@@ -1618,14 +1858,14 @@
1604. [bug] A xfrout_ctx_create() failure would result in
xfrout_ctx_destroy() being called with a
partially initialized structure.
-
+
1603. [bug] nsupdate: set interactive based on isatty().
[RT# 10929]
1602. [bug] Logging to a file failed unless a size was specified.
[RT# 10925]
-1601. [bug] Silence spurious warning 'both "recursion no;" and
+1601. [bug] Silence spurious warning 'both "recursion no;" and
"allow-recursion" active' warning from view "_bind".
[RT# 10920]
@@ -1860,7 +2100,7 @@
type, class and responding nameserver.
1511. [bug] delegation-only was generating false positives
- on negative answers from subzones.
+ on negative answers from sub-zones.
1510. [func] New view option "root-delegation-only". Apply
delegation-only check to all TLDs and root.
@@ -3568,7 +3808,7 @@
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]
+ transfers are inherently non-recursive. [RT #1575]
953. [func] The /var/run/named.key file from change #843
has been replaced by /etc/rndc.key. Both
@@ -3841,7 +4081,7 @@
860. [func] Drop cross class glue in zone transfers.
859. [bug] Cache cleaning now won't swamp the CPU if there
- is a persistent overlimit condition.
+ is a persistent over limit condition.
858. [func] isc_mem_setwater() no longer requires that when the
callback function is non-NULL then its hi_water
@@ -4017,7 +4257,7 @@
811. [bug] Parentheses were not quoted in zone dumps. [RT #1194]
810. [bug] The signer name in SIG records was not properly
- downcased when signing/verifying records. [RT #1186]
+ down-cased when signing/verifying records. [RT #1186]
809. [bug] Configuring a non-local address as a transfer-source
could cause an assertion failure during load.
@@ -4029,9 +4269,9 @@
ignored like it should be.
806. [bug] DNS_R_SEENINCLUDE was failing to propagate back up
- the calling stack to the zone maintence level, causing
- zones to not reload when an included file was touched
- but the top-level zone file was not.
+ the calling stack to the zone maintenance level,
+ causing zones to not reload when an included file was
+ touched but the top-level zone file was not.
805. [bug] When using "forward only", missing root hints should
not cause queries to fail. [RT #1143]
@@ -4071,7 +4311,7 @@
in rndc.conf.
793. [cleanup] The DNSSEC tools could create filenames that were
- illegal or contained shell metacharacters. They
+ illegal or contained shell meta-characters. They
now use a different text encoding of names that
doesn't have these problems. [RT #1101]
@@ -4095,7 +4335,7 @@
names when mapping them into file names.
786. [bug] When DNSSEC signing/verifying data, owner names were
- not properly downcased.
+ not properly down-cased.
785. [bug] A race condition in the resolver could cause
an assertion failure. [RT #673, #872, #1048]
@@ -4114,7 +4354,7 @@
780. [bug] Error handling code dealing with out of memory or
other rare errors could lead to assertion failures
- by calling functions on unitialized names. [RT #1065]
+ by calling functions on uninitialized names. [RT #1065]
779. [func] Added the "minimal-responses" option.
@@ -4257,7 +4497,7 @@
735. [doc] Add BIND 4 migration notes.
734. [bug] An attempt to re-lock the zone lock could occur if
- the server was shutdown during a zone tranfer.
+ the server was shutdown during a zone transfer.
[RT #830]
733. [bug] Reference counts of dns_acl_t objects need to be
@@ -4397,7 +4637,7 @@
688. [func] "make tags" now works on systems with the
"Exuberant Ctags" etags.
- 687. [bug] Only say we have IPv6, with sufficent functionality,
+ 687. [bug] Only say we have IPv6, with sufficient functionality,
if it has actually been tested. [RT #586]
686. [bug] dig and nslookup can now be properly aborted during
@@ -4713,7 +4953,7 @@
--- 9.1.0b1 released ---
591. [bug] Work around non-reentrancy in openssl by disabling
- precomputation in keys.
+ pre-computation in keys.
590. [doc] There are now man pages for the lwres library in
doc/man/lwres.
@@ -4762,7 +5002,7 @@
source address for notify messages.
577. [func] Log illegal RDATA combinations. e.g. multiple
- singlton types, cname and other data.
+ singleton types, cname and other data.
576. [doc] isc_log_create() description did not match reality.
@@ -4773,7 +5013,7 @@
have their responses validated and would leak memory.
573. [bug] The journal files of IXFRed slave zones were
- inadvertantly discarded on server reload, causing
+ inadvertently discarded on server reload, causing
"journal out of sync with zone" errors on subsequent
reloads. [RT #482]
@@ -4938,7 +5178,7 @@
others).
519. [bug] dns_name_split() would improperly split some bitstring
- labels, zeroing a few of the least signficant bits in
+ labels, zeroing a few of the least significant bits in
the prefix part. When such an improperly created
prefix was returned to the RBT database, the bogus
label was dutifully stored, corrupting the tree.
@@ -4966,7 +5206,7 @@
513. [func] New functionality added to rdnc and server to allow
individual zones to be refreshed or reloaded.
- 512. [bug] The zone transfer code could throw an execption with
+ 512. [bug] The zone transfer code could throw an exception with
an invalid IXFR stream.
511. [bug] The message code could throw an assertion on an
@@ -5157,7 +5397,7 @@
452. [bug] Warn if the unimplemented option "statistics-file"
is specified in named.conf. [RT #301]
- 451. [func] Update forwarding implememted.
+ 451. [func] Update forwarding implemented.
450. [func] New function ns_client_sendraw().
@@ -5258,7 +5498,7 @@
e.g. due to corrupt zones with multiple SOA records.
[RT #279]
- 423. [bug] When responding to a recusive query, errors that occur
+ 423. [bug] When responding to a recursive query, errors that occur
after following a CNAME should cause the query to fail.
[RT #274]
@@ -5303,7 +5543,7 @@
409. [bug] If named was shut down early in the startup
process, ns_omapi_shutdown() would attempt to lock
- an unintialized mutex. [RT #262]
+ an uninitialized mutex. [RT #262]
408. [bug] stub zones could leak memory and reference counts if
all the masters were unreachable.
@@ -5370,7 +5610,7 @@
making the functions dns_zone_adddbarg()
and dns_zone_cleardbargs() unnecessary.
- 389. [bug] Attempting to send a reqeust over IPv6 using
+ 389. [bug] Attempting to send a request over IPv6 using
dns_request_create() on a system without IPv6
support caused an assertion failure [RT #235].
@@ -5427,7 +5667,7 @@
of a very large RRset could cause an assertion failure
during logging.
- 370. [bug] The error messages for rollforward failures were
+ 370. [bug] The error messages for roll-forward failures were
overly terse.
369. [func] Support new named.conf options, view and zone
@@ -5569,7 +5809,7 @@
328. [func] Added isc_base64_decodestring().
- 327. [bug] rndc.conf parser wasn't correctly recognising an IP
+ 327. [bug] rndc.conf parser wasn't correctly recognizing an IP
address where a host specification was required.
326. [func] 'keys' in an 'inet' control statement is now
@@ -5599,7 +5839,7 @@
where they previously didn't.
321. [bug] When synthesizing a CNAME RR for a DNAME
- response, query_addcname() failed to intitialize
+ response, query_addcname() failed to initialize
the type and class of the CNAME dns_rdata_t,
causing random failures.
@@ -5875,7 +6115,7 @@
--- 9.0.0b4 released ---
- 253. [func] resolv.conf parser now recognises ';' and '#' as
+ 253. [func] resolv.conf parser now recognizes ';' and '#' as
comments (anywhere in line, not just as the beginning).
252. [bug] resolv.conf parser mishandled masks on sortlists.
@@ -5945,7 +6185,7 @@
requiring a quoted string.
233. [cleanup] Convert all config structure integer values to unsigned
- integer (isc_uint32_t) to match grammer.
+ integer (isc_uint32_t) to match grammar.
232. [bug] Allow slave zones to not have a file.
@@ -5982,7 +6222,7 @@
from confparser.c, because of yacc's code, are
unfortunately to be expected.)
- 223. [func] Several functions were reprototyped to qualify one
+ 223. [func] Several functions were re-prototyped to qualify one
or more of their arguments with "const". Similarly,
several functions that return pointers now have
those pointers qualified with const.
@@ -6148,7 +6388,7 @@
183. [func] ISC_LOG_PRINTTAG option for log channels. Useful
for logging the program name or other identifier.
- 182. [cleanup] New commandline parameters for dnssec tools
+ 182. [cleanup] New command-line parameters for dnssec tools
181. [func] Added dst_key_buildfilename and dst_key_parsefilename
@@ -6193,7 +6433,7 @@
--with-mit-pthreads option is no longer needed
and has been removed.
- 170. [cleanup] Remove inter server consistancy checks from zone,
+ 170. [cleanup] Remove inter server consistency checks from zone,
these should return as a separate module in 9.1.
dns_zone_checkservers(), dns_zone_checkparents(),
dns_zone_checkchildren(), dns_zone_checkglue().
@@ -6286,7 +6526,7 @@
than continuing to itemize every header which changed,
this changelog entry just notes that if a header file
did not need another header file that it was including
- in order to provide its advertized functionality, the
+ in order to provide its advertised functionality, the
inclusion of the other header file was removed. See
util/check-includes for how this was tested.
@@ -6678,7 +6918,7 @@
31. [bug] Use ${LIBTOOL} to compile bin/named/main.@O@.
- 30. [func] config file grammer change to support optional
+ 30. [func] config file grammar change to support optional
class type for a view.
29. [func] support new config file view options:
@@ -6742,7 +6982,7 @@
13. [bug] lib/dns/master.c and lib/dns/xfrin.c didn't ignore
out-of-zone data.
- 12. [bug] Fixed possible unitialized variable error.
+ 12. [bug] Fixed possible uninitialized variable error.
11. [bug] axfr_rrstream_first() didn't check the result code of
db_rr_iterator_first(), possibly causing an assertion
diff --git a/FAQ b/FAQ
index e6b2ff27cefa3..2c333bef3b241 100644
--- a/FAQ
+++ b/FAQ
@@ -205,6 +205,8 @@ A: These indicate a malformed master zone. You can identify the exact
Q: I get error messages like "named.conf:99: unexpected end of input"
where 99 is the last line of named.conf.
+A: There are unbalanced quotes in named.conf.
+
A: Some text editors (notepad and wordpad) fail to put a line title
indication (e.g. CR/LF) on the last line of a text file. This can be
fixed by "adding" a blank line to the end of the file. Named expects to
@@ -375,7 +377,60 @@ A: When reloading a zone named my have multiple copies of the zone in
other errors in the master file as it still has an in-core copy of the
old contents.
-3. General Questions
+Q: I want to use IPv6 locally but I don't have a external IPv6 connection.
+ External lookups are slow.
+
+A: You can use server clauses to stop named making external lookups over
+ IPv6.
+
+ server fd81:ec6c:bd62::/48 { bogus no; }; // site ULA prefix
+ server ::/0 { bogus yes; };
+
+3. Operations Questions
+
+Q: How to change the nameservers for a zone?
+
+A: Step 1: Ensure all nameservers, new and old, are serving the same zone
+ content.
+
+ Step 2: Work out the maximum TTL of the NS RRset in the parent and
+ child zones. This is the time it will take caches to be clear of a
+ particular version of the NS RRset. If you are just removing
+ nameservers you can skip to Step 6.
+
+ Step 3: Add new nameservers to the NS RRset for the zone and wait until
+ all the servers for the zone are answering with this new NS RRset.
+
+ Step 4: Inform the parent zone of the new NS RRset then wait for all
+ the parent servers to be answering with the new NS RRset.
+
+ Step 5: Wait for cache to be clear of the old NS RRset. See Step 2 for
+ how long. If you are just adding nameservers you are done.
+
+ Step 6: Remove any old nameservers from the zones NS RRset and wait for
+ all the servers for the zone to be serving the new NS RRset.
+
+ Step 7: Inform the parent zone of the new NS RRset then wait for all
+ the parent servers to be answering with the new NS RRset.
+
+ Step 8: Wait for cache to be clear of the old NS RRset. See Step 2 for
+ how long.
+
+ Step 9: Turn off the old nameservers or remove the zone entry from the
+ configuration of the old nameservers.
+
+ Step 10: Increment the serial number and wait for the change to be
+ visible in all nameservers for the zone. This ensures that zone
+ transfers are still working after the old servers are decommissioned.
+
+ Note: the above procedure is designed to be transparent to dns clients.
+ Decommissioning the old servers too early will result in some clients
+ not being able to look up answers in the zone.
+
+ Note: while it is possible to run the addition and removal stages
+ together it is not recommended.
+
+4. General Questions
Q: I keep getting log messages like the following. Why?
@@ -396,8 +451,8 @@ 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,
- see http://support.microsoft.com/support/kb/articles/q246/8/04.asp for
- information about how to turn them off.
+ see
+ for information about how to turn them off.
Q: When I do a "dig . ns", many of the A records for the root servers are
missing. Why?
@@ -468,7 +523,7 @@ A: If the IN-ADDR.ARPA name covered refers to a internal address space you
are using then you have failed to follow RFC 1918 usage rules and are
leaking queries to the Internet. You should establish your own zones
for these addresses to prevent you querying the Internet's name servers
- for these addresses. Please see http://as112.net/ for details of the
+ for these addresses. Please see for details of the
problems you are causing and the counter measures that have had to be
deployed.
@@ -541,9 +596,16 @@ A: No. The BIND 9 bug database is kept closed for a number of reasons.
that have been fixed post release. That is as close as we can get to
providing a bug database.
-4. Operating-System Specific Questions
+Q: Why do queries for NSEC3 records fail to return the NSEC3 record?
-4.1. HPUX
+A: NSEC3 records are strictly meta data and can only be returned in the
+ authority section. This is done so that signing the zone using NSEC3
+ records does not bring names into existance that do not exist in the
+ unsigned version of the zone.
+
+5. Operating-System Specific Questions
+
+5.1. HPUX
Q: I get the following error trying to configure BIND:
@@ -559,7 +621,7 @@ A: You have attempted to configure BIND with the bundled C compiler. This
./configure CC= ...
-4.2. Linux
+5.2. Linux
Q: Why do I get the following errors:
@@ -569,7 +631,20 @@ Q: Why do I get the following errors:
A: This is the result of a Linux kernel bug.
- See: http://marc.theaimsgroup.com/?l=linux-netdev&m=113081708031466&w=2
+ See:
+
+Q: Why does named lock up when it attempts to connect over IPSEC tunnels?
+
+A: This is due to a kernel bug where the fact that a socket is marked
+ non-blocking is ignored. It is reported that setting xfrm_larval_drop
+ to 1 helps but this may have negative side effects. See: and .
+
+ xfrm_larval_drop can be set to 1 by the following procedure:
+
+ echo "1" > proc/sys/net/core/xfrm_larval_drop
Q: Why do I see 5 (or more) copies of named on Linux?
@@ -613,7 +688,7 @@ Q: I'm running BIND on Red Hat Enterprise Linux or Fedora Core -
A: Red Hat Security Enhanced Linux (SELinux) policy security protections :
Red Hat have adopted the National Security Agency's SELinux security
- policy ( see http://www.nsa.gov/selinux ) and recommendations for BIND
+ policy (see ) and recommendations for BIND
security , which are more secure than running named in a chroot and
make use of the bind-chroot environment unnecessary .
@@ -716,7 +791,7 @@ A: This is usually due to "/proc/net/if_inet6" not being available in the
proc /proc proc defaults 0 0
proc /var/named/proc proc defaults 0 0
-4.3. Windows
+5.3. Windows
Q: Zone transfers from my BIND 9 master to my Windows 2000 slave fail.
Why?
@@ -742,7 +817,7 @@ A: This is the service manager saying that named exited. You need to
Directory "C:\windows\dns\etc";
};
-4.4. FreeBSD
+5.4. FreeBSD
Q: I have FreeBSD 4.x and "rndc-confgen -a" just sits there.
@@ -753,17 +828,17 @@ A: /dev/random is not configured. Use rndcontrol(8) to tell the kernel to
/etc/rc.conf
rand_irqs="3 14 15"
- See also http://people.freebsd.org/~dougb/randomness.html
+ See also .
-4.5. Solaris
+5.5. Solaris
Q: How do I integrate BIND 9 and Solaris SMF
A: Sun has a blog entry describing how to do this.
- http://blogs.sun.com/roller/page/anay/Weblog?catname=%2FSolaris
+
-4.6. Apple Mac OS X
+5.6. Apple Mac OS X
Q: How do I run BIND 9 on Apple Mac OS X?
diff --git a/FAQ.xml b/FAQ.xml
index 818390b5a8014..5c36f3b5e0ca2 100644
--- a/FAQ.xml
+++ b/FAQ.xml
@@ -17,7 +17,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
Frequently Asked Questions about BIND 9
@@ -391,6 +391,11 @@ named-checkzone example.com tmp
of input where 99 is the last line of named.conf.
+
+
+ There are unbalanced quotes in named.conf.
+
+
Some text editors (notepad and wordpad) fail to put a line
@@ -661,9 +666,98 @@ zone "list.dsbl.org" {
+
+
+
+
+ I want to use IPv6 locally but I don't have a external IPv6
+ connection. External lookups are slow.
+
+
+
+
+ You can use server clauses to stop named making external lookups
+ over IPv6.
+
+
+server fd81:ec6c:bd62::/48 { bogus no; }; // site ULA prefix
+server ::/0 { bogus yes; };
+
+
+
+ Operations Questions
+
+
+
+
+ How to change the nameservers for a zone?
+
+
+
+
+ Step 1: Ensure all nameservers, new and old, are serving the
+ same zone content.
+
+
+ Step 2: Work out the maximum TTL of the NS RRset in the parent and child
+ zones. This is the time it will take caches to be clear of a
+ particular version of the NS RRset.
+ If you are just removing nameservers you can skip to Step 6.
+
+
+ Step 3: Add new nameservers to the NS RRset for the zone and
+ wait until all the servers for the zone are answering with this
+ new NS RRset.
+
+
+ Step 4: Inform the parent zone of the new NS RRset then wait for all the
+ parent servers to be answering with the new NS RRset.
+
+
+ Step 5: Wait for cache to be clear of the old NS RRset.
+ See Step 2 for how long.
+ If you are just adding nameservers you are done.
+
+
+ Step 6: Remove any old nameservers from the zones NS RRset and
+ wait for all the servers for the zone to be serving the new NS RRset.
+
+
+ Step 7: Inform the parent zone of the new NS RRset then wait for all the
+ parent servers to be answering with the new NS RRset.
+
+
+ Step 8: Wait for cache to be clear of the old NS RRset.
+ See Step 2 for how long.
+
+
+ Step 9: Turn off the old nameservers or remove the zone entry from
+ the configuration of the old nameservers.
+
+
+ Step 10: Increment the serial number and wait for the change to
+ be visible in all nameservers for the zone. This ensures that
+ zone transfers are still working after the old servers are
+ decommissioned.
+
+
+ Note: the above procedure is designed to be transparent
+ to dns clients. Decommissioning the old servers too early
+ will result in some clients not being able to look up
+ answers in the zone.
+
+
+ Note: while it is possible to run the addition and removal
+ stages together it is not recommended.
+
+
+
+
+
+
General Questions
@@ -706,8 +800,7 @@ zone "list.dsbl.org" {
requests are coming from a Windows 2000 machine, see
- http://support.microsoft.com/support/kb/articles/q246/8/04.asp
-
+ <http://support.microsoft.com/support/kb/articles/q246/8/04.asp>
for information about how to turn them off.
@@ -857,7 +950,7 @@ serial-query-rate 5; // default 20
usage rules and are leaking queries to the Internet. You
should establish your own zones for these addresses to prevent
you querying the Internet's name servers for these addresses.
- Please see http://as112.net/
+ Please see <http://as112.net/>
for details of the problems you are causing and the counter
measures that have had to be deployed.
@@ -963,6 +1056,23 @@ empty:
+
+
+
+ Why do queries for NSEC3 records fail to return the NSEC3 record?
+
+
+
+
+ NSEC3 records are strictly meta data and can only be
+ returned in the authority section. This is done so that
+ signing the zone using NSEC3 records does not bring names
+ into existance that do not exist in the unsigned version
+ of the zone.
+
+
+
+
Operating-System Specific Questions
@@ -1010,7 +1120,31 @@ client: UDP client handler shutting down due to fatal receive error: unexpected
See:
- http://marc.theaimsgroup.com/?l=linux-netdev&m=113081708031466&w=2
+ <http://marc.theaimsgroup.com/?l=linux-netdev&m=113081708031466&w=2>
+
+
+
+
+
+
+
+ Why does named lock up when it attempts to connect over IPSEC tunnels?
+
+
+
+
+ This is due to a kernel bug where the fact that a socket is marked
+ non-blocking is ignored. It is reported that setting
+ xfrm_larval_drop to 1 helps but this may have negative side effects.
+ See:
+<https://bugzilla.redhat.com/show_bug.cgi?id=427629>
+ and
+<http://lkml.org/lkml/2007/12/4/260>.
+
+
+ xfrm_larval_drop can be set to 1 by the following procedure:
+
+echo "1" > proc/sys/net/core/xfrm_larval_drop
@@ -1101,8 +1235,9 @@ modprobe capability
Red Hat have adopted the National Security Agency's
- SELinux security policy ( see http://www.nsa.gov/selinux
- ) and recommendations for BIND security , which are more
+ SELinux security policy (see <http://www.nsa.gov/selinux>)
+ and recommendations for BIND security , which are more
secure than running named in a chroot and make use of
the bind-chroot environment unnecessary .
@@ -1341,8 +1476,7 @@ rand_irqs="3 14 15"
See also
- http://people.freebsd.org/~dougb/randomness.html
-
+ <http://people.freebsd.org/~dougb/randomness.html>.
@@ -1364,7 +1498,7 @@ rand_irqs="3 14 15"
- http://blogs.sun.com/roller/page/anay/Weblog?catname=%2FSolaris
+ <http://blogs.sun.com/roller/page/anay/Weblog?catname=%2FSolaris>
diff --git a/README b/README
index 709df1267ae46..c30934f8f8cd7 100644
--- a/README
+++ b/README
@@ -43,6 +43,14 @@ BIND 9
Nominum, Inc.
+BIND 9.3.6
+
+ BIND 9.3.6 is a maintenance release, containing fixes for
+ a number of bugs in previous releases.
+
+ The major change since 9.3.5 is query port randomization,
+ to improve resilience against cache poisoning attacks.
+
BIND 9.3.2
BIND 9.3.2 is a maintenance release, containing fixes for
@@ -145,7 +153,7 @@ BIND 9.2.0
This does not apply to the use of TSIG, which does not
require OpenSSL.
- - The source distribution now builds on Windows NT/2000.
+ - The source distribution now builds on Windows.
See win32utils/readme1.txt and win32utils/win32-build.txt
for details.
@@ -194,11 +202,8 @@ BIND 9.2.0
--with-libtool does not work on AIX.
- --with-libtool does not work on SunOS 4. configure
- requires "printf" which is not available.
-
- A bug in the Windows 2000 DNS server can cause zone transfers
- from a BIND 9 server to a W2K server to fail. For details,
+ A bug in some versions of the Microsoft DNS server can cause zone
+ transfers from a BIND 9 server to a W2K server to fail. For details,
see the "Zone Transfers" section in doc/misc/migration.
For a detailed list of user-visible changes from
@@ -218,7 +223,11 @@ Building
NetBSD 1.5
Slackware Linux 8.1
Solaris 8, 9, 9 (x86)
- Windows NT/2000/XP/2003
+ Windows XP/2003/2008
+
+ NOTE: As of BIND 9.5.1, 9.4.3, and 9.3.6, older versions of
+ Windows, including Windows NT and Windows 2000, are no longer
+ supported.
Additionally, we have unverified reports of success building
previous versions of BIND 9 from users of the following systems:
@@ -270,6 +279,10 @@ Building
-DDIG_SIGCHASE_BU=1)
Disable dropping queries from particular well known ports.
-DNS_CLIENT_DROPPORT=0
+ Enable workaround for Solaris kernel bug about /dev/poll
+ -DISC_SOCKET_USE_POLLWATCH=1
+ The watch timeout is also configurable, e.g.,
+ -DISC_SOCKET_POLLWATCH_TIMEOUT=20
LDFLAGS
Linker flags. Defaults to empty string.
@@ -298,6 +311,10 @@ Building
To build libbind (the BIND 8 resolver library), specify
"--enable-libbind" on the configure command line.
+ On some platforms it is necessary to explictly request large
+ file support to handle files bigger than 2GB. This can be
+ done by "--enable-largefile" on the configure command line.
+
On some platforms, BIND 9 can be built with multithreading
support, allowing it to take advantage of multiple CPUs.
You can specify whether to build a multithreaded BIND 9
@@ -347,6 +364,9 @@ Building
on your system, and some require Perl; see bin/tests/system/README
for details.
+ SunOS 4 requires "printf" to be installed to make the shared
+ libraries. sh-utils-1.16 provides a "printf" which compiles
+ on SunOS 4.
Documentation
diff --git a/bin/dig/dig.1 b/bin/dig/dig.1
index a5f5ff3c04a38..346e45d80362f 100644
--- a/bin/dig/dig.1
+++ b/bin/dig/dig.1
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000-2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: dig.1,v 1.14.2.4.2.18 2007/05/16 06:10:54 marka Exp $
+.\" $Id: dig.1,v 1.14.2.4.2.20 2008/10/14 01:20:30 tbox Exp $
.\"
.hy 0
.ad l
@@ -33,7 +33,7 @@
dig \- DNS lookup utility
.SH "SYNOPSIS"
.HP 4
-\fBdig\fR [@server] [\fB\-b\ \fR\fB\fIaddress\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIfilename\fR\fR] [\fB\-k\ \fR\fB\fIfilename\fR\fR] [\fB\-p\ \fR\fB\fIport#\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-x\ \fR\fB\fIaddr\fR\fR] [\fB\-y\ \fR\fB\fIname:key\fR\fR] [\fB\-4\fR] [\fB\-6\fR] [name] [type] [class] [queryopt...]
+\fBdig\fR [@server] [\fB\-b\ \fR\fB\fIaddress\fR\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-f\ \fR\fB\fIfilename\fR\fR] [\fB\-k\ \fR\fB\fIfilename\fR\fR] [\fB\-m\fR] [\fB\-p\ \fR\fB\fIport#\fR\fR] [\fB\-t\ \fR\fB\fItype\fR\fR] [\fB\-x\ \fR\fB\fIaddr\fR\fR] [\fB\-y\ \fR\fB\fIname:key\fR\fR] [\fB\-4\fR] [\fB\-6\fR] [name] [type] [class] [queryopt...]
.HP 4
\fBdig\fR [\fB\-h\fR]
.HP 4
@@ -59,7 +59,9 @@ Unless it is told to query a specific name server,
will try each of the servers listed in
\fI/etc/resolv.conf\fR.
.PP
-When no command line arguments or options are given, will perform an NS query for "." (the root).
+When no command line arguments or options are given,
+\fBdig\fR
+will perform an NS query for "." (the root).
.PP
It is possible to set per\-user defaults for
\fBdig\fR
@@ -70,7 +72,7 @@ The IN and CH class names overlap with the IN and CH top level domains names. Ei
\fB\-t\fR
and
\fB\-c\fR
-options to specify the type and class or use "IN." and "CH." when looking up these top level domains.
+options to specify the type and class, or use "IN." and "CH." when looking up these top level domains.
.SH "SIMPLE USAGE"
.PP
A typical invocation of
@@ -137,6 +139,10 @@ operate in batch mode by reading a list of lookup requests to process from the f
\fBdig\fR
using the command\-line interface.
.PP
+The
+\fB\-m\fR
+option enables memory usage debugging.
+.PP
If a non\-standard port number is to be queried, the
\fB\-p\fR
option is used.
@@ -517,7 +523,7 @@ RFC1035.
.PP
There are probably too many query options.
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000\-2003 Internet Software Consortium.
.br
diff --git a/bin/dig/dig.c b/bin/dig/dig.c
index 763613dfca79b..34f0e90a3d81f 100644
--- a/bin/dig/dig.c
+++ b/bin/dig/dig.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dig.c,v 1.157.2.13.2.35 2007/08/28 07:19:07 tbox Exp $ */
+/* $Id: dig.c,v 1.157.2.13.2.39 2008/10/15 02:20:32 marka Exp $ */
#include
#include
@@ -47,7 +47,7 @@
#define ADD_STRING(b, s) { \
if (strlen(s) >= isc_buffer_availablelength(b)) \
- return (ISC_R_NOSPACE); \
+ return (ISC_R_NOSPACE); \
else \
isc_buffer_putstr(b, s); \
}
@@ -67,7 +67,7 @@ static isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
ip6_int = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
multiline = ISC_FALSE, nottl = ISC_FALSE, noclass = ISC_FALSE;
-static const char *opcodetext[] = {
+static const char * const opcodetext[] = {
"QUERY",
"IQUERY",
"STATUS",
@@ -86,7 +86,7 @@ static const char *opcodetext[] = {
"RESERVED15"
};
-static const char *rcodetext[] = {
+static const char * const rcodetext[] = {
"NOERROR",
"FORMERR",
"SERVFAIL",
@@ -136,8 +136,8 @@ help(void) {
" q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]\n"
" (Use ixfr=version for type ixfr)\n"
" q-opt is one of:\n"
-" -x dot-notation (shortcut for in-addr lookups)\n"
-" -i (IP6.INT reverse IPv6 lookups)\n"
+" -x dot-notation (shortcut for reverse lookups)\n"
+" -i (use IP6.INT for IPv6 reverse lookups)\n"
" -f filename (batch mode)\n"
" -b address[#port] (bind to source address/port)\n"
" -p port (specify port number)\n"
@@ -147,6 +147,7 @@ help(void) {
" -y name:key (specify named base64 tsig key)\n"
" -4 (use IPv4 query transport only)\n"
" -6 (use IPv6 query transport only)\n"
+" -m (enable memory usage debugging)\n"
" d-opt is of the form +keyword[=value], where keyword is:\n"
" +[no]vc (TCP mode)\n"
" +[no]tcp (TCP mode, alternate syntax)\n"
@@ -367,7 +368,7 @@ printrdataset(dns_name_t *owner_name, dns_rdataset_t *rdataset,
else if (nottl || noclass)
result = dns_master_stylecreate(&style, styleflags,
24, 24, 32, 40, 80, 8, mctx);
- else
+ else
result = dns_master_stylecreate(&style, styleflags,
24, 32, 40, 48, 80, 8, mctx);
check_result(result, "dns_master_stylecreate");
@@ -376,7 +377,7 @@ printrdataset(dns_name_t *owner_name, dns_rdataset_t *rdataset,
if (style != NULL)
dns_master_styledestroy(&style, mctx);
-
+
return(result);
}
#endif
@@ -413,7 +414,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
else if (nottl || noclass)
result = dns_master_stylecreate(&style, styleflags,
24, 24, 32, 40, 80, 8, mctx);
- else
+ else
result = dns_master_stylecreate(&style, styleflags,
24, 32, 40, 48, 80, 8, mctx);
check_result(result, "dns_master_stylecreate");
@@ -613,7 +614,7 @@ printgreeting(int argc, char **argv, dig_lookup_t *lookup) {
strncat(lookup->cmdline, append, remaining);
}
if (first) {
- snprintf(append, sizeof(append),
+ snprintf(append, sizeof(append),
";; global options: %s %s\n",
short_form ? "short_form" : "",
printcmd ? "printcmd" : "");
@@ -691,7 +692,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
FULLCHECK2("aaonly", "aaflag");
lookup->aaonly = state;
break;
- case 'd':
+ case 'd':
switch (cmd[2]) {
case 'd': /* additional */
FULLCHECK("additional");
@@ -776,11 +777,11 @@ plus_option(char *option, isc_boolean_t is_batchfile,
FULLCHECK("defname");
usesearch = state;
break;
- case 'n': /* dnssec */
+ case 'n': /* dnssec */
FULLCHECK("dnssec");
lookup->dnssec = state;
break;
- case 'o': /* domain */
+ case 'o': /* domain */
FULLCHECK("domain");
if (value == NULL)
goto need_value;
@@ -844,7 +845,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
goto invalid_option;
}
break;
- case 'q':
+ case 'q':
switch (cmd[1]) {
case 'r': /* qr */
FULLCHECK("qr");
@@ -907,11 +908,11 @@ plus_option(char *option, isc_boolean_t is_batchfile,
break;
#ifdef DIG_SIGCHASE
case 'i': /* sigchase */
- FULLCHECK("sigchase");
+ FULLCHECK("sigchase");
lookup->sigchase = state;
if (lookup->sigchase)
lookup->dnssec = ISC_TRUE;
- break;
+ break;
#endif
case 't': /* stats */
FULLCHECK("stats");
@@ -939,7 +940,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
timeout = 1;
break;
#if DIG_SIGCHASE_TD
- case 'o': /* topdown */
+ case 'o': /* topdown */
FULLCHECK("topdown");
lookup->do_topdown = state;
break;
@@ -974,7 +975,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
#ifdef DIG_SIGCHASE
case 'u': /* trusted-key */
FULLCHECK("trusted-key");
- if (value == NULL)
+ if (value == NULL)
goto need_value;
if (!state)
goto invalid_option;
@@ -1018,8 +1019,8 @@ static const char *single_dash_opts = "46dhimnv";
static const char *dash_opts = "46bcdfhikmnptvyx";
static isc_boolean_t
dash_option(char *option, char *next, dig_lookup_t **lookup,
- isc_boolean_t *open_type_class, isc_boolean_t *need_clone,
- int argc, char **argv, isc_boolean_t *firstarg)
+ isc_boolean_t *open_type_class, isc_boolean_t *need_clone,
+ int argc, char **argv, isc_boolean_t *firstarg)
{
char opt, *value, *ptr;
isc_result_t result;
@@ -1107,7 +1108,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
hash = strchr(value, '#');
if (hash != NULL) {
srcport = (in_port_t)
- parse_uint(hash + 1,
+ parse_uint(hash + 1,
"port number", MAXPORT);
*hash = '\0';
} else
@@ -1179,7 +1180,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
(*lookup)->rdtypeset = ISC_TRUE;
(*lookup)->ixfr_serial =
parse_uint(&value[5], "serial number",
- MAXSERIAL);
+ MAXSERIAL);
(*lookup)->section_question = plusquest;
(*lookup)->comments = pluscomm;
} else {
@@ -1286,7 +1287,7 @@ getaddresses(dig_lookup_t *lookup, const char *host) {
char tmp[ISC_NETADDR_FORMATSIZE];
result = bind9_getaddresses(host, 0, sockaddrs,
- DIG_MAX_ADDRESSES, &count);
+ DIG_MAX_ADDRESSES, &count);
if (result != ISC_R_SUCCESS)
fatal("couldn't get address for '%s': %s",
host, isc_result_totext(result));
@@ -1348,7 +1349,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
if (homedir != NULL) {
unsigned int n;
n = snprintf(rcfile, sizeof(rcfile), "%s/.digrc",
- homedir);
+ homedir);
if (n < sizeof(rcfile))
batchfp = fopen(rcfile, "r");
}
@@ -1402,16 +1403,16 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
if (rc <= 1) {
if (dash_option(&rv[0][1], NULL,
&lookup, &open_type_class,
- &need_clone, argc, argv,
- &firstarg)) {
+ &need_clone, argc, argv,
+ &firstarg)) {
rc--;
rv++;
}
} else {
if (dash_option(&rv[0][1], rv[1],
&lookup, &open_type_class,
- &need_clone, argc, argv,
- &firstarg)) {
+ &need_clone, argc, argv,
+ &firstarg)) {
rc--;
rv++;
}
@@ -1428,7 +1429,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
tr.base = rv[0];
tr.length = strlen(rv[0]);
result = dns_rdatatype_fromtext(&rdtype,
- (isc_textregion_t *)&tr);
+ (isc_textregion_t *)&tr);
if (result == ISC_R_SUCCESS &&
rdtype == dns_rdatatype_ixfr) {
result = DNS_R_UNKNOWN;
@@ -1449,8 +1450,8 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
lookup->rdtypeset = ISC_TRUE;
lookup->ixfr_serial =
parse_uint(&rv[0][5],
- "serial number",
- MAXSERIAL);
+ "serial number",
+ MAXSERIAL);
lookup->section_question =
plusquest;
lookup->comments = pluscomm;
@@ -1485,7 +1486,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
lookup = clone_lookup(default_lookup,
ISC_TRUE);
need_clone = ISC_TRUE;
- strncpy(lookup->textname, rv[0],
+ strncpy(lookup->textname, rv[0],
sizeof(lookup->textname));
lookup->textname[sizeof(lookup->textname)-1]=0;
lookup->trace_root = ISC_TF(lookup->trace ||
diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook
index 82b2516cbbe6f..8a072d191d3ab 100644
--- a/bin/dig/dig.docbook
+++ b/bin/dig/dig.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -38,6 +38,7 @@
200520062007
+ 2008Internet Systems Consortium, Inc. ("ISC")
@@ -62,6 +63,7 @@
+
@@ -114,10 +116,10 @@ Unless it is told to query a specific name server,
/etc/resolv.conf.
-
-When no command line arguments or options are given, will perform an
-NS query for "." (the root).
-
+
+ When no command line arguments or options are given,
+ dig will perform an NS query for "." (the root).
+
It is possible to set per-user defaults for dig via
@@ -128,7 +130,7 @@ are applied before the command line arguments.
The IN and CH class names overlap with the IN and CH top level
domains names. Either use the and
- options to specify the type and class or
+ options to specify the type and class, or
use "IN." and "CH." when looking up these top level domains.
@@ -200,6 +202,12 @@ the same way they would be presented as queries to
dig using the command-line interface.
+
+ The option enables memory usage debugging.
+
+
+
If a non-standard port number is to be queried, the
option is used. port# is
diff --git a/bin/dig/dig.html b/bin/dig/dig.html
index 054c1974656bd..1c18ec309aa12 100644
--- a/bin/dig/dig.html
+++ b/bin/dig/dig.html
@@ -1,5 +1,5 @@
-
+
@@ -29,12 +29,12 @@
dig (domain information groper) is a flexible tool
for interrogating DNS name servers. It performs DNS lookups and
@@ -59,9 +59,9 @@ Unless it is told to query a specific name server,
/etc/resolv.conf.
-When no command line arguments or options are given, will perform an
-NS query for "." (the root).
-
+ When no command line arguments or options are given,
+ dig will perform an NS query for "." (the root).
+
It is possible to set per-user defaults for dig via
${HOME}/.digrc. This file is read and any options in it
@@ -70,12 +70,12 @@ are applied before the command line arguments.
The IN and CH class names overlap with the IN and CH top level
domains names. Either use the -t and
- -c options to specify the type and class or
+ -c options to specify the type and class, or
use "IN." and "CH." when looking up these top level domains.
-
SIMPLE USAGE
+
SIMPLE USAGE
A typical invocation of dig looks like:
@@ -113,7 +113,7 @@ ANY, A, MX, SIG, etc.
-
OPTIONS
+
OPTIONS
The -b option sets the source IP address of the query
to address. This must be a valid address on
@@ -133,6 +133,10 @@ queries, one per line. Each entry in the file should be organized in
the same way they would be presented as queries to
dig using the command-line interface.
+
+ The -m option enables memory usage debugging.
+
+
If a non-standard port number is to be queried, the
-p option is used. port# is
@@ -194,7 +198,7 @@ being used. In BIND, this is done by providing appropriate
-
QUERY OPTIONS
+
QUERY OPTIONS
dig provides a number of query options which affect
the way in which lookups are made and the results displayed. Some of
@@ -452,7 +456,7 @@ Requires dig be compiled with -DDIG_SIGCHASE.
-
MULTIPLE QUERIES
+
MULTIPLE QUERIES
The BIND 9 implementation of dig supports
specifying multiple queries on the command line (in addition to
@@ -493,7 +497,7 @@ will not print the initial query when it looks up the NS records for
-
FILES
+
FILES
/etc/resolv.conf
@@ -502,7 +506,7 @@ will not print the initial query when it looks up the NS records for
-
SEE ALSO
+
SEE ALSO
host(1),
named(8),
@@ -511,7 +515,7 @@ will not print the initial query when it looks up the NS records for
-
BUGS
+
BUGS
There are probably too many query options.
diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
index efd24030b17fe..2c81fd433c8cb 100644
--- a/bin/dig/dighost.c
+++ b/bin/dig/dighost.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dighost.c,v 1.221.2.19.2.46.4.2 2008/07/23 23:16:25 marka Exp $ */
+/* $Id: dighost.c,v 1.221.2.19.2.48 2008/07/23 23:36:21 marka Exp $ */
/*
* Notice to programmers: Do not use this code as an example of how to
diff --git a/bin/dig/host.1 b/bin/dig/host.1
index 2d1687a687c33..1d09af9145de7 100644
--- a/bin/dig/host.1
+++ b/bin/dig/host.1
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000-2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: host.1,v 1.11.2.1.4.12 2007/05/09 03:32:36 marka Exp $
+.\" $Id: host.1,v 1.11.2.1.4.13 2008/04/29 01:21:29 tbox Exp $
.\"
.hy 0
.ad l
@@ -154,7 +154,7 @@ option is used to select the query type.
\fItype\fR
can be any recognized query type: CNAME, NS, SOA, SIG, KEY, AXFR, etc. When no query type is specified,
\fBhost\fR
-automatically selects an appropriate query type. By default it looks for A records, but if the
+automatically selects an appropriate query type. By default it looks for A, AAAA, and MX records, but if the
\fB\-C\fR
option was given, queries will be made for SOA records, and if
\fIname\fR
@@ -187,7 +187,7 @@ will effectively wait forever for a reply. The time to wait for a response will
\fBdig\fR(1),
\fBnamed\fR(8).
.SH "COPYRIGHT"
-Copyright \(co 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000\-2003 Internet Software Consortium.
.br
diff --git a/bin/dig/host.docbook b/bin/dig/host.docbook
index a399043403ba9..29ca7ea658f16 100644
--- a/bin/dig/host.docbook
+++ b/bin/dig/host.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -37,6 +37,7 @@
200420052007
+ 2008Internet Systems Consortium, Inc. ("ISC")
@@ -185,7 +186,7 @@ The option is used to select the query type.
type can be any recognized query type: CNAME,
NS, SOA, SIG, KEY, AXFR, etc. When no query type is specified,
host automatically selects an appropriate query
-type. By default it looks for A records, but if the
+type. By default it looks for A, AAAA, and MX records, but if the
option was given, queries will be made for SOA
records, and if name is a dotted-decimal IPv4
address or colon-delimited IPv6 address, host will
diff --git a/bin/dig/host.html b/bin/dig/host.html
index 07c930550f454..a1786bb1c578d 100644
--- a/bin/dig/host.html
+++ b/bin/dig/host.html
@@ -1,5 +1,5 @@
-
+
@@ -32,7 +32,7 @@
host
is a simple utility for performing DNS lookups.
@@ -134,7 +134,7 @@ The -t option is used to select the query type.
type can be any recognized query type: CNAME,
NS, SOA, SIG, KEY, AXFR, etc. When no query type is specified,
host automatically selects an appropriate query
-type. By default it looks for A records, but if the
+type. By default it looks for A, AAAA, and MX records, but if the
-C option was given, queries will be made for SOA
records, and if name is a dotted-decimal IPv4
address or colon-delimited IPv6 address, host will
@@ -155,13 +155,13 @@ value for an integer quantity.
-
FILES
+
FILES
/etc/resolv.conf
-
SEE ALSO
+
SEE ALSO
dig(1),
named(8).
diff --git a/bin/dnssec/dnssec-keygen.8 b/bin/dnssec/dnssec-keygen.8
index 877ac07829094..2d3215366724c 100644
--- a/bin/dnssec/dnssec-keygen.8
+++ b/bin/dnssec/dnssec-keygen.8
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000-2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: dnssec-keygen.8,v 1.19.12.13 2007/05/09 03:32:36 marka Exp $
+.\" $Id: dnssec-keygen.8,v 1.19.12.14 2008/10/16 01:19:52 tbox Exp $
.\"
.hy 0
.ad l
@@ -187,14 +187,14 @@ and
.PP
\fBdnssec\-signzone\fR(8),
BIND 9 Administrator Reference Manual,
-RFC 2535,
+RFC 2539,
RFC 2845,
-RFC 2539.
+RFC 4033.
.SH "AUTHOR"
.PP
Internet Systems Consortium
.SH "COPYRIGHT"
-Copyright \(co 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000\-2003 Internet Software Consortium.
.br
diff --git a/bin/dnssec/dnssec-keygen.docbook b/bin/dnssec/dnssec-keygen.docbook
index 6ef1f090e628f..6690f542c25ec 100644
--- a/bin/dnssec/dnssec-keygen.docbook
+++ b/bin/dnssec/dnssec-keygen.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -36,6 +36,7 @@
200420052007
+ 2008Internet Systems Consortium, Inc. ("ISC")
@@ -337,9 +338,9 @@
8
,
BIND 9 Administrator Reference Manual,
- RFC 2535,
+ RFC 2539,
RFC 2845,
- RFC 2539.
+ RFC 4033.
diff --git a/bin/dnssec/dnssec-keygen.html b/bin/dnssec/dnssec-keygen.html
index 6d3cc83f5ddf4..f855d1f433de2 100644
--- a/bin/dnssec/dnssec-keygen.html
+++ b/bin/dnssec/dnssec-keygen.html
@@ -1,5 +1,5 @@
-
+
@@ -32,7 +32,7 @@
diff --git a/bin/named/client.c b/bin/named/client.c
index fbc3bad18de75..9c22b1fe56064 100644
--- a/bin/named/client.c
+++ b/bin/named/client.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: client.c,v 1.176.2.13.4.38.4.2 2008/07/23 07:28:11 tbox Exp $ */
+/* $Id: client.c,v 1.176.2.13.4.40 2008/05/22 23:45:34 tbox Exp $ */
#include
diff --git a/bin/named/config.c b/bin/named/config.c
index dc4d928d4f6e2..b57b24a0f722b 100644
--- a/bin/named/config.c
+++ b/bin/named/config.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: config.c,v 1.11.2.4.8.36.4.3 2008/07/23 23:47:49 tbox Exp $ */
+/* $Id: config.c,v 1.11.2.4.8.39 2008/09/04 08:11:24 marka Exp $ */
#include
diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c
index e9c53ec8dd806..ffebec8048b46 100644
--- a/bin/named/controlconf.c
+++ b/bin/named/controlconf.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: controlconf.c,v 1.28.2.9.2.13.4.2 2008/07/23 23:16:25 marka Exp $ */
+/* $Id: controlconf.c,v 1.28.2.9.2.15 2008/07/23 23:36:22 marka Exp $ */
#include
diff --git a/bin/named/include/named/globals.h b/bin/named/include/named/globals.h
index b8137e8d33215..b7aaf5a90323a 100644
--- a/bin/named/include/named/globals.h
+++ b/bin/named/include/named/globals.h
@@ -1,8 +1,8 @@
/*
- * Copyright (C) 2004, 2006 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2006, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
- * Permission to use, copy, modify, and distribute this software for any
+ * Permission to use, copy, modify, and/or 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.
*
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: globals.h,v 1.59.68.7 2006/03/02 00:37:20 marka Exp $ */
+/* $Id: globals.h,v 1.59.68.9 2008/10/24 01:42:46 tbox Exp $ */
#ifndef NAMED_GLOBALS_H
#define NAMED_GLOBALS_H 1
@@ -46,6 +46,7 @@ EXTERN isc_taskmgr_t * ns_g_taskmgr INIT(NULL);
EXTERN dns_dispatchmgr_t * ns_g_dispatchmgr INIT(NULL);
EXTERN isc_entropy_t * ns_g_entropy INIT(NULL);
EXTERN isc_entropy_t * ns_g_fallbackentropy INIT(NULL);
+EXTERN unsigned int ns_g_cpus_detected INIT(1);
/*
* XXXRTH We're going to want multiple timer managers eventually. One
diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
index 524f47b3387f2..e56bd9c3876e2 100644
--- a/bin/named/interfacemgr.c
+++ b/bin/named/interfacemgr.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: interfacemgr.c,v 1.59.2.5.8.21.4.3 2008/07/23 23:16:25 marka Exp $ */
+/* $Id: interfacemgr.c,v 1.59.2.5.8.24 2008/07/23 23:36:22 marka Exp $ */
#include
diff --git a/bin/named/lwresd.8 b/bin/named/lwresd.8
index 91d0e8a791670..77e90907c77f3 100644
--- a/bin/named/lwresd.8
+++ b/bin/named/lwresd.8
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000, 2001 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: lwresd.8,v 1.13.208.10 2007/05/16 06:10:54 marka Exp $
+.\" $Id: lwresd.8,v 1.13.208.11 2008/10/17 01:19:58 tbox Exp $
.\"
.hy 0
.ad l
@@ -85,9 +85,9 @@ Use
\fIconfig\-file\fR
as the configuration file instead of the default,
\fI/etc/lwresd.conf\fR.
-\-c
+\fB\-c\fR
can not be used with
-\-C.
+\fB\-C\fR.
.RE
.PP
\-C \fIconfig\-file\fR
@@ -96,9 +96,9 @@ Use
\fIconfig\-file\fR
as the configuration file instead of the default,
\fI/etc/resolv.conf\fR.
-\-C
+\fB\-C\fR
can not be used with
-\-c.
+\fB\-c\fR.
.RE
.PP
\-d \fIdebug\-level\fR
@@ -217,7 +217,7 @@ The default process\-id file.
.PP
Internet Systems Consortium
.SH "COPYRIGHT"
-Copyright \(co 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000, 2001 Internet Software Consortium.
.br
diff --git a/bin/named/lwresd.c b/bin/named/lwresd.c
index 7dcdad4d47bb1..77dce1e4ff41a 100644
--- a/bin/named/lwresd.c
+++ b/bin/named/lwresd.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: lwresd.c,v 1.37.2.2.2.8.14.3 2008/07/23 23:16:26 marka Exp $ */
+/* $Id: lwresd.c,v 1.37.2.2.2.11 2008/07/23 23:36:22 marka Exp $ */
/*
* Main program for the Lightweight Resolver Daemon.
diff --git a/bin/named/lwresd.docbook b/bin/named/lwresd.docbook
index 354a4ab85d58a..b4cd22bc66e08 100644
--- a/bin/named/lwresd.docbook
+++ b/bin/named/lwresd.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -36,6 +36,7 @@
200420052007
+ 2008Internet Systems Consortium, Inc. ("ISC")
@@ -143,7 +144,7 @@
Use config-file as the
configuration file instead of the default,
/etc/lwresd.conf.
- -c can not be used with -C.
+ can not be used with .
@@ -155,7 +156,7 @@
Use config-file as the
configuration file instead of the default,
/etc/resolv.conf.
- -C can not be used with -c.
+ can not be used with .
diff --git a/bin/named/lwresd.html b/bin/named/lwresd.html
index 45837e8ed4a19..bb794583a5709 100644
--- a/bin/named/lwresd.html
+++ b/bin/named/lwresd.html
@@ -1,5 +1,5 @@
-
+
@@ -32,7 +32,7 @@
lwresd is the daemon providing name lookup
services to clients that use the BIND 9 lightweight resolver
@@ -67,7 +67,7 @@
-
OPTIONS
+
OPTIONS
-4
@@ -86,14 +86,14 @@
Use config-file as the
configuration file instead of the default,
/etc/lwresd.conf.
- <term>-c</term> can not be used with <term>-C</term>.
+ -c can not be used with -C.
-C config-file
Use config-file as the
configuration file instead of the default,
/etc/resolv.conf.
- <term>-C</term> can not be used with <term>-c</term>.
+ -C can not be used with -c.
-d debug-level
@@ -194,7 +194,7 @@
-
FILES
+
FILES
/etc/resolv.conf
@@ -207,7 +207,7 @@
-
SEE ALSO
+
SEE ALSO
named(8),
lwres(3),
@@ -215,7 +215,7 @@
-
AUTHOR
+
AUTHOR
Internet Systems Consortium
diff --git a/bin/named/main.c b/bin/named/main.c
index 960de2a34bb11..11a56c9ba88a3 100644
--- a/bin/named/main.c
+++ b/bin/named/main.c
@@ -1,8 +1,8 @@
/*
- * Copyright (C) 2004-2006 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2006, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
- * Permission to use, copy, modify, and distribute this software for any
+ * Permission to use, copy, modify, and/or 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.
*
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: main.c,v 1.119.2.3.2.25 2006/11/10 18:51:06 marka Exp $ */
+/* $Id: main.c,v 1.119.2.3.2.29 2008/10/24 01:28:55 marka Exp $ */
#include
@@ -31,6 +31,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -76,6 +77,7 @@ static char program_name[ISC_DIR_NAMEMAX] = "named";
static char absolute_conffile[ISC_DIR_PATHMAX];
static char saved_command_line[512];
static char version[512];
+static unsigned int maxsocks = 0;
void
ns_main_earlywarning(const char *format, ...) {
@@ -345,7 +347,8 @@ parse_command_line(int argc, char *argv[]) {
isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv,
- "46c:C:d:fgi:lm:n:N:p:P:st:u:vx:")) != -1) {
+ "46c:C:d:fgi:lm:n:N:p:P:"
+ "sS:t:u:vx:")) != -1) {
switch (ch) {
case '4':
if (disable4)
@@ -424,6 +427,10 @@ parse_command_line(int argc, char *argv[]) {
/* XXXRTH temporary syntax */
want_stats = ISC_TRUE;
break;
+ case 'S':
+ maxsocks = parse_int(isc_commandline_argument,
+ "max number of sockets");
+ break;
case 't':
/* XXXJAB should we make a copy? */
ns_g_chrootdir = isc_commandline_argument;
@@ -455,17 +462,14 @@ parse_command_line(int argc, char *argv[]) {
static isc_result_t
create_managers(void) {
isc_result_t result;
-#ifdef ISC_PLATFORM_USETHREADS
- unsigned int cpus_detected;
-#endif
+ unsigned int socks;
#ifdef ISC_PLATFORM_USETHREADS
- cpus_detected = isc_os_ncpus();
if (ns_g_cpus == 0)
- ns_g_cpus = cpus_detected;
+ ns_g_cpus = ns_g_cpus_detected;
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
ISC_LOG_INFO, "found %u CPU%s, using %u worker thread%s",
- cpus_detected, cpus_detected == 1 ? "" : "s",
+ ns_g_cpus_detected, ns_g_cpus_detected == 1 ? "" : "s",
ns_g_cpus, ns_g_cpus == 1 ? "" : "s");
#else
ns_g_cpus = 1;
@@ -486,13 +490,19 @@ create_managers(void) {
return (ISC_R_UNEXPECTED);
}
- result = isc_socketmgr_create(ns_g_mctx, &ns_g_socketmgr);
+ result = isc_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);
if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_socketmgr_create() failed: %s",
isc_result_totext(result));
return (ISC_R_UNEXPECTED);
}
+ result = isc_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);
+ if (result == ISC_R_SUCCESS) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER,
+ ISC_LOG_INFO, "using up to %u sockets", socks);
+ }
result = isc_entropy_create(ns_g_mctx, &ns_g_entropy);
if (result != ISC_R_SUCCESS) {
@@ -539,6 +549,7 @@ destroy_managers(void) {
static void
setup(void) {
isc_result_t result;
+ isc_resourcevalue_t old_openfiles;
#ifdef HAVE_LIBSCF
char *instance = NULL;
#endif
@@ -592,6 +603,13 @@ setup(void) {
}
#endif
+#ifdef ISC_PLATFORM_USETHREADS
+ /*
+ * Check for the number of cpu's before ns_os_chroot().
+ */
+ ns_g_cpus_detected = isc_os_ncpus();
+#endif
+
ns_os_chroot(ns_g_chrootdir);
/*
@@ -644,6 +662,23 @@ setup(void) {
(void)isc_resource_getlimit(isc_resource_openfiles,
&ns_g_initopenfiles);
+ /*
+ * System resources cannot effectively be tuned on some systems.
+ * Raise the limit in such cases for safety.
+ */
+ old_openfiles = ns_g_initopenfiles;
+ ns_os_adjustnofile();
+ (void)isc_resource_getlimit(isc_resource_openfiles,
+ &ns_g_initopenfiles);
+ if (old_openfiles != ns_g_initopenfiles) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_MAIN, ISC_LOG_NOTICE,
+ "adjusted limit on open files from "
+ "%" ISC_PRINT_QUADFORMAT "u to "
+ "%" ISC_PRINT_QUADFORMAT "u",
+ old_openfiles, ns_g_initopenfiles);
+ }
+
/*
* If the named configuration filename is relative, prepend the current
* directory's name before possibly changing to another directory.
@@ -654,7 +689,7 @@ setup(void) {
sizeof(absolute_conffile));
if (result != ISC_R_SUCCESS)
ns_main_earlyfatal("could not construct absolute path of "
- "configuration file: %s",
+ "configuration file: %s",
isc_result_totext(result));
ns_g_conffile = absolute_conffile;
}
@@ -727,7 +762,7 @@ ns_smf_get_instance(char **ins_name, int debug, isc_mem_t *mctx) {
if (debug)
UNEXPECTED_ERROR(__FILE__, __LINE__,
"scf_handle_create() failed: %s",
- scf_strerror(scf_error()));
+ scf_strerror(scf_error()));
return (ISC_R_FAILURE);
}
diff --git a/bin/named/named.8 b/bin/named/named.8
index a8d49747fe685..ab554211a1522 100644
--- a/bin/named/named.8
+++ b/bin/named/named.8
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: named.8,v 1.17.208.14 2007/06/20 02:26:23 marka Exp $
+.\" $Id: named.8,v 1.17.208.16 2008/08/22 01:21:36 tbox Exp $
.\"
.hy 0
.ad l
@@ -33,7 +33,7 @@
named \- Internet domain name server
.SH "SYNOPSIS"
.HP 6
-\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR]
+\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-S\ \fR\fB\fI#max\-socks\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR]
.SH "DESCRIPTION"
.PP
\fBnamed\fR
@@ -129,6 +129,21 @@ This option is mainly of interest to BIND 9 developers and may be removed or cha
.RE
.RE
.PP
+\-S \fI#max\-socks\fR
+.RS 4
+Allow
+\fBnamed\fR
+to use up to
+\fI#max\-socks\fR
+sockets.
+.RS
+.B "Warning:"
+This option should be unnecessary for the vast majority of users. The use of this option could even be harmful because the specified value may exceed the limitation of the underlying system API. It is therefore set only when the default configuration causes exhaustion of file descriptors and the operational environment is known to support the specified number of sockets. Note also that the actual maximum number is normally a little fewer than the specified value because
+\fBnamed\fR
+reserves some file descriptors for its internal use.
+.RE
+.RE
+.PP
\-t \fIdirectory\fR
.RS 4
\fBChroot\fR
@@ -230,7 +245,7 @@ BIND 9 Administrator Reference Manual.
.PP
Internet Systems Consortium
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000, 2001, 2003 Internet Software Consortium.
.br
diff --git a/bin/named/named.conf.5 b/bin/named/named.conf.5
index 15a8cf723c45c..790745511cf95 100644
--- a/bin/named/named.conf.5
+++ b/bin/named/named.conf.5
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -12,7 +12,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: named.conf.5,v 1.1.4.14 2007/06/20 02:26:23 marka Exp $
+.\" $Id: named.conf.5,v 1.1.4.15 2008/09/05 01:21:40 tbox Exp $
.\"
.hy 0
.ad l
@@ -173,6 +173,7 @@ options {
port \fIinteger\fR;
querylog \fIboolean\fR;
recursing\-file \fIquoted_string\fR;
+ reserved\-sockets \fIinteger\fR;
random\-device \fIquoted_string\fR;
recursive\-clients \fIinteger\fR;
serial\-query\-rate \fIinteger\fR;
@@ -464,5 +465,5 @@ zone \fIstring\fR \fIoptional_class\fR {
\fBrndc\fR(8),
BIND 9 Administrator Reference Manual
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
diff --git a/bin/named/named.conf.docbook b/bin/named/named.conf.docbook
index 0f5676cfdd613..6a9c384d1fb7a 100644
--- a/bin/named/named.conf.docbook
+++ b/bin/named/named.conf.docbook
@@ -17,7 +17,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
diff --git a/bin/named/named.conf.html b/bin/named/named.conf.html
index 54f20fbf731cd..e2e965a3585cc 100644
--- a/bin/named/named.conf.html
+++ b/bin/named/named.conf.html
@@ -1,5 +1,5 @@
-
+
@@ -31,7 +31,7 @@
named.conf
-
DESCRIPTION
+
DESCRIPTION
named.conf is the configuration file for
named. Statements are enclosed
@@ -50,14 +50,14 @@
zone stringoptional_class {
type ( master | slave | stub | hint |
@@ -484,13 +485,13 @@ zone
-
FILES
+
FILES
/etc/named.conf
-
SEE ALSO
+
SEE ALSO
named(8),
named-checkconf(8),
diff --git a/bin/named/named.docbook b/bin/named/named.docbook
index 43401d0274474..c6073c34dd364 100644
--- a/bin/named/named.docbook
+++ b/bin/named/named.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -37,6 +37,7 @@
200520062007
+ 2008Internet Systems Consortium, Inc. ("ISC")
@@ -65,6 +66,7 @@
+
@@ -217,6 +219,33 @@
+
+ -S #max-socks
+
+
+ Allow named to use up to
+ #max-socks sockets.
+
+
+
+ This option should be unnecessary for the vast majority
+ of users.
+ The use of this option could even be harmful because the
+ specified value may exceed the limitation of the
+ underlying system API.
+ It is therefore set only when the default configuration
+ causes exhaustion of file descriptors and the
+ operational environment is known to support the
+ specified number of sockets.
+ Note also that the actual maximum number is normally a little
+ fewer than the specified value because
+ named reserves some file descriptors
+ for its internal use.
+
+
+
+
+
-t directory
diff --git a/bin/named/named.html b/bin/named/named.html
index f90b087b25c32..101c3b4ee3345 100644
--- a/bin/named/named.html
+++ b/bin/named/named.html
@@ -1,5 +1,5 @@
-
+
@@ -29,10 +29,10 @@
named is a Domain Name System (DNS) server,
part of the BIND 9 distribution from ISC. For more
@@ -46,7 +46,7 @@
-
OPTIONS
+
OPTIONS
-4
@@ -123,6 +123,31 @@
+
-S #max-socks
+
+
+ Allow named to use up to
+ #max-socks sockets.
+
+
+
Warning
+
+ This option should be unnecessary for the vast majority
+ of users.
+ The use of this option could even be harmful because the
+ specified value may exceed the limitation of the
+ underlying system API.
+ It is therefore set only when the default configuration
+ causes exhaustion of file descriptors and the
+ operational environment is known to support the
+ specified number of sockets.
+ Note also that the actual maximum number is normally a little
+ fewer than the specified value because
+ named reserves some file descriptors
+ for its internal use.
+
+
+
-t directory
@@ -186,7 +211,7 @@
-
SIGNALS
+
SIGNALS
In routine operation, signals should not be used to control
the nameserver; rndc should be used
@@ -207,7 +232,7 @@
-
CONFIGURATION
+
CONFIGURATION
The named configuration file is too complex
to describe in detail here. A complete description is
@@ -216,7 +241,7 @@
-
FILES
+
FILES
/etc/named.conf
@@ -229,7 +254,7 @@
-
SEE ALSO
+
SEE ALSO
RFC 1033,
RFC 1034,
@@ -243,7 +268,7 @@
-
AUTHOR
+
AUTHOR
Internet Systems Consortium
diff --git a/bin/named/query.c b/bin/named/query.c
index 858df8cd975b6..2b2705fd363ff 100644
--- a/bin/named/query.c
+++ b/bin/named/query.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: query.c,v 1.198.2.13.4.53 2008/01/17 23:45:27 tbox Exp $ */
+/* $Id: query.c,v 1.198.2.13.4.56 2008/10/15 22:30:47 marka Exp $ */
#include
@@ -1900,6 +1900,13 @@ query_addwildcardproof(ns_client_t *client, dns_db_t *db,
&olabels);
(void)dns_name_fullcompare(name, &nsec.next, &order,
&nlabels);
+ /*
+ * Check for a pathological condition created when
+ * serving some malformed signed zones and bail out.
+ */
+ if (dns_name_countlabels(name) == nlabels)
+ goto cleanup;
+
if (olabels > nlabels)
dns_name_split(name, olabels, NULL, wname);
else
@@ -2067,12 +2074,13 @@ query_resume(isc_task_t *task, isc_event_t *event) {
static isc_result_t
query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qdomain,
- dns_rdataset_t *nameservers)
+ dns_rdataset_t *nameservers, isc_boolean_t resuming)
{
isc_result_t result;
dns_rdataset_t *rdataset, *sigrdataset;
- inc_stats(client, dns_statscounter_recursion);
+ if (!resuming)
+ inc_stats(client, dns_statscounter_recursion);
/*
* We are about to recurse, which means that this client will
@@ -2367,6 +2375,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
unsigned int options;
isc_boolean_t empty_wild;
dns_rdataset_t *noqname;
+ isc_boolean_t resuming;
CTRACE("query_find");
@@ -2392,6 +2401,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
need_wildcardproof = ISC_FALSE;
empty_wild = ISC_FALSE;
options = 0;
+ resuming = ISC_FALSE;
+ is_zone = ISC_FALSE;
if (event != NULL) {
/*
@@ -2401,7 +2412,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
want_restart = ISC_FALSE;
authoritative = ISC_FALSE;
- is_zone = ISC_FALSE;
qtype = event->qtype;
if (qtype == dns_rdatatype_rrsig || qtype == dns_rdatatype_sig)
@@ -2434,6 +2444,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
}
result = event->result;
+ resuming = ISC_TRUE;
goto resume;
}
@@ -2624,7 +2635,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
*/
if (RECURSIONOK(client)) {
result = query_recurse(client, qtype,
- NULL, NULL);
+ NULL, NULL, resuming);
if (result == ISC_R_SUCCESS)
client->query.attributes |=
NS_QUERYATTR_RECURSING;
@@ -2791,10 +2802,12 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
*/
if (dns_rdatatype_atparent(type))
result = query_recurse(client, qtype,
- NULL, NULL);
+ NULL, NULL,
+ resuming);
else
result = query_recurse(client, qtype,
- fname, rdataset);
+ fname, rdataset,
+ resuming);
if (result == ISC_R_SUCCESS)
client->query.attributes |=
NS_QUERYATTR_RECURSING;
@@ -3223,7 +3236,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
result = query_recurse(client,
qtype,
NULL,
- NULL);
+ NULL,
+ resuming);
if (result == ISC_R_SUCCESS)
client->query.attributes |=
NS_QUERYATTR_RECURSING;
diff --git a/bin/named/server.c b/bin/named/server.c
index afbecb8487efc..8acb00875210b 100644
--- a/bin/named/server.c
+++ b/bin/named/server.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: server.c,v 1.339.2.15.2.78.4.3 2008/07/23 23:47:49 tbox Exp $ */
+/* $Id: server.c,v 1.339.2.15.2.84 2008/09/04 23:45:32 tbox Exp $ */
#include
@@ -30,8 +30,10 @@
#include
#include
#include
+#include
#include
#include
+#include
#include
#include
#include
@@ -427,13 +429,15 @@ mustbesecure(const cfg_obj_t *mbs, dns_resolver_t *resolver)
*/
static isc_result_t
get_view_querysource_dispatch(const cfg_obj_t **maps,
- int af, dns_dispatch_t **dispatchp)
+ int af, dns_dispatch_t **dispatchp,
+ isc_boolean_t is_firstview)
{
isc_result_t result;
dns_dispatch_t *disp;
isc_sockaddr_t sa;
unsigned int attrs, attrmask;
const cfg_obj_t *obj = NULL;
+ unsigned int maxdispatchbuffers;
/*
* Make compiler happy.
@@ -485,12 +489,18 @@ get_view_querysource_dispatch(const cfg_obj_t **maps,
attrs |= DNS_DISPATCHATTR_IPV6;
break;
}
-
- if (isc_sockaddr_getport(&sa) != 0) {
+ if (isc_sockaddr_getport(&sa) == 0) {
+ attrs |= DNS_DISPATCHATTR_EXCLUSIVE;
+ maxdispatchbuffers = 4096;
+ } else {
INSIST(obj != NULL);
- cfg_obj_log(obj, ns_g_lctx, ISC_LOG_INFO,
- "using specific query-source port suppresses port "
- "randomization and can be insecure.");
+ if (is_firstview) {
+ cfg_obj_log(obj, ns_g_lctx, ISC_LOG_INFO,
+ "using specific query-source port "
+ "suppresses port randomization and can be "
+ "insecure.");
+ }
+ maxdispatchbuffers = 1000;
}
attrmask = 0;
@@ -502,7 +512,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps,
disp = NULL;
result = dns_dispatch_getudp(ns_g_dispatchmgr, ns_g_socketmgr,
ns_g_taskmgr, &sa, 4096,
- 1024, 32768, 16411, 16433,
+ maxdispatchbuffers, 32768, 16411, 16433,
attrs, attrmask, &disp);
if (result != ISC_R_SUCCESS) {
isc_sockaddr_t any;
@@ -912,8 +922,12 @@ configure_view(dns_view_t *view, const cfg_obj_t *config,
*
* XXXRTH Hardwired number of tasks.
*/
- CHECK(get_view_querysource_dispatch(maps, AF_INET, &dispatch4));
- CHECK(get_view_querysource_dispatch(maps, AF_INET6, &dispatch6));
+ CHECK(get_view_querysource_dispatch(maps, AF_INET, &dispatch4,
+ ISC_TF(ISC_LIST_PREV(view, link)
+ == NULL)));
+ CHECK(get_view_querysource_dispatch(maps, AF_INET6, &dispatch6,
+ ISC_TF(ISC_LIST_PREV(view, link)
+ == NULL)));
if (dispatch4 == NULL && dispatch6 == NULL) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"unable to obtain neither an IPv4 nor"
@@ -2129,24 +2143,41 @@ set_limits(const cfg_obj_t **maps) {
SETLIMIT("files", openfiles, "open files");
}
-static isc_result_t
-portlist_fromconf(dns_portlist_t *portlist, unsigned int family,
- const cfg_obj_t *ports)
+static void
+portset_fromconf(isc_portset_t *portset, const cfg_obj_t *ports,
+ isc_boolean_t positive)
{
const cfg_listelt_t *element;
- isc_result_t result = ISC_R_SUCCESS;
for (element = cfg_list_first(ports);
element != NULL;
element = cfg_list_next(element)) {
const cfg_obj_t *obj = cfg_listelt_value(element);
- in_port_t port = (in_port_t)cfg_obj_asuint32(obj);
- result = dns_portlist_add(portlist, family, port);
- if (result != ISC_R_SUCCESS)
- break;
+ if (cfg_obj_isuint32(obj)) {
+ in_port_t port = (in_port_t)cfg_obj_asuint32(obj);
+
+ if (positive)
+ isc_portset_add(portset, port);
+ else
+ isc_portset_remove(portset, port);
+ } else {
+ const cfg_obj_t *obj_loport, *obj_hiport;
+ in_port_t loport, hiport;
+
+ obj_loport = cfg_tuple_get(obj, "loport");
+ loport = (in_port_t)cfg_obj_asuint32(obj_loport);
+ obj_hiport = cfg_tuple_get(obj, "hiport");
+ hiport = (in_port_t)cfg_obj_asuint32(obj_hiport);
+
+ if (positive)
+ isc_portset_addrange(portset, loport, hiport);
+ else {
+ isc_portset_removerange(portset, loport,
+ hiport);
+ }
+ }
}
- return (result);
}
static isc_result_t
@@ -2160,21 +2191,24 @@ load_configuration(const char *filename, ns_server_t *server,
const cfg_obj_t *maps[3];
const cfg_obj_t *obj;
const cfg_obj_t *options;
- const cfg_obj_t *v4ports, *v6ports;
+ const cfg_obj_t *usev4ports, *avoidv4ports, *usev6ports, *avoidv6ports;
const cfg_obj_t *views;
dns_view_t *view = NULL;
dns_view_t *view_next;
dns_viewlist_t tmpviewlist;
dns_viewlist_t viewlist;
- in_port_t listen_port;
+ in_port_t listen_port, udpport_low, udpport_high;
int i;
- isc_resourcevalue_t files;
+ isc_portset_t *v4portset = NULL;
+ isc_portset_t *v6portset = NULL;
+ isc_resourcevalue_t nfiles;
isc_result_t result;
isc_uint32_t heartbeat_interval;
isc_uint32_t interface_interval;
isc_uint32_t reserved;
isc_uint32_t udpsize;
ns_aclconfctx_t aclconfctx;
+ unsigned int maxsocks;
ns_aclconfctx_init(&aclconfctx);
ISC_LIST_INIT(viewlist);
@@ -2233,15 +2267,6 @@ load_configuration(const char *filename, ns_server_t *server,
}
CHECK(result);
- /*
- * Check that the working directory is writable.
- */
- if (access(".", W_OK) != 0) {
- isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
- NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
- "the working directory is not writable");
- }
-
/*
* Check the validity of the configuration.
*/
@@ -2264,20 +2289,22 @@ load_configuration(const char *filename, ns_server_t *server,
set_limits(maps);
/*
- * Sanity check on "files" limit.
+ * Check if max number of open sockets that the system allows is
+ * sufficiently large. Failing this condition is not necessarily fatal,
+ * but may cause subsequent runtime failures for a busy recursive
+ * server.
*/
- result = isc_resource_curlimit(isc_resource_openfiles, &files);
- if (result == ISC_R_SUCCESS && files < FD_SETSIZE) {
+ result = isc_socketmgr_getmaxsockets(ns_g_socketmgr, &maxsocks);
+ if (result != ISC_R_SUCCESS)
+ maxsocks = 0;
+ result = isc_resource_getcurlimit(isc_resource_openfiles, &nfiles);
+ if (result == ISC_R_SUCCESS && (isc_resourcevalue_t)maxsocks > nfiles) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
- "the 'files' limit (%" ISC_PRINT_QUADFORMAT "u) "
- "is less than FD_SETSIZE (%d), increase "
- "'files' in named.conf or recompile with a "
- "smaller FD_SETSIZE.", files, FD_SETSIZE);
- if (files > FD_SETSIZE)
- files = FD_SETSIZE;
- } else
- files = FD_SETSIZE;
+ "max open files (%" ISC_PRINT_QUADFORMAT "u)"
+ " is smaller than max sockets (%u)",
+ nfiles, maxsocks);
+ }
/*
* Set the number of socket reserved for TCP, stdio etc.
@@ -2286,17 +2313,20 @@ load_configuration(const char *filename, ns_server_t *server,
result = ns_config_get(maps, "reserved-sockets", &obj);
INSIST(result == ISC_R_SUCCESS);
reserved = cfg_obj_asuint32(obj);
- if (files < 128U) /* Prevent underflow. */
- reserved = 0;
- else if (reserved > files - 128U) /* Mimimum UDP space. */
- reserved = files - 128;
- if (reserved < 128U) /* Mimimum TCP/stdio space. */
+ if (maxsocks != 0) {
+ if (maxsocks < 128U) /* Prevent underflow. */
+ reserved = 0;
+ else if (reserved > maxsocks - 128U) /* Minimum UDP space. */
+ reserved = maxsocks - 128;
+ }
+ /* Minimum TCP/stdio space. */
+ if (reserved < 128U)
reserved = 128;
- if (reserved + 128U > files) {
+ if (reserved + 128U > maxsocks && maxsocks != 0) {
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
"less than 128 UDP sockets available after "
- "applying 'reserved-sockets' and 'files'");
+ "applying 'reserved-sockets' and 'maxsockets'");
}
isc__socketmgr_setreserved(ns_g_socketmgr, reserved);
@@ -2324,24 +2354,64 @@ load_configuration(const char *filename, ns_server_t *server,
INSIST(result == ISC_R_SUCCESS);
server->aclenv.match_mapped = cfg_obj_asboolean(obj);
- v4ports = NULL;
- v6ports = NULL;
- (void)ns_config_get(maps, "avoid-v4-udp-ports", &v4ports);
- (void)ns_config_get(maps, "avoid-v6-udp-ports", &v6ports);
- if (v4ports != NULL || v6ports != NULL) {
- dns_portlist_t *portlist = NULL;
- result = dns_portlist_create(ns_g_mctx, &portlist);
- if (result == ISC_R_SUCCESS && v4ports != NULL)
- result = portlist_fromconf(portlist, AF_INET, v4ports);
- if (result == ISC_R_SUCCESS && v6ports != NULL)
- portlist_fromconf(portlist, AF_INET6, v6ports);
- if (result == ISC_R_SUCCESS)
- dns_dispatchmgr_setblackportlist(ns_g_dispatchmgr, portlist);
- if (portlist != NULL)
- dns_portlist_detach(&portlist);
- CHECK(result);
- } else
- dns_dispatchmgr_setblackportlist(ns_g_dispatchmgr, NULL);
+ /*
+ * Configure sets of UDP query source ports.
+ */
+ CHECKM(isc_portset_create(ns_g_mctx, &v4portset),
+ "creating UDP port set");
+ CHECKM(isc_portset_create(ns_g_mctx, &v6portset),
+ "creating UDP port set");
+
+ usev4ports = NULL;
+ usev6ports = NULL;
+ avoidv4ports = NULL;
+ avoidv6ports = NULL;
+
+ (void)ns_config_get(maps, "use-v4-udp-ports", &usev4ports);
+ if (usev4ports != NULL)
+ portset_fromconf(v4portset, usev4ports, ISC_TRUE);
+ else {
+ CHECKM(isc_net_getudpportrange(AF_INET, &udpport_low,
+ &udpport_high),
+ "get the default UDP/IPv4 port range");
+ if (udpport_low == udpport_high)
+ isc_portset_add(v4portset, udpport_low);
+ else {
+ isc_portset_addrange(v4portset, udpport_low,
+ udpport_high);
+ }
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_INFO,
+ "using default UDP/IPv4 port range: [%d, %d]",
+ udpport_low, udpport_high);
+ }
+ (void)ns_config_get(maps, "avoid-v4-udp-ports", &avoidv4ports);
+ if (avoidv4ports != NULL)
+ portset_fromconf(v4portset, avoidv4ports, ISC_FALSE);
+
+ (void)ns_config_get(maps, "use-v6-udp-ports", &usev6ports);
+ if (usev6ports != NULL)
+ portset_fromconf(v6portset, usev6ports, ISC_TRUE);
+ else {
+ CHECKM(isc_net_getudpportrange(AF_INET6, &udpport_low,
+ &udpport_high),
+ "get the default UDP/IPv6 port range");
+ if (udpport_low == udpport_high)
+ isc_portset_add(v6portset, udpport_low);
+ else {
+ isc_portset_addrange(v6portset, udpport_low,
+ udpport_high);
+ }
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_INFO,
+ "using default UDP/IPv6 port range: [%d, %d]",
+ udpport_low, udpport_high);
+ }
+ (void)ns_config_get(maps, "avoid-v6-udp-ports", &avoidv6ports);
+ if (avoidv6ports != NULL)
+ portset_fromconf(v6portset, avoidv6ports, ISC_FALSE);
+
+ dns_dispatchmgr_setavailports(ns_g_dispatchmgr, v4portset, v6portset);
/*
* Set the EDNS UDP size when we don't match a view.
@@ -2647,6 +2717,15 @@ load_configuration(const char *filename, ns_server_t *server,
if (first_time)
ns_os_changeuser();
+ /*
+ * Check that the working directory is writable.
+ */
+ if (access(".", W_OK) != 0) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
+ "the working directory is not writable");
+ }
+
/*
* Configure the logging system.
*
@@ -2807,6 +2886,12 @@ load_configuration(const char *filename, ns_server_t *server,
result = ISC_R_SUCCESS;
cleanup:
+ if (v4portset != NULL)
+ isc_portset_destroy(ns_g_mctx, &v4portset);
+
+ if (v6portset != NULL)
+ isc_portset_destroy(ns_g_mctx, &v6portset);
+
ns_aclconfctx_destroy(&aclconfctx);
if (parser != NULL) {
diff --git a/bin/named/unix/include/named/os.h b/bin/named/unix/include/named/os.h
index 1c4bec0707272..96604e54acd4b 100644
--- a/bin/named/unix/include/named/os.h
+++ b/bin/named/unix/include/named/os.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: os.h,v 1.14.2.2.8.12 2007/08/28 07:19:08 tbox Exp $ */
+/* $Id: os.h,v 1.14.2.2.8.14 2008/10/24 01:42:46 tbox Exp $ */
#ifndef NS_OS_H
#define NS_OS_H 1
@@ -43,12 +43,14 @@ ns_os_inituserinfo(const char *username);
void
ns_os_changeuser(void);
+void
+ns_os_adjustnofile(void);
+
void
ns_os_minprivs(void);
void
ns_os_writepidfile(const char *filename, isc_boolean_t first_time);
-
void
ns_os_shutdown(void);
diff --git a/bin/named/unix/os.c b/bin/named/unix/os.c
index f8026660391ea..3fe15cb1a0070 100644
--- a/bin/named/unix/os.c
+++ b/bin/named/unix/os.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: os.c,v 1.46.2.4.8.30 2008/01/17 23:45:27 tbox Exp $ */
+/* $Id: os.c,v 1.46.2.4.8.33 2008/10/24 01:42:46 tbox Exp $ */
#include
#include
@@ -40,6 +40,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -114,6 +115,16 @@ static int dfd[2] = { -1, -1 };
static isc_boolean_t non_root = ISC_FALSE;
static isc_boolean_t non_root_caps = ISC_FALSE;
+#if defined(HAVE_CAPSET)
+#undef _POSIX_SOURCE
+#ifdef HAVE_SYS_CAPABILITY_H
+#include
+#else
+#include
+int capset(cap_user_header_t hdrp, const cap_user_data_t datap);
+#endif
+#include
+#else
/*
* We define _LINUX_FS_H to prevent it from being included. We don't need
* anything from it, and the files it includes cause warnings with 2.2
@@ -146,6 +157,7 @@ static isc_boolean_t non_root_caps = ISC_FALSE;
#endif
#define SYS_capset __NR_capset
#endif
+#endif
static void
linux_setcaps(unsigned int caps) {
@@ -163,13 +175,23 @@ linux_setcaps(unsigned int caps) {
cap.effective = caps;
cap.permitted = caps;
cap.inheritable = 0;
- if (syscall(SYS_capset, &caphead, &cap) < 0) {
+#ifdef HAVE_CAPSET
+ if (capset(&caphead, &cap) < 0 ) {
isc__strerror(errno, strbuf, sizeof(strbuf));
ns_main_earlyfatal("capset failed: %s:"
" please ensure that the capset kernel"
" module is loaded. see insmod(8)",
strbuf);
}
+#else
+ if (syscall(SYS_capset, &caphead, &cap) < 0) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ ns_main_earlyfatal("syscall(capset) failed: %s:"
+ " please ensure that the capset kernel"
+ " module is loaded. see insmod(8)",
+ strbuf);
+ }
+#endif
}
static void
@@ -510,6 +532,24 @@ ns_os_changeuser(void) {
#endif
}
+void
+ns_os_adjustnofile() {
+#ifdef HAVE_LINUXTHREADS
+ isc_result_t result;
+ isc_resourcevalue_t newvalue;
+
+ /*
+ * Linux: max number of open files specified by one thread doesn't seem
+ * to apply to other threads on Linux.
+ */
+ newvalue = ISC_RESOURCE_UNLIMITED;
+
+ result = isc_resource_setlimit(isc_resource_openfiles, newvalue);
+ if (result != ISC_R_SUCCESS)
+ ns_main_earlywarning("couldn't adjust limit on open files");
+#endif
+}
+
void
ns_os_minprivs(void) {
#ifdef HAVE_SYS_PRCTL_H
diff --git a/bin/named/update.c b/bin/named/update.c
index 6733d76902b1c..b556935a7bcad 100644
--- a/bin/named/update.c
+++ b/bin/named/update.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: update.c,v 1.88.2.5.2.35 2008/01/17 23:45:27 tbox Exp $ */
+/* $Id: update.c,v 1.88.2.5.2.36 2008/04/28 03:28:10 marka Exp $ */
#include
@@ -1612,10 +1612,10 @@ find_zone_keys(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver,
* Add RRSIG records for an RRset, recording the change in "diff".
*/
static isc_result_t
-add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
- dns_rdatatype_t type, dns_diff_t *diff, dst_key_t **keys,
- unsigned int nkeys, isc_mem_t *mctx, isc_stdtime_t inception,
- isc_stdtime_t expire)
+add_sigs(ns_client_t *client, dns_zone_t *zone, dns_db_t *db,
+ dns_dbversion_t *ver, dns_name_t *name, dns_rdatatype_t type,
+ dns_diff_t *diff, dst_key_t **keys, unsigned int nkeys,
+ isc_mem_t *mctx, isc_stdtime_t inception, isc_stdtime_t expire)
{
isc_result_t result;
dns_dbnode_t *node = NULL;
@@ -1624,6 +1624,7 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
isc_buffer_t buffer;
unsigned char data[1024]; /* XXX */
unsigned int i;
+ isc_boolean_t added_sig = ISC_FALSE;
dns_rdataset_init(&rdataset);
isc_buffer_init(&buffer, data, sizeof(data));
@@ -1648,6 +1649,13 @@ add_sigs(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
CHECK(update_one_rr(db, ver, diff, DNS_DIFFOP_ADD, name,
rdataset.ttl, &sig_rdata));
dns_rdata_reset(&sig_rdata);
+ added_sig = ISC_TRUE;
+ }
+ if (!added_sig) {
+ update_log(client, zone, ISC_LOG_ERROR,
+ "found no private keys, "
+ "unable to generate any signatures");
+ result = ISC_R_NOTFOUND;
}
failure:
@@ -1767,9 +1775,9 @@ update_signatures(ns_client_t *client, dns_zone_t *zone, dns_db_t *db,
*/
CHECK(rrset_exists(db, newver, name, type, 0, &flag));
if (flag) {
- CHECK(add_sigs(db, newver, name, type,
- &sig_diff, zone_keys, nkeys,
- client->mctx, inception,
+ CHECK(add_sigs(client, zone, db, newver, name,
+ type, &sig_diff, zone_keys,
+ nkeys, client->mctx, inception,
expire));
}
skip:
@@ -1953,9 +1961,10 @@ update_signatures(ns_client_t *client, dns_zone_t *zone, dns_db_t *db,
dns_rdatatype_rrsig, dns_rdatatype_nsec,
NULL, &sig_diff));
} else if (t->op == DNS_DIFFOP_ADD) {
- CHECK(add_sigs(db, newver, &t->name, dns_rdatatype_nsec,
- &sig_diff, zone_keys, nkeys,
- client->mctx, inception, expire));
+ CHECK(add_sigs(client, zone, db, newver, &t->name,
+ dns_rdatatype_nsec, &sig_diff,
+ zone_keys, nkeys, client->mctx,
+ inception, expire));
} else {
INSIST(0);
}
diff --git a/bin/nsupdate/Makefile.in b/bin/nsupdate/Makefile.in
index 3474f7cfa06c0..a09760353e0c0 100644
--- a/bin/nsupdate/Makefile.in
+++ b/bin/nsupdate/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000-2003 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
@@ -13,7 +13,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: Makefile.in,v 1.15.12.13 2007/08/28 07:19:08 tbox Exp $
+# $Id: Makefile.in,v 1.15.12.15 2008/08/29 23:45:33 tbox Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -55,7 +55,7 @@ UOBJS =
SRCS = nsupdate.c
-MANPAGES = nsupdate.8
+MANPAGES = nsupdate.1
HTMLPAGES = nsupdate.html
@@ -76,8 +76,8 @@ clean distclean::
installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${bindir}
- $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
+ $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
install:: nsupdate@EXEEXT@ installdirs
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} nsupdate@EXEEXT@ ${DESTDIR}${bindir}
- ${INSTALL_DATA} ${srcdir}/nsupdate.8 ${DESTDIR}${mandir}/man8
+ ${INSTALL_DATA} ${srcdir}/nsupdate.1 ${DESTDIR}${mandir}/man1
diff --git a/bin/nsupdate/nsupdate.1 b/bin/nsupdate/nsupdate.1
new file mode 100644
index 0000000000000..14b9eeb53a610
--- /dev/null
+++ b/bin/nsupdate/nsupdate.1
@@ -0,0 +1,348 @@
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2000-2003 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 ISC DISCLAIMS ALL WARRANTIES WITH
+.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+.\" AND FITNESS. IN NO EVENT SHALL ISC 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: nsupdate.1,v 1.1.6.2 2008/09/01 01:53:43 tbox Exp $
+.\"
+.hy 0
+.ad l
+.\" Title: nsupdate
+.\" Author:
+.\" Generator: DocBook XSL Stylesheets v1.71.1
+.\" Date: Jun 30, 2000
+.\" Manual: BIND9
+.\" Source: BIND9
+.\"
+.TH "NSUPDATE" "1" "Jun 30, 2000" "BIND9" "BIND9"
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.SH "NAME"
+nsupdate \- Dynamic DNS update utility
+.SH "SYNOPSIS"
+.HP 9
+\fBnsupdate\fR [\fB\-d\fR] [[\fB\-y\ \fR\fB\fIkeyname:secret\fR\fR] | [\fB\-k\ \fR\fB\fIkeyfile\fR\fR]] [\fB\-t\ \fR\fB\fItimeout\fR\fR] [\fB\-u\ \fR\fB\fIudptimeout\fR\fR] [\fB\-r\ \fR\fB\fIudpretries\fR\fR] [\fB\-v\fR] [filename]
+.SH "DESCRIPTION"
+.PP
+\fBnsupdate\fR
+is used to submit Dynamic DNS Update requests as defined in RFC2136 to a name server. This allows resource records to be added or removed from a zone without manually editing the zone file. A single update request can contain requests to add or remove more than one resource record.
+.PP
+Zones that are under dynamic control via
+\fBnsupdate\fR
+or a DHCP server should not be edited by hand. Manual edits could conflict with dynamic updates and cause data to be lost.
+.PP
+The resource records that are dynamically added or removed with
+\fBnsupdate\fR
+have to be in the same zone. Requests are sent to the zone's master server. This is identified by the MNAME field of the zone's SOA record.
+.PP
+The
+\fB\-d\fR
+option makes
+\fBnsupdate\fR
+operate in debug mode. This provides tracing information about the update requests that are made and the replies received from the name server.
+.PP
+Transaction signatures can be used to authenticate the Dynamic DNS updates. These use the TSIG resource record type described in RFC2845 or the SIG(0) record described in RFC3535 and RFC2931. TSIG relies on a shared secret that should only be known to
+\fBnsupdate\fR
+and the name server. Currently, the only supported encryption algorithm for TSIG is HMAC\-MD5, which is defined in RFC 2104. Once other algorithms are defined for TSIG, applications will need to ensure they select the appropriate algorithm as well as the key when authenticating each other. For instance, suitable
+\fBkey\fR
+and
+\fBserver\fR
+statements would be added to
+\fI/etc/named.conf\fR
+so that the name server can associate the appropriate secret key and algorithm with the IP address of the client application that will be using TSIG authentication. SIG(0) uses public key cryptography. To use a SIG(0) key, the public key must be stored in a KEY record in a zone served by the name server.
+\fBnsupdate\fR
+does not read
+\fI/etc/named.conf\fR.
+.PP
+\fBnsupdate\fR
+uses the
+\fB\-y\fR
+or
+\fB\-k\fR
+option (with an HMAC\-MD5 key) to provide the shared secret needed to generate a TSIG record for authenticating Dynamic DNS update requests. These options are mutually exclusive. With the
+\fB\-k\fR
+option,
+\fBnsupdate\fR
+reads the shared secret from the file
+\fIkeyfile\fR, whose name is of the form
+\fIK{name}.+157.+{random}.private\fR. For historical reasons, the file
+\fIK{name}.+157.+{random}.key\fR
+must also be present. When the
+\fB\-y\fR
+option is used, a signature is generated from
+\fIkeyname:secret.\fR
+\fIkeyname\fR
+is the name of the key, and
+\fIsecret\fR
+is the base64 encoded shared secret. Use of the
+\fB\-y\fR
+option is discouraged because the shared secret is supplied as a command line argument in clear text. This may be visible in the output from
+\fBps\fR(1 )
+or in a history file maintained by the user's shell.
+.PP
+The
+\fB\-k\fR
+may also be used to specify a SIG(0) key used to authenticate Dynamic DNS update requests. In this case, the key specified is not an HMAC\-MD5 key.
+.PP
+By default
+\fBnsupdate\fR
+uses UDP to send update requests to the name server unless they are too large to fit in a UDP request in which case TCP will be used. The
+\fB\-v\fR
+option makes
+\fBnsupdate\fR
+use a TCP connection. This may be preferable when a batch of update requests is made.
+.PP
+The
+\fB\-t\fR
+option sets the maximum time an update request can take before it is aborted. The default is 300 seconds. Zero can be used to disable the timeout.
+.PP
+The
+\fB\-u\fR
+option sets the UDP retry interval. The default is 3 seconds. If zero, the interval will be computed from the timeout interval and number of UDP retries.
+.PP
+The
+\fB\-r\fR
+option sets the number of UDP retries. The default is 3. If zero, only one update request will be made.
+.SH "INPUT FORMAT"
+.PP
+\fBnsupdate\fR
+reads input from
+\fIfilename\fR
+or standard input. Each command is supplied on exactly one line of input. Some commands are for administrative purposes. The others are either update instructions or prerequisite checks on the contents of the zone. These checks set conditions that some name or set of resource records (RRset) either exists or is absent from the zone. These conditions must be met if the entire update request is to succeed. Updates will be rejected if the tests for the prerequisite conditions fail.
+.PP
+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 (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:
+.PP
+\fBserver\fR {servername} [port]
+.RS 4
+Sends all dynamic update requests to the name server
+\fIservername\fR. When no server statement is provided,
+\fBnsupdate\fR
+will send updates to the master server of the correct zone. The MNAME field of that zone's SOA record will identify the master server for that zone.
+\fIport\fR
+is the port number on
+\fIservername\fR
+where the dynamic update requests get sent. If no port number is specified, the default DNS port number of 53 is used.
+.RE
+.PP
+\fBlocal\fR {address} [port]
+.RS 4
+Sends all dynamic update requests using the local
+\fIaddress\fR. When no local statement is provided,
+\fBnsupdate\fR
+will send updates using an address and port chosen by the system.
+\fIport\fR
+can additionally be used to make requests come from a specific port. If no port number is specified, the system will assign one.
+.RE
+.PP
+\fBzone\fR {zonename}
+.RS 4
+Specifies that all updates are to be made to the zone
+\fIzonename\fR. If no
+\fIzone\fR
+statement is provided,
+\fBnsupdate\fR
+will attempt determine the correct zone to update based on the rest of the input.
+.RE
+.PP
+\fBclass\fR {classname}
+.RS 4
+Specify the default class. If no
+\fIclass\fR
+is specified, the default class is
+\fIIN\fR.
+.RE
+.PP
+\fBkey\fR {name} {secret}
+.RS 4
+Specifies that all updates are to be TSIG\-signed using the
+\fIkeyname\fR
+\fIkeysecret\fR
+pair. The
+\fBkey\fR
+command overrides any key specified on the command line via
+\fB\-y\fR
+or
+\fB\-k\fR.
+.RE
+.PP
+\fBprereq nxdomain\fR {domain\-name}
+.RS 4
+Requires that no resource record of any type exists with name
+\fIdomain\-name\fR.
+.RE
+.PP
+\fBprereq yxdomain\fR {domain\-name}
+.RS 4
+Requires that
+\fIdomain\-name\fR
+exists (has as at least one resource record, of any type).
+.RE
+.PP
+\fBprereq nxrrset\fR {domain\-name} [class] {type}
+.RS 4
+Requires that no resource record exists of the specified
+\fItype\fR,
+\fIclass\fR
+and
+\fIdomain\-name\fR. If
+\fIclass\fR
+is omitted, IN (internet) is assumed.
+.RE
+.PP
+\fBprereq yxrrset\fR {domain\-name} [class] {type}
+.RS 4
+This requires that a resource record of the specified
+\fItype\fR,
+\fIclass\fR
+and
+\fIdomain\-name\fR
+must exist. If
+\fIclass\fR
+is omitted, IN (internet) is assumed.
+.RE
+.PP
+\fBprereq yxrrset\fR {domain\-name} [class] {type} {data...}
+.RS 4
+The
+\fIdata\fR
+from each set of prerequisites of this form sharing a common
+\fItype\fR,
+\fIclass\fR, and
+\fIdomain\-name\fR
+are combined to form a set of RRs. This set of RRs must exactly match the set of RRs existing in the zone at the given
+\fItype\fR,
+\fIclass\fR, and
+\fIdomain\-name\fR. The
+\fIdata\fR
+are written in the standard text representation of the resource record's RDATA.
+.RE
+.PP
+\fBupdate delete\fR {domain\-name} [ttl] [class] [type\ [data...]]
+.RS 4
+Deletes any resource records named
+\fIdomain\-name\fR. If
+\fItype\fR
+and
+\fIdata\fR
+is provided, only matching resource records will be removed. The internet class is assumed if
+\fIclass\fR
+is not supplied. The
+\fIttl\fR
+is ignored, and is only allowed for compatibility.
+.RE
+.PP
+\fBupdate add\fR {domain\-name} {ttl} [class] {type} {data...}
+.RS 4
+Adds a new resource record with the specified
+\fIttl\fR,
+\fIclass\fR
+and
+\fIdata\fR.
+.RE
+.PP
+\fBshow\fR
+.RS 4
+Displays the current message, containing all of the prerequisites and updates specified since the last send.
+.RE
+.PP
+\fBsend\fR
+.RS 4
+Sends the current message. This is equivalent to entering a blank line.
+.RE
+.PP
+\fBanswer\fR
+.RS 4
+Displays the answer.
+.RE
+.PP
+Lines beginning with a semicolon are comments and are ignored.
+.SH "EXAMPLES"
+.PP
+The examples below show how
+\fBnsupdate\fR
+could be used to insert and delete resource records from the
+\fBexample.com\fR
+zone. Notice that the input in each example contains a trailing blank line so that a group of commands are sent as one dynamic update request to the master name server for
+\fBexample.com\fR.
+.sp
+.RS 4
+.nf
+# nsupdate
+> update delete oldhost.example.com A
+> update add newhost.example.com 86400 A 172.16.1.1
+> send
+.fi
+.RE
+.sp
+.PP
+Any A records for
+\fBoldhost.example.com\fR
+are deleted. And an A record for
+\fBnewhost.example.com\fR
+with IP address 172.16.1.1 is added. The newly\-added record has a 1 day TTL (86400 seconds).
+.sp
+.RS 4
+.nf
+# nsupdate
+> prereq nxdomain nickname.example.com
+> update add nickname.example.com 86400 CNAME somehost.example.com
+> send
+.fi
+.RE
+.sp
+.PP
+The prerequisite condition gets the name server to check that there are no resource records of any type for
+\fBnickname.example.com\fR. If there are, the update request fails. If this name does not exist, a CNAME for it is added. This ensures that when the CNAME is added, it cannot conflict with the long\-standing rule in RFC1034 that a name must not exist as any other record type if it exists as a CNAME. (The rule has been updated for DNSSEC in RFC2535 to allow CNAMEs to have RRSIG, DNSKEY and NSEC records.)
+.SH "FILES"
+.PP
+\fB/etc/resolv.conf\fR
+.RS 4
+used to identify default name server
+.RE
+.PP
+\fBK{name}.+157.+{random}.key\fR
+.RS 4
+base\-64 encoding of HMAC\-MD5 key created by
+\fBdnssec\-keygen\fR(8).
+.RE
+.PP
+\fBK{name}.+157.+{random}.private\fR
+.RS 4
+base\-64 encoding of HMAC\-MD5 key created by
+\fBdnssec\-keygen\fR(8).
+.RE
+.SH "SEE ALSO"
+.PP
+\fBRFC2136\fR(),
+\fBRFC3007\fR(),
+\fBRFC2104\fR(),
+\fBRFC2845\fR(),
+\fBRFC1034\fR(),
+\fBRFC2535\fR(),
+\fBRFC2931\fR(),
+\fBnamed\fR(8),
+\fBdnssec\-keygen\fR(8).
+.SH "BUGS"
+.PP
+The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library for its cryptographic operations, and may change in future releases.
+.SH "COPYRIGHT"
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
+.br
+Copyright \(co 2000\-2003 Internet Software Consortium.
+.br
diff --git a/bin/nsupdate/nsupdate.8 b/bin/nsupdate/nsupdate.8
deleted file mode 100644
index 5d608e3565afd..0000000000000
--- a/bin/nsupdate/nsupdate.8
+++ /dev/null
@@ -1,348 +0,0 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
-.\" Copyright (C) 2000-2003 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 ISC DISCLAIMS ALL WARRANTIES WITH
-.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-.\" AND FITNESS. IN NO EVENT SHALL ISC 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: nsupdate.8,v 1.24.2.2.2.13 2007/05/09 03:32:36 marka Exp $
-.\"
-.hy 0
-.ad l
-.\" Title: nsupdate
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.71.1
-.\" Date: Jun 30, 2000
-.\" Manual: BIND9
-.\" Source: BIND9
-.\"
-.TH "NSUPDATE" "8" "Jun 30, 2000" "BIND9" "BIND9"
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.SH "NAME"
-nsupdate \- Dynamic DNS update utility
-.SH "SYNOPSIS"
-.HP 9
-\fBnsupdate\fR [\fB\-d\fR] [[\fB\-y\ \fR\fB\fIkeyname:secret\fR\fR] | [\fB\-k\ \fR\fB\fIkeyfile\fR\fR]] [\fB\-t\ \fR\fB\fItimeout\fR\fR] [\fB\-u\ \fR\fB\fIudptimeout\fR\fR] [\fB\-r\ \fR\fB\fIudpretries\fR\fR] [\fB\-v\fR] [filename]
-.SH "DESCRIPTION"
-.PP
-\fBnsupdate\fR
-is used to submit Dynamic DNS Update requests as defined in RFC2136 to a name server. This allows resource records to be added or removed from a zone without manually editing the zone file. A single update request can contain requests to add or remove more than one resource record.
-.PP
-Zones that are under dynamic control via
-\fBnsupdate\fR
-or a DHCP server should not be edited by hand. Manual edits could conflict with dynamic updates and cause data to be lost.
-.PP
-The resource records that are dynamically added or removed with
-\fBnsupdate\fR
-have to be in the same zone. Requests are sent to the zone's master server. This is identified by the MNAME field of the zone's SOA record.
-.PP
-The
-\fB\-d\fR
-option makes
-\fBnsupdate\fR
-operate in debug mode. This provides tracing information about the update requests that are made and the replies received from the name server.
-.PP
-Transaction signatures can be used to authenticate the Dynamic DNS updates. These use the TSIG resource record type described in RFC2845 or the SIG(0) record described in RFC3535 and RFC2931. TSIG relies on a shared secret that should only be known to
-\fBnsupdate\fR
-and the name server. Currently, the only supported encryption algorithm for TSIG is HMAC\-MD5, which is defined in RFC 2104. Once other algorithms are defined for TSIG, applications will need to ensure they select the appropriate algorithm as well as the key when authenticating each other. For instance, suitable
-\fBkey\fR
-and
-\fBserver\fR
-statements would be added to
-\fI/etc/named.conf\fR
-so that the name server can associate the appropriate secret key and algorithm with the IP address of the client application that will be using TSIG authentication. SIG(0) uses public key cryptography. To use a SIG(0) key, the public key must be stored in a KEY record in a zone served by the name server.
-\fBnsupdate\fR
-does not read
-\fI/etc/named.conf\fR.
-.PP
-\fBnsupdate\fR
-uses the
-\fB\-y\fR
-or
-\fB\-k\fR
-option (with an HMAC\-MD5 key) to provide the shared secret needed to generate a TSIG record for authenticating Dynamic DNS update requests. These options are mutually exclusive. With the
-\fB\-k\fR
-option,
-\fBnsupdate\fR
-reads the shared secret from the file
-\fIkeyfile\fR, whose name is of the form
-\fIK{name}.+157.+{random}.private\fR. For historical reasons, the file
-\fIK{name}.+157.+{random}.key\fR
-must also be present. When the
-\fB\-y\fR
-option is used, a signature is generated from
-\fIkeyname:secret.\fR
-\fIkeyname\fR
-is the name of the key, and
-\fIsecret\fR
-is the base64 encoded shared secret. Use of the
-\fB\-y\fR
-option is discouraged because the shared secret is supplied as a command line argument in clear text. This may be visible in the output from
-\fBps\fR(1 )
-or in a history file maintained by the user's shell.
-.PP
-The
-\fB\-k\fR
-may also be used to specify a SIG(0) key used to authenticate Dynamic DNS update requests. In this case, the key specified is not an HMAC\-MD5 key.
-.PP
-By default
-\fBnsupdate\fR
-uses UDP to send update requests to the name server unless they are too large to fit in a UDP request in which case TCP will be used. The
-\fB\-v\fR
-option makes
-\fBnsupdate\fR
-use a TCP connection. This may be preferable when a batch of update requests is made.
-.PP
-The
-\fB\-t\fR
-option sets the maximum time an update request can take before it is aborted. The default is 300 seconds. Zero can be used to disable the timeout.
-.PP
-The
-\fB\-u\fR
-option sets the UDP retry interval. The default is 3 seconds. If zero, the interval will be computed from the timeout interval and number of UDP retries.
-.PP
-The
-\fB\-r\fR
-option sets the number of UDP retries. The default is 3. If zero, only one update request will be made.
-.SH "INPUT FORMAT"
-.PP
-\fBnsupdate\fR
-reads input from
-\fIfilename\fR
-or standard input. Each command is supplied on exactly one line of input. Some commands are for administrative purposes. The others are either update instructions or prerequisite checks on the contents of the zone. These checks set conditions that some name or set of resource records (RRset) either exists or is absent from the zone. These conditions must be met if the entire update request is to succeed. Updates will be rejected if the tests for the prerequisite conditions fail.
-.PP
-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 (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:
-.PP
-\fBserver\fR {servername} [port]
-.RS 4
-Sends all dynamic update requests to the name server
-\fIservername\fR. When no server statement is provided,
-\fBnsupdate\fR
-will send updates to the master server of the correct zone. The MNAME field of that zone's SOA record will identify the master server for that zone.
-\fIport\fR
-is the port number on
-\fIservername\fR
-where the dynamic update requests get sent. If no port number is specified, the default DNS port number of 53 is used.
-.RE
-.PP
-\fBlocal\fR {address} [port]
-.RS 4
-Sends all dynamic update requests using the local
-\fIaddress\fR. When no local statement is provided,
-\fBnsupdate\fR
-will send updates using an address and port chosen by the system.
-\fIport\fR
-can additionally be used to make requests come from a specific port. If no port number is specified, the system will assign one.
-.RE
-.PP
-\fBzone\fR {zonename}
-.RS 4
-Specifies that all updates are to be made to the zone
-\fIzonename\fR. If no
-\fIzone\fR
-statement is provided,
-\fBnsupdate\fR
-will attempt determine the correct zone to update based on the rest of the input.
-.RE
-.PP
-\fBclass\fR {classname}
-.RS 4
-Specify the default class. If no
-\fIclass\fR
-is specified, the default class is
-\fIIN\fR.
-.RE
-.PP
-\fBkey\fR {name} {secret}
-.RS 4
-Specifies that all updates are to be TSIG\-signed using the
-\fIkeyname\fR
-\fIkeysecret\fR
-pair. The
-\fBkey\fR
-command overrides any key specified on the command line via
-\fB\-y\fR
-or
-\fB\-k\fR.
-.RE
-.PP
-\fBprereq nxdomain\fR {domain\-name}
-.RS 4
-Requires that no resource record of any type exists with name
-\fIdomain\-name\fR.
-.RE
-.PP
-\fBprereq yxdomain\fR {domain\-name}
-.RS 4
-Requires that
-\fIdomain\-name\fR
-exists (has as at least one resource record, of any type).
-.RE
-.PP
-\fBprereq nxrrset\fR {domain\-name} [class] {type}
-.RS 4
-Requires that no resource record exists of the specified
-\fItype\fR,
-\fIclass\fR
-and
-\fIdomain\-name\fR. If
-\fIclass\fR
-is omitted, IN (internet) is assumed.
-.RE
-.PP
-\fBprereq yxrrset\fR {domain\-name} [class] {type}
-.RS 4
-This requires that a resource record of the specified
-\fItype\fR,
-\fIclass\fR
-and
-\fIdomain\-name\fR
-must exist. If
-\fIclass\fR
-is omitted, IN (internet) is assumed.
-.RE
-.PP
-\fBprereq yxrrset\fR {domain\-name} [class] {type} {data...}
-.RS 4
-The
-\fIdata\fR
-from each set of prerequisites of this form sharing a common
-\fItype\fR,
-\fIclass\fR, and
-\fIdomain\-name\fR
-are combined to form a set of RRs. This set of RRs must exactly match the set of RRs existing in the zone at the given
-\fItype\fR,
-\fIclass\fR, and
-\fIdomain\-name\fR. The
-\fIdata\fR
-are written in the standard text representation of the resource record's RDATA.
-.RE
-.PP
-\fBupdate delete\fR {domain\-name} [ttl] [class] [type\ [data...]]
-.RS 4
-Deletes any resource records named
-\fIdomain\-name\fR. If
-\fItype\fR
-and
-\fIdata\fR
-is provided, only matching resource records will be removed. The internet class is assumed if
-\fIclass\fR
-is not supplied. The
-\fIttl\fR
-is ignored, and is only allowed for compatibility.
-.RE
-.PP
-\fBupdate add\fR {domain\-name} {ttl} [class] {type} {data...}
-.RS 4
-Adds a new resource record with the specified
-\fIttl\fR,
-\fIclass\fR
-and
-\fIdata\fR.
-.RE
-.PP
-\fBshow\fR
-.RS 4
-Displays the current message, containing all of the prerequisites and updates specified since the last send.
-.RE
-.PP
-\fBsend\fR
-.RS 4
-Sends the current message. This is equivalent to entering a blank line.
-.RE
-.PP
-\fBanswer\fR
-.RS 4
-Displays the answer.
-.RE
-.PP
-Lines beginning with a semicolon are comments and are ignored.
-.SH "EXAMPLES"
-.PP
-The examples below show how
-\fBnsupdate\fR
-could be used to insert and delete resource records from the
-\fBexample.com\fR
-zone. Notice that the input in each example contains a trailing blank line so that a group of commands are sent as one dynamic update request to the master name server for
-\fBexample.com\fR.
-.sp
-.RS 4
-.nf
-# nsupdate
-> update delete oldhost.example.com A
-> update add newhost.example.com 86400 A 172.16.1.1
-> send
-.fi
-.RE
-.sp
-.PP
-Any A records for
-\fBoldhost.example.com\fR
-are deleted. And an A record for
-\fBnewhost.example.com\fR
-with IP address 172.16.1.1 is added. The newly\-added record has a 1 day TTL (86400 seconds).
-.sp
-.RS 4
-.nf
-# nsupdate
-> prereq nxdomain nickname.example.com
-> update add nickname.example.com 86400 CNAME somehost.example.com
-> send
-.fi
-.RE
-.sp
-.PP
-The prerequisite condition gets the name server to check that there are no resource records of any type for
-\fBnickname.example.com\fR. If there are, the update request fails. If this name does not exist, a CNAME for it is added. This ensures that when the CNAME is added, it cannot conflict with the long\-standing rule in RFC1034 that a name must not exist as any other record type if it exists as a CNAME. (The rule has been updated for DNSSEC in RFC2535 to allow CNAMEs to have RRSIG, DNSKEY and NSEC records.)
-.SH "FILES"
-.PP
-\fB/etc/resolv.conf\fR
-.RS 4
-used to identify default name server
-.RE
-.PP
-\fBK{name}.+157.+{random}.key\fR
-.RS 4
-base\-64 encoding of HMAC\-MD5 key created by
-\fBdnssec\-keygen\fR(8).
-.RE
-.PP
-\fBK{name}.+157.+{random}.private\fR
-.RS 4
-base\-64 encoding of HMAC\-MD5 key created by
-\fBdnssec\-keygen\fR(8).
-.RE
-.SH "SEE ALSO"
-.PP
-\fBRFC2136\fR(),
-\fBRFC3007\fR(),
-\fBRFC2104\fR(),
-\fBRFC2845\fR(),
-\fBRFC1034\fR(),
-\fBRFC2535\fR(),
-\fBRFC2931\fR(),
-\fBnamed\fR(8),
-\fBdnssec\-keygen\fR(8).
-.SH "BUGS"
-.PP
-The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library for its cryptographic operations, and may change in future releases.
-.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
-.br
-Copyright \(co 2000\-2003 Internet Software Consortium.
-.br
diff --git a/bin/nsupdate/nsupdate.docbook b/bin/nsupdate/nsupdate.docbook
index f45ec143bbd55..7e4ba9666a2b1 100644
--- a/bin/nsupdate/nsupdate.docbook
+++ b/bin/nsupdate/nsupdate.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[]>
-
+
@@ -26,7 +26,7 @@
nsupdate
-8
+1BIND9
@@ -36,6 +36,7 @@
200520062007
+ 2008Internet Systems Consortium, Inc. ("ISC")
diff --git a/bin/nsupdate/nsupdate.html b/bin/nsupdate/nsupdate.html
index 009942d11b4e2..f64368a715c97 100644
--- a/bin/nsupdate/nsupdate.html
+++ b/bin/nsupdate/nsupdate.html
@@ -1,5 +1,5 @@
-
+
@@ -32,7 +32,7 @@
nsupdate
is used to submit Dynamic DNS Update requests as defined in RFC2136
@@ -160,7 +160,7 @@ and number of UDP retries.
-
INPUT FORMAT
+
INPUT FORMAT
nsupdate
reads input from
@@ -399,7 +399,7 @@ Lines beginning with a semicolon are comments and are ignored.
-
EXAMPLES
+
EXAMPLES
The examples below show how
nsupdate
@@ -452,7 +452,7 @@ RRSIG, DNSKEY and NSEC records.)
-
FILES
+
FILES
/etc/resolv.conf
@@ -471,7 +471,7 @@ base-64 encoding of HMAC-MD5 key created by
-
SEE ALSO
+
SEE ALSO
RFC2136,
RFC3007,
@@ -485,7 +485,7 @@ base-64 encoding of HMAC-MD5 key created by
-
BUGS
+
BUGS
The TSIG key is redundantly stored in two separate files.
This is a consequence of nsupdate using the DST library
diff --git a/bin/rndc/rndc-confgen.c b/bin/rndc/rndc-confgen.c
index f6e578ed98783..f0cd0cbd367b8 100644
--- a/bin/rndc/rndc-confgen.c
+++ b/bin/rndc/rndc-confgen.c
@@ -1,8 +1,8 @@
/*
- * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2001, 2003 Internet Software Consortium.
*
- * Permission to use, copy, modify, and distribute this software for any
+ * Permission to use, copy, modify, and/or 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.
*
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rndc-confgen.c,v 1.9.2.6.2.5 2004/09/28 07:14:57 marka Exp $ */
+/* $Id: rndc-confgen.c,v 1.9.2.6.2.7 2008/10/15 23:45:34 tbox Exp $ */
#include
@@ -51,7 +51,7 @@
#define DEFAULT_PORT 953
static char program[256];
-char *progname;
+const char *progname;
isc_boolean_t verbose = ISC_FALSE;
@@ -137,7 +137,7 @@ main(int argc, char **argv) {
isc_boolean_t keyonly = ISC_FALSE;
int len;
- keydef = keyfile = RNDC_KEYFILE;
+ keydef = keyfile = RNDC_KEYFILE;
result = isc_file_progname(*argv, program, sizeof(program));
if (result != ISC_R_SUCCESS)
@@ -275,7 +275,7 @@ main(int argc, char **argv) {
fatal("isc_mem_get(%d) failed\n", len);
snprintf(buf, len, "%s%s%s", chrootdir,
(*keyfile != '/') ? "/" : "", keyfile);
-
+
write_key_file(buf, user, keyname, &key_txtbuffer);
isc_mem_put(mctx, buf, len);
}
diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c
index a5e912ddfd42e..977a8ba605411 100644
--- a/bin/rndc/rndc.c
+++ b/bin/rndc/rndc.c
@@ -1,8 +1,8 @@
/*
- * Copyright (C) 2004-2006 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2006, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2003 Internet Software Consortium.
*
- * Permission to use, copy, modify, and distribute this software for any
+ * Permission to use, copy, modify, and/or 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.
*
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rndc.c,v 1.77.2.5.2.19 2006/08/04 03:03:08 marka Exp $ */
+/* $Id: rndc.c,v 1.77.2.5.2.21 2008/10/15 23:45:34 tbox Exp $ */
/*
* Principal Author: DCL
@@ -56,7 +56,7 @@
#define SERVERADDRS 10
-char *progname;
+const char *progname;
isc_boolean_t verbose;
static const char *admin_conffile;
@@ -86,7 +86,7 @@ static void
usage(int status) {
fprintf(stderr, "\
Usage: %s [-c config] [-s server] [-p port]\n\
- [-k key-file ] [-y key] [-V] command\n\
+ [-k key-file ] [-y key] [-V] command\n\
\n\
command is one of the following:\n\
\n\
@@ -98,9 +98,9 @@ command is one of the following:\n\
retransfer zone [class [view]]\n\
Retransfer a single zone without checking serial number.\n\
freeze zone [class [view]]\n\
- Suspend updates to a dynamic zone.\n\
+ Suspend updates to a dynamic zone.\n\
thaw zone [class [view]]\n\
- Enable updates to a frozen dynamic zone and reload it.\n\
+ Enable updates to a frozen dynamic zone and reload it.\n\
reconfig Reload configuration file and new zones only.\n\
stats Write server statistics to the statistics file.\n\
querylog Toggle query logging.\n\
@@ -443,7 +443,7 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
(void)cfg_map_get(config, "server", &servers);
if (servers != NULL) {
for (elt = cfg_list_first(servers);
- elt != NULL;
+ elt != NULL;
elt = cfg_list_next(elt))
{
const char *name;
@@ -479,7 +479,7 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
else {
DO("get config key list", cfg_map_get(config, "key", &keys));
for (elt = cfg_list_first(keys);
- elt != NULL;
+ elt != NULL;
elt = cfg_list_next(elt))
{
key = cfg_listelt_value(elt);
@@ -624,7 +624,7 @@ main(int argc, char **argv) {
logdest.file.maximum_size = 0;
DO("creating log channel",
isc_log_createchannel(logconfig, "stderr",
- ISC_LOG_TOFILEDESC, ISC_LOG_INFO, &logdest,
+ ISC_LOG_TOFILEDESC, ISC_LOG_INFO, &logdest,
ISC_LOG_PRINTTAG|ISC_LOG_PRINTLEVEL));
DO("enabling log channel", isc_log_usechannel(logconfig, "stderr",
NULL, NULL));
diff --git a/configure.in b/configure.in
index 67ebe68e9a93d..d24630be4a37a 100644
--- a/configure.in
+++ b/configure.in
@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
AC_DIVERT_POP()dnl
-AC_REVISION($Revision: 1.294.2.23.2.82.2.1 $)
+AC_REVISION($Revision: 1.294.2.23.2.92 $)
AC_INIT(lib/dns/name.c)
AC_PREREQ(2.13)
@@ -224,6 +224,15 @@ case "$host" in
STD_CDEFINES="$STD_CDEFINES -D_XPG4_2 -D__EXTENSIONS__"
CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
;;
+ # POSIX doesn't include the IPv6 Advanced Socket API and glibc hides
+ # parts of the IPv6 Advanced Socket API as a result. This is stupid
+ # as it breaks how the two halves (Basic and Advanced) of the IPv6
+ # Socket API were designed to be used but we have to live with it.
+ # Define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
+ *-linux*)
+ STD_CDEFINES="$STD_CDEFINES -D_GNU_SOURCE"
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ ;;
esac
AC_HEADER_STDC
@@ -309,6 +318,78 @@ lifconf.lifc_len = 0;
ISC_PLATFORM_HAVELIFCONF="#undef ISC_PLATFORM_HAVELIFCONF"])
AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
+#
+# check if we have kqueue
+#
+AC_ARG_ENABLE(kqueue,
+ [ --enable-kqueue use BSD kqueue when available [[default=yes]]],
+ want_kqueue="$enableval", want_kqueue="yes")
+case $want_kqueue in
+yes)
+ AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
+ case $ac_cv_have_kqueue in
+ yes)
+ ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ ;;
+ *)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+ esac
+ ;;
+*)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
+
+#
+# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
+# so we need to try running the code, not just test its existence.
+#
+AC_ARG_ENABLE(epoll,
+ [ --enable-epoll use Linux epoll when available [[default=yes]]],
+ want_epoll="$enableval", want_epoll="yes")
+case $want_epoll in
+yes)
+ AC_MSG_CHECKING(epoll support)
+ AC_TRY_RUN([
+#include
+int main() {
+ if (epoll_create(1) < 0)
+ return (1);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
+ ;;
+*)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
+
+#
+# check if we support /dev/poll
+#
+AC_ARG_ENABLE(devpoll,
+ [ --enable-devpoll use /dev/poll when available [[default=yes]]],
+ want_devpoll="$enableval", want_devpoll="yes")
+case $want_devpoll in
+yes)
+ AC_CHECK_HEADERS(sys/devpoll.h,
+ ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
+ ,
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ )
+ ;;
+*)
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ ;;
+esac
+AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
#
# check if we need to #include sys/select.h explicitly
@@ -890,6 +971,16 @@ case "$host" in
;;
esac
+#
+# Work around Solaris's select() limitations.
+#
+case "$host" in
+ *-solaris2.[[89]]|*-solaris2.1?)
+ AC_DEFINE(FD_SETSIZE, 65536,
+ [Solaris hack to get select_large_fdset.])
+ ;;
+esac
+
#
# Purify support
#
@@ -935,6 +1026,14 @@ AC_SUBST(PURIFY)
#
# GNU libtool support
#
+case $build_os in
+sunos*)
+ # Just set the maximum command line length for sunos as it otherwise
+ # takes a exceptionally long time to work it out. Required for libtool.
+ lt_cv_sys_max_cmd_len=4096;
+ ;;
+esac
+
AC_ARG_WITH(libtool,
[ --with-libtool use GNU libtool (following indented options supported)],
use_libtool="$withval", use_libtool="no")
@@ -1686,7 +1785,8 @@ AC_ARG_ENABLE(linux-caps,
[ --disable-linux-caps disable linux capabilities])
case "$enable_linux_caps" in
yes|'')
- AC_CHECK_HEADERS(linux/capability.h)
+ AC_CHECK_HEADERS(linux/capability.h sys/capability.h)
+ AC_CHECK_FUNCS(capset)
;;
no)
;;
@@ -1754,6 +1854,18 @@ AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming
])
AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
+#
+# Older HP-UX doesn't have gettune
+#
+case "$host" in
+ *-hp-hpux*)
+ AC_CHECK_HEADERS(sys/dyntune.h)
+ ;;
+ *)
+ ;;
+esac
+
+
#
# Compaq TruCluster requires more code for handling cluster IP aliases
#
@@ -1812,7 +1924,7 @@ case "$host" in
[*-solaris2.[89]])
hack_shutup_pthreadonceinit=yes
;;
- *-solaris2.1[0-9])
+ *-solaris2.1[[0-9]])
hack_shutup_pthreadonceinit=yes
;;
esac
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index 41837c6a9a1c1..4ce75d7fcabd7 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -18,7 +18,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
BIND 9 Administrator Reference Manual
@@ -436,9 +436,11 @@ as none of the name servers share their cached data.
Supported Operating SystemsISC BIND 9 compiles and runs on a large number
-of Unix-like operating system and on Windows NT / 2000. For an up-to-date
+of Unix-like operating systems, and on some versions of Microsoft Windows
+including Windows XP, Windows 2003, and Windows 2008. For an up-to-date
list of supported systems, see the README file in the top level directory
-of the BIND 9 source distribution.
+of the BIND 9 source distribution.
+
@@ -1905,6 +1907,33 @@ be limited by the context in which it is used.
A quoted string which will be used as
a pathname, such as zones/master/my.test.domain.
+
+
+
+ port_list
+
+
+
+
+ A list of an ip_port or a port
+ range.
+ A port range is specified in the form of
+ range followed by
+ two ip_ports,
+ port_low and
+ port_high, which represents
+ port numbers from port_low through
+ port_high, inclusive.
+ port_low must not be larger than
+ port_high.
+ For example,
+ range 1024 65535 represents
+ ports from 1024 through 65535.
+ In either case an asterisk (`*') character is not
+ allowed as a valid ip_port.
+
+
+size_specA number, the word unlimited,
@@ -2867,7 +2896,9 @@ statement in the named.conf file: allow-update-forwarding { address_match_list }; allow-v6-synthesis { address_match_list }; blackhole { address_match_list };
+ use-v4-udp-ports { port_list }; avoid-v4-udp-ports { port_list };
+ use-v6-udp-ports { port_list }; avoid-v6-udp-ports { port_list }; listen-on port ip_port { address_match_list }; listen-on-v6 port ip_port { address_match_list };
@@ -3725,28 +3756,100 @@ and on port 1234 of IPv6 addresses that is not in the prefix
If no listen-on-v6 option is specified,
the server will not listen on any IPv6 address.
-Query Address
+Query AddressIf the server doesn't know the answer to a question, it will
query other name servers. query-source specifies
the address and port used for such queries. For queries sent over
IPv6, there is a separate query-source-v6 option.
If address is * (asterisk) or is omitted,
a wildcard IP address (INADDR_ANY) will be used.
-If port is * or is omitted,
-a random unprivileged port number is picked up and will be
-used for each query.
-It is generally strongly discouraged to
-specify a particular port for the
-query-source or
-query-source-v6 options;
-it implicitly disables the use of randomized port numbers
-and leads to insecure operation.
-The avoid-v4-udp-ports
-and avoid-v6-udp-ports options can be used to prevent named
-from selecting certain ports. The defaults are:
+
+
+ If port is * or is omitted,
+ a random port number from a pre-configured
+ range is picked up and will be used for each query.
+ The port range(s) is that specified in
+ the use-v4-udp-ports (for IPv4)
+ and use-v6-udp-ports (for IPv6)
+ options, excluding the ranges specified in
+ the avoid-v4-udp-ports
+ and avoid-v6-udp-ports options, respectively.
+
+
+
+ The defaults of the query-source and
+ query-source-v6 options
+ are:
+
+
query-source address * port *;
query-source-v6 address * port *;
+
+
+ If use-v4-udp-ports or
+ use-v6-udp-ports is unspecified,
+ named will check if the operating
+ system provides a programming interface to retrieve the
+ system's default range for ephemeral ports.
+ If such an interface is available,
+ named will use the corresponding system
+ default range; otherwise, it will use its own defaults:
+
+
+use-v4-udp-ports { range 1024 65535; };
+use-v6-udp-ports { range 1024 65535; };
+
+
+
+ Note: make sure the ranges be sufficiently large for
+ security. A desirable size depends on various parameters,
+ but we generally recommend it contain at least 16384 ports
+ (14 bits of entropy).
+ Note also that the system's default range when used may be
+ too small for this purpose, and that the range may even be
+ changed while named is running; the new
+ range will automatically be applied when named
+ is reloaded.
+ It is encouraged to
+ configure use-v4-udp-ports and
+ use-v6-udp-ports explicitly so that the
+ ranges are sufficiently large and are reasonably
+ independent from the ranges used by other applications.
+
+
+
+ Note: the operational configuration
+ where named runs may prohibit the use
+ of some ports. For example, UNIX systems will not allow
+ named running without a root privilege
+ to use ports less than 1024.
+ If such ports are included in the specified (or detected)
+ set of query ports, the corresponding query attempts will
+ fail, resulting in resolution failures or delay.
+ It is therefore important to configure the set of ports
+ that can be safely used in the expected operational environment.
+
+
+
+ The defaults of the avoid-v4-udp-ports and
+ avoid-v6-udp-ports options
+ are:
+
+
+avoid-v4-udp-ports {};
+avoid-v6-udp-ports {};
+
+
+
+ Note: it is generally strongly discouraged to
+ specify a particular port for the
+ query-source or
+ query-source-v6 options;
+ it implicitly disables the use of randomized port numbers
+ and can be insecure.
+
+
The address specified in the query-source option
is used for both UDP and TCP queries, but the port applies only to
@@ -3957,16 +4060,48 @@ but applies to notify messages sent to IPv6 addresses.
-Bad UDP Port Lists
-
-avoid-v4-udp-ports and avoid-v6-udp-ports
-specify a list of IPv4 and IPv6 UDP ports that will not be used as system
-assigned source ports for UDP sockets. These lists prevent named
-from choosing as its random source port a port that is blocked by
-your firewall. If a query went out with such a source port, the
-answer would not get by the firewall and the name server would have
-to query again.
-
+UDP Port Lists
+
+ use-v4-udp-ports,
+ avoid-v4-udp-ports,
+ use-v6-udp-ports, and
+ avoid-v6-udp-ports
+ specify a list of IPv4 and IPv6 UDP ports that will be
+ used or not used as source ports for UDP messages.
+ See about how the
+ available ports are determined.
+ For example, with the following configuration
+
+
+
+use-v6-udp-ports { range 32768 65535; };
+avoid-v6-udp-ports { 40000; range 50000 60000; };
+
+
+
+ UDP ports of IPv6 messages sent
+ from named will be in one
+ of the following ranges: 32768 to 39999, 40001 to 49999,
+ and 60001 to 65535.
+
+
+
+ avoid-v4-udp-ports and
+ avoid-v6-udp-ports can be used
+ to prevent named from choosing as its random source port a
+ port that is blocked by your firewall or a port that is
+ used by other applications;
+ if a query went out with a source port blocked by a
+ firewall, the
+ answer would not get by the firewall and the name server would
+ have to query again.
+ Note: the desired range can also be represented only with
+ use-v4-udp-ports and
+ use-v6-udp-ports, and the
+ avoid- options are redundant in that
+ sense; they are provided for backward compatibility and
+ to possibly simplify the port specification.
+
@@ -4073,31 +4208,45 @@ connections that the server will accept.
The default is 100.
-
- reserved-sockets
-
-
- The number of file descriptors reserved for TCP, stdio,
- etc. This needs to be big enough to cover the number of
- interfaces named listens on, tcp-clients as well as
- to provide room for outgoing TCP queries and incoming zone
- transfers. The default is 512.
- The minimum value is 128 and the
- maximum value is 128 less than
- 'files' or FD_SETSIZE (whichever is smaller). This
- option may be removed in the future.
-
-
-
+
+ reserved-sockets
+
+
+ The number of file descriptors reserved for TCP, stdio,
+ etc. This needs to be big enough to cover the number of
+ interfaces named listens on, tcp-clients as well as
+ to provide room for outgoing TCP queries and incoming zone
+ transfers. The default is 512.
+ The minimum value is 128 and the
+ maximum value is 128 less than
+ maxsockets (-S). This option may be removed in the future.
+
+
+ This option has little effect on Windows.
+
+
+ max-cache-size
-The maximum amount of memory to use for the
-server's cache, in bytes. When the amount of data in the cache
+
+The maximum amount of memory to use for the
+server's cache, in bytes.
+When the amount of data in the cache
reaches this limit, the server will cause records to expire
-prematurely so that the limit is not exceeded. In a server with
-multiple views, the limit applies separately to the cache of each
-view. The default is unlimited, meaning that
-records are purged from the cache only when their TTLs expire.
+prematurely so that the limit is not exceeded.
+A value of 0 is special, meaning that
+records are purged from the cache only when their
+TTLs expire.
+Another special keyword unlimited
+means the maximum value of 32-bit unsigned integers
+(0xffffffff), which may not have the same effect as
+0 on machines that support more than 32 bits of
+memory space.
+Any positive values less than 2MB will be ignored reset
+to 2MB.
+In a server with multiple views, the limit applies
+separately to the cache of each view.
+The default is 0.
@@ -4725,7 +4874,7 @@ a client request will be resolved in the context of the first
view that it matches.
Zones defined within a view statement will
-be only be accessible to clients that match the view.
+only be accessible to clients that match the view.
By defining a zone of the same name in multiple views, different
zone data can be given to different clients, for example, "internal"
and "external" clients in a split DNS setup.
@@ -5545,6 +5694,11 @@ Described in RFC 1035.information about well known network
services (replaces WKS). Described in RFC 2782.
+
+SSHFP
+Provides a way to securly publish a secure shell
+key's fingerprint. Described in RFC 4255.
+TXTtext records. Described in RFC 1035.
@@ -5899,7 +6053,7 @@ delegation.
$GENERATE 1-2 0 NS SERVER$.EXAMPLE.
$GENERATE 1-127 $ CNAME $.0
is equivalent to
-0.0.0.192.IN-ADDR.ARPA NS SERVER1.EXAMPLE.
+0.0.0.192.IN-ADDR.ARPA. NS SERVER1.EXAMPLE.
0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
2.0.0.192.IN-ADDR.ARPA. CNAME 2.0.0.0.192.IN-ADDR.ARPA.
diff --git a/doc/arm/Bv9ARM.ch02.html b/doc/arm/Bv9ARM.ch02.html
index 34220264a27ce..0dcb9b5510556 100644
--- a/doc/arm/Bv9ARM.ch02.html
+++ b/doc/arm/Bv9ARM.ch02.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
@@ -104,9 +104,11 @@ as none of the name servers share their cached data.
Supported Operating Systems
ISC BIND 9 compiles and runs on a large number
-of Unix-like operating system and on Windows NT / 2000. For an up-to-date
+of Unix-like operating systems, and on some versions of Microsoft Windows
+including Windows XP, Windows 2003, and Windows 2008. For an up-to-date
list of supported systems, see the README file in the top level directory
-of the BIND 9 source distribution.
+of the BIND 9 source distribution.
+
The dnssec-keygen program is used to
generate keys.
A secure zone must contain one or more zone keys. The
@@ -717,7 +717,7 @@ options {
-IPv6 Support in BIND 9
+IPv6 Support in BIND 9
BIND 9 fully supports all currently defined forms of IPv6
name to address and address to name lookups. It will also use
IPv6 addresses to make queries when running on an IPv6 capable
diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html
index d59d9d198b61c..75d49e3f93338 100644
--- a/doc/arm/Bv9ARM.ch06.html
+++ b/doc/arm/Bv9ARM.ch06.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
@@ -202,6 +202,33 @@ be limited by the context in which it is used.
a pathname, such as zones/master/my.test.domain.
+
+
+ port_list
+
+
+
+
+ A list of an ip_port or a port
+ range.
+ A port range is specified in the form of
+ range followed by
+ two ip_ports,
+ port_low and
+ port_high, which represents
+ port numbers from port_low through
+ port_high, inclusive.
+ port_low must not be larger than
+ port_high.
+ For example,
+ range 1024 65535 represents
+ ports from 1024 through 65535.
+ In either case an asterisk (`*') character is not
+ allowed as a valid ip_port.
+
+
+
+
size_spec
A number, the word unlimited,
@@ -244,7 +271,7 @@ are restricted to slave and stub zones.
Address Match Lists
-Syntax
+Syntax
address_match_list = address_match_list_element ;
[ address_match_list_element; ... ]
address_match_list_element = [ ! ] (ip_address [/length] |
@@ -253,7 +280,7 @@ are restricted to slave and stub zones.
-Definition and Usage
+Definition and Usage
Address match lists are primarily used to determine access
control for various server operations. They are also used in
the listen-on and sortlist
@@ -303,14 +330,14 @@ other 1.2.3.* hosts fall through.
-Comment Syntax
+Comment Syntax
The BIND 9 comment syntax allows for comments to appear
anywhere that whitespace may appear in a BIND configuration
file. To appeal to programmers of all kinds, they can be written
in the C, C++, or shell/perl style.
-Syntax
+Syntax
/* This is a BIND comment as in C */
@@ -323,7 +350,7 @@ in the C, C++, or shell/perl style.
-Definition and Usage
+Definition and Usage
Comments may appear anywhere that whitespace may appear in
a BIND configuration file.
C-style comments start with the two characters /* (slash,
@@ -444,7 +471,7 @@ a per-server basis.
configuration.
-acl Statement Grammar
+acl Statement Grammar
acl acl-name {
address_match_list
};
@@ -495,7 +522,7 @@ IPv6 addresses, just like localhost
The include statement inserts the
specified file at the point where the include
statement is encountered. The include
@@ -616,7 +643,7 @@ statement: controls { };.
The logging statement configures a wide
variety of logging options for the name server. Its channel phrase
associates output methods, format options and severity levels with
@@ -704,7 +731,7 @@ channels, or to standard error if the "-g" option
was specified.
-The channel Phrase
+The channel Phrase
All log output goes to one or more channels;
you can make as many of them as you want.
Every channel definition must include a destination clause that
@@ -1019,7 +1046,7 @@ a delegation-only in a hint or stu
-lwres Statement Grammar
+lwres Statement Grammar
This is the grammar of the lwres
statement in the named.conf file:
lwres {
@@ -1032,7 +1059,7 @@ statement in the named.conf file:
-lwres Statement Definition and Usage
+lwres Statement Definition and Usage
The lwres statement configures the name
server to also act as a lightweight resolver server. (See
the section called “Running a Resolver Daemon”.) There may be multiple
@@ -1060,20 +1087,20 @@ exact match lookup before search path elements are appended.
The forwarding facility can be used to create a large site-wide
cache on a few servers, reducing traffic over links to external
name servers. It can also be used to allow queries by servers that
@@ -1753,7 +1783,7 @@ Statement Grammar”.
-Dual-stack Servers
+Dual-stack Servers
Dual-stack servers are used as servers of last resort to work around
problems in reachability due the lack of support for either IPv4 or IPv6
on the host machine.
@@ -1834,7 +1864,7 @@ from these addresses will not be responded to. The default is
-Interfaces
+Interfaces
The interfaces and ports that the server will answer queries
from may be specified using the listen-on option. listen-on takes
an optional port, and an address_match_list.
@@ -1884,28 +1914,90 @@ the server will not listen on any IPv6 address.
-Query Address
+Query Address
If the server doesn't know the answer to a question, it will
query other name servers. query-source specifies
the address and port used for such queries. For queries sent over
IPv6, there is a separate query-source-v6 option.
If address is * (asterisk) or is omitted,
a wildcard IP address (INADDR_ANY) will be used.
-If port is * or is omitted,
-a random unprivileged port number is picked up and will be
-used for each query.
-It is generally strongly discouraged to
-specify a particular port for the
-query-source or
-query-source-v6 options;
-it implicitly disables the use of randomized port numbers
-and leads to insecure operation.
-The avoid-v4-udp-ports
-and avoid-v6-udp-ports options can be used to prevent named
-from selecting certain ports. The defaults are:
+
+
+ If port is * or is omitted,
+ a random port number from a pre-configured
+ range is picked up and will be used for each query.
+ The port range(s) is that specified in
+ the use-v4-udp-ports (for IPv4)
+ and use-v6-udp-ports (for IPv6)
+ options, excluding the ranges specified in
+ the avoid-v4-udp-ports
+ and avoid-v6-udp-ports options, respectively.
+
+
+ The defaults of the query-source and
+ query-source-v6 options
+ are:
+
query-source address * port *;
query-source-v6 address * port *;
+
+ If use-v4-udp-ports or
+ use-v6-udp-ports is unspecified,
+ named will check if the operating
+ system provides a programming interface to retrieve the
+ system's default range for ephemeral ports.
+ If such an interface is available,
+ named will use the corresponding system
+ default range; otherwise, it will use its own defaults:
+
+
use-v4-udp-ports { range 1024 65535; };
+use-v6-udp-ports { range 1024 65535; };
+
+
+ Note: make sure the ranges be sufficiently large for
+ security. A desirable size depends on various parameters,
+ but we generally recommend it contain at least 16384 ports
+ (14 bits of entropy).
+ Note also that the system's default range when used may be
+ too small for this purpose, and that the range may even be
+ changed while named is running; the new
+ range will automatically be applied when named
+ is reloaded.
+ It is encouraged to
+ configure use-v4-udp-ports and
+ use-v6-udp-ports explicitly so that the
+ ranges are sufficiently large and are reasonably
+ independent from the ranges used by other applications.
+
+
+ Note: the operational configuration
+ where named runs may prohibit the use
+ of some ports. For example, UNIX systems will not allow
+ named running without a root privilege
+ to use ports less than 1024.
+ If such ports are included in the specified (or detected)
+ set of query ports, the corresponding query attempts will
+ fail, resulting in resolution failures or delay.
+ It is therefore important to configure the set of ports
+ that can be safely used in the expected operational environment.
+
+
+ The defaults of the avoid-v4-udp-ports and
+ avoid-v6-udp-ports options
+ are:
+
+
avoid-v4-udp-ports {};
+avoid-v6-udp-ports {};
+
+
+ Note: it is generally strongly discouraged to
+ specify a particular port for the
+ query-source or
+ query-source-v6 options;
+ it implicitly disables the use of randomized port numbers
+ and can be insecure.
+
Note
The address specified in the query-source option
@@ -2083,20 +2175,49 @@ but applies to notify messages sent to IPv6 addresses.
-Bad UDP Port Lists
+UDP Port Lists
-avoid-v4-udp-ports and avoid-v6-udp-ports
-specify a list of IPv4 and IPv6 UDP ports that will not be used as system
-assigned source ports for UDP sockets. These lists prevent named
-from choosing as its random source port a port that is blocked by
-your firewall. If a query went out with such a source port, the
-answer would not get by the firewall and the name server would have
-to query again.
-
+ use-v4-udp-ports,
+ avoid-v4-udp-ports,
+ use-v6-udp-ports, and
+ avoid-v6-udp-ports
+ specify a list of IPv4 and IPv6 UDP ports that will be
+ used or not used as source ports for UDP messages.
+ See the section called “Query Address” about how the
+ available ports are determined.
+ For example, with the following configuration
+
+
+use-v6-udp-ports { range 32768 65535; };
+avoid-v6-udp-ports { 40000; range 50000 60000; };
+
+
+ UDP ports of IPv6 messages sent
+ from named will be in one
+ of the following ranges: 32768 to 39999, 40001 to 49999,
+ and 60001 to 65535.
+
+
+ avoid-v4-udp-ports and
+ avoid-v6-udp-ports can be used
+ to prevent named from choosing as its random source port a
+ port that is blocked by your firewall or a port that is
+ used by other applications;
+ if a query went out with a source port blocked by a
+ firewall, the
+ answer would not get by the firewall and the name server would
+ have to query again.
+ Note: the desired range can also be represented only with
+ use-v4-udp-ports and
+ use-v6-udp-ports, and the
+ avoid- options are redundant in that
+ sense; they are provided for backward compatibility and
+ to possibly simplify the port specification.
+
-Operating System Resource Limits
+Operating System Resource Limits
The server's usage of many system resources can be limited.
Scaled values are allowed when specifying resource limits. For
example, 1G can be used instead of
@@ -2140,7 +2261,7 @@ may use. The default is default.
-Server Resource Limits
+Server Resource Limits
The following options set limits on the server's
resource consumption that are enforced internally by the
server rather than the operating system.
@@ -2174,14 +2295,42 @@ on hosts with limited memory.
The maximum number of simultaneous client TCP
connections that the server will accept.
The default is 100.
+
reserved-sockets
+
+
+ The number of file descriptors reserved for TCP, stdio,
+ etc. This needs to be big enough to cover the number of
+ interfaces named listens on, tcp-clients as well as
+ to provide room for outgoing TCP queries and incoming zone
+ transfers. The default is 512.
+ The minimum value is 128 and the
+ maximum value is 128 less than
+ maxsockets (-S). This option may be removed in the future.
+
+
+ This option has little effect on Windows.
+
+
max-cache-size
-
The maximum amount of memory to use for the
-server's cache, in bytes. When the amount of data in the cache
+
+The maximum amount of memory to use for the
+server's cache, in bytes.
+When the amount of data in the cache
reaches this limit, the server will cause records to expire
-prematurely so that the limit is not exceeded. In a server with
-multiple views, the limit applies separately to the cache of each
-view. The default is unlimited, meaning that
-records are purged from the cache only when their TTLs expire.
+prematurely so that the limit is not exceeded.
+A value of 0 is special, meaning that
+records are purged from the cache only when their
+TTLs expire.
+Another special keyword unlimited
+means the maximum value of 32-bit unsigned integers
+(0xffffffff), which may not have the same effect as
+0 on machines that support more than 32 bits of
+memory space.
+Any positive values less than 2MB will be ignored reset
+to 2MB.
+In a server with multiple views, the limit applies
+separately to the cache of each view.
+The default is 0.
tcp-listen-queue
The listen queue depth. The default and minimum is 3.
@@ -2194,7 +2343,7 @@ silently raised.
-Periodic Task Intervals
+Periodic Task Intervals
cleaning-interval
The server will remove expired resource records
@@ -2689,7 +2838,7 @@ For more details, see the description of
-trusted-keys Statement Grammar
+trusted-keys Statement Grammar
trusted-keys {
stringnumbernumbernumberstring ;
[stringnumbernumbernumberstring ; [...]]
@@ -2698,7 +2847,7 @@ For more details, see the description of
-trusted-keys Statement Definition
+trusted-keys Statement Definition
and Usage
The trusted-keys statement defines
@@ -2741,7 +2890,7 @@ For more details, see the description of
-view Statement Definition and Usage
+view Statement Definition and Usage
The view statement is a powerful new feature
of BIND 9 that lets a name server answer a DNS query differently
depending on who is asking. It is particularly useful for implementing
@@ -2764,7 +2913,7 @@ The order of the view statements i
a client request will be resolved in the context of the first
view that it matches.
Zones defined within a view statement will
-be only be accessible to clients that match the view.
+only be accessible to clients that match the view.
By defining a zone of the same name in multiple views, different
zone data can be given to different clients, for example, "internal"
and "external" clients in a split DNS setup.
@@ -2943,10 +3092,10 @@ zone zone_name [
-zone Statement Definition and Usage
+zone Statement Definition and Usage
-Zone Types
+Zone Types
@@ -3059,7 +3208,7 @@ from forwarders.
-Class
+Class
The zone's name may optionally be followed by a class. If
a class is not specified, class IN (for Internet),
is assumed. This is correct for the vast majority of cases.
@@ -3074,7 +3223,7 @@ in the mid-1970s. Zone data for it can be specified with the
-Zone Options
+Zone Options
allow-notify
See the description of
@@ -3322,7 +3471,7 @@ name, the rules are checked for each existing record type.
-Zone File
+Zone File
Types of Resource Records and When to Use Them
@@ -3332,7 +3481,7 @@ Since the publication of RFC 1034, several new RRs have been identified
and implemented in the DNS. These are also included.
-Resource Records
+Resource Records
A domain name identifies a node. Each node has a set of
resource information, which may be empty. The set of resource
information associated with a particular name is composed of
@@ -3520,6 +3669,11 @@ Described in RFC 1035.
services (replaces WKS). Described in RFC 2782.
+
SSHFP
+
Provides a way to securly publish a secure shell
+key's fingerprint. Described in RFC 4255.
+
+
TXT
text records. Described in RFC 1035.
@@ -3591,7 +3745,7 @@ used as "pointers" to other data in the DNS.
-Textual expression of RRs
+Textual expression of RRs
RRs are represented in binary form in the packets of the DNS
protocol, and are usually represented in highly encoded form when
stored in a name server or resolver. In the examples provided in
@@ -3681,7 +3835,7 @@ each of a different class.
-Discussion of MX Records
+Discussion of MX Records
As described above, domain servers store information as a
series of resource records, each of which contains a particular
piece of information about a given domain name (which is usually,
@@ -3798,7 +3952,7 @@ can be explicitly specified, for example, 1h30m.
-Inverse Mapping in IPv4
+Inverse Mapping in IPv4
Reverse name resolution (that is, translation from IP address
to name) is achieved by means of the in-addr.arpa domain
and PTR records. Entries in the in-addr.arpa domain are made in
@@ -3836,7 +3990,7 @@ that the example is relative to the listed origin.
-Other Zone File Directives
+Other Zone File Directives
The Master File Format was initially defined in RFC 1035 and
has subsequently been extended. While the Master File Format itself
is class independent all records in a Master File must be of the same
@@ -3845,7 +3999,7 @@ class.
and $TTL.
-The $ORIGIN Directive
+The $ORIGIN Directive
Syntax: $ORIGIN
domain-name [comment]
$ORIGIN sets the domain name that will
@@ -3860,7 +4014,7 @@ WWW CNAME MAIN-SERVER
-The $INCLUDE Directive
+The $INCLUDE Directive
Syntax: $INCLUDEfilename [origin] [comment]
@@ -3884,7 +4038,7 @@ This could be construed as a deviation from RFC 1035, a feature, or both.
-The $TTL Directive
+The $TTL Directive
Syntax: $TTLdefault-ttl [comment]
@@ -3895,7 +4049,7 @@ with undefined TTLs. Valid TTLs are of the range 0-2147483647 seconds.
-BIND Master File Extension: the $GENERATE Directive
+BIND Master File Extension: the $GENERATE Directive
$GENERATE is used to create a series of
resource records that only differ from each other by an iterator. $GENERATE can
@@ -3906,7 +4060,7 @@ delegation.
0.0.0.192.IN-ADDR.ARPA. NS SERVER1.EXAMPLE.
0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
2.0.0.192.IN-ADDR.ARPA. CNAME 2.0.0.0.192.IN-ADDR.ARPA.
diff --git a/doc/arm/Bv9ARM.ch07.html b/doc/arm/Bv9ARM.ch07.html
index cfb405482e982..535956fbe18ef 100644
--- a/doc/arm/Bv9ARM.ch07.html
+++ b/doc/arm/Bv9ARM.ch07.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
@@ -46,11 +46,11 @@
-Chroot and Setuid (for
+Chroot and Setuid (for
UNIX servers)
On UNIX servers, it is possible to run BIND in a chrooted environment
(using the chroot() function) by specifying the "-t"
@@ -117,7 +117,7 @@ user 202:
/usr/local/bin/named -u 202 -t /var/named
-The chroot Environment
+The chroot Environment
In order for a chroot environment to
work properly in a particular directory
(for example, /var/named),
@@ -142,7 +142,7 @@ to set up things like
-Using the setuid Function
+Using the setuid Function
Prior to running the named daemon, use
the touch utility (to change file access and
modification times) or the chown utility (to
diff --git a/doc/arm/Bv9ARM.ch08.html b/doc/arm/Bv9ARM.ch08.html
index 1bb97711b5b56..b4577ba1ae26e 100644
--- a/doc/arm/Bv9ARM.ch08.html
+++ b/doc/arm/Bv9ARM.ch08.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
-It's not working; how can I figure out what's wrong?
+It's not working; how can I figure out what's wrong?
The best solution to solving installation and
configuration issues is to take preventative measures by setting
up logging files beforehand. The log files provide a
@@ -66,7 +66,7 @@
-Incrementing and Changing the Serial Number
+Incrementing and Changing the Serial Number
Zone serial numbers are just numbers — they aren't
date related. A lot of people set them to a number that
@@ -89,7 +89,7 @@
-Where Can I Get Help?
+Where Can I Get Help?
The Internet Software Consortium (ISC) offers a wide range
of support and service agreements for BIND and DHCP servers. Four
levels of premium support are available and each level includes
diff --git a/doc/arm/Bv9ARM.ch09.html b/doc/arm/Bv9ARM.ch09.html
index 4d07ae9a1cb63..907b23cbeeea7 100644
--- a/doc/arm/Bv9ARM.ch09.html
+++ b/doc/arm/Bv9ARM.ch09.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
-A Brief History of the DNS and BIND
+A Brief History of the DNS and BIND
Although the "official" beginning of the Domain Name
System occurred in 1984 with the publication of RFC 920, the
@@ -277,17 +277,17 @@ the number of the RFC). RFCs are also available via the Web at
-Bibliography
+Bibliography
Standards
-
[RFC974] C.Partridge. Mail Routing and the Domain System. January 1986.
+
[RFC974] C.Partridge. Mail Routing and the Domain System. January 1986.
-
[RFC1034] P.V.Mockapetris. Domain Names — Concepts and Facilities. November 1987.
+
[RFC1034] P.V.Mockapetris. Domain Names — Concepts and Facilities. November 1987.
-
[RFC1035] P. V.Mockapetris. Domain Names — Implementation and
+
[RFC1035] P. V.Mockapetris. Domain Names — Implementation and
Specification. November 1987.
@@ -295,22 +295,22 @@ Specification. November 1987.
Proposed Standards
-
[RFC2181] R., R. BushElz. Clarifications to the DNS Specification. July 1997.
+
[RFC2181] R., R. BushElz. Clarifications to the DNS Specification. July 1997.
-
[RFC2308] M.Andrews. Negative Caching of DNS Queries. March 1998.
+
[RFC2308] M.Andrews. Negative Caching of DNS Queries. March 1998.
-
[RFC1995] M.Ohta. Incremental Zone Transfer in DNS. August 1996.
+
[RFC1995] M.Ohta. Incremental Zone Transfer in DNS. August 1996.
-
[RFC1996] P.Vixie. A Mechanism for Prompt Notification of Zone Changes. August 1996.
+
[RFC1996] P.Vixie. A Mechanism for Prompt Notification of Zone Changes. August 1996.
-
[RFC2136] P.Vixie, S.Thomson, Y.Rekhter, and J.Bound. Dynamic Updates in the Domain Name System. April 1997.
+
[RFC2136] P.Vixie, S.Thomson, Y.Rekhter, and J.Bound. Dynamic Updates in the Domain Name System. April 1997.
-
[RFC2845] P.Vixie, O.Gudmundsson, D.Eastlake, 3rd, and B.Wellington. Secret Key Transaction Authentication for DNS (TSIG). May 2000.
+
[RFC2845] P.Vixie, O.Gudmundsson, D.Eastlake, 3rd, and B.Wellington. Secret Key Transaction Authentication for DNS (TSIG). May 2000.
@@ -321,85 +321,85 @@ Specification. November 1987.
RFCs are undergoing major revision by the IETF.
-
[RFC1886] S.Thomson and C.Huitema. DNS Extensions to support IP version 6. December 1995.
+
[RFC1886] S.Thomson and C.Huitema. DNS Extensions to support IP version 6. December 1995.
-
[RFC2065] D.Eastlake, 3rd and C.Kaufman. Domain Name System Security Extensions. January 1997.
+
[RFC2065] D.Eastlake, 3rd and C.Kaufman. Domain Name System Security Extensions. January 1997.
-
[RFC2137] D.Eastlake, 3rd. Secure Domain Name System Dynamic Update. April 1997.
+
[RFC2137] D.Eastlake, 3rd. Secure Domain Name System Dynamic Update. April 1997.
Other Important RFCs About DNS Implementation
-
[RFC1535] E.Gavron. A Security Problem and Proposed Correction With Widely Deployed DNS Software.. October 1993.
+
[RFC1535] E.Gavron. A Security Problem and Proposed Correction With Widely Deployed DNS Software.. October 1993.
-
[RFC1536] A.Kumar, J.Postel, C.Neuman, P.Danzig, and S.Miller. Common DNS Implementation Errors and Suggested Fixes. October 1993.
+
[RFC1536] A.Kumar, J.Postel, C.Neuman, P.Danzig, and S.Miller. Common DNS Implementation Errors and Suggested Fixes. October 1993.
-
[RFC1982] R.Elz and R.Bush. Serial Number Arithmetic. August 1996.
+
[RFC1982] R.Elz and R.Bush. Serial Number Arithmetic. August 1996.
Resource Record Types
-
[RFC1183] C.F.Everhart, L. A.Mamakos, R.Ullmann, and P.Mockapetris. New DNS RR Definitions. October 1990.
+
[RFC1183] C.F.Everhart, L. A.Mamakos, R.Ullmann, and P.Mockapetris. New DNS RR Definitions. October 1990.
-
[RFC1706] B.Manning and R.Colella. DNS NSAP Resource Records. October 1994.
+
[RFC1706] B.Manning and R.Colella. DNS NSAP Resource Records. October 1994.
-
[RFC2168] R.Daniel and M.Mealling. Resolution of Uniform Resource Identifiers using
+
[RFC2168] R.Daniel and M.Mealling. Resolution of Uniform Resource Identifiers using
the Domain Name System. June 1997.
-
[RFC1876] C.Davis, P.Vixie, T., and I.Dickinson. A Means for Expressing Location Information in the Domain
+
[RFC1876] C.Davis, P.Vixie, T., and I.Dickinson. A Means for Expressing Location Information in the Domain
Name System. January 1996.
-
[RFC2052] A.Gulbrandsen and P.Vixie. A DNS RR for Specifying the Location of
+
[RFC2052] A.Gulbrandsen and P.Vixie. A DNS RR for Specifying the Location of
Services.. October 1996.
-
[RFC2163] A.Allocchio. Using the Internet DNS to Distribute MIXER
+
[RFC2163] A.Allocchio. Using the Internet DNS to Distribute MIXER
Conformant Global Address Mapping. January 1998.
-
[RFC2230] R.Atkinson. Key Exchange Delegation Record for the DNS. October 1997.
+
[RFC2230] R.Atkinson. Key Exchange Delegation Record for the DNS. October 1997.
DNS and the Internet
-
[RFC1101] P. V.Mockapetris. DNS Encoding of Network Names and Other Types. April 1989.
+
[RFC1101] P. V.Mockapetris. DNS Encoding of Network Names and Other Types. April 1989.
-
[RFC1123] Braden. Requirements for Internet Hosts - Application and Support. October 1989.
+
[RFC1123] Braden. Requirements for Internet Hosts - Application and Support. October 1989.
-
[RFC1591] J.Postel. Domain Name System Structure and Delegation. March 1994.
+
[RFC1591] J.Postel. Domain Name System Structure and Delegation. March 1994.
-
[RFC2317] H.Eidnes, G.de Groot, and P.Vixie. Classless IN-ADDR.ARPA Delegation. March 1998.
+
[RFC2317] H.Eidnes, G.de Groot, and P.Vixie. Classless IN-ADDR.ARPA Delegation. March 1998.
DNS Operations
-
[RFC1537] P.Beertema. Common DNS Data File Configuration Errors. October 1993.
+
[RFC1537] P.Beertema. Common DNS Data File Configuration Errors. October 1993.
-
[RFC1912] D.Barr. Common DNS Operational and Configuration Errors. February 1996.
+
[RFC1912] D.Barr. Common DNS Operational and Configuration Errors. February 1996.
-
[RFC2010] B.Manning and P.Vixie. Operational Criteria for Root Name Servers.. October 1996.
+
[RFC2010] B.Manning and P.Vixie. Operational Criteria for Root Name Servers.. October 1996.
-
[RFC2219] M.Hamilton and R.Wright. Use of DNS Aliases for Network Services.. October 1997.
+
[RFC2219] M.Hamilton and R.Wright. Use of DNS Aliases for Network Services.. October 1997.
@@ -410,28 +410,28 @@ Conformant Global Address Mapping. January 1998
DNS-related, are not concerned with implementing software.
-
[RFC1464] R.Rosenbaum. Using the Domain Name System To Store Arbitrary String Attributes. May 1993.
+
[RFC1464] R.Rosenbaum. Using the Domain Name System To Store Arbitrary String Attributes. May 1993.
-
[RFC1713] A.Romao. Tools for DNS Debugging. November 1994.
+
[RFC1713] A.Romao. Tools for DNS Debugging. November 1994.
-
[RFC1794] T.Brisco. DNS Support for Load Balancing. April 1995.
+
[RFC1794] T.Brisco. DNS Support for Load Balancing. April 1995.
-
[RFC2240] O.Vaughan. A Legal Basis for Domain Name Allocation. November 1997.
+
[RFC2240] O.Vaughan. A Legal Basis for Domain Name Allocation. November 1997.
-
[RFC2345] J.Klensin, T.Wolf, and G.Oglesby. Domain Names and Company Name Retrieval. May 1998.
+
[RFC2345] J.Klensin, T.Wolf, and G.Oglesby. Domain Names and Company Name Retrieval. May 1998.
-
[RFC2352] O.Vaughan. A Convention For Using Legal Names as Domain Names. May 1998.
+
[RFC2352] O.Vaughan. A Convention For Using Legal Names as Domain Names. May 1998.
Obsolete and Unimplemented Experimental RRs
-
[RFC1712] C.Farrell, M.Schulze, S.Pleitner, and D.Baldoni. DNS Encoding of Geographical
+
[RFC1712] C.Farrell, M.Schulze, S.Pleitner, and D.Baldoni. DNS Encoding of Geographical
Location. November 1994.
@@ -451,14 +451,14 @@ after which they are deleted unless updated by their authors.
-Other Documents About BIND
+Other Documents About BIND
diff --git a/doc/arm/Bv9ARM.html b/doc/arm/Bv9ARM.html
index 41b763c3e35eb..02c0f1a987794 100644
--- a/doc/arm/Bv9ARM.html
+++ b/doc/arm/Bv9ARM.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-
+
@@ -107,11 +107,11 @@