]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
This commit was manufactured by cvs2git to create branch 'rt19943a'.
authorcvs2git <source@isc.org>
Wed, 23 Sep 2009 22:15:25 +0000 (22:15 +0000)
committercvs2git <source@isc.org>
Wed, 23 Sep 2009 22:15:25 +0000 (22:15 +0000)
20 files changed:
1  2 
CHANGES
bin/dig/win32/dig.dsp
bin/dig/win32/dig.mak
bin/dig/win32/dighost.dsp
bin/dig/win32/host.dsp
bin/dig/win32/host.mak
bin/dig/win32/nslookup.dsp
bin/dig/win32/nslookup.mak
bin/dnssec/dnssec-signzone.c
bin/dnssec/dnssec-signzone.docbook
bin/tests/system/dnssec/ns3/sign.sh
doc/draft/draft-ietf-dnsext-rfc2672bis-dname-13.txt
doc/private/branches
lib/dns/dst_api.c
lib/dns/win32/libdns.def
lib/isc/unix/ifiter_getifaddrs.c
lib/isc/win32/include/isc/thread.h
lib/isc/win32/socket.c
util/copyrights
win32utils/win32-build.txt

diff --cc CHANGES
index 2aa5426ec1eb45d2ab13c9a98cafb621c93e01c3,6eaeb7548255491eb11cd251914bf4d61208b386..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,8626 -1,8608 +1,0 @@@
- 2687. [bug]           Fixed dnssec-signzone -S handling of revoked keys.
-                       Also, added warnings when revoking a ZSK, as this is
-                       not defined by protocol (but is legal).  [RT #19943]
- 2686. [bug]           dnssec-signzone should clean the old NSEC chain when
-                       signing with NSEC3 and vice versa. [RT #20301]
- 2685. [contrib]       Update contrib/zkt to version 0.99c. [RT #20054]
- 2684. [cleanup]       dig: formalize +ad and +cd as synonyms for
-                       +adflag and +cdflag.  [RT #19305]
- 2683. [bug]           dnssec-signzone should clean out old NSEC3 chains when
-                       the NSEC3 parameters used to sign the zone change.
-                       [RT #20246]
- 2682. [bug]           "configure --enable-symtable=all" failed to
-                       build. [RT #20282]
--2681. [bug]           IPSECKEY RR of gateway type 3 was not correctly
--                      decoded. [RT #20269]
--
- 2680. [func]          Move contrib/pkcs11-keygen to bin/pkcs11. [RT #20067]
 -2680. [func]          Move some contrib/pkcs11-keygen to bin/pkcs11.
 -                      [RT #20067]
--
--2679. [func]          dig -k can now accept TSIG keys in named.conf
--                      format.  [RT #20031]
--
--2678. [func]          Treat DS queries as if "minimal-response yes;"
--                      was set. [RT #20258]
--
--2677. [func]          Changes to key metadata behavior:
--                      - Keys without "publish" or "active" dates set will
--                        no longer be used for smart signing.  However,
--                        those dates will be set to "now" by default when
--                        a key is created; to generate a key but not use
--                        it yet, use dnssec-keygen -G.
--                      - New "inactive" date (dnssec-keygen/settime -I)
--                        sets the time when a key is no longer used for
--                        signing but is still published.
--                      - The "unpublished" date (-U) is deprecated in
--                        favor of "deleted" (-D).
--                      [RT #20247]
--
--2676. [bug]           --with-export-installdir should have been
--                      --with-export-includedir. [RT #20252]
--
--2675.   [bug]           dnssec-signzone could crash if the key directory
--                        did not exist. [RT #20232]
--
--      --- 9.7.0a3 released ---
--
--2674. [bug]           "dnssec-lookaside auto;" crashed if named was built
--                      without openssl. [RT #20231]
--
--2673. [bug]           The managed-keys.bind zone file could fail to
--                      load due to a spurious result from sync_keyzone()
--                      [RT #20045]
--
--2672. [bug]           Don't enable searching in 'host' when doing reverse
--                      lookups. [RT #20218]
--
--2671. [bug]           Add support for PKCS#11 providers not returning
--                      the public exponent in RSA private keys
--                      (OpenCryptoki for instance) in
--                      dnssec-keyfromlabel. [RT #19294]
--
--2670. [bug]           Unexpected connect failures failed to log enough
--                      information to be useful. [RT #20205]
--
--2669. [func]          Update PKCS#11 support to support Keyper HSM.
--                      Update PKCS#11 patch to be against openssl-0.9.8i.
--
--2668. [func]          Several improvements to dnssec-* tools, including:
--                      - dnssec-keygen and dnssec-settime can now set key
--                        metadata fields 0 (to unset a value, use "none")
--                      - dnssec-revoke sets the revocation date in
--                        addition to the revoke bit
--                      - dnssec-settime can now print individual metadata
--                        fields instead of always printing all of them,
--                        and can print them in unix epoch time format for
--                        use by scripts
--                      [RT #19942]
--
--2667. [func]          Add support for logging stack backtrace on assertion
--                      failure (not available for all platforms). [RT #19780]
--
--2666. [func]          Added an 'options' argument to dns_name_fromstring()
--                      (API change from 9.7.0a2). [RT #20196]
--
--2665. [func]          Clarify syntax for managed-keys {} statement, add
--                      ARM documentation about RFC 5011 support. [RT #19874]
--
--2664. [bug]           create_keydata() and minimal_update() in zone.c 
--                      didn't properly check return values for some
--                      functions.  [RT #19956]
--
--2663. [func]          win32:  allow named to run as a service using
--                      "NT AUTHORITY\LocalService" as the account. [RT #19977]
--
--2662. [bug]           lwres_getipnodebyname() and lwres_getipnodebyaddr() 
--                      returned a misleading error code when lwresd was
--                      down. [RT #20028]
--
--2661. [bug]           Check whether socket fd exceeds FD_SETSIZE when
--                      creating lwres context. [RT #20029]
--
--2660. [func]          Add a new set of DNS libraries for non-BIND9
--                      applications.  See README.libdns. [RT #19369]
--
--2659. [doc]           Clarify dnssec-keygen doc: key name must match zone
--                      name for DNSSEC keys. [RT #19938]
--
--2658. [bug]           dnssec-settime and dnssec-revoke didn't process
--                      key file paths correctly. [RT #20078]
--
--2657. [cleanup]       Lower "journal file <path> does not exist, creating it"
--                      log level to debug 1. [RT #20058]
--
--2656. [func]          win32: add a "tools only" check box to the installer
--                      which causes it to only install dig, host, nslookup,
--                      nsupdate and relevant DLLs.  [RT #19998]
--
--2655. [doc]           Document that key-directory does not affect
--                      bind.keys, rndc.key or session.key.  [RT #20155]
--
--2654. [bug]           Improve error reporting on duplicated names for
--                      deny-answer-xxx. [RT #20164]
--
--2653. [bug]           Treat ENGINE_load_private_key() failures as key
--                      not found rather than out of memory.  [RT #18033]
--
--2652. [func]          Provide more detail about what record is being
--                      deleted. [RT #20061]
--
--2651. [bug]           Dates could print incorrectly in K*.key files on
--                      64-bit systems. [RT #20076]
--
--2650. [bug]           Assertion failure in dnssec-signzone when trying
--                        to read keyset-* files. [RT #20075]
--
--2649. [bug]           Set the domain for forward only zones. [RT #19944]
--
--2648. [port]          win32: isc_time_seconds() was broken. [RT #19900]
--
--2647. [bug]           Remove unnecessary SOA updates when a new KSK is
--                      added. [RT #19913]
--
--2646. [bug]           Incorrect cleanup on error in socket.c. [RT #19987]
--
--2645. [port]          "gcc -m32" didn't work on amd64 and x86_64 platforms
--                      which default to 64 bits. [RT #19927]
--
--      --- 9.7.0a2 released ---
--
--2644. [bug]           Change #2628 caused a regression on some systems;
--                      named was unable to write the PID file and would
--                      fail on startup. [RT #20001]
--
--2643. [bug]           Stub zones interacted badly with NSEC3 support.
--                      [RT #19777]
--
--2642. [bug]           nsupdate could dump core on solaris when reading
--                      improperly formatted key files.  [RT #20015]
--
--2641. [bug]           Fixed an error in parsing update-policy syntax,
--                      added a regression test to check it. [RT #20007]
--
--2640. [security]      A specially crafted update packet will cause named
--                      to exit. [RT #20000]
--
--2639. [bug]           Silence compiler warnings in gssapi code. [RT #19954]
--
--2638. [bug]           Install arpaname. [RT #19957]
--
--2637. [func]          Rationalize dnssec-signzone's signwithkey() calling.
--                      [RT #19959]
--
--2636. [func]          Simplify zone signing and key maintenance with the
--                      dnssec-* tools.  Major changes:
--                      - all dnssec-* tools now take a -K option to
--                        specify a directory in which key files will be
--                        stored
--                      - DNSSEC can now store metadata indicating when
--                        they are scheduled to be published, activated,
--                        revoked or removed; these values can be set by
--                        dnssec-keygen or overwritten by the new
--                        dnssec-settime command
--                      - dnssec-signzone -S (for "smart") option reads key
--                        metadata and uses it to determine automatically
--                        which keys to publish to the zone, use for
--                        signing, revoke, or remove from the zone
--                      [RT #19816]
--
--2635. [bug]           isc_inet_ntop() incorrectly handled 0.0/16 addresses.
--                      [RT #19716]
--
--2634. [port]          win32: Add support for libxml2, enable
--                      statschannel. [RT #19773]
--
--2633. [bug]           Handle 15 bit rand() functions. [RT #19783]
--
--2632. [func]          util/kit.sh: warn if documentation appears to be out of
--                      date.  [RT #19922]
--
--2631. [bug]           Handle "//", "/./" and "/../" in mkdirpath().
--                      [RT #19926 ]
--
--2630. [func]          Improved syntax for DDNS autoconfiguration:  use
--                      "update-policy local;" to switch on local DDNS in a
--                      zone. (The "ddns-autoconf" option has been removed.)
--                        [RT #19875]
--
--2629. [port]          Check for seteuid()/setegid(), use setresuid()/
--                      setresgid() if not present. [RT #19932]
--                      
--2628. [port]          linux: Allow /var/run/named/named.pid to be opened 
--                      at startup with reduced capabilities in operation.
--                      [RT #19884]
--
--2627. [bug]           Named aborted if the same key was included in
--                      trusted-keys more than once. [RT #19918]
--
--2626. [bug]           Multiple trusted-keys could trigger an assertion
--                      failure. [RT #19914]
--
--2625. [bug]           Missing UNLOCK in rbtdb.c. [RT #19865]
--
--2624. [func]          'named-checkconf -p' will print out the parsed
--                      configuration. [RT #18871]
--
--2623. [bug]           Named started seaches for DS non-optimally. [RT #19915]
--
--2622. [bug]           Printing of named.conf grammar was broken. [RT #19919]
-- 
--2621. [doc]           Made copyright boilterplate consistent.  [RT #19833]
--
--2620. [bug]           Delay thawing the zone until the reload of it has
--                      completed successfully.  [RT #19750]
--
--2619. [func]          Add support for RFC 5011, automatic trust anchor
--                      maintenance.  The new "managed-keys" statement can
--                      be used in place of "trusted-keys" for zones which
--                      support this protocol.  (Note: this syntax is
--                      expected to change prior to 9.7.0 final.) [RT #19248]
--
--2618. [bug]           The sdb and sdlz db_interator_seek() methods could
--                      loop infinitely. [RT #19847]
--
--2617. [bug]           ifconfig.sh failed to emit an error message when
--                      run from the wrong location. [RT #19375]
--
--2616. [bug]           'host' used the nameservers from resolv.conf even
--                      when a explicit nameserver was specified. [RT #19852]
--
--2615. [bug]           "__attribute__((unused))" was in the wrong place
--                      for ia64 gcc builds. [RT #19854]
--
--2614. [port]          win32: 'named -v' should automatically be executed
--                      in the foreground. [RT #19844]
--
--2613. [placeholder]
--
--      --- 9.7.0a1 released ---
--
--2612. [func]          Add default values for the arguments to
--                      dnssec-keygen.  Without arguments, it will now
--                      generate a 1024-bit RSASHA1 zone-signing key,
--                      or with the -f KSK option, a 2048-bit RSASHA1
--                      key-signing key. [RT #19300]
--
--2611. [func]          Add -l option to dnssec-dsfromkey to generate 
--                      DLV records instead of DS records. [RT #19300]
--
--2610. [port]          sunos: Change #2363 was not complete. [RT #19796]
--
--2609. [func]          Simplify the configuration of dynamic zones:
--                      - add ddns-confgen command to generate
--                        configuration text for named.conf
--                      - add zone option "ddns-autoconf yes;", which
--                        causes named to generate a TSIG session key
--                        and allow updates to the zone using that key
--                      - add '-l' (localhost) option to nsupdate, which
--                        causes nsupdate to connect to a locally-running
--                        named process using the session key generated
--                        by named
--                      [RT #19284]
--                      
--2608. [func]          Perform post signing verification checks in
--                      dnssec-signzone.  These can be disabled with -P.
--
--                      The post sign verification test ensures that for each
--                      algorithm in use there is at least one non revoked
--                      self signed KSK key.  That all revoked KSK keys are
--                      self signed.  That all records in the zone are signed
--                      by the algorithm.  [RT #19653]
--
--2607. [bug]           named could incorrectly delete NSEC3 records for
--                      empty nodes when processing a update request.
--                      [RT #19749]
--
--2606. [bug]           "delegation-only" was not being accepted in
--                      delegation-only type zones. [RT #19717]
--
--2605. [bug]           Accept DS responses from delegation only zones.
--                      [RT # 19296]
--
--2604. [func]          Add support for DNS rebinding attack prevention through
--                      new options, deny-answer-addresses and
--                      deny-answer-aliases.  Based on contributed code from
--                      JD Nurmi, Google. [RT #18192]
--
--2603. [port]          win32: handle .exe extension of named-checkzone and
--                      named-comilezone argv[0] names under windows.
--                      [RT #19767]
--
--2602. [port]          win32: fix debugging command line build of libisccfg.
--                      [RT #19767]
--
--2601. [doc]           Mention file creation mode mask in the
--                      named manual page.
--
--2600. [doc]           ARM: miscellaneous reformatting for different
--                      page widths. [RT #19574]
--
--2599. [bug]           Address rapid memory growth when validation fails.
--                      [RT #19654]
--
--2598. [func]          Reserve the -F flag. [RT #19657]
--
--2597. [bug]           Handle a validation failure with a insecure delegation
--                      from a NSEC3 signed master/slave zone.  [RT #19464]
--
--2596. [bug]           Stale tree nodes of cache/dynamic rbtdb could stay
--                      long, leading to inefficient memory usage or rejecting
--                      newer cache entries in the worst case. [RT #19563]
--
--2595. [bug]           Fix unknown extended rcodes in dig. [RT #19625]
--
--2594. [func]          Have rndc warn if using its default configuration
--                      file when the key file also exists. [RT #19424]
--
--2593. [bug]           Improve a corner source of SERVFAILs [RT #19632]
--
--2592. [bug]           Treat "any" as a type in nsupdate. [RT #19455]
--
--2591. [bug]           named could die when processing a update in
--                      removed_orphaned_ds(). [RT #19507]
--
--2590. [func]          Report zone/class of "update with no effect".
--                      [RT #19542]
--
--2589. [bug]           dns_db_unregister() failed to clear '*dbimp'.
--                      [RT #19626]
--
--2588. [bug]           SO_REUSEADDR could be set unconditionally after failure
--                      of bind(2) call.  This should be rare and mostly
--                      harmless, but may cause interference with other
--                      processes that happen to use the same port. [RT #19642]
--
--2587. [func]          Improve logging by reporting serial numbers for
--                      when zone serial has gone backwards or unchanged.
--                      [RT #19506]
--
--2586. [bug]           Missing cleanup of SIG rdataset in searching a DLZ DB
--                      or SDB. [RT #19577]
--
--2585. [bug]           Uninitialized socket name could be referenced via a
--                      statistics channel, triggering an assertion failure in
--                      XML rendering. [RT #19427]
--
--2584. [bug]           alpha: gcc optimization could break atomic operations.
--                      [RT #19227]
--
--2583. [port]          netbsd: provide a control to not add the compile
--                      date to the version string, -DNO_VERSION_DATE.
--
--2582. [bug]           Don't emit warning log message when we attempt to
--                      remove non-existant journal. [RT #19516]
--
--2581. [contrib]       dlz/mysql set MYSQL_OPT_RECONNECT option on connection.
--                      Requires MySQL 5.0.19 or later. [RT #19084]
--
--2580. [bug]           UpdateRej statistics counter could be incremented twice
--                      for one rejection. [RT #19476]
--
--2579. [bug]           DNSSEC lookaside validation failed to handle unknown
--                      algorithms. [RT #19479]
--
--2578. [bug]           Changed default sig-signing-type to 65534, because
--                      65535 turns out to be reserved.  [RT #19477]
--
--2577. [doc]           Clarified some statistics counters. [RT #19454]
--
--2576. [bug]           NSEC record were not being correctly signed when
--                      a zone transitions from insecure to secure.
--                      Handle such incorrectly signed zones. [RT #19114]
--
--2575. [func]          New functions dns_name_fromstring() and
--                      dns_name_tostring(), to simplify conversion
--                      of a string to a dns_name structure and vice
--                      versa. [RT #19451]
--
--2574. [doc]           Document nsupdate -g and -o. [RT #19351]
--
--2573. [bug]           Replacing a non-CNAME record with a CNAME record in a
--                      single transaction in a signed zone failed. [RT #19397]
--
--2572. [func]          Simplify DLV configuration, with a new option
--                      "dnssec-lookaside auto;"  This is the equivalent
--                      of "dnssec-lookaside . trust-anchor dlv.isc.org;"
--                      plus setting a trusted-key for dlv.isc.org.
--
--                      Note: The trusted key is hard-coded into named,
--                      but is also stored in (and can be overridden
--                      by) $sysconfdir/bind.keys.  As the ISC DLV key
--                      rolls over it can be kept up to date by replacing
--                      the bind.keys file with a key downloaded from
--                      https://www.isc.org/solutions/dlv. [RT #18685]
--
--2571. [func]          Add a new tool "arpaname" which translates IP addresses
--                      to the corresponding IN-ADDR.ARPA or IP6.ARPA name.
--                      [RT #18976]
--
--2570. [func]          Log the destination address the query was sent to.
--                      [RT #19209]
--
--2569. [func]          Move journalprint, nsec3hash, and genrandom
--                      commands from bin/tests into bin/tools; 
--                      "make install" will put them in $sbindir. [RT #19301]
--
--2568. [bug]           Report when the write to indicate a otherwise
--                      successful start fails. [RT #19360]
--
--2567. [bug]           dst__privstruct_writefile() could miss write errors.
--                      write_public_key() could miss write errors.
--                      dnssec-dsfromkey could miss write errors.
--                      [RT #19360]
--
--2566. [cleanup]       Clarify logged message when an insecure DNSSEC
--                      response arrives from a zone thought to be secure:
--                      "insecurity proof failed" instead of "not
--                      insecure". [RT #19400]
--
--2565. [func]          Add support for HIP record.  Includes new functions
--                      dns_rdata_hip_first(), dns_rdata_hip_next()
--                      and dns_rdata_hip_current().  [RT #19384]
--
--2564. [bug]           Only take EDNS fallback steps when processing timeouts.
--                      [RT #19405]
--
--2563. [bug]           Dig could leak a socket causing it to wait forever
--                      to exit. [RT #19359]
--
--2562. [doc]           ARM: miscellaneous improvements, reorganization,
--                      and some new content.
--
--2561. [doc]           Add isc-config.sh(1) man page. [RT #16378]
--
--2560. [bug]           Add #include <config.h> to iptable.c. [RT #18258]
--
--2559. [bug]           dnssec-dsfromkey could compute bad DS records when
--                      reading from a K* files.  [RT #19357]
--
--2558. [func]          Set the ownership of missing directories created
--                      for pid-file if -u has been specified on the command
--                      line. [RT #19328]
--
--2557. [cleanup]       PCI compliance:
--                      * new libisc log module file
--                      * isc_dir_chroot() now also changes the working
--                        directory to "/".
--                      * additional INSISTs
--                      * additional logging when files can't be removed.
--
--2556. [port]          Solaris: mkdir(2) on tmpfs filesystems does not do the
--                      error checks in the correct order resulting in the
--                      wrong error code sometimes being returned. [RT #19249]
--                      
--2555. [func]          dig: when emitting a hex dump also display the
--                      corresponding characters. [RT #19258]
--
--2554. [bug]           Validation of uppercase queries from NSEC3 zones could
--                      fail. [RT #19297]
--
--2553. [bug]           Reference leak on DNSSEC validation errors. [RT #19291]
--
--2552. [bug]           zero-no-soa-ttl-cache was not being honoured.
--                      [RT #19340]
--
--2551. [bug]           Potential Reference leak on return. [RT #19341]
--
--2550. [bug]           Check --with-openssl=<path> finds <openssl/opensslv.h>.
--                      [RT #19343]
--
--2549. [port]          linux: define NR_OPEN if not currently defined.
--                      [RT #19344]
--
--2548. [bug]           Install iterated_hash.h. [RT #19335]
--
--2547. [bug]           openssl_link.c:mem_realloc() could reference an
--                      out-of-range area of the source buffer.  New public
--                      function isc_mem_reallocate() was introduced to address
--                      this bug. [RT #19313]
--
--2546. [func]          Add --enable-openssl-hash configure flag to use
--                      OpenSSL (in place of internal routine) for hash
--                      functions (MD5, SHA[12] and HMAC). [RT #18815]
--
--2545. [doc]           ARM: Legal hostname checking (check-names) is
--                      for SRV RDATA too. [RT #19304]
--
--2544. [cleanup]       Removed unused structure members in adb.c. [RT #19225]
--
--2543. [contrib]       Update contrib/zkt to version 0.98. [RT #19113]
--
--2542. [doc]           Update the description of dig +adflag. [RT #19290]
--
--2541. [bug]           Conditionally update dispatch manager statistics.
--                      [RT #19247]
--
--2540. [func]          Add a nibble mode to $GENERATE. [RT #18872]
--
--2539. [security]      Update the interaction between recursion, allow-query,
--                      allow-query-cache and allow-recursion.  [RT #19198]
--
--2538. [bug]           cache/ADB memory could grow over max-cache-size,
--                      especially with threads and smaller max-cache-size
--                      values. [RT #19240]
--
--2537. [func]          Added more statistics counters including those on socket
--                      I/O events and query RTT histograms. [RT #18802]
--
--2536. [cleanup]       Silence some warnings when -Werror=format-security is
--                      specified. [RT #19083]
--
--2535. [bug]           dig +showsearch and +trace interacted badly. [RT #19091]
--
--2534. [func]          Check NAPTR records regular expressions and
--                      replacement strings to ensure they are syntactically
--                      valid and consistant. [RT #18168]
--
--2533. [doc]           ARM: document @ (at-sign). [RT #17144]
--
--2532. [bug]           dig: check the question section of the response to
--                      see if it matches the asked question. [RT #18495]
--
--2531. [bug]           Change #2207 was incomplete. [RT #19098]
--
--2530. [bug]           named failed to reject insecure to secure transitions
--                      via UPDATE. [RT #19101]
--
--2529. [cleanup]       Upgrade libtool to silence complaints from recent
--                      version of autoconf. [RT #18657]
--
--2528.   [cleanup]       Silence spurious configure warning about
--                        --datarootdir [RT #19096]
--
--2527. [placeholder]
--
--2526. [func]          New named option "attach-cache" that allows multiple
--                      views to share a single cache to save memory and
--                      improve lookup efficiency.  Based on contributed code
--                      from Barclay Osborn, Google. [RT #18905]
--
--2525. [func]          New logging category "query-errors" to provide detailed
--                      internal information about query failures, especially
--                      about server failures. [RT #19027]
--
--2524. [port]          sunos: dnssec-signzone needs strtoul(). [RT #19129]
--
--2523. [bug]           Random type rdata freed by dns_nsec_typepresent().
--                      [RT #19112]
--
--2522. [security]      Handle -1 from DSA_do_verify() and EVP_VerifyFinal().
--
--2521. [bug]           Improve epoll cross compilation support. [RT #19047]
--
--2520. [bug]           Update xml statistics version number to 2.0 as change
--                      #2388 made the schema incompatible to the previous
--                      version. [RT #19080]
--
--2519. [bug]           dig/host with -4 or -6 didn't work if more than two
--                      nameserver addresses of the excluded address family
--                      preceded in resolv.conf. [RT #19081]
--
--2518. [func]          Add support for the new CERT types from RFC 4398.
--                      [RT #19077]
--
--2517. [bug]           dig +trace with -4 or -6 failed when it chose a
--                      nameserver address of the excluded address type.
--                      [RT #18843]
--
--2516. [bug]           glue sort for responses was performed even when not
--                      needed. [RT #19039]
--
--2515. [port]          win32: build dnssec-dsfromkey and dnssec-keyfromlabel.
--                      [RT #19063]
--
--2514. [bug]           dig/host failed with -4 or -6 when resolv.conf contains
--                      a nameserver of the excluded address family.
--                      [RT #18848]
--
--2513. [bug]           Fix windows cli build. [RT #19062]
--
--2512. [func]          Print a summary of the cached records which make up
--                      the negative response.  [RT #18885]
--
--2511. [cleanup]       dns_rdata_tofmttext() add const to linebreak.
--                      [RT #18885]
--
--2510. [bug]           "dig +sigchase" could trigger REQUIRE failures.
--                      [RT #19033]
--
--2509. [bug]           Specifying a fixed query source port was broken.
--                      [RT #19051]
--
--2508. [placeholder]
--
--2507. [func]          Log the recursion quota values when killing the
--                      oldest query or refusing to recurse due to quota.
--                      [RT #19022]
--
--2506. [port]          solaris: Check at configure time if 
--                      hack_shutup_pthreadonceinit is needed. [RT #19037]
--
--2505. [port]          Treat amd64 similarly to x86_64 when determining
--                      atomic operation support. [RT #19031]
--
--2504. [bug]           Address race condition in the socket code. [RT #18899]
--
--2503. [port]          linux: improve compatibility with Linux Standard
--                      Base. [RT #18793]
--
--2502. [cleanup]       isc_radix: Improve compliance with coding style,
--                      document function in <isc/radix.h>. [RT #18534]
--
--2501. [func]          $GENERATE now supports all rdata types.  Multi-field
--                      rdata types need to be quoted.  See the ARM for
--                      details. [RT #18368]
--
--2500. [contrib]       contrib/sdb/pgsql/zonetodb.c called non-existent
--                      function. [RT #18582]
--
--2499. [port]          solaris: lib/lwres/getaddrinfo.c namespace clash.
--                      [RT #18837]
--
--      --- 9.6.0rc1 released ---
--
--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]
--
--2497. [bug]           Don't add RRSIG bit to NSEC3 bit map for insecure
--                      delegation.
--
--2496. [bug]           Add sanity length checks to NSID option. [RT #18813]
--
--2495. [bug]           Tighten RRSIG checks. [RT #18795]
--
--2494. [bug]           isc/radix.h, dns/sdlz.h and dns/dlz.h were not being
--                      installed. [RT #18826]
--
--2493. [bug]           The linux capabilities code was not correctly cleaning
--                      up after itself. [RT #18767]
--
--2492. [func]          Rndc status now reports the number of cpus discovered
--                      and the number of worker threads when running
--                      multi-threaded. [RT #18273]
--
--2491. [func]          Attempt to re-use a local port if we are already using
--                      the port. [RT #18548]
--
--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]
--
--2488. [func]          Added a tool, dnssec-dsfromkey, to generate DS records
--                      from keyset and .key files. [RT #18694]
--
--2487. [bug]           Give TCP connections longer to complete. [RT #18675]
--
--2486. [func]          The default locations for named.pid and lwresd.pid
--                      are now /var/run/named/named.pid and
--                      /var/run/lwresd/lwresd.pid respectively.
--
--                      This allows the owner of the containing directory
--                      to be set, for "named -u" support, and allows there
--                      to be a permanent symbolic link in the path, for
--                      "named -t" support.  [RT #18306]
--
--2485. [bug]           Change update's the handling of obscured RRSIG
--                      records.  Not all orphaned DS records were being
--                      removed. [RT #18828]
--
--2484. [bug]           It was possible to trigger a REQUIRE failure when
--                      adding NSEC3 proofs to the response in
--                      query_addwildcardproof().  [RT #18828]
--
--2483. [port]          win32: chroot() is not supported. [RT #18805]
--
--2482. [port]          libxml2: support versions 2.7.* in addition
--                      to 2.6.*. [RT #18806]
--
--      --- 9.6.0b1 released ---
--
--2481. [bug]           rbtdb.c:matchparams() failed to handle NSEC3 chain
--                      collisions.  [RT #18812]
--
--2480. [bug]           named could fail to emit all the required NSEC3
--                      records.  [RT #18812]
--
--2479. [bug]           xfrout:covers was not properly initialized. [RT #18801]
--
--2478. [bug]           'addresses' could be used uninitialized in
--                      configure_forward(). [RT #18800]
--      
--2477. [bug]           dig: the global option to print the command line is
--                      +cmd not print_cmd.  Update the output to reflect
--                      this. [RT #17008]
--
--2476. [doc]           ARM: improve documentation for max-journal-size and
--                      ixfr-from-differences. [RT #15909] [RT #18541]
--
--2475. [bug]           LRU cache cleanup under overmem condition could purge
--                      particular entries more aggressively. [RT #17628]
--
--2474. [bug]           ACL structures could be allocated with insufficient
--                      space, causing an array overrun. [RT #18765]
--
--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]
--
--2471. [bug]           named-checkzone was not reporting missing mandatory
--                      glue when sibling checks were disabled. [RT #18768]
--
--2470. [bug]           Elements of the isc_radix_node_t could be incorrectly
--                      overwritten.  [RT# 18719]
--
--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]
--
--2466. [doc]           ARM: explain max-cache-ttl 0 SERVFAIL issue.
--                      [RT #18302]
--
--2465. [bug]           Adb's handling of lame addresses was different
--                      for IPv4 and IPv6. [RT #18738]
--
--2464. [port]          linux: check that a capability is present before
--                      trying to set it. [RT #18135]
--
--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]
--
--      --- 9.6.0a1 released ---
--
--2460. [bug]           Don't call dns_db_getnsec3parameters() on the cache.
--                      [RT #18697]
--
--2459. [contrib]       Import dnssec-zkt to contrib/zkt. [RT #18448]
--
--2458. [doc]           ARM: update and correction for max-cache-size.
--                      [RT #18294]
--
--2457. [tuning]        max-cache-size is reverted to 0, the previous
--                      default.  It should be safe because expired cache
--                      entries are also purged. [RT #18684]
--
--2456. [bug]           In ACLs, ::/0 and 0.0.0.0/0 would both match any
--                      address, regardless of family.  They now correctly
--                      distinguish IPv4 from IPv6.  [RT #18559]
--                        
--2455. [bug]           Stop metadata being transferred via axfr/ixfr.
--                      [RT #18639]
--
--2454. [func]          nsupdate: you can now set a default ttl. [RT #18317]
--
--2453. [bug]           Remove NULL pointer dereference in dns_journal_print().
--                      [RT #18316]
--
--2452. [func]          Improve bin/test/journalprint. [RT #18316]
--
--2451. [port]          solaris: handle runtime linking better. [RT #18356]
--
--2450. [doc]           Fix lwresd docbook problem for manual page.
--                      [RT #18672]
--
--2449. [placeholder]
--
--2448. [func]          Add NSEC3 support. [RT #15452]
--
--2447. [cleanup]       libbind has been split out as a separate product.
--
--2446. [func]          Add a new log message about build options on startup.
--                      A new command-line option '-V' for named is also
--                      provided to show this information. [RT# 18645]
--
--2445. [doc]           ARM out-of-date on empty reverse zones (list includes
--                      RFC1918 address, but these are not yet compiled in).
--                      [RT #18578]
--
--2444. [port]          Linux, FreeBSD, AIX: Turn off path mtu discovery
--                      (clear DF) for UDP responses and requests.
--
--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.
--
--2442. [bug]           A lock could be destroyed twice. [RT# 18626]
--
--2441.   [bug]           isc_radix_insert() could copy radix tree nodes
--                      incompletely. [RT #18573]
--
--2440.   [bug]         named-checkconf used an incorrect test to determine
--                      if an ACL was set to none.
--
--2439.   [bug]         Potential NULL dereference in dns_acl_isanyornone().
--                      [RT #18559]
--
--2438.   [bug]         Timeouts could be logged incorrectly under win32.
--
--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]
--
--2435. [bug]           Fixed an ACL memory leak affecting win32.
--
--2434. [bug]           Fixed a minor error-reporting bug in
--                      lib/isc/win32/socket.c.
--
--2433. [tuning]        Set initial timeout to 800ms.
--
--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
--                      requesters in the future.  Add stricter consistency
--                      checking as a compile-time option (define
--                      ISC_SOCKET_CONSISTENCY_CHECKS; defaults to off).
--
--2431. [bug]           Acl processing could leak memory. [RT #18323]
--
--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]
--
--2428. [bug]           dns_iptable_merge() mishandled merges of negative
--                      tables. [RT #18409]
--
--2427. [func]          Treat DNSKEY queries as if "minimal-response yes;"
--                      was set. [RT #18528]
--
--2426. [bug]           libbind: inet_net_pton() can sometimes return the
--                      wrong value if excessively large net masks 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]
--                      
--2423.   [security]    Randomize server selection on queries, so as to
--                        make forgery a little more difficult.  Instead of
--                        always preferring the server with the lowest RTT,
--                        pick a server with RTT within the same 128
--                        millisecond band.  [RT #18441]
--
--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 canceled read/write
--                      done events, which keeps us from writing to memory
--                      we no longer have ownership of.  Add debugging
--                      socket_log() function.  Rework TCP socket handling
--                      to not leak sockets.
--
--2419. [cleanup]       Document that isc_socket_create() and isc_socket_open()
--                      should not be used for isc_sockettype_fdwatch sockets.
--                      [RT #18521]
--
--2418. [bug]           AXFR request on a DLZ could trigger a REQUIRE failure
--                      [RT #18430]
--
--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]
--
--2415. [bug]           'rndc dumpdb' could trigger various assertion failures
--                      in rbtdb.c. [RT #18455]
--
--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 resource 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]
--
--                      Note: with changes #2469 and #2421 above, there is no
--                      need to tweak ISC_SOCKET_MAXSOCKETS at compilation time
--                      any more.
--
--2410. [bug]           Correctly delete m_versionInfo. [RT #18432]
--
--2409. [bug]           Only log that we disabled EDNS processing if we were
--                      subsequently successful.  [RT #18029]
--
--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]
--
--2406. [placeholder]
--
--2405.   [cleanup]       The default value for dnssec-validation was changed to
--                        "yes" in 9.5.0-P1 and all subsequent releases; this
--                        was inadvertently omitted from CHANGES at the time.
--
--2404. [port]          hpux: files unlimited support.
--
--2403. [bug]           TSIG context leak. [RT #18341]
--
--2402. [port]          Support Solaris 2.11 and over. [RT #18362]
--
--2401. [bug]           Expect to get E[MN]FILE errno internal_accept()
--                      (from accept() or fcntl() system calls). [RT #18358]
--
--2400. [bug]           Log if kqueue()/epoll_create()/open(/dev/poll) fails.
--                      [RT #18297]
--
--2399. [placeholder]
--
--2398. [bug]           Improve file descriptor management.  New,
--                      temporary, named.conf option reserved-sockets,
--                      default 512. [RT #18344]
--
--2397. [bug]           gssapi_functions had too many elements. [RT #18355]
--
--2396. [bug]           Don't set SO_REUSEADDR for randomized ports.
--                      [RT #18336]
--
--2395. [port]          Avoid warning and no effect from "files unlimited"
--                      on Linux when running as root. [RT #18335]
--
--2394. [bug]           Default configuration options set the limit for
--                      open files to 'unlimited' as described in the
--                      documentation. [RT #18331]
--
--2393. [bug]           nested acls containing keys could trigger an
--                      assertion in acl.c. [RT #18166]
--
--2392. [bug]           remove 'grep -q' from acl test script, some platforms
--                      don't support it. [RT #18253]
--
--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]
--
--2388. [bug]           Avoid using tables for layout purposes in
--                      statistics XSL [RT #18159].
--
--2387. [bug]           Silence compiler warnings in lib/isc/radix.c.
--                      [RT #18147] [RT #18258]
--
--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]      Fully randomize UDP query ports to improve
--                      forgery resilience. [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 descriptions of DHCID, IPSECKEY, SPF and SSHFP
--                      to ARM.
--
--2381. [port]          dlz/mysql: support multiple install layouts for
--                      mysql.  <prefix>/include/{,mysql/}mysql.h and
--                      <prefix>/lib/{,mysql/}. [RT #18152]
--
--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] 
--
--2379. [contrib]       queryperf/gen-data-queryperf.py: removed redundant
--                      TLDs and supported RRs with TTLs [RT #17972]
--
--2378. [bug]           gssapi_functions{} had a redundant member in BIND 9.5.
--                      [RT #18169]
--
--2377. [bug]           Address race condition in dnssec-signzone. [RT #18142]
--
--2376. [bug]           Change #2144 was not complete.
--
--2375. [placeholder]
--
--2374. [bug]           "blackhole" ACLs could cause named to segfault due
--                      to some uninitialized memory. [RT #18095]
--
--2373. [bug]           Default values of zone ACLs were re-parsed each time a
--                      new zone was configured, causing an overconsumption
--                      of memory. [RT #18092]
--
--2372. [bug]           Fixed incorrect TAG_HMACSHA256_BITS value [RT #18047]
--
--2371. [doc]           Add +nsid option to dig man page. [RT #18039]
--
--2370. [bug]           "rndc freeze" could trigger an assertion in named
--                      when called on a nonexistent zone. [RT #18050]
--
--2369. [bug]           libbind: Array bounds overrun on read in bitncmp().
--                      [RT #18054]
--
--2368. [port]          Linux: use libcap for capability management if
--                      possible. [RT# 18026]
--
--2367. [bug]           Improve counting of dns_resstatscounter_retry
--                      [RT #18030]
--
--2366. [bug]           Adb shutdown race. [RT #18021]
--
--2365. [bug]           Fix a bug that caused dns_acl_isany() to return
--                      spurious results. [RT #18000]
--
--2364. [bug]           named could trigger a assertion when serving a
--                      malformed signed zone. [RT #17828]
--
--2363. [port]          sunos: pre-set "lt_cv_sys_max_cmd_len=4096;".
--                      [RT #17513]
--
--2362.   [cleanup]     Make "rrset-order fixed" a compile-time option.
--                      settable by "./configure --enable-fixed-rrset".
--                      Disabled by default. [RT #17977]
--
--2361. [bug]           "recursion" statistics counter could be counted
--                      multiple times for a single query.  [RT #17990]
--
--2360. [bug]           Fix a condition where we release a database version
--                      (which may acquire a lock) while holding the lock.
--
--2359. [bug]           Fix NSID bug. [RT #17942]
--
--2358. [doc]           Update host's default query description. [RT #17934]
--
--2357. [port]          Don't use OpenSSL's engine support in versions before
--                      OpenSSL 0.9.7f. [RT #17922]
--
--2356. [bug]           Built in mutex profiler was not scalable enough.
--                      [RT #17436]
--
--2355. [func]          Extend the number statistics counters available.
--                      [RT #17590]
--
--2354. [bug]           Failed to initialize some rdatasetheader_t elements.
--                      [RT #17927]
--
--2353. [func]          Add support for Name Server ID (RFC 5001).
--                      'dig +nsid' requests NSID from server.
--                      'request-nsid yes;' causes recursive server to send
--                      NSID requests to upstream servers.  Server responds
--                      to NSID requests with the string configured by
--                      'server-id' option.  [RT #17091]
--
--2352. [bug]           Various GSS_API fixups. [RT #17729]
--
--2351. [bug]           convertxsl.pl generated very long lines. [RT #17906]
--
--2350. [port]          win32: IPv6 support. [RT #17797]
--
--2349. [func]          Provide incremental re-signing support for secure
--                      dynamic zones. [RT #1091]
--
--2348. [func]          Use the EVP interface to OpenSSL. Add PKCS#11 support.
--                      Documentation is in the new README.pkcs11 file.
--                      New tool, dnssec-keyfromlabel, which takes the
--                      label of a key pair in a HSM and constructs a DNS
--                      key pair for use by named and dnssec-signzone.
--                      [RT #16844]
--
--2347. [bug]           Delete now traverses the RB tree in the canonical
--                      order. [RT #17451]
--
--2346. [func]          Memory statistics now cover all active memory contexts
--                      in increased detail. [RT #17580]
--
--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]
--
--2342. [func]          Use getifaddrs() if available under Linux. [RT #17224]
--
--2341. [bug]           libbind: add missing -I../include for off source
--                      tree builds. [RT #17606]
--
--2340. [port]          openbsd: interface configuration. [RT #17700]
--
--2339. [port]          tru64: support for libbind. [RT #17589]
--
--2338. [bug]           check_ds() could be called with a non DS rdataset.
--                      [RT #17598]
--
--2337. [bug]           BUILD_LDFLAGS was not being correctly set.  [RT #17614]
--
--2336. [func]          If "named -6" is specified then listen on all IPv6
--                      interfaces if there are not listen-on-v6 clauses in
--                      named.conf.  [RT #17581]
--
--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 <isc/mem.h> for details.
--
--2329. [bug]           Clearer help text for dig's '-x' and '-i' options.
--
--2328. [maint]         Add AAAA addresses for A.ROOT-SERVERS.NET,
--                      F.ROOT-SERVERS.NET, H.ROOT-SERVERS.NET,
--                      J.ROOT-SERVERS.NET, K.ROOT-SERVERS.NET and
--                      M.ROOT-SERVERS.NET.
--
--2327. [bug]           It was possible to dereference a NULL pointer in
--                      rbtdb.c.  Implement dead node processing in zones as
--                      we do for caches. [RT #17312]
--
--2326. [bug]           It was possible to trigger a INSIST in the acache
--                      processing.
--
--2325. [port]          Linux: use capset() function if available. [RT #17557]
--
--2324. [bug]           Fix IPv6 matching against "any;". [RT #17533]
--
--2323. [port]          tru64: namespace clash. [RT #17547]
--
--2322. [port]          MacOS: work around the limitation of setrlimit()
--                      for RLIMIT_NOFILE. [RT #17526]
--
--2321. [placeholder]
--
--2320. [func]          Make statistics counters thread-safe for platforms
--                      that support certain atomic operations. [RT #17466]
--
--2319. [bug]           Silence Coverity warnings in 
--                      lib/dns/rdata/in_1/apl_42.c. [RT #17469]
--
--2318. [port]          sunos fixes for libbind.  [RT #17514]
--
--2317. [bug]           "make distclean" removed bind9.xsl.h. [RT #17518]
--
--2316. [port]          Missing #include <isc/print.h> in lib/dns/gssapictx.c.
--                      [RT #17513]
--
--2315.   [bug]           Used incorrect address family for mapped IPv4
--                        addresses in acl.c. [RT #17519]
--
--2314. [bug]           Uninitialized memory use on error path in
--                      bin/named/lwdnoop.c.  [RT #17476]
--
--2313. [cleanup]       Silence Coverity warnings. Handle private stacks.
--                      [RT #17447] [RT #17478]
--
--2312. [cleanup]       Silence Coverity warning in lib/isc/unix/socket.c.
--                      [RT #17458]
--
--2311.   [bug]           IPv6 addresses could match IPv4 ACL entries and
--                        vice versa. [RT #17462]
--
--2310. [bug]           dig, host, nslookup: flush stdout before emitting
--                      debug/fatal messages.  [RT #17501]
--
--2309.   [cleanup]       Fix Coverity warnings in lib/dns/acl.c and iptable.c.
--                        [RT #17455]
--
--2308. [cleanup]       Silence Coverity warning in bin/named/controlconf.c.
--                      [RT #17495]
--
--2307. [bug]           Remove infinite loop from lib/dns/sdb.c. [RT #17496]
--
--2306. [bug]           Remove potential race from lib/dns/resolver.c.
--                      [RT #17470]
--
--2305. [security]      inet_network() buffer overflow. CVE-2008-0122.
--
--2304. [bug]           Check returns from all dns_rdata_tostruct() calls.
--                      [RT #17460]
--
--2303. [bug]           Remove unnecessary code from bin/named/lwdgnba.c.
--                      [RT #17471]
--
--2302. [bug]           Fix memset() calls in lib/tests/t_api.c. [RT #17472]
--
--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 
--                      bin/tests/names/t_names.c. [RT #17473]
--
--2299. [bug]           Remove unnecessary NULL check in
--                      bin/nsupdate/nsupdate.c. [RT #17475]
--
--2298. [bug]           isc_mutex_lock() failure not caught in
--                      bin/tests/timers/t_timers.c. [RT #17468]
--
--2297. [bug]           isc_entropy_createfilesource() failure not caught in
--                      bin/tests/dst/t_dst.c. [RT #17467]
--
--2296. [port]          Allow docbook stylesheet location to be specified to
--                      configure. [RT #17457]
--
--2295. [bug]           Silence static overrun error in bin/named/lwaddr.c.
--                      [RT #17459]
--
--2294. [func]          Allow the experimental statistics channels to have
--                      multiple connections and ACL.
--                      Note: the stats-server and stats-server-v6 options
--                      available in the previous beta releases are replaced
--                      with the generic statistics-channels statement.
--
--2293. [func]          Add ACL regression test. [RT #17375]
--
--2292. [bug]           Log if the working directory is not writable.
--                      [RT #17312]
--
--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
--                      set in the response. [RT #17301]
--
--2289. [func]          named-checkzone now reports the out-of-zone CNAME
--                      found. [RT #17309]
--
--2288. [port]          win32: mark service as running when we have finished
--                      loading.  [RT #17441]
--
--2287. [bug]           Use 'volatile' if the compiler supports it. [RT #17413]
--
--2286. [func]          Allow a TCP connection to be used as a weak
--                      authentication method for reverse zones.
--                      New update-policy methods tcp-self and 6to4-self.
--                      [RT #17378]
--
--2285. [func]          Test framework for client memory context management.
--                      [RT #17377]
--
--2284. [bug]           Memory leak in UPDATE prerequisite processing.
--                      [RT #17377]
--
--2283. [bug]           TSIG keys were not attaching to the memory
--                      context.  TSIG keys should use the rings
--                      memory context rather than the clients memory
--                      context. [RT #17377]
--
--2282. [bug]           Acl code fixups. [RT #17346] [RT #17374]
--
--2281. [bug]           Attempts to use undefined acls were not being logged.
--                      [RT #17307]
--
--2280. [func]          Allow the experimental http server to be reached
--                      over IPv6 as well as IPv4. [RT #17332]
--
--2279.   [bug]           Use setsockopt(SO_NOSIGPIPE), when available,
--                      to protect applications from receiving spurious
--                      SIGPIPE signals when using the resolver.
--
--2278. [bug]           win32: handle the case where Windows returns no
--                      search list or DNS suffix. [RT #17354]
--
--2277. [bug]           Empty zone names were not correctly being caught at
--                      in the post parse checks. [RT #17357]
--
--2276. [bug]           Install <dst/gssapi.h>.  [RT# 17359]
--
--2275. [func]          Add support to dig to perform IXFR queries over UDP.
--                      [RT #17235]
--
--2274. [func]          Log zone transfer statistics. [RT #17336]
--
--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.
--                      [RT #17262]
--
--2271. [bug]           Fix a memory leak in http server code [RT #17100]
--
--2270. [bug]           dns_db_closeversion() version->writer could be reset
--                      before it is tested. [RT #17290]
--
--2269. [contrib]       dbus memory leaks and missing va_end calls. [RT #17232]
--
--2268. [bug]           0.IN-ADDR.ARPA was missing from the empty zones
--                      list.
--
--      --- 9.5.0b1 released ---
--
--2267.   [bug]           Radix tree node_num value could be set incorrectly,
--                        causing positive ACL matches to look like negative
--                        ones.  [RT #17311]
--
--2266. [bug]           client.c:get_clientmctx() returned the same mctx
--                      once the pool of mctx's was filled. [RT #17218]
--
--2265. [bug]           Test that the memory context's basic_table is non NULL
--                      before freeing.  [RT #17265]
--
--2264. [bug]           Server prefix length was being ignored. [RT #17308]
--
--2263. [bug]           "named-checkconf -z" failed to set default value
--                      for "check-integrity".  [RT #17306]
--
--2262. [bug]           Error status from all but the last view could be
--                      lost. [RT #17292]
--
--2261.   [bug]           Fix memory leak with "any" and "none" ACLs [RT #17272]
--
--2260. [bug]           Reported wrong clients-per-query when increasing the
--                        value. [RT #17236]
--
--2259. [placeholder]
--
--      --- 9.5.0a7 released ---
--
--2258. [bug]           Fallback from IXFR/TSIG to SOA/AXFR/TSIG broken.
--                      [RT #17241]
--
--2257. [bug]           win32: Use the full path to vcredist_x86.exe when
--                      calling it. [RT #17222]
--
--2256. [bug]           win32: Correctly register the installation location of
--                      bindevt.dll. [RT #17159]
--
--2255. [maint]         L.ROOT-SERVERS.NET is now 199.7.83.42.
--
--2254. [bug]           timer.c:dispatch() failed to lock timer->lock
--                      when reading timer->idle allowing it to see
--                      intermediate values as timer->idle was reset by
--                      isc_timer_touch(). [RT #17243]
--
--2253. [func]          "max-cache-size" defaults to 32M.
--                      "max-acache-size" defaults to 16M.
--
--2252.   [bug]           Fixed errors in sortlist code [RT #17216]
--
--2251. [placeholder]
--
--2250. [func]          New flag 'memstatistics' to state whether the
--                      memory statistics file should be written or not.
--                      Additionally named's -m option will cause the
--                      statistics file to be written. [RT #17113]
--                      
--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]
--
--2247. [doc]           Sort doc/misc/options. [RT #17067]
--
--2246. [bug]           Make the startup of test servers (ans.pl) more
--                      robust. [RT #17147]
--
--2245. [bug]           Validating lack of DS records at trust anchors wasn't
--                      working. [RT #17151]
--
--2244. [func]          Allow the check of nameserver names against the
--                      SOA MNAME field to be disabled by specifying
--                      'notify-to-soa yes;'.  [RT #17073]
--
--2243. [func]          Configuration files without a newline at the end now
--                      parse without error. [RT #17120]
--
--2242. [bug]           nsupdate: GSS-TSIG support using the Heimdal Kerberos
--                      library could require a source of random data.
--                      [RT #17127]
--
--2241. [func]          nsupdate: add a interactive 'help' command. [RT #17099]
--
--2240. [bug]           Cleanup nsupdates GSS-TSIG support.  Convert
--                      a number of INSIST()s into plain fatal() errors
--                      which report the triggering result code.
--                      The 'key' command wasn't disabling GSS-TSIG.
--                      [RT #17099]
--
--2239. [func]          Ship a pre built bin/named/bind9.xsl.h. [RT #17114]
--
--2238. [bug]           It was possible to trigger a REQUIRE when a
--                      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]
--
--2235. [bug]           <isc/atomic.h> was not being installed. [RT #17135]
--
--2234.   [port]          Correct some compiler warnings on SCO OSr5 [RT #17134]
--  
--2233.   [func]          Add support for O(1) ACL processing, based on
--                        radix tree code originally written by Kevin
--                        Brintnall. [RT #16288]
--
--2232. [bug]           dns_adb_findaddrinfo() could fail and return
--                      ISC_R_SUCCESS. [RT #17137]
--
--2231. [bug]           Building dlzbdb (contrib/dlz/bin/dlzbdb) was broken.
--                      [RT #17088]
--
--2230. [bug]           We could INSIST reading a corrupted journal.
--                      [RT #17132]
--
--2229. [bug]           Null pointer dereference on query pool creation
--                      failure. [RT #17133]
--
--2228. [contrib]       contrib: Change 2188 was incomplete.
--
--2227. [cleanup]       Tidied up the FAQ. [RT #17121]
--
--2226. [placeholder]
--
--2225. [bug]           More support for systems with no IPv4 addresses.
--                      [RT #17111]
--
--2224. [bug]           Defer journal compaction if a xfrin is in progress.
--                      [RT #17119]
--
--2223. [bug]           Make a new journal when compacting. [RT #17119]
--
--2222. [func]          named-checkconf now checks server key references.
--                      [RT #17097]
--
--2221. [bug]           Set the event result code to reflect the actual
--                      record turned to caller when a cache update is
--                      rejected due to a more credible answer existing.
--                      [RT #17017]
--
--2220. [bug]           win32: Address a race condition in final shutdown of
--                      the Windows socket code. [RT #17028]
--                      
--2219. [bug]           Apply zone consistency checks to additions, not
--                      removals, when updating. [RT #17049]
--
--2218. [bug]           Remove unnecessary REQUIRE from dns_validator_create().
--                      [RT #16976]
--
--2217. [func]          Adjust update log levels. [RT #17092]
--
--2216. [cleanup]       Fix a number of errors reported by Coverity.
--                      [RT #17094]
--
--2215. [bug]           Bad REQUIRE check isc_hmacsha1_verify(). [RT #17094]
--
--2214. [bug]           Deregister OpenSSL lock callback when cleaning
--                      up.  Reorder OpenSSL cleanup so that RAND_cleanup()
--                      is called before the locks are destroyed. [RT #17098]
--
--2213. [bug]           SIG0 diagnostic failure messages were looking at the
--                      wrong status code. [RT #17101]
--
--2212. [func]          'host -m' now causes memory statistics and active
--                      memory to be printed at exit. [RT 17028]
--
--2211. [func]          Update "dynamic update temporarily disabled" message.
--                      [RT #17065]
--
--2210. [bug]           Deleting class specific records via UPDATE could
--                      fail.  [RT #17074]
--
--2209. [port]          osx: linking against user supplied static OpenSSL
--                      libraries failed as the system ones were still being
--                      found. [RT #17078]
--
--2208. [port]          win32: make sure both build methods produce the
--                      same output. [RT #17058]
--
--2207. [port]          Some implementations of getaddrinfo() fail to set
--                      ai_canonname correctly. [RT #17061]
--
--      --- 9.5.0a6 released ---
--
--2206. [security]      "allow-query-cache" and "allow-recursion" now
--                      cross inherit from each other.
--
--                      If allow-query-cache is not set in named.conf then
--                      allow-recursion is used if set, otherwise allow-query
--                      is used if set, otherwise the default (localnets;
--                      localhost;) is used.
--
--                      If allow-recursion is not set in named.conf then
--                      allow-query-cache is used if set, otherwise allow-query
--                      is used if set, otherwise the default (localnets;
--                      localhost;) is used.
--
--                      [RT #16987]
--      
--2205. [bug]           libbind: change #2119 broke thread support. [RT #16982]
--
--2204. [bug]           "rndc flushanme name unknown-view" caused named
--                      to crash. [RT #16984]
--
--2203. [security]      Query id generation was cryptographically weak.
--                      [RT # 16915]
--
--2202. [security]      The default acls for allow-query-cache and
--                      allow-recursion were not being applied. [RT #16960]
--
--2201. [bug]           The build failed in a separate object directory.
--                      [RT #16943]
--
--2200. [bug]           The search for cached NSEC records was stopping to
--                      early leading to excessive DLV queries. [RT #16930]
--
--2199. [bug]           win32: don't call WSAStartup() while loading dlls.
--                      [RT #16911]
--
--2198. [bug]           win32: RegCloseKey() could be called when
--                      RegOpenKeyEx() failed. [RT #16911]
--
--2197. [bug]           Add INSIST to catch negative responses which are
--                      not setting the event result code appropriately.
--                      [RT #16909]
--
--2196. [port]          win32: yield processor while waiting for once to
--                      to complete. [RT #16958]
--
--2195. [func]          dnssec-keygen now defaults to nametype "ZONE"
--                      when generating DNSKEYs. [RT #16954]
--
--2194. [bug]           Close journal before calling 'done' in xfrin.c.
--
--      --- 9.5.0a5 released ---
--
--2193. [port]          win32: BINDInstall.exe is now linked statically.
--                      [RT #16906]
--
--2192. [port]          win32: use vcredist_x86.exe to install Visual
--                      Studio's redistributable dlls if building with
--                      Visual Stdio 2005 or later.
--
--2191. [func]          named-checkzone now allows dumping to stdout (-).
--                      named-checkconf now has -h for help.
--                      named-checkzone now has -h for help.
--                      rndc now has -h for help.
--                      Better handling of '-?' for usage summaries.
--                      [RT #16707]
--
--2190. [func]          Make fallback to plain DNS from EDNS due to timeouts
--                      more visible.  New logging category "edns-disabled".
--                      [RT #16871]
--
--2189. [bug]           Handle socket() returning EINTR. [RT #15949]
--
--2188. [contrib]       queryperf: autoconf changes to make the search for
--                      libresolv or libbind more robust. [RT #16299]
--
--2187. [bug]           query_addds(), query_addwildcardproof() and
--                      query_addnxrrsetnsec() should take a version
--                      argument. [RT #16368]
--
--2186. [port]          cygwin: libbind: check for struct sockaddr_storage
--                      independently of IPv6. [RT #16482]
--
--2185. [port]          sunos: libbind: check for ssize_t, memmove() and
--                      memchr(). [RT #16463]
--
--2184. [bug]           bind9.xsl.h didn't build out of the source tree.
--                      [RT #16830]
--
--2183. [bug]           dnssec-signzone didn't handle offline private keys
--                      well.  [RT #16832]
--
--2182. [bug]           dns_dispatch_createtcp() and dispatch_createudp()
--                      could return ISC_R_SUCCESS when they ran out of
--                      memory. [RT #16365]
--
--2181. [port]          sunos: libbind: add paths.h from BIND 8. [RT #16462]
--
--2180. [cleanup]       Remove bit test from 'compress_test' as they
--                      are no longer needed. [RT #16497]
--
--2179. [func]          'rndc command zone' will now find 'zone' if it is
--                      unique to all the views. [RT #16821]
--
--2178. [bug]           'rndc reload' of a slave or stub zone resulted in
--                      a reference leak. [RT #16867]
--
--2177. [bug]           Array bounds overrun on read (rcodetext) at
--                      debug level 10+. [RT #16798]
--
--2176. [contrib]       dbus update to handle race condition during
--                      initialization (Bugzilla 235809). [RT #16842]
--
--2175. [bug]           win32: windows broadcast condition variable support
--                      was broken. [RT #16592]
--
--2174. [bug]           I/O errors should always be fatal when reading
--                      master files. [RT #16825]
--
--2173. [port]          win32: When compiling with MSVS 2005 SP1 we also
--                      need to ship Microsoft.VC80.MFCLOC.
--
--      --- 9.5.0a4 released ---
--
--2172. [bug]           query_addsoa() was being called with a non zone db.
--                      [RT #16834]
--
--2171. [bug]           Handle breaks in DNSSEC trust chains where the parent
--                      servers are not DS aware (DS queries to the parent
--                      return a referral to the child).
--
--2170. [func]          Add acache processing to test suite. [RT #16711]
--
--2169. [bug]           host, nslookup: when reporting NXDOMAIN report the
--                      given name and not the last name searched for.
--                      [RT #16763]
--
--2168. [bug]           nsupdate: in non-interactive mode treat syntax errors
--                      as fatal errors. [RT #16785]
--
--2167. [bug]           When re-using a automatic zone named failed to
--                      attach it to the new view. [RT #16786]
--
--      --- 9.5.0a3 released ---
--
--2166. [bug]           When running in batch mode, dig could misinterpret
--                      a server address as a name to be looked up, causing
--                      unexpected output. [RT #16743]
--
--2165. [func]          Allow the destination address of a query to determine
--                      if we will answer the query or recurse.
--                      allow-query-on, allow-recursion-on and
--                      allow-query-cache-on. [RT #16291]
--
--2164. [bug]           The code to determine how named-checkzone / 
--                      named-compilezone was called failed under windows.
--                      [RT #16764]
--
--2163. [bug]           If only one of query-source and query-source-v6
--                      specified a port the query pools code broke (change
--                      2129).  [RT #16768]
--
--2162. [func]          Allow "rrset-order fixed" to be disabled at compile
--                      time. [RT #16665]
--
--2161. [bug]           Fix which log messages are emitted for 'rndc flush'.
--                      [RT #16698]
--
--2160. [bug]           libisc wasn't handling NULL ifa_addr pointers returned
--                      from getifaddrs(). [RT #16708]
--
--      --- 9.5.0a2 released ---
--
--2159. [bug]           Array bounds overrun in acache processing. [RT #16710]
--
--2158. [bug]           ns_client_isself() failed to initialize key
--                      leading to a REQUIRE failure. [RT #16688]
--
--2157. [func]          dns_db_transfernode() created. [RT #16685]
--
--2156. [bug]           Fix node reference leaks in lookup.c:lookup_find(),
--                      resolver.c:validated() and resolver.c:cache_name().
--                      Fix a memory leak in rbtdb.c:free_noqname().
--                      Make lookup.c:lookup_find() robust against
--                      event leaks. [RT #16685]
--
--2155. [contrib]       SQLite sdb module from jaboydjr@netwalk.com.
--                      [RT #16694]
--
--2154. [func]          Scoped (e.g. IPv6 link-local) addresses may now be
--                      matched in acls by omitting the scope. [RT #16599]
--
--2153. [bug]           nsupdate could leak memory. [RT #16691]
--
--2152. [cleanup]       Use sizeof(buf) instead of fixed number in
--                      dighost.c:get_trusted_key(). [RT #16678]
--
--2151. [bug]           Missing newline in usage message for journalprint.
--                      [RT #16679]
--
--2150. [bug]           'rrset-order cyclic' uniformly distribute the
--                      starting point for the first response for a given
--                      RRset. [RT #16655]
--
--2149. [bug]           isc_mem_checkdestroyed() failed to abort on
--                      if there were still active memory contexts.
--                      [RT #16672]
--
--2148. [func]          Add positive logging for rndc commands. [RT #14623]
--
--2147. [bug]           libbind: remove potential buffer overflow from
--                      hmac_link.c. [RT #16437]
--
--2146. [cleanup]       Silence Linux's spurious "obsolete setsockopt
--                      SO_BSDCOMPAT" message. [RT #16641]
--
--2145. [bug]           Check DS/DLV digest lengths for known digests.
--                      [RT #16622]
--
--2144. [cleanup]       Suppress logging of SERVFAIL from forwarders.
--                      [RT #16619]
--
--2143. [bug]           We failed to restart the IPv6 client when the
--                      kernel failed to return the destination the
--                      packet was sent to. [RT #16613]
--
--2142. [bug]           Handle master files with a modification time that
--                      matches the epoch. [RT# 16612]
--
--2141. [bug]           dig/host should not be setting IDN_ASCCHECK (IDN
--                      equivalent of LDH checks).  [RT #16609]
--
--2140. [bug]           libbind: missing unlock on pthread_key_create()
--                      failures. [RT #16654]
--
--2139. [bug]           dns_view_find() was being called with wrong type
--                      in adb.c. [RT #16670]
--
--2138. [bug]           Lock order reversal in resolver.c. [RT #16653]
--
--2137. [port]          Mips little endian and/or mips 64 bit are now
--                      supported for atomic operations. [RT#16648]
--
--2136. [bug]           nslookup/host looped if there was no search list
--                      and the host didn't exist. [RT #16657]
--
--2135. [bug]           Uninitialized rdataset in sdlz.c. [RT# 16656]
--
--2134. [func]          Additional statistics support. [RT #16666]
--
--2133. [port]          powerpc:  Support both IBM and MacOS Power PC
--                      assembler syntaxes. [RT #16647]
--
--2132. [bug]           Missing unlock on out of memory in
--                      dns_dispatchmgr_setudp().
--
--2131. [contrib]       dlz/mysql: AXFR was broken. [RT #16630]
--
--2130. [func]          Log if CD or DO were set. [RT #16640]
--
--2129. [func]          Provide a pool of UDP sockets for queries to be
--                      made over. See use-queryport-pool, queryport-pool-ports
--                      and queryport-pool-updateinterval.  [RT #16415]
--
--2128. [doc]           xsltproc --nonet, update DTD versions.  [RT #16635]
--
--2127. [port]          Improved OpenSSL 0.9.8 support. [RT #16563]
--
--2126. [security]      Serialize validation of type ANY responses. [RT #16555]
--
--2125. [bug]           dns_zone_getzeronosoattl() REQUIRE failure if DLZ
--                      was defined. [RT #16574]
--
--2124. [security]      It was possible to dereference a freed fetch
--                      context. [RT #16584]
--
--      --- 9.5.0a1 released ---
--
--2123. [func]          Use Doxygen to generate internal documentation.
--                      [RT #11398]
--
--2122. [func]          Experimental http server and statistics support
--                      for named via xml.
--
--2121. [func]          Add a 10 slot dead masters cache (LRU) with a 600
--                      second timeout. [RT #16553]
--
--2120. [doc]           Fix markup on nsupdate man page. [RT #16556]
--
--2119. [compat]        libbind: allow res_init() to succeed enough to
--                      return the default domain even if it was unable
--                      to allocate memory.
--
--2118. [bug]           Handle response with long chains of domain name
--                      compression pointers which point to other compression
--                      pointers. [RT #16427]
--
--2117. [bug]           DNSSEC fixes: named could fail to cache NSEC records
--                      which could lead to validation failures.  named didn't
--                      handle negative DS responses that were in the process
--                      of being validated.  Check CNAME bit before accepting
--                      NODATA proof. To be able to ignore a child NSEC there
--                      must be SOA (and NS) set in the bitmap. [RT #16399]
--
--2116. [bug]           'rndc reload' could cause the cache to continually
--                      be cleaned. [RT #16401]
--
--2115. [bug]           'rndc reconfig' could trigger a INSIST if the
--                      number of masters for a zone was reduced. [RT #16444]
--
--2114. [bug]           dig/host/nslookup: searches for names with multiple
--                      labels were failing. [RT #16447]
--
--2113. [bug]           nsupdate: if a zone is specified it should be used
--                      for server discover. [RT# 16455]
--
--2112. [security]      Warn if weak RSA exponent is used. [RT #16460]
--
--2111. [bug]           Fix a number of errors reported by Coverity.
--                      [RT #16507]
--
--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]
--
--2108. [func]          DHCID support. [RT #16456]
--
--2107. [bug]           dighost.c: more cleanup of buffers. [RT #16499]
--
--2106. [func]          'rndc status' now reports named's version. [RT #16426]
--
--2105. [func]          GSS-TSIG support (RFC 3645).
--
--2104. [port]          Fix Solaris SMF error message.
--
--2103. [port]          Add /usr/sfw to list of locations for OpenSSL
--                      under Solaris.
--
--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.
--                      Copy Debug\named-checkzone to Debug\named-compilezone.
--
--2099. [port]          win32: more manifest issues.
--
--2098. [bug]           Race in rbtdb.c:no_references(), which occasionally
--                      triggered an INSIST failure about the node lock
--                      reference.  [RT #16411]
--
--2097. [bug]           named could reference a destroyed memory context
--                      after being reloaded / reconfigured. [RT #16428]
--
--2096. [bug]           libbind: handle applications that fail to detect
--                      res_init() failures better.
--
--2095. [port]          libbind: alway prototype inet_cidr_ntop_ipv6() and
--                      net_cidr_ntop_ipv6(). [RT #16388]
-- 
--2094. [contrib]       Update named-bootconf.  [RT# 16404]
--
--2093. [bug]           named-checkzone -s was broken.
--
--2092. [bug]           win32: dig, host, nslookup.  Use registry config
--                      if resolv.conf does not exist or no nameservers
--                      listed. [RT #15877] 
--
--2091. [port]          dighost.c: race condition on cleanup. [RT #16417]
--
--2090. [port]          win32: Visual C++ 2005 command line manifest support.
--                      [RT #16417]
--
--2089. [security]      Raise the minimum safe OpenSSL versions to
--                      OpenSSL 0.9.7l and OpenSSL 0.9.8d.  Versions
--                      prior to these have known security flaws which
--                      are (potentially) exploitable in named. [RT #16391]
--
--2088. [security]      Change the default RSA exponent from 3 to 65537.
--                      [RT #16391]
--
--2087. [port]          libisc failed to compile on OS's w/o a vsnprintf.
--                      [RT #16382]
--
--2086. [port]          libbind: FreeBSD now has get*by*_r() functions.
--                      [RT #16403]
--
--2085. [doc]           win32: added index.html and README to zip. [RT #16201]
--
--2084. [contrib]       dbus update for 9.3.3rc2.
--
--2083. [port]          win32: Visual C++ 2005 support.
--
--2082. [doc]           Document 'cache-file' as a test only option.
--
--2081. [port]          libbind: minor 64-bit portability fix in memcluster.c.
--                      [RT #16360]
--
--2080. [port]          libbind: res_init.c did not compile on older versions
--                      of Solaris. [RT #16363]
--
--2079. [bug]           The lame cache was not handling multiple types
--                      correctly. [RT #16361]
--
--2078. [bug]           dnssec-checkzone output style "default" was badly
--                      named.  It is now called "relative". [RT #16326]
--
--2077. [bug]           'dnssec-signzone -O raw' wasn't outputting the
--                      complete signed zone. [RT #16326]
--
--2076. [bug]           Several files were missing #include <config.h>
--                      causing build failures on OSF. [RT #16341]
--
--2075. [bug]           The spillat timer event hander could leak memory.
--                      [RT #16357]
--
--2074. [bug]           dns_request_createvia2(), dns_request_createvia3(),
--                      dns_request_createraw2() and dns_request_createraw3()
--                      failed to send multiple UDP requests. [RT #16349]
--
--2073. [bug]           Incorrect semantics check for update policy "wildcard".
--                      [RT #16353]
--
--2072. [bug]           We were not generating valid HMAC SHA digests.
--                      [RT #16320]
--
--2071. [port]          Test whether gcc accepts -fno-strict-aliasing.
--                      [RT #16324]
--
--2070. [bug]           The remote address was not always displayed when
--                      reporting dispatch failures. [RT #16315]
--
--2069. [bug]           Cross compiling was not working. [RT #16330]
--
--2068. [cleanup]       Lower incremental tuning message to debug 1.
--                      [RT #16319]
--
--2067. [bug]           'rndc' could close the socket too early triggering
--                      a INSIST under Windows. [RT #16317]
--
--2066. [security]      Handle SIG queries gracefully. [RT #16300]
--
--2065. [bug]           libbind: probe for HPUX prototypes for
--                      endprotoent_r() and endservent_r().  [RT 16313]
--
--2064. [bug]           libbind: silence AIX compiler warnings. [RT #16218]
--
--2063. [bug]           Change #1955 introduced a bug which caused the first
--                      'rndc flush' call to not free memory. [RT #16244]
--
--2062. [bug]           'dig +nssearch' was reusing a buffer before it had
--                      been returned by the socket code. [RT #16307]
--
--2061. [bug]           Accept expired wildcard message reversed. [RT #16296]
--
--2060. [bug]           Enabling DLZ support could leave views partially
--                      configured. [RT #16295]
--
--2059. [bug]           Search into cache rbtdb could trigger an INSIST
--                      failure while cleaning up a stale rdataset.
--                      [RT #16292]
--
--2058. [bug]           Adjust how we calculate rtt estimates in the presence
--                      of authoritative servers that drop EDNS and/or CD
--                      requests.  Also fallback to EDNS/512 and plain DNS
--                      faster for zones with less than 3 servers.  [RT #16187]
--
--2057. [bug]           Make setting "ra" dependent on both allow-query-cache
--                      and allow-recursion. [RT #16290]
--
--2056. [bug]           dig: ixfr= was not being treated case insensitively
--                      at all times. [RT #15955]
--
--2055. [bug]           Missing goto after dropping multicast query.
--                      [RT #15944]
--
--2054. [port]          freebsd: do not explicitly link against -lpthread.
--                      [RT #16170]
--
--2053. [port]          netbsd:libbind: silence compiler warnings. [RT #16220]
--
--2052. [bug]           'rndc' improve connect failed message to report
--                      the failing address. [RT #15978]
--
--2051. [port]          More strtol() fixes. [RT #16249]
--
--2050. [bug]           Parsing of NSAP records was not case insensitive.
--                      [RT #16287]
--
--2049. [bug]           Restore SOA before AXFR when falling back from
--                      a attempted IXFR when transferring in a zone.
--                      Allow a initial SOA query before attempting
--                      a AXFR to be requested. [RT #16156]
--
--2048. [bug]           It was possible to loop forever when using
--                      avoid-v4-udp-ports / avoid-v6-udp-ports when
--                      the OS always returned the same local port.
--                      [RT #16182]
--
--2047. [bug]           Failed to initialize the interface flags to zero.
--                      [RT #16245]
--
--2046. [bug]           rbtdb.c:rdataset_setadditional() could cause duplicate
--                      cleanup [RT #16247].
--
--2045. [func]          Use lock buckets for acache entries to limit memory
--                      consumption. [RT #16183]
--
--2044. [port]          Add support for atomic operations for Itanium.
--                      [RT #16179]
--
--2043. [port]          nsupdate/nslookup: Force the flushing of the prompt
--                      for interactive sessions. [RT#16148]
--
--2042. [bug]           named-checkconf was incorrectly rejecting the
--                      logging category "config". [RT #16117]
--
--2041. [bug]           "configure --with-dlz-bdb=yes" produced a bad
--                      set of libraries to be linked. [RT #16129]
--
--2040. [bug]           rbtdb no_references() could trigger an INSIST
--                      failure with --enable-atomic.  [RT #16022]
--
--2039. [func]          Check that all buffers passed to the socket code
--                      have been retrieved when the socket event is freed.
--                      [RT #16122]
--
--2038. [bug]           dig/nslookup/host was unlinking from wrong list
--                      when handling errors. [RT #16122]
--
--2037. [func]          When unlinking the first or last element in a list
--                      check that the list head points to the element to
--                      be unlinked. [RT #15959]
--
--2036. [bug]           'rndc recursing' could cause trigger a REQUIRE.
--                      [RT #16075]
--
--2035. [func]          Make falling back to TCP on UDP refresh failure
--                      optional. Default "try-tcp-refresh yes;" for BIND 8
--                      compatibility. [RT #16123]
--
--2034. [bug]           gcc: set -fno-strict-aliasing. [RT #16124]
--
--2033. [bug]           We weren't creating multiple client memory contexts
--                      on demand as expected. [RT #16095]
--
--2032. [bug]           Remove a INSIST in query_addadditional2(). [RT #16074]
--
--2031. [bug]           Emit a error message when "rndc refresh" is called on
--                      a non slave/stub zone. [RT # 16073]
--
--2030. [bug]           We were being overly conservative when disabling
--                      openssl engine support. [RT #16030]
--
--2029. [bug]           host printed out the server multiple times when
--                      specified on the command line. [RT #15992]
--
--2028. [port]          linux: socket.c compatibility for old systems.
--                      [RT #16015]
--
--2027. [port]          libbind: Solaris x86 support. [RT #16020]
--
--2026. [bug]           Rate limit the two recursive client exceeded messages.
--                      [RT #16044]
--
--2025. [func]          Update "zone serial unchanged" message. [RT #16026]
--
--2024. [bug]           named emitted spurious "zone serial unchanged"
--                      messages on reload. [RT #16027]
--
--2023. [bug]           "make install" should create ${localstatedir}/run and
--                      ${sysconfdir} if they do not exist. [RT #16033]
--
--2022. [bug]           If dnssec validation is disabled only assert CD if
--                      CD was requested. [RT #16037]
--
--2021. [bug]           dnssec-enable no; triggered a REQUIRE. [RT #16037]
--
--2020. [bug]           rdataset_setadditional() could leak memory. [RT #16034]
--
--2019. [tuning]        Reduce the amount of work performed per quantum
--                      when cleaning the cache. [RT #15986]
--
--2018. [bug]           Checking if the HMAC MD5 private file was broken.
--                      [RT #15960]
--
--2017. [bug]           allow-query default was not correct. [RT #15946]
--
--2016. [bug]           Return a partial answer if recursion is not
--                      allowed but requested and we had the answer
--                      to the original qname. [RT #15945]
--
--2015. [cleanup]       use-additional-cache is now acache-enable for
--                      consistency.  Default acache-enable off in BIND 9.4
--                      as it requires memory usage to be configured.
--                      It may be enabled by default in BIND 9.5 once we
--                      have more experience with it.
--
--2014. [func]          Statistics about acache now recorded and sent
--                      to log. [RT #15976]
--
--2013. [bug]           Handle unexpected TSIGs on unsigned AXFR/IXFR
--                      responses more gracefully. [RT #15941]
--
--2012. [func]          Don't insert new acache entries if acache is full.
--                      [RT #15970]
--
--2011. [func]          dnssec-signzone can now update the SOA record of
--                      the signed zone, either as an increment or as the
--                      system time(). [RT #15633]
--
--2010. [placeholder]   rt15958
--
--2009. [bug]           libbind: Coverity fixes. [RT #15808]
--
--2008. [func]          It is now possible to enable/disable DNSSEC
--                      validation from rndc.  This is useful for the
--                      mobile hosts where the current connection point
--                      breaks DNSSEC (firewall/proxy).  [RT #15592]
--
--                              rndc validation newstate [view]
--
--2007. [func]          It is now possible to explicitly enable DNSSEC
--                      validation.  default dnssec-validation no; to
--                      be changed to yes in 9.5.0.  [RT #15674]
--
--2006. [security]      Allow-query-cache and allow-recursion now default
--                      to the built in acls "localnets" and "localhost".
--
--                      This is being done to make caching servers less
--                      attractive as reflective amplifying targets for
--                      spoofed traffic.  This still leave authoritative
--                      servers exposed.
--
--                      The best fix is for full BCP 38 deployment to
--                      remove spoofed traffic.
--
--2005. [bug]           libbind: Retransmission timeouts should be
--                      based on which attempt it is to the nameserver
--                      and not the nameserver itself. [RT #13548]
--
--2004. [bug]           dns_tsig_sign() could pass a NULL pointer to
--                      dst_context_destroy() when cleaning up after a
--                      error. [RT #15835]
--
--2003. [bug]           libbind: The DNS name/address lookup functions could
--                      occasionally follow a random pointer due to
--                      structures not being completely zeroed. [RT #15806]
--
--2002. [bug]           libbind: tighten the constraints on when
--                      struct addrinfo._ai_pad exists.  [RT #15783]
--
--2001. [func]          Check the KSK flag when updating a secure dynamic zone.
--                      New zone option "update-check-ksk yes;".  [RT #15817]
--
--2000. [bug]           memmove()/strtol() fix was incomplete. [RT #15812]
--
--1999. [func]          Implement "rrset-order fixed". [RT #13662]
--
--1998. [bug]           Restrict handling of fifos as sockets to just SunOS.
--                      This allows named to connect to entropy gathering
--                      daemons that use fifos instead of sockets. [RT #15840]
--
--1997. [bug]           Named was failing to replace negative cache entries
--                      when a positive one for the type was learnt.
--                      [RT #15818]
--
--1996. [bug]           nsupdate: if a zone has been specified it should
--                      appear in the output of 'show'. [RT #15797]
--
--1995. [bug]           'host' was reporting multiple "is an alias" messages.
--                      [RT #15702]
--
--1994. [port]          OpenSSL 0.9.8 support. [RT #15694]
--
--1993. [bug]           Log messages, via syslog, were missing the space
--                      after the timestamp if "print-time yes" was specified.
--                      [RT #15844]
--
--1992. [bug]           Not all incoming zone transfer messages included the
--                      view.  [RT #15825]
--
--1991. [cleanup]       The configuration data, once read, should be treated
--                      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()
--                      implementations was not always effective.
--                      [RT #15709]
--
--1989. [bug]           win32: don't check the service password when
--                      re-installing. [RT #15882]
--
--1988. [bug]           Remove a bus error from the SHA256/SHA512 support.
--                      [RT #15878]
--
--1987. [func]          DS/DLV SHA256 digest algorithm support. [RT #15608]
--
--1986. [func]          Report when a zone is removed. [RT #15849]
--
--1985. [protocol]      DLV has now been assigned a official type code of
--                      32769. [RT #15807]
--
--                      Note: care should be taken to ensure you upgrade
--                      both named and dnssec-signzone at the same time for
--                      zones with DLV records where named is the master
--                      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 simultaneously.
--
--1984. [func]          dig, nslookup and host now advertise a 4096 byte
--                      EDNS UDP buffer size by default. [RT #15855]
--
--1983. [func]          Two new update policies.  "selfsub" and "selfwild".
--                      [RT #12895]
--
--1982. [bug]           DNSKEY was being accepted on the parent side of
--                      a delegation.  KEY is still accepted there for
--                      RFC 3007 validated updates. [RT #15620]
--
--1981. [bug]           win32: condition.c:wait() could fail to reattain
--                      the mutex lock.
--
--1980. [func]          dnssec-signzone: output the SOA record as the
--                      first record in the signed zone. [RT #15758]
--
--1979. [port]          linux: allow named to drop core after changing
--                      user ids. [RT #15753]
--
--1978. [port]          Handle systems which have a broken recvmsg().
--                      [RT #15742]
--
--1977. [bug]           Silence noisy log message. [RT #15704]
--
--1976. [bug]           Handle systems with no IPv4 addresses. [RT #15695]
--
--1975. [bug]           libbind: isc_gethexstring() could misparse multi-line
--                      hex strings with comments. [RT #15814]
--
--1974. [doc]           List each of the zone types and associated zone
--                      options separately in the ARM.
--
--1973. [func]          TSIG HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384 and
--                      HMACSHA512 support. [RT #13606]
--
--1972. [contrib]       DBUS dynamic forwarders integration from
--                      Jason Vas Dias <jvdias@redhat.com>.
--
--1971. [port]          linux: make detection of missing IF_NAMESIZE more
--                      robust. [RT #15443]
--
--1970. [bug]           nsupdate: adjust UDP timeout when falling back to
--                      unsigned SOA query. [RT #15775]
--
--1969. [bug]           win32: the socket code was freeing the socket
--                      structure too early. [RT #15776]
--
--1968. [bug]           Missing lock in resolver.c:validated(). [RT #15739]
--
--1967. [func]          dig/nslookup/host: warn about missing "QR". [RT #15779]
--
--1966. [bug]           Don't set CD when we have fallen back to plain DNS.
--                      [RT #15727]
--
--1965. [func]          Suppress spurious "recursion requested but not
--                      available" warning with 'dig +qr'. [RT #15780].
--
--1964. [func]          Separate out MX and SRV to CNAME checks. [RT #15723]
--
--1963. [port]          Tru64 4.0E doesn't support send() and recv(). 
--                      [RT #15586]
--
--1962. [bug]           Named failed to clear old update-policy when it
--                      was removed. [RT #15491]
--
--1961. [bug]           Check the port and address of responses forwarded
--                      to dispatch. [RT #15474]
--
--1960. [bug]           Update code should set NSEC ttls from SOA MINIMUM.
--                      [RT #15465]
--
--1959. [func]          Control the zeroing of the negative response TTL to
--                      a soa query.  Defaults "zero-no-soa-ttl yes;" and
--                      "zero-no-soa-ttl-cache no;". [RT #15460]
--
--1958. [bug]           Named failed to update the zone's secure state
--                      until the zone was reloaded. [RT #15412]
--
--1957. [bug]           Dig mishandled responses to class ANY queries.
--                      [RT #15402]
--
--1956. [bug]           Improve cross compile support, 'gen' is now built
--                      by native compiler.  See README for additional
--                      cross compile support information. [RT #15148]
--
--1955. [bug]           Pre-allocate the cache cleaning iterator. [RT #14998]
--
--1954. [func]          Named now falls back to advertising EDNS with a
--                      512 byte receive buffer if the initial EDNS queries
--                      fail.  [RT #14852]
--
--1953. [func]          The maximum EDNS UDP response named will send can
--                      now be set in named.conf (max-udp-size).  This is
--                      independent of the advertised receive buffer
--                      (edns-udp-size). [RT #14852]
--
--1952. [port]          hpux: tell the linker to build a runtime link
--                      path "-Wl,+b:". [RT #14816].
--
--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]
--
--1949. [func]          Addition memory leakage checks. [RT #15544]
--
--1948. [bug]           If was possible to trigger a REQUIRE failure in
--                      xfrin.c:maybe_free() if named ran out of memory.
--                      [RT #15568]
--
--1947. [func]          It is now possible to configure named to accept
--                      expired RRSIGs.  Default "dnssec-accept-expired no;".
--                      Setting "dnssec-accept-expired yes;" leaves named
--                      vulnerable to replay attacks.  [RT #14685]
--
--1946. [bug]           resume_dslookup() could trigger a REQUIRE failure
--                      when using forwarders. [RT #15549]
--
--1945. [cleanup]       dnssec-keygen: RSA (RSAMD5) is no longer recommended.
--                      To generate a RSAMD5 key you must explicitly request
--                      RSAMD5. [RT #13780]
--                      
--1944. [cleanup]       isc_hash_create() does not need a read/write lock.
--                      [RT #15522]
--
--1943. [bug]           Set the loadtime after rolling forward the journal.
--                      [RT #15647]
--
--1942. [bug]           If the name of a DNSKEY match that of one in
--                      trusted-keys do not attempt to validate the DNSKEY
--                      using the parents DS RRset. [RT #15649]
--
--1941. [bug]           ncache_adderesult() should set eresult even if no
--                      rdataset is passed to it. [RT #15642]
--
--1940. [bug]           Fixed a number of error conditions reported by
--                      Coverity.
--
--1939. [bug]           The resolver could dereference a null pointer after
--                      validation if all the queries have timed out.
--                      [RT #15528]
--
--1938. [bug]           The validator was not correctly handling unsecure
--                      negative responses at or below a SEP. [RT #15528]
--
--1937. [bug]           sdlz doesn't handle RRSIG records. [RT #15564]
--
--1936. [bug]           The validator could leak memory. [RT #15544]
--
--1935. [bug]           'acache' was DO sensitive. [RT #15430]
--
--1934. [func]          Validate pending NS RRsets, in the authority section,
--                      prior to returning them if it can be done without
--                      requiring DNSKEYs to be fetched.  [RT #15430]
--
--1933. [bug]           dump_rdataset_raw() had a incorrect INSIST. [RT #15534]
--
--1932. [bug]           hpux: LDFLAGS was getting corrupted. [RT #15530]
--
--1931. [bug]           Per-client mctx could require a huge amount of memory,
--                      particularly for a busy caching server. [RT #15519]
--
--1930. [port]          HPUX: ia64 support. [RT #15473]
--
--1929. [port]          FreeBSD: extend use of PTHREAD_SCOPE_SYSTEM.
--
--1928. [bug]           Race in rbtdb.c:currentversion(). [RT #15517]
--
--1927. [bug]           Access to soanode or nsnode in rbtdb violated the
--                      lock order rule and could cause a dead lock.
--                      [RT# 15518]
--
--1926. [bug]           The Windows installer did not check for empty
--                      passwords.  BINDinstall was being installed in
--                      the wrong place. [RT #15483]
--
--1925. [port]          All outer level AC_TRY_RUNs need cross compiling
--                      defaults. [RT #15469]
--
--1924. [port]          libbind: hpux ia64 support. [RT #15473]
--
--1923. [bug]           ns_client_detach() called too early. [RT #15499]
--
--1922. [bug]           check-tool.c:setup_logging() missing call to
--                      dns_log_setcontext().
--
--1921. [bug]           Client memory contexts were not using internal
--                      malloc. [RT# 15434]
--
--1920. [bug]           The cache rbtdb lock array was too small to
--                      have the desired performance characteristics.
--                      [RT #15454]
--
--1919. [contrib]       queryperf: a set of new features: collecting/printing
--                      response delays, printing intermediate results, and
--                      adjusting query rate for the "target" qps.
--
--1918. [bug]           Memory leak when checking acls. [RT #15391]
--
--1917. [doc]           funcsynopsisinfo wasn't being treated as verbatim
--                      when generating man pages. [RT #15385]
--
--1916. [func]          Integrate contributed IDN code from JPNIC. [RT #15383]
--
--1915. [bug]           dig +ndots was broken. [RT #15215]
--
--1914. [protocol]      DS is required to accept mnemonic algorithms
--                      (RFC 4034).  Still emit numeric algorithms for
--                      compatibility with RFC 3658. [RT #15354]
--
--1913. [func]          Integrate contributed DLZ code into named. [RT #11382]
--
--1912. [port]          aix: atomic locking for powerpc. [RT #15020]
--
--1911. [bug]           Update windows socket code. [RT #14965]
--
--1910. [bug]           dig's +sigchase code overhauled. [RT #14933]
--
--1909. [bug]           The DLV code has been re-worked to make no longer
--                      query order sensitive. [RT #14933]
--
--1908. [func]          dig now warns if 'RA' is not set in the answer when
--                      'RD' was set in the query.  host/nslookup skip servers
--                      that fail to set 'RA' when 'RD' is set unless a server
--                      is explicitly set.  [RT #15005]
--
--1907. [func]          host/nslookup now continue (default)/fail on SERVFAIL.
--                      [RT #15006]
--
--1906. [func]          dig now has a '-q queryname' and '+showsearch' options.
--                      [RT #15034]
--
--1905. [bug]           Strings returned from cfg_obj_asstring() should be
--                      treated as read-only.  The prototype for 
--                      cfg_obj_asstring() has been updated to reflect this.
--                      [RT #15256]
--
--1904. [func]          Automatic empty zone creation for D.F.IP6.ARPA and
--                      friends.  Note: RFC 1918 zones are not yet covered by
--                      this but are likely to be in a future release.
--
--                      New options: empty-server, empty-contact,
--                      empty-zones-enable and disable-empty-zone.
--
--1903. [func]          ISC string copy API.
--
--1902. [func]          Attempt to make the amount of work performed in a
--                      iteration self tuning.  The covers nodes clean from
--                      the cache per iteration, nodes written to disk when
--                      rewriting a master file and nodes destroyed per
--                      iteration when destroying a zone or a cache.
--                      [RT #14996]
--
--1901. [cleanup]       Don't add DNSKEY records to the additional section.
--
--1900. [bug]           ixfr-from-differences failed to ensure that the
--                      serial number increased. [RT #15036]
--
--1899. [func]          named-checkconf now validates update-policy entries.
--                      [RT #14963]
--
--1898. [bug]           Extend ISC_SOCKADDR_FORMATSIZE and
--                      ISC_NETADDR_FORMATSIZE to allow for scope details.
--
--1897. [func]          x86 and x86_64 now have separate atomic locking
--                      implementations.
--
--1896. [bug]           Recursive clients soft quota support wasn't working
--                      as expected. [RT #15103]
--
--1895. [bug]           A escaped character is, potentially, converted to
--                      the output character set too early. [RT #14666]
--
--1894. [doc]           Review ARM for BIND 9.4.
--
--1893. [port]          Use uintptr_t if available. [RT #14606]
--
--1892. [func]          Support for SPF rdata type. [RT #15033]
--
--1891. [port]          freebsd: pthread_mutex_init can fail if it runs out
--                      of memory. [RT #14995]
--
--1890. [func]          Raise the UDP receive buffer size to 32k if it is
--                      less than 32k. [RT #14953]
--
--1889. [port]          sunos: non blocking i/o support. [RT #14951]
--
--1888. [func]          Support for IPSECKEY rdata type. [RT #14967]
--
--1887. [bug]           The cache could delete expired records too fast for
--                      clients with a virtual time in the past. [RT #14991]
--
--1886. [bug]           fctx_create() could return success even though it
--                      failed. [RT #14993]
--
--1885. [func]          dig: report the number of extra bytes still left in
--                      the packet after processing all the records.
--
--1884. [cleanup]       dighost.c: move external declarations into <dig/dig.h>.
--
--1883. [bug]           dnssec-signzone, dnssec-keygen: handle negative debug
--                      levels. [RT #14962]
--
--1882. [func]          Limit the number of recursive clients that can be
--                      waiting for a single query (<qname,qtype,qclass>) to
--                      resolve.  New options clients-per-query and
--                      max-clients-per-query.
--
--1881. [func]          Add a system test for named-checkconf. [RT #14931]
--
--1880. [func]          The lame cache is now done on a <qname,qclass,qtype>
--                      basis as some servers only appear to be lame for
--                      certain query types.  [RT #14916]
--
--1879. [func]          "USE INTERNAL MALLOC" is now runtime selectable.
--                      [RT #14892]
--
--1878. [func]          Detect duplicates of UDP queries we are recursing on
--                      and drop them.  New stats category "duplicate".
--                      [RT #2471]
--
--1877. [bug]           Fix unreasonably low quantum on call to
--                      dns_rbt_destroy2().  Remove unnecessary unhash_node()
--                      call. [RT #14919]
--
--1876. [func]          Additional memory debugging support to track size
--                      and mctx arguments. [RT #14814]
--
--1875. [bug]           process_dhtkey() was using the wrong memory context
--                      to free some memory. [RT #14890]
--
--1874. [port]          sunos: portability fixes. [RT #14814]
--
--1873. [port]          win32: isc__errno2result() now reports its caller.
--                      [RT #13753]
--
--1872. [port]          win32: Handle ERROR_NETNAME_DELETED.  [RT #13753]
--
--1871. [placeholder]
--
--1870. [func]          Added framework for handling multiple EDNS versions.
--                      [RT #14873]
--
--1869. [func]          dig can now specify the EDNS version when making
--                      a query. [RT #14873]
--
--1868. [func]          edns-udp-size can now be overridden on a per
--                      server basis. [RT #14851]
--
--1867. [bug]           It was possible to trigger a INSIST in
--                      dlv_validatezonekey(). [RT #14846]
--
--1866. [bug]           resolv.conf parse errors were being ignored by
--                      dig/host/nslookup. [RT #14841]
--
--1865. [bug]           Silently ignore nameservers in /etc/resolv.conf with
--                      bad addresses. [RT #14841]
--
--1864. [bug]           Don't try the alternative transfer source if you
--                      got a answer / transfer with the main source
--                      address. [RT #14802]
--
--1863. [bug]           rrset-order "fixed" error messages not complete.
--
--1862. [func]          Add additional zone data constancy checks.
--                      named-checkzone has extended checking of NS, MX and 
--                      SRV record and the hosts they reference.
--                      named has extended post zone load checks.
--                      New zone options: check-mx and integrity-check. 
--                      [RT #4940]
--
--1861. [bug]           dig could trigger a INSIST on certain malformed
--                      responses. [RT #14801]
--
--1860. [port]          solaris 2.8: hack_shutup_pthreadmutexinit was
--                      incorrectly set. [RT #14775]
--
--1859. [func]          Add support for CH A record. [RT #14695]
--
--1858. [bug]           The flush-zones-on-shutdown option wasn't being
--                      parsed. [RT #14686]
--
--1857. [bug]           named could trigger a INSIST() if reconfigured /
--                      reloaded too fast.  [RT #14673]
--
--1856. [doc]           Switch Docbook toolchain from DSSSL to XSL.
--                      [RT #11398]
--
--1855. [bug]           ixfr-from-differences was failing to detect changes
--                      of ttl due to dns_diff_subtract() was ignoring the ttl
--                      of records.  [RT #14616]
--
--1854. [bug]           lwres also needs to know the print format for
--                      (long long).  [RT #13754]
--
--1853. [bug]           Rework how DLV interacts with proveunsecure().
--                      [RT #13605]
--
--1852. [cleanup]       Remove last vestiges of dnssec-signkey and
--                      dnssec-makekeyset (removed from Makefile years ago).
--
--1851. [doc]           Doxygen comment markup. [RT #11398]
--
--1850. [bug]           Memory leak in lwres_getipnodebyaddr(). [RT #14591]
--
--1849. [doc]           All forms of the man pages (docbook, man, html) should
--                      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(). 
--                      [RT #13661]
--                      
--1846. [contrib]       query-loc-0.3.0 from Stephane Bortzmeyer
--                      <bortzmeyer@nic.fr>.
--
--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 tightened
--                      to disallow this (draft-ietf-ipv6-addr-arch-v4-02.txt).
--                      [RT #5662]
--
--1843. [cleanup]       CINCLUDES takes precedence over CFLAGS.  This helps
--                      when CFLAGS contains "-I /usr/local/include"
--                      resulting in old header files being used.
--
--1842. [port]          cmsg_len() could produce incorrect results on
--                      some platform. [RT #13744]
--
--1841. [bug]           "dig +nssearch" now makes a recursive query to
--                      find the list of nameservers to query. [RT #13694]
--
--1840. [func]          dnssec-signzone can now randomize signature end times
--                      (dnssec-signzone -j jitter). [RT #13609]
--
--1839. [bug]           <isc/hash.h> was not being installed.
--
--1838. [cleanup]       Don't allow Linux capabilities to be inherited.
--                      [RT #13707]
--
--1837. [bug]           Compile time option ISC_FACILITY was not effective
--                      for 'named -u <user>'.  [RT #13714]
--
--1836. [cleanup]       Silence compiler warnings in hash_test.c.
--
--1835. [bug]           Update dnssec-signzone's usage message. [RT #13657]
--
--1834. [bug]           Bad memset in rdata_test.c. [RT #13658]
--
--1833. [bug]           Race condition in isc_mutex_lock_profile(). [RT #13660]
--
--1832. [bug]           named fails to return BADKEY on unknown TSIG algorithm.
--                      [RT #13620]
--
--1831. [doc]           Update named-checkzone documentation. [RT#13604]
--
--1830. [bug]           adb lame cache has sence of test reversed. [RT #13600]
--
--1829. [bug]           win32: "pid-file none;" broken. [RT #13563]
--
--1828. [bug]           isc_rwlock_init() failed to properly cleanup if it
--                      encountered a error. [RT #13549]
--
--1827. [bug]           host: update usage message for '-a'. [RT #37116]
--
--1826. [bug]           Missing DESTROYLOCK() in isc_mem_createx() on out
--                      of memory error. [RT #13537]
--
--1825. [bug]           Missing UNLOCK() on out of memory error from in
--                      rbtdb.c:subtractrdataset(). [RT #13519]
--
--1824. [bug]           Memory leak on dns_zone_setdbtype() failure.
--                      [RT #13510]
--
--1823. [bug]           Wrong macro used to check for point to point interface.
--                      [RT#13418]
--
--1822. [bug]           check-names test for RT was reversed. [RT #13382]
--
--1821. [placeholder]
--
--1820. [bug]           Gracefully handle acl loops. [RT #13659]
--
--1819. [bug]           The validator needed to check both the algorithm and
--                      digest types of the DS to determine if it could be
--                      used to introduce a secure zone. [RT #13593]
--
--1818. [bug]           'named-checkconf -z' triggered an INSIST. [RT #13599]
--
--1817. [func]          Add support for additional zone file formats for
--                      improving loading performance.  The masterfile-format
--                      option in named.conf can be used to specify a
--                      non-default format.  A separate command
--                      named-compilezone was provided to generate zone files
--                      in the new format.  Additionally, the -I and -O options
--                      for dnssec-signzone specify the input and output
--                      formats.
--
--1816. [port]          UnixWare: failed to compile lib/isc/unix/net.c.
--                      [RT #13597]
--
--1815. [bug]           nsupdate triggered a REQUIRE if the server was set
--                      without also setting the zone and it encountered
--                      a CNAME and was using TSIG.  [RT #13086]
--
--1814. [func]          UNIX domain controls are now supported.
--
--1813. [func]          Restructured the data locking framework using
--                      architecture dependent atomic operations (when
--                      available), improving response performance on
--                      multi-processor machines significantly.
--                      x86, x86_64, alpha, powerpc, and mips are currently
--                      supported.
--
--1812. [port]          win32: IN6_IS_ADDR_UNSPECIFIED macro is incorrect.
--                      [RT #13453]
--
--1811. [func]          Preserve the case of domain names in rdata during
--                      zone transfers. [RT #13547]
--
--1810. [bug]           configure, lib/bind/configure make different default
--                      decisions about whether to do a threaded build.
--                      [RT #13212]
--
--1809. [bug]           "make distclean" failed for libbind if the platform
--                      is not supported.
--
--1808. [bug]           zone.c:notify_zone() contained a race condition,
--                      zone->db could change underneath it.  [RT #13511]
--
--1807. [bug]           When forwarding (forward only) set the active domain
--                      from the forward zone name. [RT #13526]
--
--1806. [bug]           The resolver returned the wrong result when a CNAME /
--                      DNAME was encountered when fetching glue from a
--                      secure namespace. [RT #13501]
--
--1805. [bug]           Pending status was not being cleared when DLV was
--                      active. [RT #13501]
--
--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]
--
--1803. [bug]           dnssec-signzone sometimes failed to remove old
--                      RRSIGs. [RT #13483]
--
--1802. [bug]           Handle connection resets better. [RT #11280]
--
--1801. [func]          Report differences between hints and real NS rrset
--                      and associated address records.
--
--1800. [bug]           Changes #1719 allowed a INSIST to be triggered.
--                      [RT #13428]
--
--1799. [bug]           'rndc flushname' failed to flush negative cache
--                      entries. [RT #13438]
--
--1798. [func]          The server syntax has been extended to support a
--                      range of servers.  [RT #11132]
--
--1797. [func]          named-checkconf now check acls to verify that they
--                      only refer to existing acls. [RT #13101]
--
--1796. [func]          "rndc freeze/thaw" now freezes/thaws all zones.
--
--1795. [bug]           "rndc dumpdb" was not fully documented.  Minor
--                      formating issues with "rndc dumpdb -all".  [RT #13396]
--
--1794. [func]          Named and named-checkzone can now both check for
--                      non-terminal wildcard records.
--
--1793. [func]          Extend adjusting TTL warning messages. [RT #13378]
--
--1792. [func]          New zone option "notify-delay".  Specify a minimum
--                      delay between sets of NOTIFY messages.
--
--1791. [bug]           'host -t a' still printed out AAAA and MX records.
--                      [RT #13230]
--
--1790. [cleanup]       Move lib/dns/sec/dst up into lib/dns.  This should
--                      allow parallel make to succeed.
--
--1789. [bug]           Prerequisite test for tkey and dnssec could fail
--                      with "configure --with-libtool".
--
--1788. [bug]           libbind9.la/libbind9.so needs to link against
--                      libisccfg.la/libisccfg.so.
--
--1787. [port]          HPUX: both "cc" and "gcc" need -Wl,+vnocompatwarnings.
--
--1786. [port]          AIX: libt_api needs to be taught to look for
--                      T_testlist in the main executable (--with-libtool).
--                      [RT #13239]
--
--1785. [bug]           libbind9.la/libbind9.so needs to link against
--                      libisc.la/libisc.so.
--
--1784. [cleanup]       "libtool -allow-undefined" is the default.
--                      Leave hooks in configure to allow it to be set
--                      if needed in the future.
--
--1783. [cleanup]       We only need one copy of libtool.m4, ltmain.sh in the
--                      source tree.
--
--1782. [port]          OSX: --with-libtool + --enable-libbind broke on
--                      __evOptMonoTime.  [RT #13219]
--
--1781. [port]          FreeBSD 5.3: set PTHREAD_SCOPE_SYSTEM. [RT #12810]
--
--1780. [bug]           Update libtool to 1.5.10.
--
--1779. [port]          OSF 5.1: libtool didn't handle -pthread correctly.
--
--1778. [port]          HUX 11.11: fix broken IN6ADDR_ANY_INIT and
--                      IN6ADDR_LOOPBACK_INIT macros.
--
--1777. [port]          OSF 5.1: fix broken IN6ADDR_ANY_INIT and
--                      IN6ADDR_LOOPBACK_INIT macros.
--
--1776. [port]          Solaris 2.9: fix broken IN6ADDR_ANY_INIT and
--                      IN6ADDR_LOOPBACK_INIT macros.
--
--1775. [bug]           Only compile getnetent_r.c when threaded. [RT #13205]
--
--1774. [port]          Aix: Silence compiler warnings / build failures.
--                      [RT #13154]
--
--1773. [bug]           Fast retry on host / net unreachable. [RT #13153]
--
--1772. [placeholder]
--
--1771. [placeholder]
--
--1770. [bug]           named-checkconf failed to report missing a missing
--                      file clause for rbt{64} master/hint zones. [RT#13009]
--
--1769. [port]          win32: change compiler flags /MTd ==> /MDd,
--                      /MT ==> /MD.
--
--1768. [bug]           nsecnoexistnodata() could be called with a non-NSEC
--                      rdataset. [RT #12907]
--
--1767. [port]          Builds on IPv6 platforms without IPv6 Advanced API
--                      support for (struct in6_pktinfo) failed.  [RT #13077]
--
--1766. [bug]           Update the master file timestamp on successful refresh
--                      as well as the journal's timestamp. [RT# 13062]
--
--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 replacement db.
--                      [RT #13016]
--
--1763. [func]          Perform sanity checks on NS records which refer to
--                      'in zone' names. [RT #13002]
--
--1762. [bug]           isc_interfaceiter_create() could return ISC_R_SUCCESS
--                      even when it failed. [RT #12995]
--
--1761. [bug]           'rndc dumpdb' didn't report unassociated entries.
--                      [RT #12971]
--
--1760. [bug]           Host / net unreachable was not penalising rtt
--                      estimates. [RT #12970]
--
--1759. [bug]           Named failed to startup if the OS supported IPv6
--                      but had no IPv6 interfaces configured. [RT #12942]
--
--1758. [func]          Don't send notify messages to self. [RT #12933]
--
--1757. [func]          host now can turn on memory debugging flags with '-m'.
--
--1756. [func]          named-checkconf now checks the logging configuration.
--                      [RT #12352]
--
--1755. [func]          allow-update is now settable at the options / view
--                      level. [RT #6636]
--
--1754. [bug]           We weren't always attempting to query the parent
--                      server for the DS records at the zone cut.
--                      [RT #12774]
--
--1753. [bug]           Don't serve a slave zone which has no NS records.
--                      [RT #12894]
--
--1752. [port]          Move isc_app_start() to after ns_os_daemonise()
--                      as some fork() implementations unblock the signals
--                      that are blocked by isc_app_start(). [RT #12810]
--
--1751. [bug]           --enable-getifaddrs failed under linux. [RT #12867]
--
--1750. [port]          lib/bind/make/rules.in:subdirs was not bash friendly.
--                      [RT #12864]
--
--1749. [bug]           'check-names response ignore;' failed to ignore.
--                      [RT #12866]
--
--1748. [func]          dig now returns the byte count for axfr/ixfr.
--                      
--1747. [bug]           BIND 8 compatibility: named/named-checkconf failed
--                      to parse "host-statistics-max" in named.conf.
--
--1746. [func]          Make public the function to read a key file,
--                      dst_key_read_public(). [RT #12450]
--
--1745. [bug]           Dig/host/nslookup accept replies from link locals
--                      regardless of scope if no scope was specified when
--                      query was sent. [RT #12745]
--
--1744. [bug]           If tuple2msgname() failed to convert a tuple to
--                      a name a REQUIRE could be triggered. [RT #12796]
--
--1743. [bug]           If isc_taskmgr_create() was not able to create the
--                      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
--                      associated RRSIG records. [RT #12788]
--
--1741. [bug]           Deleting all records at a node in a secure zone
--                      using a update-policy grant failed. [RT #12787]
--
--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.
--
--1739. [bug]           dns_rbt_deletetree() could incorrectly return
--                      ISC_R_QUOTA.  [RT #12695]
--
--1738. [bug]           Enable overrun checking by default. [RT #12695]
--
--1737. [bug]           named failed if more than 16 masters were specified.
--                      [RT #12627]
--
--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]
--
--1734. [cleanup]       'rndc-confgen -a -t' remove extra '/' in path.
--                      [RT #12588]
--
--1733. [bug]           Return non-zero exit status on initial load failure.
--                      [RT #12658]
--
--1732. [bug]           'rrset-order name "*"' wasn't being applied to ".".
--                      [RT #12467]
--
--1731. [port]          darwin: relax version test in ifconfig.sh.
--                      [RT #12581]
--
--1730. [port]          Determine the length type used by the socket API.
--                      [RT #12581]
--
--1729. [func]          Improve check-names error messages.
--
--1728. [doc]           Update check-names documentation.
--
--1727. [bug]           named-checkzone: check-names support didn't match
--                      documentation.
--
--1726. [port]          aix5: add support for aix5.
--
--1725. [port]          linux: update error message on interaction of threads,
--                      capabilities and setuid support (named -u). [RT #12541]
--
--1724. [bug]           Look for DNSKEY records with "dig +sigtrace".
--                      [RT #12557]
--
--1723. [cleanup]       Silence compiler warnings from t_tasks.c. [RT #12493]
--
--1722. [bug]           Don't commit the journal on malformed ixfr streams.
--                      [RT #12519]
--
--1721. [bug]           Error message from the journal processing were not
--                      always identifying the relevant journal. [RT #12519]
--
--1720. [bug]           'dig +chase' did not terminate on a RFC 2308 Type 1
--                      negative response. [RT #12506]
--
--1719. [bug]           named was not correctly caching a RFC 2308 Type 1
--                      negative response. [RT #12506]
--
--1718. [bug]           nsupdate was not handling RFC 2308 Type 3 negative
--                      responses when looking for the zone / master server.
--                      [RT #12506]
--
--1717. [port]          solaris: ifconfig.sh did not support Solaris 10.
--                      "ifconfig.sh down" didn't work for Solaris 9.
--
--1716. [doc]           named.conf(5) was being installed in the wrong
--                      location.  [RT# 12441]
--
--1715. [func]          'dig +trace' now randomly selects the next servers
--                      to try.  Report if there is a bad delegation.
--
--1714. [bug]           dig/host/nslookup were only trying the first
--                      address when a nameserver was specified by name.
--                      [RT #12286]
--
--1713. [port]          linux: extend capset failure message to say:
--                      please ensure that the capset kernel module is
--                      loaded.  see insmod(8)
--
--1712. [bug]           Missing FULLCHECK for "trusted-key" in dig.
--
--1711. [func]          'rndc unfreeze' has been deprecated by 'rndc thaw'.
--
--1710. [func]          'rndc notify zone [class [view]]' resend the NOTIFY
--                      messages for the specified zone. [RT #9479]
--
--1709. [port]          solaris: add SMF support from Sun.
--
--1708. [cleanup]       Replaced dns_fullname_hash() with dns_name_fullhash()
--                      for conformance to the name space convention.  Binary
--                      backward compatibility to the old function name is
--                      provided. [RT #12376]
--
--1707. [contrib]       sdb/ldap updated to version 1.0-beta.
--
--1706. [bug]           'rndc stop' failed to cause zones to be flushed
--                      sometimes. [RT #12328]
--
--1705. [func]          Allow the journal's name to be changed via named.conf.
--
--1704. [port]          lwres needed a snprintf() implementation for
--                      platforms without snprintf().  Add missing
--                      "#include <isc/print.h>". [RT #12321]
--
--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 built in zones.
--                      [RT #12323]
--
--1701. [doc]           A minimal named.conf man page.
--
--1700. [func]          nslookup is no longer to be treated as deprecated.
--                      Remove "deprecated" warning message.  Add man page.
--
--1699. [bug]           dnssec-signzone can generate "not exact" errors
--                      when resigning. [RT #12281]
--
--1698. [doc]           Use reserved IPv6 documentation prefix.
--
--1697. [bug]           xxx-source{,-v6} was not effective when it
--                      specified one of listening addresses and a
--                      different port than the listening port. [RT #12257]
--
--1696. [bug]           dnssec-signzone failed to clean out nodes that
--                      consisted of only NSEC and RRSIG records.
--                      [RT #12154]
--
--1695. [bug]           DS records when forwarding require special handling.
--                      [RT #12133]
--
--1694. [bug]           Report if the builtin views of "_default" / "_bind"
--                      are defined in named.conf. [RT #12023]
--
--1693. [bug]           max-journal-size was not effective for master zones
--                      with ixfr-from-differences set. [RT# 12024]
--
--1692. [bug]           Don't set -I, -L and -R flags when libcrypto is in
--                      /usr/lib. [RT #11971]
--
--1691. [bug]           sdb's attachversion was not complete. [RT #11990]
--
--1690. [bug]           Delay detaching view from the client until UPDATE
--                      processing completes when shutting down. [RT #11714]
--
--1689. [bug]           DNS_NAME_TOREGION() and DNS_NAME_SPLIT() macros
--                      contained gratuitous semicolons. [RT #11707]
--
--1688. [bug]           LDFLAGS was not supported.
--
--1687. [bug]           Race condition in dispatch. [RT #10272]
--
--1686. [bug]           Named sent a extraneous NOTIFY when it received a
--                      redundant UPDATE request. [RT #11943]
--
--1685. [bug]           Change #1679 loop tests weren't quite right.
--
--1684. [func]          ixfr-from-differences now takes master and slave in
--                      addition to yes and no at the options and view levels.
--
--1683. [bug]           dig +sigchase could leak memory. [RT #11445]
--
--1682. [port]          Update configure test for (long long) printf format.
--                      [RT #5066]
--
--1681. [bug]           Only set SO_REUSEADDR when a port is specified in
--                      isc_socket_bind(). [RT #11742]
--
--1680. [func]          rndc: the source address can now be specified.
--
--1679. [bug]           When there was a single nameserver with multiple
--                      addresses for a zone not all addresses were tried.
--                      [RT #11706]
--
--1678. [bug]           RRSIG should use TYPEXXXXX for unknown types.
--
--1677. [bug]           dig: +aaonly didn't work, +aaflag undocumented.
--
--1676. [func]          New option "allow-query-cache".  This lets
--                      allow-query be used to specify the default zone
--                      access level rather than having to have every
--                      zone override the global value.  allow-query-cache
--                      can be set at both the options and view levels.
--                      If allow-query-cache is not set allow-query applies.
--
--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.
--
--1673. [port]          linux: issue a error messages if IPv6 interface
--                      scans fails.
--
--1672. [cleanup]       Tests which only function in a threaded build
--                      now return R:THREADONLY (rather than R:UNTESTED)
--                      in a non-threaded build.
--
--1671. [contrib]       queryperf: add NAPTR to the list of known types.
--
--1670. [func]          Log UPDATE requests to slave zones without an acl as
--                      "disabled" at debug level 3. [RT# 11657]
--
--1669. [placeholder]
--
--1668. [bug]           DIG_SIGCHASE was making bin/dig/host dump core.
--
--1667. [port]          linux: not all versions have IF_NAMESIZE.
--
--1666. [bug]           The optional port on hostnames in dual-stack-servers
--                      was being ignored.
--
--1665. [func]          rndc now allows addresses to be set in the
--                      server clauses.
--
--1664. [bug]           nsupdate needed KEY for SIG(0), not DNSKEY.
--
--1663. [func]          Look for OpenSSL by default.
--
--1662. [bug]           Change #1658 failed to change one use of 'type'
--                      to 'keytype'.
--
--1661. [bug]           Restore dns_name_concatenate() call in
--                      adb.c:set_target().  [RT #11582]
--
--1660. [bug]           win32: connection_reset_fix() was being called
--                      unconditionally.  [RT #11595]
--
--1659. [cleanup]       Cleanup some messages that were referring to KEY vs
--                      DNSKEY, NXT vs NSEC and SIG vs RRSIG.
--
--1658. [func]          Update dnssec-keygen to default to KEY for HMAC-MD5
--                      and DH.  Tighten which options apply to KEY and
--                      DNSKEY records.
--
--1657. [doc]           ARM: document query log output.
--
--1656. [doc]           Update DNSSEC description in ARM to cover DS, NSEC
--                      DNSKEY and RRSIG.  [RT #11542]
--
--1655. [bug]           Logging multiple versions w/o a size was broken.
--                      [RT #11446]
--
--1654. [bug]           isc_result_totext() contained array bounds read
--                      error.
--
--1653. [func]          Add key type checking to dst_key_fromfilename(),
--                      DST_TYPE_KEY should be used to read TSIG, TKEY and
--                      SIG(0) keys.
--
--1652. [bug]           TKEY still uses KEY.
--
--1651. [bug]           dig: process multiple dash options.
--
--1650. [bug]           dig, nslookup: flush standard out after each command.
--
--1649. [bug]           Silence "unexpected non-minimal diff" message.
--                      [RT #11206]
--
--1648. [func]          Update dnssec-lookaside named.conf syntax to support
--                      multiple dnssec-lookaside namespaces (not yet
--                      implemented).  
--
--1647. [bug]           It was possible trigger a INSIST when chasing a DS
--                      record that required walking back over a empty node.
--                      [RT #11445]
--
--1646. [bug]           win32: logging file versions didn't work with
--                      non-UNC filenames.  [RT#11486]
--
--1645. [bug]           named could trigger a REQUIRE failure if multiple
--                      masters with keys are specified.
--
--1644. [bug]           Update the journal modification time after a
--                      successful refresh query. [RT #11436]
--
--1643. [bug]           dns_db_closeversion() could leak memory / node
--                      references. [RT #11163]
--
--1642. [port]          Support OpenSSL implementations which don't have
--                      DSA support. [RT #11360]
--
--1641. [bug]           Update the check-names description in ARM. [RT #11389]
--
--1640. [bug]           win32: isc_socket_cancel(ISC_SOCKCANCEL_ACCEPT) was
--                      incorrectly closing the socket.  [RT #11291]
--
--1639. [func]          Initial dlv system test.
--
--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 occurred.  The database version no longer
--                      matched the version of the database that was dumped.
--
--1635. [bug]           Memory leak on error in query_addds().
--
--1634. [bug]           named didn't supply a useful error message when it
--                      detected duplicate views.  [RT #11208]
--
--1633. [bug]           named should return NOTIMP to update requests to a
--                      slaves without a allow-update-forwarding acl specified.
--                      [RT #11331]
--
--1632. [bug]           nsupdate failed to send prerequisite only UPDATE
--                      messages. [RT #11288]
--
--1631. [bug]           dns_journal_compact() could sometimes corrupt the
--                      journal. [RT #11124]
--
--1630. [contrib]       queryperf: add support for IPv6 transport.
--
--1629. [func]          dig now supports IPv6 scoped addresses with the
--                      extended format in the local-server part. [RT #8753]
--
--1628. [bug]           Typo in Compaq Trucluster support. [RT# 11264]
--
--1627. [bug]           win32: sockets were not being closed when the
--                      last external reference was removed. [RT# 11179]
--
--1626. [bug]           --enable-getifaddrs was broken. [RT#11259]
--
--1625. [bug]           named failed to load/transfer RFC2535 signed zones
--                      which contained CNAMES. [RT# 11237]
--
--1624. [bug]           zonemgr_putio() call should be locked. [RT# 11163]
--
--1623. [bug]           A serial number of zero was being displayed in the
--                      "sending notifies" log message when also-notify was
--                      used. [RT #11177]
--
--1622. [func]          probe the system to see if IPV6_(RECV)PKTINFO is
--                      available, and suppress wildcard binding if not.
--
--1621. [bug]           match-destinations did not work for IPv6 TCP queries.
--                      [RT# 11156]
--
--1620. [func]          When loading a zone report if it is signed. [RT #11149]
--
--1619. [bug]           Missing ISC_LIST_UNLINK in end_reserved_dispatches().
--                      [RT# 11118]
--
--1618. [bug]           Fencepost errors in dns_name_ishostname() and
--                      dns_name_ismailbox() could trigger a INSIST().
--
--1617. [port]          win32: VC++ 6.0 support.
--
--1616. [compat]        Ensure that named's version is visible in the core
--                      dump. [RT #11127]
--
--1615. [port]          Define ISC_SOCKADDR_LEN_T based on _BSD_SOCKLEN_T_ if
--                      it is defined.
--
--1614. [port]          win32: silence resource limit messages. [RT# 11101]
--
--1613. [bug]           Builds would fail on machines w/o a if_nametoindex().
--                      Missing #ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX/#endif.
--                      [RT #11119]
--
--1612. [bug]           check-names at the option/view level could trigger
--                      an INSIST. [RT# 11116]
--
--1611. [bug]           solaris: IPv6 interface scanning failed to cope with
--                      no active IPv6 interfaces.
--
--1610. [bug]           On dual stack machines "dig -b" failed to set the
--                      address type to be looked up with "@server".
--                      [RT #11069]
--
--1609. [func]          dig now has support to chase DNSSEC signature chains.
--                      Requires -DDIG_SIGCHASE=1 to be set in STD_CDEFINES.
--
--                      DNSSEC validation code in dig coded by Olivier Courtay
--                      (olivier.courtay@irisa.fr) for the IDsA project
--                      (http://idsa.irisa.fr).
--
--1608. [func]          dig and host now accept -4/-6 to select IP transport
--                      to use when making queries.
--
--1607. [bug]           dig, host and nslookup were still using random()
--                      to generate query ids. [RT# 11013]
--
--1606. [bug]           DLV insecurity proof was failing.
--
--1605. [func]          New dns_db_find() option DNS_DBFIND_COVERINGNSEC.
--
--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 
--                      "allow-recursion" active' warning from view "_bind".
--                      [RT# 10920]
--
--1600. [bug]           Duplicate zone pre-load checks were not case
--                      insensitive.
--
--1599. [bug]           Fix memory leak on error path when checking named.conf.
--
--1598. [func]          Specify that certain parts of the namespace must
--                      be secure (dnssec-must-be-secure).
--
--1597. [func]          Allow notify-source and query-source to be specified
--                      on a per server basis similar to transfer-source.
--                      [RT #6496]
--
--1596. [func]          Accept 'notify-source' style syntax for query-source.
--
--1595. [func]          New notify type 'master-only'.  Enable notify for
--                      master zones only.
--
--1594. [bug]           'rndc dumpdb' could prevent named from answering
--                      queries while the dump was in progress.  [RT #10565]
--
--1593. [bug]           rndc should return "unknown command" to unknown
--                      commands. [RT# 10642]
--
--1592. [bug]           configure_view() could leak a dispatch. [RT# 10675]
--
--1591. [bug]           libbind: updated to BIND 8.4.5.
--
--1590. [port]          netbsd: update thread support.
--
--1589. [func]          DNSSEC lookaside validation.
--
--1588. [bug]           win32: TCP sockets could become blocked. [RT #10115]
--
--1587. [bug]           dns_message_settsigkey() failed to clear existing key.
--                      [RT #10590]
--
--1586. [func]          "check-names" is now implemented.
--
--1585. [placeholder]
--
--1584. [bug]           "make test" failed with a read only source tree.
--                      [RT #10461]
--
--1583. [bug]           Records add via UPDATE failed to get the correct trust
--                      level. [RT #10452]
--
--1582. [bug]           rrset-order failed to work on RRsets with more
--                      than 32 elements. [RT #10381]
--
--1581. [func]          Disable DNSSEC support by default.  To enable
--                      DNSSEC specify "dnssec-enable yes;" in named.conf.
--
--1580. [bug]           Zone destruction on final detach takes a long time.
--                      [RT #3746]
--
--1579. [bug]           Multiple task managers could not be created.
--
--1578. [bug]           Don't use CLASS E IPv4 addresses when resolving.
--                      [RT #10346]
--
--1577. [bug]           Use isc_uint32_t in ultrasparc optimizer bug
--                      workaround code. [RT #10331]
--
--1576. [bug]           Race condition in dns_dispatch_addresponse().
--                      [RT# 10272]
--
--1575. [func]          Log TSIG name on TSIG verify failure. [RT #4404]
--
--1574. [bug]           Don't attempt to open the controls socket(s) when
--                      running tests. [RT #9091]
--
--1573. [port]          linux: update to libtool 1.5.2 so that
--                      "make install DESTDIR=/xx" works with
--                      "configure --with-libtool".  [RT #9941]
--
--1572. [bug]           nsupdate: sign the soa query to find the enclosing
--                      zone if the server is specified. [RT #10148]
--
--1571. [bug]           rbt:hash_node() could fail leaving the hash table
--                      in an inconsistent state.  [RT #10208]
--
--1570. [bug]           nsupdate failed to handle classes other than IN.
--                      New keyword 'class' which sets the default class.
--                      [RT #10202]
--
--1569. [func]          nsupdate new command 'answer' which displays the
--                      complete answer message to the last update.
--
--1568. [bug]           nsupdate now reports that the update failed in
--                      interactive mode. [RT# 10236]
--
--1567. [maint]         B.ROOT-SERVERS.NET is now 192.228.79.201.
--
--1566. [port]          Support for the cmsg framework on Solaris and HP/UX.
--                      This also solved the problem that match-destinations
--                      for IPv6 addresses did not work on these systems.
--                      [RT #10221]
--
--1565. [bug]           CD flag should be copied to outgoing queries unless
--                      the query is under a secure entry point in which case
--                      CD should be set.
--
--1564. [func]          Attempt to provide a fallback entropy source to be
--                      used if named is running chrooted and named is unable
--                      to open entropy source within the chroot area.
--                      [RT #10133]
--
--1563. [bug]           Gracefully fail when unable to obtain neither an IPv4
--                      nor an IPv6 dispatch. [RT #10230]
--
--1562. [bug]           isc_socket_create() and isc_socket_accept() could
--                      leak memory under error conditions. [RT #10230]
--
--1561. [bug]           It was possible to release the same name twice if
--                      named ran out of memory. [RT #10197]
--
--1560. [port]          FreeBSD: work around FreeBSD 5.2 mapping EAI_NODATA
--                      and EAI_NONAME to the same value.
--
--1559. [port]          named should ignore SIGFSZ.
--
--1558. [func]          New DNSSEC 'disable-algorithms'.  Support entry into
--                      child zones for which we don't have a supported
--                      algorithm.  Such child zones are treated as unsigned.
--
--1557. [func]          Implement missing DNSSEC tests for
--                      * NOQNAME proof with wildcard answers.
--                      * NOWILDARD proof with NXDOMAIN.
--                      Cache and return NOQNAME with wildcard answers.
--
--1556. [bug]           nsupdate now treats all names as fully qualified.
--                      [RT #6427]
--
--1555. [func]          'rrset-order cyclic' no longer has a random starting
--                      point per query. [RT #7572]
--
--1554. [bug]           dig, host, nslookup failed when no nameservers
--                      were specified in /etc/resolv.conf. [RT #8232]
--
--1553. [bug]           The windows socket code could stop accepting
--                      connections. [RT#10115]
--
--1552. [bug]           Accept NOTIFY requests from mapped masters if
--                      matched-mapped is set. [RT #10049]
--
--1551. [port]          Open "/dev/null" before calling chroot().
--
--1550. [port]          Call tzset(), if available, before calling chroot().
--
--1549. [func]          named-checkzone can now write out the zone contents
--                      in a easily parsable format (-D and -o).
--
--1548. [bug]           When parsing APL records it was possible to silently
--                      accept out of range ADDRESSFAMILY values. [RT# 9979]
--
--1547. [bug]           Named wasted memory recording duplicate lame zone
--                      entries. [RT #9341]
--
--1546. [bug]           We were rejecting valid secure CNAME to negative
--                      answers.
--
--1545. [bug]           It was possible to leak memory if named was unable to
--                      bind to the specified transfer source and TSIG was
--                      being used. [RT #10120]
--
--1544. [bug]           Named would logged a single entry to a file despite it
--                      being over the specified size limit.
--
--1543. [bug]           Logging using "versions unlimited" did not work.
--
--1542. [placeholder]
--
--1541. [func]          NSEC now uses new bitmap format.
--
--1540. [bug]           "rndc reload <dynamiczone>" was silently accepted.
--                      [RT #8934]
--
--1539. [bug]           Open UDP sockets for notify-source and transfer-source
--                      that use reserved ports at startup. [RT #9475]
--
--1538. [placeholder]   rt9997
--
--1537. [func]          New option "querylog".  If set specify whether query
--                      logging is to be enabled or disabled at startup.
--
--1536. [bug]           Windows socket code failed to log a error description
--                      when returning ISC_R_UNEXPECTED. [RT #9998]
--
--1535. [placeholder]
--
--1534. [bug]           Race condition when priming cache. [RT# 9940]
--
--1533. [func]          Warn if both "recursion no;" and "allow-recursion"
--                      are active. [RT# 4389]
--
--1532. [port]          netbsd: the configure test for <sys/sysctl.h>
--                      requires <sys/param.h>.
--
--1531. [port]          AIX more libtool fixes.
--
--1530. [bug]           It was possible to trigger a INSIST() failure if a
--                      slave master file was removed at just the correct
--                      moment. [RT #9462]
--
--1529. [bug]           "notify explicit;" failed to log that NOTIFY messages
--                      were being sent for the zone. [RT# 9442]
--
--1528. [cleanup]       Simplify some dns_name_ functions based on the
--                      deprecation of bitstring labels.
--
--1527. [cleanup]       Reduce the number of gettimeofday() calls without
--                      losing necessary timer granularity.
--
--1526. [func]          Implemented "additional section caching (or acache)",
--                      an internal cache framework for additional section
--                      content to improve response performance.  Several
--                      configuration options were provided to control the
--                      behavior.
--
--1525. [bug]           dns_cache_create() could trigger a REQUIRE
--                      failure in isc_mem_put() during error cleanup.
--                      [RT# 9360]
--
--1524. [port]          AIX needs to be able to resolve all symbols when
--                      creating shared libraries (--with-libtool).
--
--1523. [bug]           Fix race condition in rbtdb. [RT# 9189]
--
--1522. [bug]           dns_db_findnode() relax the requirements on 'name'.
--                      [RT# 9286]
--
--1521. [bug]           dns_view_createresolver() failed to check the
--                      result from isc_mem_create(). [RT# 9294]
--
--1520. [protocol]      Add SSHFP (SSH Finger Print) type.
--
--1519. [bug]           dnssec-signzone:nsec_setbit() computed the wrong
--                      length of the new bitmap.
--
--1518. [bug]           dns_nsec_buildrdata(), and hence dns_nsec_build(),
--                      contained a off-by-one error when working out the
--                      number of octets in the bitmap.
--
--1517. [port]          Support for IPv6 interface scanning on HP/UX and
--                      TrueUNIX 5.1.
--
--1516. [func]          Roll the DNSSEC types to RRSIG, NSEC and DNSKEY.
--
--1515. [func]          Allow transfer source to be set in a server statement.
--                      [RT #6496]
--
--1514. [bug]           named: isc_hash_destroy() was being called too early.
--                      [RT #9160]
--
--1513. [doc]           Add "US" to root-delegation-only exclude list.
--
--1512. [bug]           Extend the delegation-only logging to return query
--                      type, class and responding nameserver.
--
--1511. [bug]           delegation-only was generating false positives
--                      on negative answers from sub-zones.
--
--1510. [func]          New view option "root-delegation-only".  Apply
--                      delegation-only check to all TLDs and root.
--                      Note there are some TLDs that are NOT delegation
--                      only (e.g. DE, LV, US and MUSEUM) these can be excluded
--                      from the checks by using exclude.
--
--                      root-delegation-only exclude {
--                              "DE"; "LV"; "US"; "MUSEUM";
--                      };
--
--1509. [bug]           Hint zones should accept delegation-only.  Forward
--                      zone should not accept delegation-only.
--
--1508. [bug]           Don't apply delegation-only checks to answers from
--                      forwarders.
--
--1507. [bug]           Handle BIND 8 style returns to NS queries to parents
--                      when making delegation-only checks.
--
--1506. [bug]           Wrong return type for dns_view_isdelegationonly().
--
--1505. [bug]           Uninitialized rdataset in sdb. [RT #8750]
--
--1504. [func]          New zone type "delegation-only".
--
--1503. [port]          win32: install libeay32.dll outside of system32.
--
--1502. [bug]           nsupdate: adjust timeouts for UPDATE requests over TCP.
--
--1501. [func]          Allow TCP queue length to be specified via
--                      named.conf, tcp-listen-queue.
--
--1500. [bug]           host failed to lookup MX records.  Also look up
--                      AAAA records.
--
--1499. [bug]           isc_random need to be seeded better if arc4random()
--                      is not used.
--
--1498. [port]          bsdos: 5.x support.
--
--1497. [placeholder]
--
--1496. [port]          test for pthread_attr_setstacksize().
--
--1495. [cleanup]       Replace hash functions with universal hash.
--
--1494. [security]      Turn on RSA BLINDING as a precaution.
--
--1493. [placeholder]
--
--1492. [cleanup]       Preserve rwlock quota context when upgrading /
--                      downgrading. [RT #5599]
--
--1491. [bug]           dns_master_dump*() would produce extraneous $ORIGIN
--                      lines. [RT #6206]
--
--1490. [bug]           Accept reading state as well as working state in
--                      ns_client_next(). [RT #6813]
--
--1489. [compat]        Treat 'allow-update' on slave zones as a warning.
--                      [RT #3469]
--
--1488. [bug]           Don't override trust levels for glue addresses.
--                      [RT #5764]
--
--1487. [bug]           A REQUIRE() failure could be triggered if a zone was
--                      queued for transfer and the zone was then removed.
--                      [RT #6189]
--
--1486. [bug]           isc_print_snprintf() '%%' consumed one too many format
--                      characters. [RT# 8230]
--
--1485. [bug]           gen failed to handle high type values. [RT #6225]
--
--1484. [bug]           The number of records reported after a AXFR was wrong.
--                      [RT #6229]
--
--1483. [bug]           dig axfr failed if the message id in the answer failed
--                      to match that in the request.  Only the id in the first
--                      message is required to match. [RT #8138]
--
--1482. [bug]           named could fail to start if the kernel supports
--                      IPv6 but no interfaces are configured.  Similarly
--                      for IPv4. [RT #6229]
--
--1481. [bug]           Refresh and stub queries failed to use masters keys
--                      if specified. [RT #7391]
--
--1480. [bug]           Provide replay protection for rndc commands.  Full
--                      replay protection requires both rndc and named to
--                      be updated.  Partial replay protection (limited
--                      exposure after restart) is provided if just named
--                      is updated.
--
--1479. [bug]           cfg_create_tuple() failed to handle out of
--                      memory cleanup.  parse_list() would leak memory
--                      on syntax errors.
--
--1478. [port]          ifconfig.sh didn't account for other virtual
--                      interfaces.  It now takes a optional argument
--                      to specify the first interface number. [RT #3907]
--
--1477. [bug]           memory leak using stub zones and TSIG.
--
--1476. [placeholder]
--
--1475. [port]          Probe for old sprintf().
--
--1474. [port]          Provide strtoul() and memmove() for platforms
--                      without them.
--
--1473. [bug]           create_map() and create_string() failed to handle out
--                      of memory cleanup.  [RT #6813]
--
--1472. [contrib]       idnkit-1.0 from JPNIC, replaces mdnkit.
--
--1471. [bug]           libbind: updated to BIND 8.4.0.
--
--1470. [bug]           Incorrect length passed to snprintf. [RT #5966]
--
--1469. [func]          Log end of outgoing zone transfer at same level
--                      as the start of transfer is logged. [RT #4441]
--
--1468. [func]          Internal zones are no longer counted for
--                      'rndc status'.  [RT #4706]
--
--1467. [func]          $GENERATES now supports optional class and ttl.
--
--1466. [bug]           lwresd configuration errors resulted in memory
--                      and lock leaks.  [RT #5228]
--
--1465. [bug]           isc_base64_decodestring() and isc_base64_tobuffer()
--                      failed to check that trailing bits were zero allowing
--                      some invalid base64 strings to be accepted.  [RT #5397]
--
--1464. [bug]           Preserve "out of zone" data for outgoing zone
--                      transfers. [RT #5192]
--
--1463. [bug]           dns_rdata_from{wire,struct}() failed to catch bad
--                      NXT bit maps. [RT #5577]
--
--1462. [bug]           parse_sizeval() failed to check the token type.
--                      [RT #5586]
--
--1461. [bug]           Remove deadlock from rbtdb code. [RT #5599]
--
--1460. [bug]           inet_pton() failed to reject certain malformed
--                      IPv6 literals.
--
--1459. [placeholder]
--
--1458. [cleanup]       sprintf() -> snprintf().
--
--1457. [port]          Provide strlcat() and strlcpy() for platforms without
--                      them.
--
--1456. [contrib]       gen-data-queryperf.py from Stephane Bortzmeyer.
--
--1455. [bug]           <netaddr> missing from server grammar in
--                      doc/misc/options. [RT #5616]
--
--1454. [port]          Use getifaddrs() if available for interface scanning.
--                      --disable-getifaddrs to override.  Glibc currently
--                      has a getifaddrs() that does not support IPv6.
--                      Use --enable-getifaddrs=glibc to force the use of
--                      this version under linux machines.
--
--1453. [doc]           ARM: $GENERATE example wasn't accurate. [RT #5298]
--
--1452. [placeholder]
--
--1451. [bug]           rndc-confgen didn't exit with a error code for all
--                      failures. [RT #5209]
--
--1450. [bug]           Fetching expired glue failed under certain
--                      circumstances.  [RT #5124]
--
--1449. [bug]           query_addbestns() didn't handle running out of memory
--                      gracefully.
--
--1448. [bug]           Handle empty wildcards labels.
--
--1447. [bug]           We were casting (unsigned int) to and from (void *).
--                      rdataset->private4 is now rdataset->privateuint4
--                      to reflect a type change.
--
--1446. [func]          Implemented undocumented alternate transfer sources
--                      from BIND 8.  See use-alt-transfer-source,
--                      alt-transfer-source and alt-transfer-source-v6.
--
--                      SECURITY: use-alt-transfer-source is ENABLED unless
--                      you are using views.  This may cause a security risk
--                      resulting in accidental disclosure of wrong zone
--                      content if the master supplying different source
--                      content based on IP address.  If you are not certain
--                      ISC recommends setting use-alt-transfer-source no;
--
--1445. [bug]           DNS_ADBFIND_STARTATROOT broke stub zones.  This has
--                      been replaced with DNS_ADBFIND_STARTATZONE which
--                      causes the search to start using the closest zone.
--
--1444. [func]          dns_view_findzonecut2() allows you to specify if the
--                      cache should be searched for zone cuts.
--
--1443. [func]          Masters lists can now be specified and referenced
--                      in zone masters clauses and other masters lists.
--
--1442. [func]          New functions for manipulating port lists:
--                      dns_portlist_create(), dns_portlist_add(),
--                      dns_portlist_remove(), dns_portlist_match(),
--                      dns_portlist_attach() and dns_portlist_detach().
--
--1441. [func]          It is now possible to tell dig to bind to a specific
--                      source port.
--
--1440. [func]          It is now possible to tell named to avoid using
--                      certain source ports (avoid-v4-udp-ports,
--                      avoid-v6-udp-ports).
--
--1439. [bug]           Named could return NOERROR with certain NOTIFY
--                      failures.  Return NOTAUTH if the NOTIFY zone is
--                      not being served.
--
--1438. [func]          Log TSIG (if any) when logging NOTIFY requests.
--
--1437. [bug]           Leave space for stdio to work in. [RT #5033]
--
--1436. [func]          dns_zonemgr_resumexfrs() can be used to restart
--                      stalled transfers.
--
--1435. [bug]           zmgr_resume_xfrs() was being called read locked
--                      rather than write locked.  zmgr_resume_xfrs()
--                      was not being called if the zone was being
--                      shutdown.
--
--1434. [bug]           "rndc reconfig" failed to initiate the initial
--                      zone transfer of new slave zones.
--
--1433. [bug]           named could trigger a REQUIRE failure if it could
--                      not get a file descriptor when attempting to write
--                      a master file. [RT #4347]
--
--1432. [func]          The advertised EDNS UDP buffer size can now be set
--                      via named.conf (edns-udp-size).
--
--1431. [bug]           isc_print_snprintf() "%s" with precision could walk off
--                      end of argument. [RT #5191]
--
--1430. [port]          linux: IPv6 interface scanning support.
--
--1429. [bug]           Prevent the cache getting locked to old servers.
--
--1428. [placeholder]
--
--1427. [bug]           Race condition in adb with threaded build.
--
--1426. [placeholder]
--
--1425. [port]          linux/libbind: define __USE_MISC when testing *_r()
--                      function prototypes in netdb.h.  [RT #4921]
--
--1424. [bug]           EDNS version not being correctly printed.
--
--1423. [contrib]       queryperf: added A6 and SRV.
--
--1422. [func]          Log name/type/class when denying a query.  [RT #4663]
--
--1421. [func]          Differentiate updates that don't succeed due to
--                      prerequisites (unsuccessful) vs other reasons
--                      (failed).
--
--1420. [port]          solaris: work around gcc optimizer bug.
--
--1419. [port]          openbsd: use /dev/arandom. [RT #4950]
--
--1418. [bug]           'rndc reconfig' did not cause new slaves to load.
--
--1417. [func]          ID.SERVER/CHAOS is now a built in zone.
--                      See "server-id" for how to configure.
--
--1416. [bug]           Empty node should return NOERROR NODATA, not NXDOMAIN.
--                      [RT #4715]
--
--1415. [func]          DS TTL now derived from NS ttl.  NXT TTL now derived
--                      from SOA MINIMUM.
--
--1414. [func]          Support for KSK flag.
--
--1413. [func]          Explicitly request the (re-)generation of DS records
--                      from keysets (dnssec-signzone -g).
--
--1412. [func]          You can now specify servers to be tried if a nameserver
--                      has IPv6 address and you only support IPv4 or the
--                      reverse. See dual-stack-servers.
--
--1411. [bug]           empty nodes should stop wildcard matches. [RT #4802]
--
--1410. [func]          Handle records that live in the parent zone, e.g. DS.
--
--1409. [bug]           DS should have attribute DNS_RDATATYPEATTR_DNSSEC.
--
--1408. [bug]           "make distclean" was not complete. [RT #4700]
--
--1407. [bug]           lfsr incorrectly implements the shift register.
--                      [RT #4617]
--
--1406. [bug]           dispatch initializes one of the LFSR's with a incorrect
--                      polynomial.  [RT #4617]
--
--1405. [func]          Use arc4random() if available.
--
--1404. [bug]           libbind: ns_name_ntol() could overwrite a zero length
--                      buffer.
--
--1403. [func]          dnssec-signzone, dnssec-keygen, dnssec-makekeyset
--                      dnssec-signkey now report their version in the
--                      usage message.
--
--1402. [cleanup]       A6 has been moved to experimental and is no longer
--                      fully supported.
--
--1401. [bug]           adb wasn't clearing state when the timer expired.
--
--1400. [bug]           Block the addition of wildcard NS records by IXFR
--                      or UPDATE. [RT #3502]
--
--1399. [bug]           Use serial number arithmetic when testing SIG
--                      timestamps. [RT #4268]
--
--1398. [doc]           ARM: notify-also should have been also-notify.
--                      [RT #4345]
--
--1397. [maint]         J.ROOT-SERVERS.NET is now 192.58.128.30.
--
--1396. [func]          dnssec-signzone: adjust the default signing time by
--                      1 hour to allow for clock skew.
--
--1395. [port]          OpenSSL 0.9.7 defines CRYPTO_LOCK_ENGINE but doesn't
--                      have a working implementation.  [RT #4079]
--
--1394. [func]          It is now possible to check if a particular element is
--                      in a acl.  Remove duplicate entries from the localnets
--                      acl.
--
--1393. [port]          Bind to individual IPv6 interfaces if IPV6_IPV6ONLY
--                      is not available in the kernel to prevent accidently
--                      listening on IPv4 interfaces.
--
--1392. [bug]           named-checkzone: update usage.
--
--1391. [func]          Add support for IPv6 scoped addresses in named.
--
--1390. [func]          host now supports ixfr.
--
--1389. [bug]           named could fail to rotate long log files.  [RT #3666]
--
--1388. [port]          irix: check for sys/sysctl.h and NET_RT_IFLIST before
--                      defining HAVE_IFLIST_SYSCTL. [RT #3770]
--
--1387. [bug]           named could crash due to an access to invalid memory
--                      space (which caused an assertion failure) in
--                      incremental cleaning.  [RT #3588]
--
--1386. [bug]           named-checkzone -z stopped on errors in a zone.
--                      [RT #3653]
--
--1385. [bug]           Setting serial-query-rate to 10 would trigger a
--                      REQUIRE failure.
--
--1384. [bug]           host was incompatible with BIND 8 in its exit code and
--                      in the output with the -l option.  [RT #3536]
--
--1383. [func]          Track the serial number in a IXFR response and log if
--                      a mismatch occurs.  This is a more specific error than
--                      "not exact". [RT #3445]
--
--1382. [bug]           make install failed with --enable-libbind. [RT #3656]
--
--1381. [bug]           named failed to correctly process answers that
--                      contained DNAME records where the resulting CNAME
--                      resulted in a negative answer.
--
--1380. [func]          'rndc recursing' dump recursing queries to
--                      'recursing-file = "named.recursing";'.
--
--1379. [func]          'rndc status' now reports tcp and recursion quota
--                      states.
--
--1378. [func]          Improved positive feedback for 'rndc {reload|refresh}.
--
--1377. [func]          dns_zone_load{new}() now reports if the zone was
--                      loaded, queued for loading to up to date.
--
--1376. [func]          New function dns_zone_logc() to log to specified
--                      category.
--
--1375. [func]          'rndc dumpdb' now dumps the adb cache along with the
--                      data cache.
--
--1374. [func]          dns_adb_dump() now logs the lame zones associated
--                      with each server.
--
--1373. [bug]           Recovery from expired glue failed under certain
--                      circumstances.
--
--1372. [bug]           named crashes with an assertion failure on exit when
--                      sharing the same port for listening and querying, and
--                      changing listening addresses several times. [RT# 3509]
--
--1371. [bug]           notify-source-v6, transfer-source-v6 and
--                      query-source-v6 with explicit addresses and using the
--                      same ports as named was listening on could interfere
--                      with named's ability to answer queries sent to those
--                      addresses.
--
--1370. [bug]           dig '+[no]recurse' was incorrectly documented.
--
--1369. [bug]           Adding an NS record as the lexicographically last
--                      record in a secure zone didn't work.
--
--1368. [func]          remove support for bitstring labels.
--
--1367. [func]          Use response times to select forwarders.
--
--1366. [contrib]       queryperf usage was incomplete.  Add '-h' for help.
--
--1365. [func]          "localhost" and "localnets" acls now include IPv6
--                      addresses / prefixes.
--
--1364. [func]          Log file name when unable to open memory statistics
--                      and dump database files. [RT# 3437]
--
--1363. [func]          Listen-on-v6 now supports specific addresses.
--
--1362. [bug]           remove IFF_RUNNING test when scanning interfaces.
--
--1361. [func]          log the reason for rejecting a server when resolving
--                      queries.
--
--1360. [bug]           --enable-libbind would fail when not built in the
--                      source tree for certain OS's.
--
--1359. [security]      Support patches OpenSSL libraries.
--                      http://www.cert.org/advisories/CA-2002-23.html
--
--1358. [bug]           It was possible to trigger a INSIST when debugging
--                      large dynamic updates. [RT #3390]
--
--1357. [bug]           nsupdate was extremely wasteful of memory.
--
--1356. [tuning]        Reduce the number of events / quantum for zone tasks.
--
--1355. [bug]           Fix DNSSEC wildcard proof for CNAME/DNAME.
--
--1354. [doc]           lwres man pages had illegal nroff.
--
--1353. [contrib]       sdb/ldap to version 0.9.
--
--1352. [bug]           dig, host, nslookup when falling back to TCP use the
--                      current search entry (if any). [RT #3374]
--
--1351. [bug]           lwres_getipnodebyname() returned the wrong name
--                      when given a IPv4 literal, af=AF_INET6 and AI_MAPPED
--                      was set.
--
--1350. [bug]           dns_name_fromtext() failed to handle too many labels
--                      gracefully.
--
--1349. [security]      Minimum OpenSSL version now 0.9.6e (was 0.9.5a).
--                      http://www.cert.org/advisories/CA-2002-23.html
--
--1348. [port]          win32: Rewrote code to use I/O Completion Ports
--                      in socket.c and eliminating a host of socket
--                      errors. Performance is enhanced.
--
--1347. [placeholder]
--
--1346. [placeholder]
--
--1345. [port]          Use a explicit -Wformat with gcc.  Not all versions
--                      include it in -Wall.
--
--1344. [func]          Log if the serial number on the master has gone
--                      backwards.
--                      If you have multiple machines specified in the masters
--                      clause you may want to set 'multi-master yes;' to
--                      suppress this warning.
--
--1343. [func]          Log successful notifies received (info).  Adjust log
--                      level for failed notifies to notice.
--
--1342. [func]          Log remote address with TCP dispatch failures.
--
--1341. [func]          Allow a rate limiter to be stalled.
--
--1340. [bug]           Delay and spread out the startup refresh load.
--
--1339. [func]          dig, host and nslookup now use IP6.ARPA for nibble
--                      lookups.  Bit string lookups are no longer attempted.
--
--1338. [placeholder]
--
--1337. [placeholder]
--
--1336. [func]          Nibble lookups under IP6.ARPA are now supported by
--                      dns_byaddr_create().  dns_byaddr_createptrname() is
--                      deprecated, use dns_byaddr_createptrname2() instead.
--
--1335. [bug]           When performing a nonexistence proof, the validator
--                      should discard parent NXTs from higher in the DNS.
--
--1334. [bug]           When signing/verifying rdatasets, duplicate rdatas
--                      need to be suppressed.
--
--1333. [contrib]       queryperf now reports a summary of returned
--                      rcodes (-c), rcodes are printed in mnemonic form (-v).
--
--1332. [func]          Report the current serial with periodic commits when
--                      rolling forward the journal.
--
--1331. [func]          Generate DNSSEC wildcard proofs.
--
--1330. [bug]           When processing events (non-threaded) only allow
--                      the task one chance to use to use its quantum.
--
--1329. [func]          named-checkzone will now check if nameservers that
--                      appear to be IP addresses.  Available modes "fail",
--                      "warn" (default) and "ignore" the results of the
--                      check.
--
--1328. [bug]           The validator could incorrectly verify an invalid
--                      negative proof.
--
--1327. [bug]           The validator would incorrectly mark data as insecure
--                      when seeing a bogus signature before a correct
--                      signature.
--
--1326. [bug]           DNAME/CNAME signatures were not being cached when
--                      validation was not being performed. [RT #3284]
--
--1325. [bug]           If the tcpquota was exhausted it was possible to
--                      to trigger a INSIST() failure.
--
--1324. [port]          darwin: ifconfig.sh now supports darwin.
--
--1323. [port]          linux: Slackware 4.0 needs <asm/unistd.h>. [RT #3205]
--
--1322. [bug]           dnssec-signzone usage message was misleading.
--
--1321. [bug]           If the last RRset in a zone is glue, dnssec-signzone
--                      would incorrectly duplicate its output and sign it.
--
--1320. [doc]           query-source-v6 was missing from options section.
--                      [RT #3218]
--
--1319. [func]          libbind: log attempts to exploit #1318.
--
--1318. [bug]           libbind: Remote buffer overrun.
--
--1317. [port]          libbind: TrueUNIX 5.1 does not like __align as a
--                      element name.
--
--1316. [bug]           libbind: gethostans() could get out of sync parsing
--                      the response if there was a very long CNAME chain.
--
--1315. [bug]           Options should apply to the internal _bind view.
--
--1314. [port]          Handle ECONNRESET from sendmsg() [unix].
--
--1313. [func]          Query log now says if the query was signed (S) or
--                      if EDNS was used (E).
--
--1312. [func]          Log TSIG key used w/ outgoing zone transfers.
--
--1311. [bug]           lwres_getrrsetbyname leaked memory.  [RT #3159]
--
--1310. [bug]           'rndc stop' failed to cause zones to be flushed
--                      sometimes. [RT #3157]
--
--1309. [func]          Log that a zone transfer was covered by a TSIG.
--
--1308. [func]          DS (delegation signer) support.
--
--1307. [bug]           nsupdate: allow white space base64 key data.
--
--1306. [bug]           Badly encoded LOC record when the size, horizontal
--                      precision or vertical precision was 0.1m.
--
--1305. [bug]           Document that internal zones are included in the
--                      rndc status results.
--
--1304. [func]          New function: dns_zone_name().
--
--1303. [func]          Option 'flush-zones-on-shutdown <boolean>;'.
--
--1302. [func]          Extended rndc dumpdb to support dumping of zones and
--                      view selection: 'dumpdb [-all|-zones|-cache] [view]'.
--
--1301. [func]          New category 'update-security'.
--
--1300. [port]          Compaq Trucluster support.
--
--1299. [bug]           Set AI_ADDRCONFIG when looking up addresses
--                      via getaddrinfo() (affects dig, host, nslookup, rndc
--                      and nsupdate).
--
--1298. [bug]           The CINCLUDES macro in lib/dns/sec/dst/Makefile
--                      could be left with a trailing "\" after configure
--                      has been run.
--
--1297. [port]          linux: make handling EINVAL from socket() no longer
--                      conditional on #ifdef LINUX.
--
--1296. [bug]           isc_log_closefilelogs() needed to lock the log
--                      context.
--
--1295. [bug]           isc_log_setdebuglevel() needed to lock the log
--                      context.
--
--1294. [func]          libbind: no longer attempts bit string labels for
--                      IPv6 reverse resolution.  Try IP6.ARPA then IP6.INT
--                      for nibble style resolution.
--
--1293. [func]          Entropy can now be retrieved from EGDs. [RT #2438]
--
--1292. [func]          Enable IPv6 support when using ioctl style interface
--                      scanning and OS supports SIOCGLIFADDR using struct
--                      if_laddrreq.
--
--1291. [func]          Enable IPv6 support when using sysctl style interface
--                      scanning.
--
--1290. [func]          "dig axfr" now reports the number of messages
--                      as well as the number of records.
--
--1289. [port]          See if -ldl is required for OpenSSL? [RT #2672]
--
--1288. [bug]           Adjusted REQUIRE's in lib/dns/name.c to better
--                      reflect written requirements.
--
--1287. [bug]           REQUIRE that DNS_DBADD_MERGE only be set when adding
--                      a rdataset to a zone db in the rbtdb implementation of
--                      addrdataset.
--
--1286. [bug]           dns_name_downcase() enforce requirement that
--                      target != NULL or name->buffer != NULL.
--
--1285. [func]          lwres: probe the system to see what address families
--                      are currently in use.
--
--1284. [bug]           The RTT estimate on unused servers was not aged.
--                      [RT #2569]
--
--1283. [func]          Use "dataready" accept filter if available.
--
--1282. [port]          libbind: hpux 11.11 interface scanning.
--
--1281. [func]          Log zone when unable to get private keys to update
--                      zone.  Log zone when NXT records are missing from
--                      secure zone.
--
--1280. [bug]           libbind: escape '(' and ')' when converting to
--                      presentation form.
--
--1279. [port]          Darwin uses (unsigned long) for size_t. [RT #2590]
--
--1278. [func]          dig: now supports +[no]cl +[no]ttlid.
--
--1277. [func]          You can now create your own customized printing
--                      styles: dns_master_stylecreate() and
--                      dns_master_styledestroy().
--
--1276. [bug]           libbind: const pointer conflicts in res_debug.c.
--
--1275. [port]          libbind: hpux: treat all hpux systems as BIG_ENDIAN.
--
--1274. [bug]           Memory leak in lwres_gnbarequest_parse().
--
--1273. [port]          libbind: solaris: 64 bit binary compatibility.
--
--1272. [contrib]       Berkeley DB 4.0 sdb implementation from
--                      Nuno Miguel Rodrigues <nmr@co.sapo.pt>.
--
--1271. [bug]           "recursion available: {denied,approved}" was too
--                      confusing.
--
--1270. [bug]           Check that system inet_pton() and inet_ntop() support
--                      AF_INET6.
--
--1269. [port]          Openserver: ifconfig.sh support.
--
--1268. [port]          Openserver: the value FD_SETSIZE depends on whether
--                      <sys/param.h> is included or not.  Be consistent.
--
--1267. [func]          isc_file_openunique() now creates file using mode
--                      0666 rather than 0600.
--
--1266. [bug]           ISC_LINK_INIT, ISC_LINK_UNLINK, ISC_LIST_DEQUEUE,
--                      __ISC_LINK_UNLINKUNSAFE and __ISC_LIST_DEQUEUEUNSAFE
--                      are not C++ compatible, use *_TYPE versions instead.
--
--1265. [bug]           libbind: LINK_INIT and UNLINK were not compatible with
--                      C++, use LINK_INIT_TYPE and UNLINK_TYPE instead.
--
--1264. [placeholder]
--
--1263. [bug]           Reference after free error if dns_dispatchmgr_create()
--                      failed.
--
--1262. [bug]           ns_server_destroy() failed to set *serverp to NULL.
--
--1261. [func]          libbind: ns_sign2() and ns_sign_tcp() now provide
--                      support for compressed TSIG owner names.
--
--1260. [func]          libbind: res_update can now update IPv6 servers,
--                      new function res_findzonecut2().
--
--1259. [bug]           libbind: get_salen() IPv6 support was broken for OSs
--                      w/o sa_len.
--
--1258. [bug]           libbind: res_nametotype() and res_nametoclass() were
--                      broken.
--
--1257. [bug]           Failure to write pid-file should not be fatal on
--                      reload. [RT #2861]
--
--1256. [contrib]       'queryperf' now has EDNS (-e) + DNSSEC DO (-D) support.
--
--1255. [bug]           When verifying that an NXT proves nonexistence, check
--                      the rcode of the message and only do the matching NXT
--                      check.  That is, for NXDOMAIN responses, check that
--                      the name is in the range between the NXT owner and
--                      next name, and for NOERROR NODATA responses, check
--                      that the type is not present in the NXT bitmap.
--
--1254. [func]          preferred-glue option from BIND 8.3.
--
--1253. [bug]           The dnssec system test failed to remove the correct
--                      files.
--
--1252. [bug]           Dig, host and nslookup were not checking the address
--                      the answer was coming from against the address it was
--                      sent to. [RT# 2692]
--
--1251. [port]          win32: a make file contained absolute version specific
--                      references.
--
--1250. [func]          Nsupdate will report the address the update was
--                      sent to.
--
--1249. [bug]           Missing masters clause was not handled gracefully.
--                      [RT #2703]
--
--1248. [bug]           DESTDIR was not being propagated between makes.
--
--1247. [bug]           Don't reset the interface index for link/site local
--                      addresses. [RT #2576]
--
--1246. [func]          New functions isc_sockaddr_issitelocal(),
--                      isc_sockaddr_islinklocal(), isc_netaddr_issitelocal()
--                      and isc_netaddr_islinklocal().
--
--1245. [bug]           Treat ENOBUFS, ENOMEM and ENFILE as soft errors for
--                      accept().
--
--1244. [bug]           Receiving a TCP message from a blackhole address would
--                      prevent further messages being received over that
--                      interface.
--
--1243. [bug]           It was possible to trigger a REQUIRE() in
--                      dns_message_findtype(). [RT #2659]
--
--1242. [bug]           named-checkzone failed if a journal existed. [RT #2657]
--
--1241. [bug]           Drop received UDP messages with a zero source port
--                      as these are invariably forged. [RT #2621]
--
--1240. [bug]           It was possible to leak zone references by
--                      specifying an incorrect zone to rndc.
--
--1239. [bug]           Under certain circumstances named could continue to
--                      use a name after it had been freed triggering
--                      INSIST() failures.  [RT #2614]
--
--1238. [bug]           It is possible to lockup the server when shutting down
--                      if notifies were being processed. [RT #2591]
--
--1237. [bug]           nslookup: "set q=type" failed.
--
--1236. [bug]           dns_rdata{class,type}_fromtext() didn't handle non
--                      NULL terminated text regions. [RT #2588]
--
--1235. [func]          Report 'out of memory' errors from openssl.
--
--1234. [bug]           contrib/sdb: 'zonetodb' failed to call
--                      dns_result_register().  DNS_R_SEENINCLUDE should not
--                      be fatal.
--
--1233. [bug]           The flags field of a KEY record can be expressed in
--                      hex as well as decimal.
--
--1232. [bug]           unix/errno2result() didn't handle EADDRNOTAVAIL.
--
--1231. [port]          HPUX 11.11 recvmsg() can return spurious EADDRNOTAVAIL.
--
--1230. [bug]           isccc_cc_isreply() and isccc_cc_isack() were broken.
--
--1229. [bug]           named would crash if it received a TSIG signed
--                      query as part of an AXFR response. [RT #2570]
--
--1228. [bug]           'make install' did not depend on 'make all'. [RT #2559]
--
--1227. [bug]           dns_lex_getmastertoken() now returns ISC_R_BADNUMBER
--                      if a number was expected and some other token was
--                      found. [RT#2532]
--
--1226. [func]          Use EDNS for zone refresh queries. [RT #2551]
--
--1225. [func]          dns_message_setopt() no longer requires that
--                      dns_message_renderbegin() to have been called.
--
--1224. [bug]           'rrset-order' and 'sortlist' should be additive
--                      not exclusive.
--
--1223. [func]          'rrset-order' partially works 'cyclic' and 'random'
--                      are supported.
--
--1222. [bug]           Specifying 'port *' did not always result in a system
--                      selected (non-reserved) port being used. [RT #2537]
--
--1221. [bug]           Zone types 'master', 'slave' and 'stub' were not being
--                      compared case insensitively. [RT #2542]
--
--1220. [func]          Support for APL rdata type.
--
--1219. [func]          Named now reports the TSIG extended error code when
--                      signature verification fails. [RT #1651]
--
--1218. [bug]           Named incorrectly returned SERVFAIL rather than
--                      NOTAUTH when there was a TSIG BADTIME error. [RT #2519]
--
--1217. [func]          Report locations of previous key definition when a
--                      duplicate is detected.
--
--1216. [bug]           Multiple server clauses for the same server were not
--                      reported.  [RT #2514]
--
--1215. [port]          solaris: add support to ifconfig.sh for x86 2.5.1
--
--1214. [bug]           Win32: isc_file_renameunique() could leave zero length
--                      files behind.
--
--1213. [func]          Report view associated with client if it is not a
--                      standard view (_default or _bind).
--
--1212. [port]          libbind: 64k answer buffers were causing stack space
--                      to be exceeded for certain OS.  Use heap space instead.
--
--1211. [bug]           dns_name_fromtext() incorrectly handled certain
--                      valid octal bitlabels. [RT #2483]
--
--1210. [bug]           libbind: getnameinfo() failed to lookup IPv4 mapped /
--                      compatible addresses. [RT #2461]
--
--1209. [bug]           Dig, host, nslookup were not checking the message ids
--                      on the responses. [RT #2454]
--
--1208. [bug]           dns_master_load*() failed to log a error message if
--                      an error was detected when parsing the ownername of
--                      a record.  [RT #2448]
--
--1207. [bug]           libbind: getaddrinfo() could call freeaddrinfo() with
--                      an invalid pointer.
--
--1206. [bug]           SERVFAIL and NOTIMP responses to an EDNS query should
--                      trigger a non-EDNS retry.
--
--1205. [bug]           OPT, TSIG and TKEY cannot be used to set the "class"
--                      of the message. [RT #2449]
--
--1204. [bug]           libbind: res_nupdate() failed to update the name
--                      server addresses before sending the update.
--
--1203. [func]          Report locations of previous acl and zone definitions
--                      when a duplicate is detected.
--
--1202. [func]          New functions: cfg_obj_line() and cfg_obj_file().
--
--1201. [bug]           Require that if 'callbacks' is passed to
--                      dns_rdata_fromtext(), callbacks->error and
--                      callbacks->warn are initialized.
--
--1200. [bug]           Log 'errno' that we are unable to convert to
--                      isc_result_t. [RT #2404]
--
--1199. [doc]           ARM reference to RFC 2157 should have been RFC 1918.
--                      [RT #2436]
--
--1198. [bug]           OPT printing style was not consistent with the way the
--                      header fields are printed.  The DO bit was not reported
--                      if set.  Report if any of the MBZ bits are set.
--
--1197. [bug]           Attempts to define the same acl multiple times were not
--                      detected.
--
--1196. [contrib]       update mdnkit to 2.2.3.
--
--1195. [bug]           Attempts to redefine builtin acls should be caught.
--                      [RT #2403]
--
--1194. [bug]           Not all duplicate zone definitions were being detected
--                      at the named.conf checking stage. [RT #2431]
--
--1193. [bug]           dig +besteffort parsing didn't handle packet
--                      truncation.  dns_message_parse() has new flag
--                      DNS_MESSAGE_IGNORETRUNCATION.
--
--1192. [bug]           The seconds fields in LOC records were restricted
--                      to three decimal places.  More decimal places should
--                      be allowed but warned about.
--
--1191. [bug]           A dynamic update removing the last non-apex name in
--                      a secure zone would fail. [RT #2399]
--
--1190. [func]          Add the "rndc freeze" and "rndc unfreeze" commands.
--                      [RT #2394]
--
--1189. [bug]           On some systems, malloc(0) returns NULL, which
--                      could cause the caller to report an out of memory
--                      error. [RT #2398]
--
--1188. [bug]           Dynamic updates of a signed zone would fail if
--                      some of the zone private keys were unavailable.
--
--1187. [bug]           named was incorrectly returning DNSSEC records
--                      in negative responses when the DO bit was not set.
--
--1186. [bug]           isc_hex_tobuffer(,,length = 0) failed to unget the
--                      EOL token when reading to end of line.
--
--1185. [bug]           libbind: don't assume statp->_u._ext.ext is valid
--                      unless RES_INIT is set when calling res_*init().
--
--1184. [bug]           libbind: call res_ndestroy() if RES_INIT is set
--                      when res_*init() is called.
--
--1183. [bug]           Handle ENOSR error when writing to the internal
--                      control pipe. [RT #2395]
--
--1182. [bug]           The server could throw an assertion failure when
--                      constructing a negative response packet.
--
--1181. [func]          Add the "key-directory" configuration statement,
--                      which allows the server to look for online signing
--                      keys in alternate directories.
--
--1180. [func]          dnssec-keygen should always generate keys with
--                      protocol 3 (DNSSEC), since it's less confusing
--                      that way.
--
--1179. [func]          Add SIG(0) support to nsupdate.
--
--1178. [bug]           Follow and cache (if appropriate) A6 and other
--                      data chains to completion in the additional section.
--
--1177. [func]          Report view when loading zones if it is not a
--                      standard view (_default or _bind). [RT #2270]
--
--1176. [doc]           Document that allow-v6-synthesis is only performed
--                      for clients that are supplied recursive service.
--                      [RT #2260]
--
--1175. [bug]           named-checkzone and named-checkconf failed to call
--                      dns_result_register() at startup which could
--                      result in runtime exceptions when printing
--                      "out of memory" errors. [RT #2335]
--
--1174. [bug]           Win32: add WSAECONNRESET to the expected errors
--                      from connect(). [RT #2308]
--
--1173. [bug]           Potential memory leaks in isc_log_create() and
--                      isc_log_settag(). [RT #2336]
--
--1172. [doc]           Add CERT, GPOS, KX, NAPTR, NSAP, PX and TXT to
--                      table of RR types in ARM.
--
--1171. [func]          Added function isc_region_compare(), updated files in
--                      lib/dns to use this function instead of local one.
--
--1170. [bug]           Don't attempt to print the token when a I/O error
--                      occurs when parsing named.conf. [RT #2275]
--
--1169. [func]          Identify recursive queries in the query log.
--
--1168. [bug]           Empty also-notify clauses were not handled. [RT #2309]
--
--1167. [contrib]       nslint-2.1a3 (from author).
--
--1166. [bug]           "Not Implemented" should be reported as NOTIMP,
--                      not NOTIMPL. [RT #2281]
--
--1165. [bug]           We were rejecting notify-source{-v6} in zone clauses.
--
--1164. [bug]           Empty masters clauses in slave / stub zones were not
--                      handled gracefully. [RT #2262]
--
--1163. [func]          isc_time_formattimestamp() now includes the year.
--
--1162. [bug]           The allow-notify option was not accepted in slave
--                      zone statements.
--
--1161. [bug]           named-checkzone looped on unbalanced brackets.
--                      [RT #2248]
--
--1160. [bug]           Generating Diffie-Hellman keys longer than 1024
--                      bits could fail. [RT #2241]
--
--1159. [bug]           MD and MF are not permitted to be loaded by RFC1123.
--
--1158. [func]          Report the client's address when logging notify
--                      messages.
--
--1157. [func]          match-clients and match-destinations now accept
--                      keys. [RT #2045]
--
--1156. [port]          The configure test for strsep() incorrectly
--                      succeeded on certain patched versions of
--                      AIX 4.3.3. [RT #2190]
--
--1155. [func]          Recover from master files being removed from under
--                      us.
--
--1154. [bug]           Don't attempt to obtain the netmask of a interface
--                      if there is no address configured. [RT #2176]
--
--1153. [func]          'rndc {stop|halt} -p' now reports the process id
--                      of the instance of named being shutdown.
--
--1152. [bug]           libbind: read buffer overflows.
--
--1151. [bug]           nslookup failed to check that the arguments to
--                      the port, timeout, and retry options were
--                      valid integers and in range. [RT #2099]
--
--1150. [bug]           named incorrectly accepted TTL values
--                      containing plus or minus signs, such as
--                      1d+1h-1s.
--
--1149. [func]          New function isc_parse_uint32().
--
--1148. [func]          'rndc-confgen -a' now provides positive feedback.
--
--1147. [func]          Set IPV6_V6ONLY on IPv6 sockets if supported by
--                      the OS.  listen-on-v6 { any; }; should no longer
--                      result in IPv4 queries be accepted.  Similarly
--                      control { inet :: ... }; should no longer result
--                      in IPv4 connections being accepted.  This can be
--                      overridden at compile time by defining
--                      ISC_ALLOW_MAPPED=1.
--
--1146. [func]          Allow IPV6_IPV6ONLY to be set/cleared on a socket if
--                      supported by the OS by a new function
--                      isc_socket_ipv6only().
--
--1145. [func]          "host" no longer reports a NOERROR/NODATA response
--                      by printing nothing. [RT #2065]
--
--1144. [bug]           rndc-confgen would crash if both the -a and -t
--                      options were specified. [RT #2159]
--
--1143. [bug]           When a trusted-keys statement was present and named
--                      was built without crypto support, it would leak memory.
--
--1142. [bug]           dnssec-signzone would fail to delete temporary files
--                      in some failure cases. [RT #2144]
--
--1141. [bug]           When named rejected a control message, it would
--                      leak a file descriptor and memory.  It would also
--                      fail to respond, causing rndc to hang.
--                      [RT #2139, #2164]
--
--1140. [bug]           rndc-confgen did not accept IPv6 addresses as arguments
--                      to the -s option. [RT #2138]
--
--1139. [func]          It is now possible to flush a given name from the
--                      cache(s) via 'rndc flushname name [view]'. [RT #2051]
--
--1138. [func]          It is now possible to flush a given name from the
--                      cache by calling the new function
--                      dns_cache_flushname().
--
--1137. [func]          It is now possible to flush a given name from the
--                      ADB by calling the new function dns_adb_flushname().
--
--1136. [bug]           CNAME records synthesized from DNAMEs did not
--                      have a TTL of zero as required by RFC2672.
--                      [RT #2129]
--
--1135. [func]          You can now override the default syslog() facility for
--                      named/lwresd at compile time. [RT #1982]
--
--1134. [bug]           Multi-threaded servers could deadlock in ferror()
--                      when reloading zone files. [RT #1951, #1998]
--
--1133. [bug]           IN6_IS_ADDR_LOOPBACK was not portably defined on
--                      platforms without IN6_IS_ADDR_LOOPBACK. [RT #2106]
--
--1132. [func]          Improve UPDATE prerequisite failure diagnostic messages.
--
--1131. [bug]           The match-destinations view option did not work with
--                      IPv6 destinations. [RT #2073, #2074]
--
--1130. [bug]           Log messages reporting an out-of-range serial number
--                      did not include the out-of-range number but the
--                      following token. [RT #2076]
--
--1129. [bug]           Multi-threaded servers could crash under heavy
--                      resolution load due to a race condition. [RT #2018]
--
--1128. [func]          sdb drivers can now provide RR data in either text
--                      or wire format, the latter using the new functions
--                      dns_sdb_putrdata() and dns_sdb_putnamedrdata().
--
--1127. [func]          rndc: If the server to contact has multiple addresses,
--                      try all of them.
--
--1126. [bug]           The server could access a freed event if shut
--                      down while a client start event was pending
--                      delivery. [RT #2061]
--
--1125. [bug]           rndc: -k option was missing from usage message.
--                      [RT #2057]
--
--1124. [doc]           dig: +[no]dnssec, +[no]besteffort and +[no]fail
--                      are now documented. [RT #2052]
--
--1123. [bug]           dig +[no]fail did not match description. [RT #2052]
--
--1122. [tuning]        Resolution timeout reduced from 90 to 30 seconds.
--                      [RT #2046]
--
--1121. [bug]           The server could attempt to access a NULL zone
--                      table if shut down while resolving.
--                      [RT #1587, #2054]
--
--1120. [bug]           Errors in options were not fatal. [RT #2002]
--
--1119. [func]          Added support in Win32 for NTFS file/directory ACL's
--                      for access control.
--
--1118. [bug]           On multi-threaded servers, a race condition
--                      could cause an assertion failure in resolver.c
--                      during resolver shutdown. [RT #2029]
--
--1117. [port]          The configure check for in6addr_loopback incorrectly
--                      succeeded on AIX 4.3 when compiling with -O2
--                      because the test code was optimized away.
--                      [RT #2016]
--
--1116. [bug]           Setting transfers in a server clause, transfers-in,
--                      or transfers-per-ns to a value greater than
--                      2147483647 disabled transfers. [RT #2002]
--
--1115. [func]          Set maximum values for cleaning-interval,
--                      heartbeat-interval, interface-interval,
--                      max-transfer-idle-in, max-transfer-idle-out,
--                      max-transfer-time-in, max-transfer-time-out,
--                      statistics-interval of 28 days and
--                      sig-validity-interval of 3660 days. [RT #2002]
--
--1114. [port]          Ignore more accept() errors. [RT #2021]
--
--1113. [bug]           The allow-update-forwarding option was ignored
--                      when specified in a view. [RT #2014]
--
--1112. [placeholder]
--
--1111. [bug]           Multi-threaded servers could deadlock processing
--                      recursive queries due to a locking hierarchy
--                      violation in adb.c. [RT #2017]
--
--1110. [bug]           dig should only accept valid abbreviations of +options.
--                      [RT #2003]
--
--1109. [bug]           nsupdate accepted illegal ttl values.
--
--1108. [bug]           On Win32, rndc was hanging when named was not running
--                      due to failure to select for exceptional conditions
--                      in select(). [RT #1870]
--
--1107. [bug]           nsupdate could catch an assertion failure if an
--                      invalid domain name was given as the argument to
--                      the "zone" command.
--
--1106. [bug]           After seeing an out of range TTL, nsupdate would
--                      treat all TTLs as out of range. [RT #2001]
--
--1105. [port]          OpenUNIX 8 enable threads by default. [RT #1970]
--
--1104. [bug]           Invalid arguments to the transfer-format option
--                      could cause an assertion failure. [RT #1995]
--
--1103. [port]          OpenUNIX 8 support (ifconfig.sh). [RT #1970]
--
--1102. [doc]           Note that query logging is enabled by directing the
--                      queries category to a channel.
--
--1101. [bug]           Array bounds read error in lwres_gai_strerror.
--
--1100. [bug]           libbind: DNSSEC key ids were computed incorrectly.
--
--1099. [cleanup]       libbind: defining REPORT_ERRORS in lib/bind/dst caused
--                      compile time errors.
--
--1098. [bug]           libbind: HMAC-MD5 key files are now mode 0600.
--
--1097. [func]          libbind: RES_PRF_TRUNC for dig.
--
--1096. [func]          libbind: "DNSSEC OK" (DO) support.
--
--1095. [func]          libbind: resolver option: no-tld-query.  disables
--                      trying unqualified as a tld.  no_tld_query is also
--                      supported for FreeBSD compatibility.
--
--1094. [func]          libbind: add support gcc's format string checking.
--
--1093. [doc]           libbind: miscellaneous nroff fixes.
--
--1092. [bug]           libbind: get*by*() failed to check if res_init() had
--                      been called.
--
--1091. [bug]           libbind: misplaced va_end().
--
--1090. [bug]           libbind: dns_ho.c:add_hostent() was not returning
--                      the amount of memory consumed resulting in garbage
--                      address being returned.  Alignment calculations were
--                      wasting space.  We weren't suppressing duplicate
--                      addresses.
--
--1089. [func]          libbind: inet_{cidr,net}_{pton,ntop}() now have IPv6
--                      support.
--
--1088. [port]          libbind: MPE/iX C.70 (incomplete)
--
--1087. [bug]           libbind: struct __res_state too large on 64 bit arch.
--
--1086. [port]          libbind: sunos: old sprintf.
--
--1085. [port]          libbind: solaris: sys_nerr and sys_errlist do not
--                      exist when compiling in 64 bit mode.
--
--1084. [cleanup]       libbind: gai_strerror() rewritten.
--
--1083. [bug]           The default control channel listened on the
--                      wildcard address, not the loopback as documented.
--                      [RT #1975]
--
--1082. [bug]           The -g option to named incorrectly caused logging
--                      to be sent to syslog in addition to stderr.
--                      [RT #1974]
--
--1081. [bug]           Multicast queries were incorrectly identified
--                      based on the source address, not the destination
--                      address.
--
--1080. [bug]           BIND 8 compatibility: accept bare IP prefixes
--                      as the second element of a two-element top level
--                      sort list statement. [RT #1964]
--
--1079. [bug]           BIND 8 compatibility: accept bare elements at top
--                      level of sort list treating them as if they were
--                      a single element list. [RT #1963]
--
--1078. [bug]           We failed to correct bad tv_usec values in one case.
--                      [RT #1966]
--
--1077. [func]          Do not accept further recursive clients when
--                      the total number of recursive lookups being
--                      processed exceeds max-recursive-clients, even
--                      if some of the lookups are internally generated.
--                      [RT #1915, #1938]
--
--1076. [bug]           A badly defined global key could trigger an assertion
--                      on load/reload if views were used. [RT #1947]
--
--1075. [bug]           Out-of-range network prefix lengths were not
--                      reported. [RT #1954]
--
--1074. [bug]           Running out of memory in dump_rdataset() could
--                      cause an assertion failure. [RT #1946]
--
--1073. [bug]           The ADB cache cleaning should also be space driven.
--                      [RT #1915, #1938]
--
--1072. [bug]           The TCP client quota could be exceeded when
--                      recursion occurred. [RT #1937]
--
--1071. [bug]           Sockets listening for TCP DNS connections
--                      specified an excessive listen backlog. [RT #1937]
--
--1070. [bug]           Copy DNSSEC OK (DO) to response as specified by
--                      draft-ietf-dnsext-dnssec-okbit-03.txt.
--
--1069. [placeholder]
--
--1068. [bug]           errno could be overwritten by catgets(). [RT #1921]
--
--1067. [func]          Allow quotas to be soft, isc_quota_soft().
--
--1066. [bug]           Provide a thread safe wrapper for strerror().
--                      [RT #1689]
--
--1065. [func]          Runtime support to select new / old style interface
--                      scanning using ioctls.
--
--1064. [bug]           Do not shut down active network interfaces if we
--                      are unable to scan the interface list. [RT #1921]
--
--1063. [bug]           libbind: "make install" was failing on IRIX.
--                      [RT #1919]
--
--1062. [bug]           If the control channel listener socket was shut
--                      down before server exit, the listener object could
--                      be freed twice. [RT #1916]
--
--1061. [bug]           If periodic cache cleaning happened to start
--                      while cleaning due to reaching the configured
--                      maximum cache size was in progress, the server
--                      could catch an assertion failure. [RT #1912]
--
--1060. [func]          Move refresh, stub and notify UDP retry processing
--                      into dns_request.
--
--1059. [func]          dns_request now support will now retry UDP queries,
--                      dns_request_createvia2() and dns_request_createraw2().
--
--1058. [func]          Limited lifetime ticker timers are now available,
--                      isc_timertype_limited.
--
--1057. [bug]           Reloading the server after adding a "file" clause
--                      to a zone statement could cause the server to
--                      crash due to a typo in change 1016.
--
--1056. [bug]           Rndc could catch an assertion failure on SIGINT due
--                      to an uninitialized variable. [RT #1908]
--
--1055. [func]          Version and hostname queries can now be disabled
--                      using "version none;" and "hostname none;",
--                      respectively.
--
--1054. [bug]           On Win32, cfg_categories and cfg_modules need to be
--                      exported from the libisccfg DLL.
--
--1053. [bug]           Dig did not increase its timeout when receiving
--                      AXFRs unless the +time option was used. [RT #1904]
--
--1052. [bug]           Journals were not being created in binary mode
--                      resulting in "journal format not recognized" error
--                      under Win32. [RT #1889]
--
--1051. [bug]           Do not ignore a network interface completely just
--                      because it has a noncontiguous netmask.  Instead,
--                      omit it from the localnets ACL and issue a warning.
--                      [RT #1891]
--
--1050. [bug]           Log messages reporting malformed IP addresses in
--                      address lists such as that of the forwarders option
--                      failed to include the correct error code, file
--                      name, and line number. [RT #1890]
--
--1049. [func]          "pid-file none;" will disable writing a pid file.
--                      [RT #1848]
--
--1048. [bug]           Servers built with -DISC_MEM_USE_INTERNAL_MALLOC=1
--                      didn't work.
--
--1047. [bug]           named was incorrectly refusing all requests signed
--                      with a TSIG key derived from an unsigned TKEY
--                      negotiation with a NOERROR response. [RT #1886]
--
--1046. [bug]           The help message for the --with-openssl configure
--                      option was inaccurate. [RT #1880]
--
--1045. [bug]           It was possible to skip saving glue for a nameserver
--                      for a stub zone.
--
--1044. [bug]           Specifying allow-transfer, notify-source, or
--                      notify-source-v6 in a stub zone was not treated
--                      as an error.
--
--1043. [bug]           Specifying a transfer-source or transfer-source-v6
--                      option in the zone statement for a master zone was
--                      not treated as an error. [RT #1876]
--
--1042. [bug]           The "config" logging category did not work properly.
--                      [RT #1873]
--
--1041. [bug]           Dig/host/nslookup could catch an assertion failure
--                      on SIGINT due to an uninitialized variable. [RT #1867]
--
--1040. [bug]           Multiple listen-on-v6 options with different ports
--                      were not accepted. [RT #1875]
--
--1039. [bug]           Negative responses with CNAMEs in the answer section
--                      were cached incorrectly. [RT #1862]
--
--1038. [bug]           In servers configured with a tkey-domain option,
--                      TKEY queries with an owner name other than the root
--                      could cause an assertion failure. [RT #1866, #1869]
--
--1037. [bug]           Negative responses whose authority section contain
--                      SOA or NS records whose owner names are not equal
--                      equal to or parents of the query name should be
--                      rejected. [RT #1862]
--
--1036. [func]          Silently drop requests received via multicast as
--                      long as there is no final multicast DNS standard.
--
--1035. [bug]           If we respond to multicast queries (which we
--                      currently do not), respond from a unicast address
--                      as specified in RFC 1123. [RT #137]
--
--1034. [bug]           Ignore the RD bit on multicast queries as specified
--                      in RFC 1123. [RT #137]
--
--1033. [bug]           Always respond to requests with an unsupported opcode
--                      with NOTIMP, even if we don't have a matching view
--                      or cannot determine the class.
--
--1032. [func]          hostname.bind/txt/chaos now returns the name of
--                      the machine hosting the nameserver.  This is useful
--                      in diagnosing problems with anycast servers.
--
--1031. [bug]           libbind.a: isc__gettimeofday() infinite recursion.
--                      [RT #1858]
--
--1030. [bug]           On systems with no resolv.conf file, nsupdate
--                      exited with an error rather than defaulting
--                      to using the loopback address. [RT #1836]
--
--1029. [bug]           Some named.conf errors did not cause the loading
--                      of the configuration file to return a failure
--                      status even though they were logged. [RT #1847]
--
--1028. [bug]           On Win32, dig/host/nslookup looked for resolv.conf
--                      in the wrong directory. [RT #1833]
--
--1027. [bug]           RRs having the reserved type 0 should be rejected.
--                      [RT #1471]
--
--1026. [placeholder]
--
--1025. [bug]           Don't use multicast addresses to resolve iterative
--                      queries. [RT #101]
--
--1024. [port]          Compilation failed on HP-UX 11.11 due to
--                      incompatible use of the SIOCGLIFCONF macro
--                      name. [RT #1831]
--
--1023. [func]          Accept hints without TTLs.
--
--1022. [bug]           Don't report empty root hints as "extra data".
--                      [RT #1802]
--
--1021. [bug]           On Win32, log message timestamps were one month
--                      later than they should have been, and the server
--                      would exhibit unspecified behavior in December.
--
--1020. [bug]           IXFR log messages did not distinguish between
--                      true IXFRs, AXFR-style IXFRs, and mere version
--                      polls. [RT #1811]
--
--1019. [bug]           The value of the lame-ttl option was limited to 18000
--                      seconds, not 1800 seconds as documented. [RT #1803]
--
--1018. [bug]           The default log channel was not always initialized
--                      correctly. [RT #1813]
--
--1017. [bug]           When specifying TSIG keys to dig and nsupdate using
--                      the -k option, they must be HMAC-MD5 keys. [RT #1810]
--
--1016. [bug]           Slave zones with no backup file were re-transferred
--                      on every server reload.
--
--1015. [bug]           Log channels that had a "versions" option but no
--                      "size" option failed to create numbered log
--                      files. [RT #1783]
--
--1014. [bug]           Some queries would cause statistics counters to
--                      increment more than once or not at all. [RT #1321]
--
--1013. [bug]           It was possible to cancel a query twice when marking
--                      a server as bogus or by having a blackhole acl.
--                      [RT #1776]
--
--1012. [bug]           The -p option to named did not behave as documented.
--
--1011. [cleanup]       Removed isc_dir_current().
--
--1010. [bug]           The server could attempt to execute a command channel
--                      command after initiating server shutdown, causing
--                      an assertion failure. [RT #1766]
--
--1009. [port]          OpenUNIX 8 support. [RT #1728]
--
--1008. [port]          libtool.m4, ltmain.sh from libtool-1.4.2.
--
--1007. [port]          config.guess, config.sub from autoconf-2.52.
--
--1006. [bug]           If a KEY RR was found missing during DNSSEC validation,
--                      an assertion failure could subsequently be triggered
--                      in the resolver. [RT #1763]
--
--1005. [bug]           Don't copy nonzero RCODEs from request to response.
--                      [RT #1765]
--
--1004. [port]          Deal with recvfrom() returning EHOSTDOWN. [RT #1770]
--
--1003. [func]          Add the +retry option to dig.
--
--1002. [bug]           When reporting an unknown class name in named.conf,
--                      including the file name and line number. [RT #1759]
--
--1001. [bug]           win32 socket code doio_recv was not catching a
--                      WSACONNRESET error when a client was timing out
--                      the request and closing its socket. [RT #1745]
--
--1000. [bug]           BIND 8 compatibility: accept "HESIOD" as an alias
--                      for class "HS". [RT #1759]
--
-- 999. [func]          "rndc retransfer zone [class [view]]" added.
--                      [RT #1752]
--
-- 998. [func]          named-checkzone now has arguments to specify the
--                      chroot directory (-t) and working directory (-w).
--                      [RT #1755]
--
-- 997. [func]          Add support for RSA-SHA1 keys (RFC3110).
--
-- 996. [func]          Issue warning if the configuration filename contains
--                      the chroot path.
--
-- 995. [bug]           dig, host, nslookup: using a raw IPv6 address as a
--                      target address should be fatal on a IPv4 only system.
--
-- 994. [func]          Treat non-authoritative responses to queries for type
--                      NS as referrals even if the NS records are in the
--                      answer section, because BIND 8 servers incorrectly
--                      send them that way.  This is necessary for DNSSEC
--                      validation of the NS records of a secure zone to
--                      succeed when the parent is a BIND 8 server. [RT #1706]
--
-- 993. [func]          dig: -v now reports the version.
--
-- 992. [doc]           dig: ~/.digrc is now documented.
--
-- 991. [func]          Lower UDP refresh timeout messages to level
--                      debug 1.
--
-- 990. [bug]           The rndc-confgen man page was not installed.
--
-- 989. [bug]           Report filename if $INCLUDE fails for file related
--                      errors. [RT #1736]
--
-- 988. [bug]           'additional-from-auth no;' did not work reliably
--                      in the case of queries answered from the cache.
--                      [RT #1436]
--
-- 987. [bug]           "dig -help" didn't show "+[no]stats".
--
-- 986. [bug]           "dig +noall" failed to clear stats and command
--                      printing.
--
-- 985. [func]          Consider network interfaces to be up iff they have
--                      a nonzero IP address rather than based on the
--                      IFF_UP flag. [RT #1160]
--
-- 984. [bug]           Multi-threading should be enabled by default on
--                      Solaris 2.7 and newer, but it wasn't.
--
-- 983. [func]          The server now supports generating IXFR difference
--                      sequences for non-dynamic zones by comparing zone
--                      versions, when enabled using the new config
--                      option "ixfr-from-differences". [RT #1727]
--
-- 982. [func]          If "memstatistics-file" is set in options the memory
--                      statistics will be written to it.
--
-- 981. [func]          The dnssec tools can now take multiple '-r randomfile'
--                      arguments.
--
-- 980. [bug]           Incoming zone transfers restarting after an error
--                      could trigger an assertion failure. [RT #1692]
--
-- 979. [func]          Incremental master file dumping.  dns_master_dumpinc(),
--                      dns_master_dumptostreaminc(), dns_dumpctx_attach(),
--                      dns_dumpctx_detach(), dns_dumpctx_cancel(),
--                      dns_dumpctx_db() and dns_dumpctx_version().
--
-- 978. [bug]           dns_db_attachversion() had an invalid REQUIRE()
--                      condition.
--
-- 977. [bug]           Improve "not at top of zone" error message.
--
-- 976. [func]          named-checkconf can now test load master zones
--                      (named-checkconf -z). [RT #1468]
--
-- 975. [bug]           "max-cache-size default;" as a view option
--                      caused an assertion failure.
--
-- 974. [bug]           "max-cache-size unlimited;" as a global option
--                      was not accepted.
--
-- 973. [bug]           Failed to log the question name when logging:
--                      "bad zone transfer request: non-authoritative zone
--                      (NOTAUTH)".
--
-- 972. [bug]           The file modification time code in zone.c was using the
--                      wrong epoch. [RT #1667]
--
-- 971. [placeholder]
--
-- 970. [func]          'max-journal-size' can now be used to set a target
--                      size for a journal.
--
-- 969. [func]          dig now supports the undocumented dig 8 feature
--                      of allowing arbitrary labels, not just dotted
--                      decimal quads, with the -x option.  This can be
--                      used to conveniently look up RFC2317 names as in
--                      "dig -x 10.0.0.0-127". [RT #827, #1576, #1598]
--
-- 968. [bug]           On win32, the isc_time_now() function was unnecessarily
--                      calling strtime(). [RT #1671]
--
-- 967. [bug]           On win32, the link for bindevt was not including the
--                      required resource file to enable the event viewer
--                      to interpret the error messages in the event log,
--                      [RT #1668]
--
-- 966. [placeholder]
--
-- 965. [bug]           Including data other than root server NS and A
--                      records in the root hint file could cause a rbtdb
--                      node reference leak. [RT #1581, #1618]
--
-- 964. [func]          Warn if data other than root server NS and A records
--                      are found in the root hint file. [RT #1581, #1618]
--
-- 963. [bug]           Bad ISC_LANG_ENDDECLS. [RT #1645]
--
-- 962. [bug]           libbind: bad "#undef", don't attempt to install
--                      non-existent nlist.h. [RT #1640]
--
-- 961. [bug]           Tried to use a IPV6 feature when ISC_PLATFORM_HAVEIPV6
--                      was not defined. [RT #1482]
--
-- 960. [port]          liblwres failed to build on systems with support for
--                      getrrsetbyname() in the OS. [RT #1592]
--
-- 959. [port]          On FreeBSD, determine the number of CPUs by calling
--                      sysctlbyname(). [RT #1584]
--
-- 958. [port]          ssize_t is not available on all platforms. [RT #1607]
--
-- 957. [bug]           sys/select.h inclusion was broken on older platforms.
--                      [RT #1607]
--
-- 956. [bug]           ns_g_autorndcfile changed to ns_g_keyfile
--                      in named/win32/os.c due to code changes in
--                      change #953. win32 .make file for rndc-confgen
--                      updated to add include path for os.h header.
--
--      --- 9.2.0rc1 released ---
--
-- 955. [bug]           When using views, the zone's class was not being
--                      inherited from the view's class. [RT #1583]
--
-- 954. [bug]           When requesting AXFRs or IXFRs using dig, host, or
--                      nslookup, the RD bit should not be set as zone
--                      transfers are inherently non-recursive. [RT #1575]
--
-- 953. [func]          The /var/run/named.key file from change #843
--                      has been replaced by /etc/rndc.key.  Both
--                      named and rndc will look for this file and use
--                      it to configure a default control channel key
--                      if not already configured using a different
--                      method (rndc.conf / controls).  Unlike
--                      named.key, rndc.key is not created automatically;
--                      it must be created by manually running
--                      "rndc-confgen -a".
--
-- 952. [bug]           The server required manual intervention to serve the
--                      affected zones if it died between creating a journal
--                      and committing the first change to it.
--
-- 951. [bug]           CFLAGS was not passed to the linker when
--                      linking some of the test programs under
--                      bin/tests. [RT #1555].
--
-- 950. [bug]           Explicit TTLs did not properly override $TTL
--                      due to a bug in change 834. [RT #1558]
--
-- 949. [bug]           host was unable to print records larger than 512
--                      bytes. [RT #1557]
--
--      --- 9.2.0b2 released ---
--
-- 948. [port]          Integrated support for building on Windows NT /
--                      Windows 2000.
--
-- 947. [bug]           dns_rdata_soa_t had a badly named element "mname" which
--                      was really the RNAME field from RFC1035.  To avoid
--                      confusion and silent errors that would occur it the
--                      "origin" and "mname" elements were given their correct
--                      names "mname" and "rname" respectively, the "mname"
--                      element is renamed to "contact".
--
-- 946. [cleanup]       doc/misc/options is now machine-generated from the
--                      configuration parser syntax tables, and therefore
--                      more likely to be correct.
--
-- 945. [func]          Add the new view-specific options
--                      "match-destinations" and "match-recursive-only".
--
-- 944. [func]          Check for expired signatures on load.
--
-- 943. [bug]           The server could crash when receiving a command
--                      via rndc if the configuration file listed only
--                      nonexistent keys in the controls statement. [RT #1530]
--
-- 942. [port]          libbind: GETNETBYADDR_ADDR_T was not correctly
--                      defined on some platforms.
--
-- 941. [bug]           The configuration checker crashed if a slave
--                      zone didn't contain a masters statement. [RT #1514]
--
-- 940. [bug]           Double zone locking failure on error path. [RT #1510]
--
--      --- 9.2.0b1 released ---
--
-- 939. [port]          Add the --disable-linux-caps option to configure for
--                      systems that manage capabilities outside of named.
--                      [RT #1503]
--
-- 938. [placeholder]
--
-- 937. [bug]           A race when shutting down a zone could trigger a
--                      INSIST() failure. [RT #1034]
--
-- 936. [func]          Warn about IPv4 addresses that are not complete
--                      dotted quads. [RT #1084]
--
-- 935. [bug]           inet_pton failed to reject leading zeros.
--
-- 934. [port]          Deal with systems where accept() spuriously returns
--                      ECONNRESET.
--
-- 933. [bug]           configure failed doing libbind on platforms not
--                      supported by BIND 8. [RT #1496]
--
--      --- 9.2.0a3 released ---
--
-- 932. [bug]           Use INSTALL_SCRIPT, not INSTALL_PROGRAM,
--                      when installing isc-config.sh.
--                      [RT #198, #1466]
--
-- 931. [bug]           The controls statement only attempted to verify
--                      messages using the first key in the key list.
--                      (9.2.0a1/a2 only).
--
-- 930. [func]          Query performance testing tool added as
--                      contrib/queryperf.
--
-- 929. [placeholder]
--
-- 928. [bug]           nsupdate would send empty update packets if the
--                      send (or empty line) command was run after
--                      another send but before any new updates or
--                      prerequisites were specified.  It should simply
--                      ignore this command.
--
-- 927. [bug]           Don't hold the zone lock for the entire dump to disk.
--                      [RT #1423]
--
-- 926. [bug]           The resolver could deadlock with the ADB when
--                      shutting down (multi-threaded builds only).
--                      [RT #1324]
--
-- 925. [cleanup]       Remove openssl from the distribution; require that
--                      --with-openssl be specified if DNSSEC is needed.
--
-- 924. [port]          Extend support for pre-RFC2133 IPv6 implementation.
--                      [RT #987]
--
-- 923. [bug]           Multiline TSIG secrets (and other multiline strings)
--                      were not accepted in named.conf. [RT #1469]
--
-- 922. [func]          Added two new lwres_getrrsetbyname() result codes,
--                      ERR_NONAME and ERR_NODATA.
--
-- 921. [bug]           lwres returned an incorrect error code if it received
--                      a truncated message.
--
-- 920. [func]          Increase the lwres receive buffer size to 16K.
--                      [RT #1451]
--
-- 919. [placeholder]
--
-- 918. [func]          In nsupdate, TSIG errors are no longer treated as
--                      fatal errors.
--
-- 917. [func]          New nsupdate command 'key', allowing TSIG keys to
--                      be specified in the nsupdate command stream rather
--                      than the command line.
--
-- 916. [bug]           Specifying type ixfr to dig without specifying
--                      a serial number failed in unexpected ways.
--
-- 915. [func]          The named-checkconf and named-checkzone programs
--                      now have a '-v' option for printing their version.
--                      [RT #1151]
--
-- 914. [bug]           Global 'server' statements were rejected when
--                      using views, even though they were accepted
--                      in 9.1. [RT #1368]
--
-- 913. [bug]           Cache cleaning was not sufficiently aggressive.
--                      [RT #1441, #1444]
--
-- 912. [bug]           Attempts to set the 'additional-from-cache' or
--                      'additional-from-auth' option to 'no' in a
--                      server with recursion enabled will now
--                      be ignored and cause a warning message.
--                      [RT #1145]
--
-- 911. [placeholder]
--
-- 910. [port]          Some pre-RFC2133 IPv6 implementations do not define
--                      IN6ADDR_ANY_INIT. [RT #1416]
--
-- 909. [placeholder]
--
-- 908. [func]          New program, rndc-confgen, to simplify setting up rndc.
--
-- 907. [func]          The ability to get entropy from either the
--                      random device, a user-provided file or from
--                      the keyboard was migrated from the DNSSEC tools
--                      to libisc as isc_entropy_usebestsource().
--
-- 906. [port]          Separated the system independent portion of
--                      lib/isc/unix/entropy.c into lib/isc/entropy.c
--                      and added lib/isc/win32/entropy.c.
--
-- 905. [bug]           Configuring a forward "zone" for the root domain
--                      did not work. [RT #1418]
--
-- 904. [bug]           The server would leak memory if attempting to use
--                      an expired TSIG key. [RT #1406]
--
-- 903. [bug]           dig should not crash when receiving a TCP packet
--                      of length 0.
--
-- 902. [bug]           The -d option was ignored if both -t and -g were also
--                      specified.
--
-- 901. [placeholder]
--
-- 900. [bug]           A config.guess update changed the system identification
--                      string of FreeBSD systems; configure and
--                      bin/tests/system/ifconfig.sh now recognize the new
--                      string.
--
--      --- 9.2.0a2 released ---
--
-- 899. [bug]           lib/dns/soa.c failed to compile on many platforms
--                      due to inappropriate use of a void value.
--                      [RT #1372, #1373, #1386, #1387, #1395]
--
-- 898. [bug]           "dig" failed to set a nonzero exit status
--                      on UDP query timeout. [RT #1323]
--
-- 897. [bug]           A config.guess update changed the system identification
--                      string of UnixWare systems; configure now recognizes
--                      the new string.
--
-- 896. [bug]           If a configuration file is set on named's command line
--                      and it has a relative pathname, the current directory
--                      (after any possible jailing resulting from named -t)
--                      will be prepended to it so that reloading works
--                      properly even when a directory option is present.
--
-- 895. [func]          New function, isc_dir_current(), akin to POSIX's
--                      getcwd().
--
-- 894. [bug]           When using the DNSSEC tools, a message intended to warn
--                      when the keyboard was being used because of the lack
--                      of a suitable random device was not being printed.
--
-- 893. [func]          Removed isc_file_test() and added isc_file_exists()
--                      for the basic functionality that was being added
--                      with isc_file_test().
--
-- 892. [placeholder]
--
-- 891. [bug]           Return an error when a SIG(0) signed response to
--                      an unsigned query is seen.  This should actually
--                      do the verification, but it's not currently
--                      possible. [RT #1391]
--
-- 890. [cleanup]       The man pages no longer require the mandoc macros
--                      and should now format cleanly using most versions of
--                      nroff, and HTML versions of the man pages have been
--                      added.  Both are generated from DocBook source.
--
-- 889. [port]          Eliminated blank lines before .TH in nroff man
--                      pages since they cause problems with some versions
--                      of nroff. [RT #1390]
--
-- 888. [bug]           Don't die when using TKEY to delete a nonexistent
--                      TSIG key. [RT #1392]
--
-- 887. [port]          Detect broken compilers that can't call static
--                      functions from inline functions. [RT #1212]
--
-- 886. [placeholder]
--
-- 885. [placeholder]
--
-- 884. [placeholder]
--
-- 883. [placeholder]
--
-- 882. [placeholder]
--
-- 881. [placeholder]
--
-- 880. [placeholder]
--
-- 879. [placeholder]
--
-- 878. [placeholder]
--
-- 877. [placeholder]
--
-- 876. [placeholder]
--
-- 875. [placeholder]
--
-- 874. [placeholder]
--
-- 873. [placeholder]
--
-- 872. [placeholder]
--
-- 871. [placeholder]
--
-- 870. [placeholder]
--
-- 869. [placeholder]
--
-- 868. [placeholder]
--
-- 867. [placeholder]
--
-- 866. [func]          Close debug only file channels when debug is set to
--                      zero. [RT #1246]
--
-- 865. [bug]           The new configuration parser did not allow
--                      the optional debug level in a "severity debug"
--                      clause of a logging channel to be omitted.
--                      This is now allowed and treated as "severity
--                      debug 1;" like it does in BIND 8.2.4, not as
--                      "severity debug 0;" like it did in BIND 9.1.
--                      [RT #1367]
--
-- 864. [cleanup]       Multi-threading is now enabled by default on
--                      OSF1, Solaris 2.7 and newer, AIX, IRIX, and HP-UX.
--
-- 863. [bug]           If an error occurred while an outgoing zone transfer
--                      was starting up, the server could access a domain
--                      name that had already been freed when logging a
--                      message saying that the transfer was starting.
--                      [RT #1383]
--
-- 862. [bug]           Use after realloc(), non portable pointer arithmetic in
--                      grmerge().
--
-- 861. [port]          Add support for Mac OS X, by making it equivalent
--                      to Darwin.  This was derived from the config.guess
--                      file shipped with Mac OS X. [RT #1355]
--
-- 860. [func]          Drop cross class glue in zone transfers.
--
-- 859. [bug]           Cache cleaning now won't swamp the CPU if there
--                      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
--                      argument must be greater than its lo_water argument
--                      (they can now be equal) or that they be non-zero.
--
-- 857. [cleanup]       Use ISC_MAGIC() to define all magic numbers for
--                      structs, for our friends in EBCDIC-land.
--
-- 856. [func]          Allow partial rdatasets to be returned in answer and
--                      authority sections to help non-TCP capable clients
--                      recover from truncation. [RT #1301]
--
-- 855. [bug]           Stop spurious "using RFC 1035 TTL semantics" warnings.
--
-- 854. [bug]           The config parser didn't properly handle config
--                      options that were specified in units of time other
--                      than seconds. [RT #1372]
--
-- 853. [bug]           configure_view_acl() failed to detach existing acls.
--                      [RT #1374]
--
-- 852. [bug]           Handle responses from servers which do not know
--                      about IXFR.
--
-- 851. [cleanup]       The obsolete support-ixfr option was not properly
--                      ignored.
--
--      --- 9.2.0a1 released ---
--
-- 850. [bug]           dns_rbt_findnode() would not find nodes that were
--                      split on a bitstring label somewhere other than in
--                      the last label of the node. [RT #1351]
--
-- 849. [func]          <isc/net.h> will ensure INADDR_LOOPBACK is defined.
--
-- 848. [func]          A minimum max-cache-size of two megabytes is enforced
--                      by the cache cleaner.
--
-- 847. [func]          Added isc_file_test(), which currently only has
--                      some very basic functionality to test for the
--                      existence of a file, whether a pathname is absolute,
--                      or whether a pathname is the fundamental representation
--                      of the current directory.  It is intended that this
--                      function can be expanded to test other things a
--                      programmer might want to know about a file.
--
-- 846. [func]          A non-zero 'param' to dst_key_generate() when making an
--                      hmac-md5 key means that good entropy is not required.
--
-- 845. [bug]           The access rights on the public file of a symmetric
--                      key are now restricted as soon as the file is opened,
--                      rather than after it has been written and closed.
--
-- 844. [func]          <isc/net.h> will ensure INADDR_LOOPBACK is defined,
--                      just as <lwres/net.h> does.
--
-- 843. [func]          If no controls statement is present in named.conf,
--                      or if any inet phrase of a controls statement is
--                      lacking a keys clause, then a key will be automatically
--                      generated by named and an rndc.conf-style file
--                      named named.key will be written that uses it.  rndc
--                      will use this file only if its normal configuration
--                      file, or one provided on the command line, does not
--                      exist.
--
-- 842. [func]          'rndc flush' now takes an optional view.
--
-- 841. [bug]           When sdb modules were not declared threadsafe, their
--                      create and destroy functions were not serialized.
--
-- 840. [bug]           The config file parser could print the wrong file
--                      name if an error was detected after an included file
--                      was parsed. [RT #1353]
--
-- 839. [func]          Dump packets for which there was no view or that the
--                      class could not be determined to category "unmatched".
--
-- 838. [port]          UnixWare 7.x.x is now suported by
--                      bin/tests/system/ifconfig.sh.
--
-- 837. [cleanup]       Multi-threading is now enabled by default only on
--                      OSF1, Solaris 2.7 and newer, and AIX.
--
-- 836. [func]          Upgraded libtool to 1.4.
--
-- 835. [bug]           The dispatcher could enter a busy loop if
--                      it got an I/O error receiving on a UDP socket.
--                      [RT #1293]
--
-- 834. [func]          Accept (but warn about) master files beginning with
--                      an SOA record without an explicit TTL field and
--                      lacking a $TTL directive, by using the SOA MINTTL
--                      as a default TTL.  This is for backwards compatibility
--                      with old versions of BIND 8, which accepted such
--                      files without warning although they are illegal
--                      according to RFC1035.
--
-- 833. [cleanup]       Moved dns_soa_*() from <dns/journal.h> to
--                      <dns/soa.h>, and extended them to support
--                      all the integer-valued fields of the SOA RR.
--
-- 832. [bug]           The default location for named.conf in named-checkconf
--                      should depend on --sysconfdir like it does in named.
--                      [RT #1258]
--
-- 831. [placeholder]
--
-- 830. [func]          Implement 'rndc status'.
--
-- 829. [bug]           The DNS_R_ZONECUT result code should only be returned
--                      when an ANY query is made with DNS_DBFIND_GLUEOK set.
--                      In all other ANY query cases, returning the delegation
--                      is better.
--
-- 828. [bug]           The errno value from recvfrom() could be overwritten
--                      by logging code. [RT #1293]
--
-- 827. [bug]           When an IXFR protocol error occurs, the slave
--                      should retry with AXFR.
--
-- 826. [bug]           Some IXFR protocol errors were not detected.
--
-- 825. [bug]           zone.c:ns_query() detached from the wrong zone
--                      reference. [RT #1264]
--
-- 824. [bug]           Correct line numbers reported by dns_master_load().
--                      [RT #1263]
--
-- 823. [func]          The output of "dig -h" now goes to stdout so that it
--                      can easily be piped through "more". [RT #1254]
--
-- 822. [bug]           Sending nxrrset prerequisites would crash nsupdate.
--                      [RT #1248]
--
-- 821. [bug]           The program name used when logging to syslog should
--                      be stripped of leading path components.
--                      [RT #1178, #1232]
--
-- 820. [bug]           Name server address lookups failed to follow
--                      A6 chains into the glue of local authoritative
--                      zones.
--
-- 819. [bug]           In certain cases, the resolver's attempts to
--                      restart an address lookup at the root could cause
--                      the fetch to deadlock (with itself) instead of
--                      restarting. [RT #1225]
--
-- 818. [bug]           Certain pathological responses to ANY queries could
--                      cause an assertion failure. [RT #1218]
--
-- 817. [func]          Adjust timeouts for dialup zone queries.
--
-- 816. [bug]           Report potential problems with log file accessibility
--                      at configuration time, since such problems can't
--                      reliably be reported at the time they actually occur.
--
-- 815. [bug]           If a log file was specified with a path separator
--                      character (i.e. "/") in its name and the directory
--                      did not exist, the log file's name was treated as
--                      though it were the directory name. [RT #1189]
--
-- 814. [bug]           Socket objects left over from accept() failures
--                      were incorrectly destroyed, causing corruption
--                      of socket manager data structures.
--
-- 813. [bug]           File descriptors exceeding FD_SETSIZE were handled
--                      badly. [RT #1192]
--
-- 812. [bug]           dig sometimes printed incomplete IXFR responses
--                      due to an uninitialized variable. [RT #1188]
--
-- 811. [bug]           Parentheses were not quoted in zone dumps. [RT #1194]
--
-- 810. [bug]           The signer name in SIG records was not properly
--                      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.
--
-- 808. [func]          Add 'rndc flush' to flush the server's cache.
--
-- 807. [bug]           When setting up TCP connections for incoming zone
--                      transfers, the transfer-source port was not
--                      ignored like it should be.
--
-- 806. [bug]           DNS_R_SEENINCLUDE was failing to propagate back up
--                      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]
--
-- 804. [bug]           Attempting to obtain entropy could fail in some
--                      situations.  This would be most common on systems
--                      with user-space threads. [RT #1131]
--
-- 803. [bug]           Treat all SIG queries as if they have the CD bit set,
--                      otherwise no data will be returned [RT #749]
--
-- 802. [bug]           DNSSEC key tags were computed incorrectly in almost
--                      all cases. [RT #1146]
--
-- 801. [bug]           nsupdate should treat lines beginning with ';' as
--                      comments. [RT #1139]
--
-- 800. [bug]           dnssec-signzone produced incorrect statistics for
--                      large zones. [RT #1133]
--
-- 799. [bug]           The ADB didn't find AAAA glue in a zone unless A6
--                      glue was also present.
--
-- 798. [bug]           nsupdate should be able to reject bad input lines
--                      and continue. [RT #1130]
--
-- 797. [func]          Issue a warning if the 'directory' option contains
--                      a relative path. [RT #269]
--
-- 796. [func]          When a size limit is associated with a log file,
--                      only roll it when the size is reached, not every
--                      time the log file is opened. [RT #1096]
--
-- 795. [func]          Add the +multiline option to dig. [RT #1095]
--
-- 794. [func]          Implement the "port" and "default-port" statements
--                      in rndc.conf.
--
-- 793. [cleanup]       The DNSSEC tools could create filenames that were
--                      illegal or contained shell meta-characters.  They
--                      now use a different text encoding of names that
--                      doesn't have these problems. [RT #1101]
--
-- 792. [cleanup]       Replace the OMAPI command channel protocol with a
--                      simpler one.
--
-- 791. [bug]           The command channel now works over IPv6.
--
-- 790. [bug]           Wildcards created using dynamic update or IXFR
--                      could fail to match. [RT #1111]
--
-- 789. [bug]           The "localhost" and "localnets" ACLs did not match
--                      when used as the second element of a two-element
--                      sortlist item.
--
-- 788. [func]          Add the "match-mapped-addresses" option, which
--                      causes IPv6 v4mapped addresses to be treated as
--                      IPv4 addresses for the purpose of acl matching.
--
-- 787. [bug]           The DNSSEC tools failed to downcase domain
--                      names when mapping them into file names.
--
-- 786. [bug]           When DNSSEC signing/verifying data, owner names were
--                      not properly down-cased.
--
-- 785. [bug]           A race condition in the resolver could cause
--                      an assertion failure. [RT #673, #872, #1048]
--
-- 784. [bug]           nsupdate and other programs would not quit properly
--                      if some signals were blocked by the caller. [RT #1081]
--
-- 783. [bug]           Following CNAMEs could cause an assertion failure
--                      when either using an sdb database or under very
--                      rare conditions.
--
-- 782. [func]          Implement the "serial-query-rate" option.
--
-- 781. [func]          Avoid error packet loops by dropping duplicate FORMERR
--                      responses. [RT #1006]
--
-- 780. [bug]           Error handling code dealing with out of memory or
--                      other rare errors could lead to assertion failures
--                      by calling functions on uninitialized names. [RT #1065]
--
-- 779. [func]          Added the "minimal-responses" option.
--
-- 778. [bug]           When starting cache cleaning, cleaning_timer_action()
--                      returned without first pausing the iterator, which
--                      could cause deadlock. [RT #998]
--
-- 777. [bug]           An empty forwarders list in a zone failed to override
--                      global forwarders. [RT #995]
--
-- 776. [func]          Improved error reporting in denied messages. [RT #252]
--
-- 775. [placeholder]
--
-- 774. [func]          max-cache-size is implemented.
--
-- 773. [func]          Added isc_rwlock_trylock() to attempt to lock without
--                      blocking.
--
-- 772. [bug]           Owner names could be incorrectly omitted from cache
--                      dumps in the presence of negative caching entries.
--                      [RT #991]
--
-- 771. [cleanup]       TSIG errors related to unsynchronized clocks
--                      are logged better. [RT #919]
--
-- 770. [func]          Add the "edns yes_or_no" statement to the server
--                      clause. [RT #524]
--
-- 769. [func]          Improved error reporting when parsing rdata. [RT #740]
--
-- 768. [bug]           The server did not emit an SOA when a CNAME
--                      or DNAME chain ended in NXDOMAIN in an
--                      authoritative zone.
--
-- 767. [placeholder]
--
-- 766. [bug]           A few cases in query_find() could leak fname.
--                      This would trigger the mpctx->allocated == 0
--                      assertion when the server exited.
--                      [RT #739, #776, #798, #812, #818, #821, #845,
--                      #892, #935, #966]
--
-- 765. [func]          ACL names are once again case insensitive, like
--                      in BIND 8. [RT #252]
--
-- 764. [func]          Configuration files now allow "include" directives
--                      in more places, such as inside the "view" statement.
--                      [RT #377, #728, #860]
--
-- 763. [func]          Configuration files no longer have reserved words.
--                      [RT #731, #753]
--
-- 762. [cleanup]       The named.conf and rndc.conf file parsers have
--                      been completely rewritten.
--
-- 761. [bug]           _REENTRANT was still defined when building with
--                      --disable-threads.
--
-- 760. [contrib]       Significant enhancements to the pgsql sdb driver.
--
-- 759. [bug]           The resolver didn't turn off "avoid fetches" mode
--                      when restarting, possibly causing resolution
--                      to fail when it should not.  This bug only affected
--                      platforms which support both IPv4 and IPv6. [RT #927]
--
-- 758. [bug]           The "avoid fetches" code did not treat negative
--                      cache entries correctly, causing fetches that would
--                      be useful to be avoided.  This bug only affected
--                      platforms which support both IPv4 and IPv6. [RT #927]
--
-- 757. [func]          Log zone transfers.
--
-- 756. [bug]           dns_zone_load() could "return" success when no master
--                      file was configured.
--
-- 755. [bug]           Fix incorrectly formatted log messages in zone.c.
--
-- 754. [bug]           Certain failure conditions sending UDP packets
--                      could cause the server to retry the transmission
--                      indefinitely. [RT #902]
--
-- 753. [bug]           dig, host, and nslookup would fail to contact a
--                      remote server if getaddrinfo() returned an IPv6
--                      address on a system that doesn't support IPv6.
--                      [RT #917]
--
-- 752. [func]          Correct bad tv_usec elements returned by
--                      gettimeofday().
--
-- 751. [func]          Log successful zone loads / transfers.  [RT #898]
--
-- 750. [bug]           A query should not match a DNAME whose trust level
--                      is pending. [RT #916]
--
-- 749. [bug]           When a query matched a DNAME in a secure zone, the
--                      server did not return the signature of the DNAME.
--                      [RT #915]
--
-- 748. [doc]           List supported RFCs in doc/misc/rfc-compliance.
--                      [RT #781]
--
-- 747. [bug]           The code to determine whether an IXFR was possible
--                      did not properly check for a database that could
--                      not have a journal. [RT #865, #908]
--
-- 746. [bug]           The sdb didn't clone rdatasets properly, causing
--                      a crash when the server followed delegations. [RT #905]
--
-- 745. [func]          Report the owner name of records that fail
--                      semantic checks while loading.
--
-- 744. [bug]           When returning DNS_R_CNAME or DNS_R_DNAME as the
--                      result of an ANY or SIG query, the resolver failed
--                      to setup the return event's rdatasets, causing an
--                      assertion failure in the query code. [RT #881]
--
-- 743. [bug]           Receiving a large number of certain malformed
--                      answers could cause named to stop responding.
--                      [RT #861]
--
-- 742. [placeholder]
--
-- 741. [port]          Support openssl-engine. [RT #709]
--
-- 740. [port]          Handle openssl library mismatches slightly better.
--
-- 739. [port]          Look for /dev/random in configure, rather than
--                      assuming it will be there for only a predefined
--                      set of OSes.
--
-- 738. [bug]           If a non-threadsafe sdb driver supported AXFR and
--                      received an AXFR request, it would deadlock or die
--                      with an assertion failure. [RT #852]
--
-- 737. [port]          stdtime.c failed to compile on certain platforms.
--
-- 736. [func]          New functions isc_task_{begin,end}exclusive().
--
-- 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 transfer.
--                      [RT #830]
--
-- 733. [bug]           Reference counts of dns_acl_t objects need to be
--                      locked but were not. [RT #801, #821]
--
-- 732. [bug]           Glue with 0 TTL could also cause SERVFAIL. [RT #828]
--
-- 731. [bug]           Certain zone errors could cause named-checkzone to
--                      fail ungracefully. [RT #819]
--
-- 730. [bug]           lwres_getaddrinfo() returns the correct result when
--                      it fails to contact a server. [RT #768]
--
-- 729. [port]          pthread_setconcurrency() needs to be called on Solaris.
--
-- 728. [bug]           Fix comment processing on master file directives.
--                      [RT# 757]
--
-- 727. [port]          Work around OS bug where accept() succeeds but
--                      fails to fill in the peer address of the accepted
--                      connection, by treating it as an error rather than
--                      an assertion failure. [RT #809]
--
-- 726. [func]          Implement the "trace" and "notrace" commands in rndc.
--
-- 725. [bug]           Installing man pages could fail.
--
-- 724. [func]          New libisc functions isc_netaddr_any(),
--                      isc_netaddr_any6().
--
-- 723. [bug]           Referrals whose NS RRs had a 0 TTL caused the resolver
--                      to return DNS_R_SERVFAIL. [RT #783]
--
-- 722. [func]          Allow incremental loads to be canceled.
--
-- 721. [cleanup]       Load manager and dns_master_loadfilequota() are no
--                      more.
--
-- 720. [bug]           Server could enter infinite loop in
--                      dispatch.c:do_cancel(). [RT #733]
--
-- 719. [bug]           Rapid reloads could trigger an assertion failure.
--                      [RT #743, #763]
--
-- 718. [cleanup]       "internal" is no longer a reserved word in named.conf.
--                      [RT #753, #731]
--
-- 717. [bug]           Certain TKEY processing failure modes could
--                      reference an uninitialized variable, causing the
--                      server to crash. [RT #750]
--
-- 716. [bug]           The first line of a $INCLUDE master file was lost if
--                      an origin was specified. [RT #744]
--
-- 715. [bug]           Resolving some A6 chains could cause an assertion
--                      failure in adb.c. [RT #738]
--
-- 714. [bug]           Preserve interval timers across reloads unless changed.
--                      [RT# 729]
--
-- 713. [func]          named-checkconf takes '-t directory' similar to named.
--                      [RT #726]
--
-- 712. [bug]           Sending a large signed update message caused an
--                      assertion failure. [RT #718]
--
-- 711. [bug]           The libisc and liblwres implementations of
--                      inet_ntop contained an off by one error.
--
-- 710. [func]          The forwarders statement now takes an optional
--                      port. [RT #418]
--
-- 709. [bug]           ANY or SIG queries for data with a TTL of 0
--                      would return SERVFAIL. [RT #620]
--
-- 708. [bug]           When building with --with-openssl, the openssl headers
--                      included with BIND 9 should not be used. [RT #702]
--
-- 707. [func]          The "filename" argument to named-checkzone is no
--                      longer optional, to reduce confusion. [RT #612]
--
-- 706. [bug]           Zones with an explicit "allow-update { none; };"
--                      were considered dynamic and therefore not reloaded
--                      on SIGHUP or "rndc reload".
--
-- 705. [port]          Work out resource limit type for use where rlim_t is
--                      not available. [RT #695]
--
-- 704. [port]          RLIMIT_NOFILE is not available on all platforms.
--                      [RT #695]
--
-- 703. [port]          sys/select.h is needed on older platforms. [RT #695]
--
-- 702. [func]          If the address 0.0.0.0 is seen in resolv.conf,
--                      use 127.0.0.1 instead. [RT #693]
--
-- 701. [func]          Root hints are now fully optional.  Class IN
--                      views use compiled-in hints by default, as
--                      before.  Non-IN views with no root hints now
--                      provide authoritative service but not recursion.
--                      A warning is logged if a view has neither root
--                      hints nor authoritative data for the root. [RT #696]
--
-- 700. [bug]           $GENERATE range check was wrong. [RT #688]
--
-- 699. [bug]           The lexer mishandled empty quoted strings. [RT #694]
--
-- 698. [bug]           Aborting nsupdate with ^C would lead to several
--                      race conditions.
--
-- 697. [bug]           nsupdate was not compatible with the undocumented
--                      BIND 8 behavior of ignoring TTLs in "update delete"
--                      commands. [RT #693]
--
-- 696. [bug]           lwresd would die with an assertion failure when passed
--                      a zero-length name. [RT #692]
--
-- 695. [bug]           If the resolver attempted to query a blackholed or
--                      bogus server, the resolution would fail immediately.
--
-- 694. [bug]           $GENERATE did not produce the last entry.
--                      [RT #682, #683]
--
-- 693. [bug]           An empty lwres statement in named.conf caused
--                      the server to crash while loading.
--
-- 692. [bug]           Deal with systems that have getaddrinfo() but not
--                      gai_strerror(). [RT #679]
--
-- 691. [bug]           Configuring per-view forwarders caused an assertion
--                      failure. [RT #675, #734]
--
-- 690. [func]          $GENERATE now supports DNAME. [RT #654]
--
-- 689. [doc]           man pages are now installed. [RT #210]
--
-- 688. [func]          "make tags" now works on systems with the
--                      "Exuberant Ctags" etags.
--
-- 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
--                      blocking operations. [RT #568]
--
-- 685. [bug]           nslookup should use the search list/domain options
--                      from resolv.conf by default. [RT #405, #630]
--
-- 684. [bug]           Memory leak with view forwarders. [RT #656]
--
-- 683. [bug]           File descriptor leak in isc_lex_openfile().
--
-- 682. [bug]           nslookup displayed SOA records incorrectly. [RT #665]
--
-- 681. [bug]           $GENERATE specifying output format was broken. [RT #653]
--
-- 680. [bug]           dns_rdata_fromstruct() mishandled options bigger
--                      than 255 octets.
--
-- 679. [bug]           $INCLUDE could leak memory and file descriptors on
--                      reload. [RT #639]
--
-- 678. [bug]           "transfer-format one-answer;" could trigger an assertion
--                      failure. [RT #646]
--
-- 677. [bug]           dnssec-signzone would occasionally use the wrong ttl
--                      for database operations and fail. [RT #643]
--
-- 676. [bug]           Log messages about lame servers to category
--                      'lame-servers' rather than 'resolver', so as not
--                      to be gratuitously incompatible with BIND 8.
--
-- 675. [bug]           TKEY queries could cause the server to leak
--                      memory.
--
-- 674. [func]          Allow messages to be TSIG signed / verified using
--                      a offset from the current time.
--
-- 673. [func]          The server can now convert RFC1886-style recursive
--                      lookup requests into RFC2874-style lookups, when
--                      enabled using the new option "allow-v6-synthesis".
--
-- 672. [bug]           The wrong time was in the "time signed" field when
--                      replying with BADTIME error.
--
-- 671. [bug]           The message code was failing to parse a message with
--                      no question section and a TSIG record. [RT #628]
--
-- 670. [bug]           The lwres replacements for getaddrinfo and
--                      getipnodebyname didn't properly check for the
--                      existence of the sockaddr sa_len field.
--
-- 669. [bug]           dnssec-keygen now makes the public key file
--                      non-world-readable for symmetric keys. [RT #403]
--
-- 668. [func]          named-checkzone now reports multiple errors in master
--                      files.
--
-- 667. [bug]           On Linux, running named with the -u option and a
--                      non-world-readable configuration file didn't work.
--                      [RT #626]
--
-- 666. [bug]           If a request sent by dig is longer than 512 bytes,
--                      use TCP.
--
-- 665. [bug]           Signed responses were not sent when the size of the
--                      TSIG + question exceeded the maximum message size.
--                      [RT #628]
--
-- 664. [bug]           The t_tasks and t_timers module tests are now skipped
--                      when building without threads, since they require
--                      threads.
--
-- 663. [func]          Accept a size_spec, not just an integer, in the
--                      (unimplemented and ignored) max-ixfr-log-size option
--                      for compatibility with recent versions of BIND 8.
--                      [RT #613]
--
-- 662. [bug]           dns_rdata_fromtext() failed to log certain errors.
--
-- 661. [bug]           Certain UDP IXFR requests caused an assertion failure
--                      (mpctx->allocated == 0). [RT #355, #394, #623]
--
-- 660. [port]          Detect multiple CPUs on HP-UX and IRIX.
--
-- 659. [performance]   Rewrite the name compression code to be much faster.
--
-- 658. [cleanup]       Remove all vestiges of 16 bit global compression.
--
-- 657. [bug]           When a listen-on statement in an lwres block does not
--                      specify a port, use 921, not 53.  Also update the
--                      listen-on documentation. [RT #616]
--
-- 656. [func]          Treat an unescaped newline in a quoted string as
--                      an error.  This means that TXT records with missing
--                      close quotes should have meaningful errors printed.
--
-- 655. [bug]           Improve error reporting on unexpected eof when loading
--                      zones. [RT #611]
--
-- 654. [bug]           Origin was being forgotten in TCP retries in dig.
--                      [RT #574]
--
-- 653. [bug]           +defname option in dig was reversed in sense.
--                      [RT #549]
--
-- 652. [bug]           zone_saveunique() did not report the new name.
--
-- 651. [func]          The AD bit in responses now has the meaning
--                      specified in <draft-ietf-dnsext-ad-is-secure>.
--
-- 650. [bug]           SIG(0) records were being generated and verified
--                      incorrectly. [RT #606]
--
-- 649. [bug]           It was possible to join to an already running fctx
--                      after it had "cloned" its events, but before it sent
--                      them.  In this case, the event of the newly joined
--                      fetch would not contain the answer, and would
--                      trigger the INSIST() in fctx_sendevents().  In
--                      BIND 9.0, this bug did not trigger an INSIST(), but
--                      caused the fetch to fail with a SERVFAIL result.
--                      [RT #588, #597, #605, #607]
--
-- 648. [port]          Add support for pre-RFC2133 IPv6 implementations.
--
-- 647. [bug]           Resolver queries sent after following multiple
--                      referrals had excessively long retransmission
--                      timeouts due to incorrectly counting the referrals
--                      as "restarts".
--
-- 646. [bug]           The UnixWare ISC_PLATFORM_FIXIN6INADDR fix in isc/net.h
--                      didn't _cleanly_ fix the problem it was trying to fix.
--
-- 645. [port]          BSD/OS 3.0 needs pthread_init(). [RT #603]
--
-- 644. [bug]           #622 needed more work. [RT #562]
--
-- 643. [bug]           xfrin error messages made more verbose, added class
--                      of the zone. [RT# 599]
--
-- 642. [bug]           Break the exit_check() race in the zone module.
--                      [RT #598]
--
--      --- 9.1.0b2 released ---
--
-- 641. [bug]           $GENERATE caused a uninitialized link to be used.
--                      [RT #595]
--
-- 640. [bug]           Memory leak in error path could cause
--                      "mpctx->allocated == 0" failure. [RT #584]
--
-- 639. [bug]           Reading entropy from the keyboard would sometimes fail.
--                      [RT #591]
--
-- 638. [port]          lib/isc/random.c needed to explicitly include time.h
--                      to get a prototype for time() when pthreads was not
--                      being used. [RT #592]
--
-- 637. [port]          Use isc_u?int64_t instead of (unsigned) long long in
--                      lib/isc/print.c.  Also allow lib/isc/print.c to
--                      be compiled even if the platform does not need it.
--                      [RT #592]
--
-- 636. [port]          Shut up MSVC++ about a possible loss of precision
--                      in the ISC__BUFFER_PUTUINT*() macros. [RT #592]
--
-- 635. [bug]           Reloading a server with a configured blackhole list
--                      would cause an assertion. [RT #590]
--
-- 634. [bug]           A log file will completely stop being written when
--                      it reaches the maximum size in all cases, not just
--                      when versioning is also enabled. [RT #570]
--
-- 633. [port]          Cope with rlim_t missing on BSD/OS systems. [RT #575]
--
-- 632. [bug]           The index array of the journal file was
--                      corrupted as it was written to disk.
--
-- 631. [port]          Build without thread support on systems without
--                      pthreads.
--
-- 630. [bug]           Locking failure in zone code. [RT #582]
--
-- 629. [bug]           9.1.0b1 dereferenced a null pointer and crashed
--                      when responding to a UDP IXFR request.
--
-- 628. [bug]           If the root hints contained only AAAA addresses,
--                      named would be unable to perform resolution.
--
-- 627. [bug]           The EDNS0 blackhole detection code of change 324
--                      waited for three retransmissions to each server,
--                      which takes much too long when a domain has many
--                      name servers and all of them drop EDNS0 queries.
--                      Now we retry without EDNS0 after three consecutive
--                      timeouts, even if they are all from different
--                      servers. [RT #143]
--
-- 626. [bug]           The lightweight resolver daemon no longer crashes
--                      when asked for a SIG rrset. [RT #558]
--
-- 625. [func]          Zones now inherit their class from the enclosing view.
--
-- 624. [bug]           The zone object could get timer events after it had
--                      been destroyed, causing a server crash. [RT #571]
--
-- 623. [func]          Added "named-checkconf" and "named-checkzone" program
--                      for syntax checking named.conf files and zone files,
--                      respectively.
--
-- 622. [bug]           A canceled request could be destroyed before
--                      dns_request_destroy() was called. [RT #562]
--
-- 621. [port]          Disable IPv6 at runtime if IPv6 sockets are unusable.
--                      This mostly affects Red Hat Linux 7.0, which has
--                      conflicts between libc and the kernel.
--
-- 620. [bug]           dns_master_load*inc() now require 'task' and 'load'
--                      to be non-null.  Also 'done' will not be called if
--                      dns_master_load*inc() fails immediately. [RT #565]
--
-- 619. [placeholder]
--
-- 618. [bug]           Queries to a signed zone could sometimes cause
--                      an assertion failure.
--
-- 617. [bug]           When using dynamic update to add a new RR to an
--                      existing RRset with a different TTL, the journal
--                      entries generated from the update did not include
--                      explicit deletions and re-additions of the existing
--                      RRs to update their TTL to the new value.
--
-- 616. [func]          dnssec-signzone -t output now includes performance
--                      statistics.
--
-- 615. [bug]           dnssec-signzone did not like child keysets signed
--                      by multiple keys.
--
-- 614. [bug]           Checks for uninitialized link fields were prone
--                      to false positives, causing assertion failures.
--                      The checks are now disabled by default and may
--                      be re-enabled by defining ISC_LIST_CHECKINIT.
--
-- 613. [bug]           "rndc reload zone" now reloads primary zones.
--                      It previously only updated slave and stub zones,
--                      if an SOA query indicated an out of date serial.
--
-- 612. [cleanup]       Shutup a ridiculously noisy HP-UX compiler that
--                      complains relentlessly about how its treatment
--                      of 'const' has changed as well as how casting
--                      sometimes tightens alignment constraints.
--
-- 611. [func]          allow-notify can be used to permit processing of
--                      notify messages from hosts other than a slave's
--                      masters.
--
-- 610. [func]          rndc dumpdb is now supported.
--
-- 609. [bug]           getrrsetbyname() would crash lwresd if the server
--                      found more SIGs than answers. [RT #554]
--
-- 608. [func]          dnssec-signzone now adds a comment to the zone
--                      with the time the file was signed.
--
-- 607. [bug]           nsupdate would fail if it encountered a CNAME or
--                      DNAME in a response to an SOA query. [RT #515]
--
-- 606. [bug]           Compiling with --disable-threads failed due
--                      to isc_thread_self() being incorrectly defined
--                      as an integer rather than a function.
--
-- 605. [func]          New function isc_lex_getlasttokentext().
--
-- 604. [bug]           The named.conf parser could print incorrect line
--                      numbers when long comments were present.
--
-- 603. [bug]           Make dig handle multiple types or classes on the same
--                      query more correctly.
--
-- 602. [func]          Cope automatically with UnixWare's broken
--                      IN6_IS_ADDR_* macros. [RT #539]
--
-- 601. [func]          Return a non-zero exit code if an update fails
--                      in nsupdate.
--
-- 600. [bug]           Reverse lookups sometimes failed in dig, etc...
--
-- 599. [func]          Added four new functions to the libisc log API to
--                      support i18n messages.  isc_log_iwrite(),
--                      isc_log_ivwrite(), isc_log_iwrite1() and
--                      isc_log_ivwrite1() were added.
--
-- 598. [bug]           An update-policy statement would cause the server
--                      to assert while loading. [RT #536]
--
-- 597. [func]          dnssec-signzone is now multi-threaded.
--
-- 596. [bug]           DNS_RDATASLAB_FORCE and DNS_RDATASLAB_EXACT are
--                      not mutually exclusive.
--
-- 595. [port]          On Linux 2.2, socket() returns EINVAL when it
--                      should return EAFNOSUPPORT.  Work around this.
--                      [RT #531]
--
-- 594. [func]          sdb drivers are now assumed to not be thread-safe
--                      unless the DNS_SDBFLAG_THREADSAFE flag is supplied.
--
-- 593. [bug]           If a secure zone was missing all its NXTs and
--                      a dynamic update was attempted, the server entered
--                      an infinite loop.
--
-- 592. [bug]           The sig-validity-interval option now specifies a
--                      number of days, not seconds.  This matches the
--                      documentation. [RT #529]
--
--      --- 9.1.0b1 released ---
--
-- 591. [bug]           Work around non-reentrancy in openssl by disabling
--                      pre-computation in keys.
--
-- 590. [doc]           There are now man pages for the lwres library in
--                      doc/man/lwres.
--
-- 589. [bug]           The server could deadlock if a zone was updated
--                      while being transferred out.
--
-- 588. [bug]           ctx->in_use was not being correctly initialized when
--                      when pushing a file for $INCLUDE. [RT #523]
--
-- 587. [func]          A warning is now printed if the "allow-update"
--                      option allows updates based on the source IP
--                      address, to alert users to the fact that this
--                      is insecure and becoming increasingly so as
--                      servers capable of update forwarding are being
--                      deployed.
--
-- 586. [bug]           multiple views with the same name were fatal. [RT #516]
--
-- 585. [func]          dns_db_addrdataset() and and dns_rdataslab_merge()
--                      now support 'exact' additions in a similar manner to
--                      dns_db_subtractrdataset() and dns_rdataslab_subtract().
--
-- 584. [func]          You can now say 'notify explicit'; to suppress
--                      notification of the servers listed in NS records
--                      and notify only those servers listed in the
--                      'also-notify' option.
--
-- 583. [func]          "rndc querylog" will now toggle logging of
--                      queries, like "ndc querylog" in BIND 8.
--
-- 582. [bug]           dns_zone_idetach() failed to lock the zone.
--                      [RT #199, #463]
--
-- 581. [bug]           log severity was not being correctly processed.
--                      [RT #485]
--
-- 580. [func]          Ignore trailing garbage on incoming DNS packets,
--                      for interoperability with broken server
--                      implementations. [RT #491]
--
-- 579. [bug]           nsupdate did not take a filename to read update from.
--                      [RT #492]
--
-- 578. [func]          New config option "notify-source", to specify the
--                      source address for notify messages.
--
-- 577. [func]          Log illegal RDATA combinations. e.g. multiple
--                      singleton types, cname and other data.
--
-- 576. [doc]           isc_log_create() description did not match reality.
--
-- 575. [bug]           isc_log_create() was not setting internal state
--                      correctly to reflect the default channels created.
--
-- 574. [bug]           TSIG signed queries sent by the resolver would fail to
--                      have their responses validated and would leak memory.
--
-- 573. [bug]           The journal files of IXFRed slave zones were
--                      inadvertently discarded on server reload, causing
--                      "journal out of sync with zone" errors on subsequent
--                      reloads. [RT #482]
--
-- 572. [bug]           Quoted strings were not accepted as key names in
--                      address match lists.
--
-- 571. [bug]           It was possible to create an rdataset of singleton
--                      type which had more than one rdata. [RT #154]
--                      [RT #279]
--
-- 570. [bug]           rbtdb.c allowed zones containing nodes which had
--                      both a CNAME and "other data". [RT #154]
--
-- 569. [func]          The DNSSEC AD bit will not be set on queries which
--                      have not requested a DNSSEC response.
--
-- 568. [func]          Add sample simple database drivers in contrib/sdb.
--
-- 567. [bug]           Setting the zone transfer timeout to zero caused an
--                      assertion failure. [RT #302]
--
-- 566. [func]          New public function dns_timer_setidle().
--
-- 565. [func]          Log queries more like BIND 8: query logging is now
--                      done to category "queries", level "info". [RT #169]
--
-- 564. [func]          Add sortlist support to lwresd.
--
-- 563. [func]          New public functions dns_rdatatype_format() and
--                      dns_rdataclass_format(), for convenient formatting
--                      of rdata type/class mnemonics in log messages.
--
-- 562. [cleanup]       Moved lib/dns/*conf.c to bin/named where they belong.
--
-- 561. [func]          The 'datasize', 'stacksize', 'coresize' and 'files'
--                      clauses of the options{} statement are now implemented.
--
-- 560. [bug]           dns_name_split did not properly the resulting prefix
--                      when a maximal length bitstring label was split which
--                      was preceded by another bitstring label. [RT #429]
--
-- 559. [bug]           dns_name_split did not properly create the suffix
--                      when splitting within a maximal length bitstring label.
--
-- 558. [func]          New functions, isc_resource_getlimit and
--                      isc_resource_setlimit.
--
-- 557. [func]          Symbolic constants for libisc integral types.
--
-- 556. [func]          The DNSSEC OK bit in the EDNS extended flags
--                      is now implemented.  Responses to queries without
--                      this bit set will not contain any DNSSEC records.
--
-- 555. [bug]           A slave server attempting a zone transfer could
--                      crash with an assertion failure on certain
--                      malformed responses from the master. [RT #457]
--
-- 554. [bug]           In some cases, not all of the dnssec tools were
--                      properly installed.
--
-- 553. [bug]           Incoming zone transfers deferred due to quota
--                      were not started when quota was increased but
--                      only when a transfer in progress finished. [RT #456]
--
-- 552. [bug]           We were not correctly detecting the end of all c-style
--                      comments. [RT #455]
--
-- 551. [func]          Implemented the 'sortlist' option.
--
-- 550. [func]          Support unknown rdata types and classes.
--
-- 549. [bug]           "make" did not immediately abort the build when a
--                      subdirectory make failed [RT #450].
--
-- 548. [func]          The lexer now ungets tokens more correctly.
--
-- 547. [placeholder]
--
-- 546. [func]          Option 'lame-ttl' is now implemented.
--
-- 545. [func]          Name limit and counting options removed from dig;
--                      they didn't work properly, and cannot be correctly
--                      implemented without significant changes.
--
-- 544. [func]          Add statistics option, enable statistics-file option,
--                      add RNDC option "dump-statistics" to write out a
--                      query statistics file.
--
-- 543. [doc]           The 'port' option is now documented.
--
-- 542. [func]          Add support for update forwarding as required for
--                      full compliance with RFC2136.  It is turned off
--                      by default and can be enabled using the
--                      'allow-update-forwarding' option.
--
-- 541. [func]          Add bogus server support.
--
-- 540. [func]          Add dialup support.
--
-- 539. [func]          Support the blackhole option.
--
-- 538. [bug]           fix buffer overruns by 1 in lwres_getnameinfo().
--
-- 537. [placeholder]
--
-- 536. [func]          Use transfer-source{-v6} when sending refresh queries.
--                      Transfer-source{-v6} now take a optional port
--                      parameter for setting the UDP source port.  The port
--                      parameter is ignored for TCP.
--
-- 535. [func]          Use transfer-source{-v6} when forwarding update
--                      requests.
--
-- 534. [func]          Ancestors have been removed from RBT chains.  Ancestor
--                      information can be discerned via node parent pointers.
--
-- 533. [func]          Incorporated name hashing into the RBT database to
--                      improve search speed.
--
-- 532. [func]          Implement DNS UPDATE pseudo records using
--                      DNS_RDATA_UPDATE flag.
--
-- 531. [func]          Rdata really should be initialized before being assigned
--                      to (dns_rdata_fromwire(), dns_rdata_fromtext(),
--                      dns_rdata_clone(), dns_rdata_fromregion()),
--                      check that it is.
--
-- 530. [func]          New function dns_rdata_invalidate().
--
-- 529. [bug]           521 contained a bug which caused zones to always
--                      reload.  [RT #410]
--
-- 528. [func]          The ISC_LIST_XXXX macros now perform sanity checks
--                      on their arguments.  ISC_LIST_XXXXUNSAFE can be use
--                      to skip the checks however use with caution.
--
-- 527. [func]          New function dns_rdata_clone().
--
-- 526. [bug]           nsupdate incorrectly refused to add RRs with a TTL
--                      of 0.
--
-- 525. [func]          New arguments 'options' for dns_db_subtractrdataset(),
--                      and 'flags' for dns_rdataslab_subtract() allowing you
--                      to request that the RR's must exist prior to deletion.
--                      DNS_R_NOTEXACT is returned if the condition is not met.
--
-- 524. [func]          The 'forward' and 'forwarders' statement in
--                      non-forward zones should work now.
--
-- 523. [doc]           The source to the Administrator Reference Manual is
--                      now an XML file using the DocBook DTD, and is included
--                      in the distribution.  The plain text version of the
--                      ARM is temporarily unavailable while we figure out
--                      how to generate readable plain text from the XML.
--
-- 522. [func]          The lightweight resolver daemon can now use
--                      a real configuration file, and its functionality
--                      can be provided by a name server.  Also, the -p and -P
--                      options to lwresd have been reversed.
--
-- 521. [bug]           Detect master files which contain $INCLUDE and always
--                      reload. [RT #196]
--
-- 520. [bug]           Upgraded libtool to 1.3.5, which makes shared
--                      library builds almost work on AIX (and possibly
--                      others).
--
-- 519. [bug]           dns_name_split() would improperly split some bitstring
--                      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.
--                      [RT #369]
--
-- 518. [bug]           The resolver did not realize that a DNAME which was
--                      "the answer" to the client's query was "the answer",
--                      and such queries would fail. [RT #399]
--
-- 517. [bug]           The resolver's DNAME code would trigger an assertion
--                      if there was more than one DNAME in the chain.
--                      [RT #399]
--
-- 516. [bug]           Cache lookups which had a NULL node pointer, e.g.
--                      those by dns_view_find(), and which would match a
--                      DNAME, would trigger an INSIST(!search.need_cleanup)
--                      assertion. [RT #399]
--
-- 515. [bug]           The ssu table was not being attached / detached
--                      by dns_zone_[sg]etssutable. [RT#397]
--
-- 514. [func]          Retry refresh and notify queries if they timeout.
--                      [RT #388]
--
-- 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 exception with
--                      an invalid IXFR stream.
--
-- 511. [bug]           The message code could throw an assertion on an
--                      out of memory failure. [RT #392]
--
-- 510. [bug]           Remove spurious view notify warning. [RT #376]
--
-- 509. [func]          Add support for write of zone files on shutdown.
--
-- 508. [func]          dns_message_parse() can now do a best-effort
--                      attempt, which should allow dig to print more invalid
--                      messages.
--
-- 507. [func]          New functions dns_zone_flush(), dns_zt_flushanddetach()
--                      and dns_view_flushanddetach().
--
-- 506. [func]          Do not fail to start on errors in zone files.
--
-- 505. [bug]           nsupdate was printing "unknown result code". [RT #373]
--
-- 504. [bug]           The zone was not being marked as dirty when updated via
--                      IXFR.
--
-- 503. [bug]           dumptime was not being set along with
--                      DNS_ZONEFLG_NEEDDUMP.
--
-- 502. [func]          On a SERVFAIL reply, DiG will now try the next server
--                      in the list, unless the +fail option is specified.
--
-- 501. [bug]           Incorrect port numbers were being displayed by
--                      nslookup. [RT #352]
--
-- 500. [func]          Nearly useless +details option removed from DiG.
--
-- 499. [func]          In DiG, specifying a class with -c or type with -t
--                      changes command-line parsing so that classes and
--                      types are only recognized if following -c or -t.
--                      This allows hosts with the same name as a class or
--                      type to be looked up.
--
-- 498. [doc]           There is now a man page for "dig"
--                      in doc/man/bin/dig.1.
--
-- 497. [bug]           The error messages printed when an IP match list
--                      contained a network address with a nonzero host
--                      part where not sufficiently detailed. [RT #365]
--
-- 496. [bug]           named didn't sanity check numeric parameters. [RT #361]
--
-- 495. [bug]           nsupdate was unable to handle large records. [RT #368]
--
-- 494. [func]          Do not cache NXDOMAIN responses for SOA queries.
--
-- 493. [func]          Return non-cachable (ttl = 0) NXDOMAIN responses
--                      for SOA queries.  This makes it easier to locate
--                      the containing zone without polluting intermediate
--                      caches.
--
-- 492. [bug]           attempting to reload a zone caused the server fail
--                      to shutdown cleanly. [RT #360]
--
-- 491. [bug]           nsupdate would segfault when sending certain
--                      prerequisites with empty RDATA. [RT #356]
--
-- 490. [func]          When a slave/stub zone has not yet successfully
--                      obtained an SOA containing the zone's configured
--                      retry time, perform the SOA query retries using
--                      exponential backoff. [RT #337]
--
-- 489. [func]          The zone manager now has a "i/o" queue.
--
-- 488. [bug]           Locks weren't properly destroyed in some cases.
--
-- 487. [port]          flockfile() is not defined on all systems.
--
-- 486. [bug]           nslookup: "set all" and "server" commands showed
--                      the incorrect port number if a port other than 53
--                      was specified. [RT #352]
--
-- 485. [func]          When dig had more than one server to query, it would
--                      send all of the messages at the same time.  Add
--                      rate limiting of the transmitted messages.
--
-- 484. [bug]           When the server was reloaded after removing addresses
--                      from the named.conf "listen-on" statement, sockets
--                      were still listening on the removed addresses due
--                      to reference count loops. [RT #325]
--
-- 483. [bug]           nslookup: "set all" showed a "search" option but it
--                      was not settable.
--
-- 482. [bug]           nslookup: a plain "server" or "lserver" should be
--                      treated as a lookup.
--
-- 481. [bug]           nslookup:get_next_command() stack size could exceed
--                      per thread limit.
--
-- 480. [bug]           strtok() is not thread safe. [RT #349]
--
-- 479. [func]          The test suite can now be run by typing "make check"
--                      or "make test" at the top level.
--
-- 478. [bug]           "make install" failed if the directory specified with
--                      --prefix did not already exist.
--
-- 477. [bug]           The the isc-config.sh script could be installed before
--                      its directory was created. [RT #324]
--
-- 476. [bug]           A zone could expire while a zone transfer was in
--                      progress triggering a INSIST failure. [RT #329]
--
-- 475. [bug]           query_getzonedb() sometimes returned a non-null version
--                      on failure.  This caused assertion failures when
--                      generating query responses where names subject to
--                      additional section processing pointed to a zone
--                      to which access had been denied by means of the
--                      allow-query option. [RT #336]
--
-- 474. [bug]           The mnemonic of the CHAOS class is CH according to
--                      RFC1035, but it was printed and read only as CHAOS.
--                      We now accept both forms as input, and print it
--                      as CH. [RT #305]
--
-- 473. [bug]           nsupdate overran the end of the list of name servers
--                      when no servers could be reached, typically causing
--                      it to print the error message "dns_request_create:
--                      not implemented".
--
-- 472. [bug]           Off-by-one error caused isc_time_add() to sometimes
--                      produce invalid time values.
--
-- 471. [bug]           nsupdate didn't compile on HP/UX 10.20
--
-- 470. [func]          $GENERATE is now supported.  See also
--                      doc/misc/migration.
--
-- 469. [bug]           "query-source address * port 53;" now works.
--
-- 468. [bug]           dns_master_load*() failed to report file and line
--                      number in certain error conditions.
--
-- 467. [bug]           dns_master_load*() failed to log an error if
--                      pushfile() failed.
--
-- 466. [bug]           dns_master_load*() could return success when it failed.
--
-- 465. [cleanup]       Allow 0 to be set as an omapi_value_t value by
--                      omapi_value_storeint().
--
-- 464. [cleanup]       Build with openssl's RSA code instead of dnssafe.
--
-- 463. [bug]           nsupdate sent malformed SOA queries to the second
--                      and subsequent name servers in resolv.conf if the
--                      query sent to the first one failed.
--
-- 462. [bug]           --disable-ipv6 should work now.
--
-- 461. [bug]           Specifying an unknown key in the "keys" clause of the
--                      "controls" statement caused a NULL pointer dereference.
--                      [RT #316]
--
-- 460. [bug]           Much of the DNSSEC code only worked with class IN.
--
-- 459. [bug]           Nslookup processed the "set" command incorrectly.
--
-- 458. [bug]           Nslookup didn't properly check class and type values.
--                      [RT #305]
--
-- 457. [bug]           Dig/host/hslookup didn't properly handle connect
--                      timeouts in certain situations, causing an
--                      unnecessary warning message to be printed.
--
-- 456. [bug]           Stub zones were not resetting the refresh and expire
--                      counters, loadtime or clearing the DNS_ZONE_REFRESH
--                      (refresh in progress) flag upon successful update.
--                      This disabled further refreshing of the stub zone,
--                      causing it to eventually expire. [RT #300]
--
-- 455. [doc]           Document IPv4 prefix notation does not require a
--                      dotted decimal quad but may be just dotted decimal.
--
-- 454. [bug]           Enforce dotted decimal and dotted decimal quad where
--                      documented as such in named.conf. [RT #304, RT #311]
--
-- 453. [bug]           Warn if the obsolete option "maintain-ixfr-base"
--                      is specified in named.conf. [RT #306]
--
-- 452. [bug]           Warn if the unimplemented option "statistics-file"
--                      is specified in named.conf. [RT #301]
--
-- 451. [func]          Update forwarding implemented.
--
-- 450. [func]          New function ns_client_sendraw().
--
-- 449. [bug]           isc_bitstring_copy() only works correctly if the
--                      two bitstrings have the same lsb0 value, but this
--                      requirement was not documented, nor was there a
--                      REQUIRE for it.
--
-- 448. [bug]           Host output formatting change, to match v8. [RT #255]
--
-- 447. [bug]           Dig didn't properly retry in TCP mode after
--                      a truncated reply. [RT #277]
--
-- 446. [bug]           Confusing notify log message. [RT #298]
--
-- 445. [bug]           Doing a 0 bit isc_bitstring_copy() of an lsb0
--                      bitstring triggered a REQUIRE statement.  The REQUIRE
--                      statement was incorrect. [RT #297]
--
-- 444. [func]          "recursion denied" messages are always logged at
--                      debug level 1, now, rather than sometimes at ERROR.
--                      This silences these warnings in the usual case, where
--                      some clients set the RD bit in all queries.
--
-- 443. [bug]           When loading a master file failed because of an
--                      unrecognized RR type name, the error message
--                      did not include the file name and line number.
--                      [RT #285]
--
-- 442. [bug]           TSIG signed messages that did not match any view
--                      crashed the server. [RT #290]
--
-- 441. [bug]           Nodes obscured by a DNAME were inaccessible even
--                      when DNS_DBFIND_GLUEOK was set.
--
-- 440. [func]          New function dns_zone_forwardupdate().
--
-- 439. [func]          New function dns_request_createraw().
--
-- 438. [func]          New function dns_message_getrawmessage().
--
-- 437. [func]          Log NOTIFY activity to the notify channel.
--
-- 436. [bug]           If recvmsg() returned EHOSTUNREACH or ENETUNREACH,
--                      which sometimes happens on Linux, named would enter
--                      a busy loop.  Also, unexpected socket errors were
--                      not logged at a high enough logging level to be
--                      useful in diagnosing this situation. [RT #275]
--
-- 435. [bug]           dns_zone_dump() overwrote existing zone files
--                      rather than writing to a temporary file and
--                      renaming.  This could lead to empty or partial
--                      zone files being left around in certain error
--                      conditions involving the initial transfer of a
--                      slave zone, interfering with subsequent server
--                      startup. [RT #282]
--
-- 434. [func]          New function isc_file_isabsolute().
--
-- 433. [func]          isc_base64_decodestring() now accepts newlines
--                      within the base64 data.  This makes it possible
--                      to break up the key data in a "trusted-keys"
--                      statement into multiple lines. [RT #284]
--
-- 432. [func]          Added refresh/retry jitter.  The actual refresh/
--                      retry time is now a random value between 75% and
--                      100% of the configured value.
--
-- 431. [func]          Log at ISC_LOG_INFO when a zone is successfully
--                      loaded.
--
-- 430. [bug]           Rewrote the lightweight resolver client management
--                      code to handle shutdown correctly and general
--                      cleanup.
--
-- 429. [bug]           The space reserved for a TSIG record in a response
--                      was 2 bytes too short, leading to message
--                      generation failures.
--
-- 428. [bug]           rbtdb.c:find_closest_nxt() erroneously returned
--                      DNS_R_BADDB for nodes which had neither NXT nor SIG NXT
--                      (e.g. glue).  This could cause SERVFAILs when
--                      generating negative responses in a secure zone.
--
-- 427. [bug]           Avoid going into an infinite loop when the validator
--                      gets a negative response to a key query where the
--                      records are signed by the missing key.
--
-- 426. [bug]           Attempting to generate an oversized RSA key could
--                      cause dnssec-keygen to dump core.
--
-- 425. [bug]           Warn about the auth-nxdomain default value change
--                      if there is no auth-nxdomain statement in the
--                      config file. [RT #287]
--
-- 424. [bug]           notify_createmessage() could trigger an assertion
--                      failure when creating the notify message failed,
--                      e.g. due to corrupt zones with multiple SOA records.
--                      [RT #279]
--
-- 423. [bug]           When responding to a recursive query, errors that occur
--                      after following a CNAME should cause the query to fail.
--                      [RT #274]
--
-- 422. [func]          get rid of isc_random_t, and make isc_random_get()
--                      and isc_random_jitter() use rand() internally
--                      instead of local state.  Note that isc_random_*()
--                      functions are only for weak, non-critical "randomness"
--                      such as timing jitter and such.
--
-- 421. [bug]           nslookup would exit when given a blank line as input.
--
-- 420. [bug]           nslookup failed to implement the "exit" command.
--
-- 419. [bug]           The certificate type PKIX was misspelled as SKIX.
--
-- 418. [bug]           At debug levels >= 10, getting an unexpected
--                      socket receive error would crash the server
--                      while trying to log the error message.
--
-- 417. [func]          Add isc_app_block() and isc_app_unblock(), which
--                      allow an application to handle signals while
--                      blocking.
--
-- 416. [bug]           Slave zones with no master file tried to use a
--                      NULL pointer for a journal file name when they
--                      received an IXFR. [RT #273]
--
-- 415. [bug]           The logging code leaked file descriptors.
--
-- 414. [bug]           Server did not shut down until all incoming zone
--                      transfers were finished.
--
-- 413. [bug]           Notify could attempt to use the zone database after
--                      it had been unloaded. [RT#267]
--
-- 412. [bug]           named -v didn't print the version.
--
-- 411. [bug]           A typo in the HS A code caused an assertion failure.
--
-- 410. [bug]           lwres_gethostbyname() and company set lwres_h_errno
--                      to a random value on success.
--
-- 409. [bug]           If named was shut down early in the startup
--                      process, ns_omapi_shutdown() would attempt to lock
--                      an uninitialized mutex. [RT #262]
--
-- 408. [bug]           stub zones could leak memory and reference counts if
--                      all the masters were unreachable.
--
-- 407. [bug]           isc_rwlock_lock() would needlessly block
--                      readers when it reached the read quota even
--                      if no writers were waiting.
--
-- 406. [bug]           Log messages were occasionally lost or corrupted
--                      due to a race condition in isc_log_doit().
--
-- 405. [func]          Add support for selective forwarding (forward zones)
--
-- 404. [bug]           The request library didn't completely work with IPv6.
--
-- 403. [bug]           "host" did not use the search list.
--
-- 402. [bug]           Treat undefined acls as errors, rather than
--                      warning and then later throwing an assertion.
--                      [RT #252]
--
-- 401. [func]          Added simple database API.
--
-- 400. [bug]           SIG(0) signing and verifying was done incorrectly.
--                      [RT #249]
--
-- 399. [bug]           When reloading the server with a config file
--                      containing a syntax error, it could catch an
--                      assertion failure trying to perform zone
--                      maintenance on, or sending notifies from,
--                      tentatively created zones whose views were
--                      never fully configured and lacked an address
--                      database and request manager.
--
-- 398. [bug]           "dig" sometimes caught an assertion failure when
--                      using TSIG, depending on the key length.
--
-- 397. [func]          Added utility functions dns_view_gettsig() and
--                      dns_view_getpeertsig().
--
-- 396. [doc]           There is now a man page for "nsupdate"
--                      in doc/man/bin/nsupdate.8.
--
-- 395. [bug]           nslookup printed incorrect RR type mnemonics
--                      for RRs of type >= 21 [RT #237].
--
-- 394. [bug]           Current name was not propagated via $INCLUDE.
--
-- 393. [func]          Initial answer while loading (awl) support.
--                      Entry points: dns_master_loadfileinc(),
--                      dns_master_loadstreaminc(), dns_master_loadbufferinc().
--                      Note: calls to dns_master_load*inc() should be rate
--                      be rate limited so as to not use up all file
--                      descriptors.
--
-- 392. [func]          Add ISC_R_FAMILYNOSUPPORT.  Returned when OS does
--                      not support the given address family requested.
--
-- 391. [clarity]       ISC_R_FAMILY -> ISC_R_FAMILYMISMATCH.
--
-- 390. [func]          The function dns_zone_setdbtype() now takes
--                      an argc/argv style vector of words and sets
--                      both the zone database type and its arguments,
--                      making the functions dns_zone_adddbarg()
--                      and dns_zone_cleardbargs() unnecessary.
--
-- 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].
--
-- 388. [func]          dig and host can now do reverse ipv6 lookups.
--
-- 387. [func]          Add dns_byaddr_createptrname(), which converts
--                      an address into the name used by a PTR query.
--
-- 386. [bug]           Missing strdup() of ACL name caused random
--                      ACL matching failures [RT #228].
--
-- 385. [cleanup]       Removed functions dns_zone_equal(), dns_zone_print(),
--                      and dns_zt_print().
--
-- 384. [bug]           nsupdate was incorrectly limiting TTLs to 65535 instead
--                      of 2147483647.
--
-- 383. [func]          When writing a master file, print the SOA and NS
--                      records (and their SIGs) before other records.
--
-- 382. [bug]           named -u failed on many Linux systems where the
--                      libc provided kernel headers do not match
--                      the current kernel.
--
-- 381. [bug]           Check for IPV6_RECVPKTINFO and use it instead of
--                      IPV6_PKTINFO if found. [RT #229]
--
-- 380. [bug]           nsupdate didn't work with IPv6.
--
-- 379. [func]          New library function isc_sockaddr_anyofpf().
--
-- 378. [func]          named and lwresd will log the command line arguments
--                      they were started with in the "starting ..." message.
--
-- 377. [bug]           When additional data lookups were refused due to
--                      "allow-query", the databases were still being
--                      attached causing reference leaks.
--
-- 376. [bug]           The server should always use good entropy when
--                      performing cryptographic functions needing entropy.
--
-- 375. [bug]           Per-zone "allow-query" did not properly override the
--                      view/global one for CNAME targets and additional
--                      data [RT #220].
--
-- 374. [bug]           SOA in authoritative negative responses had wrong TTL.
--
-- 373. [func]          nslookup is now installed by "make install".
--
-- 372. [bug]           Deal with Microsoft DNS servers appending two bytes of
--                      garbage to zone transfer requests.
--
-- 371. [bug]           At high debug levels, doing an outgoing zone transfer
--                      of a very large RRset could cause an assertion failure
--                      during logging.
--
-- 370. [bug]           The error messages for roll-forward failures were
--                      overly terse.
--
-- 369. [func]          Support new named.conf options, view and zone
--                      statements:
--
--                              max-retry-time, min-retry-time,
--                              max-refresh-time, min-refresh-time.
--
-- 368. [func]          Restructure the internal ".bind" view so that more
--                      zones can be added to it.
--
-- 367. [bug]           Allow proper selection of server on nslookup command
--                      line.
--
-- 366. [func]          Allow use of '-' batch file in dig for stdin.
--
-- 365. [bug]           nsupdate -k leaked memory.
--
-- 364. [func]          Added additional-from-{cache,auth}
--
-- 363. [placeholder]
--
-- 362. [bug]           rndc no longer aborts if the configuration file is
--                      missing an options statement. [RT #209]
--
-- 361. [func]          When the RBT find or chain functions set the name and
--                      origin for a node that stores the root label
--                      the name is now set to an empty name, instead of ".",
--                      to simplify later use of the name and origin by
--                      dns_name_concatenate(), dns_name_totext() or
--                      dns_name_format().
--
-- 360. [func]          dns_name_totext() and dns_name_format() now allow
--                      an empty name to be passed, which is formatted as "@".
--
-- 359. [bug]           dnssec-signzone occasionally signed glue records.
--
-- 358. [cleanup]       Rename the intermediate files used by the dnssec
--                      programs.
--
-- 357. [bug]           The zone file parser crashed if the argument
--                      to $INCLUDE was a quoted string.
--
-- 356. [cleanup]       isc_task_send no longer requires event->sender to
--                      be non-null.
--
-- 355. [func]          Added isc_dir_createunique(), similar to mkdtemp().
--
-- 354. [doc]           Man pages for the dnssec tools are now included in
--                      the distribution, in doc/man/dnssec.
--
-- 353. [bug]           double increment in lwres/gethost.c:copytobuf().
--                      [RT# 187]
--
-- 352. [bug]           Race condition in dns_client_t startup could cause
--                      an assertion failure.
--
-- 351. [bug]           Constructing a response with rcode SERVFAIL to a TSIG
--                      signed query could crash the server.
--
-- 350. [bug]           Also-notify lists specified in the global options
--                      block were not correctly reference counted, causing
--                      a memory leak.
--
-- 349. [bug]           Processing a query with the CD bit set now works
--                      as expected.
--
-- 348. [func]          New boolean named.conf options 'additional-from-auth'
--                      and 'additional-from-cache' now supported in view and
--                      global options statement.
--
-- 347. [bug]           Don't crash if an argument is left off options in dig.
--
-- 346. [placeholder]
--
-- 345. [bug]           Large-scale changes/cleanups to dig:
--                      * Significantly improve structure handling
--                      * Don't pre-load entire batch files
--                      * Add name/rr counting/limiting
--                      * Fix SIGINT handling
--                      * Shorten timeouts to match v8's behavior
--
-- 344. [bug]           When shutting down, lwresd sometimes tried
--                      to shut down its client tasks twice,
--                      triggering an assertion.
--
-- 343. [bug]           Although zone maintenance SOA queries and
--                      notify requests were signed with TSIG keys
--                      when configured for the server in case,
--                      the TSIG was not verified on the response.
--
-- 342. [bug]           The wrong name was being passed to
--                      dns_name_dup() when generating a TSIG
--                      key using TKEY.
--
-- 341. [func]          Support 'key' clause in named.conf zone masters
--                      statement to allow authentication via TSIG keys:
--
--                              masters {
--                                      10.0.0.1 port 5353 key "foo";
--                                      10.0.0.2 ;
--                              };
--
-- 340. [bug]           The top-level COPYRIGHT file was missing from
--                      the distribution.
--
-- 339. [bug]           DNSSEC validation of the response to an ANY
--                      query at a name with a CNAME RR in a secure
--                      zone triggered an assertion failure.
--
-- 338. [bug]           lwresd logged to syslog as named, not lwresd.
--
-- 337. [bug]           "dig" did not recognize "nsap-ptr" as an RR type
--                      on the command line.
--
-- 336. [bug]           "dig -f" used 64 k of memory for each line in
--                      the file.  It now uses much less, though still
--                      proportionally to the file size.
--
-- 335. [bug]           named would occasionally attempt recursion when
--                      it was disallowed or undesired.
--
-- 334. [func]          Added hmac-md5 to libisc.
--
-- 333. [bug]           The resolver incorrectly accepted referrals to
--                      domains that were not parents of the query name,
--                      causing assertion failures.
--
-- 332. [func]          New function dns_name_reset().
--
-- 331. [bug]           Only log "recursion denied" if RD is set. [RT #178]
--
-- 330. [bug]           Many debugging messages were partially formatted
--                      even when debugging was turned off, causing a
--                      significant decrease in query performance.
--
-- 329. [func]          omapi_auth_register() now takes a size_t argument for
--                      the length of a key's secret data.  Previously
--                      OMAPI only stored secrets up to the first NUL byte.
--
-- 328. [func]          Added isc_base64_decodestring().
--
-- 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
--                      required and must have at least one item in it.
--                      A "not supported" warning is now issued if a 'unix'
--                      control channel is defined.
--
-- 325. [bug]           isc_lex_gettoken was processing octal strings when
--                      ISC_LEXOPT_CNUMBER was not set.
--
-- 324. [func]          In the resolver, turn EDNS0 off if there is no
--                      response after a number of retransmissions.
--                      This is to allow queries some chance of succeeding
--                      even if all the authoritative servers of a zone
--                      silently discard EDNS0 requests instead of
--                      sending an error response like they ought to.
--
-- 323. [bug]           dns_rbt_findname() did not ignore empty rbt nodes.
--                      Because of this, servers authoritative for a parent
--                      and grandchild zone but not authoritative for the
--                      intervening child zone did not correctly issue
--                      referrals to the servers of the child zone.
--
-- 322. [bug]           Queries for KEY RRs are now sent to the parent
--                      server before the authoritative one, making
--                      DNSSEC insecurity proofs work in many cases
--                      where they previously didn't.
--
-- 321. [bug]           When synthesizing a CNAME RR for a DNAME
--                      response, query_addcname() failed to initialize
--                      the type and class of the CNAME dns_rdata_t,
--                      causing random failures.
--
-- 320. [func]          Multiple rndc changes: parses an rndc.conf file,
--                      uses authentication to talk to named, command
--                      line syntax changed.  This will all be described
--                      in the ARM.
--
-- 319. [func]          The named.conf "controls" statement is now used
--                      to configure the OMAPI command channel.
--
-- 318. [func]          dns_c_ndcctx_destroy() could never return anything
--                      except ISC_R_SUCCESS; made it have void return instead.
--
-- 317. [func]          Use callbacks from libomapi to determine if a
--                      new connection is valid, and if a key requested
--                      to be used with that connection is valid.
--
-- 316. [bug]           Generate a warning if we detect an unexpected <eof>
--                      but treat as <eol><eof>.
--
-- 315. [bug]           Handle non-empty blanks lines. [RT #163]
--
-- 314. [func]          The named.conf controls statement can now have
--                      more than one key specified for the inet clause.
--
-- 313. [bug]           When parsing resolv.conf, don't terminate on an
--                      error.  Instead, parse as much as possible, but
--                      still return an error if one was found.
--
-- 312. [bug]           Increase the number of allowed elements in the
--                      resolv.conf search path from 6 to 8.  If there
--                      are more than this, ignore the remainder rather
--                      than returning a failure in lwres_conf_parse.
--
-- 311. [bug]           lwres_conf_parse failed when the first line of
--                      resolv.conf was empty or a comment.
--
-- 310. [func]          Changes to named.conf "controls" statement (inet
--                      subtype only)
--
--                        - support "keys" clause
--
--                              controls {
--                                 inet * port 1024
--                                      allow { any; } keys { "foo"; }
--                              }
--
--                        - allow "port xxx" to be left out of statement,
--                          in which case it defaults to omapi's default port
--                          of 953.
--
-- 309. [bug]           When sending a referral, the server did not look
--                      for name server addresses as glue in the zone
--                      holding the NS RRset in the case where this zone
--                      was not the same as the one where it looked for
--                      name server addresses as authoritative data.
--
-- 308. [bug]           Treat a SOA record not at top of zone as an error
--                      when loading a zone. [RT #154]
--
-- 307. [bug]           When canceling a query, the resolver didn't check for
--                      isc_socket_sendto() calls that did not yet have their
--                      completion events posted, so it could (rarely) end up
--                      destroying the query context and then want to use
--                      it again when the send event posted, triggering an
--                      assertion as it tried to cancel an already-canceled
--                      query.  [RT #77]
--
-- 306. [bug]           Reading HMAC-MD5 private key files didn't work.
--
-- 305. [bug]           When reloading the server with a config file
--                      containing a syntax error, it could catch an
--                      assertion failure trying to perform zone
--                      maintenance on tentatively created zones whose
--                      views were never fully configured and lacked
--                      an address database.
--
-- 304. [bug]           If more than LWRES_CONFMAXNAMESERVERS servers
--                      are listed in resolv.conf, silently ignore them
--                      instead of returning failure.
--
-- 303. [bug]           Add additional sanity checks to differentiate a AXFR
--                      response vs a IXFR response. [RT #157]
--
-- 302. [bug]           In dig, host, and nslookup, MXNAME should be large
--                      enough to hold any legal domain name in presentation
--                      format + terminating NULL.
--
-- 301. [bug]           Uninitialized pointer in host:printmessage(). [RT #159]
--
-- 300. [bug]           Using both <isc/net.h> and <lwres/net.h> didn't work
--                      on platforms lacking IPv6 because each included their
--                      own ipv6 header file for the missing definitions.  Now
--                      each library's ipv6.h defines the wrapper symbol of
--                      the other (ISC_IPV6_H and LWRES_IPV6_H).
--
-- 299. [cleanup]       Get the user and group information before changing the
--                      root directory, so the administrator does not need to
--                      keep a copy of the user and group databases in the
--                      chroot'ed environment.  Suggested by Hakan Olsson.
--
-- 298. [bug]           A mutex deadlock occurred during shutdown of the
--                      interface manager under certain conditions.
--                      Digital Unix systems were the most affected.
--
-- 297. [bug]           Specifying a key name that wasn't fully qualified
--                      in certain parts of the config file could cause
--                      an assertion failure.
--
-- 296. [bug]           "make install" from a separate build directory
--                      failed unless configure had been run in the source
--                      directory, too.
--
-- 295. [bug]           When invoked with type==CNAME and a message
--                      not constructed by dns_message_parse(),
--                      dns_message_findname() failed to find anything
--                      due to checking for attribute bits that are set
--                      only in dns_message_parse().  This caused an
--                      infinite loop when constructing the response to
--                      an ANY query at a CNAME in a secure zone.
--
-- 294. [bug]           If we run out of space in while processing glue
--                      when reading a master file and commit "current name"
--                      reverts to "name_current" instead of staying as
--                      "name_glue".
--
-- 293. [port]          Add support for FreeBSD 4.0 system tests.
--
-- 292. [bug]           Due to problems with the way some operating systems
--                      handle simultaneous listening on IPv4 and IPv6
--                      addresses, the server no longer listens on IPv6
--                      addresses by default.  To revert to the previous
--                      behavior, specify "listen-on-v6 { any; };" in
--                      the config file.
--
-- 291. [func]          Caching servers no longer send outgoing queries
--                      over TCP just because the incoming recursive query
--                      was a TCP one.
--
-- 290. [cleanup]       +twiddle option to dig (for testing only) removed.
--
-- 289. [cleanup]       dig is now installed in $bindir instead of $sbindir.
--                      host is now installed in $bindir.  (Be sure to remove
--                      any $sbindir/dig from a previous release.)
--
-- 288. [func]          rndc is now installed by "make install" into $sbindir.
--
-- 287. [bug]           rndc now works again as "rndc 127.1 reload" (for
--                      only that task).  Parsing its configuration file and
--                      using digital signatures for authentication has been
--                      disabled until named supports the "controls" statement,
--                      post-9.0.0.
--
-- 286. [bug]           On Solaris 2, when named inherited a signal state
--                      where SIGHUP had the SIG_IGN action, SIGHUP would
--                      be ignored rather than causing the server to reload
--                      its configuration.
--
-- 285. [bug]           A change made to the dst API for beta4 inadvertently
--                      broke OMAPI's creation of a dst key from an incoming
--                      message, causing an assertion to be triggered.  Fixed.
--
-- 284. [func]          The DNSSEC key generation and signing tools now
--                      generate randomness from keyboard input on systems
--                      that lack /dev/random.
--
-- 283. [cleanup]       The 'lwresd' program is now a link to 'named'.
--
-- 282. [bug]           The lexer now returns ISC_R_RANGE if parsed integer is
--                      too big for an unsigned long.
--
-- 281. [bug]           Fixed list of recognized config file category names.
--
-- 280. [func]          Add isc-config.sh, which can be used to more
--                      easily build applications that link with
--                      our libraries.
--
-- 279. [bug]           Private omapi function symbols shared between
--                      two or more files in libomapi.a were not namespace
--                      protected using the ISC convention of starting with
--                      the library name and two underscores ("omapi__"...)
--
-- 278. [bug]           bin/named/logconf.c:category_fromconf() didn't take
--                      note of when isc_log_categorybyname() wasn't able
--                      to find the category name and would then apply the
--                      channel list of the unknown category to all categories.
--
-- 277. [bug]           isc_log_categorybyname() and isc_log_modulebyname()
--                      would fail to find the first member of any category
--                      or module array apart from the internal defaults.
--                      Thus, for example, the "notify" category was improperly
--                      configured by named.
--
-- 276. [bug]           dig now supports maximum sized TCP messages.
--
-- 275. [bug]           The definition of lwres_gai_strerror() was missing
--                      the lwres_ prefix.
--
-- 274. [bug]           TSIG AXFR verify failed when talking to a BIND 8
--                      server.
--
-- 273. [func]          The default for the 'transfer-format' option is
--                      now 'many-answers'.  This will break zone transfers
--                      to BIND 4.9.5 and older unless there is an explicit
--                      'one-answer' configuration.
--
-- 272. [bug]           The sending of large TCP responses was canceled
--                      in mid-transmission due to a race condition
--                      caused by the failure to set the client object's
--                      "newstate" variable correctly when transitioning
--                      to the "working" state.
--
-- 271. [func]          Attempt to probe the number of cpus in named
--                      if unspecified rather than defaulting to 1.
--
-- 270. [func]          Allow maximum sized TCP answers.
--
-- 269. [bug]           Failed DNSSEC validations could cause an assertion
--                      failure by causing clone_results() to be called with
--                      with hevent->node == NULL.
--
-- 268. [doc]           A plain text version of the Administrator
--                      Reference Manual is now included in the distribution,
--                      as doc/arm/Bv9ARM.txt.
--
-- 267. [func]          Nsupdate is now provided in the distribution.
--
-- 266. [bug]           zone.c:save_nsrrset() node was not initialized.
--
-- 265. [bug]           dns_request_create() now works for TCP.
--
-- 264. [func]          Dispatch can not take TCP sockets in connecting
--                      state.  Set DNS_DISPATCHATTR_CONNECTED when calling
--                      dns_dispatch_createtcp() for connected TCP sockets
--                      or call dns_dispatch_starttcp() when the socket is
--                      connected.
--
-- 263. [func]          New logging channel type 'stderr'
--
--                              channel some-name {
--                                      stderr;
--                                      severity error;
--                              }
--
-- 262. [bug]           'master' was not initialized in zone.c:stub_callback().
--
-- 261. [func]          Add dns_zone_markdirty().
--
-- 260. [bug]           Running named as a non-root user failed on Linux
--                      kernels new enough to support retaining capabilities
--                      after setuid().
--
-- 259. [func]          New random-device and random-seed-file statements
--                      for global options block of named.conf. Both accept
--                      a single string argument.
--
-- 258. [bug]           Fixed printing of lwres_addr_t.address field.
--
-- 257. [bug]           The server detached the last zone manager reference
--                      too early, while it could still be in use by queries.
--                      This manifested itself as assertion failures during the
--                      shutdown process for busy name servers. [RT #133]
--
-- 256. [func]          isc_ratelimiter_t now has attach/detach semantics, and
--                      isc_ratelimiter_shutdown guarantees that the rate
--                      limiter is detached from its task.
--
-- 255. [func]          New function dns_zonemgr_attach().
--
-- 254. [bug]           Suppress "query denied" messages on additional data
--                      lookups.
--
--      --- 9.0.0b4 released ---
--
-- 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.
--                      It also aborted when an unrecognized keyword was seen,
--                      now it silently ignores the entire line.
--
-- 251. [bug]           lwresd caught an assertion failure on startup.
--
-- 250. [bug]           fixed handling of size+unit when value would be too
--                      large for internal representation.
--
-- 249. [cleanup]       max-cache-size config option now takes a size-spec
--                      like 'datasize', except 'default' is not allowed.
--
-- 248. [bug]           global lame-ttl option was not being printed when
--                      config structures were written out.
--
-- 247. [cleanup]       Rename cache-size config option to max-cache-size.
--
-- 246. [func]          Rename global option cachesize to cache-size and
--                      add corresponding option to view statement.
--
-- 245. [bug]           If an uncompressed name will take more than 255
--                      bytes and the buffer is sufficiently long,
--                      dns_name_fromwire should return DNS_R_FORMERR,
--                      not ISC_R_NOSPACE.  This bug caused cause the
--                      server to catch an assertion failure when it
--                      received a query for a name longer than 255
--                      bytes.
--
-- 244. [bug]           empty named.conf file and empty options statement are
--                      now parsed properly.
--
-- 243. [func]          new cachesize option for named.conf
--
-- 242. [cleanup]       fixed incorrect warning about auth-nxdomain usage.
--
-- 241. [cleanup]       nscount and soacount have been removed from the
--                      dns_master_*() argument lists.
--
-- 240. [func]          databases now come in three flavours: zone, cache
--                      and stub.
--
-- 239. [func]          If ISC_MEM_DEBUG is enabled, the variable
--                      isc_mem_debugging controls whether messages
--                      are printed or not.
--
-- 238. [cleanup]       A few more compilation warnings have been quieted:
--                      + missing sigwait prototype on BSD/OS 4.0/4.0.1.
--                      + PTHREAD_ONCE_INIT unbraced initializer warnings on
--                              Solaris 2.8.
--                      + IN6ADDR_ANY_INIT unbraced initializer warnings on
--                              BSD/OS 4.*, Linux and Solaris 2.8.
--
-- 237. [bug]           If connect() returned ENOBUFS when the resolver was
--                      initiating a TCP query, the socket didn't get
--                      destroyed, and the server did not shut down cleanly.
--
-- 236. [func]          Added new listen-on-v6 config file statement.
--
-- 235. [func]          Consider it a config file error if a listen-on
--                      statement has an IPv6 address in it, or a
--                      listen-on-v6 statement has an IPv4 address in it.
--
-- 234. [bug]           Allow a trusted-key's first field (domain-name) be
--                      either a quoted or an unquoted string, instead of
--                      requiring a quoted string.
--
-- 233. [cleanup]       Convert all config structure integer values to unsigned
--                      integer (isc_uint32_t) to match grammar.
--
-- 232. [bug]           Allow slave zones to not have a file.
--
-- 231. [func]          Support new 'port' clause in config file options
--                      section. Causes 'listen-on', 'masters' and
--                      'also-notify' statements to use its value instead of
--                      default (53).
--
-- 230. [func]          Replace the dst sign/verify API with a cleaner one.
--
-- 229. [func]          Support config file sig-validity-interval statement
--                      in options, views and zone statements (master
--                      zones only).
--
-- 228. [cleanup]       Logging messages in config module stripped of
--                      trailing period.
--
-- 227. [cleanup]       The enumerated identifiers dns_rdataclass_*,
--                      dns_rcode_*, dns_opcode_*, and dns_trust_* are
--                      also now cast to their appropriate types, as with
--                      dns_rdatatype_* in item number 225 below.
--
-- 226. [func]          dns_name_totext() now always prints the root name as
--                      '.', even when omit_final_dot is true.
--
-- 225. [cleanup]       The enumerated dns_rdatatype_* identifiers are now
--                      cast to dns_rdatatype_t via macros of their same name
--                      so that they are of the proper integral type wherever
--                      a dns_rdatatype_t is needed.
--
-- 224. [cleanup]       The entire project builds cleanly with gcc's
--                      -Wcast-qual and -Wwrite-strings warnings enabled,
--                      which is now the default when using gcc.  (Warnings
--                      from confparser.c, because of yacc's code, are
--                      unfortunately to be expected.)
--
-- 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.
--
-- 222. [bug]           The global 'also-notify' option was ignored.
--
-- 221. [bug]           An uninitialized variable was sometimes passed to
--                      dns_rdata_freestruct() when loading a zone, causing
--                      an assertion failure.
--
-- 220. [cleanup]       Set the default outgoing port in the view, and
--                      set it in sockaddrs returned from the ADB.
--                      [31-May-2000 explorer]
--
-- 219. [bug]           Signed truncated messages more correctly follow
--                      the respective specs.
--
-- 218. [func]          When an rdataset is signed, its ttl is normalized
--                      based on the signature validity period.
--
-- 217. [func]          Also-notify and trusted-keys can now be used in
--                      the 'view' statement.
--
-- 216. [func]          The 'max-cache-ttl' and 'max-ncache-ttl' options
--                      now work.
--
-- 215. [bug]           Failures at certain points in request processing
--                      could cause the assertion INSIST(client->lockview
--                      == NULL) to be triggered.
--
-- 214. [func]          New public function isc_netaddr_format(), for
--                      formatting network addresses in log messages.
--
-- 213. [bug]           Don't leak memory when reloading the zone if
--                      an update-policy clause was present in the old zone.
--
-- 212. [func]          Added dns_message_get/settsigkey, to make TSIG
--                      key management reasonable.
--
-- 211. [func]          The 'key' and 'server' statements can now occur
--                      inside 'view' statements.
--
-- 210. [bug]           The 'allow-transfer' option was ignored for slave
--                      zones, and the 'transfers-per-ns' option was
--                      was ignored for all zones.
--
-- 209. [cleanup]       Upgraded openssl files to new version 0.9.5a
--
-- 208. [func]          Added ISC_OFFSET_MAXIMUM for the maximum value
--                      of an isc_offset_t.
--
-- 207. [func]          The dnssec tools properly use the logging subsystem.
--
-- 206. [cleanup]       dst now stores the key name as a dns_name_t, not
--                      a char *.
--
-- 205. [cleanup]       On IRIX, turn off the mostly harmless warnings 1692
--                      ("prototyped function redeclared without prototype")
--                      and 1552 ("variable ... set but not used") when
--                      compiling in the lib/dns/sec/{dnssafe,openssl}
--                      directories, which contain code imported from outside
--                      sources.
--
-- 204. [cleanup]       On HP/UX, pass +vnocompatwarnings to the linker
--                      to quiet the warnings that "The linked output may not
--                      run on a PA 1.x system."
--
-- 203. [func]          notify and zone soa queries are now tsig signed when
--                      appropriate.
--
-- 202. [func]          isc_lex_getsourceline() changed from returning int
--                      to returning unsigned long, the type of its underlying
--                      counter.
--
-- 201. [cleanup]       Removed the test/sdig program, it has been
--                      replaced by bin/dig/dig.
--
--      --- 9.0.0b3 released ---
--
-- 200. [bug]           Failures in sending query responses to clients
--                      (e.g., running out of network buffers) were
--                      not logged.
--
-- 199. [bug]           isc_heap_delete() sometimes violated the heap
--                      invariant, causing timer events not to be posted
--                      when due.
--
-- 198. [func]          Dispatch managers hold memory pools which
--                      any managed dispatcher may use.  This allows
--                      us to avoid dipping into the memory context for
--                      most allocations. [19-May-2000 explorer]
--
-- 197. [bug]           When an incoming AXFR or IXFR completes, the
--                      zone's internal state is refreshed from the
--                      SOA data. [19-May-2000 explorer]
--
-- 196. [func]          Dispatchers can be shared easily between views
--                      and/or interfaces. [19-May-2000 explorer]
--
-- 195. [bug]           Including the NXT record of the root domain
--                      in a negative response caused an assertion
--                      failure.
--
-- 194. [doc]           The PDF version of the Administrator's Reference
--                      Manual is no longer included in the ISC BIND9
--                      distribution.
--
-- 193. [func]          changed dst_key_free() prototype.
--
-- 192. [bug]           Zone configuration validation is now done at end
--                      of config file parsing, and before loading
--                      callbacks.
--
-- 191. [func]          Patched to compile on UnixWare 7.x.  This platform
--                      is not directly supported by the ISC.
--
-- 190. [cleanup]       The DNSSEC tools have been moved to a separate
--                      directory dnssec/ and given the following new,
--                      more descriptive names:
--
--                            dnssec-keygen
--                            dnssec-signzone
--                            dnssec-signkey
--                            dnssec-makekeyset
--
--                      Their command line arguments have also been changed to
--                      be more consistent.  dnssec-keygen now prints the
--                      name of the generated key files (sans extension)
--                      on standard output to simplify its use in automated
--                      scripts.
--
-- 189. [func]          isc_time_secondsastimet(), a new function, will ensure
--                      that the number of seconds in an isc_time_t does not
--                      exceed the range of a time_t, or return ISC_R_RANGE.
--                      Similarly, isc_time_now(), isc_time_nowplusinterval(),
--                      isc_time_add() and isc_time_subtract() now check the
--                      range for overflow/underflow.  In the case of
--                      isc_time_subtract, this changed a calling requirement
--                      (ie, something that could generate an assertion)
--                      into merely a condition that returns an error result.
--                      isc_time_add() and isc_time_subtract() were void-
--                      valued before but now return isc_result_t.
--
-- 188. [func]          Log a warning message when an incoming zone transfer
--                      contains out-of-zone data.
--
-- 187. [func]          isc_ratelimiter_enqueue() has an additional argument
--                      'task'.
--
-- 186. [func]          dns_request_getresponse() has an additional argument
--                      'preserve_order'.
--
-- 185. [bug]           Fixed up handling of ISC_MEMCLUSTER_LEGACY.  Several
--                      public functions did not have an isc__ prefix, and
--                      referred to functions that had previously been
--                      renamed.
--
-- 184. [cleanup]       Variables/functions which began with two leading
--                      underscores were made to conform to the ANSI/ISO
--                      standard, which says that such names are reserved.
--
-- 183. [func]          ISC_LOG_PRINTTAG option for log channels.  Useful
--                      for logging the program name or other identifier.
--
-- 182. [cleanup]       New command-line parameters for dnssec tools
--
-- 181. [func]          Added dst_key_buildfilename and dst_key_parsefilename
--
-- 180. [func]          New isc_result_t ISC_R_RANGE.  Supersedes DNS_R_RANGE.
--
-- 179. [func]          options named.conf statement *must* now come
--                      before any zone or view statements.
--
-- 178. [func]          Post-load of named.conf check verifies a slave zone
--                      has non-empty list of masters defined.
--
-- 177. [func]          New per-zone boolean:
--
--                              enable-zone yes | no ;
--
--                      intended to let a zone be disabled without having
--                      to comment out the entire zone statement.
--
-- 176. [func]          New global and per-view option:
--
--                              max-cache-ttl number
--
-- 175. [func]          New global and per-view option:
--
--                              additional-data internal | minimal | maximal;
--
-- 174. [func]          New public function isc_sockaddr_format(), for
--                      formatting socket addresses in log messages.
--
-- 173. [func]          Keep a queue of zones waiting for zone transfer
--                      quota so that a new transfer can be dispatched
--                      immediately whenever quota becomes available.
--
-- 172. [bug]           $TTL directive was sometimes missing from dumped
--                      master files because totext_ctx_init() failed to
--                      initialize ctx->current_ttl_valid.
--
-- 171. [cleanup]       On NetBSD systems, the mit-pthreads or
--                      unproven-pthreads library is now always used
--                      unless --with-ptl2 is explicitly specified on
--                      the configure command line.  The
--                      --with-mit-pthreads option is no longer needed
--                      and has been removed.
--
-- 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().
--
--                      Remove dns_zone_setadb(), dns_zone_setresolver(),
--                      dns_zone_setrequestmgr() these should now be found
--                      via the view.
--
-- 169. [func]          ratelimiter can now process N events per interval.
--
-- 168. [bug]           include statements in named.conf caused syntax errors
--                      due to not consuming the semicolon ending the include
--                      statement before switching input streams.
--
-- 167. [bug]           Make lack of masters for a slave zone a soft error.
--
-- 166. [bug]           Keygen was overwriting existing keys if key_id
--                      conflicted, now it will retry, and non-null keys
--                      with key_id == 0 are not generated anymore.  Key
--                      was not able to generate NOAUTHCONF DSA key,
--                      increased RSA key size to 2048 bits.
--
-- 165. [cleanup]       Silence "end-of-loop condition not reached" warnings
--                      from Solaris compiler.
--
-- 164. [func]          Added functions isc_stdio_open(), isc_stdio_close(),
--                      isc_stdio_seek(), isc_stdio_read(), isc_stdio_write(),
--                      isc_stdio_flush(), isc_stdio_sync(), isc_file_remove()
--                      to encapsulate nonportable usage of errno and sync.
--
-- 163. [func]          Added result codes ISC_R_FILENOTFOUND and
--                      ISC_R_FILEEXISTS.
--
-- 162. [bug]           Ensure proper range for arguments to ctype.h functions.
--
-- 161. [cleanup]       error in yyparse prototype that only HPUX caught.
--
-- 160. [cleanup]       getnet*() are not going to be implemented at this
--                      stage.
--
-- 159. [func]          Redefinition of config file elements is now an
--                      error (instead of a warning).
--
-- 158. [bug]           Log channel and category list copy routines
--                      weren't assigning properly to output parameter.
--
-- 157. [port]          Fix missing prototype for getopt().
--
-- 156. [func]          Support new 'database' statement in zone.
--
--                              database "quoted-string";
--
-- 155. [bug]           ns_notify_start() was not detaching the found zone.
--
-- 154. [func]          The signer now logs libdns warnings to stderr even when
--                      not verbose, and in a nicer format.
--
-- 153. [func]          dns_rdata_tostruct() 'mctx' is now optional.  If 'mctx'
--                      is NULL then you need to preserve the 'rdata' until
--                      you have finished using the structure as there may be
--                      references to the associated memory.  If 'mctx' is
--                      non-NULL it is guaranteed that there are no references
--                      to memory associated with 'rdata'.
--
--                      dns_rdata_freestruct() must be called if 'mctx' was
--                      non-NULL and may safely be called if 'mctx' was NULL.
--
-- 152. [bug]           keygen dumped core if domain name argument was omitted
--                      from command line.
--
-- 151. [func]          Support 'disabled' statement in zone config (causes
--                      zone to be parsed and then ignored). Currently must
--                      come after the 'type' clause.
--
-- 150. [func]          Support optional ports in masters and also-notify
--                      statements:
--
--                              masters [ port xxx ] { y.y.y.y [ port zzz ] ; }
--
-- 149. [cleanup]       Removed unused argument 'olist' from
--                      dns_c_view_unsetordering().
--
-- 148. [cleanup]       Stop issuing some warnings about some configuration
--                      file statements that were not implemented, but now are.
--
-- 147. [bug]           Changed yacc union size to be smaller for yaccs that
--                      put yacc-stack on the real stack.
--
-- 146. [cleanup]       More general redundant header file cleanup.  Rather
--                      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 advertised functionality, the
--                      inclusion of the other header file was removed.  See
--                      util/check-includes for how this was tested.
--
-- 145. [cleanup]       Added <isc/lang.h> and ISC_LANG_BEGINDECLS/
--                      ISC_LANG_ENDDECLS to header files that had function
--                      prototypes, and removed it from those that did not.
--
-- 144. [cleanup]       libdns header files too numerous to name were made
--                      to conform to the same style for multiple inclusion
--                      protection.
--
-- 143. [func]          Added function dns_rdatatype_isknown().
--
-- 142. [cleanup]       <isc/stdtime.h> does not need <time.h> or
--                      <isc/result.h>.
--
-- 141. [bug]           Corrupt requests with multiple questions could
--                      cause an assertion failure.
--
-- 140. [cleanup]       <isc/time.h> does not need <time.h> or <isc/result.h>.
--
-- 139. [cleanup]       <isc/net.h> now includes <isc/types.h> instead of
--                      <isc/int.h> and <isc/result.h>.
--
-- 138. [cleanup]       isc_strtouq moved from str.[ch] to string.[ch] and
--                      renamed isc_string_touint64.  isc_strsep moved from
--                      strsep.c to string.c and renamed isc_string_separate.
--
-- 137. [cleanup]       <isc/commandline.h>, <isc/mem.h>, <isc/print.h>
--                      <isc/serial.h>, <isc/string.h> and <isc/offset.h>
--                      made to conform to the same style for multiple
--                      inclusion protection.
--
-- 136. [cleanup]       <isc/commandline.h>, <isc/interfaceiter.h>,
--                      <isc/net.h> and Win32's <isc/thread.h> needed
--                      ISC_LANG_BEGINDECLS/ISC_LANG_ENDDECLS.
--
-- 135. [cleanup]       Win32's <isc/condition.h> did not need <isc/result.h>
--                      or <isc/boolean.h>, now uses <isc/types.h> in place
--                      of <isc/time.h>, and needed ISC_LANG_BEGINDECLS
--                      and ISC_LANG_ENDDECLS.
--
-- 134. [cleanup]       <isc/dir.h> does not need <limits.h>.
--
-- 133. [cleanup]       <isc/ipv6.h> needs <isc/platform.h>.
--
-- 132. [cleanup]       <isc/app.h> does not need <isc/task.h>, but does
--                      need <isc/eventclass.h>.
--
-- 131. [cleanup]       <isc/mutex.h> and <isc/util.h> need <isc/result.h>
--                      for ISC_R_* codes used in macros.
--
-- 130. [cleanup]       <isc/condition.h> does not need <pthread.h> or
--                      <isc/boolean.h>, and now includes <isc/types.h>
--                      instead of <isc/time.h>.
--
-- 129. [bug]           The 'default_debug' log channel was not set up when
--                      'category default' was present in the config file
--
-- 128. [cleanup]       <isc/dir.h> had ISC_LANG_BEGINDECLS instead of
--                      ISC_LANG_ENDDECLS at end of header.
--
-- 127. [cleanup]       The contracts for the comparison routines
--                      dns_name_fullcompare(), dns_name_compare(),
--                      dns_name_rdatacompare(), and dns_rdata_compare() now
--                      specify that the order value returned is < 0, 0, or > 0
--                      instead of -1, 0, or 1.
--
-- 126. [cleanup]       <isc/quota.h> and <isc/taskpool.h> need <isc/lang.h>.
--
-- 125. [cleanup]       <isc/eventclass.h>, <isc/ipv6.h>, <isc/magic.h>,
--                      <isc/mutex.h>, <isc/once.h>, <isc/region.h>, and
--                      <isc/resultclass.h> do not need <isc/lang.h>.
--
-- 124. [func]          signer now imports parent's zone key signature
--                      and creates null keys/sets zone status bit for
--                      children when necessary
--
-- 123. [cleanup]       <isc/event.h> does not need <stddef.h>.
--
-- 122. [cleanup]       <isc/task.h> does not need <isc/mem.h> or
--                      <isc/result.h>.
--
-- 121. [cleanup]       <isc/symtab.h> does not need <isc/mem.h> or
--                      <isc/result.h>.  Multiple inclusion protection
--                      symbol fixed from ISC_SYMBOL_H to ISC_SYMTAB_H.
--                      isc_symtab_t moved to <isc/types.h>.
--
-- 120. [cleanup]       <isc/socket.h> does not need <isc/boolean.h>,
--                      <isc/bufferlist.h>, <isc/task.h>, <isc/mem.h> or
--                      <isc/net.h>.
--
-- 119. [cleanup]       structure definitions for generic rdata structures do
--                      not have _generic_ in their names.
--
-- 118. [cleanup]       libdns.a is now namespace-clean, on NetBSD, excepting
--                      YACC crust (yyparse, etc) [2000-apr-27 explorer]
--
-- 117. [cleanup]       libdns.a changes:
--                      dns_zone_clearnotify() and dns_zone_addnotify()
--                      are replaced by dns_zone_setnotifyalso().
--                      dns_zone_clearmasters() and dns_zone_addmaster()
--                      are replaced by dns_zone_setmasters().
--
-- 116. [func]          Added <isc/offset.h> for isc_offset_t (aka off_t
--                      on Unix systems).
--
-- 115. [port]          Shut up the -Wmissing-declarations warning about
--                      <stdio.h>'s __sputaux on BSD/OS pre-4.1.
--
-- 114. [cleanup]       <isc/sockaddr.h> does not need <isc/buffer.h> or
--                      <isc/list.h>.
--
-- 113. [func]          Utility programs dig and host added.
--
-- 112. [cleanup]       <isc/serial.h> does not need <isc/boolean.h>.
--
-- 111. [cleanup]       <isc/rwlock.h> does not need <isc/result.h> or
--                      <isc/mutex.h>.
--
-- 110. [cleanup]       <isc/result.h> does not need <isc/boolean.h> or
--                      <isc/list.h>.
--
-- 109. [bug]           "make depend" did nothing for
--                      bin/tests/{db,mem,sockaddr,tasks,timers}/.
--
-- 108. [cleanup]       DNS_SETBIT/DNS_GETBIT/DNS_CLEARBIT moved from
--                      <dns/types.h> to <dns/bit.h> and renamed to
--                      DNS_BIT_SET/DNS_BIT_GET/DNS_BIT_CLEAR.
--
-- 107. [func]          Add keysigner and keysettool.
--
-- 106. [func]          Allow dnssec verifications to ignore the validity
--                      period.  Used by several of the dnssec tools.
--
-- 105. [doc]           doc/dev/coding.html expanded with other
--                      implicit conventions the developers have used.
--
-- 104. [bug]           Made compress_add and compress_find static to
--                      lib/dns/compress.c.
--
-- 103. [func]          libisc buffer API changes for <isc/buffer.h>:
--                      Added:
--                              isc_buffer_base(b)          (pointer)
--                              isc_buffer_current(b)       (pointer)
--                              isc_buffer_active(b)        (pointer)
--                              isc_buffer_used(b)          (pointer)
--                              isc_buffer_length(b)            (int)
--                              isc_buffer_usedlength(b)        (int)
--                              isc_buffer_consumedlength(b)    (int)
--                              isc_buffer_remaininglength(b)   (int)
--                              isc_buffer_activelength(b)      (int)
--                              isc_buffer_availablelength(b)   (int)
--                      Removed:
--                              ISC_BUFFER_USEDCOUNT(b)
--                              ISC_BUFFER_AVAILABLECOUNT(b)
--                              isc_buffer_type(b)
--                      Changed names:
--                              isc_buffer_used(b, r) ->
--                                      isc_buffer_usedregion(b, r)
--                              isc_buffer_available(b, r) ->
--                                      isc_buffer_available_region(b, r)
--                              isc_buffer_consumed(b, r) ->
--                                      isc_buffer_consumedregion(b, r)
--                              isc_buffer_active(b, r) ->
--                                      isc_buffer_activeregion(b, r)
--                              isc_buffer_remaining(b, r) ->
--                                      isc_buffer_remainingregion(b, r)
--
--                      Buffer types were removed, so the ISC_BUFFERTYPE_*
--                      macros are no more, and the type argument to
--                      isc_buffer_init and isc_buffer_allocate were removed.
--                      isc_buffer_putstr is now void (instead of isc_result_t)
--                      and requires that the caller ensure that there
--                      is enough available buffer space for the string.
--
-- 102. [port]          Correctly detect inet_aton, inet_pton and inet_ptop
--                      on BSD/OS 4.1.
--
-- 101. [cleanup]       Quieted EGCS warnings from lib/isc/print.c.
--
-- 100. [cleanup]       <isc/random.h> does not need <isc/int.h> or
--                      <isc/mutex.h>.  isc_random_t moved to <isc/types.h>.
--
--  99. [cleanup]       Rate limiter now has separate shutdown() and
--                      destroy() functions, and it guarantees that all
--                      queued events are delivered even in the shutdown case.
--
--  98. [cleanup]       <isc/print.h> does not need <stdarg.h> or <stddef.h>
--                      unless ISC_PLATFORM_NEEDVSNPRINTF is defined.
--
--  97. [cleanup]       <isc/ondestroy.h> does not need <stddef.h> or
--                      <isc/event.h>.
--
--  96. [cleanup]       <isc/mutex.h> does not need <isc/result.h>.
--
--  95. [cleanup]       <isc/mutexblock.h> does not need <isc/result.h>.
--
--  94. [cleanup]       Some installed header files did not compile as C++.
--
--  93. [cleanup]       <isc/msgcat.h> does not need <isc/result.h>.
--
--  92. [cleanup]       <isc/mem.h> does not need <stddef.h>, <isc/boolean.h>,
--                      or <isc/result.h>.
--
--  91. [cleanup]       <isc/log.h> does not need <sys/types.h> or
--                      <isc/result.h>.
--
--  90. [cleanup]       Removed unneeded ISC_LANG_BEGINDECLS/ISC_LANG_ENDDECLS
--                      from <named/listenlist.h>.
--
--  89. [cleanup]       <isc/lex.h> does not need <stddef.h>.
--
--  88. [cleanup]       <isc/interfaceiter.h> does not need <isc/result.h> or
--                      <isc/mem.h>.  isc_interface_t and isc_interfaceiter_t
--                      moved to <isc/types.h>.
--
--  87. [cleanup]       <isc/heap.h> does not need <isc/boolean.h>,
--                      <isc/mem.h> or <isc/result.h>.
--
--  86. [cleanup]       isc_bufferlist_t moved from <isc/bufferlist.h> to
--                      <isc/types.h>.
--
--  85. [cleanup]       <isc/bufferlist.h> does not need <isc/buffer.h>,
--                      <isc/list.h>, <isc/mem.h>, <isc/region.h> or
--                      <isc/int.h>.
--
--  84. [func]          allow-query ACL checks now apply to all data
--                      added to a response.
--
--  83. [func]          If the server is authoritative for both a
--                      delegating zone and its (nonsecure) delegatee, and
--                      a query is made for a KEY RR at the top of the
--                      delegatee, then the server will look for a KEY
--                      in the delegator if it is not found in the delegatee.
--
--  82. [cleanup]       <isc/buffer.h> does not need <isc/list.h>.
--
--  81. [cleanup]       <isc/int.h> and <isc/boolean.h> do not need
--                      <isc/lang.h>.
--
--  80. [cleanup]       <isc/print.h> does not need <stdio.h> or <stdlib.h>.
--
--  79. [cleanup]       <dns/callbacks.h> does not need <stdio.h>.
--
--  78. [cleanup]       lwres_conftest renamed to lwresconf_test for
--                      consistency with other *_test programs.
--
--  77. [cleanup]       typedef of isc_time_t and isc_interval_t moved from
--                      <isc/time.h> to <isc/types.h>.
--
--  76. [cleanup]       Rewrote keygen.
--
--  75. [func]          Don't load a zone if its database file is older
--                      than the last time the zone was loaded.
--
--  74. [cleanup]       Removed mktemplate.o and ufile.o from libisc.a,
--                      subsumed by file.o.
--
--  73. [func]          New "file" API in libisc, including new function
--                      isc_file_getmodtime, isc_mktemplate renamed to
--                      isc_file_mktemplate and isc_ufile renamed to
--                      isc_file_openunique.  By no means an exhaustive API,
--                      it is just what's needed for now.
--
--  72. [func]          DNS_RBTFIND_NOPREDECESSOR and DNS_RBTFIND_NOOPTIONS
--                      added for dns_rbt_findnode, the former to disable the
--                      setting of the chain to the predecessor, and the
--                      latter to make clear when no options are set.
--
--  71. [cleanup]       Made explicit the implicit REQUIREs of
--                      isc_time_seconds, isc_time_nanoseconds, and
--                      isc_time_subtract.
--
--  70. [func]          isc_time_set() added.
--
--  69. [bug]           The zone object's master and also-notify lists grew
--                      longer with each server reload.
--
--  68. [func]          Partial support for SIG(0) on incoming messages.
--
--  67. [performance]   Allow use of alternate (compile-time supplied)
--                      OpenSSL libraries/headers.
--
--  66. [func]          Data in authoritative zones should have a trust level
--                      beyond secure.
--
--  65. [cleanup]       Removed obsolete typedef of dns_zone_callbackarg_t
--                      from <dns/types.h>.
--
--  64. [func]          The RBT, DB, and zone table APIs now allow the
--                      caller find the most-enclosing superdomain of
--                      a name.
--
--  63. [func]          Generate NOTIFY messages.
--
--  62. [func]          Add UDP refresh support.
--
--  61. [cleanup]       Use single quotes consistently in log messages.
--
--  60. [func]          Catch and disallow singleton types on message
--                      parse.
--
--  59. [bug]           Cause net/host unreachable to be a hard error
--                      when sending and receiving.
--
--  58. [bug]           bin/named/query.c could sometimes trigger the
--                      (client->query.attributes & NS_QUERYATTR_NAMEBUFUSED)
--                      == 0 assertion in query_newname().
--
--  57. [func]          Added dns_nxt_typepresent()
--
--  56. [bug]           SIG records were not properly returned in cached
--                      negative answers.
--
--  55. [bug]           Responses containing multiple names in the authority
--                      section were not negatively cached.
--
--  54. [bug]           If a fetch with sigrdataset==NULL joined one with
--                      sigrdataset!=NULL or vice versa, the resolver
--                      could catch an assertion or lose signature data,
--                      respectively.
--
--  53. [port]          freebsd 4.0: lib/isc/unix/socket.c requires
--                      <sys/param.h>.
--
--  52. [bug]           rndc: taskmgr and socketmgr were not initialized
--                      to NULL.
--
--  51. [cleanup]       dns/compress.h and dns/zt.h did not need to include
--                      dns/rbt.h; it was needed only by compress.c and zt.c.
--
--  50. [func]          RBT deletion no longer requires a valid chain to work,
--                      and dns_rbt_deletenode was added.
--
--  49. [func]          Each cache now has its own mctx.
--
--  48. [func]          isc_task_create() no longer takes an mctx.
--                      isc_task_mem() has been eliminated.
--
--  47. [func]          A number of modules now use memory context reference
--                      counting.
--
--  46. [func]          Memory contexts are now reference counted.
--                      Added isc_mem_inuse() and isc_mem_preallocate().
--                      Renamed isc_mem_destroy_check() to
--                      isc_mem_setdestroycheck().
--
--  45. [bug]           The trusted-key statement incorrectly loaded keys.
--
--  44. [bug]           Don't include authority data if it would force us
--                      to unset the AD bit in the message.
--
--  43. [bug]           DNSSEC verification of cached rdatasets was failing.
--
--  42. [cleanup]       Simplified logging of messages with embedded domain
--                      names by introducing a new convenience function
--                      dns_name_format().
--
--  41. [func]          Use PR_SET_KEEPCAPS on Linux 2.3.99-pre3 and later
--                      to allow 'named' to run as a non-root user while
--                      retaining the ability to bind() to privileged
--                      ports.
--
--  40. [func]          Introduced new logging category "dnssec" and
--                      logging module "dns/validator".
--
--  39. [cleanup]       Moved the typedefs for isc_region_t, isc_textregion_t,
--                      and isc_lex_t to <isc/types.h>.
--
--  38. [bug]           TSIG signed incoming zone transfers work now.
--
--  37. [bug]           If the first RR in an incoming zone transfer was
--                      not an SOA, the server died with an assertion failure
--                      instead of just reporting an error.
--
--  36. [cleanup]       Change DNS_R_SUCCESS (and others) to ISC_R_SUCCESS
--
--  35. [performance]   Log messages which are of a level too high to be
--                      logged by any channel in the logging configuration
--                      will not cause the log mutex to be locked.
--
--  34. [bug]           Recursion was allowed even with 'recursion no'.
--
--  33. [func]          The RBT now maintains a parent pointer at each node.
--
--  32. [cleanup]       bin/lwresd/client.c needs <string.h> for memset()
--                      prototype.
--
--  31. [bug]           Use ${LIBTOOL} to compile bin/named/main.@O@.
--
--  30. [func]          config file grammar change to support optional
--                      class type for a view.
--
--  29. [func]          support new config file view options:
--
--                              auth-nxdomain recursion query-source
--                              query-source-v6 transfer-source
--                              transfer-source-v6 max-transfer-time-out
--                              max-transfer-idle-out transfer-format
--                              request-ixfr provide-ixfr cleaning-interval
--                              fetch-glue notify rfc2308-type1 lame-ttl
--                              max-ncache-ttl min-roots
--
--  28. [func]          support lame-ttl, min-roots and serial-queries
--                      config global options.
--
--  27. [bug]           Only include <netinet6/in6.h> on BSD/OS 4.[01]*.
--                      Including it on other platforms (eg, NetBSD) can
--                      cause a forced #error from the C preprocessor.
--
--  26. [func]          new match-clients statement in config file view.
--
--  25. [bug]           make install failed to install <isc/log.h> and
--                      <isc/ondestroy.h>.
--
--  24. [cleanup]       Eliminate some unnecessary #includes of header
--                      files from header files.
--
--  23. [cleanup]       Provide more context in log messages about client
--                      requests, using a new function ns_client_log().
--
--  22. [bug]           SIGs weren't returned in the answer section when
--                      the query resulted in a fetch.
--
--  21. [port]          Look at STD_CINCLUDES after CINCLUDES during
--                      compilation, so additional system include directories
--                      can be searched but header files in the bind9 source
--                      tree with conflicting names take precedence.  This
--                      avoids issues with installed versions of dnssafe and
--                      openssl.
--
--  20. [func]          Configuration file post-load validation of zones
--                      failed if there were no zones.
--
--  19. [bug]           dns_zone_notifyreceive() failed to unlock the zone
--                      lock in certain error cases.
--
--  18. [bug]           Use AC_TRY_LINK rather than AC_TRY_COMPILE in
--                      configure.in to check for presence of in6addr_any.
--
--  17. [func]          Do configuration file post-load validation of zones.
--
--  16. [bug]           put quotes around key names on config file
--                      output to avoid possible keyword clashes.
--
--  15. [func]          Add dns_name_dupwithoffsets().  This function is
--                      improves comparison performance for duped names.
--
--  14. [bug]           free_rbtdb() could have 'put' unallocated memory in
--                      an unlikely error path.
--
--  13. [bug]           lib/dns/master.c and lib/dns/xfrin.c didn't ignore
--                      out-of-zone data.
--
--  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
--                      to be triggered later.
--
--  10. [bug]           A bug in the code which makes EDNS0 OPT records in
--                      bin/named/client.c and lib/dns/resolver.c could
--                      trigger an assertion.
--
--   9. [cleanup]       replaced bit-setting code in confctx.c and replaced
--                      repeated code with macro calls.
--
--   8. [bug]           Shutdown of incoming zone transfer accessed
--                      freed memory.
--
--   7. [cleanup]       removed 'listen-on' from view statement.
--
--   6. [bug]           quote RR names when generating config file to
--                      prevent possible clash with config file keywords
--                      (such as 'key').
--
--   5. [func]          syntax change to named.conf file: new ssu grant/deny
--                      statements must now be enclosed by an 'update-policy'
--                      block.
--
--   4. [port]          bin/named/unix/os.c didn't compile on systems with
--                      linux 2.3 kernel includes due to conflicts between
--                      C library includes and the kernel includes.  We now
--                      get only what we need from <linux/capability.h>, and
--                      avoid pulling in other linux kernel .h files.
--
--   3. [bug]           TKEYs go in the answer section of responses, not
--                      the additional section.
--
--   2. [bug]           Generating cryptographic randomness failed on
--                      systems without /dev/random.
--
--   1. [bug]           The installdirs rule in
--                      lib/isc/unix/include/isc/Makefile.in had a typo which
--                      prevented the isc directory from being created if it
--                      didn't exist.
--
--      --- 9.0.0b2 released ---
--
--# This tells Emacs to use hard tabs in this file.
--# Local Variables:
--# indent-tabs-mode: t
--# End:
diff --cc bin/dig/win32/dig.dsp
index 67848cba1241aa4998b6e8b4bdfa3506f311e4ed,67848cba1241aa4998b6e8b4bdfa3506f311e4ed..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,107 -1,107 +1,0 @@@
--# Microsoft Developer Studio Project File - Name="dig" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Console Application" 0x0103
--
--CFG=dig - Win32 Debug
--!MESSAGE This is not a valid makefile. To build this project using NMAKE,
--!MESSAGE use the Export Makefile command and run
--!MESSAGE 
--!MESSAGE NMAKE /f "dig.mak".
--!MESSAGE 
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "dig.mak" CFG="dig - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "dig - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "dig - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName ""
--# PROP Scc_LocalPath ""
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir "Release"
--# PROP BASE Intermediate_Dir "Release"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "Release"
--# PROP Intermediate_Dir "Release"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD BASE RSC /l 0x409 /d "NDEBUG"
--# ADD RSC /l 0x409 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib Release/dighost.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/dig.exe"
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir "Debug"
--# PROP BASE Intermediate_Dir "Debug"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "Debug"
--# PROP Intermediate_Dir "Debug"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
--# SUBTRACT CPP /X /u /YX
--# ADD BASE RSC /l 0x409 /d "_DEBUG"
--# ADD RSC /l 0x409 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib Debug/dighost.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/dig.exe" /pdbtype:sept
--
--!ENDIF 
--
--# Begin Target
--
--# Name "dig - Win32 Release"
--# Name "dig - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
--# Begin Source File
--
--SOURCE=..\dig.c
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl"
--# Begin Source File
--
--SOURCE=..\include\dig\dig.h
--# End Source File
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
diff --cc bin/dig/win32/dig.mak
index a5818fba0458a9f3dd9eba058cef32aa6f1118e7,a5818fba0458a9f3dd9eba058cef32aa6f1118e7..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,425 -1,425 +1,0 @@@
--# Microsoft Developer Studio Generated NMAKE File, Based on dig.dsp
--!IF "$(CFG)" == ""
--CFG=dig - Win32 Debug
--!MESSAGE No configuration specified. Defaulting to dig - Win32 Debug.
--!ENDIF 
--
--!IF "$(CFG)" != "dig - Win32 Release" && "$(CFG)" != "dig - Win32 Debug"
--!MESSAGE Invalid configuration "$(CFG)" specified.
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "dig.mak" CFG="dig - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "dig - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "dig - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--!ERROR An invalid configuration is specified.
--!ENDIF 
--
--!IF "$(OS)" == "Windows_NT"
--NULL=
--!ELSE 
--NULL=nul
--!ENDIF 
--
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--_VC_MANIFEST_INC=0
--_VC_MANIFEST_BASENAME=__VC80
--!ELSE
--_VC_MANIFEST_INC=1
--_VC_MANIFEST_BASENAME=__VC80.Debug
--!ENDIF
--
--####################################################
--# Specifying name of temporary resource file used only in incremental builds:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--_VC_MANIFEST_AUTO_RES=$(_VC_MANIFEST_BASENAME).auto.res
--!else
--_VC_MANIFEST_AUTO_RES=
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_EXE - command to embed manifest in EXE:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1
--
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_DLL - command to embed manifest in DLL:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2
--
--!endif
--####################################################
--# _VC_MANIFEST_CLEAN - command to clean resources files generated temporarily:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--_VC_MANIFEST_CLEAN=-del $(_VC_MANIFEST_BASENAME).auto.res \
--    $(_VC_MANIFEST_BASENAME).auto.rc \
--    $(_VC_MANIFEST_BASENAME).auto.manifest
--
--!else
--
--_VC_MANIFEST_CLEAN=
--
--!endif
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--OUTDIR=.\Release
--INTDIR=.\Release
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Release\dig.exe"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Release" "libbind9 - Win32 Release" "libisc - Win32 Release" "libdns - Win32 Release" "..\..\..\Build\Release\dig.exe"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 ReleaseCLEAN" "libisc - Win32 ReleaseCLEAN" "libbind9 - Win32 ReleaseCLEAN" "liblwres - Win32 ReleaseCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dig.obj"
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "..\..\..\Build\Release\dig.exe"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\dig.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\dig.bsc" 
--BSC32_SBRS= \
--      
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\dig.pdb" /machine:I386 /out:"../../../Build/Release/dig.exe" 
--LINK32_OBJS= \
--      "$(INTDIR)\dig.obj" \
--      "$(INTDIR)\dighost.obj" \
--      "..\..\..\lib\dns\win32\Release\libdns.lib" \
--      "..\..\..\lib\isc\win32\Release\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Release\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Release\liblwres.lib"
--
--"..\..\..\Build\Release\dig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--OUTDIR=.\Debug
--INTDIR=.\Debug
--# Begin Custom Macros
--OutDir=.\Debug
--# End Custom Macros
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Debug\dig.exe" "$(OUTDIR)\dig.bsc"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Debug" "libbind9 - Win32 Debug" "libisc - Win32 Debug" "libdns - Win32 Debug" "..\..\..\Build\Debug\dig.exe" "$(OUTDIR)\dig.bsc"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 DebugCLEAN" "libisc - Win32 DebugCLEAN" "libbind9 - Win32 DebugCLEAN" "liblwres - Win32 DebugCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dig.obj"
--      -@erase "$(INTDIR)\dig.sbr"
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\dighost.sbr"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "$(INTDIR)\vc60.pdb"
--      -@erase "$(OUTDIR)\dig.bsc"
--      -@erase "$(OUTDIR)\dig.pdb"
--      -@erase "..\..\..\Build\Debug\dig.exe"
--      -@erase "..\..\..\Build\Debug\dig.ilk"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\dig.bsc" 
--BSC32_SBRS= \
--      "$(INTDIR)\dig.sbr" \
--      "$(INTDIR)\dighost.sbr"
--
--"$(OUTDIR)\dig.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
--    $(BSC32) @<<
--  $(BSC32_FLAGS) $(BSC32_SBRS)
--<<
--
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\dig.pdb" /debug /machine:I386 /out:"../../../Build/Debug/dig.exe" /pdbtype:sept 
--LINK32_OBJS= \
--      "$(INTDIR)\dig.obj" \
--      "$(INTDIR)\dighost.obj" \
--      "..\..\..\lib\dns\win32\Debug\libdns.lib" \
--      "..\..\..\lib\isc\win32\Debug\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Debug\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Debug\liblwres.lib"
--
--"..\..\..\Build\Debug\dig.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ENDIF 
--
--.c{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.c{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--
--!IF "$(NO_EXTERNAL_DEPS)" != "1"
--!IF EXISTS("dig.dep")
--!INCLUDE "dig.dep"
--!ELSE 
--!MESSAGE Warning: cannot find "dig.dep"
--!ENDIF 
--!ENDIF 
--
--
--!IF "$(CFG)" == "dig - Win32 Release" || "$(CFG)" == "dig - Win32 Debug"
--SOURCE=..\dig.c
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--
--"$(INTDIR)\dig.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--
--"$(INTDIR)\dig.obj"   "$(INTDIR)\dig.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--SOURCE=..\dighost.c
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--
--"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--
--"$(INTDIR)\dighost.obj"       "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--"libdns - Win32 Release" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--"libdns - Win32 Debug" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--"libisc - Win32 Release" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--"libisc - Win32 Debug" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--"libbind9 - Win32 Release" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--"libbind9 - Win32 Debug" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "dig - Win32 Release"
--
--"liblwres - Win32 Release" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "dig - Win32 Debug"
--
--"liblwres - Win32 Debug" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--
--!ENDIF 
--
--####################################################
--# Commands to generate initial empty manifest file and the RC file
--# that references it, and for generating the .res file:
--
--$(_VC_MANIFEST_BASENAME).auto.res : $(_VC_MANIFEST_BASENAME).auto.rc
--
--$(_VC_MANIFEST_BASENAME).auto.rc : $(_VC_MANIFEST_BASENAME).auto.manifest
--    type <<$@
--#include <winuser.h>
--1RT_MANIFEST"$(_VC_MANIFEST_BASENAME).auto.manifest"
--<< KEEP
--
--$(_VC_MANIFEST_BASENAME).auto.manifest :
--    type <<$@
--<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
--<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
--</assembly>
--<< KEEP
diff --cc bin/dig/win32/dighost.dsp
index f865e145003f36c6f2d6916121903c45d0a3fd4d,f865e145003f36c6f2d6916121903c45d0a3fd4d..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,113 -1,113 +1,0 @@@
--# Microsoft Developer Studio Project File - Name="dighost" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Static-Link Library" 0x0104
--
--CFG=dighost - Win32 Debug
--!MESSAGE This is not a valid makefile. To build this project using NMAKE,
--!MESSAGE use the Export Makefile command and run
--!MESSAGE 
--!MESSAGE NMAKE /f "dighost.mak".
--!MESSAGE 
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "dighost.mak" CFG="dighost - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "dighost - Win32 Release" (based on "Win32 (x86) Static-Link Library")
--!MESSAGE "dighost - Win32 Debug" (based on "Win32 (x86) Static-Link Library")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName ""
--# PROP Scc_LocalPath ""
--CPP=cl.exe
--MTL=midl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "dighost - Win32 Release"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir "Release"
--# PROP BASE Intermediate_Dir "Release"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "Release"
--# PROP Intermediate_Dir "Release"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c
--# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /YX /FD /c /Fddighost
--# SUBTRACT CPP /X
--# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--# ADD BASE RSC /l 0x409 /d "NDEBUG"
--# ADD RSC /l 0x409 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 
--# ADD LINK32 /out:"Release/dighost.lib"
--
--!ELSEIF  "$(CFG)" == "dighost - Win32 Debug"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir "Debug"
--# PROP BASE Intermediate_Dir "Debug"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "Debug"
--# PROP Intermediate_Dir "Debug"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /FR /YX /FD /GZ /c /Fddighost
--# SUBTRACT CPP /X
--# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
--# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
--# ADD BASE RSC /l 0x409 /d "_DEBUG"
--# ADD RSC /l 0x409 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 
--# ADD LINK32 /debug out:"Debug/dighost.lib"
--
--!ENDIF 
--
--# Begin Target
--
--# Name "dighost - Win32 Release"
--# Name "dighost - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl"
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
--# End Group
--# Begin Group "Main Dns Lib"
--
--# PROP Default_Filter "c"
--# Begin Source File
--
--SOURCE=..\dighost.c
--# End Source File
--# End Group
--# End Target
--# End Project
diff --cc bin/dig/win32/host.dsp
index 30731a7d4d53e2e524fd8f46c5870af46f9de4df,30731a7d4d53e2e524fd8f46c5870af46f9de4df..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,103 -1,103 +1,0 @@@
--# Microsoft Developer Studio Project File - Name="host" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Console Application" 0x0103
--
--CFG=host - Win32 Debug
--!MESSAGE This is not a valid makefile. To build this project using NMAKE,
--!MESSAGE use the Export Makefile command and run
--!MESSAGE 
--!MESSAGE NMAKE /f "host.mak".
--!MESSAGE 
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "host.mak" CFG="host - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "host - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "host - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName ""
--# PROP Scc_LocalPath ""
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir "Release"
--# PROP BASE Intermediate_Dir "Release"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "Release"
--# PROP Intermediate_Dir "Release"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD BASE RSC /l 0x409 /d "NDEBUG"
--# ADD RSC /l 0x409 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib Release/dighost.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/host.exe"
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir "Debug"
--# PROP BASE Intermediate_Dir "Debug"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "Debug"
--# PROP Intermediate_Dir "Debug"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
--# SUBTRACT CPP /X /u /YX
--# ADD BASE RSC /l 0x409 /d "_DEBUG"
--# ADD RSC /l 0x409 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib Debug/dighost.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/host.exe" /pdbtype:sept
--
--!ENDIF 
--
--# Begin Target
--
--# Name "host - Win32 Release"
--# Name "host - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
--# Begin Source File
--
--SOURCE=..\host.c
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl"
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
diff --cc bin/dig/win32/host.mak
index fca3b16de2ac45dcbdf0d8391a3eb3600efb1e9c,fca3b16de2ac45dcbdf0d8391a3eb3600efb1e9c..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,425 -1,425 +1,0 @@@
--# Microsoft Developer Studio Generated NMAKE File, Based on host.dsp
--!IF "$(CFG)" == ""
--CFG=host - Win32 Debug
--!MESSAGE No configuration specified. Defaulting to host - Win32 Debug.
--!ENDIF 
--
--!IF "$(CFG)" != "host - Win32 Release" && "$(CFG)" != "host - Win32 Debug"
--!MESSAGE Invalid configuration "$(CFG)" specified.
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "host.mak" CFG="host - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "host - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "host - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--!ERROR An invalid configuration is specified.
--!ENDIF 
--
--!IF "$(OS)" == "Windows_NT"
--NULL=
--!ELSE 
--NULL=nul
--!ENDIF 
--
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "host - Win32 Release"
--_VC_MANIFEST_INC=0
--_VC_MANIFEST_BASENAME=__VC80
--!ELSE
--_VC_MANIFEST_INC=1
--_VC_MANIFEST_BASENAME=__VC80.Debug
--!ENDIF
--
--####################################################
--# Specifying name of temporary resource file used only in incremental builds:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--_VC_MANIFEST_AUTO_RES=$(_VC_MANIFEST_BASENAME).auto.res
--!else
--_VC_MANIFEST_AUTO_RES=
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_EXE - command to embed manifest in EXE:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1
--
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_DLL - command to embed manifest in DLL:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2
--
--!endif
--####################################################
--# _VC_MANIFEST_CLEAN - command to clean resources files generated temporarily:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--_VC_MANIFEST_CLEAN=-del $(_VC_MANIFEST_BASENAME).auto.res \
--    $(_VC_MANIFEST_BASENAME).auto.rc \
--    $(_VC_MANIFEST_BASENAME).auto.manifest
--
--!else
--
--_VC_MANIFEST_CLEAN=
--
--!endif
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--OUTDIR=.\Release
--INTDIR=.\Release
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Release\host.exe"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Release" "libbind9 - Win32 Release" "libisc - Win32 Release" "libdns - Win32 Release" "..\..\..\Build\Release\host.exe"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 ReleaseCLEAN" "libisc - Win32 ReleaseCLEAN" "libbind9 - Win32 ReleaseCLEAN" "liblwres - Win32 ReleaseCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\host.obj"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "..\..\..\Build\Release\host.exe"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\host.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\host.bsc" 
--BSC32_SBRS= \
--      
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib  ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\host.pdb" /machine:I386 /out:"../../../Build/Release/host.exe" 
--LINK32_OBJS= \
--      "$(INTDIR)\dighost.obj" \
--      "$(INTDIR)\host.obj" \
--      "..\..\..\lib\dns\win32\Release\libdns.lib" \
--      "..\..\..\lib\isc\win32\Release\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Release\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Release\liblwres.lib"
--
--"..\..\..\Build\Release\host.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--OUTDIR=.\Debug
--INTDIR=.\Debug
--# Begin Custom Macros
--OutDir=.\Debug
--# End Custom Macros
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Debug\host.exe" "$(OUTDIR)\host.bsc"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Debug" "libbind9 - Win32 Debug" "libisc - Win32 Debug" "libdns - Win32 Debug" "..\..\..\Build\Debug\host.exe" "$(OUTDIR)\host.bsc"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 DebugCLEAN" "libisc - Win32 DebugCLEAN" "libbind9 - Win32 DebugCLEAN" "liblwres - Win32 DebugCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\dighost.sbr"
--      -@erase "$(INTDIR)\host.obj"
--      -@erase "$(INTDIR)\host.sbr"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "$(INTDIR)\vc60.pdb"
--      -@erase "$(OUTDIR)\host.bsc"
--      -@erase "$(OUTDIR)\host.pdb"
--      -@erase "..\..\..\Build\Debug\host.exe"
--      -@erase "..\..\..\Build\Debug\host.ilk"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\host.bsc" 
--BSC32_SBRS= \
--      "$(INTDIR)\dighost.sbr" \
--      "$(INTDIR)\host.sbr"
--
--"$(OUTDIR)\host.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
--    $(BSC32) @<<
--  $(BSC32_FLAGS) $(BSC32_SBRS)
--<<
--
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib  ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\host.pdb" /debug /machine:I386 /out:"../../../Build/Debug/host.exe" /pdbtype:sept 
--LINK32_OBJS= \
--      "$(INTDIR)\dighost.obj" \
--      "$(INTDIR)\host.obj" \
--      "..\..\..\lib\dns\win32\Debug\libdns.lib" \
--      "..\..\..\lib\isc\win32\Debug\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Debug\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Debug\liblwres.lib"
--
--"..\..\..\Build\Debug\host.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ENDIF 
--
--.c{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.c{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--
--!IF "$(NO_EXTERNAL_DEPS)" != "1"
--!IF EXISTS("host.dep")
--!INCLUDE "host.dep"
--!ELSE 
--!MESSAGE Warning: cannot find "host.dep"
--!ENDIF 
--!ENDIF 
--
--
--!IF "$(CFG)" == "host - Win32 Release" || "$(CFG)" == "host - Win32 Debug"
--SOURCE=..\dighost.c
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--
--"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--
--"$(INTDIR)\dighost.obj"       "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--SOURCE=..\host.c
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--
--"$(INTDIR)\host.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--
--"$(INTDIR)\host.obj"  "$(INTDIR)\host.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--"libdns - Win32 Release" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--"libdns - Win32 Debug" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--"libisc - Win32 Release" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--"libisc - Win32 Debug" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--"libbind9 - Win32 Release" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--"libbind9 - Win32 Debug" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "host - Win32 Release"
--
--"liblwres - Win32 Release" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "host - Win32 Debug"
--
--"liblwres - Win32 Debug" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--
--!ENDIF 
--
--####################################################
--# Commands to generate initial empty manifest file and the RC file
--# that references it, and for generating the .res file:
--
--$(_VC_MANIFEST_BASENAME).auto.res : $(_VC_MANIFEST_BASENAME).auto.rc
--
--$(_VC_MANIFEST_BASENAME).auto.rc : $(_VC_MANIFEST_BASENAME).auto.manifest
--    type <<$@
--#include <winuser.h>
--1RT_MANIFEST"$(_VC_MANIFEST_BASENAME).auto.manifest"
--<< KEEP
--
--$(_VC_MANIFEST_BASENAME).auto.manifest :
--    type <<$@
--<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
--<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
--</assembly>
--<< KEEP
diff --cc bin/dig/win32/nslookup.dsp
index 2898bc503e3ca47f64bbc970bc2a8fc31c1218e1,2898bc503e3ca47f64bbc970bc2a8fc31c1218e1..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,107 -1,107 +1,0 @@@
--# Microsoft Developer Studio Project File - Name="nslookup" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Console Application" 0x0103
--
--CFG=nslookup - Win32 Debug
--!MESSAGE This is not a valid makefile. To build this project using NMAKE,
--!MESSAGE use the Export Makefile command and run
--!MESSAGE 
--!MESSAGE NMAKE /f "nslookup.mak".
--!MESSAGE 
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "nslookup.mak" CFG="nslookup - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "nslookup - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "nslookup - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName ""
--# PROP Scc_LocalPath ""
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir "Release"
--# PROP BASE Intermediate_Dir "Release"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "Release"
--# PROP Intermediate_Dir "Release"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD BASE RSC /l 0x409 /d "NDEBUG"
--# ADD RSC /l 0x409 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /machine:I386 /out:"../../../Build/Release/nslookup.exe"
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir "Debug"
--# PROP BASE Intermediate_Dir "Debug"
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "Debug"
--# PROP Intermediate_Dir "Debug"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
--# SUBTRACT CPP /X /u /YX
--# ADD BASE RSC /l 0x409 /d "_DEBUG"
--# ADD RSC /l 0x409 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
--# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../../Build/Debug/nslookup.exe" /pdbtype:sept
--
--!ENDIF 
--
--# Begin Target
--
--# Name "nslookup - Win32 Release"
--# Name "nslookup - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
--# Begin Source File
--
--SOURCE=..\dighost.c
--# End Source File
--# Begin Source File
--
--SOURCE=..\nslookup.c
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl"
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
diff --cc bin/dig/win32/nslookup.mak
index a69f4dda62812d8441555fdaf53b14c7d5c665de,a69f4dda62812d8441555fdaf53b14c7d5c665de..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,425 -1,425 +1,0 @@@
--# Microsoft Developer Studio Generated NMAKE File, Based on nslookup.dsp
--!IF "$(CFG)" == ""
--CFG=nslookup - Win32 Debug
--!MESSAGE No configuration specified. Defaulting to nslookup - Win32 Debug.
--!ENDIF 
--
--!IF "$(CFG)" != "nslookup - Win32 Release" && "$(CFG)" != "nslookup - Win32 Debug"
--!MESSAGE Invalid configuration "$(CFG)" specified.
--!MESSAGE You can specify a configuration when running NMAKE
--!MESSAGE by defining the macro CFG on the command line. For example:
--!MESSAGE 
--!MESSAGE NMAKE /f "nslookup.mak" CFG="nslookup - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "nslookup - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "nslookup - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--!ERROR An invalid configuration is specified.
--!ENDIF 
--
--!IF "$(OS)" == "Windows_NT"
--NULL=
--!ELSE 
--NULL=nul
--!ENDIF 
--
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--_VC_MANIFEST_INC=0
--_VC_MANIFEST_BASENAME=__VC80
--!ELSE
--_VC_MANIFEST_INC=1
--_VC_MANIFEST_BASENAME=__VC80.Debug
--!ENDIF
--
--####################################################
--# Specifying name of temporary resource file used only in incremental builds:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--_VC_MANIFEST_AUTO_RES=$(_VC_MANIFEST_BASENAME).auto.res
--!else
--_VC_MANIFEST_AUTO_RES=
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_EXE - command to embed manifest in EXE:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1
--
--!endif
--
--####################################################
--# _VC_MANIFEST_EMBED_DLL - command to embed manifest in DLL:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--#MT_SPECIAL_RETURN=1090650113
--#MT_SPECIAL_SWITCH=-notify_resource_update
--MT_SPECIAL_RETURN=0
--MT_SPECIAL_SWITCH=
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
--if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
--rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
--link $** /out:$@ $(LFLAGS)
--
--!else
--
--_VC_MANIFEST_EMBED_EXE= \
--if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2
--
--!endif
--####################################################
--# _VC_MANIFEST_CLEAN - command to clean resources files generated temporarily:
--
--!if "$(_VC_MANIFEST_INC)" == "1"
--
--_VC_MANIFEST_CLEAN=-del $(_VC_MANIFEST_BASENAME).auto.res \
--    $(_VC_MANIFEST_BASENAME).auto.rc \
--    $(_VC_MANIFEST_BASENAME).auto.manifest
--
--!else
--
--_VC_MANIFEST_CLEAN=
--
--!endif
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--OUTDIR=.\Release
--INTDIR=.\Release
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Release\nslookup.exe"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Release" "libbind9 - Win32 Release" "libisc - Win32 Release" "libdns - Win32 Release" "..\..\..\Build\Release\nslookup.exe"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 ReleaseCLEAN" "libisc - Win32 ReleaseCLEAN" "libbind9 - Win32 ReleaseCLEAN" "liblwres - Win32 ReleaseCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\nslookup.obj"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "..\..\..\Build\Release\nslookup.exe"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "__STDC__" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\nslookup.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\nslookup.bsc" 
--BSC32_SBRS= \
--      
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Release/libisc.lib ../../../lib/dns/win32/Release/libdns.lib ../../../lib/bind9/win32/Release/libbind9.lib  ../../../lib/lwres/win32/Release/liblwres.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\nslookup.pdb" /machine:I386 /out:"../../../Build/Release/nslookup.exe" 
--LINK32_OBJS= \
--      "$(INTDIR)\dighost.obj" \
--      "$(INTDIR)\nslookup.obj" \
--      "..\..\..\lib\dns\win32\Release\libdns.lib" \
--      "..\..\..\lib\isc\win32\Release\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Release\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Release\liblwres.lib"
--
--"..\..\..\Build\Release\nslookup.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--OUTDIR=.\Debug
--INTDIR=.\Debug
--# Begin Custom Macros
--OutDir=.\Debug
--# End Custom Macros
--
--!IF "$(RECURSE)" == "0" 
--
--ALL : "..\..\..\Build\Debug\nslookup.exe" "$(OUTDIR)\nslookup.bsc"
--
--!ELSE 
--
--ALL : "liblwres - Win32 Debug" "libbind9 - Win32 Debug" "libisc - Win32 Debug" "libdns - Win32 Debug" "..\..\..\Build\Debug\nslookup.exe" "$(OUTDIR)\nslookup.bsc"
--
--!ENDIF 
--
--!IF "$(RECURSE)" == "1" 
--CLEAN :"libdns - Win32 DebugCLEAN" "libisc - Win32 DebugCLEAN" "libbind9 - Win32 DebugCLEAN" "liblwres - Win32 DebugCLEAN" 
--!ELSE 
--CLEAN :
--!ENDIF 
--      -@erase "$(INTDIR)\dighost.obj"
--      -@erase "$(INTDIR)\dighost.sbr"
--      -@erase "$(INTDIR)\nslookup.obj"
--      -@erase "$(INTDIR)\nslookup.sbr"
--      -@erase "$(INTDIR)\vc60.idb"
--      -@erase "$(INTDIR)\vc60.pdb"
--      -@erase "$(OUTDIR)\nslookup.bsc"
--      -@erase "$(OUTDIR)\nslookup.pdb"
--      -@erase "..\..\..\Build\Debug\nslookup.exe"
--      -@erase "..\..\..\Build\Debug\nslookup.ilk"
--      -@$(_VC_MANIFEST_CLEAN)
--
--"$(OUTDIR)" :
--    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
--
--CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../include" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/include" /I "../../../lib/bind9/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
--BSC32=bscmake.exe
--BSC32_FLAGS=/nologo /o"$(OUTDIR)\nslookup.bsc" 
--BSC32_SBRS= \
--      "$(INTDIR)\dighost.sbr" \
--      "$(INTDIR)\nslookup.sbr"
--
--"$(OUTDIR)\nslookup.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
--    $(BSC32) @<<
--  $(BSC32_FLAGS) $(BSC32_SBRS)
--<<
--
--LINK32=link.exe
--LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../../lib/isc/win32/Debug/libisc.lib ../../../lib/dns/win32/Debug/libdns.lib ../../../lib/bind9/win32/Debug/libbind9.lib  ../../../lib/lwres/win32/Debug/liblwres.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\nslookup.pdb" /debug /machine:I386 /out:"../../../Build/Debug/nslookup.exe" /pdbtype:sept 
--LINK32_OBJS= \
--      "$(INTDIR)\dighost.obj" \
--      "$(INTDIR)\nslookup.obj" \
--      "..\..\..\lib\dns\win32\Debug\libdns.lib" \
--      "..\..\..\lib\isc\win32\Debug\libisc.lib" \
--      "..\..\..\lib\bind9\win32\Debug\libbind9.lib" \
--      "..\..\..\lib\lwres\win32\Debug\liblwres.lib"
--
--"..\..\..\Build\Debug\nslookup.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
--    $(LINK32) @<<
--  $(LINK32_FLAGS) $(LINK32_OBJS)
--<<
--    $(_VC_MANIFEST_EMBED_EXE)
--
--!ENDIF 
--
--.c{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.obj::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.c{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cpp{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--.cxx{$(INTDIR)}.sbr::
--   $(CPP) @<<
--   $(CPP_PROJ) $< 
--<<
--
--
--!IF "$(NO_EXTERNAL_DEPS)" != "1"
--!IF EXISTS("nslookup.dep")
--!INCLUDE "nslookup.dep"
--!ELSE 
--!MESSAGE Warning: cannot find "nslookup.dep"
--!ENDIF 
--!ENDIF 
--
--
--!IF "$(CFG)" == "nslookup - Win32 Release" || "$(CFG)" == "nslookup - Win32 Debug"
--SOURCE=..\dighost.c
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--
--"$(INTDIR)\dighost.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--
--"$(INTDIR)\dighost.obj"       "$(INTDIR)\dighost.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--SOURCE=..\nslookup.c
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--
--"$(INTDIR)\nslookup.obj" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--
--"$(INTDIR)\nslookup.obj"      "$(INTDIR)\nslookup.sbr" : $(SOURCE) "$(INTDIR)"
--      $(CPP) $(CPP_PROJ) $(SOURCE)
--
--
--!ENDIF 
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--"libdns - Win32 Release" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--"libdns - Win32 Debug" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libdns - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\dns\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--"libisc - Win32 Release" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--"libisc - Win32 Debug" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libisc - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\isc\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--"libbind9 - Win32 Release" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--"libbind9 - Win32 Debug" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"libbind9 - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\bind9\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\libbind9.mak" CFG="libbind9 - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--!IF  "$(CFG)" == "nslookup - Win32 Release"
--
--"liblwres - Win32 Release" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 ReleaseCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Release" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ELSEIF  "$(CFG)" == "nslookup - Win32 Debug"
--
--"liblwres - Win32 Debug" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" 
--   cd "..\..\..\bin\dig\win32"
--
--"liblwres - Win32 DebugCLEAN" : 
--   cd "..\..\..\lib\lwres\win32"
--   $(MAKE) /$(MAKEFLAGS) /F ".\liblwres.mak" CFG="liblwres - Win32 Debug" RECURSE=1 CLEAN 
--   cd "..\..\..\bin\dig\win32"
--
--!ENDIF 
--
--
--!ENDIF 
--
--####################################################
--# Commands to generate initial empty manifest file and the RC file
--# that references it, and for generating the .res file:
--
--$(_VC_MANIFEST_BASENAME).auto.res : $(_VC_MANIFEST_BASENAME).auto.rc
--
--$(_VC_MANIFEST_BASENAME).auto.rc : $(_VC_MANIFEST_BASENAME).auto.manifest
--    type <<$@
--#include <winuser.h>
--1RT_MANIFEST"$(_VC_MANIFEST_BASENAME).auto.manifest"
--<< KEEP
--
--$(_VC_MANIFEST_BASENAME).auto.manifest :
--    type <<$@
--<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
--<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
--</assembly>
--<< KEEP
diff --cc bin/dnssec/dnssec-signzone.c
index db856de9de08b53cd3ce9081fec84e50aecdd6b6,a9e356423efbdb93e39bbba9fa08351075bb4d2a..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,3918 -1,3795 +1,0 @@@
--/*
-- * Portions Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
-- * Portions Copyright (C) 1999-2003  Internet Software Consortium.
-- *
-- * 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.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NETWORK ASSOCIATES 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.
-- *
-- * Portions Copyright (C) 1995-2000 by Network Associates, Inc.
-- *
-- * 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.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NETWORK ASSOCIATES 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: dnssec-signzone.c,v 1.232 2009/09/23 16:01:56 each Exp $ */
 -/* $Id: dnssec-signzone.c,v 1.229 2009/09/02 06:29:00 each Exp $ */
--
--/*! \file */
--
--#include <config.h>
--
--#include <stdlib.h>
--#include <time.h>
--
--#include <isc/app.h>
--#include <isc/base32.h>
--#include <isc/commandline.h>
--#include <isc/entropy.h>
--#include <isc/event.h>
--#include <isc/file.h>
--#include <isc/hash.h>
--#include <isc/hex.h>
--#include <isc/mem.h>
--#include <isc/mutex.h>
--#include <isc/os.h>
--#include <isc/print.h>
--#include <isc/random.h>
--#include <isc/rwlock.h>
--#include <isc/serial.h>
--#include <isc/stdio.h>
--#include <isc/stdlib.h>
--#include <isc/string.h>
--#include <isc/task.h>
--#include <isc/time.h>
--#include <isc/util.h>
--
--#include <dns/db.h>
--#include <dns/dbiterator.h>
--#include <dns/diff.h>
--#include <dns/dnssec.h>
--#include <dns/ds.h>
--#include <dns/fixedname.h>
--#include <dns/keyvalues.h>
--#include <dns/log.h>
--#include <dns/master.h>
--#include <dns/masterdump.h>
--#include <dns/nsec.h>
--#include <dns/nsec3.h>
--#include <dns/rdata.h>
--#include <dns/rdatalist.h>
--#include <dns/rdataset.h>
--#include <dns/rdataclass.h>
--#include <dns/rdatasetiter.h>
--#include <dns/rdatastruct.h>
--#include <dns/rdatatype.h>
--#include <dns/result.h>
--#include <dns/soa.h>
--#include <dns/time.h>
--
--#include <dst/dst.h>
--
--#include "dnssectool.h"
--
--#ifndef PATH_MAX
--#define PATH_MAX 1024   /* AIX, WIN32, and others don't define this. */
--#endif
--
--const char *program = "dnssec-signzone";
--int verbose;
--
--typedef struct hashlist hashlist_t;
--
--static int nsec_datatype = dns_rdatatype_nsec;
--
--#define IS_NSEC3      (nsec_datatype == dns_rdatatype_nsec3)
--#define OPTOUT(x)     (((x) & DNS_NSEC3FLAG_OPTOUT) != 0)
--
--#define BUFSIZE 2048
--#define MAXDSKEYS 8
--
--#define SIGNER_EVENTCLASS     ISC_EVENTCLASS(0x4453)
--#define SIGNER_EVENT_WRITE    (SIGNER_EVENTCLASS + 0)
--#define SIGNER_EVENT_WORK     (SIGNER_EVENTCLASS + 1)
--
--#define SOA_SERIAL_KEEP               0
--#define SOA_SERIAL_INCREMENT  1
--#define SOA_SERIAL_UNIXTIME   2
--
--typedef struct signer_event sevent_t;
--struct signer_event {
--      ISC_EVENT_COMMON(sevent_t);
--      dns_fixedname_t *fname;
--      dns_dbnode_t *node;
--};
--
--static dns_dnsseckeylist_t keylist;
--static unsigned int keycount = 0;
--isc_rwlock_t keylist_lock;
--static isc_stdtime_t starttime = 0, endtime = 0, now;
--static int cycle = -1;
--static int jitter = 0;
--static isc_boolean_t tryverify = ISC_FALSE;
--static isc_boolean_t printstats = ISC_FALSE;
--static isc_mem_t *mctx = NULL;
--static isc_entropy_t *ectx = NULL;
--static dns_ttl_t zone_soa_min_ttl;
--static dns_ttl_t soa_ttl;
--static FILE *fp;
--static char *tempfile = NULL;
--static const dns_master_style_t *masterstyle;
--static dns_masterformat_t inputformat = dns_masterformat_text;
--static dns_masterformat_t outputformat = dns_masterformat_text;
--static unsigned int nsigned = 0, nretained = 0, ndropped = 0;
--static unsigned int nverified = 0, nverifyfailed = 0;
--static const char *directory = NULL, *dsdir = NULL;
--static isc_mutex_t namelock, statslock;
--static isc_taskmgr_t *taskmgr = NULL;
--static dns_db_t *gdb;                 /* The database */
--static dns_dbversion_t *gversion;     /* The database version */
--static dns_dbiterator_t *gdbiter;     /* The database iterator */
--static dns_rdataclass_t gclass;               /* The class */
--static dns_name_t *gorigin;           /* The database origin */
--static int nsec3flags = 0;
--static isc_task_t *master = NULL;
--static unsigned int ntasks = 0;
--static isc_boolean_t shuttingdown = ISC_FALSE, finished = ISC_FALSE;
--static isc_boolean_t nokeys = ISC_FALSE;
--static isc_boolean_t removefile = ISC_FALSE;
--static isc_boolean_t generateds = ISC_FALSE;
--static isc_boolean_t ignore_kskflag = ISC_FALSE;
--static dns_name_t *dlv = NULL;
--static dns_fixedname_t dlv_fixed;
--static dns_master_style_t *dsstyle = NULL;
--static unsigned int serialformat = SOA_SERIAL_KEEP;
--static unsigned int hash_length = 0;
--static isc_boolean_t unknownalg = ISC_FALSE;
--static isc_boolean_t disable_zone_check = ISC_FALSE;
--static isc_boolean_t set_keyttl = ISC_FALSE;
--static dns_ttl_t keyttl;
--
--#define INCSTAT(counter)              \
--      if (printstats) {               \
--              LOCK(&statslock);       \
--              counter++;              \
--              UNLOCK(&statslock);     \
--      }
--
--static void
--sign(isc_task_t *task, isc_event_t *event);
--
- #define check_dns_dbiterator_current(result) \
-       check_result((result == DNS_R_NEWORIGIN) ? ISC_R_SUCCESS : result, \
-                    "dns_dbiterator_current()")
 -static isc_boolean_t
 -nsec3only(dns_dbnode_t *node);
--
--static void
--dumpnode(dns_name_t *name, dns_dbnode_t *node) {
--      isc_result_t result;
--
--      if (outputformat != dns_masterformat_text)
--              return;
--      result = dns_master_dumpnodetostream(mctx, gdb, gversion, node, name,
--                                           masterstyle, fp);
--      check_result(result, "dns_master_dumpnodetostream");
--}
--
--/*%
-- * Sign the given RRset with given key, and add the signature record to the
-- * given tuple.
-- */
--static void
--signwithkey(dns_name_t *name, dns_rdataset_t *rdataset, dst_key_t *key,
--          dns_ttl_t ttl, dns_diff_t *add, const char *logmsg)
--{
--      isc_result_t result;
--      isc_stdtime_t jendtime;
--      char keystr[KEY_FORMATSIZE];
--      dns_rdata_t trdata = DNS_RDATA_INIT;
--      unsigned char array[BUFSIZE];
--      isc_buffer_t b;
--      dns_difftuple_t *tuple;
--
--      key_format(key, keystr, sizeof(keystr));
--      vbprintf(1, "\t%s %s\n", logmsg, keystr);
--
--      jendtime = (jitter != 0) ? isc_random_jitter(endtime, jitter) : endtime;
--      isc_buffer_init(&b, array, sizeof(array));
--      result = dns_dnssec_sign(name, rdataset, key, &starttime, &jendtime,
--                               mctx, &b, &trdata);
--      isc_entropy_stopcallbacksources(ectx);
--      if (result != ISC_R_SUCCESS) {
--              char keystr[KEY_FORMATSIZE];
--              key_format(key, keystr, sizeof(keystr));
--              fatal("dnskey '%s' failed to sign data: %s",
--                    keystr, isc_result_totext(result));
--      }
--      INCSTAT(nsigned);
--
--      if (tryverify) {
--              result = dns_dnssec_verify(name, rdataset, key,
--                                         ISC_TRUE, mctx, &trdata);
--              if (result == ISC_R_SUCCESS) {
--                      vbprintf(3, "\tsignature verified\n");
--                      INCSTAT(nverified);
--              } else {
--                      vbprintf(3, "\tsignature failed to verify\n");
--                      INCSTAT(nverifyfailed);
--              }
--      }
--
--      tuple = NULL;
--      result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD, name, ttl, &trdata,
--                                    &tuple);
--      check_result(result, "dns_difftuple_create");
--      dns_diff_append(add, &tuple);
--}
--
--static inline isc_boolean_t
--issigningkey(dns_dnsseckey_t *key) {
--      return (key->force_sign || key->hint_sign);
--}
--
--static inline isc_boolean_t
--iszonekey(dns_dnsseckey_t *key) {
--      return (ISC_TF(dns_name_equal(dst_key_name(key->key), gorigin) &&
--                     dst_key_iszonekey(key->key)));
--}
--
--static inline isc_boolean_t
--isksk(dns_dnsseckey_t *key) {
--      return (key->ksk);
--}
--
--static inline isc_boolean_t
--iszsk(dns_dnsseckey_t *key) {
--      return (ignore_kskflag || !key->ksk);
--}
--
--/*%
-- * Find the key that generated an RRSIG, if it is in the key list.  If
-- * so, return a pointer to it, otherwise return NULL.
-- *
-- * No locking is performed here, this must be done by the caller.
-- */
--static dns_dnsseckey_t *
--keythatsigned_unlocked(dns_rdata_rrsig_t *rrsig) {
--      dns_dnsseckey_t *key;
--
-       for (key = ISC_LIST_HEAD(keylist);
-            key != NULL;
-            key = ISC_LIST_NEXT(key, link)) {
 -      key = ISC_LIST_HEAD(keylist);
 -      while (key != NULL) {
--              if (rrsig->keyid == dst_key_id(key->key) &&
--                  rrsig->algorithm == dst_key_alg(key->key) &&
--                  dns_name_equal(&rrsig->signer, dst_key_name(key->key)))
--                      return (key);
 -              key = ISC_LIST_NEXT(key, link);
--      }
--      return (NULL);
--}
--
--/*%
-- * Finds the key that generated a RRSIG, if possible.  First look at the keys
-- * that we've loaded already, and then see if there's a key on disk.
-- */
--static dns_dnsseckey_t *
--keythatsigned(dns_rdata_rrsig_t *rrsig) {
--      isc_result_t result;
--      dst_key_t *pubkey = NULL, *privkey = NULL;
--      dns_dnsseckey_t *key = NULL;
--
--      isc_rwlock_lock(&keylist_lock, isc_rwlocktype_read);
--      key = keythatsigned_unlocked(rrsig);
--      isc_rwlock_unlock(&keylist_lock, isc_rwlocktype_read);
--      if (key != NULL)
--              return (key);
--
--      /*
--       * We did not find the key in our list.  Get a write lock now, since
--       * we may be modifying the bits.  We could do the tryupgrade() dance,
--       * but instead just get a write lock and check once again to see if
--       * it is on our list.  It's possible someone else may have added it
--       * after all.
--       */
--      isc_rwlock_lock(&keylist_lock, isc_rwlocktype_write);
--      key = keythatsigned_unlocked(rrsig);
--      if (key != NULL) {
--              isc_rwlock_unlock(&keylist_lock, isc_rwlocktype_write);
--              return (key);
--      }
--
--      result = dst_key_fromfile(&rrsig->signer, rrsig->keyid,
--                                rrsig->algorithm, DST_TYPE_PUBLIC,
--                                directory, mctx, &pubkey);
--      if (result != ISC_R_SUCCESS) {
--              isc_rwlock_unlock(&keylist_lock, isc_rwlocktype_write);
--              return (NULL);
--      }
--
--      result = dst_key_fromfile(&rrsig->signer, rrsig->keyid,
--                                rrsig->algorithm,
--                                DST_TYPE_PUBLIC | DST_TYPE_PRIVATE,
--                                directory, mctx, &privkey);
--      if (result == ISC_R_SUCCESS) {
--              dst_key_free(&pubkey);
--              dns_dnsseckey_create(mctx, &privkey, &key);
 -              key->force_publish = ISC_TRUE;
 -              key->force_sign = ISC_FALSE;
--      } else {
--              dns_dnsseckey_create(mctx, &pubkey, &key);
 -              key->force_publish = ISC_TRUE;
 -              key->force_sign = ISC_FALSE;
--      }
-       key->force_publish = ISC_TRUE;
-       key->force_sign = ISC_FALSE;
--      ISC_LIST_APPEND(keylist, key, link);
--
--      isc_rwlock_unlock(&keylist_lock, isc_rwlocktype_write);
--      return (key);
--}
--
--/*%
-- * Check to see if we expect to find a key at this name.  If we see a RRSIG
-- * and can't find the signing key that we expect to find, we drop the rrsig.
-- * I'm not sure if this is completely correct, but it seems to work.
-- */
--static isc_boolean_t
--expecttofindkey(dns_name_t *name) {
--      unsigned int options = DNS_DBFIND_NOWILD;
--      dns_fixedname_t fname;
--      isc_result_t result;
--      char namestr[DNS_NAME_FORMATSIZE];
--
--      dns_fixedname_init(&fname);
--      result = dns_db_find(gdb, name, gversion, dns_rdatatype_dnskey, options,
--                           0, NULL, dns_fixedname_name(&fname), NULL, NULL);
--      switch (result) {
--      case ISC_R_SUCCESS:
--      case DNS_R_NXDOMAIN:
--      case DNS_R_NXRRSET:
--              return (ISC_TRUE);
--      case DNS_R_DELEGATION:
--      case DNS_R_CNAME:
--      case DNS_R_DNAME:
--              return (ISC_FALSE);
--      }
--      dns_name_format(name, namestr, sizeof(namestr));
--      fatal("failure looking for '%s DNSKEY' in database: %s",
--            namestr, isc_result_totext(result));
--      return (ISC_FALSE); /* removes a warning */
--}
--
--static inline isc_boolean_t
- setverifies(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
 -setverifies(dns_name_t *name, dns_rdataset_t *set, dns_dnsseckey_t *key,
--          dns_rdata_t *rrsig)
--{
--      isc_result_t result;
-       result = dns_dnssec_verify(name, set, key, ISC_FALSE, mctx, rrsig);
 -      result = dns_dnssec_verify(name, set, key->key, ISC_FALSE, mctx, rrsig);
--      if (result == ISC_R_SUCCESS) {
--              INCSTAT(nverified);
--              return (ISC_TRUE);
--      } else {
--              INCSTAT(nverifyfailed);
--              return (ISC_FALSE);
--      }
--}
--
--/*%
-- * Signs a set.  Goes through contortions to decide if each RRSIG should
-- * be dropped or retained, and then determines if any new SIGs need to
-- * be generated.
-- */
--static void
--signset(dns_diff_t *del, dns_diff_t *add, dns_dbnode_t *node, dns_name_t *name,
--      dns_rdataset_t *set)
--{
--      dns_rdataset_t sigset;
--      dns_rdata_t sigrdata = DNS_RDATA_INIT;
--      dns_rdata_rrsig_t rrsig;
--      dns_dnsseckey_t *key;
--      isc_result_t result;
--      isc_boolean_t nosigs = ISC_FALSE;
--      isc_boolean_t *wassignedby, *nowsignedby;
--      int arraysize;
--      dns_difftuple_t *tuple;
--      dns_ttl_t ttl;
--      int i;
--      char namestr[DNS_NAME_FORMATSIZE];
--      char typestr[TYPE_FORMATSIZE];
--      char sigstr[SIG_FORMATSIZE];
--
--      dns_name_format(name, namestr, sizeof(namestr));
--      type_format(set->type, typestr, sizeof(typestr));
--
--      ttl = ISC_MIN(set->ttl, endtime - starttime);
--
--      dns_rdataset_init(&sigset);
--      result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_rrsig,
--                                   set->type, 0, &sigset, NULL);
--      if (result == ISC_R_NOTFOUND) {
--              result = ISC_R_SUCCESS;
--              nosigs = ISC_TRUE;
--      }
--      if (result != ISC_R_SUCCESS)
--              fatal("failed while looking for '%s RRSIG %s': %s",
--                    namestr, typestr, isc_result_totext(result));
--
--      vbprintf(1, "%s/%s:\n", namestr, typestr);
--
--      arraysize = keycount;
--      if (!nosigs)
--              arraysize += dns_rdataset_count(&sigset);
--      wassignedby = isc_mem_get(mctx, arraysize * sizeof(isc_boolean_t));
--      nowsignedby = isc_mem_get(mctx, arraysize * sizeof(isc_boolean_t));
--      if (wassignedby == NULL || nowsignedby == NULL)
--              fatal("out of memory");
--
--      for (i = 0; i < arraysize; i++)
--              wassignedby[i] = nowsignedby[i] = ISC_FALSE;
--
--      if (nosigs)
--              result = ISC_R_NOMORE;
--      else
--              result = dns_rdataset_first(&sigset);
--
--      while (result == ISC_R_SUCCESS) {
--              isc_boolean_t expired, future;
--              isc_boolean_t keep = ISC_FALSE, resign = ISC_FALSE;
--
--              dns_rdataset_current(&sigset, &sigrdata);
--
--              result = dns_rdata_tostruct(&sigrdata, &rrsig, NULL);
--              check_result(result, "dns_rdata_tostruct");
--
--              future = isc_serial_lt(now, rrsig.timesigned);
--
--              key = keythatsigned(&rrsig);
--              sig_format(&rrsig, sigstr, sizeof(sigstr));
--              if (key != NULL && issigningkey(key))
--                      expired = isc_serial_gt(now + cycle, rrsig.timeexpire);
--              else
--                      expired = isc_serial_gt(now, rrsig.timeexpire);
--
--              if (isc_serial_gt(rrsig.timesigned, rrsig.timeexpire)) {
--                      /* rrsig is dropped and not replaced */
--                      vbprintf(2, "\trrsig by %s dropped - "
--                               "invalid validity period\n",
--                               sigstr);
--              } else if (key == NULL && !future &&
--                         expecttofindkey(&rrsig.signer)) {
--                      /* rrsig is dropped and not replaced */
--                      vbprintf(2, "\trrsig by %s dropped - "
--                               "private dnskey not found\n",
--                               sigstr);
--              } else if (key == NULL || future) {
--                      vbprintf(2, "\trrsig by %s %s - dnskey not found\n",
--                               expired ? "retained" : "dropped", sigstr);
--                      if (!expired)
--                              keep = ISC_TRUE;
--              } else if (issigningkey(key)) {
-                       if (!expired && setverifies(name, set, key->key,
-                                                   &sigrdata)) {
 -                      if (!expired && setverifies(name, set, key, &sigrdata))
 -                      {
--                              vbprintf(2, "\trrsig by %s retained\n", sigstr);
--                              keep = ISC_TRUE;
--                              wassignedby[key->index] = ISC_TRUE;
--                              nowsignedby[key->index] = ISC_TRUE;
--                      } else {
--                              vbprintf(2, "\trrsig by %s dropped - %s\n",
--                                       sigstr,
--                                       expired ? "expired" :
--                                                 "failed to verify");
--                              wassignedby[key->index] = ISC_TRUE;
--                              resign = ISC_TRUE;
--                      }
--              } else if (iszonekey(key)) {
-                       if (!expired && setverifies(name, set, key->key,
-                                                   &sigrdata)) {
 -                      if (!expired && setverifies(name, set, key, &sigrdata))
 -                      {
--                              vbprintf(2, "\trrsig by %s retained\n", sigstr);
--                              keep = ISC_TRUE;
--                              wassignedby[key->index] = ISC_TRUE;
--                              nowsignedby[key->index] = ISC_TRUE;
--                      } else {
--                              vbprintf(2, "\trrsig by %s dropped - %s\n",
--                                       sigstr,
--                                       expired ? "expired" :
--                                                 "failed to verify");
--                              wassignedby[key->index] = ISC_TRUE;
--                      }
--              } else if (!expired) {
--                      vbprintf(2, "\trrsig by %s retained\n", sigstr);
--                      keep = ISC_TRUE;
--              } else {
--                      vbprintf(2, "\trrsig by %s expired\n", sigstr);
--              }
--
--              if (keep) {
--                      nowsignedby[key->index] = ISC_TRUE;
--                      INCSTAT(nretained);
--                      if (sigset.ttl != ttl) {
--                              vbprintf(2, "\tfixing ttl %s\n", sigstr);
--                              tuple = NULL;
--                              result = dns_difftuple_create(mctx,
--                                                            DNS_DIFFOP_DEL,
--                                                            name, sigset.ttl,
--                                                            &sigrdata,
--                                                            &tuple);
--                              check_result(result, "dns_difftuple_create");
--                              dns_diff_append(del, &tuple);
--                              result = dns_difftuple_create(mctx,
--                                                            DNS_DIFFOP_ADD,
--                                                            name, ttl,
--                                                            &sigrdata,
--                                                            &tuple);
--                              check_result(result, "dns_difftuple_create");
--                              dns_diff_append(add, &tuple);
--                      }
--              } else {
--                      tuple = NULL;
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_DEL,
--                                                    name, sigset.ttl,
--                                                    &sigrdata, &tuple);
--                      check_result(result, "dns_difftuple_create");
--                      dns_diff_append(del, &tuple);
--                      INCSTAT(ndropped);
--              }
--
--              if (resign) {
--                      INSIST(!keep);
--
--                      signwithkey(name, set, key->key, ttl, add,
--                                  "resigning with dnskey");
--                      nowsignedby[key->index] = ISC_TRUE;
--              }
--
--              dns_rdata_reset(&sigrdata);
--              dns_rdata_freestruct(&rrsig);
--              result = dns_rdataset_next(&sigset);
--      }
--      if (result == ISC_R_NOMORE)
--              result = ISC_R_SUCCESS;
--
--      check_result(result, "dns_rdataset_first/next");
--      if (dns_rdataset_isassociated(&sigset))
--              dns_rdataset_disassociate(&sigset);
--
--      for (key = ISC_LIST_HEAD(keylist);
--           key != NULL;
--           key = ISC_LIST_NEXT(key, link))
--      {
--              if (nowsignedby[key->index])
--                      continue;
--
--              if (!issigningkey(key))
--                      continue;
--
--              if (iszsk(key) ||
--                  (isksk(key) && set->type == dns_rdatatype_dnskey &&
--                   dns_name_equal(name, gorigin))) {
--                      signwithkey(name, set, key->key, ttl, add,
--                                  "signing with dnskey");
--              }
--      }
--
--      isc_mem_put(mctx, wassignedby, arraysize * sizeof(isc_boolean_t));
--      isc_mem_put(mctx, nowsignedby, arraysize * sizeof(isc_boolean_t));
--}
--
--struct hashlist {
--      unsigned char *hashbuf;
--      size_t entries;
--      size_t size;
--      size_t length;
--};
--
--static void
--hashlist_init(hashlist_t *l, unsigned int nodes, unsigned int length) {
--
--      l->entries = 0;
--      l->length = length + 1;
--
--      if (nodes != 0) {
--              l->size = nodes;
--              l->hashbuf = malloc(l->size * l->length);
--              if (l->hashbuf == NULL)
--                      l->size = 0;
--      } else {
--              l->size = 0;
--              l->hashbuf = NULL;
--      }
--}
--
--static void
--hashlist_add(hashlist_t *l, const unsigned char *hash, size_t len)
--{
--
--      REQUIRE(len <= l->length);
--
--      if (l->entries == l->size) {
--              l->size = l->size * 2 + 100;
--              l->hashbuf = realloc(l->hashbuf, l->size * l->length);
--      }
--      memset(l->hashbuf + l->entries * l->length, 0, l->length);
--      memcpy(l->hashbuf + l->entries * l->length, hash, len);
--      l->entries++;
--}
--
--static void
--hashlist_add_dns_name(hashlist_t *l, /*const*/ dns_name_t *name,
--                    unsigned int hashalg, unsigned int iterations,
--                    const unsigned char *salt, size_t salt_length,
--                    isc_boolean_t speculative)
--{
--      char nametext[DNS_NAME_FORMATSIZE];
--      unsigned char hash[NSEC3_MAX_HASH_LENGTH + 1];
--      unsigned int len;
--      size_t i;
--
--      len = isc_iterated_hash(hash, hashalg, iterations, salt, salt_length,
--                              name->ndata, name->length);
--      if (verbose) {
--              dns_name_format(name, nametext, sizeof nametext);
--              for (i = 0 ; i < len; i++)
--                      fprintf(stderr, "%02x", hash[i]);
--              fprintf(stderr, " %s\n", nametext);
--      }
--      hash[len++] = speculative ? 1 : 0;
--      hashlist_add(l, hash, len);
--}
--
--static int
--hashlist_comp(const void *a, const void *b) {
--      return (memcmp(a, b, hash_length + 1));
--}
--
--static void
--hashlist_sort(hashlist_t *l) {
--      qsort(l->hashbuf, l->entries, l->length, hashlist_comp);
--}
--
--static isc_boolean_t
--hashlist_hasdup(hashlist_t *l) {
--      unsigned char *current;
--      unsigned char *next = l->hashbuf;
--      size_t entries = l->entries;
--
--      /*
--       * Skip initial speculative wild card hashs.
--       */
--      while (entries > 0U && next[l->length-1] != 0U) {
--              next += l->length;
--              entries--;
--      }
--
--      current = next;
--      while (entries-- > 1U) {
--              next += l->length;
--              if (next[l->length-1] != 0)
--                      continue;
--              if (memcmp(current, next, l->length - 1) == 0)
--                      return (ISC_TRUE);
--              current = next;
--      }
--      return (ISC_FALSE);
--}
--
--static const unsigned char *
--hashlist_findnext(const hashlist_t *l,
--                const unsigned char hash[NSEC3_MAX_HASH_LENGTH])
--{
--      unsigned int entries = l->entries;
--      const unsigned char *next = bsearch(hash, l->hashbuf, l->entries,
--                                          l->length, hashlist_comp);
--      INSIST(next != NULL);
--
--      do {
--              if (next < l->hashbuf + (l->entries - 1) * l->length)
--                      next += l->length;
--              else
--                      next = l->hashbuf;
--              if (next[l->length - 1] == 0)
--                      break;
--      } while (entries-- > 1);
--      INSIST(entries != 0);
--      return (next);
--}
--
--static isc_boolean_t
--hashlist_exists(const hashlist_t *l,
--              const unsigned char hash[NSEC3_MAX_HASH_LENGTH])
--{
--      if (bsearch(hash, l->hashbuf, l->entries, l->length, hashlist_comp))
--              return (ISC_TRUE);
--      else
--              return (ISC_FALSE);
--}
--
--static void
--addnowildcardhash(hashlist_t *l, /*const*/ dns_name_t *name,
--                unsigned int hashalg, unsigned int iterations,
--                const unsigned char *salt, size_t salt_length)
--{
--      dns_fixedname_t fixed;
--      dns_name_t *wild;
--      dns_dbnode_t *node = NULL;
--      isc_result_t result;
--      char namestr[DNS_NAME_FORMATSIZE];
--
--      dns_fixedname_init(&fixed);
--      wild = dns_fixedname_name(&fixed);
--
--      result = dns_name_concatenate(dns_wildcardname, name, wild, NULL);
--      if (result == ISC_R_NOSPACE)
--              return;
--      check_result(result,"addnowildcardhash: dns_name_concatenate()");
--
--      result = dns_db_findnode(gdb, wild, ISC_FALSE, &node);
--      if (result == ISC_R_SUCCESS) {
--              dns_db_detachnode(gdb, &node);
--              return;
--      }
--
--      if (verbose) {
--              dns_name_format(wild, namestr, sizeof(namestr));
--              fprintf(stderr, "adding no-wildcardhash for %s\n", namestr);
--      }
--
--      hashlist_add_dns_name(l, wild, hashalg, iterations, salt, salt_length,
--                            ISC_TRUE);
--}
--
--static void
--opendb(const char *prefix, dns_name_t *name, dns_rdataclass_t rdclass,
--       dns_db_t **dbp)
--{
--      char filename[PATH_MAX];
--      isc_buffer_t b;
--      isc_result_t result;
--
--      isc_buffer_init(&b, filename, sizeof(filename));
--      if (dsdir != NULL) {
--              /* allow room for a trailing slash */
--              if (strlen(dsdir) >= isc_buffer_availablelength(&b))
--                      fatal("path '%s' is too long", dsdir);
--              isc_buffer_putstr(&b, dsdir);
--              if (dsdir[strlen(dsdir) - 1] != '/')
--                      isc_buffer_putstr(&b, "/");
--      }
--      if (strlen(prefix) > isc_buffer_availablelength(&b))
--              fatal("path '%s' is too long", dsdir);
--      isc_buffer_putstr(&b, prefix);
--      result = dns_name_tofilenametext(name, ISC_FALSE, &b);
--      check_result(result, "dns_name_tofilenametext()");
--      if (isc_buffer_availablelength(&b) == 0) {
--              char namestr[DNS_NAME_FORMATSIZE];
--              dns_name_format(name, namestr, sizeof(namestr));
--              fatal("name '%s' is too long", namestr);
--      }
--      isc_buffer_putuint8(&b, 0);
--
--      result = dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_zone,
--                             rdclass, 0, NULL, dbp);
--      check_result(result, "dns_db_create()");
--
--      result = dns_db_load3(*dbp, filename, inputformat, DNS_MASTER_HINT);
--      if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE)
--              dns_db_detach(dbp);
--}
--
--/*%
-- * Load the DS set for a child zone, if a dsset-* file can be found.
-- * If not, try to find a keyset-* file from an earlier version of
-- * dnssec-signzone, and build DS records from that.
-- */
--static isc_result_t
--loadds(dns_name_t *name, isc_uint32_t ttl, dns_rdataset_t *dsset) {
--      dns_db_t *db = NULL;
--      dns_dbversion_t *ver = NULL;
--      dns_dbnode_t *node = NULL;
--      isc_result_t result;
--      dns_rdataset_t keyset;
--      dns_rdata_t key, ds;
--      unsigned char dsbuf[DNS_DS_BUFFERSIZE];
--      dns_diff_t diff;
--      dns_difftuple_t *tuple = NULL;
--
--      opendb("dsset-", name, gclass, &db);
--      if (db != NULL) {
--              result = dns_db_findnode(db, name, ISC_FALSE, &node);
--              if (result == ISC_R_SUCCESS) {
--                      dns_rdataset_init(dsset);
--                      result = dns_db_findrdataset(db, node, NULL,
--                                                   dns_rdatatype_ds, 0, 0,
--                                                   dsset, NULL);
--                      dns_db_detachnode(db, &node);
--                      if (result == ISC_R_SUCCESS) {
--                              vbprintf(2, "found DS records\n");
--                              dsset->ttl = ttl;
--                              dns_db_detach(&db);
--                              return (result);
--                      }
--              }
--              dns_db_detach(&db);
--      }
--
--      /* No DS records found; try again, looking for DNSKEY records */
--      opendb("keyset-", name, gclass, &db);
--      if (db == NULL) {
--              return (ISC_R_NOTFOUND);
--      }
--
--      result = dns_db_findnode(db, name, ISC_FALSE, &node);
--      if (result != ISC_R_SUCCESS) {
--              dns_db_detach(&db);
--              return (result);
--      }
--
--      dns_rdataset_init(&keyset);
--      result = dns_db_findrdataset(db, node, NULL, dns_rdatatype_dnskey, 0, 0,
--                                   &keyset, NULL);
--      if (result != ISC_R_SUCCESS) {
--              dns_db_detachnode(db, &node);
--              dns_db_detach(&db);
--              return (result);
--      }
--      vbprintf(2, "found DNSKEY records\n");
--
--      result = dns_db_newversion(db, &ver);
--      check_result(result, "dns_db_newversion");
--      dns_diff_init(mctx, &diff);
--
--      for (result = dns_rdataset_first(&keyset);
--           result == ISC_R_SUCCESS;
--           result = dns_rdataset_next(&keyset))
--      {
--              dns_rdata_init(&key);
--              dns_rdata_init(&ds);
--              dns_rdataset_current(&keyset, &key);
--              result = dns_ds_buildrdata(name, &key, DNS_DSDIGEST_SHA1,
--                                         dsbuf, &ds);
--              check_result(result, "dns_ds_buildrdata");
--
--              result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD, name,
--                                            ttl, &ds, &tuple);
--              check_result(result, "dns_difftuple_create");
--              dns_diff_append(&diff, &tuple);
--
--              dns_rdata_reset(&ds);
--              result = dns_ds_buildrdata(name, &key, DNS_DSDIGEST_SHA256,
--                                         dsbuf, &ds);
--              check_result(result, "dns_ds_buildrdata");
--
--              result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD, name,
--                                            ttl, &ds, &tuple);
--              check_result(result, "dns_difftuple_create");
--              dns_diff_append(&diff, &tuple);
--      }
--
--      result = dns_diff_apply(&diff, db, ver);
--      check_result(result, "dns_diff_apply");
--      dns_diff_clear(&diff);
--
--      dns_db_closeversion(db, &ver, ISC_TRUE);
--
--      result = dns_db_findrdataset(db, node, NULL, dns_rdatatype_ds, 0, 0,
--                                   dsset, NULL);
--      check_result(result, "dns_db_findrdataset");
--
--      dns_rdataset_disassociate(&keyset);
--      dns_db_detachnode(db, &node);
--      dns_db_detach(&db);
--      return (result);
--}
--
--static isc_boolean_t
--delegation(dns_name_t *name, dns_dbnode_t *node, isc_uint32_t *ttlp) {
--      dns_rdataset_t nsset;
--      isc_result_t result;
--
--      if (dns_name_equal(name, gorigin))
--              return (ISC_FALSE);
--
--      dns_rdataset_init(&nsset);
--      result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_ns,
--                                   0, 0, &nsset, NULL);
--      if (dns_rdataset_isassociated(&nsset)) {
--              if (ttlp != NULL)
--                      *ttlp = nsset.ttl;
--              dns_rdataset_disassociate(&nsset);
--      }
--
--      return (ISC_TF(result == ISC_R_SUCCESS));
--}
--
--static isc_boolean_t
--secure(dns_name_t *name, dns_dbnode_t *node) {
--      dns_rdataset_t dsset;
--      isc_result_t result;
--
--      if (dns_name_equal(name, gorigin))
--              return (ISC_FALSE);
--
--      dns_rdataset_init(&dsset);
--      result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_ds,
--                                   0, 0, &dsset, NULL);
--      if (dns_rdataset_isassociated(&dsset))
--              dns_rdataset_disassociate(&dsset);
--
--      return (ISC_TF(result == ISC_R_SUCCESS));
--}
--
--/*%
-- * Signs all records at a name.
-- */
--static void
--signname(dns_dbnode_t *node, dns_name_t *name) {
--      isc_result_t result;
--      dns_rdataset_t rdataset;
--      dns_rdatasetiter_t *rdsiter;
--      isc_boolean_t isdelegation = ISC_FALSE;
--      dns_diff_t del, add;
--      char namestr[DNS_NAME_FORMATSIZE];
--
--      dns_rdataset_init(&rdataset);
--      dns_name_format(name, namestr, sizeof(namestr));
--
--      /*
--       * Determine if this is a delegation point.
--       */
--      if (delegation(name, node, NULL))
--              isdelegation = ISC_TRUE;
--
--      /*
--       * Now iterate through the rdatasets.
--       */
--      dns_diff_init(mctx, &del);
--      dns_diff_init(mctx, &add);
--      rdsiter = NULL;
--      result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
--      check_result(result, "dns_db_allrdatasets()");
--      result = dns_rdatasetiter_first(rdsiter);
--      while (result == ISC_R_SUCCESS) {
--              dns_rdatasetiter_current(rdsiter, &rdataset);
--
--              /* If this is a RRSIG set, skip it. */
--              if (rdataset.type == dns_rdatatype_rrsig)
--                      goto skip;
--
--              /*
--               * If this name is a delegation point, skip all records
--               * except NSEC and DS sets.  Otherwise check that there
--               * isn't a DS record.
--               */
--              if (isdelegation) {
--                      if (rdataset.type != nsec_datatype &&
--                          rdataset.type != dns_rdatatype_ds)
--                              goto skip;
--              } else if (rdataset.type == dns_rdatatype_ds) {
--                      char namebuf[DNS_NAME_FORMATSIZE];
--                      dns_name_format(name, namebuf, sizeof(namebuf));
--                      fatal("'%s': found DS RRset without NS RRset\n",
--                            namebuf);
--              }
--
--              signset(&del, &add, node, name, &rdataset);
--
-- skip:
--              dns_rdataset_disassociate(&rdataset);
--              result = dns_rdatasetiter_next(rdsiter);
--      }
--      if (result != ISC_R_NOMORE)
--              fatal("rdataset iteration for name '%s' failed: %s",
--                    namestr, isc_result_totext(result));
--
--      dns_rdatasetiter_destroy(&rdsiter);
--
--      result = dns_diff_applysilently(&del, gdb, gversion);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to delete SIGs at node '%s': %s",
--                    namestr, isc_result_totext(result));
--
--      result = dns_diff_applysilently(&add, gdb, gversion);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to add SIGs at node '%s': %s",
--                    namestr, isc_result_totext(result));
--
--      dns_diff_clear(&del);
--      dns_diff_clear(&add);
--}
--
--static inline isc_boolean_t
--active_node(dns_dbnode_t *node) {
--      dns_rdatasetiter_t *rdsiter = NULL;
--      dns_rdatasetiter_t *rdsiter2 = NULL;
--      isc_boolean_t active = ISC_FALSE;
--      isc_result_t result;
--      dns_rdataset_t rdataset;
--      dns_rdatatype_t type;
--      dns_rdatatype_t covers;
--      isc_boolean_t found;
--
--      dns_rdataset_init(&rdataset);
--      result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
--      check_result(result, "dns_db_allrdatasets()");
--      result = dns_rdatasetiter_first(rdsiter);
--      while (result == ISC_R_SUCCESS) {
--              dns_rdatasetiter_current(rdsiter, &rdataset);
--              if (rdataset.type != dns_rdatatype_nsec &&
--                  rdataset.type != dns_rdatatype_nsec3 &&
--                  rdataset.type != dns_rdatatype_rrsig)
--                      active = ISC_TRUE;
--              dns_rdataset_disassociate(&rdataset);
--              if (!active)
--                      result = dns_rdatasetiter_next(rdsiter);
--              else
--                      result = ISC_R_NOMORE;
--      }
--      if (result != ISC_R_NOMORE)
--              fatal("rdataset iteration failed: %s",
--                    isc_result_totext(result));
--
--      if (!active && nsec_datatype == dns_rdatatype_nsec) {
--              /*%
--               * The node is empty of everything but NSEC / RRSIG records.
--               */
--              for (result = dns_rdatasetiter_first(rdsiter);
--                   result == ISC_R_SUCCESS;
--                   result = dns_rdatasetiter_next(rdsiter)) {
--                      dns_rdatasetiter_current(rdsiter, &rdataset);
--                      result = dns_db_deleterdataset(gdb, node, gversion,
--                                                     rdataset.type,
--                                                     rdataset.covers);
--                      check_result(result, "dns_db_deleterdataset()");
--                      dns_rdataset_disassociate(&rdataset);
--              }
--              if (result != ISC_R_NOMORE)
--                      fatal("rdataset iteration failed: %s",
--                            isc_result_totext(result));
--      } else {
--              /*
--               * Delete RRSIGs for types that no longer exist.
--               */
--              result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter2);
--              check_result(result, "dns_db_allrdatasets()");
--              for (result = dns_rdatasetiter_first(rdsiter);
--                   result == ISC_R_SUCCESS;
--                   result = dns_rdatasetiter_next(rdsiter)) {
--                      dns_rdatasetiter_current(rdsiter, &rdataset);
--                      type = rdataset.type;
--                      covers = rdataset.covers;
--                      dns_rdataset_disassociate(&rdataset);
-                       /*
-                        * Delete the NSEC chain if we are signing with
-                        * NSEC3.
-                        */
-                       if (nsec_datatype == dns_rdatatype_nsec3 &&
-                           (type == dns_rdatatype_nsec ||
-                            covers == dns_rdatatype_nsec)) {
-                               result = dns_db_deleterdataset(gdb, node,
-                                                              gversion, type,
-                                                              covers);
-                               check_result(result,
-                                          "dns_db_deleterdataset(nsec/rrsig)");
-                               continue;
-                       }
--                      if (type != dns_rdatatype_rrsig)
--                              continue;
--                      found = ISC_FALSE;
--                      for (result = dns_rdatasetiter_first(rdsiter2);
--                           !found && result == ISC_R_SUCCESS;
--                           result = dns_rdatasetiter_next(rdsiter2)) {
--                              dns_rdatasetiter_current(rdsiter2, &rdataset);
--                              if (rdataset.type == covers)
--                                      found = ISC_TRUE;
--                              dns_rdataset_disassociate(&rdataset);
--                      }
--                      if (!found) {
--                              if (result != ISC_R_NOMORE)
--                                      fatal("rdataset iteration failed: %s",
--                                            isc_result_totext(result));
--                              result = dns_db_deleterdataset(gdb, node,
--                                                             gversion, type,
--                                                             covers);
--                              check_result(result,
--                                           "dns_db_deleterdataset(rrsig)");
--                      } else if (result != ISC_R_NOMORE &&
--                                 result != ISC_R_SUCCESS)
--                              fatal("rdataset iteration failed: %s",
--                                    isc_result_totext(result));
--              }
--              if (result != ISC_R_NOMORE)
--                      fatal("rdataset iteration failed: %s",
--                            isc_result_totext(result));
--              dns_rdatasetiter_destroy(&rdsiter2);
 -
 -#if 0
 -              /*
 -               * Delete all NSEC records and RRSIG(NSEC) if we are in
 -               * NSEC3 mode and vica versa.
 -               */
 -              for (result = dns_rdatasetiter_first(rdsiter2);
 -                   result == ISC_R_SUCCESS;
 -                   result = dns_rdatasetiter_next(rdsiter2)) {
 -                      dns_rdatasetiter_current(rdsiter, &rdataset);
 -                      type = rdataset.type;
 -                      covers = rdataset.covers;
 -                      if (type == dns_rdatatype_rrsig)
 -                              type = covers;
 -                      dns_rdataset_disassociate(&rdataset);
 -                      if (type == nsec_datatype ||
 -                          (type != dns_rdatatype_nsec &&
 -                           type != dns_rdatatype_nsec3))
 -                              continue;
 -                      if (covers != 0)
 -                              type = dns_rdatatype_rrsig;
 -                      result = dns_db_deleterdataset(gdb, node, gversion,
 -                                                     type, covers);
 -                      check_result(result, "dns_db_deleterdataset()");
 -              }
 -#endif
--      }
--      dns_rdatasetiter_destroy(&rdsiter);
--
--      return (active);
--}
--
--/*%
-- * Extracts the minimum TTL from the SOA record, and the SOA record's TTL.
-- */
--static void
--get_soa_ttls(void) {
--      dns_rdataset_t soaset;
--      dns_fixedname_t fname;
--      dns_name_t *name;
--      isc_result_t result;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--
--      dns_fixedname_init(&fname);
--      name = dns_fixedname_name(&fname);
--      dns_rdataset_init(&soaset);
--      result = dns_db_find(gdb, gorigin, gversion, dns_rdatatype_soa,
--                           0, 0, NULL, name, &soaset, NULL);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find an SOA at the zone apex: %s",
--                    isc_result_totext(result));
--
--      result = dns_rdataset_first(&soaset);
--      check_result(result, "dns_rdataset_first");
--      dns_rdataset_current(&soaset, &rdata);
--      zone_soa_min_ttl = dns_soa_getminimum(&rdata);
--      soa_ttl = soaset.ttl;
--      dns_rdataset_disassociate(&soaset);
--}
--
--/*%
-- * Increment (or set if nonzero) the SOA serial
-- */
--static isc_result_t
--setsoaserial(isc_uint32_t serial) {
--      isc_result_t result;
--      dns_dbnode_t *node = NULL;
--      dns_rdataset_t rdataset;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      isc_uint32_t old_serial, new_serial;
--
--      result = dns_db_getoriginnode(gdb, &node);
--      if (result != ISC_R_SUCCESS)
--              return result;
--
--      dns_rdataset_init(&rdataset);
--
--      result = dns_db_findrdataset(gdb, node, gversion,
--                                   dns_rdatatype_soa, 0,
--                                   0, &rdataset, NULL);
--      if (result != ISC_R_SUCCESS)
--              goto cleanup;
--
--      result = dns_rdataset_first(&rdataset);
--      RUNTIME_CHECK(result == ISC_R_SUCCESS);
--
--      dns_rdataset_current(&rdataset, &rdata);
--
--      old_serial = dns_soa_getserial(&rdata);
--
--      if (serial) {
--              /* Set SOA serial to the value provided. */
--              new_serial = serial;
--      } else {
--              /* Increment SOA serial using RFC 1982 arithmetics */
--              new_serial = (old_serial + 1) & 0xFFFFFFFF;
--              if (new_serial == 0)
--                      new_serial = 1;
--      }
--
--      /* If the new serial is not likely to cause a zone transfer
--       * (a/ixfr) from servers having the old serial, warn the user.
--       *
--       * RFC1982 section 7 defines the maximum increment to be
--       * (2^(32-1))-1.  Using u_int32_t arithmetic, we can do a single
--       * comparison.  (5 - 6 == (2^32)-1, not negative-one)
--       */
--      if (new_serial == old_serial ||
--          (new_serial - old_serial) > 0x7fffffffU)
--              fprintf(stderr, "%s: warning: Serial number not advanced, "
--                      "zone may not transfer\n", program);
--
--      dns_soa_setserial(new_serial, &rdata);
--
--      result = dns_db_deleterdataset(gdb, node, gversion,
--                                     dns_rdatatype_soa, 0);
--      check_result(result, "dns_db_deleterdataset");
--      if (result != ISC_R_SUCCESS)
--              goto cleanup;
--
--      result = dns_db_addrdataset(gdb, node, gversion,
--                                  0, &rdataset, 0, NULL);
--      check_result(result, "dns_db_addrdataset");
--      if (result != ISC_R_SUCCESS)
--              goto cleanup;
--
--cleanup:
--      dns_rdataset_disassociate(&rdataset);
--      if (node != NULL)
--              dns_db_detachnode(gdb, &node);
--      dns_rdata_reset(&rdata);
--
--      return (result);
--}
--
--/*%
-- * Delete any RRSIG records at a node.
-- */
--static void
--cleannode(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node) {
--      dns_rdatasetiter_t *rdsiter = NULL;
--      dns_rdataset_t set;
--      isc_result_t result, dresult;
--
--      if (outputformat != dns_masterformat_text || !disable_zone_check)
--              return;
--
--      dns_rdataset_init(&set);
--      result = dns_db_allrdatasets(db, node, version, 0, &rdsiter);
--      check_result(result, "dns_db_allrdatasets");
--      result = dns_rdatasetiter_first(rdsiter);
--      while (result == ISC_R_SUCCESS) {
--              isc_boolean_t destroy = ISC_FALSE;
--              dns_rdatatype_t covers = 0;
--              dns_rdatasetiter_current(rdsiter, &set);
--              if (set.type == dns_rdatatype_rrsig) {
--                      covers = set.covers;
--                      destroy = ISC_TRUE;
--              }
--              dns_rdataset_disassociate(&set);
--              result = dns_rdatasetiter_next(rdsiter);
--              if (destroy) {
--                      dresult = dns_db_deleterdataset(db, node, version,
--                                                      dns_rdatatype_rrsig,
--                                                      covers);
--                      check_result(dresult, "dns_db_deleterdataset");
--              }
--      }
--      if (result != ISC_R_NOMORE)
--              fatal("rdataset iteration failed: %s",
--                    isc_result_totext(result));
--      dns_rdatasetiter_destroy(&rdsiter);
--}
--
--/*%
-- * Set up the iterator and global state before starting the tasks.
-- */
--static void
--presign(void) {
--      isc_result_t result;
--
--      gdbiter = NULL;
--      result = dns_db_createiterator(gdb, 0, &gdbiter);
--      check_result(result, "dns_db_createiterator()");
--}
--
--/*%
-- * Clean up the iterator and global state after the tasks complete.
-- */
--static void
--postsign(void) {
--      dns_dbiterator_destroy(&gdbiter);
--}
--
--static isc_boolean_t
--goodsig(dns_rdata_t *sigrdata, dns_name_t *name, dns_rdataset_t *keyrdataset,
--      dns_rdataset_t *rdataset)
--{
--      dns_rdata_dnskey_t key;
--      dns_rdata_rrsig_t sig;
--      dst_key_t *dstkey = NULL;
--      isc_result_t result;
--
--      dns_rdata_tostruct(sigrdata, &sig, NULL);
--
--      for (result = dns_rdataset_first(keyrdataset);
--           result == ISC_R_SUCCESS;
--           result = dns_rdataset_next(keyrdataset)) {
--              dns_rdata_t rdata = DNS_RDATA_INIT;
--              dns_rdataset_current(keyrdataset, &rdata);
--              dns_rdata_tostruct(&rdata, &key, NULL);
--              result = dns_dnssec_keyfromrdata(gorigin, &rdata, mctx,
--                                               &dstkey);
--              if (result != ISC_R_SUCCESS)
--                      return (ISC_FALSE);
--              if (sig.algorithm != key.algorithm ||
--                  sig.keyid != dst_key_id(dstkey) ||
--                  !dns_name_equal(&sig.signer, gorigin)) {
--                      dst_key_free(&dstkey);
--                      continue;
--              }
--              result = dns_dnssec_verify(name, rdataset, dstkey, ISC_FALSE,
--                                         mctx, sigrdata);
--              dst_key_free(&dstkey);
--              if (result == ISC_R_SUCCESS)
--                      return(ISC_TRUE);
--      }
--      return (ISC_FALSE);
--}
--
--static void
--verifyset(dns_rdataset_t *rdataset, dns_name_t *name, dns_dbnode_t *node,
--        dns_rdataset_t *keyrdataset, unsigned char *ksk_algorithms,
--        unsigned char *bad_algorithms)
--{
--      unsigned char set_algorithms[256];
--      char namebuf[DNS_NAME_FORMATSIZE];
--      char algbuf[80];
--      char typebuf[80];
--      dns_rdataset_t sigrdataset;
--      dns_rdatasetiter_t *rdsiter = NULL;
--      isc_result_t result;
--      int i;
--
--      dns_rdataset_init(&sigrdataset);
--      result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
--      check_result(result, "dns_db_allrdatasets()");
--      for (result = dns_rdatasetiter_first(rdsiter);
--           result == ISC_R_SUCCESS;
--           result = dns_rdatasetiter_next(rdsiter)) {
--              dns_rdatasetiter_current(rdsiter, &sigrdataset);
--              if (sigrdataset.type == dns_rdatatype_rrsig &&
--                  sigrdataset.covers == rdataset->type)
--                      break;
--              dns_rdataset_disassociate(&sigrdataset);
--      }
--      if (result != ISC_R_SUCCESS) {
--              dns_name_format(name, namebuf, sizeof(namebuf));
--              type_format(rdataset->type, typebuf, sizeof(typebuf));
--              fprintf(stderr, "no signatures for %s/%s\n", namebuf, typebuf);
--              for (i = 0; i < 256; i++)
--                      if (ksk_algorithms[i] != 0)
--                              bad_algorithms[i] = 1;
--              return;
--      }
--
--      memset(set_algorithms, 0, sizeof(set_algorithms));
--      for (result = dns_rdataset_first(&sigrdataset);
--           result == ISC_R_SUCCESS;
--           result = dns_rdataset_next(&sigrdataset)) {
--              dns_rdata_t rdata = DNS_RDATA_INIT;
--              dns_rdata_rrsig_t sig;
--
--              dns_rdataset_current(&sigrdataset, &rdata);
--              dns_rdata_tostruct(&rdata, &sig, NULL);
--              if ((set_algorithms[sig.algorithm] != 0) ||
--                  (ksk_algorithms[sig.algorithm] == 0))
--                      continue;
--              if (goodsig(&rdata, name, keyrdataset, rdataset))
--                      set_algorithms[sig.algorithm] = 1;
--      }
--      dns_rdatasetiter_destroy(&rdsiter);
--      if (memcmp(set_algorithms, ksk_algorithms, sizeof(set_algorithms))) {
--              dns_name_format(name, namebuf, sizeof(namebuf));
--              type_format(rdataset->type, typebuf, sizeof(typebuf));
--              for (i = 0; i < 256; i++)
--                      if ((ksk_algorithms[i] != 0) &&
--                          (set_algorithms[i] == 0)) {
--                              alg_format(i, algbuf, sizeof(algbuf));
--                              fprintf(stderr, "Missing %s signature for "
--                                      "%s %s\n", algbuf, namebuf, typebuf);
--                              bad_algorithms[i] = 1;
--                      }
--      }
--      dns_rdataset_disassociate(&sigrdataset);
--}
--
--static void
--verifynode(dns_name_t *name, dns_dbnode_t *node, isc_boolean_t delegation,
--         dns_rdataset_t *keyrdataset, unsigned char *ksk_algorithms,
--         unsigned char *bad_algorithms)
--{
--      dns_rdataset_t rdataset;
--      dns_rdatasetiter_t *rdsiter = NULL;
--      isc_result_t result;
--
--      result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
--      check_result(result, "dns_db_allrdatasets()");
--      result = dns_rdatasetiter_first(rdsiter);
--      dns_rdataset_init(&rdataset);
--      while (result == ISC_R_SUCCESS) {
--              dns_rdatasetiter_current(rdsiter, &rdataset);
--              if (rdataset.type != dns_rdatatype_rrsig &&
--                  rdataset.type != dns_rdatatype_dnskey &&
--                  (!delegation || rdataset.type == dns_rdatatype_ds ||
--                   rdataset.type == dns_rdatatype_nsec)) {
--                      verifyset(&rdataset, name, node, keyrdataset,
--                                ksk_algorithms, bad_algorithms);
--              }
--              dns_rdataset_disassociate(&rdataset);
--              result = dns_rdatasetiter_next(rdsiter);
--      }
--      if (result != ISC_R_NOMORE)
--              fatal("rdataset iteration failed: %s",
--                    isc_result_totext(result));
--      dns_rdatasetiter_destroy(&rdsiter);
--}
--
--/*%
-- * Verify that certain things are sane:
-- *
-- *   The apex has a DNSKEY record with at least one KSK and at least
-- *   one ZSK.
-- *
-- *   The DNSKEY record was signed with at least one of the KSKs in this
-- *   set.
-- *
-- *   The rest of the zone was signed with at least one of the ZSKs
-- *   present in the DNSKEY RRSET.
-- */
--static void
--verifyzone(void) {
--      char algbuf[80];
--      dns_dbiterator_t *dbiter = NULL;
--      dns_dbnode_t *node = NULL, *nextnode = NULL;
--      dns_fixedname_t fname, fnextname, fzonecut;
--      dns_name_t *name, *nextname, *zonecut;
--      dns_rdata_dnskey_t dnskey;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      dns_rdataset_t rdataset;
--      dns_rdataset_t sigrdataset;
--      int i;
--      isc_boolean_t done = ISC_FALSE;
--      isc_boolean_t first = ISC_TRUE;
--      isc_boolean_t goodksk = ISC_FALSE;
--      isc_boolean_t goodzsk = ISC_FALSE;
--      isc_result_t result;
-       unsigned char revoked_ksk[256];
-       unsigned char revoked_zsk[256];
-       unsigned char standby_ksk[256];
-       unsigned char standby_zsk[256];
 -      unsigned char revoked[256];
 -      unsigned char standby[256];
--      unsigned char ksk_algorithms[256];
--      unsigned char zsk_algorithms[256];
--      unsigned char bad_algorithms[256];
--#ifdef ALLOW_KSKLESS_ZONES
--      isc_boolean_t allzsksigned = ISC_TRUE;
--      unsigned char self_algorithms[256];
--#endif
--
--      if (disable_zone_check)
--              return;
--
--      result = dns_db_findnode(gdb, gorigin, ISC_FALSE, &node);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find the zone's origin: %s",
--                    isc_result_totext(result));
--
--      dns_rdataset_init(&rdataset);
--      dns_rdataset_init(&sigrdataset);
--      result = dns_db_findrdataset(gdb, node, gversion,
--                                   dns_rdatatype_dnskey,
--                                   0, 0, &rdataset, &sigrdataset);
--      dns_db_detachnode(gdb, &node);
--      if (result != ISC_R_SUCCESS)
--              fatal("cannot find DNSKEY rrset\n");
--
--      if (!dns_rdataset_isassociated(&sigrdataset))
--              fatal("cannot find DNSKEY RRSIGs\n");
--
-       memset(revoked_ksk, 0, sizeof(revoked_ksk));
-       memset(revoked_zsk, 0, sizeof(revoked_zsk));
-       memset(standby_ksk, 0, sizeof(standby_ksk));
-       memset(standby_zsk, 0, sizeof(standby_zsk));
 -      memset(revoked, 0, sizeof(revoked));
 -      memset(standby, 0, sizeof(revoked));
--      memset(ksk_algorithms, 0, sizeof(ksk_algorithms));
--      memset(zsk_algorithms, 0, sizeof(zsk_algorithms));
--      memset(bad_algorithms, 0, sizeof(bad_algorithms));
--#ifdef ALLOW_KSKLESS_ZONES
--      memset(self_algorithms, 0, sizeof(self_algorithms));
--#endif
--
--      /*
--       * Check that the DNSKEY RR has at least one self signing KSK and
--       * one ZSK per algorithm in it.
--       */
--      for (result = dns_rdataset_first(&rdataset);
--           result == ISC_R_SUCCESS;
--           result = dns_rdataset_next(&rdataset)) {
--              dns_rdataset_current(&rdataset, &rdata);
--              result = dns_rdata_tostruct(&rdata, &dnskey, NULL);
--              check_result(result, "dns_rdata_tostruct");
--
--              if ((dnskey.flags & DNS_KEYOWNER_ZONE) == 0)
--                      ;
--              else if ((dnskey.flags & DNS_KEYFLAG_REVOKE) != 0) {
--                      if ((dnskey.flags & DNS_KEYFLAG_KSK) != 0 &&
--                          !dns_dnssec_selfsigns(&rdata, gorigin, &rdataset,
--                                                &sigrdataset, ISC_FALSE,
--                                                mctx)) {
--                              char namebuf[DNS_NAME_FORMATSIZE];
--                              char buffer[1024];
--                              isc_buffer_t buf;
--
--                              dns_name_format(gorigin, namebuf,
--                                              sizeof(namebuf));
--                              isc_buffer_init(&buf, buffer, sizeof(buffer));
--                              result = dns_rdata_totext(&rdata, NULL, &buf);
--                              check_result(result, "dns_rdata_totext");
--                              fatal("revoked KSK is not self signed:\n"
--                                    "%s DNSKEY %.*s", namebuf,
--                                    (int)isc_buffer_usedlength(&buf), buffer);
--                      }
--                      if ((dnskey.flags & DNS_KEYFLAG_KSK) != 0 &&
-                            revoked_ksk[dnskey.algorithm] != 255)
-                               revoked_ksk[dnskey.algorithm]++;
-                       else if ((dnskey.flags & DNS_KEYFLAG_KSK) == 0 &&
-                                revoked_zsk[dnskey.algorithm] != 255)
-                               revoked_zsk[dnskey.algorithm]++;
 -                           revoked[dnskey.algorithm] != 255)
 -                              revoked[dnskey.algorithm]++;
--              } else if ((dnskey.flags & DNS_KEYFLAG_KSK) != 0) {
--                      if (dns_dnssec_selfsigns(&rdata, gorigin, &rdataset,
--                                            &sigrdataset, ISC_FALSE, mctx)) {
--                              if (ksk_algorithms[dnskey.algorithm] != 255)
--                                      ksk_algorithms[dnskey.algorithm]++;
--                              goodksk = ISC_TRUE;
--                      } else {
-                               if (standby_ksk[dnskey.algorithm] != 255)
-                                       standby_ksk[dnskey.algorithm]++;
 -                              if (standby[dnskey.algorithm] != 255)
 -                                      standby[dnskey.algorithm]++;
--                      }
--              } else if (dns_dnssec_selfsigns(&rdata, gorigin, &rdataset,
--                                              &sigrdataset, ISC_FALSE,
--                                              mctx)) {
--#ifdef ALLOW_KSKLESS_ZONES
--                      if (self_algorithms[dnskey.algorithm] != 255)
--                              self_algorithms[dnskey.algorithm]++;
--#endif
--                      if (zsk_algorithms[dnskey.algorithm] != 255)
--                              zsk_algorithms[dnskey.algorithm]++;
--                      goodzsk = ISC_TRUE;
--              } else {
-                       if (standby_zsk[dnskey.algorithm] != 255)
-                               standby_zsk[dnskey.algorithm]++;
 -                      if (zsk_algorithms[dnskey.algorithm] != 255)
 -                              zsk_algorithms[dnskey.algorithm]++;
--#ifdef ALLOW_KSKLESS_ZONES
--                      allzsksigned = ISC_FALSE;
--#endif
--              }
--              dns_rdata_freestruct(&dnskey);
--              dns_rdata_reset(&rdata);
--      }
--      dns_rdataset_disassociate(&sigrdataset);
--
--      if (!goodksk) {
--#ifdef ALLOW_KSKLESS_ZONES
--              if (!goodzsk)
--                      fatal("no self signing keys found");
--              fprintf(stderr, "No self signing KSK found. Using self signed "
--                      "ZSK's for active algorithm list.\n");
--              memcpy(ksk_algorithms, self_algorithms, sizeof(ksk_algorithms));
--              if (!allzsksigned)
--                      fprintf(stderr, "warning: not all ZSK's are self "
--                              "signed.\n");
--#else
--              fatal("no self signed KSK's found");
--#endif
--      }
--
--      fprintf(stderr, "Verifying the zone using the following algorithms:");
--      for (i = 0; i < 256; i++) {
--              if (ksk_algorithms[i] != 0) {
--                      alg_format(i, algbuf, sizeof(algbuf));
--                      fprintf(stderr, " %s", algbuf);
--              }
--      }
--      fprintf(stderr, ".\n");
--
--      for (i = 0; i < 256; i++) {
--              /*
--               * The counts should both be zero or both be non-zero.
--               * Mark the algorithm as bad if this is not met.
--               */
--              if ((ksk_algorithms[i] != 0) == (zsk_algorithms[i] != 0))
--                      continue;
--              alg_format(i, algbuf, sizeof(algbuf));
--              fprintf(stderr, "Missing %s for algorithm %s\n",
--                      (ksk_algorithms[i] != 0) ? "ZSK" : "self signing KSK",
--                      algbuf);
--              bad_algorithms[i] = 1;
--      }
--
--      /*
--       * Check that all the other records were signed by keys that are
--       * present in the DNSKEY RRSET.
--       */
--
--      dns_fixedname_init(&fname);
--      name = dns_fixedname_name(&fname);
--      dns_fixedname_init(&fnextname);
--      nextname = dns_fixedname_name(&fnextname);
--      dns_fixedname_init(&fzonecut);
--      zonecut = NULL;
--
--      result = dns_db_createiterator(gdb, DNS_DB_NONSEC3, &dbiter);
--      check_result(result, "dns_db_createiterator()");
--
--      result = dns_dbiterator_first(dbiter);
--      check_result(result, "dns_dbiterator_first()");
--
--      while (!done) {
--              isc_boolean_t isdelegation = ISC_FALSE;
--
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              dns_dbiterator_current(dbiter, &node, name);
--              if (delegation(name, node, NULL)) {
--                      zonecut = dns_fixedname_name(&fzonecut);
--                      dns_name_copy(name, zonecut, NULL);
--                      isdelegation = ISC_TRUE;
--              }
--              verifynode(name, node, isdelegation, &rdataset,
--                         ksk_algorithms, bad_algorithms);
--              result = dns_dbiterator_next(dbiter);
--              nextnode = NULL;
--              while (result == ISC_R_SUCCESS) {
--                      result = dns_dbiterator_current(dbiter, &nextnode,
--                                                      nextname);
-                       check_dns_dbiterator_current(result);
 -                      if (result != ISC_R_SUCCESS)
 -                              break;
--                      if (!dns_name_issubdomain(nextname, gorigin) ||
--                          (zonecut != NULL &&
--                           dns_name_issubdomain(nextname, zonecut)))
--                      {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      dns_db_detachnode(gdb, &nextnode);
--                      break;
--              }
--              if (result == ISC_R_NOMORE) {
--                      done = ISC_TRUE;
--              } else if (result != ISC_R_SUCCESS)
--                      fatal("iterating through the database failed: %s",
--                            isc_result_totext(result));
--              dns_db_detachnode(gdb, &node);
--      }
--
--      dns_dbiterator_destroy(&dbiter);
--
--      result = dns_db_createiterator(gdb, DNS_DB_NSEC3ONLY, &dbiter);
--      check_result(result, "dns_db_createiterator()");
--
--      for (result = dns_dbiterator_first(dbiter);
--           result == ISC_R_SUCCESS;
--           result = dns_dbiterator_next(dbiter) ) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              dns_dbiterator_current(dbiter, &node, name);
--              verifynode(name, node, ISC_FALSE, &rdataset,
--                         ksk_algorithms, bad_algorithms);
--              dns_db_detachnode(gdb, &node);
--      }
--      dns_dbiterator_destroy(&dbiter);
--
--      dns_rdataset_disassociate(&rdataset);
--
--      /*
--       * If we made it this far, we have what we consider a properly signed
--       * zone.  Set the good flag.
--       */
--      for (i = 0; i < 256; i++) {
--              if (bad_algorithms[i] != 0) {
--                      if (first)
--                              fprintf(stderr, "The zone is not fully signed "
--                                      "for the following algorithms:");
--                      alg_format(i, algbuf, sizeof(algbuf));
--                      fprintf(stderr, " %s", algbuf);
--                      first = ISC_FALSE;
--              }
--      }
--      if (!first) {
--              fprintf(stderr, ".\n");
--              fatal("DNSSEC completeness test failed.");
--      }
--
--      if (goodksk) {
--              /*
--               * Print the success summary.
--               */
--              fprintf(stderr, "Zone signing complete:\n");
--              for (i = 0; i < 256; i++) {
--                      if ((zsk_algorithms[i] != 0) ||
--                          (ksk_algorithms[i] != 0) ||
-                           (standby_zsk[i] != 0) || (standby_ksk[i] != 0) ||
-                           (revoked_ksk[i] != 0) || (revoked_zsk[i] != 0)) {
 -                          (revoked[i] != 0) || (standby[i] != 0)) {
--                              alg_format(i, algbuf, sizeof(algbuf));
-                               fprintf(stderr, "Algorithm: %s: KSKs: "
-                                       "%u active, %u stand-by, %u revoked\n",
-                                       algbuf, ksk_algorithms[i],
-                                       standby_ksk[i], revoked_ksk[i]);
-                               fprintf(stderr, "%*sZSKs: "
-                                       "%u active, %u stand-by, %u revoked\n",
-                                       (int) strlen(algbuf) + 13, "",
-                                       zsk_algorithms[i],
-                                       standby_zsk[i], revoked_zsk[i]);
 -                              fprintf(stderr, "Algorithm: %s: ZSKs: %u, "
 -                                      "KSKs: %u active, %u revoked, %u "
 -                                      "stand-by\n", algbuf,
 -                                      zsk_algorithms[i], ksk_algorithms[i],
 -                                      revoked[i], standby[i]);
--                      }
--              }
--      }
--}
--
--/*%
-- * Sign the apex of the zone.
-- * Note the origin may not be the first node if there are out of zone
-- * records.
-- */
--static void
--signapex(void) {
--      dns_dbnode_t *node = NULL;
--      dns_fixedname_t fixed;
--      dns_name_t *name;
--      isc_result_t result;
--
--      dns_fixedname_init(&fixed);
--      name = dns_fixedname_name(&fixed);
--      result = dns_dbiterator_seek(gdbiter, gorigin);
--      check_result(result, "dns_dbiterator_seek()");
--      result = dns_dbiterator_current(gdbiter, &node, name);
-       check_dns_dbiterator_current(result);
 -      check_result(result, "dns_dbiterator_current()");
--      signname(node, name);
--      dumpnode(name, node);
--      cleannode(gdb, gversion, node);
--      dns_db_detachnode(gdb, &node);
--      result = dns_dbiterator_first(gdbiter);
--      if (result == ISC_R_NOMORE)
--              finished = ISC_TRUE;
--      else if (result != ISC_R_SUCCESS)
--              fatal("failure iterating database: %s",
--                    isc_result_totext(result));
--}
--
--/*%
-- * Assigns a node to a worker thread.  This is protected by the master task's
-- * lock.
-- */
--static void
--assignwork(isc_task_t *task, isc_task_t *worker) {
--      dns_fixedname_t *fname;
--      dns_name_t *name;
--      dns_dbnode_t *node;
--      sevent_t *sevent;
--      dns_rdataset_t nsec;
--      isc_boolean_t found;
--      isc_result_t result;
--      static dns_name_t *zonecut = NULL;      /* Protected by namelock. */
--      static dns_fixedname_t fzonecut;        /* Protected by namelock. */
--      static unsigned int ended = 0;          /* Protected by namelock. */
--
--      if (shuttingdown)
--              return;
--
--      LOCK(&namelock);
--      if (finished) {
--              ended++;
--              if (ended == ntasks) {
--                      isc_task_detach(&task);
--                      isc_app_shutdown();
--              }
--              goto unlock;
--      }
--
--      fname = isc_mem_get(mctx, sizeof(dns_fixedname_t));
--      if (fname == NULL)
--              fatal("out of memory");
--      dns_fixedname_init(fname);
--      name = dns_fixedname_name(fname);
--      node = NULL;
--      found = ISC_FALSE;
--      while (!found) {
--              result = dns_dbiterator_current(gdbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              if (result != ISC_R_SUCCESS)
 -                      fatal("failure iterating database: %s",
 -                            isc_result_totext(result));
--              /*
--               * The origin was handled by signapex().
--               */
--              if (dns_name_equal(name, gorigin)) {
--                      dns_db_detachnode(gdb, &node);
--                      goto next;
--              }
--              /*
--               * Sort the zone data from the glue and out-of-zone data.
--               * For NSEC zones nodes with zone data have NSEC records.
--               * For NSEC3 zones the NSEC3 nodes are zone data but
--               * outside of the zone name space.  For the rest we need
--               * to track the bottom of zone cuts.
--               * Nodes which don't need to be signed are dumped here.
--               */
--              dns_rdataset_init(&nsec);
--              result = dns_db_findrdataset(gdb, node, gversion,
--                                           nsec_datatype, 0, 0,
--                                           &nsec, NULL);
--              if (dns_rdataset_isassociated(&nsec))
--                      dns_rdataset_disassociate(&nsec);
--              if (result == ISC_R_SUCCESS) {
--                      found = ISC_TRUE;
--              } else if (nsec_datatype == dns_rdatatype_nsec3) {
--                      if (dns_name_issubdomain(name, gorigin) &&
--                          (zonecut == NULL ||
--                           !dns_name_issubdomain(name, zonecut))) {
--                              if (delegation(name, node, NULL)) {
--                                      dns_fixedname_init(&fzonecut);
--                                      zonecut = dns_fixedname_name(&fzonecut);
--                                      dns_name_copy(name, zonecut, NULL);
--                                      if (!OPTOUT(nsec3flags) ||
--                                          secure(name, node))
--                                              found = ISC_TRUE;
--                              } else
--                                      found = ISC_TRUE;
--                      }
--              }
--
--              if (!found) {
--                      dumpnode(name, node);
--                      dns_db_detachnode(gdb, &node);
--              }
--
-- next:
--              result = dns_dbiterator_next(gdbiter);
--              if (result == ISC_R_NOMORE) {
--                      finished = ISC_TRUE;
--                      break;
--              } else if (result != ISC_R_SUCCESS)
--                      fatal("failure iterating database: %s",
--                            isc_result_totext(result));
--      }
--      if (!found) {
--              ended++;
--              if (ended == ntasks) {
--                      isc_task_detach(&task);
--                      isc_app_shutdown();
--              }
--              isc_mem_put(mctx, fname, sizeof(dns_fixedname_t));
--              goto unlock;
--      }
--      sevent = (sevent_t *)
--               isc_event_allocate(mctx, task, SIGNER_EVENT_WORK,
--                                  sign, NULL, sizeof(sevent_t));
--      if (sevent == NULL)
--              fatal("failed to allocate event\n");
--
--      sevent->node = node;
--      sevent->fname = fname;
--      isc_task_send(worker, ISC_EVENT_PTR(&sevent));
-- unlock:
--      UNLOCK(&namelock);
--}
--
--/*%
-- * Start a worker task
-- */
--static void
--startworker(isc_task_t *task, isc_event_t *event) {
--      isc_task_t *worker;
--
--      worker = (isc_task_t *)event->ev_arg;
--      assignwork(task, worker);
--      isc_event_free(&event);
--}
--
--/*%
-- * Write a node to the output file, and restart the worker task.
-- */
--static void
--writenode(isc_task_t *task, isc_event_t *event) {
--      isc_task_t *worker;
--      sevent_t *sevent = (sevent_t *)event;
--
--      worker = (isc_task_t *)event->ev_sender;
--      dumpnode(dns_fixedname_name(sevent->fname), sevent->node);
--      cleannode(gdb, gversion, sevent->node);
--      dns_db_detachnode(gdb, &sevent->node);
--      isc_mem_put(mctx, sevent->fname, sizeof(dns_fixedname_t));
--      assignwork(task, worker);
--      isc_event_free(&event);
--}
--
--/*%
-- *  Sign a database node.
-- */
--static void
--sign(isc_task_t *task, isc_event_t *event) {
--      dns_fixedname_t *fname;
--      dns_dbnode_t *node;
--      sevent_t *sevent, *wevent;
--
--      sevent = (sevent_t *)event;
--      node = sevent->node;
--      fname = sevent->fname;
--      isc_event_free(&event);
--
--      signname(node, dns_fixedname_name(fname));
--      wevent = (sevent_t *)
--               isc_event_allocate(mctx, task, SIGNER_EVENT_WRITE,
--                                  writenode, NULL, sizeof(sevent_t));
--      if (wevent == NULL)
--              fatal("failed to allocate event\n");
--      wevent->node = node;
--      wevent->fname = fname;
--      isc_task_send(master, ISC_EVENT_PTR(&wevent));
--}
--
--/*%
-- * Update / remove the DS RRset.  Preserve RRSIG(DS) if possible.
-- */
--static void
--add_ds(dns_name_t *name, dns_dbnode_t *node, isc_uint32_t nsttl) {
--      dns_rdataset_t dsset;
--      dns_rdataset_t sigdsset;
--      isc_result_t result;
--
--      dns_rdataset_init(&dsset);
--      dns_rdataset_init(&sigdsset);
--      result = dns_db_findrdataset(gdb, node, gversion,
--                                   dns_rdatatype_ds,
--                                   0, 0, &dsset, &sigdsset);
--      if (result == ISC_R_SUCCESS) {
--              dns_rdataset_disassociate(&dsset);
--              result = dns_db_deleterdataset(gdb, node, gversion,
--                                             dns_rdatatype_ds, 0);
--              check_result(result, "dns_db_deleterdataset");
--      }
--
--      result = loadds(name, nsttl, &dsset);
--      if (result == ISC_R_SUCCESS) {
--              result = dns_db_addrdataset(gdb, node, gversion, 0,
--                                          &dsset, 0, NULL);
--              check_result(result, "dns_db_addrdataset");
--              dns_rdataset_disassociate(&dsset);
--              if (dns_rdataset_isassociated(&sigdsset))
--                      dns_rdataset_disassociate(&sigdsset);
--      } else if (dns_rdataset_isassociated(&sigdsset)) {
--              result = dns_db_deleterdataset(gdb, node, gversion,
--                                             dns_rdatatype_rrsig,
--                                             dns_rdatatype_ds);
--              check_result(result, "dns_db_deleterdataset");
--              dns_rdataset_disassociate(&sigdsset);
--      }
--}
--
--/*%
-  * Generate NSEC records for the zone and remove NSEC3/NSEC3PARAM records
 - * Generate NSEC records for the zone.
-- */
--static void
--nsecify(void) {
--      dns_dbiterator_t *dbiter = NULL;
--      dns_dbnode_t *node = NULL, *nextnode = NULL;
--      dns_fixedname_t fname, fnextname, fzonecut;
--      dns_name_t *name, *nextname, *zonecut;
-       dns_rdataset_t rdataset;
-       dns_rdatasetiter_t *rdsiter = NULL;
-       dns_rdatatype_t type, covers;
--      isc_boolean_t done = ISC_FALSE;
--      isc_result_t result;
--      isc_uint32_t nsttl = 0;
--
-       dns_rdataset_init(&rdataset);
--      dns_fixedname_init(&fname);
--      name = dns_fixedname_name(&fname);
--      dns_fixedname_init(&fnextname);
--      nextname = dns_fixedname_name(&fnextname);
--      dns_fixedname_init(&fzonecut);
--      zonecut = NULL;
--
-       /*
-        * Remove any NSEC3 chains.
-        */
-       result = dns_db_createiterator(gdb, DNS_DB_NSEC3ONLY, &dbiter);
-       check_result(result, "dns_db_createiterator()");
-       for (result = dns_dbiterator_first(dbiter);
-            result == ISC_R_SUCCESS;
-            result = dns_dbiterator_next(dbiter)) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
-               result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
-               check_result(result, "dns_db_allrdatasets()");
-               for (result = dns_rdatasetiter_first(rdsiter);
-                    result == ISC_R_SUCCESS;
-                    result = dns_rdatasetiter_next(rdsiter)) {
-                       dns_rdatasetiter_current(rdsiter, &rdataset);
-                       type = rdataset.type;
-                       covers = rdataset.covers;
-                       dns_rdataset_disassociate(&rdataset);
-                       result = dns_db_deleterdataset(gdb, node, gversion, type,
-                                                      covers);
-                       check_result(result,
-                                    "dns_db_deleterdataset(nsec3param/rrsig)");
-               }
-               dns_rdatasetiter_destroy(&rdsiter);
-               dns_db_detachnode(gdb, &node);
-       }
-       dns_dbiterator_destroy(&dbiter);
-       
--      result = dns_db_createiterator(gdb, DNS_DB_NONSEC3, &dbiter);
--      check_result(result, "dns_db_createiterator()");
--
--      result = dns_dbiterator_first(dbiter);
--      check_result(result, "dns_dbiterator_first()");
-       result = dns_dbiterator_current(dbiter, &node, name);
-       check_dns_dbiterator_current(result);
-       /*
-        * Delete any NSEC3PARAM records at the apex.
-        */
-       result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
-       check_result(result, "dns_db_allrdatasets()");
-       for (result = dns_rdatasetiter_first(rdsiter);
-            result == ISC_R_SUCCESS;
-            result = dns_rdatasetiter_next(rdsiter)) {
-               dns_rdatasetiter_current(rdsiter, &rdataset);
-               type = rdataset.type;
-               covers = rdataset.covers;
-               dns_rdataset_disassociate(&rdataset);
-               if (type == dns_rdatatype_nsec3param ||
-                   covers == dns_rdatatype_nsec3param) {
-                       result = dns_db_deleterdataset(gdb, node, gversion,
-                                                      type, covers);
-                       check_result(result,
-                                    "dns_db_deleterdataset(nsec3param/rrsig)");
-                       continue;
-               }
-       }
-       dns_rdatasetiter_destroy(&rdsiter);
-       dns_db_detachnode(gdb, &node);
--
--      while (!done) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              dns_dbiterator_current(dbiter, &node, name);
--              if (delegation(name, node, &nsttl)) {
--                      zonecut = dns_fixedname_name(&fzonecut);
--                      dns_name_copy(name, zonecut, NULL);
--                      if (generateds)
--                              add_ds(name, node, nsttl);
--              }
--              result = dns_dbiterator_next(dbiter);
--              nextnode = NULL;
--              while (result == ISC_R_SUCCESS) {
--                      isc_boolean_t active = ISC_FALSE;
--                      result = dns_dbiterator_current(dbiter, &nextnode,
--                                                      nextname);
-                       check_dns_dbiterator_current(result);
 -                      if (result != ISC_R_SUCCESS)
 -                              break;
--                      active = active_node(nextnode);
--                      if (!active) {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      if (!dns_name_issubdomain(nextname, gorigin) ||
--                          (zonecut != NULL &&
--                           dns_name_issubdomain(nextname, zonecut)))
--                      {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      dns_db_detachnode(gdb, &nextnode);
--                      break;
--              }
--              if (result == ISC_R_NOMORE) {
--                      dns_name_clone(gorigin, nextname);
--                      done = ISC_TRUE;
--              } else if (result != ISC_R_SUCCESS)
--                      fatal("iterating through the database failed: %s",
--                            isc_result_totext(result));
--              result = dns_nsec_build(gdb, gversion, node, nextname,
--                                      zone_soa_min_ttl);
--              check_result(result, "dns_nsec_build()");
--              dns_db_detachnode(gdb, &node);
--      }
--
--      dns_dbiterator_destroy(&dbiter);
 -}
 -
 -/*%
 - * Does this node only contain NSEC3 records or RRSIG records or is empty.
 - */
 -static isc_boolean_t
 -nsec3only(dns_dbnode_t *node) {
 -      dns_rdatasetiter_t *rdsiter = NULL;
 -      isc_result_t result;
 -      dns_rdataset_t rdataset;
 -      isc_boolean_t answer = ISC_TRUE;
 -
 -      dns_rdataset_init(&rdataset);
 -      result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
 -      check_result(result, "dns_db_allrdatasets()");
 -      result = dns_rdatasetiter_first(rdsiter);
 -      while (result == ISC_R_SUCCESS) {
 -              dns_rdatasetiter_current(rdsiter, &rdataset);
 -              if (rdataset.type != dns_rdatatype_nsec3 &&
 -                  rdataset.type != dns_rdatatype_rrsig) {
 -                      answer = ISC_FALSE;
 -                      result = ISC_R_NOMORE;
 -              } else
 -                      result = dns_rdatasetiter_next(rdsiter);
 -              dns_rdataset_disassociate(&rdataset);
 -      }
 -      if (result != ISC_R_NOMORE)
 -              fatal("rdataset iteration failed: %s",
 -                    isc_result_totext(result));
 -      dns_rdatasetiter_destroy(&rdsiter);
 -      return (answer);
--}
--
--static void
--addnsec3param(const unsigned char *salt, size_t salt_length,
--            unsigned int iterations)
--{
--      dns_dbnode_t *node = NULL;
--      dns_rdata_nsec3param_t nsec3param;
--      unsigned char nsec3parambuf[5 + 255];
--      dns_rdatalist_t rdatalist;
--      dns_rdataset_t rdataset;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      isc_buffer_t b;
--      isc_result_t result;
--
--      dns_rdataset_init(&rdataset);
--
--      nsec3param.common.rdclass = gclass;
--      nsec3param.common.rdtype = dns_rdatatype_nsec3param;
--      ISC_LINK_INIT(&nsec3param.common, link);
--      nsec3param.mctx = NULL;
--      nsec3param.flags = 0;
--      nsec3param.hash = unknownalg ? DNS_NSEC3_UNKNOWNALG : dns_hash_sha1;
--      nsec3param.iterations = iterations;
--      nsec3param.salt_length = salt_length;
--      DE_CONST(salt, nsec3param.salt);
--
--      isc_buffer_init(&b, nsec3parambuf, sizeof(nsec3parambuf));
--      result = dns_rdata_fromstruct(&rdata, gclass,
--                                    dns_rdatatype_nsec3param,
--                                    &nsec3param, &b);
--      rdatalist.rdclass = rdata.rdclass;
--      rdatalist.type = rdata.type;
--      rdatalist.covers = 0;
--      rdatalist.ttl = 0;
--      ISC_LIST_INIT(rdatalist.rdata);
--      ISC_LIST_APPEND(rdatalist.rdata, &rdata, link);
--      result = dns_rdatalist_tordataset(&rdatalist, &rdataset);
--      check_result(result, "dns_rdatalist_tordataset()");
--
--      result = dns_db_findnode(gdb, gorigin, ISC_TRUE, &node);
--      check_result(result, "dns_db_find(gorigin)");
-       /*
-        * Delete any current NSEC3PARAM records.
-        */
-       result = dns_db_deleterdataset(gdb, node, gversion,
-                                      dns_rdatatype_nsec3param, 0);
-       if (result == DNS_R_UNCHANGED)
-               result = ISC_R_SUCCESS;
-       check_result(result, "dddnsec3param: dns_db_deleterdataset()");
--      result = dns_db_addrdataset(gdb, node, gversion, 0, &rdataset,
--                                  DNS_DBADD_MERGE, NULL);
--      if (result == DNS_R_UNCHANGED)
--              result = ISC_R_SUCCESS;
--      check_result(result, "addnsec3param: dns_db_addrdataset()");
--      dns_db_detachnode(gdb, &node);
--}
--
--static void
--addnsec3(dns_name_t *name, dns_dbnode_t *node,
--       const unsigned char *salt, size_t salt_length,
--       unsigned int iterations, hashlist_t *hashlist,
--       dns_ttl_t ttl)
--{
--      unsigned char hash[NSEC3_MAX_HASH_LENGTH];
--      const unsigned char *nexthash;
--      unsigned char nsec3buffer[DNS_NSEC3_BUFFERSIZE];
--      dns_fixedname_t hashname;
--      dns_rdatalist_t rdatalist;
--      dns_rdataset_t rdataset;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      isc_result_t result;
--      dns_dbnode_t *nsec3node = NULL;
--      char namebuf[DNS_NAME_FORMATSIZE];
--      size_t hash_length;
--
--      dns_name_format(name, namebuf, sizeof(namebuf));
--
--      dns_fixedname_init(&hashname);
--      dns_rdataset_init(&rdataset);
--
--      dns_name_downcase(name, name, NULL);
--      result = dns_nsec3_hashname(&hashname, hash, &hash_length,
--                                  name, gorigin, dns_hash_sha1, iterations,
--                                  salt, salt_length);
--      check_result(result, "addnsec3: dns_nsec3_hashname()");
--      nexthash = hashlist_findnext(hashlist, hash);
--      result = dns_nsec3_buildrdata(gdb, gversion, node,
--                                    unknownalg ?
--                                        DNS_NSEC3_UNKNOWNALG : dns_hash_sha1,
--                                    nsec3flags, iterations,
--                                    salt, salt_length,
--                                    nexthash, ISC_SHA1_DIGESTLENGTH,
--                                    nsec3buffer, &rdata);
--      check_result(result, "addnsec3: dns_nsec3_buildrdata()");
--      rdatalist.rdclass = rdata.rdclass;
--      rdatalist.type = rdata.type;
--      rdatalist.covers = 0;
--      rdatalist.ttl = ttl;
--      ISC_LIST_INIT(rdatalist.rdata);
--      ISC_LIST_APPEND(rdatalist.rdata, &rdata, link);
--      result = dns_rdatalist_tordataset(&rdatalist, &rdataset);
--      check_result(result, "dns_rdatalist_tordataset()");
--      result = dns_db_findnsec3node(gdb, dns_fixedname_name(&hashname),
--                                    ISC_TRUE, &nsec3node);
--      check_result(result, "addnsec3: dns_db_findnode()");
--      result = dns_db_addrdataset(gdb, nsec3node, gversion, 0, &rdataset,
--                                  0, NULL);
--      if (result == DNS_R_UNCHANGED)
--              result = ISC_R_SUCCESS;
--      check_result(result, "addnsec3: dns_db_addrdataset()");
--      dns_db_detachnode(gdb, &nsec3node);
--}
--
--/*%
-- * Clean out NSEC3 record and RRSIG(NSEC3) that are not in the hash list.
-- *
-- * Extract the hash from the first label of 'name' then see if it
-- * is in hashlist.  If 'name' is not in the hashlist then delete the
-- * any NSEC3 records which have the same parameters as the chain we
-- * are building.
-- *
-- * XXXMPA Should we also check that it of the form <hash>.<origin>?
-- */
--static void
--nsec3clean(dns_name_t *name, dns_dbnode_t *node,
--         unsigned int hashalg, unsigned int iterations,
--         const unsigned char *salt, size_t salt_length, hashlist_t *hashlist)
--{
--      dns_label_t label;
--      dns_rdata_nsec3_t nsec3;
--      dns_rdata_t rdata, delrdata;
--      dns_rdatalist_t rdatalist;
--      dns_rdataset_t rdataset, delrdataset;
--      isc_boolean_t delete_rrsigs = ISC_FALSE;
--      isc_buffer_t target;
--      isc_result_t result;
--      unsigned char hash[NSEC3_MAX_HASH_LENGTH + 1];
-       isc_boolean_t exists;
--
--      /*
--       * Get the first label.
--       */
--      dns_name_getlabel(name, 0, &label);
--
--      /*
--       * We want just the label contents.
--       */
--      isc_region_consume(&label, 1);
--
--      /*
--       * Decode base32hex string.
--       */
--      isc_buffer_init(&target, hash, sizeof(hash) - 1);
--      result = isc_base32hex_decoderegion(&label, &target);
--      if (result != ISC_R_SUCCESS)
--              return;
--
--      hash[isc_buffer_usedlength(&target)] = 0;
--
-       exists = hashlist_exists(hashlist, hash);
 -      if (hashlist_exists(hashlist, hash))
 -              return;
--
--      /*
--       * Verify that the NSEC3 parameters match the current ones
--       * otherwise we are dealing with a different NSEC3 chain.
--       */
--      dns_rdataset_init(&rdataset);
--      dns_rdataset_init(&delrdataset);
--
--      result = dns_db_findrdataset(gdb, node, gversion, dns_rdatatype_nsec3,
--                                   0, 0, &rdataset, NULL);
--      if (result != ISC_R_SUCCESS)
--              return;
--
--      /*
-        * Delete any NSEC3 records which are not part of the current
-        * NSEC3 chain.
 -       * Delete any matching NSEC3 records which have parameters that
 -       * match the NSEC3 chain we are building.
--       */
--      for (result = dns_rdataset_first(&rdataset);
--           result == ISC_R_SUCCESS;
--           result = dns_rdataset_next(&rdataset)) {
--              dns_rdata_init(&rdata);
--              dns_rdataset_current(&rdataset, &rdata);
--              result = dns_rdata_tostruct(&rdata, &nsec3, NULL);
--              check_result(result, "dns_rdata_tostruct");
-               if (exists && nsec3.hash == hashalg &&
 -              if (nsec3.hash == hashalg &&
--                  nsec3.iterations == iterations &&
--                  nsec3.salt_length == salt_length &&
--                  !memcmp(nsec3.salt, salt, salt_length))
-                       continue;
 -                      break;
--              rdatalist.rdclass = rdata.rdclass;
--              rdatalist.type = rdata.type;
--              rdatalist.covers = 0;
--              rdatalist.ttl = rdataset.ttl;
--              ISC_LIST_INIT(rdatalist.rdata);
--              dns_rdata_init(&delrdata);
--              dns_rdata_clone(&rdata, &delrdata);
--              ISC_LIST_APPEND(rdatalist.rdata, &delrdata, link);
--              result = dns_rdatalist_tordataset(&rdatalist, &delrdataset);
--              check_result(result, "dns_rdatalist_tordataset()");
--              result = dns_db_subtractrdataset(gdb, node, gversion,
--                                               &delrdataset, 0, NULL);
--              dns_rdataset_disassociate(&delrdataset);
-               if (result != ISC_R_SUCCESS && result != DNS_R_NXRRSET)
 -              if (result != ISC_R_SUCCESS && result != DNS_R_UNCHANGED)
--                      check_result(result, "dns_db_subtractrdataset(NSEC3)");
--              delete_rrsigs = ISC_TRUE;
--      }
--      dns_rdataset_disassociate(&rdataset);
--      if (result != ISC_R_NOMORE)
--              check_result(result, "dns_rdataset_first/next");
--
--      if (!delete_rrsigs)
--              return;
--      /*
--       * Delete the NSEC3 RRSIGs
--       */
--      result = dns_db_deleterdataset(gdb, node, gversion,
--                                     dns_rdatatype_rrsig,
--                                     dns_rdatatype_nsec3);
--      if (result != ISC_R_SUCCESS && result != DNS_R_UNCHANGED)
--              check_result(result, "dns_db_deleterdataset(RRSIG(NSEC3))");
--}
--
--/*
-- * Generate NSEC3 records for the zone.
-- */
--static void
--nsec3ify(unsigned int hashalg, unsigned int iterations,
--       const unsigned char *salt, size_t salt_length, hashlist_t *hashlist)
--{
--      dns_dbiterator_t *dbiter = NULL;
--      dns_dbnode_t *node = NULL, *nextnode = NULL;
--      dns_fixedname_t fname, fnextname, fzonecut;
--      dns_name_t *name, *nextname, *zonecut;
-       dns_rdataset_t rdataset;
-       dns_rdatasetiter_t *rdsiter = NULL;
-       dns_rdatatype_t type, covers;
-       int order;
-       isc_boolean_t active;
--      isc_boolean_t done = ISC_FALSE;
--      isc_result_t result;
 -      isc_boolean_t active;
--      isc_uint32_t nsttl = 0;
--      unsigned int count, nlabels;
 -      int order;
--
-       dns_rdataset_init(&rdataset);
--      dns_fixedname_init(&fname);
--      name = dns_fixedname_name(&fname);
--      dns_fixedname_init(&fnextname);
--      nextname = dns_fixedname_name(&fnextname);
--      dns_fixedname_init(&fzonecut);
--      zonecut = NULL;
--
--      /*
--       * Walk the zone generating the hash names.
--       */
--      result = dns_db_createiterator(gdb, DNS_DB_NONSEC3, &dbiter);
--      check_result(result, "dns_db_createiterator()");
--
--      result = dns_dbiterator_first(dbiter);
--      check_result(result, "dns_dbiterator_first()");
-       result = dns_dbiterator_current(dbiter, &node, name);
-       check_dns_dbiterator_current(result);
-       /*
-        * Delete any NSEC records at the apex.
-        */
-       result = dns_db_allrdatasets(gdb, node, gversion, 0, &rdsiter);
-       check_result(result, "dns_db_allrdatasets()");
-       for (result = dns_rdatasetiter_first(rdsiter);
-            result == ISC_R_SUCCESS;
-            result = dns_rdatasetiter_next(rdsiter)) {
-               dns_rdatasetiter_current(rdsiter, &rdataset);
-               type = rdataset.type;
-               covers = rdataset.covers;
-               dns_rdataset_disassociate(&rdataset);
-               if (type == dns_rdatatype_nsec || covers == dns_rdatatype_nsec) {
-                       result = dns_db_deleterdataset(gdb, node, gversion,
-                                                      type, covers);
-                       check_result(result,
-                                    "dns_db_deleterdataset(nsec3param/rrsig)");
-                       continue;
-               }
-       }
-       dns_rdatasetiter_destroy(&rdsiter);
-       dns_db_detachnode(gdb, &node);
--
--      while (!done) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              dns_dbiterator_current(dbiter, &node, name);
--              result = dns_dbiterator_next(dbiter);
--              nextnode = NULL;
--              while (result == ISC_R_SUCCESS) {
--                      result = dns_dbiterator_current(dbiter, &nextnode,
--                                                      nextname);
-                       check_dns_dbiterator_current(result);
 -                      if (result != ISC_R_SUCCESS)
 -                              break;
--                      active = active_node(nextnode);
--                      if (!active) {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      if (!dns_name_issubdomain(nextname, gorigin) ||
--                          (zonecut != NULL &&
--                           dns_name_issubdomain(nextname, zonecut))) {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      if (delegation(nextname, nextnode, &nsttl)) {
--                              zonecut = dns_fixedname_name(&fzonecut);
--                              dns_name_copy(nextname, zonecut, NULL);
--                              if (generateds)
--                                      add_ds(nextname, nextnode, nsttl);
--                              if (OPTOUT(nsec3flags) &&
--                                  !secure(nextname, nextnode)) {
--                                      dns_db_detachnode(gdb, &nextnode);
--                                      result = dns_dbiterator_next(dbiter);
--                                      continue;
--                              }
--                      }
--                      dns_db_detachnode(gdb, &nextnode);
--                      break;
--              }
--              if (result == ISC_R_NOMORE) {
--                      dns_name_copy(gorigin, nextname, NULL);
--                      done = ISC_TRUE;
--              } else if (result != ISC_R_SUCCESS)
--                      fatal("iterating through the database failed: %s",
--                            isc_result_totext(result));
--              dns_name_downcase(name, name, NULL);
--              hashlist_add_dns_name(hashlist, name, hashalg, iterations,
--                                    salt, salt_length, ISC_FALSE);
--              dns_db_detachnode(gdb, &node);
--              /*
--               * Add hashs for empty nodes.  Use closest encloser logic.
--               * The closest encloser either has data or is a empty
--               * node for another <name,nextname> span so we don't add
--               * it here.  Empty labels on nextname are within the span.
--               */
--              dns_name_downcase(nextname, nextname, NULL);
--              dns_name_fullcompare(name, nextname, &order, &nlabels);
--              addnowildcardhash(hashlist, name, hashalg, iterations,
--                                salt, salt_length);
--              count = dns_name_countlabels(nextname);
--              while (count > nlabels + 1) {
--                      count--;
--                      dns_name_split(nextname, count, NULL, nextname);
--                      hashlist_add_dns_name(hashlist, nextname, hashalg,
--                                            iterations, salt, salt_length,
--                                            ISC_FALSE);
--                      addnowildcardhash(hashlist, nextname, hashalg,
--                                        iterations, salt, salt_length);
--              }
--      }
--      dns_dbiterator_destroy(&dbiter);
--
--      /*
--       * We have all the hashes now so we can sort them.
--       */
--      hashlist_sort(hashlist);
--
--      /*
--       * Check for duplicate hashes.  If found the salt needs to
--       * be changed.
--       */
--      if (hashlist_hasdup(hashlist))
--              fatal("Duplicate hash detected. Pick a different salt.");
--
--      /*
--       * Generate the nsec3 records.
--       */
--      zonecut = NULL;
--      done = ISC_FALSE;
--
--      addnsec3param(salt, salt_length, iterations);
-       /*
-        * Clean out NSEC3 records which don't match this chain.
-        */
-       result = dns_db_createiterator(gdb, DNS_DB_NSEC3ONLY, &dbiter);
-       check_result(result, "dns_db_createiterator()");
-       for (result = dns_dbiterator_first(dbiter);
-            result == ISC_R_SUCCESS;
-            result = dns_dbiterator_next(dbiter)) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
-               nsec3clean(name, node, hashalg, iterations, salt, salt_length,
-                          hashlist);
-               dns_db_detachnode(gdb, &node);
-       }
-       dns_dbiterator_destroy(&dbiter);
--
-       /*
-        * Generate / complete the new chain.
-        */
--      result = dns_db_createiterator(gdb, DNS_DB_NONSEC3, &dbiter);
--      check_result(result, "dns_db_createiterator()");
--
--      result = dns_dbiterator_first(dbiter);
--      check_result(result, "dns_dbiterator_first()");
--
--      while (!done) {
-               result = dns_dbiterator_current(dbiter, &node, name);
-               check_dns_dbiterator_current(result);
 -              dns_dbiterator_current(dbiter, &node, name);
--              result = dns_dbiterator_next(dbiter);
--              nextnode = NULL;
--              while (result == ISC_R_SUCCESS) {
--                      result = dns_dbiterator_current(dbiter, &nextnode,
--                                                      nextname);
-                       check_dns_dbiterator_current(result);
-                       active = active_node(nextnode);
-                       if (!active) {
 -                      if (result != ISC_R_SUCCESS)
 -                              break;
 -                      /*
 -                       * Cleanout NSEC3 RRsets which don't exist in the
 -                       * hash table.
 -                       */
 -                      nsec3clean(nextname, nextnode, hashalg, iterations,
 -                                 salt, salt_length, hashlist);
 -                      /*
 -                       * Skip NSEC3 only nodes when looking for the next
 -                       * node in the zone.  Also skips now empty nodes.
 -                       */
 -                      if (nsec3only(nextnode)) {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      if (!dns_name_issubdomain(nextname, gorigin) ||
--                          (zonecut != NULL &&
--                           dns_name_issubdomain(nextname, zonecut))) {
--                              dns_db_detachnode(gdb, &nextnode);
--                              result = dns_dbiterator_next(dbiter);
--                              continue;
--                      }
--                      if (delegation(nextname, nextnode, NULL)) {
--                              zonecut = dns_fixedname_name(&fzonecut);
--                              dns_name_copy(nextname, zonecut, NULL);
--                              if (OPTOUT(nsec3flags) &&
--                                  !secure(nextname, nextnode)) {
--                                      dns_db_detachnode(gdb, &nextnode);
--                                      result = dns_dbiterator_next(dbiter);
--                                      continue;
--                              }
--                      }
--                      dns_db_detachnode(gdb, &nextnode);
--                      break;
--              }
--              if (result == ISC_R_NOMORE) {
--                      dns_name_copy(gorigin, nextname, NULL);
--                      done = ISC_TRUE;
--              } else if (result != ISC_R_SUCCESS)
--                      fatal("iterating through the database failed: %s",
--                            isc_result_totext(result));
--              /*
--               * We need to pause here to release the lock on the database.
--               */
--              dns_dbiterator_pause(dbiter);
--              addnsec3(name, node, salt, salt_length, iterations,
--                       hashlist, zone_soa_min_ttl);
--              dns_db_detachnode(gdb, &node);
--              /*
--               * Add NSEC3's for empty nodes.  Use closest encloser logic.
--               */
--              dns_name_fullcompare(name, nextname, &order, &nlabels);
--              count = dns_name_countlabels(nextname);
--              while (count > nlabels + 1) {
--                      count--;
--                      dns_name_split(nextname, count, NULL, nextname);
--                      addnsec3(nextname, NULL, salt, salt_length,
--                               iterations, hashlist, zone_soa_min_ttl);
--              }
--      }
--      dns_dbiterator_destroy(&dbiter);
--}
--
--/*%
-- * Load the zone file from disk
-- */
--static void
--loadzone(char *file, char *origin, dns_rdataclass_t rdclass, dns_db_t **db) {
--      isc_buffer_t b;
--      int len;
--      dns_fixedname_t fname;
--      dns_name_t *name;
--      isc_result_t result;
--
--      len = strlen(origin);
--      isc_buffer_init(&b, origin, len);
--      isc_buffer_add(&b, len);
--
--      dns_fixedname_init(&fname);
--      name = dns_fixedname_name(&fname);
--      result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed converting name '%s' to dns format: %s",
--                    origin, isc_result_totext(result));
--
--      result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone,
--                             rdclass, 0, NULL, db);
--      check_result(result, "dns_db_create()");
--
--      result = dns_db_load2(*db, file, inputformat);
--      if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE)
--              fatal("failed loading zone from '%s': %s",
--                    file, isc_result_totext(result));
--}
--
--/*%
-- * Finds all public zone keys in the zone, and attempts to load the
-- * private keys from disk.
-- */
--static void
--loadzonekeys(dns_db_t *db) {
--      dns_dbnode_t *node;
--      dns_dbversion_t *currentversion;
--      isc_result_t result;
--      dst_key_t *keys[20];
--      unsigned int nkeys, i;
--      dns_rdataset_t rdataset;
--
--      currentversion = NULL;
--      dns_db_currentversion(db, &currentversion);
--
--      node = NULL;
--      result = dns_db_findnode(db, gorigin, ISC_FALSE, &node);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find the zone's origin: %s",
--                    isc_result_totext(result));
--
--      /* Preserve the TTL of the DNSKEY RRset, if any */
--      dns_rdataset_init(&rdataset);
--      result = dns_db_findrdataset(db, node, currentversion,
--                                   dns_rdatatype_dnskey, 0, 0,
--                                   &rdataset, NULL);
--
--      if (result == ISC_R_SUCCESS) {
--              if (set_keyttl && keyttl != rdataset.ttl) {
--                      fprintf(stderr, "User-specified TTL (%d) conflicts "
--                                      "with existing DNSKEY RRset TTL.\n",
--                                      keyttl);
--                      fprintf(stderr, "Imported keys will use the RRSet "
--                                      "TTL (%d) instead.\n",
--                                      rdataset.ttl);
--              }
--              keyttl = rdataset.ttl;
--              if (dns_rdataset_isassociated(&rdataset))
--                      dns_rdataset_disassociate(&rdataset);
--      }
--
--      /* Load keys corresponding to the existing DNSKEY RRset */
--      result = dns_dnssec_findzonekeys2(db, currentversion, node, gorigin,
--                                        directory, mctx, 20, keys, &nkeys);
--      if (result == ISC_R_NOTFOUND) {
--              result = ISC_R_SUCCESS;
--              goto cleanup;
--      }
--
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find the zone keys: %s",
--                    isc_result_totext(result));
--
--      for (i = 0; i < nkeys; i++) {
--              dns_dnsseckey_t *key = NULL;
--
--              dns_dnsseckey_create(mctx, &keys[i], &key);
-               if (key->legacy) {
-                       key->force_publish = ISC_TRUE;
-                       key->force_sign = dst_key_isprivate(key->key);
-               }
 -              key->force_publish = ISC_TRUE;
 -              key->force_sign = dst_key_isprivate(key->key);
--              key->source = dns_keysource_zoneapex;
--              ISC_LIST_APPEND(keylist, key, link);
--      }
--
--  cleanup:
--      dns_db_detachnode(db, &node);
--      dns_db_closeversion(db, &currentversion, ISC_FALSE);
--}
--
--/*%
-- * Finds all public zone keys in the zone.
-- */
--static void
--loadzonepubkeys(dns_db_t *db) {
--      dns_dbversion_t *currentversion = NULL;
--      dns_dbnode_t *node = NULL;
--      dns_rdataset_t rdataset;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      dst_key_t *pubkey;
--      isc_result_t result;
--
--      dns_db_currentversion(db, &currentversion);
--
--      result = dns_db_findnode(db, gorigin, ISC_FALSE, &node);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find the zone's origin: %s",
--                    isc_result_totext(result));
--
--      dns_rdataset_init(&rdataset);
--      result = dns_db_findrdataset(db, node, currentversion,
--                                   dns_rdatatype_dnskey, 0, 0, &rdataset,
--                                   NULL);
--      if (result != ISC_R_SUCCESS) {
--              vbprintf(2, "failed to find keys at the zone apex: %s",
--                       isc_result_totext(result));
--              goto cleanup;
--      }
--
--      result = dns_rdataset_first(&rdataset);
--      check_result(result, "dns_rdataset_first");
--      while (result == ISC_R_SUCCESS) {
--              dns_dnsseckey_t *key = NULL;
--              pubkey = NULL;
--              dns_rdata_reset(&rdata);
--              dns_rdataset_current(&rdataset, &rdata);
--              result = dns_dnssec_keyfromrdata(gorigin, &rdata, mctx,
--                                               &pubkey);
--              if (result != ISC_R_SUCCESS)
--                      goto next;
--              if (!dst_key_iszonekey(pubkey)) {
--                      dst_key_free(&pubkey);
--                      goto next;
--              }
--
--              dns_dnsseckey_create(mctx, &pubkey, &key);
-               if (key->legacy)
-                       key->force_publish = ISC_TRUE;
 -              key->force_publish = ISC_TRUE;
 -              key->force_sign = ISC_FALSE;
--              ISC_LIST_APPEND(keylist, key, link);
-- next:
--              result = dns_rdataset_next(&rdataset);
--      }
--
-- cleanup:
--      if (dns_rdataset_isassociated(&rdataset))
--              dns_rdataset_disassociate(&rdataset);
--      if (node != NULL)
--              dns_db_detachnode(db, &node);
--      if (currentversion != NULL)
--              dns_db_closeversion(db, &currentversion, ISC_FALSE);
--}
--
--static isc_result_t
--make_dnskey(dst_key_t *key, dns_rdata_t *target) {
--      isc_result_t result;
--      unsigned char data[DST_KEY_MAXSIZE];
--      isc_buffer_t b;
--      isc_region_t r;
--
--      isc_buffer_init(&b, data, sizeof(data));
--      result = dst_key_todns(key, &b);
--      check_result(result, "dst_key_todns");
--
--      dns_rdata_reset(target);
--      isc_buffer_usedregion(&b, &r);
--      dns_rdata_fromregion(target, dst_key_class(key),
--                           dns_rdatatype_dnskey, &r);
--      return (ISC_R_SUCCESS);
--}
--
--static void
--build_final_keylist(dns_db_t *db, const char *directory, isc_mem_t *mctx) {
--      isc_result_t result;
--      dns_dbversion_t *ver = NULL;
--      dns_diff_t del, add;
--      dns_difftuple_t *tuple = NULL;
--      dns_rdata_t dnskey = DNS_RDATA_INIT;
--      dns_dnsseckeylist_t matchkeys;
--      dns_dnsseckey_t *key1, *key2;
--      char name[DNS_NAME_FORMATSIZE];
--      char alg[80];
--
--      dns_name_format(gorigin, name, sizeof(name));
--
--      ISC_LIST_INIT(matchkeys);
--      result = dns_dnssec_findmatchingkeys(gorigin, directory,
--                                           mctx, &matchkeys);
--      if (result == ISC_R_NOTFOUND)
--              result = ISC_R_SUCCESS;
--      check_result(result, "dns_dnssec_findmatchingkeys");
--
--      result = dns_db_newversion(db, &ver);
--      check_result(result, "dns_db_newversion");
--
--      dns_diff_init(mctx, &del);
--      dns_diff_init(mctx, &add);
--
--      /*
--       * For each key in matchkeys, see if it has a match in keylist.
--       * - If not, and if the metadata says it should be published:
--       *   add it to keylist and to the DNSKEY set
--       * - If so, and if the metadata says it should be removed:
--       *   remove it from keylist and from the DNSKEY set
--       * - Otherwise, make sure keylist has up-to-date metadata
 -       *
 -       *   (XXXEACH: logic is needed to make sure revoked keys
 -       *   can be matched correctly with nonrevoked)
--       */
--
--      key1 = ISC_LIST_HEAD(matchkeys);
--      while (key1 != NULL) {
-               isc_boolean_t key_revoked = ISC_FALSE;
--              for (key2 = ISC_LIST_HEAD(keylist);
--                   key2 != NULL;
--                   key2 = ISC_LIST_NEXT(key2, link)) {
-                       if (dst_key_pubcompare(key1->key, key2->key,
-                                              ISC_TRUE)) {
-                               key_revoked = ISC_TF(dst_key_flags(key1->key) !=
-                                                    dst_key_flags(key2->key));
 -                      if (dst_key_compare(key1->key, key2->key))
--                              break;
-                       }
--              }
--
--              /*
--               * No matching key found in keylist, so move the key
--               * we found into keylist
--               */
--              if (key2 == NULL) {
--                      dns_dnsseckey_t *next;
--
--                      /* move key from matchkeys to keylist */
--                      next = ISC_LIST_NEXT(key1, link);
--                      ISC_LIST_UNLINK(matchkeys, key1, link);
--                      ISC_LIST_APPEND(keylist, key1, link);
--
--                      key1 = next;
--                      continue;
--              }
--
--              /* Match found: remove it or update it as needed */
--              if (key1->hint_remove) {
--                      ISC_LIST_UNLINK(keylist, key2, link);
--                      dns_dnsseckey_destroy(mctx, &key2);
--
--                      make_dnskey(key1->key, &dnskey);
--                      alg_format(dst_key_alg(key1->key), alg, sizeof(alg));
--                      fprintf(stderr, "Removing expired key %d/%s from "
--                                      "DNSKEY RRset.\n",
--                                      dst_key_id(key1->key), alg);
-                       result = dns_difftuple_create(mctx, DNS_DIFFOP_DEL,
-                                                     gorigin, keyttl,
-                                                     &dnskey, &tuple);
-                       check_result(result, "dns_difftuple_create");
-                       dns_diff_append(&del, &tuple);
-               } else if (key_revoked &&
-                        (dst_key_flags(key1->key) & DNS_KEYFLAG_REVOKE) != 0) {
-                       dns_dnsseckey_t *next;
-                       /*
-                        * A key in the DNSKEY set has been revoked in the
-                        * key repository.  We need to remove the old
-                        * version and pull in the new one.
-                        */
-                       make_dnskey(key2->key, &dnskey);
-                       alg_format(dst_key_alg(key2->key), alg, sizeof(alg));
-                       fprintf(stderr, "Replacing revoked key %d/%s in "
-                                       "DNSKEY RRset.\n",
-                                       dst_key_id(key2->key), alg);
--
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_DEL,
--                                                    gorigin, keyttl,
--                                                    &dnskey, &tuple);
--                      check_result(result, "dns_difftuple_create");
--                      dns_diff_append(&del, &tuple);
-                       ISC_LIST_UNLINK(keylist, key2, link);
-                       dns_dnsseckey_destroy(mctx, &key2);
-                       next = ISC_LIST_NEXT(key1, link);
-                       ISC_LIST_UNLINK(matchkeys, key1, link);
-                       ISC_LIST_APPEND(keylist, key1, link);
-                       /*
-                        * XXX: The revoke flag is only defined for trust
-                        * anchors.  Setting the flag on a non-KSK is legal,
-                        * but not defined in any RFC.  It seems reasonable
-                        * to treat it the same as a KSK: keep it in the
-                        * zone and sign the DNSKEY set with it, but not
-                        * sign other records with it.
-                        */
-                       if (iszsk(key1))
-                               key1->ksk = ISC_TRUE;
-                       key1 = next;
-                       continue;
--              } else {
--                      key2->hint_publish = key1->hint_publish;
--                      key2->hint_sign = key1->hint_sign;
--              }
--
--              key1 = ISC_LIST_NEXT(key1, link);
--      }
--
--      /*
--       * If a key was not in the zone already and needs to be published,
--       * add it now.
--       */
--      for (key1 = ISC_LIST_HEAD(keylist);
--           key1 != NULL;
--           key1 = ISC_LIST_NEXT(key1, link)) {
--              if (key1->source == dns_keysource_zoneapex)
--                      continue;
--
--              if (key1->hint_publish || key1->force_publish) {
--                      make_dnskey(key1->key, &dnskey);
--
--                      alg_format(dst_key_alg(key1->key), alg, sizeof(alg));
--                      fprintf(stderr, "Fetching %s %d/%s from key %s\n",
--                                      isksk(key1) ?
--                                          (iszsk(key1) ?  "KSK/ZSK" : "KSK") :
--                                          "ZSK",
--                                      dst_key_id(key1->key), alg,
--                                      key1->source == dns_keysource_user ?
--                                              "file" :
--                                              "repository");
--
--                      if (key1->prepublish && keyttl > key1->prepublish) {
--                              char keystr[KEY_FORMATSIZE];
--                              key_format(key1->key, keystr, sizeof(keystr));
--                              fatal("Key %s is scheduled to\n"
--                                    "become active in %d seconds.  "
--                                    "This is less than the DNSKEY TTL\n"
--                                    "value of %d seconds.  Reduce "
--                                    "the TTL, or change the activation\n"
--                                    "date of the key using "
--                                    "'dnssec-settime -A'.",
--                                    keystr, key1->prepublish, keyttl);
--                      }
--
--                      /* add key to the zone */
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD,
--                                                    gorigin, keyttl,
--                                                    &dnskey, &tuple);
--                      check_result(result, "dns_difftuple_create");
--                      dns_diff_append(&add, &tuple);
--              } else {
--                      vbprintf(1, "%s %d/%s: not published.\n",
--                               isksk(key1) ?
--                                   (iszsk(key1) ?  "KSK/ZSK" : "KSK") :
--                                   "ZSK",
--                               dst_key_id(key1->key), alg);
--              }
--      }
--
--      /* free matchkeys */
--      while (!ISC_LIST_EMPTY(matchkeys)) {
--              key1 = ISC_LIST_HEAD(matchkeys);
--              ISC_LIST_UNLINK(matchkeys, key1, link);
--              dns_dnsseckey_destroy(mctx, &key1);
--      }
--
--      result = dns_diff_applysilently(&del, db, ver);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to delete DNSKEYs at node '%s': %s",
--                    name, isc_result_totext(result));
--
--      result = dns_diff_applysilently(&add, db, ver);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to add DNSKEYs at node '%s': %s",
--                    name, isc_result_totext(result));
--
--      dns_db_closeversion(db, &ver, ISC_TRUE);
--
--      dns_diff_clear(&del);
--      dns_diff_clear(&add);
--}
--
--static void
--warnifallksk(dns_db_t *db) {
--      dns_dbversion_t *currentversion = NULL;
--      dns_dbnode_t *node = NULL;
--      dns_rdataset_t rdataset;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      isc_result_t result;
--      dns_rdata_dnskey_t dnskey;
--      isc_boolean_t have_non_ksk = ISC_FALSE;
--
--      dns_db_currentversion(db, &currentversion);
--
--      result = dns_db_findnode(db, gorigin, ISC_FALSE, &node);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find the zone's origin: %s",
--                    isc_result_totext(result));
--
--      dns_rdataset_init(&rdataset);
--      result = dns_db_findrdataset(db, node, currentversion,
--                                   dns_rdatatype_dnskey, 0, 0, &rdataset,
--                                   NULL);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to find keys at the zone apex: %s",
--                    isc_result_totext(result));
--      result = dns_rdataset_first(&rdataset);
--      check_result(result, "dns_rdataset_first");
--      while (result == ISC_R_SUCCESS) {
--              dns_rdata_reset(&rdata);
--              dns_rdataset_current(&rdataset, &rdata);
--              result = dns_rdata_tostruct(&rdata, &dnskey, NULL);
--              check_result(result, "dns_rdata_tostruct");
--              if ((dnskey.flags & DNS_KEYFLAG_KSK) == 0) {
--                      have_non_ksk = ISC_TRUE;
--                      result = ISC_R_NOMORE;
--              } else
--                      result = dns_rdataset_next(&rdataset);
--              dns_rdata_freestruct(&dnskey);
--      }
--      dns_rdataset_disassociate(&rdataset);
--      dns_db_detachnode(db, &node);
--      dns_db_closeversion(db, &currentversion, ISC_FALSE);
--      if (!have_non_ksk && !ignore_kskflag) {
--              if (disable_zone_check)
--                      fprintf(stderr, "%s: warning: No non-KSK DNSKEY found; "
--                              "supply a ZSK or use '-z'.\n",
--                              program);
--              else
--                      fatal("No non-KSK DNSKEY found; "
--                            "supply a ZSK or use '-z'.");
--      }
--}
--
--static void
--writeset(const char *prefix, dns_rdatatype_t type) {
--      char *filename;
--      char namestr[DNS_NAME_FORMATSIZE];
--      dns_db_t *db = NULL;
--      dns_dbversion_t *version = NULL;
--      dns_diff_t diff;
--      dns_difftuple_t *tuple = NULL;
--      dns_fixedname_t fixed;
--      dns_name_t *name;
--      dns_rdata_t rdata, ds;
--      isc_boolean_t have_ksk = ISC_FALSE;
--      isc_boolean_t have_non_ksk = ISC_FALSE;
--      isc_buffer_t b;
--      isc_buffer_t namebuf;
--      isc_region_t r;
--      isc_result_t result;
--      dns_dnsseckey_t *key;
--      unsigned char dsbuf[DNS_DS_BUFFERSIZE];
--      unsigned char keybuf[DST_KEY_MAXSIZE];
--      unsigned int filenamelen;
--      const dns_master_style_t *style =
--              (type == dns_rdatatype_dnskey) ? masterstyle : dsstyle;
--
--      isc_buffer_init(&namebuf, namestr, sizeof(namestr));
--      result = dns_name_tofilenametext(gorigin, ISC_FALSE, &namebuf);
--      check_result(result, "dns_name_tofilenametext");
--      isc_buffer_putuint8(&namebuf, 0);
--      filenamelen = strlen(prefix) + strlen(namestr);
--      if (dsdir != NULL)
--              filenamelen += strlen(dsdir) + 1;
--      filename = isc_mem_get(mctx, filenamelen + 1);
--      if (filename == NULL)
--              fatal("out of memory");
--      if (dsdir != NULL)
--              sprintf(filename, "%s/", dsdir);
--      else
--              filename[0] = 0;
--      strcat(filename, prefix);
--      strcat(filename, namestr);
--
--      dns_diff_init(mctx, &diff);
--
--      for (key = ISC_LIST_HEAD(keylist);
--           key != NULL;
--           key = ISC_LIST_NEXT(key, link))
--              if (!isksk(key)) {
--                      have_non_ksk = ISC_TRUE;
--                      break;
--              }
--
--      for (key = ISC_LIST_HEAD(keylist);
--           key != NULL;
--           key = ISC_LIST_NEXT(key, link))
--              if (isksk(key)) {
--                      have_ksk = ISC_TRUE;
--                      break;
--              }
--
--      if (type == dns_rdatatype_dlv) {
--              dns_name_t tname;
--              unsigned int labels;
--
--              dns_name_init(&tname, NULL);
--              dns_fixedname_init(&fixed);
--              name = dns_fixedname_name(&fixed);
--              labels = dns_name_countlabels(gorigin);
--              dns_name_getlabelsequence(gorigin, 0, labels - 1, &tname);
--              result = dns_name_concatenate(&tname, dlv, name, NULL);
--              check_result(result, "dns_name_concatenate");
--      } else
--              name = gorigin;
--
--      for (key = ISC_LIST_HEAD(keylist);
--           key != NULL;
--           key = ISC_LIST_NEXT(key, link))
--      {
--              if (have_ksk && have_non_ksk && !isksk(key))
--                      continue;
--              dns_rdata_init(&rdata);
--              dns_rdata_init(&ds);
--              isc_buffer_init(&b, keybuf, sizeof(keybuf));
--              result = dst_key_todns(key->key, &b);
--              check_result(result, "dst_key_todns");
--              isc_buffer_usedregion(&b, &r);
--              dns_rdata_fromregion(&rdata, gclass, dns_rdatatype_dnskey, &r);
--              if (type != dns_rdatatype_dnskey) {
--                      result = dns_ds_buildrdata(gorigin, &rdata,
--                                                 DNS_DSDIGEST_SHA1,
--                                                 dsbuf, &ds);
--                      check_result(result, "dns_ds_buildrdata");
--                      if (type == dns_rdatatype_dlv)
--                              ds.type = dns_rdatatype_dlv;
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD,
--                                                    name, 0, &ds, &tuple);
--                      check_result(result, "dns_difftuple_create");
--                      dns_diff_append(&diff, &tuple);
--
--                      dns_rdata_reset(&ds);
--                      result = dns_ds_buildrdata(gorigin, &rdata,
--                                                 DNS_DSDIGEST_SHA256,
--                                                 dsbuf, &ds);
--                      check_result(result, "dns_ds_buildrdata");
--                      if (type == dns_rdatatype_dlv)
--                              ds.type = dns_rdatatype_dlv;
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD,
--                                                    name, 0, &ds, &tuple);
--
--              } else
--                      result = dns_difftuple_create(mctx, DNS_DIFFOP_ADD,
--                                                    gorigin, zone_soa_min_ttl,
--                                                    &rdata, &tuple);
--              check_result(result, "dns_difftuple_create");
--              dns_diff_append(&diff, &tuple);
--      }
--
--      result = dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_zone,
--                             gclass, 0, NULL, &db);
--      check_result(result, "dns_db_create");
--
--      result = dns_db_newversion(db, &version);
--      check_result(result, "dns_db_newversion");
--
--      result = dns_diff_apply(&diff, db, version);
--      check_result(result, "dns_diff_apply");
--      dns_diff_clear(&diff);
--
--      result = dns_master_dump(mctx, db, version, style, filename);
--      check_result(result, "dns_master_dump");
--
--      isc_mem_put(mctx, filename, filenamelen + 1);
--
--      dns_db_closeversion(db, &version, ISC_FALSE);
--      dns_db_detach(&db);
--}
--
--static void
--print_time(FILE *fp) {
--      time_t currenttime;
--
--      if (outputformat != dns_masterformat_text)
--              return;
--
--      currenttime = time(NULL);
--      fprintf(fp, "; File written on %s", ctime(&currenttime));
--}
--
--static void
--print_version(FILE *fp) {
--      if (outputformat != dns_masterformat_text)
--              return;
--
--      fprintf(fp, "; dnssec_signzone version " VERSION "\n");
--}
--
--static void
--usage(void) {
--      fprintf(stderr, "Usage:\n");
--      fprintf(stderr, "\t%s [options] zonefile [keys]\n", program);
--
--      fprintf(stderr, "\n");
--
--      fprintf(stderr, "Version: %s\n", VERSION);
--
--      fprintf(stderr, "Options: (default value in parenthesis) \n");
--      fprintf(stderr, "\t-S:\tsmart signing: automatically finds key\n"
--                      "\t\tfiles for the zone and determines they are to\n"
--                      "\t\tbe used\n");
--      fprintf(stderr, "\t-K directory:\n");
--      fprintf(stderr, "\t\tdirectory to find key files (.)\n");
--      fprintf(stderr, "\t-d directory:\n");
--      fprintf(stderr, "\t\tdirectory to find dsset files (.)\n");
--      fprintf(stderr, "\t-g:\t");
--      fprintf(stderr, "generate dsset file, and/or include DS records\n"
--                      "\t\tfrom child zones' dsset files\n");
--      fprintf(stderr, "\t-s [YYYYMMDDHHMMSS|+offset]:\n");
--      fprintf(stderr, "\t\tRRSIG start time - absolute|offset (now - 1 hour)\n");
--      fprintf(stderr, "\t-e [YYYYMMDDHHMMSS|+offset|\"now\"+offset]:\n");
--      fprintf(stderr, "\t\tRRSIG end time  - absolute|from start|from now "
--                              "(now + 30 days)\n");
--      fprintf(stderr, "\t-i interval:\n");
--      fprintf(stderr, "\t\tcycle interval - resign "
--                              "if < interval from end ( (end-start)/4 )\n");
--      fprintf(stderr, "\t-j jitter:\n");
--      fprintf(stderr, "\t\trandomize signature end time up to jitter seconds\n");
--      fprintf(stderr, "\t-v debuglevel (0)\n");
--      fprintf(stderr, "\t-o origin:\n");
--      fprintf(stderr, "\t\tzone origin (name of zonefile)\n");
--      fprintf(stderr, "\t-f outfile:\n");
--      fprintf(stderr, "\t\tfile the signed zone is written in "
--                              "(zonefile + .signed)\n");
--      fprintf(stderr, "\t-I format:\n");
--      fprintf(stderr, "\t\tfile format of input zonefile (text)\n");
--      fprintf(stderr, "\t-O format:\n");
--      fprintf(stderr, "\t\tfile format of signed zone file (text)\n");
--      fprintf(stderr, "\t-N format:\n");
--      fprintf(stderr, "\t\tsoa serial format of signed zone file (keep)\n");
--      fprintf(stderr, "\t-r randomdev:\n");
--      fprintf(stderr, "\t\ta file containing random data\n");
--      fprintf(stderr, "\t-a:\t");
--      fprintf(stderr, "verify generated signatures\n");
--      fprintf(stderr, "\t-c class (IN)\n");
--      fprintf(stderr, "\t-p:\t");
--      fprintf(stderr, "use pseudorandom data (faster but less secure)\n");
--      fprintf(stderr, "\t-P:\t");
--      fprintf(stderr, "disable post-sign verification\n");
--      fprintf(stderr, "\t-T TTL:\tTTL for newly added DNSKEYs");
--      fprintf(stderr, "\t-t:\t");
--      fprintf(stderr, "print statistics\n");
--      fprintf(stderr, "\t-C:\tgenerate a keyset file, for compatibility\n"
--                      "\t\twith older versions of dnssec-signzone -g\n");
--      fprintf(stderr, "\t-n ncpus (number of cpus present)\n");
--      fprintf(stderr, "\t-k key_signing_key\n");
--      fprintf(stderr, "\t-l lookasidezone\n");
--      fprintf(stderr, "\t-3 salt (NSEC3 salt)\n");
--      fprintf(stderr, "\t-H iterations (NSEC3 iterations)\n");
--      fprintf(stderr, "\t-A (NSEC3 optout)\n");
--      fprintf(stderr, "\t-z:\t");
--      fprintf(stderr, "ignore KSK flag in DNSKEYs");
--
--      fprintf(stderr, "\n");
--
--      fprintf(stderr, "Signing Keys: ");
--      fprintf(stderr, "(default: all zone keys that have private keys)\n");
--      fprintf(stderr, "\tkeyfile (Kname+alg+tag)\n");
--      exit(0);
--}
--
--static void
--removetempfile(void) {
--      if (removefile)
--              isc_file_remove(tempfile);
--}
--
--static void
--print_stats(isc_time_t *timer_start, isc_time_t *timer_finish) {
--      isc_uint64_t runtime_us;   /* Runtime in microseconds */
--      isc_uint64_t runtime_ms;   /* Runtime in milliseconds */
--      isc_uint64_t sig_ms;       /* Signatures per millisecond */
--
--      runtime_us = isc_time_microdiff(timer_finish, timer_start);
--
--      printf("Signatures generated:               %10d\n", nsigned);
--      printf("Signatures retained:                %10d\n", nretained);
--      printf("Signatures dropped:                 %10d\n", ndropped);
--      printf("Signatures successfully verified:   %10d\n", nverified);
--      printf("Signatures unsuccessfully verified: %10d\n", nverifyfailed);
--      runtime_ms = runtime_us / 1000;
--      printf("Runtime in seconds:                %7u.%03u\n",
--             (unsigned int) (runtime_ms / 1000),
--             (unsigned int) (runtime_ms % 1000));
--      if (runtime_us > 0) {
--              sig_ms = ((isc_uint64_t)nsigned * 1000000000) / runtime_us;
--              printf("Signatures per second:             %7u.%03u\n",
--                     (unsigned int) sig_ms / 1000,
--                     (unsigned int) sig_ms % 1000);
--      }
--}
--
--int
--main(int argc, char *argv[]) {
--      int i, ch;
--      char *startstr = NULL, *endstr = NULL, *classname = NULL;
--      char *origin = NULL, *file = NULL, *output = NULL;
--      char *inputformatstr = NULL, *outputformatstr = NULL;
--      char *serialformatstr = NULL;
--      char *dskeyfile[MAXDSKEYS];
--      int ndskeys = 0;
--      char *endp;
--      isc_time_t timer_start, timer_finish;
--      dns_dnsseckey_t *key;
--      isc_result_t result;
--      isc_log_t *log = NULL;
--      isc_boolean_t pseudorandom = ISC_FALSE;
--      unsigned int eflags;
--      isc_boolean_t free_output = ISC_FALSE;
--      int tempfilelen;
--      dns_rdataclass_t rdclass;
--      isc_task_t **tasks = NULL;
--      isc_buffer_t b;
--      int len;
--      unsigned int iterations = 100U;
--      const unsigned char *salt = NULL;
--      size_t salt_length = 0;
--      unsigned char saltbuf[255];
--      hashlist_t hashlist;
--      isc_boolean_t smartsign = ISC_FALSE;
--      isc_boolean_t make_keyset = ISC_FALSE;
--
--#define CMDLINE_FLAGS "3:AaCc:Dd:e:f:FghH:i:I:j:K:k:l:m:n:N:o:O:pPr:s:ST:tUv:z"
--
--      /*
--       * Process memory debugging argument first.
--       */
--      while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
--              switch (ch) {
--              case 'm':
--                      if (strcasecmp(isc_commandline_argument, "record") == 0)
--                              isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
--                      if (strcasecmp(isc_commandline_argument, "trace") == 0)
--                              isc_mem_debugging |= ISC_MEM_DEBUGTRACE;
--                      if (strcasecmp(isc_commandline_argument, "usage") == 0)
--                              isc_mem_debugging |= ISC_MEM_DEBUGUSAGE;
--                      if (strcasecmp(isc_commandline_argument, "size") == 0)
--                              isc_mem_debugging |= ISC_MEM_DEBUGSIZE;
--                      if (strcasecmp(isc_commandline_argument, "mctx") == 0)
--                              isc_mem_debugging |= ISC_MEM_DEBUGCTX;
--                      break;
--              default:
--                      break;
--              }
--      }
--      isc_commandline_reset = ISC_TRUE;
--
--      masterstyle = &dns_master_style_explicitttl;
--
--      check_result(isc_app_start(), "isc_app_start");
--
--      result = isc_mem_create(0, 0, &mctx);
--      if (result != ISC_R_SUCCESS)
--              fatal("out of memory");
--
--      dns_result_register();
--
--      isc_commandline_errprint = ISC_FALSE;
--
--      while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
--              switch (ch) {
--              case '3':
--                      if (strcmp(isc_commandline_argument, "-")) {
--                              isc_buffer_t target;
--                              char *sarg;
--
--                              sarg = isc_commandline_argument;
--                              isc_buffer_init(&target, saltbuf,
--                                              sizeof(saltbuf));
--                              result = isc_hex_decodestring(sarg, &target);
--                              check_result(result,
--                                           "isc_hex_decodestring(salt)");
--                              salt = saltbuf;
--                              salt_length = isc_buffer_usedlength(&target);
--                      } else {
--                              salt = saltbuf;
--                              salt_length = 0;
--                      }
--                      nsec_datatype = dns_rdatatype_nsec3;
--                      break;
--
--              case 'A':
--                      nsec3flags |= DNS_NSEC3FLAG_OPTOUT;
--                      break;
--
--              case 'a':
--                      tryverify = ISC_TRUE;
--                      break;
--
--              case 'C':
--                      make_keyset = ISC_TRUE;
--                      break;
--
--              case 'c':
--                      classname = isc_commandline_argument;
--                      break;
--
--              case 'd':
--                      dsdir = isc_commandline_argument;
--                      if (strlen(dsdir) == 0U)
--                              fatal("DS directory must be non-empty string");
--                      break;
--
--              case 'K':
--                      directory = isc_commandline_argument;
--                      break;
--
--              case 'e':
--                      endstr = isc_commandline_argument;
--                      break;
--
--              case 'f':
--                      output = isc_commandline_argument;
--                      break;
--
--              case 'g':
--                      generateds = ISC_TRUE;
--                      break;
--
--              case 'H':
--                      iterations = strtoul(isc_commandline_argument,
--                                           &endp, 0);
--                      if (*endp != '\0')
--                              fatal("iterations must be numeric");
--                      if (iterations > 0xffffU)
--                              fatal("iterations too big");
--                      break;
--
--              case 'h':
--                      usage();
--                      break;
--
--              case 'i':
--                      endp = NULL;
--                      cycle = strtol(isc_commandline_argument, &endp, 0);
--                      if (*endp != '\0' || cycle < 0)
--                              fatal("cycle period must be numeric and "
--                                    "positive");
--                      break;
--
--              case 'I':
--                      inputformatstr = isc_commandline_argument;
--                      break;
--
--              case 'j':
--                      endp = NULL;
--                      jitter = strtol(isc_commandline_argument, &endp, 0);
--                      if (*endp != '\0' || jitter < 0)
--                              fatal("jitter must be numeric and positive");
--                      break;
--
--              case 'k':
--                      if (ndskeys == MAXDSKEYS)
--                              fatal("too many key-signing keys specified");
--                      dskeyfile[ndskeys++] = isc_commandline_argument;
--                      break;
--
--              case 'l':
--                      len = strlen(isc_commandline_argument);
--                      isc_buffer_init(&b, isc_commandline_argument, len);
--                      isc_buffer_add(&b, len);
--
--                      dns_fixedname_init(&dlv_fixed);
--                      dlv = dns_fixedname_name(&dlv_fixed);
--                      result = dns_name_fromtext(dlv, &b, dns_rootname, 0,
--                                                 NULL);
--                      check_result(result, "dns_name_fromtext(dlv)");
--                      break;
--
--              case 'm':
--                      break;
--
--              case 'n':
--                      endp = NULL;
--                      ntasks = strtol(isc_commandline_argument, &endp, 0);
--                      if (*endp != '\0' || ntasks > ISC_INT32_MAX)
--                              fatal("number of cpus must be numeric");
--                      break;
--
--              case 'N':
--                      serialformatstr = isc_commandline_argument;
--                      break;
--
--              case 'o':
--                      origin = isc_commandline_argument;
--                      break;
--
--              case 'O':
--                      outputformatstr = isc_commandline_argument;
--                      break;
--
--              case 'p':
--                      pseudorandom = ISC_TRUE;
--                      break;
--
--              case 'P':
--                      disable_zone_check = ISC_TRUE;
--                      break;
--
--              case 'r':
--                      setup_entropy(mctx, isc_commandline_argument, &ectx);
--                      break;
--
--              case 's':
--                      startstr = isc_commandline_argument;
--                      break;
--
--              case 'S':
--                      smartsign = ISC_TRUE;
--                      generateds = ISC_TRUE;
--                      break;
--
--              case 'T':
--                      endp = NULL;
--                      set_keyttl = ISC_TRUE;
--                      keyttl = strtottl(isc_commandline_argument);
--                      break;
--
--              case 't':
--                      printstats = ISC_TRUE;
--                      break;
--
--              case 'U':       /* Undocumented for testing only. */
--                      unknownalg = ISC_TRUE;
--                      break;
--
--              case 'v':
--                      endp = NULL;
--                      verbose = strtol(isc_commandline_argument, &endp, 0);
--                      if (*endp != '\0')
--                              fatal("verbose level must be numeric");
--                      break;
--
--              case 'z':
--                      ignore_kskflag = ISC_TRUE;
--                      break;
--
--              case 'F':
--                      /* Reserved for FIPS mode */
--                      /* FALLTHROUGH */
--              case '?':
--                      if (isc_commandline_option != '?')
--                              fprintf(stderr, "%s: invalid argument -%c\n",
--                                      program, isc_commandline_option);
--                      usage();
--                      break;
--
--              default:
--                      fprintf(stderr, "%s: unhandled option -%c\n",
--                              program, isc_commandline_option);
--                      exit(1);
--              }
--      }
--
--      if (ectx == NULL)
--              setup_entropy(mctx, NULL, &ectx);
--      eflags = ISC_ENTROPY_BLOCKING;
--      if (!pseudorandom)
--              eflags |= ISC_ENTROPY_GOODONLY;
--
--      result = isc_hash_create(mctx, ectx, DNS_NAME_MAXWIRE);
--      if (result != ISC_R_SUCCESS)
--              fatal("could not create hash context");
--
--      result = dst_lib_init(mctx, ectx, eflags);
--      if (result != ISC_R_SUCCESS)
--              fatal("could not initialize dst");
--
--      isc_stdtime_get(&now);
--
--      if (startstr != NULL) {
--              starttime = strtotime(startstr, now, now);
--      } else
--              starttime = now - 3600;  /* Allow for some clock skew. */
--
--      if (endstr != NULL) {
--              endtime = strtotime(endstr, now, starttime);
--      } else
--              endtime = starttime + (30 * 24 * 60 * 60);
--
--      if (cycle == -1)
--              cycle = (endtime - starttime) / 4;
--
--      if (ntasks == 0)
--              ntasks = isc_os_ncpus() * 2;
--      vbprintf(4, "using %d cpus\n", ntasks);
--
--      rdclass = strtoclass(classname);
--
--      if (directory == NULL)
--              directory = ".";
--
--      setup_logging(verbose, mctx, &log);
--
--      argc -= isc_commandline_index;
--      argv += isc_commandline_index;
--
--      if (argc < 1)
--              usage();
--
--      file = argv[0];
--
--      argc -= 1;
--      argv += 1;
--
--      if (origin == NULL)
--              origin = file;
--
--      if (output == NULL) {
--              free_output = ISC_TRUE;
--              output = isc_mem_allocate(mctx,
--                                        strlen(file) + strlen(".signed") + 1);
--              if (output == NULL)
--                      fatal("out of memory");
--              sprintf(output, "%s.signed", file);
--      }
--
--      if (inputformatstr != NULL) {
--              if (strcasecmp(inputformatstr, "text") == 0)
--                      inputformat = dns_masterformat_text;
--              else if (strcasecmp(inputformatstr, "raw") == 0)
--                      inputformat = dns_masterformat_raw;
--              else
--                      fatal("unknown file format: %s\n", inputformatstr);
--      }
--
--      if (outputformatstr != NULL) {
--              if (strcasecmp(outputformatstr, "text") == 0)
--                      outputformat = dns_masterformat_text;
--              else if (strcasecmp(outputformatstr, "raw") == 0)
--                      outputformat = dns_masterformat_raw;
--              else
--                      fatal("unknown file format: %s\n", outputformatstr);
--      }
--
--      if (serialformatstr != NULL) {
--              if (strcasecmp(serialformatstr, "keep") == 0)
--                      serialformat = SOA_SERIAL_KEEP;
--              else if (strcasecmp(serialformatstr, "increment") == 0 ||
--                       strcasecmp(serialformatstr, "incr") == 0)
--                      serialformat = SOA_SERIAL_INCREMENT;
--              else if (strcasecmp(serialformatstr, "unixtime") == 0)
--                      serialformat = SOA_SERIAL_UNIXTIME;
--              else
--                      fatal("unknown soa serial format: %s\n", serialformatstr);
--      }
--
--      result = dns_master_stylecreate(&dsstyle,  DNS_STYLEFLAG_NO_TTL,
--                                      0, 24, 0, 0, 0, 8, mctx);
--      check_result(result, "dns_master_stylecreate");
--
--      gdb = NULL;
--      TIME_NOW(&timer_start);
--      loadzone(file, origin, rdclass, &gdb);
--      gorigin = dns_db_origin(gdb);
--      gclass = dns_db_class(gdb);
--      get_soa_ttls();
--
--      if (!set_keyttl)
--              keyttl = soa_ttl;
--
--      if (IS_NSEC3) {
--              isc_boolean_t answer;
--              hash_length = dns_nsec3_hashlength(dns_hash_sha1);
--              hashlist_init(&hashlist, dns_db_nodecount(gdb) * 2,
--                            hash_length);
--              result = dns_nsec_nseconly(gdb, gversion, &answer);
--              check_result(result, "dns_nsec_nseconly");
--              if (answer)
--                      fatal("NSEC3 generation requested with "
--                            "NSEC only DNSKEY");
--      }
--
--      /*
--       * We need to do this early on, as we start messing with the list
--       * of keys rather early.
--       */
--      ISC_LIST_INIT(keylist);
--      isc_rwlock_init(&keylist_lock, 0, 0);
--
-       if (argc == 0)
 -      if (argc == 0) {
--              loadzonekeys(gdb);
-       for (i = 0; i < argc; i++) {
-               dst_key_t *newkey = NULL;
 -      } else {
 -              for (i = 0; i < argc; i++) {
 -                      dst_key_t *newkey = NULL;
--
-               result = dst_key_fromnamedfile(argv[i], directory,
-                                              DST_TYPE_PUBLIC |
-                                              DST_TYPE_PRIVATE,
-                                              mctx, &newkey);
-               if (result != ISC_R_SUCCESS)
-                       fatal("cannot load dnskey %s: %s", argv[i],
-                             isc_result_totext(result));
 -                      result = dst_key_fromnamedfile(argv[i], directory,
 -                                                     DST_TYPE_PUBLIC |
 -                                                     DST_TYPE_PRIVATE,
 -                                                     mctx, &newkey);
 -                      if (result != ISC_R_SUCCESS)
 -                              fatal("cannot load dnskey %s: %s", argv[i],
 -                                    isc_result_totext(result));
--
-               if (!dns_name_equal(gorigin, dst_key_name(newkey)))
-                       fatal("key %s not at origin\n", argv[i]);
 -                      if (!dns_name_equal(gorigin, dst_key_name(newkey)))
 -                              fatal("key %s not at origin\n", argv[i]);
--
-               /* Skip any duplicates */
-               for (key = ISC_LIST_HEAD(keylist);
-                    key != NULL;
-                    key = ISC_LIST_NEXT(key, link)) {
-                       dst_key_t *dkey = key->key;
-                       if (dst_key_id(dkey) == dst_key_id(newkey) &&
-                           dst_key_alg(dkey) == dst_key_alg(newkey) &&
-                           dns_name_equal(dst_key_name(dkey), gorigin)) {
-                               if (!dst_key_isprivate(dkey))
-                                       fatal("cannot sign zone with "
-                                             "non-private dnskey %s",
-                                             argv[i]);
-                               break;
 -                      key = ISC_LIST_HEAD(keylist);
 -                      while (key != NULL) {
 -                              dst_key_t *dkey = key->key;
 -                              if (dst_key_id(dkey) == dst_key_id(newkey) &&
 -                                  dst_key_alg(dkey) == dst_key_alg(newkey) &&
 -                                  dns_name_equal(dst_key_name(dkey),
 -                                                 dst_key_name(newkey)))
 -                              {
 -                                      if (!dst_key_isprivate(dkey))
 -                                              fatal("cannot sign zone with "
 -                                                    "non-private dnskey %s",
 -                                                    argv[i]);
 -                                      break;
 -                              }
 -                              key = ISC_LIST_NEXT(key, link);
--                      }
 -                      if (key == NULL) {
 -                              dns_dnsseckey_create(mctx, &newkey, &key);
 -                              key->force_publish = ISC_TRUE;
 -                              key->force_sign = ISC_TRUE;
 -                              key->source = dns_keysource_user;
 -                              ISC_LIST_APPEND(keylist, key, link);
 -                      } else
 -                              dst_key_free(&newkey);
--              }
-               if (key == NULL) {
-                       /* We haven't seen this key before */
-                       dns_dnsseckey_create(mctx, &newkey, &key);
-                       key->force_publish = ISC_TRUE;
-                       key->force_sign = ISC_TRUE;
-                       key->source = dns_keysource_user;
-                       ISC_LIST_APPEND(keylist, key, link);
-               } else
-                       dst_key_free(&newkey);
-       }
--
-       if (argc != 0)
--              loadzonepubkeys(gdb);
 -      }
--
--      for (i = 0; i < ndskeys; i++) {
--              dst_key_t *newkey = NULL;
--
--              result = dst_key_fromnamedfile(dskeyfile[i], directory,
--                                             DST_TYPE_PUBLIC |
--                                             DST_TYPE_PRIVATE,
--                                             mctx, &newkey);
--              if (result != ISC_R_SUCCESS)
--                      fatal("cannot load dnskey %s: %s", dskeyfile[i],
--                            isc_result_totext(result));
--
--              if (!dns_name_equal(gorigin, dst_key_name(newkey)))
--                      fatal("key %s not at origin\n", dskeyfile[i]);
--
-               /* Skip any duplicates */
-               for (key = ISC_LIST_HEAD(keylist);
-                    key != NULL;
-                    key = ISC_LIST_NEXT(key, link)) {
 -              key = ISC_LIST_HEAD(keylist);
 -              while (key != NULL) {
--                      dst_key_t *dkey = key->key;
--                      if (dst_key_id(dkey) == dst_key_id(newkey) &&
--                          dst_key_alg(dkey) == dst_key_alg(newkey) &&
-                           dns_name_equal(dst_key_name(dkey), gorigin)) {
-                               /*
-                                * Key was already in keylist, but we
-                                * must make sure it has the right
-                                * dnsseckey flags.
-                                */
-                               key->ksk = ISC_TRUE;
 -                          dns_name_equal(dst_key_name(dkey),
 -                                         dst_key_name(newkey)))
 -                      {
 -                              /* Override key flags. */
--                              key->force_publish = ISC_TRUE;
--                              key->force_sign = ISC_TRUE;
--                              key->source = dns_keysource_user;
-                               dst_key_free(&newkey);
 -                              key->ksk = ISC_TRUE;
 -                              dst_key_free(&dkey);
 -                              key->key = newkey;
--                              break;
--                      }
 -                      key = ISC_LIST_NEXT(key, link);
--              }
--              if (key == NULL) {
-                       /* We haven't seen this key before */
 -                      /* Override dnskey flags. */
--                      dns_dnsseckey_create(mctx, &newkey, &key);
-                       key->ksk = ISC_TRUE;
--                      key->force_publish = ISC_TRUE;
--                      key->force_sign = ISC_TRUE;
--                      key->source = dns_keysource_user;
 -                      key->ksk = ISC_TRUE;
--                      ISC_LIST_APPEND(keylist, key, link);
--              }
--      }
--
--      /*
--       * If we're doing smart signing, look in the key repository for
--       * key files with metadata, and merge them with the keylist
--       * we have now.
--       */
--      if (smartsign)
--              build_final_keylist(gdb, directory, mctx);
--
--      /* Now enumerate the key list */
--      for (key = ISC_LIST_HEAD(keylist);
--           key != NULL;
--           key = ISC_LIST_NEXT(key, link)) {
--              key->index = keycount++;
--      }
--
--      if (keycount == 0) {
--              if (disable_zone_check)
--                      fprintf(stderr, "%s: warning: No keys specified "
--                                      "or found\n", program);
--              else
--                      fatal("No signing keys specified or found.");
--              nokeys = ISC_TRUE;
--      }
--
--      if (IS_NSEC3) {
--              unsigned int max;
--              result = dns_nsec3_maxiterations(gdb, NULL, mctx, &max);
--              check_result(result, "dns_nsec3_maxiterations()");
--              if (iterations > max)
--                      fatal("NSEC3 iterations too big for weakest DNSKEY "
--                            "strength. Maximum iterations allowed %u.", max);
--      }
--
--      warnifallksk(gdb);
--
--      gversion = NULL;
--      result = dns_db_newversion(gdb, &gversion);
--      check_result(result, "dns_db_newversion()");
--
--      switch (serialformat) {
--              case SOA_SERIAL_INCREMENT:
--                      setsoaserial(0);
--                      break;
--              case SOA_SERIAL_UNIXTIME:
--                      setsoaserial(now);
--                      break;
--              case SOA_SERIAL_KEEP:
--              default:
--                      /* do nothing */
--                      break;
--      }
--
--      if (IS_NSEC3)
--              nsec3ify(dns_hash_sha1, iterations, salt, salt_length,
--                       &hashlist);
--      else
--              nsecify();
--
--      if (!nokeys) {
--              writeset("dsset-", dns_rdatatype_ds);
--              if (make_keyset)
--                      writeset("keyset-", dns_rdatatype_dnskey);
--              if (dlv != NULL) {
--                      writeset("dlvset-", dns_rdatatype_dlv);
--              }
--      }
--
--      tempfilelen = strlen(output) + 20;
--      tempfile = isc_mem_get(mctx, tempfilelen);
--      if (tempfile == NULL)
--              fatal("out of memory");
--
--      result = isc_file_mktemplate(output, tempfile, tempfilelen);
--      check_result(result, "isc_file_mktemplate");
--
--      fp = NULL;
--      result = isc_file_openunique(tempfile, &fp);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to open temporary output file: %s",
--                    isc_result_totext(result));
--      removefile = ISC_TRUE;
--      setfatalcallback(&removetempfile);
--
--      print_time(fp);
--      print_version(fp);
--
--      result = isc_taskmgr_create(mctx, ntasks, 0, &taskmgr);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to create task manager: %s",
--                    isc_result_totext(result));
--
--      master = NULL;
--      result = isc_task_create(taskmgr, 0, &master);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to create task: %s", isc_result_totext(result));
--
--      tasks = isc_mem_get(mctx, ntasks * sizeof(isc_task_t *));
--      if (tasks == NULL)
--              fatal("out of memory");
--      for (i = 0; i < (int)ntasks; i++) {
--              tasks[i] = NULL;
--              result = isc_task_create(taskmgr, 0, &tasks[i]);
--              if (result != ISC_R_SUCCESS)
--                      fatal("failed to create task: %s",
--                            isc_result_totext(result));
--      }
--
--      RUNTIME_CHECK(isc_mutex_init(&namelock) == ISC_R_SUCCESS);
--      if (printstats)
--              RUNTIME_CHECK(isc_mutex_init(&statslock) == ISC_R_SUCCESS);
--
--      presign();
--      signapex();
--      if (!finished) {
--              /*
--               * There is more work to do.  Spread it out over multiple
--               * processors if possible.
--               */
--              for (i = 0; i < (int)ntasks; i++) {
--                      result = isc_app_onrun(mctx, master, startworker,
--                                             tasks[i]);
--                      if (result != ISC_R_SUCCESS)
--                              fatal("failed to start task: %s",
--                                    isc_result_totext(result));
--              }
--              (void)isc_app_run();
--              if (!finished)
--                      fatal("process aborted by user");
--      } else
--              isc_task_detach(&master);
--      shuttingdown = ISC_TRUE;
--      for (i = 0; i < (int)ntasks; i++)
--              isc_task_detach(&tasks[i]);
--      isc_taskmgr_destroy(&taskmgr);
--      isc_mem_put(mctx, tasks, ntasks * sizeof(isc_task_t *));
--      postsign();
--      verifyzone();
--
--      if (outputformat != dns_masterformat_text) {
--              result = dns_master_dumptostream2(mctx, gdb, gversion,
--                                                masterstyle, outputformat,
--                                                fp);
--              check_result(result, "dns_master_dumptostream2");
--      }
--
--      result = isc_stdio_close(fp);
--      check_result(result, "isc_stdio_close");
--      removefile = ISC_FALSE;
--
--      result = isc_file_rename(tempfile, output);
--      if (result != ISC_R_SUCCESS)
--              fatal("failed to rename temp file to %s: %s\n",
--                    output, isc_result_totext(result));
--
--      DESTROYLOCK(&namelock);
--      if (printstats)
--              DESTROYLOCK(&statslock);
--
--      printf("%s\n", output);
--
--      dns_db_closeversion(gdb, &gversion, ISC_FALSE);
--      dns_db_detach(&gdb);
--
--      while (!ISC_LIST_EMPTY(keylist)) {
--              key = ISC_LIST_HEAD(keylist);
--              ISC_LIST_UNLINK(keylist, key, link);
--              dns_dnsseckey_destroy(mctx, &key);
--      }
--
--      isc_mem_put(mctx, tempfile, tempfilelen);
--
--      if (free_output)
--              isc_mem_free(mctx, output);
--
--      dns_master_styledestroy(&dsstyle, mctx);
--
--      cleanup_logging(&log);
--      dst_lib_destroy();
--      isc_hash_destroy();
--      cleanup_entropy(&ectx);
--      dns_name_destroy();
--      if (verbose > 10)
--              isc_mem_stats(mctx, stdout);
--      isc_mem_destroy(&mctx);
--
--      (void) isc_app_finish();
--
--      if (printstats) {
--              TIME_NOW(&timer_finish);
--              print_stats(&timer_start, &timer_finish);
--      }
--
--      return (0);
--}
diff --cc bin/dnssec/dnssec-signzone.docbook
index d6e5bb79a942f956d34d8487f1f158101a4536a1,d6e5bb79a942f956d34d8487f1f158101a4536a1..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,643 -1,643 +1,0 @@@
--<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
--               "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
--             [<!ENTITY mdash "&#8212;">]>
--<!--
-- - Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
-- - Copyright (C) 2000-2003  Internet Software Consortium.
-- -
-- - 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.
-- -
-- - 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: dnssec-signzone.docbook,v 1.36 2009/09/02 06:29:00 each Exp $ -->
--<refentry id="man.dnssec-signzone">
--  <refentryinfo>
--    <date>June 05, 2009</date>
--  </refentryinfo>
--
--  <refmeta>
--    <refentrytitle><application>dnssec-signzone</application></refentrytitle>
--   <manvolnum>8</manvolnum>
--    <refmiscinfo>BIND9</refmiscinfo>
--  </refmeta>
--
--  <refnamediv>
--    <refname><application>dnssec-signzone</application></refname>
--    <refpurpose>DNSSEC zone signing tool</refpurpose>
--  </refnamediv>
--
--  <docinfo>
--    <copyright>
--      <year>2004</year>
--      <year>2005</year>
--      <year>2006</year>
--      <year>2007</year>
--      <year>2008</year>
--      <year>2009</year>
--      <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
--    </copyright>
--    <copyright>
--      <year>2000</year>
--      <year>2001</year>
--      <year>2002</year>
--      <year>2003</year>
--      <holder>Internet Software Consortium.</holder>
--    </copyright>
--  </docinfo>
--
--  <refsynopsisdiv>
--    <cmdsynopsis>
--      <command>dnssec-signzone</command>
--      <arg><option>-a</option></arg>
--      <arg><option>-c <replaceable class="parameter">class</replaceable></option></arg>
--      <arg><option>-d <replaceable class="parameter">directory</replaceable></option></arg>
--      <arg><option>-e <replaceable class="parameter">end-time</replaceable></option></arg>
--      <arg><option>-f <replaceable class="parameter">output-file</replaceable></option></arg>
--      <arg><option>-g</option></arg>
--      <arg><option>-h</option></arg>
--      <arg><option>-K <replaceable class="parameter">directory</replaceable></option></arg>
--      <arg><option>-k <replaceable class="parameter">key</replaceable></option></arg>
--      <arg><option>-l <replaceable class="parameter">domain</replaceable></option></arg>
--      <arg><option>-i <replaceable class="parameter">interval</replaceable></option></arg>
--      <arg><option>-I <replaceable class="parameter">input-format</replaceable></option></arg>
--      <arg><option>-j <replaceable class="parameter">jitter</replaceable></option></arg>
--      <arg><option>-N <replaceable class="parameter">soa-serial-format</replaceable></option></arg>
--      <arg><option>-o <replaceable class="parameter">origin</replaceable></option></arg>
--      <arg><option>-O <replaceable class="parameter">output-format</replaceable></option></arg>
--      <arg><option>-p</option></arg>
--      <arg><option>-P</option></arg>
--      <arg><option>-r <replaceable class="parameter">randomdev</replaceable></option></arg>
--      <arg><option>-S</option></arg>
--      <arg><option>-s <replaceable class="parameter">start-time</replaceable></option></arg>
--      <arg><option>-T <replaceable class="parameter">ttl</replaceable></option></arg>
--      <arg><option>-t</option></arg>
--      <arg><option>-v <replaceable class="parameter">level</replaceable></option></arg>
--      <arg><option>-z</option></arg>
--      <arg><option>-3 <replaceable class="parameter">salt</replaceable></option></arg>
--      <arg><option>-H <replaceable class="parameter">iterations</replaceable></option></arg>
--      <arg><option>-A</option></arg>
--      <arg choice="req">zonefile</arg>
--      <arg rep="repeat">key</arg>
--    </cmdsynopsis>
--  </refsynopsisdiv>
--
--  <refsect1>
--    <title>DESCRIPTION</title>
--    <para><command>dnssec-signzone</command>
--      signs a zone.  It generates
--      NSEC and RRSIG records and produces a signed version of the
--      zone. The security status of delegations from the signed zone
--      (that is, whether the child zones are secure or not) is
--      determined by the presence or absence of a
--      <filename>keyset</filename> file for each child zone.
--    </para>
--  </refsect1>
--
--  <refsect1>
--    <title>OPTIONS</title>
--
--    <variablelist>
--      <varlistentry>
--        <term>-a</term>
--        <listitem>
--          <para>
--            Verify all generated signatures.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-c <replaceable class="parameter">class</replaceable></term>
--        <listitem>
--          <para>
--            Specifies the DNS class of the zone.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-C</term>
--        <listitem>
--          <para>
--            Compatibility mode: Generate a
--            <filename>keyset-<replaceable>zonename</replaceable></filename>
--            file in addition to
--            <filename>dsset-<replaceable>zonename</replaceable></filename>
--            when signing a zone, for use by older versions of
--            <command>dnssec-signzone</command>.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-d <replaceable class="parameter">directory</replaceable></term>
--        <listitem>
--          <para>
--            Look for <filename>dsset-</filename> or
--            <filename>keyset-</filename> files in <option>directory</option>.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-g</term>
--        <listitem>
--          <para>
--            Generate DS records for child zones from
--            <filename>dsset-</filename> or <filename>keyset-</filename>
--            file.  Existing DS records will be removed.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-K <replaceable class="parameter">directory</replaceable></term>
--        <listitem>
--          <para>
--            Key repository: Specify a directory to search for DNSSEC keys.
--            If not specified, defaults to the current directory.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-k <replaceable class="parameter">key</replaceable></term>
--        <listitem>
--          <para>
--            Treat specified key as a key signing key ignoring any
--            key flags.  This option may be specified multiple times.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-l <replaceable class="parameter">domain</replaceable></term>
--        <listitem>
--          <para>
--            Generate a DLV set in addition to the key (DNSKEY) and DS sets.
--            The domain is appended to the name of the records.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-s <replaceable class="parameter">start-time</replaceable></term>
--        <listitem>
--          <para>
--            Specify the date and time when the generated RRSIG records
--            become valid.  This can be either an absolute or relative
--            time.  An absolute start time is indicated by a number
--            in YYYYMMDDHHMMSS notation; 20000530144500 denotes
--            14:45:00 UTC on May 30th, 2000.  A relative start time is
--            indicated by +N, which is N seconds from the current time.
--            If no <option>start-time</option> is specified, the current
--            time minus 1 hour (to allow for clock skew) is used.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-e <replaceable class="parameter">end-time</replaceable></term>
--        <listitem>
--          <para>
--            Specify the date and time when the generated RRSIG records
--            expire.  As with <option>start-time</option>, an absolute
--            time is indicated in YYYYMMDDHHMMSS notation.  A time relative
--            to the start time is indicated with +N, which is N seconds from
--            the start time.  A time relative to the current time is
--            indicated with now+N.  If no <option>end-time</option> is
--            specified, 30 days from the start time is used as a default.
--            <option>end-time</option> must be later than
--            <option>start-time</option>.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-f <replaceable class="parameter">output-file</replaceable></term>
--        <listitem>
--          <para>
--            The name of the output file containing the signed zone.  The
--            default is to append <filename>.signed</filename> to
--            the
--            input filename.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-h</term>
--        <listitem>
--          <para>
--            Prints a short summary of the options and arguments to
--            <command>dnssec-signzone</command>.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-i <replaceable class="parameter">interval</replaceable></term>
--        <listitem>
--          <para>
--            When a previously-signed zone is passed as input, records
--            may be resigned.  The <option>interval</option> option
--            specifies the cycle interval as an offset from the current
--            time (in seconds).  If a RRSIG record expires after the
--            cycle interval, it is retained.  Otherwise, it is considered
--            to be expiring soon, and it will be replaced.
--          </para>
--          <para>
--            The default cycle interval is one quarter of the difference
--            between the signature end and start times.  So if neither
--            <option>end-time</option> or <option>start-time</option>
--            are specified, <command>dnssec-signzone</command>
--            generates
--            signatures that are valid for 30 days, with a cycle
--            interval of 7.5 days.  Therefore, if any existing RRSIG records
--            are due to expire in less than 7.5 days, they would be
--            replaced.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-I <replaceable class="parameter">input-format</replaceable></term>
--        <listitem>
--          <para>
--            The format of the input zone file.
--          Possible formats are <command>"text"</command> (default)
--          and <command>"raw"</command>.
--          This option is primarily intended to be used for dynamic
--            signed zones so that the dumped zone file in a non-text
--            format containing updates can be signed directly.
--          The use of this option does not make much sense for
--          non-dynamic zones.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-j <replaceable class="parameter">jitter</replaceable></term>
--        <listitem>
--          <para>
--            When signing a zone with a fixed signature lifetime, all
--            RRSIG records issued at the time of signing expires
--            simultaneously.  If the zone is incrementally signed, i.e.
--            a previously-signed zone is passed as input to the signer,
--            all expired signatures have to be regenerated at about the
--            same time.  The <option>jitter</option> option specifies a
--            jitter window that will be used to randomize the signature
--            expire time, thus spreading incremental signature
--            regeneration over time.
--          </para>
--          <para>
--            Signature lifetime jitter also to some extent benefits
--            validators and servers by spreading out cache expiration,
--            i.e. if large numbers of RRSIGs don't expire at the same time
--            from all caches there will be less congestion than if all
--            validators need to refetch at mostly the same time.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-n <replaceable class="parameter">ncpus</replaceable></term>
--        <listitem>
--          <para>
--            Specifies the number of threads to use.  By default, one
--            thread is started for each detected CPU.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-N <replaceable class="parameter">soa-serial-format</replaceable></term>
--        <listitem>
--          <para>
--            The SOA serial number format of the signed zone.
--          Possible formats are <command>"keep"</command> (default),
--            <command>"increment"</command> and
--          <command>"unixtime"</command>.
--          </para>
--
--          <variablelist>
--          <varlistentry>
--            <term><command>"keep"</command></term>
--              <listitem>
--                <para>Do not modify the SOA serial number.</para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--            <term><command>"increment"</command></term>
--              <listitem>
--                <para>Increment the SOA serial number using RFC 1982
--                      arithmetics.</para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--            <term><command>"unixtime"</command></term>
--              <listitem>
--                <para>Set the SOA serial number to the number of seconds
--              since epoch.</para>
--            </listitem>
--            </varlistentry>
--       </variablelist>
--
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-o <replaceable class="parameter">origin</replaceable></term>
--        <listitem>
--          <para>
--            The zone origin.  If not specified, the name of the zone file
--            is assumed to be the origin.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-O <replaceable class="parameter">output-format</replaceable></term>
--        <listitem>
--          <para>
--            The format of the output file containing the signed zone.
--          Possible formats are <command>"text"</command> (default)
--          and <command>"raw"</command>.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-p</term>
--        <listitem>
--          <para>
--            Use pseudo-random data when signing the zone.  This is faster,
--            but less secure, than using real random data.  This option
--            may be useful when signing large zones or when the entropy
--            source is limited.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-P</term>
--        <listitem>
--          <para>
--          Disable post sign verification tests.
--          </para>
--          <para>
--          The post sign verification test ensures that for each algorithm
--          in use there is at least one non revoked self signed KSK key,
--          that all revoked KSK keys are self signed, and that all records
--          in the zone are signed by the algorithm.
--          This option skips these tests.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-r <replaceable class="parameter">randomdev</replaceable></term>
--        <listitem>
--          <para>
--            Specifies the source of randomness.  If the operating
--            system does not provide a <filename>/dev/random</filename>
--            or equivalent device, the default source of randomness
--            is keyboard input.  <filename>randomdev</filename>
--            specifies
--            the name of a character device or file containing random
--            data to be used instead of the default.  The special value
--            <filename>keyboard</filename> indicates that keyboard
--            input should be used.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-S</term>
--        <listitem>
--          <para>
--            Smart signing: Instructs <command>dnssec-signzone</command> to
--            search the key repository for keys that match the zone being
--            signed, and to include them in the zone if appropriate.
--          </para>
--          <para>
--            When a key is found, its timing metadata is examined to
--            determine how it should be used, according to the following
--            rules.  Each successive rule takes priority over the prior
--            ones:
--          </para>
--          <variablelist>
--          <varlistentry>
--              <listitem>
--                <para>
--                  If no timing metadata has been set for the key, the key is
--                  published in the zone and used to sign the zone.
--                </para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--              <listitem>
--                <para>
--                  If the key's publication date is set and is in the past, the
--                  key is published in the zone.
--                </para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--              <listitem>
--                <para>
--                  If the key's activation date is set and in the past, the
--                  key is published (regardless of publication date) and
--                  used to sign the zone.  
--                </para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--              <listitem>
--                <para>
--                  If the key's revocation date is set and in the past, and the
--                  key is published, then the key is revoked, and the revoked key
--                  is used to sign the zone.
--                </para>
--            </listitem>
--            </varlistentry>
--
--          <varlistentry>
--              <listitem>
--                <para>
--                  If either of the key's unpublication or deletion dates are set
--                  and in the past, the key is NOT published or used to sign the
--                  zone, regardless of any other metadata.
--                </para>
--            </listitem>
--            </varlistentry>
--       </variablelist>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-T <replaceable class="parameter">ttl</replaceable></term>
--        <listitem>
--          <para>
--            Specifies the TTL to be used for new DNSKEY records imported
--            into the zone from the key repository.  If not specified,
--            the default is the minimum TTL value from the zone's SOA
--            record.  This option is ignored when signing without
--            <option>-S</option>, since DNSKEY records are not imported
--            from the key repository in that case.  It is also ignored if
--            there are any pre-existing DNSKEY records at the zone apex,
--            in which case new records' TTL values will be set to match
--            them.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-t</term>
--        <listitem>
--          <para>
--            Print statistics at completion.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-v <replaceable class="parameter">level</replaceable></term>
--        <listitem>
--          <para>
--            Sets the debugging level.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-z</term>
--        <listitem>
--          <para>
--            Ignore KSK flag on key when determining what to sign.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-3 <replaceable class="parameter">salt</replaceable></term>
--        <listitem>
--          <para>
--            Generate a NSEC3 chain with the given hex encoded salt.
--          A dash (<replaceable class="parameter">salt</replaceable>) can
--          be used to indicate that no salt is to be used when generating                  the NSEC3 chain.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-H <replaceable class="parameter">iterations</replaceable></term>
--        <listitem>
--          <para>
--          When generating a NSEC3 chain use this many interations.  The
--          default is 100.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>-A</term>
--        <listitem>
--          <para>
--          When generating a NSEC3 chain set the OPTOUT flag on all
--          NSEC3 records and do not generate NSEC3 records for insecure
--          delegations.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>zonefile</term>
--        <listitem>
--          <para>
--            The file containing the zone to be signed.
--          </para>
--        </listitem>
--      </varlistentry>
--
--      <varlistentry>
--        <term>key</term>
--        <listitem>
--          <para>
--          Specify which keys should be used to sign the zone.  If
--          no keys are specified, then the zone will be examined
--          for DNSKEY records at the zone apex.  If these are found and
--          there are matching private keys, in the current directory,
--          then these will be used for signing.
--          </para>
--        </listitem>
--      </varlistentry>
--
--    </variablelist>
--  </refsect1>
--
--  <refsect1>
--    <title>EXAMPLE</title>
--    <para>
--      The following command signs the <userinput>example.com</userinput>
--      zone with the DSA key generated by <command>dnssec-keygen</command>
--      (Kexample.com.+003+17247).  The zone's keys must be in the master
--      file (<filename>db.example.com</filename>).  This invocation looks
--      for <filename>keyset</filename> files, in the current directory,
--      so that DS records can be generated from them (<command>-g</command>).
--    </para>
--<programlisting>% dnssec-signzone -g -o example.com db.example.com \
--Kexample.com.+003+17247
--db.example.com.signed
--%</programlisting>
--    <para>
--      In the above example, <command>dnssec-signzone</command> creates
--      the file <filename>db.example.com.signed</filename>.  This
--      file should be referenced in a zone statement in a
--      <filename>named.conf</filename> file.
--    </para>
--    <para>
--      This example re-signs a previously signed zone with default parameters.
--      The private keys are assumed to be in the current directory.
--    </para>
--<programlisting>% cp db.example.com.signed db.example.com
--% dnssec-signzone -o example.com db.example.com
--db.example.com.signed
--%</programlisting>
--  </refsect1>
--
--  <refsect1>
--    <title>SEE ALSO</title>
--    <para><citerefentry>
--        <refentrytitle>dnssec-keygen</refentrytitle><manvolnum>8</manvolnum>
--      </citerefentry>,
--      <citetitle>BIND 9 Administrator Reference Manual</citetitle>,
--      <citetitle>RFC 4033</citetitle>.
--    </para>
--  </refsect1>
--
--  <refsect1>
--    <title>AUTHOR</title>
--    <para><corpauthor>Internet Systems Consortium</corpauthor>
--    </para>
--  </refsect1>
--
--</refentry><!--
-- - Local variables:
-- - mode: sgml
-- - End:
---->
diff --cc bin/tests/system/dnssec/ns3/sign.sh
index 84ebd21c33629ae4e2cc88107e25dac5fa3e1a4d,84ebd21c33629ae4e2cc88107e25dac5fa3e1a4d..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,224 -1,224 +1,0 @@@
--#!/bin/sh
--#
--# Copyright (C) 2004, 2006-2009  Internet Systems Consortium, Inc. ("ISC")
--# Copyright (C) 2000-2002  Internet Software Consortium.
--#
--# 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.
--#
--# 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: sign.sh,v 1.27 2009/06/04 02:56:47 tbox Exp $
--
--SYSTEMTESTTOP=../..
--. $SYSTEMTESTTOP/conf.sh
--
--RANDFILE=../random.data
--
--zone=secure.example.
--infile=secure.example.db.in
--zonefile=secure.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--zone=bogus.example.
--infile=bogus.example.db.in
--zonefile=bogus.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--zone=dynamic.example.
--infile=dynamic.example.db.in
--zonefile=dynamic.example.db
--
--keyname1=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 768 -n zone $zone`
--keyname2=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 1024 -n zone -f KSK $zone`
--
--cat $infile $keyname1.key $keyname2.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--zone=keyless.example.
--infile=keyless.example.db.in
--zonefile=keyless.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--# Change the signer field of the a.b.keyless.example SIG A
--# to point to a provably nonexistent KEY record.
--mv $zonefile.signed $zonefile.tmp
--<$zonefile.tmp perl -p -e 's/ keyless.example/ b.keyless.example/
--    if /^a.b.keyless.example/../NXT/;' >$zonefile.signed
--rm -f $zonefile.tmp
--
--#
--#  NSEC3/NSEC test zone
--#
--zone=secure.nsec3.example.
--infile=secure.nsec3.example.db.in
--zonefile=secure.nsec3.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--#  NSEC3/NSEC3 test zone
--#
--zone=nsec3.nsec3.example.
--infile=nsec3.nsec3.example.db.in
--zonefile=nsec3.nsec3.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--#  OPTOUT/NSEC3 test zone
--#
--zone=optout.nsec3.example.
--infile=optout.nsec3.example.db.in
--zonefile=optout.nsec3.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -A -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--# A nsec3 zone (non-optout).
--#
--zone=nsec3.example.
--infile=nsec3.example.db.in
--zonefile=nsec3.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -g -3 - -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--#  OPTOUT/NSEC test zone
--#
--zone=secure.optout.example.
--infile=secure.optout.example.db.in
--zonefile=secure.optout.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a RSAMD5 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--#  OPTOUT/NSEC3 test zone
--#
--zone=nsec3.optout.example.
--infile=nsec3.optout.example.db.in
--zonefile=nsec3.optout.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--#  OPTOUT/OPTOUT test zone
--#
--zone=optout.optout.example.
--infile=optout.optout.example.db.in
--zonefile=optout.optout.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -A -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--# A optout nsec3 zone.
--#
--zone=optout.example.
--infile=optout.example.db.in
--zonefile=optout.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -g -3 - -A -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--# A nsec3 zone (non-optout) with unknown hash algorithm.
--#
--zone=nsec3-unknown.example.
--infile=nsec3-unknown.example.db.in
--zonefile=nsec3-unknown.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -U -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--# A optout nsec3 zone.
--#
--zone=optout-unknown.example.
--infile=optout-unknown.example.db.in
--zonefile=optout-unknown.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -3 - -U -A -r $RANDFILE -o $zone $zonefile > /dev/null
--
--#
--# A multiple parameter nsec3 zone.
--#
--zone=multiple.example.
--infile=multiple.example.db.in
--zonefile=multiple.example.db
--
--keyname=`$KEYGEN -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone`
--
--cat $infile $keyname.key >$zonefile
--
--$SIGNER -P -r $RANDFILE -o $zone $zonefile > /dev/null
--mv $zonefile.signed $zonefile
--$SIGNER -P -3 - -r $RANDFILE -o $zone $zonefile > /dev/null
--mv $zonefile.signed $zonefile
--$SIGNER -P -3 AAAA -r $RANDFILE -o $zone $zonefile > /dev/null
--mv $zonefile.signed $zonefile
--$SIGNER -P -3 BBBB -r $RANDFILE -o $zone $zonefile > /dev/null
--mv $zonefile.signed $zonefile
--$SIGNER -P -3 CCCC -r $RANDFILE -o $zone $zonefile > /dev/null
--mv $zonefile.signed $zonefile
--$SIGNER -P -3 DDDD -r $RANDFILE -o $zone $zonefile > /dev/null
diff --cc doc/draft/draft-ietf-dnsext-rfc2672bis-dname-13.txt
index 13195bb4a220504127eae1a72b7404504066c382,13195bb4a220504127eae1a72b7404504066c382..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,952 -1,952 +1,0 @@@
--
--
--
--DNS Extensions Working Group                                     S. Rose
--Internet-Draft                                                      NIST
--Obsoletes: 2672 (if approved)                              W. Wijngaards
--Updates: 3363,4294                                            NLnet Labs
--(if approved)                                                May 2, 2008
--Intended status: Standards Track
--Expires: November 3, 2008
--
--
--                 Update to DNAME Redirection in the DNS
--                 draft-ietf-dnsext-rfc2672bis-dname-13
--
--Status of This Memo
--
--   By submitting this Internet-Draft, each author represents that any
--   applicable patent or other IPR claims of which he or she is aware
--   have been or will be disclosed, and any of which he or she becomes
--   aware will be disclosed, in accordance with Section 6 of BCP 79.
--
--   Internet-Drafts are working documents of the Internet Engineering
--   Task Force (IETF), its areas, and its working groups.  Note that
--   other groups may also distribute working documents as Internet-
--   Drafts.
--
--   Internet-Drafts are draft documents valid for a maximum of six months
--   and may be updated, replaced, or obsoleted by other documents at any
--   time.  It is inappropriate to use Internet-Drafts as reference
--   material or to cite them other than as "work in progress."
--
--   The list of current Internet-Drafts can be accessed at
--   http://www.ietf.org/ietf/1id-abstracts.txt.
--
--   The list of Internet-Draft Shadow Directories can be accessed at
--   http://www.ietf.org/shadow.html.
--
--   This Internet-Draft will expire on November 3, 2008.
--
--Copyright Notice
--
--   Copyright (C) The IETF Trust (2008).
--
--Abstract
--
--   The DNAME record provides redirection for a sub-tree of the domain
--   name tree in the DNS system.  That is, all names that end with a
--   particular suffix are redirected to another part of the DNS.  This is
--   an update of the original specification in RFC 2672, also aligning
--   RFC 3363 and RFC 4294 with this revision.
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 1]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--Requirements Language
--
--   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
--   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
--   document are to be interpreted as described in RFC 2119 [RFC2119].
--
--Table of Contents
--
--   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
--
--   2.  The DNAME Resource Record  . . . . . . . . . . . . . . . . . .  3
--     2.1.  Format . . . . . . . . . . . . . . . . . . . . . . . . . .  3
--     2.2.  The DNAME Substitution . . . . . . . . . . . . . . . . . .  4
--     2.3.  DNAME Apex not Redirected itself . . . . . . . . . . . . .  5
--     2.4.  Names Next to and Below a DNAME Record . . . . . . . . . .  6
--     2.5.  Compression of the DNAME record. . . . . . . . . . . . . .  6
--
--   3.  Processing . . . . . . . . . . . . . . . . . . . . . . . . . .  7
--     3.1.  CNAME synthesis and UD bit . . . . . . . . . . . . . . . .  7
--     3.2.  Server algorithm . . . . . . . . . . . . . . . . . . . . .  8
--     3.3.  Wildcards  . . . . . . . . . . . . . . . . . . . . . . . .  9
--     3.4.  Acceptance and Intermediate Storage  . . . . . . . . . . . 10
--
--   4.  DNAME Discussions in Other Documents . . . . . . . . . . . . . 10
--
--   5.  Other Issues with DNAME  . . . . . . . . . . . . . . . . . . . 12
--     5.1.  Canonical hostnames cannot be below DNAME owners . . . . . 12
--     5.2.  Dynamic Update and DNAME . . . . . . . . . . . . . . . . . 12
--     5.3.  DNSSEC and DNAME . . . . . . . . . . . . . . . . . . . . . 12
--       5.3.1.  DNAME bit in NSEC type map . . . . . . . . . . . . . . 12
--       5.3.2.  Validators Must Understand DNAME . . . . . . . . . . . 12
--         5.3.2.1.  DNAME in Bitmap Causes Invalid Name Error  . . . . 13
--         5.3.2.2.  Valid Name Error Response Involving DNAME in
--                   Bitmap . . . . . . . . . . . . . . . . . . . . . . 13
--         5.3.2.3.  Response With Synthesized CNAME  . . . . . . . . . 13
--
--   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 14
--
--   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 14
--
--   8.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 14
--
--   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
--     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 14
--     9.2.  Informative References . . . . . . . . . . . . . . . . . . 15
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 2]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--1.  Introduction
--
--   DNAME is a DNS Resource Record type originally defined in RFC 2672
--   [RFC2672].  DNAME provides redirection from a part of the DNS name
--   tree to another part of the DNS name tree.
--
--   The DNAME RR and the CNAME RR [RFC1034] cause a lookup to
--   (potentially) return data corresponding to a domain name different
--   from the queried domain name.  The difference between the two
--   resource records is that the CNAME RR directs the lookup of data at
--   its owner to another single name, a DNAME RR directs lookups for data
--   at descendents of its owner's name to corresponding names under a
--   different (single) node of the tree.
--
--   Take for example, looking through a zone (see RFC 1034 [RFC1034],
--   section 4.3.2, step 3) for the domain name "foo.example.com" and a
--   DNAME resource record is found at "example.com" indicating that all
--   queries under "example.com" be directed to "example.net".  The lookup
--   process will return to step 1 with the new query name of
--   "foo.example.net".  Had the query name been "www.foo.example.com" the
--   new query name would be "www.foo.example.net".
--
--   This document is an update of the original specification of DNAME in
--   RFC 2672 [RFC2672].  DNAME was conceived to help with the problem of
--   maintaining address-to-name mappings in a context of network
--   renumbering.  With a careful set-up, a renumbering event in the
--   network causes no change to the authoritative server that has the
--   address-to-name mappings.  Examples in practice are classless reverse
--   address space delegations.
--
--   Another usage of DNAME lies in redirection of name spaces.  For
--   example, a zone administrator may want sub-trees of the DNS to
--   contain the same information.  Examples include punycode alternates
--   for domain spaces.  DNAME is also used for the redirection of ENUM
--   domains to another maintaining party.
--
--   This update to DNAME does not change the wire format or the handling
--   of DNAME Resource Records by existing software.  A new UD (Understand
--   DNAME) bit in the EDNS flags field can be used to signal that CNAME
--   synthesis is not needed.  Discussion is added on problems that may be
--   encountered when using DNAME.
--
--2.  The DNAME Resource Record
--
--2.1.  Format
--
--   The DNAME RR has mnemonic DNAME and type code 39 (decimal).  It is
--   not class-sensitive.
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 3]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   Its RDATA is comprised of a single field, <target>, which contains a
--   fully qualified domain name that must be sent in uncompressed form
--   [RFC1035], [RFC3597].  The <target> field MUST be present.  The
--   presentation format of <target> is that of a domain name [RFC1035].
--
--           <owner> <ttl> <class> DNAME <target>
--
--   The effect of the DNAME RR is the substitution of the record's
--   <target> for its owner name, as a suffix of a domain name.  This
--   substitution has to be applied for every DNAME RR found in the
--   resolution process, which allows fairly lengthy valid chains of DNAME
--   RRs.
--
--   Details of the substitution process, methods to avoid conflicting
--   resource records, and rules for specific corner cases are given in
--   the following subsections.
--
--2.2.  The DNAME Substitution
--
--   When following RFC 1034 [RFC1034], section 4.3.2's algorithm's third
--   step, "start matching down, label by label, in the zone" and a node
--   is found to own a DNAME resource record a DNAME substitution occurs.
--   The name being sought may be the original query name or a name that
--   is the result of a CNAME resource record being followed or a
--   previously encountered DNAME.  As is the case of finding a CNAME
--   resource record or NS resource record set, the processing of a DNAME
--   will happen prior to finding the desired domain name.
--
--   A DNAME substitution is performed by replacing the suffix labels of
--   the name being sought matching the owner name of the DNAME resource
--   record with the string of labels in the RDATA field.  The matching
--   labels end with the root label in all cases.  Only whole labels are
--   replaced.  See the table of examples for common cases and corner
--   cases.
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 4]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   In the table below, the QNAME refers to the query name.  The owner is
--   the DNAME owner domain name, and the target refers to the target of
--   the DNAME record.  The result is the resulting name after performing
--   the DNAME substitution on the query name. "no match" means that the
--   query did not match the DNAME and thus no substitution is performed
--   and a possible error message is returned (if no other result is
--   possible).  In the examples below, 'cyc' and 'shortloop' contain
--   loops.
--
--    QNAME            owner  DNAME   target         result
--    ---------------- -------------- -------------- -----------------
--    com.             example.com.   example.net.   <no match>
--    example.com.     example.com.   example.net.   <no match>
--    a.example.com.   example.com.   example.net.   a.example.net.
--    a.b.example.com. example.com.   example.net.   a.b.example.net.
--    ab.example.com.  b.example.com. example.net.   <no match>
--    foo.example.com. example.com.   example.net.   foo.example.net.
--    a.x.example.com. x.example.com. example.net.   a.example.net.
--    a.example.com.   example.com.   y.example.net. a.y.example.net.
--    cyc.example.com. example.com.   example.com.   cyc.example.com.
--    cyc.example.com. example.com.   c.example.com. cyc.c.example.com.
--    shortloop.x.x.   x.             .              shortloop.x.
--    shortloop.x.     x.             .              shortloop.
--
--                   Table 1. DNAME Substitution Examples.
--
--   It is possible for DNAMEs to form loops, just as CNAMEs can form
--   loops.  DNAMEs and CNAMEs can chain together to form loops.  A single
--   corner case DNAME can form a loop.  Resolvers and servers should be
--   cautious in devoting resources to a query, but be aware that fairly
--   long chains of DNAMEs may be valid.  Zone content administrators
--   should take care to insure that there are no loops that could occur
--   when using DNAME or DNAME/CNAME redirection.
--
--   The domain name can get too long during substitution.  For example,
--   suppose the target name of the DNAME RR is 250 octets in length
--   (multiple labels), if an incoming QNAME that has a first label over 5
--   octets in length, the result of the result would be a name over 255
--   octets.  If this occurs the server returns an RCODE of YXDOMAIN
--   [RFC2136].  The DNAME record and its signature (if the zone is
--   signed) are included in the answer as proof for the YXDOMAIN (value
--   6) RCODE.
--
--2.3.  DNAME Apex not Redirected itself
--
--   Unlike a CNAME RR, a DNAME RR redirects DNS names subordinate to its
--   owner name; the owner name of a DNAME is not redirected itself.  The
--   domain name that owns a DNAME record is allowed to have other
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 5]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   resource record types at that domain name, except DNAMEs or CNAMEs.
--   This means that DNAME RRs are not allowed at the parent side of a
--   delegation point but are allowed at a zone apex.
--
--   The reason for this decision was that one can have a DNAME at the
--   zone apex.  There still is a need to have the customary SOA and NS
--   resource records at the zone apex.  This means that DNAME does not
--   mirror a zone completely, as it does not mirror the zone apex.
--
--   These rules also allow DNAME records to be queried through RFC 1034
--   [RFC1034] compliant, DNAME-unaware caches.
--
--2.4.  Names Next to and Below a DNAME Record
--
--   Resource records MUST NOT exist at any domain name subordinate to the
--   owner of a DNAME RR.  To get the contents for names subordinate to
--   that owner, the DNAME redirection must be invoked and the resulting
--   target queried.  A server MAY refuse to load a zone that has data at
--   a domain name subordinate to a domain name owning a DNAME RR.  If the
--   server does load the zone, those names below the DNAME RR will be
--   occluded, RFC 2136 [RFC2136], section 7.18.  Also a server SHOULD
--   refuse to load a zone subordinate to the owner of a DNAME record in
--   the ancestor zone.  See Section 5.2 for further discussion related to
--   dynamic update.
--
--   DNAME is a singleton type, meaning only one DNAME is allowed per
--   name.  The owner name of a DNAME can only have one DNAME RR, and no
--   CNAME RRs can exist at that name.  These rules make sure that for a
--   single domain name only one redirection exists, and thus no confusion
--   which one to follow.  A server SHOULD refuse to load a zone that
--   violates these rules.
--
--2.5.  Compression of the DNAME record.
--
--   The DNAME owner name can be compressed like any other owner name.
--   The DNAME RDATA target name MUST NOT be sent out in compressed form,
--   so that a DNAME RR can be treated as an unknown type [RFC3597].
--
--   Although the previous DNAME specification [RFC2672] (that is
--   obsoleted by this specification) talked about signaling to allow
--   compression of the target name, such signaling is not specified.
--
--   RFC 2672 stated that the EDNS version had a meaning for understanding
--   of DNAME and DNAME target name compression.  This document updates
--   RFC 2672, in that there is no EDNS version signaling for DNAME.
--   However, the flags section of EDNS(0) is updated with a Understand-
--   DNAME flag by this document (See Section 3.3).
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 6]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--3.  Processing
--
--   The DNAME RR causes type NS additional section processing.
--
--3.1.  CNAME synthesis and UD bit
--
--   When preparing an response, a server upon performing a DNAME
--   substitution will in all cases include the DNAME RR used in the
--   answer section.  A CNAME RR record with TTL equal to the
--   corresponding DNAME RR is synthesized and included in the answer
--   section for old resolvers.  The owner name of the CNAME is the QNAME
--   of the query.  DNSSEC [RFC4033], [RFC4034], [RFC4035] says that the
--   synthesized CNAME does not have to be signed.  The DNAME has an RRSIG
--   and a validating resolver can check the CNAME against the DNAME
--   record and validate the DNAME record.
--
--   Resolvers MUST be able to handle a synthesized CNAME TTL of zero or
--   equal to the TTL of the corresponding DNAME record.  A TTL of zero
--   means that the CNAME can be discarded immediately after processing
--   the answer.  DNAME aware resolvers can set the Understand-DNAME (UD
--   bit) to receive a response with only the DNAME RR and no synthesized
--   CNAMEs.
--
--   The UD bit is part of the EDNS [RFC2671] extended RCODE and Flags
--   field.  It is used to omit server processing, transmission and
--   resolver processing of unsigned synthesized CNAMEs.  Resolvers can
--   set this in a query to request omission of the synthesized CNAMEs.
--   Servers copy the UD bit to the response, and can omit synthesized
--   CNAMEs from the answer.  Older resolvers do not set the UD bit, and
--   older servers do not copy the UD bit to the answer, and will not omit
--   synthesized CNAMEs.
--
--   Updated EDNS extended RCODE and Flags field.
--
--               +0 (MSB)                +1 (LSB)
--      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--   0: |   EXTENDED-RCODE      |       VERSION         |
--      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--   2: |DO|UD|                 Z                       |
--      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--
--   Servers MUST be able to answer a query for a synthesized CNAME.  Like
--   other query types this invokes the DNAME, and synthesizes the CNAME
--   into the answer.
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 7]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--3.2.  Server algorithm
--
--   Below the server algorithm, which appeared in RFC 2672 Section 4.1,
--   is expanded to handle the UD (Understand DNAME) bit.
--
--   1.  Set or clear the value of recursion available in the response
--       depending on whether the name server is willing to provide
--       recursive service.  If recursive service is available and
--       requested via the RD bit in the query, go to step 5, otherwise
--       step 2.
--
--   2.  Search the available zones for the zone which is the nearest
--       ancestor to QNAME.  If such a zone is found, go to step 3,
--       otherwise step 4.
--
--   3.  Start matching down, label by label, in the zone.  The matching
--       process can terminate several ways:
--
--       A.  If the whole of QNAME is matched, we have found the node.
--
--           If the data at the node is a CNAME, and QTYPE does not match
--           CNAME, copy the CNAME RR into the answer section of the
--           response, change QNAME to the canonical name in the CNAME RR,
--           and go back to step 1.
--
--           Otherwise, copy all RRs which match QTYPE into the answer
--           section and go to step 6.
--
--       B.  If a match would take us out of the authoritative data, we
--           have a referral.  This happens when we encounter a node with
--           NS RRs marking cuts along the bottom of a zone.
--
--           Copy the NS RRs for the sub-zone into the authority section
--           of the reply.  Put whatever addresses are available into the
--           additional section, using glue RRs if the addresses are not
--           available from authoritative data or the cache.  Go to step
--           4.
--
--       C.  If at some label, a match is impossible (i.e., the
--           corresponding label does not exist), look to see whether the
--           last label matched has a DNAME record.
--
--           If a DNAME record exists at that point, copy that record into
--           the answer section.  If substitution of its <target> for its
--           <owner> in QNAME would overflow the legal size for a <domain-
--           name>, set RCODE to YXDOMAIN [RFC2136] and exit; otherwise
--           perform the substitution and continue.  If the EDNS OPT
--           record is present in the query and the UD bit is set, the
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 8]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--           server MAY copy the UD bit to the answer EDNS OPT record, and
--           omit CNAME synthesis.  Else the server MUST synthesize a
--           CNAME record as described above and include it in the answer
--           section.  Go back to step 1.
--
--           If there was no DNAME record, look to see if the "*" label
--           exists.
--
--           If the "*" label does not exist, check whether the name we
--           are looking for is the original QNAME in the query or a name
--           we have followed due to a CNAME or DNAME.  If the name is
--           original, set an authoritative name error in the response and
--           exit.  Otherwise just exit.
--
--           If the "*" label does exist, match RRs at that node against
--           QTYPE.  If any match, copy them into the answer section, but
--           set the owner of the RR to be QNAME, and not the node with
--           the "*" label.  If the data at the node with the "*" label is
--           a CNAME, and QTYPE doesn't match CNAME, copy the CNAME RR
--           into the answer section of the response changing the owner
--           name to the QNAME, change QNAME to the canonical name in the
--           CNAME RR, and go back to step 1.  Otherwise, Go to step 6.
--
--   4.  Start matching down in the cache.  If QNAME is found in the
--       cache, copy all RRs attached to it that match QTYPE into the
--       answer section.  If QNAME is not found in the cache but a DNAME
--       record is present at an ancestor of QNAME, copy that DNAME record
--       into the answer section.  If there was no delegation from
--       authoritative data, look for the best one from the cache, and put
--       it in the authority section.  Go to step 6.
--
--   5.  Use the local resolver or a copy of its algorithm to answer the
--       query.  Store the results, including any intermediate CNAMEs and
--       DNAMEs, in the answer section of the response.
--
--   6.  Using local data only, attempt to add other RRs which may be
--       useful to the additional section of the query.  Exit.
--
--   Note that there will be at most one ancestor with a DNAME as
--   described in step 4 unless some zone's data is in violation of the
--   no-descendants limitation in section 3.  An implementation might take
--   advantage of this limitation by stopping the search of step 3c or
--   step 4 when a DNAME record is encountered.
--
--3.3.  Wildcards
--
--   The use of DNAME in conjunction with wildcards is discouraged
--   [RFC4592].  Thus records of the form "*.example.com DNAME
--
--
--
--Rose & Wijngaards       Expires November 3, 2008                [Page 9]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   example.net" SHOULD NOT be used.
--
--   The interaction between the expansion of the wildcard and the
--   redirection of the DNAME is non-deterministic.  Because the
--   processing is non-deterministic, DNSSEC validating resolvers may not
--   be able to validate a wildcarded DNAME.
--
--   A server MAY give a warning that the behavior is unspecified if such
--   a wildcarded DNAME is loaded.  The server MAY refuse it, refuse to
--   load or refuse dynamic update.
--
--3.4.  Acceptance and Intermediate Storage
--
--   DNS caches can encounter data at names below the owner name of a
--   DNAME RR, due to a change at the authoritative server where data from
--   before and after the change resides in the cache.  This conflict
--   situation is a transitional phase, that ends when the old data times
--   out.  The cache can opt to store both old and new data and treat each
--   as if the other did not exist, or drop the old data, or drop the
--   longer domain name.  In any approach, consistency returns after the
--   older data TTL times out.
--
--   DNS caches MUST perform CNAME synthesis on behalf of DNAME-ignorant
--   clients.  A DNS cache that understands DNAMEs can send out queries on
--   behalf of clients with the UD bit set (See Section 3.1).  After
--   receiving the answers the DNS cache sends replies to DNAME ignorant
--   clients that include DNAMEs and synthesized CNAMEs.
--
--4.  DNAME Discussions in Other Documents
--
--   In [RFC2181], in Section 10.3., the discussion on MX and NS records
--   touches on redirection by CNAMEs, but this also holds for DNAMEs.
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 10]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   Excerpt from 10.3.  MX and NS records (in RFC 2181).
--
--           The domain name used as the value of a NS resource record,
--           or part of the value of a MX resource record must not be
--           an alias.  Not only is the specification clear on this
--           point, but using an alias in either of these positions
--           neither works as well as might be hoped, nor well fulfills
--           the ambition that may have led to this approach.  This
--           domain name must have as its value one or more address
--           records.  Currently those will be A records, however in
--           the future other record types giving addressing
--           information may be acceptable.  It can also have other
--           RRs, but never a CNAME RR.
--
--   The DNAME RR is discussed in RFC 3363, section 4, on A6 and DNAME.
--   The opening premise of this section is demonstrably wrong, and so the
--   conclusion based on that premise is wrong.  In particular, [RFC3363]
--   deprecates the use of DNAME in the IPv6 reverse tree, which is then
--   carried forward as a recommendation in [RFC4294].  Based on the
--   experience gained in the meantime, [RFC3363] should be revised,
--   dropping all constraints on having DNAME RRs in these zones.  This
--   would greatly improve the manageability of the IPv6 reverse tree.
--   These changes are made explicit below.
--
--   In [RFC3363], the paragraph
--
--     "The issues for DNAME in the reverse mapping tree appears to be
--     closely tied to the need to use fragmented A6 in the main tree: if
--     one is necessary, so is the other, and if one isn't necessary, the
--     other isn't either.  Therefore, in moving RFC 2874 to experimental,
--     the intent of this document is that use of DNAME RRs in the reverse
--     tree be deprecated."
--
--   is to be replaced with the word "DELETED".
--
--   In [RFC4294], the reference to DNAME was left in as an editorial
--   oversight.  The paragraph
--
--     "Those nodes are NOT RECOMMENDED to support the experimental A6 and
--     DNAME Resource Records [RFC3363]."
--
--   is to be replaced by
--
--     "Those nodes are NOT RECOMMENDED to support the experimental
--     A6 Resource Record [RFC3363]."
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 11]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--5.  Other Issues with DNAME
--
--   There are several issues to be aware of about the use of DNAME.
--
--5.1.  Canonical hostnames cannot be below DNAME owners
--
--   The names listed as target names of MX, NS, PTR and SRV [RFC2782]
--   records must be canonical hostnames.  This means no CNAME or DNAME
--   redirection may be present during DNS lookup of the address records
--   for the host.  This is discussed in RFC 2181 [RFC2181], section 10.3,
--   and RFC 1912 [RFC1912], section 2.4.  For SRV see RFC 2782 [RFC2782]
--   page 4.
--
--   The upshot of this is that although the lookup of a PTR record can
--   involve DNAMEs, the name listed in the PTR record can not fall under
--   a DNAME.  The same holds for NS, SRV and MX records.  For example,
--   when punycode alternates for a zone use DNAME then the NS, MX, SRV
--   and PTR records that point to that zone must use names without
--   punycode in their RDATA.  What must be done then is to have the
--   domain names with DNAME substitution already applied to it as the MX,
--   NS, PTR, SRV data.  These are valid canonical hostnames.
--
--5.2.  Dynamic Update and DNAME
--
--   DNAME records can be added, changed and removed in a zone using
--   dynamic update transactions.  Adding a DNAME RR to a zone occludes
--   any domain names that may exist under the added DNAME.
--
--   A server MUST ignore a dynamic update message that attempts to add a
--   DNAME RR at a name that already has a CNAME RR or another DNAME RR
--   associated with that name.
--
--5.3.  DNSSEC and DNAME
--
--5.3.1.  DNAME bit in NSEC type map
--
--   When a validator checks the NSEC RRs returned on a name error
--   response, it SHOULD check that the DNAME bit is not set.  If the
--   DNAME bit is set then the DNAME substitution should have been done,
--   but has not.
--
--5.3.2.  Validators Must Understand DNAME
--
--   Examples of why DNSSEC validators MUST understand DNAME.
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 12]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--5.3.2.1.  DNAME in Bitmap Causes Invalid Name Error
--
--   ;; Header: QR AA DO RCODE=3(NXDOMAIN)
--   ;; Question
--   foo.bar.example.com. IN A
--   ;; Answer
--   bar.example.com. NSEC dub.example.com. A DNAME
--   bar.example.com. RRSIG NSEC [valid signature]
--
--   If this is the response, then only by understanding that the DNAME
--   bit means that foo.bar.example.com needed to have been redirected by
--   the DNAME, the validator can see that it is a BOGUS reply from an
--   attacker that collated existing records from the DNS to create a
--   confusing reply.
--
--   If the DNAME bit had not been set in the NSEC record above then the
--   answer would have validated as a correct name error response.
--
--5.3.2.2.  Valid Name Error Response Involving DNAME in Bitmap
--
--   ;; Header: QR AA DO RCODE=3(NXDOMAIN)
--   ;; Question
--   cee.example.com. IN A
--   ;; Answer
--   bar.example.com. NSEC dub.example.com. A DNAME
--   bar.example.com. RRSIG NSEC [valid signature]
--
--   This reply has the same NSEC records as the example above, but with
--   this query name (cee.example.com), the answer is validated, because
--   'cee' does not get redirected by the DNAME at 'bar'.
--
--5.3.2.3.  Response With Synthesized CNAME
--
--   ;; Header: QR AA DO RCODE=0(NOERROR)
--   ;; Question
--   foo.bar.example.com. IN A
--   ;; Answer
--   bar.example.com. DNAME bar.example.net.
--   bar.example.com. RRSIG DNAME [valid signature]
--   foo.bar.example.com. CNAME foo.bar.example.net.
--
--   The answer shown above has the synthesized CNAME included.  However,
--   the CNAME has no signature, since the server does not sign online.
--   So it cannot be trusted.  It could be altered by an attacker to be
--   foo.bar.example.com CNAME bla.bla.example.  The DNAME record does
--   have its signature included, since it does not change for every query
--   name.  The validator must verify the DNAME signature and then
--   recursively resolve further to query for the foo.bar.example.net A
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 13]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   record.
--
--6.  IANA Considerations
--
--   The DNAME Resource Record type code 39 (decimal) originally has been
--   registered by [RFC2672].  IANA should update the DNS resource record
--   registry to point to this document for RR type 39.
--
--   This draft requests the second highest bit in the EDNS flags field
--   for the Understand-DNAME (UD) flag.
--
--7.  Security Considerations
--
--   DNAME redirects queries elsewhere, which may impact security based on
--   policy and the security status of the zone with the DNAME and the
--   redirection zone's security status.
--
--   If a validating resolver accepts wildcarded DNAMEs, this creates
--   security issues.  Since the processing of a wildcarded DNAME is non-
--   deterministic and the CNAME that was substituted by the server has no
--   signature, the resolver may choose a different result than what the
--   server meant, and consequently end up at the wrong destination.  Use
--   of wildcarded DNAMEs is discouraged in any case [RFC4592].
--
--   A validating resolver MUST understand DNAME, according to [RFC4034].
--   In Section 5.3.2 examples are given that illustrate this need.
--
--8.  Acknowledgments
--
--   The authors of this draft would like to acknowledge Matt Larson for
--   beginning this effort to address the issues related to the DNAME RR
--   type.  The authors would also like to acknowledge Paul Vixie, Ed
--   Lewis, Mark Andrews, Mike StJohns, Niall O'Reilly, Sam Weiler, Alfred
--   Hines and Kevin Darcy for their review and comments on this document.
--
--9.  References
--
--9.1.  Normative References
--
--   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
--              STD 13, RFC 1034, November 1987.
--
--   [RFC1035]  Mockapetris, P., "Domain names - implementation and
--              specification", STD 13, RFC 1035, November 1987.
--
--   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
--              Requirement Levels", BCP 14, RFC 2119, March 1997.
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 14]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--   [RFC2136]  Vixie, P., Thomson, S., Rekhter, Y., and J. Bound,
--              "Dynamic Updates in the Domain Name System (DNS UPDATE)",
--              RFC 2136, April 1997.
--
--   [RFC2181]  Elz, R. and R. Bush, "Clarifications to the DNS
--              Specification", RFC 2181, July 1997.
--
--   [RFC2671]  Vixie, P., "Extension Mechanisms for DNS (EDNS0)",
--              RFC 2671, August 1999.
--
--   [RFC2782]  Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
--              specifying the location of services (DNS SRV)", RFC 2782,
--              February 2000.
--
--   [RFC3597]  Gustafsson, A., "Handling of Unknown DNS Resource Record
--              (RR) Types", RFC 3597, September 2003.
--
--   [RFC4033]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
--              Rose, "DNS Security Introduction and Requirements",
--              RFC 4033, March 2005.
--
--   [RFC4034]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
--              Rose, "Resource Records for the DNS Security Extensions",
--              RFC 4034, March 2005.
--
--   [RFC4035]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
--              Rose, "Protocol Modifications for the DNS Security
--              Extensions", RFC 4035, March 2005.
--
--   [RFC4592]  Lewis, E., "The Role of Wildcards in the Domain Name
--              System", RFC 4592, July 2006.
--
--9.2.  Informative References
--
--   [RFC1912]  Barr, D., "Common DNS Operational and Configuration
--              Errors", RFC 1912, February 1996.
--
--   [RFC2672]  Crawford, M., "Non-Terminal DNS Name Redirection",
--              RFC 2672, August 1999.
--
--   [RFC3363]  Bush, R., Durand, A., Fink, B., Gudmundsson, O., and T.
--              Hain, "Representing Internet Protocol version 6 (IPv6)
--              Addresses in the Domain Name System (DNS)", RFC 3363,
--              August 2002.
--
--   [RFC4294]  Loughney, J., "IPv6 Node Requirements", RFC 4294,
--              April 2006.
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 15]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--Authors' Addresses
--
--   Scott Rose
--   NIST
--   100 Bureau Dr.
--   Gaithersburg, MD  20899
--   USA
--
--   Phone: +1-301-975-8439
--   Fax:   +1-301-975-6238
--   EMail: scottr@nist.gov
--
--
--   Wouter Wijngaards
--   NLnet Labs
--   Kruislaan 419
--   Amsterdam  1098 VA
--   The Netherlands
--
--   Phone: +31-20-888-4551
--   EMail: wouter@nlnetlabs.nl
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 16]
--\f
--Internet-Draft              DNAME Redirection                   May 2008
--
--
--Full Copyright Statement
--
--   Copyright (C) The IETF Trust (2008).
--
--   This document is subject to the rights, licenses and restrictions
--   contained in BCP 78, and except as set forth therein, the authors
--   retain all their rights.
--
--   This document and the information contained herein are provided on an
--   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
--   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
--   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
--   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
--   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
--   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--
--Intellectual Property
--
--   The IETF takes no position regarding the validity or scope of any
--   Intellectual Property Rights or other rights that might be claimed to
--   pertain to the implementation or use of the technology described in
--   this document or the extent to which any license under such rights
--   might or might not be available; nor does it represent that it has
--   made any independent effort to identify any such rights.  Information
--   on the procedures with respect to rights in RFC documents can be
--   found in BCP 78 and BCP 79.
--
--   Copies of IPR disclosures made to the IETF Secretariat and any
--   assurances of licenses to be made available, or the result of an
--   attempt made to obtain a general license or permission for the use of
--   such proprietary rights by implementers or users of this
--   specification can be obtained from the IETF on-line IPR repository at
--   http://www.ietf.org/ipr.
--
--   The IETF invites any interested party to bring to its attention any
--   copyrights, patents or patent applications, or other proprietary
--   rights that may cover technology that may be required to implement
--   this standard.  Please address the information to the IETF at
--   ietf-ipr@ietf.org.
--
--Acknowledgement
--
--   Funding for the RFC Editor function is provided by the IETF
--   Administrative Support Activity (IASA).
--
--
--
--
--
--
--
--Rose & Wijngaards       Expires November 3, 2008               [Page 17]
--\f
diff --cc doc/private/branches
index 7c0d9689a9272b481b29d479fc376ca4b7198a29,12016f27ba02cba65406ed8aed10fd9678ef620f..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,947 -1,946 +1,0 @@@
--
--Branch                                Status  Whom    // Comments
-------------------------------------------------------------
--
--                              new             not yet classified
--                              open            developement branch
--                              active          not a development branch
--                              review          ready for review
--                              private         private branch
--                              closed          finished with
--
--branch_9_5_0_P1                       new     each    // 2008-06-30 22:15 +0000
--custom_AFILIAS_v9_4_1_P1      private marka   // 2007-08-30 01:11 +0000
--custom_AFIS_v9_4_0            private marka   // 2007-04-23 05:08 +0000
--custom_ALLIANZ_v9_4_1_P1      private marka   // 2007-08-03 04:51 +0000
--custom_ALLIANZ_v9_4_2         private marka   // 2007-11-23 04:32 +0000
--custom_ALLIANZ_v9_4_2_P1      new     each    // 2008-05-27 23:33 +0000
--custom_ALLIANZ_v9_4_2_P2      new     each    // 2008-08-05 21:28 +0000
--custom_ATT_v9_4                       new     each    // 2009-07-28 17:05 +0000
--custom_CISCO_v9_3_4_P1                private marka   // 2007-11-23 04:19 +0000
--custom_DYNDNS_v9_6            new     each    // 2009-06-19 15:34 +0000
--custom_NOM_v9_5_0a7           private 
--custom_NOM_v9_5_0b2           new     marka   // 2008-03-06 06:45 +0000
--custom_NOM_v9_5_0b2+          new     marka   // 2008-03-06 06:13 +0000
--custom_UTK_v9_4_0             private marka   // 2007-04-23 13:35 +0000
--custom_UTK_v9_4_1             private marka   // 2007-04-30 01:51 +0000
--custom_WALMART_v9_6_1         new     marka   // 2009-07-13 22:53 +0000
--custom_WFB_v9_3_1             private 
--custom_WFB_v9_3_2             private 
--custom_WFB_v9_3_3             private 
--custom_WFB_v9_4_0             private 
--custom_WFB_v9_4_1             private marka   // 2007-04-30 01:53 +0000
--custom_WFB_v9_4_1_P1          private marka   // 2007-08-01 22:49 +0000
--custom_WFB_v9_4_2             private each    // 2007-12-05 18:10 +0000
--custom_WFB_v9_4_2_P1          new     each    // 2008-05-27 22:59 +0000
--custom_WFB_v9_5_0_P1          private marka   // 2008-07-15 00:05 +0000
--custom_WFB_v9_5_0_P2          new     each    // 2008-08-05 21:06 +0000
--custom_WFB_v9_5_0_P2_1_servfail       new     jinmei  // 2008-12-08 22:38 +0000
--custom_WFB_v9_6_0_P1          new     marka   // 2009-02-05 07:00 +0000
--gsstsig4                      open    sra     // head + gsstsig as of 12 may 2006
--gsstsig4_win32                        open    danny   // sub-branch off gsstsig4 for windows development
--jinmei-mmapzone-test          open            // mmap based zone file. very experimental, just for reference purposes
--jinmei_libdnsng                       open    
--jinmei_lrucache                       open    
--libbind_clean                 open    jinmei
--make                          new     
--marka-xlink                   new     marka   // 2009-02-10 02:17 +0000
--marka_970                     new     marka   // 2009-06-18 02:50 +0000
--marka_libdnsng                        open    
--marka_tools                   new     marka   // 2009-07-23 03:10 +0000
--marka_tools2                  new     marka   // 2009-08-14 10:55 +0000
--mlg-20000518                  open    explorer
--newresolver0                  open    
--openssl_stub                  open    marka
--rt10864                               open    marka   // NSEC caching @ delegation
--rt11398d                      open    sra     // doxygen dev
--rt11398e                      open    sra
--rt11543                               open    jakob
--rt11733                               open    jakob
--rt11733b                      open    jakob
--rt13489                               review  marka   // Solaris bug fixes
--rt13555                               open    marka   // nslookup name failure
--rt13562                               open    marka
--rt14654                               open    
--rt14815                               open            // stats blind spots    
--rt14895                               open    jinmei
--rt14895b                      open    jinmei
--rt14951a                      open    
--rt15327                               open    
--rt15452a                      open    marka   // NSEC3
--rt15452b                      new     marka   // 2008-04-04 05:06 +0000
--rt15452c                      new     marka   // 2008-09-22 02:18 +0000
--rt15698                               open    
--rt15765                               open    
--rt15860                               open    
--rt15869                               review          // libdnsng
--rt16157                               open    
--rt16288                               review  
--rt16288_best_to_first_match   review  
--rt16402                               open    
--rt16428                               open    
--rt16443                               open    marka   // post 9.4.0
--rt16519                               open    marka   // epsilon for .DE
--rt16671                               open    marka   // Silence Coverity reports
--rt16760                               open    explorer        // 2007-03-19 14:59 +0000
--rt16806                               open    marka   // 2007-04-24 04:38 +0000
--rt16844                               open    marka   // EVP conversion
--rt16857                               open    marka   // 2007-05-14 03:45 +0000
--rt17061                               open    marka   // 2007-08-02 02:08 +0000
--rt17091                               open    evan
--rt17099                               open    marka   // 2007-09-02 23:42 +0000
--rt17138                               open    marka   // 2007-09-11 01:39 +0000
--rt17146                               open    
--rt17151                               open    marka   // 2007-09-18 00:34 +0000
--rt17214                               review  jakob
--rt17214b                      new     each    // 2008-05-07 00:27 +0000
--rt17224                               new     marka   // 2008-02-08 04:24 +0000
--rt17261                               new     marka   // 2008-01-22 13:29 +0000
--rt1727                                open            // ixfr-from-differences workfile
--rt17301                               new     marka   // 2008-01-08 04:27 +0000
--rt17312                               new     marka   // 2008-01-04 05:16 +0000
--rt17347                               open    each    // 2007-12-17 23:48 +0000
--rt17374                               open    each    // 2007-12-19 05:51 +0000
--rt17375                               open    each    // 2007-12-20 16:47 +0000
--rt17435                               new     
--rt17441                               new     marka   // 2008-01-08 03:41 +0000
--rt17451                               new     fdupont // Delete RB tree order
--rt17455                               new     each    // 2008-01-10 00:20 +0000
--rt17460                               new     marka   // 2008-01-11 03:44 +0000
--rt17462                               new     each    // 2008-01-11 17:47 +0000
--rt17466                               new     
--rt17469                               new     marka   // 2008-01-12 00:48 +0000
--rt17513                               new     marka   // 2008-01-25 03:37 +0000
--rt17514                               new     marka   // 2008-01-23 01:38 +0000
--rt17557                               new     marka   // 2008-01-29 00:48 +0000
--rt17572                               new     marka   // 2008-02-04 00:59 +0000
--rt17573                               new     marka   // 2008-02-04 05:15 +0000
--rt17576                               new     marka   // 2008-02-05 02:22 +0000
--rt17580                               new     
--rt17589                               new     marka   // 2008-02-11 05:52 +0000
--rt17590                               new     
--rt17596                               new     fdupont // explicit rollover
--rt17596a                      new     fdupont // 2008-02-28 08:16 +0000
--rt17596b                      new     fdupont // 2008-04-21 12:27 +0000
--rt17596c                      new     fdupont // 2008-11-03 12:07 +0000
--rt17598                               new     marka   // 2008-02-17 23:24 +0000
--rt17628                               new     
--rt17671                               new     marka   // 2008-02-27 01:39 +0000
--rt17729                               new     marka   // 2008-03-06 03:56 +0000
--rt17729a                      new     marka   // 2008-04-02 23:40 +0000
--rt17828                               new     marka   // 2008-04-09 23:06 +0000
--rt17849                               new     mayer   // 2008-07-07 04:17 +0000
--rt17949                               new     
--rt17949_v9_3                  new     
--rt17949_v9_4                  new     
--rt17949_v9_5                  new     
--rt17977                               new     each    // 2008-04-23 00:29 +0000
--rt18018                               new     
--rt18020                               new     fdupont // FIPS 140-2
--rt18020a                      new     fdupont // 2008-05-15 14:50 +0000
--rt18029                               new     each    // 2008-05-30 05:02 +0000
--rt18029a                      new     marka   // 2008-08-06 05:31 +0000
--rt18033                               new     fdupont // HSM maintenance
--rt18033a                      new     fdupont // 2008-12-30 12:49 +0000
--rt18040                               new     marka   // 2008-05-08 02:25 +0000
--rt18042                               new     fdupont // 2008-05-09 13:27 +0000
--rt18046                               new     fdupont // 2008-05-09 06:56 +0000
--rt18046a                      new     fdupont // 2008-10-22 11:48 +0000
--rt18092                               new     each    // 2008-05-21 05:49 +0000
--rt18098                               new     
--rt18159                               new     
--rt18168                               new     marka   // 2008-10-22 02:14 +0000
--rt18192                               new     jinmei  // 2008-12-23 02:53 +0000
--rt18194                               new     
--rt18253                               new     each    // 2008-07-18 23:01 +0000
--rt18306                               new     marka   // 2008-11-04 23:46 +0000
--rt18331                               new     fdupont // 2008-07-19 14:53 +0000
--rt18332                               new     fdupont // 2008-07-20 13:11 +0000
--rt18332_v9_3_5_P1             new     fdupont // 2008-07-20 13:16 +0000
--rt18335                               new     fdupont // 2008-07-20 11:50 +0000
--rt18336                               new     fdupont // 2008-07-21 13:51 +0000
--rt18336p1                     new     
--rt18344                               new     
--rt18348                               new     fdupont // 2008-08-09 08:31 +0000
--rt18358                               new     fdupont // 2008-07-23 22:35 +0000
--rt18368                               new     marka   // 2008-11-28 05:10 +0000
--rt18370                               new     mayer   // 2008-07-29 01:55 +0000
--rt18374                               new     mayer   // 2008-07-28 02:48 +0000
--rt18374_v9_5                  new     mayer   // 2008-07-28 13:32 +0000
--rt18411                               new     
--rt18441                               new     each    // 2008-08-15 17:02 +0000
--rt18493                               new     
--rt18516                               new     
--rt18535                               new     marka   // 2008-11-28 02:19 +0000
--rt18543                               new     marka   // 2008-11-28 00:55 +0000
--rt18559                               new     each    // 2008-09-26 03:54 +0000
--rt18578                               new     dhankins        // 2008-09-05 18:56 +0000
--rt18601                               new     pselkirk        // 2009-02-24 20:19 +0000
--rt18632                               new     mayer   // 2008-09-24 03:10 +0000
--rt18634                               new     mayer   // 2008-09-16 03:47 +0000
--rt18646                               new     marka   // 2008-09-18 03:40 +0000
--rt18657                               new     marka   // 2008-11-05 03:19 +0000
--rt18658                               new     marka   // 2008-11-27 04:46 +0000
--rt18685                               new     each    // 2008-10-24 00:53 +0000
--rt18694                               new     fdupont // 2008-10-29 10:23 +0000
--rt18711                               new     marka   // 2008-11-27 03:17 +0000
--rt18784                               new     
--rt18785                               new     marka   // 2008-10-31 01:19 +0000
--rt18793                               new     fdupont // 2008-10-25 11:56 +0000
--rt18795                               new     marka   // 2008-10-27 00:04 +0000
--rt18802                               new     
--rt18815                               new     fdupont // 2008-10-28 12:34 +0000
--rt18828                               new     marka   // 2008-11-04 06:17 +0000
--rt18872                               new     marka   // 2009-01-23 02:57 +0000
--rt18884                               new     marka   // 2008-11-11 02:16 +0000
--rt18905                               new     jinmei  // 2008-12-30 01:46 +0000
--rt19027                               new     
--rt19063                               new     marka   // 2008-12-13 01:45 +0000
--rt19113                               new     fdupont // 2009-01-10 17:53 +0000
--rt19198                               new     marka   // 2009-01-23 02:19 +0000
--rt19209                               new     marka   // 2009-02-05 01:10 +0000
--rt19234                               new     fdupont // 2009-02-12 14:15 +0000
--rt19234a                      new     fdupont // 2009-09-11 22:20 +0000
--rt19240                               new     jinmei  // 2009-01-26 23:31 +0000
--rt19248                               new     each    // 2009-01-28 00:25 +0000
--rt19256                               new     jinmei  // 2009-01-29 00:55 +0000
--rt19284                               new     each    // 2009-01-30 20:31 +0000
--rt19284_jinmeihack            new     
--rt19294                               new     fdupont // 2009-09-04 11:49 +0000
--rt19300                               new     each    // 2009-02-05 23:51 +0000
--rt19301                               new     each    // 2009-02-19 07:28 +0000
--rt19310                               new     marka   // 2009-02-11 09:42 +0000
--rt19360                               new     fdupont // 2009-02-17 09:10 +0000
--rt19369                               new     jinmei  // 2009-02-19 00:40 +0000
--rt19384                               new     marka   // 2009-02-23 03:32 +0000
--rt19387                               new     jinmei  // 2009-03-05 19:37 +0000
--rt19447                               new     ebersman        // 2009-06-10 14:44 +0000
--rt19447_v9_6_1                        new     ebersman        // 2009-06-10 17:00 +0000
--rt19447_v9_6_1_patch          new     ebersman        // 2009-06-10 17:20 +0000
--rt19495                               new     marka   // 2009-01-19 01:19 +0000
--rt19563                               new     jinmei  // 2009-04-11 02:39 +0000
--rt19589                               new     jreed   // 2009-05-07 13:43 +0000
--rt19624                               new     fdupont // 2009-05-06 11:11 +0000
--rt19625                               new     fdupont // 2009-04-24 08:59 +0000
--rt19653                               new     
--rt19654                               new     marka   // 2009-05-06 23:22 +0000
--rt19657                               new     fdupont // 2009-05-01 09:53 +0000
--rt19750                               new     marka   // 2009-07-01 07:18 +0000
--rt19773                               new     each    // 2009-07-02 21:22 +0000
--rt19780                               new     jinmei  // 2009-06-08 03:12 +0000
--rt19816                               new     each    // 2009-06-12 22:33 +0000
--rt19874                               new     each    // 2009-08-05 22:36 +0000
--rt19875                               new     each    // 2009-07-04 22:47 +0000
--rt19910                               new     marka   // 2009-07-09 02:38 +0000
--rt19942                               new     each    // 2009-08-27 23:01 +0000
--rt19943                               new     each    // 2009-09-15 03:18 +0000
--rt20001                               new     each    // 2009-08-05 15:54 +0000
--rt20023                               new     fdupont // 2009-07-31 15:08 +0000
--rt20037                               new     marka   // 2009-08-11 07:46 +0000
--rt20044                               new     fdupont // 2009-08-07 18:59 +0000
--rt20062                               new     marka   // 2009-08-10 05:00 +0000
--rt20062a                      new     marka   // 2009-09-14 04:51 +0000
--rt20112                               new     marka   // 2009-08-18 05:22 +0000
- rt20191                               new     vjs     // 2009-09-20 01:55 +0000
--rt20225                               new     fdupont // 2009-09-18 11:50 +0000
--rt20230                               new     fdupont // 2009-09-19 22:45 +0000
--rt20236                               new     fdupont // 2009-09-19 22:34 +0000
--rt20247                               new     each    // 2009-09-11 03:22 +0000
--rt20253                               new     sar     // 2009-09-11 22:17 +0000
--rt20257                               new     fdupont // 2009-09-18 16:53 +0000
--shane_dbbackend                       open    
--skan                          open    explorer
--skan-metazones1                       private explorer
--skan_implicit_update1         open    explorer
--skan_lruttl                   open    explorer
--skan_stats1                   open    explorer
--skan_stats2                   open    explorer
--skan_stats3                   open    explorer
--skan_stats4                   open    explorer
--skan_zonemaint                        new     
--sp1213                                open    
--sp1324                                new     marka   // 2007-06-29 05:40 +0000
--sp1705                                new     
--sp1705a                               new     
--sp2708                                new     marka   // 2009-08-20 02:00 +0000
--stats_lidl                    open    
--v6source                      open    
--v9_1                          active          // security fixes only
--v9_1_1_patch                  active          // security fixes 9.1.1 only    
--v9_2                          active  
--v9_2_0_patch                  active          // security fixes 9.2.0 only
--v9_2_1_patch                  active          // security fixes 9_2_1 only
--v9_2_2_delegation_only                active          // 9.2.2-P1, 9.2.2-P2, 9.2.2-P3
--v9_2_2base                    active          // security fixes 9.2.2 only 
--v9_2_4base                    active          // security fixes 9.2.4 only
--v9_2_6_patch                  active          // security fixes 9.2.6 only
--v9_2_7_patch                  active          // security fixes 9.2.7 only
--v9_2_8_patch                  active          // security fixes 9.2.9 only
--v9_3                          active  
--v9_3_0base                    active          // security fixes 9.3.0 only
--v9_3_2_patch                  active          // security fixes 9.3.2 only    
--v9_3_4-cisco                  active  
--v9_3_4_patch                  active          // security fixes 9.3.4 only
--v9_3_5_P1                     new     each    // 2008-05-22 20:42 +0000
--v9_3_5_P2_W1                  new     mayer   // 2008-08-16 03:50 +0000
--v9_3_5_P2_danny                       new     
--v9_3_5_P2_win32                       new     each    // 2008-08-21 02:21 +0000
--v9_3_5_patch                  new     
--v9_4                          active  
--v9_4_1_P1_lruttl              active  
--v9_4_1_patch                  active          // security fixes 9.4.1 only
--v9_4_2_P1                     new     each    // 2008-05-22 21:12 +0000
--v9_4_2_P2_W1                  new     mayer   // 2008-08-09 19:33 +0000
--v9_4_2_P2_danny                       new     
--v9_4_2_P2_michael             new     
--v9_4_2_P2_win32                       new     each    // 2008-08-21 00:20 +0000
--v9_4_2_patch                  active          // security fixes 9.4.2 only    
--v9_4_2_patch_attservfail      new     
--v9_4_3_patch                  new     marka   // 2008-12-23 00:04 +0000
--v9_5                          active  
--v9_5_0_P2_W1                  new     mayer   // 2008-08-16 21:14 +0000
--v9_5_0_P2_danny                       new     
--v9_5_0_P2_win32                       new     marka   // 2008-09-04 05:59 +0000
--v9_5_0_patch                  active          // security fixes 9.5.0 only
--v9_5_1_patch                  new     marka   // 2008-12-03 02:07 +0000
--v9_6                          new     marka   // 2008-11-30 22:53 +0000
--v9_6_0_patch                  new     marka   // 2008-12-23 01:13 +0000
--v9_6_1_patch                  new     marka   // 2009-07-28 14:11 +0000
--
--
--a6_remove                     closed
--adb_race                      closed
--additional_cache              closed          // additional RRs caching for performance
--additional_cache_rt6496               closed
--avoid_gettimeofday            closed
--bind9-gss-tsig                        closed          // ancient (circa 9.2.3) gss-tsig attempt, never worked
--bind9-gsstsig                 closed          // ancient (circa 9.2.3) gss-tsig attempt, never worked
--blabel-cleanup                        closed
--chroot                                closed
--compiled_zonefile             closed          // wire format zone file, under development (moved to rt13587)
--da                            closed          // aborted DNSSEC DA flag
--delegation_only                       closed
--dighost                               closed
--dlz                           closed          // old version of dlz patch, merge never completed
--ds                            closed
--ds13                          closed
--ds_12                         closed
--edns1                         closed
--edns_size                     closed
--gssapi3-skan                  closed
--gsstsig2                      closed          // old (circa 9.3.0) gss-tsig, finally worked with hacked heimdal spnego
--gsstsig3                      closed
--ietf71                                closed          // 2008-03-12 04:10 +0000
--ifiter_getifaddrs             closed
--ipl                           closed
--ipv6-improvements             closed
--ipv6-scope                    closed
--ipv6_6to4                     closed
--ksk                           closed
--marka_google                  closed
--newconfig                     closed
--optin                         closed          // aborted DNSSEC OPTIN code
--peter                         closed          // hostname.bind for 9.2.x
--queryperf-v6                  closed          // IPv6 transport support for queryperf
--rdata_split                   closed
--resign                                closed          // 2007-10-19 03:57 +0000
--rt10038                               closed
--rt10049                               closed
--rt10105                               closed
--rt10114                               closed
--rt10115                               closed
--rt10131                               closed
--rt10132                               closed
--rt10133                               closed
--rt10134                               closed
--rt10147                               closed
--rt10148                               closed
--rt10150                               closed
--rt10194                               closed
--rt10202                               closed
--rt10208                               closed
--rt10221                               closed
--rt10236                               closed
--rt10272                               closed
--rt10272a                      closed
--rt10331                               closed
--rt10345                               closed
--rt10346                               closed
--rt10381                               closed
--rt10440                               closed
--rt10440a                      closed
--rt10452                               closed
--rt10461                               closed
--rt10497                               closed
--rt10508                               closed
--rt10565                               closed
--rt10590                               closed
--rt10642                               closed
--rt10704                               closed
--rt10718                               closed
--rt10764                               closed          // empty
--rt10838                               closed
--rt10847                               closed
--rt10861                               closed
--rt1091                                closed          // 2007-10-22 02:27 +0000
--rt1091a                               closed          // 2007-11-19 03:11 +0000
--rt10920                               closed
--rt10925                               closed
--rt10929                               closed
--rt10991                               closed
--rt11013                               closed
--rt11065                               closed
--rt11069                               closed
--rt11069_v9_2                  closed
--rt11101                               closed
--rt11116                               closed
--rt11117                               closed
--rt11118                               closed
--rt11119                               closed
--rt11127                               closed
--rt11132                               closed
--rt11149                               closed
--rt11156                               closed
--rt11156_v9_2                  closed
--rt11163                               closed
--rt11163_1                     closed
--rt11177                               closed
--rt11179                               closed
--rt11206                               closed
--rt11208                               closed
--rt11237                               closed
--rt11280                               closed
--rt11288                               closed
--rt11331                               closed
--rt113347                      closed          // rt11347
--rt11360                               closed
--rt11382                               closed          // DLZ
--rt11398                               closed
--rt11398a                      closed          // old doxygen dev
--rt11398b                      closed
--rt11398c                      closed
--rt11432                               closed
--rt11436                               closed
--rt11439                               closed
--rt11445                               closed
--rt11446                               closed
--rt11486                               closed
--rt11541                               closed
--rt11542                               closed
--rt11582                               closed
--rt11595                               closed
--rt11600                               closed
--rt11681                               closed
--rt11697                               closed
--rt11706                               closed
--rt11714                               closed
--rt11742                               closed
--rt11943                               closed
--rt12017                               closed          // 2007-12-13 01:00 +0000
--rt12023                               closed
--rt12024                               closed
--rt12133                               closed
--rt12154                               closed
--rt12281                               closed
--rt12286                               closed
--rt12321                               closed
--rt12321a                      closed
--rt12321b                      closed
--rt12322                               closed
--rt12323                               closed
--rt12327                               closed
--rt12328                               closed
--rt12352                               closed
--rt12375                               closed
--rt12376                               closed
--rt12404                               closed
--rt12410                               closed
--rt12416                               closed
--rt12467                               closed
--rt12492                               closed
--rt12493                               closed
--rt12498                               closed
--rt12505a                      closed
--rt12505b                      closed
--rt12519                               closed
--rt12541                               closed
--rt12557                               closed
--rt12581                               closed
--rt12634                               closed
--rt12658                               closed
--rt12695                               closed
--rt12729                               closed
--rt12729a                      closed
--rt12745                               closed
--rt12745a                      closed
--rt12774                               closed
--rt12788                               closed
--rt12790                               closed
--rt12810                               closed
--rt12810a                      closed
--rt12838                               closed
--rt12866                               closed
--rt12894                               closed
--rt12895                               closed
--rt12907                               closed
--rt12919                               closed
--rt12933                               closed
--rt12937                               closed
--rt12942                               closed
--rt12970                               closed
--rt12971                               closed
--rt12995                               closed
--rt13002                               closed
--rt13009                               closed
--rt13015                               closed
--rt13016                               closed
--rt13062                               closed
--rt13077                               closed
--rt13086                               closed
--rt13101                               closed
--rt13124                               closed
--rt13153                               closed
--rt13154                               closed
--rt13205                               closed
--rt13212                               closed
--rt13219                               closed
--rt13230                               closed
--rt13238                               closed
--rt13239                               closed
--rt13378                               closed
--rt13382                               closed
--rt13396                               closed
--rt13428                               closed
--rt13438                               closed
--rt13455                               closed
--rt13463                               closed
--rt13483                               closed
--rt13501                               closed
--rt13505                               closed
--rt13511                               closed
--rt13526                               closed
--rt13547                               closed
--rt13587                               closed
--rt13593                               closed
--rt13593a                      closed
--rt13597                               closed
--rt13605                               closed
--rt13606                               closed          // TSIG SHA256
--rt13609                               closed
--rt13620                               closed
--rt13659                               closed
--rt13662                               closed          // abandoned
--rt13662_alt                   closed          // abandoned
--rt13662_alt2                  closed          // rrset-order fixed
--rt13694                               closed
--rt13707                               closed
--rt13714                               closed
--rt13745                               closed
--rt13753                               closed
--rt13754                               closed
--rt13771                               closed
--rt13780                               closed
--rt14606                               closed
--rt14616                               closed
--rt14623                               closed
--rt14666                               closed
--rt14673                               closed
--rt14685                               closed
--rt14686                               closed
--rt14695                               closed
--rt1471                                closed
--rt14775                               closed
--rt14801                               closed
--rt14802                               closed
--rt14814                               closed
--rt14815a                      closed          // abandoned    
--rt14816                               closed
--rt14841                               closed
--rt14846                               closed
--rt14851                               closed
--rt14852                               closed
--rt14855                               closed
--rt14873                               closed
--rt14890                               closed
--rt14892                               closed
--rt14916                               closed
--rt14918                               closed
--rt14919                               closed
--rt14931                               closed
--rt14932                               closed
--rt14933                               closed          // DLV  
--rt14933a                      closed
--rt14951                               closed
--rt14953                               closed
--rt14959                               closed
--rt14962                               closed
--rt14963                               closed          // bad wildcard grants  
--rt14965                               closed          // windows fixes        
--rt14967                               closed
--rt14991                               closed
--rt14995                               closed
--rt14996                               closed          // tune based on request load   
--rt14998                               closed
--rt15005                               closed
--rt15006                               closed
--rt15020                               closed
--rt15034                               closed
--rt15036                               closed          // ixfr-from-differences serial
--rt15103                               closed
--rt15148                               closed
--rt15215                               closed
--rt15216                               closed
--rt15256                               closed
--rt15347                               closed
--rt15383                               closed
--rt15391                               closed
--rt15402                               closed
--rt15404                               closed
--rt15408                               closed
--rt15412                               closed
--rt15430                               closed
--rt15441                               closed
--rt15452                               closed
--rt15460                               closed
--rt15465                               closed
--rt15469                               closed
--rt15473                               closed
--rt15473b                      closed
--rt15474                               closed
--rt15483                               closed
--rt15491                               closed
--rt15516                               closed
--rt15518                               closed
--rt15519                               closed
--rt15529                               closed
--rt15544                               closed
--rt15544b                      closed
--rt15562                               closed
--rt15568                               closed
--rt15586                               closed
--rt15592                               closed
--rt15608                               closed
--rt15613                               closed
--rt15620                               closed
--rt15628                               closed
--rt15633                               closed
--rt15636                               closed
--rt15642                               closed
--rt15647                               closed
--rt15649                               closed
--rt15674                               closed
--rt15694                               closed
--rt15695                               closed
--rt15702                               closed
--rt15704                               closed
--rt15709                               closed
--rt15723                               closed
--rt15727                               closed
--rt1572a                               closed          // bad rt#
--rt15739                               closed
--rt15742                               closed
--rt15753                               closed
--rt15758                               closed
--rt15758a                      closed
--rt15776                               closed
--rt15779                               closed
--rt15780                               closed
--rt15795                               closed
--rt15807                               closed
--rt15808                               closed
--rt15812                               closed
--rt15813                               closed
--rt15817                               closed
--rt15818                               closed
--rt15825                               closed
--rt15835                               closed
--rt15840                               closed
--rt15844                               closed
--rt15849                               closed
--rt15855                               closed
--rt15878                               closed
--rt15941                               closed
--rt15949                               closed          // 2007-05-17 02:25 +0000
--rt15958                               closed
--rt15959                               closed
--rt15960                               closed
--rt15970                               closed
--rt15976                               closed
--rt15978                               closed
--rt15992                               closed
--rt16020                               closed
--rt16022                               closed
--rt16026                               closed
--rt16027                               closed
--rt16030                               closed
--rt16034                               closed
--rt16037                               closed
--rt16073                               closed
--rt16074                               closed
--rt16075                               closed
--rt16117                               closed
--rt16122                               closed
--rt16123                               closed
--rt16124                               closed
--rt16156                               closed
--rt16170                               closed
--rt16179                               closed
--rt16182                               closed
--rt16183                               closed
--rt16187                               closed
--rt16218                               closed
--rt16218a                      closed
--rt16219                               closed
--rt16220                               closed
--rt16220a                      closed
--rt16244                               closed
--rt16290                               closed
--rt16291                               closed          // 2007-02-06 22:29 +0000
--rt16292                               closed
--rt16299                               closed          // 2007-05-17 01:08 +0000
--rt16300                               closed
--rt16307                               closed
--rt16313                               closed
--rt16315                               closed
--rt16317                               closed
--rt16320                               closed
--rt16324                               closed
--rt16326                               closed
--rt16341                               closed
--rt16354                               closed
--rt16361                               closed
--rt16363                               closed
--rt16365                               closed          // 2007-05-16 14:39 +0000
--rt16368                               closed          // 2007-05-16 14:11 +0000
--rt16388                               closed
--rt16391                               closed
--rt16399                               closed
--rt16401                               closed
--rt16403                               closed
--rt16411                               closed
--rt16415                               closed
--rt16417                               closed
--rt16426                               closed
--rt16427                               closed
--rt16437                               closed          // post 9.4.0
--rt16444                               closed
--rt16447                               closed
--rt16455                               closed
--rt16456                               closed
--rt16460                               closed
--rt16463                               closed          // 2007-05-16 06:10 +0000
--rt16476                               closed
--rt16481                               closed          // 2007-05-15 06:54 +0000
--rt16491                               closed
--rt16497                               closed          // 2007-05-15 05:07 +0000
--rt16499                               closed
--rt16502                               closed
--rt16507                               closed
--rt16553                               closed
--rt16555                               closed
--rt16563                               closed
--rt16584                               closed
--rt16592                               closed          // windows condition variable
--rt16599                               closed          // 2007-03-01 05:23 +0000
--rt16609                               closed          // post 9.4.0
--rt16612                               closed          // post 9.4.0
--rt16613                               closed          // post 9.4.0
--rt16619                               closed          // post 9.4.0
--rt16622                               closed          // post 9.4.0
--rt16635                               closed
--rt16640                               closed
--rt16641                               closed          // post 9.4.0
--rt16647                               closed          // 2007-02-09 02:18 +0000
--rt16653                               closed          // 2007-02-07 05:11 +0000
--rt16654                               closed          // 2007-02-07 06:10 +0000
--rt16655                               closed          // 2007-02-08 02:41 +0000
--rt16665                               closed          // 2007-02-12 06:11 +0000
--rt16685                               closed          // 2007-02-28 06:01 +0000
--rt16698                               closed          // 2007-03-09 02:41 +0000
--rt16707                               closed          // 2007-03-13 05:13 +0000
--rt16711                               closed          // 2007-03-09 02:33 +0000
--rt16743                               closed
--rt16763                               closed          // 2007-04-02 06:31 +0000
--rt16764                               closed          // 2007-03-25 23:35 +0000
--rt16768                               closed          // 2007-03-27 01:58 +0000
--rt16785                               closed          // 2007-04-03 02:53 +0000
--rt16798                               closed          // 2007-05-14 06:18 +0000
--rt16821                               closed          // 2007-05-14 05:44 +0000
--rt16832                               closed          // 2007-05-03 02:30 +0000
--rt16832a                      closed          // 2007-05-16 23:09 +0000
--rt16834                               closed          // 2007-04-29 23:52 +0000
--rt16871                               closed          // 2007-05-16 00:07 +0000
--rt16906                               closed          // 2007-05-23 02:51 +0000
--rt16908                               closed          // 2007-05-29 01:48 +0000
--rt16911                               closed          // 2007-05-27 23:20 +0000
--rt16915                               closed          // 2007-06-05 23:48 +0000
--rt16915a                      closed          // 2007-06-25 03:06 +0000
--rt16958                               closed
--rt16976                               closed          // 2007-08-16 01:15 +0000
--rt16982                               closed          // 2007-07-03 00:33 +0000
--rt16987                               closed          // 2007-07-03 01:20 +0000
--rt16987a                      closed          // 2007-07-03 01:25 +0000
--rt17017                               closed          // 2007-08-10 05:20 +0000
--rt17028                               closed          // 2007-08-14 03:18 +0000
--rt17049                               closed          // 2007-08-13 04:30 +0000
--rt17058                               closed          // 2007-08-02 00:39 +0000
--rt17067                               closed          // 2007-09-11 13:18 +0000
--rt17073                               closed          // 2007-09-12 03:46 +0000
--rt17074                               closed          // 2007-08-13 15:01 +0000
--rt17078                               closed          // 2007-08-13 06:11 +0000
--rt17085                               closed          // 2007-09-07 07:08 +0000
--rt17092                               closed          // 2007-08-21 06:00 +0000
--rt17094                               closed          // 2007-08-17 02:27 +0000
--rt17097                               closed          // 2007-08-20 07:30 +0000
--rt17098                               closed          // 2007-08-19 23:14 +0000
--rt17101                               closed          // 2007-08-20 22:38 +0000
--rt17106                               closed          // 2007-08-30 00:30 +0000
--rt17111                               closed          // 2007-08-28 01:24 +0000
--rt17113                               closed          // 2007-09-06 05:18 +0000
--rt17113_v9_4                  closed          // 2007-09-07 04:40 +0000
--rt17114                               closed          // 2007-09-06 01:59 +0000
--rt17120                               closed
--rt17121                               closed
--rt17123                               closed          // 2007-09-06 01:09 +0000
--rt17127                               closed          // 2007-09-03 04:09 +0000
--rt17132                               closed
--rt17134                               closed
--rt17135                               closed          // 2007-09-07 02:28 +0000
--rt17137                               closed          // 2007-09-10 23:47 +0000
--rt17140                               closed
--rt17147                               closed          // 2007-09-19 04:49 +0000
--rt17155                               closed          // 2007-09-18 01:54 +0000
--rt17159                               closed          // 2007-10-16 04:32 +0000
--rt17160                               closed          // 2007-09-19 03:58 +0000
--rt17175                               closed
--rt17178                               closed          // 2007-10-24 08:43 +0000
--rt17216                               closed
--rt17222                               closed          // 2007-10-24 08:04 +0000
--rt17235                               closed          // 2007-10-19 01:19 +0000
--rt17236                               closed          // 2007-10-29 16:43 +0000
--rt17237                               closed          // re-signing
--rt17272                               closed          // 2007-11-19 21:28 +0000
--rt1727b                               closed
--rt1727c                               closed
--rt17307                               closed          // 2007-11-26 03:55 +0000
--rt17311                               closed          // 2007-11-27 01:45 +0000
--rt17332                               closed
--rt17354                               closed          // 2007-12-11 05:50 +0000
--rt17378                               closed          // 2007-12-20 01:15 +0000
--rt2471                                closed
--rt288                         closed
--rt3445                                closed
--rt3469                                closed
--rt3502                                closed
--rt3507                                closed          // pull down by explorer
--rt3517                                closed
--rt3536                                closed          // ixfr
--rt3588                                closed
--rt3598                                closed
--rt3625                                closed
--rt3653                                closed
--rt3666                                closed
--rt3746                                closed
--rt3746_lidl                   closed
--rt3892                                closed
--rt3907                                closed
--rt4090                                closed
--rt4112                                closed
--rt4268                                closed
--rt4319                                closed
--rt4347                                closed
--rt4389                                closed
--rt4398                                closed
--rt4404                                closed
--rt4425                                closed
--rt4441                                closed
--rt4463                                closed
--rt4663                                closed
--rt4675                                closed
--rt4687                                closed
--rt4706                                closed
--rt4715                                closed
--rt4764                                closed
--rt4796                                closed
--rt4802                                closed
--rt4898                                closed
--rt4940                                closed
--rt5033                                closed
--rt5041                                closed
--rt5042                                closed
--rt5044                                closed
--rt5066                                closed
--rt5066a                               closed
--rt5084                                closed
--rt5099                                closed
--rt5124                                closed
--rt5127                                closed
--rt5182                                closed
--rt5192                                closed
--rt5204                                closed
--rt5206_1                      closed
--rt5228                                closed
--rt5299                                closed
--rt5318                                closed
--rt5397                                closed
--rt5456                                closed
--rt5528                                closed
--rt5577                                closed
--rt5586                                closed
--rt5599                                closed
--rt5746a                               closed          // rt3746
--rt5764                                closed
--rt6189                                closed
--rt6206                                closed
--rt6225                                closed
--rt6229                                closed
--rt6427                                closed
--rt6432                                closed
--rt6496                                closed
--rt6496a                               closed
--rt6496b                               closed
--rt6539                                closed
--rt6636                                closed
--rt6813                                closed
--rt7391                                closed
--rt7572                                closed
--rt8138                                closed
--rt8358                                closed
--rt8373                                closed
--rt8534                                closed
--rt8753                                closed          // support IPv6-scoped addr in dig
--rt8934                                closed
--rt9091                                closed
--rt9099                                closed
--rt9099x                               closed
--rt9164                                closed
--rt9189                                closed
--rt9239                                closed
--rt9239_base                   closed
--rt9319                                closed
--rt9341                                closed
--rt9442                                closed
--rt9475                                closed
--rt9479                                closed
--rt9479_v9_2                   closed
--rt9940                                closed
--rt9941                                closed
--rt9976                                closed
--rt9979                                closed
--rt9989                                closed
--rt9997                                closed
--rt9997a                               closed
--rt9998                                closed
--skan-tcr                      closed
--skan-typecode-roll            closed
--skan-typecode-roll2           closed
--slavefix                      closed
--v9_0                          closed
--v9_1_3_delegation_only                closed
--v9_1_3_do_base                        closed
--v9_1_4_base                   closed
--v9_3_0beta2_dlv                       closed
--ws20030120                    closed          // workshop branch
--ws20030120_tcr                        closed          // workshop branch
--ws20030312                    closed
--ws20030312_optin              closed          // workshop branch
--ws20030312_tcr                        closed          // workshop branch
diff --cc lib/dns/dst_api.c
index 22a95f89755a1894fb349f77bddd05d9f4b43366,be3999d02fbc20aab269462e68b4773c744ac13e..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,1538 -1,1463 +1,0 @@@
--/*
-- * Portions Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
-- * Portions Copyright (C) 1999-2003  Internet Software Consortium.
-- *
-- * 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.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NETWORK ASSOCIATES 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.
-- *
-- * Portions Copyright (C) 1995-2000 by Network Associates, Inc.
-- *
-- * 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.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NETWORK ASSOCIATES 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.
-- */
--
--/*
-- * Principal Author: Brian Wellington
-  * $Id: dst_api.c,v 1.31 2009/09/23 16:01:57 each Exp $
 - * $Id: dst_api.c,v 1.30 2009/09/14 18:45:45 each Exp $
-- */
--
--/*! \file */
--
--#include <config.h>
--
--#include <stdlib.h>
--
--#include <isc/buffer.h>
--#include <isc/dir.h>
--#include <isc/entropy.h>
--#include <isc/fsaccess.h>
--#include <isc/hmacsha.h>
--#include <isc/lex.h>
--#include <isc/mem.h>
--#include <isc/once.h>
--#include <isc/print.h>
--#include <isc/random.h>
--#include <isc/string.h>
--#include <isc/time.h>
--#include <isc/util.h>
--
--#include <dns/fixedname.h>
--#include <dns/keyvalues.h>
--#include <dns/name.h>
--#include <dns/rdata.h>
--#include <dns/rdataclass.h>
--#include <dns/ttl.h>
--#include <dns/types.h>
--
--#include <dst/result.h>
--
--#include "dst_internal.h"
--
--#define DST_AS_STR(t) ((t).value.as_textregion.base)
--
--static dst_func_t *dst_t_func[DST_MAX_ALGS];
--#ifdef BIND9
--static isc_entropy_t *dst_entropy_pool = NULL;
--#endif
--static unsigned int dst_entropy_flags = 0;
--static isc_boolean_t dst_initialized = ISC_FALSE;
--
--void gss_log(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
--
--isc_mem_t *dst__memory_pool = NULL;
--
--/*
-- * Static functions.
-- */
--static dst_key_t *    get_key_struct(dns_name_t *name,
--                                     unsigned int alg,
--                                     unsigned int flags,
--                                     unsigned int protocol,
--                                     unsigned int bits,
--                                     dns_rdataclass_t rdclass,
--                                     isc_mem_t *mctx);
--static isc_result_t   write_public_key(const dst_key_t *key, int type,
--                                       const char *directory);
--static isc_result_t   buildfilename(dns_name_t *name,
--                                    dns_keytag_t id,
--                                    unsigned int alg,
--                                    unsigned int type,
--                                    const char *directory,
--                                    isc_buffer_t *out);
--static isc_result_t   computeid(dst_key_t *key);
--static isc_result_t   frombuffer(dns_name_t *name,
--                                 unsigned int alg,
--                                 unsigned int flags,
--                                 unsigned int protocol,
--                                 dns_rdataclass_t rdclass,
--                                 isc_buffer_t *source,
--                                 isc_mem_t *mctx,
--                                 dst_key_t **keyp);
--
--static isc_result_t   algorithm_status(unsigned int alg);
--
--static isc_result_t   addsuffix(char *filename, unsigned int len,
--                                const char *dirname, const char *ofilename,
--                                const char *suffix);
--
--#define RETERR(x)                             \
--      do {                                    \
--              result = (x);                   \
--              if (result != ISC_R_SUCCESS)    \
--                      goto out;               \
--      } while (0)
--
--#define CHECKALG(alg)                         \
--      do {                                    \
--              isc_result_t _r;                \
--              _r = algorithm_status(alg);     \
--              if (_r != ISC_R_SUCCESS)        \
--                      return (_r);            \
--      } while (0);                            \
--
--#if defined(OPENSSL) && defined(BIND9)
--static void *
--default_memalloc(void *arg, size_t size) {
--      UNUSED(arg);
--      if (size == 0U)
--              size = 1;
--      return (malloc(size));
--}
--
--static void
--default_memfree(void *arg, void *ptr) {
--      UNUSED(arg);
--      free(ptr);
--}
--#endif
--
--isc_result_t
--dst_lib_init(isc_mem_t *mctx, isc_entropy_t *ectx, unsigned int eflags) {
--      isc_result_t result;
--
--      REQUIRE(mctx != NULL);
--#ifdef BIND9
--      REQUIRE(ectx != NULL);
--#else
--      UNUSED(ectx);
--#endif
--      REQUIRE(dst_initialized == ISC_FALSE);
--
--      dst__memory_pool = NULL;
--
--#if defined(OPENSSL) && defined(BIND9)
--      UNUSED(mctx);
--      /*
--       * When using --with-openssl, there seems to be no good way of not
--       * leaking memory due to the openssl error handling mechanism.
--       * Avoid assertions by using a local memory context and not checking
--       * for leaks on exit.  Note: as there are leaks we cannot use
--       * ISC_MEMFLAG_INTERNAL as it will free up memory still being used
--       * by libcrypto.
--       */
--      result = isc_mem_createx2(0, 0, default_memalloc, default_memfree,
--                                NULL, &dst__memory_pool, 0);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--      isc_mem_setname(dst__memory_pool, "dst", NULL);
--      isc_mem_setdestroycheck(dst__memory_pool, ISC_FALSE);
--#else
--      isc_mem_attach(mctx, &dst__memory_pool);
--#endif
--#ifdef BIND9
--      isc_entropy_attach(ectx, &dst_entropy_pool);
--#endif
--      dst_entropy_flags = eflags;
--
--      dst_result_register();
--
--      memset(dst_t_func, 0, sizeof(dst_t_func));
--      RETERR(dst__hmacmd5_init(&dst_t_func[DST_ALG_HMACMD5]));
--      RETERR(dst__hmacsha1_init(&dst_t_func[DST_ALG_HMACSHA1]));
--      RETERR(dst__hmacsha224_init(&dst_t_func[DST_ALG_HMACSHA224]));
--      RETERR(dst__hmacsha256_init(&dst_t_func[DST_ALG_HMACSHA256]));
--      RETERR(dst__hmacsha384_init(&dst_t_func[DST_ALG_HMACSHA384]));
--      RETERR(dst__hmacsha512_init(&dst_t_func[DST_ALG_HMACSHA512]));
--#ifdef OPENSSL
--      RETERR(dst__openssl_init());
--      RETERR(dst__opensslrsa_init(&dst_t_func[DST_ALG_RSAMD5]));
--      RETERR(dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA1]));
--      RETERR(dst__opensslrsa_init(&dst_t_func[DST_ALG_NSEC3RSASHA1]));
--#ifdef HAVE_OPENSSL_DSA
--      RETERR(dst__openssldsa_init(&dst_t_func[DST_ALG_DSA]));
--      RETERR(dst__openssldsa_init(&dst_t_func[DST_ALG_NSEC3DSA]));
--#endif
--      RETERR(dst__openssldh_init(&dst_t_func[DST_ALG_DH]));
--#endif /* OPENSSL */
--#ifdef GSSAPI
--      RETERR(dst__gssapi_init(&dst_t_func[DST_ALG_GSSAPI]));
--#endif
--      dst_initialized = ISC_TRUE;
--      return (ISC_R_SUCCESS);
--
-- out:
--      dst_lib_destroy();
--      return (result);
--}
--
--void
--dst_lib_destroy(void) {
--      int i;
--      RUNTIME_CHECK(dst_initialized == ISC_TRUE);
--      dst_initialized = ISC_FALSE;
--
--      for (i = 0; i < DST_MAX_ALGS; i++)
--              if (dst_t_func[i] != NULL && dst_t_func[i]->cleanup != NULL)
--                      dst_t_func[i]->cleanup();
--#ifdef OPENSSL
--      dst__openssl_destroy();
--#endif
--      if (dst__memory_pool != NULL)
--              isc_mem_detach(&dst__memory_pool);
--#ifdef BIND9
--      if (dst_entropy_pool != NULL)
--              isc_entropy_detach(&dst_entropy_pool);
--#endif
--}
--
--isc_boolean_t
--dst_algorithm_supported(unsigned int alg) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--
--      if (alg >= DST_MAX_ALGS || dst_t_func[alg] == NULL)
--              return (ISC_FALSE);
--      return (ISC_TRUE);
--}
--
--isc_result_t
--dst_context_create(dst_key_t *key, isc_mem_t *mctx, dst_context_t **dctxp) {
--      dst_context_t *dctx;
--      isc_result_t result;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(mctx != NULL);
--      REQUIRE(dctxp != NULL && *dctxp == NULL);
--
--      if (key->func->createctx == NULL)
--              return (DST_R_UNSUPPORTEDALG);
--      if (key->keydata.generic == NULL)
--              return (DST_R_NULLKEY);
--
--      dctx = isc_mem_get(mctx, sizeof(dst_context_t));
--      if (dctx == NULL)
--              return (ISC_R_NOMEMORY);
--      dctx->key = key;
--      dctx->mctx = mctx;
--      result = key->func->createctx(key, dctx);
--      if (result != ISC_R_SUCCESS) {
--              isc_mem_put(mctx, dctx, sizeof(dst_context_t));
--              return (result);
--      }
--      dctx->magic = CTX_MAGIC;
--      *dctxp = dctx;
--      return (ISC_R_SUCCESS);
--}
--
--void
--dst_context_destroy(dst_context_t **dctxp) {
--      dst_context_t *dctx;
--
--      REQUIRE(dctxp != NULL && VALID_CTX(*dctxp));
--
--      dctx = *dctxp;
--      INSIST(dctx->key->func->destroyctx != NULL);
--      dctx->key->func->destroyctx(dctx);
--      dctx->magic = 0;
--      isc_mem_put(dctx->mctx, dctx, sizeof(dst_context_t));
--      *dctxp = NULL;
--}
--
--isc_result_t
--dst_context_adddata(dst_context_t *dctx, const isc_region_t *data) {
--      REQUIRE(VALID_CTX(dctx));
--      REQUIRE(data != NULL);
--      INSIST(dctx->key->func->adddata != NULL);
--
--      return (dctx->key->func->adddata(dctx, data));
--}
--
--isc_result_t
--dst_context_sign(dst_context_t *dctx, isc_buffer_t *sig) {
--      dst_key_t *key;
--
--      REQUIRE(VALID_CTX(dctx));
--      REQUIRE(sig != NULL);
--
--      key = dctx->key;
--      CHECKALG(key->key_alg);
--      if (key->keydata.generic == NULL)
--              return (DST_R_NULLKEY);
--
--      if (key->func->sign == NULL)
--              return (DST_R_NOTPRIVATEKEY);
--      if (key->func->isprivate == NULL ||
--          key->func->isprivate(key) == ISC_FALSE)
--              return (DST_R_NOTPRIVATEKEY);
--
--      return (key->func->sign(dctx, sig));
--}
--
--isc_result_t
--dst_context_verify(dst_context_t *dctx, isc_region_t *sig) {
--      REQUIRE(VALID_CTX(dctx));
--      REQUIRE(sig != NULL);
--
--      CHECKALG(dctx->key->key_alg);
--      if (dctx->key->keydata.generic == NULL)
--              return (DST_R_NULLKEY);
--      if (dctx->key->func->verify == NULL)
--              return (DST_R_NOTPUBLICKEY);
--
--      return (dctx->key->func->verify(dctx, sig));
--}
--
--isc_result_t
--dst_key_computesecret(const dst_key_t *pub, const dst_key_t *priv,
--                    isc_buffer_t *secret)
--{
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(pub) && VALID_KEY(priv));
--      REQUIRE(secret != NULL);
--
--      CHECKALG(pub->key_alg);
--      CHECKALG(priv->key_alg);
--
--      if (pub->keydata.generic == NULL || priv->keydata.generic == NULL)
--              return (DST_R_NULLKEY);
--
--      if (pub->key_alg != priv->key_alg ||
--          pub->func->computesecret == NULL ||
--          priv->func->computesecret == NULL)
--              return (DST_R_KEYCANNOTCOMPUTESECRET);
--
--      if (dst_key_isprivate(priv) == ISC_FALSE)
--              return (DST_R_NOTPRIVATEKEY);
--
--      return (pub->func->computesecret(pub, priv, secret));
--}
--
--isc_result_t
--dst_key_tofile(const dst_key_t *key, int type, const char *directory) {
--      isc_result_t ret = ISC_R_SUCCESS;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE((type & (DST_TYPE_PRIVATE | DST_TYPE_PUBLIC)) != 0);
--
--      CHECKALG(key->key_alg);
--
--      if (key->func->tofile == NULL)
--              return (DST_R_UNSUPPORTEDALG);
--
--      if (type & DST_TYPE_PUBLIC) {
--              ret = write_public_key(key, type, directory);
--              if (ret != ISC_R_SUCCESS)
--                      return (ret);
--      }
--
--      if ((type & DST_TYPE_PRIVATE) &&
--          (key->key_flags & DNS_KEYFLAG_TYPEMASK) != DNS_KEYTYPE_NOKEY)
--              return (key->func->tofile(key, directory));
--      else
--              return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_fromfile(dns_name_t *name, dns_keytag_t id,
--               unsigned int alg, int type, const char *directory,
--               isc_mem_t *mctx, dst_key_t **keyp)
--{
--      char filename[ISC_DIR_NAMEMAX];
--      isc_buffer_t b;
--      dst_key_t *key;
--      isc_result_t result;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(dns_name_isabsolute(name));
--      REQUIRE((type & (DST_TYPE_PRIVATE | DST_TYPE_PUBLIC)) != 0);
--      REQUIRE(mctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--
--      CHECKALG(alg);
--
--      isc_buffer_init(&b, filename, sizeof(filename));
--      result = buildfilename(name, id, alg, type, directory, &b);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--
--      key = NULL;
--      result = dst_key_fromnamedfile(filename, NULL, type, mctx, &key);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--
--      result = computeid(key);
--      if (result != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (result);
--      }
--
--      if (!dns_name_equal(name, key->key_name) || id != key->key_id ||
--          alg != key->key_alg) {
--              dst_key_free(&key);
--              return (DST_R_INVALIDPRIVATEKEY);
--      }
--      key->key_id = id;
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_fromnamedfile(const char *filename, const char *dirname,
--                    int type, isc_mem_t *mctx, dst_key_t **keyp)
--{
--      isc_result_t result;
--      dst_key_t *pubkey = NULL, *key = NULL;
--      char *newfilename = NULL;
--      int newfilenamelen = 0;
--      isc_lex_t *lex = NULL;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(filename != NULL);
--      REQUIRE((type & (DST_TYPE_PRIVATE | DST_TYPE_PUBLIC)) != 0);
--      REQUIRE(mctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--
--      /* If an absolute path is specified, don't use the key directory */
--#ifndef WIN32
--      if (filename[0] == '/')
--              dirname = NULL;
--#else /* WIN32 */
--      if (filename[0] == '/' || filename[0] == '\\')
--              dirname = NULL;
--#endif
--
--      newfilenamelen = strlen(filename) + 5;
--      if (dirname != NULL)
--              newfilenamelen += strlen(dirname) + 1;
--      newfilename = isc_mem_get(mctx, newfilenamelen);
--      if (newfilename == NULL)
--              return (ISC_R_NOMEMORY);
--      result = addsuffix(newfilename, newfilenamelen,
--                         dirname, filename, ".key");
--      INSIST(result == ISC_R_SUCCESS);
--
--      result = dst_key_read_public(newfilename, type, mctx, &pubkey);
--      isc_mem_put(mctx, newfilename, newfilenamelen);
--      newfilename = NULL;
--      if (result != ISC_R_SUCCESS)
--              return (result);
--
--      if ((type & (DST_TYPE_PRIVATE | DST_TYPE_PUBLIC)) == DST_TYPE_PUBLIC ||
--          (pubkey->key_flags & DNS_KEYFLAG_TYPEMASK) == DNS_KEYTYPE_NOKEY) {
--              result = computeid(pubkey);
--              if (result != ISC_R_SUCCESS) {
--                      dst_key_free(&pubkey);
--                      return (result);
--              }
--
--              *keyp = pubkey;
--              return (ISC_R_SUCCESS);
--      }
--
--      result = algorithm_status(pubkey->key_alg);
--      if (result != ISC_R_SUCCESS) {
--              dst_key_free(&pubkey);
--              return (result);
--      }
--
--      key = get_key_struct(pubkey->key_name, pubkey->key_alg,
--                           pubkey->key_flags, pubkey->key_proto, 0,
--                           pubkey->key_class, mctx);
--      if (key == NULL) {
--              dst_key_free(&pubkey);
--              return (ISC_R_NOMEMORY);
--      }
--
--      if (key->func->parse == NULL)
--              RETERR(DST_R_UNSUPPORTEDALG);
--
--      newfilenamelen = strlen(filename) + 9;
--      if (dirname != NULL)
--              newfilenamelen += strlen(dirname) + 1;
--      newfilename = isc_mem_get(mctx, newfilenamelen);
--      if (newfilename == NULL)
--              RETERR(ISC_R_NOMEMORY);
--      result = addsuffix(newfilename, newfilenamelen,
--                         dirname, filename, ".private");
--      INSIST(result == ISC_R_SUCCESS);
--
--      RETERR(isc_lex_create(mctx, 1500, &lex));
--      RETERR(isc_lex_openfile(lex, newfilename));
--      isc_mem_put(mctx, newfilename, newfilenamelen);
--
--      RETERR(key->func->parse(key, lex, pubkey));
--      isc_lex_destroy(&lex);
--
--      RETERR(computeid(key));
--
--      if (pubkey->key_id != key->key_id)
--              RETERR(DST_R_INVALIDPRIVATEKEY);
--      dst_key_free(&pubkey);
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
-- out:
--      if (pubkey != NULL)
--              dst_key_free(&pubkey);
--      if (newfilename != NULL)
--              isc_mem_put(mctx, newfilename, newfilenamelen);
--      if (lex != NULL)
--              isc_lex_destroy(&lex);
--      dst_key_free(&key);
--      return (result);
--}
--
--isc_result_t
--dst_key_todns(const dst_key_t *key, isc_buffer_t *target) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(target != NULL);
--
--      CHECKALG(key->key_alg);
--
--      if (key->func->todns == NULL)
--              return (DST_R_UNSUPPORTEDALG);
--
--      if (isc_buffer_availablelength(target) < 4)
--              return (ISC_R_NOSPACE);
--      isc_buffer_putuint16(target, (isc_uint16_t)(key->key_flags & 0xffff));
--      isc_buffer_putuint8(target, (isc_uint8_t)key->key_proto);
--      isc_buffer_putuint8(target, (isc_uint8_t)key->key_alg);
--
--      if (key->key_flags & DNS_KEYFLAG_EXTENDED) {
--              if (isc_buffer_availablelength(target) < 2)
--                      return (ISC_R_NOSPACE);
--              isc_buffer_putuint16(target,
--                                   (isc_uint16_t)((key->key_flags >> 16)
--                                                  & 0xffff));
--      }
--
--      if (key->keydata.generic == NULL) /*%< NULL KEY */
--              return (ISC_R_SUCCESS);
--
--      return (key->func->todns(key, target));
--}
--
--isc_result_t
--dst_key_fromdns(dns_name_t *name, dns_rdataclass_t rdclass,
--              isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
--{
--      isc_uint8_t alg, proto;
--      isc_uint32_t flags, extflags;
--      dst_key_t *key = NULL;
--      dns_keytag_t id;
--      isc_region_t r;
--      isc_result_t result;
--
--      REQUIRE(dst_initialized);
--
--      isc_buffer_remainingregion(source, &r);
--
--      if (isc_buffer_remaininglength(source) < 4)
--              return (DST_R_INVALIDPUBLICKEY);
--      flags = isc_buffer_getuint16(source);
--      proto = isc_buffer_getuint8(source);
--      alg = isc_buffer_getuint8(source);
--
--      id = dst_region_computeid(&r, alg);
--
--      if (flags & DNS_KEYFLAG_EXTENDED) {
--              if (isc_buffer_remaininglength(source) < 2)
--                      return (DST_R_INVALIDPUBLICKEY);
--              extflags = isc_buffer_getuint16(source);
--              flags |= (extflags << 16);
--      }
--
--      result = frombuffer(name, alg, flags, proto, rdclass, source,
--                          mctx, &key);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--      key->key_id = id;
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_frombuffer(dns_name_t *name, unsigned int alg,
--                 unsigned int flags, unsigned int protocol,
--                 dns_rdataclass_t rdclass,
--                 isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
--{
--      dst_key_t *key = NULL;
--      isc_result_t result;
--
--      REQUIRE(dst_initialized);
--
--      result = frombuffer(name, alg, flags, protocol, rdclass, source,
--                          mctx, &key);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--
--      result = computeid(key);
--      if (result != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (result);
--      }
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_tobuffer(const dst_key_t *key, isc_buffer_t *target) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(target != NULL);
--
--      CHECKALG(key->key_alg);
--
--      if (key->func->todns == NULL)
--              return (DST_R_UNSUPPORTEDALG);
--
--      return (key->func->todns(key, target));
--}
--
--isc_result_t
--dst_key_privatefrombuffer(dst_key_t *key, isc_buffer_t *buffer) {
--      isc_lex_t *lex = NULL;
--      isc_result_t result = ISC_R_SUCCESS;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(!dst_key_isprivate(key));
--      REQUIRE(buffer != NULL);
--
--      if (key->func->parse == NULL)
--              RETERR(DST_R_UNSUPPORTEDALG);
--
--      RETERR(isc_lex_create(key->mctx, 1500, &lex));
--      RETERR(isc_lex_openbuffer(lex, buffer));
--      RETERR(key->func->parse(key, lex, NULL));
-- out:
--      if (lex != NULL)
--              isc_lex_destroy(&lex);
--      return (result);
--}
--
--gss_ctx_id_t
--dst_key_getgssctx(const dst_key_t *key)
--{
--      REQUIRE(key != NULL);
--
--      return (key->keydata.gssctx);
--}
--
--isc_result_t
--dst_key_fromgssapi(dns_name_t *name, gss_ctx_id_t gssctx, isc_mem_t *mctx,
--                 dst_key_t **keyp)
--{
--      dst_key_t *key;
--
--      REQUIRE(gssctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--
--      key = get_key_struct(name, DST_ALG_GSSAPI, 0, DNS_KEYPROTO_DNSSEC,
--                           0, dns_rdataclass_in, mctx);
--      if (key == NULL)
--              return (ISC_R_NOMEMORY);
--
--      key->keydata.gssctx = gssctx;
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_fromlabel(dns_name_t *name, int alg, unsigned int flags,
--                unsigned int protocol, dns_rdataclass_t rdclass,
--                const char *engine, const char *label, const char *pin,
--                isc_mem_t *mctx, dst_key_t **keyp)
--{
--      dst_key_t *key;
--      isc_result_t result;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(dns_name_isabsolute(name));
--      REQUIRE(mctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--      REQUIRE(label != NULL);
--
--      CHECKALG(alg);
--
--      key = get_key_struct(name, alg, flags, protocol, 0, rdclass, mctx);
--      if (key == NULL)
--              return (ISC_R_NOMEMORY);
--
--      if (key->func->fromlabel == NULL) {
--              dst_key_free(&key);
--              return (DST_R_UNSUPPORTEDALG);
--      }
--
--      result = key->func->fromlabel(key, engine, label, pin);
--      if (result != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (result);
--      }
--
--      result = computeid(key);
--      if (result != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (result);
--      }
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_generate(dns_name_t *name, unsigned int alg,
--               unsigned int bits, unsigned int param,
--               unsigned int flags, unsigned int protocol,
--               dns_rdataclass_t rdclass,
--               isc_mem_t *mctx, dst_key_t **keyp)
--{
--      dst_key_t *key;
--      isc_result_t ret;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(dns_name_isabsolute(name));
--      REQUIRE(mctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--
--      CHECKALG(alg);
--
--      key = get_key_struct(name, alg, flags, protocol, bits, rdclass, mctx);
--      if (key == NULL)
--              return (ISC_R_NOMEMORY);
--
--      if (bits == 0) { /*%< NULL KEY */
--              key->key_flags |= DNS_KEYTYPE_NOKEY;
--              *keyp = key;
--              return (ISC_R_SUCCESS);
--      }
--
--      if (key->func->generate == NULL) {
--              dst_key_free(&key);
--              return (DST_R_UNSUPPORTEDALG);
--      }
--
--      ret = key->func->generate(key, param);
--      if (ret != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (ret);
--      }
--
--      ret = computeid(key);
--      if (ret != ISC_R_SUCCESS) {
--              dst_key_free(&key);
--              return (ret);
--      }
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_gettime(const dst_key_t *key, int type, isc_stdtime_t *timep) {
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(timep != NULL);
--      REQUIRE(type <= DST_MAX_TIMES);
--      if (!key->timeset[type])
--              return (ISC_R_NOTFOUND);
--      *timep = key->times[type];
--      return (ISC_R_SUCCESS);
--}
--
--void
--dst_key_settime(dst_key_t *key, int type, isc_stdtime_t when) {
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(type <= DST_MAX_TIMES);
--      key->times[type] = when;
--      key->timeset[type] = ISC_TRUE;
--}
--
--void
--dst_key_unsettime(dst_key_t *key, int type) {
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(type <= DST_MAX_TIMES);
--      key->timeset[type] = ISC_FALSE;
--}
--
--isc_result_t
--dst_key_getprivateformat(const dst_key_t *key, int *majorp, int *minorp) {
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(majorp != NULL);
--      REQUIRE(minorp != NULL);
--      *majorp = key->fmt_major;
--      *minorp = key->fmt_minor;
--      return (ISC_R_SUCCESS);
--}
--
--void
--dst_key_setprivateformat(dst_key_t *key, int major, int minor) {
--      REQUIRE(VALID_KEY(key));
--      key->fmt_major = major;
--      key->fmt_minor = minor;
--}
--
- static isc_boolean_t
- comparekeys(const dst_key_t *key1, const dst_key_t *key2,
-           isc_boolean_t match_revoked_key,
-           isc_boolean_t (*compare)())
- {
 -isc_boolean_t
 -dst_key_compare(const dst_key_t *key1, const dst_key_t *key2) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key1));
--      REQUIRE(VALID_KEY(key2));
--
--      if (key1 == key2)
--              return (ISC_TRUE);
--      if (key1 == NULL || key2 == NULL)
-               return (ISC_FALSE);
-       if (key1->key_alg != key2->key_alg)
--              return (ISC_FALSE);
-       /*
-        * For all algorithms except RSAMD5, revoking the key
-        * changes the key ID, increasing it by 128.  If we want to
-        * be able to find matching keys even if one of them is the
-        * revoked version of the other one, then we need to check
-        * for that possibility.
-        */
-       if (key1->key_id != key2->key_id) {
-               if (!match_revoked_key)
-                       return (ISC_FALSE);
-               if (key1->key_alg == DST_ALG_RSAMD5)
-                       return (ISC_FALSE);
-               if ((key1->key_flags & DNS_KEYFLAG_REVOKE) ==
-                   (key2->key_flags & DNS_KEYFLAG_REVOKE))
-                       return (ISC_FALSE);
-               if ((key1->key_flags & DNS_KEYFLAG_REVOKE) != 0 &&
-                   key1->key_id != ((key2->key_id + 128) & 0xffff))
-                       return (ISC_FALSE);
-               if ((key2->key_flags & DNS_KEYFLAG_REVOKE) != 0 &&
-                   key2->key_id != ((key1->key_id + 128) & 0xffff))
-                       return (ISC_FALSE);
-       }
-       if (compare != NULL)
-               return (compare(key1, key2));
 -      if (key1->key_alg == key2->key_alg &&
 -          key1->key_id == key2->key_id &&
 -          key1->func->compare != NULL &&
 -          key1->func->compare(key1, key2) == ISC_TRUE)
 -              return (ISC_TRUE);
--      else
-               return (ISC_FALSE);
- }
- /*
-  * Compares only the public portion of two keys, by converting them
-  * both to wire format and comparing the results.
-  */
- static isc_boolean_t
- pub_compare(dst_key_t *key1, dst_key_t *key2) {
-       isc_result_t result;
-       unsigned char txt1[DST_KEY_MAXSIZE], txt2[DST_KEY_MAXSIZE];
-       isc_buffer_t b1, b2;
-       isc_region_t r1, r2;
-       isc_uint16_t flags;
-       flags = key1->key_flags;
-       key1->key_flags = 0;
-       isc_buffer_init(&b1, txt1, sizeof(txt1));
-       result = dst_key_todns(key1, &b1);
-       key1->key_flags = flags;
-       if (result != ISC_R_SUCCESS)
-               return (ISC_FALSE);
-       flags = key2->key_flags;
-       key2->key_flags = 0;
-       isc_buffer_init(&b2, txt2, sizeof(txt2));
-       result = dst_key_todns(key2, &b2);
-       key2->key_flags = flags;
-       if (result != ISC_R_SUCCESS)
--              return (ISC_FALSE);
-       isc_buffer_usedregion(&b1, &r1);
-       isc_buffer_usedregion(&b2, &r2);
-       return (ISC_TF(isc_region_compare(&r1, &r2) == 0));
- }
- isc_boolean_t
- dst_key_compare(const dst_key_t *key1, const dst_key_t *key2) {
-       return (comparekeys(key1, key2, ISC_FALSE, key1->func->compare));
- }
- isc_boolean_t
- dst_key_pubcompare(const dst_key_t *key1, const dst_key_t *key2,
-                  isc_boolean_t match_revoked_key)
- {
-       return (comparekeys(key1, key2, match_revoked_key, pub_compare));
--}
--
--isc_boolean_t
--dst_key_paramcompare(const dst_key_t *key1, const dst_key_t *key2) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key1));
--      REQUIRE(VALID_KEY(key2));
--
--      if (key1 == key2)
--              return (ISC_TRUE);
--      if (key1 == NULL || key2 == NULL)
--              return (ISC_FALSE);
--      if (key1->key_alg == key2->key_alg &&
--          key1->func->paramcompare != NULL &&
--          key1->func->paramcompare(key1, key2) == ISC_TRUE)
--              return (ISC_TRUE);
--      else
--              return (ISC_FALSE);
--}
--
--void
--dst_key_free(dst_key_t **keyp) {
--      isc_mem_t *mctx;
--      dst_key_t *key;
--
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(keyp != NULL && VALID_KEY(*keyp));
--
--      key = *keyp;
--      mctx = key->mctx;
--
--      if (key->keydata.generic != NULL) {
--              INSIST(key->func->destroy != NULL);
--              key->func->destroy(key);
--      }
--      if (key->engine != NULL)
--              isc_mem_free(mctx, key->engine);
--      if (key->label != NULL)
--              isc_mem_free(mctx, key->label);
--      dns_name_free(key->key_name, mctx);
--      isc_mem_put(mctx, key->key_name, sizeof(dns_name_t));
--      memset(key, 0, sizeof(dst_key_t));
--      isc_mem_put(mctx, key, sizeof(dst_key_t));
--      *keyp = NULL;
--}
--
--isc_boolean_t
--dst_key_isprivate(const dst_key_t *key) {
--      REQUIRE(VALID_KEY(key));
--      INSIST(key->func->isprivate != NULL);
--      return (key->func->isprivate(key));
--}
--
--isc_result_t
--dst_key_buildfilename(const dst_key_t *key, int type,
--                    const char *directory, isc_buffer_t *out) {
--
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(type == DST_TYPE_PRIVATE || type == DST_TYPE_PUBLIC ||
--              type == 0);
--
--      return (buildfilename(key->key_name, key->key_id, key->key_alg,
--                            type, directory, out));
--}
--
--isc_result_t
--dst_key_sigsize(const dst_key_t *key, unsigned int *n) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(n != NULL);
--
--      /* XXXVIX this switch statement is too sparse to gen a jump table. */
--      switch (key->key_alg) {
--      case DST_ALG_RSAMD5:
--      case DST_ALG_RSASHA1:
--      case DST_ALG_NSEC3RSASHA1:
--              *n = (key->key_size + 7) / 8;
--              break;
--      case DST_ALG_DSA:
--      case DST_ALG_NSEC3DSA:
--              *n = DNS_SIG_DSASIGSIZE;
--              break;
--      case DST_ALG_HMACMD5:
--              *n = 16;
--              break;
--      case DST_ALG_HMACSHA1:
--              *n = ISC_SHA1_DIGESTLENGTH;
--              break;
--      case DST_ALG_HMACSHA224:
--              *n = ISC_SHA224_DIGESTLENGTH;
--              break;
--      case DST_ALG_HMACSHA256:
--              *n = ISC_SHA256_DIGESTLENGTH;
--              break;
--      case DST_ALG_HMACSHA384:
--              *n = ISC_SHA384_DIGESTLENGTH;
--              break;
--      case DST_ALG_HMACSHA512:
--              *n = ISC_SHA512_DIGESTLENGTH;
--              break;
--      case DST_ALG_GSSAPI:
--              *n = 128; /*%< XXX */
--              break;
--      case DST_ALG_DH:
--      default:
--              return (DST_R_UNSUPPORTEDALG);
--      }
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst_key_secretsize(const dst_key_t *key, unsigned int *n) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--      REQUIRE(n != NULL);
--
--      if (key->key_alg == DST_ALG_DH)
--              *n = (key->key_size + 7) / 8;
--      else
--              return (DST_R_UNSUPPORTEDALG);
--      return (ISC_R_SUCCESS);
--}
--
--/***
-- *** Static methods
-- ***/
--
--/*%
-- * Allocates a key structure and fills in some of the fields.
-- */
--static dst_key_t *
--get_key_struct(dns_name_t *name, unsigned int alg,
--             unsigned int flags, unsigned int protocol,
--             unsigned int bits, dns_rdataclass_t rdclass,
--             isc_mem_t *mctx)
--{
--      dst_key_t *key;
--      isc_result_t result;
--      int i;
--
--      key = (dst_key_t *) isc_mem_get(mctx, sizeof(dst_key_t));
--      if (key == NULL)
--              return (NULL);
--
--      memset(key, 0, sizeof(dst_key_t));
--      key->magic = KEY_MAGIC;
--
--      key->key_name = isc_mem_get(mctx, sizeof(dns_name_t));
--      if (key->key_name == NULL) {
--              isc_mem_put(mctx, key, sizeof(dst_key_t));
--              return (NULL);
--      }
--      dns_name_init(key->key_name, NULL);
--      result = dns_name_dup(name, mctx, key->key_name);
--      if (result != ISC_R_SUCCESS) {
--              isc_mem_put(mctx, key->key_name, sizeof(dns_name_t));
--              isc_mem_put(mctx, key, sizeof(dst_key_t));
--              return (NULL);
--      }
--      key->key_alg = alg;
--      key->key_flags = flags;
--      key->key_proto = protocol;
--      key->mctx = mctx;
--      key->keydata.generic = NULL;
--      key->key_size = bits;
--      key->key_class = rdclass;
--      key->func = dst_t_func[alg];
--      key->fmt_major = 0;
--      key->fmt_minor = 0;
--      for (i = 0; i < (DST_MAX_TIMES + 1); i++) {
--              key->times[i] = 0;
--              key->timeset[i] = ISC_FALSE;
--      }
--      return (key);
--}
--
--/*%
-- * Reads a public key from disk
-- */
--isc_result_t
--dst_key_read_public(const char *filename, int type,
--                  isc_mem_t *mctx, dst_key_t **keyp)
--{
--      u_char rdatabuf[DST_KEY_MAXSIZE];
--      isc_buffer_t b;
--      dns_fixedname_t name;
--      isc_lex_t *lex = NULL;
--      isc_token_t token;
--      isc_result_t ret;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      unsigned int opt = ISC_LEXOPT_DNSMULTILINE;
--      dns_rdataclass_t rdclass = dns_rdataclass_in;
--      isc_lexspecials_t specials;
--      isc_uint32_t ttl;
--      isc_result_t result;
--      dns_rdatatype_t keytype;
--
--      /*
--       * Open the file and read its formatted contents
--       * File format:
--       *    domain.name [ttl] [class] [KEY|DNSKEY] <flags> <protocol> <algorithm> <key>
--       */
--
--      /* 1500 should be large enough for any key */
--      ret = isc_lex_create(mctx, 1500, &lex);
--      if (ret != ISC_R_SUCCESS)
--              goto cleanup;
--
--      memset(specials, 0, sizeof(specials));
--      specials['('] = 1;
--      specials[')'] = 1;
--      specials['"'] = 1;
--      isc_lex_setspecials(lex, specials);
--      isc_lex_setcomments(lex, ISC_LEXCOMMENT_DNSMASTERFILE);
--
--      ret = isc_lex_openfile(lex, filename);
--      if (ret != ISC_R_SUCCESS)
--              goto cleanup;
--
--#define NEXTTOKEN(lex, opt, token) { \
--      ret = isc_lex_gettoken(lex, opt, token); \
--      if (ret != ISC_R_SUCCESS) \
--              goto cleanup; \
--      }
--
--#define BADTOKEN() { \
--      ret = ISC_R_UNEXPECTEDTOKEN; \
--      goto cleanup; \
--      }
--
--      /* Read the domain name */
--      NEXTTOKEN(lex, opt, &token);
--      if (token.type != isc_tokentype_string)
--              BADTOKEN();
--
--      /*
--       * We don't support "@" in .key files.
--       */
--      if (!strcmp(DST_AS_STR(token), "@"))
--              BADTOKEN();
--
--      dns_fixedname_init(&name);
--      isc_buffer_init(&b, DST_AS_STR(token), strlen(DST_AS_STR(token)));
--      isc_buffer_add(&b, strlen(DST_AS_STR(token)));
--      ret = dns_name_fromtext(dns_fixedname_name(&name), &b, dns_rootname,
--                              0, NULL);
--      if (ret != ISC_R_SUCCESS)
--              goto cleanup;
--
--      /* Read the next word: either TTL, class, or 'KEY' */
--      NEXTTOKEN(lex, opt, &token);
--
--      if (token.type != isc_tokentype_string)
--              BADTOKEN();
--
--      /* If it's a TTL, read the next one */
--      result = dns_ttl_fromtext(&token.value.as_textregion, &ttl);
--      if (result == ISC_R_SUCCESS)
--              NEXTTOKEN(lex, opt, &token);
--
--      if (token.type != isc_tokentype_string)
--              BADTOKEN();
--
--      ret = dns_rdataclass_fromtext(&rdclass, &token.value.as_textregion);
--      if (ret == ISC_R_SUCCESS)
--              NEXTTOKEN(lex, opt, &token);
--
--      if (token.type != isc_tokentype_string)
--              BADTOKEN();
--
--      if (strcasecmp(DST_AS_STR(token), "DNSKEY") == 0)
--              keytype = dns_rdatatype_dnskey;
--      else if (strcasecmp(DST_AS_STR(token), "KEY") == 0)
--              keytype = dns_rdatatype_key; /*%< SIG(0), TKEY */
--      else
--              BADTOKEN();
--
--      if (((type & DST_TYPE_KEY) != 0 && keytype != dns_rdatatype_key) ||
--          ((type & DST_TYPE_KEY) == 0 && keytype != dns_rdatatype_dnskey)) {
--              ret = DST_R_BADKEYTYPE;
--              goto cleanup;
--      }
--
--      isc_buffer_init(&b, rdatabuf, sizeof(rdatabuf));
--      ret = dns_rdata_fromtext(&rdata, rdclass, keytype, lex, NULL,
--                               ISC_FALSE, mctx, &b, NULL);
--      if (ret != ISC_R_SUCCESS)
--              goto cleanup;
--
--      ret = dst_key_fromdns(dns_fixedname_name(&name), rdclass, &b, mctx,
--                            keyp);
--      if (ret != ISC_R_SUCCESS)
--              goto cleanup;
--
-- cleanup:
--      if (lex != NULL)
--              isc_lex_destroy(&lex);
--      return (ret);
--}
--
--/*%
-- * Set the flags on a key, then recompute the key ID
-- */
--isc_result_t
--dst_key_setflags(dst_key_t *key, isc_uint32_t flags) {
--      REQUIRE(VALID_KEY(key));
--      key->key_flags = flags;
--      return (computeid(key));
--}
--
--static isc_boolean_t
--issymmetric(const dst_key_t *key) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--      REQUIRE(VALID_KEY(key));
--
--      /* XXXVIX this switch statement is too sparse to gen a jump table. */
--      switch (key->key_alg) {
--      case DST_ALG_RSAMD5:
--      case DST_ALG_RSASHA1:
--      case DST_ALG_NSEC3RSASHA1:
--      case DST_ALG_DSA:
--      case DST_ALG_NSEC3DSA:
--      case DST_ALG_DH:
--              return (ISC_FALSE);
--      case DST_ALG_HMACMD5:
--      case DST_ALG_GSSAPI:
--              return (ISC_TRUE);
--      default:
--              return (ISC_FALSE);
--      }
--}
--
--/*%
-- * Write key timing metadata to a file pointer, preceded by 'tag'
-- */
--static void
--printtime(const dst_key_t *key, int type, const char *tag, FILE *stream) {
--      isc_result_t result;
--      const char *output;
--      isc_stdtime_t when;
--      time_t t;
--
--      result = dst_key_gettime(key, type, &when);
--      if (result == ISC_R_NOTFOUND)
--              return;
--
--      /* time_t and isc_stdtime_t might be different sizes */
--      t = when;
--      output = ctime(&t);
--      fprintf(stream, "%s: %s", tag, output);
--}
--
--/*%
-- * Writes a public key to disk in DNS format.
-- */
--static isc_result_t
--write_public_key(const dst_key_t *key, int type, const char *directory) {
--      FILE *fp;
--      isc_buffer_t keyb, textb, fileb, classb;
--      isc_region_t r;
--      char filename[ISC_DIR_NAMEMAX];
--      unsigned char key_array[DST_KEY_MAXSIZE];
--      char text_array[DST_KEY_MAXTEXTSIZE];
--      char class_array[10];
--      isc_result_t ret;
--      dns_rdata_t rdata = DNS_RDATA_INIT;
--      isc_fsaccess_t access;
--
--      REQUIRE(VALID_KEY(key));
--
--      isc_buffer_init(&keyb, key_array, sizeof(key_array));
--      isc_buffer_init(&textb, text_array, sizeof(text_array));
--      isc_buffer_init(&classb, class_array, sizeof(class_array));
--
--      ret = dst_key_todns(key, &keyb);
--      if (ret != ISC_R_SUCCESS)
--              return (ret);
--
--      isc_buffer_usedregion(&keyb, &r);
--      dns_rdata_fromregion(&rdata, key->key_class, dns_rdatatype_dnskey, &r);
--
--      ret = dns_rdata_totext(&rdata, (dns_name_t *) NULL, &textb);
--      if (ret != ISC_R_SUCCESS)
--              return (DST_R_INVALIDPUBLICKEY);
--
--      ret = dns_rdataclass_totext(key->key_class, &classb);
--      if (ret != ISC_R_SUCCESS)
--              return (DST_R_INVALIDPUBLICKEY);
--
--      /*
--       * Make the filename.
--       */
--      isc_buffer_init(&fileb, filename, sizeof(filename));
--      ret = dst_key_buildfilename(key, DST_TYPE_PUBLIC, directory, &fileb);
--      if (ret != ISC_R_SUCCESS)
--              return (ret);
--
--      /*
--       * Create public key file.
--       */
--      if ((fp = fopen(filename, "w")) == NULL)
--              return (DST_R_WRITEERROR);
--
--      if (issymmetric(key)) {
--              access = 0;
--              isc_fsaccess_add(ISC_FSACCESS_OWNER,
--                               ISC_FSACCESS_READ | ISC_FSACCESS_WRITE,
--                               &access);
--              (void)isc_fsaccess_set(filename, access);
--      }
--
--      /* Write key information in comments */
--      if ((type & DST_TYPE_KEY) == 0) {
--              fprintf(fp, "; This is a %s%s-signing key, keyid %d, for ",
--                      (key->key_flags & DNS_KEYFLAG_REVOKE) != 0 ?
--                              "revoked " :
--                              "",
--                      (key->key_flags & DNS_KEYFLAG_KSK) != 0 ?
--                              "key" :
--                              "zone",
--                      key->key_id);
--              ret = dns_name_print(key->key_name, fp);
--              if (ret != ISC_R_SUCCESS) {
--                      fclose(fp);
--                      return (ret);
--              }
--              fputc('\n', fp);
--
--              printtime(key, DST_TIME_CREATED, "; Created", fp);
--              printtime(key, DST_TIME_PUBLISH, "; Publish", fp);
--              printtime(key, DST_TIME_ACTIVATE, "; Activate", fp);
--              printtime(key, DST_TIME_REVOKE, "; Revoke", fp);
--              printtime(key, DST_TIME_INACTIVE, "; Inactive", fp);
--              printtime(key, DST_TIME_DELETE, "; Delete", fp);
--      }
--
--      /* Now print the actual key */
--      ret = dns_name_print(key->key_name, fp);
--
--      fprintf(fp, " ");
--
--      isc_buffer_usedregion(&classb, &r);
--      fwrite(r.base, 1, r.length, fp);
--
--      if ((type & DST_TYPE_KEY) != 0)
--              fprintf(fp, " KEY ");
--      else
--              fprintf(fp, " DNSKEY ");
--
--      isc_buffer_usedregion(&textb, &r);
--      fwrite(r.base, 1, r.length, fp);
--
--      fputc('\n', fp);
--      fflush(fp);
--      if (ferror(fp))
--              ret = DST_R_WRITEERROR;
--      fclose(fp);
--
--      return (ret);
--}
--
--static isc_result_t
--buildfilename(dns_name_t *name, dns_keytag_t id,
--            unsigned int alg, unsigned int type,
--            const char *directory, isc_buffer_t *out)
--{
--      const char *suffix = "";
--      unsigned int len;
--      isc_result_t result;
--
--      REQUIRE(out != NULL);
--      if ((type & DST_TYPE_PRIVATE) != 0)
--              suffix = ".private";
--      else if (type == DST_TYPE_PUBLIC)
--              suffix = ".key";
--      if (directory != NULL) {
--              if (isc_buffer_availablelength(out) < strlen(directory))
--                      return (ISC_R_NOSPACE);
--              isc_buffer_putstr(out, directory);
--              if (strlen(directory) > 0U &&
--                  directory[strlen(directory) - 1] != '/')
--                      isc_buffer_putstr(out, "/");
--      }
--      if (isc_buffer_availablelength(out) < 1)
--              return (ISC_R_NOSPACE);
--      isc_buffer_putstr(out, "K");
--      result = dns_name_tofilenametext(name, ISC_FALSE, out);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--      len = 1 + 3 + 1 + 5 + strlen(suffix) + 1;
--      if (isc_buffer_availablelength(out) < len)
--              return (ISC_R_NOSPACE);
--      sprintf((char *) isc_buffer_used(out), "+%03d+%05d%s", alg, id,
--              suffix);
--      isc_buffer_add(out, len);
--
--      return (ISC_R_SUCCESS);
--}
--
--static isc_result_t
--computeid(dst_key_t *key) {
--      isc_buffer_t dnsbuf;
--      unsigned char dns_array[DST_KEY_MAXSIZE];
--      isc_region_t r;
--      isc_result_t ret;
--
--      isc_buffer_init(&dnsbuf, dns_array, sizeof(dns_array));
--      ret = dst_key_todns(key, &dnsbuf);
--      if (ret != ISC_R_SUCCESS)
--              return (ret);
--
--      isc_buffer_usedregion(&dnsbuf, &r);
--      key->key_id = dst_region_computeid(&r, key->key_alg);
--      return (ISC_R_SUCCESS);
--}
--
--static isc_result_t
--frombuffer(dns_name_t *name, unsigned int alg, unsigned int flags,
--         unsigned int protocol, dns_rdataclass_t rdclass,
--         isc_buffer_t *source, isc_mem_t *mctx, dst_key_t **keyp)
--{
--      dst_key_t *key;
--      isc_result_t ret;
--
--      REQUIRE(dns_name_isabsolute(name));
--      REQUIRE(source != NULL);
--      REQUIRE(mctx != NULL);
--      REQUIRE(keyp != NULL && *keyp == NULL);
--
--      key = get_key_struct(name, alg, flags, protocol, 0, rdclass, mctx);
--      if (key == NULL)
--              return (ISC_R_NOMEMORY);
--
--      if (isc_buffer_remaininglength(source) > 0) {
--              ret = algorithm_status(alg);
--              if (ret != ISC_R_SUCCESS) {
--                      dst_key_free(&key);
--                      return (ret);
--              }
--              if (key->func->fromdns == NULL) {
--                      dst_key_free(&key);
--                      return (DST_R_UNSUPPORTEDALG);
--              }
--
--              ret = key->func->fromdns(key, source);
--              if (ret != ISC_R_SUCCESS) {
--                      dst_key_free(&key);
--                      return (ret);
--              }
--      }
--
--      *keyp = key;
--      return (ISC_R_SUCCESS);
--}
--
--static isc_result_t
--algorithm_status(unsigned int alg) {
--      REQUIRE(dst_initialized == ISC_TRUE);
--
--      if (dst_algorithm_supported(alg))
--              return (ISC_R_SUCCESS);
--#ifndef OPENSSL
--      if (alg == DST_ALG_RSAMD5 || alg == DST_ALG_RSASHA1 ||
--          alg == DST_ALG_DSA || alg == DST_ALG_DH ||
--          alg == DST_ALG_HMACMD5 || alg == DST_ALG_NSEC3DSA ||
--          alg == DST_ALG_NSEC3RSASHA1)
--              return (DST_R_NOCRYPTO);
--#endif
--      return (DST_R_UNSUPPORTEDALG);
--}
--
--static isc_result_t
--addsuffix(char *filename, unsigned int len, const char *odirname,
--        const char *ofilename, const char *suffix)
--{
--      int olen = strlen(ofilename);
--      int n;
--
--      if (olen > 1 && ofilename[olen - 1] == '.')
--              olen -= 1;
--      else if (olen > 8 && strcmp(ofilename + olen - 8, ".private") == 0)
--              olen -= 8;
--      else if (olen > 4 && strcmp(ofilename + olen - 4, ".key") == 0)
--              olen -= 4;
--
--      if (odirname == NULL)
--              n = snprintf(filename, len, "%.*s%s", olen, ofilename, suffix);
--      else
--              n = snprintf(filename, len, "%s/%.*s%s",
--                           odirname, olen, ofilename, suffix);
--      if (n < 0)
--              return (ISC_R_NOSPACE);
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--dst__entropy_getdata(void *buf, unsigned int len, isc_boolean_t pseudo) {
--#ifdef BIND9
--      unsigned int flags = dst_entropy_flags;
--      if (pseudo)
--              flags &= ~ISC_ENTROPY_GOODONLY;
--      return (isc_entropy_getdata(dst_entropy_pool, buf, len, NULL, flags));
--#else
--      UNUSED(buf);
--      UNUSED(len);
--      UNUSED(pseudo);
--
--      return (ISC_R_NOTIMPLEMENTED);
--#endif
--}
--
--unsigned int
--dst__entropy_status(void) {
--#ifdef BIND9
--      return (isc_entropy_status(dst_entropy_pool));
--#else
--      return (0);
--#endif
--}
diff --cc lib/dns/win32/libdns.def
index f934ad7dc4a025be700dc2eb4aea475157f31f3e,f934ad7dc4a025be700dc2eb4aea475157f31f3e..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,900 -1,900 +1,0 @@@
--LIBRARY libdns
--
--; Exported Functions
--EXPORTS
--
--dns_acache_attach
--dns_acache_attachentry
--dns_acache_cancelentry
--dns_acache_create
--dns_acache_createentry
--dns_acache_detach
--dns_acache_detachentry
--dns_acache_getentry
--dns_acache_putdb
--dns_acache_setcachesize
--dns_acache_setcleaninginterval
--dns_acache_setdb
--dns_acache_setentry
--dns_acache_shutdown
--dns_acl_any
--dns_acl_attach
--dns_acl_create
--dns_acl_detach
--dns_acl_isany
--dns_acl_isinsecure
--dns_acl_isnone
--dns_acl_match
--dns_acl_merge
--dns_acl_none
--dns_aclelement_match
--dns_aclenv_copy
--dns_aclenv_destroy
--dns_aclenv_init
--dns_adb_adjustsrtt
--dns_adb_attach
--dns_adb_cancelfind
--dns_adb_changeflags
--dns_adb_create
--dns_adb_createfind
--dns_adb_destroyfind
--dns_adb_detach
--dns_adb_dump
--dns_adb_dumpfind
--dns_adb_findaddrinfo
--dns_adb_flush
--dns_adb_freeaddrinfo
--dns_adb_marklame
--dns_adb_setadbsize
--dns_adb_shutdown
--dns_adb_whenshutdown
--dns_byaddr_cancel
--dns_byaddr_create
--dns_byaddr_createptrname
--dns_byaddr_createptrname2
--dns_byaddr_destroy
--dns_cache_attach
--dns_cache_attachdb
--dns_cache_clean
--dns_cache_create
--dns_cache_create2
--dns_cache_detach
--dns_cache_dump
--dns_cache_flush
--dns_cache_getcachesize
--dns_cache_getcleaninginterval
--dns_cache_getname
--dns_cache_load
--dns_cache_setcachesize
--dns_cache_setcleaninginterval
--dns_cache_setfilename
--dns_cert_fromtext
--dns_cert_totext
--dns_compress_add
--dns_compress_findglobal
--dns_compress_getedns
--dns_compress_getmethods
--dns_compress_init
--dns_compress_invalidate
--dns_compress_rollback
--dns_compress_setmethods
--dns_compress_setsensitive
--dns_counter_fromtext
--dns_db_addrdataset
--dns_db_allrdatasets
--dns_db_attach
--dns_db_attachnode
--dns_db_attachversion
--dns_db_beginload
--dns_db_class
--dns_db_closeversion
--dns_db_create
--dns_db_createiterator
--dns_db_createsoatuple
--dns_db_currentversion
--dns_db_deleterdataset
--dns_db_detach
--dns_db_detachnode
--dns_db_diff
--dns_db_dump
--dns_db_endload
--dns_db_expirenode
--dns_db_find
--dns_db_findnode
--dns_db_findnsec3node
--dns_db_findrdataset
--dns_db_findzonecut
--dns_db_getnsec3parameters
--dns_db_getoriginnode
--dns_db_getrrsetstats
--dns_db_getsoaserial
--dns_db_iscache
--dns_db_isdnssec
--dns_db_ispersistent
--dns_db_issecure
--dns_db_isstub
--dns_db_iszone
--dns_db_load
--dns_db_load2
--dns_db_load3
--dns_db_newversion
--dns_db_nodecount
--dns_db_ondestroy
--dns_db_origin
--dns_db_overmem
--dns_db_printnode
--dns_db_register
--dns_db_subtractrdataset
--dns_db_unregister
--dns_dbiterator_current
--dns_dbiterator_destroy
--dns_dbiterator_first
--dns_dbiterator_last
--dns_dbiterator_next
--dns_dbiterator_origin
--dns_dbiterator_pause
--dns_dbiterator_prev
--dns_dbiterator_seek
--dns_dbiterator_setcleanmode
--dns_dbtable_add
--dns_dbtable_adddefault
--dns_dbtable_attach
--dns_dbtable_create
--dns_dbtable_detach
--dns_dbtable_find
--dns_dbtable_getdefault
--dns_dbtable_remove
--dns_dbtable_removedefault
--dns_decompress_edns
--dns_decompress_getmethods
--dns_decompress_init
--dns_decompress_invalidate
--dns_decompress_setmethods
--dns_decompress_type
--dns_diff_append
--dns_diff_appendminimal
--dns_diff_apply
--dns_diff_applysilently
--dns_diff_clear
--dns_diff_init
--dns_diff_load
--dns_diff_print
--dns_diff_sort
--dns_difftuple_copy
--dns_difftuple_create
--dns_difftuple_free
--dns_dispatch_addresponse
--dns_dispatch_attach
--dns_dispatch_cancel
--dns_dispatch_changeattributes
--dns_dispatch_createtcp
--dns_dispatch_detach
--dns_dispatch_getlocaladdress
--dns_dispatch_getsocket
--dns_dispatch_getudp
--dns_dispatch_importrecv
--dns_dispatch_removeresponse
--dns_dispatch_starttcp
--dns_dispatchmgr_create
--dns_dispatchmgr_destroy
--dns_dispatchmgr_getblackhole
--dns_dispatchmgr_setavailports
--dns_dispatchmgr_setblackhole
--dns_dispatchmgr_setblackportlist
--dns_dispatchmgr_setstats
--dns_dlzallowzonexfr
--dns_dlzcreate
--dns_dlzdestroy
--dns_dlzfindzone
--dns_dlzregister
--dns_dlzstrtoargv
--dns_dlzunregister
--dns_dnssec_findzonekeys
--dns_dnssec_findzonekeys2
--dns_dnssec_findmatchingkeys
--dns_dnssec_keyfromrdata
--dns_dnssec_selfsigns
--dns_dnssec_sign
--dns_dnssec_signmessage
--dns_dnssec_verify
--dns_dnssec_verify2
--dns_dnssec_verifymessage
--dns_dnsseckey_create
--dns_dnsseckey_destroy
--dns_ds_buildrdata
--dns_ds_digest_supported
--dns_dumpctx_detach
--dns_fwdtable_add
--dns_fwdtable_create
--dns_fwdtable_destroy
--dns_fwdtable_find
--dns_generalstats_create
--dns_generalstats_dump
--dns_generalstats_increment
--dns_iptable_addprefix
--dns_iptable_attach
--dns_iptable_create
--dns_iptable_detach
--dns_iptable_merge
--dns_journal_begin_transaction
--dns_journal_commit
--dns_journal_current_rr
--dns_journal_destroy
--dns_journal_first_rr
--dns_journal_first_serial
--dns_journal_iter_init
--dns_journal_last_serial
--dns_journal_next_rr
--dns_journal_open
--dns_journal_print
--dns_journal_rollforward
--dns_journal_write_transaction
--dns_journal_writediff
--dns_keydata_fromdnskey
--dns_keydata_todnskey
--dns_keyflags_fromtext
--dns_keynode_key
--dns_keynode_managed
--dns_keytable_add
--dns_keytable_attach
--dns_keytable_create
--dns_keytable_delete
--dns_keytable_deletekeynode
--dns_keytable_detach
--dns_keytable_detachkeynode
--dns_keytable_find
--dns_keytable_finddeepestmatch
--dns_keytable_findkeynode
--dns_keytable_findnextkeynode
--dns_keytable_issecuredomain
--dns_keytable_marksecure
--dns_keytable_nextkeynode
--dns_lib_initmsgcat
--dns_loadctx_attach
--dns_loadctx_cancel
--dns_loadctx_detach
--dns_log_init
--dns_log_setcontext
--dns_lookup_cancel
--dns_lookup_create
--dns_lookup_destroy
--dns_master_dump
--dns_master_dumpnode
--dns_master_dumpnodetostream
--dns_master_dumptostream
--dns_master_dumptostream2
--dns_master_dumptostreaminc
--dns_master_loadbuffer
--dns_master_loadbufferinc
--dns_master_loadfile
--dns_master_loadfileinc
--dns_master_loadstream
--dns_master_loadstreaminc
--dns_master_questiontotext
--dns_master_rdatasettotext
--dns_master_stylecreate
--dns_master_styledestroy
--dns_message_addname
--dns_message_checksig
--dns_message_create
--dns_message_currentname
--dns_message_destroy
--dns_message_find
--dns_message_findname
--dns_message_findtype
--dns_message_firstname
--dns_message_getopt
--dns_message_getquerytsig
--dns_message_getrawmessage
--dns_message_getsig0
--dns_message_getsig0key
--dns_message_gettempname
--dns_message_gettempoffsets
--dns_message_gettemprdata
--dns_message_gettemprdatalist
--dns_message_gettemprdataset
--dns_message_gettimeadjust
--dns_message_gettsig
--dns_message_gettsigkey
--dns_message_movename
--dns_message_nextname
--dns_message_parse
--dns_message_peekheader
--dns_message_pseudosectiontotext
--dns_message_puttempname
--dns_message_puttemprdata
--dns_message_puttemprdatalist
--dns_message_puttemprdataset
--dns_message_rechecksig
--dns_message_removename
--dns_message_renderbegin
--dns_message_renderchangebuffer
--dns_message_renderend
--dns_message_renderheader
--dns_message_renderrelease
--dns_message_renderreserve
--dns_message_renderreset
--dns_message_rendersection
--dns_message_reply
--dns_message_reset
--dns_message_resetsig
--dns_message_sectiontotext
--dns_message_setopt
--dns_message_setquerytsig
--dns_message_setsig0key
--dns_message_setsortorder
--dns_message_settimeadjust
--dns_message_settsigkey
--dns_message_signer
--dns_message_takebuffer
--dns_message_totext
--dns_name_clone
--dns_name_compare
--dns_name_concatenate
--dns_name_copy
--dns_name_countlabels
--dns_name_destroy
--dns_name_digest
--dns_name_downcase
--dns_name_dup
--dns_name_dupwithoffsets
--dns_name_dynamic
--dns_name_equal
--dns_name_format
--dns_name_free
--dns_name_fromregion
--dns_name_fromtext
--dns_name_fromstring
--dns_name_fromwire
--dns_name_fullcompare
--dns_name_getlabel
--dns_name_getlabelsequence
--dns_name_hasbuffer
--dns_name_hash
--dns_name_init
--dns_name_internalwildcard
--dns_name_invalidate
--dns_name_isabsolute
--dns_name_issubdomain
--dns_name_iswildcard
--dns_name_matcheswildcard
--dns_name_print
--dns_name_rdatacompare
--dns_name_reset
--dns_name_setbuffer
--dns_name_settotextfilter
--dns_name_split
--dns_name_tofilenametext
--dns_name_toregion
--dns_name_tostring
--dns_name_totext
--dns_name_towire
--dns_ncache_add
--dns_ncache_getrdataset
--dns_ncache_towire
--dns_nsec3_active
--dns_nsec3_addnsec3
--dns_nsec3_addnsec3s
--dns_nsec3_buildrdata
--dns_nsec3_delnsec3
--dns_nsec3_delnsec3s
--dns_nsec3_hashlength
--dns_nsec3_hashname
--dns_nsec3_maxiterations
--dns_nsec3_supportedhash
--dns_nsec3_typepresent
--dns_nsec_build
--dns_nsec_buildrdata
--dns_nsec_nseconly
--dns_nsec_typepresent
--dns_opcode_totext
--dns_opcodestats_create
--dns_opcodestats_dump
--dns_opcodestats_increment
--dns_order_add
--dns_order_attach
--dns_order_create
--dns_order_detach
--dns_order_find
--dns_peer_attach
--dns_peer_detach
--dns_peer_getbogus
--dns_peer_getkey
--dns_peer_getmaxudp
--dns_peer_getprovideixfr
--dns_peer_getrequestixfr
--dns_peer_getsupportedns
--dns_peer_gettransferformat
--dns_peer_gettransfers
--dns_peer_new
--dns_peer_newprefix
--dns_peer_setbogus
--dns_peer_setkey
--dns_peer_setkeybycharp
--dns_peer_setmaxudp
--dns_peer_setnotifysource
--dns_peer_setprovideixfr
--dns_peer_setquerysource
--dns_peer_setrequestixfr
--dns_peer_setrequestnsid
--dns_peer_setsupportedns
--dns_peer_settransferformat
--dns_peer_settransfers
--dns_peer_settransfersource
--dns_peer_setudpsize
--dns_peerlist_addpeer
--dns_peerlist_attach
--dns_peerlist_currpeer
--dns_peerlist_detach
--dns_peerlist_new
--dns_peerlist_peerbyaddr
--dns_portlist_add
--dns_portlist_create
--dns_portlist_detach
--dns_rbt_addname
--dns_rbt_addnode
--dns_rbt_create
--dns_rbt_deletename
--dns_rbt_deletenode
--dns_rbt_destroy
--dns_rbt_findname
--dns_rbt_findnode
--dns_rbt_formatnodename
--dns_rbt_fullnamefromnode
--dns_rbt_namefromnode
--dns_rbt_nodecount
--dns_rbt_printall
--dns_rbtnodechain_current
--dns_rbtnodechain_first
--dns_rbtnodechain_init
--dns_rbtnodechain_invalidate
--dns_rbtnodechain_last
--dns_rbtnodechain_next
--dns_rbtnodechain_prev
--dns_rbtnodechain_reset
--dns_rcode_fromtext
--dns_rcode_totext
--dns_rdata_additionaldata
--dns_rdata_checkowner
--dns_rdata_clone
--dns_rdata_compare
--dns_rdata_covers
--dns_rdata_digest
--dns_rdata_freestruct
--dns_rdata_fromregion
--dns_rdata_fromstruct
--dns_rdata_fromtext
--dns_rdata_fromwire
--dns_rdata_init
--dns_rdata_reset
--dns_rdata_tofmttext
--dns_rdata_toregion
--dns_rdata_tostruct
--dns_rdata_totext
--dns_rdata_towire
--dns_rdatacallbacks_init
--dns_rdatacallbacks_init_stdio
--dns_rdataclass_format
--dns_rdataclass_fromtext
--dns_rdataclass_ismeta
--dns_rdataclass_totext
--dns_rdatalist_init
--dns_rdatalist_tordataset
--dns_rdataset_additionaldata
--dns_rdataset_clone
--dns_rdataset_count
--dns_rdataset_current
--dns_rdataset_disassociate
--dns_rdataset_first
--dns_rdataset_getadditional
--dns_rdataset_getclosest
--dns_rdataset_getnoqname
--dns_rdataset_init
--dns_rdataset_invalidate
--dns_rdataset_isassociated
--dns_rdataset_makequestion
--dns_rdataset_next
--dns_rdataset_putadditional
--dns_rdataset_setadditional
--dns_rdataset_totext
--dns_rdataset_towire
--dns_rdataset_towiresorted
--dns_rdatasetiter_current
--dns_rdatasetiter_destroy
--dns_rdatasetiter_first
--dns_rdatasetiter_next
--dns_rdatasetstats_dump
--dns_rdataslab_equal
--dns_rdataslab_fromrdataset
--dns_rdataslab_merge
--dns_rdataslab_size
--dns_rdataslab_subtract
--dns_rdatatype_atparent
--dns_rdatatype_attributes
--dns_rdatatype_format
--dns_rdatatype_fromtext
--dns_rdatatype_isdnssec
--dns_rdatatype_isknown
--dns_rdatatype_ismeta
--dns_rdatatype_issingleton
--dns_rdatatype_iszonecutauth
--dns_rdatatype_notquestion
--dns_rdatatype_questiononly
--dns_rdatatype_totext
--dns_rdatatypestats_create
--dns_rdatatypestats_dump
--dns_rdatatypestats_increment
--dns_request_cancel
--dns_request_create
--dns_request_createraw
--dns_request_createvia
--dns_request_createvia3
--dns_request_destroy
--dns_request_getresponse
--dns_request_usedtcp
--dns_requestmgr_attach
--dns_requestmgr_create
--dns_requestmgr_detach
--dns_requestmgr_shutdown
--dns_requestmgr_whenshutdown
--dns_resolver_addalternate
--dns_resolver_algorithm_supported
--dns_resolver_attach
--dns_resolver_cancelfetch
--dns_resolver_create
--dns_resolver_createfetch
--dns_resolver_createfetch2
--dns_resolver_destroyfetch
--dns_resolver_detach
--dns_resolver_disable_algorithm
--dns_resolver_dispatchmgr
--dns_resolver_dispatchv4
--dns_resolver_dispatchv6
--dns_resolver_freeze
--dns_resolver_getlamettl
--dns_resolver_getoptions
--dns_resolver_getudpsize
--dns_resolver_getzeronosoattl
--dns_resolver_logfetch
--dns_resolver_nrunning
--dns_resolver_prime
--dns_resolver_reset_algorithms
--dns_resolver_resetmustbesecure
--dns_resolver_setclientsperquery
--dns_resolver_setlamettl
--dns_resolver_setmustbesecure
--dns_resolver_setudpsize
--dns_resolver_setzeronosoattl
--dns_resolver_shutdown
--dns_resolver_socketmgr
--dns_resolver_taskmgr
--dns_resolver_whenshutdown
--dns_result_register
--dns_result_torcode
--dns_result_totext
--dns_rootns_create
--dns_rriterator_current
--dns_rriterator_first
--dns_rriterator_destroy
--dns_rriterator_init
--dns_rriterator_next
--dns_rriterator_nextrrset
--dns_rriterator_pause
--dns_sdb_putnamedrr
--dns_sdb_putrdata
--dns_sdb_putrr
--dns_sdb_putsoa
--dns_sdb_register
--dns_sdb_unregister
--dns_sdlz_putnamedrr
--dns_sdlz_putrr
--dns_sdlz_putsoa
--dns_sdlzregister
--dns_sdlzunregister
--dns_secalg_fromtext
--dns_secalg_totext
--dns_secproto_fromtext
--dns_secproto_totext
--dns_soa_getminimum
--dns_soa_getserial
--dns_soa_setserial
--dns_ssutable_addrule
--dns_ssutable_attach
--dns_ssutable_checkrules
--dns_ssutable_create
--dns_ssutable_detach
--dns_stats_alloccounters
--dns_stats_detach
--dns_stats_freecounters
--dns_tcpmsg_cancelread
--dns_tcpmsg_init
--dns_tcpmsg_invalidate
--dns_tcpmsg_keepbuffer
--dns_tcpmsg_readmessage
--dns_tcpmsg_setmaxsize
--dns_time32_fromtext
--dns_time32_totext
--dns_time64_fromtext
--dns_time64_totext
--dns_timer_setidle
--dns_tkey_builddeletequery
--dns_tkey_builddhquery
--dns_tkey_buildgssquery
--dns_tkey_processdeleteresponse
--dns_tkey_processdhresponse
--dns_tkey_processgssresponse
--dns_tkey_processquery
--dns_tkeyctx_create
--dns_tkeyctx_destroy
--dns_tsig_sign
--dns_tsig_verify
--dns_tsigkey_attach
--dns_tsigkey_create
--dns_tsigkey_createfromkey
--dns_tsigkey_detach
--dns_tsigkey_find
--dns_tsigkey_setdeleted
--dns_tsigkeyring_add
--dns_tsigkeyring_create
--dns_tsigkeyring_destroy
--dns_tsigrcode_fromtext
--dns_tsigrcode_totext
--dns_ttl_fromtext
--dns_ttl_totext
--dns_validator_cancel
--dns_validator_create
--dns_validator_destroy
--dns_validator_send
--dns_view_adddelegationonly
--dns_view_addzone
--dns_view_attach
--dns_view_checksig
--dns_view_create
--dns_view_createresolver
--dns_view_detach
--dns_view_dialup
--dns_view_dumpdbtostream
--dns_view_excludedelegationonly
--dns_view_find
--dns_view_findzone
--dns_view_findzonecut
--dns_view_flushanddetach
--dns_view_flushcache
--dns_view_flushcache2
--dns_view_flushname
--dns_view_freeze
--dns_view_freezezones
--dns_view_getpeertsig
--dns_view_getresquerystats
--dns_view_getresstats
--dns_view_gettsig
--dns_view_iscacheshared
--dns_view_load
--dns_view_loadnew
--dns_view_setcache
--dns_view_setcache2
--dns_view_setdstport
--dns_view_sethints
--dns_view_setkeyring
--dns_view_setresquerystats
--dns_view_setresstats
--dns_view_setrootdelonly
--dns_view_simplefind
--dns_view_weakattach
--dns_view_weakdetach
--dns_viewlist_find
--dns_viewlist_findzone
--dns_xfrin_attach
--dns_xfrin_create
--dns_xfrin_detach
--dns_xfrin_shutdown
--dns_zone_attach
--dns_zone_checknames
--dns_zone_clearforwardacl
--dns_zone_clearnotifyacl
--dns_zone_clearqueryacl
--dns_zone_clearupdateacl
--dns_zone_clearxfracl
--dns_zone_create
--dns_zone_detach
--dns_zone_dialup
--dns_zone_dump
--dns_zone_dumptostream
--dns_zone_dumptostream2
--dns_zone_expire
--dns_zone_first
--dns_zone_flush
--dns_zone_forcereload
--dns_zone_forwardupdate
--dns_zone_fulldumptostream
--dns_zone_getchecknames
--dns_zone_getclass
--dns_zone_getdb
--dns_zone_getdbtype
--dns_zone_getfile
--dns_zone_getforwardacl
--dns_zone_getidlein
--dns_zone_getidleout
--dns_zone_getjournal
--dns_zone_getjournalsize
--dns_zone_getkeydirectory
--dns_zone_getmaxxfrin
--dns_zone_getmaxxfrout
--dns_zone_getmctx
--dns_zone_getmgr
--dns_zone_getnotifyacl
--dns_zone_getnotifysrc4
--dns_zone_getnotifysrc6
--dns_zone_getoptions
--dns_zone_getorigin
--dns_zone_getprivatetype
--dns_zone_getqueryacl
--dns_zone_getrequeststats
--dns_zone_getserial
--dns_zone_getsigresigninginterval
--dns_zone_getsigvalidityinterval
--dns_zone_getssutable
--dns_zone_getstatscounters
--dns_zone_gettask
--dns_zone_gettype
--dns_zone_getupdateacl
--dns_zone_getupdatedisabled
--dns_zone_getview
--dns_zone_getxfracl
--dns_zone_getxfrsource4
--dns_zone_getxfrsource6
--dns_zone_getzeronosoattl
--dns_zone_iattach
--dns_zone_idetach
--dns_zone_isforced
--dns_zone_load
--dns_zone_loadandthaw
--dns_zone_log
--dns_zone_maintenance
--dns_zone_markdirty
--dns_zone_name
--dns_zone_next
--dns_zone_notify
--dns_zone_notifyreceive
--dns_zone_refresh
--dns_zone_replacedb
--dns_zone_setacache
--dns_zone_setalsonotify
--dns_zone_setaltxfrsource4
--dns_zone_setaltxfrsource6
--dns_zone_setcheckmx
--dns_zone_setchecknames
--dns_zone_setcheckns
--dns_zone_setchecksrv
--dns_zone_setclass
--dns_zone_setdbtype
--dns_zone_setdialup
--dns_zone_setfile
--dns_zone_setfile2
--dns_zone_setflag
--dns_zone_setforwardacl
--dns_zone_setidlein
--dns_zone_setidleout
--dns_zone_setisself
--dns_zone_setjournal
--dns_zone_setjournalsize
--dns_zone_setkeydirectory
--dns_zone_setmasters
--dns_zone_setmasterswithkeys
--dns_zone_setmaxrefreshtime
--dns_zone_setmaxretrytime
--dns_zone_setmaxxfrin
--dns_zone_setmaxxfrout
--dns_zone_setminrefreshtime
--dns_zone_setminretrytime
--dns_zone_setnodes
--dns_zone_setnotifyacl
--dns_zone_setnotifydelay
--dns_zone_setnotifysrc4
--dns_zone_setnotifysrc6
--dns_zone_setnotifytype
--dns_zone_setoption
--dns_zone_setorigin
--dns_zone_setprivatetype
--dns_zone_setqueryacl
--dns_zone_setqueryonacl
--dns_zone_setrequeststats
--dns_zone_setsignatures
--dns_zone_setsigresigninginterval
--dns_zone_setsigvalidityinterval
--dns_zone_setssutable
--dns_zone_setstatistics
--dns_zone_setstats
--dns_zone_settask
--dns_zone_settype
--dns_zone_setupdateacl
--dns_zone_setupdatedisabled
--dns_zone_setview
--dns_zone_setxfracl
--dns_zone_setxfrsource4
--dns_zone_setxfrsource6
--dns_zone_setzeronosoattl
--dns_zone_signwithkey
--dns_zone_unload
--dns_zonekey_iszonekey
--dns_zonemgr_attach
--dns_zonemgr_create
--dns_zonemgr_detach
--dns_zonemgr_forcemaint
--dns_zonemgr_getcount
--dns_zonemgr_getiolimit
--dns_zonemgr_getserialqueryrate
--dns_zonemgr_getttransfersin
--dns_zonemgr_getttransfersperns
--dns_zonemgr_managezone
--dns_zonemgr_releasezone
--dns_zonemgr_resumexfrs
--dns_zonemgr_setiolimit
--dns_zonemgr_setserialqueryrate
--dns_zonemgr_settransfersin
--dns_zonemgr_settransfersperns
--dns_zonemgr_shutdown
--dns_zt_apply
--dns_zt_attach
--dns_zt_create
--dns_zt_detach
--dns_zt_find
--dns_zt_flushanddetach
--dns_zt_load
--dns_zt_mount
--dns_zt_unmount
--dst_algorithm_supported
--dst_context_adddata
--dst_context_create
--dst_context_destroy
--dst_context_sign
--dst_context_verify
--dst_gssapi_acceptctx
--dst_gssapi_acquirecred
--dst_gssapi_initctx
--dst_key_alg
--dst_key_buildfilename
--dst_key_class
--dst_key_compare
--dst_key_computesecret
--dst_key_flags
--dst_key_free
--dst_key_frombuffer
--dst_key_fromdns
--dst_key_fromfile
--dst_key_fromgssapi
--dst_key_fromlabel
--dst_key_fromnamedfile
--dst_key_generate
--dst_key_getprivateformat
--dst_key_gettime
--dst_key_id
--dst_key_isnullkey
--dst_key_isprivate
--dst_key_iszonekey
--dst_key_name
--dst_key_paramcompare
--dst_key_proto
--dst_key_secretsize
--dst_key_setbits
--dst_key_setflags
--dst_key_setprivateformat
--dst_key_settime
--dst_key_sigsize
--dst_key_size
--dst_key_tobuffer
--dst_key_todns
--dst_key_tofile
--dst_key_unsettime
--dst_lib_destroy
--dst_lib_init
--dst_lib_initmsgcat
--dst_region_computeid
--dst_result_register
--dst_result_totext
--
--; Exported Data
--
--EXPORTS
--
--dns_master_style_full DATA
diff --cc lib/isc/unix/ifiter_getifaddrs.c
index b576d4632fbb03357b2fcea662aa03ff8464a24d,b576d4632fbb03357b2fcea662aa03ff8464a24d..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,234 -1,234 +1,0 @@@
--/*
-- * Copyright (C) 2004, 2005, 2007, 2008  Internet Systems Consortium, Inc. ("ISC")
-- * Copyright (C) 2003  Internet Software Consortium.
-- *
-- * 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.
-- *
-- * 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: ifiter_getifaddrs.c,v 1.11 2008/03/20 23:47:00 tbox Exp $ */
--
--/*! \file
-- * \brief
-- * Obtain the list of network interfaces using the getifaddrs(3) library.
-- */
--
--#include <ifaddrs.h>
--
--/*% Iterator Magic */
--#define IFITER_MAGIC          ISC_MAGIC('I', 'F', 'I', 'G')
--/*% Valid Iterator */
--#define VALID_IFITER(t)               ISC_MAGIC_VALID(t, IFITER_MAGIC)
--
--#ifdef __linux
--static isc_boolean_t seenv6 = ISC_FALSE;
--#endif
--
--/*% Iterator structure */
--struct isc_interfaceiter {
--      unsigned int            magic;          /*%< Magic number. */
--      isc_mem_t               *mctx;
--      void                    *buf;           /*%< (unused) */
--      unsigned int            bufsize;        /*%< (always 0) */
--      struct ifaddrs          *ifaddrs;       /*%< List of ifaddrs */
--      struct ifaddrs          *pos;           /*%< Ptr to current ifaddr */
--      isc_interface_t         current;        /*%< Current interface data. */
--      isc_result_t            result;         /*%< Last result code. */
--#ifdef  __linux
--      FILE *                  proc;
--      char                    entry[ISC_IF_INET6_SZ];
--      isc_result_t            valid;
--#endif
--};
--
--isc_result_t
--isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
--      isc_interfaceiter_t *iter;
--      isc_result_t result;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(mctx != NULL);
--      REQUIRE(iterp != NULL);
--      REQUIRE(*iterp == NULL);
--
--      iter = isc_mem_get(mctx, sizeof(*iter));
--      if (iter == NULL)
--              return (ISC_R_NOMEMORY);
--
--      iter->mctx = mctx;
--      iter->buf = NULL;
--      iter->bufsize = 0;
--      iter->ifaddrs = NULL;
--#ifdef __linux
--      /*
--       * Only open "/proc/net/if_inet6" if we have never seen a IPv6
--       * address returned by getifaddrs().
--       */
--      if (!seenv6)
--              iter->proc = fopen("/proc/net/if_inet6", "r");
--      else
--              iter->proc = NULL;
--      iter->valid = ISC_R_FAILURE;
--#endif
--
--      if (getifaddrs(&iter->ifaddrs) < 0) {
--              isc__strerror(errno, strbuf, sizeof(strbuf));
--              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               isc_msgcat_get(isc_msgcat,
--                                              ISC_MSGSET_IFITERGETIFADDRS,
--                                              ISC_MSG_GETIFADDRS,
--                                              "getting interface "
--                                              "addresses: getifaddrs: %s"),
--                               strbuf);
--              result = ISC_R_UNEXPECTED;
--              goto failure;
--      }
--
--      /*
--       * A newly created iterator has an undefined position
--       * until isc_interfaceiter_first() is called.
--       */
--      iter->pos = NULL;
--      iter->result = ISC_R_FAILURE;
--
--      iter->magic = IFITER_MAGIC;
--      *iterp = iter;
--      return (ISC_R_SUCCESS);
--
-- failure:
--#ifdef __linux
--      if (iter->proc != NULL)
--              fclose(iter->proc);
--#endif
--      if (iter->ifaddrs != NULL) /* just in case */
--              freeifaddrs(iter->ifaddrs);
--      isc_mem_put(mctx, iter, sizeof(*iter));
--      return (result);
--}
--
--/*
-- * Get information about the current interface to iter->current.
-- * If successful, return ISC_R_SUCCESS.
-- * If the interface has an unsupported address family,
-- * return ISC_R_IGNORE.
-- */
--
--static isc_result_t
--internal_current(isc_interfaceiter_t *iter) {
--      struct ifaddrs *ifa;
--      int family;
--      unsigned int namelen;
--
--      REQUIRE(VALID_IFITER(iter));
--
--      ifa = iter->pos;
--
--#ifdef __linux
--      if (iter->pos == NULL)
--              return (linux_if_inet6_current(iter));
--#endif
--
--      INSIST(ifa != NULL);
--      INSIST(ifa->ifa_name != NULL);
--
--      if (ifa->ifa_addr == NULL)
--              return (ISC_R_IGNORE);
--
--      family = ifa->ifa_addr->sa_family;
--      if (family != AF_INET && family != AF_INET6)
--              return (ISC_R_IGNORE);
--
--#ifdef __linux
--      if (family == AF_INET6)
--              seenv6 = ISC_TRUE;
--#endif
--
--      memset(&iter->current, 0, sizeof(iter->current));
--
--      namelen = strlen(ifa->ifa_name);
--      if (namelen > sizeof(iter->current.name) - 1)
--              namelen = sizeof(iter->current.name) - 1;
--
--      memset(iter->current.name, 0, sizeof(iter->current.name));
--      memcpy(iter->current.name, ifa->ifa_name, namelen);
--
--      iter->current.flags = 0;
--
--      if ((ifa->ifa_flags & IFF_UP) != 0)
--              iter->current.flags |= INTERFACE_F_UP;
--
--      if ((ifa->ifa_flags & IFF_POINTOPOINT) != 0)
--              iter->current.flags |= INTERFACE_F_POINTTOPOINT;
--
--      if ((ifa->ifa_flags & IFF_LOOPBACK) != 0)
--              iter->current.flags |= INTERFACE_F_LOOPBACK;
--
--      iter->current.af = family;
--
--      get_addr(family, &iter->current.address, ifa->ifa_addr, ifa->ifa_name);
--
--      if (ifa->ifa_netmask != NULL)
--              get_addr(family, &iter->current.netmask, ifa->ifa_netmask,
--                       ifa->ifa_name);
--
--      if (ifa->ifa_dstaddr != NULL &&
--          (iter->current.flags & IFF_POINTOPOINT) != 0)
--              get_addr(family, &iter->current.dstaddress, ifa->ifa_dstaddr,
--                       ifa->ifa_name);
--
--      return (ISC_R_SUCCESS);
--}
--
--/*
-- * Step the iterator to the next interface.  Unlike
-- * isc_interfaceiter_next(), this may leave the iterator
-- * positioned on an interface that will ultimately
-- * be ignored.  Return ISC_R_NOMORE if there are no more
-- * interfaces, otherwise ISC_R_SUCCESS.
-- */
--static isc_result_t
--internal_next(isc_interfaceiter_t *iter) {
--
--      if (iter->pos != NULL)
--              iter->pos = iter->pos->ifa_next;
--      if (iter->pos == NULL) {
--#ifdef __linux
--              if (!seenv6)
--                      return (linux_if_inet6_next(iter));
--#endif
--              return (ISC_R_NOMORE);
--      }
--
--      return (ISC_R_SUCCESS);
--}
--
--static void
--internal_destroy(isc_interfaceiter_t *iter) {
--
--#ifdef __linux
--      if (iter->proc != NULL)
--              fclose(iter->proc);
--      iter->proc = NULL;
--#endif
--      if (iter->ifaddrs)
--              freeifaddrs(iter->ifaddrs);
--      iter->ifaddrs = NULL;
--}
--
--static
--void internal_first(isc_interfaceiter_t *iter) {
--
--#ifdef __linux
--      linux_if_inet6_first(iter);
--#endif
--      iter->pos = iter->ifaddrs;
--}
diff --cc lib/isc/win32/include/isc/thread.h
index 78e663f457d2599e5f832583c814aa4911acf04f,78e663f457d2599e5f832583c814aa4911acf04f..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,100 -1,100 +1,0 @@@
--/*
-- * Copyright (C) 2004, 2005, 2007  Internet Systems Consortium, Inc. ("ISC")
-- * Copyright (C) 1998-2001  Internet Software Consortium.
-- *
-- * 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.
-- *
-- * 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: thread.h,v 1.22 2007/06/19 23:47:20 tbox Exp $ */
--
--#ifndef ISC_THREAD_H
--#define ISC_THREAD_H 1
--
--#include <windows.h>
--
--#include <isc/lang.h>
--#include <isc/result.h>
--
--/*
-- * Inlines to help with wait retrun checking
-- */
--
--/* check handle for NULL and INVALID_HANDLE */
--inline BOOL IsValidHandle( HANDLE hHandle) {
--    return ((hHandle != NULL) && (hHandle != INVALID_HANDLE_VALUE));
--}
--
--/* validate wait return codes... */
--inline BOOL WaitSucceeded( DWORD dwWaitResult, DWORD dwHandleCount) {
--    return ((dwWaitResult >= WAIT_OBJECT_0) &&
--            (dwWaitResult < WAIT_OBJECT_0 + dwHandleCount));
--}
--
--inline BOOL WaitAbandoned( DWORD dwWaitResult, DWORD dwHandleCount) {
--    return ((dwWaitResult >= WAIT_ABANDONED_0) &&
--            (dwWaitResult < WAIT_ABANDONED_0 + dwHandleCount));
--}
--
--inline BOOL WaitTimeout( DWORD dwWaitResult) {
--    return (dwWaitResult == WAIT_TIMEOUT);
--}
--    
--inline BOOL WaitFailed( DWORD dwWaitResult) {
--    return (dwWaitResult == WAIT_FAILED);
--}
--
--/* compute object indices for waits... */
--inline DWORD WaitSucceededIndex( DWORD dwWaitResult) {
--    return (dwWaitResult - WAIT_OBJECT_0);
--}
--
--inline DWORD WaitAbandonedIndex( DWORD dwWaitResult) {
--    return (dwWaitResult - WAIT_ABANDONED_0);
--}
--
--
--
--typedef HANDLE isc_thread_t;
--typedef unsigned int isc_threadresult_t;
--typedef void * isc_threadarg_t;
--typedef isc_threadresult_t (WINAPI *isc_threadfunc_t)(isc_threadarg_t);
--typedef DWORD isc_thread_key_t;
--
--#define isc_thread_self (unsigned long)GetCurrentThreadId
--
--ISC_LANG_BEGINDECLS
--
--isc_result_t
--isc_thread_create(isc_threadfunc_t, isc_threadarg_t, isc_thread_t *);
--
--isc_result_t
--isc_thread_join(isc_thread_t, isc_threadresult_t *);
--
--void
--isc_thread_setconcurrency(unsigned int level);
--
--int
--isc_thread_key_create(isc_thread_key_t *key, void (*func)(void *));
--
--int
--isc_thread_key_delete(isc_thread_key_t key);
--
--void *
--isc_thread_key_getspecific(isc_thread_key);
--
--int
--isc_thread_key_setspecific(isc_thread_key_t key, void *value);
--
--ISC_LANG_ENDDECLS
--
--#endif /* ISC_THREAD_H */
diff --cc lib/isc/win32/socket.c
index 459e286f000a2a2d2995233beaf6879d0f4773a3,459e286f000a2a2d2995233beaf6879d0f4773a3..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,3791 -1,3791 +1,0 @@@
--/*
-- * Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
-- * Copyright (C) 2000-2003  Internet Software Consortium.
-- *
-- * 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.
-- *
-- * 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: socket.c,v 1.78 2009/09/02 18:32:25 each Exp $ */
--
--/* This code uses functions which are only available on Server 2003 and
-- * higher, and Windows XP and higher.
-- *
-- * This code is by nature multithreaded and takes advantage of various
-- * features to pass on information through the completion port for
-- * when I/O is completed.  All sends, receives, accepts, and connects are
-- * completed through the completion port.
-- *
-- * The number of Completion Port Worker threads used is the total number
-- * of CPU's + 1. This increases the likelihood that a Worker Thread is
-- * available for processing a completed request.
-- *
-- * XXXPDM 5 August, 2002
-- */
--
--#define MAKE_EXTERNAL 1
--#include <config.h>
--
--#include <sys/types.h>
--
--#ifndef _WINSOCKAPI_
--#define _WINSOCKAPI_   /* Prevent inclusion of winsock.h in windows.h */
--#endif
--
--#include <errno.h>
--#include <stddef.h>
--#include <stdlib.h>
--#include <string.h>
--#include <unistd.h>
--#include <io.h>
--#include <fcntl.h>
--#include <process.h>
--
--#include <isc/buffer.h>
--#include <isc/bufferlist.h>
--#include <isc/condition.h>
--#include <isc/list.h>
--#include <isc/log.h>
--#include <isc/mem.h>
--#include <isc/msgs.h>
--#include <isc/mutex.h>
--#include <isc/net.h>
--#include <isc/once.h>
--#include <isc/os.h>
--#include <isc/platform.h>
--#include <isc/print.h>
--#include <isc/region.h>
--#include <isc/socket.h>
--#include <isc/stats.h>
--#include <isc/strerror.h>
--#include <isc/syslog.h>
--#include <isc/task.h>
--#include <isc/thread.h>
--#include <isc/util.h>
--#include <isc/win32os.h>
--
--#include <mswsock.h>
--
--#include "errno2result.h"
--
--/*
-- * How in the world can Microsoft exist with APIs like this?
-- * We can't actually call this directly, because it turns out
-- * no library exports this function.  Instead, we need to
-- * issue a runtime call to get the address.
-- */
--LPFN_CONNECTEX ISCConnectEx;
--LPFN_ACCEPTEX ISCAcceptEx;
--LPFN_GETACCEPTEXSOCKADDRS ISCGetAcceptExSockaddrs;
--
--/*
-- * Run expensive internal consistency checks.
-- */
--#ifdef ISC_SOCKET_CONSISTENCY_CHECKS
--#define CONSISTENT(sock) consistent(sock)
--#else
--#define CONSISTENT(sock) do {} while (0)
--#endif
--static void consistent(isc_socket_t *sock);
--
--/*
-- * Define this macro to control the behavior of connection
-- * resets on UDP sockets.  See Microsoft KnowledgeBase Article Q263823
-- * for details.
-- * NOTE: This requires that Windows 2000 systems install Service Pack 2
-- * or later.
-- */
--#ifndef SIO_UDP_CONNRESET
--#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)
--#endif
--
--/*
-- * Some systems define the socket length argument as an int, some as size_t,
-- * some as socklen_t.  This is here so it can be easily changed if needed.
-- */
--#ifndef ISC_SOCKADDR_LEN_T
--#define ISC_SOCKADDR_LEN_T unsigned int
--#endif
--
--/*
-- * Define what the possible "soft" errors can be.  These are non-fatal returns
-- * of various network related functions, like recv() and so on.
-- */
--#define SOFT_ERROR(e) ((e) == WSAEINTR || \
--                       (e) == WSAEWOULDBLOCK || \
--                       (e) == EWOULDBLOCK || \
--                       (e) == EINTR || \
--                       (e) == EAGAIN || \
--                       (e) == 0)
--
--/*
-- * Pending errors are not really errors and should be
-- * kept separate
-- */
--#define PENDING_ERROR(e) ((e) == WSA_IO_PENDING || (e) == 0)
--
--#define DOIO_SUCCESS    0       /* i/o ok, event sent */
--#define DOIO_SOFT       1       /* i/o ok, soft error, no event sent */
--#define DOIO_HARD       2       /* i/o error, event sent */
--#define DOIO_EOF        3       /* EOF, no event sent */
--#define DOIO_PENDING    4       /* status when i/o is in process */
--#define DOIO_NEEDMORE   5       /* IO was processed, but we need more due to minimum */
--
--#define DLVL(x) ISC_LOGCATEGORY_GENERAL, ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(x)
--
--/*
-- * DLVL(90)  --  Function entry/exit and other tracing.
-- * DLVL(70)  --  Socket "correctness" -- including returning of events, etc.
-- * DLVL(60)  --  Socket data send/receive
-- * DLVL(50)  --  Event tracing, including receiving/sending completion events.
-- * DLVL(20)  --  Socket creation/destruction.
-- */
--#define TRACE_LEVEL           90
--#define CORRECTNESS_LEVEL     70
--#define IOEVENT_LEVEL         60
--#define EVENT_LEVEL           50
--#define CREATION_LEVEL                20
--
--#define TRACE         DLVL(TRACE_LEVEL)
--#define CORRECTNESS   DLVL(CORRECTNESS_LEVEL)
--#define IOEVENT               DLVL(IOEVENT_LEVEL)
--#define EVENT         DLVL(EVENT_LEVEL)
--#define CREATION      DLVL(CREATION_LEVEL)
--
--typedef isc_event_t intev_t;
--
--/*
-- * Socket State
-- */
--enum {
--  SOCK_INITIALIZED,   /* Socket Initialized */
--  SOCK_OPEN,          /* Socket opened but nothing yet to do */
--  SOCK_DATA,          /* Socket sending or receiving data */
--  SOCK_LISTEN,                /* TCP Socket listening for connects */
--  SOCK_ACCEPT,                /* TCP socket is waiting to accept */
--  SOCK_CONNECT,               /* TCP Socket connecting */
--  SOCK_CLOSED,                /* Socket has been closed */
--};
--
--#define SOCKET_MAGIC          ISC_MAGIC('I', 'O', 'i', 'o')
--#define VALID_SOCKET(t)               ISC_MAGIC_VALID(t, SOCKET_MAGIC)
--
--/*
-- * IPv6 control information.  If the socket is an IPv6 socket we want
-- * to collect the destination address and interface so the client can
-- * set them on outgoing packets.
-- */
--#ifdef ISC_PLATFORM_HAVEIPV6
--#ifndef USE_CMSG
--#define USE_CMSG      1
--#endif
--#endif
--
--/*
-- * We really  don't want to try and use these control messages. Win32
-- * doesn't have this mechanism before XP.
-- */
--#undef USE_CMSG
--
--/*
-- * Message header for recvmsg and sendmsg calls.
-- * Used value-result for recvmsg, value only for sendmsg.
-- */
--struct msghdr {
--      SOCKADDR_STORAGE to_addr;       /* UDP send/recv address */
--      int      to_addr_len;           /* length of the address */
--      WSABUF  *msg_iov;               /* scatter/gather array */
--      u_int   msg_iovlen;             /* # elements in msg_iov */
--      void    *msg_control;           /* ancillary data, see below */
--      u_int   msg_controllen;         /* ancillary data buffer len */
--      int     msg_totallen;           /* total length of this message */
--} msghdr;
--
--/*
-- * The size to raise the receive buffer to.
-- */
--#define RCVBUFSIZE (32*1024)
--
--/*
-- * The number of times a send operation is repeated if the result
-- * is WSAEINTR.
-- */
--#define NRETRIES 10
--
--struct isc_socket {
--      /* Not locked. */
--      unsigned int            magic;
--      isc_socketmgr_t        *manager;
--      isc_mutex_t             lock;
--      isc_sockettype_t        type;
--
--      /* Pointers to scatter/gather buffers */
--      WSABUF                  iov[ISC_SOCKET_MAXSCATTERGATHER];
--
--      /* Locked by socket lock. */
--      ISC_LINK(isc_socket_t)  link;
--      unsigned int            references; /* EXTERNAL references */
--      SOCKET                  fd;     /* file handle */
--      int                     pf;     /* protocol family */
--      char                    name[16];
--      void *                  tag;
--
--      /*
--       * Each recv() call uses this buffer.  It is a per-socket receive
--       * buffer that allows us to decouple the system recv() from the
--       * recv_list done events.  This means the items on the recv_list
--       * can be removed without having to cancel pending system recv()
--       * calls.  It also allows us to read-ahead in some cases.
--       */
--      struct {
--              SOCKADDR_STORAGE        from_addr;         // UDP send/recv address
--              int             from_addr_len;     // length of the address
--              char            *base;             // the base of the buffer
--              char            *consume_position; // where to start copying data from next
--              unsigned int    len;               // the actual size of this buffer
--              unsigned int    remaining;         // the number of bytes remaining
--      } recvbuf;
--
--      ISC_LIST(isc_socketevent_t)             send_list;
--      ISC_LIST(isc_socketevent_t)             recv_list;
--      ISC_LIST(isc_socket_newconnev_t)        accept_list;
--      isc_socket_connev_t                    *connect_ev;
--
--      isc_sockaddr_t          address;  /* remote address */
--
--      unsigned int            listener : 1,   /* listener socket */
--                              connected : 1,
--                              pending_connect : 1, /* connect pending */
--                              bound : 1;      /* bound to local addr */
--      unsigned int            pending_iocp;   /* Should equal the counters below. Debug. */
--      unsigned int            pending_recv;  /* Number of outstanding recv() calls. */
--      unsigned int            pending_send;  /* Number of outstanding send() calls. */
--      unsigned int            pending_accept; /* Number of outstanding accept() calls. */
--      unsigned int            state; /* Socket state. Debugging and consistency checking. */
--      int                     state_lineno;  /* line which last touched state */
--};
--
--#define _set_state(sock, _state) do { (sock)->state = (_state); (sock)->state_lineno = __LINE__; } while (0)
--
--/*
-- * Buffer structure
-- */
--typedef struct buflist buflist_t;
--
--struct buflist {
--      void                    *buf;
--      unsigned int            buflen;
--      ISC_LINK(buflist_t)     link;
--};
--
--/*
-- * I/O Completion ports Info structures
-- */
--
--static HANDLE hHeapHandle = NULL;
--typedef struct IoCompletionInfo {
--      OVERLAPPED              overlapped;
--      isc_socketevent_t       *dev;  /* send()/recv() done event */
--      isc_socket_connev_t     *cdev; /* connect() done event */
--      isc_socket_newconnev_t  *adev; /* accept() done event */
--      void                    *acceptbuffer;
--      DWORD                   received_bytes;
--      int                     request_type;
--      struct msghdr           messagehdr;
--      ISC_LIST(buflist_t)     bufferlist;     /*%< list of buffers */
--} IoCompletionInfo;
--
--/*
-- * Define a maximum number of I/O Completion Port worker threads
-- * to handle the load on the Completion Port. The actual number
-- * used is the number of CPU's + 1.
-- */
--#define MAX_IOCPTHREADS 20
--
--#define SOCKET_MANAGER_MAGIC  ISC_MAGIC('I', 'O', 'm', 'g')
--#define VALID_MANAGER(m)      ISC_MAGIC_VALID(m, SOCKET_MANAGER_MAGIC)
--
--struct isc_socketmgr {
--      /* Not locked. */
--      unsigned int                    magic;
--      isc_mem_t                      *mctx;
--      isc_mutex_t                     lock;
--      isc_stats_t                    *stats;
--
--      /* Locked by manager lock. */
--      ISC_LIST(isc_socket_t)          socklist;
--      isc_boolean_t                   bShutdown;
--      isc_condition_t                 shutdown_ok;
--      HANDLE                          hIoCompletionPort;
--      int                             maxIOCPThreads;
--      HANDLE                          hIOCPThreads[MAX_IOCPTHREADS];
--      DWORD                           dwIOCPThreadIds[MAX_IOCPTHREADS];
--
--      /*
--       * Debugging.
--       * Modified by InterlockedIncrement() and InterlockedDecrement()
--       */
--      LONG                            totalSockets;
--      LONG                            iocp_total;
--};
--
--enum {
--      SOCKET_RECV,
--      SOCKET_SEND,
--      SOCKET_ACCEPT,
--      SOCKET_CONNECT
--};
--
--/*
-- * send() and recv() iovec counts
-- */
--#define MAXSCATTERGATHER_SEND (ISC_SOCKET_MAXSCATTERGATHER)
--#define MAXSCATTERGATHER_RECV (ISC_SOCKET_MAXSCATTERGATHER)
--
--static isc_threadresult_t WINAPI SocketIoThread(LPVOID ThreadContext);
--static void maybe_free_socket(isc_socket_t **, int);
--static void free_socket(isc_socket_t **, int);
--static isc_boolean_t senddone_is_active(isc_socket_t *sock, isc_socketevent_t *dev);
--static isc_boolean_t acceptdone_is_active(isc_socket_t *sock, isc_socket_newconnev_t *dev);
--static isc_boolean_t connectdone_is_active(isc_socket_t *sock, isc_socket_connev_t *dev);
--static void send_recvdone_event(isc_socket_t *sock, isc_socketevent_t **dev);
--static void send_senddone_event(isc_socket_t *sock, isc_socketevent_t **dev);
--static void send_acceptdone_event(isc_socket_t *sock, isc_socket_newconnev_t **adev);
--static void send_connectdone_event(isc_socket_t *sock, isc_socket_connev_t **cdev);
--static void send_recvdone_abort(isc_socket_t *sock, isc_result_t result);
--static void queue_receive_event(isc_socket_t *sock, isc_task_t *task, isc_socketevent_t *dev);
--static void queue_receive_request(isc_socket_t *sock);
--
--/*
-- * This is used to dump the contents of the sock structure
-- * You should make sure that the sock is locked before
-- * dumping it. Since the code uses simple printf() statements
-- * it should only be used interactively.
-- */
--void
--sock_dump(isc_socket_t *sock) {
--      isc_socketevent_t *ldev;
--      isc_socket_newconnev_t *ndev;
--
--#if 0
--      isc_sockaddr_t addr;
--      char socktext[256];
--
--      isc_socket_getpeername(sock, &addr);
--      isc_sockaddr_format(&addr, socktext, sizeof(socktext));
--      printf("Remote Socket: %s\n", socktext);
--      isc_socket_getsockname(sock, &addr);
--      isc_sockaddr_format(&addr, socktext, sizeof(socktext));
--      printf("This Socket: %s\n", socktext);
--#endif
--
--      printf("\n\t\tSock Dump\n");
--      printf("\t\tfd: %u\n", sock->fd);
--      printf("\t\treferences: %d\n", sock->references);
--      printf("\t\tpending_accept: %d\n", sock->pending_accept);
--      printf("\t\tconnecting: %d\n", sock->pending_connect);
--      printf("\t\tconnected: %d\n", sock->connected);
--      printf("\t\tbound: %d\n", sock->bound);
--      printf("\t\tpending_iocp: %d\n", sock->pending_iocp);
--      printf("\t\tsocket type: %d\n", sock->type);
--
--      printf("\n\t\tSock Recv List\n");
--      ldev = ISC_LIST_HEAD(sock->recv_list);
--      while (ldev != NULL) {
--              printf("\t\tdev: %p\n", ldev);
--              ldev = ISC_LIST_NEXT(ldev, ev_link);
--      }
--
--      printf("\n\t\tSock Send List\n");
--      ldev = ISC_LIST_HEAD(sock->send_list);
--      while (ldev != NULL) {
--              printf("\t\tdev: %p\n", ldev);
--              ldev = ISC_LIST_NEXT(ldev, ev_link);
--      }
--
--      printf("\n\t\tSock Accept List\n");
--      ndev = ISC_LIST_HEAD(sock->accept_list);
--      while (ndev != NULL) {
--              printf("\t\tdev: %p\n", ldev);
--              ndev = ISC_LIST_NEXT(ndev, ev_link);
--      }
--}
--
--static void
--socket_log(int lineno, isc_socket_t *sock, isc_sockaddr_t *address,
--         isc_logcategory_t *category, isc_logmodule_t *module, int level,
--         isc_msgcat_t *msgcat, int msgset, int message,
--         const char *fmt, ...) ISC_FORMAT_PRINTF(9, 10);
--
--/*  This function will add an entry to the I/O completion port
-- *  that will signal the I/O thread to exit (gracefully)
-- */
--static void
--signal_iocompletionport_exit(isc_socketmgr_t *manager) {
--      int i;
--      int errval;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_MANAGER(manager));
--      for (i = 0; i < manager->maxIOCPThreads; i++) {
--              if (!PostQueuedCompletionStatus(manager->hIoCompletionPort,
--                                              0, 0, 0)) {
--                      errval = GetLastError();
--                      isc__strerror(errval, strbuf, sizeof(strbuf));
--                      FATAL_ERROR(__FILE__, __LINE__,
--                              isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_FAILED,
--                              "Can't request service thread to exit: %s"),
--                              strbuf);
--              }
--      }
--}
--
--/*
-- * Create the worker threads for the I/O Completion Port
-- */
--void
--iocompletionport_createthreads(int total_threads, isc_socketmgr_t *manager) {
--      int errval;
--      char strbuf[ISC_STRERRORSIZE];
--      int i;
--
--      INSIST(total_threads > 0);
--      REQUIRE(VALID_MANAGER(manager));
--      /*
--       * We need at least one
--       */
--      for (i = 0; i < total_threads; i++) {
--              manager->hIOCPThreads[i] = CreateThread(NULL, 0, SocketIoThread,
--                                              manager, 0,
--                                              &manager->dwIOCPThreadIds[i]);
--              if (manager->hIOCPThreads[i] == NULL) {
--                      errval = GetLastError();
--                      isc__strerror(errval, strbuf, sizeof(strbuf));
--                      FATAL_ERROR(__FILE__, __LINE__,
--                              isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_FAILED,
--                              "Can't create IOCP thread: %s"),
--                              strbuf);
--                      exit(1);
--              }
--      }
--}
--
--/*
-- *  Create/initialise the I/O completion port
-- */
--void
--iocompletionport_init(isc_socketmgr_t *manager) {
--      int errval;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_MANAGER(manager));
--      /*
--       * Create a private heap to handle the socket overlapped structure
--       * The minimum number of structures is 10, there is no maximum
--       */
--      hHeapHandle = HeapCreate(0, 10 * sizeof(IoCompletionInfo), 0);
--      if (hHeapHandle == NULL) {
--              errval = GetLastError();
--              isc__strerror(errval, strbuf, sizeof(strbuf));
--              FATAL_ERROR(__FILE__, __LINE__,
--                          isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                                         ISC_MSG_FAILED,
--                                         "HeapCreate() failed during "
--                                         "initialization: %s"),
--                          strbuf);
--              exit(1);
--      }
--
--      manager->maxIOCPThreads = min(isc_os_ncpus() + 1, MAX_IOCPTHREADS);
--
--      /* Now Create the Completion Port */
--      manager->hIoCompletionPort = CreateIoCompletionPort(
--                      INVALID_HANDLE_VALUE, NULL,
--                      0, manager->maxIOCPThreads);
--      if (manager->hIoCompletionPort == NULL) {
--              errval = GetLastError();
--              isc__strerror(errval, strbuf, sizeof(strbuf));
--              FATAL_ERROR(__FILE__, __LINE__,
--                              isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_FAILED,
--                              "CreateIoCompletionPort() failed "
--                              "during initialization: %s"),
--                              strbuf);
--              exit(1);
--      }
--
--      /*
--       * Worker threads for servicing the I/O
--       */
--      iocompletionport_createthreads(manager->maxIOCPThreads, manager);
--}
--
--/*
-- * Associate a socket with an IO Completion Port.  This allows us to queue events for it
-- * and have our worker pool of threads process them.
-- */
--void
--iocompletionport_update(isc_socket_t *sock) {
--      HANDLE hiocp;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      hiocp = CreateIoCompletionPort((HANDLE)sock->fd,
--              sock->manager->hIoCompletionPort, (ULONG_PTR)sock, 0);
--
--      if (hiocp == NULL) {
--              DWORD errval = GetLastError();
--              isc__strerror(errval, strbuf, sizeof(strbuf));
--              isc_log_iwrite(isc_lctx,
--                              ISC_LOGCATEGORY_GENERAL,
--                              ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
--                              isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_TOOMANYHANDLES,
--                              "iocompletionport_update: failed to open"
--                              " io completion port: %s",
--                              strbuf);
--
--              /* XXXMLG temporary hack to make failures detected.
--               * This function should return errors to the caller, not
--               * exit here.
--               */
--              FATAL_ERROR(__FILE__, __LINE__,
--                              isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_FAILED,
--                              "CreateIoCompletionPort() failed "
--                              "during initialization: %s"),
--                              strbuf);
--              exit(1);
--      }
--
--      InterlockedIncrement(&sock->manager->iocp_total);
--}
--
--/*
-- * Routine to cleanup and then close the socket.
-- * Only close the socket here if it is NOT associated
-- * with an event, otherwise the WSAWaitForMultipleEvents
-- * may fail due to the fact that the Wait should not
-- * be running while closing an event or a socket.
-- * The socket is locked before calling this function
-- */
--void
--socket_close(isc_socket_t *sock) {
--
--      REQUIRE(sock != NULL);
--
--      if (sock->fd != INVALID_SOCKET) {
--              closesocket(sock->fd);
--              sock->fd = INVALID_SOCKET;
--              _set_state(sock, SOCK_CLOSED);
--              InterlockedDecrement(&sock->manager->totalSockets);
--      }
--}
--
--static isc_once_t initialise_once = ISC_ONCE_INIT;
--static isc_boolean_t initialised = ISC_FALSE;
--
--static void
--initialise(void) {
--      WORD wVersionRequested;
--      WSADATA wsaData;
--      int err;
--      SOCKET sock;
--      GUID GUIDConnectEx = WSAID_CONNECTEX;
--      GUID GUIDAcceptEx = WSAID_ACCEPTEX;
--      GUID GUIDGetAcceptExSockaddrs = WSAID_GETACCEPTEXSOCKADDRS;
--      DWORD dwBytes;
--
--      /* Need Winsock 2.2 or better */
--      wVersionRequested = MAKEWORD(2, 2);
--
--      err = WSAStartup(wVersionRequested, &wsaData);
--      if (err != 0) {
--              char strbuf[ISC_STRERRORSIZE];
--              isc__strerror(err, strbuf, sizeof(strbuf));
--              FATAL_ERROR(__FILE__, __LINE__, "WSAStartup() %s: %s",
--                          isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                         ISC_MSG_FAILED, "failed"),
--                          strbuf);
--              exit(1);
--      }
--      /*
--       * The following APIs do not exist as functions in a library, but we must
--       * ask winsock for them.  They are "extensions" -- but why they cannot be
--       * actual functions is beyond me.  So, ask winsock for the pointers to the
--       * functions we need.
--       */
--      sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
--      INSIST(sock != INVALID_SOCKET);
--      err = WSAIoctl(sock,  SIO_GET_EXTENSION_FUNCTION_POINTER,
--               &GUIDConnectEx, sizeof(GUIDConnectEx),
--               &ISCConnectEx, sizeof(ISCConnectEx),
--               &dwBytes, NULL, NULL);
--      INSIST(err == 0);
--
--      err = WSAIoctl(sock,  SIO_GET_EXTENSION_FUNCTION_POINTER,
--               &GUIDAcceptEx, sizeof(GUIDAcceptEx),
--               &ISCAcceptEx, sizeof(ISCAcceptEx),
--               &dwBytes, NULL, NULL);
--      INSIST(err == 0);
--
--      err = WSAIoctl(sock,  SIO_GET_EXTENSION_FUNCTION_POINTER,
--               &GUIDGetAcceptExSockaddrs, sizeof(GUIDGetAcceptExSockaddrs),
--               &ISCGetAcceptExSockaddrs, sizeof(ISCGetAcceptExSockaddrs),
--               &dwBytes, NULL, NULL);
--      INSIST(err == 0);
--
--      closesocket(sock);
--
--      initialised = ISC_TRUE;
--}
--
--/*
-- * Initialize socket services
-- */
--void
--InitSockets(void) {
--      RUNTIME_CHECK(isc_once_do(&initialise_once,
--                                initialise) == ISC_R_SUCCESS);
--      if (!initialised)
--              exit(1);
--}
--
--int
--internal_sendmsg(isc_socket_t *sock, IoCompletionInfo *lpo,
--               struct msghdr *messagehdr, int flags, int *Error)
--{
--      int Result;
--      DWORD BytesSent;
--      DWORD Flags = flags;
--      int total_sent;
--
--      *Error = 0;
--      Result = WSASendTo(sock->fd, messagehdr->msg_iov,
--                         messagehdr->msg_iovlen, &BytesSent,
--                         Flags, (SOCKADDR *)&messagehdr->to_addr,
--                         messagehdr->to_addr_len, (LPWSAOVERLAPPED)lpo,
--                         NULL);
--
--      total_sent = (int)BytesSent;
--
--      /* Check for errors.*/
--      if (Result == SOCKET_ERROR) {
--              *Error = WSAGetLastError();
--
--              switch (*Error) {
--              case WSA_IO_INCOMPLETE:
--              case WSA_WAIT_IO_COMPLETION:
--              case WSA_IO_PENDING:
--              case NO_ERROR:          /* Strange, but okay */
--                      sock->pending_iocp++;
--                      sock->pending_send++;
--                      break;
--
--              default:
--                      return (-1);
--                      break;
--              }
--      } else {
--              sock->pending_iocp++;
--              sock->pending_send++;
--      }
--
--      if (lpo != NULL)
--              return (0);
--      else
--              return (total_sent);
--}
--
--static void
--queue_receive_request(isc_socket_t *sock) {
--      DWORD Flags = 0;
--      DWORD NumBytes = 0;
--      int total_bytes = 0;
--      int Result;
--      int Error;
--      WSABUF iov[1];
--      IoCompletionInfo *lpo;
--      isc_result_t isc_result;
--
--      /*
--       * If we already have a receive pending, do nothing.
--       */
--      if (sock->pending_recv > 0)
--              return;
--
--      /*
--       * If no one is waiting, do nothing.
--       */
--      if (ISC_LIST_EMPTY(sock->recv_list))
--              return;
--
--      INSIST(sock->recvbuf.remaining == 0);
--      INSIST(sock->fd != INVALID_SOCKET);
--
--      iov[0].len = sock->recvbuf.len;
--      iov[0].buf = sock->recvbuf.base;
--
--      lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
--                                          HEAP_ZERO_MEMORY,
--                                          sizeof(IoCompletionInfo));
--      RUNTIME_CHECK(lpo != NULL);
--      lpo->request_type = SOCKET_RECV;
--
--      sock->recvbuf.from_addr_len = sizeof(sock->recvbuf.from_addr);
--
--      Error = 0;
--      Result = WSARecvFrom((SOCKET)sock->fd, iov, 1,
--                           &NumBytes, &Flags,
--                           (SOCKADDR *)&sock->recvbuf.from_addr,
--                           &sock->recvbuf.from_addr_len,
--                           (LPWSAOVERLAPPED)lpo, NULL);
--
--      /* Check for errors. */
--      if (Result == SOCKET_ERROR) {
--              Error = WSAGetLastError();
--
--              switch (Error) {
--              case WSA_IO_PENDING:
--                      sock->pending_iocp++;
--                      sock->pending_recv++;
--                      break;
--
--              default:
--                      isc_result = isc__errno2result(Error);
--                      if (isc_result == ISC_R_UNEXPECTED)
--                              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                      "WSARecvFrom: Windows error code: %d, isc result %d",
--                                      Error, isc_result);
--                      send_recvdone_abort(sock, isc_result);
--                      break;
--              }
--      } else {
--              /*
--               * The recv() finished immediately, but we will still get
--               * a completion event.  Rather than duplicate code, let
--               * that thread handle sending the data along its way.
--               */
--              sock->pending_iocp++;
--              sock->pending_recv++;
--      }
--
--      socket_log(__LINE__, sock, NULL, IOEVENT,
--                 isc_msgcat, ISC_MSGSET_SOCKET,
--                 ISC_MSG_DOIORECV,
--                 "queue_io_request: fd %d result %d error %d",
--                 sock->fd, Result, Error);
--
--      CONSISTENT(sock);
--}
--
--static void
--manager_log(isc_socketmgr_t *sockmgr, isc_logcategory_t *category,
--          isc_logmodule_t *module, int level, const char *fmt, ...)
--{
--      char msgbuf[2048];
--      va_list ap;
--
--      if (!isc_log_wouldlog(isc_lctx, level))
--              return;
--
--      va_start(ap, fmt);
--      vsnprintf(msgbuf, sizeof(msgbuf), fmt, ap);
--      va_end(ap);
--
--      isc_log_write(isc_lctx, category, module, level,
--                    "sockmgr %p: %s", sockmgr, msgbuf);
--}
--
--static void
--socket_log(int lineno, isc_socket_t *sock, isc_sockaddr_t *address,
--         isc_logcategory_t *category, isc_logmodule_t *module, int level,
--         isc_msgcat_t *msgcat, int msgset, int message,
--         const char *fmt, ...)
--{
--      char msgbuf[2048];
--      char peerbuf[256];
--      va_list ap;
--
--
--      if (!isc_log_wouldlog(isc_lctx, level))
--              return;
--
--      va_start(ap, fmt);
--      vsnprintf(msgbuf, sizeof(msgbuf), fmt, ap);
--      va_end(ap);
--
--      if (address == NULL) {
--              isc_log_iwrite(isc_lctx, category, module, level,
--                             msgcat, msgset, message,
--                             "socket %p line %d: %s", sock, lineno, msgbuf);
--      } else {
--              isc_sockaddr_format(address, peerbuf, sizeof(peerbuf));
--              isc_log_iwrite(isc_lctx, category, module, level,
--                             msgcat, msgset, message,
--                                 "socket %p line %d peer %s: %s", sock, lineno,
--                                 peerbuf, msgbuf);
--      }
--
--}
--
--/*
-- * Make an fd SOCKET non-blocking.
-- */
--static isc_result_t
--make_nonblock(SOCKET fd) {
--      int ret;
--      unsigned long flags = 1;
--      char strbuf[ISC_STRERRORSIZE];
--
--      /* Set the socket to non-blocking */
--      ret = ioctlsocket(fd, FIONBIO, &flags);
--
--      if (ret == -1) {
--              isc__strerror(errno, strbuf, sizeof(strbuf));
--              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               "ioctlsocket(%d, FIOBIO, %d): %s",
--                               fd, flags, strbuf);
--
--              return (ISC_R_UNEXPECTED);
--      }
--
--      return (ISC_R_SUCCESS);
--}
--
--/*
-- * Windows 2000 systems incorrectly cause UDP sockets using WASRecvFrom
-- * to not work correctly, returning a WSACONNRESET error when a WSASendTo
-- * fails with an "ICMP port unreachable" response and preventing the
-- * socket from using the WSARecvFrom in subsequent operations.
-- * The function below fixes this, but requires that Windows 2000
-- * Service Pack 2 or later be installed on the system.  NT 4.0
-- * systems are not affected by this and work correctly.
-- * See Microsoft Knowledge Base Article Q263823 for details of this.
-- */
--isc_result_t
--connection_reset_fix(SOCKET fd) {
--      DWORD dwBytesReturned = 0;
--      BOOL  bNewBehavior = FALSE;
--      DWORD status;
--
--      if (isc_win32os_majorversion() < 5)
--              return (ISC_R_SUCCESS); /*  NT 4.0 has no problem */
--
--      /* disable bad behavior using IOCTL: SIO_UDP_CONNRESET */
--      status = WSAIoctl(fd, SIO_UDP_CONNRESET, &bNewBehavior,
--                        sizeof(bNewBehavior), NULL, 0,
--                        &dwBytesReturned, NULL, NULL);
--      if (status != SOCKET_ERROR)
--              return (ISC_R_SUCCESS);
--      else {
--              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               "WSAIoctl(SIO_UDP_CONNRESET, oldBehaviour) %s",
--                               isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                              ISC_MSG_FAILED, "failed"));
--              return (ISC_R_UNEXPECTED);
--      }
--}
--
--/*
-- * Construct an iov array and attach it to the msghdr passed in.  This is
-- * the SEND constructor, which will use the used region of the buffer
-- * (if using a buffer list) or will use the internal region (if a single
-- * buffer I/O is requested).
-- *
-- * Nothing can be NULL, and the done event must list at least one buffer
-- * on the buffer linked list for this function to be meaningful.
-- */
--static void
--build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev,
--                struct msghdr *msg, char *cmsg, WSABUF *iov,
--                IoCompletionInfo  *lpo)
--{
--      unsigned int iovcount;
--      isc_buffer_t *buffer;
--      buflist_t  *cpbuffer;
--      isc_region_t used;
--      size_t write_count;
--      size_t skip_count;
--
--      memset(msg, 0, sizeof(*msg));
--
--      memcpy(&msg->to_addr, &dev->address.type, dev->address.length);
--      msg->to_addr_len = dev->address.length;
--
--      buffer = ISC_LIST_HEAD(dev->bufferlist);
--      write_count = 0;
--      iovcount = 0;
--
--      /*
--       * Single buffer I/O?  Skip what we've done so far in this region.
--       */
--      if (buffer == NULL) {
--              write_count = dev->region.length - dev->n;
--              cpbuffer = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, sizeof(buflist_t));
--              RUNTIME_CHECK(cpbuffer != NULL);
--              cpbuffer->buf = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, write_count);
--              RUNTIME_CHECK(cpbuffer->buf != NULL);
--
--              socket_log(__LINE__, sock, NULL, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
--                 "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t),
--                 cpbuffer->buf, write_count);
--
--              memcpy(cpbuffer->buf,(dev->region.base + dev->n), write_count);
--              cpbuffer->buflen = write_count;
--              ISC_LIST_ENQUEUE(lpo->bufferlist, cpbuffer, link);
--              iov[0].buf = cpbuffer->buf;
--              iov[0].len = write_count;
--              iovcount = 1;
--
--              goto config;
--      }
--
--      /*
--       * Multibuffer I/O.
--       * Skip the data in the buffer list that we have already written.
--       */
--      skip_count = dev->n;
--      while (buffer != NULL) {
--              REQUIRE(ISC_BUFFER_VALID(buffer));
--              if (skip_count < isc_buffer_usedlength(buffer))
--                      break;
--              skip_count -= isc_buffer_usedlength(buffer);
--              buffer = ISC_LIST_NEXT(buffer, link);
--      }
--
--      while (buffer != NULL) {
--              INSIST(iovcount < MAXSCATTERGATHER_SEND);
--
--              isc_buffer_usedregion(buffer, &used);
--
--              if (used.length > 0) {
--                      int uselen = used.length - skip_count;
--                      cpbuffer = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, sizeof(buflist_t));
--                      RUNTIME_CHECK(cpbuffer != NULL);
--                      cpbuffer->buf = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, uselen);
--                      RUNTIME_CHECK(cpbuffer->buf != NULL);
--
--                      socket_log(__LINE__, sock, NULL, TRACE,
--                         isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
--                         "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t),
--                         cpbuffer->buf, write_count);
--
--                      memcpy(cpbuffer->buf,(used.base + skip_count), uselen);
--                      cpbuffer->buflen = uselen;
--                      iov[iovcount].buf = cpbuffer->buf;
--                      iov[iovcount].len = used.length - skip_count;
--                      write_count += uselen;
--                      skip_count = 0;
--                      iovcount++;
--              }
--              buffer = ISC_LIST_NEXT(buffer, link);
--      }
--
--      INSIST(skip_count == 0);
--
-- config:
--      msg->msg_iov = iov;
--      msg->msg_iovlen = iovcount;
--      msg->msg_totallen = write_count;
--}
--
--static void
--set_dev_address(isc_sockaddr_t *address, isc_socket_t *sock,
--              isc_socketevent_t *dev)
--{
--      if (sock->type == isc_sockettype_udp) {
--              if (address != NULL)
--                      dev->address = *address;
--              else
--                      dev->address = sock->address;
--      } else if (sock->type == isc_sockettype_tcp) {
--              INSIST(address == NULL);
--              dev->address = sock->address;
--      }
--}
--
--static void
--destroy_socketevent(isc_event_t *event) {
--      isc_socketevent_t *ev = (isc_socketevent_t *)event;
--
--      INSIST(ISC_LIST_EMPTY(ev->bufferlist));
--
--      (ev->destroy)(event);
--}
--
--static isc_socketevent_t *
--allocate_socketevent(isc_socket_t *sock, isc_eventtype_t eventtype,
--                   isc_taskaction_t action, const void *arg)
--{
--      isc_socketevent_t *ev;
--
--      ev = (isc_socketevent_t *)isc_event_allocate(sock->manager->mctx,
--                                                   sock, eventtype,
--                                                   action, arg,
--                                                   sizeof(*ev));
--      if (ev == NULL)
--              return (NULL);
--
--      ev->result = ISC_R_IOERROR; // XXXMLG temporary change to detect failure to set
--      ISC_LINK_INIT(ev, ev_link);
--      ISC_LIST_INIT(ev->bufferlist);
--      ev->region.base = NULL;
--      ev->n = 0;
--      ev->offset = 0;
--      ev->attributes = 0;
--      ev->destroy = ev->ev_destroy;
--      ev->ev_destroy = destroy_socketevent;
--
--      return (ev);
--}
--
--#if defined(ISC_SOCKET_DEBUG)
--static void
--dump_msg(struct msghdr *msg, isc_socket_t *sock) {
--      unsigned int i;
--
--      printf("MSGHDR %p, Socket #: %u\n", msg, sock->fd);
--      printf("\tname %p, namelen %d\n", msg->msg_name, msg->msg_namelen);
--      printf("\tiov %p, iovlen %d\n", msg->msg_iov, msg->msg_iovlen);
--      for (i = 0; i < (unsigned int)msg->msg_iovlen; i++)
--              printf("\t\t%d\tbase %p, len %d\n", i,
--                     msg->msg_iov[i].buf,
--                     msg->msg_iov[i].len);
--}
--#endif
--
--/*
-- * map the error code
-- */
--int
--map_socket_error(isc_socket_t *sock, int windows_errno, int *isc_errno,
--               char *errorstring, size_t bufsize) {
--
--      int doreturn;
--      switch (windows_errno) {
--      case WSAECONNREFUSED:
--              *isc_errno = ISC_R_CONNREFUSED;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAENETUNREACH:
--      case ERROR_NETWORK_UNREACHABLE:
--              *isc_errno = ISC_R_NETUNREACH;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case ERROR_PORT_UNREACHABLE:
--      case ERROR_HOST_UNREACHABLE:
--      case WSAEHOSTUNREACH:
--              *isc_errno = ISC_R_HOSTUNREACH;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAENETDOWN:
--              *isc_errno = ISC_R_NETDOWN;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAEHOSTDOWN:
--              *isc_errno = ISC_R_HOSTDOWN;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAEACCES:
--              *isc_errno = ISC_R_NOPERM;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAECONNRESET:
--      case WSAENETRESET:
--      case WSAECONNABORTED:
--      case WSAEDISCON:
--              *isc_errno = ISC_R_CONNECTIONRESET;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case WSAENOTCONN:
--              *isc_errno = ISC_R_NOTCONNECTED;
--              if (sock->connected)
--                      doreturn = DOIO_HARD;
--              else
--                      doreturn = DOIO_SOFT;
--              break;
--      case ERROR_OPERATION_ABORTED:
--      case ERROR_CONNECTION_ABORTED:
--      case ERROR_REQUEST_ABORTED:
--              *isc_errno = ISC_R_CONNECTIONRESET;
--              doreturn = DOIO_HARD;
--              break;
--      case WSAENOBUFS:
--              *isc_errno = ISC_R_NORESOURCES;
--              doreturn = DOIO_HARD;
--              break;
--      case WSAEAFNOSUPPORT:
--              *isc_errno = ISC_R_FAMILYNOSUPPORT;
--              doreturn = DOIO_HARD;
--              break;
--      case WSAEADDRNOTAVAIL:
--              *isc_errno = ISC_R_ADDRNOTAVAIL;
--              doreturn = DOIO_HARD;
--              break;
--      case WSAEDESTADDRREQ:
--              *isc_errno = ISC_R_BADADDRESSFORM;
--              doreturn = DOIO_HARD;
--              break;
--      case ERROR_NETNAME_DELETED:
--              *isc_errno = ISC_R_NETDOWN;
--              doreturn = DOIO_HARD;
--              break;
--      default:
--              *isc_errno = ISC_R_IOERROR;
--              doreturn = DOIO_HARD;
--              break;
--      }
--      if (doreturn == DOIO_HARD) {
--              isc__strerror(windows_errno, errorstring, bufsize);
--      }
--      return (doreturn);
--}
--
--static void
--fill_recv(isc_socket_t *sock, isc_socketevent_t *dev) {
--      isc_region_t r;
--      int copylen;
--      isc_buffer_t *buffer;
--
--      INSIST(dev->n < dev->minimum);
--      INSIST(sock->recvbuf.remaining > 0);
--      INSIST(sock->pending_recv == 0);
--
--      if (sock->type == isc_sockettype_udp) {
--              dev->address.length = sock->recvbuf.from_addr_len;
--              memcpy(&dev->address.type, &sock->recvbuf.from_addr,
--                  sock->recvbuf.from_addr_len);
--              if (isc_sockaddr_getport(&dev->address) == 0) {
--                      if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
--                              socket_log(__LINE__, sock, &dev->address, IOEVENT,
--                                         isc_msgcat, ISC_MSGSET_SOCKET,
--                                         ISC_MSG_ZEROPORT,
--                                         "dropping source port zero packet");
--                      }
--                      sock->recvbuf.remaining = 0;
--                      return;
--              }
--      } else if (sock->type == isc_sockettype_tcp) {
--              dev->address = sock->address;
--      }
--
--      /*
--       * Run through the list of buffers we were given, and find the
--       * first one with space.  Once it is found, loop through, filling
--       * the buffers as much as possible.
--       */
--      buffer = ISC_LIST_HEAD(dev->bufferlist);
--      if (buffer != NULL) { // Multi-buffer receive
--              while (buffer != NULL && sock->recvbuf.remaining > 0) {
--                      REQUIRE(ISC_BUFFER_VALID(buffer));
--                      if (isc_buffer_availablelength(buffer) > 0) {
--                              isc_buffer_availableregion(buffer, &r);
--                              copylen = min(r.length, sock->recvbuf.remaining);
--                              memcpy(r.base, sock->recvbuf.consume_position, copylen);
--                              sock->recvbuf.consume_position += copylen;
--                              sock->recvbuf.remaining -= copylen;
--                              isc_buffer_add(buffer, copylen);
--                              dev->n += copylen;
--                      }
--                      buffer = ISC_LIST_NEXT(buffer, link);
--              }
--      } else { // Single-buffer receive
--              copylen = min(dev->region.length - dev->n, sock->recvbuf.remaining);
--              memcpy(dev->region.base + dev->n, sock->recvbuf.consume_position, copylen);
--              sock->recvbuf.consume_position += copylen;
--              sock->recvbuf.remaining -= copylen;
--              dev->n += copylen;
--      }
--
--      /*
--       * UDP receives are all-consuming.  That is, if we have 4k worth of
--       * data in our receive buffer, and the caller only gave us
--       * 1k of space, we will toss the remaining 3k of data.  TCP
--       * will keep the extra data around and use it for later requests.
--       */
--      if (sock->type == isc_sockettype_udp)
--              sock->recvbuf.remaining = 0;
--}
--
--/*
-- * Copy out as much data from the internal buffer to done events.
-- * As each done event is filled, send it along its way.
-- */
--static void
--completeio_recv(isc_socket_t *sock)
--{
--      isc_socketevent_t *dev;
--
--      /*
--       * If we are in the process of filling our buffer, we cannot
--       * touch it yet, so don't.
--       */
--      if (sock->pending_recv > 0)
--              return;
--
--      while (sock->recvbuf.remaining > 0 && !ISC_LIST_EMPTY(sock->recv_list)) {
--              dev = ISC_LIST_HEAD(sock->recv_list);
--
--              /*
--               * See if we have sufficient data in our receive buffer
--               * to handle this.  If we do, copy out the data.
--               */
--              fill_recv(sock, dev);
--
--              /*
--               * Did we satisfy it?
--               */
--              if (dev->n >= dev->minimum) {
--                      dev->result = ISC_R_SUCCESS;
--                      send_recvdone_event(sock, &dev);
--              }
--      }
--}
--
--/*
-- * Returns:
-- *    DOIO_SUCCESS    The operation succeeded.  dev->result contains
-- *                    ISC_R_SUCCESS.
-- *
-- *    DOIO_HARD       A hard or unexpected I/O error was encountered.
-- *                    dev->result contains the appropriate error.
-- *
-- *    DOIO_SOFT       A soft I/O error was encountered.  No senddone
-- *                    event was sent.  The operation should be retried.
-- *
-- *    No other return values are possible.
-- */
--static int
--completeio_send(isc_socket_t *sock, isc_socketevent_t *dev,
--              struct msghdr *messagehdr, int cc, int send_errno)
--{
--      char addrbuf[ISC_SOCKADDR_FORMATSIZE];
--      char strbuf[ISC_STRERRORSIZE];
--
--      if (send_errno != 0) {
--              if (SOFT_ERROR(send_errno))
--                      return (DOIO_SOFT);
--
--              return (map_socket_error(sock, send_errno, &dev->result,
--                      strbuf, sizeof(strbuf)));
--
--              /*
--               * The other error types depend on whether or not the
--               * socket is UDP or TCP.  If it is UDP, some errors
--               * that we expect to be fatal under TCP are merely
--               * annoying, and are really soft errors.
--               *
--               * However, these soft errors are still returned as
--               * a status.
--               */
--              isc_sockaddr_format(&dev->address, addrbuf, sizeof(addrbuf));
--              isc__strerror(send_errno, strbuf, sizeof(strbuf));
--              UNEXPECTED_ERROR(__FILE__, __LINE__, "completeio_send: %s: %s",
--                               addrbuf, strbuf);
--              dev->result = isc__errno2result(send_errno);
--      return (DOIO_HARD);
--      }
--
--      /*
--       * If we write less than we expected, update counters, poke.
--       */
--      dev->n += cc;
--      if (cc != messagehdr->msg_totallen)
--              return (DOIO_SOFT);
--
--      /*
--       * Exactly what we wanted to write.  We're done with this
--       * entry.  Post its completion event.
--       */
--      dev->result = ISC_R_SUCCESS;
--      return (DOIO_SUCCESS);
--}
--
--static int
--startio_send(isc_socket_t *sock, isc_socketevent_t *dev, int *nbytes,
--           int *send_errno)
--{
--      char *cmsg = NULL;
--      char strbuf[ISC_STRERRORSIZE];
--      IoCompletionInfo *lpo;
--      int status;
--      struct msghdr *msghdr;
--
--      lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
--                                          HEAP_ZERO_MEMORY,
--                                          sizeof(IoCompletionInfo));
--      RUNTIME_CHECK(lpo != NULL);
--      lpo->request_type = SOCKET_SEND;
--      lpo->dev = dev;
--      msghdr = &lpo->messagehdr;
--      memset(msghdr, 0, sizeof(struct msghdr));
--      ISC_LIST_INIT(lpo->bufferlist);
--
--      build_msghdr_send(sock, dev, msghdr, cmsg, sock->iov, lpo);
--
--      *nbytes = internal_sendmsg(sock, lpo, msghdr, 0, send_errno);
--
--      if (*nbytes < 0) {
--              /*
--               * I/O has been initiated
--               * completion will be through the completion port
--               */
--              if (PENDING_ERROR(*send_errno)) {
--                      status = DOIO_PENDING;
--                      goto done;
--              }
--
--              if (SOFT_ERROR(*send_errno)) {
--                      status = DOIO_SOFT;
--                      goto done;
--              }
--
--              /*
--               * If we got this far then something is wrong
--               */
--              if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
--                      isc__strerror(*send_errno, strbuf, sizeof(strbuf));
--                      socket_log(__LINE__, sock, NULL, IOEVENT,
--                                 isc_msgcat, ISC_MSGSET_SOCKET,
--                                 ISC_MSG_INTERNALSEND,
--                                 "startio_send: internal_sendmsg(%d) %d "
--                                 "bytes, err %d/%s",
--                                 sock->fd, *nbytes, *send_errno, strbuf);
--              }
--              goto done;
--      }
--      dev->result = ISC_R_SUCCESS;
--      status = DOIO_SOFT;
-- done:
--      _set_state(sock, SOCK_DATA);
--      return (status);
--}
--
--static isc_result_t
--allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
--              isc_socket_t **socketp) {
--      isc_socket_t *sock;
--      isc_result_t result;
--
--      sock = isc_mem_get(manager->mctx, sizeof(*sock));
--
--      if (sock == NULL)
--              return (ISC_R_NOMEMORY);
--
--      sock->magic = 0;
--      sock->references = 0;
--
--      sock->manager = manager;
--      sock->type = type;
--      sock->fd = INVALID_SOCKET;
--
--      ISC_LINK_INIT(sock, link);
--
--      /*
--       * set up list of readers and writers to be initially empty
--       */
--      ISC_LIST_INIT(sock->recv_list);
--      ISC_LIST_INIT(sock->send_list);
--      ISC_LIST_INIT(sock->accept_list);
--      sock->connect_ev = NULL;
--      sock->pending_accept = 0;
--      sock->pending_recv = 0;
--      sock->pending_send = 0;
--      sock->pending_iocp = 0;
--      sock->listener = 0;
--      sock->connected = 0;
--      sock->pending_connect = 0;
--      sock->bound = 0;
--      memset(sock->name, 0, sizeof(sock->name));      // zero the name field
--      _set_state(sock, SOCK_INITIALIZED);
--
--      sock->recvbuf.len = 65536;
--      sock->recvbuf.consume_position = sock->recvbuf.base;
--      sock->recvbuf.remaining = 0;
--      sock->recvbuf.base = isc_mem_get(manager->mctx, sock->recvbuf.len); // max buffer size
--      if (sock->recvbuf.base == NULL) {
--              sock->magic = 0;
--              goto error;
--      }
--
--      /*
--       * initialize the lock
--       */
--      result = isc_mutex_init(&sock->lock);
--      if (result != ISC_R_SUCCESS) {
--              sock->magic = 0;
--              isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
--              sock->recvbuf.base = NULL;
--              goto error;
--      }
--
--      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                 "allocated");
--
--      sock->magic = SOCKET_MAGIC;
--      *socketp = sock;
--
--      return (ISC_R_SUCCESS);
--
-- error:
--      isc_mem_put(manager->mctx, sock, sizeof(*sock));
--
--      return (result);
--}
--
--/*
-- * Verify that the socket state is consistent.
-- */
--static void
--consistent(isc_socket_t *sock) {
--
--      isc_socketevent_t *dev;
--      isc_socket_newconnev_t *nev;
--      unsigned int count;
--      char *crash_reason;
--      isc_boolean_t crash = ISC_FALSE;
--
--      REQUIRE(sock->pending_iocp == sock->pending_recv + sock->pending_send
--              + sock->pending_accept + sock->pending_connect);
--
--      dev = ISC_LIST_HEAD(sock->send_list);
--      count = 0;
--      while (dev != NULL) {
--              count++;
--              dev = ISC_LIST_NEXT(dev, ev_link);
--      }
--      if (count > sock->pending_send) {
--              crash = ISC_TRUE;
--              crash_reason = "send_list > sock->pending_send";
--      }
--
--      nev = ISC_LIST_HEAD(sock->accept_list);
--      count = 0;
--      while (nev != NULL) {
--              count++;
--              nev = ISC_LIST_NEXT(nev, ev_link);
--      }
--      if (count > sock->pending_accept) {
--              crash = ISC_TRUE;
--              crash_reason = "send_list > sock->pending_send";
--      }
--
--      if (crash) {
--              socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
--                         ISC_MSG_DESTROYING, "SOCKET INCONSISTENT: %s",
--                         crash_reason);
--              sock_dump(sock);
--              INSIST(crash == ISC_FALSE);
--      }
--}
--
--/*
-- * Maybe free the socket.
-- *
-- * This function will verify tht the socket is no longer in use in any way,
-- * either internally or externally.  This is the only place where this
-- * check is to be made; if some bit of code believes that IT is done with
-- * the socket (e.g., some reference counter reaches zero), it should call
-- * this function.
-- *
-- * When calling this function, the socket must be locked, and the manager
-- * must be unlocked.
-- *
-- * When this function returns, *socketp will be NULL.  No tricks to try
-- * to hold on to this pointer are allowed.
-- */
--static void
--maybe_free_socket(isc_socket_t **socketp, int lineno) {
--      isc_socket_t *sock = *socketp;
--      *socketp = NULL;
--
--      INSIST(VALID_SOCKET(sock));
--      CONSISTENT(sock);
--
--      if (sock->pending_iocp > 0
--          || sock->pending_recv > 0
--          || sock->pending_send > 0
--          || sock->pending_accept > 0
--          || sock->references > 0
--          || sock->pending_connect == 1
--          || !ISC_LIST_EMPTY(sock->recv_list)
--          || !ISC_LIST_EMPTY(sock->send_list)
--          || !ISC_LIST_EMPTY(sock->accept_list)
--          || sock->fd != INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return;
--      }
--      UNLOCK(&sock->lock);
--
--      free_socket(&sock, lineno);
--}
--
--void
--free_socket(isc_socket_t **sockp, int lineno) {
--      isc_socketmgr_t *manager;
--      isc_socket_t *sock = *sockp;
--      *sockp = NULL;
--
--      manager = sock->manager;
--
--      /*
--       * Seems we can free the socket after all.
--       */
--      manager = sock->manager;
--      socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
--                 ISC_MSG_DESTROYING, "freeing socket line %d fd %d lock %p semaphore %p",
--                 lineno, sock->fd, &sock->lock, sock->lock.LockSemaphore);
--
--      sock->magic = 0;
--      DESTROYLOCK(&sock->lock);
--
--      if (sock->recvbuf.base != NULL)
--              isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
--
--      LOCK(&manager->lock);
--      if (ISC_LINK_LINKED(sock, link))
--              ISC_LIST_UNLINK(manager->socklist, sock, link);
--      isc_mem_put(manager->mctx, sock, sizeof(*sock));
--
--      if (ISC_LIST_EMPTY(manager->socklist))
--              SIGNAL(&manager->shutdown_ok);
--      UNLOCK(&manager->lock);
--}
--
--/*
-- * Create a new 'type' socket managed by 'manager'.  Events
-- * will be posted to 'task' and when dispatched 'action' will be
-- * called with 'arg' as the arg value.  The new socket is returned
-- * in 'socketp'.
-- */
--isc_result_t
--isc__socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
--                isc_socket_t **socketp) {
--      isc_socket_t *sock = NULL;
--      isc_result_t result;
--#if defined(USE_CMSG)
--      int on = 1;
--#endif
--#if defined(SO_RCVBUF)
--      ISC_SOCKADDR_LEN_T optlen;
--      int size;
--#endif
--      int socket_errno;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_MANAGER(manager));
--      REQUIRE(socketp != NULL && *socketp == NULL);
--      REQUIRE(type != isc_sockettype_fdwatch);
--
--      result = allocate_socket(manager, type, &sock);
--      if (result != ISC_R_SUCCESS)
--              return (result);
--
--      sock->pf = pf;
--      switch (type) {
--      case isc_sockettype_udp:
--              sock->fd = socket(pf, SOCK_DGRAM, IPPROTO_UDP);
--              if (sock->fd != INVALID_SOCKET) {
--                      result = connection_reset_fix(sock->fd);
--                      if (result != ISC_R_SUCCESS) {
--                              socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                                      "closed %d %d %d con_reset_fix_failed",
--                                      sock->pending_recv, sock->pending_send,
--                                      sock->references);
--                              closesocket(sock->fd);
--                              _set_state(sock, SOCK_CLOSED);
--                              sock->fd = INVALID_SOCKET;
--                              free_socket(&sock, __LINE__);
--                              return (result);
--                      }
--              }
--              break;
--      case isc_sockettype_tcp:
--              sock->fd = socket(pf, SOCK_STREAM, IPPROTO_TCP);
--              break;
--      }
--
--      if (sock->fd == INVALID_SOCKET) {
--              socket_errno = WSAGetLastError();
--              free_socket(&sock, __LINE__);
--
--              switch (socket_errno) {
--              case WSAEMFILE:
--              case WSAENOBUFS:
--                      return (ISC_R_NORESOURCES);
--
--              case WSAEPROTONOSUPPORT:
--              case WSAEPFNOSUPPORT:
--              case WSAEAFNOSUPPORT:
--                      return (ISC_R_FAMILYNOSUPPORT);
--
--              default:
--                      isc__strerror(socket_errno, strbuf, sizeof(strbuf));
--                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                       "socket() %s: %s",
--                                       isc_msgcat_get(isc_msgcat,
--                                                      ISC_MSGSET_GENERAL,
--                                                      ISC_MSG_FAILED,
--                                                      "failed"),
--                                       strbuf);
--                      return (ISC_R_UNEXPECTED);
--              }
--      }
--
--      result = make_nonblock(sock->fd);
--      if (result != ISC_R_SUCCESS) {
--              socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                      "closed %d %d %d make_nonblock_failed",
--                      sock->pending_recv, sock->pending_send,
--                      sock->references);
--              closesocket(sock->fd);
--              sock->fd = INVALID_SOCKET;
--              free_socket(&sock, __LINE__);
--              return (result);
--      }
--
--
--#if defined(USE_CMSG) || defined(SO_RCVBUF)
--      if (type == isc_sockettype_udp) {
--
--#if defined(USE_CMSG)
--#if defined(ISC_PLATFORM_HAVEIPV6)
--#ifdef IPV6_RECVPKTINFO
--              /* 2292bis */
--              if ((pf == AF_INET6)
--                  && (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVPKTINFO,
--                                 (void *)&on, sizeof(on)) < 0)) {
--                      isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
--                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                       "setsockopt(%d, IPV6_RECVPKTINFO) "
--                                       "%s: %s", sock->fd,
--                                       isc_msgcat_get(isc_msgcat,
--                                                      ISC_MSGSET_GENERAL,
--                                                      ISC_MSG_FAILED,
--                                                      "failed"),
--                                       strbuf);
--              }
--#else
--              /* 2292 */
--              if ((pf == AF_INET6)
--                  && (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO,
--                                 (void *)&on, sizeof(on)) < 0)) {
--                      isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
--                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                       "setsockopt(%d, IPV6_PKTINFO) %s: %s",
--                                       sock->fd,
--                                       isc_msgcat_get(isc_msgcat,
--                                                      ISC_MSGSET_GENERAL,
--                                                      ISC_MSG_FAILED,
--                                                      "failed"),
--                                       strbuf);
--              }
--#endif /* IPV6_RECVPKTINFO */
--#ifdef IPV6_USE_MIN_MTU       /*2292bis, not too common yet*/
--              /* use minimum MTU */
--              if (pf == AF_INET6) {
--                      (void)setsockopt(sock->fd, IPPROTO_IPV6,
--                                       IPV6_USE_MIN_MTU,
--                                       (void *)&on, sizeof(on));
--              }
--#endif
--#endif /* ISC_PLATFORM_HAVEIPV6 */
--#endif /* defined(USE_CMSG) */
--
--#if defined(SO_RCVBUF)
--             optlen = sizeof(size);
--             if (getsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF,
--                            (void *)&size, &optlen) >= 0 &&
--                  size < RCVBUFSIZE) {
--                     size = RCVBUFSIZE;
--                     (void)setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF,
--                                      (void *)&size, sizeof(size));
--             }
--#endif
--
--      }
--#endif /* defined(USE_CMSG) || defined(SO_RCVBUF) */
--
--      _set_state(sock, SOCK_OPEN);
--      sock->references = 1;
--      *socketp = sock;
--
--      iocompletionport_update(sock);
--
--      /*
--       * Note we don't have to lock the socket like we normally would because
--       * there are no external references to it yet.
--       */
--      LOCK(&manager->lock);
--      ISC_LIST_APPEND(manager->socklist, sock, link);
--      InterlockedIncrement(&manager->totalSockets);
--      UNLOCK(&manager->lock);
--
--      socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
--                 ISC_MSG_CREATED, "created %u type %u", sock->fd, type);
--
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--isc_socket_open(isc_socket_t *sock) {
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(sock->type != isc_sockettype_fdwatch);
--
--      return (ISC_R_NOTIMPLEMENTED);
--}
--
--/*
-- * Attach to a socket.  Caller must explicitly detach when it is done.
-- */
--void
--isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(socketp != NULL && *socketp == NULL);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--      sock->references++;
--      UNLOCK(&sock->lock);
--
--      *socketp = sock;
--}
--
--/*
-- * Dereference a socket.  If this is the last reference to it, clean things
-- * up by destroying the socket.
-- */
--void
--isc__socket_detach(isc_socket_t **socketp) {
--      isc_socket_t *sock;
--      isc_boolean_t kill_socket = ISC_FALSE;
--
--      REQUIRE(socketp != NULL);
--      sock = *socketp;
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(sock->type != isc_sockettype_fdwatch);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--      REQUIRE(sock->references > 0);
--      sock->references--;
--
--      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--              "detach_socket %d %d %d",
--              sock->pending_recv, sock->pending_send,
--              sock->references);
--
--      if (sock->references == 0 && sock->fd != INVALID_SOCKET) {
--              closesocket(sock->fd);
--              sock->fd = INVALID_SOCKET;
--              _set_state(sock, SOCK_CLOSED);
--      }
--
--      maybe_free_socket(&sock, __LINE__);
--
--      *socketp = NULL;
--}
--
--isc_result_t
--isc_socket_close(isc_socket_t *sock) {
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(sock->type != isc_sockettype_fdwatch);
--
--      return (ISC_R_NOTIMPLEMENTED);
--}
--
--/*
-- * Dequeue an item off the given socket's read queue, set the result code
-- * in the done event to the one provided, and send it to the task it was
-- * destined for.
-- *
-- * If the event to be sent is on a list, remove it before sending.  If
-- * asked to, send and detach from the task as well.
-- *
-- * Caller must have the socket locked if the event is attached to the socket.
-- */
--static void
--send_recvdone_event(isc_socket_t *sock, isc_socketevent_t **dev) {
--      isc_task_t *task;
--
--      task = (*dev)->ev_sender;
--      (*dev)->ev_sender = sock;
--
--      if (ISC_LINK_LINKED(*dev, ev_link))
--              ISC_LIST_DEQUEUE(sock->recv_list, *dev, ev_link);
--
--      if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
--          == ISC_SOCKEVENTATTR_ATTACHED)
--              isc_task_sendanddetach(&task, (isc_event_t **)dev);
--      else
--              isc_task_send(task, (isc_event_t **)dev);
--
--      CONSISTENT(sock);
--}
--
--/*
-- * See comments for send_recvdone_event() above.
-- */
--static void
--send_senddone_event(isc_socket_t *sock, isc_socketevent_t **dev) {
--      isc_task_t *task;
--
--      INSIST(dev != NULL && *dev != NULL);
--
--      task = (*dev)->ev_sender;
--      (*dev)->ev_sender = sock;
--
--      if (ISC_LINK_LINKED(*dev, ev_link))
--              ISC_LIST_DEQUEUE(sock->send_list, *dev, ev_link);
--
--      if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
--          == ISC_SOCKEVENTATTR_ATTACHED)
--              isc_task_sendanddetach(&task, (isc_event_t **)dev);
--      else
--              isc_task_send(task, (isc_event_t **)dev);
--
--      CONSISTENT(sock);
--}
--
--/*
-- * See comments for send_recvdone_event() above.
-- */
--static void
--send_acceptdone_event(isc_socket_t *sock, isc_socket_newconnev_t **adev) {
--      isc_task_t *task;
--
--      INSIST(adev != NULL && *adev != NULL);
--
--      task = (*adev)->ev_sender;
--      (*adev)->ev_sender = sock;
--
--      if (ISC_LINK_LINKED(*adev, ev_link))
--              ISC_LIST_DEQUEUE(sock->accept_list, *adev, ev_link);
--
--      isc_task_sendanddetach(&task, (isc_event_t **)adev);
--
--      CONSISTENT(sock);
--}
--
--/*
-- * See comments for send_recvdone_event() above.
-- */
--static void
--send_connectdone_event(isc_socket_t *sock, isc_socket_connev_t **cdev) {
--      isc_task_t *task;
--
--      INSIST(cdev != NULL && *cdev != NULL);
--
--      task = (*cdev)->ev_sender;
--      (*cdev)->ev_sender = sock;
--
--      sock->connect_ev = NULL;
--
--      isc_task_sendanddetach(&task, (isc_event_t **)cdev);
--
--      CONSISTENT(sock);
--}
--
--/*
-- * On entry to this function, the event delivered is the internal
-- * readable event, and the first item on the accept_list should be
-- * the done event we want to send.  If the list is empty, this is a no-op,
-- * so just close the new connection, unlock, and return.
-- *
-- * Note the socket is locked before entering here
-- */
--static void
--internal_accept(isc_socket_t *sock, IoCompletionInfo *lpo, int accept_errno) {
--      isc_socket_newconnev_t *adev;
--      isc_result_t result = ISC_R_SUCCESS;
--      isc_socket_t *nsock;
--      struct sockaddr *localaddr;
--      int localaddr_len = sizeof(*localaddr);
--      struct sockaddr *remoteaddr;
--      int remoteaddr_len = sizeof(*remoteaddr);
--
--      INSIST(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      socket_log(__LINE__, sock, NULL, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
--                 "internal_accept called");
--
--      INSIST(sock->listener);
--
--      INSIST(sock->pending_iocp > 0);
--      sock->pending_iocp--;
--      INSIST(sock->pending_accept > 0);
--      sock->pending_accept--;
--
--      adev = lpo->adev;
--
--      /*
--       * If the event is no longer in the list we can just return.
--       */
--      if (!acceptdone_is_active(sock, adev))
--              goto done;
--
--      nsock = adev->newsocket;
--
--      /*
--       * Pull off the done event.
--       */
--      ISC_LIST_UNLINK(sock->accept_list, adev, ev_link);
--
--      /*
--       * Extract the addresses from the socket, copy them into the structure,
--       * and return the new socket.
--       */
--      ISCGetAcceptExSockaddrs(lpo->acceptbuffer, 0,
--              sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16,
--              (LPSOCKADDR *)&localaddr, &localaddr_len,
--              (LPSOCKADDR *)&remoteaddr, &remoteaddr_len);
--      memcpy(&adev->address.type, remoteaddr, remoteaddr_len);
--      adev->address.length = remoteaddr_len;
--      nsock->address = adev->address;
--      nsock->pf = adev->address.type.sa.sa_family;
--
--      socket_log(__LINE__, nsock, &nsock->address, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
--                 "internal_accept parent %p", sock);
--
--      result = make_nonblock(adev->newsocket->fd);
--      INSIST(result == ISC_R_SUCCESS);
--
--      INSIST(setsockopt(nsock->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
--             (char *)&sock->fd, sizeof(sock->fd)) == 0);
--
--      /*
--       * Hook it up into the manager.
--       */
--      nsock->bound = 1;
--      nsock->connected = 1;
--      _set_state(nsock, SOCK_OPEN);
--
--      LOCK(&nsock->manager->lock);
--      ISC_LIST_APPEND(nsock->manager->socklist, nsock, link);
--      InterlockedIncrement(&nsock->manager->totalSockets);
--      UNLOCK(&nsock->manager->lock);
--
--      socket_log(__LINE__, sock, &nsock->address, CREATION,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN,
--                 "accepted_connection new_socket %p fd %d",
--                 nsock, nsock->fd);
--
--      adev->result = result;
--      send_acceptdone_event(sock, &adev);
--
--done:
--      CONSISTENT(sock);
--      UNLOCK(&sock->lock);
--
--      HeapFree(hHeapHandle, 0, lpo->acceptbuffer);
--      lpo->acceptbuffer = NULL;
--}
--
--/*
-- * Called when a socket with a pending connect() finishes.
-- * Note that the socket is locked before entering.
-- */
--static void
--internal_connect(isc_socket_t *sock, IoCompletionInfo *lpo, int connect_errno) {
--      isc_socket_connev_t *cdev;
--      char strbuf[ISC_STRERRORSIZE];
--
--      INSIST(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--
--      INSIST(sock->pending_iocp > 0);
--      sock->pending_iocp--;
--      INSIST(sock->pending_connect == 1);
--      sock->pending_connect = 0;
--
--      /*
--       * Has this event been canceled?
--       */
--      cdev = lpo->cdev;
--      if (!connectdone_is_active(sock, cdev)) {
--              sock->pending_connect = 0;
--              if (sock->fd != INVALID_SOCKET) {
--                      closesocket(sock->fd);
--                      sock->fd = INVALID_SOCKET;
--                      _set_state(sock, SOCK_CLOSED);
--              }
--              CONSISTENT(sock);
--              UNLOCK(&sock->lock);
--              return;
--      }
--
--      /*
--       * Check possible Windows network event error status here.
--       */
--      if (connect_errno != 0) {
--              /*
--               * If the error is SOFT, just try again on this
--               * fd and pretend nothing strange happened.
--               */
--              if (SOFT_ERROR(connect_errno) ||
--                  connect_errno == WSAEINPROGRESS) {
--                      sock->pending_connect = 1;
--                      CONSISTENT(sock);
--                      UNLOCK(&sock->lock);
--                      return;
--              }
--
--              /*
--               * Translate other errors into ISC_R_* flavors.
--               */
--              switch (connect_errno) {
--#define ERROR_MATCH(a, b) case a: cdev->result = b; break;
--                      ERROR_MATCH(WSAEACCES, ISC_R_NOPERM);
--                      ERROR_MATCH(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
--                      ERROR_MATCH(WSAEAFNOSUPPORT, ISC_R_ADDRNOTAVAIL);
--                      ERROR_MATCH(WSAECONNREFUSED, ISC_R_CONNREFUSED);
--                      ERROR_MATCH(WSAEHOSTUNREACH, ISC_R_HOSTUNREACH);
--                      ERROR_MATCH(WSAEHOSTDOWN, ISC_R_HOSTDOWN);
--                      ERROR_MATCH(WSAENETUNREACH, ISC_R_NETUNREACH);
--                      ERROR_MATCH(WSAENETDOWN, ISC_R_NETDOWN);
--                      ERROR_MATCH(WSAENOBUFS, ISC_R_NORESOURCES);
--                      ERROR_MATCH(WSAECONNRESET, ISC_R_CONNECTIONRESET);
--                      ERROR_MATCH(WSAECONNABORTED, ISC_R_CONNECTIONRESET);
--                      ERROR_MATCH(WSAETIMEDOUT, ISC_R_TIMEDOUT);
--#undef ERROR_MATCH
--              default:
--                      cdev->result = ISC_R_UNEXPECTED;
--                      isc__strerror(connect_errno, strbuf, sizeof(strbuf));
--                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                       "internal_connect: connect() %s",
--                                       strbuf);
--              }
--      } else {
--              INSIST(setsockopt(sock->fd, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, NULL, 0) == 0);
--              cdev->result = ISC_R_SUCCESS;
--              sock->connected = 1;
--              socket_log(__LINE__, sock, &sock->address, IOEVENT,
--                         isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN,
--                         "internal_connect: success");
--      }
--
--      send_connectdone_event(sock, &cdev);
--
--      UNLOCK(&sock->lock);
--}
--
--/*
-- * Loop through the socket, returning ISC_R_EOF for each done event pending.
-- */
--static void
--send_recvdone_abort(isc_socket_t *sock, isc_result_t result) {
--      isc_socketevent_t *dev;
--
--      while (!ISC_LIST_EMPTY(sock->recv_list)) {
--              dev = ISC_LIST_HEAD(sock->recv_list);
--              dev->result = result;
--              send_recvdone_event(sock, &dev);
--      }
--}
--
--/*
-- * Take the data we received in our private buffer, and if any recv() calls on
-- * our list are satisfied, send the corresponding done event.
-- *
-- * If we need more data (there are still items on the recv_list after we consume all
-- * our data) then arrange for another system recv() call to fill our buffers.
-- */
--static void
--internal_recv(isc_socket_t *sock, int nbytes)
--{
--      INSIST(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      socket_log(__LINE__, sock, NULL, IOEVENT,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALRECV,
--                 "internal_recv: %d bytes received", nbytes);
--
--      /*
--       * If we got here, the I/O operation succeeded.  However, we might still have removed this
--       * event from our notification list (or never placed it on it due to immediate completion.)
--       * Handle the reference counting here, and handle the cancellation event just after.
--       */
--      INSIST(sock->pending_iocp > 0);
--      sock->pending_iocp--;
--      INSIST(sock->pending_recv > 0);
--      sock->pending_recv--;
--
--      /*
--       * The only way we could have gotten here is that our I/O has successfully completed.
--       * Update our pointers, and move on.  The only odd case here is that we might not
--       * have received enough data on a TCP stream to satisfy the minimum requirements.  If
--       * this is the case, we will re-issue the recv() call for what we need.
--       *
--       * We do check for a recv() of 0 bytes on a TCP stream.  This means the remote end
--       * has closed.
--       */
--      if (nbytes == 0 && sock->type == isc_sockettype_tcp) {
--              send_recvdone_abort(sock, ISC_R_EOF);
--              maybe_free_socket(&sock, __LINE__);
--              return;
--      }
--      sock->recvbuf.remaining = nbytes;
--      sock->recvbuf.consume_position = sock->recvbuf.base;
--      completeio_recv(sock);
--
--      /*
--       * If there are more receivers waiting for data, queue another receive
--       * here.
--       */
--      queue_receive_request(sock);
--
--      /*
--       * Unlock and/or destroy if we are the last thing this socket has left to do.
--       */
--      maybe_free_socket(&sock, __LINE__);
--}
--
--static void
--internal_send(isc_socket_t *sock, isc_socketevent_t *dev,
--            struct msghdr *messagehdr, int nbytes, int send_errno, IoCompletionInfo *lpo)
--{
--      buflist_t *buffer;
--
--      /*
--       * Find out what socket this is and lock it.
--       */
--      INSIST(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      socket_log(__LINE__, sock, NULL, IOEVENT,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALSEND,
--                 "internal_send: task got socket event %p", dev);
--
--      buffer = ISC_LIST_HEAD(lpo->bufferlist);
--      while (buffer != NULL) {
--              ISC_LIST_DEQUEUE(lpo->bufferlist, buffer, link);
--
--              socket_log(__LINE__, sock, NULL, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
--                 "free_buffer %p %p", buffer, buffer->buf);
--
--              HeapFree(hHeapHandle, 0, buffer->buf);
--              HeapFree(hHeapHandle, 0, buffer);
--              buffer = ISC_LIST_HEAD(lpo->bufferlist);
--      }
--
--      INSIST(sock->pending_iocp > 0);
--      sock->pending_iocp--;
--      INSIST(sock->pending_send > 0);
--      sock->pending_send--;
--
--      /* If the event is no longer in the list we can just return */
--      if (!senddone_is_active(sock, dev))
--              goto done;
--
--      /*
--       * Set the error code and send things on its way.
--       */
--      switch (completeio_send(sock, dev, messagehdr, nbytes, send_errno)) {
--      case DOIO_SOFT:
--              break;
--      case DOIO_HARD:
--      case DOIO_SUCCESS:
--              send_senddone_event(sock, &dev);
--              break;
--      }
--
-- done:
--      maybe_free_socket(&sock, __LINE__);
--}
--
--/*
-- * These return if the done event passed in is on the list (or for connect, is
-- * the one we're waiting for.  Using these ensures we will not double-send an
-- * event.
-- */
--static isc_boolean_t
--senddone_is_active(isc_socket_t *sock, isc_socketevent_t *dev)
--{
--      isc_socketevent_t *ldev;
--
--      ldev = ISC_LIST_HEAD(sock->send_list);
--      while (ldev != NULL && ldev != dev)
--              ldev = ISC_LIST_NEXT(ldev, ev_link);
--
--      return (ldev == NULL ? ISC_FALSE : ISC_TRUE);
--}
--
--static isc_boolean_t
--acceptdone_is_active(isc_socket_t *sock, isc_socket_newconnev_t *dev)
--{
--      isc_socket_newconnev_t *ldev;
--
--      ldev = ISC_LIST_HEAD(sock->accept_list);
--      while (ldev != NULL && ldev != dev)
--              ldev = ISC_LIST_NEXT(ldev, ev_link);
--
--      return (ldev == NULL ? ISC_FALSE : ISC_TRUE);
--}
--
--static isc_boolean_t
--connectdone_is_active(isc_socket_t *sock, isc_socket_connev_t *dev)
--{
--      return (sock->connect_ev == dev ? ISC_TRUE : ISC_FALSE);
--}
--
--/*
-- * This is the I/O Completion Port Worker Function. It loops forever
-- * waiting for I/O to complete and then forwards them for further
-- * processing. There are a number of these in separate threads.
-- */
--static isc_threadresult_t WINAPI
--SocketIoThread(LPVOID ThreadContext) {
--      isc_socketmgr_t *manager = ThreadContext;
--      BOOL bSuccess = FALSE;
--      DWORD nbytes;
--      IoCompletionInfo *lpo = NULL;
--      isc_socket_t *sock = NULL;
--      int request;
--      struct msghdr *messagehdr = NULL;
--      int errval;
--      char strbuf[ISC_STRERRORSIZE];
--      int errstatus;
--
--      REQUIRE(VALID_MANAGER(manager));
--
--      /*
--       * Set the thread priority high enough so I/O will
--       * preempt normal recv packet processing, but not
--       * higher than the timer sync thread.
--       */
--      if (!SetThreadPriority(GetCurrentThread(),
--                             THREAD_PRIORITY_ABOVE_NORMAL)) {
--              errval = GetLastError();
--              isc__strerror(errval, strbuf, sizeof(strbuf));
--              FATAL_ERROR(__FILE__, __LINE__,
--                              isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                              ISC_MSG_FAILED,
--                              "Can't set thread priority: %s"),
--                              strbuf);
--      }
--
--      /*
--       * Loop forever waiting on I/O Completions and then processing them
--       */
--      while (TRUE) {
--              bSuccess = GetQueuedCompletionStatus(manager->hIoCompletionPort,
--                                                   &nbytes, (LPDWORD)&sock,
--                                                   (LPWSAOVERLAPPED *)&lpo,
--                                                   INFINITE);
--              if (lpo == NULL) /* Received request to exit */
--                      break;
--
--              REQUIRE(VALID_SOCKET(sock));
--
--              request = lpo->request_type;
--
--              errstatus = 0;
--              if (!bSuccess) {
--                      isc_result_t isc_result;
--
--                      /*
--                       * Did the I/O operation complete?
--                       */
--                      errstatus = WSAGetLastError();
--                      isc_result = isc__errno2resultx(errstatus, __FILE__, __LINE__);
--
--                      LOCK(&sock->lock);
--                      CONSISTENT(sock);
--                      switch (request) {
--                      case SOCKET_RECV:
--                              INSIST(sock->pending_iocp > 0);
--                              sock->pending_iocp--;
--                              INSIST(sock->pending_recv > 0);
--                              sock->pending_recv--;
--                              send_recvdone_abort(sock, isc_result);
--                              if (isc_result == ISC_R_UNEXPECTED) {
--                                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                              "SOCKET_RECV: Windows error code: %d, returning ISC error %d",
--                                              errstatus, isc_result);
--                              }
--                              break;
--
--                      case SOCKET_SEND:
--                              INSIST(sock->pending_iocp > 0);
--                              sock->pending_iocp--;
--                              INSIST(sock->pending_send > 0);
--                              sock->pending_send--;
--                              if (senddone_is_active(sock, lpo->dev)) {
--                                      lpo->dev->result = isc_result;
--                                      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                                              "canceled_send");
--                                      send_senddone_event(sock, &lpo->dev);
--                              }
--                              break;
--
--                      case SOCKET_ACCEPT:
--                              INSIST(sock->pending_iocp > 0);
--                              sock->pending_iocp--;
--                              INSIST(sock->pending_accept > 0);
--                              sock->pending_accept--;
--                              if (acceptdone_is_active(sock, lpo->adev)) {
--                                      closesocket(lpo->adev->newsocket->fd);
--                                      lpo->adev->newsocket->fd = INVALID_SOCKET;
--                                      lpo->adev->newsocket->references--;
--                                      free_socket(&lpo->adev->newsocket, __LINE__);
--                                      lpo->adev->result = isc_result;
--                                      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                                              "canceled_accept");
--                                      send_acceptdone_event(sock, &lpo->adev);
--                              }
--                              break;
--
--                      case SOCKET_CONNECT:
--                              INSIST(sock->pending_iocp > 0);
--                              sock->pending_iocp--;
--                              INSIST(sock->pending_connect == 1);
--                              sock->pending_connect = 0;
--                              if (connectdone_is_active(sock, lpo->cdev)) {
--                                      lpo->cdev->result = isc_result;
--                                      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                                              "canceled_connect");
--                                      send_connectdone_event(sock, &lpo->cdev);
--                              }
--                              break;
--                      }
--                      maybe_free_socket(&sock, __LINE__);
--
--                      if (lpo != NULL)
--                              HeapFree(hHeapHandle, 0, lpo);
--                      continue;
--              }
--
--              messagehdr = &lpo->messagehdr;
--
--              switch (request) {
--              case SOCKET_RECV:
--                      internal_recv(sock, nbytes);
--                      break;
--              case SOCKET_SEND:
--                      internal_send(sock, lpo->dev, messagehdr, nbytes, errstatus, lpo);
--                      break;
--              case SOCKET_ACCEPT:
--                      internal_accept(sock, lpo, errstatus);
--                      break;
--              case SOCKET_CONNECT:
--                      internal_connect(sock, lpo, errstatus);
--                      break;
--              }
--
--              if (lpo != NULL)
--                      HeapFree(hHeapHandle, 0, lpo);
--      }
--
--      /*
--       * Exit Completion Port Thread
--       */
--      manager_log(manager, TRACE,
--                  isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                 ISC_MSG_EXITING, "SocketIoThread exiting"));
--      return ((isc_threadresult_t)0);
--}
--
--/*
-- * Create a new socket manager.
-- */
--isc_result_t
--isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
--      return (isc_socketmgr_create2(mctx, managerp, 0));
--}
--
--isc_result_t
--isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
--                     unsigned int maxsocks)
--{
--      isc_socketmgr_t *manager;
--      isc_result_t result;
--
--      REQUIRE(managerp != NULL && *managerp == NULL);
--
--      if (maxsocks != 0)
--              return (ISC_R_NOTIMPLEMENTED);
--
--      manager = isc_mem_get(mctx, sizeof(*manager));
--      if (manager == NULL)
--              return (ISC_R_NOMEMORY);
--
--      InitSockets();
--
--      manager->magic = SOCKET_MANAGER_MAGIC;
--      manager->mctx = NULL;
--      manager->stats = NULL;
--      ISC_LIST_INIT(manager->socklist);
--      result = isc_mutex_init(&manager->lock);
--      if (result != ISC_R_SUCCESS) {
--              isc_mem_put(mctx, manager, sizeof(*manager));
--              return (result);
--      }
--      if (isc_condition_init(&manager->shutdown_ok) != ISC_R_SUCCESS) {
--              DESTROYLOCK(&manager->lock);
--              isc_mem_put(mctx, manager, sizeof(*manager));
--              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               "isc_condition_init() %s",
--                               isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                              ISC_MSG_FAILED, "failed"));
--              return (ISC_R_UNEXPECTED);
--      }
--
--      isc_mem_attach(mctx, &manager->mctx);
--
--      iocompletionport_init(manager); /* Create the Completion Ports */
--
--      manager->bShutdown = ISC_FALSE;
--      manager->totalSockets = 0;
--      manager->iocp_total = 0;
--
--      *managerp = manager;
--
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--isc__socketmgr_getmaxsockets(isc_socketmgr_t *manager, unsigned int *nsockp) {
--      REQUIRE(VALID_MANAGER(manager));
--      REQUIRE(nsockp != NULL);
--
--      return (ISC_R_NOTIMPLEMENTED);
--}
--
--void
--isc__socketmgr_setstats(isc_socketmgr_t *manager, isc_stats_t *stats) {
--      REQUIRE(VALID_MANAGER(manager));
--      REQUIRE(ISC_LIST_EMPTY(manager->socklist));
--      REQUIRE(manager->stats == NULL);
--      REQUIRE(isc_stats_ncounters(stats) == isc_sockstatscounter_max);
--
--      isc_stats_attach(stats, &manager->stats);
--}
--
--void
--isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
--      isc_socketmgr_t *manager;
--      int i;
--      isc_mem_t *mctx;
--
--      /*
--       * Destroy a socket manager.
--       */
--
--      REQUIRE(managerp != NULL);
--      manager = *managerp;
--      REQUIRE(VALID_MANAGER(manager));
--
--      LOCK(&manager->lock);
--
--      /*
--       * Wait for all sockets to be destroyed.
--       */
--      while (!ISC_LIST_EMPTY(manager->socklist)) {
--              manager_log(manager, CREATION,
--                          isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
--                                         ISC_MSG_SOCKETSREMAIN,
--                                         "sockets exist"));
--              WAIT(&manager->shutdown_ok, &manager->lock);
--      }
--
--      UNLOCK(&manager->lock);
--
--      /*
--       * Here, we need to had some wait code for the completion port
--       * thread.
--       */
--      signal_iocompletionport_exit(manager);
--      manager->bShutdown = ISC_TRUE;
--
--      /*
--       * Wait for threads to exit.
--       */
--      for (i = 0; i < manager->maxIOCPThreads; i++) {
--              if (isc_thread_join((isc_thread_t) manager->hIOCPThreads[i],
--                      NULL) != ISC_R_SUCCESS)
--                      UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               "isc_thread_join() for Completion Port %s",
--                               isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                              ISC_MSG_FAILED, "failed"));
--      }
--      /*
--       * Clean up.
--       */
--
--      CloseHandle(manager->hIoCompletionPort);
--
--      (void)isc_condition_destroy(&manager->shutdown_ok);
--
--      DESTROYLOCK(&manager->lock);
--      if (manager->stats != NULL)
--              isc_stats_detach(&manager->stats);
--      manager->magic = 0;
--      mctx= manager->mctx;
--      isc_mem_put(mctx, manager, sizeof(*manager));
--
--      isc_mem_detach(&mctx);
--
--      *managerp = NULL;
--}
--
--static void
--queue_receive_event(isc_socket_t *sock, isc_task_t *task, isc_socketevent_t *dev)
--{
--      isc_task_t *ntask = NULL;
--
--      isc_task_attach(task, &ntask);
--      dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED;
--
--      /*
--       * Enqueue the request.
--       */
--      INSIST(!ISC_LINK_LINKED(dev, ev_link));
--      ISC_LIST_ENQUEUE(sock->recv_list, dev, ev_link);
--
--      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                 "queue_receive_event: event %p -> task %p",
--                 dev, ntask);
--}
--
--/*
-- * Check the pending receive queue, and if we have data pending, give it to this
-- * caller.  If we have none, queue an I/O request.  If this caller is not the first
-- * on the list, then we will just queue this event and return.
-- *
-- * Caller must have the socket locked.
-- */
--static isc_result_t
--socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
--          unsigned int flags)
--{
--      int cc = 0;
--      isc_task_t *ntask = NULL;
--      isc_result_t result = ISC_R_SUCCESS;
--      int recv_errno = 0;
--
--      dev->ev_sender = task;
--
--      if (sock->fd == INVALID_SOCKET)
--              return (ISC_R_EOF);
--
--      /*
--       * Queue our event on the list of things to do.  Call our function to
--       * attempt to fill buffers as much as possible, and return done events.
--       * We are going to lie about our handling of the ISC_SOCKFLAG_IMMEDIATE
--       * here and tell our caller that we could not satisfy it immediately.
--       */
--      queue_receive_event(sock, task, dev);
--      if ((flags & ISC_SOCKFLAG_IMMEDIATE) != 0)
--              result = ISC_R_INPROGRESS;
--
--      completeio_recv(sock);
--
--      /*
--       * If there are more receivers waiting for data, queue another receive
--       * here.  If the
--       */
--      queue_receive_request(sock);
--
--      return (result);
--}
--
--isc_result_t
--isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
--               unsigned int minimum, isc_task_t *task,
--               isc_taskaction_t action, const void *arg)
--{
--      isc_socketevent_t *dev;
--      isc_socketmgr_t *manager;
--      unsigned int iocount;
--      isc_buffer_t *buffer;
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * Make sure that the socket is not closed.  XXXMLG change error here?
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      REQUIRE(buflist != NULL);
--      REQUIRE(!ISC_LIST_EMPTY(*buflist));
--      REQUIRE(task != NULL);
--      REQUIRE(action != NULL);
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--
--      iocount = isc_bufferlist_availablecount(buflist);
--      REQUIRE(iocount > 0);
--
--      INSIST(sock->bound);
--
--      dev = allocate_socketevent(sock, ISC_SOCKEVENT_RECVDONE, action, arg);
--      if (dev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--
--      /*
--       * UDP sockets are always partial read
--       */
--      if (sock->type == isc_sockettype_udp)
--              dev->minimum = 1;
--      else {
--              if (minimum == 0)
--                      dev->minimum = iocount;
--              else
--                      dev->minimum = minimum;
--      }
--
--      /*
--       * Move each buffer from the passed in list to our internal one.
--       */
--      buffer = ISC_LIST_HEAD(*buflist);
--      while (buffer != NULL) {
--              ISC_LIST_DEQUEUE(*buflist, buffer, link);
--              ISC_LIST_ENQUEUE(dev->bufferlist, buffer, link);
--              buffer = ISC_LIST_HEAD(*buflist);
--      }
--
--      ret = socket_recv(sock, dev, task, 0);
--
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--isc_result_t
--isc__socket_recv(isc_socket_t *sock, isc_region_t *region,
--               unsigned int minimum, isc_task_t *task,
--               isc_taskaction_t action, const void *arg)
--{
--      isc_socketevent_t *dev;
--      isc_socketmgr_t *manager;
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--      REQUIRE(action != NULL);
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--
--      INSIST(sock->bound);
--
--      dev = allocate_socketevent(sock, ISC_SOCKEVENT_RECVDONE, action, arg);
--      if (dev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--
--      ret = isc_socket_recv2(sock, region, minimum, task, dev, 0);
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--isc_result_t
--isc__socket_recv2(isc_socket_t *sock, isc_region_t *region,
--                unsigned int minimum, isc_task_t *task,
--                isc_socketevent_t *event, unsigned int flags)
--{
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      event->result = ISC_R_UNEXPECTED;
--      event->ev_sender = sock;
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      ISC_LIST_INIT(event->bufferlist);
--      event->region = *region;
--      event->n = 0;
--      event->offset = 0;
--      event->attributes = 0;
--
--      /*
--       * UDP sockets are always partial read.
--       */
--      if (sock->type == isc_sockettype_udp)
--              event->minimum = 1;
--      else {
--              if (minimum == 0)
--                      event->minimum = region->length;
--              else
--                      event->minimum = minimum;
--      }
--
--      ret = socket_recv(sock, event, task, flags);
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--/*
-- * Caller must have the socket locked.
-- */
--static isc_result_t
--socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
--          isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
--          unsigned int flags)
--{
--      int io_state;
--      int send_errno = 0;
--      int cc = 0;
--      isc_task_t *ntask = NULL;
--      isc_result_t result = ISC_R_SUCCESS;
--
--      dev->ev_sender = task;
--
--      set_dev_address(address, sock, dev);
--      if (pktinfo != NULL) {
--              socket_log(__LINE__, sock, NULL, TRACE, isc_msgcat, ISC_MSGSET_SOCKET,
--                         ISC_MSG_PKTINFOPROVIDED,
--                         "pktinfo structure provided, ifindex %u (set to 0)",
--                         pktinfo->ipi6_ifindex);
--
--              dev->attributes |= ISC_SOCKEVENTATTR_PKTINFO;
--              dev->pktinfo = *pktinfo;
--              /*
--               * Set the pktinfo index to 0 here, to let the kernel decide
--               * what interface it should send on.
--               */
--              dev->pktinfo.ipi6_ifindex = 0;
--      }
--
--      io_state = startio_send(sock, dev, &cc, &send_errno);
--      switch (io_state) {
--      case DOIO_PENDING:      /* I/O started. Nothing more to do */
--      case DOIO_SOFT:
--              /*
--               * We couldn't send all or part of the request right now, so
--               * queue it unless ISC_SOCKFLAG_NORETRY is set.
--               */
--              if ((flags & ISC_SOCKFLAG_NORETRY) == 0) {
--                      isc_task_attach(task, &ntask);
--                      dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED;
--
--                      /*
--                       * Enqueue the request.
--                       */
--                      INSIST(!ISC_LINK_LINKED(dev, ev_link));
--                      ISC_LIST_ENQUEUE(sock->send_list, dev, ev_link);
--
--                      socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
--                                 "socket_send: event %p -> task %p",
--                                 dev, ntask);
--
--                      if ((flags & ISC_SOCKFLAG_IMMEDIATE) != 0)
--                              result = ISC_R_INPROGRESS;
--                      break;
--              }
--
--      case DOIO_SUCCESS:
--              break;
--      }
--
--      return (result);
--}
--
--isc_result_t
--isc__socket_send(isc_socket_t *sock, isc_region_t *region,
--               isc_task_t *task, isc_taskaction_t action, const void *arg)
--{
--      /*
--       * REQUIRE() checking is performed in isc_socket_sendto().
--       */
--      return (isc_socket_sendto(sock, region, task, action, arg, NULL,
--                                NULL));
--}
--
--isc_result_t
--isc__socket_sendto(isc_socket_t *sock, isc_region_t *region,
--                 isc_task_t *task, isc_taskaction_t action, const void *arg,
--                 isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
--{
--      isc_socketevent_t *dev;
--      isc_socketmgr_t *manager;
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(sock->type != isc_sockettype_fdwatch);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--      REQUIRE(region != NULL);
--      REQUIRE(task != NULL);
--      REQUIRE(action != NULL);
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--
--      INSIST(sock->bound);
--
--      dev = allocate_socketevent(sock, ISC_SOCKEVENT_SENDDONE, action, arg);
--      if (dev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--      dev->region = *region;
--
--      ret = socket_send(sock, dev, task, address, pktinfo, 0);
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--isc_result_t
--isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
--                isc_task_t *task, isc_taskaction_t action, const void *arg)
--{
--      return (isc_socket_sendtov(sock, buflist, task, action, arg, NULL,
--                                 NULL));
--}
--
--isc_result_t
--isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
--                  isc_task_t *task, isc_taskaction_t action, const void *arg,
--                  isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
--{
--      isc_socketevent_t *dev;
--      isc_socketmgr_t *manager;
--      unsigned int iocount;
--      isc_buffer_t *buffer;
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--      REQUIRE(buflist != NULL);
--      REQUIRE(!ISC_LIST_EMPTY(*buflist));
--      REQUIRE(task != NULL);
--      REQUIRE(action != NULL);
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--
--      iocount = isc_bufferlist_usedcount(buflist);
--      REQUIRE(iocount > 0);
--
--      dev = allocate_socketevent(sock, ISC_SOCKEVENT_SENDDONE, action, arg);
--      if (dev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--
--      /*
--       * Move each buffer from the passed in list to our internal one.
--       */
--      buffer = ISC_LIST_HEAD(*buflist);
--      while (buffer != NULL) {
--              ISC_LIST_DEQUEUE(*buflist, buffer, link);
--              ISC_LIST_ENQUEUE(dev->bufferlist, buffer, link);
--              buffer = ISC_LIST_HEAD(*buflist);
--      }
--
--      ret = socket_send(sock, dev, task, address, pktinfo, 0);
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--isc_result_t
--isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region,
--                  isc_task_t *task,
--                  isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
--                  isc_socketevent_t *event, unsigned int flags)
--{
--      isc_result_t ret;
--
--      REQUIRE(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      REQUIRE((flags & ~(ISC_SOCKFLAG_IMMEDIATE|ISC_SOCKFLAG_NORETRY)) == 0);
--      if ((flags & ISC_SOCKFLAG_NORETRY) != 0)
--              REQUIRE(sock->type == isc_sockettype_udp);
--      event->ev_sender = sock;
--      event->result = ISC_R_UNEXPECTED;
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--      ISC_LIST_INIT(event->bufferlist);
--      event->region = *region;
--      event->n = 0;
--      event->offset = 0;
--      event->attributes = 0;
--
--      ret = socket_send(sock, event, task, address, pktinfo, flags);
--      UNLOCK(&sock->lock);
--      return (ret);
--}
--
--isc_result_t
--isc__socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr,
--               unsigned int options) {
--      int bind_errno;
--      char strbuf[ISC_STRERRORSIZE];
--      int on = 1;
--
--      REQUIRE(VALID_SOCKET(sock));
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      INSIST(!sock->bound);
--
--      if (sock->pf != sockaddr->type.sa.sa_family) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_FAMILYMISMATCH);
--      }
--      /*
--       * Only set SO_REUSEADDR when we want a specific port.
--       */
--      if ((options & ISC_SOCKET_REUSEADDRESS) != 0 &&
--          isc_sockaddr_getport(sockaddr) != (in_port_t)0 &&
--          setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
--                     sizeof(on)) < 0) {
--              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                               "setsockopt(%d) %s", sock->fd,
--                               isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
--                                              ISC_MSG_FAILED, "failed"));
--              /* Press on... */
--      }
--      if (bind(sock->fd, &sockaddr->type.sa, sockaddr->length) < 0) {
--              bind_errno = WSAGetLastError();
--              UNLOCK(&sock->lock);
--              switch (bind_errno) {
--              case WSAEACCES:
--                      return (ISC_R_NOPERM);
--              case WSAEADDRNOTAVAIL:
--                      return (ISC_R_ADDRNOTAVAIL);
--              case WSAEADDRINUSE:
--                      return (ISC_R_ADDRINUSE);
--              case WSAEINVAL:
--                      return (ISC_R_BOUND);
--              default:
--                      isc__strerror(bind_errno, strbuf, sizeof(strbuf));
--                      UNEXPECTED_ERROR(__FILE__, __LINE__, "bind: %s",
--                                       strbuf);
--                      return (ISC_R_UNEXPECTED);
--              }
--      }
--
--      socket_log(__LINE__, sock, sockaddr, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND, "bound");
--      sock->bound = 1;
--
--      UNLOCK(&sock->lock);
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--isc__socket_filter(isc_socket_t *sock, const char *filter) {
--      UNUSED(sock);
--      UNUSED(filter);
--
--      REQUIRE(VALID_SOCKET(sock));
--      return (ISC_R_NOTIMPLEMENTED);
--}
--
--/*
-- * Set up to listen on a given socket.  We do this by creating an internal
-- * event that will be dispatched when the socket has read activity.  The
-- * watcher will send the internal event to the task when there is a new
-- * connection.
-- *
-- * Unlike in read, we don't preallocate a done event here.  Every time there
-- * is a new connection we'll have to allocate a new one anyway, so we might
-- * as well keep things simple rather than having to track them.
-- */
--isc_result_t
--isc__socket_listen(isc_socket_t *sock, unsigned int backlog) {
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      REQUIRE(!sock->listener);
--      REQUIRE(sock->bound);
--      REQUIRE(sock->type == isc_sockettype_tcp);
--
--      if (backlog == 0)
--              backlog = SOMAXCONN;
--
--      if (listen(sock->fd, (int)backlog) < 0) {
--              UNLOCK(&sock->lock);
--              isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
--
--              UNEXPECTED_ERROR(__FILE__, __LINE__, "listen: %s", strbuf);
--
--              return (ISC_R_UNEXPECTED);
--      }
--
--      socket_log(__LINE__, sock, NULL, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND, "listening");
--      sock->listener = 1;
--      _set_state(sock, SOCK_LISTEN);
--
--      UNLOCK(&sock->lock);
--      return (ISC_R_SUCCESS);
--}
--
--/*
-- * This should try to do aggressive accept() XXXMLG
-- */
--isc_result_t
--isc__socket_accept(isc_socket_t *sock,
--                 isc_task_t *task, isc_taskaction_t action, const void *arg)
--{
--      isc_socket_newconnev_t *adev;
--      isc_socketmgr_t *manager;
--      isc_task_t *ntask = NULL;
--      isc_socket_t *nsock;
--      isc_result_t result;
--      IoCompletionInfo *lpo;
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      REQUIRE(sock->listener);
--
--      /*
--       * Sender field is overloaded here with the task we will be sending
--       * this event to.  Just before the actual event is delivered the
--       * actual ev_sender will be touched up to be the socket.
--       */
--      adev = (isc_socket_newconnev_t *)
--              isc_event_allocate(manager->mctx, task, ISC_SOCKEVENT_NEWCONN,
--                                 action, arg, sizeof(*adev));
--      if (adev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--      ISC_LINK_INIT(adev, ev_link);
--
--      result = allocate_socket(manager, sock->type, &nsock);
--      if (result != ISC_R_SUCCESS) {
--              isc_event_free((isc_event_t **)&adev);
--              UNLOCK(&sock->lock);
--              return (result);
--      }
--
--      /*
--       * AcceptEx() requires we pass in a socket.
--       */
--      nsock->fd = socket(sock->pf, SOCK_STREAM, IPPROTO_TCP);
--      if (nsock->fd == INVALID_SOCKET) {
--              free_socket(&nsock, __LINE__);
--              isc_event_free((isc_event_t **)&adev);
--              UNLOCK(&sock->lock);
--              return (ISC_R_FAILURE); // XXXMLG need real error message
--      }
--
--      /*
--       * Attach to socket and to task.
--       */
--      isc_task_attach(task, &ntask);
--      nsock->references++;
--
--      adev->ev_sender = ntask;
--      adev->newsocket = nsock;
--      _set_state(nsock, SOCK_ACCEPT);
--
--      /*
--       * Queue io completion for an accept().
--       */
--      lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
--                                          HEAP_ZERO_MEMORY,
--                                          sizeof(IoCompletionInfo));
--      RUNTIME_CHECK(lpo != NULL);
--      lpo->acceptbuffer = (void *)HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY,
--              (sizeof(SOCKADDR_STORAGE) + 16) * 2);
--      RUNTIME_CHECK(lpo->acceptbuffer != NULL);
--
--      lpo->adev = adev;
--      lpo->request_type = SOCKET_ACCEPT;
--
--      ISCAcceptEx(sock->fd,
--                  nsock->fd,                          /* Accepted Socket */
--                  lpo->acceptbuffer,                  /* Buffer for initial Recv */
--                  0,                                  /* Length of Buffer */
--                  sizeof(SOCKADDR_STORAGE) + 16,              /* Local address length + 16 */
--                  sizeof(SOCKADDR_STORAGE) + 16,              /* Remote address lengh + 16 */
--                  (LPDWORD)&lpo->received_bytes,      /* Bytes Recved */
--                  (LPOVERLAPPED)lpo                   /* Overlapped structure */
--                  );
--      iocompletionport_update(nsock);
--
--      socket_log(__LINE__, sock, NULL, TRACE,
--                 isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND,
--                 "accepting for nsock %p fd %d", nsock, nsock->fd);
--
--      /*
--       * Enqueue the event
--       */
--      ISC_LIST_ENQUEUE(sock->accept_list, adev, ev_link);
--      sock->pending_accept++;
--      sock->pending_iocp++;
--
--      UNLOCK(&sock->lock);
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--isc__socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr,
--                  isc_task_t *task, isc_taskaction_t action, const void *arg)
--{
--      char strbuf[ISC_STRERRORSIZE];
--      isc_socket_connev_t *cdev;
--      isc_task_t *ntask = NULL;
--      isc_socketmgr_t *manager;
--      IoCompletionInfo *lpo;
--      int bind_errno;
--
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(addr != NULL);
--      REQUIRE(task != NULL);
--      REQUIRE(action != NULL);
--
--      manager = sock->manager;
--      REQUIRE(VALID_MANAGER(manager));
--      REQUIRE(addr != NULL);
--
--      if (isc_sockaddr_ismulticast(addr))
--              return (ISC_R_MULTICAST);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      /*
--       * Windows sockets won't connect unless the socket is bound.
--       */
--      if (!sock->bound) {
--              isc_sockaddr_t any;
--
--              isc_sockaddr_anyofpf(&any, isc_sockaddr_pf(addr));
--              if (bind(sock->fd, &any.type.sa, any.length) < 0) {
--                      bind_errno = WSAGetLastError();
--                      UNLOCK(&sock->lock);
--                      switch (bind_errno) {
--                      case WSAEACCES:
--                              return (ISC_R_NOPERM);
--                      case WSAEADDRNOTAVAIL:
--                              return (ISC_R_ADDRNOTAVAIL);
--                      case WSAEADDRINUSE:
--                              return (ISC_R_ADDRINUSE);
--                      case WSAEINVAL:
--                              return (ISC_R_BOUND);
--                      default:
--                              isc__strerror(bind_errno, strbuf,
--                                            sizeof(strbuf));
--                              UNEXPECTED_ERROR(__FILE__, __LINE__,
--                                               "bind: %s", strbuf);
--                              return (ISC_R_UNEXPECTED);
--                      }
--              }
--              sock->bound = 1;
--      }
--
--      REQUIRE(!sock->pending_connect);
--
--      cdev = (isc_socket_connev_t *)isc_event_allocate(manager->mctx, sock,
--                                                      ISC_SOCKEVENT_CONNECT,
--                                                      action, arg,
--                                                      sizeof(*cdev));
--      if (cdev == NULL) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_NOMEMORY);
--      }
--      ISC_LINK_INIT(cdev, ev_link);
--
--      if (sock->type == isc_sockettype_tcp) {
--              /*
--               * Queue io completion for an accept().
--               */
--              lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
--                                                  HEAP_ZERO_MEMORY,
--                                                  sizeof(IoCompletionInfo));
--              lpo->cdev = cdev;
--              lpo->request_type = SOCKET_CONNECT;
--
--              sock->address = *addr;
--              ISCConnectEx(sock->fd, &addr->type.sa, addr->length,
--                      NULL, 0, NULL, (LPOVERLAPPED)lpo);
--
--              /*
--               * Attach to task.
--               */
--              isc_task_attach(task, &ntask);
--              cdev->ev_sender = ntask;
--
--              sock->pending_connect = 1;
--              _set_state(sock, SOCK_CONNECT);
--
--              /*
--               * Enqueue the request.
--               */
--              sock->connect_ev = cdev;
--              sock->pending_iocp++;
--      } else {
--              WSAConnect(sock->fd, &addr->type.sa, addr->length, NULL, NULL, NULL, NULL);
--              cdev->result = ISC_R_SUCCESS;
--              isc_task_send(task, (isc_event_t **)&cdev);
--      }
--      CONSISTENT(sock);
--      UNLOCK(&sock->lock);
--
--      return (ISC_R_SUCCESS);
--}
--
--isc_result_t
--isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
--      isc_result_t result;
--
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(addressp != NULL);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      if (sock->connected) {
--              *addressp = sock->address;
--              result = ISC_R_SUCCESS;
--      } else {
--              result = ISC_R_NOTCONNECTED;
--      }
--
--      UNLOCK(&sock->lock);
--
--      return (result);
--}
--
--isc_result_t
--isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
--      ISC_SOCKADDR_LEN_T len;
--      isc_result_t result;
--      char strbuf[ISC_STRERRORSIZE];
--
--      REQUIRE(VALID_SOCKET(sock));
--      REQUIRE(addressp != NULL);
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      if (!sock->bound) {
--              result = ISC_R_NOTBOUND;
--              goto out;
--      }
--
--      result = ISC_R_SUCCESS;
--
--      len = sizeof(addressp->type);
--      if (getsockname(sock->fd, &addressp->type.sa, (void *)&len) < 0) {
--              isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf));
--              UNEXPECTED_ERROR(__FILE__, __LINE__, "getsockname: %s",
--                               strbuf);
--              result = ISC_R_UNEXPECTED;
--              goto out;
--      }
--      addressp->length = (unsigned int)len;
--
-- out:
--      UNLOCK(&sock->lock);
--
--      return (result);
--}
--
--/*
-- * Run through the list of events on this socket, and cancel the ones
-- * queued for task "task" of type "how".  "how" is a bitmask.
-- */
--void
--isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      /*
--       * Quick exit if there is nothing to do.  Don't even bother locking
--       * in this case.
--       */
--      if (how == 0)
--              return;
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return;
--      }
--
--      /*
--       * All of these do the same thing, more or less.
--       * Each will:
--       *      o If the internal event is marked as "posted" try to
--       *        remove it from the task's queue.  If this fails, mark it
--       *        as canceled instead, and let the task clean it up later.
--       *      o For each I/O request for that task of that type, post
--       *        its done event with status of "ISC_R_CANCELED".
--       *      o Reset any state needed.
--       */
--
--      if ((how & ISC_SOCKCANCEL_RECV) == ISC_SOCKCANCEL_RECV) {
--              isc_socketevent_t      *dev;
--              isc_socketevent_t      *next;
--              isc_task_t             *current_task;
--
--              dev = ISC_LIST_HEAD(sock->recv_list);
--              while (dev != NULL) {
--                      current_task = dev->ev_sender;
--                      next = ISC_LIST_NEXT(dev, ev_link);
--                      if ((task == NULL) || (task == current_task)) {
--                              dev->result = ISC_R_CANCELED;
--                              send_recvdone_event(sock, &dev);
--                      }
--                      dev = next;
--              }
--      }
--      how &= ~ISC_SOCKCANCEL_RECV;
--
--      if ((how & ISC_SOCKCANCEL_SEND) == ISC_SOCKCANCEL_SEND) {
--              isc_socketevent_t      *dev;
--              isc_socketevent_t      *next;
--              isc_task_t             *current_task;
--
--              dev = ISC_LIST_HEAD(sock->send_list);
--
--              while (dev != NULL) {
--                      current_task = dev->ev_sender;
--                      next = ISC_LIST_NEXT(dev, ev_link);
--                      if ((task == NULL) || (task == current_task)) {
--                              dev->result = ISC_R_CANCELED;
--                              send_senddone_event(sock, &dev);
--                      }
--                      dev = next;
--              }
--      }
--      how &= ~ISC_SOCKCANCEL_SEND;
--
--      if (((how & ISC_SOCKCANCEL_ACCEPT) == ISC_SOCKCANCEL_ACCEPT)
--          && !ISC_LIST_EMPTY(sock->accept_list)) {
--              isc_socket_newconnev_t *dev;
--              isc_socket_newconnev_t *next;
--              isc_task_t             *current_task;
--
--              dev = ISC_LIST_HEAD(sock->accept_list);
--              while (dev != NULL) {
--                      current_task = dev->ev_sender;
--                      next = ISC_LIST_NEXT(dev, ev_link);
--
--                      if ((task == NULL) || (task == current_task)) {
--
--                              dev->newsocket->references--;
--                              closesocket(dev->newsocket->fd);
--                              dev->newsocket->fd = INVALID_SOCKET;
--                              free_socket(&dev->newsocket, __LINE__);
--
--                              dev->result = ISC_R_CANCELED;
--                              send_acceptdone_event(sock, &dev);
--                      }
--
--                      dev = next;
--              }
--      }
--      how &= ~ISC_SOCKCANCEL_ACCEPT;
--
--      /*
--       * Connecting is not a list.
--       */
--      if (((how & ISC_SOCKCANCEL_CONNECT) == ISC_SOCKCANCEL_CONNECT)
--          && sock->connect_ev != NULL) {
--              isc_socket_connev_t    *dev;
--              isc_task_t             *current_task;
--
--              INSIST(sock->pending_connect);
--
--              dev = sock->connect_ev;
--              current_task = dev->ev_sender;
--
--              if ((task == NULL) || (task == current_task)) {
--                      closesocket(sock->fd);
--                      sock->fd = INVALID_SOCKET;
--                      _set_state(sock, SOCK_CLOSED);
--
--                      sock->connect_ev = NULL;
--                      dev->result = ISC_R_CANCELED;
--                      send_connectdone_event(sock, &dev);
--              }
--      }
--      how &= ~ISC_SOCKCANCEL_CONNECT;
--
--      maybe_free_socket(&sock, __LINE__);
--}
--
--isc_sockettype_t
--isc__socket_gettype(isc_socket_t *sock) {
--      isc_sockettype_t type;
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_R_CONNREFUSED);
--      }
--
--      type = sock->type;
--      UNLOCK(&sock->lock);
--      return (type);
--}
--
--isc_boolean_t
--isc__socket_isbound(isc_socket_t *sock) {
--      isc_boolean_t val;
--
--      REQUIRE(VALID_SOCKET(sock));
--
--      LOCK(&sock->lock);
--      CONSISTENT(sock);
--
--      /*
--       * make sure that the socket's not closed
--       */
--      if (sock->fd == INVALID_SOCKET) {
--              UNLOCK(&sock->lock);
--              return (ISC_FALSE);
--      }
--
--      val = ((sock->bound) ? ISC_TRUE : ISC_FALSE);
--      UNLOCK(&sock->lock);
--
--      return (val);
--}
--
--void
--isc__socket_ipv6only(isc_socket_t *sock, isc_boolean_t yes) {
--#if defined(IPV6_V6ONLY)
--      int onoff = yes ? 1 : 0;
--#else
--      UNUSED(yes);
--#endif
--
--      REQUIRE(VALID_SOCKET(sock));
--
--#ifdef IPV6_V6ONLY
--      if (sock->pf == AF_INET6) {
--              (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_V6ONLY,
--                               (void *)&onoff, sizeof(onoff));
--      }
--#endif
--}
--
--void
--isc__socket_cleanunix(isc_sockaddr_t *addr, isc_boolean_t active) {
--      UNUSED(addr);
--      UNUSED(active);
--}
--
--isc_result_t
--isc__socket_permunix(isc_sockaddr_t *addr, isc_uint32_t perm,
--                   isc_uint32_t owner,        isc_uint32_t group)
--{
--      UNUSED(addr);
--      UNUSED(perm);
--      UNUSED(owner);
--      UNUSED(group);
--      return (ISC_R_NOTIMPLEMENTED);
--}
--
--void
--isc__socket_setname(isc_socket_t *socket, const char *name, void *tag) {
--
--      /*
--       * Name 'socket'.
--       */
--
--      REQUIRE(VALID_SOCKET(socket));
--
--      LOCK(&socket->lock);
--      memset(socket->name, 0, sizeof(socket->name));
--      strncpy(socket->name, name, sizeof(socket->name) - 1);
--      socket->tag = tag;
--      UNLOCK(&socket->lock);
--}
--
--const char *
--isc__socket_getname(isc_socket_t *socket) {
--      return (socket->name);
--}
--
--void *
--isc__socket_gettag(isc_socket_t *socket) {
--      return (socket->tag);
--}
--
--void
--isc__socketmgr_setreserved(isc_socketmgr_t *manager, isc_uint32_t reserved) {
--      UNUSED(manager);
--      UNUSED(reserved);
--}
--
--void
--isc___socketmgr_maxudp(isc_socketmgr_t *manager, int maxudp) {
--
--      UNUSED(manager);
--      UNUSED(maxudp);
--}
--
--#ifdef HAVE_LIBXML2
--
--static const char *
--_socktype(isc_sockettype_t type)
--{
--      if (type == isc_sockettype_udp)
--              return ("udp");
--      else if (type == isc_sockettype_tcp)
--              return ("tcp");
--      else if (type == isc_sockettype_unix)
--              return ("unix");
--      else if (type == isc_sockettype_fdwatch)
--              return ("fdwatch");
--      else
--              return ("not-initialized");
--}
--
--void
--isc_socketmgr_renderxml(isc_socketmgr_t *mgr, xmlTextWriterPtr writer)
--{
--      isc_socket_t *sock;
--      char peerbuf[ISC_SOCKADDR_FORMATSIZE];
--      isc_sockaddr_t addr;
--      ISC_SOCKADDR_LEN_T len;
--
--      LOCK(&mgr->lock);
--
--#ifndef ISC_PLATFORM_USETHREADS
--      xmlTextWriterStartElement(writer, ISC_XMLCHAR "references");
--      xmlTextWriterWriteFormatString(writer, "%d", mgr->refs);
--      xmlTextWriterEndElement(writer);
--#endif
--
--      xmlTextWriterStartElement(writer, ISC_XMLCHAR "sockets");
--      sock = ISC_LIST_HEAD(mgr->socklist);
--      while (sock != NULL) {
--              LOCK(&sock->lock);
--              xmlTextWriterStartElement(writer, ISC_XMLCHAR "socket");
--
--              xmlTextWriterStartElement(writer, ISC_XMLCHAR "id");
--              xmlTextWriterWriteFormatString(writer, "%p", sock);
--              xmlTextWriterEndElement(writer);
--
--              if (sock->name[0] != 0) {
--                      xmlTextWriterStartElement(writer, ISC_XMLCHAR "name");
--                      xmlTextWriterWriteFormatString(writer, "%s",
--                                                     sock->name);
--                      xmlTextWriterEndElement(writer); /* name */
--              }
--
--              xmlTextWriterStartElement(writer, ISC_XMLCHAR "references");
--              xmlTextWriterWriteFormatString(writer, "%d", sock->references);
--              xmlTextWriterEndElement(writer);
--
--              xmlTextWriterWriteElement(writer, ISC_XMLCHAR "type",
--                                        ISC_XMLCHAR _socktype(sock->type));
--
--              if (sock->connected) {
--                      isc_sockaddr_format(&sock->address, peerbuf,
--                                          sizeof(peerbuf));
--                      xmlTextWriterWriteElement(writer,
--                                                ISC_XMLCHAR "peer-address",
--                                                ISC_XMLCHAR peerbuf);
--              }
--
--              len = sizeof(addr);
--              if (getsockname(sock->fd, &addr.type.sa, (void *)&len) == 0) {
--                      isc_sockaddr_format(&addr, peerbuf, sizeof(peerbuf));
--                      xmlTextWriterWriteElement(writer,
--                                                ISC_XMLCHAR "local-address",
--                                                ISC_XMLCHAR peerbuf);
--              }
--
--              xmlTextWriterStartElement(writer, ISC_XMLCHAR "states");
--              if (sock->pending_recv)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                              ISC_XMLCHAR "pending-receive");
--              if (sock->pending_send)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                                ISC_XMLCHAR "pending-send");
--              if (sock->pending_accept)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                               ISC_XMLCHAR "pending_accept");
--              if (sock->listener)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                                ISC_XMLCHAR "listener");
--              if (sock->connected)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                                ISC_XMLCHAR "connected");
--              if (sock->pending_connect)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                                ISC_XMLCHAR "connecting");
--              if (sock->bound)
--                      xmlTextWriterWriteElement(writer, ISC_XMLCHAR "state",
--                                                ISC_XMLCHAR "bound");
--
--              xmlTextWriterEndElement(writer); /* states */
--
--              xmlTextWriterEndElement(writer); /* socket */
--
--              UNLOCK(&sock->lock);
--              sock = ISC_LIST_NEXT(sock, link);
--      }
--      xmlTextWriterEndElement(writer); /* sockets */
--
--      UNLOCK(&mgr->lock);
--}
--#endif /* HAVE_LIBXML2 */
diff --cc util/copyrights
index a1f727064595ebb159fb8c3fd26a8da0e269bc38,a1f727064595ebb159fb8c3fd26a8da0e269bc38..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,2607 -1,2607 +1,0 @@@
--./.cvsignore                                  X       1998,1999,2000,2001,2004
--./CHANGES                                     X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./COPYRIGHT                                   TXT     1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./FAQ                                         X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./FAQ.xml                                     SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./Makefile.in                                 MAKE    1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./NSEC3-NOTES                                 X       2008,2009
--./README                                      X       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./README.idnkit                                       X       2005,2009
--./README.libdns                                       X       2009
--./README.pkcs11                                       X       2008,2009
--./README.rfc5011                              X       2009
--./acconfig.h                                  C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./aclocal.m4                                  X       1999,2000,2001
--./bin/.cvsignore                              X       1998,1999,2000,2001
--./bin/Makefile.in                             MAKE    1998,1999,2000,2001,2004,2007,2009
--./bin/check/.cvsignore                                X       2000,2001
--./bin/check/Makefile.in                               MAKE    2000,2001,2002,2003,2004,2005,2006,2007,2009
--./bin/check/check-tool.c                      C       2000,2001,2002,2004,2005,2006,2007,2008,2009
--./bin/check/check-tool.h                      C       2000,2001,2002,2004,2005,2007
--./bin/check/named-checkconf.8                 MAN     DOCBOOK
--./bin/check/named-checkconf.c                 C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./bin/check/named-checkconf.docbook           SGML    2000,2001,2002,2004,2005,2007,2009
--./bin/check/named-checkconf.html              HTML    DOCBOOK
--./bin/check/named-checkzone.8                 MAN     DOCBOOK
--./bin/check/named-checkzone.c                 C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/check/named-checkzone.docbook           SGML    2000,2001,2002,2004,2005,2006,2007,2009
--./bin/check/named-checkzone.html              HTML    DOCBOOK
--./bin/check/win32/checktool.dsp                       X       2006,2009
--./bin/check/win32/checktool.dsw                       X       2006
--./bin/check/win32/namedcheckconf.dsp          X       2001,2004,2005,2006,2009
--./bin/check/win32/namedcheckconf.dsw          X       2001
--./bin/check/win32/namedcheckconf.mak          X       2001,2002,2004,2005,2006,2009
--./bin/check/win32/namedcheckzone.dsp          X       2001,2002,2004,2005,2006,2009
--./bin/check/win32/namedcheckzone.dsw          X       2001
--./bin/check/win32/namedcheckzone.mak          X       2001,2002,2004,2005,2006,2009
--./bin/confgen/.cvsignore                      X       2009
--./bin/confgen/Makefile.in                     MAKE    2009
--./bin/confgen/ddns-confgen.8                  MAN     DOCBOOK
--./bin/confgen/ddns-confgen.c                  C       2009
--./bin/confgen/ddns-confgen.docbook            SGML    2009
--./bin/confgen/ddns-confgen.html                       HTML    DOCBOOK
--./bin/confgen/include/confgen/os.h            C       2009
--./bin/confgen/keygen.c                                C       2009
--./bin/confgen/keygen.h                                C       2009
--./bin/confgen/rndc-confgen.8                  MAN     DOCBOOK
--./bin/confgen/rndc-confgen.c                  C       2001,2003,2004,2005,2007,2008,2009
--./bin/confgen/rndc-confgen.docbook            SGML    2001,2003,2004,2005,2007,2009
--./bin/confgen/rndc-confgen.html                       HTML    DOCBOOK
--./bin/confgen/unix/.cvsignore                 X       2009
--./bin/confgen/unix/Makefile.in                        MAKE    2009
--./bin/confgen/unix/os.c                               C       2009
--./bin/confgen/util.c                          C       2009
--./bin/confgen/util.h                          C       2009
--./bin/confgen/win32/confgentool.dsp           X       2009
--./bin/confgen/win32/confgentool.dsw           X       2009
--./bin/confgen/win32/ddnsconfgen.dsp           X       2009
--./bin/confgen/win32/ddnsconfgen.dsw           X       2009
--./bin/confgen/win32/ddnsconfgen.mak           X       2009
--./bin/confgen/win32/os.c                      C       2009
--./bin/confgen/win32/rndcconfgen.dsp           X       2001,2009
--./bin/confgen/win32/rndcconfgen.dsw           X       2001,2004,2005,2006,2009
--./bin/confgen/win32/rndcconfgen.mak           X       2001,2004,2005,2006,2009
--./bin/dig/.cvsignore                          X       2000,2001
--./bin/dig/Makefile.in                         MAKE    2000,2001,2002,2004,2005,2007,2009
--./bin/dig/dig.1                                       MAN     DOCBOOK
--./bin/dig/dig.c                                       C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dig/dig.docbook                         SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dig/dig.html                            HTML    DOCBOOK
--./bin/dig/dighost.c                           C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dig/host.1                              MAN     DOCBOOK
--./bin/dig/host.c                              C       2000,2001,2002,2003,2004,2005,2006,2007,2009
--./bin/dig/host.docbook                                SGML    2000,2001,2002,2004,2005,2007,2008,2009
--./bin/dig/host.html                           HTML    DOCBOOK
--./bin/dig/include/dig/dig.h                   C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dig/nslookup.1                          MAN     DOCBOOK
--./bin/dig/nslookup.c                          C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dig/nslookup.docbook                    SGML    2004,2005,2006,2007
--./bin/dig/nslookup.html                               HTML    DOCBOOK
--./bin/dig/win32/dig.dsp                               X       2001,2002,2004,2005,2006,2009
--./bin/dig/win32/dig.dsw                               X       2001
--./bin/dig/win32/dig.mak                               X       2001,2002,2004,2005,2006,2009
--./bin/dig/win32/dighost.dsp                   X       2006,2009
--./bin/dig/win32/dighost.dsw                   X       2006
--./bin/dig/win32/host.dsp                      X       2001,2002,2004,2005,2006,2009
--./bin/dig/win32/host.dsw                      X       2001
--./bin/dig/win32/host.mak                      X       2001,2002,2004,2005,2006,2009
--./bin/dig/win32/nslookup.dsp                  X       2001,2002,2004,2005,2009
--./bin/dig/win32/nslookup.dsw                  X       2001
--./bin/dig/win32/nslookup.mak                  X       2001,2002,2004,2005,2006,2009
--./bin/dnssec/.cvsignore                               X       2000,2001,2008,2009
--./bin/dnssec/Makefile.in                      MAKE    2000,2001,2002,2004,2005,2007,2008,2009
--./bin/dnssec/dnssec-dsfromkey.8                       MAN     2008,2009
--./bin/dnssec/dnssec-dsfromkey.c                       C       2008,2009
--./bin/dnssec/dnssec-dsfromkey.docbook         SGML    2008,2009
--./bin/dnssec/dnssec-dsfromkey.html            HTML    2008,2009
--./bin/dnssec/dnssec-keyfromlabel.8            MAN     DOCBOOK
--./bin/dnssec/dnssec-keyfromlabel.c            C       2007,2008,2009
--./bin/dnssec/dnssec-keyfromlabel.docbook      SGML    2008,2009
--./bin/dnssec/dnssec-keyfromlabel.html         HTML    DOCBOOK
--./bin/dnssec/dnssec-keygen.8                  MAN     DOCBOOK
--./bin/dnssec/dnssec-keygen.c                  C.NAI   1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dnssec/dnssec-keygen.docbook            SGML    2000,2001,2002,2003,2004,2005,2007,2008,2009
--./bin/dnssec/dnssec-keygen.html                       HTML    DOCBOOK
--./bin/dnssec/dnssec-revoke.8                  MAN     2009
--./bin/dnssec/dnssec-revoke.c                  C       2009
--./bin/dnssec/dnssec-revoke.docbook            SGML    2009
--./bin/dnssec/dnssec-revoke.html                       HTML    2009
--./bin/dnssec/dnssec-settime.8                 MAN     2009
--./bin/dnssec/dnssec-settime.c                 C       2009
--./bin/dnssec/dnssec-settime.docbook           SGML    2009
--./bin/dnssec/dnssec-settime.html              HTML    2009
--./bin/dnssec/dnssec-signzone.8                        MAN     DOCBOOK
--./bin/dnssec/dnssec-signzone.c                        C.NAI   1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dnssec/dnssec-signzone.docbook          SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/dnssec/dnssec-signzone.html             HTML    DOCBOOK
--./bin/dnssec/dnssectool.c                     C       2000,2001,2003,2004,2005,2007,2009
--./bin/dnssec/dnssectool.h                     C       2000,2001,2003,2004,2007,2008,2009
--./bin/dnssec/win32/dnssectool.dsp             X       2006,2009
--./bin/dnssec/win32/dnssectool.dsw             X       2006,2009
--./bin/dnssec/win32/dsfromkey.dsp              X       2008,2009
--./bin/dnssec/win32/dsfromkey.dsw              X       2008
--./bin/dnssec/win32/dsfromkey.mak              X       2008,2009
--./bin/dnssec/win32/keyfromlabel.dsp           X       2008,2009
--./bin/dnssec/win32/keyfromlabel.dsw           X       2008
--./bin/dnssec/win32/keyfromlabel.mak           X       2008,2009
--./bin/dnssec/win32/keygen.dsp                 X       2001,2004,2005,2006,2009
--./bin/dnssec/win32/keygen.dsw                 X       2001
--./bin/dnssec/win32/keygen.mak                 X       2001,2004,2005,2006,2009
--./bin/dnssec/win32/nsupdate.dsp                       X       2001,2004,2005
--./bin/dnssec/win32/nsupdate.dsw                       X       2001
--./bin/dnssec/win32/revoke.dsp                 X       2009
--./bin/dnssec/win32/revoke.dsw                 X       2009
--./bin/dnssec/win32/revoke.mak                 X       2009
--./bin/dnssec/win32/settime.dsp                        X       2009
--./bin/dnssec/win32/settime.dsw                        X       2009
--./bin/dnssec/win32/settime.mak                        X       2009
--./bin/dnssec/win32/signzone.dsp                       X       2001,2004,2005,2006,2009
--./bin/dnssec/win32/signzone.dsw                       X       2001
--./bin/dnssec/win32/signzone.mak                       X       2001,2004,2005,2006,2009
--./bin/named/.cvsignore                                X       1999,2000,2001,2007,2008
--./bin/named/Makefile.in                               MAKE    1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./bin/named/bind.keys.h                               X       2009
--./bin/named/bind9.xsl                         SGML    2006,2007,2008,2009
--./bin/named/bind9.xsl.h                               X       2007,2008,2009
--./bin/named/bindkeys.pl                               PERL    2009
--./bin/named/builtin.c                         C       2001,2002,2003,2004,2005,2007,2009
--./bin/named/client.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/config.c                          C       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/control.c                         C       2001,2002,2003,2004,2005,2006,2007,2009
--./bin/named/controlconf.c                     C       2001,2002,2003,2004,2005,2006,2007,2008
--./bin/named/convertxsl.pl                     PERL    2006,2007,2008
--./bin/named/include/named/builtin.h           C       2001,2004,2005,2007
--./bin/named/include/named/client.h            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/include/named/config.h            C       2001,2002,2004,2005,2006,2007,2009
--./bin/named/include/named/control.h           C       2001,2002,2003,2004,2005,2006,2007
--./bin/named/include/named/globals.h           C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/include/named/interfacemgr.h      C       1999,2000,2001,2002,2004,2005,2007
--./bin/named/include/named/listenlist.h                C       2000,2001,2004,2005,2007
--./bin/named/include/named/log.h                       C       1999,2000,2001,2002,2004,2005,2007,2009
--./bin/named/include/named/logconf.h           C       1999,2000,2001,2004,2005,2006,2007
--./bin/named/include/named/lwaddr.h            C       2000,2001,2004,2005,2007
--./bin/named/include/named/lwdclient.h         C       2000,2001,2004,2005,2007,2009
--./bin/named/include/named/lwresd.h            C       2000,2001,2004,2005,2006,2007
--./bin/named/include/named/lwsearch.h          C       2000,2001,2004,2005,2007
--./bin/named/include/named/main.h              C       1999,2000,2001,2002,2004,2005,2007
--./bin/named/include/named/notify.h            C       1999,2000,2001,2004,2005,2007,2009
--./bin/named/include/named/ns_smf_globals.h    C       2005,2007
--./bin/named/include/named/query.h             C       1999,2000,2001,2002,2004,2005,2007
--./bin/named/include/named/server.h            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/include/named/sortlist.h          C       2000,2001,2004,2005,2006,2007
--./bin/named/include/named/statschannel.h      C       2008
--./bin/named/include/named/tkeyconf.h          C       1999,2000,2001,2004,2005,2006,2007
--./bin/named/include/named/tsigconf.h          C       1999,2000,2001,2004,2005,2006,2007,2009
--./bin/named/include/named/types.h             C       1999,2000,2001,2004,2005,2006,2007,2008,2009
--./bin/named/include/named/update.h            C       1999,2000,2001,2004,2005,2007
--./bin/named/include/named/xfrout.h            C       1999,2000,2001,2004,2005,2007
--./bin/named/include/named/zoneconf.h          C       1999,2000,2001,2002,2004,2005,2006,2007
--./bin/named/interfacemgr.c                    C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./bin/named/listenlist.c                      C       2000,2001,2004,2005,2007
--./bin/named/log.c                             C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./bin/named/logconf.c                         C       1999,2000,2001,2004,2005,2006,2007
--./bin/named/lwaddr.c                          C       2000,2001,2004,2005,2007,2008
--./bin/named/lwdclient.c                               C       2000,2001,2004,2005,2007
--./bin/named/lwderror.c                                C       2000,2001,2004,2005,2007
--./bin/named/lwdgabn.c                         C       2000,2001,2004,2005,2006,2007,2009
--./bin/named/lwdgnba.c                         C       2000,2001,2002,2004,2005,2007,2008
--./bin/named/lwdgrbn.c                         C       2000,2001,2003,2004,2005,2006,2007,2009
--./bin/named/lwdnoop.c                         C       2000,2001,2004,2005,2007,2008
--./bin/named/lwresd.8                          MAN     DOCBOOK
--./bin/named/lwresd.c                          C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/lwresd.docbook                    SGML    2000,2001,2004,2005,2007,2008,2009
--./bin/named/lwresd.html                               HTML    DOCBOOK
--./bin/named/lwsearch.c                                C       2000,2001,2004,2005,2007
--./bin/named/main.c                            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/named.8                           MAN     DOCBOOK
--./bin/named/named.conf.5                      MAN     DOCBOOK
--./bin/named/named.conf.docbook                        SGML    2004,2005,2006,2007,2008
--./bin/named/named.conf.html                   HTML    DOCBOOK
--./bin/named/named.docbook                     SGML    2000,2001,2003,2004,2005,2006,2007,2008,2009
--./bin/named/named.html                                HTML    DOCBOOK
--./bin/named/notify.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007
--./bin/named/query.c                           C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/server.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/sortlist.c                                C       2000,2001,2004,2005,2006,2007
--./bin/named/statschannel.c                    C       2008,2009
--./bin/named/tkeyconf.c                                C       1999,2000,2001,2004,2005,2006,2007,2009
--./bin/named/tsigconf.c                                C       1999,2000,2001,2004,2005,2006,2007,2009
--./bin/named/unix/.cvsignore                   X       1999,2000,2001
--./bin/named/unix/Makefile.in                  MAKE    1999,2000,2001,2004,2007,2009
--./bin/named/unix/include/named/os.h           C       1999,2000,2001,2002,2004,2005,2007,2008,2009
--./bin/named/unix/os.c                         C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./bin/named/update.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/win32/include/named/ntservice.h   C       1999,2000,2001,2002,2003,2004,2007
--./bin/named/win32/include/named/os.h          C       1999,2000,2001,2002,2004,2007,2008,2009
--./bin/named/win32/named.dsp                   X       2001,2004,2005,2008,2009
--./bin/named/win32/named.dsw                   X       2001
--./bin/named/win32/named.mak                   X       2001,2002,2004,2005,2006,2008,2009
--./bin/named/win32/ntservice.c                 C       1999,2000,2001,2002,2004,2006,2007,2009
--./bin/named/win32/os.c                                C       1999,2000,2001,2002,2004,2005,2007,2008,2009
--./bin/named/xfrout.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/named/zoneconf.c                                C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/nsupdate/.cvsignore                     X       2000,2001
--./bin/nsupdate/Makefile.in                    MAKE    2000,2001,2002,2004,2006,2007,2008,2009
--./bin/nsupdate/nsupdate.1                     MAN     DOCBOOK
--./bin/nsupdate/nsupdate.c                     C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/nsupdate/nsupdate.docbook                       SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/nsupdate/nsupdate.html                  HTML    DOCBOOK
--./bin/nsupdate/win32/nsupdate.dsp             X       2001,2004,2005,2009
--./bin/nsupdate/win32/nsupdate.dsw             X       2001
--./bin/nsupdate/win32/nsupdate.mak             X       2001,2002,2004,2005,2006,2009
--./bin/pkcs11/.cvsignore                               X       2009
--./bin/pkcs11/pkcs11-destroy.c                 X       2009
--./bin/pkcs11/pkcs11-keygen.c                  X       2009
--./bin/pkcs11/pkcs11-list.c                    X       2009
--./bin/rndc/.cvsignore                         X       2000,2001
--./bin/rndc/Makefile.in                                MAKE    2000,2001,2002,2004,2007,2009
--./bin/rndc/include/rndc/os.h                  C       2001,2004,2005,2007,2009
--./bin/rndc/rndc.8                             MAN     DOCBOOK
--./bin/rndc/rndc.c                             C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/rndc/rndc.conf                          CONF-C  2000,2001,2004,2007
--./bin/rndc/rndc.conf.5                                MAN     DOCBOOK
--./bin/rndc/rndc.conf.docbook                  SGML    2000,2001,2004,2005,2007
--./bin/rndc/rndc.conf.html                     HTML    DOCBOOK
--./bin/rndc/rndc.docbook                               SGML    2000,2001,2004,2005,2007
--./bin/rndc/rndc.html                          HTML    DOCBOOK
--./bin/rndc/util.c                             C       2000,2001,2004,2005,2007
--./bin/rndc/util.h                             C       2000,2001,2004,2005,2007
--./bin/rndc/win32/rndc.dsp                     X       2001,2004,2005,2006,2009
--./bin/rndc/win32/rndc.dsw                     X       2001
--./bin/rndc/win32/rndc.mak                     X       2001,2002,2004,2005,2006,2009
--./bin/rndc/win32/rndcutil.dsp                 X       2006
--./bin/rndc/win32/rndcutil.dsw                 X       2006
--./bin/tests/.cvsignore                                X       1998,1999,2000,2001
--./bin/tests/Kchild.example.+003+04017.key     X       2000,2001
--./bin/tests/Kchild.example.+003+04017.private X       2000,2001
--./bin/tests/Makefile.in                               MAKE    1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/tests/adb_test.c                                C       1999,2000,2001,2004,2005,2007,2009
--./bin/tests/b8t.mk                            MAKE    1999,2000,2001,2004,2007
--./bin/tests/b9t.mk                            MAKE    1999,2000,2001,2004,2007
--./bin/tests/backtrace_test.c                  C       2009
--./bin/tests/byaddr_test.c                     C       2000,2001,2002,2004,2005,2007
--./bin/tests/byname_test.c                     C       2000,2001,2004,2005,2007,2009
--./bin/tests/cfg_test.c                                C       2001,2002,2004,2005,2007,2009
--./bin/tests/compress_test.c                   C       1999,2000,2001,2004,2005,2006,2007
--./bin/tests/db/.cvsignore                     X       1999,2000,2001
--./bin/tests/db/Makefile.in                    MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/db/dns_db_class_1.data            X       1999,2000,2001
--./bin/tests/db/dns_db_class_data              X       1999,2000,2001
--./bin/tests/db/dns_db_closeversion_1.data     X       1999,2000,2001
--./bin/tests/db/dns_db_closeversion_1_data     X       1999,2000,2001
--./bin/tests/db/dns_db_closeversion_2.data     X       1999,2000,2001
--./bin/tests/db/dns_db_closeversion_2_data     X       1999,2000,2001
--./bin/tests/db/dns_db_currentversion.data     X       1999,2000,2001
--./bin/tests/db/dns_db_currentversion_data     X       1999,2000,2001
--./bin/tests/db/dns_db_expirenode.data         X       1999,2000,2001
--./bin/tests/db/dns_db_expirenode_data         X       1999,2000,2001
--./bin/tests/db/dns_db_find_1.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_10.data            X       1999,2000,2001
--./bin/tests/db/dns_db_find_10_data            X       1999,2000,2001
--./bin/tests/db/dns_db_find_1_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_2.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_2_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_3.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_3_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_4.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_4_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_5.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_5_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_6.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_6_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_7.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_7_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_8.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_8_data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_9.data             X       1999,2000,2001
--./bin/tests/db/dns_db_find_9_data             X       1999,2000,2001
--./bin/tests/db/dns_db_findnode_1.data         X       1999,2000,2001
--./bin/tests/db/dns_db_findnode_1_data         X       1999,2000,2001
--./bin/tests/db/dns_db_findnode_2.data         X       1999,2000,2001
--./bin/tests/db/dns_db_findnode_2_data         X       1999,2000,2001
--./bin/tests/db/dns_db_iscache_1.data          X       1999,2000,2001
--./bin/tests/db/dns_db_iscache_1_data          X       1999,2000,2001
--./bin/tests/db/dns_db_iscache_2.data          X       1999,2000,2001
--./bin/tests/db/dns_db_iscache_2_data          X       1999,2000,2001
--./bin/tests/db/dns_db_iszone_1.data           X       1999,2000,2001
--./bin/tests/db/dns_db_iszone_1_data           X       1999,2000,2001
--./bin/tests/db/dns_db_iszone_2.data           X       1999,2000,2001
--./bin/tests/db/dns_db_iszone_2_data           X       1999,2000,2001
--./bin/tests/db/dns_db_load_1.data             X       1999,2000,2001
--./bin/tests/db/dns_db_load_25.data            X       2000,2001
--./bin/tests/db/dns_db_load_data                       X       1999,2000,2001
--./bin/tests/db/dns_db_load_soa_not_top                X       2000,2001
--./bin/tests/db/dns_db_newversion.data         X       1999,2000,2001
--./bin/tests/db/dns_db_newversion_data         X       1999,2000,2001
--./bin/tests/db/dns_db_origin_1.data           X       1999,2000,2001
--./bin/tests/db/dns_db_origin_data             X       1999,2000,2001
--./bin/tests/db/t_db.c                         C       1999,2000,2001,2004,2005,2007,2009
--./bin/tests/db_test.c                         C       1999,2000,2001,2004,2005,2007,2008,2009
--./bin/tests/dnssec-signzone/Kexample.com.+005+07065.key       X       2009
--./bin/tests/dnssec-signzone/Kexample.com.+005+07065.private   X       2009
--./bin/tests/dnssec-signzone/Kexample.com.+005+23362.key       X       2009
--./bin/tests/dnssec-signzone/Kexample.com.+005+23362.private   X       2009
--./bin/tests/dnssec-signzone/bogus-ksk.key     X       2009
--./bin/tests/dnssec-signzone/bogus-zsk.key     X       2009
--./bin/tests/dnssec-signzone/run-test.sh               SH      2009
--./bin/tests/dnssec-signzone/test1.zone                X       2009
--./bin/tests/dnssec-signzone/test2.zone                X       2009
--./bin/tests/dnssec-signzone/test3.zone                X       2009
--./bin/tests/dnssec-signzone/test4.zone                X       2009
--./bin/tests/dnssec-signzone/test5.zone                X       2009
--./bin/tests/dnssec-signzone/test6.zone                X       2009
--./bin/tests/dnssec-signzone/test7.zone                X       2009
--./bin/tests/dnssec-signzone/test8.zone                X       2009
--./bin/tests/dst/.cvsignore                    X       1999,2000,2001,2006
--./bin/tests/dst/Kdh.+002+18602.key            X       2001
--./bin/tests/dst/Kdh.+002+18602.private                X       2001
--./bin/tests/dst/Kdh.+002+48957.key            X       2001
--./bin/tests/dst/Kdh.+002+48957.private                X       2001
--./bin/tests/dst/Ktest.+001+00002.key          X       2001,2004
--./bin/tests/dst/Ktest.+001+54622.key          X       1999,2000,2001,2004
--./bin/tests/dst/Ktest.+001+54622.private      X       1999,2000,2001
--./bin/tests/dst/Ktest.+003+23616.key          X       2001,2004
--./bin/tests/dst/Ktest.+003+23616.private      X       2001
--./bin/tests/dst/Ktest.+003+49667.key          X       2001,2004
--./bin/tests/dst/Makefile.in                   MAKE    1999,2000,2001,2002,2004,2006,2007,2008,2009
--./bin/tests/dst/dst_2_data                    X       1999,2000,2001
--./bin/tests/dst/dst_test.c                    C       1999,2000,2001,2004,2005,2007,2009
--./bin/tests/dst/gsstest.c                     C       2006,2007,2009
--./bin/tests/dst/t2_data_1                     X       1999,2000,2001
--./bin/tests/dst/t2_data_2                     X       1999,2000,2001
--./bin/tests/dst/t2_dsasig                     X       1999,2000,2001
--./bin/tests/dst/t2_rsasig                     X       1999,2000,2001
--./bin/tests/dst/t_dst.c                               C       1999,2000,2001,2004,2005,2007,2008,2009
--./bin/tests/entropy2_test.c                   C       2000,2001,2004,2005,2007
--./bin/tests/entropy_test.c                    C       2000,2001,2004,2005,2007
--./bin/tests/fsaccess_test.c                   C       2000,2001,2004,2005,2007
--./bin/tests/gxba_test.c                               C       2000,2001,2004,2005,2007
--./bin/tests/gxbn_test.c                               C       2000,2001,2004,2005,2007
--./bin/tests/hash_test.c                               C       2000,2001,2004,2005,2006,2007
--./bin/tests/headerdep_test.sh.in              SH      2000,2001,2004,2007
--./bin/tests/inter_test.c                      C       2000,2001,2003,2004,2005,2007,2008
--./bin/tests/keyboard_test.c                   C       2000,2001,2004,2005,2007
--./bin/tests/lex_test.c                                C       1998,1999,2000,2001,2004,2005,2007
--./bin/tests/lfsr_test.c                               C       1999,2000,2001,2004,2005,2007
--./bin/tests/log_test.c                                C       1999,2000,2001,2004,2007
--./bin/tests/lwres_test.c                      C       2000,2001,2004,2005,2007
--./bin/tests/lwresconf_test.c                  C       2000,2001,2004,2007
--./bin/tests/master/.cvsignore                 X       1999,2000,2001
--./bin/tests/master/Makefile.in                        MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/master/dns_master_load_10_data    X       2000,2001
--./bin/tests/master/dns_master_load_11_data    X       2000,2001
--./bin/tests/master/dns_master_load_1_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_2_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_3_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_4_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_5_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_6_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_7_data     X       1999,2000,2001
--./bin/tests/master/dns_master_load_8_data     X       2000,2001
--./bin/tests/master/dns_master_load_9_data     X       2000,2001
--./bin/tests/master/master1.data                       X       1999,2000,2001
--./bin/tests/master/master10.data              X       2000,2001
--./bin/tests/master/master11.data              X       2000,2001
--./bin/tests/master/master2.data                       X       1999,2000,2001
--./bin/tests/master/master3.data                       X       1999,2000,2001
--./bin/tests/master/master4.data                       X       1999,2000,2001
--./bin/tests/master/master5.data                       X       1999,2000,2001
--./bin/tests/master/master6.data                       X       1999,2000,2001,2003
--./bin/tests/master/master7.data                       X       1999,2000,2001,2003
--./bin/tests/master/master8.data                       X       2000,2001
--./bin/tests/master/master9.data                       X       2000,2001
--./bin/tests/master/t_master.c                 C       1998,1999,2000,2001,2003,2004,2005,2007,2009
--./bin/tests/master_test.c                     C       1999,2000,2001,2004,2007,2009
--./bin/tests/mem/.cvsignore                    X       1999,2000,2001
--./bin/tests/mem/Makefile.in                   MAKE    1998,1999,2000,2001,2002,2004,2005,2007,2009
--./bin/tests/mem/t_mem.c                               C       1999,2000,2001,2004,2007,2009
--./bin/tests/mempool_test.c                    C       1999,2000,2001,2004,2007
--./bin/tests/name_test.c                               C       1998,1999,2000,2001,2003,2004,2005,2007,2009
--./bin/tests/named.conf                                CONF-C  1999,2000,2001,2004,2007
--./bin/tests/names/.cvsignore                  X       1999,2000,2001
--./bin/tests/names/Makefile.in                 MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/names/dns_name_compare_data               X       1999,2000,2001
--./bin/tests/names/dns_name_countlabels_data   X       1999,2000,2001,2003
--./bin/tests/names/dns_name_fromregion_data    X       1999,2000,2001,2003
--./bin/tests/names/dns_name_fromtext_data      X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_1_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_2_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_3_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_4_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_5_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_6_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_7_data    X       1999,2000,2001
--./bin/tests/names/dns_name_fromwire_8_data    X       1999,2000,2001,2006
--./bin/tests/names/dns_name_fullcompare_data   X       1999,2000,2001
--./bin/tests/names/dns_name_getlabel_data      X       1999,2000,2001
--./bin/tests/names/dns_name_getlabelsequence_data      X       1999,2000,2001
--./bin/tests/names/dns_name_hash_data          X       1999,2000,2001,2003
--./bin/tests/names/dns_name_isabsolute_data    X       1999,2000,2001,2003
--./bin/tests/names/dns_name_issubdomain_data   X       1999,2000,2001
--./bin/tests/names/dns_name_rdatacompare_data  X       1999,2000,2001
--./bin/tests/names/dns_name_toregion_data      X       1999,2000,2001,2003
--./bin/tests/names/dns_name_totext_data                X       1999,2000,2001
--./bin/tests/names/dns_name_towire_1_data      X       1999,2000,2001
--./bin/tests/names/dns_name_towire_2_data      X       1999,2000,2001
--./bin/tests/names/t_names.c                   C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/tests/names/wire_test1.data             X       1999,2000,2001
--./bin/tests/names/wire_test2.data             X       1999,2000,2001
--./bin/tests/names/wire_test3_1.data           X       1999,2000,2001
--./bin/tests/names/wire_test3_2.data           X       1999,2000,2001
--./bin/tests/names/wire_test4.data             X       1999,2000,2001
--./bin/tests/names/wire_test5.data             X       1999,2000,2001
--./bin/tests/names/wire_test6.data             X       1999,2000,2001
--./bin/tests/names/wire_test7.data             X       1999,2000,2001
--./bin/tests/names/wire_test8.data             X       1999,2000,2001
--./bin/tests/ndc.conf                          CONF-C  2000,2001,2004,2007
--./bin/tests/ndc.conf-include                  CONF-C  2001,2004,2007
--./bin/tests/net/.cvsignore                    X       2000,2001
--./bin/tests/net/Makefile.in                   MAKE    2000,2001,2002,2004,2007,2009
--./bin/tests/net/driver.c                      C       2000,2001,2004,2007
--./bin/tests/net/driver.h                      C       2000,2001,2004,2007
--./bin/tests/net/netaddr_multicast.c           C       2000,2001,2004,2007
--./bin/tests/net/sockaddr_multicast.c          C       2000,2001,2004,2007
--./bin/tests/net/testsuite.h                   C       2000,2001,2004,2007
--./bin/tests/nsecify.c                         C       1999,2000,2001,2003,2004,2007,2008,2009
--./bin/tests/printmsg.c                                C       1998,1999,2000,2001,2004,2007
--./bin/tests/printmsg.h                                C       1998,1999,2000,2001,2004,2007
--./bin/tests/ratelimiter_test.c                        C       1999,2000,2001,2004,2007
--./bin/tests/rbt/.cvsignore                    X       1999,2000,2001
--./bin/tests/rbt/Makefile.in                   MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/rbt/dns_rbt.data                  X       1999,2000,2001
--./bin/tests/rbt/dns_rbt_addname_1_data                X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_addname_2_data                X       1999,2000,2001
--./bin/tests/rbt/dns_rbt_bitstring.data                X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_create_1_data         X       1999,2000,2001
--./bin/tests/rbt/dns_rbt_deletename_1_data     X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_deletename_2_data     X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_findname_1_data               X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_findname_2_data               X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbt_findname_3_data               X       1999,2000,2001,2003
--./bin/tests/rbt/dns_rbtnodechain_first_1.data X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_first_2.data X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_first_data   X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_init.data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_init_data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_last_1.data  X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_last_2.data  X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_last_data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_next.data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_next_data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_prev.data    X       1999,2000,2001
--./bin/tests/rbt/dns_rbtnodechain_prev_data    X       1999,2000,2001
--./bin/tests/rbt/t_rbt.c                               C       1998,1999,2000,2001,2003,2004,2005,2007,2009
--./bin/tests/rbt_test.c                                C       1999,2000,2001,2004,2005,2007,2009
--./bin/tests/rbt_test.out                      X       1999,2000,2001
--./bin/tests/rbt_test.txt                      SH      1999,2000,2001,2004,2007
--./bin/tests/rdata_test.c                      C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
--./bin/tests/resolv.conf.sample                        CONF-SH 2000,2001,2004,2007
--./bin/tests/rwlock_test.c                     C       1998,1999,2000,2001,2004,2005,2007
--./bin/tests/serial_test.c                     C       1999,2000,2001,2003,2004,2007
--./bin/tests/shutdown_test.c                   C       1998,1999,2000,2001,2004,2007
--./bin/tests/sig0_test.c                               C       2000,2001,2004,2005,2007,2008,2009
--./bin/tests/sock_test.c                               C       1998,1999,2000,2001,2004,2007,2008
--./bin/tests/sockaddr/.cvsignore                       X       1999,2000,2001
--./bin/tests/sockaddr/Makefile.in              MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/sockaddr/t_sockaddr.c             C       1999,2000,2001,2004,2007
--./bin/tests/sym_test.c                                C       1998,1999,2000,2001,2004,2005,2007
--./bin/tests/system/.cvsignore                 X       2000,2001
--./bin/tests/system/Makefile.in                        MAKE    2000,2001,2004,2007,2008
--./bin/tests/system/README                     TXT.BRIEF       2000,2001,2004
--./bin/tests/system/acl/clean.sh                       SH      2008
--./bin/tests/system/acl/ns2/named1.conf                CONF-C  2008
--./bin/tests/system/acl/ns2/named2.conf                CONF-C  2008
--./bin/tests/system/acl/ns2/named3.conf                CONF-C  2008
--./bin/tests/system/acl/ns2/named4.conf                CONF-C  2008
--./bin/tests/system/acl/setup.sh                       SH      2008
--./bin/tests/system/acl/tests.sh                       SH      2008
--./bin/tests/system/cacheclean/clean.sh                SH      2001,2004,2007
--./bin/tests/system/cacheclean/dig.batch               X       2001
--./bin/tests/system/cacheclean/knowngood.dig.out       X       2001
--./bin/tests/system/cacheclean/ns1/.cvsignore  X       2001
--./bin/tests/system/cacheclean/ns1/example.db  ZONE    2001,2004,2007
--./bin/tests/system/cacheclean/ns1/named.conf  CONF-C  2001,2004,2005,2007
--./bin/tests/system/cacheclean/ns2/.cvsignore  X       2001
--./bin/tests/system/cacheclean/ns2/named.conf  CONF-C  2001,2004,2005,2007
--./bin/tests/system/cacheclean/tests.sh                SH      2001,2004,2007
--./bin/tests/system/checkconf/bad.conf         CONF-C  2005,2007
--./bin/tests/system/checkconf/good.conf                CONF-C  2005,2007
--./bin/tests/system/checkconf/tests.sh         SH      2005,2007
--./bin/tests/system/checknames/clean.sh                SH      2004,2007
--./bin/tests/system/checknames/ns1/fail.example.db.in  ZONE    2004,2007
--./bin/tests/system/checknames/ns1/fail.update.db.in   ZONE    2004,2007
--./bin/tests/system/checknames/ns1/ignore.example.db.in        ZONE    2004,2007
--./bin/tests/system/checknames/ns1/ignore.update.db.in ZONE    2004,2007
--./bin/tests/system/checknames/ns1/named.conf  CONF-C  2004,2005,2007
--./bin/tests/system/checknames/ns1/root.db     ZONE    2004,2007
--./bin/tests/system/checknames/ns1/warn.example.db.in  ZONE    2004,2007
--./bin/tests/system/checknames/ns1/warn.update.db.in   ZONE    2004,2007
--./bin/tests/system/checknames/ns2/named.conf  CONF-C  2004,2007
--./bin/tests/system/checknames/ns2/root.hints  ZONE    2004,2007
--./bin/tests/system/checknames/ns3/named.conf  CONF-C  2004,2007
--./bin/tests/system/checknames/ns3/root.hints  ZONE    2004,2007
--./bin/tests/system/checknames/setup.sh                SH      2004,2007
--./bin/tests/system/checknames/tests.sh                SH      2004,2007
--./bin/tests/system/cleanall.sh                        SH      2000,2001,2004,2007
--./bin/tests/system/common/controls.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/common/rndc.conf           CONF-C  2000,2001,2004,2007
--./bin/tests/system/common/root.hint           ZONE    2000,2001,2004,2007
--./bin/tests/system/conf.sh.in                 SH      2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./bin/tests/system/dialup/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/dialup/ns1/example.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/dialup/ns1/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/dialup/ns1/root.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/dialup/ns2/.cvsignore      X       2000,2001
--./bin/tests/system/dialup/ns2/hint.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/dialup/ns2/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/dialup/ns3/.cvsignore      X       2000,2001
--./bin/tests/system/dialup/ns3/hint.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/dialup/ns3/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/dialup/setup.sh            SH      2000,2001,2004,2007
--./bin/tests/system/dialup/tests.sh            SH      2000,2001,2004,2007
--./bin/tests/system/digcomp.pl                 PERL    2000,2001,2004,2007
--./bin/tests/system/dlv/clean.sh                       SH      2004,2007
--./bin/tests/system/dlv/ns1/named.conf         CONF-C  2004,2007
--./bin/tests/system/dlv/ns1/root.db            ZONE    2004,2007
--./bin/tests/system/dlv/ns1/rootservers.utld.db        ZONE    2004,2007
--./bin/tests/system/dlv/ns2/hints              ZONE    2004,2007
--./bin/tests/system/dlv/ns2/named.conf         CONF-C  2004,2007
--./bin/tests/system/dlv/ns2/utld.db            ZONE    2004,2007
--./bin/tests/system/dlv/ns3/child.db.in                ZONE    2004,2007
--./bin/tests/system/dlv/ns3/dlv.db.in          ZONE    2004,2007
--./bin/tests/system/dlv/ns3/hints              ZONE    2004,2007
--./bin/tests/system/dlv/ns3/named.conf         CONF-C  2004,2007
--./bin/tests/system/dlv/ns3/sign.sh            SH      2004,2007
--./bin/tests/system/dlv/ns4/child.db           ZONE    2004,2007
--./bin/tests/system/dlv/ns4/hints              ZONE    2004,2007
--./bin/tests/system/dlv/ns4/named.conf         CONF-C  2004,2007
--./bin/tests/system/dlv/ns5/hints              ZONE    2004,2007
--./bin/tests/system/dlv/ns5/named.conf         CONF-C  2004,2006,2007
--./bin/tests/system/dlv/ns5/rndc.conf          CONF-C  2004,2007
--./bin/tests/system/dlv/setup.sh                       SH      2004,2007,2009
--./bin/tests/system/dlv/tests.sh                       SH      2004,2007
--./bin/tests/system/dnssec/README              TXT.BRIEF       2000,2001,2002,2004
--./bin/tests/system/dnssec/clean.sh            SH      2000,2001,2002,2004,2007,2008
--./bin/tests/system/dnssec/dnssec_update_test.pl       PERL    2002,2004,2007
--./bin/tests/system/dnssec/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/dnssec/ns1/named.conf      CONF-C  2000,2001,2004,2006,2007
--./bin/tests/system/dnssec/ns1/root.db.in      ZONE    2000,2001,2004,2007
--./bin/tests/system/dnssec/ns1/sign.sh         SH      2000,2001,2002,2003,2004,2006,2007,2008,2009
--./bin/tests/system/dnssec/ns2/.cvsignore      X       2000,2001
--./bin/tests/system/dnssec/ns2/child.nsec3.example.db  ZONE    2006,2008
--./bin/tests/system/dnssec/ns2/child.optout.example.db ZONE    2006,2008
--./bin/tests/system/dnssec/ns2/dlv.db.in               ZONE    2004,2007
--./bin/tests/system/dnssec/ns2/dst.example.db.in       ZONE    2004,2007
--./bin/tests/system/dnssec/ns2/example.db.in   ZONE    2000,2001,2002,2004,2007,2008
--./bin/tests/system/dnssec/ns2/insecure.secure.example.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/dnssec/ns2/named.conf      CONF-C  2000,2001,2002,2004,2006,2007,2008
--./bin/tests/system/dnssec/ns2/private.secure.example.db.in    ZONE    2000,2001,2004,2007
--./bin/tests/system/dnssec/ns2/rfc2335.example.db      X       2004
--./bin/tests/system/dnssec/ns2/sign.sh         SH      2000,2001,2002,2003,2004,2006,2007,2008,2009
--./bin/tests/system/dnssec/ns3/.cvsignore      X       2000,2001
--./bin/tests/system/dnssec/ns3/bogus.example.db.in     ZONE    2000,2001,2004,2007
--./bin/tests/system/dnssec/ns3/dynamic.example.db.in   ZONE    2002,2004,2007
--./bin/tests/system/dnssec/ns3/insecure.example.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/dnssec/ns3/insecure.nsec3.example.db       ZONE    2008
--./bin/tests/system/dnssec/ns3/insecure.optout.example.db      ZONE    2008
--./bin/tests/system/dnssec/ns3/keyless.example.db.in   ZONE    2001,2002,2004,2007
--./bin/tests/system/dnssec/ns3/multiple.example.db.in  ZONE    2006,2008
--./bin/tests/system/dnssec/ns3/named.conf      CONF-C  2000,2001,2002,2004,2006,2007,2008
--./bin/tests/system/dnssec/ns3/nsec3-unknown.example.db.in     ZONE    2006,2008
--./bin/tests/system/dnssec/ns3/nsec3.example.db.in     ZONE    2006,2008
--./bin/tests/system/dnssec/ns3/nsec3.nsec3.example.db.in       ZONE    2008
--./bin/tests/system/dnssec/ns3/nsec3.optout.example.db.in      ZONE    2008
--./bin/tests/system/dnssec/ns3/optout-unknown.example.db.in    ZONE    2006,2008
--./bin/tests/system/dnssec/ns3/optout.example.db.in    ZONE    2006,2008
--./bin/tests/system/dnssec/ns3/optout.nsec3.example.db.in      ZONE    2008
--./bin/tests/system/dnssec/ns3/optout.optout.example.db.in     ZONE    2008
--./bin/tests/system/dnssec/ns3/secure.example.db.in    ZONE    2000,2001,2004,2007,2008
--./bin/tests/system/dnssec/ns3/secure.nsec3.example.db.in      ZONE    2008
--./bin/tests/system/dnssec/ns3/secure.optout.example.db.in     ZONE    2008
--./bin/tests/system/dnssec/ns3/sign.sh         SH      2000,2001,2002,2004,2006,2007,2008,2009
--./bin/tests/system/dnssec/ns4/.cvsignore      X       2000,2001
--./bin/tests/system/dnssec/ns4/named.conf      CONF-C  2000,2001,2004,2006,2007
--./bin/tests/system/dnssec/ns5/.cvsignore      X       2000,2001
--./bin/tests/system/dnssec/ns5/named.conf      CONF-C  2000,2001,2004,2006,2007
--./bin/tests/system/dnssec/ns5/trusted.conf.bad        CONF-C  2000,2001,2004,2007
--./bin/tests/system/dnssec/ns6/named.conf      CONF-C  2004,2006,2007
--./bin/tests/system/dnssec/ns7/named.conf      CONF-C  2006,2008
--./bin/tests/system/dnssec/prereq.sh           SH      2000,2001,2002,2004,2006,2007,2009
--./bin/tests/system/dnssec/setup.sh            SH      2000,2001,2004,2007,2009
--./bin/tests/system/dnssec/tests.sh            SH      2000,2001,2002,2004,2005,2006,2007,2008
--./bin/tests/system/forward/clean.sh           SH      2000,2001,2004,2007
--./bin/tests/system/forward/ns1/.cvsignore     X       2000,2001
--./bin/tests/system/forward/ns1/example.db     X       2000,2001
--./bin/tests/system/forward/ns1/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/forward/ns1/root.db                ZONE    2000,2001,2004,2007
--./bin/tests/system/forward/ns2/.cvsignore     X       2000,2001
--./bin/tests/system/forward/ns2/example.db     X       2000,2001
--./bin/tests/system/forward/ns2/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/forward/ns2/root.db                ZONE    2000,2001,2004,2007
--./bin/tests/system/forward/ns3/.cvsignore     X       2000,2001
--./bin/tests/system/forward/ns3/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/forward/ns3/root.db                ZONE    2000,2001,2004,2007
--./bin/tests/system/forward/ns4/.cvsignore     X       2000,2001
--./bin/tests/system/forward/ns4/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/forward/ns4/root.db                ZONE    2000,2001,2004,2007
--./bin/tests/system/forward/tests.sh           SH      2000,2001,2004,2007
--./bin/tests/system/genzone.sh                 SH      2001,2002,2003,2004,2007,2009
--./bin/tests/system/glue/clean.sh              SH      2000,2001,2004,2007
--./bin/tests/system/glue/fi.good                       X       2000,2001
--./bin/tests/system/glue/noglue.good           X       2000,2001
--./bin/tests/system/glue/ns1/.cvsignore                X       2000,2001
--./bin/tests/system/glue/ns1/cache.in          ZONE    2000,2001,2004,2007
--./bin/tests/system/glue/ns1/mil.db            ZONE    2000,2001,2004,2007
--./bin/tests/system/glue/ns1/named.conf                CONF-C  2000,2001,2004,2005,2007,2009
--./bin/tests/system/glue/ns1/net.db            ZONE    2000,2001,2004,2007
--./bin/tests/system/glue/ns1/root-servers.nil.db       ZONE    2000,2001,2004,2007
--./bin/tests/system/glue/ns1/root.db           ZONE    2000,2001,2004,2007
--./bin/tests/system/glue/setup.sh              SH      2001,2004,2007
--./bin/tests/system/glue/tests.sh              SH      2000,2001,2003,2004,2007
--./bin/tests/system/glue/xx.good                       X       2000,2001
--./bin/tests/system/glue/yy.good                       X       2000,2001,2003
--./bin/tests/system/ifconfig.sh                        SH      2000,2001,2002,2003,2004,2007,2008,2009
--./bin/tests/system/ixfr/ans2/.cvsignore               X       2001
--./bin/tests/system/ixfr/ans2/ans.pl           PERL    2001,2004,2007
--./bin/tests/system/ixfr/clean.sh              SH      2001,2004,2007
--./bin/tests/system/ixfr/ns1/.cvsignore                X       2001
--./bin/tests/system/ixfr/prereq.sh             SH      2001,2004,2007
--./bin/tests/system/ixfr/setup.sh              SH      2001,2004,2007
--./bin/tests/system/ixfr/tests.sh              SH      2001,2004,2007
--./bin/tests/system/limits/clean.sh            SH      2000,2001,2004,2007
--./bin/tests/system/limits/knowngood.dig.out.1000      X       2000,2001
--./bin/tests/system/limits/knowngood.dig.out.2000      X       2000,2001
--./bin/tests/system/limits/knowngood.dig.out.3000      X       2000,2001
--./bin/tests/system/limits/knowngood.dig.out.4000      X       2000,2001
--./bin/tests/system/limits/knowngood.dig.out.a-maximum-rrset   X       2000,2001
--./bin/tests/system/limits/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/limits/ns1/example.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/limits/ns1/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/limits/ns1/root.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/limits/tests.sh            SH      2000,2001,2004,2007
--./bin/tests/system/lwresd/.cvsignore          X       2000,2001
--./bin/tests/system/lwresd/Makefile.in         MAKE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/lwresd/clean.sh            SH      2008
--./bin/tests/system/lwresd/lwresd1/.cvsignore  X       2000,2001
--./bin/tests/system/lwresd/lwresd1/lwresd.conf CONF-C  2000,2001,2004,2007
--./bin/tests/system/lwresd/lwresd1/resolv.conf CONF-SH 2000,2001,2004,2007
--./bin/tests/system/lwresd/lwtest.c            C       2000,2001,2002,2004,2007,2008
--./bin/tests/system/lwresd/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/lwresd/ns1/10.10.10.in-addr.arpa.db        ZONE    2000,2001,2004,2007
--./bin/tests/system/lwresd/ns1/e.example1.db   X       2008
--./bin/tests/system/lwresd/ns1/example1.db     ZONE    2000,2001,2002,2003,2004,2007,2008
--./bin/tests/system/lwresd/ns1/example2.db     ZONE    2000,2001,2002,2004,2007
--./bin/tests/system/lwresd/ns1/ip6.arpa.db     ZONE    2000,2001,2002,2004,2007
--./bin/tests/system/lwresd/ns1/ip6.int.db      ZONE    2000,2001,2002,2004,2007
--./bin/tests/system/lwresd/ns1/named.conf      CONF-C  2000,2001,2004,2006,2007,2008
--./bin/tests/system/lwresd/ns1/root.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/lwresd/resolv.conf         CONF-SH 2000,2001,2004,2007
--./bin/tests/system/lwresd/tests.sh            SH      2000,2001,2004,2007
--./bin/tests/system/masterfile/.cvsignore      X       2001
--./bin/tests/system/masterfile/clean.sh                SH      2001,2004,2007
--./bin/tests/system/masterfile/knowngood.dig.out       X       2001,2004
--./bin/tests/system/masterfile/ns1/.cvsignore  X       2001
--./bin/tests/system/masterfile/ns1/include.db  ZONE    2001,2004,2007
--./bin/tests/system/masterfile/ns1/named.conf  CONF-C  2001,2004,2007
--./bin/tests/system/masterfile/ns1/sub.db      ZONE    2001,2004,2007
--./bin/tests/system/masterfile/ns1/ttl1.db     ZONE    2001,2004,2007
--./bin/tests/system/masterfile/ns1/ttl2.db     ZONE    2001,2004,2007
--./bin/tests/system/masterfile/tests.sh                SH      2001,2004,2007
--./bin/tests/system/masterformat/clean.sh      SH      2005,2007
--./bin/tests/system/masterformat/ns1/compile.sh        SH      2005,2006,2007
--./bin/tests/system/masterformat/ns1/example.db        ZONE    2005,2007
--./bin/tests/system/masterformat/ns1/named.conf        CONF-C  2005,2007
--./bin/tests/system/masterformat/ns2/named.conf        CONF-C  2005,2007
--./bin/tests/system/masterformat/setup.sh      SH      2005,2006,2007
--./bin/tests/system/masterformat/tests.sh      SH      2005,2007
--./bin/tests/system/notify/clean.sh            SH      2000,2001,2004,2007
--./bin/tests/system/notify/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/notify/ns1/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/notify/ns1/root.db         ZONE    2000,2001,2004,2007
--./bin/tests/system/notify/ns2/.cvsignore      X       2000,2001
--./bin/tests/system/notify/ns2/example1.db     ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/notify/ns2/example2.db     ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/notify/ns2/example3.db     ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/notify/ns2/example4.db     ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/notify/ns2/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/notify/ns3/.cvsignore      X       2000,2001
--./bin/tests/system/notify/ns3/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/notify/setup.sh            SH      2000,2001,2004,2007
--./bin/tests/system/notify/tests.sh            SH      2000,2001,2004,2007
--./bin/tests/system/nsupdate/.cvsignore                X       2000,2001
--./bin/tests/system/nsupdate/clean.sh          SH      2000,2001,2004,2007,2009
--./bin/tests/system/nsupdate/knowngood.ns1.after       X       2000,2001,2003,2004,2009
--./bin/tests/system/nsupdate/knowngood.ns1.afterstop   X       2001,2004
--./bin/tests/system/nsupdate/knowngood.ns1.before      X       2000,2001,2003,2004,2009
--./bin/tests/system/nsupdate/ns1/.cvsignore    X       2000,2001
--./bin/tests/system/nsupdate/ns1/example1.db   ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/nsupdate/ns1/named.conf    CONF-C  2000,2001,2004,2005,2007,2009
--./bin/tests/system/nsupdate/ns2/.cvsignore    X       2000,2001
--./bin/tests/system/nsupdate/ns2/named.conf    CONF-C  2000,2001,2004,2007
--./bin/tests/system/nsupdate/setup.sh          SH      2000,2001,2004,2007,2009
--./bin/tests/system/nsupdate/tests.sh          SH      2000,2001,2004,2007,2009
--./bin/tests/system/nsupdate/update_test.pl    PERL    2000,2001,2004,2007
--./bin/tests/system/relay/README                       TXT.BRIEF       2000,2001,2004
--./bin/tests/system/relay/clean.sh             SH      2000,2001,2004,2007
--./bin/tests/system/relay/ns1/.cvsignore               X       2000,2001
--./bin/tests/system/relay/ns1/named.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/relay/ns1/root.db          ZONE    2000,2001,2004,2007
--./bin/tests/system/relay/ns2/.cvsignore               X       2000,2001
--./bin/tests/system/relay/ns2/example1.db      ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/relay/ns2/example2.db      ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/relay/ns2/example3.db      ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/relay/ns2/example4.db      ZONE    2000,2001,2002,2004,2007,2009
--./bin/tests/system/relay/ns2/named.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/relay/ns3/.cvsignore               X       2000,2001
--./bin/tests/system/relay/ns3/named.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/relay/ns4/.cvsignore               X       2000,2001
--./bin/tests/system/relay/ns4/named.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/relay/setup.sh             SH      2000,2001,2004,2007
--./bin/tests/system/relay/tests.sh             SH      2000,2001,2004,2007
--./bin/tests/system/resolver/ans2/.cvsignore   X       2001
--./bin/tests/system/resolver/ans2/ans.pl               PERL    2000,2001,2004,2007,2009
--./bin/tests/system/resolver/ans3/.cvsignore   X       2001
--./bin/tests/system/resolver/ans3/ans.pl               PERL    2000,2001,2004,2007,2009
--./bin/tests/system/resolver/clean.sh          SH      2008,2009
--./bin/tests/system/resolver/ns1/.cvsignore    X       2001
--./bin/tests/system/resolver/ns1/named.conf    CONF-C  2000,2001,2004,2007,2009
--./bin/tests/system/resolver/ns1/root.hint     ZONE    2000,2001,2004,2007
--./bin/tests/system/resolver/prereq.sh         SH      2000,2001,2004,2007
--./bin/tests/system/resolver/tests.sh          SH      2000,2001,2004,2007,2009
--./bin/tests/system/rrsetorder/clean.sh                SH      2006,2007,2008
--./bin/tests/system/rrsetorder/dig.out.fixed.good      X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good1    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good10   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good11   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good12   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good13   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good14   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good15   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good16   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good17   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good18   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good19   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good2    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good20   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good21   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good22   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good23   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good24   X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good3    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good4    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good5    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good6    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good7    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good8    X       2006
--./bin/tests/system/rrsetorder/dig.out.random.good9    X       2006
--./bin/tests/system/rrsetorder/ns1/named.conf  CONF-C  2006,2007
--./bin/tests/system/rrsetorder/ns1/root.db     ZONE    2006,2007
--./bin/tests/system/rrsetorder/ns2/named.conf  CONF-C  2006,2007
--./bin/tests/system/rrsetorder/ns3/named.conf  CONF-C  2006,2007
--./bin/tests/system/rrsetorder/tests.sh                SH      2006,2007,2008
--./bin/tests/system/run.sh                     SH      2000,2001,2004,2007
--./bin/tests/system/runall.sh                  SH      2000,2001,2004,2007
--./bin/tests/system/send.pl                    PERL    2001,2004,2007
--./bin/tests/system/setup.sh                   SH      2000,2001,2004,2007
--./bin/tests/system/sortlist/clean.sh          SH      2000,2001,2004,2007
--./bin/tests/system/sortlist/ns1/.cvsignore    X       2000,2001
--./bin/tests/system/sortlist/ns1/example.db    ZONE    2000,2001,2004,2007
--./bin/tests/system/sortlist/ns1/named.conf    CONF-C  2000,2001,2004,2007
--./bin/tests/system/sortlist/ns1/root.db               ZONE    2000,2001,2004,2007
--./bin/tests/system/sortlist/tests.sh          SH      2000,2001,2004,2007
--./bin/tests/system/start.pl                   SH      2001,2004,2005,2006,2007,2008
--./bin/tests/system/start.sh                   SH      2000,2001,2004,2007
--./bin/tests/system/stop.pl                    SH      2001,2004,2005,2006,2007
--./bin/tests/system/stop.sh                    SH      2000,2001,2004,2007
--./bin/tests/system/stress/clean.sh            SH      2000,2001,2004,2007
--./bin/tests/system/stress/ns1/.cvsignore      X       2000,2001
--./bin/tests/system/stress/ns1/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/stress/ns2/.cvsignore      X       2000,2001
--./bin/tests/system/stress/ns2/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/stress/ns3/.cvsignore      X       2000,2001
--./bin/tests/system/stress/ns3/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/stress/ns4/.cvsignore      X       2000,2001
--./bin/tests/system/stress/ns4/named.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/stress/setup.pl            PERL    2000,2001,2004,2007
--./bin/tests/system/stress/setup.sh            SH      2000,2001,2004,2007
--./bin/tests/system/stress/tests.sh            SH      2000,2001,2004,2007
--./bin/tests/system/stress/update.pl           PERL    2000,2001,2004,2007
--./bin/tests/system/stub/clean.sh              SH      2000,2001,2004,2007
--./bin/tests/system/stub/knowngood.dig.out.norec       X       2000,2001
--./bin/tests/system/stub/knowngood.dig.out.rec X       2000,2001
--./bin/tests/system/stub/ns1/.cvsignore                X       2000,2001
--./bin/tests/system/stub/ns1/named.conf                CONF-C  2000,2001,2004,2007
--./bin/tests/system/stub/ns1/root.db           ZONE    2000,2001,2004,2007
--./bin/tests/system/stub/ns2/.cvsignore                X       2000,2001
--./bin/tests/system/stub/ns2/child.example.db  ZONE    2000,2001,2004,2007
--./bin/tests/system/stub/ns2/named.conf                CONF-C  2000,2001,2004,2007
--./bin/tests/system/stub/ns3/.cvsignore                X       2000,2001
--./bin/tests/system/stub/ns3/example.db                ZONE    2000,2001,2004,2007
--./bin/tests/system/stub/ns3/named.conf                CONF-C  2000,2001,2004,2007
--./bin/tests/system/stub/tests.sh              SH      2000,2001,2004,2007
--./bin/tests/system/testsock.pl                        PERL    2000,2001,2004,2007
--./bin/tests/system/tkey/.cvsignore            X       2001
--./bin/tests/system/tkey/Makefile.in           MAKE    2001,2002,2004,2007,2009
--./bin/tests/system/tkey/clean.sh              SH      2001,2004,2007
--./bin/tests/system/tkey/keycreate.c           C       2001,2004,2005,2007,2009
--./bin/tests/system/tkey/keydelete.c           C       2001,2004,2005,2007,2009
--./bin/tests/system/tkey/ns1/.cvsignore                X       2001
--./bin/tests/system/tkey/ns1/named.conf.in     CONF-C  2001,2004,2007,2009
--./bin/tests/system/tkey/ns1/setup.sh          SH      2001,2004,2007,2009
--./bin/tests/system/tkey/prereq.sh             SH      2001,2004,2006,2007,2009
--./bin/tests/system/tkey/setup.sh              SH      2001,2004,2007,2009
--./bin/tests/system/tkey/tests.sh              SH      2001,2004,2007,2009
--./bin/tests/system/tsig/clean.sh              SH      2005,2006,2007
--./bin/tests/system/tsig/ns1/example.db                ZONE    2005,2006,2007,2009
--./bin/tests/system/tsig/ns1/named.conf                CONF-C  2005,2006,2007
--./bin/tests/system/tsig/tests.sh              SH      2005,2006,2007
--./bin/tests/system/unknown/clean.sh           SH      2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/.cvsignore     X       2000,2001
--./bin/tests/system/unknown/ns1/broken1.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/broken2.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/broken3.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/broken4.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/broken5.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/class10.hints  ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/example-class10.db     ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/example-in.db  ZONE    2000,2001,2004,2007
--./bin/tests/system/unknown/ns1/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/unknown/tests.sh           SH      2000,2001,2004,2007
--./bin/tests/system/upforwd/clean.sh           SH      2000,2001,2004,2007
--./bin/tests/system/upforwd/knowngood.after1   X       2000,2001
--./bin/tests/system/upforwd/knowngood.after2   X       2000,2001
--./bin/tests/system/upforwd/knowngood.before   X       2000,2001
--./bin/tests/system/upforwd/knowngood.ns2.before       X       2000,2001
--./bin/tests/system/upforwd/ns1/.cvsignore     X       2000,2001
--./bin/tests/system/upforwd/ns1/example1.db    ZONE    2000,2001,2004,2007
--./bin/tests/system/upforwd/ns1/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/upforwd/ns2/.cvsignore     X       2000,2001
--./bin/tests/system/upforwd/ns2/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/upforwd/ns3/.cvsignore     X       2000,2001
--./bin/tests/system/upforwd/ns3/named.conf     CONF-C  2000,2001,2004,2007
--./bin/tests/system/upforwd/setup.sh           SH      2000,2001,2004,2007
--./bin/tests/system/upforwd/tests.sh           SH      2000,2001,2004,2007
--./bin/tests/system/v6synth/clean.sh           SH      2001,2004,2007
--./bin/tests/system/v6synth/ns1/.cvsignore     X       2001
--./bin/tests/system/v6synth/ns1/named.conf     CONF-C  2001,2004,2007
--./bin/tests/system/v6synth/ns1/root.db                ZONE    2001,2004,2007
--./bin/tests/system/v6synth/ns2/.cvsignore     X       2001
--./bin/tests/system/v6synth/ns2/example.db     ZONE    2001,2004,2007
--./bin/tests/system/v6synth/ns2/ip6.arpa.db    ZONE    2001,2002,2004,2007
--./bin/tests/system/v6synth/ns2/ip6.int.db     ZONE    2001,2004,2007
--./bin/tests/system/v6synth/ns2/named.conf     CONF-C  2001,2004,2007
--./bin/tests/system/v6synth/ns3/.cvsignore     X       2001
--./bin/tests/system/v6synth/ns3/named.conf     CONF-C  2001,2004,2007
--./bin/tests/system/v6synth/tests.sh           SH      2001,2004,2007
--./bin/tests/system/views/.cvsignore           X       2000,2001
--./bin/tests/system/views/clean.sh             SH      2000,2001,2004,2005,2007
--./bin/tests/system/views/ns1/.cvsignore               X       2000,2001
--./bin/tests/system/views/ns1/named.conf               CONF-C  2000,2001,2004,2007
--./bin/tests/system/views/ns1/root.db          ZONE    2000,2001,2004,2007
--./bin/tests/system/views/ns2/.cvsignore               X       2000,2001
--./bin/tests/system/views/ns2/example1.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/views/ns2/example2.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/views/ns2/internal.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/views/ns2/named1.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/views/ns2/named2.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/views/ns3/.cvsignore               X       2000,2001
--./bin/tests/system/views/ns3/internal.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/views/ns3/named1.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/views/ns3/named2.conf      CONF-C  2000,2001,2004,2007
--./bin/tests/system/views/setup.sh             SH      2000,2001,2004,2007
--./bin/tests/system/views/tests.sh             SH      2000,2001,2004,2007
--./bin/tests/system/xfer/clean.sh              SH      2000,2001,2004,2007
--./bin/tests/system/xfer/dig1.good             X       2000,2001,2003,2004,2009
--./bin/tests/system/xfer/dig2.good             X       2000,2001,2003,2004,2009
--./bin/tests/system/xfer/ns1/.cvsignore                X       2000,2001
--./bin/tests/system/xfer/ns1/named.conf                CONF-C  2000,2001,2004,2007
--./bin/tests/system/xfer/ns1/root.db           ZONE    2000,2001,2004,2007
--./bin/tests/system/xfer/ns2/.cvsignore                X       2000,2001
--./bin/tests/system/xfer/ns2/named.conf                CONF-C  2000,2001,2004,2005,2007
--./bin/tests/system/xfer/ns3/.cvsignore                X       2000,2001
--./bin/tests/system/xfer/ns3/named.conf                CONF-C  2000,2001,2004,2007
--./bin/tests/system/xfer/setup.sh              SH      2001,2002,2004,2007
--./bin/tests/system/xfer/tests.sh              SH      2000,2001,2004,2005,2007
--./bin/tests/system/xferquota/clean.sh         SH      2000,2001,2004,2007
--./bin/tests/system/xferquota/ns1/.cvsignore   X       2000,2001
--./bin/tests/system/xferquota/ns1/changing1.db ZONE    2000,2001,2004,2007
--./bin/tests/system/xferquota/ns1/changing2.db ZONE    2000,2001,2004,2007
--./bin/tests/system/xferquota/ns1/named.conf   CONF-C  2000,2001,2004,2007
--./bin/tests/system/xferquota/ns1/root.db      ZONE    2000,2001,2004,2007
--./bin/tests/system/xferquota/ns2/.cvsignore   X       2000,2001
--./bin/tests/system/xferquota/ns2/example.db   ZONE    2000,2001,2002,2003,2004,2007,2009
--./bin/tests/system/xferquota/ns2/named.conf   CONF-C  2000,2001,2004,2007
--./bin/tests/system/xferquota/setup.pl         PERL    2000,2001,2004,2007
--./bin/tests/system/xferquota/setup.sh         SH      2000,2001,2004,2007
--./bin/tests/system/xferquota/tests.sh         SH      2000,2001,2004,2007
--./bin/tests/system/zonechecks/a.db            ZONE    2004,2007
--./bin/tests/system/zonechecks/aaaa.db         ZONE    2004,2007
--./bin/tests/system/zonechecks/clean.sh                SH      2004,2007
--./bin/tests/system/zonechecks/cname.db                ZONE    2004,2007
--./bin/tests/system/zonechecks/dname.db                ZONE    2004,2007
--./bin/tests/system/zonechecks/noaddress.db    ZONE    2004,2007
--./bin/tests/system/zonechecks/nxdomain.db     ZONE    2004,2007
--./bin/tests/system/zonechecks/tests.sh                SH      2004,2007
--./bin/tests/t_api.pl                          PERL    1999,2000,2001,2004,2007
--./bin/tests/task_test.c                               C       1998,1999,2000,2001,2004,2007
--./bin/tests/tasks/.cvsignore                  X       1999,2000,2001
--./bin/tests/tasks/Makefile.in                 MAKE    1998,1999,2000,2001,2002,2004,2007,2009
--./bin/tests/tasks/t_tasks.c                   C       1998,1999,2000,2001,2004,2005,2007,2009
--./bin/tests/timer_test.c                      C       1998,1999,2000,2001,2004,2007
--./bin/tests/timers/.cvsignore                 X       1999,2000,2001
--./bin/tests/timers/Makefile.in                        MAKE    1999,2000,2001,2002,2004,2007,2009
--./bin/tests/timers/t_timers.c                 C       1999,2000,2001,2004,2007,2008,2009
--./bin/tests/wire_test.c                               C       1999,2000,2001,2004,2005,2007
--./bin/tests/wire_test.data                    X       1999,2000,2001
--./bin/tests/wire_test.data2                   X       1999,2000,2001
--./bin/tests/wire_test.data3                   X       1999,2000,2001
--./bin/tests/wire_test.data4                   X       1999,2000,2001
--./bin/tests/zone_test.c                               C       1999,2000,2001,2002,2004,2005,2007,2009
--./bin/tools/.cvsignore                                X       2009
--./bin/tools/Makefile.in                               MAKE    2009
--./bin/tools/arpaname.1                                MAN     2009
--./bin/tools/arpaname.c                                C       2009
--./bin/tools/arpaname.docbook                  SGML    2009
--./bin/tools/arpaname.html                     HTML    2009
--./bin/tools/genrandom.8                               MAN     2009
--./bin/tools/genrandom.c                               C       2000,2001,2002,2003,2004,2005,2007,2009
--./bin/tools/genrandom.docbook                 SGML    2009
--./bin/tools/genrandom.html                    HTML    2009
--./bin/tools/journalprint.8                    MAN     2009
--./bin/tools/journalprint.c                    C       2000,2001,2004,2005,2006,2007,2008,2009
--./bin/tools/journalprint.docbook              SGML    2009
--./bin/tools/journalprint.html                 HTML    2009
--./bin/tools/nsec3hash.8                               MAN     2009
--./bin/tools/nsec3hash.c                               C       2006,2008,2009
--./bin/tools/nsec3hash.docbook                 SGML    2009
--./bin/tools/nsec3hash.html                    HTML    2009
--./bin/win32/BINDInstall/AccountInfo.cpp               C.PORTION       2001,2002,2004,2007
--./bin/win32/BINDInstall/AccountInfo.h         C       2001,2004,2007
--./bin/win32/BINDInstall/BINDInstall.cpp               C.PORTION       2001,2004,2007
--./bin/win32/BINDInstall/BINDInstall.dsp               X       2001,2007,2009
--./bin/win32/BINDInstall/BINDInstall.dsw               X       2001
--./bin/win32/BINDInstall/BINDInstall.h         C.PORTION       2001,2004,2007
--./bin/win32/BINDInstall/BINDInstall.mak               X       2001,2006,2007,2009
--./bin/win32/BINDInstall/BINDInstall.rc                X       2001,2005,2009
--./bin/win32/BINDInstall/BINDInstallDlg.cpp    C.PORTION       2001,2003,2004,2005,2006,2007,2008,2009
--./bin/win32/BINDInstall/BINDInstallDlg.h      C.PORTION       2001,2004,2007,2009
--./bin/win32/BINDInstall/DirBrowse.cpp         C.PORTION       2001,2004,2007
--./bin/win32/BINDInstall/DirBrowse.h           C.PORTION       2001,2004,2007
--./bin/win32/BINDInstall/StdAfx.cpp            X       2001
--./bin/win32/BINDInstall/StdAfx.h              X       2001,2006
--./bin/win32/BINDInstall/VersionInfo.cpp               X       2001,2008
--./bin/win32/BINDInstall/VersionInfo.h         X       2001
--./bin/win32/BINDInstall/res/BINDInstall.ico   X       2001
--./bin/win32/BINDInstall/res/BINDInstall.rc2   X       2001
--./bin/win32/BINDInstall/resource.h            X       2001,2005,2009
--./bind.keys                                   X       2009
--./config.guess                                        X       1998,1999,2000,2001,2004,2009
--./config.h.in                                 X       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./config.h.win32                              C       1999,2000,2001,2004,2006,2007,2008,2009
--./config.sub                                  X       1998,1999,2000,2001,2004
--./config.threads.in                           X       2005,2006
--./configure                                   X       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./configure.in                                        SH      1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./conftools/perllib/dnsconf/DNSConf-macros.h  C       2000,2001,2004,2007
--./conftools/perllib/dnsconf/DNSConf.i         C       2000,2001,2004,2007
--./conftools/perllib/dnsconf/Makefile.PL               PERL    2000,2001,2004,2007
--./conftools/perllib/dnsconf/named1.conf               CONF-C  2000,2001,2004,2007
--./conftools/perllib/dnsconf/test.pl           PERL    2000,2001,2004,2007
--./contrib/.cvsignore                          X       2000,2001
--./contrib/dbus/GetForwarders                  X       2006
--./contrib/dbus/INSTALL                                X       2006
--./contrib/dbus/Makefile.9.3.2b1                       X       2006
--./contrib/dbus/Makefile.9.3.3rc2              X       2006
--./contrib/dbus/README.DBUS                    X       2006
--./contrib/dbus/SetForwarders                  X       2006
--./contrib/dbus/bind-9.3.2b1-dbus.patch                X       2006
--./contrib/dbus/bind-9.3.3rc2-dbus.patch               X       2006
--./contrib/dbus/dbus_mgr.c                     X       2006,2007,2009
--./contrib/dbus/dbus_mgr.h                     X       2006
--./contrib/dbus/dbus_service.c                 X       2006,2007
--./contrib/dbus/dbus_service.h                 X       2006,2007
--./contrib/dbus/named-dbus-system.conf         X       2006
--./contrib/dbus/named-dbus.service             X       2006
--./contrib/dlz/bin/dlzbdb/.cvsignore           X       2005
--./contrib/dlz/bin/dlzbdb/Makefile.in          X       2005,2007,2009
--./contrib/dlz/bin/dlzbdb/dlzbdb.c             X       2005
--./contrib/dlz/config.dlz.in                   X       2005,2006,2008
--./contrib/dlz/drivers/.cvsignore              X       2005
--./contrib/dlz/drivers/dlz_bdb_driver.c                X       2005,2008
--./contrib/dlz/drivers/dlz_bdbhpt_driver.c     X       2005
--./contrib/dlz/drivers/dlz_drivers.c           X       2005
--./contrib/dlz/drivers/dlz_filesystem_driver.c X       2005
--./contrib/dlz/drivers/dlz_ldap_driver.c               X       2005
--./contrib/dlz/drivers/dlz_mysql_driver.c      X       2005,2007,2009
--./contrib/dlz/drivers/dlz_odbc_driver.c               X       2005
--./contrib/dlz/drivers/dlz_postgres_driver.c   X       2005,2007
--./contrib/dlz/drivers/dlz_stub_driver.c               X       2005
--./contrib/dlz/drivers/include/dlz/dlz_bdb_driver.h    X       2005
--./contrib/dlz/drivers/include/dlz/dlz_bdbhpt_driver.h X       2005
--./contrib/dlz/drivers/include/dlz/dlz_drivers.h       X       2005
--./contrib/dlz/drivers/include/dlz/dlz_filesystem_driver.h     X       2005
--./contrib/dlz/drivers/include/dlz/dlz_ldap_driver.h   X       2005
--./contrib/dlz/drivers/include/dlz/dlz_mysql_driver.h  X       2005
--./contrib/dlz/drivers/include/dlz/dlz_odbc_driver.h   X       2005
--./contrib/dlz/drivers/include/dlz/dlz_postgres_driver.h       X       2005
--./contrib/dlz/drivers/include/dlz/dlz_stub_driver.h   X       2005
--./contrib/dlz/drivers/include/dlz/sdlz_helper.h       X       2005
--./contrib/dlz/drivers/rules.in                        X       2005
--./contrib/dlz/drivers/sdlz_helper.c           X       2005
--./contrib/idn/idnkit-1.0-src/ChangeLog                X       2003
--./contrib/idn/idnkit-1.0-src/DISTFILES                X       2003
--./contrib/idn/idnkit-1.0-src/INSTALL          X       2003
--./contrib/idn/idnkit-1.0-src/INSTALL.ja               X       2003
--./contrib/idn/idnkit-1.0-src/LICENSE.txt      X       2003
--./contrib/idn/idnkit-1.0-src/Makefile.in      X       2003,2004
--./contrib/idn/idnkit-1.0-src/NEWS             X       2003
--./contrib/idn/idnkit-1.0-src/README           X       2003
--./contrib/idn/idnkit-1.0-src/README.ja                X       2003
--./contrib/idn/idnkit-1.0-src/acconfig.h               X       2003
--./contrib/idn/idnkit-1.0-src/aclocal.m4               X       2003
--./contrib/idn/idnkit-1.0-src/config.guess     X       2003
--./contrib/idn/idnkit-1.0-src/config.sub               X       2003
--./contrib/idn/idnkit-1.0-src/configure                X       2003
--./contrib/idn/idnkit-1.0-src/configure.in     X       2003
--./contrib/idn/idnkit-1.0-src/include/Makefile.in      X       2003
--./contrib/idn/idnkit-1.0-src/include/config.h.in      X       2003
--./contrib/idn/idnkit-1.0-src/include/config.h.win     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/Makefile.in  X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/aliaslist.h  X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/api.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/assert.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/checker.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/converter.h  X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/debug.h      X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/delimitermap.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/export.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/filechecker.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/filemapper.h X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/localencoding.h      X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/log.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/logmacro.h   X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/mapper.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/mapselector.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/nameprep.h   X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/normalizer.h X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/punycode.h   X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/race.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/res.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/resconf.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/result.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/strhash.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/ucs4.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/ucsmap.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/ucsset.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/unicode.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/unormalize.h X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/utf8.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/util.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/idn/version.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/Makefile.in  X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/api.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/localencoding.h      X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/log.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/res.h        X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/resconf.h    X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/result.h     X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/utf8.h       X       2003
--./contrib/idn/idnkit-1.0-src/include/mdn/version.h    X       2003
--./contrib/idn/idnkit-1.0-src/install-sh               X       2003
--./contrib/idn/idnkit-1.0-src/lib/Makefile.in  X       2003,2004
--./contrib/idn/idnkit-1.0-src/lib/aliaslist.c  X       2003
--./contrib/idn/idnkit-1.0-src/lib/aliaslist.sh X       2003
--./contrib/idn/idnkit-1.0-src/lib/api.c                X       2003
--./contrib/idn/idnkit-1.0-src/lib/checker.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/converter.c  X       2003
--./contrib/idn/idnkit-1.0-src/lib/debug.c      X       2003
--./contrib/idn/idnkit-1.0-src/lib/delimitermap.c       X       2003
--./contrib/idn/idnkit-1.0-src/lib/filechecker.c        X       2003
--./contrib/idn/idnkit-1.0-src/lib/filemapper.c X       2003
--./contrib/idn/idnkit-1.0-src/lib/idn.conf.sample.in   X       2003
--./contrib/idn/idnkit-1.0-src/lib/localencoding.c      X       2003
--./contrib/idn/idnkit-1.0-src/lib/log.c                X       2003
--./contrib/idn/idnkit-1.0-src/lib/make.wnt     X       2003
--./contrib/idn/idnkit-1.0-src/lib/mapper.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/mapselector.c        X       2003
--./contrib/idn/idnkit-1.0-src/lib/nameprep.c   X       2003
--./contrib/idn/idnkit-1.0-src/lib/nameprep_template.c  X       2003
--./contrib/idn/idnkit-1.0-src/lib/nameprepdata.c       X       2003
--./contrib/idn/idnkit-1.0-src/lib/normalizer.c X       2003
--./contrib/idn/idnkit-1.0-src/lib/punycode.c   X       2003
--./contrib/idn/idnkit-1.0-src/lib/race.c               X       2003
--./contrib/idn/idnkit-1.0-src/lib/res.c                X       2003
--./contrib/idn/idnkit-1.0-src/lib/resconf.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/result.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/strhash.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/Makefile.in    X       2003,2004
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init1.tsy  X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init2.tsy  X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init3.tsy  X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-1.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-2.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-3.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-1.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-2.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-3.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/api.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/checker.tsy    X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/codeset.h      X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/converter.tsy  X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/delimitermap.tsy       X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/iconvchk.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/mapper.tsy     X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/mapselector.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/nameprep.tsy   X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/normalizer.tsy X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/res.tsy        X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/resconf.tsy    X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/setenv.c       X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/setenv.h       X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/testsuite.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/testsuite.h    X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/testutil.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/testutil.h     X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/testygen       X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/ucs4.tsy       X       2003
--./contrib/idn/idnkit-1.0-src/lib/tests/utffilter      X       2003
--./contrib/idn/idnkit-1.0-src/lib/ucs4.c               X       2003
--./contrib/idn/idnkit-1.0-src/lib/ucsmap.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/ucsset.c     X       2003
--./contrib/idn/idnkit-1.0-src/lib/unicode.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/unicode_template.c   X       2003
--./contrib/idn/idnkit-1.0-src/lib/unicodedata_320.c    X       2003
--./contrib/idn/idnkit-1.0-src/lib/unormalize.c X       2003
--./contrib/idn/idnkit-1.0-src/lib/utf8.c               X       2003
--./contrib/idn/idnkit-1.0-src/lib/util.c               X       2003
--./contrib/idn/idnkit-1.0-src/lib/version.c    X       2003
--./contrib/idn/idnkit-1.0-src/ltconfig         X       2003
--./contrib/idn/idnkit-1.0-src/ltmain.sh                X       2003
--./contrib/idn/idnkit-1.0-src/make.wnt         X       2003
--./contrib/idn/idnkit-1.0-src/man/Makefile.in  X       2003
--./contrib/idn/idnkit-1.0-src/man/idn.conf.5.in        X       2003
--./contrib/idn/idnkit-1.0-src/man/libidnkit.3.in       X       2003
--./contrib/idn/idnkit-1.0-src/map/Makefile.in  X       2003
--./contrib/idn/idnkit-1.0-src/map/jp.map               X       2003
--./contrib/idn/idnkit-1.0-src/mkinstalldirs    X       2003
--./contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.1-patch     X       2003
--./contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.2-patch     X       2003
--./contrib/idn/idnkit-1.0-src/tools/Makefile.in        X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/Makefile.in        X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/idnconv.1  X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/idnconv.c  X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/idnslookup.in      X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/make.wnt   X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/selectiveencode.c  X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/selectiveencode.h  X       2003,2009
--./contrib/idn/idnkit-1.0-src/tools/idnconv/util.c     X       2003
--./contrib/idn/idnkit-1.0-src/tools/idnconv/util.h     X       2003
--./contrib/idn/idnkit-1.0-src/tools/make.wnt   X       2003
--./contrib/idn/idnkit-1.0-src/tools/rpm/idnkit.spec    X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/Makefile.in X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/resolver.c  X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/resolver.h  X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/runidn.1    X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/runidn.in   X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/stub.c      X       2003
--./contrib/idn/idnkit-1.0-src/tools/runidn/stub.h      X       2003
--./contrib/idn/idnkit-1.0-src/util/Makefile    X       2003
--./contrib/idn/idnkit-1.0-src/util/SparseMap.pm        X       2003
--./contrib/idn/idnkit-1.0-src/util/UCD.pm      X       2003
--./contrib/idn/idnkit-1.0-src/util/generate_nameprep_data.pl   X       2003
--./contrib/idn/idnkit-1.0-src/util/generate_normalize_data.pl  X       2003
--./contrib/idn/idnkit-1.0-src/win/README.WIN   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/README.txt X       2003
--./contrib/idn/idnkit-1.0-src/wsock/README_j.txt       X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/checkdll.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/convert.c   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/dump.c      X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/encoding.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/hook.c      X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/make.wnt    X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/printf.c    X       2003
--./contrib/idn/idnkit-1.0-src/wsock/common/wrapcommon.h        X       2003
--./contrib/idn/idnkit-1.0-src/wsock/config/idnconf.tcl X       2003
--./contrib/idn/idnkit-1.0-src/wsock/config/make.wnt    X       2003
--./contrib/idn/idnkit-1.0-src/wsock/make.wnt   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/dlldef.h   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllfunc.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllload.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllmain.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllstub.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/make.wnt   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock11/wsock32.def        X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c  X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt   X       2003
--./contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def X       2003
--./contrib/linux/coredump-patch                        X       2000,2001
--./contrib/named-bootconf/named-bootconf.sh    SH.PORTION      1999,2000,2001,2004,2006,2007
--./contrib/nanny/nanny.pl                      PERL    2000,2001,2004,2007
--./contrib/nslint-2.1a3/CHANGES                        X       2001
--./contrib/nslint-2.1a3/FILES                  X       2001
--./contrib/nslint-2.1a3/INSTALL                        X       2001
--./contrib/nslint-2.1a3/Makefile.in            X       2001,2004
--./contrib/nslint-2.1a3/README                 X       2001
--./contrib/nslint-2.1a3/VERSION                        X       2001
--./contrib/nslint-2.1a3/aclocal.m4             X       2001
--./contrib/nslint-2.1a3/config.guess           X       2001
--./contrib/nslint-2.1a3/config.sub             X       2001
--./contrib/nslint-2.1a3/configure              X       2001
--./contrib/nslint-2.1a3/configure.in           X       2001
--./contrib/nslint-2.1a3/install-sh             X       2001
--./contrib/nslint-2.1a3/lbl/gnuc.h             X       2001
--./contrib/nslint-2.1a3/lbl/os-irix5.h         X       2001
--./contrib/nslint-2.1a3/lbl/os-osf3.h          X       2001
--./contrib/nslint-2.1a3/lbl/os-solaris2.h      X       2001
--./contrib/nslint-2.1a3/lbl/os-sunos4.h                X       2001
--./contrib/nslint-2.1a3/lbl/os-ultrix4.h               X       2001
--./contrib/nslint-2.1a3/mkdep                  X       2001
--./contrib/nslint-2.1a3/nslint.8                       X       2001
--./contrib/nslint-2.1a3/nslint.c                       X       2001
--./contrib/nslint-2.1a3/savestr.c              X       2001
--./contrib/nslint-2.1a3/savestr.h              X       2001
--./contrib/nslint-2.1a3/strerror.c             X       2001
--./contrib/pkcs11-keygen/PEM_write_pubkey.c    X       2008
--./contrib/pkcs11-keygen/PKCS11-NOTES          X       2009
--./contrib/pkcs11-keygen/README                        X       2008,2009
--./contrib/pkcs11-keygen/destroyobj.c          X       2008,2009
--./contrib/pkcs11-keygen/genkey.c              X       2008,2009
--./contrib/pkcs11-keygen/genkey.sh             X       2008
--./contrib/pkcs11-keygen/keyconv.pl            X       2008
--./contrib/pkcs11-keygen/keydump.pl            X       2008
--./contrib/pkcs11-keygen/listobjs.c            X       2008,2009
--./contrib/pkcs11-keygen/opencryptoki/apiclient.h      X       2009
--./contrib/pkcs11-keygen/opencryptoki/pkcs11.h X       2009
--./contrib/pkcs11-keygen/opencryptoki/pkcs11types.h    X       2009
--./contrib/pkcs11-keygen/openssl-0.9.8g-patch  X       2008
--./contrib/pkcs11-keygen/openssl-0.9.8i-patch  X       2009
--./contrib/pkcs11-keygen/readkey.c             X       2008,2009
--./contrib/pkcs11-keygen/set_key_id.c          X       2008,2009
--./contrib/pkcs11-keygen/writekey.c            X       2008,2009
--./contrib/pkcs11-keygen/writekey.sh           X       2008
--./contrib/query-loc-0.4.0/ADDRESSES           X       2008
--./contrib/query-loc-0.4.0/ALGO                        X       2008
--./contrib/query-loc-0.4.0/INSTALL             X       2008
--./contrib/query-loc-0.4.0/Makefile.in         X       2008
--./contrib/query-loc-0.4.0/README              X       2008
--./contrib/query-loc-0.4.0/USAGE                       X       2008
--./contrib/query-loc-0.4.0/config.h.in         X       2008
--./contrib/query-loc-0.4.0/configure           X       2008
--./contrib/query-loc-0.4.0/configure.in                X       2008
--./contrib/query-loc-0.4.0/install-sh          X       2008
--./contrib/query-loc-0.4.0/loc.c                       X       2008
--./contrib/query-loc-0.4.0/loc.h                       X       2008
--./contrib/query-loc-0.4.0/loc_ntoa.c          X       2008
--./contrib/query-loc-0.4.0/query-loc.1         X       2008
--./contrib/query-loc-0.4.0/query-loc.c         X       2008
--./contrib/query-loc-0.4.0/reconf              X       2008
--./contrib/queryperf/.cvsignore                        X       2001
--./contrib/queryperf/Makefile.in                       X       2001,2004
--./contrib/queryperf/README                    X       2001
--./contrib/queryperf/config.h.in                       X       2007
--./contrib/queryperf/configure                 X       2001,2002,2004,2007
--./contrib/queryperf/configure.in              X       2001,2004,2007
--./contrib/queryperf/input/sample.0            X       2001
--./contrib/queryperf/input/sample.1            X       2001
--./contrib/queryperf/missing/addrinfo.h                X       2004
--./contrib/queryperf/missing/getaddrinfo.c     X       2004
--./contrib/queryperf/missing/getnameinfo.c     X       2004
--./contrib/queryperf/queryperf.c                       X       2001,2002,2003,2004,2005,2007
--./contrib/queryperf/utils/gen-data-queryperf.py       X       2003,2008
--./contrib/sdb/bdb/README                      X       2002
--./contrib/sdb/bdb/bdb.c                               X       2002
--./contrib/sdb/bdb/bdb.h                               X       2002
--./contrib/sdb/bdb/zone2bdb.c                  X       2002,2008,2009
--./contrib/sdb/dir/dirdb.c                     C       2000,2001,2004,2007
--./contrib/sdb/dir/dirdb.h                     C       2000,2001,2004,2007
--./contrib/sdb/ldap/INSTALL.ldap                       X       2001,2002,2004
--./contrib/sdb/ldap/README.ldap                        X       2001,2002,2004
--./contrib/sdb/ldap/README.zone2ldap           X       2001
--./contrib/sdb/ldap/ldapdb.c                   X       2001,2002,2003,2004
--./contrib/sdb/ldap/ldapdb.h                   X       2001
--./contrib/sdb/ldap/zone2ldap.1                        X       2001
--./contrib/sdb/ldap/zone2ldap.c                        X       2001,2005,2008,2009
--./contrib/sdb/pgsql/pgsqldb.c                 C       2000,2001,2004,2007
--./contrib/sdb/pgsql/pgsqldb.h                 C       2000,2001,2004,2007
--./contrib/sdb/pgsql/zonetodb.c                        C       2000,2001,2002,2004,2005,2007,2008,2009
--./contrib/sdb/sqlite/README.sdb_sqlite                X       2007
--./contrib/sdb/sqlite/sqlitedb.c                       X       2007
--./contrib/sdb/sqlite/sqlitedb.h                       X       2007
--./contrib/sdb/sqlite/zone2sqlite.c            X       2007,2008,2009
--./contrib/sdb/tcl/lookup.tcl                  TCL     2000,2001,2004,2007
--./contrib/sdb/tcl/tcldb.c                     C       2000,2001,2004,2007
--./contrib/sdb/tcl/tcldb.h                     C       2000,2001,2004,2007
--./contrib/sdb/time/timedb.c                   C       2000,2001,2004,2007
--./contrib/sdb/time/timedb.h                   C       2000,2001,2004,2007
--./contrib/zkt/CHANGELOG                               X       2008,2009
--./contrib/zkt/LICENSE                         X       2008
--./contrib/zkt/Makefile.in                     X       2008,2009
--./contrib/zkt/README                          X       2008,2009
--./contrib/zkt/README.logging                  X       2008,2009
--./contrib/zkt/TODO                            X       2008
--./contrib/zkt/config.h.in                     X       2008
--./contrib/zkt/config_zkt.h                    X       2008,2009
--./contrib/zkt/configure                               X       2008,2009
--./contrib/zkt/debug.h                         X       2008
--./contrib/zkt/dki.c                           X       2008,2009
--./contrib/zkt/dki.h                           X       2008,2009
--./contrib/zkt/dnssec-signer.c                 X       2008,2009
--./contrib/zkt/dnssec-zkt.c                    X       2008,2009
--./contrib/zkt/domaincmp.c                     X       2008
--./contrib/zkt/domaincmp.h                     X       2008
--./contrib/zkt/examples/dnssec-signer.sh               X       2008
--./contrib/zkt/examples/dnssec-zkt.sh          X       2008
--./contrib/zkt/examples/flat/dist.sh           X       2008
--./contrib/zkt/examples/flat/dnssec.conf               X       2008,2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+003+42138.key   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+003+42138.private       X       2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+005+01355.depreciated   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+005+01355.key   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+005+10643.key   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/Kdyn.example.net.+005+10643.private       X       2009
--./contrib/zkt/examples/flat/dyn.example.net/dnskey.db X       2009
--./contrib/zkt/examples/flat/dyn.example.net/dnssec.conf       X       2009
--./contrib/zkt/examples/flat/dyn.example.net/dsset-dyn.example.net.    X       2009
--./contrib/zkt/examples/flat/dyn.example.net/keyset-dyn.example.net.   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/zone.db   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/zone.db.dsigned   X       2009
--./contrib/zkt/examples/flat/dyn.example.net/zone.org  X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+01764.key   X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+01764.private       X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+04157.key   X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+04157.private       X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+07308.key   X       2009
--./contrib/zkt/examples/flat/example.net/Kexample.net.+005+07308.published     X       2009
--./contrib/zkt/examples/flat/example.net/dnskey.db     X       2009
--./contrib/zkt/examples/flat/example.net/dsset-example.net.    X       2009
--./contrib/zkt/examples/flat/example.net/kexample.net.+005+14829.key   X       2009
--./contrib/zkt/examples/flat/example.net/kexample.net.+005+14829.private       X       2009
--./contrib/zkt/examples/flat/example.net/kexample.net.+005+41151.key   X       2009
--./contrib/zkt/examples/flat/example.net/kexample.net.+005+41151.private       X       2009
--./contrib/zkt/examples/flat/example.net/keyset-example.net.   X       2009
--./contrib/zkt/examples/flat/example.net/zone.db       X       2009
--./contrib/zkt/examples/flat/example.net/zone.db.signed        X       2009
--./contrib/zkt/examples/flat/keysets/dlvset-sub.example.net.   X       2008,2009
--./contrib/zkt/examples/flat/keysets/dsset-dyn.example.net.    X       2008
--./contrib/zkt/examples/flat/keysets/dsset-example.net.        X       2008,2009
--./contrib/zkt/examples/flat/keysets/dsset-sub.example.net.    X       2008,2009
--./contrib/zkt/examples/flat/keysets/keyset-dyn.example.net.   X       2008
--./contrib/zkt/examples/flat/keysets/keyset-example.net.       X       2008,2009
--./contrib/zkt/examples/flat/keysets/keyset-sub.example.net.   X       2008,2009
--./contrib/zkt/examples/flat/named.conf                X       2008
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+04710.key   X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+04710.published     X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+05823.key   X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+05823.private       X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+22440.depreciated   X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+006+22440.key   X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+18846.key   X       2009
--./contrib/zkt/examples/flat/sub.example.net/Ksub.example.net.+007+18846.private       X       2009
--./contrib/zkt/examples/flat/sub.example.net/dlvset-sub.example.net.   X       2009
--./contrib/zkt/examples/flat/sub.example.net/dnskey.db X       2009
--./contrib/zkt/examples/flat/sub.example.net/dnssec.conf       X       2009
--./contrib/zkt/examples/flat/sub.example.net/dsset-sub.example.net.    X       2009
--./contrib/zkt/examples/flat/sub.example.net/keyset-sub.example.net.   X       2009
--./contrib/zkt/examples/flat/sub.example.net/maxhexsalt        X       2009
--./contrib/zkt/examples/flat/sub.example.net/maxhexsalt+1      X       2009
--./contrib/zkt/examples/flat/sub.example.net/zone.db   X       2009
--./contrib/zkt/examples/flat/sub.example.net/zone.db.signed    X       2009
--./contrib/zkt/examples/flat/zkt.log           X       2008,2009
--./contrib/zkt/examples/flat/zone.conf         X       2008,2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+11327.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+11327.private      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+37983.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+37983.published    X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+47280.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/Kexample.de.+005+47280.private      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/dnskey.db   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/dsset-example.de.   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+17439.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+17439.private      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+41145.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+41145.private      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+59244.key  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/kexample.de.+005+59244.private      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/keyset-example.de.  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/keyset-sub.example.de.      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+04031.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+04031.published X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+39146.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+39146.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+59924.depreciated       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+001+59924.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+31785.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+31785.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40956.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+40956.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+56595.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/Ksub.example.de.+005+56595.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/dlvset-sub.example.de.       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/dnskey.db    X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/dnssec.conf  X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/dsset-sub.example.de.        X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/keyset-sub.example.de.       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+06903.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+06903.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+40998.key       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/ksub.example.de.+005+40998.private   X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/parent-sub.example.de.       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/zone.db      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/sub.example.de/zone.db.signed       X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/zone.db     X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/zone.db.signed      X       2009
--./contrib/zkt/examples/hierarchical/de/example.de/zone.soa    X       2009
--./contrib/zkt/examples/hierarchical/de/keyset-example.de.     X       2009
--./contrib/zkt/examples/hierarchical/dnssec.conf       X       2008
--./contrib/zkt/examples/hierarchical/named.conf        X       2008
--./contrib/zkt/examples/hierarchical/zone.conf X       2008,2009
--./contrib/zkt/examples/views/dnssec-extern.conf       X       2008
--./contrib/zkt/examples/views/dnssec-intern.conf       X       2008
--./contrib/zkt/examples/views/dnssec-signer-extern     X       2008
--./contrib/zkt/examples/views/dnssec-signer-intern     X       2008
--./contrib/zkt/examples/views/dnssec-zkt-extern        X       2008
--./contrib/zkt/examples/views/dnssec-zkt-intern        X       2008
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+10367.key   X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+10367.private       X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+14714.key   X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+14714.published     X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+23553.key   X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+23553.private       X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+35744.depreciated   X       2009
--./contrib/zkt/examples/views/extern/example.net/Kexample.net.+005+35744.key   X       2009
--./contrib/zkt/examples/views/extern/example.net/dnskey.db     X       2009
--./contrib/zkt/examples/views/extern/example.net/dsset-example.net.    X       2009
--./contrib/zkt/examples/views/extern/example.net/keyset-example.net.   X       2009
--./contrib/zkt/examples/views/extern/example.net/zone.db       X       2009
--./contrib/zkt/examples/views/extern/example.net/zone.db.signed        X       2009
--./contrib/zkt/examples/views/extern/zkt-ext.log       X       2008,2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+00126.key   X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+00126.private       X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+05972.depreciated   X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+05972.key   X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+23375.key   X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+23375.private       X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+55745.key   X       2009
--./contrib/zkt/examples/views/intern/example.net/Kexample.net.+005+55745.published     X       2009
--./contrib/zkt/examples/views/intern/example.net/dnskey.db     X       2009
--./contrib/zkt/examples/views/intern/example.net/dsset-example.net.    X       2009
--./contrib/zkt/examples/views/intern/example.net/keyset-example.net.   X       2009
--./contrib/zkt/examples/views/intern/example.net/zone.db       X       2009
--./contrib/zkt/examples/views/intern/example.net/zone.db.signed        X       2009
--./contrib/zkt/examples/views/intern/zkt-int.log       X       2008,2009
--./contrib/zkt/examples/views/named.conf               X       2008,2009
--./contrib/zkt/examples/views/named.log                X       2008
--./contrib/zkt/examples/views/root.hint                X       2008
--./contrib/zkt/examples/views/viewtest.sh      X       2008
--./contrib/zkt/log.c                           X       2008
--./contrib/zkt/log.h                           X       2008
--./contrib/zkt/man/dnssec-signer.8             X       2009
--./contrib/zkt/man/dnssec-signer.8.html                X       2009
--./contrib/zkt/man/dnssec-zkt.8                        X       2009
--./contrib/zkt/man/dnssec-zkt.8.html           X       2009
--./contrib/zkt/misc.c                          X       2008,2009
--./contrib/zkt/misc.h                          X       2008,2009
--./contrib/zkt/ncparse.c                               X       2008
--./contrib/zkt/ncparse.h                               X       2008
--./contrib/zkt/rollover.c                      X       2008,2009
--./contrib/zkt/rollover.h                      X       2008,2009
--./contrib/zkt/strlist.c                               X       2008,2009
--./contrib/zkt/strlist.h                               X       2008
--./contrib/zkt/tags                            X       2008,2009
--./contrib/zkt/zconf.c                         X       2008,2009
--./contrib/zkt/zconf.h                         X       2008,2009
--./contrib/zkt/zkt-soaserial.c                 X       2008
--./contrib/zkt/zkt.c                           X       2008,2009
--./contrib/zkt/zkt.h                           X       2008
--./contrib/zkt/zone.c                          X       2008,2009
--./contrib/zkt/zone.h                          X       2008
--./doc/.cvsignore                              X       2000,2001
--./doc/Makefile.in                             MAKE    2000,2001,2004,2005,2006,2007
--./doc/arm/.cvsignore                          X       2000,2001,2005
--./doc/arm/Bv9ARM-book.xml                     SGML    2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch01.html                    X       2000,2001,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch02.html                    X       2000,2001,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch03.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch04.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch05.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch06.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch07.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch08.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch09.html                    X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.ch10.html                    X       2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.html                         X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/arm/Bv9ARM.pdf                          X       2007,2008,2009
--./doc/arm/Makefile.in                         MAKE    2001,2002,2004,2005,2006,2007,2009
--./doc/arm/README-SGML                         TXT.BRIEF       2000,2001,2004
--./doc/arm/isc-logo.eps                                X       2005
--./doc/arm/isc-logo.pdf                                X       2005
--./doc/arm/latex-fixup.pl                      PERL    2005,2007
--./doc/arm/man.ddns-confgen.html                       X       2009
--./doc/arm/man.dig.html                                X       2005,2006,2007,2008,2009
--./doc/arm/man.dnssec-dsfromkey.html           X       2008,2009
--./doc/arm/man.dnssec-keyfromlabel.html                X       2008,2009
--./doc/arm/man.dnssec-keygen.html              X       2005,2006,2007,2008,2009
--./doc/arm/man.dnssec-revoke.html              X       2009
--./doc/arm/man.dnssec-settime.html             X       2009
--./doc/arm/man.dnssec-signzone.html            X       2005,2006,2007,2008,2009
--./doc/arm/man.host.html                               X       2005,2006,2007,2008,2009
--./doc/arm/man.named-checkconf.html            X       2005,2006,2007,2008,2009
--./doc/arm/man.named-checkzone.html            X       2005,2006,2007,2008,2009
--./doc/arm/man.named.html                      X       2005,2006,2007,2008,2009
--./doc/arm/man.nsupdate.html                   X       2008,2009
--./doc/arm/man.rndc-confgen.html                       X       2005,2006,2007,2008,2009
--./doc/arm/man.rndc.conf.html                  X       2005,2006,2007,2008,2009
--./doc/arm/man.rndc.html                               X       2005,2006,2007,2008,2009
--./doc/design/addressdb                                TXT.BRIEF       2000,2001,2004
--./doc/design/compression                      TXT.BRIEF       1999,2000,2001,2004
--./doc/design/database                         TXT.BRIEF       1999,2000,2001,2004
--./doc/design/db_rules                         TXT.BRIEF       1999,2000,2001,2004
--./doc/design/decompression                    TXT.BRIEF       1999,2000,2001,2004
--./doc/design/dispatch                         TXT.BRIEF       2000,2001,2004
--./doc/design/logging                          TXT.BRIEF       1999,2000,2001,2004
--./doc/design/lwres                            TXT.BRIEF       2000,2001,2004
--./doc/design/ncache                           TXT.BRIEF       1999,2000,2001,2004
--./doc/design/rdataset                         TXT.BRIEF       1999,2000,2001,2004
--./doc/design/red-black                                TXT.BRIEF       1999,2000,2001,2004
--./doc/design/resolver                         TXT.BRIEF       1999,2000,2001,2004
--./doc/design/search                           TXT.BRIEF       1999,2000,2001,2004
--./doc/design/tasks                            TXT.BRIEF       1999,2000,2001,2004
--./doc/design/windows-nt                               TXT.BRIEF       1999,2000,2001,2004
--./doc/design/zone                             TXT.BRIEF       1999,2000,2001,2004
--./doc/dev/DBC                                 TXT.BRIEF       1999,2000,2001,2004
--./doc/dev/HOW-ADB-WORKS.txt                   TXT.BRIEF       2003,2004
--./doc/dev/autoconf                            TXT.BRIEF       2001,2002,2004
--./doc/dev/coding.html                         HTML    1999,2000,2001,2002,2004,2007
--./doc/dev/cvs-usage                           TXT.BRIEF       2000,2001,2004
--./doc/dev/magic_numbers                               TXT.BRIEF       1999,2000,2001,2002,2004
--./doc/dev/rdata.html                          HTML    1999,2000,2001,2004,2007
--./doc/dev/release                             TXT.BRIEF       2000,2001,2002,2003,2004,2005,2006,2007,2009
--./doc/dev/results                             TXT.BRIEF       1999,2000,2001,2004
--./doc/dev/tests                                       TXT.BRIEF       2000,2001,2004
--./doc/dev/unexpected                          TXT.BRIEF       1999,2000,2001,2004
--./doc/doxygen/.cvsignore                      X       2006
--./doc/doxygen/Doxyfile.in                     X       2006
--./doc/doxygen/Makefile.in                     MAKE    2006,2007
--./doc/doxygen/doxygen-input-filter.in         PERL    2006,2007
--./doc/doxygen/isc-footer.html                 HTML    2006,2007
--./doc/doxygen/isc-header.html                 HTML    2006,2007
--./doc/doxygen/mainpage                                X       2006
--./doc/misc/.cvsignore                         X       2001
--./doc/misc/Makefile.in                                MAKE    2001,2004,2007,2009
--./doc/misc/dnssec                             TXT.BRIEF       2000,2001,2002,2004
--./doc/misc/format-options.pl                  PERL    2001,2004,2007
--./doc/misc/ipv6                                       TXT.BRIEF       2000,2001,2004
--./doc/misc/migration                          TXT.BRIEF       2000,2001,2003,2004,2007,2008
--./doc/misc/migration-4to9                     TXT.BRIEF       2001,2004
--./doc/misc/options                            X       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./doc/misc/rfc-compliance                     TXT.BRIEF       2001,2004
--./doc/misc/roadmap                            TXT.BRIEF       2000,2001,2004
--./doc/misc/sdb                                        TXT.BRIEF       2000,2001,2004
--./doc/misc/sort-options.pl                    PERL    2007
--./doc/private/CHANGES                         X       2000,2001
--./doc/private/branches                                X       2002,2003,2004,2005,2006,2007,2008,2009
--./doc/private/bugfix-by-assertion             X       2001
--./doc/private/delete-list                     X       2005,2006,2007,2008,2009
--./doc/private/options                         TXT.BRIEF       2000,2001,2004
--./doc/todo/brister/todo                               X       2000,2001
--./doc/todo/bwelling/todo                      X       2000,2001
--./doc/todo/drc/todo                           X       2000,2001
--./doc/todo/gson/todo                          X       2000,2001
--./doc/todo/jim/todo                           X       2000,2001
--./doc/todo/marka/todo                         X       2000,2001
--./doc/todo/mws/todo                           X       2000,2001
--./doc/todo/tale/todo                          X       2000,2001
--./doc/todo/unassigned                         X       2000,2001
--./doc/xsl/.cvsignore                          X       2005
--./doc/xsl/Makefile.in                         MAKE    2005,2007
--./doc/xsl/copyright.xsl                               SGML    2005,2007,2009
--./doc/xsl/isc-docbook-chunk.xsl.in            SGML    2005,2007
--./doc/xsl/isc-docbook-html.xsl.in             SGML    2005,2007
--./doc/xsl/isc-docbook-latex-mappings.xml      SGML    2005,2007
--./doc/xsl/isc-docbook-latex.xsl.in            SGML    2005,2007
--./doc/xsl/isc-docbook-text.xsl                        SGML    2005,2007
--./doc/xsl/isc-manpage.xsl.in                  SGML    2005,2007
--./doc/xsl/pre-latex.xsl                               SGML    2005,2007
--./docutil/.cvsignore                          X       2001
--./docutil/HTML_COPYRIGHT                      X       2001,2004
--./docutil/MAN_COPYRIGHT                               X       2001,2004
--./docutil/patch-db2latex-duplicate-template-bug       X       2007
--./docutil/patch-db2latex-nested-param-bug     X       2007
--./docutil/patch-db2latex-xsltproc-title-bug   X       2007
--./install-sh                                  X       1998,1999,2000,2001
--./isc-config.sh.1                             MAN     2009
--./isc-config.sh.docbook                               SGML    2009
--./isc-config.sh.html                          HTML    2009
--./isc-config.sh.in                            SH      2000,2001,2003,2004,2007
--./lib/.cvsignore                              X       1998,1999,2000,2001
--./lib/Makefile.in                             MAKE    1998,1999,2000,2001,2003,2004,2007
--./lib/bind9/.cvsignore                                X       2001
--./lib/bind9/Makefile.in                               MAKE    2001,2004,2007,2009
--./lib/bind9/api                                       X       2001,2006,2008
--./lib/bind9/check.c                           C       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/bind9/getaddresses.c                    C       2001,2002,2004,2005,2007
--./lib/bind9/include/.cvsignore                        X       2001
--./lib/bind9/include/Makefile.in                       MAKE    2001,2004,2007
--./lib/bind9/include/bind9/.cvsignore          X       2001
--./lib/bind9/include/bind9/Makefile.in         MAKE    2001,2004,2007
--./lib/bind9/include/bind9/check.h             C       2001,2004,2005,2006,2007
--./lib/bind9/include/bind9/getaddresses.h      C       2001,2004,2005,2006,2007,2009
--./lib/bind9/include/bind9/version.h           C       2001,2004,2005,2006,2007
--./lib/bind9/version.c                         C       2001,2004,2005,2007
--./lib/bind9/win32/DLLMain.c                   C       2001,2004,2007
--./lib/bind9/win32/libbind9.def                        X       2001
--./lib/bind9/win32/libbind9.dsp                        X       2001,2004,2005,2009
--./lib/bind9/win32/libbind9.dsw                        X       2001
--./lib/bind9/win32/libbind9.mak                        X       2001,2002,2004,2005,2006,2009
--./lib/bind9/win32/version.c                   C       1998,1999,2000,2001,2004,2007
--./lib/dns/.cvsignore                          X       1998,1999,2000,2001
--./lib/dns/Makefile.in                         MAKE    1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/acache.c                            C       2004,2005,2006,2007,2008
--./lib/dns/acl.c                                       C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/adb.c                                       C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/api                                 X       1999,2000,2001,2006,2008,2009
--./lib/dns/byaddr.c                            C       2000,2001,2002,2003,2004,2005,2007,2009
--./lib/dns/cache.c                             C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/callbacks.c                         C       1999,2000,2001,2004,2005,2007
--./lib/dns/client.c                            C       2009
--./lib/dns/compress.c                          C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/db.c                                        C       1999,2000,2001,2003,2004,2005,2007,2008,2009
--./lib/dns/dbiterator.c                                C       1999,2000,2001,2004,2005,2007
--./lib/dns/dbtable.c                           C       1999,2000,2001,2004,2005,2007
--./lib/dns/diff.c                              C       2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/dns/dispatch.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/dlz.c                                       C.PORTION       1999,2000,2001,2005,2007,2009
--./lib/dns/dnssec.c                            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/ds.c                                        C       2002,2003,2004,2005,2006,2007
--./lib/dns/dst_api.c                           C.NAI   1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/dst_internal.h                      C.NAI   2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/dst_lib.c                           C       1999,2000,2001,2004,2005,2007
--./lib/dns/dst_openssl.h                               C       2002,2004,2005,2007,2008
--./lib/dns/dst_parse.c                         C.NAI   1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/dst_parse.h                         C.NAI   2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/dst_result.c                                C       1999,2000,2001,2004,2005,2007,2008
--./lib/dns/ecdb.c                              C       2009
--./lib/dns/forward.c                           C       2000,2001,2004,2005,2007,2009
--./lib/dns/gen-unix.h                          C       1999,2000,2001,2004,2005,2007,2009
--./lib/dns/gen-win32.h                         C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/dns/gen.c                                       C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/dns/gssapi_link.c                               C       2000,2001,2002,2004,2005,2006,2007,2008
--./lib/dns/gssapictx.c                         C       2000,2001,2004,2005,2006,2007,2008,2009
--./lib/dns/hmac_link.c                         C.NAI   1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/include/.cvsignore                  X       1998,1999,2000,2001
--./lib/dns/include/Makefile.in                 MAKE    1998,1999,2000,2001,2004,2007
--./lib/dns/include/dns/.cvsignore              X       1998,1999,2000,2001
--./lib/dns/include/dns/Makefile.in             MAKE    1998,1999,2000,2001,2002,2003,2004,2007,2008
--./lib/dns/include/dns/acache.h                        C       2004,2006,2007
--./lib/dns/include/dns/acl.h                   C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/adb.h                   C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/dns/include/dns/bit.h                   C       2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/byaddr.h                        C       2000,2001,2002,2003,2004,2005,2006,2007
--./lib/dns/include/dns/cache.h                 C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/callbacks.h             C       1999,2000,2001,2002,2004,2005,2006,2007
--./lib/dns/include/dns/cert.h                  C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/client.h                        C       2009
--./lib/dns/include/dns/compress.h              C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/db.h                    C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/dbiterator.h            C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/dbtable.h                       C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/diff.h                  C       2000,2001,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/dispatch.h              C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/dlz.h                   C.PORTION       1999,2000,2001,2005,2006,2007,2009
--./lib/dns/include/dns/dnssec.h                        C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/ds.h                    C       2002,2004,2005,2006,2007
--./lib/dns/include/dns/ecdb.h                  C       2009
--./lib/dns/include/dns/events.h                        C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/fixedname.h             C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/forward.h                       C       2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/iptable.h                       C       2007
--./lib/dns/include/dns/journal.h                       C       1999,2000,2001,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/keydata.h                       C       2009
--./lib/dns/include/dns/keyflags.h              C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/keytable.h              C       2000,2001,2004,2005,2007,2009
--./lib/dns/include/dns/keyvalues.h             C       1999,2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/lib.h                   C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/log.h                   C       1999,2000,2001,2003,2004,2005,2006,2007,2009
--./lib/dns/include/dns/lookup.h                        C       2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/master.h                        C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/masterdump.h            C       1999,2000,2001,2002,2004,2005,2006,2007,2008
--./lib/dns/include/dns/message.h                       C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/name.h                  C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2009
--./lib/dns/include/dns/ncache.h                        C       1999,2000,2001,2002,2004,2005,2006,2007,2008
--./lib/dns/include/dns/nsec.h                  C       1999,2000,2001,2003,2004,2005,2006,2007,2008
--./lib/dns/include/dns/nsec3.h                 C       2008,2009
--./lib/dns/include/dns/opcode.h                        C       2002,2004,2005,2006,2007
--./lib/dns/include/dns/order.h                 C       2002,2004,2005,2006,2007
--./lib/dns/include/dns/peer.h                  C       2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/portlist.h              C       2003,2004,2005,2006,2007
--./lib/dns/include/dns/rbt.h                   C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/rcode.h                 C       1999,2000,2001,2004,2005,2006,2007,2008
--./lib/dns/include/dns/rdata.h                 C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/rdataclass.h            C       1998,1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/rdatalist.h             C       1999,2000,2001,2004,2005,2006,2007,2008
--./lib/dns/include/dns/rdataset.h              C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/rdatasetiter.h          C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/rdataslab.h             C       1999,2000,2001,2002,2004,2005,2006,2007,2008
--./lib/dns/include/dns/rdatatype.h             C       1998,1999,2000,2001,2004,2005,2006,2007,2008
--./lib/dns/include/dns/request.h                       C       2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/resolver.h              C       1999,2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/result.h                        C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/dns/include/dns/rootns.h                        C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/rriterator.h            C       2009
--./lib/dns/include/dns/sdb.h                   C       2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/sdlz.h                  C.PORTION       1999,2000,2001,2005,2006,2007,2009
--./lib/dns/include/dns/secalg.h                        C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/secproto.h              C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/soa.h                   C       2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/ssu.h                   C       2000,2001,2003,2004,2005,2006,2007,2008
--./lib/dns/include/dns/stats.h                 C       2000,2001,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/tcpmsg.h                        C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/time.h                  C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/timer.h                 C       2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/tkey.h                  C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dns/tsec.h                  C       2009
--./lib/dns/include/dns/tsig.h                  C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/dns/include/dns/ttl.h                   C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dns/types.h                 C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/validator.h             C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/version.h                       C       2001,2004,2005,2006,2007
--./lib/dns/include/dns/view.h                  C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/xfrin.h                 C       1999,2000,2001,2003,2004,2005,2006,2007,2009
--./lib/dns/include/dns/zone.h                  C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dns/zonekey.h                       C       2001,2004,2005,2006,2007
--./lib/dns/include/dns/zt.h                    C       1999,2000,2001,2002,2004,2005,2006,2007
--./lib/dns/include/dst/.cvsignore              X       2000,2001,2004
--./lib/dns/include/dst/Makefile.in             MAKE    1998,1999,2000,2001,2004,2007
--./lib/dns/include/dst/dst.h                   C       2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/include/dst/gssapi.h                        C       2000,2001,2004,2005,2006,2007,2009
--./lib/dns/include/dst/lib.h                   C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/include/dst/result.h                        C       1999,2000,2001,2004,2005,2006,2007,2008
--./lib/dns/iptable.c                           C       2007,2008,2009
--./lib/dns/journal.c                           C       1999,2000,2001,2002,2004,2005,2007,2008,2009
--./lib/dns/key.c                                       C       2001,2004,2005,2006,2007
--./lib/dns/keydata.c                           C       2009
--./lib/dns/keytable.c                          C       2000,2001,2004,2005,2007,2009
--./lib/dns/lib.c                                       C       1999,2000,2001,2004,2005,2007,2009
--./lib/dns/log.c                                       C       1999,2000,2001,2003,2004,2005,2006,2007
--./lib/dns/lookup.c                            C       2000,2001,2003,2004,2005,2007
--./lib/dns/master.c                            C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/masterdump.c                                C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/message.c                           C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/name.c                              C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/ncache.c                            C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./lib/dns/nsec.c                              C       1999,2000,2001,2003,2004,2005,2007,2008,2009
--./lib/dns/nsec3.c                             C       2006,2008,2009
--./lib/dns/openssl_link.c                      C.NAI   1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/openssldh_link.c                    C.NAI   1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/openssldsa_link.c                   C.NAI   1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/opensslrsa_link.c                   C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/order.c                             C       2002,2004,2005,2007
--./lib/dns/peer.c                              C       2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/portlist.c                          C       2003,2004,2005,2006,2007
--./lib/dns/rbt.c                                       C       1999,2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/dns/rbtdb.c                             C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/rbtdb.h                             C       1999,2000,2001,2004,2005,2007
--./lib/dns/rbtdb64.c                           C       1999,2000,2001,2004,2005,2007
--./lib/dns/rbtdb64.h                           C       1999,2000,2001,2004,2005,2007
--./lib/dns/rcode.c                             C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/dns/rdata.c                             C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/rdata/any_255/tsig_250.c            C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/dns/rdata/any_255/tsig_250.h            C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/ch_3/a_1.c                    C       2005,2007
--./lib/dns/rdata/ch_3/a_1.h                    C       2005,2007
--./lib/dns/rdata/generic/afsdb_18.c            C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/generic/afsdb_18.h            C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/cert_37.c             C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/dns/rdata/generic/cert_37.h             C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/cname_5.c             C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/cname_5.h             C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/dlv_32769.c           C       2004,2006,2007
--./lib/dns/rdata/generic/dlv_32769.h           C       2004,2006,2007
--./lib/dns/rdata/generic/dname_39.c            C       1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/dname_39.h            C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/dnskey_48.c           C       2003,2004,2005,2007
--./lib/dns/rdata/generic/dnskey_48.h           C       2003,2004,2005,2007
--./lib/dns/rdata/generic/ds_43.c                       C       2002,2004,2005,2007
--./lib/dns/rdata/generic/ds_43.h                       C       2002,2004,2005,2007
--./lib/dns/rdata/generic/gpos_27.c             C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/gpos_27.h             C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/hinfo_13.c            C       1998,1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/generic/hinfo_13.h            C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/hip_55.c              C       2009
--./lib/dns/rdata/generic/hip_55.h              C       2009
--./lib/dns/rdata/generic/ipseckey_45.c         C       2005,2007,2009
--./lib/dns/rdata/generic/ipseckey_45.h         C       2005,2007
--./lib/dns/rdata/generic/isdn_20.c             C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/isdn_20.h             C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/key_25.c              C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/dns/rdata/generic/key_25.h              C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/keydata_65533.c               C       2009
--./lib/dns/rdata/generic/keydata_65533.h               C       2009
--./lib/dns/rdata/generic/loc_29.c              C       1999,2000,2001,2002,2003,2004,2005,2007,2009
--./lib/dns/rdata/generic/loc_29.h              C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/mb_7.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/mb_7.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/md_3.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/md_3.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/mf_4.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/mf_4.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/mg_8.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/mg_8.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/minfo_14.c            C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/minfo_14.h            C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/mr_9.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/mr_9.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/mx_15.c                       C       1998,1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/generic/mx_15.h                       C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/ns_2.c                        C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/ns_2.h                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/nsec3_50.c            C       2008,2009
--./lib/dns/rdata/generic/nsec3_50.h            C       2008
--./lib/dns/rdata/generic/nsec3param_51.c               C       2008,2009
--./lib/dns/rdata/generic/nsec3param_51.h               C       2008
--./lib/dns/rdata/generic/nsec_47.c             C       2003,2004,2007,2008
--./lib/dns/rdata/generic/nsec_47.h             C       2003,2004,2005,2007,2008
--./lib/dns/rdata/generic/null_10.c             C       1998,1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/generic/null_10.h             C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/nxt_30.c              C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/dns/rdata/generic/nxt_30.h              C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/opt_41.c              C       1998,1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/opt_41.h              C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/proforma.c            C       1998,1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/generic/proforma.h            C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/ptr_12.c              C       1998,1999,2000,2001,2004,2007
--./lib/dns/rdata/generic/ptr_12.h              C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/rp_17.c                       C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/rp_17.h                       C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/rrsig_46.c            C       2003,2004,2005,2007
--./lib/dns/rdata/generic/rrsig_46.h            C       2003,2004,2005,2007
--./lib/dns/rdata/generic/rt_21.c                       C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/generic/rt_21.h                       C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/sig_24.c              C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/dns/rdata/generic/sig_24.h              C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/soa_6.c                       C       1998,1999,2000,2001,2002,2004,2007,2009
--./lib/dns/rdata/generic/soa_6.h                       C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/spf_99.c              C       1998,1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/spf_99.h              C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/sshfp_44.c            C       2003,2004,2006,2007
--./lib/dns/rdata/generic/sshfp_44.h            C       2003,2004,2005,2006,2007
--./lib/dns/rdata/generic/tkey_249.c            C       1999,2000,2001,2002,2003,2004,2007
--./lib/dns/rdata/generic/tkey_249.h            C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/generic/txt_16.c              C       1998,1999,2000,2001,2002,2004,2007,2008
--./lib/dns/rdata/generic/txt_16.h              C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/unspec_103.c          C       1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/generic/unspec_103.h          C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/generic/x25_19.c              C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/generic/x25_19.h              C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/hs_4/a_1.c                    C       1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/hs_4/a_1.h                    C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/a6_38.c                  C       1999,2000,2001,2002,2003,2004,2007
--./lib/dns/rdata/in_1/a6_38.h                  C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/a_1.c                    C       1998,1999,2000,2001,2002,2004,2007
--./lib/dns/rdata/in_1/a_1.h                    C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/aaaa_28.c                        C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/in_1/aaaa_28.h                        C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/apl_42.c                 C       2002,2004,2005,2007,2008
--./lib/dns/rdata/in_1/apl_42.h                 C       2002,2004,2005,2007
--./lib/dns/rdata/in_1/dhcid_49.c                       C       2006,2007
--./lib/dns/rdata/in_1/dhcid_49.h                       C       2006,2007
--./lib/dns/rdata/in_1/kx_36.c                  C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/in_1/kx_36.h                  C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/naptr_35.c                       C       1999,2000,2001,2003,2004,2005,2007,2008,2009
--./lib/dns/rdata/in_1/naptr_35.h                       C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/nsap-ptr_23.c            C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/nsap-ptr_23.h            C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/nsap_22.c                        C       1999,2000,2001,2002,2004,2005,2007
--./lib/dns/rdata/in_1/nsap_22.h                        C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/px_26.c                  C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/in_1/px_26.h                  C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/srv_33.c                 C       1999,2000,2001,2003,2004,2005,2007
--./lib/dns/rdata/in_1/srv_33.h                 C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdata/in_1/wks_11.c                 C       1999,2000,2001,2002,2004,2007,2009
--./lib/dns/rdata/in_1/wks_11.h                 C       1999,2000,2001,2004,2007
--./lib/dns/rdata/rdatastructpre.h              C       1999,2000,2001,2004,2007
--./lib/dns/rdata/rdatastructsuf.h              C       1999,2000,2001,2004,2007
--./lib/dns/rdatalist.c                         C       1999,2000,2001,2003,2004,2005,2007,2008
--./lib/dns/rdatalist_p.h                               C       2000,2001,2004,2005,2007,2008
--./lib/dns/rdataset.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/rdatasetiter.c                      C       1999,2000,2001,2004,2005,2007
--./lib/dns/rdataslab.c                         C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/request.c                           C       2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/resolver.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/result.c                            C       1998,1999,2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/dns/rootns.c                            C       1999,2000,2001,2002,2004,2005,2007,2008
--./lib/dns/rriterator.c                                C       2009
--./lib/dns/sdb.c                                       C       2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/sdlz.c                              C.PORTION       1999,2000,2001,2005,2006,2007,2008,2009
--./lib/dns/soa.c                                       C       2000,2001,2004,2005,2007,2009
--./lib/dns/spnego.asn1                         X       2006
--./lib/dns/spnego.c                            C       2006,2007,2008,2009
--./lib/dns/spnego.h                            C       2006,2007
--./lib/dns/spnego_asn1.c                               C       2006,2007
--./lib/dns/spnego_asn1.pl                      PERL    2006,2007
--./lib/dns/ssu.c                                       C       2000,2001,2003,2004,2005,2006,2007,2008
--./lib/dns/stats.c                             C       2000,2001,2004,2005,2007,2008,2009
--./lib/dns/tcpmsg.c                            C       1999,2000,2001,2004,2005,2006,2007
--./lib/dns/time.c                              C       1998,1999,2000,2001,2002,2003,2004,2005,2007,2009
--./lib/dns/timer.c                             C       2000,2001,2004,2005,2007
--./lib/dns/tkey.c                              C       1999,2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/tsec.c                              C       2009
--./lib/dns/tsig.c                              C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/dns/ttl.c                                       C       1999,2000,2001,2004,2005,2007
--./lib/dns/validator.c                         C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/version.c                           C       1998,1999,2000,2001,2004,2005,2007
--./lib/dns/view.c                              C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/win32/DLLMain.c                     C       2001,2004,2007
--./lib/dns/win32/gen.dsp                               X       2001
--./lib/dns/win32/gen.dsw                               X       2001
--./lib/dns/win32/gen.mak                               X       2001,2006
--./lib/dns/win32/libdns.def                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/win32/libdns.dsp                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/win32/libdns.dsw                    X       2001
--./lib/dns/win32/libdns.mak                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/win32/version.c                     C       1998,1999,2000,2001,2004,2007
--./lib/dns/xfrin.c                             C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/dns/zone.c                              C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/dns/zonekey.c                           C       2001,2003,2004,2005,2007
--./lib/dns/zt.c                                        C       1999,2000,2001,2002,2004,2005,2006,2007
--./lib/export/.cvsignore                               X       2009
--./lib/export/Makefile.in                      MAKE    2009
--./lib/export/dns/.cvsignore                   X       2009
--./lib/export/dns/Makefile.in                  MAKE    2009
--./lib/export/dns/include/.cvsignore           X       2009
--./lib/export/dns/include/Makefile.in          MAKE    2009
--./lib/export/dns/include/dns/.cvsignore               X       2009
--./lib/export/dns/include/dns/Makefile.in      MAKE    2009
--./lib/export/dns/include/dst/.cvsignore               X       2009
--./lib/export/dns/include/dst/Makefile.in      MAKE    2009
--./lib/export/irs/.cvsignore                   X       2009
--./lib/export/irs/Makefile.in                  MAKE    2009
--./lib/export/irs/include/.cvsignore           X       2009
--./lib/export/irs/include/Makefile.in          MAKE    2009
--./lib/export/irs/include/irs/.cvsignore               X       2009
--./lib/export/irs/include/irs/Makefile.in      MAKE    2009
--./lib/export/isc/.cvsignore                   X       2009
--./lib/export/isc/Makefile.in                  MAKE    2009
--./lib/export/isc/include/.cvsignore           X       2009
--./lib/export/isc/include/Makefile.in          MAKE    2009
--./lib/export/isc/include/isc/.cvsignore               X       2009
--./lib/export/isc/include/isc/Makefile.in      MAKE    2009
--./lib/export/isc/nls/.cvsignore                       X       2009
--./lib/export/isc/nls/Makefile.in              MAKE    2009
--./lib/export/isc/nothreads/Makefile.in                MAKE    2009
--./lib/export/isc/nothreads/include/Makefile.in        MAKE    2009
--./lib/export/isc/nothreads/include/isc/Makefile.in    MAKE    2009
--./lib/export/isc/pthreads/.cvsignore          X       2009
--./lib/export/isc/pthreads/Makefile.in         MAKE    2009
--./lib/export/isc/pthreads/include/.cvsignore  X       2009
--./lib/export/isc/pthreads/include/Makefile.in MAKE    2009
--./lib/export/isc/pthreads/include/isc/.cvsignore      X       2009
--./lib/export/isc/pthreads/include/isc/Makefile.in     MAKE    2009
--./lib/export/isc/unix/.cvsignore              X       2009
--./lib/export/isc/unix/Makefile.in             MAKE    2009
--./lib/export/isc/unix/include/.cvsignore      X       2009
--./lib/export/isc/unix/include/Makefile.in     MAKE    2009
--./lib/export/isc/unix/include/isc/.cvsignore  X       2009
--./lib/export/isc/unix/include/isc/Makefile.in MAKE    2009
--./lib/export/isccfg/.cvsignore                        X       2009
--./lib/export/isccfg/Makefile.in                       MAKE    2009
--./lib/export/isccfg/include/.cvsignore                X       2009
--./lib/export/isccfg/include/Makefile.in               MAKE    2009
--./lib/export/isccfg/include/isccfg/.cvsignore X       2009
--./lib/export/isccfg/include/isccfg/Makefile.in        MAKE    2009
--./lib/export/samples/.cvsignore                       X       2009
--./lib/export/samples/Makefile-postinstall.in  MAKE    2009
--./lib/export/samples/Makefile.in              MAKE    2009
--./lib/export/samples/nsprobe.c                        C       2009
--./lib/export/samples/sample-async.c           C       2009
--./lib/export/samples/sample-gai.c             C       2009
--./lib/export/samples/sample-request.c         C       2009
--./lib/export/samples/sample-update.c          C       2009
--./lib/export/samples/sample.c                 C       2009
--./lib/irs/.cvsignore                          X       2009
--./lib/irs/Makefile.in                         MAKE    2009
--./lib/irs/api                                 X       2009
--./lib/irs/context.c                           C       2009
--./lib/irs/dnsconf.c                           C       2009
--./lib/irs/gai_strerror.c                      C       2009
--./lib/irs/getaddrinfo.c                               C       2009
--./lib/irs/getnameinfo.c                               C       2009
--./lib/irs/include/.cvsignore                  X       2009
--./lib/irs/include/Makefile.in                 MAKE    2009
--./lib/irs/include/irs/.cvsignore              X       2009
--./lib/irs/include/irs/Makefile.in             MAKE    2009
--./lib/irs/include/irs/context.h                       C       2009
--./lib/irs/include/irs/dnsconf.h                       C       2009
--./lib/irs/include/irs/netdb.h.in              C       2009
--./lib/irs/include/irs/platform.h.in           C       2009
--./lib/irs/include/irs/resconf.h                       C       2009
--./lib/irs/include/irs/types.h                 C       2009
--./lib/irs/include/irs/version.h                       C       2009
--./lib/irs/resconf.c                           C       2009
--./lib/irs/version.c                           C       2009
--./lib/isc/.cvsignore                          X       1998,1999,2000,2001
--./lib/isc/Makefile.in                         MAKE    1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/alpha/.cvsignore                    X       2007
--./lib/isc/alpha/Makefile.in                   MAKE    2007
--./lib/isc/alpha/include/.cvsignore            X       2007
--./lib/isc/alpha/include/Makefile.in           MAKE    2007
--./lib/isc/alpha/include/isc/.cvsignore                X       2007
--./lib/isc/alpha/include/isc/Makefile.in               MAKE    2007
--./lib/isc/alpha/include/isc/atomic.h          C       2005,2007,2009
--./lib/isc/api                                 X       1999,2000,2001,2006,2008
--./lib/isc/app_api.c                           C       2009
--./lib/isc/assertions.c                                C       1997,1998,1999,2000,2001,2004,2005,2007,2008,2009
--./lib/isc/backtrace-emptytbl.c                        C       2009
--./lib/isc/backtrace.c                         C       2009
--./lib/isc/base32.c                            C       2008,2009
--./lib/isc/base64.c                            C       1998,1999,2000,2001,2003,2004,2005,2007
--./lib/isc/bitstring.c                         C       1999,2000,2001,2004,2005,2007
--./lib/isc/buffer.c                            C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2008
--./lib/isc/bufferlist.c                                C       1999,2000,2001,2004,2005,2007
--./lib/isc/commandline.c                               C.PORTION       1999,2000,2001,2004,2005,2007,2008
--./lib/isc/entropy.c                           C       2000,2001,2002,2003,2004,2005,2006,2007,2009
--./lib/isc/error.c                             C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/event.c                             C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/fsaccess.c                          C       2000,2001,2004,2005,2007
--./lib/isc/hash.c                              C       2003,2004,2005,2006,2007,2009
--./lib/isc/heap.c                              C       1997,1998,1999,2000,2001,2004,2005,2006,2007
--./lib/isc/hex.c                                       C       2000,2001,2002,2003,2004,2005,2007,2008
--./lib/isc/hmacmd5.c                           C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/hmacsha.c                           C       2005,2006,2007,2009
--./lib/isc/httpd.c                             C       2006,2007,2008
--./lib/isc/ia64/.cvsignore                     X       2007
--./lib/isc/ia64/Makefile.in                    MAKE    2007
--./lib/isc/ia64/include/.cvsignore             X       2007
--./lib/isc/ia64/include/Makefile.in            MAKE    2007
--./lib/isc/ia64/include/isc/.cvsignore         X       2007
--./lib/isc/ia64/include/isc/Makefile.in                MAKE    2007
--./lib/isc/ia64/include/isc/atomic.h           C       2006,2007,2009
--./lib/isc/include/.cvsignore                  X       1998,1999,2000,2001
--./lib/isc/include/Makefile.in                 MAKE    1998,1999,2000,2001,2004,2007
--./lib/isc/include/isc/.cvsignore              X       1998,1999,2000,2001
--./lib/isc/include/isc/Makefile.in             MAKE    1998,1999,2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/app.h                   C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/assertions.h            C       1997,1998,1999,2000,2001,2004,2005,2006,2007,2008
--./lib/isc/include/isc/backtrace.h             C       2009
--./lib/isc/include/isc/base32.h                        C       2008
--./lib/isc/include/isc/base64.h                        C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/bitstring.h             C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/boolean.h                       C       1998,1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/buffer.h                        C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2008
--./lib/isc/include/isc/bufferlist.h            C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/commandline.h           C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/entropy.h                       C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/error.h                 C       1998,1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/event.h                 C       1998,1999,2000,2001,2002,2004,2005,2006,2007
--./lib/isc/include/isc/eventclass.h            C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/include/isc/file.h                  C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/formatcheck.h           C       2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/fsaccess.h              C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/hash.h                  C       2003,2004,2005,2006,2007,2009
--./lib/isc/include/isc/heap.h                  C       1997,1998,1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/hex.h                   C       2000,2001,2004,2005,2006,2007,2008
--./lib/isc/include/isc/hmacmd5.h                       C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/hmacsha.h                       C       2005,2006,2007,2009
--./lib/isc/include/isc/httpd.h                 C       2006,2007,2008
--./lib/isc/include/isc/interfaceiter.h         C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/ipv6.h                  C       1999,2000,2001,2002,2004,2005,2007
--./lib/isc/include/isc/iterated_hash.h         C       2008
--./lib/isc/include/isc/lang.h                  C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/lex.h                   C       1998,1999,2000,2001,2002,2004,2005,2007,2008
--./lib/isc/include/isc/lfsr.h                  C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/lib.h                   C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/list.h                  C       1997,1998,1999,2000,2001,2002,2004,2006,2007
--./lib/isc/include/isc/log.h                   C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/isc/include/isc/magic.h                 C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/md5.h                   C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/mem.h                   C       1997,1998,1999,2000,2001,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/msgcat.h                        C       1999,2000,2001,2004,2005,2007
--./lib/isc/include/isc/msgs.h                  C       2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/isc/include/isc/mutexblock.h            C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/namespace.h             C       2009
--./lib/isc/include/isc/netaddr.h                       C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/isc/include/isc/netscope.h              C       2002,2004,2005,2006,2007,2009
--./lib/isc/include/isc/ondestroy.h             C       2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/os.h                    C       2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/parseint.h              C       2001,2002,2004,2005,2006,2007
--./lib/isc/include/isc/platform.h.in           C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/portset.h                       C       2008,2009
--./lib/isc/include/isc/print.h                 C       1999,2000,2001,2003,2004,2005,2006,2007
--./lib/isc/include/isc/quota.h                 C       2000,2001,2004,2005,2007
--./lib/isc/include/isc/radix.h                 C       2007,2008
--./lib/isc/include/isc/random.h                        C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/ratelimiter.h           C       1999,2000,2001,2002,2004,2005,2006,2007,2009
--./lib/isc/include/isc/refcount.h              C       2001,2003,2004,2005,2006,2007
--./lib/isc/include/isc/region.h                        C       1998,1999,2000,2001,2002,2004,2005,2006,2007
--./lib/isc/include/isc/resource.h              C       2000,2001,2004,2005,2006,2007,2008
--./lib/isc/include/isc/result.h                        C       1998,1999,2000,2001,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/resultclass.h           C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/rwlock.h                        C       1998,1999,2000,2001,2003,2004,2005,2006,2007
--./lib/isc/include/isc/serial.h                        C       1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/sha1.h                  C       2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/sha2.h                  C       2005,2006,2007,2009
--./lib/isc/include/isc/sockaddr.h              C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2009
--./lib/isc/include/isc/socket.h                        C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/stats.h                 C       2009
--./lib/isc/include/isc/stdio.h                 C       2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/stdlib.h                        C       2003,2004,2005,2006,2007
--./lib/isc/include/isc/string.h                        C       2000,2001,2003,2004,2005,2006,2007
--./lib/isc/include/isc/symtab.h                        C       1996,1997,1998,1999,2000,2001,2004,2005,2006,2007,2009
--./lib/isc/include/isc/task.h                  C       1998,1999,2000,2001,2003,2004,2005,2006,2007,2009
--./lib/isc/include/isc/taskpool.h              C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/timer.h                 C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/types.h                 C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/include/isc/util.h                  C       1998,1999,2000,2001,2004,2005,2006,2007
--./lib/isc/include/isc/version.h                       C       2001,2004,2005,2006,2007
--./lib/isc/include/isc/xml.h                   C       2006,2007
--./lib/isc/inet_aton.c                         C.PORTION       1996,1997,1998,1999,2000,2001,2004,2005,2007,2008
--./lib/isc/inet_ntop.c                         C       1996,1997,1998,1999,2000,2001,2004,2005,2007,2009
--./lib/isc/inet_pton.c                         C       1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2007
--./lib/isc/iterated_hash.c                     C       2006,2008,2009
--./lib/isc/lex.c                                       C       1998,1999,2000,2001,2002,2003,2004,2005,2007
--./lib/isc/lfsr.c                              C       1999,2000,2001,2002,2004,2005,2007
--./lib/isc/lib.c                                       C       1999,2000,2001,2004,2005,2007,2009
--./lib/isc/log.c                                       C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2009
--./lib/isc/md5.c                                       C       2000,2001,2004,2005,2007,2009
--./lib/isc/mem.c                                       C       1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/mem_api.c                           C       2009
--./lib/isc/mips/.cvsignore                     X       2007
--./lib/isc/mips/Makefile.in                    MAKE    2007
--./lib/isc/mips/include/.cvsignore             X       2007
--./lib/isc/mips/include/Makefile.in            MAKE    2007
--./lib/isc/mips/include/isc/.cvsignore         X       2007
--./lib/isc/mips/include/isc/Makefile.in                MAKE    2007
--./lib/isc/mips/include/isc/atomic.h           C       2005,2007
--./lib/isc/mutexblock.c                                C       1999,2000,2001,2004,2005,2007
--./lib/isc/netaddr.c                           C       1999,2000,2001,2002,2004,2005,2007
--./lib/isc/netscope.c                          C       2002,2004,2005,2006,2007
--./lib/isc/nls/.cvsignore                      X       1999,2000,2001
--./lib/isc/nls/Makefile.in                     MAKE    1999,2000,2001,2004,2007,2009
--./lib/isc/nls/msgcat.c                                C       1999,2000,2001,2004,2005,2007
--./lib/isc/noatomic/.cvsignore                 X       2007
--./lib/isc/noatomic/Makefile.in                        MAKE    2007
--./lib/isc/noatomic/include/.cvsignore         X       2007
--./lib/isc/noatomic/include/Makefile.in                MAKE    2007
--./lib/isc/noatomic/include/isc/.cvsignore     X       2007
--./lib/isc/noatomic/include/isc/Makefile.in    MAKE    2007
--./lib/isc/noatomic/include/isc/atomic.h               C       2005,2007
--./lib/isc/nothreads/.cvsignore                        X       2000,2001
--./lib/isc/nothreads/Makefile.in                       MAKE    2000,2001,2004,2007,2009
--./lib/isc/nothreads/condition.c                       C       2000,2001,2004,2006,2007
--./lib/isc/nothreads/include/.cvsignore                X       2000,2001
--./lib/isc/nothreads/include/Makefile.in               MAKE    2000,2001,2004,2007
--./lib/isc/nothreads/include/isc/.cvsignore    X       2000,2001
--./lib/isc/nothreads/include/isc/Makefile.in   MAKE    2000,2001,2004,2007
--./lib/isc/nothreads/include/isc/condition.h   C       2000,2001,2004,2007
--./lib/isc/nothreads/include/isc/mutex.h               C       2000,2001,2004,2007
--./lib/isc/nothreads/include/isc/once.h                C       2000,2001,2004,2007
--./lib/isc/nothreads/include/isc/thread.h      C       2000,2001,2004,2007
--./lib/isc/nothreads/mutex.c                   C       2000,2001,2004,2006,2007
--./lib/isc/nothreads/thread.c                  C       2000,2001,2004,2007
--./lib/isc/ondestroy.c                         C       2000,2001,2004,2005,2007
--./lib/isc/parseint.c                          C       2001,2002,2003,2004,2005,2007
--./lib/isc/portset.c                           C       2008
--./lib/isc/powerpc/.cvsignore                  X       2007
--./lib/isc/powerpc/Makefile.in                 MAKE    2007
--./lib/isc/powerpc/include/.cvsignore          X       2007
--./lib/isc/powerpc/include/Makefile.in         MAKE    2007
--./lib/isc/powerpc/include/isc/.cvsignore      X       2007
--./lib/isc/powerpc/include/isc/Makefile.in     MAKE    2007
--./lib/isc/powerpc/include/isc/atomic.h                C       2005,2007
--./lib/isc/print.c                             C       1999,2000,2001,2003,2004,2005,2006,2007,2008
--./lib/isc/pthreads/.cvsignore                 X       1998,1999,2000,2001
--./lib/isc/pthreads/Makefile.in                        MAKE    1998,1999,2000,2001,2004,2007,2009
--./lib/isc/pthreads/condition.c                        C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/pthreads/include/.cvsignore         X       1998,1999,2000,2001
--./lib/isc/pthreads/include/Makefile.in                MAKE    1998,1999,2000,2001,2004,2007
--./lib/isc/pthreads/include/isc/.cvsignore     X       1998,1999,2000,2001
--./lib/isc/pthreads/include/isc/Makefile.in    MAKE    1998,1999,2000,2001,2004,2007
--./lib/isc/pthreads/include/isc/condition.h    C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/pthreads/include/isc/mutex.h                C       1998,1999,2000,2001,2002,2004,2005,2007
--./lib/isc/pthreads/include/isc/once.h         C       1999,2000,2001,2004,2005,2007
--./lib/isc/pthreads/include/isc/thread.h               C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/pthreads/mutex.c                    C       2000,2001,2002,2004,2005,2007,2008
--./lib/isc/pthreads/thread.c                   C       2000,2001,2003,2004,2005,2007
--./lib/isc/quota.c                             C       2000,2001,2004,2005,2007
--./lib/isc/radix.c                             C       2007,2008,2009
--./lib/isc/random.c                            C       1999,2000,2001,2002,2003,2004,2005,2007,2009
--./lib/isc/ratelimiter.c                               C       1999,2000,2001,2002,2004,2005,2007
--./lib/isc/refcount.c                          C       2005,2007
--./lib/isc/region.c                            C       2002,2004,2005,2007
--./lib/isc/result.c                            C       1998,1999,2000,2001,2003,2004,2005,2007,2008
--./lib/isc/rwlock.c                            C       1998,1999,2000,2001,2003,2004,2005,2007,2009
--./lib/isc/serial.c                            C       1999,2000,2001,2004,2005,2007
--./lib/isc/sha1.c                              C       2000,2001,2003,2004,2005,2007,2009
--./lib/isc/sha2.c                              C       2005,2006,2007,2009
--./lib/isc/sockaddr.c                          C       1999,2000,2001,2002,2003,2004,2005,2006,2007
--./lib/isc/socket_api.c                                C       2009
--./lib/isc/sparc64/.cvsignore                  X       2007
--./lib/isc/sparc64/Makefile.in                 MAKE    2007
--./lib/isc/sparc64/include/.cvsignore          X       2007
--./lib/isc/sparc64/include/Makefile.in         MAKE    2007
--./lib/isc/sparc64/include/isc/.cvsignore      X       2007
--./lib/isc/sparc64/include/isc/Makefile.in     MAKE    2007
--./lib/isc/sparc64/include/isc/atomic.h                C       2005,2007
--./lib/isc/stats.c                             C       2009
--./lib/isc/string.c                            C       1999,2000,2001,2003,2004,2005,2006,2007
--./lib/isc/strtoul.c                           C       2003,2004,2005,2007
--./lib/isc/symtab.c                            C       1996,1997,1998,1999,2000,2001,2004,2005,2007
--./lib/isc/task.c                              C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/task_api.c                          C       2009
--./lib/isc/task_p.h                            C       2000,2001,2004,2005,2007,2009
--./lib/isc/taskpool.c                          C       1999,2000,2001,2004,2005,2007
--./lib/isc/timer.c                             C       1998,1999,2000,2001,2002,2004,2005,2007,2008,2009
--./lib/isc/timer_api.c                         C       2009
--./lib/isc/timer_p.h                           C       2000,2001,2004,2005,2007,2009
--./lib/isc/unix/.cvsignore                     X       1998,1999,2000,2001
--./lib/isc/unix/Makefile.in                    MAKE    1998,1999,2000,2001,2004,2007,2009
--./lib/isc/unix/app.c                          C       1999,2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/isc/unix/dir.c                          C       1999,2000,2001,2004,2005,2007,2008,2009
--./lib/isc/unix/entropy.c                      C       2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/isc/unix/errno2result.c                 C       2000,2001,2002,2004,2005,2007
--./lib/isc/unix/errno2result.h                 C       2000,2001,2004,2005,2007
--./lib/isc/unix/file.c                         C       2000,2001,2002,2004,2005,2007,2009
--./lib/isc/unix/fsaccess.c                     C       2000,2001,2004,2005,2006,2007
--./lib/isc/unix/ifiter_getifaddrs.c            C       2003,2004,2005,2007,2008
--./lib/isc/unix/ifiter_ioctl.c                 C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/unix/ifiter_sysctl.c                        C       1999,2000,2001,2002,2003,2004,2005,2007
--./lib/isc/unix/include/.cvsignore             X       1998,1999,2000,2001
--./lib/isc/unix/include/Makefile.in            MAKE    1998,1999,2000,2001,2004,2007
--./lib/isc/unix/include/isc/.cvsignore         X       1998,1999,2000,2001
--./lib/isc/unix/include/isc/Makefile.in                MAKE    1998,1999,2000,2001,2004,2007
--./lib/isc/unix/include/isc/dir.h              C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/int.h              C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/keyboard.h         C       2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/net.h              C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./lib/isc/unix/include/isc/netdb.h            C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/offset.h           C       2000,2001,2004,2005,2007,2008
--./lib/isc/unix/include/isc/stat.h             C       2004,2007
--./lib/isc/unix/include/isc/stdtime.h          C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/strerror.h         C       2001,2004,2005,2007,2008
--./lib/isc/unix/include/isc/syslog.h           C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/include/isc/time.h             C       1998,1999,2000,2001,2004,2005,2006,2007,2008,2009
--./lib/isc/unix/interfaceiter.c                        C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./lib/isc/unix/ipv6.c                         C       1999,2000,2001,2004,2005,2006,2007
--./lib/isc/unix/keyboard.c                     C       2000,2001,2004,2007
--./lib/isc/unix/net.c                          C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./lib/isc/unix/os.c                           C       2000,2001,2004,2005,2007
--./lib/isc/unix/resource.c                     C       2000,2001,2004,2007,2008,2009
--./lib/isc/unix/socket.c                               C       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/unix/socket_p.h                     C       2000,2001,2004,2005,2007,2008,2009
--./lib/isc/unix/stdio.c                                C       2000,2001,2004,2007
--./lib/isc/unix/stdtime.c                      C       1999,2000,2001,2004,2005,2007
--./lib/isc/unix/strerror.c                     C       2001,2004,2005,2007,2009
--./lib/isc/unix/syslog.c                               C       2001,2004,2005,2007
--./lib/isc/unix/time.c                         C       1998,1999,2000,2001,2003,2004,2005,2006,2007,2008
--./lib/isc/version.c                           C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/win32/.cvsignore                    X       1999,2000,2001
--./lib/isc/win32/DLLMain.c                     C       2001,2004,2007
--./lib/isc/win32/Makefile.in                   MAKE    1999,2000,2001,2004,2007,2009
--./lib/isc/win32/app.c                         C       1999,2000,2001,2004,2007,2009
--./lib/isc/win32/condition.c                   C       1998,1999,2000,2001,2004,2006,2007
--./lib/isc/win32/dir.c                         C       1999,2000,2001,2004,2007,2008,2009
--./lib/isc/win32/entropy.c                     C       2000,2001,2002,2004,2007,2009
--./lib/isc/win32/errno2result.c                        C       2000,2001,2002,2004,2005,2007,2008
--./lib/isc/win32/errno2result.h                        C       2000,2001,2004,2005,2007
--./lib/isc/win32/file.c                                C       2000,2001,2002,2004,2007,2009
--./lib/isc/win32/fsaccess.c                    C       2000,2001,2002,2004,2007
--./lib/isc/win32/include/.cvsignore            X       1999,2000,2001
--./lib/isc/win32/include/Makefile.in           MAKE    1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/.cvsignore                X       1999,2000,2001
--./lib/isc/win32/include/isc/Makefile.in               MAKE    1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/bind_registry.h   C       2001,2004,2007
--./lib/isc/win32/include/isc/bindevt.h         C       2001,2004,2007
--./lib/isc/win32/include/isc/condition.h               C       1998,1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/dir.h             C       1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/int.h             C       1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/ipv6.h            C       1999,2000,2001,2002,2004,2005,2007
--./lib/isc/win32/include/isc/keyboard.h                C       2000,2001,2004,2007
--./lib/isc/win32/include/isc/mutex.h           C       1998,1999,2000,2001,2004,2007,2008,2009
--./lib/isc/win32/include/isc/net.h             C       1999,2000,2001,2002,2003,2004,2005,2007,2008
--./lib/isc/win32/include/isc/netdb.h           C       1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/ntgroups.h                C       2001,2004,2007
--./lib/isc/win32/include/isc/ntpaths.h         C       2000,2001,2004,2007,2009
--./lib/isc/win32/include/isc/offset.h          C       2000,2001,2004,2007
--./lib/isc/win32/include/isc/once.h            C       1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/platform.h                C       2001,2004,2005,2007,2008
--./lib/isc/win32/include/isc/stat.h            C       2000,2001,2003,2004,2007
--./lib/isc/win32/include/isc/stdtime.h         C       1999,2000,2001,2004,2005,2007
--./lib/isc/win32/include/isc/strerror.h                C       2001,2004,2007
--./lib/isc/win32/include/isc/syslog.h          C       1999,2000,2001,2004,2007
--./lib/isc/win32/include/isc/thread.h          C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/win32/include/isc/time.h            C       1998,1999,2000,2001,2004,2006,2007,2008,2009
--./lib/isc/win32/include/isc/win32os.h         C       2002,2004,2007,2009
--./lib/isc/win32/interfaceiter.c                       C       1999,2000,2001,2004,2007,2008,2009
--./lib/isc/win32/ipv6.c                                C       1999,2000,2001,2004,2007
--./lib/isc/win32/keyboard.c                    C       2000,2001,2004,2007
--./lib/isc/win32/libgen.h                      C       2009
--./lib/isc/win32/libisc.def                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/win32/libisc.dsp                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/win32/libisc.dsw                    X       2001
--./lib/isc/win32/libisc.mak                    X       2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/win32/net.c                         C       1999,2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/isc/win32/netdb.h                               C       2000,2001,2004,2006,2007,2009
--./lib/isc/win32/ntgroups.c                    C       2001,2004,2006,2007
--./lib/isc/win32/ntpaths.c                     C       2001,2004,2007,2009
--./lib/isc/win32/once.c                                C       1999,2000,2001,2004,2007
--./lib/isc/win32/os.c                          C       2000,2001,2002,2004,2007
--./lib/isc/win32/resource.c                    C       2000,2001,2004,2007,2008
--./lib/isc/win32/socket.c                      C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isc/win32/stdio.c                               C       2000,2001,2004,2007
--./lib/isc/win32/stdtime.c                     C       1999,2000,2001,2004,2007
--./lib/isc/win32/strerror.c                    C       2001,2002,2004,2007
--./lib/isc/win32/syslog.c                      C       2001,2002,2003,2004,2007
--./lib/isc/win32/syslog.h                      C       2001,2002,2004,2007
--./lib/isc/win32/thread.c                      C       1998,1999,2000,2001,2004,2005,2007
--./lib/isc/win32/time.c                                C       1998,1999,2000,2001,2003,2004,2006,2007,2008,2009
--./lib/isc/win32/unistd.h                      C       2000,2001,2004,2007,2008,2009
--./lib/isc/win32/version.c                     C       1998,1999,2000,2001,2004,2007
--./lib/isc/win32/win32os.c                     C       2002,2004,2007
--./lib/isc/x86_32/.cvsignore                   X       2007
--./lib/isc/x86_32/Makefile.in                  MAKE    2007
--./lib/isc/x86_32/include/.cvsignore           X       2007
--./lib/isc/x86_32/include/Makefile.in          MAKE    2007
--./lib/isc/x86_32/include/isc/.cvsignore               X       2007
--./lib/isc/x86_32/include/isc/Makefile.in      MAKE    2007
--./lib/isc/x86_32/include/isc/atomic.h         C       2005,2007,2008
--./lib/isc/x86_64/.cvsignore                   X       2007
--./lib/isc/x86_64/Makefile.in                  MAKE    2007
--./lib/isc/x86_64/include/.cvsignore           X       2007
--./lib/isc/x86_64/include/Makefile.in          MAKE    2007
--./lib/isc/x86_64/include/isc/.cvsignore               X       2007
--./lib/isc/x86_64/include/isc/Makefile.in      MAKE    2007
--./lib/isc/x86_64/include/isc/atomic.h         C       2005,2007,2008
--./lib/isccc/.cvsignore                                X       2001
--./lib/isccc/Makefile.in                               MAKE    2001,2003,2004,2007,2009
--./lib/isccc/alist.c                           C.NOM   2001,2004,2005,2007
--./lib/isccc/api                                       X       2001,2006,2008
--./lib/isccc/base64.c                          C.NOM   2001,2004,2005,2007
--./lib/isccc/cc.c                              C.NOM   2001,2002,2003,2004,2005,2006,2007
--./lib/isccc/ccmsg.c                           C.NOM   2001,2004,2005,2007
--./lib/isccc/include/.cvsignore                        X       2001
--./lib/isccc/include/Makefile.in                       MAKE    2001,2004,2007
--./lib/isccc/include/isccc/.cvsignore          X       2001
--./lib/isccc/include/isccc/Makefile.in         MAKE    2001,2004,2007
--./lib/isccc/include/isccc/alist.h             C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/base64.h            C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/cc.h                        C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/ccmsg.h             C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/events.h            C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/lib.h                       C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/result.h            C.NOM   2001,2003,2004,2005,2006,2007
--./lib/isccc/include/isccc/sexpr.h             C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/symtab.h            C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/symtype.h           C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/types.h             C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/util.h              C.NOM   2001,2004,2005,2006,2007
--./lib/isccc/include/isccc/version.h           C       2001,2004,2005,2006,2007
--./lib/isccc/lib.c                             C.NOM   2001,2004,2005,2007
--./lib/isccc/result.c                          C.NOM   2001,2003,2004,2005,2007
--./lib/isccc/sexpr.c                           C.NOM   2001,2004,2005,2007
--./lib/isccc/symtab.c                          C.NOM   2001,2004,2005,2007
--./lib/isccc/version.c                         C       1998,1999,2000,2001,2004,2005,2007
--./lib/isccc/win32/DLLMain.c                   C       2001,2004,2007
--./lib/isccc/win32/libisccc.def                        X       2001
--./lib/isccc/win32/libisccc.dsp                        X       2001,2004,2005,2009
--./lib/isccc/win32/libisccc.dsw                        X       2001
--./lib/isccc/win32/libisccc.mak                        X       2001,2002,2004,2005,2006,2009
--./lib/isccc/win32/version.c                   C       2001,2004,2007
--./lib/isccfg/.cvsignore                               X       2001
--./lib/isccfg/Makefile.in                      MAKE    2001,2002,2003,2004,2005,2007,2009
--./lib/isccfg/aclconf.c                                C       1999,2000,2001,2002,2004,2005,2006,2007,2008,2009
--./lib/isccfg/api                              X       2001,2006,2008
--./lib/isccfg/dnsconf.c                                C       2009
--./lib/isccfg/include/.cvsignore                       X       2001
--./lib/isccfg/include/Makefile.in              MAKE    2001,2004,2007
--./lib/isccfg/include/isccfg/.cvsignore                X       2001
--./lib/isccfg/include/isccfg/Makefile.in               MAKE    2001,2002,2004,2005,2007
--./lib/isccfg/include/isccfg/aclconf.h         C       1999,2000,2001,2004,2005,2006,2007
--./lib/isccfg/include/isccfg/cfg.h             C       2000,2001,2002,2004,2005,2006,2007
--./lib/isccfg/include/isccfg/dnsconf.h         C       2009
--./lib/isccfg/include/isccfg/grammar.h         C       2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isccfg/include/isccfg/log.h             C       2001,2004,2005,2006,2007,2009
--./lib/isccfg/include/isccfg/namedconf.h               C       2002,2004,2005,2006,2007,2009
--./lib/isccfg/include/isccfg/version.h         C       2001,2004,2005,2006,2007
--./lib/isccfg/log.c                            C       2001,2004,2005,2006,2007
--./lib/isccfg/namedconf.c                      C       2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isccfg/parser.c                         C       2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./lib/isccfg/version.c                                C       1998,1999,2000,2001,2004,2005,2007
--./lib/isccfg/win32/DLLMain.c                  C       2001,2004,2007
--./lib/isccfg/win32/libisccfg.def              X       2001,2002,2005,2009
--./lib/isccfg/win32/libisccfg.dsp              X       2001,2002,2004,2005,2009
--./lib/isccfg/win32/libisccfg.dsw              X       2001
--./lib/isccfg/win32/libisccfg.mak              X       2001,2002,2004,2005,2006,2009
--./lib/isccfg/win32/version.c                  C       1998,1999,2000,2001,2004,2007
--./lib/lwres/.cvsignore                                X       2000,2001
--./lib/lwres/Makefile.in                               MAKE    2000,2001,2004,2005,2007
--./lib/lwres/api                                       X       2000,2001,2006,2008
--./lib/lwres/assert_p.h                                C       2000,2001,2004,2005,2007
--./lib/lwres/context.c                         C       2000,2001,2003,2004,2005,2007,2008,2009
--./lib/lwres/context_p.h                               C       2000,2001,2004,2005,2007,2008
--./lib/lwres/gai_strerror.c                    C       2000,2001,2004,2005,2006,2007
--./lib/lwres/getaddrinfo.c                     C.BSDI  1999,2000,2001,2004,2005,2006,2007,2008
--./lib/lwres/gethost.c                         C       2000,2001,2004,2005,2007
--./lib/lwres/getipnode.c                               C       1999,2000,2001,2002,2003,2004,2005,2007,2009
--./lib/lwres/getnameinfo.c                     C.PORTION       1999,2000,2001,2003,2004,2005,2007
--./lib/lwres/getrrset.c                                C       2000,2001,2002,2003,2004,2005,2007
--./lib/lwres/herror.c                          C.PORTION       2000,2001,2003,2004,2005,2007
--./lib/lwres/include/.cvsignore                        X       2000,2001
--./lib/lwres/include/Makefile.in                       MAKE    2000,2001,2004,2007
--./lib/lwres/include/lwres/.cvsignore          X       2000,2001
--./lib/lwres/include/lwres/Makefile.in         MAKE    2000,2001,2004,2007
--./lib/lwres/include/lwres/context.h           C       2000,2001,2004,2005,2006,2007,2008
--./lib/lwres/include/lwres/int.h                       C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/ipv6.h              C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/lang.h              C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/list.h              C       1997,1998,1999,2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/lwbuffer.h          C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/lwpacket.h          C       1999,2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/lwres.h             C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/netdb.h.in          C       2000,2001,2004,2005,2007,2009
--./lib/lwres/include/lwres/platform.h.in               C       2000,2001,2004,2005,2007
--./lib/lwres/include/lwres/result.h            C       2000,2001,2004,2005,2006,2007
--./lib/lwres/include/lwres/stdlib.h            C       2003,2004,2005,2006,2007
--./lib/lwres/include/lwres/version.h           C       2001,2004,2005,2006,2007
--./lib/lwres/lwbuffer.c                                C       2000,2001,2004,2005,2007
--./lib/lwres/lwconfig.c                                C       2000,2001,2002,2003,2004,2005,2006,2007,2008
--./lib/lwres/lwinetaton.c                      C.PORTION       1996,1997,1998,1999,2000,2001,2003,2004,2005,2007
--./lib/lwres/lwinetntop.c                      C       1996,1997,1998,1999,2000,2001,2003,2004,2005,2007
--./lib/lwres/lwinetpton.c                      C       1996,1997,1998,1999,2000,2001,2004,2005,2007
--./lib/lwres/lwpacket.c                                C       2000,2001,2004,2005,2007
--./lib/lwres/lwres_gabn.c                      C       2000,2001,2004,2005,2007
--./lib/lwres/lwres_gnba.c                      C       2000,2001,2002,2004,2005,2007
--./lib/lwres/lwres_grbn.c                      C       2000,2001,2004,2005,2007
--./lib/lwres/lwres_noop.c                      C       2000,2001,2004,2005,2007
--./lib/lwres/lwresutil.c                               C       2000,2001,2004,2005,2007
--./lib/lwres/man/.cvsignore                    X       2001
--./lib/lwres/man/Makefile.in                   MAKE    2001,2004,2007
--./lib/lwres/man/lwres.3                               MAN     DOCBOOK
--./lib/lwres/man/lwres.docbook                 SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres.html                    HTML    DOCBOOK
--./lib/lwres/man/lwres_buffer.3                        MAN     DOCBOOK
--./lib/lwres/man/lwres_buffer.docbook          SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_buffer.html             HTML    DOCBOOK
--./lib/lwres/man/lwres_config.3                        MAN     DOCBOOK
--./lib/lwres/man/lwres_config.docbook          SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_config.html             HTML    DOCBOOK
--./lib/lwres/man/lwres_context.3                       MAN     DOCBOOK
--./lib/lwres/man/lwres_context.docbook         SGML    2000,2001,2003,2004,2005,2007
--./lib/lwres/man/lwres_context.html            HTML    DOCBOOK
--./lib/lwres/man/lwres_gabn.3                  MAN     DOCBOOK
--./lib/lwres/man/lwres_gabn.docbook            SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_gabn.html                       HTML    DOCBOOK
--./lib/lwres/man/lwres_gai_strerror.3          MAN     DOCBOOK
--./lib/lwres/man/lwres_gai_strerror.docbook    SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_gai_strerror.html               HTML    DOCBOOK
--./lib/lwres/man/lwres_getaddrinfo.3           MAN     DOCBOOK
--./lib/lwres/man/lwres_getaddrinfo.docbook     SGML    2000,2001,2003,2004,2005,2007
--./lib/lwres/man/lwres_getaddrinfo.html                HTML    DOCBOOK
--./lib/lwres/man/lwres_gethostent.3            MAN     DOCBOOK
--./lib/lwres/man/lwres_gethostent.docbook      SGML    2001,2004,2005,2007
--./lib/lwres/man/lwres_gethostent.html         HTML    DOCBOOK
--./lib/lwres/man/lwres_getipnode.3             MAN     DOCBOOK
--./lib/lwres/man/lwres_getipnode.docbook               SGML    2000,2001,2003,2004,2005,2007
--./lib/lwres/man/lwres_getipnode.html          HTML    DOCBOOK
--./lib/lwres/man/lwres_getnameinfo.3           MAN     DOCBOOK
--./lib/lwres/man/lwres_getnameinfo.docbook     SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_getnameinfo.html                HTML    DOCBOOK
--./lib/lwres/man/lwres_getrrsetbyname.3                MAN     DOCBOOK
--./lib/lwres/man/lwres_getrrsetbyname.docbook  SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_getrrsetbyname.html     HTML    DOCBOOK
--./lib/lwres/man/lwres_gnba.3                  MAN     DOCBOOK
--./lib/lwres/man/lwres_gnba.docbook            SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_gnba.html                       HTML    DOCBOOK
--./lib/lwres/man/lwres_hstrerror.3             MAN     DOCBOOK
--./lib/lwres/man/lwres_hstrerror.docbook               SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_hstrerror.html          HTML    DOCBOOK
--./lib/lwres/man/lwres_inetntop.3              MAN     DOCBOOK
--./lib/lwres/man/lwres_inetntop.docbook                SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_inetntop.html           HTML    DOCBOOK
--./lib/lwres/man/lwres_noop.3                  MAN     DOCBOOK
--./lib/lwres/man/lwres_noop.docbook            SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_noop.html                       HTML    DOCBOOK
--./lib/lwres/man/lwres_packet.3                        MAN     DOCBOOK
--./lib/lwres/man/lwres_packet.docbook          SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_packet.html             HTML    DOCBOOK
--./lib/lwres/man/lwres_resutil.3                       MAN     DOCBOOK
--./lib/lwres/man/lwres_resutil.docbook         SGML    2000,2001,2004,2005,2007
--./lib/lwres/man/lwres_resutil.html            HTML    DOCBOOK
--./lib/lwres/man/resolver.5                    MAN     2000,2001,2004,2007
--./lib/lwres/print.c                           C       1999,2000,2001,2003,2004,2005,2007
--./lib/lwres/print_p.h                         C       1999,2000,2001,2003,2004,2007
--./lib/lwres/strtoul.c                         C       2003,2004,2005,2007
--./lib/lwres/unix/.cvsignore                   X       2001
--./lib/lwres/unix/Makefile.in                  MAKE    2001,2004,2007
--./lib/lwres/unix/include/.cvsignore           X       2001
--./lib/lwres/unix/include/Makefile.in          MAKE    2001,2004,2007
--./lib/lwres/unix/include/lwres/.cvsignore     X       2001
--./lib/lwres/unix/include/lwres/Makefile.in    MAKE    2001,2004,2007
--./lib/lwres/unix/include/lwres/net.h          C       2000,2001,2002,2004,2005,2007
--./lib/lwres/version.c                         C       2000,2001,2004,2005,2007
--./lib/lwres/win32/.cvsignore                  X       2001
--./lib/lwres/win32/DLLMain.c                   C       2001,2004,2007
--./lib/lwres/win32/Makefile.in                 MAKE    2001,2004,2007
--./lib/lwres/win32/include/.cvsignore          X       2001
--./lib/lwres/win32/include/Makefile.in         MAKE    2001,2004,2007
--./lib/lwres/win32/include/lwres/.cvsignore    X       2001
--./lib/lwres/win32/include/lwres/Makefile.in   MAKE    2001,2004,2007
--./lib/lwres/win32/include/lwres/int.h         C       2000,2001,2004,2007
--./lib/lwres/win32/include/lwres/net.h         C       2000,2001,2004,2007
--./lib/lwres/win32/include/lwres/netdb.h               C       2000,2001,2004,2006,2007
--./lib/lwres/win32/include/lwres/platform.h    C       2000,2001,2004,2007
--./lib/lwres/win32/liblwres.def                        X       2001
--./lib/lwres/win32/liblwres.dsp                        X       2001,2002,2004,2005,2007
--./lib/lwres/win32/liblwres.dsw                        X       2001
--./lib/lwres/win32/liblwres.mak                        X       2001,2002,2004,2005,2006,2007
--./lib/lwres/win32/lwconfig.c                  C       2002,2004,2006,2007
--./lib/lwres/win32/socket.c                    C       2007
--./lib/lwres/win32/version.c                   C       1998,1999,2000,2001,2004,2007
--./lib/tests/.cvsignore                                X       1999,2000,2001
--./lib/tests/Makefile.in                               MAKE    1998,1999,2000,2001,2003,2004,2007,2009
--./lib/tests/T_testlist.imp                    X       2004
--./lib/tests/include/.cvsignore                        X       1999,2000,2001
--./lib/tests/include/Makefile.in                       MAKE    1998,1999,2000,2001,2004,2007
--./lib/tests/include/tests/.cvsignore          X       1999,2000,2001
--./lib/tests/include/tests/Makefile.in         MAKE    1999,2000,2001,2004,2007
--./lib/tests/include/tests/t_api.h             C       1999,2000,2001,2004,2005,2006,2007
--./lib/tests/t_api.c                           C       1999,2000,2001,2002,2003,2004,2005,2007,2008,2009
--./lib/win32/bindevt/bindevt.c                 C       2000,2001,2004,2007
--./lib/win32/bindevt/bindevt.dsp                       X       2001
--./lib/win32/bindevt/bindevt.dsw                       X       2001
--./lib/win32/bindevt/bindevt.mak                       X       2001,2006
--./lib/win32/bindevt/bindevt.mc                        MC      2001,2004,2007
--./libtool.m4                                  X       2000,2001,2003,2004,2006,2009
--./ltmain.sh                                   X       1999,2000,2001,2003,2004,2006,2009
--./make/.cvsignore                             X       1998,1999,2000,2001
--./make/Makefile.in                            MAKE    1998,1999,2000,2001,2004,2007
--./make/includes.in                            MAKE    1999,2000,2001,2004,2005,2007
--./make/mkdep.in                                       X       1999,2000,2001,2006
--./make/rules.in                                       MAKE    1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./mkinstalldirs                                       X       1996
--./util/.cvsignore                             X       2000,2001
--./util/COPYRIGHT                              X       1996,1997,1998,1999,2000,2001,2004,2007
--./util/COPYRIGHT.BRIEF                                X       1996,1997,1998,1999,2000,2001,2004
--./util/COPYRIGHT.BSDI                         X       2000,2001,2004,2007
--./util/COPYRIGHT.NAI                          X       1996,1997,1998,1999,2000,2001,2004,2007
--./util/COPYRIGHT.NOM                          X       2001,2004,2007
--./util/COPYRIGHT.PORTION                      X       1996,1997,1998,1999,2000,2001,2004,2007
--./util/altbuild.sh                            SH      2000,2001,2002,2004,2007,2008
--./util/check-changes                          PERL    2002,2004,2007
--./util/check-includes.pl                      PERL    2000,2001,2004,2007
--./util/check-instincludes.sh                  SH      2000,2001,2004,2007
--./util/check-pullups.pl                               PERL    2001,2002,2003,2004,2007
--./util/check-sources.pl                               PERL    2000,2001,2004,2007
--./util/copyrights                             X       1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
--./util/kit.sh                                 SH      2000,2001,2002,2003,2004,2007,2008,2009
--./util/mandoc2docbook.pl                      PERL    2001,2004,2007
--./util/mdnbuildtest.sh                                SH      2000,2001,2004,2007
--./util/memleak.pl                             PERL    1999,2000,2001,2004,2007
--./util/merge_copyrights                               PERL    1998,1999,2000,2001,2003,2004,2005,2006,2007,2009
--./util/mkreslib.pl                            PERL    2000,2001,2004,2007
--./util/mksymtbl.pl                            PERL    2009
--./util/nanny.pl                                       PERL    2000,2001,2004,2007
--./util/new-func                                       PERL    2005,2007
--./util/nt-kit                                 SH      1999,2000,2001,2004,2007
--./util/spacewhack.pl                          PERL    2000,2001,2004,2007
--./util/tabify-changes                         SH      2004,2007
--./util/update-drafts.pl                               PERL    2000,2001,2004,2007
--./util/update_branches                                PERL    2005,2007
--./util/update_copyrights                      PERL    1998,1999,2000,2001,2004,2005,2006,2007,2008,2009
--./version                                     X       1998,1999,2000,2001,2003,2005,2006,2007,2008,2009
--./win32utils/BINDBuild.dsw                    X       2001,2005,2006,2008,2009
--./win32utils/BuildAll.bat                     BAT     2001,2002,2004,2005,2006,2007,2008,2009
--./win32utils/BuildPost.bat                    BAT     2005,2006
--./win32utils/BuildSetup.bat                   BAT     2001,2002,2004,2005,2006,2007,2008,2009
--./win32utils/SetupLibs.bat                    BAT     2007,2009
--./win32utils/dnsheadergen.bat                 BAT     2001,2004
--./win32utils/index.html                               HTML    2006,2007,2008
--./win32utils/makedefs.pl                      PERL    2001,2004,2007,2009
--./win32utils/makeversion.pl                   PERL    2001,2004,2007
--./win32utils/readme1st.txt                    TXT.BRIEF       2001,2003,2004,2005,2007,2008,2009
--./win32utils/updatelibxml2.pl                 PERL    2009
--./win32utils/updateopenssl.pl                 PERL    2006,2007,2009
--./win32utils/win32-build.txt                  TXT.BRIEF       2001,2002,2004,2005,2008,2009
diff --cc win32utils/win32-build.txt
index cf181c37a1eb6e7c397d90860abbc6b5f32b0dbe,cf181c37a1eb6e7c397d90860abbc6b5f32b0dbe..0000000000000000000000000000000000000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,140 -1,140 +1,0 @@@
--Copyright (C) 2004, 2005, 2008, 2009  Internet Systems Consortium, Inc. ("ISC")
--Copyright (C) 2001, 2002  Internet Software Consortium.
--See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
--
--$Id: win32-build.txt,v 1.16 2009/09/02 08:41:06 fdupont Exp $
--
--       BIND 9.7 for Win32 Source Build Instructions.  02-Jul-2009
--
--Building BIND 9.7 on Windows XP/2003/2008 has the following prerequisites:
--
--1) You need to install Perl for Windows.  ActivePerl
--(http://www.activestate.com/) and Strawberry Perl
--(http://www.strawberryperl.com) have both been tested and found
--to work.
--
--2) OpenSSL (http://www.openssl.org) needs to be downloaded and built
--on the system on which you are building BIND.
--
--3) If you wish to use the statistics channel, LibXML2
--(ftp://xmlsoft.org/libxml2) needs to be downloaded and built on
--the system on which you are building BIND.  (If you do not wish
--to use the statistics channel, remove HAVE_LIBXML2 from config.h.win32.)
--
--4) If you want to build using Visual C++ 6.0, you'll need some extra
--files that are to be found in the Platform SDK (which you will need
--to install), namely:
--
--iphlpapi.h
--iptypes.h
--ipexport.h
--iphlpapi.lib
--
--You'll also need an updated Iprtrmib.h - using the VC++6.0 one will
--get you some compilation errors. You can just overwrite the old one if
--you're not using it for any purposes, and maybe keep a backup of it. 
--
--You can copy the header files under VC98\INCLUDE and the library file
--under VC98\LIB. I think you can also put them in a separate directory
--and add it to the include search list, but I don't know if that can be
--made persistent. 
--
--For building on VC++ 7.0 no extra files are required. 
--
--The instructions assume a Visual C++ 6.0 compiler with Visual Studio and
--Visual Studio Service Pack 3 or later. It may build and work with earlier
--versions but it has not been tested. The binaries may be built and run on
--any of the following platforms: NT 4.0 Workstation (SP3 or later), NT 4.0
--Server (SP3 or later), Windows 2000 Professional (SP1 or later),
--Windows 2000 Server or any kind (SP1 or later), Windows XP, Windows 2003
--Server. It will NOT build or run on Windows 95, Windows 98, etc. platforms.
--
--Step 1: Download and build OpenSSL
--
--Download and untar the OpenSSL sources from http://www.openssl.org/.
--Extract them at in the same directory in which you extracted the BIND9
--source:  If BIND9 is in \build\bind-9.7.0, for instance, OpenSSL should be
--in \build\openssl-0.9.8k (subject to version number changes).
--
--Note: Building OpenSSL requires that you install Perl as it uses
--it during its build process. The following commands work as of
--openssl-0.9.8k, but you should check the OpenSSL distribution 
--to see if the build instructions have changed:
--
--  cd openssl-0.9.8k
--  perl Configure VC-WIN32 --prefix=c:/openssl
--  ms\do_masm
--  nmake /f ms\ntll.mak
--
--Step 2: Download and build libxml2
--
--Download and untar the libxml2 sources from ftp://xmlsoft.org/libxml2.
--Extract them at in the same directory in which you extracted the BIND9
--source:  If BIND9 is in \build\bind-9.7.0, for instance, libxml2 should
--be in \build\libxml2-2.7.3 (subject to version number changes).
--
--Now build libxml2, and copy the resulting files into the include and lib
--directories:
--
-- cd libxml2-2.7.3\win32
-- cscript configure.js compiler=msvc vcmanifest=yes static=yes debug=no iconv=no
-- nmake /f Makefile.msvc libxml
--
--Step 3: Building BIND
--
--You must build openssl and libxml2 first. 
--
--From the command prompt cd to the win32utils directory under
--the BIND9 root:
--
--  cd bind-9.7.0\win32utils
--  
--If using VC++ 6.0, run the BuildAll.bat file:
--
--  BuildAll
--
--This will do the following:
--1) copy config.h.win32 to config.h in the root.
--2) create the versions.h file in the root.
--3) Build the gen application in the lib/dns directory.
--4) Run the gen application and build the required lib/dns header
--   files.
--5) Create the Build/Release subdirectory under the root of the BIND
--   source tree which will hold the binaries being built.
--6) Build the libraries, named, application tools like dig, rndc
--   dnssec tools, installer, checkconf and checkzones programs,
--   BIND 9 Installer.
--7) Copies the release notes and the OpenSSL DLL to the BUILD/Release
--   directory.
--8) Copies the BIND 9 ARM HTML files and the application HTML files
--   to the Build\Release area.
--
--If you wish to use the Visual Studio GUI for building, you can just
--run the BuildSetup.bat file:
--
--  BuildSetup
--  
--This will create or find and copy into place several files which are
--necessary for the build to proceed.  It also locates and copies into place
--the DLLs for OpenSSL and libxml2.
--
--Use BINDBuild.dsw (also located in the win32utils directory) to open the
--workspace for all of the BIND9 libraries and applications.  Select
--"Build->Batch Build", click "Select All", then click "Build".
--
--After the build has completed, run the BuildPost.bat file:
--
--  BuildPost
--
--...which does post-build processing.
--
--Installation is accomplished by running the BINDInstall program. All DLL's
--are copied to the system32 area and all applications (including BINDInstall
--which may be necessary for uninstalling BIND 9) to the dns/bin directory.
--If BIND 8 has previously been installed on the system it must be uninstalled
--first by running it's own BINDInstall program.  The BIND 9 installer does
--not yet do this.
--
--All bugs found, whether in the process of building the application or
--running BIND or the tools should be reported to the bind9 bugs email
--account at bind9-bugs@isc.org.