cvs updates from Mon Dec 20 21:24:21 EST 2010
authorAndrew Tridgell <tridge@samba.org>
Mon, 20 Dec 2010 10:24:21 +0000 (21:24 +1100)
committerAndrew Tridgell <tridge@samba.org>
Mon, 20 Dec 2010 10:24:21 +0000 (21:24 +1100)
122 files changed:
CHANGES
bin/dnssec/dnssec-settime.c
bin/named/include/named/zoneconf.h
bin/named/named.conf.5
bin/named/named.conf.docbook
bin/named/named.conf.html
bin/named/server.c
bin/named/tkeyconf.c
bin/named/update.c
bin/named/xfrout.c
bin/named/zoneconf.c
bin/nsupdate/nsupdate.c
bin/tests/dst/gsstest.c
bin/tests/system/autosign/clean.sh
bin/tests/system/conf.sh.in
bin/tests/system/dlzexternal/clean.sh [new file with mode: 0644]
bin/tests/system/dlzexternal/ns1/named.conf [new file with mode: 0644]
bin/tests/system/dlzexternal/prereq.sh [new file with mode: 0644]
bin/tests/system/dlzexternal/setup.sh [new file with mode: 0644]
bin/tests/system/dlzexternal/tests.sh [new file with mode: 0644]
bin/tests/system/dns64/clean.sh
bin/tests/system/dns64/setup.sh
bin/tests/system/dnssec/clean.sh
bin/tests/system/resolver/clean.sh
bin/tests/system/staticstub/conf/bad01.conf
bin/tests/system/staticstub/conf/bad02.conf
bin/tests/system/staticstub/conf/bad03.conf
bin/tests/system/staticstub/conf/bad04.conf
bin/tests/system/staticstub/conf/bad05.conf
bin/tests/system/staticstub/conf/bad06.conf
bin/tests/system/staticstub/conf/bad07.conf
bin/tests/system/staticstub/conf/bad08.conf
bin/tests/system/staticstub/conf/bad09.conf
bin/tests/system/staticstub/conf/bad10.conf
bin/tests/system/staticstub/conf/bad11.conf
bin/tests/system/staticstub/conf/good01.conf
bin/tests/system/staticstub/conf/good02.conf
bin/tests/system/staticstub/conf/good03.conf
bin/tests/system/staticstub/conf/good04.conf
bin/tests/system/staticstub/conf/good05.conf
bin/tests/system/staticstub/ns2/named.conf.in
bin/tests/system/staticstub/ns3/named.conf.in
bin/tests/system/staticstub/ns4/named.conf
bin/tests/system/tsiggss/clean.sh [new file with mode: 0644]
bin/tests/system/tsiggss/ns1/administrator.ccache [new file with mode: 0644]
bin/tests/system/tsiggss/ns1/dns.keytab [new file with mode: 0644]
bin/tests/system/tsiggss/ns1/example.nil.db [new file with mode: 0644]
bin/tests/system/tsiggss/ns1/named.conf [new file with mode: 0644]
bin/tests/system/tsiggss/ns1/testdenied.ccache [new file with mode: 0644]
bin/tests/system/tsiggss/prereq.sh [new file with mode: 0644]
bin/tests/system/tsiggss/setup.sh [new file with mode: 0644]
bin/tests/system/tsiggss/tests.sh [new file with mode: 0644]
config.h.in
configure
configure.in
contrib/dlz/config.dlz.in
contrib/dlz/drivers/dlz_bdb_driver.c
contrib/dlz/drivers/dlz_bdbhpt_driver.c
contrib/dlz/drivers/dlz_dlopen_driver.c [new file with mode: 0644]
contrib/dlz/drivers/dlz_drivers.c
contrib/dlz/drivers/dlz_filesystem_driver.c
contrib/dlz/drivers/dlz_ldap_driver.c
contrib/dlz/drivers/dlz_mysql_driver.c
contrib/dlz/drivers/dlz_odbc_driver.c
contrib/dlz/drivers/dlz_postgres_driver.c
contrib/dlz/drivers/dlz_stub_driver.c
contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h [new file with mode: 0644]
contrib/dlz/drivers/rules.in
contrib/dlz/example/Makefile [new file with mode: 0644]
contrib/dlz/example/dlz_example.c [new file with mode: 0644]
contrib/dlz/example/dlz_minimal.h [new file with mode: 0644]
doc/arm/Bv9ARM-book.xml
doc/arm/Bv9ARM.ch04.html
doc/arm/Bv9ARM.ch05.html
doc/arm/Bv9ARM.ch06.html
doc/arm/Bv9ARM.ch07.html
doc/arm/Bv9ARM.ch08.html
doc/arm/Bv9ARM.ch09.html
doc/arm/Bv9ARM.html
doc/arm/man.arpaname.html
doc/arm/man.ddns-confgen.html
doc/arm/man.dig.html
doc/arm/man.dnssec-dsfromkey.html
doc/arm/man.dnssec-keyfromlabel.html
doc/arm/man.dnssec-keygen.html
doc/arm/man.dnssec-revoke.html
doc/arm/man.dnssec-settime.html
doc/arm/man.dnssec-signzone.html
doc/arm/man.genrandom.html
doc/arm/man.host.html
doc/arm/man.isc-hmac-fixup.html
doc/arm/man.named-checkconf.html
doc/arm/man.named-checkzone.html
doc/arm/man.named-journalprint.html
doc/arm/man.named.html
doc/arm/man.nsec3hash.html
doc/arm/man.nsupdate.html
doc/arm/man.rndc-confgen.html
doc/arm/man.rndc.conf.html
doc/arm/man.rndc.html
doc/misc/options
lib/dns/dlz.c
lib/dns/dst_api.c
lib/dns/dst_internal.h
lib/dns/gssapictx.c
lib/dns/include/dns/dlz.h
lib/dns/include/dns/sdlz.h
lib/dns/include/dns/ssu.h
lib/dns/include/dns/tkey.h
lib/dns/include/dns/zone.h
lib/dns/include/dst/dst.h
lib/dns/include/dst/gssapi.h
lib/dns/sdlz.c
lib/dns/spnego.c
lib/dns/ssu.c
lib/dns/tkey.c
lib/dns/view.c
lib/dns/zone.c
lib/isc/include/isc/buffer.h
lib/isc/include/isc/platform.h.in
lib/isccfg/namedconf.c
util/copyrights

diff --git a/CHANGES b/CHANGES
index 47f708f33c1693f9ec76751c1c470363dea7afd2..6b4d776e10e84d095a4da01915d167509cbee37c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,33 @@
+2990.  [bug]           'dnssec-settime -S' no longer tests prepublication
+                       interval validity when the interval is set to 0.
+                       [RT #22761]
+
+2989.  [func]          Added support for writable DLZ zones. (Contributed
+                       by Andrew Tridgell of the Samba project.) [RT #22629]
+
+2988.  [experimental]  Added a "dlopen" DLZ driver, allowing the creation
+                       of external DLZ drivers that can be loaded as
+                       shared objects at runtime rather than linked with
+                       named.  Currently this is switched on via a
+                       compile-time option, "configure --with-dlz-dlopen".
+                       Note: the syntax for configuring DLZ zones
+                       is likely to be refined in future releases.
+                       (Contributed by Andrew Tridgell of the Samba
+                       project.) [RT #22629]
+
+2987.  [func]          Improve ease of configuring TKEY/GSS updates by
+                       adding a "tkey-gssapi-keytab" option.  If set,
+                       updates will be allowed with any key matching
+                       a principal in the specified keytab file.
+                       "tkey-gssapi-credential" is no longer required
+                       and is expected to be deprecated.  (Contributed
+                       by Andrew Tridgell of the Samba project.)
+                       [RT #22629]
+
+2986.  [func]          Add new zone type "static-stub".  It's like a stub
+                       zone, but the nameserver names and/or their IP
+                       addresses are statically configured. [RT #21474]
+
 2985.  [bug]           Add a regression test for change #2896. [RT #21324]
 
 2984.  [bug]           Don't run MX checks when the target of the MX record
@@ -5,10 +35,6 @@
 
 2983.  [bug]           Include "loadkeys" in rndc help output. [RT #22493]
 
-2947.  [func]          Add new zone type "static-stub".  It's like a stub
-                       zone, but the nameserver names and/or their IP
-                       addresses are statically configured. [RT #21474]
-
        --- 9.8.0a1 released ---
 
 2982.  [bug]           Reference count dst keys.  dst_key_attach() can be used
                        interfaces at reboot. See bin/tests/system/README
                        for details.
 
+2947.  [placeholder]
+
 2946.  [doc]           Document the default values for the minimum and maximum
                        zone refresh and retry values in the ARM. [RT #21886]
 
index 051b649673e47bb1f3b6a055b1de0e740466bd61..7791db01e0083abf1e20598b51ccaad26f2b52b4 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dnssec-settime.c,v 1.27 2010/08/16 23:46:51 tbox Exp $ */
+/* $Id: dnssec-settime.c,v 1.28 2010/12/19 07:29:36 each Exp $ */
 
 /*! \file */
 
@@ -386,7 +386,7 @@ main(int argc, char **argv) {
                              "generating a successor.");
 
                pub = act - prepub;
-               if (pub < now)
+               if (pub < now && prepub != 0)
                        fatal("Predecessor will become inactive before the\n\t"
                              "prepublication period ends.  Either change "
                              "its inactivation date,\n\t"
index b973013c22da7a3c9668e0f85c3590b6c954a69e..6bf20275912a8a970c81ec52d410c0f30141cfb4 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zoneconf.h,v 1.26 2007/06/19 23:46:59 tbox Exp $ */
+/* $Id: zoneconf.h,v 1.27 2010/12/18 01:56:19 each Exp $ */
 
 #ifndef NS_ZONECONF_H
 #define NS_ZONECONF_H 1
@@ -58,6 +58,21 @@ ns_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig);
  * and recreated, return ISC_FALSE.
  */
 
+
+isc_result_t
+ns_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase, dns_zone_t *zone,
+                               dns_rdataclass_t rdclass, dns_name_t *name);
+/*%>
+ * configure a DLZ zone, setting up the database methods and calling
+ * postload to load the origin values
+ *
+ * Require:
+ * \li 'dlzdatabase' to be a valid dlz database
+ * \li 'zone' to be initialized.
+ * \li 'rdclass' to be a valid rdataclass
+ * \li 'name' to be a valid zone origin name
+ */
+
 ISC_LANG_ENDDECLS
 
 #endif /* NS_ZONECONF_H */
index 876428dc9859e7c8ac735713c29ea9f3e6695f27..e330e0f986abba56544598f089cfe1a14e71c7f4 100644 (file)
@@ -12,7 +12,7 @@
 .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 .\" PERFORMANCE OF THIS SOFTWARE.
 .\"
-.\" $Id: named.conf.5,v 1.42 2010/05/15 01:14:24 tbox Exp $
+.\" $Id: named.conf.5,v 1.43 2010/12/19 01:14:05 tbox Exp $
 .\"
 .hy 0
 .ad l
@@ -195,6 +195,7 @@ options {
        tcp\-listen\-queue \fIinteger\fR;
        tkey\-dhkey \fIquoted_string\fR \fIinteger\fR;
        tkey\-gssapi\-credential \fIquoted_string\fR;
+       tkey\-gssapi\-keytab \fIquoted_string\fR;
        tkey\-domain \fIquoted_string\fR;
        transfers\-per\-ns \fIinteger\fR;
        transfers\-in \fIinteger\fR;
index 45a573549800b89eab107d369976ee9ec46f4049..93bfa08f445e271612604a44e9e0db042ff8f1ce 100644 (file)
@@ -17,7 +17,7 @@
  - PERFORMANCE OF THIS SOFTWARE.
 -->
 
-<!-- $Id: named.conf.docbook,v 1.46 2010/05/14 23:50:39 tbox Exp $ -->
+<!-- $Id: named.conf.docbook,v 1.47 2010/12/18 01:56:19 each Exp $ -->
 <refentry>
   <refentryinfo>
     <date>Aug 13, 2004</date>
@@ -225,6 +225,7 @@ options {
        tcp-listen-queue <replaceable>integer</replaceable>;
        tkey-dhkey <replaceable>quoted_string</replaceable> <replaceable>integer</replaceable>;
        tkey-gssapi-credential <replaceable>quoted_string</replaceable>;
+       tkey-gssapi-keytab <replaceable>quoted_string</replaceable>;
        tkey-domain <replaceable>quoted_string</replaceable>;
        transfers-per-ns <replaceable>integer</replaceable>;
        transfers-in <replaceable>integer</replaceable>;
index 164037cee9485919191d3f43a7470aa9b3d1d4a2..291d3de787d60b2d8299f163cc4c50d561fa5fad 100644 (file)
@@ -13,7 +13,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: named.conf.html,v 1.51 2010/05/15 01:14:24 tbox Exp $ -->
+<!-- $Id: named.conf.html,v 1.52 2010/12/19 01:14:05 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -192,6 +192,7 @@ options
        tcp-listen-queue <em class="replaceable"><code>integer</code></em>;<br>
        tkey-dhkey <em class="replaceable"><code>quoted_string</code></em> <em class="replaceable"><code>integer</code></em>;<br>
        tkey-gssapi-credential <em class="replaceable"><code>quoted_string</code></em>;<br>
+       tkey-gssapi-keytab <em class="replaceable"><code>quoted_string</code></em>;<br>
        tkey-domain <em class="replaceable"><code>quoted_string</code></em>;<br>
        transfers-per-ns <em class="replaceable"><code>integer</code></em>;<br>
        transfers-in <em class="replaceable"><code>integer</code></em>;<br>
@@ -348,7 +349,7 @@ options
 </p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2544538"></a><h2>VIEW</h2>
+<a name="id2544541"></a><h2>VIEW</h2>
 <div class="literallayout"><p><br>
 view <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
        match-clients { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
@@ -499,7 +500,7 @@ view
 </p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2545209"></a><h2>ZONE</h2>
+<a name="id2545212"></a><h2>ZONE</h2>
 <div class="literallayout"><p><br>
 zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
        type ( master | slave | stub | hint |<br>
@@ -594,12 +595,12 @@ zone
 </p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2545521"></a><h2>FILES</h2>
+<a name="id2545524"></a><h2>FILES</h2>
 <p><code class="filename">/etc/named.conf</code>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2545601"></a><h2>SEE ALSO</h2>
+<a name="id2545604"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>,
index d0f61fa04e24be662fb2c9a3bf10dcc7d49fc4c6..f0aa5d1e247015ee8f79d322f672df178405a8fe 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: server.c,v 1.590 2010/12/09 00:54:33 marka Exp $ */
+/* $Id: server.c,v 1.591 2010/12/18 01:56:19 each Exp $ */
 
 /*! \file */
 
@@ -1290,6 +1290,27 @@ cache_sharable(dns_view_t *originview, dns_view_t *view,
        return (ISC_TRUE);
 }
 
+#ifdef DLZ
+/*
+ * Callback from DLZ configure when the driver sets up a writeable zone
+ */
+static isc_result_t
+dlzconfigure_callback(dns_view_t *view, dns_zone_t *zone) {
+       dns_name_t *origin = dns_zone_getorigin(zone);
+       dns_rdataclass_t zclass = view->rdclass;
+       isc_result_t result;
+
+       result = dns_zonemgr_managezone(ns_g_server->zonemgr, zone);
+       if (result != ISC_R_SUCCESS)
+               return result;
+       dns_zone_setstats(zone, ns_g_server->zonestats);
+
+       return ns_zone_configure_writeable_dlz(view->dlzdatabase,
+                                              zone, zclass, origin);
+}
+#endif
+
+
 /*
  * Configure 'view' according to 'vconfig', taking defaults from 'config'
  * where values are missing in 'vconfig'.
@@ -1563,6 +1584,14 @@ configure_view(dns_view_t *view, cfg_parser_t* parser,
                        isc_mem_put(mctx, dlzargv, dlzargc * sizeof(*dlzargv));
                        if (result != ISC_R_SUCCESS)
                                goto cleanup;
+
+                       /*
+                        * If the dlz backend supports configuration,
+                        * then call its configure method now.
+                        */
+                       result = dns_dlzconfigure(view, dlzconfigure_callback);
+                       if (result != ISC_R_SUCCESS)
+                               goto cleanup;
                }
        }
 #endif
index e11aaa22d34ebc0833b771ffb31465c473ecc7ad..b1fbfbd9c4a1982f986f553b847eb3857dff08f5 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: tkeyconf.c,v 1.31 2009/09/02 23:48:01 tbox Exp $ */
+/* $Id: tkeyconf.c,v 1.32 2010/12/18 01:56:19 each Exp $ */
 
 /*! \file */
 
@@ -114,6 +114,18 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx,
                RETERR(dst_gssapi_acquirecred(name, ISC_FALSE, &tctx->gsscred));
        }
 
+       obj = NULL;
+       result = cfg_map_get(options, "tkey-gssapi-keytab", &obj);
+       if (result == ISC_R_SUCCESS) {
+               s = cfg_obj_asstring(obj);
+               tctx->gssapi_keytab = isc_mem_strdup(mctx, s);
+               if (tctx->gssapi_keytab == NULL) {
+                       result = ISC_R_NOMEMORY;
+                       goto failure;
+               }
+       }
+
+
        *tctxp = tctx;
        return (ISC_R_SUCCESS);
 
index 81247733053836655b45f6427285ccf9dc3be244..a31a88ae58a894b0fc575d1a225e7f4aac706d9b 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: update.c,v 1.185 2010/12/09 06:17:33 marka Exp $ */
+/* $Id: update.c,v 1.186 2010/12/18 01:56:19 each Exp $ */
 
 #include <config.h>
 
@@ -46,6 +46,7 @@
 #include <dns/rdatatype.h>
 #include <dns/soa.h>
 #include <dns/ssu.h>
+#include <dns/tsig.h>
 #include <dns/view.h>
 #include <dns/zone.h>
 #include <dns/zt.h>
@@ -851,6 +852,9 @@ typedef struct {
 
        /* The ssu table to check against. */
        dns_ssutable_t *table;
+
+       /* the key used for TKEY requests */
+       dst_key_t *key;
 } ssu_check_t;
 
 static isc_result_t
@@ -867,14 +871,14 @@ ssu_checkrule(void *data, dns_rdataset_t *rrset) {
                return (ISC_R_SUCCESS);
        result = dns_ssutable_checkrules(ssuinfo->table, ssuinfo->signer,
                                         ssuinfo->name, ssuinfo->tcpaddr,
-                                        rrset->type);
+                                        rrset->type, ssuinfo->key);
        return (result == ISC_TRUE ? ISC_R_SUCCESS : ISC_R_FAILURE);
 }
 
 static isc_boolean_t
 ssu_checkall(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
             dns_ssutable_t *ssutable, dns_name_t *signer,
-            isc_netaddr_t *tcpaddr)
+            isc_netaddr_t *tcpaddr, dst_key_t *key)
 {
        isc_result_t result;
        ssu_check_t ssuinfo;
@@ -883,6 +887,7 @@ ssu_checkall(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
        ssuinfo.table = ssutable;
        ssuinfo.signer = signer;
        ssuinfo.tcpaddr = tcpaddr;
+       ssuinfo.key = key;
        result = foreach_rrset(db, ver, name, ssu_checkrule, &ssuinfo);
        return (ISC_TF(result == ISC_R_SUCCESS));
 }
@@ -2719,6 +2724,7 @@ ns_update_start(ns_client_t *client, isc_result_t sigresult) {
 
        switch(dns_zone_gettype(zone)) {
        case dns_zone_master:
+       case dns_zone_dlz:
                /*
                 * We can now fail due to a bad signature as we now know
                 * that we are the master.
@@ -3744,6 +3750,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
 
                if (ssutable != NULL) {
                        isc_netaddr_t *tcpaddr, netaddr;
+                       dst_key_t *tsigkey = NULL;
                        /*
                         * If this is a TCP connection then pass the
                         * address of the client through for tcp-self
@@ -3756,16 +3763,22 @@ update_action(isc_task_t *task, isc_event_t *event) {
                                tcpaddr = &netaddr;
                        } else
                                tcpaddr = NULL;
+
+                       if (client->message->tsigkey != NULL)
+                               tsigkey = client->message->tsigkey->key;
+
                        if (rdata.type != dns_rdatatype_any) {
                                if (!dns_ssutable_checkrules(ssutable,
                                                             client->signer,
                                                             name, tcpaddr,
-                                                            rdata.type))
+                                                            rdata.type,
+                                                            tsigkey))
                                        FAILC(DNS_R_REFUSED,
                                              "rejected by secure update");
                        } else {
                                if (!ssu_checkall(db, ver, name, ssutable,
-                                                 client->signer, tcpaddr))
+                                                 client->signer, tcpaddr,
+                                                 tsigkey))
                                        FAILC(DNS_R_REFUSED,
                                              "rejected by secure update");
                        }
index bfce03a49ccd1787b3f8f37380e5eab320e842e8..d87de5ee3cf52f7a5d817a6bc58dbeb250fd410c 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: xfrout.c,v 1.138 2010/05/27 23:51:08 tbox Exp $ */
+/* $Id: xfrout.c,v 1.139 2010/12/18 01:56:19 each Exp $ */
 
 #include <config.h>
 
@@ -863,6 +863,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
                switch(dns_zone_gettype(zone)) {
                        case dns_zone_master:
                        case dns_zone_slave:
+                       case dns_zone_dlz:
                                break;  /* Master and slave zones are OK for transfer. */
                        default:
                                FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class);
index 502792b6c82767f975bf9ef9065d22dcd28cb468..faf03d43fdc6b30aa244369df28f6836a4899deb 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zoneconf.c,v 1.167 2010/12/16 23:47:08 tbox Exp $ */
+/* $Id: zoneconf.c,v 1.168 2010/12/18 01:56:19 each Exp $ */
 
 /*% */
 
@@ -39,6 +39,7 @@
 #include <dns/rdataset.h>
 #include <dns/rdatalist.h>
 #include <dns/result.h>
+#include <dns/sdlz.h>
 #include <dns/ssu.h>
 #include <dns/stats.h>
 #include <dns/view.h>
@@ -1429,6 +1430,31 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig,
        return (ISC_R_SUCCESS);
 }
 
+
+#ifdef DLZ
+/*
+ * Set up a DLZ zone as writeable
+ */
+isc_result_t
+ns_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase, dns_zone_t *zone,
+                               dns_rdataclass_t rdclass, dns_name_t *name)
+{
+       dns_db_t *db = NULL;
+       isc_time_t now;
+       isc_result_t result;
+
+       TIME_NOW(&now);
+
+       dns_zone_settype(zone, dns_zone_dlz);
+       result = dns_sdlz_setdb(dlzdatabase, rdclass, name, &db);
+       if (result != ISC_R_SUCCESS)
+               return result;
+       result = dns_zone_dlzpostload(zone, db);
+       dns_db_detach(&db);
+       return result;
+}
+#endif
+
 isc_boolean_t
 ns_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) {
        const cfg_obj_t *zoptions = NULL;
index 25d1a212e8759b32148f036e5a8676c0a8bb8180..01fea441a16edfefa8e6c406cc768088a425c06d 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: nsupdate.c,v 1.186 2010/12/09 04:31:57 tbox Exp $ */
+/* $Id: nsupdate.c,v 1.187 2010/12/18 01:56:19 each Exp $ */
 
 /*! \file */
 
@@ -205,7 +205,7 @@ typedef struct nsu_gssinfo {
 } nsu_gssinfo_t;
 
 static void
-start_gssrequest(dns_name_t *master);
+start_gssrequest(dns_name_t *master, dns_name_t *zone);
 static void
 send_gssrequest(isc_sockaddr_t *srcaddr, isc_sockaddr_t *destaddr,
                dns_message_t *msg, dns_request_t **request,
@@ -2371,7 +2371,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
                dns_name_dup(zonename, mctx, &tmpzonename);
                dns_name_init(&restart_master, NULL);
                dns_name_dup(&master, mctx, &restart_master);
-               start_gssrequest(&master);
+               start_gssrequest(&master, zonename);
        } else {
                send_update(zonename, serveraddr, localaddr);
                setzoneclass(dns_rdataclass_none);
@@ -2432,7 +2432,7 @@ sendrequest(isc_sockaddr_t *srcaddr, isc_sockaddr_t *destaddr,
 
 #ifdef GSSAPI
 static void
-start_gssrequest(dns_name_t *master)
+start_gssrequest(dns_name_t *master, dns_name_t *zone)
 {
        gss_ctx_id_t context;
        isc_buffer_t buf;
@@ -2444,6 +2444,7 @@ start_gssrequest(dns_name_t *master)
        dns_fixedname_t fname;
        char namestr[DNS_NAME_FORMATSIZE];
        char keystr[DNS_NAME_FORMATSIZE];
+       char *err_message = NULL;
 
        debug("start_gssrequest");
        usevc = ISC_TRUE;
@@ -2512,9 +2513,11 @@ start_gssrequest(dns_name_t *master)
        /* Build first request. */
        context = GSS_C_NO_CONTEXT;
        result = dns_tkey_buildgssquery(rmsg, keyname, servname, NULL, 0,
-                                       &context, use_win2k_gsstsig);
+                                       &context, use_win2k_gsstsig,
+                                       zone, mctx, &err_message);
        if (result == ISC_R_FAILURE)
-               fatal("Check your Kerberos ticket, it may have expired.");
+               fatal("tkey query failed: %s",
+                     err_message != NULL ? err_message : "unknown error");
        if (result != ISC_R_SUCCESS)
                fatal("dns_tkey_buildgssquery failed: %s",
                      isc_result_totext(result));
@@ -2563,6 +2566,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
        isc_buffer_t buf;
        dns_name_t *servname;
        dns_fixedname_t fname;
+       char *err_message = NULL;
 
        UNUSED(task);
 
@@ -2632,7 +2636,7 @@ recvgss(isc_task_t *task, isc_event_t *event) {
                else
                        use_win2k_gsstsig = ISC_TRUE;
                tried_other_gsstsig = ISC_TRUE;
-               start_gssrequest(&restart_master);
+               start_gssrequest(&restart_master, zonename);
                goto done;
        }
 
@@ -2651,7 +2655,8 @@ recvgss(isc_task_t *task, isc_event_t *event) {
        tsigkey = NULL;
        result = dns_tkey_gssnegotiate(tsigquery, rcvmsg, servname,
                                       &context, &tsigkey, gssring,
-                                      use_win2k_gsstsig);
+                                      use_win2k_gsstsig,
+                                      &tmpzonename, &err_message);
        switch (result) {
 
        case DNS_R_CONTINUE:
@@ -2694,7 +2699,9 @@ recvgss(isc_task_t *task, isc_event_t *event) {
                break;
 
        default:
-               fatal("dns_tkey_negotiategss: %s", isc_result_totext(result));
+               fatal("dns_tkey_negotiategss: %s %s",
+                     isc_result_totext(result),
+                     err_message != NULL ? err_message : "");
        }
 
  done:
index 6c314d227c35e14b1ede3cec94adc15256557d2c..c36058422b92c7b1588ffdd6c8974d35973b5a99 100755 (executable)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: gsstest.c,v 1.8 2009/09/02 23:48:01 tbox Exp $ */
+/* $Id: gsstest.c,v 1.9 2010/12/18 01:56:19 each Exp $ */
 
 #include <config.h>
 
@@ -304,7 +304,7 @@ initctx2(isc_task_t *task, isc_event_t *event) {
        result = dns_tkey_processgssresponse(query, response,
                                             dns_fixedname_name(&gssname),
                                             &gssctx, &outtoken,
-                                            &tsigkey, ring);
+                                            &tsigkey, ring, NULL);
        gssctx = *gssctxp;
        CHECK("dns_tkey_processgssresponse", result);
        printf("Context accepted\n");
index f1b26dca42a15cb0208bf092db06f866dc2eb11a..49eda70256fa4fe5c411780e0404f21b51df85be 100644 (file)
@@ -14,7 +14,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: clean.sh,v 1.6 2010/05/19 07:45:38 marka Exp $
+# $Id: clean.sh,v 1.7 2010/12/18 02:12:43 each Exp $
 
 rm -f */K* */dsset-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk
 rm -f active.key inact.key del.key unpub.key standby.key rev.key
@@ -42,3 +42,6 @@ rm -f ns3/secure.example.db
 rm -f ns3/secure.nsec3.example.db
 rm -f ns3/secure.optout.example.db
 rm -f ns3/secure-to-insecure.example.db
+rm -f ns3/prepub.example.db
+rm -f ns3/prepub.example.db.in
+rm -f ns3/secure-to-insecure2.example.db
index 009d9f088d924409331d2443bfc4130afc5693da..9116a75bac4ebde30393746b08689495f6753a15 100644 (file)
@@ -15,7 +15,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: conf.sh.in,v 1.55 2010/12/16 09:51:27 jinmei Exp $
+# $Id: conf.sh.in,v 1.56 2010/12/18 01:56:19 each Exp $
 
 #
 # Common configuration data for system tests, to be sourced into
@@ -53,10 +53,10 @@ JOURNALPRINT=$TOP/bin/tools/named-journalprint
 # load on the machine to make it unusable to other users.
 # v6synth
 SUBDIRS="acl allow_query addzone autosign cacheclean checkconf checknames
-    dlv @DLZ_SYSTEM_TEST@ dns64 dnssec forward glue ixfr limits lwresd
-    masterfile masterformat metadata notify nsupdate pending pkcs11
-    resolver rrsetorder sortlist smartsign staticstub stub tkey unknown upforwd
-    views xfer xferquota zonechecks"
+    dlv @DLZ_SYSTEM_TEST@ dlzexternal dns64 dnssec forward glue ixfr limits
+    lwresd masterfile masterformat metadata notify nsupdate pending pkcs11
+    resolver rrsetorder sortlist smartsign staticstub stub tkey
+    tsig tsiggss unknown upforwd views xfer xferquota zonechecks"
 
 # PERL will be an empty string if no perl interpreter was found.
 PERL=@PERL@
diff --git a/bin/tests/system/dlzexternal/clean.sh b/bin/tests/system/dlzexternal/clean.sh
new file mode 100644 (file)
index 0000000..648dbcd
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Clean up after dlzexternal tests.
+#
+
+rm -f ns1/update.txt
+rm -f */named.memstats
+rm -f ns1/ddns.key
+rm -f random.data
diff --git a/bin/tests/system/dlzexternal/ns1/named.conf b/bin/tests/system/dlzexternal/ns1/named.conf
new file mode 100644 (file)
index 0000000..1cb85eb
--- /dev/null
@@ -0,0 +1,29 @@
+controls { };
+
+options {
+       query-source address 10.53.0.1;
+       notify-source 10.53.0.1;
+       transfer-source 10.53.0.1;
+       port 5300;
+       pid-file "named.pid";
+       session-keyfile "session.key";
+       listen-on { 10.53.0.1; 127.0.0.1; };
+       listen-on-v6 { none; };
+       recursion no;
+       notify yes;
+};
+
+key rndc_key {
+       secret "1234abcd8765";
+       algorithm hmac-md5;
+};
+
+include "ddns.key";
+
+controls {
+       inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; };
+};
+
+dlz "example zone" {
+       database "dlopen ../../../../../contrib/dlz/example/dlz_example.so example.nil";
+};
diff --git a/bin/tests/system/dlzexternal/prereq.sh b/bin/tests/system/dlzexternal/prereq.sh
new file mode 100644 (file)
index 0000000..9791692
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+TOP=${SYSTEMTESTTOP:=.}/../../../..
+
+# enable the dlzexternal test only if it builds and dlz-dlopen was enabled
+$TOP/bin/named/named -V | grep with.dlz.dlopen | grep -v with.dlz.dlopen=no > /dev/null || {
+    echo "I:not built with --with-dlz-dlopen=yes - skipping dlzexternal test"
+    exit 1
+}
+
+cd ../../../../contrib/dlz/example && make all > /dev/null || {
+    echo "I:build of dlz_example.so failed - skipping dlzexternal test"
+    exit 1
+}
+exit 0
+
+
diff --git a/bin/tests/system/dlzexternal/setup.sh b/bin/tests/system/dlzexternal/setup.sh
new file mode 100644 (file)
index 0000000..edb1b25
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+../../../tools/genrandom 400 random.data
+$DDNSCONFGEN -q -r random.data -z example.nil > ns1/ddns.key
diff --git a/bin/tests/system/dlzexternal/tests.sh b/bin/tests/system/dlzexternal/tests.sh
new file mode 100644 (file)
index 0000000..019e37d
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+# tests for TSIG-GSS updates
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+status=0
+
+DIGOPTS="@10.53.0.1 -p 5300"
+
+test_update() {
+    host="$1"
+    type="$2"
+    cmd="$3"
+    digout="$4"
+
+    cat <<EOF > ns1/update.txt
+server 10.53.0.1 5300
+update add $host $cmd
+send
+EOF
+    echo "I:testing update for $host $type $cmd"
+    $NSUPDATE -k ns1/ddns.key ns1/update.txt || {
+       echo "I:update failed for $host $type $cmd"
+       return 1
+    }
+
+    out="$($DIG $DIGOPTS -t $type -q $host | egrep ^$host)"
+    [ $(echo "$out" | grep "$digout" | wc -l) -eq 1 ] || {
+       echo "I:dig output incorrect for $host $type $cmd: $out"
+       return 1
+    }
+    return 0
+}
+
+test_update testdc1.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1
+test_update testdc2.example.nil. A "86400 A 10.53.0.11" "10.53.0.11" || status=1
+test_update testdc3.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1
+test_update deny.example.nil. TXT "86400 TXT helloworld" "helloworld" && status=1
+
+[ $status -eq 0 ] && echo "I:dlzexternal tests all OK"
+
+exit $status
index 73197d5066de31bc05e14aac991f2d9678a1670f..a073dbce42cb42afac244da13defb647721c6f08 100644 (file)
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: clean.sh,v 1.3 2010/12/08 23:51:55 tbox Exp $
+# $Id: clean.sh,v 1.4 2010/12/18 02:12:43 each Exp $
 
 
 rm -f ns1/K*
 rm -f ns1/signed.db*
 rm -f ns1/dsset-signed.
+rm -f */named.memstats
+rm -f dig.out.* random.data
index 1d4fa8f3afcb7b58aefcdbce8359f14341bf68f3..9bf748ac78f66cb72ebb1d6359d106887f8e0d44 100644 (file)
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: setup.sh,v 1.3 2010/12/08 23:51:55 tbox Exp $
-
-../../../tools/genrandom 400 random.data
+# $Id: setup.sh,v 1.4 2010/12/18 11:45:01 marka Exp $
 
 sh clean.sh
 
+../../../tools/genrandom 400 random.data
+
 cd ns1 && sh sign.sh
index 1894126ae284232ddac1dddd7027bd069021c2e4..9975ce7572334285f92011c8c8fb6656d7abecc3 100644 (file)
@@ -15,7 +15,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: clean.sh,v 1.30 2010/09/07 00:58:35 marka Exp $
+# $Id: clean.sh,v 1.31 2010/12/18 02:12:44 each Exp $
 
 rm -f */K* */keyset-* */dsset-* */dlvset-* */signedkey-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk
 rm -f ns1/root.db ns2/example.db ns3/secure.example.db
@@ -42,3 +42,6 @@ rm -f ns3/secure.optout.example.db
 rm -f */named.secroots
 rm -f ns1/managed.key.id
 rm -f signer/example.db
+rm -f ns2/algroll.db
+rm -f ns3/kskonly.example.db
+
index fca0caa5846dbf21614a5f090ac2d09daeda54ce..15bdf5407ff698b0273c88515d5dd1963cc4d80c 100644 (file)
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: clean.sh,v 1.5 2010/11/17 23:47:08 tbox Exp $
+# $Id: clean.sh,v 1.6 2010/12/18 02:12:44 each Exp $
 
 #
 # Clean up after resolver tests.
 #
 rm -f */named.memstats
-rm -f dig.out
+rm -f dig.out dig.*.out.*
 rm -f ns6/K*
 rm -f ns6/example.net.db.signed ns6/example.net.db
+rm -f ns6/dsset-example.net. ns6/example.net.db.signed.jnl
+rm -f random.data
index 8ff47d37ba02d127e27323de2c01a12feba8474c..b4881acedf9aeb04998593fa3d3dc62972b92665 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad01.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad01.conf,v 1.3 2010/12/18 23:47:10 tbox Exp $
 
 # prefix cannot be specified in the address list field.
 zone "example.com" {
index 1b62e9ec49c4851ceb0a4c1d70dea9da8f8d32fb..a1419772f7e60e841975364a0bce73ea3184b9c2 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad02.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad02.conf,v 1.3 2010/12/18 23:47:10 tbox Exp $
 
 # server-names must be valid domain names.
 zone "example.com" {
index 3c75145a22286420cb13f439eb409871686e6e5e..9bf6ea926090fe8b5886f82f17468fb7e8c0b027 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad03.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad03.conf,v 1.3 2010/12/18 23:47:10 tbox Exp $
 
 # Explicit port specification is not allowed (for now).
 zone "example.com" {
index 4c62eedcf75231ac0ad0f33429bd2630e453e43e..4cc6bebdee1c06ab3c284b37e1ae10025e4eb725 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad04.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad04.conf,v 1.3 2010/12/18 23:47:10 tbox Exp $
 
 # scoped address is not allowed.
 zone "example.com" {
index 7bfe60d0466693afd31a202c5d9dcafcfdd84427..63f0d093688e9b5344845e2af005c17b6f319e3b 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad05.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad05.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-name must not be a subdomain of the zone name.
 zone "example.com" {
index 71499a5b612e043b9ea86ae08f5bbf04e6df9578..c35239467f382ebe1636dc0f98b34d5bfa2100f1 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad06.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad06.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-name must not be a subdomain of the zone name.
 zone "example.com" {
index 90e0a9d1bf6f61171482a27f6b5cd342aa7b1f52..48e82ab855866aa19083d5d4d18f90e949e3e852 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad07.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad07.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-addresses must not be specified more than once.
 zone "example.com" {
index bd98dbdb04bcaea22ee8bc9d4c3081718e9cf218..b5c4a9d165912d0c4651831e6ae6c2b2e7161b4d 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad08.conf,v 1.2 2010/12/16 09:51:27 jinmei Exp $
+# $Id: bad08.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-names must not be specified more than once.
 zone "example.com" {
index 889cb446bd9d6f10fd557274169c9bf3bc7bfc47..1fae1bb69a7a77eac1ed12a459c977a14a062925 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad09.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: bad09.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # "masters" isn't allowed for a static-stub zone (unlike a stub zone).
 zone "example.com" {
index c3b2c85acf37dab8ae29cf50ce8f5b6fc4f0755f..4ad3def9855fa1fd733d2f03beb6573fc4ff963b 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad10.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: bad10.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # "server-addresses" isn't allowed for a pure stub zone.
 # (or most of other types of zones, but confirming one case should be good
index daa8f76b2b67aa71e14b01e21527b6afd4e8126b..ca92360dff35ce003828b0ee76d5749da373fe8a 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: bad11.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: bad11.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # "server-names" isn't allowed for a pure stub zone.
 # (or most of other types of zones, but confirming one case should be good
index 2de02d8d856a93e94c237a09fa81f703d87ce28d..b585480b544fbfd904097ba5f59bfefe9c4ba9d2 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: good01.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: good01.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # both server-addresses and server-names can be specified.
 zone "example.com" {
index 136d4a2a7e7d60c391a4dabf94a0bb88fed83e94..68202e1a2aadb833fe81a7622cc5cb708e13c27c 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: good02.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: good02.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # both IPv4 and IPv6 server-addresses should be allowable.
 zone "example.com" {
index d6fbc9263880556887c10dbd6337477968227dfc..c2d04527bbb652830d61ee4e27ad254be99cc294 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: good03.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: good03.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-addresses can be empty, though it's meaningless.
 zone "example.com" {
index d915cbaef09b3e74f130e48baafbbe09cb5c6a19..91190596b3ab64a4ee9d29ab044dd855a3a89fcc 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: good04.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: good04.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # server-names can be empty, though it's meaningless.
 zone "example.com" {
index bc9fd463a0c3a6d18cf6900cd69c637dbfda901a..c199b935ef120a45f84cf14e92f090f2250b0613 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: good05.conf,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: good05.conf,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 # less common options
 zone "example.com" {
index 4994e584a54f276716a8fc8099aed32b2647648c..75f062267a481efc743ed1f090fb3d464f7673b7 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: named.conf.in,v 1.2 2010/12/16 09:51:28 jinmei Exp $
+# $Id: named.conf.in,v 1.3 2010/12/18 23:47:11 tbox Exp $
 
 include "../../common/controls.conf";
 
index 239c28e7bff0426cf24af7dc73650f31a3c6b6cc..159a4beedbe4fa9cb9311192869158320c4398f3 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: named.conf.in,v 1.3 2010/12/17 00:57:39 marka Exp $
+# $Id: named.conf.in,v 1.4 2010/12/18 23:47:11 tbox Exp $
 
 key rndc_key {
         secret "1234abcd8765";
index 3b471b374e4c688519f7040a2b0aff1fb64215e2..9a34f70e0f2b3972252f5d8c027d54714fd0accf 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * 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.
+ */
+
 # Copyright (C) 2010  Internet Systems Consortium, Inc. ("ISC")
 #
 # Permission to use, copy, modify, and/or distribute this software for any
@@ -12,7 +28,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: named.conf,v 1.3 2010/12/17 00:57:39 marka Exp $
+# $Id: named.conf,v 1.4 2010/12/18 23:47:11 tbox Exp $
 
 controls { /* empty */ };
 
diff --git a/bin/tests/system/tsiggss/clean.sh b/bin/tests/system/tsiggss/clean.sh
new file mode 100644 (file)
index 0000000..aeba608
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# Clean up after tsiggss tests.
+#
+
+rm -f ns1/*.jnl ns1/update.txt
+rm -f */named.memstats
diff --git a/bin/tests/system/tsiggss/ns1/administrator.ccache b/bin/tests/system/tsiggss/ns1/administrator.ccache
new file mode 100644 (file)
index 0000000..e6c2e74
Binary files /dev/null and b/bin/tests/system/tsiggss/ns1/administrator.ccache differ
diff --git a/bin/tests/system/tsiggss/ns1/dns.keytab b/bin/tests/system/tsiggss/ns1/dns.keytab
new file mode 100644 (file)
index 0000000..dcb863b
Binary files /dev/null and b/bin/tests/system/tsiggss/ns1/dns.keytab differ
diff --git a/bin/tests/system/tsiggss/ns1/example.nil.db b/bin/tests/system/tsiggss/ns1/example.nil.db
new file mode 100644 (file)
index 0000000..001bb29
--- /dev/null
@@ -0,0 +1,51 @@
+; -*- zone -*-
+; this was generated by a Samba4 provision, and is typical 
+; of a AD DNS zone
+$ORIGIN example.nil.
+$TTL 1W
+@               IN SOA  blu   hostmaster (
+                                2010113027   ; serial
+                                2D              ; refresh
+                                4H              ; retry
+                                6W              ; expiry
+                                1W )            ; minimum
+                       IN NS   blu
+
+            IN A    10.53.0.1
+;
+
+blu        IN A    10.53.0.1
+gc._msdcs               IN A    10.53.0.1
+
+fb33eb58-5d58-4100-a114-256e0a97ffc1._msdcs    IN CNAME        blu
+;
+; global catalog servers
+_gc._tcp               IN SRV 0 100 3268       blu
+_gc._tcp.Default-First-Site-Name._sites        IN SRV 0 100 3268       blu
+_ldap._tcp.gc._msdcs   IN SRV 0 100 3268       blu
+_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs    IN SRV 0 100 3268 blu
+;
+; ldap servers
+_ldap._tcp             IN SRV 0 100 389        blu
+_ldap._tcp.dc._msdcs   IN SRV 0 100 389        blu
+_ldap._tcp.pdc._msdcs  IN SRV 0 100 389        blu
+_ldap._tcp.d86745b4-f3e0-4af3-be03-2130d1534be8.domains._msdcs         IN SRV 0 100 389 blu
+_ldap._tcp.Default-First-Site-Name._sites              IN SRV 0 100 389 blu
+_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs    IN SRV 0 100 389 blu
+;
+; krb5 servers
+_kerberos._tcp         IN SRV 0 100 88         blu
+_kerberos._tcp.dc._msdcs       IN SRV 0 100 88 blu
+_kerberos._tcp.Default-First-Site-Name._sites  IN SRV 0 100 88 blu
+_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs        IN SRV 0 100 88 blu
+_kerberos._udp         IN SRV 0 100 88         blu
+; MIT kpasswd likes to lookup this name on password change
+_kerberos-master._tcp          IN SRV 0 100 88         blu
+_kerberos-master._udp          IN SRV 0 100 88         blu
+;
+; kpasswd
+_kpasswd._tcp          IN SRV 0 100 464        blu
+_kpasswd._udp          IN SRV 0 100 464        blu
+;
+; heimdal 'find realm for host' hack
+_kerberos              IN TXT  EXAMPLE.NIL
diff --git a/bin/tests/system/tsiggss/ns1/named.conf b/bin/tests/system/tsiggss/ns1/named.conf
new file mode 100644 (file)
index 0000000..8dbab39
--- /dev/null
@@ -0,0 +1,37 @@
+controls { };
+
+options {
+       query-source address 10.53.0.1;
+       notify-source 10.53.0.1;
+       transfer-source 10.53.0.1;
+       port 5300;
+       pid-file "named.pid";
+       session-keyfile "session.key";
+       listen-on { 10.53.0.1; 127.0.0.1; };
+       listen-on-v6 { none; };
+       recursion no;
+       notify yes;
+       tkey-gssapi-keytab "dns.keytab";
+};
+
+key rndc_key {
+       secret "1234abcd8765";
+       algorithm hmac-md5;
+};
+
+controls {
+       inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; };
+};
+
+zone "example.nil." IN {
+       type master;
+       file "example.nil.db";
+
+       update-policy {
+               grant Administrator@EXAMPLE.NIL wildcard * A AAAA SRV CNAME;
+               grant testdenied@EXAMPLE.NIL wildcard * TXT;
+       };
+
+       /* we need to use check-names ignore so _msdcs A records can be created */
+       check-names ignore;
+};
diff --git a/bin/tests/system/tsiggss/ns1/testdenied.ccache b/bin/tests/system/tsiggss/ns1/testdenied.ccache
new file mode 100644 (file)
index 0000000..070e85b
Binary files /dev/null and b/bin/tests/system/tsiggss/ns1/testdenied.ccache differ
diff --git a/bin/tests/system/tsiggss/prereq.sh b/bin/tests/system/tsiggss/prereq.sh
new file mode 100644 (file)
index 0000000..2c1a32a
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+TOP=${SYSTEMTESTTOP:=.}/../../../..
+
+# enable the tsiggss test only if gssapi was enabled
+$TOP/bin/named/named -V | grep with.gssapi | grep -v with-gssapi=no > /dev/null || {
+    echo "I:BIND9 was not built with --with-gssapi"
+    exit 1
+}
+
+exit 0
diff --git a/bin/tests/system/tsiggss/setup.sh b/bin/tests/system/tsiggss/setup.sh
new file mode 100644 (file)
index 0000000..1112181
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+rm -f ns1/*.jnl 
diff --git a/bin/tests/system/tsiggss/tests.sh b/bin/tests/system/tsiggss/tests.sh
new file mode 100644 (file)
index 0000000..1f37578
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+# tests for TSIG-GSS updates
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+status=0
+
+DIGOPTS="@10.53.0.1 -p 5300"
+
+# we don't want a KRB5_CONFIG setting breaking the tests
+unset KRB5_CONFIG
+
+test_update() {
+    host="$1"
+    type="$2"
+    cmd="$3"
+    digout="$4"
+
+    cat <<EOF > ns1/update.txt
+server 10.53.0.1 5300
+update add $host $cmd
+send
+EOF
+    echo "I:testing update for $host $type $cmd"
+    $NSUPDATE -g ns1/update.txt || {
+       echo "I:update failed for $host $type $cmd"
+       return 1
+    }
+
+    out="$($DIG $DIGOPTS -t $type -q $host | egrep ^$host)"
+    [ $(echo "$out" | grep "$digout" | wc -l) -eq 1 ] || {
+       echo "I:dig output incorrect for $host $type $cmd: $out"
+       return 1
+    }
+    return 0
+}
+
+echo "I:testing updates as administrator"
+KRB5CCNAME=$(pwd)/ns1/administrator.ccache
+export KRB5CCNAME
+
+test_update testdc1.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1
+test_update testdc2.example.nil. A "86400 A 10.53.0.11" "10.53.0.11" || status=1
+test_update denied.example.nil. TXT "86400 TXT helloworld" "helloworld" && status=1
+
+echo "I:testing updates as a user"
+KRB5CCNAME=$(pwd)/ns1/testdenied.ccache
+export KRB5CCNAME
+
+test_update testdenied.example.nil. A "86400 A 10.53.0.12" "10.53.0.12" && status=1
+test_update testdenied.example.nil. TXT "86400 TXT helloworld" "helloworld" || status=1
+
+[ $status -eq 0 ] && echo "I:tsiggss tests all OK"
+
+exit $status
index 8ca5e8a2fb9a627d4cb0f41b9866fe8b6b0edcb7..3804c0d6b2cbb9f233128d10545122aeee7ddf5b 100644 (file)
@@ -16,7 +16,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: config.h.in,v 1.136 2010/12/03 00:57:57 marka Exp $ */
+/* $Id: config.h.in,v 1.138 2010/12/18 14:47:42 marka Exp $ */
 
 /*! \file */
 
@@ -178,9 +178,18 @@ int sigwait(const unsigned int *set, int *sig);
 /* Define to 1 if you have the <devpoll.h> header file. */
 #undef HAVE_DEVPOLL_H
 
+/* Define to 1 if you have the `dlclose' function. */
+#undef HAVE_DLCLOSE
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
+/* Define to 1 if you have the `dlopen' function. */
+#undef HAVE_DLOPEN
+
+/* Define to 1 if you have the `dlsym' function. */
+#undef HAVE_DLSYM
+
 /* Define to 1 if you have the `EVP_sha256' function. */
 #undef HAVE_EVP_SHA256
 
@@ -193,9 +202,15 @@ int sigwait(const unsigned int *set, int *sig);
 /* Define to 1 if you have the <gssapi/gssapi.h> header file. */
 #undef HAVE_GSSAPI_GSSAPI_H
 
+/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_KRB5_H
+
 /* Define to 1 if you have the <gssapi.h> header file. */
 #undef HAVE_GSSAPI_H
 
+/* Define to 1 if you have the <gssapi_krb5.h> header file. */
+#undef HAVE_GSSAPI_KRB5_H
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
@@ -220,6 +235,9 @@ int sigwait(const unsigned int *set, int *sig);
 /* Define to 1 if you have the `c_r' library (-lc_r). */
 #undef HAVE_LIBC_R
 
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
 /* Define to 1 if you have the `nsl' library (-lnsl). */
 #undef HAVE_LIBNSL
 
index 697fb3ba9f2e8ea2b412223547b5605b7e2858d6..f93eb7bdae8966ad9967dc2bc351e36bbab55208 100755 (executable)
--- a/configure
+++ b/configure
@@ -14,7 +14,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 #
-# $Id: configure,v 1.487 2010/12/03 00:57:57 marka Exp $
+# $Id: configure,v 1.489 2010/12/18 14:47:42 marka Exp $
 #
 # Portions Copyright (C) 1996-2001  Nominum, Inc.
 #
@@ -29,7 +29,7 @@
 # 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.
-# From configure.in Revision: 1.504 .
+# From configure.in Revision: 1.506 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.67.
 #
@@ -926,6 +926,7 @@ DNS_GSSAPI_LIBS
 DST_GSSAPI_INC
 USE_GSSAPI
 ISC_PLATFORM_KRB5HEADER
+ISC_PLATFORM_GSSAPI_KRB5_HEADER
 ISC_PLATFORM_GSSAPIHEADER
 ISC_PLATFORM_HAVEGSSAPI
 PKCS11_PROVIDER
@@ -1092,6 +1093,7 @@ with_dlz_filesystem
 with_dlz_ldap
 with_dlz_odbc
 with_dlz_stub
+with_dlz_dlopen
 with_make_clean
 '
       ac_precious_vars='build_alias
@@ -1796,6 +1798,8 @@ Optional Packages:
                                (Required to use ODBC with DLZ)
   --with-dlz-stub=PATH   Build with stub DLZ driver yes|no.
                                (Required to use stub driver with DLZ)
+  --with-dlz-dlopen=PATH   Build with dlopen DLZ driver yes|no.
+                               (Required to use dlopen driver with DLZ)
   --with-make-clean      Run "make clean" at end of configure [yes|no].
 
 Some influential environment variables:
@@ -4482,7 +4486,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4485 "configure"' > conftest.$ac_ext
+  echo '#line 4489 "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -6776,11 +6780,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6779: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6783: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6783: \$? = $ac_status" >&5
+   echo "$as_me:6787: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7066,11 +7070,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7069: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7073: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7073: \$? = $ac_status" >&5
+   echo "$as_me:7077: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7170,11 +7174,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7173: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7177: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7177: \$? = $ac_status" >&5
+   echo "$as_me:7181: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9195,7 +9199,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9198 "configure"
+#line 9202 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9295,7 +9299,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9298 "configure"
+#line 9302 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11640,11 +11644,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11643: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11647: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11647: \$? = $ac_status" >&5
+   echo "$as_me:11651: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -11744,11 +11748,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11747: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11751: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11751: \$? = $ac_status" >&5
+   echo "$as_me:11755: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -13327,11 +13331,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13330: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13334: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13334: \$? = $ac_status" >&5
+   echo "$as_me:13338: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13431,11 +13435,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13434: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13438: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13438: \$? = $ac_status" >&5
+   echo "$as_me:13442: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15596,11 +15600,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15599: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15603: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15603: \$? = $ac_status" >&5
+   echo "$as_me:15607: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15886,11 +15890,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15889: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15893: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15893: \$? = $ac_status" >&5
+   echo "$as_me:15897: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15990,11 +15994,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15993: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15997: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15997: \$? = $ac_status" >&5
+   echo "$as_me:16001: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -21039,6 +21043,20 @@ done
                    as_fn_error $? "gssapi.h not found" "$LINENO" 5
                fi
 
+               for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"
+fi
+
+done
+
+
                for ac_header in krb5.h krb5/krb5.h kerberosv5/krb5.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -21183,6 +21201,7 @@ esac
 
 
 
+
 DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS"
 
 #
@@ -26544,6 +26563,106 @@ $as_echo "yes" >&6; }
                ;;
 esac
 
+#
+# Was --with-dlz-dlopen specified?
+#
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen DLZ driver" >&5
+$as_echo_n "checking for dlopen DLZ driver... " >&6; }
+
+# Check whether --with-dlz_dlopen was given.
+if test "${with_dlz_dlopen+set}" = set; then :
+  withval=$with_dlz_dlopen; use_dlz_dlopen="$withval"
+else
+  use_dlz_dlopen="no"
+fi
+
+
+case "$use_dlz_dlopen" in
+       no)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               ;;
+       *)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlclose in -ldl" >&5
+$as_echo_n "checking for dlclose in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlclose+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlclose ();
+int
+main ()
+{
+return dlclose ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlclose=yes
+else
+  ac_cv_lib_dl_dlclose=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlclose" >&5
+$as_echo "$ac_cv_lib_dl_dlclose" >&6; }
+if test "x$ac_cv_lib_dl_dlclose" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+  LIBS="-ldl $LIBS"
+
+fi
+
+               for ac_func in dlopen dlclose dlsym
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+       USE_DLZ="$USE_DLZ -DDLZ_DLOPEN"
+       for i in dlz_dlopen_driver
+       do
+               DLZ_DRIVER_SRCS="$DLZ_DRIVER_SRCS $dlzdir/$i.c"
+               DLZ_DRIVER_OBJS="$DLZ_DRIVER_OBJS $i.$O"
+       done
+       if test -n ""
+       then
+               DLZ_DRIVER_INCLUDES="$DLZ_DRIVER_INCLUDES "
+       fi
+       if test -n ""
+       then
+               DLZ_DRIVER_LIBS="$DLZ_DRIVER_LIBS "
+       fi
+
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               ;;
+esac
+
 
 # Add any additional DLZ drivers here.
 
index 1c136dc3217cc02bfc6c955941dc91c307471448..c0af03283905f3a0433c69d59255505afbb224c1 100644 (file)
@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
 esyscmd([sed "s/^/# /" COPYRIGHT])dnl
 AC_DIVERT_POP()dnl
 
-AC_REVISION($Revision: 1.504 $)
+AC_REVISION($Revision: 1.506 $)
 
 AC_INIT(lib/dns/name.c)
 AC_PREREQ(2.59)
@@ -793,6 +793,9 @@ case "$use_gssapi" in
                    AC_MSG_ERROR([gssapi.h not found])
                fi
 
+               AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h,
+                   [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"])
+
                AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h,
                    [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
 
@@ -901,6 +904,7 @@ esac
 
 AC_SUBST(ISC_PLATFORM_HAVEGSSAPI)
 AC_SUBST(ISC_PLATFORM_GSSAPIHEADER)
+AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER)
 AC_SUBST(ISC_PLATFORM_KRB5HEADER)
 
 AC_SUBST(USE_GSSAPI)
index ff3783ad66c6a2de3363ad410bc3a839763e316e..a49e40b39bf85369e8247ca601523774d8020beb 100644 (file)
@@ -456,6 +456,29 @@ case "$use_dlz_stub" in
                ;;
 esac
 
+#
+# Was --with-dlz-dlopen specified?
+#
+
+AC_MSG_CHECKING(for dlopen DLZ driver)
+AC_ARG_WITH(dlz_dlopen,
+[  --with-dlz-dlopen[=PATH]   Build with dlopen DLZ driver [yes|no].
+                               (Required to use dlopen driver with DLZ)],
+    use_dlz_dlopen="$withval", use_dlz_dlopen="no")
+
+case "$use_dlz_dlopen" in
+       no)
+               AC_MSG_RESULT(no)
+               ;;
+       *)
+               AC_CHECK_LIB(dl, dlclose)
+               AC_CHECK_FUNCS(dlopen dlclose dlsym)
+               DLZ_ADD_DRIVER(DLOPEN, dlz_dlopen_driver)
+
+               AC_MSG_RESULT(yes)
+               ;;
+esac
+
 
 # Add any additional DLZ drivers here.
 
index ebbb6dda348fd1c90cd7552152fcf747524cc87a..a4d7a9d7bac8fbab4283a113066ec9e83793ec9f 100644 (file)
@@ -742,7 +742,14 @@ static dns_sdlzmethods_t dlz_bdb_methods = {
        bdb_lookup,
        NULL,
        bdb_allnodes,
-       bdb_allowzonexfr
+       bdb_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index 3a170d6fb1178f56888659e2fa059e16b9a4683a..25d78d7e6822cd83f28bf70e27947d73da7cc9b2 100644 (file)
@@ -807,7 +807,14 @@ static dns_sdlzmethods_t dlz_bdbhpt_methods = {
        bdbhpt_lookup,
        NULL,
        bdbhpt_allnodes,
-       bdbhpt_allowzonexfr
+       bdbhpt_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
diff --git a/contrib/dlz/drivers/dlz_dlopen_driver.c b/contrib/dlz/drivers/dlz_dlopen_driver.c
new file mode 100644 (file)
index 0000000..e706015
--- /dev/null
@@ -0,0 +1,624 @@
+/*
+ * Copyright (C) 2010 Andrew Tridgell
+ *
+ * based on dlz_stub_driver.c
+ * which is:
+ * Copyright (C) 2002 Stichting NLnet, Netherlands, stichting@nlnet.nl.
+ * Copyright (C) 1999-2001  Internet Software Consortium.
+ * see dlz_stub_driver.c for details
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * STICHTING NLNET 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.
+ *
+ * The development of Dynamically Loadable Zones (DLZ) for Bind 9 was
+ * conceived and contributed by Rob Butler.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ROB BUTLER
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * ROB BUTLER 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.
+ */
+
+#ifdef DLZ_DLOPEN
+
+#include <config.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <dlfcn.h>
+
+#include <dns/log.h>
+#include <dns/sdlz.h>
+#include <dns/result.h>
+
+#include <isc/mem.h>
+#include <isc/print.h>
+#include <isc/result.h>
+#include <isc/util.h>
+
+#include <named/globals.h>
+
+#include <dlz/dlz_dlopen_driver.h>
+
+static dns_sdlzimplementation_t *dlz_dlopen = NULL;
+
+
+typedef struct dlopen_data {
+       isc_mem_t *mctx;
+       char *dl_path;
+       char *dlzname;
+       void *dl_handle;
+       void *dbdata;
+       unsigned int flags;
+       isc_mutex_t lock;
+       int version;
+       isc_boolean_t in_configure;
+
+       int (*dlz_version)(unsigned int *flags);
+       isc_result_t (*dlz_create)(const char *dlzname,
+                                  unsigned int argc, char *argv[],
+                                  void **dbdata, ...);
+       isc_result_t (*dlz_findzonedb)(void *dbdata, const char *name);
+       isc_result_t (*dlz_lookup)(const char *zone, const char *name,
+                                  void *dbdata, dns_sdlzlookup_t *lookup);
+       isc_result_t (*dlz_authority)(const char *zone, void *dbdata,
+                                     dns_sdlzlookup_t *lookup);
+       isc_result_t (*dlz_allnodes)(const char *zone, void *dbdata,
+                                    dns_sdlzallnodes_t *allnodes);
+       isc_result_t (*dlz_allowzonexfr)(void *dbdata, const char *name,
+                                        const char *client);
+       isc_result_t (*dlz_newversion)(const char *zone, void *dbdata,
+                                      void **versionp);
+       void         (*dlz_closeversion)(const char *zone, isc_boolean_t commit,
+                                        void *dbdata, void **versionp);
+       isc_result_t (*dlz_configure)(dns_view_t *view, void *dbdata);
+       isc_boolean_t (*dlz_ssumatch)(const char *signer, const char *name,
+                                     const char *tcpaddr, const char *type,
+                                     const char *key, uint32_t keydatalen,
+                                     uint8_t *keydata, void *dbdata);
+       isc_result_t (*dlz_addrdataset)(const char *name, const char *rdatastr,
+                                       void *dbdata, void *version);
+       isc_result_t (*dlz_subrdataset)(const char *name, const char *rdatastr,
+                                       void *dbdata, void *version);
+       isc_result_t (*dlz_delrdataset)(const char *name, const char *type,
+                                       void *dbdata, void *version);
+       void         (*dlz_destroy)(void *dbdata);
+} dlopen_data_t;
+
+/* Modules can choose whether they are lock-safe or not. */
+#define MAYBE_LOCK(cd) \
+       do { \
+               if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
+                   cd->in_configure == ISC_FALSE) \
+                       LOCK(&cd->lock); \
+       } while (0)
+
+#define MAYBE_UNLOCK(cd) \
+       do { \
+               if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \
+                   cd->in_configure == ISC_FALSE) \
+                       UNLOCK(&cd->lock); \
+       } while (0)
+
+/*
+ * Log a message at the given level.
+ */
+static void dlopen_log(int level, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       isc_log_vwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE,
+                      DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(level),
+                      fmt, ap);
+       va_end(ap);
+}
+
+/*
+ * SDLZ methods
+ */
+
+static isc_result_t
+dlopen_dlz_allnodes(const char *zone, void *driverarg, void *dbdata,
+                   dns_sdlzallnodes_t *allnodes)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_allnodes == NULL) {
+               return (ISC_R_NOPERM);
+       }
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_allnodes(zone, cd->dbdata, allnodes);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+
+static isc_result_t
+dlopen_dlz_allowzonexfr(void *driverarg, void *dbdata, const char *name,
+                       const char *client)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+
+       if (cd->dlz_allowzonexfr == NULL) {
+               return (ISC_R_NOPERM);
+       }
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_allowzonexfr(cd->dbdata, name, client);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+static isc_result_t
+dlopen_dlz_authority(const char *zone, void *driverarg, void *dbdata,
+                  dns_sdlzlookup_t *lookup)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_authority == NULL) {
+               return (ISC_R_NOTIMPLEMENTED);
+       }
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_authority(zone, cd->dbdata, lookup);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+static isc_result_t
+dlopen_dlz_findzonedb(void *driverarg, void *dbdata, const char *name)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_findzonedb(cd->dbdata, name);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+
+static isc_result_t
+dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
+                 void *dbdata, dns_sdlzlookup_t *lookup)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_lookup(zone, name, cd->dbdata, lookup);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+/*
+ * Load a symbol from the library
+ */
+static void *
+dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) {
+       void *ptr = dlsym(cd->dl_handle, symbol);
+       if (ptr == NULL && mandatory) {
+               dlopen_log(ISC_LOG_ERROR,
+                          "dlz_dlopen: library '%s' is missing "
+                          "required symbol '%s'", cd->dl_path, symbol);
+       }
+       return (ptr);
+}
+
+/*
+ * Called at startup for each dlopen zone in named.conf
+ */
+static isc_result_t
+dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
+                 void *driverarg, void **dbdata)
+{
+       dlopen_data_t *cd;
+       isc_mem_t *mctx = NULL;
+       isc_result_t result = ISC_R_FAILURE;
+       int dlopen_flags;
+
+       UNUSED(driverarg);
+
+       if (argc < 2) {
+               dlopen_log(ISC_LOG_ERROR,
+                          "dlz_dlopen driver for '%s' needs a path to "
+                          "the shared library", dlzname);
+               return (ISC_R_FAILURE);
+       }
+
+       isc_mem_create(0, 0, &mctx);
+
+       cd = isc_mem_get(mctx, sizeof(*cd));
+       if (cd == NULL) {
+               isc_mem_destroy(&mctx);
+               return (ISC_R_NOMEMORY);
+       }
+       memset(cd, 0, sizeof(*cd));
+
+       cd->mctx = mctx;
+
+       cd->dl_path = isc_mem_strdup(cd->mctx, argv[1]);
+       if (cd->dl_path == NULL) {
+               goto failed;
+       }
+
+       cd->dlzname = isc_mem_strdup(cd->mctx, dlzname);
+       if (cd->dlzname == NULL) {
+               goto failed;
+       }
+
+       /* Open the library */
+       dlopen_flags = RTLD_NOW;
+
+#ifdef RTLD_DEEPBIND
+       /*
+        * If RTLD_DEEPBIND is available then use it. This can avoid
+        * issues with a module using a different version of a system
+        * library than one that bind9 uses. For example, bind9 may link
+        * to MIT kerberos, but the module may use Heimdal. If we don't
+        * use RTLD_DEEPBIND then we could end up with Heimdal functions
+        * calling MIT functions, which leads to bizarre results (usually
+        * a segfault).
+        */
+       dlopen_flags |= RTLD_DEEPBIND;
+#endif
+
+       cd->dl_handle = dlopen(cd->dl_path, dlopen_flags);
+       if (cd->dl_handle == NULL) {
+               dlopen_log(ISC_LOG_ERROR,
+                          "dlz_dlopen failed to open library '%s' - %s",
+                          cd->dl_path, dlerror());
+               goto failed;
+       }
+
+       /* Find the symbols */
+       cd->dlz_version      = dl_load_symbol(cd, "dlz_version", true);
+       cd->dlz_create       = dl_load_symbol(cd, "dlz_create", true);
+       cd->dlz_lookup       = dl_load_symbol(cd, "dlz_lookup", true);
+       cd->dlz_findzonedb   = dl_load_symbol(cd, "dlz_findzonedb", true);
+
+       if (cd->dlz_create == NULL || cd->dlz_lookup == NULL ||
+           cd->dlz_findzonedb == NULL)
+       {
+               /* We're missing a required symbol */
+               goto failed;
+       }
+
+       cd->dlz_allowzonexfr = dl_load_symbol(cd, "dlz_allowzonexfr", false);
+       cd->dlz_allnodes     = dl_load_symbol(cd, "dlz_allnodes",
+                                             cd->dlz_allowzonexfr != NULL);
+       cd->dlz_authority    = dl_load_symbol(cd, "dlz_authority", false);
+       cd->dlz_newversion   = dl_load_symbol(cd, "dlz_newversion", false);
+       cd->dlz_closeversion = dl_load_symbol(cd, "dlz_closeversion",
+                                             cd->dlz_newversion != NULL);
+       cd->dlz_configure    = dl_load_symbol(cd, "dlz_configure", false);
+       cd->dlz_ssumatch     = dl_load_symbol(cd, "dlz_ssumatch", false);
+       cd->dlz_addrdataset  = dl_load_symbol(cd, "dlz_addrdataset", false);
+       cd->dlz_subrdataset  = dl_load_symbol(cd, "dlz_subrdataset", false);
+       cd->dlz_delrdataset  = dl_load_symbol(cd, "dlz_delrdataset", false);
+
+       /* Check the version of the API is the same */
+       cd->version = cd->dlz_version(&cd->flags);
+       if (cd->version != DLZ_DLOPEN_VERSION) {
+               dlopen_log(ISC_LOG_ERROR,
+                          "dlz_dlopen: incorrect version %d "
+                          "should be %d in '%s'",
+                          cd->version, DLZ_DLOPEN_VERSION, cd->dl_path);
+               goto failed;
+       }
+
+       /*
+        * Call the library's create function. Note that this is an
+        * extended version of dlz create, with the addition of
+        * named function pointers for helper functions that the
+        * driver will need. This avoids the need for the backend to
+        * link the bind9 libraries
+        */
+       MAYBE_LOCK(cd);
+       result = cd->dlz_create(dlzname, argc-1, argv+1,
+                               &cd->dbdata,
+                               "log", dlopen_log,
+                               "putrr", dns_sdlz_putrr,
+                               "putnamedrr", dns_sdlz_putnamedrr,
+                               "writeable_zone", dns_dlz_writeablezone,
+                               NULL);
+       MAYBE_UNLOCK(cd);
+       if (result != ISC_R_SUCCESS)
+               goto failed;
+
+       *dbdata = cd;
+
+       return (ISC_R_SUCCESS);
+
+failed:
+       dlopen_log(ISC_LOG_ERROR, "dlz_dlopen of '%s' failed", dlzname);
+       if (cd->dl_path)
+               isc_mem_free(mctx, cd->dl_path);
+       if (cd->dlzname)
+               isc_mem_free(mctx, cd->dlzname);
+#ifdef HAVE_DLCLOSE
+       if (cd->dl_handle)
+               dlclose(cd->dl_handle);
+#endif
+       isc_mem_put(mctx, cd, sizeof(*cd));
+       isc_mem_destroy(&mctx);
+       return (result);
+}
+
+
+/*
+ * Called when bind is shutting down
+ */
+static void
+dlopen_dlz_destroy(void *driverarg, void *dbdata) {
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_mem_t *mctx;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_destroy) {
+               MAYBE_LOCK(cd);
+               cd->dlz_destroy(cd->dbdata);
+               MAYBE_UNLOCK(cd);
+       }
+
+       if (cd->dl_path)
+               isc_mem_free(cd->mctx, cd->dl_path);
+       if (cd->dlzname)
+               isc_mem_free(cd->mctx, cd->dlzname);
+#ifdef HAVE_DLCLOSE
+       if (cd->dl_handle)
+               dlclose(cd->dl_handle);
+#endif
+       mctx = cd->mctx;
+       isc_mem_put(mctx, cd, sizeof(*cd));
+       isc_mem_destroy(&mctx);
+}
+
+/*
+ * Called to start a transaction
+ */
+static isc_result_t
+dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata,
+                     void **versionp)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_newversion == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_newversion(zone, cd->dbdata, versionp);
+       MAYBE_UNLOCK(cd);
+       return (result);
+}
+
+/*
+ * Called to end a transaction
+ */
+static void
+dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit,
+                       void *driverarg, void *dbdata, void **versionp)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_newversion == NULL) {
+               *versionp = NULL;
+               return;
+       }
+
+       MAYBE_LOCK(cd);
+       cd->dlz_closeversion(zone, commit, cd->dbdata, versionp);
+       MAYBE_UNLOCK(cd);
+}
+
+/*
+ * Called on startup to configure any writeable zones
+ */
+static isc_result_t
+dlopen_dlz_configure(dns_view_t *view, void *driverarg, void *dbdata) {
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_configure == NULL)
+               return (ISC_R_SUCCESS);
+
+       MAYBE_LOCK(cd);
+       cd->in_configure = ISC_TRUE;
+       result = cd->dlz_configure(view, cd->dbdata);
+       cd->in_configure = ISC_FALSE;
+       MAYBE_UNLOCK(cd);
+
+       return (result);
+}
+
+
+/*
+ * Check for authority to change a name
+ */
+static isc_boolean_t
+dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
+                   const char *type, const char *key, uint32_t keydatalen,
+                   uint8_t *keydata, void *driverarg, void *dbdata)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_boolean_t ret;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_ssumatch == NULL)
+               return (ISC_FALSE);
+
+       MAYBE_LOCK(cd);
+       ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen,
+                              keydata, cd->dbdata);
+       MAYBE_UNLOCK(cd);
+
+       return (ret);
+}
+
+
+/*
+ * Add an rdataset
+ */
+static isc_result_t
+dlopen_dlz_addrdataset(const char *name, const char *rdatastr,
+                      void *driverarg, void *dbdata, void *version)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_addrdataset == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_addrdataset(name, rdatastr, cd->dbdata, version);
+       MAYBE_UNLOCK(cd);
+
+       return (result);
+}
+
+/*
+ * Subtract an rdataset
+ */
+static isc_result_t
+dlopen_dlz_subrdataset(const char *name, const char *rdatastr,
+                      void *driverarg, void *dbdata, void *version)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_subrdataset == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_subrdataset(name, rdatastr, cd->dbdata, version);
+       MAYBE_UNLOCK(cd);
+
+       return (result);
+}
+
+/*
+  delete a rdataset
+ */
+static isc_result_t
+dlopen_dlz_delrdataset(const char *name, const char *type,
+                      void *driverarg, void *dbdata, void *version)
+{
+       dlopen_data_t *cd = (dlopen_data_t *) dbdata;
+       isc_result_t result;
+
+       UNUSED(driverarg);
+
+       if (cd->dlz_delrdataset == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       MAYBE_LOCK(cd);
+       result = cd->dlz_delrdataset(name, type, cd->dbdata, version);
+       MAYBE_UNLOCK(cd);
+
+       return (result);
+}
+
+
+static dns_sdlzmethods_t dlz_dlopen_methods = {
+       dlopen_dlz_create,
+       dlopen_dlz_destroy,
+       dlopen_dlz_findzonedb,
+       dlopen_dlz_lookup,
+       dlopen_dlz_authority,
+       dlopen_dlz_allnodes,
+       dlopen_dlz_allowzonexfr,
+       dlopen_dlz_newversion,
+       dlopen_dlz_closeversion,
+       dlopen_dlz_configure,
+       dlopen_dlz_ssumatch,
+       dlopen_dlz_addrdataset,
+       dlopen_dlz_subrdataset,
+       dlopen_dlz_delrdataset
+};
+
+/*
+ * Register driver with BIND
+ */
+isc_result_t
+dlz_dlopen_init(void) {
+       isc_result_t result;
+
+       dlopen_log(2, "Registering DLZ_dlopen driver");
+
+       result = dns_sdlzregister("dlopen", &dlz_dlopen_methods, NULL,
+                                 DNS_SDLZFLAG_RELATIVEOWNER |
+                                 DNS_SDLZFLAG_THREADSAFE,
+                                 ns_g_mctx, &dlz_dlopen);
+
+       if (result != ISC_R_SUCCESS) {
+               UNEXPECTED_ERROR(__FILE__, __LINE__,
+                                "dns_sdlzregister() failed: %s",
+                                isc_result_totext(result));
+               result = ISC_R_UNEXPECTED;
+       }
+
+       return (result);
+}
+
+
+/*
+ * Unregister the driver
+ */
+void
+dlz_dlopen_clear(void) {
+       dlopen_log(2, "Unregistering DLZ_dlopen driver");
+       if (dlz_dlopen != NULL)
+               dns_sdlzunregister(&dlz_dlopen);
+}
+
+#endif
index e2c6a6e10dc0c6cd33973089ea73f4a381d5aa25..568843760d9544ddb99d0bf4ca052c8fa7462df1 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dlz_drivers.c,v 1.2 2005/09/05 00:10:55 marka Exp $ */
+/* $Id: dlz_drivers.c,v 1.3 2010/12/18 01:56:20 each Exp $ */
 
 /*! \file */
 
 #include <dlz/dlz_odbc_driver.h>
 #endif
 
+#ifdef DLZ_DLOPEN
+#include <dlz/dlz_dlopen_driver.h>
+#endif
+
 /*%
  * Call init functions for all relevant DLZ drivers.
  */
@@ -115,6 +119,12 @@ dlz_drivers_init(void) {
                return (result);
 #endif
 
+#ifdef DLZ_DLOPEN
+       result = dlz_dlopen_init();
+       if (result != ISC_R_SUCCESS)
+               return (result);
+#endif
+
        return (result);
 }
 
@@ -154,4 +164,8 @@ dlz_drivers_clear(void) {
         dlz_odbc_clear();
 #endif
 
+#ifdef DLZ_DLOPEN
+        dlz_dlopen_clear();
+#endif
+
 }
index 36514918771b6b4cbd3ed740d6d9cbfc99c4bb4e..a04faaac38a8985be9f03e3c5c648e2a14a4fa60 100644 (file)
@@ -996,7 +996,14 @@ static dns_sdlzmethods_t dlz_fs_methods = {
        fs_lookup,
        NULL,
        fs_allnodes,
-       fs_allowzonexfr
+       fs_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index 35d75489b9e4502d58a70b511ff908898e97ec46..77422baee433168e8091293809416d3db1e301f2 100644 (file)
@@ -1287,7 +1287,14 @@ static dns_sdlzmethods_t dlz_ldap_methods = {
        dlz_ldap_lookup,
        dlz_ldap_authority,
        dlz_ldap_allnodes,
-       dlz_ldap_allowzonexfr
+       dlz_ldap_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index 50cceb139cb0c28481366ee53b9fac1982569096..dcfab1e6da7f16f0af2f5cf755569c4d17894ce3 100644 (file)
@@ -1013,7 +1013,14 @@ static dns_sdlzmethods_t dlz_mysql_methods = {
        mysql_lookup,
        mysql_authority,
        mysql_allnodes,
-       mysql_allowzonexfr
+       mysql_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index eb088a213238a123a03eee820267af4632fcb211..6031b08d704e3c26502b79699d83bf410f39fc6c 100644 (file)
@@ -1506,7 +1506,14 @@ static dns_sdlzmethods_t dlz_odbc_methods = {
        odbc_lookup,
        odbc_authority,
        odbc_allnodes,
-       odbc_allowzonexfr
+       odbc_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index 5cad59e34358e142c3f6c374dd3aeadd484a1976..c5367c61649610553e9f8382f7ad83b54451b219 100644 (file)
@@ -1310,7 +1310,14 @@ static dns_sdlzmethods_t dlz_postgres_methods = {
        postgres_lookup,
        postgres_authority,
        postgres_allnodes,
-       postgres_allowzonexfr
+       postgres_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
index f9a3bb8f0a9d9db45c0e3e20a8bddb6e2fedf69a..c2e72ddb92748445be4f90de4b973eb0cfab785e 100644 (file)
@@ -164,7 +164,7 @@ stub_dlz_findzonedb(void *driverarg, void *dbdata, const char *name)
        if (strcmp(cd->myzone, name) == 0)
                return (ISC_R_SUCCESS);
        else
-               return (ISC_R_SUCCESS);
+               return (ISC_R_NOTFOUND);
 }
 
 
@@ -279,7 +279,14 @@ static dns_sdlzmethods_t dlz_stub_methods = {
        stub_dlz_lookup,
        stub_dlz_authority,
        stub_dlz_allnodes,
-       stub_dlz_allowzonexfr
+       stub_dlz_allowzonexfr,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
 };
 
 /*%
diff --git a/contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h b/contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h
new file mode 100644 (file)
index 0000000..d155f31
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2010 Andrew Tridgell
+ *
+ * based on dlz_stub_driver.h
+ * which is:
+ * Copyright (C) 2002 Stichting NLnet, Netherlands, stichting@nlnet.nl.
+ * Copyright (C) 1999-2001  Internet Software Consortium.
+ * see dlz_stub_driver.h for details
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * STICHTING NLNET 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.
+ *
+ * The development of Dynamically Loadable Zones (DLZ) for Bind 9 was
+ * conceived and contributed by Rob Butler.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ROB BUTLER
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * ROB BUTLER 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.
+ */
+
+#ifndef DLZ_DLOPEN_DRIVER_H
+#define DLZ_DLOPEN_DRIVER_H
+
+isc_result_t
+dlz_dlopen_init(void);
+
+void
+dlz_dlopen_clear(void);
+
+#define DLZ_DLOPEN_VERSION 1
+
+#endif
index 9caabcb431c418254fb74289e3ee058aa9ca8479..e3b64b3fe9a34bb118adfc2e3357e789a80561ae 100644 (file)
@@ -12,7 +12,7 @@
 # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-# $Id: rules.in,v 1.2 2005/09/05 00:10:57 marka Exp $
+# $Id: rules.in,v 1.3 2010/12/18 01:56:21 each Exp $
 
 dlz_drivers.@O@: ${DLZ_DRIVER_DIR}/dlz_drivers.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_drivers.h
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_drivers.c
@@ -42,6 +42,9 @@ dlz_odbc_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_odbc_driver.c ${DLZ_DRIVER_DIR}/inclu
 dlz_postgres_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_postgres_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_postgres_driver.h
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_postgres_driver.c
 
+dlz_dlopen_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_dlopen_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_dlopen_driver.h
+       ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_dlopen_driver.c
+
 dlz_stub_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_stub_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_stub_driver.h
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_stub_driver.c
 
diff --git a/contrib/dlz/example/Makefile b/contrib/dlz/example/Makefile
new file mode 100644 (file)
index 0000000..b8509aa
--- /dev/null
@@ -0,0 +1,16 @@
+# for building the dlz_example driver we don't use
+# the bind9 build structure as the aim is to provide an
+# example that is separable from the bind9 source tree
+
+# this means this Makefile is not portable, so the testsuite
+# skips this test on platforms where it doesn't build
+
+CFLAGS=-fPIC -g
+
+all: dlz_example.so
+
+dlz_example.so: dlz_example.o
+       $(CC) $(CFLAGS) -shared -o dlz_example.so dlz_example.o
+
+clean:
+       rm -f dlz_example.o dlz_example.so
diff --git a/contrib/dlz/example/dlz_example.c b/contrib/dlz/example/dlz_example.c
new file mode 100644 (file)
index 0000000..c8e4680
--- /dev/null
@@ -0,0 +1,482 @@
+/*
+ * Copyright (C) 2010 Andrew Tridgell
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * STICHTING NLNET 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.
+ */
+
+/*
+  this provides a very simple example of an external loadable DLZ
+  driver, with update support
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdarg.h>
+
+#include "dlz_minimal.h"
+
+
+/* for this simple example, use fixed sized strings */
+struct record {
+       char name[100];
+       char type[10];
+       char data[200];
+       uint32_t ttl;
+};
+
+#define MAX_RECORDS 100
+
+struct dlz_example_data {
+       char *zone_name;
+
+       /* an example driver doesn't need good memory management :-) */
+       struct record current[MAX_RECORDS];
+       struct record adds[MAX_RECORDS];
+       struct record deletes[MAX_RECORDS];
+
+       bool transaction_started;
+
+       /* helper functions from the dlz_dlopen driver */
+       void (*log)(int level, const char *fmt, ...);
+       isc_result_t (*putrr)(dns_sdlzlookup_t *handle, const char *type,
+                             dns_ttl_t ttl, const char *data);
+       isc_result_t (*putnamedrr)(dns_sdlzlookup_t *handle, const char *name,
+                                  const char *type, dns_ttl_t ttl, const char *data);
+       isc_result_t (*writeable_zone)(dns_view_t *view, const char *zone_name);
+};
+
+static bool single_valued(const char *type)
+{
+       const char *single[] = { "soa", "cname", NULL };
+       int i;
+       for (i=0; single[i]; i++) {
+               if (strcasecmp(single[i], type) == 0) {
+                       return true;
+               }
+       }
+       return false;
+}
+
+/*
+  add a record to a list
+ */
+static isc_result_t add_name(struct dlz_example_data *state,
+                            struct record *list, const char *name, const char *type, 
+                            uint32_t ttl, const char *data)
+{
+       int i;
+       bool single = single_valued(type);
+       int first_empty = -1;
+
+       for (i=0; i<MAX_RECORDS; i++) {
+               if (first_empty == -1 && strlen(list[i].name) == 0) {
+                       first_empty = i;
+               }
+               if (strcasecmp(list[i].name, name) != 0) 
+                       continue;
+               if (strcasecmp(list[i].type, type) != 0)
+                       continue;
+               if (!single && strcasecmp(list[i].data, data) != 0)
+                       continue;
+               break;
+       }
+       if (i == MAX_RECORDS && first_empty != -1) {
+               i = first_empty;
+       }
+       if (i == MAX_RECORDS) {
+               state->log(ISC_LOG_ERROR, "dlz_example: out of record space");
+               return ISC_R_FAILURE;
+       }
+       strcpy(list[i].name, name);
+       strcpy(list[i].type, type);
+       strcpy(list[i].data, data);
+       list[i].ttl = ttl;
+       return ISC_R_SUCCESS;
+}
+
+/*
+  delete a record from a list
+ */
+static isc_result_t del_name(struct dlz_example_data *state,
+                            struct record *list, const char *name, const char *type, 
+                            uint32_t ttl, const char *data)
+{
+       int i;
+       for (i=0; i<MAX_RECORDS; i++) {
+               if (strcasecmp(name, list[i].name) == 0 &&
+                   strcasecmp(type, list[i].type) == 0 &&
+                   strcasecmp(data, list[i].data) == 0 &&
+                   ttl == list[i].ttl) {
+                       break;
+               }
+       }
+       if (i == MAX_RECORDS) {
+               return ISC_R_NOTFOUND;
+       }
+       memset(&list[i], 0, sizeof(struct record));
+       return ISC_R_SUCCESS;
+}
+
+
+
+/*
+  return the version of the API
+ */
+int dlz_version(unsigned int *flags)
+{
+       return DLZ_DLOPEN_VERSION;
+}
+
+/*
+   remember a helper function from the bind9 dlz_dlopen driver
+ */
+static void b9_add_helper(struct dlz_example_data *state, const char *helper_name, void *ptr)
+{
+       if (strcmp(helper_name, "log") == 0) {
+               state->log = ptr;
+       }
+       if (strcmp(helper_name, "putrr") == 0) {
+               state->putrr = ptr;
+       }
+       if (strcmp(helper_name, "putnamedrr") == 0) {
+               state->putnamedrr = ptr;
+       }
+       if (strcmp(helper_name, "writeable_zone") == 0) {
+               state->writeable_zone = ptr;
+       }
+}
+
+
+/*
+  called to initialise the driver
+ */
+isc_result_t dlz_create(const char *dlzname, unsigned int argc, char *argv[],
+                       void **dbdata, ...)
+{
+       struct dlz_example_data *state;
+       const char *helper_name;
+       va_list ap;
+       char soa_data[200];
+
+       state = calloc(1, sizeof(struct dlz_example_data));
+       if (state == NULL) {
+               return ISC_R_NOMEMORY;
+       }
+
+       /* fill in the helper functions */
+       va_start(ap, dbdata);
+       while ((helper_name = va_arg(ap, const char *)) != NULL) {
+               b9_add_helper(state, helper_name, va_arg(ap, void*));
+       }
+       va_end(ap);
+
+       if (argc < 2) {
+               state->log(ISC_LOG_ERROR, "dlz_example: please specify a zone name");
+               return ISC_R_FAILURE;
+       }
+
+       state->zone_name = strdup(argv[1]);
+
+       sprintf(soa_data, "%s hostmaster.%s 123 900 600 86400 3600",
+               state->zone_name, state->zone_name);
+
+       add_name(state, &state->current[0], state->zone_name, "soa", 3600, soa_data);
+       add_name(state, &state->current[0], state->zone_name, "ns", 3600, state->zone_name);
+       add_name(state, &state->current[0], state->zone_name, "a", 1800, "10.53.0.1");
+
+       state->log(ISC_LOG_INFO, "dlz_example: started for zone %s", state->zone_name);
+
+       *dbdata = state;
+       return ISC_R_SUCCESS;
+}
+
+/*
+  shutdown the backend
+ */
+void dlz_destroy(void *dbdata)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       state->log(ISC_LOG_INFO, "dlz_example: shutting down zone %s", state->zone_name);
+       free(state->zone_name);
+       free(state);
+}
+
+
+/*
+  see if we handle a given zone
+ */
+isc_result_t dlz_findzonedb(void *dbdata, const char *name)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       if (strcasecmp(state->zone_name, name) == 0) {
+               return ISC_R_SUCCESS;
+       }
+       return ISC_R_NOTFOUND;
+}
+
+
+
+/*
+  lookup one record
+ */
+isc_result_t dlz_lookup(const char *zone, const char *name, 
+                       void *dbdata, dns_sdlzlookup_t *lookup)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       int i;
+       bool found = false;
+       char full_name[100];
+       
+       if (strcmp(name, "@") == 0) {
+               strcpy(full_name, state->zone_name);
+       } else {
+               sprintf(full_name, "%s.%s", name, state->zone_name);
+       }
+       for (i=0; i<MAX_RECORDS; i++) {
+               if (strcasecmp(state->current[i].name, full_name) == 0) {
+                       isc_result_t result;
+                       found = true;
+                       result = state->putrr(lookup, state->current[i].type, 
+                                             state->current[i].ttl, state->current[i].data);
+                       if (result != ISC_R_SUCCESS) {
+                               return result;
+                       }
+               }
+       }
+       if (!found) {
+               return ISC_R_NOTFOUND;
+       }
+       return ISC_R_SUCCESS;
+}
+
+
+/*
+  see if a zone transfer is allowed
+ */
+isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client)
+{
+       /* just say yes for all our zones */
+       return dlz_findzonedb(dbdata, name);
+}
+
+/*
+  perform a zone transfer
+ */
+isc_result_t dlz_allnodes(const char *zone, void *dbdata,
+                         dns_sdlzallnodes_t *allnodes)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       int i;
+
+       for (i=0; i<MAX_RECORDS; i++) {
+               isc_result_t result;
+               if (strlen(state->current[i].name) == 0) {
+                       continue;
+               }
+               result = state->putnamedrr(allnodes, state->current[i].name, state->current[i].type, 
+                                          state->current[i].ttl, state->current[i].data);
+               if (result != ISC_R_SUCCESS) {
+                       return result;
+               }
+       }
+
+       return ISC_R_SUCCESS;
+}
+
+
+/*
+  start a transaction
+ */
+isc_result_t dlz_newversion(const char *zone, void *dbdata, void **versionp)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+
+       if (state->transaction_started) {
+               state->log(ISC_LOG_INFO, "dlz_example: transaction already started for zone %s", zone);
+               return ISC_R_FAILURE;
+       }
+
+       state->transaction_started = true;
+
+       *versionp = (void *) &state->transaction_started;
+
+       return ISC_R_SUCCESS;
+}
+
+/*
+  end a transaction
+ */
+void dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata, void **versionp)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+
+       if (!state->transaction_started) {
+               state->log(ISC_LOG_INFO, "dlz_example: transaction not started for zone %s", zone);
+               *versionp = NULL;
+               return;
+       }
+
+       state->transaction_started = false;
+
+       *versionp = NULL;
+
+       if (commit) {
+               int i;
+               state->log(ISC_LOG_INFO, "dlz_example: committing transaction on zone %s", zone);
+               for (i=0; i<MAX_RECORDS; i++) {
+                       if (strlen(state->adds[i].name) > 0) {
+                               add_name(state, &state->current[0], 
+                                        state->adds[i].name, 
+                                        state->adds[i].type, 
+                                        state->adds[i].ttl, 
+                                        state->adds[i].data);
+                       }
+               }
+               for (i=0; i<MAX_RECORDS; i++) {
+                       if (strlen(state->deletes[i].name) > 0) {
+                               del_name(state, &state->current[0], 
+                                        state->deletes[i].name, 
+                                        state->deletes[i].type, 
+                                        state->deletes[i].ttl, 
+                                        state->deletes[i].data);
+                       }
+               }
+       } else {
+               state->log(ISC_LOG_INFO, "dlz_example: cancelling transaction on zone %s", zone);
+       }
+       memset(state->adds, 0, sizeof(state->adds));
+       memset(state->deletes, 0, sizeof(state->deletes));
+}
+
+
+/*
+  configure a writeable zone
+ */
+isc_result_t dlz_configure(dns_view_t *view, void *dbdata)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       isc_result_t result;
+
+
+       state->log(ISC_LOG_INFO, "dlz_example: starting configure");
+       if (state->writeable_zone == NULL) {
+               state->log(ISC_LOG_INFO, "dlz_example: no writeable_zone method available");
+               return ISC_R_FAILURE;
+       }
+
+       result = state->writeable_zone(view, state->zone_name);
+       if (result != ISC_R_SUCCESS) {
+               state->log(ISC_LOG_ERROR, "dlz_example: failed to configure zone %s", state->zone_name);
+               return result;
+       }
+
+       state->log(ISC_LOG_INFO, "dlz_example: configured writeable zone %s", state->zone_name);
+       return ISC_R_SUCCESS;
+}
+
+/*
+  authorize a zone update
+ */
+isc_boolean_t dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
+                          const char *type, const char *key, uint32_t keydatalen, uint8_t *keydata, 
+                          void *dbdata)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+       if (strncmp(name, "deny.", 5) == 0) {
+               state->log(ISC_LOG_INFO, "dlz_example: denying update of name=%s by %s", 
+                          name, signer);
+               return false;
+       }
+       state->log(ISC_LOG_INFO, "dlz_example: allowing update of name=%s by %s", 
+                  name, signer);
+       return true;
+}
+
+
+static isc_result_t modrdataset(struct dlz_example_data *state, const char *name, const char *rdatastr,
+                               struct record *list)
+{
+       char *full_name, *dclass, *type, *data, *ttlstr;
+       char *buf = strdup(rdatastr);
+       isc_result_t result;
+       char *saveptr = NULL;
+
+       /*
+         the format is:
+         FULLNAME\tTTL\tDCLASS\tTYPE\tDATA
+
+         The DATA field is space separated, and is in the data format
+         for the type used by dig
+        */
+
+       full_name = strtok_r(buf, "\t", &saveptr);
+       if (full_name == NULL) return ISC_R_FAILURE;
+       ttlstr    = strtok_r(NULL, "\t", &saveptr);
+       if (ttlstr == NULL) return ISC_R_FAILURE;
+       dclass    = strtok_r(NULL, "\t", &saveptr);
+       if (dclass == NULL) return ISC_R_FAILURE;
+       type      = strtok_r(NULL, "\t", &saveptr);
+       if (type == NULL) return ISC_R_FAILURE;
+       data      = strtok_r(NULL, "\t", &saveptr);
+       if (data == NULL) return ISC_R_FAILURE;
+
+       result = add_name(state, list, name, type, strtoul(ttlstr, NULL, 10), data);
+       free(buf);
+       return result;
+}
+
+
+isc_result_t dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata, void *version)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+
+       if (version != (void *) &state->transaction_started) {
+               return ISC_R_FAILURE;
+       }
+
+       state->log(ISC_LOG_INFO, "dlz_example: adding rdataset %s '%s'", name, rdatastr);
+
+       return modrdataset(state, name, rdatastr, &state->adds[0]);
+}
+
+isc_result_t dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata, void *version)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+
+       if (version != (void *) &state->transaction_started) {
+               return ISC_R_FAILURE;
+       }
+
+       state->log(ISC_LOG_INFO, "dlz_example: subtracting rdataset %s '%s'", name, rdatastr);
+                  
+       return modrdataset(state, name, rdatastr, &state->deletes[0]);
+}
+
+
+isc_result_t dlz_delrdataset(const char *name, const char *type, void *dbdata, void *version)
+{
+       struct dlz_example_data *state = (struct dlz_example_data *)dbdata;
+
+       if (version != (void *) &state->transaction_started) {
+               return ISC_R_FAILURE;
+       }
+
+       state->log(ISC_LOG_INFO, "dlz_example: deleting rdataset %s of type %s", name, type);
+                  
+       return ISC_R_SUCCESS;
+}
diff --git a/contrib/dlz/example/dlz_minimal.h b/contrib/dlz/example/dlz_minimal.h
new file mode 100644 (file)
index 0000000..923c63a
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2010 Andrew Tridgell
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR
+ * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+ * THE AUTHOR 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.
+ */
+
+/*
+  This header provides a minimal set of defines and typedefs needed
+  for building an external DLZ module for bind9. When creating a new
+  external DLZ driver, please copy this header into your own source
+  tree.
+ */
+typedef unsigned int isc_result_t;
+typedef bool isc_boolean_t;
+typedef uint32_t dns_ttl_t;
+
+#define DLZ_DLOPEN_VERSION 1
+
+/* return this in flags to dlz_version() if thread safe */
+#define DNS_SDLZFLAG_THREADSAFE                0x00000001U
+
+/* result codes */
+#define ISC_R_SUCCESS                  0
+#define ISC_R_NOMEMORY                 1
+#define ISC_R_NOTFOUND                 23
+#define ISC_R_FAILURE                  25
+
+/* log levels */
+#define ISC_LOG_INFO           (-1)
+#define ISC_LOG_NOTICE         (-2)
+#define ISC_LOG_WARNING        (-3)
+#define ISC_LOG_ERROR          (-4)
+#define ISC_LOG_CRITICAL       (-5)
+
+/* some opaque structures */
+typedef void *dns_sdlzlookup_t;
+typedef void *dns_sdlzallnodes_t;
+typedef void *dns_view_t;
+
+/*
+ * prototypes for the functions you can include in your driver
+ */
+
+
+/*
+ * dlz_version() is required for all DLZ external drivers. It should
+ * return DLZ_DLOPEN_VERSION
+ */
+int dlz_version(unsigned int *flags);
+
+/*
+ * dlz_create() is required for all DLZ external drivers.
+ */
+isc_result_t dlz_create(const char *dlzname, unsigned int argc, char *argv[], void **dbdata, ...);
+
+/*
+ * dlz_destroy() is optional, and will be called when the driver is
+ * unloaded if supplied
+ */
+void dlz_destroy(void *dbdata);
+
+/*
+  dlz_findzonedb is required for all DLZ external drivers
+ */
+isc_result_t dlz_findzonedb(void *dbdata, const char *name);
+
+/*
+  dlz_lookup is required for all DLZ external drivers
+ */
+isc_result_t dlz_lookup(const char *zone, const char *name,
+                       void *dbdata, dns_sdlzlookup_t *lookup);
+
+/*
+  dlz_allowzonexfr() is optional, and should be supplied if you want
+  to support zone transfers
+ */
+isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client);
+
+
+/*
+  dlz_allnodes() is optional, but must be supplied if supply a
+  dlz_allowzonexfr() function
+ */
+isc_result_t dlz_allnodes(const char *zone, void *dbdata, dns_sdlzallnodes_t *allnodes);
+
+/*
+  dlz_newversion() is optional. It should be supplied if you want to
+  support dynamic updates.
+ */
+isc_result_t dlz_newversion(const char *zone, void *dbdata, void **versionp);
+
+/* 
+   dlz_closeversion() is optional, but must be supplied if you supply
+   a dlz_newversion() function
+ */
+void dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata, void **versionp);
+
+/*
+  dlz_configure() is optional, but must be supplied if you want to
+  support dynamic updates
+ */
+isc_result_t dlz_configure(dns_view_t *view, void *dbdata);
+
+/*
+  dlz_ssumatch() is optional, but must be supplied if you want to
+  support dynamic updates
+ */
+isc_boolean_t dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
+                          const char *type, const char *key, uint32_t keydatalen, uint8_t *keydata,
+                          void *dbdata);
+
+/*
+  dlz_addrdataset() is optional, but must be supplied if you want to
+  support dynamic updates
+ */
+isc_result_t dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata, void *version);
+
+/*
+  dlz_subrdataset() is optional, but must be supplied if you want to
+  support dynamic updates
+ */
+isc_result_t dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata, void *version);
+
+/*
+  dlz_delrdataset() is optional, but must be supplied if you want to
+  support dynamic updates
+ */
+isc_result_t dlz_delrdataset(const char *name, const char *type, void *dbdata, void *version);
index 2f9f6fcbfa023a23e19c31691e4401f811ed4bf4..916401c93af2394e0f93ac52fc0e89876a9caf02 100644 (file)
@@ -18,7 +18,7 @@
  - PERFORMANCE OF THIS SOFTWARE.
 -->
 
-<!-- File: $Id: Bv9ARM-book.xml,v 1.467 2010/12/16 09:51:29 jinmei Exp $ -->
+<!-- File: $Id: Bv9ARM-book.xml,v 1.468 2010/12/18 01:56:21 each Exp $ -->
 <book xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>BIND 9 Administrator Reference Manual</title>
 
@@ -1792,8 +1792,9 @@ controls {
       </para>
 
       <para>
-        The <command>tkey-gssapi-credential</command> and
-       <command>tkey-domain</command> clauses in the
+        The <command>tkey-gssapi-credential</command>,
+        <command>tkey-gssapi-keytab</command>
+        and <command>tkey-domain</command> clauses in the
        <command>options</command> statement enable the
        server to negotiate keys that can be matched against those
        in <command>update-policy</command> or
@@ -4973,6 +4974,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
     <optional> key-directory <replaceable>path_name</replaceable>; </optional>
     <optional> managed-keys-directory <replaceable>path_name</replaceable>; </optional>
     <optional> named-xfer <replaceable>path_name</replaceable>; </optional>
+    <optional> tkey-gssapi-keytab <replaceable>path_name</replaceable>; </optional>
     <optional> tkey-gssapi-credential <replaceable>principal</replaceable>; </optional>
     <optional> tkey-domain <replaceable>domainname</replaceable>; </optional>
     <optional> tkey-dhkey <replaceable>key_name</replaceable> <replaceable>key_tag</replaceable>; </optional>
@@ -5329,6 +5331,18 @@ badresp:1,adberr:0,findfail:0,valfail:0]
            </listitem>
          </varlistentry>
 
+         <varlistentry>
+           <term><command>tkey-gssapi-keytab</command></term>
+           <listitem>
+             <para>
+               The KRB5 keytab file to use for GSS-TSIG updates. If
+               this option is set and tkey-gssapi-credential is not
+               set, then updates will be allowed with any key
+               matching a principal in the specified keytab.
+             </para>
+           </listitem>
+         </varlistentry>
+
          <varlistentry>
            <term><command>tkey-gssapi-credential</command></term>
            <listitem>
@@ -5336,13 +5350,15 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                The security credential with which the server should
                authenticate keys requested by the GSS-TSIG protocol.
                Currently only Kerberos 5 authentication is available
-               and the credential is a Kerberos principal which
-               the server can acquire through the default system
-               key file, normally <filename>/etc/krb5.keytab</filename>.
-               Normally this principal is of the form
-               "<userinput>DNS/</userinput><varname>server.domain</varname>".
-               To use GSS-TSIG, <command>tkey-domain</command>
-               must also be set.
+               and the credential is a Kerberos principal which the
+               server can acquire through the default system key
+               file, normally <filename>/etc/krb5.keytab</filename>.
+               The location keytab file can be overridden using the
+               tkey-gssapi-keytab option. Normally this principal is
+               of the form "<userinput>DNS/</userinput><varname>server.domain</varname>".
+               To use GSS-TSIG, <command>tkey-domain</command> must
+               also be set if a specific keytab is not set with
+               tkey-gssapi-keytab.
              </para>
            </listitem>
          </varlistentry>
@@ -5364,7 +5380,8 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                should be the server's domain name, or an otherwise
                non-existent subdomain like
                "_tkey.<varname>domainname</varname>".  If you are
-               using GSS-TSIG, this variable must be defined.
+               using GSS-TSIG, this variable must be defined, unless
+               you specify a specific keytab using tkey-gssapi-keytab.
              </para>
            </listitem>
          </varlistentry>
index 731821782d43eacb2b3ffdd04cf04b944abcdf22..e6646a2824e9953f8c1f0313e975f1e4103d7c5d 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch04.html,v 1.117 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch04.html,v 1.118 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570825">Split DNS</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570843">Example split DNS setup</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570828">Split DNS</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570846">Example split DNS setup</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571345">Generate Shared Keys for Each Pair of Hosts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571555">Copying the Shared Secret to Both Machines</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571565">Informing the Servers of the Key's Existence</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571602">Instructing the Server to Use the Key</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571659">TSIG Key Based Access Control</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571708">Errors</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571348">Generate Shared Keys for Each Pair of Hosts</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571558">Copying the Shared Secret to Both Machines</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571569">Informing the Servers of the Key's Existence</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571605">Instructing the Server to Use the Key</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571662">TSIG Key Based Access Control</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571712">Errors</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571722">TKEY</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563989">SIG(0)</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571725">TKEY</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563992">SIG(0)</a></span></dt>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564057">Generating Keys</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572192">Signing the Zone</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572273">Configuring Servers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564060">Generating Keys</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572195">Signing the Zone</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572276">Configuring Servers</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571894">Converting from insecure to secure</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571931">Dynamic DNS update method</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563502">Fully automatic zone signing</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563585">Private-type records</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563622">DNSKEY rollovers</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563635">Dynamic DNS update method</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563668">Automatic key rollovers</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563694">NSEC3PARAM rollovers via UPDATE</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563704">Converting from NSEC to NSEC3</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563714">Converting from NSEC3 to NSEC</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563726">Converting from secure to insecure</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563832">Periodic re-signing</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563842">NSEC3 and OPTOUT</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606801">Converting from insecure to secure</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563420">Dynamic DNS update method</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563457">Fully automatic zone signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563675">Private-type records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563713">DNSKEY rollovers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563725">Dynamic DNS update method</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563758">Automatic key rollovers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563785">NSEC3PARAM rollovers via UPDATE</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563795">Converting from NSEC to NSEC3</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563804">Converting from NSEC3 to NSEC</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563817">Converting from secure to insecure</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571842">Periodic re-signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571851">NSEC3 and OPTOUT</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606220">Validating Resolver</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606243">Authoritative Server</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606721">Validating Resolver</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606743">Authoritative Server</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606357">Prerequisites</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607447">Building BIND 9 with PKCS#11</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607542">PKCS #11 Tools</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607573">Using the HSM</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609956">Specifying the engine on the command line</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610002">Running named with automatic zone re-signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608973">Prerequisites</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607196">Building BIND 9 with PKCS#11</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607291">PKCS #11 Tools</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609029">Using the HSM</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609978">Specifying the engine on the command line</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610024">Running named with automatic zone re-signing</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572468">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572471">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572734">Address Lookups Using AAAA Records</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572756">Address to Name Lookups Using Nibble Format</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572738">Address Lookups Using AAAA Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572759">Address to Name Lookups Using Nibble Format</a></span></dt>
 </dl></dd>
 </dl>
 </div>
         See <a href="Bv9ARM.ch06.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a> for more details.
       </p>
 <p>
-        The <span><strong class="command">tkey-gssapi-credential</strong></span> and
-        <span><strong class="command">tkey-domain</strong></span> clauses in the
+        The <span><strong class="command">tkey-gssapi-credential</strong></span>,
+        <span><strong class="command">tkey-gssapi-keytab</strong></span>
+        and <span><strong class="command">tkey-domain</strong></span> clauses in the
         <span><strong class="command">options</strong></span> statement enable the
         server to negotiate keys that can be matched against those
         in <span><strong class="command">update-policy</strong></span> or
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2570825"></a>Split DNS</h2></div></div></div>
+<a name="id2570828"></a>Split DNS</h2></div></div></div>
 <p>
         Setting up different views, or visibility, of the DNS space to
         internal and external resolvers is usually referred to as a
       </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2570843"></a>Example split DNS setup</h3></div></div></div>
+<a name="id2570846"></a>Example split DNS setup</h3></div></div></div>
 <p>
         Let's say a company named <span class="emphasis"><em>Example, Inc.</em></span>
         (<code class="literal">example.com</code>)
@@ -541,7 +542,7 @@ nameserver 172.16.72.4
       </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571345"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div>
+<a name="id2571348"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div>
 <p>
           A shared secret is generated to be shared between <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span>.
           An arbitrary key name is chosen: "host1-host2.". The key name must
@@ -549,7 +550,7 @@ nameserver 172.16.72.4
         </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2571362"></a>Automatic Generation</h4></div></div></div>
+<a name="id2571365"></a>Automatic Generation</h4></div></div></div>
 <p>
             The following command will generate a 128-bit (16 byte) HMAC-SHA256
             key as described above. Longer keys are better, but shorter keys
@@ -573,7 +574,7 @@ nameserver 172.16.72.4
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2571537"></a>Manual Generation</h4></div></div></div>
+<a name="id2571540"></a>Manual Generation</h4></div></div></div>
 <p>
             The shared secret is simply a random sequence of bits, encoded
             in base-64. Most ASCII strings are valid base-64 strings (assuming
@@ -588,7 +589,7 @@ nameserver 172.16.72.4
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571555"></a>Copying the Shared Secret to Both Machines</h3></div></div></div>
+<a name="id2571558"></a>Copying the Shared Secret to Both Machines</h3></div></div></div>
 <p>
           This is beyond the scope of DNS. A secure transport mechanism
           should be used. This could be secure FTP, ssh, telephone, etc.
@@ -596,7 +597,7 @@ nameserver 172.16.72.4
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571565"></a>Informing the Servers of the Key's Existence</h3></div></div></div>
+<a name="id2571569"></a>Informing the Servers of the Key's Existence</h3></div></div></div>
 <p>
           Imagine <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host 2</em></span>
           are
@@ -623,7 +624,7 @@ key host1-host2. {
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571602"></a>Instructing the Server to Use the Key</h3></div></div></div>
+<a name="id2571605"></a>Instructing the Server to Use the Key</h3></div></div></div>
 <p>
           Since keys are shared between two hosts only, the server must
           be told when keys are to be used. The following is added to the <code class="filename">named.conf</code> file
@@ -655,7 +656,7 @@ server 10.1.2.3 {
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571659"></a>TSIG Key Based Access Control</h3></div></div></div>
+<a name="id2571662"></a>TSIG Key Based Access Control</h3></div></div></div>
 <p>
           <acronym class="acronym">BIND</acronym> allows IP addresses and ranges
           to be specified in ACL
@@ -682,7 +683,7 @@ allow-update { key host1-host2. ;};
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2571708"></a>Errors</h3></div></div></div>
+<a name="id2571712"></a>Errors</h3></div></div></div>
 <p>
           The processing of TSIG signed messages can result in
           several errors. If a signed message is sent to a non-TSIG aware
@@ -708,7 +709,7 @@ allow-update { key host1-host2. ;};
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2571722"></a>TKEY</h2></div></div></div>
+<a name="id2571725"></a>TKEY</h2></div></div></div>
 <p><span><strong class="command">TKEY</strong></span>
         is a mechanism for automatically generating a shared secret
         between two hosts.  There are several "modes" of
@@ -744,7 +745,7 @@ allow-update { key host1-host2. ;};
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2563989"></a>SIG(0)</h2></div></div></div>
+<a name="id2563992"></a>SIG(0)</h2></div></div></div>
 <p>
         <acronym class="acronym">BIND</acronym> 9 partially supports DNSSEC SIG(0)
             transaction signatures as specified in RFC 2535 and RFC 2931.
@@ -805,7 +806,7 @@ allow-update { key host1-host2. ;};
       </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2564057"></a>Generating Keys</h3></div></div></div>
+<a name="id2564060"></a>Generating Keys</h3></div></div></div>
 <p>
           The <span><strong class="command">dnssec-keygen</strong></span> program is used to
           generate keys.
@@ -861,7 +862,7 @@ allow-update { key host1-host2. ;};
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2572192"></a>Signing the Zone</h3></div></div></div>
+<a name="id2572195"></a>Signing the Zone</h3></div></div></div>
 <p>
           The <span><strong class="command">dnssec-signzone</strong></span> program is used
           to sign a zone.
@@ -903,7 +904,7 @@ allow-update { key host1-host2. ;};
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2572273"></a>Configuring Servers</h3></div></div></div>
+<a name="id2572276"></a>Configuring Servers</h3></div></div></div>
 <p>
           To enable <span><strong class="command">named</strong></span> to respond appropriately
           to DNS requests from DNSSEC aware clients,
@@ -1054,7 +1055,7 @@ options {
   from insecure to signed and back again. A secure zone can use
   either NSEC or NSEC3 chains.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2571894"></a>Converting from insecure to secure</h3></div></div></div></div>
+<a name="id2606801"></a>Converting from insecure to secure</h3></div></div></div></div>
 <p>Changing a zone from insecure to secure can be done in two
   ways: using a dynamic DNS update, or the 
   <span><strong class="command">auto-dnssec</strong></span> zone option.</p>
@@ -1080,7 +1081,7 @@ options {
   well. An NSEC chain will be generated as part of the initial
   signing process.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2571931"></a>Dynamic DNS update method</h3></div></div></div></div>
+<a name="id2563420"></a>Dynamic DNS update method</h3></div></div></div></div>
 <p>To insert the keys via dynamic update:</p>
 <pre class="screen">
         % nsupdate
@@ -1116,7 +1117,7 @@ options {
 <p>While the initial signing and NSEC/NSEC3 chain generation
   is happening, other updates are possible as well.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563502"></a>Fully automatic zone signing</h3></div></div></div></div>
+<a name="id2563457"></a>Fully automatic zone signing</h3></div></div></div></div>
 <p>To enable automatic signing, add the 
   <span><strong class="command">auto-dnssec</strong></span> option to the zone statement in 
   <code class="filename">named.conf</code>. 
@@ -1151,7 +1152,7 @@ options {
   configuration. If this has not been done, the configuration will
   fail.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563585"></a>Private-type records</h3></div></div></div></div>
+<a name="id2563675"></a>Private-type records</h3></div></div></div></div>
 <p>The state of the signing process is signaled by
   private-type records (with a default type value of 65534). When
   signing is complete, these records will have a nonzero value for
@@ -1192,12 +1193,12 @@ options {
 <p>
   </p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563622"></a>DNSKEY rollovers</h3></div></div></div></div>
+<a name="id2563713"></a>DNSKEY rollovers</h3></div></div></div></div>
 <p>As with insecure-to-secure conversions, rolling DNSSEC
   keys can be done in two ways: using a dynamic DNS update, or the 
   <span><strong class="command">auto-dnssec</strong></span> zone option.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563635"></a>Dynamic DNS update method</h3></div></div></div></div>
+<a name="id2563725"></a>Dynamic DNS update method</h3></div></div></div></div>
 <p> To perform key rollovers via dynamic update, you need to add
   the <code class="filename">K*</code> files for the new keys so that 
   <span><strong class="command">named</strong></span> can find them. You can then add the new
@@ -1219,7 +1220,7 @@ options {
   <span><strong class="command">named</strong></span> will clean out any signatures generated
   by the old key after the update completes.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563668"></a>Automatic key rollovers</h3></div></div></div></div>
+<a name="id2563758"></a>Automatic key rollovers</h3></div></div></div></div>
 <p>When a new key reaches its activation date (as set by
   <span><strong class="command">dnssec-keygen</strong></span> or <span><strong class="command">dnssec-settime</strong></span>),
   if the <span><strong class="command">auto-dnssec</strong></span> zone option is set to 
@@ -1234,27 +1235,27 @@ options {
   completes in 30 days, after which it will be safe to remove the
   old key from the DNSKEY RRset.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563694"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div>
+<a name="id2563785"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div>
 <p>Add the new NSEC3PARAM record via dynamic update. When the
   new NSEC3 chain has been generated, the NSEC3PARAM flag field
   will be zero. At this point you can remove the old NSEC3PARAM
   record. The old chain will be removed after the update request
   completes.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563704"></a>Converting from NSEC to NSEC3</h3></div></div></div></div>
+<a name="id2563795"></a>Converting from NSEC to NSEC3</h3></div></div></div></div>
 <p>To do this, you just need to add an NSEC3PARAM record. When
   the conversion is complete, the NSEC chain will have been removed
   and the NSEC3PARAM record will have a zero flag field. The NSEC3
   chain will be generated before the NSEC chain is
   destroyed.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563714"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div>
+<a name="id2563804"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div>
 <p>To do this, use <span><strong class="command">nsupdate</strong></span> to
   remove all NSEC3PARAM records with a zero flag
   field. The NSEC chain will be generated before the NSEC3 chain is
   removed.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563726"></a>Converting from secure to insecure</h3></div></div></div></div>
+<a name="id2563817"></a>Converting from secure to insecure</h3></div></div></div></div>
 <p>To convert a signed zone to unsigned using dynamic DNS,
   delete all the DNSKEY records from the zone apex using
   <span><strong class="command">nsupdate</strong></span>. All signatures, NSEC or NSEC3 chains,
@@ -1269,14 +1270,14 @@ options {
   <span><strong class="command">allow</strong></span> instead (or it will re-sign).
   </p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563832"></a>Periodic re-signing</h3></div></div></div></div>
+<a name="id2571842"></a>Periodic re-signing</h3></div></div></div></div>
 <p>In any secure zone which supports dynamic updates, named
   will periodically re-sign RRsets which have not been re-signed as
   a result of some update action. The signature lifetimes will be
   adjusted so as to spread the re-sign load over time rather than
   all at once.</p>
 <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title">
-<a name="id2563842"></a>NSEC3 and OPTOUT</h3></div></div></div></div>
+<a name="id2571851"></a>NSEC3 and OPTOUT</h3></div></div></div></div>
 <p>
   <span><strong class="command">named</strong></span> only supports creating new NSEC3 chains
   where all the NSEC3 records in the zone have the same OPTOUT
@@ -1298,7 +1299,7 @@ options {
   configuration files.</p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606220"></a>Validating Resolver</h3></div></div></div>
+<a name="id2606721"></a>Validating Resolver</h3></div></div></div>
 <p>To configure a validating resolver to use RFC 5011 to
     maintain a trust anchor, configure the trust anchor using a 
     <span><strong class="command">managed-keys</strong></span> statement. Information about
@@ -1309,7 +1310,7 @@ options {
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606243"></a>Authoritative Server</h3></div></div></div>
+<a name="id2606743"></a>Authoritative Server</h3></div></div></div>
 <p>To set up an authoritative zone for RFC 5011 trust anchor
     maintenance, generate two (or more) key signing keys (KSKs) for
     the zone. Sign the zone with one of them; this is the "active"
@@ -1383,7 +1384,7 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code><
   Debian Linux, Solaris x86 and Windows Server 2003.</p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606357"></a>Prerequisites</h3></div></div></div>
+<a name="id2608973"></a>Prerequisites</h3></div></div></div>
 <p>See the HSM vendor documentation for information about
     installing, initializing, testing and troubleshooting the
     HSM.</p>
@@ -1457,7 +1458,7 @@ $ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8l \
     when we configure BIND 9.</p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607136"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div>
+<a name="id2606953"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div>
 <p>The AEP Keyper is a highly secure key storage device,
       but does not provide hardware cryptographic acceleration. It
       can carry out cryptographic operations, but it is probably
@@ -1489,7 +1490,7 @@ $ <strong class="userinput"><code>./Configure linux-generic32 -m32 -pthread \
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607205"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div>
+<a name="id2607022"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div>
 <p>The SCA-6000 PKCS #11 provider is installed as a system
       library, libpkcs11. It is a true crypto accelerator, up to 4
       times faster than any CPU, so the flavor shall be
@@ -1533,12 +1534,12 @@ $ <strong class="userinput"><code>./Configure solaris64-x86_64-cc \
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607447"></a>Building BIND 9 with PKCS#11</h3></div></div></div>
+<a name="id2607196"></a>Building BIND 9 with PKCS#11</h3></div></div></div>
 <p>When building BIND 9, the location of the custom-built
     OpenSSL library must be specified via configure.</p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607456"></a>Configuring BIND 9 for Linux</h4></div></div></div>
+<a name="id2607205"></a>Configuring BIND 9 for Linux</h4></div></div></div>
 <p>To link with the PKCS #11 provider, threads must be
       enabled in the BIND 9 build.</p>
 <p>The PKCS #11 library for the AEP Keyper is currently
@@ -1554,7 +1555,7 @@ $ <strong class="userinput"><code>./configure CC="gcc -m32" --enable-threads \
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607486"></a>Configuring BIND 9 for Solaris</h4></div></div></div>
+<a name="id2607236"></a>Configuring BIND 9 for Solaris</h4></div></div></div>
 <p>To link with the PKCS #11 provider, threads must be
       enabled in the BIND 9 build.</p>
 <pre class="screen">
@@ -1577,7 +1578,7 @@ $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" --enable-thre
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607542"></a>PKCS #11 Tools</h3></div></div></div>
+<a name="id2607291"></a>PKCS #11 Tools</h3></div></div></div>
 <p>BIND 9 includes a minimal set of tools to operate the
     HSM, including 
     <span><strong class="command">pkcs11-keygen</strong></span> to generate a new key pair
@@ -1595,7 +1596,7 @@ $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" --enable-thre
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607573"></a>Using the HSM</h3></div></div></div>
+<a name="id2609029"></a>Using the HSM</h3></div></div></div>
 <p>First, we must set up the runtime environment so the
     OpenSSL and PKCS #11 libraries can be loaded:</p>
 <pre class="screen">
@@ -1683,7 +1684,7 @@ example.net.signed
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2609956"></a>Specifying the engine on the command line</h3></div></div></div>
+<a name="id2609978"></a>Specifying the engine on the command line</h3></div></div></div>
 <p>The OpenSSL engine can be specified in 
     <span><strong class="command">named</strong></span> and all of the BIND 
     <span><strong class="command">dnssec-*</strong></span> tools by using the "-E
@@ -1704,7 +1705,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2610002"></a>Running named with automatic zone re-signing</h3></div></div></div>
+<a name="id2610024"></a>Running named with automatic zone re-signing</h3></div></div></div>
 <p>If you want 
     <span><strong class="command">named</strong></span> to dynamically re-sign zones using HSM
     keys, and/or to to sign new records inserted via nsupdate, then
@@ -1740,7 +1741,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2572468"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div>
+<a name="id2572471"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div>
 <p>
         <acronym class="acronym">BIND</acronym> 9 fully supports all currently
         defined forms of IPv6 name to address and address to name
@@ -1778,7 +1779,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2572734"></a>Address Lookups Using AAAA Records</h3></div></div></div>
+<a name="id2572738"></a>Address Lookups Using AAAA Records</h3></div></div></div>
 <p>
           The IPv6 AAAA record is a parallel to the IPv4 A record,
           and, unlike the deprecated A6 record, specifies the entire
@@ -1797,7 +1798,7 @@ host            3600    IN      AAAA    2001:db8::1
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2572756"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div>
+<a name="id2572759"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div>
 <p>
           When looking up an address in nibble format, the address
           components are simply reversed, just as in IPv4, and
index a057825edcc869a6519dda59a2817ac22b33c776..7758019e705de05ae7ec5498f62a25911c2b50bb 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch05.html,v 1.89 2010/08/17 01:15:30 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch05.html,v 1.90 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572857">The Lightweight Resolver Library</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572860">The Lightweight Resolver Library</a></span></dt>
 <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt>
 </dl>
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2572857"></a>The Lightweight Resolver Library</h2></div></div></div>
+<a name="id2572860"></a>The Lightweight Resolver Library</h2></div></div></div>
 <p>
         Traditionally applications have been linked with a stub resolver
         library that sends recursive DNS queries to a local caching name
index d593215a737d28bd97b47567be70cc9876fadd40..2e06223d9f94c191c0fafe0fd545d66051aceb0e 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch06.html,v 1.265 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch06.html,v 1.266 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574267">Comment Syntax</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574270">Comment Syntax</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574921"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574924"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575111"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575114"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575402"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575419"><span><strong class="command">include</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575405"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575422"><span><strong class="command">include</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575443"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575466"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575625"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575751"><span><strong class="command">logging</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575446"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575469"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575560"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575754"><span><strong class="command">logging</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577886"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577960"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578024"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578068"><span><strong class="command">masters</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577821"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577963"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578027"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578071"><span><strong class="command">masters</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578083"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578086"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and
           Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and
             Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588725"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588747"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
             Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588933"><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588955"><span><strong class="command">trusted-keys</strong></span> Statement Definition
             and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589048"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589002"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition
             and Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589474"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589496"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span>
             Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591086"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591041"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594087">Zone File</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594041">Zone File</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596249">Discussion of MX Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596340">Discussion of MX Records</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597001">Inverse Mapping in IPv4</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597128">Other Zone File Directives</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597333"><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597024">Inverse Mapping in IPv4</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597219">Other Zone File Directives</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597424"><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt>
 <a name="address_match_lists"></a>Address Match Lists</h3></div></div></div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2574034"></a>Syntax</h4></div></div></div>
+<a name="id2574037"></a>Syntax</h4></div></div></div>
 <pre class="programlisting"><code class="varname">address_match_list</code> = address_match_list_element ;
   [<span class="optional"> address_match_list_element; ... </span>]
 <code class="varname">address_match_list_element</code> = [<span class="optional"> ! </span>] (ip_address [<span class="optional">/length</span>] |
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2574061"></a>Definition and Usage</h4></div></div></div>
+<a name="id2574065"></a>Definition and Usage</h4></div></div></div>
 <p>
             Address match lists are primarily used to determine access
             control for various server operations. They are also used in
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2574267"></a>Comment Syntax</h3></div></div></div>
+<a name="id2574270"></a>Comment Syntax</h3></div></div></div>
 <p>
           The <acronym class="acronym">BIND</acronym> 9 comment syntax allows for
           comments to appear
         </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2574282"></a>Syntax</h4></div></div></div>
+<a name="id2574285"></a>Syntax</h4></div></div></div>
 <p>
             </p>
 <pre class="programlisting">/* This is a <acronym class="acronym">BIND</acronym> comment as in C */</pre>
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2574312"></a>Definition and Usage</h4></div></div></div>
+<a name="id2574315"></a>Definition and Usage</h4></div></div></div>
 <p>
             Comments may appear anywhere that whitespace may appear in
             a <acronym class="acronym">BIND</acronym> configuration file.
       </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2574921"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2574924"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">acl</strong></span> acl-name {
     address_match_list
 };
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575111"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2575114"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">controls</strong></span> {
    [ inet ( ip_addr | * ) [ port ip_port ]
                 allow { <em class="replaceable"><code> address_match_list </code></em> }
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575402"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2575405"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">include</strong></span> <em class="replaceable"><code>filename</code></em>;</pre>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575419"></a><span><strong class="command">include</strong></span> Statement Definition and
+<a name="id2575422"></a><span><strong class="command">include</strong></span> Statement Definition and
           Usage</h3></div></div></div>
 <p>
           The <span><strong class="command">include</strong></span> statement inserts the
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575443"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2575446"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">key</strong></span> <em class="replaceable"><code>key_id</code></em> {
     algorithm <em class="replaceable"><code>string</code></em>;
     secret <em class="replaceable"><code>string</code></em>;
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575466"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2575469"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div>
 <p>
           The <span><strong class="command">key</strong></span> statement defines a shared
           secret key for use with TSIG (see <a href="Bv9ARM.ch04.html#tsig" title="TSIG">the section called &#8220;TSIG&#8221;</a>)
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575625"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2575560"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">logging</strong></span> {
    [ <span><strong class="command">channel</strong></span> <em class="replaceable"><code>channel_name</code></em> {
      ( <span><strong class="command">file</strong></span> <em class="replaceable"><code>path_name</code></em>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2575751"></a><span><strong class="command">logging</strong></span> Statement Definition and
+<a name="id2575754"></a><span><strong class="command">logging</strong></span> Statement Definition and
           Usage</h3></div></div></div>
 <p>
           The <span><strong class="command">logging</strong></span> statement configures a
         </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2575872"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div>
+<a name="id2575875"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div>
 <p>
             All log output goes to one or more <span class="emphasis"><em>channels</em></span>;
             you can make as many of them as you want.
@@ -1753,7 +1753,7 @@ category notify { null; };
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2577230"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div>
+<a name="id2577234"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div>
 <p>
             The <span><strong class="command">query-errors</strong></span> category is
             specifically intended for debugging purposes: To identify
@@ -1981,7 +1981,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2577886"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2577821"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div>
 <p>
            This is the grammar of the <span><strong class="command">lwres</strong></span>
           statement in the <code class="filename">named.conf</code> file:
@@ -1997,7 +1997,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2577960"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2577963"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div>
 <p>
           The <span><strong class="command">lwres</strong></span> statement configures the
           name
@@ -2048,7 +2048,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2578024"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2578027"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting">
 <span><strong class="command">masters</strong></span> <em class="replaceable"><code>name</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] { ( <em class="replaceable"><code>masters_list</code></em> | 
       <em class="replaceable"><code>ip_addr</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] [<span class="optional">key <em class="replaceable"><code>key</code></em></span>] ) ; [<span class="optional">...</span>] };
@@ -2056,7 +2056,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2578068"></a><span><strong class="command">masters</strong></span> Statement Definition and
+<a name="id2578071"></a><span><strong class="command">masters</strong></span> Statement Definition and
           Usage</h3></div></div></div>
 <p><span><strong class="command">masters</strong></span>
           lists allow for a common set of masters to be easily used by
@@ -2065,7 +2065,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2578083"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2578086"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div>
 <p>
           This is the grammar of the <span><strong class="command">options</strong></span>
           statement in the <code class="filename">named.conf</code> file:
@@ -2079,6 +2079,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
     [<span class="optional"> key-directory <em class="replaceable"><code>path_name</code></em>; </span>]
     [<span class="optional"> managed-keys-directory <em class="replaceable"><code>path_name</code></em>; </span>]
     [<span class="optional"> named-xfer <em class="replaceable"><code>path_name</code></em>; </span>]
+    [<span class="optional"> tkey-gssapi-keytab <em class="replaceable"><code>path_name</code></em>; </span>]
     [<span class="optional"> tkey-gssapi-credential <em class="replaceable"><code>principal</code></em>; </span>]
     [<span class="optional"> tkey-domain <em class="replaceable"><code>domainname</code></em>; </span>]
     [<span class="optional"> tkey-dhkey <em class="replaceable"><code>key_name</code></em> <em class="replaceable"><code>key_tag</code></em>; </span>]
@@ -2400,18 +2401,27 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <span><strong class="command">named-xfer</strong></span> program is needed;
                 its functionality is built into the name server.
               </p></dd>
+<dt><span class="term"><span><strong class="command">tkey-gssapi-keytab</strong></span></span></dt>
+<dd><p>
+                The KRB5 keytab file to use for GSS-TSIG updates. If
+                this option is set and tkey-gssapi-credential is not
+                set, then updates will be allowed with any key
+                matching a principal in the specified keytab.
+              </p></dd>
 <dt><span class="term"><span><strong class="command">tkey-gssapi-credential</strong></span></span></dt>
 <dd><p>
                 The security credential with which the server should
                 authenticate keys requested by the GSS-TSIG protocol.
                 Currently only Kerberos 5 authentication is available
-                and the credential is a Kerberos principal which
-                the server can acquire through the default system
-                key file, normally <code class="filename">/etc/krb5.keytab</code>.
-                Normally this principal is of the form
-                "<strong class="userinput"><code>DNS/</code></strong><code class="varname">server.domain</code>".
-                To use GSS-TSIG, <span><strong class="command">tkey-domain</strong></span>
-                must also be set.
+                and the credential is a Kerberos principal which the
+                server can acquire through the default system key
+                file, normally <code class="filename">/etc/krb5.keytab</code>.
+                The location keytab file can be overridden using the
+                tkey-gssapi-keytab option. Normally this principal is
+                of the form "<strong class="userinput"><code>DNS/</code></strong><code class="varname">server.domain</code>".
+                To use GSS-TSIG, <span><strong class="command">tkey-domain</strong></span> must
+                also be set if a specific keytab is not set with
+                tkey-gssapi-keytab.
               </p></dd>
 <dt><span class="term"><span><strong class="command">tkey-domain</strong></span></span></dt>
 <dd><p>
@@ -2428,7 +2438,8 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 should be the server's domain name, or an otherwise
                 non-existent subdomain like
                 "_tkey.<code class="varname">domainname</code>".  If you are
-                using GSS-TSIG, this variable must be defined.
+                using GSS-TSIG, this variable must be defined, unless
+                you specify a specific keytab using tkey-gssapi-keytab.
               </p></dd>
 <dt><span class="term"><span><strong class="command">tkey-dhkey</strong></span></span></dt>
 <dd><p>
@@ -3604,7 +3615,7 @@ options {
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2583384"></a>Forwarding</h4></div></div></div>
+<a name="id2583406"></a>Forwarding</h4></div></div></div>
 <p>
             The forwarding facility can be used to create a large site-wide
             cache on a few servers, reducing traffic over links to external
@@ -3648,7 +3659,7 @@ options {
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2583443"></a>Dual-stack Servers</h4></div></div></div>
+<a name="id2583533"></a>Dual-stack Servers</h4></div></div></div>
 <p>
             Dual-stack servers are used as servers of last resort to work
             around
@@ -3851,7 +3862,7 @@ options {
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2584038"></a>Interfaces</h4></div></div></div>
+<a name="id2584129"></a>Interfaces</h4></div></div></div>
 <p>
             The interfaces and ports that the server will answer queries
             from may be specified using the <span><strong class="command">listen-on</strong></span> option. <span><strong class="command">listen-on</strong></span> takes
@@ -4303,7 +4314,7 @@ avoid-v6-udp-ports {};
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2585309"></a>UDP Port Lists</h4></div></div></div>
+<a name="id2585264"></a>UDP Port Lists</h4></div></div></div>
 <p>
             <span><strong class="command">use-v4-udp-ports</strong></span>,
             <span><strong class="command">avoid-v4-udp-ports</strong></span>,
@@ -4345,7 +4356,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2585369"></a>Operating System Resource Limits</h4></div></div></div>
+<a name="id2585323"></a>Operating System Resource Limits</h4></div></div></div>
 <p>
             The server's usage of many system resources can be limited.
             Scaled values are allowed when specifying resource limits.  For
@@ -4507,7 +4518,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2585655"></a>Periodic Task Intervals</h4></div></div></div>
+<a name="id2585746"></a>Periodic Task Intervals</h4></div></div></div>
 <div class="variablelist"><dl>
 <dt><span class="term"><span><strong class="command">cleaning-interval</strong></span></span></dt>
 <dd><p>
@@ -5322,7 +5333,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2587836"></a>Content Filtering</h4></div></div></div>
+<a name="id2587927"></a>Content Filtering</h4></div></div></div>
 <p>
             <acronym class="acronym">BIND</acronym> 9 provides the ability to filter
             out DNS responses from external DNS servers containing
@@ -5652,7 +5663,7 @@ deny-answer-aliases { "example.net"; };
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2588725"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<a name="id2588747"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and
             Usage</h3></div></div></div>
 <p>
           The <span><strong class="command">statistics-channels</strong></span> statement
@@ -5712,7 +5723,7 @@ deny-answer-aliases { "example.net"; };
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2588933"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<a name="id2588955"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition
             and Usage</h3></div></div></div>
 <p>
             The <span><strong class="command">trusted-keys</strong></span> statement defines
@@ -5752,7 +5763,7 @@ deny-answer-aliases { "example.net"; };
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2589048"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2589002"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div>
 <pre class="programlisting"><span><strong class="command">managed-keys</strong></span> {
     <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ;
     [<span class="optional"> <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; [<span class="optional">...</span>]</span>]
@@ -5887,7 +5898,7 @@ deny-answer-aliases { "example.net"; };
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2589474"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2589496"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div>
 <p>
             The <span><strong class="command">view</strong></span> statement is a powerful
             feature
@@ -6175,10 +6186,10 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2591086"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2591041"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2591094"></a>Zone Types</h4></div></div></div>
+<a name="id2591048"></a>Zone Types</h4></div></div></div>
 <div class="informaltable"><table border="1">
 <colgroup>
 <col>
@@ -6438,7 +6449,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2591502"></a>Class</h4></div></div></div>
+<a name="id2591525"></a>Class</h4></div></div></div>
 <p>
               The zone's name may optionally be followed by a class. If
               a class is not specified, class <code class="literal">IN</code> (for <code class="varname">Internet</code>),
@@ -6460,7 +6471,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2591536"></a>Zone Options</h4></div></div></div>
+<a name="id2591626"></a>Zone Options</h4></div></div></div>
 <div class="variablelist"><dl>
 <dt><span class="term"><span><strong class="command">allow-notify</strong></span></span></dt>
 <dd><p>
@@ -7214,7 +7225,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2594087"></a>Zone File</h2></div></div></div>
+<a name="id2594041"></a>Zone File</h2></div></div></div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="types_of_resource_records_and_when_to_use_them"></a>Types of Resource Records and When to Use Them</h3></div></div></div>
@@ -7227,7 +7238,7 @@ example.com. NS ns2.example.net.
           </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2594105"></a>Resource Records</h4></div></div></div>
+<a name="id2594059"></a>Resource Records</h4></div></div></div>
 <p>
               A domain name identifies a node.  Each node has a set of
               resource information, which may be empty.  The set of resource
@@ -7964,7 +7975,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2595729"></a>Textual expression of RRs</h4></div></div></div>
+<a name="id2595751"></a>Textual expression of RRs</h4></div></div></div>
 <p>
               RRs are represented in binary form in the packets of the DNS
               protocol, and are usually represented in highly encoded form
@@ -8167,7 +8178,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2596249"></a>Discussion of MX Records</h3></div></div></div>
+<a name="id2596340"></a>Discussion of MX Records</h3></div></div></div>
 <p>
             As described above, domain servers store information as a
             series of resource records, each of which contains a particular
@@ -8423,7 +8434,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2597001"></a>Inverse Mapping in IPv4</h3></div></div></div>
+<a name="id2597024"></a>Inverse Mapping in IPv4</h3></div></div></div>
 <p>
             Reverse name resolution (that is, translation from IP address
             to name) is achieved by means of the <span class="emphasis"><em>in-addr.arpa</em></span> domain
@@ -8484,7 +8495,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2597128"></a>Other Zone File Directives</h3></div></div></div>
+<a name="id2597219"></a>Other Zone File Directives</h3></div></div></div>
 <p>
             The Master File Format was initially defined in RFC 1035 and
             has subsequently been extended. While the Master File Format
@@ -8499,7 +8510,7 @@ example.com. NS ns2.example.net.
           </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2597150"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div>
+<a name="id2597241"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div>
 <p>
               When used in the label (or name) field, the asperand or
               at-sign (@) symbol represents the current origin.
@@ -8510,7 +8521,7 @@ example.com. NS ns2.example.net.
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2597166"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div>
+<a name="id2597257"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div>
 <p>
               Syntax: <span><strong class="command">$ORIGIN</strong></span>
               <em class="replaceable"><code>domain-name</code></em>
@@ -8539,7 +8550,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2597227"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div>
+<a name="id2597318"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div>
 <p>
               Syntax: <span><strong class="command">$INCLUDE</strong></span>
               <em class="replaceable"><code>filename</code></em>
@@ -8575,7 +8586,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2597297"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div>
+<a name="id2597387"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div>
 <p>
               Syntax: <span><strong class="command">$TTL</strong></span>
               <em class="replaceable"><code>default-ttl</code></em>
@@ -8594,7 +8605,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2597333"></a><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div>
+<a name="id2597424"></a><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div>
 <p>
             Syntax: <span><strong class="command">$GENERATE</strong></span>
             <em class="replaceable"><code>range</code></em>
@@ -9018,7 +9029,7 @@ HOST-127.EXAMPLE. MX 0 .
           </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2598423"></a>Name Server Statistics Counters</h4></div></div></div>
+<a name="id2598445"></a>Name Server Statistics Counters</h4></div></div></div>
 <div class="informaltable"><table border="1">
 <colgroup>
 <col>
@@ -9575,7 +9586,7 @@ HOST-127.EXAMPLE. MX 0 .
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2599896"></a>Zone Maintenance Statistics Counters</h4></div></div></div>
+<a name="id2599987"></a>Zone Maintenance Statistics Counters</h4></div></div></div>
 <div class="informaltable"><table border="1">
 <colgroup>
 <col>
@@ -9729,7 +9740,7 @@ HOST-127.EXAMPLE. MX 0 .
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2600279"></a>Resolver Statistics Counters</h4></div></div></div>
+<a name="id2600370"></a>Resolver Statistics Counters</h4></div></div></div>
 <div class="informaltable"><table border="1">
 <colgroup>
 <col>
@@ -10112,7 +10123,7 @@ HOST-127.EXAMPLE. MX 0 .
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2601369"></a>Socket I/O Statistics Counters</h4></div></div></div>
+<a name="id2601460"></a>Socket I/O Statistics Counters</h4></div></div></div>
 <p>
               Socket I/O statistics counters are defined per socket
               types, which are
@@ -10267,7 +10278,7 @@ HOST-127.EXAMPLE. MX 0 .
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2601811"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div>
+<a name="id2601901"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div>
 <p>
               Most statistics counters that were available
               in <span><strong class="command">BIND</strong></span> 8 are also supported in
index 371418f599a97422e42ee834501c4e29eec9a087..9067d1220124f178ffb1e948b061f73847798ea7 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch07.html,v 1.234 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch07.html,v 1.235 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <p><b>Table of Contents</b></p>
 <dl>
 <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602121"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602144"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602202">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602262">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602225">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602284">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt>
 </dl>
@@ -122,7 +122,7 @@ zone "example.com" {
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602121"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span>
+<a name="id2602144"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span>
 </h2></div></div></div>
 <p>
           On UNIX servers, it is possible to run <acronym class="acronym">BIND</acronym>
@@ -148,7 +148,7 @@ zone "example.com" {
         </p>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2602202"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div>
+<a name="id2602225"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div>
 <p>
             In order for a <span><strong class="command">chroot</strong></span> environment
             to
@@ -176,7 +176,7 @@ zone "example.com" {
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2602262"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div>
+<a name="id2602284"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div>
 <p>
             Prior to running the <span><strong class="command">named</strong></span> daemon,
             use
index 49ece5c362768d4c19bc2703e89af5804207ad3c..631c6916df7882579376b76f16eea322621ef041 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch08.html,v 1.234 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch08.html,v 1.235 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602410">Common Problems</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602416">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602427">Incrementing and Changing the Serial Number</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602444">Where Can I Get Help?</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602433">Common Problems</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602438">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602450">Incrementing and Changing the Serial Number</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602535">Where Can I Get Help?</a></span></dt>
 </dl>
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602410"></a>Common Problems</h2></div></div></div>
+<a name="id2602433"></a>Common Problems</h2></div></div></div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2602416"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div>
+<a name="id2602438"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div>
 <p>
             The best solution to solving installation and
             configuration issues is to take preventative measures by setting
@@ -68,7 +68,7 @@
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602427"></a>Incrementing and Changing the Serial Number</h2></div></div></div>
+<a name="id2602450"></a>Incrementing and Changing the Serial Number</h2></div></div></div>
 <p>
           Zone serial numbers are just numbers &#8212; they aren't
           date related.  A lot of people set them to a number that
@@ -95,7 +95,7 @@
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602444"></a>Where Can I Get Help?</h2></div></div></div>
+<a name="id2602535"></a>Where Can I Get Help?</h2></div></div></div>
 <p>
           The Internet Systems Consortium
           (<acronym class="acronym">ISC</acronym>) offers a wide range
index e8bfa9757b8aa0dd033e539a56fe25a95607f410..29c8c9daff3b7d82832fea72d8303a8278aca2db 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.ch09.html,v 1.238 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch09.html,v 1.239 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602574">Acknowledgments</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602597">Acknowledgments</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602746">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602769">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606026">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2605980">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606509">Prerequisite</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606519">Compilation</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606544">Installation</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607598">Known Defects/Restrictions</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607675">The dns.conf File</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607702">Sample Applications</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608538">Library References</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607965">Prerequisite</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607975">Compilation</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606361">Installation</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606392">Known Defects/Restrictions</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607425">The dns.conf File</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607451">Sample Applications</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608697">Library References</a></span></dt>
 </dl></dd>
 </dl>
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602574"></a>Acknowledgments</h2></div></div></div>
+<a name="id2602597"></a>Acknowledgments</h2></div></div></div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="historical_dns_information"></a>A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym>
 </div>
 <div class="sect1" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2602746"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div>
+<a name="id2602769"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="ipv6addresses"></a>IPv6 addresses (AAAA)</h3></div></div></div>
           </p>
 <div class="bibliography">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2602934"></a>Bibliography</h4></div></div></div>
+<a name="id2602956"></a>Bibliography</h4></div></div></div>
 <div class="bibliodiv">
 <h3 class="title">Standards</h3>
 <div class="biblioentry">
-<a name="id2603013"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p>
+<a name="id2602967"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603036"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p>
+<a name="id2602990"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603060"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Implementation and
+<a name="id2603014"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Implementation and
                   Specification</i>. </span><span class="pubdate">November 1987. </span></p>
 </div>
 </div>
 <h3 class="title">
 <a name="proposed_standards"></a>Proposed Standards</h3>
 <div class="biblioentry">
-<a name="id2603096"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym>
+<a name="id2603050"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym>
                   Specification</i>. </span><span class="pubdate">July 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603123"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym>
+<a name="id2603077"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym>
                   Queries</i>. </span><span class="pubdate">March 1998. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603148"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2603102"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603173"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2603127"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603196"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p>
+<a name="id2603150"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603252"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p>
+<a name="id2603206"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603278"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p>
+<a name="id2603233"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603305"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p>
+<a name="id2603259"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603367"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2603321"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603397"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2603351"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603427"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p>
+<a name="id2603381"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603453"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret
+<a name="id2603408"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret
                        Key Transaction Authentication for DNS
                        (GSS-TSIG)</i>. </span><span class="pubdate">October 2003. </span></p>
 </div>
 <h3 class="title">
 <acronym class="acronym">DNS</acronym> Security Proposed Standards</h3>
 <div class="biblioentry">
-<a name="id2603536"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p>
+<a name="id2603490"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603562"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p>
+<a name="id2603516"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603598"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p>
+<a name="id2603553"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603664"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
+<a name="id2603618"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603729"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS
+<a name="id2603683"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS
                        Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
 </div>
 </div>
 <h3 class="title">Other Important RFCs About <acronym class="acronym">DNS</acronym>
                 Implementation</h3>
 <div class="biblioentry">
-<a name="id2603802"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely
+<a name="id2603756"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely
                   Deployed <acronym class="acronym">DNS</acronym> Software.</i>. </span><span class="pubdate">October 1993. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603828"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation
+<a name="id2603782"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation
                   Errors and Suggested Fixes</i>. </span><span class="pubdate">October 1993. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603896"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2603850"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2603931"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym>
+<a name="id2603885"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym>
                 Queries for IPv6 Addresses</i>. </span><span class="pubdate">May 2005. </span></p>
 </div>
 </div>
 <div class="bibliodiv">
 <h3 class="title">Resource Record Types</h3>
 <div class="biblioentry">
-<a name="id2603977"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p>
+<a name="id2603931"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604035"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p>
+<a name="id2603989"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604072"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using
+<a name="id2604026"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using
                   the Domain Name System</i>. </span><span class="pubdate">June 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604107"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the
+<a name="id2604061"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the
                   Domain
                   Name System</i>. </span><span class="pubdate">January 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604162"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the
+<a name="id2604184"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the
                   Location of
                   Services.</i>. </span><span class="pubdate">October 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604337"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to
+<a name="id2604222"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to
                   Distribute MIXER
                   Conformant Global Address Mapping</i>. </span><span class="pubdate">January 1998. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604362"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p>
+<a name="id2604316"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604388"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2604342"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604414"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2604369"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604441"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2604395"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604481"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2604435"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604510"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2604465"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604540"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p>
+<a name="id2604494"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604583"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2604537"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604616"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p>
+<a name="id2604570"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604643"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p>
+<a name="id2604597"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604666"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP
+<a name="id2604620"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP
                   version 6</i>. </span><span class="pubdate">October 2003. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604724"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p>
+<a name="id2604678"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p>
 </div>
 </div>
 <div class="bibliodiv">
 <h3 class="title">
 <acronym class="acronym">DNS</acronym> and the Internet</h3>
 <div class="biblioentry">
-<a name="id2604756"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names
+<a name="id2604710"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names
                   and Other Types</i>. </span><span class="pubdate">April 1989. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604781"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and
+<a name="id2604736"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and
                   Support</i>. </span><span class="pubdate">October 1989. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604804"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p>
+<a name="id2604758"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604827"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p>
+<a name="id2604781"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604873"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p>
+<a name="id2604827"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604897"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2604851"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p>
 </div>
 </div>
 <div class="bibliodiv">
 <h3 class="title">
 <acronym class="acronym">DNS</acronym> Operations</h3>
 <div class="biblioentry">
-<a name="id2604954"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p>
+<a name="id2604908"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2604978"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File
+<a name="id2604932"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File
                   Configuration Errors</i>. </span><span class="pubdate">October 1993. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605004"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and
+<a name="id2604958"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and
                   Configuration Errors</i>. </span><span class="pubdate">February 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605031"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p>
+<a name="id2604985"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605067"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for
+<a name="id2605021"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for
                   Network Services.</i>. </span><span class="pubdate">October 1997. </span></p>
 </div>
 </div>
 <div class="bibliodiv">
 <h3 class="title">Internationalized Domain Names</h3>
 <div class="biblioentry">
-<a name="id2605113"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names,
+<a name="id2605067"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names,
                        and the Other Internet protocols</i>. </span><span class="pubdate">May 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605145"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
+<a name="id2605099"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605191"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p>
+<a name="id2605145"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605226"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode
+<a name="id2605180"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode
                        for Internationalized Domain Names in
                        Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
 </div>
                 </p>
 </div>
 <div class="biblioentry">
-<a name="id2605271"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String
+<a name="id2605225"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String
                   Attributes</i>. </span><span class="pubdate">May 1993. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605293"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p>
+<a name="id2605248"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605319"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load
+<a name="id2605273"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load
                   Balancing</i>. </span><span class="pubdate">April 1995. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605345"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p>
+<a name="id2605299"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605368"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p>
+<a name="id2605322"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605414"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p>
+<a name="id2605368"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605437"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p>
+<a name="id2605392"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605464"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via
+<a name="id2605418"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via
                        Shared Unicast Addresses</i>. </span><span class="pubdate">April 2002. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605490"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p>
+<a name="id2605444"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p>
 </div>
 </div>
 <div class="bibliodiv">
 <h3 class="title">Obsolete and Unimplemented Experimental RFC</h3>
 <div class="biblioentry">
-<a name="id2605533"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical
+<a name="id2605488"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical
                   Location</i>. </span><span class="pubdate">November 1994. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605591"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p>
+<a name="id2605545"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605618"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation
+<a name="id2605572"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation
                        and Renumbering</i>. </span><span class="pubdate">July 2000. </span></p>
 </div>
 </div>
                 </p>
 </div>
 <div class="biblioentry">
-<a name="id2605666"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p>
+<a name="id2605620"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605705"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p>
+<a name="id2605659"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605732"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2605686"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605762"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC)
+<a name="id2605716"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC)
                        Signing Authority</i>. </span><span class="pubdate">November 2000. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605787"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p>
+<a name="id2605741"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605814"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p>
+<a name="id2605768"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605850"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p>
+<a name="id2605804"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605886"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p>
+<a name="id2605841"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605913"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p>
+<a name="id2605867"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605940"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record
+<a name="id2605894"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record
                       (RR) Secure Entry Point (SEP) Flag</i>. </span><span class="pubdate">April 2004. </span></p>
 </div>
 <div class="biblioentry">
-<a name="id2605985"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p>
+<a name="id2605939"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606026"></a>Other Documents About <acronym class="acronym">BIND</acronym>
+<a name="id2605980"></a>Other Documents About <acronym class="acronym">BIND</acronym>
 </h3></div></div></div>
 <p></p>
 <div class="bibliography">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2606036"></a>Bibliography</h4></div></div></div>
+<a name="id2605990"></a>Bibliography</h4></div></div></div>
 <div class="biblioentry">
-<a name="id2606038"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright Â© 1998 Sebastopol, CA: O'Reilly and Associates. </span></p>
+<a name="id2605992"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright Â© 1998 Sebastopol, CA: O'Reilly and Associates. </span></p>
 </div>
 </div>
 </div>
 </ul></div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606509"></a>Prerequisite</h3></div></div></div>
+<a name="id2607965"></a>Prerequisite</h3></div></div></div>
 <p>GNU make is required to build the export libraries (other
   part of BIND 9 can still be built with other types of make). In
   the reminder of this document, "make" means GNU make. Note that
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606519"></a>Compilation</h3></div></div></div>
+<a name="id2607975"></a>Compilation</h3></div></div></div>
 <pre class="screen">
 $ <strong class="userinput"><code>./configure --enable-exportlib <em class="replaceable"><code>[other flags]</code></em></code></strong>
 $ <strong class="userinput"><code>make</code></strong>
@@ -672,7 +672,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2606544"></a>Installation</h3></div></div></div>
+<a name="id2606361"></a>Installation</h3></div></div></div>
 <pre class="screen">
 $ <strong class="userinput"><code>cd lib/export</code></strong>
 $ <strong class="userinput"><code>make install</code></strong>
@@ -694,7 +694,7 @@ $ <strong class="userinput"><code>make install</code></strong>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607598"></a>Known Defects/Restrictions</h3></div></div></div>
+<a name="id2606392"></a>Known Defects/Restrictions</h3></div></div></div>
 <div class="itemizedlist"><ul type="disc">
 <li><p>Currently, win32 is not supported for the export
       library. (Normal BIND 9 application can be built as
@@ -734,7 +734,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607675"></a>The dns.conf File</h3></div></div></div>
+<a name="id2607425"></a>The dns.conf File</h3></div></div></div>
 <p>The IRS library supports an "advanced" configuration file
   related to the DNS library for configuration parameters that
   would be beyond the capability of the
@@ -752,14 +752,14 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2607702"></a>Sample Applications</h3></div></div></div>
+<a name="id2607451"></a>Sample Applications</h3></div></div></div>
 <p>Some sample application programs using this API are
   provided for reference. The following is a brief description of
   these applications.
   </p>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607710"></a>sample: a simple stub resolver utility</h4></div></div></div>
+<a name="id2607460"></a>sample: a simple stub resolver utility</h4></div></div></div>
 <p>
   It sends a query of a given name (of a given optional RR type) to a
   specified recursive server, and prints the result as a list of
@@ -823,7 +823,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607801"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div>
+<a name="id2607550"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div>
 <p>
   Similar to "sample", but accepts a list
   of (query) domain names as a separate file and resolves the names
@@ -864,7 +864,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607854"></a>sample-request: a simple DNS transaction client</h4></div></div></div>
+<a name="id2607604"></a>sample-request: a simple DNS transaction client</h4></div></div></div>
 <p>
   It sends a query to a specified server, and
   prints the response with minimal processing. It doesn't act as a
@@ -905,7 +905,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607918"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div>
+<a name="id2607668"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div>
 <p>
   This is a test program
   to check getaddrinfo() and getnameinfo() behavior. It takes a
@@ -922,7 +922,7 @@ $ <strong class="userinput"><code>make</code></strong>
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2607933"></a>sample-update: a simple dynamic update client program</h4></div></div></div>
+<a name="id2607683"></a>sample-update: a simple dynamic update client program</h4></div></div></div>
 <p>
   It accepts a single update command as a
   command-line argument, sends an update request message to the
@@ -1017,7 +1017,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm
 </div>
 <div class="sect3" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="id2608474"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div>
+<a name="id2608565"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div>
 <p>
   It checks a set
   of domains to see the name servers of the domains behave
@@ -1074,7 +1074,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm
 </div>
 <div class="sect2" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id2608538"></a>Library References</h3></div></div></div>
+<a name="id2608697"></a>Library References</h3></div></div></div>
 <p>As of this writing, there is no formal "manual" of the
   libraries, except this document, header files (some of them
   provide pretty detailed explanations), and sample application
index 4a8332343c599b6e9ceca0e7dc96395148e66bef..b4ce4334680bf54e60580fda2ef4c2750058f566 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: Bv9ARM.html,v 1.255 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: Bv9ARM.html,v 1.256 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570825">Split DNS</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570843">Example split DNS setup</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570828">Split DNS</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570846">Example split DNS setup</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571345">Generate Shared Keys for Each Pair of Hosts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571555">Copying the Shared Secret to Both Machines</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571565">Informing the Servers of the Key's Existence</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571602">Instructing the Server to Use the Key</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571659">TSIG Key Based Access Control</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571708">Errors</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571348">Generate Shared Keys for Each Pair of Hosts</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571558">Copying the Shared Secret to Both Machines</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571569">Informing the Servers of the Key's Existence</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571605">Instructing the Server to Use the Key</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571662">TSIG Key Based Access Control</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571712">Errors</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571722">TKEY</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563989">SIG(0)</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571725">TKEY</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563992">SIG(0)</a></span></dt>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564057">Generating Keys</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572192">Signing the Zone</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572273">Configuring Servers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564060">Generating Keys</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572195">Signing the Zone</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572276">Configuring Servers</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571894">Converting from insecure to secure</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571931">Dynamic DNS update method</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563502">Fully automatic zone signing</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563585">Private-type records</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563622">DNSKEY rollovers</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563635">Dynamic DNS update method</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563668">Automatic key rollovers</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563694">NSEC3PARAM rollovers via UPDATE</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563704">Converting from NSEC to NSEC3</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563714">Converting from NSEC3 to NSEC</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563726">Converting from secure to insecure</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563832">Periodic re-signing</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563842">NSEC3 and OPTOUT</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606801">Converting from insecure to secure</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563420">Dynamic DNS update method</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563457">Fully automatic zone signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563675">Private-type records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563713">DNSKEY rollovers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563725">Dynamic DNS update method</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563758">Automatic key rollovers</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563785">NSEC3PARAM rollovers via UPDATE</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563795">Converting from NSEC to NSEC3</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563804">Converting from NSEC3 to NSEC</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563817">Converting from secure to insecure</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571842">Periodic re-signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571851">NSEC3 and OPTOUT</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606220">Validating Resolver</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606243">Authoritative Server</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606721">Validating Resolver</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606743">Authoritative Server</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606357">Prerequisites</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607447">Building BIND 9 with PKCS#11</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607542">PKCS #11 Tools</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607573">Using the HSM</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609956">Specifying the engine on the command line</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610002">Running named with automatic zone re-signing</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608973">Prerequisites</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607196">Building BIND 9 with PKCS#11</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607291">PKCS #11 Tools</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609029">Using the HSM</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609978">Specifying the engine on the command line</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2610024">Running named with automatic zone re-signing</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572468">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572471">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572734">Address Lookups Using AAAA Records</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572756">Address to Name Lookups Using Nibble Format</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572738">Address Lookups Using AAAA Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572759">Address to Name Lookups Using Nibble Format</a></span></dt>
 </dl></dd>
 </dl></dd>
 <dt><span class="chapter"><a href="Bv9ARM.ch05.html">5. The <acronym class="acronym">BIND</acronym> 9 Lightweight Resolver</a></span></dt>
 <dd><dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572857">The Lightweight Resolver Library</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572860">The Lightweight Resolver Library</a></span></dt>
 <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt>
 </dl></dd>
 <dt><span class="chapter"><a href="Bv9ARM.ch06.html">6. <acronym class="acronym">BIND</acronym> 9 Configuration Reference</a></span></dt>
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574267">Comment Syntax</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574270">Comment Syntax</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574921"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574924"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575111"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575114"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575402"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575419"><span><strong class="command">include</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575405"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575422"><span><strong class="command">include</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575443"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575466"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575625"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575751"><span><strong class="command">logging</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575446"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575469"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575560"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575754"><span><strong class="command">logging</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577886"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577960"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578024"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578068"><span><strong class="command">masters</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577821"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577963"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578027"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578071"><span><strong class="command">masters</strong></span> Statement Definition and
           Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578083"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578086"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and
           Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and
             Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588725"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588747"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
             Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588933"><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588955"><span><strong class="command">trusted-keys</strong></span> Statement Definition
             and Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589048"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589002"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition
             and Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589474"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589496"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span>
             Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591086"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591041"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
 </dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594087">Zone File</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594041">Zone File</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596249">Discussion of MX Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596340">Discussion of MX Records</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597001">Inverse Mapping in IPv4</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597128">Other Zone File Directives</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597333"><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597024">Inverse Mapping in IPv4</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597219">Other Zone File Directives</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597424"><acronym class="acronym">BIND</acronym> Master File Extension: the  <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt>
 <dt><span class="chapter"><a href="Bv9ARM.ch07.html">7. <acronym class="acronym">BIND</acronym> 9 Security Considerations</a></span></dt>
 <dd><dl>
 <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602121"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602144"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602202">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602262">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602225">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602284">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt>
 </dl></dd>
 <dt><span class="chapter"><a href="Bv9ARM.ch08.html">8. Troubleshooting</a></span></dt>
 <dd><dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602410">Common Problems</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602416">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602427">Incrementing and Changing the Serial Number</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602444">Where Can I Get Help?</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602433">Common Problems</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602438">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602450">Incrementing and Changing the Serial Number</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602535">Where Can I Get Help?</a></span></dt>
 </dl></dd>
 <dt><span class="appendix"><a href="Bv9ARM.ch09.html">A. Appendices</a></span></dt>
 <dd><dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602574">Acknowledgments</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602597">Acknowledgments</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602746">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602769">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
 <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt>
 <dd><dl>
 <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt>
 <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606026">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2605980">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
 </dl></dd>
 <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt>
 <dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606509">Prerequisite</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606519">Compilation</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606544">Installation</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607598">Known Defects/Restrictions</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607675">The dns.conf File</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607702">Sample Applications</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608538">Library References</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607965">Prerequisite</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607975">Compilation</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606361">Installation</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606392">Known Defects/Restrictions</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607425">The dns.conf File</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607451">Sample Applications</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608697">Library References</a></span></dt>
 </dl></dd>
 </dl></dd>
 <dt><span class="reference"><a href="Bv9ARM.ch10.html">I. Manual pages</a></span></dt>
index 80377b67cef53d29ff10fb03d3a40db028380118..5d1fe71aaebfcbf5c142a71eb85fc55bf2a1d293 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.arpaname.html,v 1.24 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: man.arpaname.html,v 1.25 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <div class="cmdsynopsis"><p><code class="command">arpaname</code>  {<em class="replaceable"><code>ipaddress </code></em>...}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2647180"></a><h2>DESCRIPTION</h2>
+<a name="id2617234"></a><h2>DESCRIPTION</h2>
 <p>
       <span><strong class="command">arpaname</strong></span> translates IP addresses (IPv4 and
       IPv6) to the corresponding IN-ADDR.ARPA or IP6.ARPA names.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2647195"></a><h2>SEE ALSO</h2>
+<a name="id2617249"></a><h2>SEE ALSO</h2>
 <p>
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2647209"></a><h2>AUTHOR</h2>
+<a name="id2617262"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index b57c60e8cfb08db52b32566500ba81c8e9c4630c..f6272eec7ea057296d8913a873200711490f04a6 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.ddns-confgen.html,v 1.60 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.ddns-confgen.html,v 1.61 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">ddns-confgen</code>  [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [ -s <em class="replaceable"><code>name</code></em>  |   -z <em class="replaceable"><code>zone</code></em> ] [<code class="option">-q</code>] [name]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2642493"></a><h2>DESCRIPTION</h2>
+<a name="id2642038"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">ddns-confgen</strong></span>
       generates a key for use by <span><strong class="command">nsupdate</strong></span>
       and <span><strong class="command">named</strong></span>.  It simplifies configuration
@@ -77,7 +77,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2642581"></a><h2>OPTIONS</h2>
+<a name="id2642125"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2643123"></a><h2>SEE ALSO</h2>
+<a name="id2643145"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">nsupdate</span>(1)</span>,
       <span class="citerefentry"><span class="refentrytitle">named.conf</span>(5)</span>,
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649169"></a><h2>AUTHOR</h2>
+<a name="id2643184"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index b052c46c3c9af030ea89c95e712ba2bb00d8fcb0..bef3ec10eec40e62108f7c94465ec53dd66261d8 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dig.html,v 1.154 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.dig.html,v 1.155 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -52,7 +52,7 @@
 <div class="cmdsynopsis"><p><code class="command">dig</code>  [global-queryopt...] [query...]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2609252"></a><h2>DESCRIPTION</h2>
+<a name="id2608523"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dig</strong></span>
       (domain information groper) is a flexible tool
       for interrogating DNS name servers.  It performs DNS lookups and
@@ -98,7 +98,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2609347"></a><h2>SIMPLE USAGE</h2>
+<a name="id2608823"></a><h2>SIMPLE USAGE</h2>
 <p>
       A typical invocation of <span><strong class="command">dig</strong></span> looks like:
       </p>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2609526"></a><h2>OPTIONS</h2>
+<a name="id2608934"></a><h2>OPTIONS</h2>
 <p>
       The <code class="option">-b</code> option sets the source IP address of the query
       to <em class="parameter"><code>address</code></em>.  This must be a valid
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2661683"></a><h2>QUERY OPTIONS</h2>
+<a name="id2661637"></a><h2>QUERY OPTIONS</h2>
 <p><span><strong class="command">dig</strong></span>
       provides a number of query options which affect
       the way in which lookups are made and the results displayed.  Some of
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2662629"></a><h2>MULTIPLE QUERIES</h2>
+<a name="id2662651"></a><h2>MULTIPLE QUERIES</h2>
 <p>
       The BIND 9 implementation of <span><strong class="command">dig </strong></span>
       supports
@@ -625,7 +625,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2662919"></a><h2>IDN SUPPORT</h2>
+<a name="id2662737"></a><h2>IDN SUPPORT</h2>
 <p>
       If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized
       domain name) support, it can accept and display non-ASCII domain names.
@@ -639,14 +639,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2662948"></a><h2>FILES</h2>
+<a name="id2662834"></a><h2>FILES</h2>
 <p><code class="filename">/etc/resolv.conf</code>
     </p>
 <p><code class="filename">${HOME}/.digrc</code>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2662969"></a><h2>SEE ALSO</h2>
+<a name="id2662855"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>,
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
@@ -654,7 +654,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2663006"></a><h2>BUGS</h2>
+<a name="id2662892"></a><h2>BUGS</h2>
 <p>
       There are probably too many query options.
     </p>
index 341be6d3bbba92aca41c3aafe44ef6f40697f8b9..d99f990c9c087132a6c062d6ce459b8252ad25b4 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-dsfromkey.html,v 1.65 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.dnssec-dsfromkey.html,v 1.66 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <div class="cmdsynopsis"><p><code class="command">dnssec-dsfromkey</code>  {-s} [<code class="option">-1</code>] [<code class="option">-2</code>] [<code class="option">-a <em class="replaceable"><code>alg</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-s</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>file</code></em></code>] [<code class="option">-A</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] {dnsname}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2611022"></a><h2>DESCRIPTION</h2>
+<a name="id2610635"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-dsfromkey</strong></span>
       outputs the Delegation Signer (DS) resource record (RR), as defined in
       RFC 3658 and RFC 4509, for the given key(s).
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2611036"></a><h2>OPTIONS</h2>
+<a name="id2610649"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-1</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2611703"></a><h2>EXAMPLE</h2>
+<a name="id2610974"></a><h2>EXAMPLE</h2>
 <p>
       To build the SHA-256 DS RR from the
       <strong class="userinput"><code>Kexample.com.+003+26160</code></strong>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2611739"></a><h2>FILES</h2>
+<a name="id2611420"></a><h2>FILES</h2>
 <p>
       The keyfile can be designed by the key identification
       <code class="filename">Knnnn.+aaa+iiiii</code> or the full file name
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2612122"></a><h2>CAVEAT</h2>
+<a name="id2611462"></a><h2>CAVEAT</h2>
 <p>
       A keyfile error can give a "file not found" even if the file exists.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2612132"></a><h2>SEE ALSO</h2>
+<a name="id2611472"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2612171"></a><h2>AUTHOR</h2>
+<a name="id2611511"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 6dfa73e8fed92ac6441efcb1d997c247a7b5b416..93b719c84bd1e66852f1ac26dbc6e628e3f10294 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-keyfromlabel.html,v 1.101 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.dnssec-keyfromlabel.html,v 1.102 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">dnssec-keyfromlabel</code>  {-l <em class="replaceable"><code>label</code></em>} [<code class="option">-3</code>] [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-k</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-y</code>] {name}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2612748"></a><h2>DESCRIPTION</h2>
+<a name="id2611883"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-keyfromlabel</strong></span>
       gets keys with the given label from a crypto hardware and builds
       key files for DNSSEC (Secure DNS), as defined in RFC 2535
@@ -63,7 +63,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2612769"></a><h2>OPTIONS</h2>
+<a name="id2611904"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
 <dd>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2613273"></a><h2>TIMING OPTIONS</h2>
+<a name="id2612613"></a><h2>TIMING OPTIONS</h2>
 <p>
       Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS.
       If the argument begins with a '+' or '-', it is interpreted as
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614873"></a><h2>GENERATED KEY FILES</h2>
+<a name="id2614622"></a><h2>GENERATED KEY FILES</h2>
 <p>
       When <span><strong class="command">dnssec-keyfromlabel</strong></span> completes
       successfully,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2615240"></a><h2>SEE ALSO</h2>
+<a name="id2614716"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2615273"></a><h2>AUTHOR</h2>
+<a name="id2614818"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 989cb66d891b4634d28613bb1ed7f4909362e637..5a437e487c4ff833008e87ac322e442d56020c8a 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-keygen.html,v 1.170 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.dnssec-keygen.html,v 1.171 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">dnssec-keygen</code>  [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-3</code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-C</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e</code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-g <em class="replaceable"><code>generator</code></em></code>] [<code class="option">-h</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k</code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-q</code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S <em class="replaceable"><code>key</code></em></code>] [<code class="option">-s <em class="replaceable"><code>strength</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-z</code>] {name}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2613909"></a><h2>DESCRIPTION</h2>
+<a name="id2613317"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-keygen</strong></span>
       generates keys for DNSSEC (Secure DNS), as defined in RFC 2535
       and RFC 4034.  It can also generate keys for use with
@@ -64,7 +64,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2613929"></a><h2>OPTIONS</h2>
+<a name="id2613337"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
 <dd>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2666805"></a><h2>TIMING OPTIONS</h2>
+<a name="id2664848"></a><h2>TIMING OPTIONS</h2>
 <p>
       Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS.
       If the argument begins with a '+' or '-', it is interpreted as
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2666926"></a><h2>GENERATED KEYS</h2>
+<a name="id2664969"></a><h2>GENERATED KEYS</h2>
 <p>
       When <span><strong class="command">dnssec-keygen</strong></span> completes
       successfully,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2667034"></a><h2>EXAMPLE</h2>
+<a name="id2665077"></a><h2>EXAMPLE</h2>
 <p>
       To generate a 768-bit DSA key for the domain
       <strong class="userinput"><code>example.com</code></strong>, the following command would be
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2667091"></a><h2>SEE ALSO</h2>
+<a name="id2665133"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
       <em class="citetitle">RFC 2539</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2667122"></a><h2>AUTHOR</h2>
+<a name="id2665164"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index e96274b7a855fb546e3861b260c69e58ab7bee2e..3bffcdb3a22cde5f4167557f5b37605abc72c72c 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-revoke.html,v 1.53 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.dnssec-revoke.html,v 1.54 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">dnssec-revoke</code>  [<code class="option">-hr</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f</code>] {keyfile}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2613971"></a><h2>DESCRIPTION</h2>
+<a name="id2609829"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-revoke</strong></span>
       reads a DNSSEC key file, sets the REVOKED bit on the key as defined
       in RFC 5011, and creates a new pair of key files containing the
@@ -58,7 +58,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2613985"></a><h2>OPTIONS</h2>
+<a name="id2613461"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-h</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614092"></a><h2>SEE ALSO</h2>
+<a name="id2613569"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
       <em class="citetitle">RFC 5011</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614117"></a><h2>AUTHOR</h2>
+<a name="id2613593"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 5d4fa177571ecf393dc0a80493c18c33fecf36f6..6a05f7b789528ded07baf625ee0c45d35d621752 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-settime.html,v 1.49 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.dnssec-settime.html,v 1.50 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">dnssec-settime</code>  [<code class="option">-f</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-h</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] {keyfile}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614387"></a><h2>DESCRIPTION</h2>
+<a name="id2613726"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-settime</strong></span>
       reads a DNSSEC private key file and sets the key timing metadata
       as specified by the <code class="option">-P</code>, <code class="option">-A</code>,
@@ -75,7 +75,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614445"></a><h2>OPTIONS</h2>
+<a name="id2613785"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-f</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614539"></a><h2>TIMING OPTIONS</h2>
+<a name="id2613879"></a><h2>TIMING OPTIONS</h2>
 <p>
       Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS.
       If the argument begins with a '+' or '-', it is interpreted as
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2614678"></a><h2>PRINTING OPTIONS</h2>
+<a name="id2614564"></a><h2>PRINTING OPTIONS</h2>
 <p>
       <span><strong class="command">dnssec-settime</strong></span> can also be used to print the
       timing metadata associated with a key.
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2617147"></a><h2>SEE ALSO</h2>
+<a name="id2614917"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2617180"></a><h2>AUTHOR</h2>
+<a name="id2614950"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 49c29b6448949cfd6dc5827a52a44c8384ea1635..2c4bd83d7aa09f63b3f108d6b14ecb0fd11d663c 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.dnssec-signzone.html,v 1.170 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.dnssec-signzone.html,v 1.171 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">dnssec-signzone</code>  [<code class="option">-a</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-d <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e <em class="replaceable"><code>end-time</code></em></code>] [<code class="option">-f <em class="replaceable"><code>output-file</code></em></code>] [<code class="option">-g</code>] [<code class="option">-h</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-I <em class="replaceable"><code>input-format</code></em></code>] [<code class="option">-j <em class="replaceable"><code>jitter</code></em></code>] [<code class="option">-N <em class="replaceable"><code>soa-serial-format</code></em></code>] [<code class="option">-o <em class="replaceable"><code>origin</code></em></code>] [<code class="option">-O <em class="replaceable"><code>output-format</code></em></code>] [<code class="option">-p</code>] [<code class="option">-P</code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S</code>] [<code class="option">-s <em class="replaceable"><code>start-time</code></em></code>] [<code class="option">-T <em class="replaceable"><code>ttl</code></em></code>] [<code class="option">-t</code>] [<code class="option">-u</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-x</code>] [<code class="option">-z</code>] [<code class="option">-3 <em class="replaceable"><code>salt</code></em></code>] [<code class="option">-H <em class="replaceable"><code>iterations</code></em></code>] [<code class="option">-A</code>] {zonefile} [key...]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2615792"></a><h2>DESCRIPTION</h2>
+<a name="id2615814"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">dnssec-signzone</strong></span>
       signs a zone.  It generates
       NSEC and RRSIG records and produces a signed version of the
@@ -61,7 +61,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2615811"></a><h2>OPTIONS</h2>
+<a name="id2615833"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-a</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2668152"></a><h2>EXAMPLE</h2>
+<a name="id2666126"></a><h2>EXAMPLE</h2>
 <p>
       The following command signs the <strong class="userinput"><code>example.com</code></strong>
       zone with the DSA key generated by <span><strong class="command">dnssec-keygen</strong></span>
@@ -427,14 +427,14 @@ db.example.com.signed
 %</pre>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2668231"></a><h2>SEE ALSO</h2>
+<a name="id2666274"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
       <em class="citetitle">RFC 4033</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2668256"></a><h2>AUTHOR</h2>
+<a name="id2666298"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 11eaae0ca6bafc997a530e0d898b7cf3607dd743..e86dbd7de5d3c69bf146cbc2c8eec3b22a900b63 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.genrandom.html,v 1.25 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.genrandom.html,v 1.26 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">genrandom</code>  [<code class="option">-n <em class="replaceable"><code>number</code></em></code>] {<em class="replaceable"><code>size</code></em>} {<em class="replaceable"><code>filename</code></em>}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2618762"></a><h2>DESCRIPTION</h2>
+<a name="id2649300"></a><h2>DESCRIPTION</h2>
 <p>
       <span><strong class="command">genrandom</strong></span>
       generates a file or a set of files containing a specified quantity
@@ -59,7 +59,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649224"></a><h2>ARGUMENTS</h2>
+<a name="id2649315"></a><h2>ARGUMENTS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-n <em class="replaceable"><code>number</code></em></span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649285"></a><h2>SEE ALSO</h2>
+<a name="id2649376"></a><h2>SEE ALSO</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">rand</span>(3)</span>,
       <span class="citerefentry"><span class="refentrytitle">arc4random</span>(3)</span>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649312"></a><h2>AUTHOR</h2>
+<a name="id2649402"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 25ede68a52bdd0582dfae2e9d5c2acbf9d67ac71..8b8c8abd1d556d6eb878d55c31e58fb36b0ba369 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.host.html,v 1.152 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.host.html,v 1.153 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">host</code>  [<code class="option">-aCdlnrsTwv</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-N <em class="replaceable"><code>ndots</code></em></code>] [<code class="option">-R <em class="replaceable"><code>number</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-W <em class="replaceable"><code>wait</code></em></code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-4</code>] [<code class="option">-6</code>] {name} [server]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2610204"></a><h2>DESCRIPTION</h2>
+<a name="id2609476"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">host</strong></span>
       is a simple utility for performing DNS lookups.
       It is normally used to convert names to IP addresses and vice versa.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2610787"></a><h2>IDN SUPPORT</h2>
+<a name="id2610400"></a><h2>IDN SUPPORT</h2>
 <p>
       If <span><strong class="command">host</strong></span> has been built with IDN (internationalized
       domain name) support, it can accept and display non-ASCII domain names. 
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2610816"></a><h2>FILES</h2>
+<a name="id2610428"></a><h2>FILES</h2>
 <p><code class="filename">/etc/resolv.conf</code>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2610829"></a><h2>SEE ALSO</h2>
+<a name="id2610442"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">dig</span>(1)</span>,
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>.
     </p>
index 801b760c248a048e98da4a3886973c6d7bb10157..709172121bed52d4af2c22be5f62197cd7a5363b 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.isc-hmac-fixup.html,v 1.22 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.isc-hmac-fixup.html,v 1.23 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">isc-hmac-fixup</code>  {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>secret</code></em>}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649363"></a><h2>DESCRIPTION</h2>
+<a name="id2618256"></a><h2>DESCRIPTION</h2>
 <p>
       Versions of BIND 9 up to and including BIND 9.6 had a bug causing
       HMAC-SHA* TSIG keys which were longer than the digest length of the
@@ -76,7 +76,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649390"></a><h2>SECURITY CONSIDERATIONS</h2>
+<a name="id2618283"></a><h2>SECURITY CONSIDERATIONS</h2>
 <p>
       Secrets that have been converted by <span><strong class="command">isc-hmac-fixup</strong></span>
       are shortened, but as this is how the HMAC protocol works in
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649406"></a><h2>SEE ALSO</h2>
+<a name="id2649497"></a><h2>SEE ALSO</h2>
 <p>
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
       <em class="citetitle">RFC 2104</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649424"></a><h2>AUTHOR</h2>
+<a name="id2649514"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 7bb6f0ec0958d94bb43f25a4b7b690954c9950e3..55fdf1b789f247b1f3412c6f904cb81e127a73b4 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.named-checkconf.html,v 1.165 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.named-checkconf.html,v 1.166 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">named-checkconf</code>  [<code class="option">-h</code>] [<code class="option">-v</code>] [<code class="option">-j</code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] {filename} [<code class="option">-p</code>] [<code class="option">-z</code>]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2616793"></a><h2>DESCRIPTION</h2>
+<a name="id2616611"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">named-checkconf</strong></span>
       checks the syntax, but not the semantics, of a
       <span><strong class="command">named</strong></span> configuration file.  The file is parsed
@@ -70,7 +70,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2616864"></a><h2>OPTIONS</h2>
+<a name="id2616681"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-h</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2617476"></a><h2>RETURN VALUES</h2>
+<a name="id2616816"></a><h2>RETURN VALUES</h2>
 <p><span><strong class="command">named-checkconf</strong></span>
       returns an exit status of 1 if
       errors were detected and 0 otherwise.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2617490"></a><h2>SEE ALSO</h2>
+<a name="id2616829"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">named-checkzone</span>(8)</span>,
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2617520"></a><h2>AUTHOR</h2>
+<a name="id2616859"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index b12a6d2f4dae5eee14e40c968f72573d5451d595..8fc7f28244dfbfcda6073a101060d5f16cf880a3 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.named-checkzone.html,v 1.174 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.named-checkzone.html,v 1.175 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -51,7 +51,7 @@
 <div class="cmdsynopsis"><p><code class="command">named-compilezone</code>  [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2618270"></a><h2>DESCRIPTION</h2>
+<a name="id2618088"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">named-checkzone</strong></span>
       checks the syntax and integrity of a zone file.  It performs the
       same checks as <span><strong class="command">named</strong></span> does when loading a
@@ -71,7 +71,7 @@
      </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2618321"></a><h2>OPTIONS</h2>
+<a name="id2618138"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-d</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2669063"></a><h2>RETURN VALUES</h2>
+<a name="id2673454"></a><h2>RETURN VALUES</h2>
 <p><span><strong class="command">named-checkzone</strong></span>
       returns an exit status of 1 if
       errors were detected and 0 otherwise.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2669077"></a><h2>SEE ALSO</h2>
+<a name="id2673468"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>,
       <em class="citetitle">RFC 1035</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2669110"></a><h2>AUTHOR</h2>
+<a name="id2673501"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 308c1575fdb1fab8004420eed475506a88e1852b..77a6f8e658ff5d01e2b1cf447580357de12e32e7 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.named-journalprint.html,v 1.24 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.named-journalprint.html,v 1.25 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">named-journalprint</code>  {<em class="replaceable"><code>journal</code></em>}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2616284"></a><h2>DESCRIPTION</h2>
+<a name="id2614190"></a><h2>DESCRIPTION</h2>
 <p>
       <span><strong class="command">named-journalprint</strong></span>
       prints the contents of a zone journal file in a human-readable
@@ -76,7 +76,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2637288"></a><h2>SEE ALSO</h2>
+<a name="id2631917"></a><h2>SEE ALSO</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">nsupdate</span>(8)</span>,
@@ -84,7 +84,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2637319"></a><h2>AUTHOR</h2>
+<a name="id2631948"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index d573bd244d6692f6c8b3da1a309ac0e042e3eeb3..75589ff37955b2e6e3317aeef23c2c3dd7254af1 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.named.html,v 1.176 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.named.html,v 1.177 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">named</code>  [<code class="option">-4</code>] [<code class="option">-6</code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-d <em class="replaceable"><code>debug-level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine-name</code></em></code>] [<code class="option">-f</code>] [<code class="option">-g</code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-n <em class="replaceable"><code>#cpus</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-s</code>] [<code class="option">-S <em class="replaceable"><code>#max-socks</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-V</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2631540"></a><h2>DESCRIPTION</h2>
+<a name="id2619411"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">named</strong></span>
       is a Domain Name System (DNS) server,
       part of the BIND 9 distribution from ISC.  For more
@@ -65,7 +65,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2631639"></a><h2>OPTIONS</h2>
+<a name="id2619442"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-4</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2658407"></a><h2>SIGNALS</h2>
+<a name="id2658907"></a><h2>SIGNALS</h2>
 <p>
       In routine operation, signals should not be used to control
       the nameserver; <span><strong class="command">rndc</strong></span> should be used
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2658457"></a><h2>CONFIGURATION</h2>
+<a name="id2658957"></a><h2>CONFIGURATION</h2>
 <p>
       The <span><strong class="command">named</strong></span> configuration file is too complex
       to describe in detail here.  A complete description is provided
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2658506"></a><h2>FILES</h2>
+<a name="id2659006"></a><h2>FILES</h2>
 <div class="variablelist"><dl>
 <dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2674115"></a><h2>SEE ALSO</h2>
+<a name="id2659050"></a><h2>SEE ALSO</h2>
 <p><em class="citetitle">RFC 1033</em>,
       <em class="citetitle">RFC 1034</em>,
       <em class="citetitle">RFC 1035</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2674253"></a><h2>AUTHOR</h2>
+<a name="id2673866"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 7338f267e6d8064cdabce310e7557629ebeb3eb5..20da8d9c2003587c4094564f47a2e50a9afff4ee 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.nsec3hash.html,v 1.25 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.nsec3hash.html,v 1.26 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -48,7 +48,7 @@
 <div class="cmdsynopsis"><p><code class="command">nsec3hash</code>  {<em class="replaceable"><code>salt</code></em>} {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>iterations</code></em>} {<em class="replaceable"><code>domain</code></em>}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2618954"></a><h2>DESCRIPTION</h2>
+<a name="id2618499"></a><h2>DESCRIPTION</h2>
 <p>
       <span><strong class="command">nsec3hash</strong></span> generates an NSEC3 hash based on
       a set of NSEC3 parameters.  This can be used to check the validity
@@ -56,7 +56,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2618969"></a><h2>ARGUMENTS</h2>
+<a name="id2649575"></a><h2>ARGUMENTS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">salt</span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649614"></a><h2>SEE ALSO</h2>
+<a name="id2649637"></a><h2>SEE ALSO</h2>
 <p>
       <em class="citetitle">BIND 9 Administrator Reference Manual</em>,
       <em class="citetitle">RFC 5155</em>.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649632"></a><h2>AUTHOR</h2>
+<a name="id2649654"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 53d8b75696550d6d6c7a380a741798629ad33410..1f005e3f44f2ee26768989992a6bd4ed5ab7e5d3 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.nsupdate.html,v 1.101 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: man.nsupdate.html,v 1.102 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">nsupdate</code>  [<code class="option">-d</code>] [<code class="option">-D</code>] [[<code class="option">-g</code>] |  [<code class="option">-o</code>] |  [<code class="option">-l</code>] |  [<code class="option">-y <em class="replaceable"><code>[<span class="optional">hmac:</span>]keyname:secret</code></em></code>] |  [<code class="option">-k <em class="replaceable"><code>keyfile</code></em></code>]] [<code class="option">-t <em class="replaceable"><code>timeout</code></em></code>] [<code class="option">-u <em class="replaceable"><code>udptimeout</code></em></code>] [<code class="option">-r <em class="replaceable"><code>udpretries</code></em></code>] [<code class="option">-R <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-v</code>] [filename]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2637548"></a><h2>DESCRIPTION</h2>
+<a name="id2632178"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">nsupdate</strong></span>
       is used to submit Dynamic DNS Update requests as defined in RFC 2136
       to a name server.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2638292"></a><h2>INPUT FORMAT</h2>
+<a name="id2636949"></a><h2>INPUT FORMAT</h2>
 <p><span><strong class="command">nsupdate</strong></span>
       reads input from
       <em class="parameter"><code>filename</code></em>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2677365"></a><h2>EXAMPLES</h2>
+<a name="id2674930"></a><h2>EXAMPLES</h2>
 <p>
       The examples below show how
       <span><strong class="command">nsupdate</strong></span>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2677415"></a><h2>FILES</h2>
+<a name="id2674980"></a><h2>FILES</h2>
 <div class="variablelist"><dl>
 <dt><span class="term"><code class="constant">/etc/resolv.conf</code></span></dt>
 <dd><p>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2677566"></a><h2>SEE ALSO</h2>
+<a name="id2675200"></a><h2>SEE ALSO</h2>
 <p>
       <em class="citetitle">RFC 2136</em>,
       <em class="citetitle">RFC 3007</em>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2677624"></a><h2>BUGS</h2>
+<a name="id2675257"></a><h2>BUGS</h2>
 <p>
       The TSIG key is redundantly stored in two separate files.
       This is a consequence of nsupdate using the DST library
index 86b8150de5e5b7ffc2eb41943fb6b1dafebca7cc..f2d5acada1384b0b09111da7400a4acebb29e0c0 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.rndc-confgen.html,v 1.180 2010/12/17 01:14:02 tbox Exp $ -->
+<!-- $Id: man.rndc-confgen.html,v 1.181 2010/12/19 01:14:06 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">rndc-confgen</code>  [<code class="option">-a</code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-c <em class="replaceable"><code>keyfile</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [<code class="option">-s <em class="replaceable"><code>address</code></em></code>] [<code class="option">-t <em class="replaceable"><code>chrootdir</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>]</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640669"></a><h2>DESCRIPTION</h2>
+<a name="id2640214"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">rndc-confgen</strong></span>
       generates configuration files
       for <span><strong class="command">rndc</strong></span>.  It can be used as a
@@ -66,7 +66,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640736"></a><h2>OPTIONS</h2>
+<a name="id2640280"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-a</span></dt>
 <dd>
 </dl></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2642009"></a><h2>EXAMPLES</h2>
+<a name="id2640871"></a><h2>EXAMPLES</h2>
 <p>
       To allow <span><strong class="command">rndc</strong></span> to be used with
       no manual configuration, run
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649097"></a><h2>SEE ALSO</h2>
+<a name="id2649188"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>,
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2649136"></a><h2>AUTHOR</h2>
+<a name="id2649226"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index b65db473e7a633ce40e176ba04082c0f9e57b966..3e3e37f6d3ce2d7055f35e5f8671d0f55393387b 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.rndc.conf.html,v 1.181 2010/12/17 01:14:04 tbox Exp $ -->
+<!-- $Id: man.rndc.conf.html,v 1.182 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">rndc.conf</code> </p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2616629"></a><h2>DESCRIPTION</h2>
+<a name="id2616446"></a><h2>DESCRIPTION</h2>
 <p><code class="filename">rndc.conf</code> is the configuration file
       for <span><strong class="command">rndc</strong></span>, the BIND 9 name server control
       utility.  This file has a similar structure and syntax to
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640148"></a><h2>EXAMPLE</h2>
+<a name="id2639556"></a><h2>EXAMPLE</h2>
 <pre class="programlisting">
       options {
         default-server  localhost;
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640269"></a><h2>NAME SERVER CONFIGURATION</h2>
+<a name="id2639882"></a><h2>NAME SERVER CONFIGURATION</h2>
 <p>
       The name server must be configured to accept rndc connections and
       to recognize the key specified in the <code class="filename">rndc.conf</code>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640363"></a><h2>SEE ALSO</h2>
+<a name="id2639908"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">mmencode</span>(1)</span>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2640402"></a><h2>AUTHOR</h2>
+<a name="id2639946"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index bed0bcab6b5a3973dff6d293b85ef46fcba3ecb1..c7765f0df48825b07f8929220d578a1e3b38099e 100644 (file)
@@ -14,7 +14,7 @@
  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  - PERFORMANCE OF THIS SOFTWARE.
 -->
-<!-- $Id: man.rndc.html,v 1.179 2010/12/17 01:14:03 tbox Exp $ -->
+<!-- $Id: man.rndc.html,v 1.180 2010/12/19 01:14:07 tbox Exp $ -->
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
 <div class="cmdsynopsis"><p><code class="command">rndc</code>  [<code class="option">-b <em class="replaceable"><code>source-address</code></em></code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key-file</code></em></code>] [<code class="option">-s <em class="replaceable"><code>server</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-V</code>] [<code class="option">-y <em class="replaceable"><code>key_id</code></em></code>] {command}</p></div>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2638513"></a><h2>DESCRIPTION</h2>
+<a name="id2637511"></a><h2>DESCRIPTION</h2>
 <p><span><strong class="command">rndc</strong></span>
       controls the operation of a name
       server.  It supersedes the <span><strong class="command">ndc</strong></span> utility
@@ -79,7 +79,7 @@
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2638563"></a><h2>OPTIONS</h2>
+<a name="id2637561"></a><h2>OPTIONS</h2>
 <div class="variablelist"><dl>
 <dt><span class="term">-b <em class="replaceable"><code>source-address</code></em></span></dt>
 <dd><p>
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2639539"></a><h2>LIMITATIONS</h2>
+<a name="id2639288"></a><h2>LIMITATIONS</h2>
 <p><span><strong class="command">rndc</strong></span>
       does not yet support all the commands of
       the BIND 8 <span><strong class="command">ndc</strong></span> utility.
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2639570"></a><h2>SEE ALSO</h2>
+<a name="id2639319"></a><h2>SEE ALSO</h2>
 <p><span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>,
       <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
     </p>
 </div>
 <div class="refsect1" lang="en">
-<a name="id2639625"></a><h2>AUTHOR</h2>
+<a name="id2639374"></a><h2>AUTHOR</h2>
 <p><span class="corpauthor">Internet Systems Consortium</span>
     </p>
 </div>
index 23a2b4d2df89f9dce53e84edb8d9eae6b39be2ac..b5de837a005d90219f0c779229c4040a416d7696 100644 (file)
@@ -217,6 +217,7 @@ options {
         tkey-dhkey <quoted_string> <integer>;
         tkey-domain <quoted_string>;
         tkey-gssapi-credential <quoted_string>;
+        tkey-gssapi-keytab <quoted_string>;
         topology { <address_match_element>; ... }; // not implemented
         transfer-format ( many-answers | one-answer );
         transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
index 66c8fc514db5e10695d4fa4809c3993f5de5523a..0b79b913bf06584b3f2bc791518bbc2c6388a346 100644 (file)
@@ -50,7 +50,7 @@
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dlz.c,v 1.7 2009/01/17 23:47:42 tbox Exp $ */
+/* $Id: dlz.c,v 1.9 2010/12/19 02:51:40 each Exp $ */
 
 /*! \file */
 
@@ -64,6 +64,8 @@
 #include <dns/log.h>
 #include <dns/master.h>
 #include <dns/dlz.h>
+#include <dns/ssu.h>
+#include <dns/zone.h>
 
 
 #include <isc/buffer.h>
@@ -230,6 +232,12 @@ dns_dlzdestroy(dns_dlzdb_t **dbp) {
         */
        REQUIRE(dbp != NULL && DNS_DLZ_VALID(*dbp));
 
+#ifdef BIND9
+       if ((*dbp)->ssutable != NULL) {
+               dns_ssutable_detach(&(*dbp)->ssutable);
+       }
+#endif
+
        /* call the drivers destroy method */
        if ((*dbp) != NULL) {
                mctx = (*dbp)->mctx;
@@ -499,7 +507,7 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp) {
        mctx = dlz_imp->mctx;
 
        /*
-        * return the memory back to the available memory pool and
+        * Return the memory back to the available memory pool and
         * remove it from the memory context.
         */
        isc_mem_put(mctx, dlz_imp, sizeof(dns_dlzimplementation_t));
@@ -508,3 +516,143 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp) {
        /* Unlock the dlz_implementations list. */
        RWUNLOCK(&dlz_implock, isc_rwlocktype_write);
 }
+
+#ifdef BIND9
+/*
+ * Create a writeable DLZ zone. This can be called by DLZ drivers
+ * during configure() to create a zone that can be updated. The zone
+ * type is set to dns_zone_dlz, which is equivalent to a master zone
+ *
+ * This function uses a callback setup in dns_dlzconfigure() to call
+ * into the server zone code to setup the remaining pieces of server
+ * specific functionality on the zone
+ */
+isc_result_t
+dns_dlz_writeablezone(dns_view_t *view, const char *zone_name) {
+       dns_zone_t *zone = NULL;
+       dns_zone_t *dupzone = NULL;
+       isc_result_t result;
+       isc_buffer_t buffer;
+       dns_fixedname_t fixorigin;
+       dns_name_t *origin;
+       dns_rdataclass_t zclass;
+       dns_dlzdb_t *dlzdatabase;
+
+       REQUIRE(DNS_DLZ_VALID(view->dlzdatabase));
+
+       dlzdatabase = view->dlzdatabase;
+
+       REQUIRE(dlzdatabase->configure_callback != NULL);
+
+       isc_buffer_init(&buffer, zone_name, strlen(zone_name));
+       isc_buffer_add(&buffer, strlen(zone_name));
+       dns_fixedname_init(&fixorigin);
+       result = dns_name_fromtext(dns_fixedname_name(&fixorigin),
+                                  &buffer, dns_rootname, 0, NULL);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+       origin = dns_fixedname_name(&fixorigin);
+
+       zclass = view->rdclass;
+
+       /* See if the zone already exists */
+       result = dns_view_findzone(view, origin, &dupzone);
+       if (result == ISC_R_SUCCESS) {
+               dns_zone_detach(&dupzone);
+               result = ISC_R_EXISTS;
+               goto cleanup;
+       }
+       INSIST(dupzone == NULL);
+
+       /* Create it */
+       result = dns_zone_create(&zone, view->mctx);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+       result = dns_zone_setorigin(zone, origin);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+       dns_zone_setview(zone, view);
+
+       dns_zone_setadded(zone, ISC_TRUE);
+
+       if (dlzdatabase->ssutable == NULL) {
+               result = dns_ssutable_createdlz(dlzdatabase->mctx,
+                                               &dlzdatabase->ssutable, 
+                                               view->dlzdatabase);
+               if (result != ISC_R_SUCCESS)
+                       goto cleanup;
+       }
+       dns_zone_setssutable(zone, dlzdatabase->ssutable);
+
+       result = dlzdatabase->configure_callback(view, zone);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+
+       /*
+        * Add the zone to its view in the new view list.
+        */
+       result = dns_view_addzone(view, zone);
+
+       result = ISC_R_SUCCESS;
+
+ cleanup:
+       if (zone != NULL)
+               dns_zone_detach(&zone);
+
+       return (result);
+}
+#endif
+
+/*%
+ * Configure a DLZ driver. This is optional, and if supplied gives
+ * the backend an opportunity to configure parameters related to DLZ.
+ */
+isc_result_t
+dns_dlzconfigure(dns_view_t *view, isc_result_t (*callback)(dns_view_t *,
+                dns_zone_t *))
+{
+       dns_dlzimplementation_t *impl;
+       dns_dlzdb_t *dlzdatabase;
+       isc_result_t result;
+
+       REQUIRE(view != NULL);
+       REQUIRE(DNS_DLZ_VALID(view->dlzdatabase));
+       REQUIRE(view->dlzdatabase->implementation != NULL);
+
+       dlzdatabase = view->dlzdatabase;
+       impl = dlzdatabase->implementation;
+
+       if (impl->methods->configure == NULL)
+               return (ISC_R_SUCCESS);
+
+       dlzdatabase->configure_callback = callback;
+
+       result = impl->methods->configure(impl->driverarg,
+                                         dlzdatabase->dbdata, view);
+       return (result);
+}
+
+isc_boolean_t
+dns_dlz_ssumatch(dns_dlzdb_t *dlzdatabase,
+                 dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr,
+                 dns_rdatatype_t type, const dst_key_t *key)
+{
+       dns_dlzimplementation_t *impl;
+       isc_boolean_t r;
+
+       REQUIRE(dlzdatabase != NULL);
+       REQUIRE(dlzdatabase->implementation != NULL);
+       REQUIRE(dlzdatabase->implementation->methods != NULL);
+       impl = dlzdatabase->implementation;
+
+       if (impl->methods->ssumatch == NULL) {
+               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
+                             DNS_LOGMODULE_DLZ, ISC_LOG_INFO,
+                             "No ssumatch method for DLZ database");
+               return (ISC_FALSE);
+       }
+
+       r = impl->methods->ssumatch(signer, name, tcpaddr, type, key,
+                                   impl->driverarg, dlzdatabase->dbdata);
+       return (r);
+}
index 81ed8bb486e810aebf0ea6ef04f0ae3cf918c8c4..231e30965d2e0e15663bffdd78440185259884dc 100644 (file)
@@ -31,7 +31,7 @@
 
 /*
  * Principal Author: Brian Wellington
- * $Id: dst_api.c,v 1.53 2010/12/09 00:54:33 marka Exp $
+ * $Id: dst_api.c,v 1.54 2010/12/18 01:56:22 each Exp $
  */
 
 /*! \file */
@@ -700,9 +700,10 @@ dst_key_getgssctx(const dst_key_t *key)
 
 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 **keyp, isc_region_t *intoken)
 {
        dst_key_t *key;
+       isc_result_t result;
 
        REQUIRE(gssctx != NULL);
        REQUIRE(keyp != NULL && *keyp == NULL);
@@ -712,9 +713,21 @@ dst_key_fromgssapi(dns_name_t *name, gss_ctx_id_t gssctx, isc_mem_t *mctx,
        if (key == NULL)
                return (ISC_R_NOMEMORY);
 
+       if (intoken != NULL) {
+               /*
+                * Keep the token for use by external ssu rules. They may need
+                * to examine the PAC in the kerberos ticket.
+                */
+               RETERR(isc_buffer_allocate(key->mctx, &key->key_tkeytoken,
+                      intoken->length));
+               RETERR(isc_buffer_copyregion(key->key_tkeytoken, intoken));
+       }
+
        key->keydata.gssctx = gssctx;
        *keyp = key;
-       return (ISC_R_SUCCESS);
+       result = ISC_R_SUCCESS;
+out:
+       return result;
 }
 
 isc_result_t
@@ -1054,6 +1067,9 @@ dst_key_free(dst_key_t **keyp) {
                isc_mem_free(mctx, key->label);
        dns_name_free(key->key_name, mctx);
        isc_mem_put(mctx, key->key_name, sizeof(dns_name_t));
+       if (key->key_tkeytoken) {
+               isc_buffer_free(&key->key_tkeytoken);
+       }
        memset(key, 0, sizeof(dst_key_t));
        isc_mem_put(mctx, key, sizeof(dst_key_t));
        *keyp = NULL;
@@ -1149,7 +1165,7 @@ dst_key_setflags(dst_key_t *key, isc_uint32_t flags) {
 }
 
 void
-dst_key_format(dst_key_t *key, char *cp, unsigned int size) {
+dst_key_format(const dst_key_t *key, char *cp, unsigned int size) {
        char namestr[DNS_NAME_FORMATSIZE];
        char algstr[DNS_NAME_FORMATSIZE];
 
@@ -1709,3 +1725,8 @@ dst__entropy_status(void) {
        return (0);
 #endif
 }
+
+isc_buffer_t *
+dst_key_tkeytoken(const dst_key_t *key) {
+       return (key->key_tkeytoken);
+}
index 994b9867c7c6e9c65dffa860e429baa52d40c3e7..5ba2094510e1b1930bd048c3bfd2929c335263ff 100644 (file)
@@ -29,7 +29,7 @@
  * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dst_internal.h,v 1.25 2010/12/09 04:31:57 tbox Exp $ */
+/* $Id: dst_internal.h,v 1.26 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef DST_DST_INTERNAL_H
 #define DST_DST_INTERNAL_H 1
@@ -128,6 +128,7 @@ struct dst_key {
        int             fmt_minor;     /*%< private key format, minor version */
 
        dst_func_t *    func;          /*%< crypto package specific functions */
+       isc_buffer_t   *key_tkeytoken; /*%< TKEY token data */
 };
 
 struct dst_context {
index 3a25e09c9b68e0fb708cba4f587fb6dac0768f30..29b2af0a3d9dfb6fff8f01efe04afa88d848769c 100644 (file)
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: gssapictx.c,v 1.18 2010/07/09 05:13:15 each Exp $ */
+/* $Id: gssapictx.c,v 1.21 2010/12/19 21:32:35 each Exp $ */
 
 #include <config.h>
 
+#include <ctype.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include <isc/buffer.h>
 #include <isc/dir.h>
 #include <isc/entropy.h>
+#include <isc/file.h>
 #include <isc/lex.h>
 #include <isc/mem.h>
 #include <isc/once.h>
@@ -201,9 +203,12 @@ log_cred(const gss_cred_id_t cred) {
  *   - tkey-gssapi-credential doesn't start with DNS/
  *   - the default realm in /etc/krb5.conf and the
  *     tkey-gssapi-credential bind config option don't match
+ *
+ * Note that if tkey-gssapi-keytab is set then these configure checks
+ * are not performed, and runtime errors from gssapi are used instead
  */
 static void
-dst_gssapi_check_config(const char *gss_name) {
+check_config(const char *gss_name) {
        const char *p;
        krb5_context krb5_ctx;
        char *krb5_realm = NULL;
@@ -263,7 +268,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate,
         * here when we're in the acceptor role, which would let us
         * default the hostname and use a compiled in default service
         * name of "DNS", giving one less thing to configure in
-        * named.conf.  Unfortunately, this creates a circular
+        * named.conf.  Unfortunately, this creates a circular
         * dependency due to DNS-based realm lookup in at least one
         * GSSAPI implementation (Heimdal).  Oh well.
         */
@@ -273,7 +278,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate,
                gret = gss_import_name(&minor, &gnamebuf,
                                       GSS_C_NO_OID, &gname);
                if (gret != GSS_S_COMPLETE) {
-                       dst_gssapi_check_config((char *)array);
+                       check_config((char *)array);
 
                        gss_log(3, "failed gss_import_name: %s",
                                gss_error_tostring(gret, minor, buf,
@@ -306,7 +311,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate,
                        initiate ? "initiate" : "accept",
                        (char *)gnamebuf.value,
                        gss_error_tostring(gret, minor, buf, sizeof(buf)));
-               dst_gssapi_check_config((char *)array);
+               check_config((char *)array);
                return (ISC_R_FAILURE);
        }
 
@@ -361,7 +366,7 @@ dst_gssapi_identitymatchesrealmkrb5(dns_name_t *signer, dns_name_t *name,
        rname += 2;
 
        /*
-        * Find the host portion of the signer's name.  We do this by
+        * Find the host portion of the signer's name.  We do this by
         * searching for the first / character.  We then check to make
         * certain the instance name is "host"
         *
@@ -440,7 +445,7 @@ dst_gssapi_identitymatchesrealmms(dns_name_t *signer, dns_name_t *name,
                return (isc_boolean_false);
 
        /*
-        * Find the host portion of the signer's name.  Zero out the $ so
+        * Find the host portion of the signer's name.  Zero out the $ so
         * it terminates the signer's name, and skip past the @ for
         * the realm.
         *
@@ -454,7 +459,7 @@ dst_gssapi_identitymatchesrealmms(dns_name_t *signer, dns_name_t *name,
 
        /*
         * Find the first . in the target name, and make it the end of
-        * the string.   The rest of the name has to match the realm.
+        * the string.   The rest of the name has to match the realm.
         */
        if (name != NULL) {
                nname = strchr(nbuf, '.');
@@ -510,9 +515,110 @@ dst_gssapi_releasecred(gss_cred_id_t *cred) {
 #endif
 }
 
+#ifdef GSSAPI
+/*
+ * GSSAPI with krb5 doesn't have a way to set the default realm, as it
+ * doesn't offer any access to the krb5 context that it uses. The only
+ * way to do an nsupdate call on a realm that isn't the default realm in
+ * /etc/krb5.conf is to create a temporary krb5.conf and put the right
+ * realm in there as the default realm, then set KRB5_CONFIG to point
+ * at that temporary krb5.conf. This is a disgusting hack, but it is
+ * the best we can do with GSSAPI.
+ *
+ * To try to reduce the impact, this routine checks if the default
+ * realm is already correct. If it is, then we don't need to do
+ * anything. If not, then we create the temporary krb5.conf.
+ */
+static void
+check_zone(dns_name_t *zone, isc_mem_t *mctx, char **tmpfile) {
+       krb5_context ctx;
+       int kret;
+       char *realm;
+       char buf[1024];
+       isc_result_t ret;
+       FILE *fp = NULL;
+       char *p, *template;
+
+       if (getenv("KRB5_CONFIG") != NULL) {
+               /* the user has specifically set a KRB5_CONFIG to
+                  use. Don't override it, as they may know what they are
+                  doing */
+               return;
+       }
+
+       dns_name_format(zone, buf, sizeof(buf));
+
+       /* gssapi wants the realm in upper case */
+       for (p=buf; *p; p++) {
+               if (islower((int)*p))
+                       *p = toupper((int)*p);
+       }
+
+       kret = krb5_init_context(&ctx);
+       if (kret != 0)
+               return;
+
+       kret = krb5_get_default_realm(ctx, &realm);
+       if (kret == 0 && strcmp(buf, realm) == 0) {
+               /* the krb5.conf is correct. */
+               krb5_free_context(ctx);
+               return;
+       }
+
+       gss_log(3, "zone '%s' doesn't match KRB5 default realm '%s'",
+               buf, realm);
+
+       template = isc_mem_strdup(mctx, "/tmp/krb5.conf.XXXXXX");
+       if (template == NULL) {
+               krb5_free_context(ctx);
+               return;
+       }
+
+       ret = isc_file_openunique(template, &fp);
+       if (ret != ISC_R_SUCCESS) {
+               krb5_free_context(ctx);
+               return;
+       }
+
+       fprintf(fp, "[libdefaults]\n");
+       fprintf(fp, "\tdefault_realm = %s\n", buf);
+       fprintf(fp, "\tdns_lookup_kdc = true\n");
+       fclose(fp);
+
+       setenv("KRB5_CONFIG", template, 1);
+
+       *tmpfile = template;
+
+       krb5_free_context(ctx);
+}
+
+/*
+ * Format a gssapi error message info into a char ** on the given memory
+ * context. This is used to return gssapi error messages back up the
+ * call chain for reporting to the user.
+ */
+static void
+gss_err_message(isc_mem_t *mctx, isc_uint32_t major, isc_uint32_t minor,
+               char **err_message)
+{
+       char buf[1024];
+       char *estr;
+
+       if (err_message == NULL || mctx == NULL) {
+               /* the caller doesn't want any error messages */
+               return;
+       }
+
+       estr = gss_error_tostring(major, minor, buf, sizeof(buf));
+       if (estr)
+               (*err_message) = isc_mem_strdup(mctx, estr);
+}
+#endif
+
 isc_result_t
 dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
-                  isc_buffer_t *outtoken, gss_ctx_id_t *gssctx)
+                  isc_buffer_t *outtoken, gss_ctx_id_t *gssctx,
+                  dns_name_t *zone, isc_mem_t *mctx, char **err_message)
 {
 #ifdef GSSAPI
        isc_region_t r;
@@ -523,10 +629,15 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
        isc_result_t result;
        gss_buffer_desc gnamebuf;
        unsigned char array[DNS_NAME_MAXTEXT + 1];
-       char buf[1024];
+       char *tmpfile = NULL;
 
        /* Client must pass us a valid gss_ctx_id_t here */
        REQUIRE(gssctx != NULL);
+       REQUIRE(mctx != NULL);
+
+       if (zone != NULL && mctx != NULL) {
+               check_zone(zone, mctx, &tmpfile);
+       }
 
        isc_buffer_init(&namebuf, array, sizeof(array));
        name_to_gbuffer(name, &namebuf, &gnamebuf);
@@ -534,6 +645,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
        /* Get the name as a GSS name */
        gret = gss_import_name(&minor, &gnamebuf, GSS_C_NO_OID, &gname);
        if (gret != GSS_S_COMPLETE) {
+               gss_err_message(mctx, gret, minor, err_message);
                result = ISC_R_FAILURE;
                goto out;
        }
@@ -550,8 +662,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
         * Note that we don't set GSS_C_SEQUENCE_FLAG as Windows DNS
         * servers don't like it.
         */
-       flags = GSS_C_REPLAY_FLAG | GSS_C_MUTUAL_FLAG | GSS_C_DELEG_FLAG |
-               GSS_C_INTEG_FLAG;
+       flags = GSS_C_REPLAY_FLAG | GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG;
 
        gret = gss_init_sec_context(&minor, GSS_C_NO_CREDENTIAL, gssctx,
                                    gname, GSS_SPNEGO_MECHANISM, flags,
@@ -559,9 +670,9 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
                                    NULL, &gouttoken, &ret_flags, NULL);
 
        if (gret != GSS_S_COMPLETE && gret != GSS_S_CONTINUE_NEEDED) {
-               gss_log(3, "Failure initiating security context");
-               gss_log(3, "%s", gss_error_tostring(gret, minor,
-                                                   buf, sizeof(buf)));
+               gss_err_message(mctx, gret, minor, err_message);
+               gss_log(3, "Failure initiating security context: %s",
+                       *err_message);
                result = ISC_R_FAILURE;
                goto out;
        }
@@ -587,12 +698,20 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
                result = DNS_R_CONTINUE;
 
  out:
+       if (tmpfile) {
+               unsetenv("KRB5_CONFIG");
+               isc_file_remove(tmpfile);
+               isc_mem_free(mctx, tmpfile);
+       }
        return (result);
 #else
        UNUSED(name);
        UNUSED(intoken);
        UNUSED(outtoken);
        UNUSED(gssctx);
+       UNUSED(zone);
+       UNUSED(mctx);
+       UNUSED(err_message);
 
        return (ISC_R_NOTIMPLEMENTED);
 #endif
@@ -600,6 +719,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
 
 isc_result_t
 dst_gssapi_acceptctx(gss_cred_id_t cred,
+                    const char *gssapi_keytab,
                     isc_region_t *intoken, isc_buffer_t **outtoken,
                     gss_ctx_id_t *ctxout, dns_name_t *principal,
                     isc_mem_t *mctx)
@@ -626,6 +746,22 @@ dst_gssapi_acceptctx(gss_cred_id_t cred,
        else
                context = *ctxout;
 
+       if (gssapi_keytab != NULL) {
+#ifndef ISC_PLATFORM_GSSAPI_KRB5_HEADER
+               return (ISC_R_NOTIMPLEMENTED);
+#else
+               gret = gsskrb5_register_acceptor_identity(gssapi_keytab);
+               if (gret != GSS_S_COMPLETE) {
+                       gss_log(3, "failed "
+                               "gsskrb5_register_acceptor_identity(%s): %s",
+                               gssapi_keytab,
+                               gss_error_tostring(gret, minor,
+                                                  buf, sizeof(buf)));
+                       return (DNS_R_INVALIDTKEY);
+               }
+#endif
+       }
+
        gret = gss_accept_sec_context(&minor, &context, cred, &gintoken,
                                      GSS_C_NO_CHANNEL_BINDINGS, &gname,
                                      NULL, &gouttoken, NULL, NULL, NULL);
@@ -717,6 +853,7 @@ dst_gssapi_acceptctx(gss_cred_id_t cred,
        return (result);
 #else
        UNUSED(cred);
+       UNUSED(gssapi_keytab);
        UNUSED(intoken);
        UNUSED(outtoken);
        UNUSED(ctxout);
index 461d1620c6c969d97daeec08885dd3d1afa9d498..56422b5ff5dda2d53eaaeea2540380c259900611 100644 (file)
@@ -50,7 +50,7 @@
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dlz.h,v 1.9 2009/01/17 23:47:43 tbox Exp $ */
+/* $Id: dlz.h,v 1.11 2010/12/19 02:51:41 each Exp $ */
 
 /*! \file dns/dlz.h */
 
@@ -87,6 +87,7 @@
 #include <dns/name.h>
 #include <dns/types.h>
 #include <dns/view.h>
+#include <dst/dst.h>
 
 #include <isc/lang.h>
 
@@ -166,12 +167,37 @@ typedef isc_result_t
  * return a result code indicating the type of error.
  */
 
+
+typedef isc_result_t
+(*dns_dlzconfigure_t)(void *driverarg, void *dbdata, dns_view_t *view);
+/*%<
+ * Method prototype.  Drivers implementing the DLZ interface may
+ * optionally supply a configure method. If supplied, this will be
+ * called immediately after the create method is called. The driver
+ * may call configuration functions during the configure call
+ */
+
+
+typedef isc_boolean_t (*dns_dlzssumatch_t)(dns_name_t *signer,
+                                          dns_name_t *name,
+                                          isc_netaddr_t *tcpaddr,
+                                          dns_rdatatype_t type,
+                                          const dst_key_t *key,
+                                          void *driverarg, void *dbdata);
+/*%<
+ * Method prototype.  Drivers implementing the DLZ interface may
+ * optionally supply a ssumatch method. If supplied, this will be
+ * called to authorize update requests
+ */
+
 /*% the methods supplied by a DLZ driver */
 typedef struct dns_dlzmethods {
        dns_dlzcreate_t         create;
        dns_dlzdestroy_t        destroy;
        dns_dlzfindzone_t       findzone;
        dns_dlzallowzonexfr_t   allowzonexfr;
+       dns_dlzconfigure_t      configure;
+       dns_dlzssumatch_t       ssumatch;
 } dns_dlzmethods_t;
 
 /*% information about a DLZ driver */
@@ -183,12 +209,18 @@ struct dns_dlzimplementation {
        ISC_LINK(dns_dlzimplementation_t)       link;
 };
 
-/*% an instance of a DLZ driver */
+typedef isc_result_t (*dlzconfigure_callback_t)(dns_view_t *, dns_zone_t *);
+
+/*% An instance of a DLZ driver */
 struct dns_dlzdb {
        unsigned int            magic;
        isc_mem_t               *mctx;
        dns_dlzimplementation_t *implementation;
        void                    *dbdata;
+       dlzconfigure_callback_t configure_callback;
+#ifdef BIND9
+       dns_ssutable_t          *ssutable;
+#endif
 };
 
 
@@ -285,6 +317,30 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp);
  * is called.
  */
 
+
+isc_result_t
+dns_dlz_writeablezone(dns_view_t *view, const char *zone_name);
+
+/*%<
+ * creates a writeable DLZ zone. Must be called from within the
+ * configure() method of a DLZ driver.
+ */
+
+
+isc_result_t
+dns_dlzconfigure(dns_view_t *view, dlzconfigure_callback_t callback);
+/*%<
+ * call a DLZ drivers configure method, if supplied
+ */
+
+isc_boolean_t
+dns_dlz_ssumatch(dns_dlzdb_t *dlzdatabase,
+                 dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr,
+                 dns_rdatatype_t type, const dst_key_t *key);
+/*%<
+ * call a DLZ drivers ssumatch method, if supplied. Otherwise return ISC_FALSE
+ */
+
 ISC_LANG_ENDDECLS
 
 #endif /* DLZ_H */
index c452f463fc1d5ae6963156ccc045070a8fecca61..39ccd30a53f06f704256e000af2dacc995668ae5 100644 (file)
@@ -50,7 +50,7 @@
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: sdlz.h,v 1.9 2009/01/17 23:47:43 tbox Exp $ */
+/* $Id: sdlz.h,v 1.10 2010/12/18 01:56:22 each Exp $ */
 
 /*! \file dns/sdlz.h */
 
@@ -74,11 +74,10 @@ typedef struct dns_sdlzlookup dns_sdlzlookup_t;
  /* A simple DLZ database traversal in progress. */
 typedef struct dns_sdlzallnodes dns_sdlzallnodes_t;
 
-
-typedef isc_result_t
-(*dns_sdlzallnodesfunc_t)(const char *zone, void *driverarg, void *dbdata,
-                         dns_sdlzallnodes_t *allnodes);
-
+typedef isc_result_t (*dns_sdlzallnodesfunc_t)(const char *zone,
+                                              void *driverarg,
+                                              void *dbdata,
+                                              dns_sdlzallnodes_t *allnodes);
 /*%<
  * Method prototype.  Drivers implementing the SDLZ interface may
  * supply an all nodes method.  This method is called when the DNS
@@ -92,9 +91,9 @@ typedef isc_result_t
  * does not have to implement an all nodes method.
  */
 
-typedef isc_result_t
-(*dns_sdlzallowzonexfr_t)(void *driverarg, void *dbdata, const char *name,
-                         const char *client);
+typedef isc_result_t (*dns_sdlzallowzonexfr_t)(void *driverarg,
+                                              void *dbdata, const char *name,
+                                              const char *client);
 
 /*%<
  * Method prototype.  Drivers implementing the SDLZ interface may
@@ -117,9 +116,9 @@ typedef isc_result_t
  * error.
  */
 
-typedef isc_result_t
-(*dns_sdlzauthorityfunc_t)(const char *zone, void *driverarg, void *dbdata,
-                          dns_sdlzlookup_t *lookup);
+typedef isc_result_t (*dns_sdlzauthorityfunc_t)(const char *zone,
+                                               void *driverarg, void *dbdata,
+                                               dns_sdlzlookup_t *lookup);
 
 /*%<
  * Method prototype.  Drivers implementing the SDLZ interface may
@@ -131,9 +130,9 @@ typedef isc_result_t
  * method.
  */
 
-typedef isc_result_t
-(*dns_sdlzcreate_t)(const char *dlzname, unsigned int argc, char *argv[],
-                   void *driverarg, void **dbdata);
+typedef isc_result_t (*dns_sdlzcreate_t)(const char *dlzname,
+                                        unsigned int argc, char *argv[],
+                                        void *driverarg, void **dbdata);
 
 /*%<
  * Method prototype.  Drivers implementing the SDLZ interface may
@@ -142,8 +141,7 @@ typedef isc_result_t
  * does not have to implement a create method.
  */
 
-typedef void
-(*dns_sdlzdestroy_t)(void *driverarg, void *dbdata);
+typedef void (*dns_sdlzdestroy_t)(void *driverarg, void *dbdata);
 
 /*%<
  * Method prototype.  Drivers implementing the SDLZ interface may
@@ -198,6 +196,87 @@ typedef isc_result_t
  * lookup method.
  */
 
+typedef isc_result_t (*dns_sdlznewversion_t)(const char *zone,
+                                            void *driverarg, void *dbdata,
+                                            void **versionp);
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface may
+ * supply a newversion method.  This method is called to start a
+ * write transaction on a zone and should only be implemented by
+ * writeable backends.
+ * When implemented, the driver should create a new transaction, and
+ * fill *versionp with a pointer to the transaction state. The
+ * closeversion function will be called to close the transaction.
+ */
+
+typedef void (*dns_sdlzcloseversion_t)(const char *zone, isc_boolean_t commit,
+                                      void *driverarg, void *dbdata,
+                                      void **versionp);
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface must
+ * supply a closeversion method if they supply a newversion method.
+ * When implemented, the driver should close the given transaction,
+ * committing changes if 'commit' is ISC_TRUE. If 'commit' is not true
+ * then all changes should be discarded and the database rolled back.
+ * If the call is successful then *versionp should be set to NULL
+ */
+
+typedef isc_result_t (*dns_sdlzconfigure_t)(dns_view_t *view, void *driverarg,
+                                           void *dbdata);
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface may
+ * supply a configure method. When supplied, it will be called
+ * immediately after the create method to give the driver a chance
+ * to configure writeable zones
+ */
+
+
+typedef isc_boolean_t (*dns_sdlzssumatch_t)(const char *signer,
+                                           const char *name,
+                                           const char *tcpaddr,
+                                           const char *type,
+                                           const char *key,
+                                           uint32_t keydatalen,
+                                           uint8_t *keydata,
+                                           void *driverarg,
+                                           void *dbdata);
+
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface may
+ * supply a ssumatch method. If supplied, then ssumatch will be
+ * called to authorize any zone updates. The driver should return
+ * ISC_TRUE to allow the update, and ISC_FALSE to deny it. For a DLZ
+ * controlled zone, this is the only access control on updates.
+ */
+
+
+typedef isc_result_t (*dns_sdlzmodrdataset_t)(const char *name,
+                                             const char *rdatastr,
+                                             void *driverarg, void *dbdata,
+                                             void *version);
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface may
+ * supply addrdataset and subtractrdataset methods. If supplied, then these
+ * will be called when rdatasets are added/subtracted during
+ * updates. The version parameter comes from a call to the sdlz
+ * newversion() method from the driver. The rdataset parameter is a
+ * linearise string representation of the rdataset change. The format
+ * is the same as used by dig when displaying records. The fields are
+ * tab delimited.
+ */
+
+typedef isc_result_t (*dns_sdlzdelrdataset_t)(const char *name,
+                                             const char *type,
+                                             void *driverarg, void *dbdata,
+                                             void *version);
+/*%<
+ * Method prototype.  Drivers implementing the SDLZ interface may
+ * supply a delrdataset method. If supplied, then this
+ * function will be called when rdatasets are deleted during
+ * updates. The call should remove all rdatasets of the given type for
+ * the specified name.
+ */
+
 typedef struct dns_sdlzmethods {
        dns_sdlzcreate_t        create;
        dns_sdlzdestroy_t       destroy;
@@ -206,6 +285,13 @@ typedef struct dns_sdlzmethods {
        dns_sdlzauthorityfunc_t authority;
        dns_sdlzallnodesfunc_t  allnodes;
        dns_sdlzallowzonexfr_t  allowzonexfr;
+       dns_sdlznewversion_t    newversion;
+       dns_sdlzcloseversion_t  closeversion;
+       dns_sdlzconfigure_t     configure;
+       dns_sdlzssumatch_t      ssumatch;
+       dns_sdlzmodrdataset_t   addrdataset;
+       dns_sdlzmodrdataset_t   subtractrdataset;
+       dns_sdlzdelrdataset_t   delrdataset;
 } dns_sdlzmethods_t;
 
 isc_result_t
@@ -261,6 +347,14 @@ dns_sdlz_putsoa(dns_sdlzlookup_t *lookup, const char *mname, const char *rname,
  */
 
 
+isc_result_t
+dns_sdlz_setdb(dns_dlzdb_t *dlzdatabase, dns_rdataclass_t rdclass,
+              dns_name_t *name, dns_db_t **dbp);
+/*%<
+ * Create the database pointers for a writeable SDLZ zone
+ */
+
+
 ISC_LANG_ENDDECLS
 
 #endif /* SDLZ_H */
index f013bd03edefc9666ed8b4b3b0e98a2f571c966a..7e412295b7be4d5ebedcbaebe6f7cf2a7bc90b63 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: ssu.h,v 1.24 2008/01/18 23:46:58 tbox Exp $ */
+/* $Id: ssu.h,v 1.25 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef DNS_SSU_H
 #define DNS_SSU_H 1
@@ -25,6 +25,7 @@
 #include <isc/lang.h>
 
 #include <dns/types.h>
+#include <dst/dst.h>
 
 ISC_LANG_BEGINDECLS
 
@@ -40,7 +41,8 @@ ISC_LANG_BEGINDECLS
 #define DNS_SSUMATCHTYPE_SUBDOMAINKRB5 9
 #define DNS_SSUMATCHTYPE_TCPSELF       10
 #define DNS_SSUMATCHTYPE_6TO4SELF      11
-#define DNS_SSUMATCHTYPE_MAX           11  /* max value */
+#define DNS_SSUMATCHTYPE_DLZ           12
+#define DNS_SSUMATCHTYPE_MAX           12  /* max value */
 
 isc_result_t
 dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table);
@@ -57,6 +59,16 @@ dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table);
  *\li          ISC_R_NOMEMORY
  */
 
+isc_result_t
+dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep,
+                      dns_dlzdb_t *dlzdatabase);
+/*%<
+ * Create an SSU table that contains a dlzdatabase pointer, and a
+ * single rule with matchtype DNS_SSUMATCHTYPE_DLZ. This type of SSU
+ * table is used by writeable DLZ drivers to offload authorization for
+ * updates to the driver.
+ */
+
 void
 dns_ssutable_attach(dns_ssutable_t *source, dns_ssutable_t **targetp);
 /*%<
@@ -120,7 +132,7 @@ dns_ssutable_addrule(dns_ssutable_t *table, isc_boolean_t grant,
 isc_boolean_t
 dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer,
                        dns_name_t *name, isc_netaddr_t *tcpaddr,
-                       dns_rdatatype_t type);
+                       dns_rdatatype_t type, const dst_key_t *key);
 /*%<
  *     Checks that the attempted update of (name, type) is allowed according
  *     to the rules specified in the simple-secure-update rule table.  If
index 6a002a9ae54b07a576c07a096811950fc7fc240b..2801c37ef8ab4c06a3e0d8b19c0ee3679c08602a 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: tkey.h,v 1.28 2009/01/17 23:47:43 tbox Exp $ */
+/* $Id: tkey.h,v 1.29 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef DNS_TKEY_H
 #define DNS_TKEY_H 1
@@ -44,6 +44,7 @@ struct dns_tkeyctx {
        gss_cred_id_t gsscred;
        isc_mem_t *mctx;
        isc_entropy_t *ectx;
+       char *gssapi_keytab;
 };
 
 isc_result_t
@@ -123,7 +124,8 @@ dns_tkey_builddhquery(dns_message_t *msg, dst_key_t *key, dns_name_t *name,
 isc_result_t
 dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname,
                       isc_buffer_t *intoken, isc_uint32_t lifetime,
-                      gss_ctx_id_t *context, isc_boolean_t win2k);
+                      gss_ctx_id_t *context, isc_boolean_t win2k,
+                      dns_name_t *zone, isc_mem_t *mctx, char **err_message);
 /*%<
  *     Builds a query containing a TKEY that will generate a GSSAPI context.
  *     The key is requested to have the specified lifetime (in seconds).
@@ -141,6 +143,7 @@ dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname,
  *\li          ISC_R_SUCCESS   msg was successfully updated to include the
  *                             query to be sent
  *\li          other           an error occurred while building the message
+ *\li          *err_message    optional error message
  */
 
 
@@ -187,7 +190,7 @@ isc_result_t
 dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg,
                            dns_name_t *gname, gss_ctx_id_t *context,
                            isc_buffer_t *outtoken, dns_tsigkey_t **outkey,
-                           dns_tsig_keyring_t *ring);
+                           dns_tsig_keyring_t *ring, char **err_message);
 /*%<
  * XXX
  */
@@ -211,12 +214,12 @@ dns_tkey_processdeleteresponse(dns_message_t *qmsg, dns_message_t *rmsg,
  *                             component of the query or response
  */
 
-
 isc_result_t
 dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg,
                      dns_name_t *server, gss_ctx_id_t *context,
                      dns_tsigkey_t **outkey, dns_tsig_keyring_t *ring,
-                     isc_boolean_t win2k);
+                     isc_boolean_t win2k, dns_name_t *zone,
+                     char **err_message);
 
 /*
  *     Client side negotiation of GSS-TSIG.  Process the response
index d4c90473e05cc7b9f951ceb7d8bcfe0a2852875b..de16129325e72c4045e94cfc8978bdc34c45299a 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zone.h,v 1.181 2010/12/16 23:47:08 tbox Exp $ */
+/* $Id: zone.h,v 1.182 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef DNS_ZONE_H
 #define DNS_ZONE_H 1
@@ -42,7 +42,8 @@ typedef enum {
        dns_zone_slave,
        dns_zone_stub,
        dns_zone_staticstub,
-       dns_zone_key
+       dns_zone_key,
+       dns_zone_dlz
 } dns_zonetype_t;
 
 #define DNS_ZONEOPT_SERVERS      0x00000001U   /*%< perform server checks */
@@ -1845,6 +1846,12 @@ dns_zone_getadded(dns_zone_t *zone);
  * \li 'zone' to be valid.
  */
 
+isc_result_t
+dns_zone_dlzpostload(dns_zone_t *zone, dns_db_t *db);
+/*%
+ * Load the origin names for a writeable DLZ database.
+ */
+
 ISC_LANG_ENDDECLS
 
 #endif /* DNS_ZONE_H */
index 4ddfaf36b9c76563381a58d676b3588b672c7769..8ee9da686d45f1df0a59d25dd627acd22b74a3ab 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dst.h,v 1.27 2010/12/09 04:31:57 tbox Exp $ */
+/* $Id: dst.h,v 1.28 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef DST_DST_H
 #define DST_DST_H 1
@@ -470,7 +470,7 @@ dst_key_getgssctx(const dst_key_t *key);
 
 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 **keyp, isc_region_t *intoken);
 /*%<
  * Converts a GSSAPI opaque context id into a DST key.
  *
@@ -831,12 +831,21 @@ dst_key_setprivateformat(dst_key_t *key, int major, int minor);
 #define DST_KEY_FORMATSIZE (DNS_NAME_FORMATSIZE + DNS_SECALG_FORMATSIZE + 7)
 
 void
-dst_key_format(dst_key_t *key, char *cp, unsigned int size);
+dst_key_format(const dst_key_t *key, char *cp, unsigned int size);
 /*%<
  * Write the uniquely identifying information about the key (name,
  * algorithm, key ID) into a string 'cp' of size 'size'.
  */
 
+
+isc_buffer_t *
+dst_key_tkeytoken(const dst_key_t *key);
+/*%<
+ * Return the token from the TKEY request, if any.  If this key was
+ * not negotiated via TKEY, return NULL.
+ */
+
+
 ISC_LANG_ENDDECLS
 
 #endif /* DST_DST_H */
index 31e454a4a1261d775c5a0ec59708b0a841314030..5439b3915b82317d0e7790091ee6589d82e4695f 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: gssapi.h,v 1.11 2009/01/17 23:47:43 tbox Exp $ */
+/* $Id: gssapi.h,v 1.13 2010/12/18 14:46:21 marka Exp $ */
 
 #ifndef DST_GSSAPI_H
 #define DST_GSSAPI_H 1
  * MSVC does not like macros in #include lines.
  */
 #include <gssapi/gssapi.h>
+#include <gssapi/gssapi_krb5.h>
 #else
 #include ISC_PLATFORM_GSSAPIHEADER
+#ifdef ISC_PLATFORM_GSSAPI_KRB5_HEADER
+#include ISC_PLATFORM_GSSAPI_KRB5_HEADER
+#endif
 #endif
 #ifndef GSS_SPNEGO_MECHANISM
 #define GSS_SPNEGO_MECHANISM ((void*)0)
@@ -90,7 +94,8 @@ dst_gssapi_releasecred(gss_cred_id_t *cred);
 
 isc_result_t
 dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
-                  isc_buffer_t *outtoken, gss_ctx_id_t *gssctx);
+                  isc_buffer_t *outtoken, gss_ctx_id_t *gssctx,
+                  dns_name_t *zone, isc_mem_t *mctx, char **err_message);
 /*
  *     Initiates a GSS context.
  *
@@ -108,10 +113,12 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken,
  *             ISC_R_SUCCESS   msg was successfully updated to include the
  *                             query to be sent
  *             other           an error occurred while building the message
+ *             *err_message    optional error message
  */
 
 isc_result_t
 dst_gssapi_acceptctx(gss_cred_id_t cred,
+                    const char *gssapi_keytab,
                     isc_region_t *intoken, isc_buffer_t **outtoken,
                     gss_ctx_id_t *context, dns_name_t *principal,
                     isc_mem_t *mctx);
index 9c553c80109ca01ea37692adad1fd927772624be..2e3179aaae8136cf2a1791a4bb7c9b086df43ff6 100644 (file)
@@ -50,7 +50,7 @@
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: sdlz.c,v 1.25 2010/08/16 04:46:16 marka Exp $ */
+/* $Id: sdlz.c,v 1.28 2010/12/19 02:37:08 each Exp $ */
 
 /*! \file */
 
@@ -108,6 +108,8 @@ struct dns_sdlz_db {
        isc_mutex_t                     refcnt_lock;
        /* Locked */
        unsigned int                    references;
+       dns_dbversion_t                 *future_version;
+       int                             dummy_version;
 };
 
 struct dns_sdlzlookup {
@@ -164,8 +166,6 @@ typedef struct sdlz_rdatasetiter {
 /* This is a reasonable value */
 #define SDLZ_DEFAULT_TTL       (60 * 60 * 24)
 
-static int dummy;
-
 #ifdef __COVERITY__
 #define MAYBE_LOCK(imp) LOCK(&imp->driverlock)
 #define MAYBE_UNLOCK(imp) UNLOCK(&imp->driverlock)
@@ -225,11 +225,22 @@ static dns_dbiteratormethods_t dbiterator_methods = {
  * Utility functions
  */
 
-/*% Converts the input string to lowercase, in place. */
+/*
+ * Log a message at the given level
+ */
+static void
+sdlz_log(int level, const char *fmt, ...) {
+       va_list ap;
+       va_start(ap, fmt);
+       isc_log_vwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE,
+                      DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(level),
+                      fmt, ap);
+       va_end(ap);
+}
 
+/*% Converts the input string to lowercase, in place. */
 static void
 dns_sdlz_tolower(char *str) {
-
        unsigned int len = strlen(str);
        unsigned int i;
 
@@ -237,7 +248,6 @@ dns_sdlz_tolower(char *str) {
                if (str[i] >= 'A' && str[i] <= 'Z')
                        str[i] += 32;
        }
-
 }
 
 static inline unsigned int
@@ -381,43 +391,79 @@ dump(dns_db_t *db, dns_dbversion_t *version, const char *filename,
 
 static void
 currentversion(dns_db_t *db, dns_dbversion_t **versionp) {
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       REQUIRE(VALID_SDLZDB(sdlz));
        REQUIRE(versionp != NULL && *versionp == NULL);
 
-       UNUSED(db);
-
-       *versionp = (void *) &dummy;
+       *versionp = (void *) &sdlz->dummy_version;
        return;
 }
 
 static isc_result_t
 newversion(dns_db_t *db, dns_dbversion_t **versionp) {
-       UNUSED(db);
-       UNUSED(versionp);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       char origin[DNS_NAME_MAXTEXT + 1];
+       isc_result_t result;
 
-       return (ISC_R_NOTIMPLEMENTED);
+       REQUIRE(VALID_SDLZDB(sdlz));
+
+       if (sdlz->dlzimp->methods->newversion == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       dns_name_format(&sdlz->common.origin, origin, sizeof(origin));
+
+       result = sdlz->dlzimp->methods->newversion(origin,
+                                                  sdlz->dlzimp->driverarg,
+                                                  sdlz->dbdata, versionp);
+       if (result != ISC_R_SUCCESS) {
+               sdlz_log(ISC_LOG_ERROR,
+                        "sdlz newversion on origin %s failed : %s",
+                        origin, isc_result_totext(result));
+               return (result);
+       }
+
+       sdlz->future_version = *versionp;
+       return (ISC_R_SUCCESS);
 }
 
 static void
 attachversion(dns_db_t *db, dns_dbversion_t *source,
              dns_dbversion_t **targetp)
 {
-       REQUIRE(source != NULL && source == (void *) &dummy);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+
+       REQUIRE(VALID_SDLZDB(sdlz));
+       REQUIRE(source != NULL && source == (void *)&sdlz->dummy_version);
 
-       UNUSED(db);
-       UNUSED(source);
-       UNUSED(targetp);
        *targetp = source;
 }
 
 static void
 closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
-       REQUIRE(versionp != NULL && *versionp == (void *) &dummy);
-       REQUIRE(commit == ISC_FALSE);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       char origin[DNS_NAME_MAXTEXT + 1];
 
-       UNUSED(db);
-       UNUSED(commit);
+       REQUIRE(VALID_SDLZDB(sdlz));
+       REQUIRE(versionp != NULL);
+
+       if (*versionp == (void *)&sdlz->dummy_version) {
+               *versionp = NULL;
+               return;
+       }
+
+       REQUIRE(*versionp == sdlz->future_version);
+       REQUIRE(sdlz->dlzimp->methods->closeversion != NULL);
+
+       dns_name_format(&sdlz->common.origin, origin, sizeof(origin));
 
-       *versionp = NULL;
+       sdlz->dlzimp->methods->closeversion(origin, commit,
+                                           sdlz->dlzimp->driverarg,
+                                           sdlz->dbdata, versionp);
+       if (*versionp != NULL)
+               sdlz_log(ISC_LOG_ERROR,
+                       "sdlz closeversion on origin %s failed", origin);
+
+       sdlz->future_version = NULL;
 }
 
 static isc_result_t
@@ -506,11 +552,11 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
        dns_sdlzauthorityfunc_t authority;
 
        REQUIRE(VALID_SDLZDB(sdlz));
-       REQUIRE(create == ISC_FALSE);
        REQUIRE(nodep != NULL && *nodep == NULL);
 
-       UNUSED(name);
-       UNUSED(create);
+       if (sdlz->dlzimp->methods->newversion == NULL) {
+               REQUIRE(create == ISC_FALSE);
+       }
 
        isc_buffer_init(&b, namestr, sizeof(namestr));
        if ((sdlz->dlzimp->flags & DNS_SDLZFLAG_RELATIVEOWNER) != 0) {
@@ -558,7 +604,7 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
         * if the host (namestr) was not found, try to lookup a
         * "wildcard" host.
         */
-       if (result != ISC_R_SUCCESS) {
+       if (result != ISC_R_SUCCESS && !create) {
                result = sdlz->dlzimp->methods->lookup(zonestr, "*",
                                                       sdlz->dlzimp->driverarg,
                                                       sdlz->dbdata, node);
@@ -566,7 +612,7 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
 
        MAYBE_UNLOCK(sdlz->dlzimp);
 
-       if (result != ISC_R_SUCCESS && !isorigin) {
+       if (result != ISC_R_SUCCESS && !isorigin && !create) {
                destroynode(node);
                return (result);
        }
@@ -584,6 +630,23 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
                }
        }
 
+       if (node->name == NULL) {
+               node->name = isc_mem_get(sdlz->common.mctx,
+                                        sizeof(dns_name_t));
+               if (node->name == NULL) {
+                       destroynode(node);
+                       return (ISC_R_NOMEMORY);
+               }
+               dns_name_init(node->name, NULL);
+               result = dns_name_dup(name, sdlz->common.mctx, node->name);
+               if (result != ISC_R_SUCCESS) {
+                       isc_mem_put(sdlz->common.mctx, node->name,
+                                   sizeof(dns_name_t));
+                       destroynode(node);
+                       return (result);
+               }
+       }
+
        *nodep = node;
        return (ISC_R_SUCCESS);
 }
@@ -778,7 +841,7 @@ find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
 
        REQUIRE(VALID_SDLZDB(sdlz));
        REQUIRE(nodep == NULL || *nodep == NULL);
-       REQUIRE(version == NULL || version == (void *) &dummy);
+       REQUIRE(version == NULL || version == (void*)&sdlz->dummy_version);
 
        UNUSED(options);
        UNUSED(sdlz);
@@ -920,9 +983,14 @@ static isc_result_t
 allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
             isc_stdtime_t now, dns_rdatasetiter_t **iteratorp)
 {
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *) db;
        sdlz_rdatasetiter_t *iterator;
 
-       REQUIRE(version == NULL || version == &dummy);
+       REQUIRE(VALID_SDLZDB(sdlz));
+
+       REQUIRE(version == NULL ||
+               version == (void*)&sdlz->dummy_version ||
+               version == sdlz->future_version);
 
        UNUSED(version);
        UNUSED(now);
@@ -944,48 +1012,140 @@ allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
        return (ISC_R_SUCCESS);
 }
 
+static isc_result_t
+modrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
+           dns_rdataset_t *rdataset, unsigned int options,
+           dns_sdlzmodrdataset_t mod_function)
+{
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       dns_master_style_t *style = NULL;
+       isc_result_t result;
+       isc_buffer_t *buffer = NULL;
+       isc_mem_t *mctx;
+       dns_sdlznode_t *sdlznode;
+       char *rdatastr = NULL;
+       char name[DNS_NAME_MAXTEXT + 1];
+
+       REQUIRE(VALID_SDLZDB(sdlz));
+
+       if (mod_function == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       sdlznode = (dns_sdlznode_t *)node;
+
+       UNUSED(options);
+
+       dns_name_format(sdlznode->name, name, sizeof(name));
+
+       mctx = sdlz->common.mctx;
+
+       result = isc_buffer_allocate(mctx, &buffer, 1024);
+       if (result != ISC_R_SUCCESS)
+               return (result);
+
+       result = dns_master_stylecreate(&style, 0, 0, 0, 0, 0, 0, 1, mctx);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+
+       result = dns_master_rdatasettotext(sdlznode->name, rdataset,
+                                          style, buffer);
+       if (result != ISC_R_SUCCESS)
+               goto cleanup;
+
+       if (isc_buffer_usedlength(buffer) < 1) {
+               result = ISC_R_BADADDRESSFORM;
+               goto cleanup;
+       }
+
+       rdatastr = isc_buffer_base(buffer);
+       if (rdatastr == NULL) {
+               result = ISC_R_NOMEMORY;
+               goto cleanup;
+       }
+       rdatastr[isc_buffer_usedlength(buffer) - 1] = 0;
+
+       MAYBE_LOCK(sdlz->dlzimp);
+       result = mod_function(name, rdatastr, sdlz->dlzimp->driverarg,
+                             sdlz->dbdata, version);
+       MAYBE_UNLOCK(sdlz->dlzimp);
+
+cleanup:
+       isc_buffer_free(&buffer);
+       if (style != NULL)
+               dns_master_styledestroy(&style, mctx);
+
+       return (result);
+}
+
 static isc_result_t
 addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
            isc_stdtime_t now, dns_rdataset_t *rdataset, unsigned int options,
            dns_rdataset_t *addedrdataset)
 {
-       UNUSED(db);
-       UNUSED(node);
-       UNUSED(version);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       isc_result_t result;
+
        UNUSED(now);
-       UNUSED(rdataset);
-       UNUSED(options);
        UNUSED(addedrdataset);
+       REQUIRE(VALID_SDLZDB(sdlz));
 
-       return (ISC_R_NOTIMPLEMENTED);
+       if (sdlz->dlzimp->methods->addrdataset == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       result = modrdataset(db, node, version, rdataset, options,
+                            sdlz->dlzimp->methods->addrdataset);
+       return (result);
 }
 
+
 static isc_result_t
 subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
                 dns_rdataset_t *rdataset, unsigned int options,
                 dns_rdataset_t *newrdataset)
 {
-       UNUSED(db);
-       UNUSED(node);
-       UNUSED(version);
-       UNUSED(rdataset);
-       UNUSED(options);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       isc_result_t result;
+
        UNUSED(newrdataset);
+       REQUIRE(VALID_SDLZDB(sdlz));
 
-       return (ISC_R_NOTIMPLEMENTED);
+       if (sdlz->dlzimp->methods->subtractrdataset == NULL) {
+               return (ISC_R_NOTIMPLEMENTED);
+       }
+
+       result = modrdataset(db, node, version, rdataset, options,
+                            sdlz->dlzimp->methods->subtractrdataset);
+       return (result);
 }
 
 static isc_result_t
 deleterdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
               dns_rdatatype_t type, dns_rdatatype_t covers)
 {
-       UNUSED(db);
-       UNUSED(node);
-       UNUSED(version);
-       UNUSED(type);
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       char name[DNS_NAME_MAXTEXT + 1];
+       char b_type[DNS_RDATATYPE_FORMATSIZE];
+       dns_sdlznode_t *sdlznode;
+       isc_result_t result;
+
        UNUSED(covers);
 
-       return (ISC_R_NOTIMPLEMENTED);
+       REQUIRE(VALID_SDLZDB(sdlz));
+
+       if (sdlz->dlzimp->methods->delrdataset == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       sdlznode = (dns_sdlznode_t *)node;
+       dns_name_format(sdlznode->name, name, sizeof(name));
+       dns_rdatatype_format(type, b_type, sizeof(b_type));
+
+       MAYBE_LOCK(sdlz->dlzimp);
+       result = sdlz->dlzimp->methods->delrdataset(name, b_type,
+                                                   sdlz->dlzimp->driverarg,
+                                                   sdlz->dbdata, version);
+       MAYBE_UNLOCK(sdlz->dlzimp);
+
+       return (result);
 }
 
 static isc_boolean_t
@@ -1021,6 +1181,26 @@ settask(dns_db_t *db, isc_task_t *task) {
 }
 
 
+/*
+ * getoriginnode() is used by the update code to find the
+ * dns_rdatatype_dnskey record for a zone
+ */
+static isc_result_t
+getoriginnode(dns_db_t *db, dns_dbnode_t **nodep) {
+       dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db;
+       isc_result_t result;
+
+       REQUIRE(VALID_SDLZDB(sdlz));
+       if (sdlz->dlzimp->methods->newversion == NULL)
+               return (ISC_R_NOTIMPLEMENTED);
+
+       result = findnode(db, &sdlz->common.origin, ISC_FALSE, nodep);
+       if (result != ISC_R_SUCCESS)
+               sdlz_log(ISC_LOG_ERROR, "sdlz getoriginnode failed : %s",
+                        isc_result_totext(result));
+       return (result);
+}
+
 static dns_dbmethods_t sdlzdb_methods = {
        attach,
        detach,
@@ -1049,7 +1229,7 @@ static dns_dbmethods_t sdlzdb_methods = {
        ispersistent,
        overmem,
        settask,
-       NULL,
+       getoriginnode,
        NULL,
        NULL,
        NULL,
@@ -1371,9 +1551,7 @@ dns_sdlzcreate(isc_mem_t *mctx, const char *dlzname, unsigned int argc,
        isc_result_t result = ISC_R_NOTFOUND;
 
        /* Write debugging message to log */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2),
-                     "Loading SDLZ driver.");
+       sdlz_log(ISC_LOG_DEBUG(2), "Loading SDLZ driver.");
 
        /*
         * Performs checks to make sure data is as we expect it to be.
@@ -1395,13 +1573,9 @@ dns_sdlzcreate(isc_mem_t *mctx, const char *dlzname, unsigned int argc,
 
        /* Write debugging message to log */
        if (result == ISC_R_SUCCESS) {
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2),
-                             "SDLZ driver loaded successfully.");
+               sdlz_log(ISC_LOG_DEBUG(2), "SDLZ driver loaded successfully.");
        } else {
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
-                             "SDLZ driver failed to load.");
+               sdlz_log(ISC_LOG_ERROR, "SDLZ driver failed to load.");
        }
 
        return (result);
@@ -1414,9 +1588,7 @@ dns_sdlzdestroy(void *driverdata, void **dbdata)
        dns_sdlzimplementation_t *imp;
 
        /* Write debugging message to log */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2),
-                     "Unloading SDLZ driver.");
+       sdlz_log(ISC_LOG_DEBUG(2), "Unloading SDLZ driver.");
 
        imp = driverdata;
 
@@ -1472,11 +1644,97 @@ dns_sdlzfindzone(void *driverarg, void *dbdata, isc_mem_t *mctx,
        return (result);
 }
 
+
+static isc_result_t
+dns_sdlzconfigure(void *driverarg, void *dbdata, dns_view_t *view)
+{
+       isc_result_t result;
+       dns_sdlzimplementation_t *imp;
+
+       REQUIRE(driverarg != NULL);
+
+       imp = (dns_sdlzimplementation_t *) driverarg;
+
+       /* Call SDLZ driver's configure method */
+       if (imp->methods->configure != NULL) {
+               MAYBE_LOCK(imp);
+               result = imp->methods->configure(view, imp->driverarg, dbdata);
+               MAYBE_UNLOCK(imp);
+       } else {
+               result = ISC_R_SUCCESS;
+       }
+
+       return (result);
+}
+
+static isc_boolean_t
+dns_sdlzssumatch(dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr,
+                dns_rdatatype_t type, const dst_key_t *key, void *driverarg,
+                void *dbdata)
+{
+       dns_sdlzimplementation_t *imp;
+       char b_signer[DNS_NAME_FORMATSIZE];
+       char b_name[DNS_NAME_FORMATSIZE];
+       char b_addr[ISC_NETADDR_FORMATSIZE];
+       char b_type[DNS_RDATATYPE_FORMATSIZE];
+       char b_key[DST_KEY_FORMATSIZE];
+       isc_buffer_t *tkey_token;
+       isc_region_t token_region;
+       uint32_t token_len = 0;
+       isc_boolean_t ret;
+
+       REQUIRE(driverarg != NULL);
+
+       imp = (dns_sdlzimplementation_t *) driverarg;
+       if (imp->methods->ssumatch == NULL)
+               return (ISC_FALSE);
+
+       /*
+        * Format the request elements. sdlz operates on strings, not
+        * structures
+        */
+       if (signer)
+               dns_name_format(signer, b_signer, sizeof(b_signer));
+       else
+               b_signer[0] = 0;
+
+       dns_name_format(name, b_name, sizeof(b_name));
+
+       if (tcpaddr)
+               isc_netaddr_format(tcpaddr, b_addr, sizeof(b_addr));
+       else
+               b_addr[0] = 0;
+
+       dns_rdatatype_format(type, b_type, sizeof(b_type));
+
+       if (key)
+               dst_key_format(key, b_key, sizeof(b_key));
+       else
+               b_key[0] = 0;
+
+       tkey_token = dst_key_tkeytoken(key);
+
+       if (tkey_token) {
+               isc_buffer_region(tkey_token, &token_region);
+               token_len = token_region.length;
+       }
+
+       MAYBE_LOCK(imp);
+       ret = imp->methods->ssumatch(b_signer, b_name, b_addr, b_type, b_key,
+                                    token_len,
+                                    token_len ? token_region.base : NULL,
+                                    imp->driverarg, dbdata);
+       MAYBE_UNLOCK(imp);
+       return (ret);
+}
+
 static dns_dlzmethods_t sdlzmethods = {
        dns_sdlzcreate,
        dns_sdlzdestroy,
        dns_sdlzfindzone,
-       dns_sdlzallowzonexfr
+       dns_sdlzallowzonexfr,
+       dns_sdlzconfigure,
+       dns_sdlzssumatch
 };
 
 /*
@@ -1530,8 +1788,16 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl,
                ISC_LINK_INIT(rdatalist, link);
                ISC_LIST_APPEND(lookup->lists, rdatalist, link);
        } else
-               if (rdatalist->ttl != ttl)
-                       return (DNS_R_BADTTL);
+               if (rdatalist->ttl > ttl) {
+                       /*
+                        * BIND9 doesn't enforce all RRs in an RRset
+                        * having the same TTL, as per RFC 2136,
+                        * section 7.12. If a DLZ backend has
+                        * different TTLs, then the best
+                        * we can do is return the lowest.
+                       */
+                       rdatalist->ttl = ttl;
+               }
 
        rdata = isc_mem_get(mctx, sizeof(dns_rdata_t));
        if (rdata == NULL)
@@ -1694,9 +1960,7 @@ dns_sdlzregister(const char *drivername, const dns_sdlzmethods_t *methods,
                           DNS_SDLZFLAG_THREADSAFE)) == 0);
 
        /* Write debugging message to log */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2),
-                     "Registering SDLZ driver '%s'", drivername);
+       sdlz_log(ISC_LOG_DEBUG(2), "Registering SDLZ driver '%s'", drivername);
 
        /*
         * Allocate memory for a sdlz_implementation object.  Error if
@@ -1769,9 +2033,7 @@ dns_sdlzunregister(dns_sdlzimplementation_t **sdlzimp) {
        isc_mem_t *mctx;
 
        /* Write debugging message to log */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2),
-                     "Unregistering SDLZ driver.");
+       sdlz_log(ISC_LOG_DEBUG(2), "Unregistering SDLZ driver.");
 
        /*
         * Performs checks to make sure data is as we expect it to be.
@@ -1797,3 +2059,16 @@ dns_sdlzunregister(dns_sdlzimplementation_t **sdlzimp) {
 
        *sdlzimp = NULL;
 }
+
+
+isc_result_t
+dns_sdlz_setdb(dns_dlzdb_t *dlzdatabase, dns_rdataclass_t rdclass,
+              dns_name_t *name, dns_db_t **dbp)
+{
+       isc_result_t result;
+
+       result = dns_sdlzcreateDBP(dlzdatabase->mctx,
+                                  dlzdatabase->implementation->driverarg,
+                                  dlzdatabase->dbdata, name, rdclass, dbp);
+       return (result);
+}
index eda3d51e6a7f5b5eda9008a7643d0a0de3ee4275..cef3243b62547ca467a668d583a68d8380faa972 100644 (file)
@@ -14,7 +14,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: spnego.c,v 1.12 2009/07/21 06:53:09 marka Exp $ */
+/* $Id: spnego.c,v 1.13 2010/12/18 01:56:22 each Exp $ */
 
 /*! \file
  * \brief
 /* asn1_err.h */
 /* Generated from ../../../lib/asn1/asn1_err.et */
 
+#ifndef ERROR_TABLE_BASE_asn1
+/* these may be brought in already via gssapi_krb5.h */
 typedef enum asn1_error_number {
        ASN1_BAD_TIMEFORMAT = 1859794432,
        ASN1_MISSING_FIELD = 1859794433,
@@ -186,6 +188,7 @@ typedef enum asn1_error_number {
 } asn1_error_number;
 
 #define ERROR_TABLE_BASE_asn1 1859794432
+#endif
 
 #define __asn1_common_definitions__
 
index ab692420a1c9299ca9a8608aacc736038adb7d7d..3dd2ee4dc852c4b85b0aa0cde9bac85ef75ac246 100644 (file)
@@ -17,7 +17,7 @@
 
 /*! \file */
 /*
- * $Id: ssu.c,v 1.34 2008/01/18 23:46:58 tbox Exp $
+ * $Id: ssu.c,v 1.35 2010/12/18 01:56:22 each Exp $
  * Principal Author: Brian Wellington
  */
 
 #include <isc/string.h>
 #include <isc/util.h>
 
+#include <dns/dlz.h>
 #include <dns/fixedname.h>
 #include <dns/name.h>
 #include <dns/ssu.h>
 
 #include <dst/gssapi.h>
+#include <dst/dst.h>
 
 #define SSUTABLEMAGIC          ISC_MAGIC('S', 'S', 'U', 'T')
 #define VALID_SSUTABLE(table)  ISC_MAGIC_VALID(table, SSUTABLEMAGIC)
@@ -59,6 +61,7 @@ struct dns_ssutable {
        isc_mem_t *mctx;
        unsigned int references;
        isc_mutex_t lock;
+       dns_dlzdb_t *dlzdatabase;
        ISC_LIST(dns_ssurule_t) rules;
 };
 
@@ -345,7 +348,8 @@ stf_from_address(dns_name_t *stfself, isc_netaddr_t *tcpaddr) {
 isc_boolean_t
 dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer,
                        dns_name_t *name, isc_netaddr_t *tcpaddr,
-                       dns_rdatatype_t type)
+                       dns_rdatatype_t type,
+                       const dst_key_t *key)
 {
        dns_ssurule_t *rule;
        unsigned int i;
@@ -483,10 +487,21 @@ dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer,
                        if (!dns_name_equal(stfself, name))
                                continue;
                        break;
+               case DNS_SSUMATCHTYPE_DLZ:
+                       if (!dns_dlz_ssumatch(table->dlzdatabase, signer,
+                                             name, tcpaddr, type, key))
+                               continue;
+                       break;
                }
 
                if (rule->ntypes == 0) {
-                       if (!isusertype(type))
+                       /* 
+                        * If this is a DLZ rule, then the DLZ ssu
+                        * checks will have already checked
+                        * the type.
+                        */
+                       if (rule->matchtype != DNS_SSUMATCHTYPE_DLZ &&
+                           !isusertype(type))
                                continue;
                } else {
                        for (i = 0; i < rule->ntypes; i++) {
@@ -550,3 +565,42 @@ dns_ssutable_nextrule(dns_ssurule_t *rule, dns_ssurule_t **nextrule) {
        *nextrule = ISC_LIST_NEXT(rule, link);
        return (*nextrule != NULL ? ISC_R_SUCCESS : ISC_R_NOMORE);
 }
+
+/*
+ * Create a specialised SSU table that points at an external DLZ database
+ */
+isc_result_t
+dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep,
+                      dns_dlzdb_t *dlzdatabase)
+{
+       isc_result_t result;
+       dns_ssurule_t *rule;
+       dns_ssutable_t *table = NULL;
+
+       REQUIRE(tablep != NULL && *tablep == NULL);
+
+       result = dns_ssutable_create(mctx, &table);
+       if (result != ISC_R_SUCCESS)
+               return (result);
+
+       table->dlzdatabase = dlzdatabase;
+
+       rule = isc_mem_get(table->mctx, sizeof(dns_ssurule_t));
+       if (rule == NULL) {
+               dns_ssutable_detach(&table);
+               return (ISC_R_NOMEMORY);
+       }
+
+       rule->identity = NULL;
+       rule->name = NULL;
+       rule->types = NULL;
+       rule->grant = ISC_TRUE;
+       rule->matchtype = DNS_SSUMATCHTYPE_DLZ;
+       rule->ntypes = 0;
+       rule->types = NULL;
+       rule->magic = SSURULEMAGIC;
+
+       ISC_LIST_INITANDAPPEND(table->rules, rule, link);
+       *tablep = table;
+       return (ISC_R_SUCCESS);
+}
index 16f425f8c6572bf53d02f89032cca494d6dad70a..2a3f107b3a257b4623933f0d00ba809eb5e6210f 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /*
- * $Id: tkey.c,v 1.96 2010/12/09 00:54:34 marka Exp $
+ * $Id: tkey.c,v 1.98 2010/12/18 23:47:11 tbox Exp $
  */
 /*! \file */
 #include <config.h>
@@ -99,6 +99,7 @@ dns_tkeyctx_create(isc_mem_t *mctx, isc_entropy_t *ectx, dns_tkeyctx_t **tctxp)
        tctx->dhkey = NULL;
        tctx->domain = NULL;
        tctx->gsscred = NULL;
+       tctx->gssapi_keytab = NULL;
 
        *tctxp = tctx;
        return (ISC_R_SUCCESS);
@@ -121,6 +122,9 @@ dns_tkeyctx_destroy(dns_tkeyctx_t **tctxp) {
                        dns_name_free(tctx->domain, mctx);
                isc_mem_put(mctx, tctx->domain, sizeof(dns_name_t));
        }
+       if (tctx->gssapi_keytab != NULL) {
+               isc_mem_free(mctx, tctx->gssapi_keytab);
+       }
        if (tctx->gsscred != NULL)
                dst_gssapi_releasecred(&tctx->gsscred);
        isc_entropy_detach(&tctx->ectx);
@@ -430,8 +434,17 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin,
        isc_buffer_t *outtoken = NULL;
        gss_ctx_id_t gss_ctx = NULL;
 
-       if (tctx->gsscred == NULL)
+       /*
+        * You have to define either a gss credential (principal) to
+        * accept with tkey-gssapi-credential, or you have to
+        * configure a specific keytab (with tkey-gssapi-keytab) in
+        * order to use gsstkey
+        */
+       if (tctx->gsscred == NULL && tctx->gssapi_keytab == NULL) {
+               tkey_log("process_gsstkey(): no tkey-gssapi-credential "
+                        "or tkey-gssapi-keytab configured");
                return (ISC_R_NOPERM);
+       }
 
        if (!dns_name_equal(&tkeyin->algorithm, DNS_TSIG_GSSAPI_NAME) &&
            !dns_name_equal(&tkeyin->algorithm, DNS_TSIG_GSSAPIMS_NAME)) {
@@ -454,7 +467,11 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin,
 
        dns_fixedname_init(&principal);
 
-       result = dst_gssapi_acceptctx(tctx->gsscred, &intoken,
+       /*
+        * Note that tctx->gsscred may be NULL if tctx->gssapi_keytab is set
+        */
+       result = dst_gssapi_acceptctx(tctx->gsscred, tctx->gssapi_keytab,
+                                     &intoken,
                                      &outtoken, &gss_ctx,
                                      dns_fixedname_name(&principal),
                                      tctx->mctx);
@@ -479,7 +496,8 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin,
 #endif
                isc_uint32_t expire;
 
-               RETERR(dst_key_fromgssapi(name, gss_ctx, ring->mctx, &dstkey));
+               RETERR(dst_key_fromgssapi(name, gss_ctx, ring->mctx,
+                                         &dstkey, &intoken));
                /*
                 * Limit keys to 1 hour or the context's lifetime whichever
                 * is smaller.
@@ -984,7 +1002,8 @@ dns_tkey_builddhquery(dns_message_t *msg, dst_key_t *key, dns_name_t *name,
 isc_result_t
 dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname,
                       isc_buffer_t *intoken, isc_uint32_t lifetime,
-                      gss_ctx_id_t *context, isc_boolean_t win2k)
+                      gss_ctx_id_t *context, isc_boolean_t win2k,
+                      dns_name_t *zone, isc_mem_t *mctx, char **err_message)
 {
        dns_rdata_tkey_t tkey;
        isc_result_t result;
@@ -998,9 +1017,11 @@ dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname,
        REQUIRE(name != NULL);
        REQUIRE(gname != NULL);
        REQUIRE(context != NULL);
+       REQUIRE(mctx != NULL);
 
        isc_buffer_init(&token, array, sizeof(array));
-       result = dst_gssapi_initctx(gname, NULL, &token, context);
+       result = dst_gssapi_initctx(gname, NULL, &token, context, zone,
+                                   mctx, err_message);
        if (result != DNS_R_CONTINUE && result != ISC_R_SUCCESS)
                return (result);
 
@@ -1217,7 +1238,7 @@ isc_result_t
 dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg,
                            dns_name_t *gname, gss_ctx_id_t *context,
                            isc_buffer_t *outtoken, dns_tsigkey_t **outkey,
-                           dns_tsig_keyring_t *ring)
+                           dns_tsig_keyring_t *ring, char **err_message)
 {
        dns_rdata_t rtkeyrdata = DNS_RDATA_INIT, qtkeyrdata = DNS_RDATA_INIT;
        dns_name_t *tkeyname;
@@ -1231,6 +1252,7 @@ dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg,
        REQUIRE(qmsg != NULL);
        REQUIRE(rmsg != NULL);
        REQUIRE(gname != NULL);
+       REQUIRE(ring != NULL);
        if (outkey != NULL)
                REQUIRE(*outkey == NULL);
 
@@ -1267,10 +1289,11 @@ dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg,
 
        isc_buffer_init(outtoken, array, sizeof(array));
        isc_buffer_init(&intoken, rtkey.key, rtkey.keylen);
-       RETERR(dst_gssapi_initctx(gname, &intoken, outtoken, context));
+       RETERR(dst_gssapi_initctx(gname, &intoken, outtoken, context,
+                                 NULL, ring->mctx, err_message));
 
        RETERR(dst_key_fromgssapi(dns_rootname, *context, rmsg->mctx,
-                                 &dstkey));
+                                 &dstkey, NULL));
 
        RETERR(dns_tsigkey_createfromkey(tkeyname, DNS_TSIG_GSSAPI_NAME,
                                         dstkey, ISC_FALSE, NULL,
@@ -1348,7 +1371,8 @@ isc_result_t
 dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg,
                      dns_name_t *server, gss_ctx_id_t *context,
                      dns_tsigkey_t **outkey, dns_tsig_keyring_t *ring,
-                     isc_boolean_t win2k)
+                     isc_boolean_t win2k, dns_name_t *zone,
+                     char **err_message)
 {
        dns_rdata_t rtkeyrdata = DNS_RDATA_INIT, qtkeyrdata = DNS_RDATA_INIT;
        dns_name_t *tkeyname;
@@ -1392,12 +1416,13 @@ dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg,
        isc_buffer_init(&intoken, rtkey.key, rtkey.keylen);
        isc_buffer_init(&outtoken, array, sizeof(array));
 
-       result = dst_gssapi_initctx(server, &intoken, &outtoken, context);
+       result = dst_gssapi_initctx(server, &intoken, &outtoken, context,
+                                   zone, ring->mctx, err_message);
        if (result != DNS_R_CONTINUE && result != ISC_R_SUCCESS)
                return (result);
 
        RETERR(dst_key_fromgssapi(dns_rootname, *context, rmsg->mctx,
-                                 &dstkey));
+                                 &dstkey, NULL));
 
        /*
         * XXXSRA This seems confused.  If we got CONTINUE from initctx,
index 86a911306a3786a8ec402a64f47f29d29bcf49ea..9c0d8f8c719a9b12b51a0b26396c78668adcf3e9 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: view.c,v 1.173 2010/12/16 09:51:29 jinmei Exp $ */
+/* $Id: view.c,v 1.174 2010/12/18 11:47:13 marka Exp $ */
 
 /*! \file */
 
@@ -812,6 +812,7 @@ dns_view_find2(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type,
 
 #ifndef BIND9
        UNUSED(use_hints);
+       UNUSED(use_static_stub);
 #endif
 
        /*
index fd3b4769d4e1fc4a97702285507f0a9c58849ec1..c1289447a707d275b9753ed33e6f62ad48812d25 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zone.c,v 1.579 2010/12/16 09:51:29 jinmei Exp $ */
+/* $Id: zone.c,v 1.580 2010/12/18 01:56:22 each Exp $ */
 
 /*! \file */
 
@@ -3418,6 +3418,7 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime,
         */
 
        switch (zone->type) {
+       case dns_zone_dlz:
        case dns_zone_master:
        case dns_zone_slave:
        case dns_zone_stub:
@@ -14189,3 +14190,16 @@ dns_zone_getadded(dns_zone_t *zone) {
        REQUIRE(DNS_ZONE_VALID(zone));
        return (zone->added);
 }
+
+isc_result_t
+dns_zone_dlzpostload(dns_zone_t *zone, dns_db_t *db)
+{
+       isc_time_t loadtime;
+       isc_result_t result;
+       TIME_NOW(&loadtime);
+
+       LOCK_ZONE(zone);
+       result = zone_postload(zone, db, loadtime, ISC_R_SUCCESS);
+       UNLOCK_ZONE(zone);
+       return result;
+}
index 2a02d88e4e8e7e263b29f4ad9d45f2f12e3f8ff1..d83f93b823007383efb30b0468ed5b09de95b62a 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: buffer.h,v 1.53 2008/09/25 04:02:39 tbox Exp $ */
+/* $Id: buffer.h,v 1.54 2010/12/18 01:56:22 each Exp $ */
 
 #ifndef ISC_BUFFER_H
 #define ISC_BUFFER_H 1
@@ -623,7 +623,7 @@ isc__buffer_putmem(isc_buffer_t *b, const unsigned char *base,
  *
  */
 
-void
+void 
 isc__buffer_putstr(isc_buffer_t *b, const char *source);
 /*!<
  * \brief Copy 'source' into 'b', not including terminating NUL.
index 02b8d868c6851d56f89f18147d83e9515afafa4f..03c2710bac354154aa6e2c0f59013fc3c7ffb053 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: platform.h.in,v 1.55 2010/06/03 23:51:05 tbox Exp $ */
+/* $Id: platform.h.in,v 1.56 2010/12/18 01:56:23 each Exp $ */
 
 #ifndef ISC_PLATFORM_H
 #define ISC_PLATFORM_H 1
  */
 @ISC_PLATFORM_GSSAPIHEADER@
 
+/*
+ * Defined to <gssapi_krb5.h> or <gssapi/gssapi_krb5.h> for how to
+ * include the GSSAPI KRB5 header.
+ */
+@ISC_PLATFORM_GSSAPI_KRB5_HEADER@
+
 /*
  * Defined to <krb5.h> or <krb5/krb5.h> for how to include
  * the KRB5 header.
index 8ea63bb842763c0918af967bc832e917355b1859..5bd2b21ae912875f4cd8ae6f6f98a78dbfe6cfb7 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: namedconf.c,v 1.125 2010/12/16 09:51:30 jinmei Exp $ */
+/* $Id: namedconf.c,v 1.126 2010/12/18 01:56:23 each Exp $ */
 
 /*! \file */
 
@@ -879,6 +879,7 @@ options_clauses[] = {
        { "tcp-listen-queue", &cfg_type_uint32, 0 },
        { "tkey-dhkey", &cfg_type_tkey_dhkey, 0 },
        { "tkey-gssapi-credential", &cfg_type_qstring, 0 },
+       { "tkey-gssapi-keytab", &cfg_type_qstring, 0 },
        { "tkey-domain", &cfg_type_qstring, 0 },
        { "transfers-per-ns", &cfg_type_uint32, 0 },
        { "transfers-in", &cfg_type_uint32, 0 },
index af7e5e1d2a40b209899bb0e5a4d0921f1e9a84b4..04a00bdde84947318a6edb08e75bec50ab3c2e65 100644 (file)
 ./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/include/named/zoneconf.h           C       1999,2000,2001,2002,2004,2005,2006,2007,2010
 ./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/server.c                           C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010
 ./bin/named/sortlist.c                         C       2000,2001,2004,2005,2006,2007
 ./bin/named/statschannel.c                     C       2008,2009,2010
-./bin/named/tkeyconf.c                         C       1999,2000,2001,2004,2005,2006,2007,2009
+./bin/named/tkeyconf.c                         C       1999,2000,2001,2004,2005,2006,2007,2009,2010
 ./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/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/gsstest.c                      C       2006,2007,2009,2010
 ./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/system/dlz/ns1/dns-root/com/example/xfr.d/10.53.0.1        TXT.BRIEF       2010
 ./bin/tests/system/dlz/ns1/named.conf          CONF-C  2010
 ./bin/tests/system/dlz/tests.sh                        SH      2010
+./bin/tests/system/dlzexternal/clean.sh                SH      2010
+./bin/tests/system/dlzexternal/ns1/named.conf  CONF-C  2010
+./bin/tests/system/dlzexternal/prereq.sh       SH      2010
+./bin/tests/system/dlzexternal/setup.sh                SH      2010
+./bin/tests/system/dlzexternal/tests.sh                SH      2010
 ./bin/tests/system/dns64/clean.sh              SH      2010
 ./bin/tests/system/dns64/conf/bad1.conf                CONF-C  2010
 ./bin/tests/system/dns64/conf/bad2.conf                CONF-C  2010
 ./bin/tests/system/sortlist/tests.sh           SH      2000,2001,2004,2007
 ./bin/tests/system/start.pl                    SH      2001,2004,2005,2006,2007,2008,2010
 ./bin/tests/system/start.sh                    SH      2000,2001,2004,2007
+./bin/tests/system/staticstub/clean.sh         SH      2010
+./bin/tests/system/staticstub/conf/bad01.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad02.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad03.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad04.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad05.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad06.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad07.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad08.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad09.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad10.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/bad11.conf  CONF-C  2010
+./bin/tests/system/staticstub/conf/good01.conf CONF-C  2010
+./bin/tests/system/staticstub/conf/good02.conf CONF-C  2010
+./bin/tests/system/staticstub/conf/good03.conf CONF-C  2010
+./bin/tests/system/staticstub/conf/good04.conf CONF-C  2010
+./bin/tests/system/staticstub/conf/good05.conf CONF-C  2010
+./bin/tests/system/staticstub/knowngood.dig.out.rec    X       2010
+./bin/tests/system/staticstub/ns1/named.conf   CONF-C  2010
+./bin/tests/system/staticstub/ns1/root.db      ZONE    2010
+./bin/tests/system/staticstub/ns2/named.conf.in        CONF-C  2010
+./bin/tests/system/staticstub/ns3/example.db.in        ZONE    2010
+./bin/tests/system/staticstub/ns3/example.org.db       ZONE    2010
+./bin/tests/system/staticstub/ns3/named.conf.in        CONF-C  2010
+./bin/tests/system/staticstub/ns3/sign.sh      SH      2010
+./bin/tests/system/staticstub/ns4/example.com.db       ZONE    2010
+./bin/tests/system/staticstub/ns4/example.info.db      ZONE    2010
+./bin/tests/system/staticstub/ns4/example.org.db       ZONE    2010
+./bin/tests/system/staticstub/ns4/named.conf   CONF-C  2010
+./bin/tests/system/staticstub/ns4/sign.sh      SH      2010
+./bin/tests/system/staticstub/ns4/sub.example.db.in    ZONE    2010
+./bin/tests/system/staticstub/setup.sh         SH      2010
+./bin/tests/system/staticstub/tests.sh         SH      2010
 ./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/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/tsiggss/clean.sh            SH      2010
+./bin/tests/system/tsiggss/ns1/administrator.ccache    X       2010
+./bin/tests/system/tsiggss/ns1/dns.keytab      X       2010
+./bin/tests/system/tsiggss/ns1/example.nil.db  ZONE    2010
+./bin/tests/system/tsiggss/ns1/named.conf      CONF-C  2010
+./bin/tests/system/tsiggss/ns1/testdenied.ccache       X       2010
+./bin/tests/system/tsiggss/prereq.sh           SH      2010
+./bin/tests/system/tsiggss/setup.sh            SH      2010
+./bin/tests/system/tsiggss/tests.sh            SH      2010
 ./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
 ./contrib/dlz/bin/dlzbdb/dlzbdb.c              X       2005
 ./contrib/dlz/config.dlz.in                    X       2005,2006,2008,2010
 ./contrib/dlz/drivers/.cvsignore               X       2005
-./contrib/dlz/drivers/dlz_bdb_driver.c         X       2005,2008
+./contrib/dlz/drivers/dlz_bdb_driver.c         X       2005,2008,2010
 ./contrib/dlz/drivers/dlz_bdbhpt_driver.c      X       2005,2010
-./contrib/dlz/drivers/dlz_drivers.c            X       2005
+./contrib/dlz/drivers/dlz_dlopen_driver.c      X       2010
+./contrib/dlz/drivers/dlz_drivers.c            X       2005,2010
 ./contrib/dlz/drivers/dlz_filesystem_driver.c  X       2005,2010
-./contrib/dlz/drivers/dlz_ldap_driver.c                X       2005
+./contrib/dlz/drivers/dlz_ldap_driver.c                X       2005,2010
 ./contrib/dlz/drivers/dlz_mysql_driver.c       X       2005,2007,2009,2010
-./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/dlz_odbc_driver.c                X       2005,2010
+./contrib/dlz/drivers/dlz_postgres_driver.c    X       2005,2007,2010
+./contrib/dlz/drivers/dlz_stub_driver.c                X       2005,2010
 ./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_dlopen_driver.h  X       2010
 ./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_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/rules.in                 X       2005,2010
 ./contrib/dlz/drivers/sdlz_helper.c            X       2005,2010
+./contrib/dlz/example/Makefile                 X       2010
+./contrib/dlz/example/dlz_example.c            X       2010
+./contrib/dlz/example/dlz_minimal.h            X       2010
 ./contrib/idn/README.idnkit                    X       2005,2009
 ./contrib/idn/idnkit-1.0-src/ChangeLog         X       2003
 ./contrib/idn/idnkit-1.0-src/DISTFILES         X       2003
 ./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/dlz.c                                        C.PORTION       1999,2000,2001,2005,2007,2009,2010
 ./lib/dns/dns64.c                              C       2010
 ./lib/dns/dnssec.c                             C       1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010
 ./lib/dns/ds.c                                 C       2002,2003,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,2010
 ./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/dlz.h                    C.PORTION       1999,2000,2001,2005,2006,2007,2009,2010
 ./lib/dns/include/dns/dns64.h                  C       2010
 ./lib/dns/include/dns/dnssec.h                 C       1999,2000,2001,2002,2004,2005,2006,2007,2009,2010
 ./lib/dns/include/dns/ds.h                     C       2002,2004,2005,2006,2007
 ./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/sdlz.h                   C.PORTION       1999,2000,2001,2005,2006,2007,2009,2010
 ./lib/dns/include/dns/secalg.h                 C       1999,2000,2001,2004,2005,2006,2007,2009
 ./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/ssu.h                    C       2000,2001,2003,2004,2005,2006,2007,2008,2010
 ./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/tkey.h                   C       1999,2000,2001,2004,2005,2006,2007,2009,2010
 ./lib/dns/include/dns/tsec.h                   C       2009,2010
 ./lib/dns/include/dns/tsig.h                   C       1999,2000,2001,2002,2004,2005,2006,2007,2009,2010
 ./lib/dns/include/dns/ttl.h                    C       1999,2000,2001,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,2010
-./lib/dns/include/dst/gssapi.h                 C       2000,2001,2004,2005,2006,2007,2009
+./lib/dns/include/dst/gssapi.h                 C       2000,2001,2004,2005,2006,2007,2009,2010
 ./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/sdlz.c                               C.PORTION       1999,2000,2001,2005,2006,2007,2008,2009,2010
 ./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.c                             C       2006,2007,2008,2009,2010
 ./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/ssu.c                                        C       2000,2001,2003,2004,2005,2006,2007,2008,2010
 ./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,2010
 ./lib/isc/include/isc/bind9.h                  C       2009
 ./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/buffer.h                 C       1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2010
 ./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