]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
regen master
authorTinderbox User <tbox@isc.org>
Thu, 12 Mar 2020 09:17:01 +0000 (09:17 +0000)
committerMatthijs Mekking <matthijs@isc.org>
Fri, 20 Mar 2020 09:51:32 +0000 (10:51 +0100)
README
doc/arm/Bv9ARM.ch01.html
doc/arm/Bv9ARM.ch04.html
doc/arm/Bv9ARM.ch05.html
doc/arm/Bv9ARM.ch08.html
doc/arm/Bv9ARM.pdf
doc/arm/notes.html
doc/arm/notes.pdf
doc/arm/notes.txt
doc/misc/options
doc/misc/options.active

diff --git a/README b/README
index 167a78d89975f5c960ce06c530f46ebeed076180..3baa076473a19065ac4c69841e5c3d9ea059d9e5 100644 (file)
--- a/README
+++ b/README
@@ -112,7 +112,12 @@ format-patch.
 BIND 9.17 features
 
 BIND 9.17 is the newest development branch of BIND 9. It includes a number
-of changes from BIND 9.16 and earlier releases.
+of changes from BIND 9.16 and earlier releases. New features include:
+
+  * New option "max-ixfr-ratio" to limit the size of outgoing IXFR
+    responses before falling back to full zone transfers.
+  * "rndc nta -d" and "rndc secroots" now include "validate-except"
+    entries when listing negative trust anchors.
 
 Building BIND
 
index 0b68fe2a70484553470a01f37bc7a45805c3822b..297cd1ec8b5873ea0b0eaf1a9fece9ce35f81482 100644 (file)
@@ -10,7 +10,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Chapter 1. Introduction</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="up" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="prev" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
@@ -50,7 +50,8 @@
 </dl></dd>
 </dl>
 </div>
-<p>
+
+    <p>
       The Internet Domain Name System (<acronym class="acronym">DNS</acronym>)
       consists of the syntax
       to specify the names of entities in the Internet in a hierarchical
       group of distributed
       hierarchical databases.
     </p>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="doc_scope"></a>Scope of Document</h2></div></div></div>
-<p>
+
+      <p>
         The Berkeley Internet Name Domain
         (<acronym class="acronym">BIND</acronym>) implements a
         domain name server for a number of operating systems. This
         <acronym class="acronym">BIND</acronym> version 9 software package for
         system administrators.
       </p>
-<p>This version of the manual corresponds to BIND version 9.17.</p>
-</div>
-<div class="section">
+      <p>This version of the manual corresponds to BIND version 9.17.</p>
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="organization"></a>Organization of This Document</h2></div></div></div>
-<p>
+
+      <p>
         In this document, <span class="emphasis"><em>Chapter 1</em></span> introduces
         the basic <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym> concepts. <span class="emphasis"><em>Chapter 2</em></span>
         describes resource requirements for running <acronym class="acronym">BIND</acronym> in various
         and the Domain Name
         System.
       </p>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="conventions"></a>Conventions Used in This Document</h2></div></div></div>
-<p>
+
+      <p>
         In this document, we use the following general typographic
         conventions:
       </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+      <div class="informaltable">
+        <table border="1">
 <colgroup>
 <col width="3.000in" class="1">
 <col width="2.625in" class="2">
               </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+      </div>
+
+      <p>
         The following conventions are used in descriptions of the
         <acronym class="acronym">BIND</acronym> configuration file:</p>
-<div class="informaltable"><table class="informaltable" border="1">
+<div class="informaltable">
+                  <table border="1">
 <colgroup>
 <col width="3.000in" class="1">
 <col width="2.625in" class="2">
                 </td>
 </tr>
 </tbody>
-</table></div>
+</table>
+        </div>
 <p>
       </p>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="dns_overview"></a>The Domain Name System (<acronym class="acronym">DNS</acronym>)</h2></div></div></div>
-<p>
+
+      <p>
         The purpose of this document is to explain the installation
         and upkeep of the <acronym class="acronym">BIND</acronym> (Berkeley Internet
         Name Domain) software package, and we
         begin by reviewing the fundamentals of the Domain Name System
         (<acronym class="acronym">DNS</acronym>) as they relate to <acronym class="acronym">BIND</acronym>.
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dns_fundamentals"></a>DNS Fundamentals</h3></div></div></div>
-<p>
+
+        <p>
           The Domain Name System (DNS) is a hierarchical, distributed
           database.  It stores information for mapping Internet host names to
           IP
           addresses and vice versa, mail routing information, and other data
           used by Internet applications.
         </p>
-<p>
+
+        <p>
           Clients look up information in the DNS by calling a
           <span class="emphasis"><em>resolver</em></span> library, which sends queries to one or
           more <span class="emphasis"><em>name servers</em></span> and interprets the responses.
           contains a name server, <span class="command"><strong>named</strong></span>, and a set
           of associated tools.
         </p>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="domain_names"></a>Domains and Domain Names</h3></div></div></div>
-<p>
+
+        <p>
           The data stored in the DNS is identified by <span class="emphasis"><em>domain names</em></span> that are organized as a tree according to
           organizational or administrative boundaries. Each node of the tree,
           called a <span class="emphasis"><em>domain</em></span>, is given a label. The domain
           separated by dots. A label need only be unique within its parent
           domain.
         </p>
-<p>
+
+        <p>
           For example, a domain name for a host at the
           company <span class="emphasis"><em>Example, Inc.</em></span> could be
           <code class="literal">ourhost.example.com</code>,
           <code class="literal">ourhost</code> is the
           name of the host.
         </p>
-<p>
+
+        <p>
           For administrative purposes, the name space is partitioned into
           areas called <span class="emphasis"><em>zones</em></span>, each starting at a node and
           extending down to the leaf nodes or to nodes where other zones
           The data for each zone is stored in a <span class="emphasis"><em>name server</em></span>, which answers queries about the zone using the
           <span class="emphasis"><em>DNS protocol</em></span>.
         </p>
-<p>
+
+        <p>
           The data associated with each domain name is stored in the
           form of <span class="emphasis"><em>resource records</em></span> (<acronym class="acronym">RR</acronym>s).
           Some of the supported resource record types are described in
           <a class="xref" href="Bv9ARM.ch05.html#types_of_resource_records_and_when_to_use_them" title="Types of Resource Records and When to Use Them">the section called &#8220;Types of Resource Records and When to Use Them&#8221;</a>.
         </p>
-<p>
+
+        <p>
           For more detailed information about the design of the DNS and
           the DNS protocol, please refer to the standards documents listed in
           <a class="xref" href="Bv9ARM.ch10.html#rfcs" title="Request for Comments (RFCs)">the section called &#8220;Request for Comments (RFCs)&#8221;</a>.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="zones"></a>Zones</h3></div></div></div>
-<p>
+
+        <p>
           To properly operate a name server, it is important to understand
           the difference between a <span class="emphasis"><em>zone</em></span>
           and a <span class="emphasis"><em>domain</em></span>.
         </p>
-<p>
+
+        <p>
           As stated previously, a zone is a point of delegation in
           the <acronym class="acronym">DNS</acronym> tree. A zone consists of
           those contiguous parts of the domain
           parent zone, which should be matched by equivalent NS records at
           the root of the delegated zone.
         </p>
-<p>
+
+        <p>
           For instance, consider the <code class="literal">example.com</code>
           domain which includes names
           such as <code class="literal">host.aaa.example.com</code> and
           gain a complete understanding of this difficult and subtle
           topic.
         </p>
-<p>
+
+        <p>
           Though <acronym class="acronym">BIND</acronym> is called a "domain name
           server",
           it deals primarily in terms of zones. The master and slave
           be a slave server for your <span class="emphasis"><em>domain</em></span>, you are
           actually asking for slave service for some collection of zones.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="auth_servers"></a>Authoritative Name Servers</h3></div></div></div>
-<p>
+
+        <p>
           Each zone is served by at least
           one <span class="emphasis"><em>authoritative name server</em></span>,
           which contains the complete data for the zone.
           most zones have two or more authoritative servers, on
           different networks.
         </p>
-<p>
+
+        <p>
           Responses from authoritative servers have the "authoritative
           answer" (AA) bit set in the response packets.  This makes them
           easy to identify when debugging DNS configurations using tools like
           <span class="command"><strong>dig</strong></span> (<a class="xref" href="Bv9ARM.ch03.html#diagnostic_tools" title="Diagnostic Tools">the section called &#8220;Diagnostic Tools&#8221;</a>).
         </p>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="primary_master"></a>The Primary Master</h4></div></div></div>
-<p>
+
+          <p>
             The authoritative server where the master copy of the zone
             data is maintained is called the
             <span class="emphasis"><em>primary master</em></span> server, or simply the
             <span class="emphasis"><em>zone file</em></span> or
             <span class="emphasis"><em>master file</em></span>.
           </p>
-<p>
+
+          <p>
             In some cases, however, the master file may not be edited
             by humans at all, but may instead be the result of
             <span class="emphasis"><em>dynamic update</em></span> operations.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="slave_server"></a>Slave Servers</h4></div></div></div>
-<p>
+
+          <p>
             The other authoritative servers, the <span class="emphasis"><em>slave</em></span>
             servers (also known as <span class="emphasis"><em>secondary</em></span> servers)
             load the zone contents from another server using a replication
             slave.  In other words, a slave server may itself act as a
             master to a subordinate slave server.
           </p>
-<p>
+          <p>
             Periodically, the slave server must send a refresh query to
             determine whether the zone contents have been updated. This
             is done by sending a query for the zone's SOA record and
             <span class="command"><strong>max-retry-time</strong></span>, and
             <span class="command"><strong>min-retry-time</strong></span> options.
           </p>
-<p>
+          <p>
             If the zone data cannot be updated within the time specified
             by the SOA EXPIRE option (up to a hard-coded maximum of
             24 weeks) then the slave zone expires and will no longer
             respond to queries.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="stealth_server"></a>Stealth Servers</h4></div></div></div>
-<p>
+
+          <p>
             Usually all of the zone's authoritative servers are listed in
             NS records in the parent zone.  These NS records constitute
             a <span class="emphasis"><em>delegation</em></span> of the zone from the parent.
             list servers in the parent's delegation that are not present at
             the zone's top level.
           </p>
-<p>
+
+          <p>
             A <span class="emphasis"><em>stealth server</em></span> is a server that is
             authoritative for a zone but is not listed in that zone's NS
             records.  Stealth servers can be used for keeping a local copy of
             are
             inaccessible.
           </p>
-<p>
+
+          <p>
             A configuration where the primary master server itself is a
             stealth server is often referred to as a "hidden primary"
             configuration.  One use for this configuration is when the primary
             is behind a firewall and therefore unable to communicate directly
             with the outside world.
           </p>
-</div>
-</div>
-<div class="section">
+
+        </div>
+
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="cache_servers"></a>Caching Name Servers</h3></div></div></div>
-<p>
+
+        
+
+        <p>
           The resolver libraries provided by most operating systems are
           <span class="emphasis"><em>stub resolvers</em></span>, meaning that they are not
           capable of
           is called a <span class="emphasis"><em>recursive</em></span> name server; it performs
           <span class="emphasis"><em>recursive lookups</em></span> for local clients.
         </p>
-<p>
+
+        <p>
           To improve performance, recursive servers cache the results of
           the lookups they perform.  Since the processes of recursion and
           caching are intimately connected, the terms
           <span class="emphasis"><em>recursive server</em></span> and
           <span class="emphasis"><em>caching server</em></span> are often used synonymously.
         </p>
-<p>
+
+        <p>
           The length of time for which a record may be retained in
           the cache of a caching name server is controlled by the
           Time To Live (TTL) field associated with each resource record.
         </p>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="forwarder"></a>Forwarding</h4></div></div></div>
-<p>
+
+          <p>
             Even a caching name server does not necessarily perform
             the complete recursive lookup itself.  Instead, it can
             <span class="emphasis"><em>forward</em></span> some or all of the queries
             server,
             commonly referred to as a <span class="emphasis"><em>forwarder</em></span>.
           </p>
-<p>
+
+          <p>
             There may be one or more forwarders,
             and they are queried in turn until the list is exhausted or an
             answer
             that can do it, and that server would query the Internet <acronym class="acronym">DNS</acronym> servers
             on the internal server's behalf.
           </p>
-</div>
-</div>
-<div class="section">
+        </div>
+
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="multi_role"></a>Name Servers in Multiple Roles</h3></div></div></div>
-<p>
+
+        <p>
           The <acronym class="acronym">BIND</acronym> name server can
           simultaneously act as
           a master for some zones, a slave for other zones, and as a caching
           (recursive) server for a set of local clients.
         </p>
-<p>
+
+        <p>
           However, since the functions of authoritative name service
           and caching/recursive name service are logically separate, it is
           often advantageous to run them on separate server machines.
           does not need to be reachable from the Internet at large and can
           be placed inside a firewall.
         </p>
-</div>
-</div>
-</div>
+
+      </div>
+    </div>
+
+  </div>
 <div class="navfooter">
 <hr>
 <table width="100%" summary="Navigation footer">
index e962f71a6391d98b9631db0674f21b30e4e4dd9c..a35ee56e17fee1f82dcc1f4a1c6037c3d12a00c0 100644 (file)
@@ -10,7 +10,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Chapter 4. Advanced DNS Features</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="up" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="prev" href="Bv9ARM.ch03.html" title="Chapter 3. Name Server Configuration">
 </dl></dd>
 </dl>
 </div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="notify"></a>Notify</h2></div></div></div>
-<p>
+      <p>
         <acronym class="acronym">DNS</acronym> NOTIFY is a mechanism that allows master
         servers to notify their slave servers of changes to a zone's data. In
         response to a <span class="command"><strong>NOTIFY</strong></span> from a master server, the
         slave will check to see that its version of the zone is the
         current version and, if not, initiate a zone transfer.
       </p>
-<p>
+
+      <p>
         For more information about <acronym class="acronym">DNS</acronym>
         <span class="command"><strong>NOTIFY</strong></span>, see the description of the
         <span class="command"><strong>notify</strong></span> option in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a> and
         <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.  The <span class="command"><strong>NOTIFY</strong></span>
         protocol is specified in RFC 1996.
       </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+
+      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
         As a slave zone can also be a master to other slaves, <span class="command"><strong>named</strong></span>,
         zones that it loads.
       </p>
 </div>
-</div>
-<div class="section">
+
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="dynamic_update"></a>Dynamic Update</h2></div></div></div>
-<p>
+
+      <p>
         Dynamic Update is a method for adding, replacing or deleting
         records in a master server by sending it a special form of DNS
         messages.  The format and meaning of these messages is specified
         in RFC 2136.
       </p>
-<p>
+
+      <p>
         Dynamic update is enabled by including an
         <span class="command"><strong>allow-update</strong></span> or an <span class="command"><strong>update-policy</strong></span>
         clause in the <span class="command"><strong>zone</strong></span> statement.
       </p>
-<p>
+
+      <p>
         If the zone's <span class="command"><strong>update-policy</strong></span> is set to
         <strong class="userinput"><code>local</code></strong>, updates to the zone
         will be permitted for the key <code class="varname">local-ddns</code>,
         which will be generated by <span class="command"><strong>named</strong></span> at startup.
         See <a class="xref" href="Bv9ARM.ch05.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a> for more details.
       </p>
-<p>
+
+      <p>
         Dynamic updates using Kerberos signed requests can be made
         using the TKEY/GSS protocol by setting either the
         <span class="command"><strong>tkey-gssapi-keytab</strong></span> option, or alternatively
         policies for the zone, using the Kerberos principal as the
         signer for the request.
       </p>
-<p>
+
+      <p>
         Updating of secure zones (zones using DNSSEC) follows RFC
         3007: RRSIG, NSEC and NSEC3 records affected by updates are
         automatically regenerated by the server using an online
         zone key.  Update authorization is based on transaction
         signatures and an explicit server policy.
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="journal"></a>The journal file</h3></div></div></div>
-<p>
+
+        <p>
           All changes made to a zone using dynamic update are stored
           in the zone's journal file.  This file is automatically created
           by the server when the first dynamic update takes place.
           file unless specifically overridden.  The journal file is in a
           binary format and should not be edited manually.
         </p>
-<p>
+
+        <p>
           The server will also occasionally write ("dump")
           the complete contents of the updated zone to its zone file.
           This is not done immediately after
           will be removed when the dump is complete, and can be safely
           ignored.
         </p>
-<p>
+
+        <p>
           When a server is restarted after a shutdown or crash, it will replay
               the journal file to incorporate into the zone any updates that
           took
           place after the last zone dump.
         </p>
-<p>
+
+        <p>
           Changes that result from incoming incremental zone transfers are
           also
           journaled in a similar way.
         </p>
-<p>
+
+        <p>
           The zone files of dynamic zones cannot normally be edited by
           hand because they are not guaranteed to contain the most recent
           dynamic changes &#8212; those are only in the journal file.
           The only way to ensure that the zone file of a dynamic zone
           is up to date is to run <span class="command"><strong>rndc stop</strong></span>.
         </p>
-<p>
+
+        <p>
           If you have to make changes to a dynamic zone
           manually, the following procedure will work:
           Disable dynamic updates to the zone using
           <span class="command"><strong>rndc thaw <em class="replaceable"><code>zone</code></em></strong></span>
           to reload the changed zone and re-enable dynamic updates.
         </p>
-<p>
+
+        <p>
           <span class="command"><strong>rndc sync <em class="replaceable"><code>zone</code></em></strong></span>
           will update the zone file with changes from the journal file
           without stopping dynamic updates; this may be useful for viewing
           file after updating the zone file, use
           <span class="command"><strong>rndc sync -clean</strong></span>.
         </p>
-</div>
-</div>
-<div class="section">
+
+      </div>
+
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="incremental_zone_transfers"></a>Incremental Zone Transfers (IXFR)</h2></div></div></div>
-<p>
+
+      <p>
         The incremental zone transfer (IXFR) protocol is a way for
         secondary servers to transfer only changed data, instead of having to
         transfer the entire zone. The IXFR protocol is specified in RFC
         1995. See <a class="xref" href="Bv9ARM.ch10.html#proposed_standards" title="Proposed Standards">Proposed Standards</a>.
       </p>
-<p>
+
+      <p>
         When acting as a primary server, <acronym class="acronym">BIND</acronym> 9
         supports IXFR for those zones
         where the necessary change history information is available. These
         <span class="command"><strong>ixfr-from-differences</strong></span> is set
         to <strong class="userinput"><code>yes</code></strong>.
       </p>
-<p>
+
+      <p>
         When acting as a secondary server, <acronym class="acronym">BIND</acronym> 9 will
         attempt to use IXFR unless
         it is explicitly disabled. For more information about disabling
         IXFR, see the description of the <span class="command"><strong>request-ixfr</strong></span> clause
         of the <span class="command"><strong>server</strong></span> statement.
       </p>
-<p>
+
+      <p>
         When a secondary server receives a zone via AXFR, it creates a
         new copy of the zone database and then swaps it into place; during
         the loading process, queries continue to be served from the old
         instead. The threshold at which this determination is made can
         be configured using the <span class="command"><strong>max-ixfr-ratio</strong></span> option.
       </p>
-</div>
-<div class="section">
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="split_dns"></a>Split DNS</h2></div></div></div>
-<p>
+
+      <p>
         Setting up different views, or visibility, of the DNS space to
         internal and external resolvers is usually referred to as a
         <span class="emphasis"><em>Split DNS</em></span> setup. There are several
         reasons an organization would want to set up its DNS this way.
       </p>
-<p>
+      <p>
         One common reason for setting up a DNS system this way is
         to hide "internal" DNS information from "external" clients on the
         Internet. There is some debate as to whether or not this is actually
         choose to use a Split DNS to present a consistent view of itself
         to the outside world.
       </p>
-<p>
+      <p>
         Another common reason for setting up a Split DNS system is
         to allow internal networks that are behind filters or in RFC 1918
         space (reserved IP space, as documented in RFC 1918) to resolve DNS
         on the Internet. Split DNS can also be used to allow mail from outside
         back in to the internal network.
       </p>
-<div class="section">
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="split_dns_sample"></a>Example split DNS setup</h3></div></div></div>
-<p>
+        <p>
           Let's say a company named <span class="emphasis"><em>Example, Inc.</em></span>
           (<code class="literal">example.com</code>)
           has several corporate sites that have an internal network with
           Internet Protocol (IP) space and an external demilitarized zone (DMZ),
           or "outside" section of a network, that is available to the public.
         </p>
-<p>
+        <p>
           <span class="emphasis"><em>Example, Inc.</em></span> wants its internal clients
           to be able to resolve external hostnames and to exchange mail with
           people on the outside. The company also wants its internal resolvers
           to have access to certain internal-only zones that are not available
           at all outside of the internal network.
         </p>
-<p>
+        <p>
           In order to accomplish this, the company will set up two sets
           of name servers. One set will be on the inside network (in the
           reserved
           "proxy"
           hosts that can talk to both sides of its network, in the DMZ.
         </p>
-<p>
+        <p>
           The internal servers will be configured to forward all queries,
           except queries for <code class="filename">site1.internal</code>, <code class="filename">site2.internal</code>, <code class="filename">site1.example.com</code>,
           and <code class="filename">site2.example.com</code>, to the servers
           for <code class="filename">site1.example.com</code>, <code class="filename">site2.example.com</code>, <code class="filename">site1.internal</code>,
           and <code class="filename">site2.internal</code>.
         </p>
-<p>
+        <p>
           To protect the <code class="filename">site1.internal</code> and <code class="filename">site2.internal</code> domains,
           the internal name servers must be configured to disallow all queries
           to these domains from any external hosts, including the bastion
           hosts.
         </p>
-<p>
+        <p>
           The external servers, which are on the bastion hosts, will
           be configured to serve the "public" version of the <code class="filename">site1</code> and <code class="filename">site2.example.com</code> zones.
           This could include things such as the host records for public servers
           (<code class="filename">www.example.com</code> and <code class="filename">ftp.example.com</code>),
           and mail exchange (MX)  records (<code class="filename">a.mx.example.com</code> and <code class="filename">b.mx.example.com</code>).
         </p>
-<p>
+        <p>
           In addition, the public <code class="filename">site1</code> and <code class="filename">site2.example.com</code> zones
           should have special MX records that contain wildcard (`*') records
           pointing to the bastion hosts. This is needed because external mail
           be delivered to the bastion host, which can then forward it on to
           internal hosts.
         </p>
-<p>
+        <p>
           Here's an example of a wildcard MX record:
         </p>
-<pre class="programlisting">*   IN MX 10 external1.example.com.</pre>
-<p>
+        <pre class="programlisting">*   IN MX 10 external1.example.com.</pre>
+        <p>
           Now that they accept mail on behalf of anything in the internal
           network, the bastion hosts will need to know how to deliver mail
           to internal hosts. In order for this to work properly, the resolvers
           the bastion hosts will need to be configured to point to the internal
           name servers for DNS resolution.
         </p>
-<p>
+        <p>
           Queries for internal hostnames will be answered by the internal
           servers, and queries for external hostnames will be forwarded back
           out to the DNS servers on the bastion hosts.
         </p>
-<p>
+        <p>
           In order for all this to work properly, internal clients will
           need to be configured to query <span class="emphasis"><em>only</em></span> the internal
           name servers for DNS queries. This could also be enforced via
           selective
           filtering on the network.
         </p>
-<p>
+        <p>
           If everything has been set properly, <span class="emphasis"><em>Example, Inc.</em></span>'s
           internal clients will now be able to:
         </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+        <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
+            
               Look up any hostnames in the <code class="literal">site1</code>
               and
               <code class="literal">site2.example.com</code> zones.
-            </li>
+            
+          </li>
 <li class="listitem">
+            
               Look up any hostnames in the <code class="literal">site1.internal</code> and
               <code class="literal">site2.internal</code> domains.
-            </li>
-<li class="listitem">Look up any hostnames on the Internet.</li>
-<li class="listitem">Exchange mail with both internal and external people.</li>
+            
+          </li>
+<li class="listitem">
+            Look up any hostnames on the Internet.
+          </li>
+<li class="listitem">
+            Exchange mail with both internal and external people.
+          </li>
 </ul></div>
-<p>
+        <p>
           Hosts on the Internet will be able to:
         </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+        <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
+            
               Look up any hostnames in the <code class="literal">site1</code>
               and
               <code class="literal">site2.example.com</code> zones.
-            </li>
+            
+          </li>
 <li class="listitem">
+            
               Exchange mail with anyone in the <code class="literal">site1</code> and
               <code class="literal">site2.example.com</code> zones.
-            </li>
+            
+          </li>
 </ul></div>
-<p>
+
+        <p>
           Here is an example configuration for the setup we just
           described above. Note that this is only configuration information;
           for information on how to configure your zone files, see <a class="xref" href="Bv9ARM.ch03.html#sample_configuration" title="Sample Configurations">the section called &#8220;Sample Configurations&#8221;</a>.
         </p>
-<p>
+
+        <p>
           Internal DNS server config:
         </p>
+
 <pre class="programlisting">
 
 acl internals { 172.16.72.0/24; 192.168.1.0/24; };
@@ -495,9 +537,11 @@ zone "site2.internal" {
   allow-transfer { internals; }
 };
 </pre>
-<p>
+
+        <p>
           External (bastion host) DNS server config:
         </p>
+
 <pre class="programlisting">
 acl internals { 172.16.72.0/24; 192.168.1.0/24; };
 
@@ -532,22 +576,26 @@ zone "site2.example.com" {
   allow-transfer { internals; externals; }
 };
 </pre>
-<p>
+
+        <p>
           In the <code class="filename">resolv.conf</code> (or equivalent) on
           the bastion host(s):
         </p>
+
 <pre class="programlisting">
 search ...
 nameserver 172.16.72.2
 nameserver 172.16.72.3
 nameserver 172.16.72.4
 </pre>
-</div>
-</div>
-<div class="section">
+
+      </div>
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="tsig"></a>TSIG</h2></div></div></div>
-<p>
+
+      <p>
         TSIG (Transaction SIGnatures) is a mechanism for authenticating DNS
         messages, originally specified in RFC 2845. It allows DNS messages
         to be cryptographically signed using a shared secret.  TSIG can
@@ -558,12 +606,12 @@ nameserver 172.16.72.4
         is critical to the integrity of the server, such as with dynamic
         UPDATE messages or zone transfers from a master to a slave server.
       </p>
-<p>
+      <p>
         This is a guide to setting up TSIG in <acronym class="acronym">BIND</acronym>.
         It describes the configuration syntax and the process of creating
         TSIG keys.
       </p>
-<p>
+      <p>
         <span class="command"><strong>named</strong></span> supports TSIG for server-to-server
         communication, and some of the tools included with
         <acronym class="acronym">BIND</acronym> support it for sending messages to
@@ -571,31 +619,32 @@ nameserver 172.16.72.4
         </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
-<a class="xref" href="man.nsupdate.html" title="nsupdate"><span class="refentrytitle"><span class="application">nsupdate</span></span>(1)</a> supports TSIG via the
+            <a class="xref" href="man.nsupdate.html" title="nsupdate"><span class="refentrytitle"><span class="application">nsupdate</span></span>(1)</a> supports TSIG via the
             <code class="option">-k</code>, <code class="option">-l</code> and
             <code class="option">-y</code> command line options, or via
             the <span class="command"><strong>key</strong></span> command when running
             interactively.
           </li>
 <li class="listitem">
-<a class="xref" href="man.dig.html" title="dig"><span class="refentrytitle">dig</span>(1)</a> supports TSIG via the
+            <a class="xref" href="man.dig.html" title="dig"><span class="refentrytitle">dig</span>(1)</a> supports TSIG via the
             <code class="option">-k</code> and <code class="option">-y</code> command
             line options.
           </li>
 </ul></div>
 <p>
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.6.5"></a>Generating a Shared Key</h3></div></div></div>
-<p>
+        <p>
           TSIG keys can be generated using the <span class="command"><strong>tsig-keygen</strong></span>
           command; the output of the command is a <span class="command"><strong>key</strong></span> directive
           suitable for inclusion in <code class="filename">named.conf</code>.  The
           key name, algorithm and size can be specified by command line parameters;
           the defaults are "tsig-key", HMAC-SHA256, and 256 bits, respectively.
         </p>
-<p>
+        <p>
           Any string which is a valid DNS name can be used as a key name.
           For example, a key to be shared between servers called
           <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span> could
@@ -604,25 +653,26 @@ nameserver 172.16.72.4
 <pre class="programlisting">
   $ tsig-keygen host1-host2. &gt; host1-host2.key
 </pre>
-<p>
+        <p>
           This key may then be copied to both hosts.  The key name and secret
           must be identical on both hosts.
           (Note: copying a shared secret from one server to another is beyond
           the scope of the DNS. A secure transport mechanism should be used:
           secure FTP, SSL, ssh, telephone, encrypted email, etc.)
         </p>
-<p>
+        <p>
           <span class="command"><strong>tsig-keygen</strong></span> can also be run as
           <span class="command"><strong>ddns-confgen</strong></span>, in which case its output includes
           additional configuration text for setting up dynamic DNS in
           <span class="command"><strong>named</strong></span>.  See <a class="xref" href="man.ddns-confgen.html" title="ddns-confgen"><span class="refentrytitle"><span class="application">ddns-confgen</span></span>(8)</a>
           for details.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.6.6"></a>Loading A New Key</h3></div></div></div>
-<p>
+        <p>
           For a key shared between servers called
           <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span>,
           the following could be added to each server's
@@ -634,11 +684,11 @@ key "host1-host2." {
         secret "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY=";
 };
 </pre>
-<p>
+        <p>
           (This is the same key generated above using
           <span class="command"><strong>tsig-keygen</strong></span>.)
         </p>
-<p>
+        <p>
           Since this text contains a secret, it
           is recommended that either <code class="filename">named.conf</code> not be
           world-readable, or that the <span class="command"><strong>key</strong></span> directive
@@ -646,26 +696,27 @@ key "host1-host2." {
           included in <code class="filename">named.conf</code> via the
           <span class="command"><strong>include</strong></span> directive.
         </p>
-<p>
+        <p>
           Once a key has been added to <code class="filename">named.conf</code> and the
           server has been restarted or reconfigured, the server can recognize
           the key.  If the server receives a message signed by the
           key, it will be able to verify the signature.  If the signature
           is valid, the response will be signed using the same key.
         </p>
-<p>
+        <p>
           TSIG keys that are known to a server can be listed using the
           command <span class="command"><strong>rndc tsig-list</strong></span>.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.6.7"></a>Instructing the Server to Use a Key</h3></div></div></div>
-<p>
+        <p>
           A server sending a request to another server must be told whether
           to use a key, and if so, which key to use.
         </p>
-<p>
+        <p>
           For example, a key may be specified for each server in the
           <span class="command"><strong>masters</strong></span> statement in the definition of a
           slave zone; in this case, all SOA QUERY messages, NOTIFY
@@ -675,7 +726,7 @@ key "host1-host2." {
           or slave zone, causing NOTIFY messages to be signed using
           the specified key.
         </p>
-<p>
+        <p>
           Keys can also be specified in a <span class="command"><strong>server</strong></span>
           directive. Adding the following on <span class="emphasis"><em>host1</em></span>,
           if the IP address of <span class="emphasis"><em>host2</em></span> is 10.1.2.3, would
@@ -688,56 +739,58 @@ server 10.1.2.3 {
         keys { host1-host2. ;};
 };
 </pre>
-<p>
+        <p>
           Multiple keys may be present in the <span class="command"><strong>keys</strong></span>
           statement, but only the first one is used.  As this directive does
           not contain secrets, it can be used in a world-readable file.
         </p>
-<p>
+        <p>
           Requests sent by <span class="emphasis"><em>host2</em></span> to <span class="emphasis"><em>host1</em></span>
           would <span class="emphasis"><em>not</em></span> be signed, unless a similar
           <span class="command"><strong>server</strong></span> directive were in <span class="emphasis"><em>host2</em></span>'s
           configuration file.
         </p>
-<p>
+        <p>
           Whenever any server sends a TSIG-signed DNS request, it will expect
           the response to be signed with the same key. If a response is not
           signed, or if the signature is not valid, the response will be
           rejected.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.6.8"></a>TSIG-Based Access Control</h3></div></div></div>
-<p>
+        <p>
           TSIG keys may be specified in ACL definitions and ACL directives
           such as <span class="command"><strong>allow-query</strong></span>, <span class="command"><strong>allow-transfer</strong></span>
           and <span class="command"><strong>allow-update</strong></span>.
           The above key would be denoted in an ACL element as
           <span class="command"><strong>key host1-host2.</strong></span>
         </p>
-<p>
+        <p>
           An example of an <span class="command"><strong>allow-update</strong></span> directive using
           a TSIG key:
         </p>
 <pre class="programlisting">
 allow-update { !{ !localnets; any; }; key host1-host2. ;};
 </pre>
-<p>
+        <p>
           This allows dynamic updates to succeed only if the UPDATE
           request comes from an address in <span class="command"><strong>localnets</strong></span>,
           <span class="emphasis"><em>and</em></span> if it is signed using the
           <span class="command"><strong>host1-host2.</strong></span> key.
         </p>
-<p>
+        <p>
           See <a class="xref" href="Bv9ARM.ch05.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a> for a discussion of
           the more flexible <span class="command"><strong>update-policy</strong></span> statement.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.6.9"></a>Errors</h3></div></div></div>
-<p>
+        <p>
           Processing of TSIG-signed messages can result in several errors:
           </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@@ -763,23 +816,25 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           In all of the above cases, the server will return a response code
           of NOTAUTH (not authenticated).
         </p>
-</div>
-</div>
-<div class="section">
+      </div>
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="tkey"></a>TKEY</h2></div></div></div>
-<p>
+
+      <p>
         TKEY (Transaction KEY) is a mechanism for automatically negotiating
         a shared secret between two hosts, originally specified in RFC 2930.
       </p>
-<p>
+      <p>
         There are several TKEY "modes" that specify how a key is to be
         generated or assigned.  <acronym class="acronym">BIND</acronym> 9 implements only
         one of these modes: Diffie-Hellman key exchange.  Both hosts are
         required to have a KEY record with algorithm DH (though this
         record is not required to be present in a zone).
       </p>
-<p>
+      <p>
         The TKEY process is initiated by a client or server by sending
         a query of type TKEY to a TKEY-aware server.  The query must include
         an appropriate KEY record in the additional section, and
@@ -791,51 +846,55 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
         can then be used by to sign subsequent transactions between the
         two servers.
       </p>
-<p>
+      <p>
         TSIG keys known by the server, including TKEY-negotiated keys, can
         be listed using <span class="command"><strong>rndc tsig-list</strong></span>.
       </p>
-<p>
+      <p>
         TKEY-negotiated keys can be deleted from a server using
         <span class="command"><strong>rndc tsig-delete</strong></span>.  This can also be done via
         the TKEY protocol itself, by sending an authenticated TKEY query
         specifying the "key deletion" mode.
       </p>
-</div>
-<div class="section">
+
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="sig0"></a>SIG(0)</h2></div></div></div>
-<p>
+
+      <p>
         <acronym class="acronym">BIND</acronym> partially supports DNSSEC SIG(0)
         transaction signatures as specified in RFC 2535 and RFC 2931.
         SIG(0) uses public/private keys to authenticate messages.  Access control
         is performed in the same manner as TSIG keys; privileges can be
         granted or denied in ACL directives based on the key name.
       </p>
-<p>
+      <p>
         When a SIG(0) signed message is received, it will only be
         verified if the key is known and trusted by the server. The
         server will not attempt to recursively fetch or validate the
         key.
       </p>
-<p>
+      <p>
         SIG(0) signing of multiple-message TCP streams is not supported.
       </p>
-<p>
+      <p>
         The only tool shipped with <acronym class="acronym">BIND</acronym> 9 that
         generates SIG(0) signed messages is <span class="command"><strong>nsupdate</strong></span>.
       </p>
-</div>
-<div class="section">
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="DNSSEC"></a>DNSSEC</h2></div></div></div>
-<p>
+      <p>
         Cryptographic authentication of DNS information is possible
         through the DNS Security (<span class="emphasis"><em>DNSSEC-bis</em></span>) extensions,
         defined in RFC 4033, RFC 4034, and RFC 4035.
         This section describes the creation and use of DNSSEC signed zones.
       </p>
-<p>
+
+      <p>
         In order to set up a DNSSEC secure zone, there are a series
         of steps which must be followed.  <acronym class="acronym">BIND</acronym>
         9 ships
@@ -848,7 +907,8 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
         that the tools shipped with BIND 9.2.x and earlier are not compatible
         with the current ones.
       </p>
-<p>
+
+      <p>
         There must also be communication with the administrators of
         the parent and/or child zone to transmit keys.  A zone's security
         status must be indicated by the parent zone for a DNSSEC capable
@@ -857,19 +917,23 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
         delegation
         point.
       </p>
-<p>
+
+      <p>
         For other servers to trust data in this zone, they must
         either be statically configured with this zone's zone key or the
         zone key of another zone above this one in the DNS tree.
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="generating_dnssec_keys"></a>Generating Keys</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>dnssec-keygen</strong></span> program is used to
           generate keys.
         </p>
-<p>
+
+        <p>
           A secure zone must contain one or more zone keys.  The zone keys will
           sign all other records in the zone, as well as the zone keys of any
           secure delegated zones.  Zone keys must have the same name as the
@@ -879,14 +943,17 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           currently the are two algorithms: RSASHA256 and ECDSAP256SHA256.
           ECDSAP256SHA256 is recommended for current and future deployments.
         </p>
-<p>
+
+        <p>
           The following command will generate a ECDSAP256SHA256 key for
           the <code class="filename">child.example</code> zone:
         </p>
-<p>
+
+        <p>
           <strong class="userinput"><code>dnssec-keygen -a ECDSAP256SHA256 -n ZONE child.example.</code></strong>
         </p>
-<p>
+
+        <p>
           Two output files will be produced:
           <code class="filename">Kchild.example.+013+12345.key</code> and
           <code class="filename">Kchild.example.+013+12345.private</code> (where 12345 is
@@ -898,29 +965,35 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           and the public key (in the <code class="filename">.key</code> file) is used for
           signature verification.
         </p>
-<p>
+
+        <p>
           To generate another key with the same properties (but with
           a different key tag), repeat the above command.
         </p>
-<p>
+
+        <p>
           The <span class="command"><strong>dnssec-keyfromlabel</strong></span> program is used
           to get a key pair from a crypto hardware and build the key
           files. Its usage is similar to <span class="command"><strong>dnssec-keygen</strong></span>.
         </p>
-<p>
+
+        <p>
           The public keys should be inserted into the zone file by
           including the <code class="filename">.key</code> files using
           <span class="command"><strong>$INCLUDE</strong></span> statements.
         </p>
-</div>
-<div class="section">
+
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dnssec_signing"></a>Signing the Zone</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>dnssec-signzone</strong></span> program is used
           to sign a zone.
         </p>
-<p>
+
+        <p>
           Any <code class="filename">keyset</code> files corresponding to
           secure sub-zones should be present.  The zone signer will
           generate <code class="literal">NSEC</code>, <code class="literal">NSEC3</code>
@@ -930,16 +1003,19 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           is not specified, then DS RRsets for the secure child
           zones need to be added manually.
         </p>
-<p>
+
+        <p>
           The following command signs the zone, assuming it is in a
           file called <code class="filename">zone.child.example</code>.  By
                 default, all zone keys which have an available private key are
                 used to generate signatures.
         </p>
-<p>
+
+        <p>
           <strong class="userinput"><code>dnssec-signzone -o child.example zone.child.example</code></strong>
         </p>
-<p>
+
+        <p>
           One output file is produced:
           <code class="filename">zone.child.example.signed</code>.  This
           file
@@ -947,31 +1023,34 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           as the
           input file for the zone.
         </p>
-<p><span class="command"><strong>dnssec-signzone</strong></span>
+
+        <p><span class="command"><strong>dnssec-signzone</strong></span>
           will also produce a keyset and dsset files.  These are used
           to provide the parent zone administrators with the
           <code class="literal">DNSKEYs</code> (or their corresponding
           <code class="literal">DS</code> records) that are the secure entry
           point to the zone.
         </p>
-</div>
-<div class="section">
+
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dnssec_config"></a>Configuring Servers for DNSSEC</h3></div></div></div>
-<p>
+        <p>
           To enable <span class="command"><strong>named</strong></span> to validate answers
           received from other servers, the
           <span class="command"><strong>dnssec-validation</strong></span> option must be set to
           either <strong class="userinput"><code>yes</code></strong> or <strong class="userinput"><code>auto</code></strong>.
         </p>
-<p>
+        <p>
           When <span class="command"><strong>dnssec-validation</strong></span> is set to
           <strong class="userinput"><code>auto</code></strong>, a trust anchor for the DNS
           root zone will automatically be used. This trust anchor is
           provided as part of BIND and is kept up to date using RFC 5011
           key management.
         </p>
-<p>
+        <p>
           When <span class="command"><strong>dnssec-validation</strong></span> is set to
           <strong class="userinput"><code>yes</code></strong>, DNSSEC validation will only occur
           if at least one trust anchor has been explicitly configured
@@ -980,16 +1059,17 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           <span class="command"><strong>managed-keys</strong></span> and <span class="command"><strong>trusted-keys</strong></span>
           statements, both deprecated).
         </p>
-<p>
+        <p>
           When <span class="command"><strong>dnssec-validation</strong></span> is set to
           <strong class="userinput"><code>no</code></strong>, DNSSEC validation will not occur.
         </p>
-<p>
+        <p>
           The default is <strong class="userinput"><code>auto</code></strong> unless BIND is
           built with <span class="command"><strong>configure --disable-auto-validation</strong></span>,
           in which case the default is <strong class="userinput"><code>yes</code></strong>.
         </p>
-<p>
+
+        <p>
           The keys specified in <span class="command"><strong>trust-anchors</strong></span>
           copies of DNSKEY RRs for zones that are used to form the
           first link in the cryptographic chain of trust.  Keys configured
@@ -1002,17 +1082,20 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           will be kept up to date automatically after the first time
           <span class="command"><strong>named</strong></span> runs.
         </p>
-<p>
+
+        <p>
           <span class="command"><strong>trust-anchors</strong></span> is described in more detail
           later in this document.
         </p>
-<p>
+
+        <p>
           Unlike <acronym class="acronym">BIND</acronym> 8, <acronym class="acronym">BIND</acronym>
           9 does not verify signatures on load, so zone keys for
           authoritative zones do not need to be specified in the
           configuration file.
         </p>
-<p>
+
+        <p>
           After DNSSEC gets established, a typical DNSSEC configuration
           will look something like the following.  It has one or
           more public keys for the root.  This allows answers from
@@ -1022,6 +1105,7 @@ allow-update { !{ !localnets; any; }; key host1-host2. ;};
           is immune to compromises in the DNSSEC components of the security
           of parent zones.
         </p>
+
 <pre class="programlisting">
 trust-anchors {
         /* Root Key */
@@ -1060,59 +1144,68 @@ options {
         dnssec-validation yes;
 };
 </pre>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+
+        <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
           None of the keys listed in this example are valid.  In particular,
           the root key is not valid.
         </p>
 </div>
-<p>
+
+        <p>
           When DNSSEC validation is enabled and properly configured,
           the resolver will reject any answers from signed, secure zones
           which fail to validate, and will return SERVFAIL to the client.
         </p>
-<p>
+
+        <p>
           Responses may fail to validate for any of several reasons,
           including missing, expired, or invalid signatures, a key which
           does not match the DS RRset in the parent zone, or an insecure
           response from a zone which, according to its parent, should have
           been secure.
         </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+
+        <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+          <p>
             When the validator receives a response from an unsigned zone
             that has a signed parent, it must confirm with the parent
             that the zone was intentionally left unsigned.  It does
             this by verifying, via signed and validated NSEC/NSEC3 records,
             that the parent zone contains no DS records for the child.
           </p>
-<p>
+          <p>
             If the validator <span class="emphasis"><em>can</em></span> prove that the zone
             is insecure, then the response is accepted.  However, if it
             cannot, then it must assume an insecure response to be a
             forgery; it rejects the response and logs an error.
           </p>
-<p>
+          <p>
             The logged error reads "insecurity proof failed" and
             "got insecure response; parent indicates it should be secure".
           </p>
-</div>
-</div>
-</div>
-<div class="section">
+        </div>
+      </div>
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="dnssec.dynamic.zones"></a>DNSSEC, Dynamic Zones, and Automatic Signing</h2></div></div></div>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.2"></a>Converting from insecure to secure</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.2"></a>Converting from insecure to secure</h3></div></div></div>
+
+  </div>
+  <p>
     Changing a zone from insecure to secure can be done in three
     ways: using a dynamic DNS update, use the
     <span class="command"><strong>auto-dnssec</strong></span> zone option, or set a DNSSEC
     policy for the zone with <span class="command"><strong>dnssec-policy</strong></span>.
   </p>
-<p>
+  <p>
     For either method, you need to configure
     <span class="command"><strong>named</strong></span> so that it can see the
     <code class="filename">K*</code> files which contain the public and private
@@ -1122,7 +1215,7 @@ options {
     <span class="command"><strong>named</strong></span> if <span class="command"><strong>dnssec-policy</strong></span> is
     used).  Keys should be placed in the key-directory, as specified in
     <code class="filename">named.conf</code>:</p>
-<pre class="programlisting">
+    <pre class="programlisting">
        zone example.net {
                type master;
                update-policy local;
@@ -1130,36 +1223,40 @@ options {
                key-directory "dynamic/example.net";
        };
   </pre>
-<p>
+  <p>
     If one KSK and one ZSK DNSKEY key have been generated, this
     configuration will cause all records in the zone to be signed
     with the ZSK, and the DNSKEY RRset to be signed with the KSK as
     well. An NSEC chain will be generated as part of the initial
     signing process.
   </p>
-<p>
+  <p>
     With <span class="command"><strong>dnssec-policy</strong></span> you specify what keys should
     be KSK and/or ZSK. If you want a key to sign all records with a key
     you will need to specify a CSK:
   </p>
-<pre class="programlisting">
+  <pre class="programlisting">
        dnssec-policy csk {
                keys {
                        csk key-directory lifetime P5Y algorithm 13;
                };
        };
   </pre>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.9"></a>Dynamic DNS update method</h3></div></div></div></div>
-<p>To insert the keys via dynamic update:</p>
-<pre class="screen">
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.9"></a>Dynamic DNS update method</h3></div></div></div>
+
+  </div>
+  <p>To insert the keys via dynamic update:</p>
+  <pre class="screen">
        % nsupdate
        &gt; ttl 3600
        &gt; update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
        &gt; update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
        &gt; send
 </pre>
-<p>
+  <p>
     While the update request will complete almost immediately,
     the zone will not be completely signed until
     <span class="command"><strong>named</strong></span> has had time to walk the zone and
@@ -1167,13 +1264,13 @@ options {
     will be added last, to signal that there is a complete NSEC
     chain.
   </p>
-<p>
+  <p>
     If you wish to sign using NSEC3 instead of NSEC, you should
     add an NSEC3PARAM record to the initial update request. If you
     wish the NSEC3 chain to have the OPTOUT bit set, set it in the
     flags field of the NSEC3PARAM record.
   </p>
-<pre class="screen">
+  <pre class="screen">
        % nsupdate
        &gt; ttl 3600
        &gt; update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
@@ -1181,7 +1278,7 @@ options {
        &gt; update add example.net NSEC3PARAM 1 1 100 1234567890
        &gt; send
 </pre>
-<p>
+  <p>
     Again, this update request will complete almost
     immediately; however, the record won't show up until
     <span class="command"><strong>named</strong></span> has had a chance to build/remove the
@@ -1189,13 +1286,17 @@ options {
     the state of the operation (see below for more details), and will
     be removed once the operation completes.
   </p>
-<p>
+  <p>
     While the initial signing and NSEC/NSEC3 chain generation
     is happening, other updates are possible as well.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.17"></a>Fully automatic zone signing</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.17"></a>Fully automatic zone signing</h3></div></div></div>
+
+  </div>
+  <p>
     To enable automatic signing, you can set a
     <span class="command"><strong>dnssec-policy</strong></span>, or add the
     <span class="command"><strong>auto-dnssec</strong></span> option to the zone statement in
@@ -1204,14 +1305,14 @@ options {
     <code class="constant">allow</code> or
     <code class="constant">maintain</code>.
   </p>
-<p>
+  <p>
     With <span class="command"><strong>auto-dnssec allow</strong></span>,
     <span class="command"><strong>named</strong></span> can search the key directory for keys
     matching the zone, insert them into the zone, and use them to
     sign the zone. It will do so only when it receives an
     <span class="command"><strong>rndc sign &lt;zonename&gt;</strong></span>.
   </p>
-<p>
+  <p>
     
     <span class="command"><strong>auto-dnssec maintain</strong></span> includes the above
     functionality, but will also automatically adjust the zone's
@@ -1219,14 +1320,14 @@ options {
     (See <a class="xref" href="man.dnssec-keygen.html" title="dnssec-keygen"><span class="refentrytitle"><span class="application">dnssec-keygen</span></span>(8)</a> and
     <a class="xref" href="man.dnssec-settime.html" title="dnssec-settime"><span class="refentrytitle"><span class="application">dnssec-settime</span></span>(8)</a> for more information.)
   </p>
-<p>
+  <p>
     <span class="command"><strong>dnssec-policy</strong></span> is like
     <span class="command"><strong>auto-dnssec maintain</strong></span>, but will also automatically
     create new keys when necessary.  Also any configuration related
     to DNSSEC signing is retrieved from the policy (ignoring existing
     DNSSEC named.conf options).
   </p>
-<p>
+  <p>
     <span class="command"><strong>named</strong></span> will periodically search the key directory
     for keys matching the zone, and if the keys' metadata indicates
     that any change should be made the zone, such as adding, removing,
@@ -1236,21 +1337,21 @@ options {
     to a maximum of 24 hours.  The <span class="command"><strong>rndc loadkeys</strong></span> forces
     <span class="command"><strong>named</strong></span> to check for key updates immediately.
   </p>
-<p>
+  <p>
     If keys are present in the key directory the first time the zone
     is loaded, the zone will be signed immediately, without waiting for an
     <span class="command"><strong>rndc sign</strong></span> or <span class="command"><strong>rndc loadkeys</strong></span>
     command. (Those commands can still be used when there are unscheduled
     key changes, however.)
   </p>
-<p>
+  <p>
     When new keys are added to a zone, the TTL is set to match that
     of any existing DNSKEY RRset. If there is no existing DNSKEY RRset,
     then the TTL will be set to the TTL specified when the key was
     created (using the <span class="command"><strong>dnssec-keygen -L</strong></span> option), if
     any, or to the SOA TTL.
   </p>
-<p>
+  <p>
     If you wish the zone to be signed using NSEC3 instead of NSEC,
     submit an NSEC3PARAM record via dynamic update prior to the
     scheduled publication and activation of the keys.  If you wish the
@@ -1260,7 +1361,7 @@ options {
     the zone is signed and the NSEC3 chain is completed, the NSEC3PARAM
     record will appear in the zone.
   </p>
-<p>
+  <p>
     Using the
     <span class="command"><strong>auto-dnssec</strong></span> option requires the zone to be
     configured to allow dynamic updates, by adding an
@@ -1269,22 +1370,26 @@ options {
     configuration. If this has not been done, the configuration will
     fail.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.27"></a>Private-type records</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.27"></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
     the final octet (for those records which have a nonzero initial
     octet).
   </p>
-<p>
+  <p>
     The private type record format: If the first octet is
     non-zero then the record indicates that the zone needs to be
     signed with the key matching the record, or that all signatures
     that match the record should be removed.
   </p>
-<p>
+  <p>
     </p>
 <div class="literallayout"><p><br>
 <br>
@@ -1295,19 +1400,19 @@ options {
 </p></div>
 <p>
   </p>
-<p>
+  <p>
     Only records flagged as "complete" can be removed via
     dynamic update. Attempts to remove other private type records
     will be silently ignored.
   </p>
-<p>
+  <p>
     If the first octet is zero (this is a reserved algorithm
     number that should never appear in a DNSKEY record) then the
     record indicates changes to the NSEC3 chains are in progress. The
     rest of the record contains an NSEC3PARAM record. The flag field
     tells what operation to perform based on the flag bits.
   </p>
-<p>
+  <p>
     </p>
 <div class="literallayout"><p><br>
 <br>
@@ -1318,16 +1423,23 @@ options {
 </p></div>
 <p>
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.34"></a>DNSKEY rollovers</h3></div></div></div></div>
-<p>
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.34"></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 class="command"><strong>auto-dnssec</strong></span> zone option.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.36"></a>Dynamic DNS update method</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.36"></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 class="command"><strong>named</strong></span> can find them. You can then add the new
@@ -1337,11 +1449,11 @@ options {
     records will be updated so that the last octet is non
     zero.
   </p>
-<p>
+  <p>
     If this is for a KSK you need to inform the parent and any
     trust anchor repositories of the new KSK.
   </p>
-<p>
+  <p>
     You should then wait for the maximum TTL in the zone before
     removing the old DNSKEY. If it is a KSK that is being updated,
     you also need to wait for the DS RRset in the parent to be
@@ -1349,15 +1461,19 @@ options {
     be able to verify at least one signature when you remove the old
     DNSKEY.
   </p>
-<p>
+  <p>
     The old DNSKEY can be removed via UPDATE. Take care to
     specify the correct key.
     <span class="command"><strong>named</strong></span> will clean out any signatures generated
     by the old key after the update completes.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.41"></a>Automatic key rollovers</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.41"></a>Automatic key rollovers</h3></div></div></div>
+
+  </div>
+  <p>
     When a new key reaches its activation date (as set by
     <span class="command"><strong>dnssec-keygen</strong></span> or <span class="command"><strong>dnssec-settime</strong></span>),
     if the <span class="command"><strong>auto-dnssec</strong></span> zone option is set to
@@ -1372,63 +1488,87 @@ options {
     completes in 30 days, after which it will be safe to remove the
     old key from the DNSKEY RRset.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.43"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.43"></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="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.45"></a>Converting from NSEC to NSEC3</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.45"></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>
-<p>
+  <p>
     NSEC3 is not supported yet with <span class="command"><strong>dnssec-policy</strong></span>.
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.48"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.48"></a>Converting from NSEC3 to NSEC</h3></div></div></div>
+
+  </div>
+  <p>
     To do this, use <span class="command"><strong>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="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.50"></a>Converting from secure to insecure</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.50"></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 class="command"><strong>nsupdate</strong></span>. All signatures, NSEC or NSEC3 chains,
     and associated NSEC3PARAM records will be removed automatically.
     This will take place after the update request completes.</p>
-<p> This requires the
+    <p> This requires the
     <span class="command"><strong>dnssec-secure-to-insecure</strong></span> option to be set to
     <strong class="userinput"><code>yes</code></strong> in
     <code class="filename">named.conf</code>.</p>
-<p>In addition, if the <span class="command"><strong>auto-dnssec maintain</strong></span>
+    <p>In addition, if the <span class="command"><strong>auto-dnssec maintain</strong></span>
     zone statement is used, it should be removed or changed to
     <span class="command"><strong>allow</strong></span> instead (or it will re-sign).
   </p>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.54"></a>Periodic re-signing</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.54"></a>Periodic re-signing</h3></div></div></div>
+
+  </div>
+  <p>
     In any secure zone which supports dynamic updates, <span class="command"><strong>named</strong></span>
     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="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="id-1.5.10.56"></a>NSEC3 and OPTOUT</h3></div></div></div></div>
-<p>
+
+  <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id-1.5.10.56"></a>NSEC3 and OPTOUT</h3></div></div></div>
+
+  </div>
+  <p>
     <span class="command"><strong>named</strong></span> only supports creating new NSEC3 chains
     where all the NSEC3 records in the zone have the same OPTOUT
     state.
@@ -1440,35 +1580,41 @@ options {
     changed.
   </p>
 </div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="rfc5011.support"></a>Dynamic Trust Anchor Management</h2></div></div></div>
-<p>
+
+  <p>
     BIND is able to maintain DNSSEC trust anchors using RFC 5011 key
     management. This feature allows <span class="command"><strong>named</strong></span> to keep track
     of changes to critical DNSSEC keys without any need for the operator to
     make changes to configuration files.
   </p>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.11.3"></a>Validating Resolver</h3></div></div></div>
-<p>To configure a validating resolver to use RFC 5011 to
+
+    
+    <p>To configure a validating resolver to use RFC 5011 to
     maintain a trust anchor, configure the trust anchor using a
     <span class="command"><strong>trust-anchors</strong></span> statement and the
     <span class="command"><strong>initial-key</strong></span> or <span class="command"><strong>initial-ds</strong></span>
     keyword. Information about this can be found in
     <a class="xref" href="Bv9ARM.ch05.html#trust-anchors" title="trust-anchors Statement Definition and Usage">the section called &#8220;<span class="command"><strong>trust-anchors</strong></span> Statement Definition
             and Usage&#8221;</a>.</p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.11.4"></a>Authoritative Server</h3></div></div></div>
-<p>To set up an authoritative zone for RFC 5011 trust anchor
+
+    <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"
     KSK. All KSKs which do not sign the zone are "stand-by"
     keys.</p>
-<p>Any validating resolver which is configured to use the
+    <p>Any validating resolver which is configured to use the
     active KSK as an RFC 5011-managed trust anchor will take note
     of the stand-by KSKs in the zone's DNSKEY RRset, and store them
     for future reference. The resolver will recheck the zone
@@ -1477,7 +1623,7 @@ options {
     anchor for the zone. Any time after this 30-day acceptance
     timer has completed, the active KSK can be revoked, and the
     zone can be "rolled over" to the newly accepted key.</p>
-<p>The easiest way to place a stand-by key in a zone is to
+    <p>The easiest way to place a stand-by key in a zone is to
     use the "smart signing" features of
     <span class="command"><strong>dnssec-keygen</strong></span> and
     <span class="command"><strong>dnssec-signzone</strong></span>. If a key with a publication
@@ -1485,54 +1631,56 @@ options {
     the future, "
     <span class="command"><strong>dnssec-signzone -S</strong></span>" will include the DNSKEY
     record in the zone, but will not sign with it:</p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>dnssec-keygen -K keys -f KSK -P now -A now+2y example.net</code></strong>
 $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code></strong>
 </pre>
-<p>To revoke a key, the new command
+    <p>To revoke a key, the new command
     <span class="command"><strong>dnssec-revoke</strong></span> has been added. This adds the
     REVOKED bit to the key flags and re-generates the
     <code class="filename">K*.key</code> and
     <code class="filename">K*.private</code> files.</p>
-<p>After revoking the active key, the zone must be signed
+    <p>After revoking the active key, the zone must be signed
     with both the revoked KSK and the new active KSK. (Smart
     signing takes care of this automatically.)</p>
-<p>Once a key has been revoked and used to sign the DNSKEY
+    <p>Once a key has been revoked and used to sign the DNSKEY
     RRset in which it appears, that key will never again be
     accepted as a valid trust anchor by the resolver. However,
     validation can proceed using the new active key (which had been
     accepted by the resolver when it was a stand-by key).</p>
-<p>See RFC 5011 for more details on key rollover
+    <p>See RFC 5011 for more details on key rollover
     scenarios.</p>
-<p>When a key has been revoked, its key ID changes,
+    <p>When a key has been revoked, its key ID changes,
     increasing by 128, and wrapping around at 65535. So, for
     example, the key "<code class="filename">Kexample.com.+005+10000</code>" becomes
     "<code class="filename">Kexample.com.+005+10128</code>".</p>
-<p>If two keys have IDs exactly 128 apart, and one is
+    <p>If two keys have IDs exactly 128 apart, and one is
     revoked, then the two key IDs will collide, causing several
     problems. To prevent this,
     <span class="command"><strong>dnssec-keygen</strong></span> will not generate a new key if
     another key is present which may collide. This checking will
     only occur if the new keys are written to the same directory
     which holds all other keys in use for that zone.</p>
-<p>Older versions of BIND 9 did not have this precaution.
+    <p>Older versions of BIND 9 did not have this precaution.
     Exercise caution if using key revocation on keys that were
     generated by previous releases, or if using keys stored in
     multiple directories or on multiple machines.</p>
-<p>It is expected that a future release of BIND 9 will
+    <p>It is expected that a future release of BIND 9 will
     address this problem in a different way, by storing revoked
     keys with their original unrevoked key IDs.</p>
+  </div>
 </div>
-</div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="pkcs11"></a>PKCS#11 (Cryptoki) support</h2></div></div></div>
-<p>
+
+  <p>
     PKCS#11 (Public Key Cryptography Standard #11) defines a
     platform-independent API for the control of hardware security
     modules (HSMs) and other cryptographic support devices.
   </p>
-<p>
+  <p>
     BIND 9 is known to work with three HSMs: The AEP Keyper, which has
     been tested with Debian Linux, Solaris x86 and Windows Server 2003;
     the Thales nShield, tested with Debian Linux; and the Sun SCA 6000
@@ -1541,13 +1689,13 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code><
     a software-based HSM simulator library produced by the OpenDNSSEC
     project.
   </p>
-<p>
+  <p>
     PKCS#11 makes use of a "provider library": a dynamically loadable
     library which provides a low-level PKCS#11 interface to drive the HSM
     hardware.  The PKCS#11 provider library comes from the HSM vendor, and
     it is specific to the HSM to be controlled.
   </p>
-<p>
+  <p>
     There are two available mechanisms for PKCS#11 support in BIND 9:
     OpenSSL-based PKCS#11 and native PKCS#11.  When using the first
     mechanism, BIND uses a modified version of OpenSSL, which loads
@@ -1557,19 +1705,21 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code><
     OpenSSL completely; BIND loads the provider library itself, and uses
     the PKCS#11 API to drive the HSM directly.
   </p>
-<div class="section">
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.6"></a>Prerequisites</h3></div></div></div>
-<p>
+
+    <p>
       See the documentation provided by your HSM vendor for
       information about installing, initializing, testing and
       troubleshooting the HSM.
     </p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.7"></a>Native PKCS#11</h3></div></div></div>
-<p>
+
+    <p>
       Native PKCS#11 mode will only work with an HSM capable of carrying
       out <span class="emphasis"><em>every</em></span> cryptographic operation BIND 9 may
       need. The HSM's provider library must have a complete implementation
@@ -1581,15 +1731,15 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code><
       native PKCS#11, it is expected that OpenSSL-based PKCS#11 will
       be deprecated.)
     </p>
-<p>
+    <p>
       To build BIND with native PKCS#11, configure as follows:
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>cd bind9</code></strong>
 $ <strong class="userinput"><code>./configure --enable-native-pkcs11 \
     --with-pkcs11=<em class="replaceable"><code>provider-library-path</code></em></code></strong>
     </pre>
-<p>
+    <p>
       This will cause all BIND tools, including <span class="command"><strong>named</strong></span>
       and the <span class="command"><strong>dnssec-*</strong></span> and <span class="command"><strong>pkcs11-*</strong></span>
       tools, to use the PKCS#11 provider library specified in
@@ -1599,10 +1749,11 @@ $ <strong class="userinput"><code>./configure --enable-native-pkcs11 \
       <span class="command"><strong>dnssec-*</strong></span> tools, or the <code class="option">-m</code> in
       the <span class="command"><strong>pkcs11-*</strong></span> tools.)
     </p>
-<div class="section">
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.7.6"></a>Building SoftHSMv2</h4></div></div></div>
-<p>
+
+      <p>
        SoftHSMv2, the latest development version of SoftHSM, is available
        from
        <a class="link" href="https://github.com/opendnssec/SoftHSMv2" target="_top">
@@ -1620,7 +1771,7 @@ $ <strong class="userinput"><code>./configure --enable-native-pkcs11 \
        cryptographic functions, but when using it for native PKCS#11 in
        BIND, OpenSSL is required.
       </p>
-<p>
+      <p>
        By default, the SoftHSMv2 configuration file is
        <em class="replaceable"><code>prefix</code></em>/etc/softhsm2.conf (where
        <em class="replaceable"><code>prefix</code></em> is configured at compile time).
@@ -1628,19 +1779,20 @@ $ <strong class="userinput"><code>./configure --enable-native-pkcs11 \
        variable.  The SoftHSMv2 cryptographic store must be installed and
        initialized before using it with BIND.
       </p>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code> cd SoftHSMv2 </code></strong>
 $ <strong class="userinput"><code> configure --with-crypto-backend=openssl --prefix=/opt/pkcs11/usr </code></strong>
 $ <strong class="userinput"><code> make </code></strong>
 $ <strong class="userinput"><code> make install </code></strong>
 $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token 0 --slot 0 --label softhsmv2 </code></strong>
       </pre>
-</div>
-</div>
-<div class="section">
+    </div>
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.8"></a>OpenSSL-based PKCS#11</h3></div></div></div>
-<p>
+
+    <p>
       OpenSSL-based PKCS#11 mode uses a modified version of the
       OpenSSL library; stock OpenSSL does not fully support PKCS#11.
       ISC provides a patch to OpenSSL to correct this.  This patch is
@@ -1648,20 +1800,23 @@ $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token
       modified by ISC to provide new features such as PIN management and
       key-by-reference.
     </p>
-<p>
+    <p>
       There are two "flavors" of PKCS#11 support provided by
       the patched OpenSSL, one of which must be chosen at
       configuration time. The correct choice depends on the HSM
       hardware:
     </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+       <p>
          Use 'crypto-accelerator' with HSMs that have hardware
          cryptographic acceleration features, such as the SCA 6000
          board. This causes OpenSSL to run all supported
          cryptographic operations in the HSM.
-       </p></li>
-<li class="listitem"><p>
+       </p>
+      </li>
+<li class="listitem">
+       <p>
          Use 'sign-only' with HSMs that are designed to
          function primarily as secure key storage devices, but lack
          hardware acceleration. These devices are highly secure, but
@@ -1672,9 +1827,10 @@ $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token
          such as zone signing, and to use the system CPU for all
          other computationally-intensive operations. The AEP Keyper
          is an example of such a device.
-       </p></li>
+       </p>
+      </li>
 </ul></div>
-<p>
+    <p>
       The modified OpenSSL code is included in the BIND 9 release,
       in the form of a context diff against the latest versions of
       OpenSSL.  OpenSSL 0.9.8, 1.0.0, 1.0.1 and 1.0.2 are supported;
@@ -1682,7 +1838,7 @@ $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token
       follow, we use OpenSSL 0.9.8, but the same methods work with
       OpenSSL 1.0.0 through 1.0.2.
     </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+    <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
       The OpenSSL patches as of this writing (January 2016)
@@ -1692,27 +1848,28 @@ $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token
       is expected to change.
     </p>
 </div>
-<p>
+    <p>
       Before building BIND 9 with PKCS#11 support, it will be
       necessary to build OpenSSL with the patch in place, and configure
       it with the path to your HSM's PKCS#11 provider library.
     </p>
-<div class="section">
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.8"></a>Patching OpenSSL</h4></div></div></div>
-<pre class="screen">
+
+      <pre class="screen">
 $ <strong class="userinput"><code>wget <a class="link" href="" target="_top">http://www.openssl.org/source/openssl-0.9.8zc.tar.gz</a></code></strong>
   </pre>
-<p>Extract the tarball:</p>
-<pre class="screen">
+      <p>Extract the tarball:</p>
+      <pre class="screen">
 $ <strong class="userinput"><code>tar zxf openssl-0.9.8zc.tar.gz</code></strong>
 </pre>
-<p>Apply the patch from the BIND 9 release:</p>
-<pre class="screen">
+      <p>Apply the patch from the BIND 9 release:</p>
+      <pre class="screen">
 $ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8zc \
              &lt; bind9/bin/pkcs11/openssl-0.9.8zc-patch</code></strong>
 </pre>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
        The patch file may not be compatible with the
@@ -1720,77 +1877,83 @@ $ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8zc \
        install GNU patch.
       </p>
 </div>
-<p>
+      <p>
        When building OpenSSL, place it in a non-standard
        location so that it does not interfere with OpenSSL libraries
        elsewhere on the system. In the following examples, we choose
        to install into "/opt/pkcs11/usr". We will use this location
        when we configure BIND 9.
       </p>
-<p>
+      <p>
        Later, when building BIND 9, the location of the custom-built
        OpenSSL library will need to be specified via configure.
       </p>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.9"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div>
-<p>
+      
+
+      <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
        slower than your system's CPU. Therefore, we choose the
        'sign-only' flavor when building OpenSSL.
       </p>
-<p>
+      <p>
        The Keyper-specific PKCS#11 provider library is
        delivered with the Keyper software. In this example, we place
        it /opt/pkcs11/usr/lib:
       </p>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code>cp pkcs11.GCC4.0.2.so.4.05 /opt/pkcs11/usr/lib/libpkcs11.so</code></strong>
 </pre>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
 $ <strong class="userinput"><code>./Configure linux-x86_64 \
            --pk11-libname=/opt/pkcs11/usr/lib/libpkcs11.so \
            --pk11-flavor=sign-only \
            --prefix=/opt/pkcs11/usr</code></strong>
 </pre>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.10"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div>
-<p>
+      
+
+      <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
        'crypto-accelerator'.
       </p>
-<p>
+      <p>
        In this example, we are building on Solaris x86 on an
        AMD64 system.
       </p>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
 $ <strong class="userinput"><code>./Configure solaris64-x86_64-cc \
            --pk11-libname=/usr/lib/64/libpkcs11.so \
            --pk11-flavor=crypto-accelerator \
            --prefix=/opt/pkcs11/usr</code></strong>
 </pre>
-<p>
+      <p>
        (For a 32-bit build, use "solaris-x86-cc" and /usr/lib/libpkcs11.so.)
       </p>
-<p>
+      <p>
        After configuring, run
        <span class="command"><strong>make</strong></span> and
        <span class="command"><strong>make test</strong></span>.
       </p>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.11"></a>Building OpenSSL for SoftHSM</h4></div></div></div>
-<p>
+      
+
+      <p>
        SoftHSM (version 1) is a software library developed by the
        OpenDNSSEC project
        (<a class="link" href="http://www.opendnssec.org" target="_top">
@@ -1803,13 +1966,13 @@ $ <strong class="userinput"><code>./Configure solaris64-x86_64-cc \
        less secure than a true HSM, it can allow you to experiment
        with PKCS#11 when an HSM is not available.
       </p>
-<p>
+      <p>
        The SoftHSM cryptographic store must be installed and
        initialized before using it with OpenSSL, and the SOFTHSM_CONF
        environment variable must always point to the SoftHSM configuration
        file:
       </p>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code> cd softhsm-1.3.7 </code></strong>
 $ <strong class="userinput"><code> configure --prefix=/opt/pkcs11/usr </code></strong>
 $ <strong class="userinput"><code> make </code></strong>
@@ -1818,103 +1981,110 @@ $ <strong class="userinput"><code> export SOFTHSM_CONF=/opt/pkcs11/softhsm.conf
 $ <strong class="userinput"><code> echo "0:/opt/pkcs11/softhsm.db" &gt; $SOFTHSM_CONF </code></strong>
 $ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm --init-token 0 --slot 0 --label softhsm </code></strong>
 </pre>
-<p>
+      <p>
        SoftHSM can perform all cryptographic operations, but
        since it only uses your system CPU, there is no advantage to using
        it for anything but signing.  Therefore, we choose the 'sign-only'
        flavor when building OpenSSL.
       </p>
-<pre class="screen">
+      <pre class="screen">
 $ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
 $ <strong class="userinput"><code>./Configure linux-x86_64 \
            --pk11-libname=/opt/pkcs11/usr/lib/libsofthsm.so \
            --pk11-flavor=sign-only \
            --prefix=/opt/pkcs11/usr</code></strong>
 </pre>
-<p>
+      <p>
        After configuring, run "<span class="command"><strong>make</strong></span>"
        and "<span class="command"><strong>make test</strong></span>".
       </p>
-</div>
-<p>
+    </div>
+    <p>
       Once you have built OpenSSL, run
       "<span class="command"><strong>apps/openssl engine pkcs11</strong></span>" to confirm
       that PKCS#11 support was compiled in correctly. The output
       should be one of the following lines, depending on the flavor
       selected:
     </p>
-<pre class="screen">
+    <pre class="screen">
        (pkcs11) PKCS #11 engine support (sign only)
 </pre>
-<p>Or:</p>
-<pre class="screen">
+    <p>Or:</p>
+    <pre class="screen">
        (pkcs11) PKCS #11 engine support (crypto accelerator)
 </pre>
-<p>
+    <p>
       Next, run
       "<span class="command"><strong>apps/openssl engine pkcs11 -t</strong></span>". This will
       attempt to initialize the PKCS#11 engine. If it is able to
       do so successfully, it will report
       <span class="quote">&#8220;<span class="quote"><code class="literal">[ available ]</code></span>&#8221;</span>.
     </p>
-<p>
+    <p>
       If the output is correct, run
       "<span class="command"><strong>make install</strong></span>" which will install the
       modified OpenSSL suite to <code class="filename">/opt/pkcs11/usr</code>.
     </p>
-<div class="section">
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.18"></a>Configuring BIND 9 for Linux with the AEP Keyper</h4></div></div></div>
-<pre class="screen">
+      
+
+      <pre class="screen">
 $ <strong class="userinput"><code>cd ../bind9</code></strong>
 $ <strong class="userinput"><code>./configure \
           --with-openssl=/opt/pkcs11/usr \
           --with-pkcs11=/opt/pkcs11/usr/lib/libpkcs11.so</code></strong>
 </pre>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.19"></a>Configuring BIND 9 for Solaris with the SCA 6000</h4></div></div></div>
-<pre class="screen">
+      
+
+      <pre class="screen">
 $ <strong class="userinput"><code>cd ../bind9</code></strong>
 $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" \
            --with-openssl=/opt/pkcs11/usr \
            --with-pkcs11=/usr/lib/64/libpkcs11.so</code></strong>
 </pre>
-<p>(For a 32-bit build, omit CC="cc -xarch=amd64".)</p>
-<p>
+      <p>(For a 32-bit build, omit CC="cc -xarch=amd64".)</p>
+      <p>
        If configure complains about OpenSSL not working, you
        may have a 32/64-bit architecture mismatch. Or, you may have
        incorrectly specified the path to OpenSSL (it should be the
        same as the --prefix argument to the OpenSSL
        Configure).
       </p>
-</div>
-<div class="section">
+    </div>
+    <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.5.12.8.20"></a>Configuring BIND 9 for SoftHSM</h4></div></div></div>
-<pre class="screen">
+      
+
+      <pre class="screen">
 $ <strong class="userinput"><code>cd ../bind9</code></strong>
 $ <strong class="userinput"><code>./configure \
           --with-openssl=/opt/pkcs11/usr \
           --with-pkcs11=/opt/pkcs11/usr/lib/libsofthsm.so</code></strong>
 </pre>
-</div>
-<p>
+    </div>
+    <p>
       After configuring, run
       "<span class="command"><strong>make</strong></span>",
       "<span class="command"><strong>make test</strong></span>" and
       "<span class="command"><strong>make install</strong></span>".
     </p>
-<p>
+    <p>
       (Note: If "make test" fails in the "pkcs11" system test, you may
       have forgotten to set the SOFTHSM_CONF environment variable.)
     </p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.9"></a>PKCS#11 Tools</h3></div></div></div>
-<p>
+
+    <p>
       BIND 9 includes a minimal set of tools to operate the
       HSM, including
       <span class="command"><strong>pkcs11-keygen</strong></span> to generate a new key pair
@@ -1924,7 +2094,7 @@ $ <strong class="userinput"><code>./configure \
       <span class="command"><strong>pkcs11-destroy</strong></span> to remove objects, and
       <span class="command"><strong>pkcs11-tokens</strong></span> to list available tokens.
     </p>
-<p>
+    <p>
       In UNIX/Linux builds, these tools are built only if BIND
       9 is configured with the --with-pkcs11 option. (Note: If
       --with-pkcs11 is set to "yes", rather than to the path of the
@@ -1933,24 +2103,25 @@ $ <strong class="userinput"><code>./configure \
       PKCS11_PROVIDER environment variable to specify the path to the
       provider.)
     </p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.10"></a>Using the HSM</h3></div></div></div>
-<p>
+
+    <p>
       For OpenSSL-based PKCS#11, we must first set up the runtime
       environment so the OpenSSL and PKCS#11 libraries can be loaded:
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>export LD_LIBRARY_PATH=/opt/pkcs11/usr/lib:${LD_LIBRARY_PATH}</code></strong>
 </pre>
-<p>
+    <p>
       This causes <span class="command"><strong>named</strong></span> and other binaries to load
       the OpenSSL library from <code class="filename">/opt/pkcs11/usr/lib</code>
       rather than from the default location.  This step is not necessary
       when using native PKCS#11.
     </p>
-<p>
+    <p>
       Some HSMs require other environment variables to be set.
       For example, when operating an AEP Keyper, it is necessary to
       specify the location of the "machine" file, which stores
@@ -1959,10 +2130,10 @@ $ <strong class="userinput"><code>export LD_LIBRARY_PATH=/opt/pkcs11/usr/lib:${L
       <code class="filename">/opt/Keyper/PKCS11Provider/machine</code>,
       use:
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>export KEYPER_LIBRARY_PATH=/opt/Keyper/PKCS11Provider</code></strong>
 </pre>
-<p>
+    <p>
       Such environment variables must be set whenever running
       any tool that uses the HSM, including
       <span class="command"><strong>pkcs11-keygen</strong></span>,
@@ -1973,31 +2144,31 @@ $ <strong class="userinput"><code>export KEYPER_LIBRARY_PATH=/opt/Keyper/PKCS11P
       <span class="command"><strong>dnssec-keygen</strong></span>, and
       <span class="command"><strong>named</strong></span>.
     </p>
-<p>
+    <p>
       We can now create and use keys in the HSM. In this case,
       we will create a 2048 bit key and give it the label
       "sample-ksk":
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>pkcs11-keygen -b 2048 -l sample-ksk</code></strong>
 </pre>
-<p>To confirm that the key exists:</p>
-<pre class="screen">
+    <p>To confirm that the key exists:</p>
+    <pre class="screen">
 $ <strong class="userinput"><code>pkcs11-list</code></strong>
 Enter PIN:
 object[0]: handle 2147483658 class 3 label[8] 'sample-ksk' id[0]
 object[1]: handle 2147483657 class 2 label[8] 'sample-ksk' id[0]
 </pre>
-<p>
+    <p>
       Before using this key to sign a zone, we must create a
       pair of BIND 9 key files. The "dnssec-keyfromlabel" utility
       does this. In this case, we will be using the HSM key
       "sample-ksk" as the key-signing key for "example.net":
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>dnssec-keyfromlabel -l sample-ksk -f KSK example.net</code></strong>
 </pre>
-<p>
+    <p>
       The resulting K*.key and K*.private files can now be used
       to sign the zone. Unlike normal K* files, which contain both
       public and private key data, these files will contain only the
@@ -2005,31 +2176,31 @@ $ <strong class="userinput"><code>dnssec-keyfromlabel -l sample-ksk -f KSK examp
       remains stored within the HSM. Signing with the private key takes
       place inside the HSM.
     </p>
-<p>
+    <p>
       If you wish to generate a second key in the HSM for use
       as a zone-signing key, follow the same procedure above, using a
       different keylabel, a smaller key size, and omitting "-f KSK"
       from the dnssec-keyfromlabel arguments:
     </p>
-<p>
+    <p>
       (Note: When using OpenSSL-based PKCS#11 the label is an arbitrary
       string which identifies the key.  With native PKCS#11, the label is
       a PKCS#11 URI string which may include other details about the key
       and the HSM, including its PIN. See
       <a class="xref" href="man.dnssec-keyfromlabel.html" title="dnssec-keyfromlabel"><span class="refentrytitle"><span class="application">dnssec-keyfromlabel</span></span>(8)</a> for details.)
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>pkcs11-keygen -b 1024 -l sample-zsk</code></strong>
 $ <strong class="userinput"><code>dnssec-keyfromlabel -l sample-zsk example.net</code></strong>
 </pre>
-<p>
+    <p>
       Alternatively, you may prefer to generate a conventional
       on-disk key, using dnssec-keygen:
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>dnssec-keygen example.net</code></strong>
 </pre>
-<p>
+    <p>
       This provides less security than an HSM key, but since
       HSMs can be slow or cumbersome to use for security reasons, it
       may be more efficient to reserve HSM keys for use in the less
@@ -2039,13 +2210,13 @@ $ <strong class="userinput"><code>dnssec-keygen example.net</code></strong>
       there is no speed advantage to using on-disk keys, as cryptographic
       operations will be done by the HSM regardless.)
     </p>
-<p>
+    <p>
       Now you can sign the zone. (Note: If not using the -S
       option to <span class="command"><strong>dnssec-signzone</strong></span>, it will be
       necessary to add the contents of both <code class="filename">K*.key</code>
       files to the zone master file before signing it.)
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>dnssec-signzone -S example.net</code></strong>
 Enter PIN:
 Verifying the zone using the following algorithms:
@@ -2054,11 +2225,12 @@ Zone signing complete:
 Algorithm: NSEC3RSASHA1: ZSKs: 1, KSKs: 1 active, 0 revoked, 0 stand-by
 example.net.signed
 </pre>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.11"></a>Specifying the engine on the command line</h3></div></div></div>
-<p>
+
+    <p>
       When using OpenSSL-based PKCS#11, the "engine" to be used by
       OpenSSL can be specified in <span class="command"><strong>named</strong></span> and all of
       the BIND <span class="command"><strong>dnssec-*</strong></span> tools by using the "-E
@@ -2068,29 +2240,30 @@ example.net.signed
       for some reason you wish to use a different OpenSSL
       engine.
     </p>
-<p>
+    <p>
       If you wish to disable use of the "pkcs11" engine &#8212;
       for troubleshooting purposes, or because the HSM is unavailable
       &#8212; set the engine to the empty string. For example:
     </p>
-<pre class="screen">
+    <pre class="screen">
 $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></strong>
 </pre>
-<p>
+    <p>
       This causes
       <span class="command"><strong>dnssec-signzone</strong></span> to run as if it were compiled
       without the --with-pkcs11 option.
     </p>
-<p>
+    <p>
       When built with native PKCS#11 mode, the "engine" option has a
       different meaning: it specifies the path to the PKCS#11 provider
       library.  This may be useful when testing a new provider library.
     </p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.12.12"></a>Running named with automatic zone re-signing</h3></div></div></div>
-<p>
+
+    <p>
       If you want <span class="command"><strong>named</strong></span> to dynamically re-sign zones
       using HSM keys, and/or to to sign new records inserted via nsupdate,
       then <span class="command"><strong>named</strong></span> must have access to the HSM PIN. In OpenSSL-based PKCS#11,
@@ -2098,13 +2271,13 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       (in the above examples,
       <code class="filename">/opt/pkcs11/usr/ssl/openssl.cnf</code>).
     </p>
-<p>
+    <p>
       The location of the openssl.cnf file can be overridden by
       setting the OPENSSL_CONF environment variable before running
       <span class="command"><strong>named</strong></span>.
     </p>
-<p>Sample openssl.cnf:</p>
-<pre class="programlisting">
+    <p>Sample openssl.cnf:</p>
+    <pre class="programlisting">
        openssl_conf = openssl_def
        [ openssl_def ]
        engines = engine_section
@@ -2113,40 +2286,42 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
        [ pkcs11_section ]
        PIN = <em class="replaceable"><code>&lt;PLACE PIN HERE&gt;</code></em>
 </pre>
-<p>
+    <p>
       This will also allow the dnssec-* tools to access the HSM
       without PIN entry. (The pkcs11-* tools access the HSM directly,
       not via OpenSSL, so a PIN will still be required to use
       them.)
     </p>
-<p>
+    <p>
       In native PKCS#11 mode, the PIN can be provided in a file specified
       as an attribute of the key's label.  For example, if a key had the label
       <strong class="userinput"><code>pkcs11:object=local-zsk;pin-source=/etc/hsmpin</code></strong>,
       then the PIN would be read from the file
       <code class="filename">/etc/hsmpin</code>.
     </p>
-<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+    <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Warning</h3>
-<p>
+      <p>
        Placing the HSM's PIN in a text file in this manner may reduce the
        security advantage of using an HSM. Be sure this is what you want to
        do before configuring the system in this way.
       </p>
+    </div>
+  </div>
 </div>
-</div>
-</div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="dlz-info"></a>DLZ (Dynamically Loadable Zones)</h2></div></div></div>
-<p>
+
+  <p>
     DLZ (Dynamically Loadable Zones) is an extension to BIND 9 that allows
     zone data to be retrieved directly from an external database.  There is
     no required format or schema.  DLZ drivers exist for several different
     database backends including PostgreSQL, MySQL, and LDAP and can be
     written for any other.
   </p>
-<p>
+  <p>
     Historically, DLZ drivers had to be statically linked with the <span class="command"><strong>named</strong></span>
     binary and were turned on via a configure option at compile time (for
     example, <strong class="userinput"><code>"configure --with-dlz-ldap"</code></strong>).
@@ -2154,7 +2329,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
     <code class="filename">contrib/dlz/drivers</code> are still linked this
     way.
   </p>
-<p>
+  <p>
     In BIND 9.8 and higher, it is possible to link some DLZ modules
     dynamically at runtime, via the DLZ "dlopen" driver, which acts as a
     generic wrapper around a shared object implementing the DLZ API.  The
@@ -2163,7 +2338,8 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
     but are still needed for the older drivers in
     <code class="filename">contrib/dlz/drivers</code>.
   </p>
-<p>
+
+  <p>
     When the DLZ module provides data to <span class="command"><strong>named</strong></span>, it does so in text format.
     The response is converted to DNS wire format by <span class="command"><strong>named</strong></span>.  This
     conversion, and the lack of any internal caching, places significant
@@ -2174,20 +2350,22 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
     DNS notify; slaves are not automatically informed of changes to the
     zones in the database.)
   </p>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.13.6"></a>Configuring DLZ</h3></div></div></div>
-<p>
+
+    <p>
       A DLZ database is configured with a <span class="command"><strong>dlz</strong></span>
       statement in <code class="filename">named.conf</code>:
     </p>
-<pre class="screen">
+    <pre class="screen">
     dlz example {
        database "dlopen driver.so <code class="option">args</code>";
        search yes;
     };
     </pre>
-<p>
+    <p>
       This specifies a DLZ module to search when answering queries; the
       module is implemented in <code class="filename">driver.so</code> and is
       loaded at runtime by the dlopen DLZ driver.  Multiple
@@ -2197,11 +2375,11 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       they contain an answer for the query name; the best available
       answer will be returned to the client.
     </p>
-<p>
+    <p>
       The <code class="option">search</code> option in the above example can be
       omitted, because <code class="literal">yes</code> is the default value.
     </p>
-<p>
+    <p>
       If <code class="option">search</code> is set to <code class="literal">no</code>, then
       this DLZ module is <span class="emphasis"><em>not</em></span> searched for the best
       match when a query is received.  Instead, zones in this DLZ must be
@@ -2211,7 +2389,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       zone's data.  For example, to implement NXDOMAIN redirection using
       a DLZ module for back-end storage of redirection rules:
     </p>
-<pre class="screen">
+    <pre class="screen">
     dlz other {
        database "dlopen driver.so <code class="option">args</code>";
        search no;
@@ -2222,11 +2400,12 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
        dlz other;
     };
     </pre>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.13.7"></a>Sample DLZ Driver</h3></div></div></div>
-<p>
+
+    <p>
       For guidance in implementation of DLZ modules, the directory
       <code class="filename">contrib/dlz/example</code> contains a basic
       dynamically-linkable DLZ module--i.e., one which can be
@@ -2235,25 +2414,25 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       to the module as an argument in the <span class="command"><strong>dlz</strong></span>
       statement:
     </p>
-<pre class="screen">
+    <pre class="screen">
     dlz other {
        database "dlopen driver.so example.nil";
     };
     </pre>
-<p>
+    <p>
       In the above example, the module is configured to create a zone
       "example.nil", which can answer queries and AXFR requests, and
       accept DDNS updates.  At runtime, prior to any updates, the zone
       contains an SOA, NS, and a single A record at the apex:
     </p>
-<pre class="screen">
+    <pre class="screen">
  example.nil.  3600    IN      SOA     example.nil. hostmaster.example.nil. (
                                               123 900 600 86400 3600
                                       )
  example.nil.  3600    IN      NS      example.nil.
  example.nil.  1800    IN      A       10.53.0.1
     </pre>
-<p>
+    <p>
       The sample driver is capable of retrieving information about the
       querying client, and altering its response on the basis of this
       information.  To demonstrate this feature, the example driver
@@ -2264,19 +2443,21 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       e.g., by providing different address records for a particular name
       depending on the network from which the query arrived.
     </p>
-<p>
+    <p>
       Documentation of the DLZ module API can be found in
       <code class="filename">contrib/dlz/example/README</code>.  This directory also
       contains the header file <code class="filename">dlz_minimal.h</code>, which
       defines the API and should be included by any dynamically-linkable
       DLZ module.
     </p>
+  </div>
 </div>
-</div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="dyndb-info"></a>DynDB (Dynamic Database)</h2></div></div></div>
-<p>
+
+  <p>
     DynDB is an extension to BIND 9 which, like DLZ
     (see <a class="xref" href="Bv9ARM.ch04.html#dlz-info" title="DLZ (Dynamically Loadable Zones)">the section called &#8220;DLZ (Dynamically Loadable Zones)&#8221;</a>), allows zone data to be
     retrieved from an external database.  Unlike DLZ, a DynDB module
@@ -2288,29 +2469,31 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
     data source, providing the same performance and functionality
     as zones served natively by BIND.
   </p>
-<p>
+  <p>
     A DynDB module supporting LDAP has been created by Red Hat
     and is available from
     <a class="link" href="https://fedorahosted.org/bind-dyndb-ldap/" target="_top">https://fedorahosted.org/bind-dyndb-ldap/</a>.
   </p>
-<p>
+  <p>
     A sample DynDB module for testing and developer guidance
     is included with the BIND source code, in the directory
     <code class="filename">bin/tests/system/dyndb/driver</code>.
   </p>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.14.5"></a>Configuring DynDB</h3></div></div></div>
-<p>
+
+    <p>
       A DynDB database is configured with a <span class="command"><strong>dyndb</strong></span>
       statement in <code class="filename">named.conf</code>:
     </p>
-<pre class="screen">
+    <pre class="screen">
     dyndb example "driver.so" {
         <em class="replaceable"><code>parameters</code></em>
     };
     </pre>
-<p>
+    <p>
       The file <code class="filename">driver.so</code> is a DynDB module which
       implements the full DNS database API.  Multiple
       <span class="command"><strong>dyndb</strong></span> statements can be specified, to load
@@ -2320,16 +2503,17 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       is responding to queries.  Zone configuration is handled internally
       by the DynDB module.
     </p>
-<p>
+    <p>
       The <em class="replaceable"><code>parameters</code></em> are passed as an opaque
       string to the DynDB module's initialization routine. Configuration
       syntax will differ depending on the driver.
     </p>
-</div>
-<div class="section">
+  </div>
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.14.6"></a>Sample DynDB Module</h3></div></div></div>
-<p>
+
+    <p>
       For guidance in implementation of DynDB modules, the directory
       <code class="filename">bin/tests/system/dyndb/driver</code>.
       contains a basic DynDB module.
@@ -2337,35 +2521,37 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       to the module as arguments in the <span class="command"><strong>dyndb</strong></span>
       statement:
     </p>
-<pre class="screen">
+    <pre class="screen">
     dyndb sample "sample.so" { example.nil. arpa. };
     </pre>
-<p>
+    <p>
       In the above example, the module is configured to create a zone
       "example.nil", which can answer queries and AXFR requests, and
       accept DDNS updates.  At runtime, prior to any updates, the zone
       contains an SOA, NS, and a single A record at the apex:
     </p>
-<pre class="screen">
+    <pre class="screen">
  example.nil.  86400    IN      SOA     example.nil. example.nil. (
                                                0 28800 7200 604800 86400
                                        )
  example.nil.  86400    IN      NS      example.nil.
  example.nil.  86400    IN      A       127.0.0.1
     </pre>
-<p>
+    <p>
       When the zone is updated dynamically, the DynDB module will determine
       whether the updated RR is an address (i.e., type A or AAAA) and if
       so, it will automatically update the corresponding PTR record in a
       reverse zone.  (Updates are not stored permanently; all updates are
       lost when the server is restarted.)
     </p>
+  </div>
 </div>
-</div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="catz-info"></a>Catalog Zones</h2></div></div></div>
-<p>
+
+  <p>
     A "catalog zone" is a special DNS zone that contains a list of
     other zones to be served, along with their configuration parameters.
     Zones listed in a catalog zone are called "member zones".
@@ -2378,16 +2564,17 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
     configuration changes can be propagated using the standard AXFR/IXFR
     zone transfer mechanism.
   </p>
-<p>
+  <p>
     Catalog zones' format and behavior are specified as an internet draft
     for interoperability among DNS implementations.  As of this release, the
     latest revision of the DNS catalog zones draft can be found here:
     https://datatracker.ietf.org/doc/draft-muks-dnsop-dns-catalog-zones/
   </p>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.15.4"></a>Principle of Operation</h3></div></div></div>
-<p>
+    <p>
       Normally, if a zone is to be served by a slave server, the
       <code class="filename">named.conf</code> file on the server must list the
       zone, or the zone must be added using <span class="command"><strong>rndc addzone</strong></span>.
@@ -2396,13 +2583,13 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       in maintaining consistent zone configuration on all the slave
       servers can be significant.
     </p>
-<p>
+    <p>
       A catalog zone is a way to ease this administrative burden.  It is a
       DNS zone that lists member zones that should be served by slave servers.
       When a slave server receives an update to the catalog zone, it adds,
       removes, or reconfigures member zones based on the data received.
     </p>
-<p>
+    <p>
       To use a catalog zone, it must first be set up as a normal zone on
       the master and the on slave servers that will be configured to use
       it.  It must also be added to a <code class="option">catalog-zones</code> list
@@ -2411,21 +2598,25 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       a policy zone is configured as a normal zone and also listed in
       a <code class="option">response-policy</code> statement.)
     </p>
-<p>
+    <p>
       To use the catalog zone feature to serve a new member zone:
       </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
+<li class="listitem">
+          <p>
            Set up the the member zone to be served on the master as normal.
            This could be done by editing <code class="filename">named.conf</code>,
            or by running <span class="command"><strong>rndc addzone</strong></span>.
-          </p></li>
-<li class="listitem"><p>
+          </p>
+        </li>
+<li class="listitem">
+          <p>
             Add an entry to the catalog zone for the new member zone.
            This could be done by editing the catalog zone's master file
            and running <span class="command"><strong>rndc reload</strong></span>, or by updating
            the zone using <span class="command"><strong>nsupdate</strong></span>.
-          </p></li>
+          </p>
+        </li>
 </ul></div>
 <p>
       The change to the catalog zone will be propagated from the master to all
@@ -2437,7 +2628,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       BIND will immediately initiate a transfer of zone contents from the
       master.  Once complete, the slave will start serving the member zone.
     </p>
-<p>
+    <p>
       Removing a member zone from a slave server requires nothing more than
       deleting the member zone's entry in the catalog zone. The change to the
       catalog zone is propagated to the slave server using the normal AXFR/IXFR
@@ -2448,11 +2639,12 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s
       by editing the configuration file or running
       <span class="command"><strong>rndc delzone</strong></span>.)
     </p>
-</div>
-<div class="section">
+  </div>
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.15.5"></a>Configuring Catalog Zones</h3></div></div></div>
-<p>
+    <p>
       Catalog zones are configured with a <span class="command"><strong>catalog-zones</strong></span>
       statement in the <code class="literal">options</code> or <code class="literal">view</code>
       section of <code class="filename">named.conf</code>. For example,
@@ -2466,24 +2658,24 @@ catalog-zones {
             min-update-interval 10;
 };
 </pre>
-<p>
+    <p>
       This statement specifies that the zone
       <code class="literal">catalog.example</code> is a catalog zone. This zone must be
       properly configured in the same view. In most configurations, it would
       be a slave zone.
     </p>
-<p>
+    <p>
       The options following the zone name are not required, and may be
       specified in any order:
     </p>
-<p>
+    <p>
       The <code class="option">default-masters</code> option defines the default masters
       for member zones listed in a catalog zone. This can be overridden by
       options within a catalog zone. If no such options are included, then
       member zones will transfer their contents from the servers listed in
       this option.
     </p>
-<p>
+    <p>
       The <code class="option">in-memory</code> option, if set to <code class="literal">yes</code>,
       causes member zones to be stored only in memory. This is functionally
       equivalent to configuring a slave zone without a <code class="option">file</code>.
@@ -2491,7 +2683,7 @@ catalog-zones {
       will be stored locally in a file whose name is automatically generated
       from the view name, catalog zone name, and member zone name.
     </p>
-<p>
+    <p>
       The <code class="option">zone-directory</code> option causes local copies of
       member zones' master files (if <code class="option">in-memory</code> is not set
       to <code class="literal">yes</code>) to be stored in the specified directory.
@@ -2499,7 +2691,7 @@ catalog-zones {
       A non-absolute pathname in <code class="option">zone-directory</code> is
       assumed to be relative to the working directory.
     </p>
-<p>
+    <p>
       The <code class="option">min-update-interval</code> option sets the minimum
       interval between processing of updates to catalog zones, in seconds.
       If an update to a catalog zone (for example, via IXFR) happens less
@@ -2507,23 +2699,24 @@ catalog-zones {
       recent update, then the changes will not be carried out until this
       interval has elapsed.  The default is <code class="literal">5</code> seconds.
     </p>
-<p>
+    <p>
       Catalog zones are defined on a per-view basis. Configuring a non-empty
       <code class="option">catalog-zones</code> statement in a view will automatically
       turn on <code class="option">allow-new-zones</code> for that view. (Note: this
       means <span class="command"><strong>rndc addzone</strong></span> and <span class="command"><strong>rndc delzone</strong></span>
       will also work in any view that supports catalog zones.)
     </p>
-</div>
-<div class="section">
+  </div>
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.15.6"></a>Catalog Zone format</h3></div></div></div>
-<p>
+    <p>
       A catalog zone is a regular DNS zone; therefore, it has to have a
       single <code class="literal">SOA</code> and at least one <code class="literal">NS</code>
       record.
     </p>
-<p>
+    <p>
       A record stating the version of the catalog zone format is
       also required. If the version number listed is not supported by
       the server, then a catalog zone may not be used by that server.
@@ -2533,57 +2726,57 @@ catalog.example.    IN SOA . . 2016022901 900 600 86400 1
 catalog.example.    IN NS nsexample.
 version.catalog.example.    IN TXT "1"
 </pre>
-<p>
+    <p>
       Note that this record must have the domain name
       version.<em class="replaceable"><code>catalog-zone-name</code></em>.  This illustrates
       how the meaning of data stored in a catalog zone is indicated by the
       the domain name label immediately before the catalog zone domain.
     </p>
-<p>
+    <p>
       Catalog zone options can be set either globally for the whole catalog
       zone or for a single member zone. Global options override the settings
       in the configuration file and member zone options override global
       options.
     </p>
-<p>
+    <p>
       Global options are set at the apex of the catalog zone, e.g.:
 </p>
 <pre class="screen">
  masters.catalog.example.    IN AAAA 2001:db8::1
 </pre>
-<p>BIND currently supports the following options:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+    <p>BIND currently supports the following options:</p>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
-<p>A simple <code class="option">masters</code> definition:</p>
-<pre class="screen">
+        <p>A simple <code class="option">masters</code> definition:</p>
+       <pre class="screen">
         masters.catalog.example.    IN A 192.0.2.1
        </pre>
-<p>
+       <p>
          This option defines a master server for the member zones - it
          can be either an A or AAAA record. If multiple masters are set the
          order in which they are used is random.
        </p>
-</li>
+      </li>
 <li class="listitem">
-<p>A <code class="option">masters</code> with a TSIG key defined:</p>
-<pre class="screen">
+        <p>A <code class="option">masters</code> with a TSIG key defined:</p>
+        <pre class="screen">
          label.masters.catalog.example.     IN A 192.0.2.2
          label.masters.catalog.example.            IN TXT "tsig_key_name"
         </pre>
-<p>
+        <p>
          This option defines a master server for the member zone with a TSIG
          key set. The TSIG key must be configured in the configuration file.
          <code class="option">label</code> can be any valid DNS label.
         </p>
-</li>
+      </li>
 <li class="listitem">
-<p><code class="option">allow-query</code> and
+        <p><code class="option">allow-query</code> and
         <code class="option">allow-transfer</code> ACLs:</p>
-<pre class="screen">
+        <pre class="screen">
          allow-query.catalog.example.  IN APL 1:10.0.0.1/24
          allow-transfer.catalog.example.       IN APL !1:10.0.0.1/32 1:10.0.0.0/24
         </pre>
-<p>
+        <p>
           These options are the equivalents of <code class="option">allow-query</code>
           and <code class="option">allow-transfer</code> in a zone declaration in the
           <code class="filename">named.conf</code> configuration file. The ACL is
@@ -2591,9 +2784,9 @@ version.catalog.example.    IN TXT "1"
           policy is to deny access.  For the syntax of the APL RR see RFC
           3123
         </p>
-</li>
+      </li>
 </ul></div>
-<p>
+    <p>
       A member zone is added by including a <code class="literal">PTR</code>
       resource record in the <code class="literal">zones</code> sub-domain of the
       catalog zone. The record label is a <code class="literal">SHA-1</code> hash
@@ -2604,7 +2797,7 @@ version.catalog.example.    IN TXT "1"
 <pre class="screen">
 5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN PTR domain.example.
 </pre>
-<p>
+    <p>
       The hash is necessary to identify options for a specific member
       zone. The member zone-specific options are defined the same way as
       global options, but in the member zone subdomain:
@@ -2615,31 +2808,33 @@ label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN
 label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN TXT "tsig_key"
 allow-query.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN APL 1:10.0.0.0/24
 </pre>
-<p>
+    <p>
       As would be expected, options defined for a specific zone override
       the global options defined in the catalog zone. These in turn override
       the global options defined in the <code class="literal">catalog-zones</code>
       statement in the configuration file.
     </p>
-<p>
+    <p>
       (Note that none of the global records an option will be inherited if
       any records are defined for that option for the specific zone.  For
       example, if the zone had a <code class="literal">masters</code> record of type
       A but not AAAA, then it would <span class="emphasis"><em>not</em></span> inherit the
       type AAAA record from the global option.)
     </p>
+  </div>
 </div>
-</div>
-<div class="section">
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="ipv6"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div>
-<p>
+      <p>
         <acronym class="acronym">BIND</acronym> 9 fully supports all currently
         defined forms of IPv6 name to address and address to name
         lookups.  It will also use IPv6 addresses to make queries when
         running on an IPv6 capable system.
       </p>
-<p>
+
+      <p>
         For forward lookups, <acronym class="acronym">BIND</acronym> 9 supports
         only AAAA records.  RFC 3363 deprecated the use of A6 records,
         and client-side support for A6 records was accordingly removed
@@ -2649,7 +2844,8 @@ allow-query.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN A
         for A6 records, and accept zone transfer for a zone containing A6
         records.
       </p>
-<p>
+
+      <p>
         For IPv6 reverse lookups, <acronym class="acronym">BIND</acronym> 9 supports
         the traditional "nibble" format used in the
         <span class="emphasis"><em>ip6.arpa</em></span> domain, as well as the older, deprecated
@@ -2664,33 +2860,39 @@ allow-query.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN A
         In particular, an authoritative <acronym class="acronym">BIND</acronym> 9
         name server will not load a zone file containing binary labels.
       </p>
-<p>
+
+      <p>
         For an overview of the format and structure of IPv6 addresses,
         see <a class="xref" href="Bv9ARM.ch10.html#ipv6addresses" title="IPv6 addresses (AAAA)">the section called &#8220;IPv6 addresses (AAAA)&#8221;</a>.
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.16.6"></a>Address Lookups Using AAAA Records</h3></div></div></div>
-<p>
+
+        <p>
           The IPv6 AAAA record is a parallel to the IPv4 A record,
           and, unlike the deprecated A6 record, specifies the entire
           IPv6 address in a single record.  For example,
         </p>
+
 <pre class="programlisting">
 $ORIGIN example.com.
 host            3600    IN      AAAA    2001:db8::1
 </pre>
-<p>
+
+        <p>
           Use of IPv4-in-IPv6 mapped addresses is not recommended.
           If a host has an IPv4 address, use an A record, not
           a AAAA, with <code class="literal">::ffff:192.168.42.1</code> as
           the address.
         </p>
-</div>
-<div class="section">
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="id-1.5.16.7"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div>
-<p>
+
+        <p>
           When looking up an address in nibble format, the address
           components are simply reversed, just as in IPv4, and
           <code class="literal">ip6.arpa.</code> is appended to the
@@ -2699,14 +2901,16 @@ host            3600    IN      AAAA    2001:db8::1
           a host with address
           <code class="literal">2001:db8::1</code>.
         </p>
+
 <pre class="programlisting">
 $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  14400   IN    PTR    (
                                     host.example.com. )
 </pre>
-</div>
-</div>
-</div>
+
+      </div>
+    </div>
+  </div>
 <div class="navfooter">
 <hr>
 <table width="100%" summary="Navigation footer">
index ffb0e411ae51fe632e545964d22c77c68f0f8af5..4ddb87f226e0e83a01a0c48c26cba8615c3cc7dc 100644 (file)
@@ -10,7 +10,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Chapter 5. BIND 9 Configuration Reference</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="up" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="prev" href="Bv9ARM.ch04.html" title="Chapter 4. Advanced DNS Features">
 </dl></dd>
 </dl>
 </div>
-<p>
+
+    <p>
       <acronym class="acronym">BIND</acronym> 9 configuration is broadly similar
       to <acronym class="acronym">BIND</acronym> 8; however, there are a few new
       areas
       if they can be more efficiently implemented using the new features
       found in <acronym class="acronym">BIND</acronym> 9.
     </p>
-<p>
+
+    <p>
       <acronym class="acronym">BIND</acronym> 4 configuration files can be
       converted to the new format
       using the shell script
       <code class="filename">contrib/named-bootconf/named-bootconf.sh</code>.
     </p>
-<div class="section">
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="configuration_file_elements"></a>Configuration File Elements</h2></div></div></div>
-<p>
+
+      <p>
         Following is a list of elements used throughout the <acronym class="acronym">BIND</acronym> configuration
         file documentation:
       </p>
-<div class="informaltable"><table class="informaltable" border="1">
+      <div class="informaltable">
+        <table border="1">
 <colgroup>
 <col width="1.855in" class="1">
 <col width="3.770in" class="2">
               </td>
 </tr>
 </tbody>
-</table></div>
-<div class="section">
+</table>
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="address_match_lists"></a>Address Match Lists</h3></div></div></div>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.6.4.4.2"></a>Syntax</h4></div></div></div>
+
 <pre class="programlisting"><em class="replaceable"><code>address_match_list</code></em> = <em class="replaceable"><code>address_match_list_element</code></em> <span class="command"><strong>;</strong></span> ...
 
 <em class="replaceable"><code>address_match_list_element</code></em> = [ <span class="command"><strong>!</strong></span> ] ( <em class="replaceable"><code>ip_address</code></em> | <em class="replaceable"><code>ip_prefix</code></em> |
      <span class="command"><strong>key</strong></span> <em class="replaceable"><code>key_id</code></em> | <em class="replaceable"><code>acl_name</code></em> | <span class="command"><strong>{</strong></span> <em class="replaceable"><code>address_match_list</code></em> <span class="command"><strong>}</strong></span> )
 </pre>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.6.4.4.3"></a>Definition and Usage</h4></div></div></div>
-<p>
+
+          <p>
             Address match lists are primarily used to determine access
             control for various server operations. They are also used in
             the <span class="command"><strong>listen-on</strong></span> and <span class="command"><strong>sortlist</strong></span>
             statements. The elements which constitute an address match
             list can be any of the following:
           </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">an IP address (IPv4 or IPv6)</li>
-<li class="listitem">an IP prefix (in `/' notation)</li>
+          <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+              an IP address (IPv4 or IPv6)
+            </li>
+<li class="listitem">
+              an IP prefix (in `/' notation)
+            </li>
 <li class="listitem">
+              
                 a key ID, as defined by the <span class="command"><strong>key</strong></span>
                 statement
-              </li>
-<li class="listitem">the name of an address match list defined with
+              
+            </li>
+<li class="listitem">
+              the name of an address match list defined with
                 the <span class="command"><strong>acl</strong></span> statement
-              </li>
-<li class="listitem">a nested address match list enclosed in braces</li>
+              
+            </li>
+<li class="listitem">
+              a nested address match list enclosed in braces
+            </li>
 </ul></div>
-<p>
+
+          <p>
             Elements can be negated with a leading exclamation mark (`!'),
             and the match list names "any", "none", "localhost", and
             "localnets" are predefined. More information on those names
             can be found in the description of the acl statement.
           </p>
-<p>
+
+          <p>
             The addition of the key clause made the name of this syntactic
             element something of a misnomer, since security keys can be used
             to validate access without regard to a host or network address.
             Nonetheless, the term "address match list" is still used
             throughout the documentation.
           </p>
-<p>
+
+          <p>
             When a given IP address or prefix is compared to an address
             match list, the comparison takes place in approximately O(1)
             time.  However, key comparisons require that the list of keys
             be traversed until a matching key is found, and therefore may
             be somewhat slower.
           </p>
-<p>
+
+          <p>
             The interpretation of a match depends on whether the list is being
             used for access control, defining <span class="command"><strong>listen-on</strong></span> ports, or in a
             <span class="command"><strong>sortlist</strong></span>, and whether the element was negated.
           </p>
-<p>
+
+          <p>
             When used as an access control list, a non-negated match
             allows access and a negated match denies access. If
             there is no match, access is denied. The clauses
             server to refuse queries on any of the machine's
             addresses which do not match the list.
           </p>
-<p>
+
+          <p>
             Order of insertion is significant.  If more than one element
             in an ACL is found to match a given IP address or prefix,
             preference will be given to the one that came
             that problem by having 1.2.3.13 blocked by the negation, but
             all other 1.2.3.* hosts fall through.
           </p>
-</div>
-</div>
-<div class="section">
+        </div>
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="comment_syntax"></a>Comment Syntax</h3></div></div></div>
-<p>
+
+        <p>
           The <acronym class="acronym">BIND</acronym> 9 comment syntax allows for
           comments to appear
           anywhere that whitespace may appear in a <acronym class="acronym">BIND</acronym> configuration
           file. To appeal to programmers of all kinds, they can be written
           in the C, C++, or shell/perl style.
         </p>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.6.4.5.3"></a>Syntax</h4></div></div></div>
-<p>
+
+          <p>
             </p>
 <pre class="programlisting">/* This is a <acronym class="acronym">BIND</acronym> comment as in C */</pre>
 <p>
 # and perl</pre>
 <p>
           </p>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.6.4.5.4"></a>Definition and Usage</h4></div></div></div>
-<p>
+
+          <p>
             Comments may appear anywhere that whitespace may appear in
             a <acronym class="acronym">BIND</acronym> configuration file.
           </p>
-<p>
+          <p>
             C-style comments start with the two characters /* (slash,
             star) and end with */ (star, slash). Because they are completely
             delimited with these characters, they can be used to comment only
             a portion of a line or to span multiple lines.
           </p>
-<p>
+          <p>
             C-style comments cannot be nested. For example, the following
             is not valid because the entire comment ends with the first */:
           </p>
-<p>
+          <p>
 
 </p>
 <pre class="programlisting">/* This is the start of a comment.
 <p>
 
           </p>
-<p>
+
+          <p>
             C++-style comments start with the two characters // (slash,
             slash) and continue to the end of the physical line. They cannot
             be continued across multiple physical lines; to have one logical
             comment span multiple lines, each line must use the // pair.
             For example:
           </p>
-<p>
+          <p>
 
 </p>
 <pre class="programlisting">// This is the start of a comment.  The next line
 <p>
 
           </p>
-<p>
+          <p>
             Shell-style (or perl-style, if you prefer) comments start
             with the character <code class="literal">#</code> (number sign)
             and continue to the end of the
             physical line, as in C++ comments.
             For example:
           </p>
-<p>
+
+          <p>
 
 </p>
 <pre class="programlisting"># This is the start of a comment.  The next line
 <p>
 
           </p>
-<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+
+          <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Warning</h3>
-<p>
+            <p>
               You cannot use the semicolon (`;') character
               to start a comment such as you would in a zone file. The
               semicolon indicates the end of a configuration
               statement.
             </p>
-</div>
-</div>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="Configuration_File_Grammar"></a>Configuration File Grammar</h2></div></div></div>
-<p>
+
+      <p>
         A <acronym class="acronym">BIND</acronym> 9 configuration consists of
         statements and comments.
         Statements end with a semicolon. Statements and comments are the
         statements contain a block of sub-statements, which are also
         terminated with a semicolon.
       </p>
-<p>
+
+      <p>
         The following statements are supported:
       </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+      <div class="informaltable">
+        <table border="1">
 <colgroup>
 <col width="1.336in" class="1">
 <col width="3.778in" class="2">
               </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+      </div>
+
+      <p>
         The <span class="command"><strong>logging</strong></span> and
         <span class="command"><strong>options</strong></span> statements may only occur once
         per
         configuration.
       </p>
-<div class="section">
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="acl_grammar"></a><span class="command"><strong>acl</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>acl</strong></span> <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>address_match_element</code></em>; ... };
 </pre>
-</div>
-<div class="section">
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="acl"></a><span class="command"><strong>acl</strong></span> Statement Definition and
           Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>acl</strong></span> statement assigns a symbolic
           name to an address match list. It gets its name from a primary
           use of address match lists: Access Control Lists (ACLs).
         </p>
-<p>
+
+        <p>
           The following ACLs are built-in:
         </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+        <div class="informaltable">
+          <table border="1">
 <colgroup>
 <col width="1.130in" class="1">
 <col width="4.000in" class="2">
                 </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+        </div>
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="controls_grammar"></a><span class="command"><strong>controls</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>controls</strong></span> {
        <span class="command"><strong>inet</strong></span> ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> |
            * ) [ port ( <em class="replaceable"><code>integer</code></em> | * ) ] allow
            <em class="replaceable"><code>boolean</code></em> ];
 };
 </pre>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="controls_statement_definition_and_usage"></a><span class="command"><strong>controls</strong></span> Statement Definition and
           Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>controls</strong></span> statement declares control
           channels to be used by system administrators to control the
           operation of the name server. These control channels are
           used by the <span class="command"><strong>rndc</strong></span> utility to send
           commands to and retrieve non-DNS results from a name server.
         </p>
-<p>
+
+        <p>
           An <span class="command"><strong>inet</strong></span> control channel is a TCP socket
           listening at the specified <span class="command"><strong>ip_port</strong></span> on the
           specified <span class="command"><strong>ip_addr</strong></span>, which can be an IPv4 or IPv6
           using the loopback address (<code class="literal">127.0.0.1</code>
           or <code class="literal">::1</code>) is recommended for maximum security.
         </p>
-<p>
+
+        <p>
           If no port is specified, port 953 is used. The asterisk
           "<code class="literal">*</code>" cannot be used for <span class="command"><strong>ip_port</strong></span>.
         </p>
-<p>
+
+        <p>
           The ability to issue commands over the control channel is
           restricted by the <span class="command"><strong>allow</strong></span> and
           <span class="command"><strong>keys</strong></span> clauses.
           elements of the <span class="command"><strong>address_match_list</strong></span>
           are ignored.
         </p>
-<p>
+
+        <p>
           A <span class="command"><strong>unix</strong></span> control channel is a UNIX domain
           socket listening at the specified path in the file system.
           Access to the socket is specified by the <span class="command"><strong>perm</strong></span>,
           (<span class="command"><strong>perm</strong></span>) are applied to the parent directory
           as the permissions on the socket itself are ignored.
         </p>
-<p>
+
+        <p>
           The primary authorization mechanism of the command
           channel is the <span class="command"><strong>key_list</strong></span>, which
           contains a list of <span class="command"><strong>key_id</strong></span>s.
           See <a class="xref" href="Bv9ARM.ch03.html#rndc">Remote Name Daemon Control application</a> in <a class="xref" href="Bv9ARM.ch03.html#admin_tools" title="Administrative Tools">the section called &#8220;Administrative Tools&#8221;</a>)
           for information about configuring keys in <span class="command"><strong>rndc</strong></span>.
         </p>
-<p>
+
+        <p>
           If the <span class="command"><strong>read-only</strong></span> clause is enabled, the
           control channel is limited to the following set of read-only
           commands: <span class="command"><strong>nta -dump</strong></span>,
           <span class="command"><strong>read-only</strong></span> is not enabled and the control
           channel allows read-write access.
         </p>
-<p>
+
+        <p>
           If no <span class="command"><strong>controls</strong></span> statement is present,
           <span class="command"><strong>named</strong></span> will set up a default
           control channel listening on the loopback address 127.0.0.1
           To create a <code class="filename">rndc.key</code> file, run
           <strong class="userinput"><code>rndc-confgen -a</code></strong>.
         </p>
-<p>
+
+        <p>
           The <code class="filename">rndc.key</code> feature was created to
           ease the transition of systems from <acronym class="acronym">BIND</acronym> 8,
           which did not have digital signatures on its command channel
           command <strong class="userinput"><code>rndc-confgen -a</code></strong> after BIND 9 is
           installed.
         </p>
-<p>
+
+        <p>
           Since the <code class="filename">rndc.key</code> feature
           is only intended to allow the backward-compatible usage of
           <acronym class="acronym">BIND</acronym> 8 configuration files, this
           readable by a group
           that contains the users who should have access.
         </p>
-<p>
+
+        <p>
           To disable the command channel, use an empty
           <span class="command"><strong>controls</strong></span> statement:
           <span class="command"><strong>controls { };</strong></span>.
         </p>
-</div>
-<div class="section">
+
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="include_grammar"></a><span class="command"><strong>include</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting"><span class="command"><strong>include</strong></span> <em class="replaceable"><code>filename</code></em><span class="command"><strong>;</strong></span></pre>
-</div>
-<div class="section">
+
+        <pre class="programlisting"><span class="command"><strong>include</strong></span> <em class="replaceable"><code>filename</code></em><span class="command"><strong>;</strong></span></pre>
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="include_statement"></a><span class="command"><strong>include</strong></span> Statement Definition and Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>include</strong></span> statement inserts the
           specified file (or files if a valid glob expression is detected)
           at the point where the <span class="command"><strong>include</strong></span>
           others. For example, the statement could include private keys
           that are readable only by the name server.
         </p>
-</div>
-<div class="section">
+
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="key_grammar"></a><span class="command"><strong>key</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>key</strong></span> <em class="replaceable"><code>string</code></em> {
        <span class="command"><strong>algorithm</strong></span> <em class="replaceable"><code>string</code></em>;
        <span class="command"><strong>secret</strong></span> <em class="replaceable"><code>string</code></em>;
 };
 </pre>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="key_statement"></a><span class="command"><strong>key</strong></span> Statement Definition and Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>key</strong></span> statement defines a shared
           secret key for use with TSIG (see <a class="xref" href="Bv9ARM.ch04.html#tsig" title="TSIG">the section called &#8220;TSIG&#8221;</a>)
           or the command channel
           (see <a class="xref" href="Bv9ARM.ch05.html#controls_statement_definition_and_usage" title="controls Statement Definition and Usage">the section called &#8220;<span class="command"><strong>controls</strong></span> Statement Definition and
           Usage&#8221;</a>).
         </p>
-<p>
+
+        <p>
           The <span class="command"><strong>key</strong></span> statement can occur at the
           top level
           of the configuration file or inside a <span class="command"><strong>view</strong></span>
           Usage&#8221;</a>)
           must be defined at the top level.
         </p>
-<p>
+
+        <p>
           The <em class="replaceable"><code>key_id</code></em>, also known as the
           key name, is a domain name uniquely identifying the key. It can
           be used in a <span class="command"><strong>server</strong></span>
           verify that incoming requests have been signed with a key
           matching this name, algorithm, and secret.
         </p>
-<p>
+
+        <p>
           The <em class="replaceable"><code>algorithm_id</code></em> is a string
           that specifies a security/authentication algorithm.  The
           <span class="command"><strong>named</strong></span> server supports <code class="literal">hmac-md5</code>,
           to be used by the algorithm, and is treated as a Base64
           encoded string.
         </p>
-</div>
-<div class="section">
+
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="logging_grammar"></a><span class="command"><strong>logging</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>logging</strong></span> {
        <span class="command"><strong>category</strong></span> <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>string</code></em>; ... };
        <span class="command"><strong>channel</strong></span> <em class="replaceable"><code>string</code></em> {
        };
 };
 </pre>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="logging_statement"></a><span class="command"><strong>logging</strong></span> Statement Definition and Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>logging</strong></span> statement configures a
           wide
           variety of logging options for the name server. Its <span class="command"><strong>channel</strong></span> phrase
           a name that can then be used with the <span class="command"><strong>category</strong></span> phrase
           to select how various classes of messages are logged.
         </p>
-<p>
+        <p>
           Only one <span class="command"><strong>logging</strong></span> statement is used to
           define
           as many channels and categories as are wanted. If there is no <span class="command"><strong>logging</strong></span> statement,
           the logging configuration will be:
         </p>
+
 <pre class="programlisting">logging {
      category default { default_syslog; default_debug; };
      category unmatched { null; };
 };
 </pre>
-<p>
+
+        <p>
           If <span class="command"><strong>named</strong></span> is started with the
           <code class="option">-L</code> option, it logs to the specified file
           at startup, instead of using syslog. In this case the logging
           configuration will be:
         </p>
+
 <pre class="programlisting">logging {
      category default { default_logfile; default_debug; };
      category unmatched { null; };
 };
 </pre>
-<p>
+
+        <p>
           The logging configuration is only established when
           the entire configuration file has been parsed.
           When the server is starting up, all logging messages
           channels, or to standard error if the <code class="option">-g</code> option
           was specified.
         </p>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="channel"></a>The <span class="command"><strong>channel</strong></span> Phrase</h4></div></div></div>
-<p>
+
+          <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.
           </p>
-<p>
+
+          <p>
             Every channel definition must include a destination clause that
             says whether messages selected for the channel go to a file, to a
             particular syslog facility, to the standard error stream, or are
             category name
             and/or severity level (the default is not to include any).
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>null</strong></span> destination clause
             causes all messages sent to the channel to be discarded;
             in that case, other options for the channel are meaningless.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>file</strong></span> destination clause directs
             the channel to a disk file.  It can include additional
             arguments to specify how large the file is allowed to
             (<span class="command"><strong>versions</strong></span>), and the format to use
             for naming backup versions (<span class="command"><strong>suffix</strong></span>).
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>size</strong></span> option is used to limit
             log file growth. If the file ever exceeds the specified
             size, then <span class="command"><strong>named</strong></span> will stop writing to the
             removes or truncates the log to less than the maximum size.
             The default behavior is not to limit the size of the file.
           </p>
-<p>
+          <p>
             File rolling only occurs when the file exceeds the size
             specified with the <span class="command"><strong>size</strong></span> option. No
             backup versions are kept by default; any existing
             how many backup versions of the file should be kept.
             If set to <code class="literal">unlimited</code>, there is no limit.
           </p>
-<p>
+          <p>
             The <span class="command"><strong>suffix</strong></span> option can be set to
             either <code class="literal">increment</code> or
             <code class="literal">timestamp</code>.  If set to
             whereupon a new <code class="filename">filename.log</code> is
             opened.
           </p>
-<p>
+
+          <p>
             Example usage of the <span class="command"><strong>size</strong></span>,
             <span class="command"><strong>versions</strong></span>, and <span class="command"><strong>suffix</strong></span>
             options:
           </p>
+
 <pre class="programlisting">channel an_example_channel {
     file "example.log" versions 3 size 20m suffix increment;
     print-time yes;
     print-category yes;
 };
 </pre>
-<p>
+
+          <p>
             The <span class="command"><strong>syslog</strong></span> destination clause
             directs the
             channel to the system log.  Its argument is a
             only uses two arguments to the <span class="command"><strong>openlog()</strong></span> function,
             then this clause is silently ignored.
           </p>
-<p>
+          <p>
             On Windows machines syslog messages are directed to the EventViewer.
           </p>
-<p>
+          <p>
             The <span class="command"><strong>severity</strong></span> clause works like <span class="command"><strong>syslog</strong></span>'s
             "priorities", except that they can also be used if you are writing
             straight to a file rather than using <span class="command"><strong>syslog</strong></span>.
             levels
             will be accepted.
           </p>
-<p>
+          <p>
             If you are using <span class="command"><strong>syslog</strong></span>, then the <span class="command"><strong>syslog.conf</strong></span> priorities
             will also determine what eventually passes through. For example,
             defining a channel facility and severity as <span class="command"><strong>daemon</strong></span> and <span class="command"><strong>debug</strong></span> but
             then <span class="command"><strong>syslogd</strong></span> would
             print all messages it received from the channel.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>stderr</strong></span> destination clause
             directs the
             channel to the server's standard error stream.  This is intended
             example
             when debugging a configuration.
           </p>
-<p>
+
+          <p>
             The server can supply extensive debugging information when
             it is in debugging mode. If the server's global debug level is
             greater
@@ -1443,19 +1528,21 @@ notrace</strong></span>. All debugging messages in the server have a debug
             level, and higher debug levels give more detailed output. Channels
             that specify a specific debug severity, for example:
           </p>
+
 <pre class="programlisting">channel specific_debug_level {
     file "foo";
     severity debug 3;
 };
 </pre>
-<p>
+
+          <p>
             will get debugging output of level 3 or less any time the
             server is in debugging mode, regardless of the global debugging
             level. Channels with <span class="command"><strong>dynamic</strong></span>
             severity use the
             server's global debug level to determine what messages to print.
           </p>
-<p>
+          <p>
             <span class="command"><strong>print-time</strong></span> can be set to
             <strong class="userinput"><code>yes</code></strong>, <strong class="userinput"><code>no</code></strong>,
             or a time format specifier, which may be one of
@@ -1471,14 +1558,14 @@ notrace</strong></span>. All debugging messages in the server have a debug
             are logged in ISO8601 format, with time zone set to
             UTC. The default is <strong class="userinput"><code>no</code></strong>.
           </p>
-<p>
+          <p>
             <span class="command"><strong>print-time</strong></span> may
             be specified for a <span class="command"><strong>syslog</strong></span> channel,
             but it is usually
             pointless since <span class="command"><strong>syslog</strong></span> also logs
             the date and time.
           </p>
-<p>
+          <p>
             If <span class="command"><strong>print-category</strong></span> is
             requested, then the
             category of the message will be logged as well. Finally, if <span class="command"><strong>print-severity</strong></span> is
@@ -1489,15 +1576,18 @@ notrace</strong></span>. All debugging messages in the server have a debug
             three <span class="command"><strong>print-</strong></span> options
             are on:
           </p>
-<p>
+
+          <p>
             <code class="computeroutput">28-Feb-2000 15:05:32.863 general: notice: running</code>
           </p>
-<p>
+
+          <p>
             If <span class="command"><strong>buffered</strong></span> has been turned on the output
             to files will not be flushed after each log entry.  By default
             all log messages are flushed.
           </p>
-<p>
+
+          <p>
             There are four predefined channels that are used for
             <span class="command"><strong>named</strong></span>'s default logging as follows.
             If <span class="command"><strong>named</strong></span> is started with the
@@ -1506,6 +1596,7 @@ notrace</strong></span>. All debugging messages in the server have a debug
             How they are
             used is described in <a class="xref" href="Bv9ARM.ch05.html#the_category_phrase" title="The category Phrase">the section called &#8220;The <span class="command"><strong>category</strong></span> Phrase&#8221;</a>.
           </p>
+
 <pre class="programlisting">channel default_syslog {
     // send to syslog's daemon facility
     syslog daemon;
@@ -1543,7 +1634,8 @@ channel default_logfile {
     severity dynamic;
 };
 </pre>
-<p>
+
+          <p>
             The <span class="command"><strong>default_debug</strong></span> channel has the
             special
             property that it only produces output when the server's debug
@@ -1551,7 +1643,8 @@ channel default_logfile {
             nonzero.  It normally writes to a file called <code class="filename">named.run</code>
             in the server's working directory.
           </p>
-<p>
+
+          <p>
             For security reasons, when the <code class="option">-u</code>
             command line option is used, the <code class="filename">named.run</code> file
             is created only after <span class="command"><strong>named</strong></span> has
@@ -1562,17 +1655,20 @@ channel default_logfile {
             option to specify a default logfile, or the <code class="option">-g</code>
             option to log to standard error which you can redirect to a file.
           </p>
-<p>
+
+          <p>
             Once a channel is defined, it cannot be redefined. Thus you
             cannot alter the built-in channels directly, but you can modify
             the default logging by pointing categories at channels you have
             defined.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="the_category_phrase"></a>The <span class="command"><strong>category</strong></span> Phrase</h4></div></div></div>
-<p>
+
+          <p>
             There are many categories, so you can send the logs you want
             to see wherever you want, without seeing logs you don't want. If
             you don't specify a list of channels for a category, then log
@@ -1581,19 +1677,24 @@ channel default_logfile {
             instead. If you don't specify a default category, the following
             "default default" is used:
           </p>
+
 <pre class="programlisting">category default { default_syslog; default_debug; };
 </pre>
-<p>
+
+          <p>
             If you start <span class="command"><strong>named</strong></span> with the
             <code class="option">-L</code> option then the default category is:
           </p>
+
 <pre class="programlisting">category default { default_logfile; default_debug; };
 </pre>
-<p>
+
+          <p>
             As an example, let's say you want to log security events to
             a file, but you also want keep the default logging behavior. You'd
             specify the following:
           </p>
+
 <pre class="programlisting">channel my_security_channel {
     file "my_security_file";
     severity info;
@@ -1603,18 +1704,22 @@ category security {
     default_syslog;
     default_debug;
 };</pre>
-<p>
+
+          <p>
             To discard all messages in a category, specify the <span class="command"><strong>null</strong></span> channel:
           </p>
+
 <pre class="programlisting">category xfer-out { null; };
 category notify { null; };
 </pre>
-<p>
+
+          <p>
             Following are the available categories and brief descriptions
             of the types of log information they contain. More
             categories may be added in future <acronym class="acronym">BIND</acronym> releases.
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+          <div class="informaltable">
+  <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="3.350in" class="2">
@@ -2029,12 +2134,13 @@ category notify { null; };
        </td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="query_errors"></a>The <span class="command"><strong>query-errors</strong></span> Category</h4></div></div></div>
-<p>
+          <p>
             The <span class="command"><strong>query-errors</strong></span> category is
             used to indicate why and how specific queries resulted in
             responses which indicate an error.  Normally, these messages
@@ -2043,26 +2149,27 @@ category notify { null; };
             logged at <span class="command"><strong>info</strong></span>. The logging levels are
             described below:
           </p>
-<p>
+
+          <p>
             At <span class="command"><strong>debug</strong></span> level 1 or higher - or at
             <span class="command"><strong>info</strong></span>, when query logging is active - each
             response with response code SERVFAIL will be logged as follows:
           </p>
-<p>
+          <p>
             <code class="computeroutput">client 127.0.0.1#61502: query failed (SERVFAIL) for www.example.com/IN/AAAA at query.c:3880</code>
           </p>
-<p>
+          <p>
             This means an error resulting in SERVFAIL was detected at line
             3880 of source file <code class="filename">query.c</code>.  Log messages
             of this level will particularly help identify the cause of
             SERVFAIL for an authoritative server.
           </p>
-<p>
+          <p>
             At <span class="command"><strong>debug</strong></span> level 2 or higher, detailed
             context information about recursive resolutions that resulted in
             SERVFAIL will be logged.  The log message will look like this:
           </p>
-<p>
+          <p>
 
             </p>
 <pre class="programlisting">
@@ -2073,14 +2180,14 @@ badresp:1,adberr:0,findfail:0,valfail:0]
             </pre>
 <p>
           </p>
-<p>
+          <p>
             The first part before the colon shows that a recursive
             resolution for AAAA records of www.example.com completed
             in 10.000183 seconds and the final result that led to the
             SERVFAIL was determined at line 2970 of source file
             <code class="filename">resolver.c</code>.
           </p>
-<p>
+          <p>
             The following part shows the detected final result and the
             latest result of DNSSEC validation.  The latter is always
             "success" when no validation attempt was made.  In this example,
@@ -2088,7 +2195,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
             servers are down or unreachable, leading to a timeout in 10
             seconds.  DNSSEC validation was probably not attempted.
           </p>
-<p>
+          <p>
             The last part, enclosed in square brackets, shows statistics
             collected for this particular resolution attempt.
             The <code class="varname">domain</code> field shows the deepest zone that
@@ -2096,7 +2203,9 @@ badresp:1,adberr:0,findfail:0,valfail:0]
             finally detected.  The meaning of the other fields is
             summarized in the following table.
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="3.350in" class="2">
@@ -2247,50 +2356,56 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+          </div>
+          <p>
             At <span class="command"><strong>debug</strong></span> level 3 or higher, the same
             messages as those at <span class="command"><strong>debug</strong></span> level 1 will be
             logged for other errors than SERVFAIL. Note that negative
             responses such as NXDOMAIN are not errors, and are not logged
             at this debug level.
           </p>
-<p>
+          <p>
             At <span class="command"><strong>debug</strong></span> level 4 or higher, the
             detailed context information logged at <span class="command"><strong>debug</strong></span>
             level 2 will be logged for other errors than SERVFAIL and
             for negative resonses such as NXDOMAIN.
           </p>
-</div>
-</div>
-<div class="section">
+        </div>
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="masters_grammar"></a><span class="command"><strong>masters</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>masters</strong></span> <em class="replaceable"><code>string</code></em> [ port <em class="replaceable"><code>integer</code></em> ] [ dscp
     <em class="replaceable"><code>integer</code></em> ] { ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [
     <span class="command"><strong>port</strong></span> <em class="replaceable"><code>integer</code></em> ] | <em class="replaceable"><code>ipv6_address</code></em> [ port
     <em class="replaceable"><code>integer</code></em> ] ) [ key <em class="replaceable"><code>string</code></em> ]; ... };
 </pre>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="masters_statement"></a><span class="command"><strong>masters</strong></span> Statement Definition and
           Usage</h3></div></div></div>
-<p><span class="command"><strong>masters</strong></span>
+
+        <p><span class="command"><strong>masters</strong></span>
           lists allow for a common set of masters to be easily used by
           multiple stub and slave zones in their <span class="command"><strong>masters</strong></span>
           or <span class="command"><strong>also-notify</strong></span> lists.
         </p>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="options_grammar"></a><span class="command"><strong>options</strong></span> Statement Grammar</h3></div></div></div>
-<p>
+
+        <p>
           This is the grammar of the <span class="command"><strong>options</strong></span>
           statement in the <code class="filename">named.conf</code> file:
         </p>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>options</strong></span> {
        <span class="command"><strong>allow-new-zones</strong></span> <em class="replaceable"><code>boolean</code></em>;
        <span class="command"><strong>allow-notify</strong></span> { <em class="replaceable"><code>address_match_element</code></em>; ... };
@@ -2586,12 +2701,14 @@ badresp:1,adberr:0,findfail:0,valfail:0]
        <span class="command"><strong>zone-statistics</strong></span> ( full | terse | none | <em class="replaceable"><code>boolean</code></em> );
 };
 </pre>
-</div>
-<div class="section">
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="options"></a><span class="command"><strong>options</strong></span> Statement Definition and
           Usage</h3></div></div></div>
-<p>
+
+        <p>
           The <span class="command"><strong>options</strong></span> statement sets up global
           options
           to be used by <acronym class="acronym">BIND</acronym>. This statement
@@ -2600,10 +2717,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
           statement, an options block with each option set to its default will
           be used.
         </p>
-<div class="variablelist"><dl class="variablelist">
+
+        <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>attach-cache</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Allows multiple views to share a single cache
                   database.
                   Each view has its own cache database by default, but
@@ -2612,13 +2730,15 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   share a single cache to save memory and possibly
                   improve resolution efficiency by using this option.
                 </p>
-<p>
+
+                <p>
                   The <span class="command"><strong>attach-cache</strong></span> option
                   may also be specified in <span class="command"><strong>view</strong></span>
                   statements, in which case it overrides the
                   global <span class="command"><strong>attach-cache</strong></span> option.
                 </p>
-<p>
+
+                <p>
                   The <em class="replaceable"><code>cache_name</code></em> specifies
                   the cache to be shared.
                   When the <span class="command"><strong>named</strong></span> server configures
@@ -2628,14 +2748,16 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   The rest of the views will simply refer to the
                   already created cache.
                 </p>
-<p>
+
+                <p>
                   One common configuration to share a cache would be to
                   allow all views to share a single cache.
                   This can be done by specifying
                   the <span class="command"><strong>attach-cache</strong></span> as a global
                   option with an arbitrary name.
                 </p>
-<p>
+
+                <p>
                   Another possible operation is to allow a subset of
                   all views to share a cache while the others to
                   retain their own caches.
@@ -2644,6 +2766,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   <span class="command"><strong>attach-cache</strong></span> option as a view A (or
                   B)'s option, referring to the other view name:
                 </p>
+
 <pre class="programlisting">
   view "A" {
     // this view has its own cache
@@ -2658,7 +2781,8 @@ badresp:1,adberr:0,findfail:0,valfail:0]
     ...
   };
 </pre>
-<p>
+
+                <p>
                   Views that share a cache must have the same policy
                   on configurable parameters that may affect caching.
                   The current implementation requires the following
@@ -2675,7 +2799,8 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   <span class="command"><strong>min-ncache-ttl</strong></span>,
                   <span class="command"><strong>zero-no-soa-ttl</strong></span>.
                 </p>
-<p>
+
+                <p>
                   Note that there may be other parameters that may
                   cause confusion if they are inconsistent for
                   different views that share a single cache.
@@ -2687,9 +2812,10 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                   configuration differences in different views do
                   not cause disruption with a shared cache.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>directory</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The working directory of the server.
                 Any non-absolute pathnames in the configuration file will
                 be taken as relative to this directory. The default
@@ -2701,10 +2827,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 should be an absolute path, and <span class="emphasis"><em>must</em></span>
                 be writable by the effective user ID of the
                 <span class="command"><strong>named</strong></span> process.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnstap</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 <span class="command"><strong>dnstap</strong></span> is a fast, flexible method
                 for capturing and logging DNS traffic. Developed by
                 Robert Edmonds at Farsight Security, Inc., and supported
@@ -2719,13 +2846,13 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 by Google, Inc.; see
                 <a class="link" href="https://developers.google.com/protocol-buffers/" target="_top">https://developers.google.com/protocol-buffers</a>).
               </p>
-<p>
+              <p>
                 To enable <span class="command"><strong>dnstap</strong></span> at compile time,
                 the <span class="command"><strong>fstrm</strong></span> and <span class="command"><strong>protobuf-c</strong></span>
                 libraries must be available, and BIND must be configured with
                 <code class="option">--enable-dnstap</code>.
               </p>
-<p>
+              <p>
                 The <span class="command"><strong>dnstap</strong></span> option is a bracketed list
                 of message types to be logged. These may be set differently
                 for each view. Supported types are <code class="literal">client</code>,
@@ -2735,13 +2862,13 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <span class="command"><strong>dnstap</strong></span> messages to be logged, regardless of
                 type.
               </p>
-<p>
+              <p>
                 Each type may take an additional argument to indicate whether
                 to log <code class="literal">query</code> messages or
                 <code class="literal">response</code> messages; if not specified,
                 both queries and responses are logged.
               </p>
-<p>
+              <p>
                 Example: To log all authoritative queries and responses,
                 recursive client responses, and upstream queries sent by
                 the resolver, use:
@@ -2754,63 +2881,76 @@ badresp:1,adberr:0,findfail:0,valfail:0]
 </pre>
 <p>
               </p>
-<p>
+              <p>
                 Logged <span class="command"><strong>dnstap</strong></span> messages can be parsed
                 using the <span class="command"><strong>dnstap-read</strong></span> utility (see
                 <a class="xref" href="man.dnstap-read.html" title="dnstap-read"><span class="refentrytitle"><span class="application">dnstap-read</span></span>(1)</a> for details).
               </p>
-<p>
+              <p>
                 For more information on <span class="command"><strong>dnstap</strong></span>, see
                 <a class="link" href="http://dnstap.info" target="_top">http://dnstap.info</a>.
               </p>
-<p>
+              <p>
                 The fstrm library has a number of tunables that are exposed
                 in <code class="filename">named.conf</code>, and can be modified
                 if necessary to improve performance or prevent loss of data.
                 These are:
               </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+              <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-buffer-hint</strong></span>: The
                     threshold number of bytes to accumulate in the output
                     buffer before forcing a buffer flush. The minimum is
                     1024, the maximum is 65536, and the default is 8192.
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-flush-timeout</strong></span>: The number
                     of seconds to allow unflushed data to remain in the
                     output buffer. The minimum is 1 second, the maximum is
                     600 seconds (10 minutes), and the default is 1 second.
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-output-notify-threshold</strong></span>:
                     The number of outstanding queue entries to allow on
                     an input queue before waking the I/O thread.
                     The minimum is 1 and the default is 32.
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-output-queue-model</strong></span>:
                     Controls the queuing semantics to use for queue
                     objects. The default is <code class="literal">mpsc</code>
                     (multiple producer, single consumer); the other
                     option is <code class="literal">spsc</code> (single producer,
                     single consumer).
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-input-queue-size</strong></span>: The
                     number of queue entries to allocate for each
                     input queue. This value must be a power of 2.
                     The minimum is 2, the maximum is 16384, and
                     the default is 512.
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-output-queue-size</strong></span>:
                     The number of queue entries to allocate for each
                     output queue. The minimum is 2, the maximum is
                     system-dependent and based on <code class="option">IOV_MAX</code>,
                     and the default is 64.
-                  </li>
+                  
+                </li>
 <li class="listitem">
+                  
                     <span class="command"><strong>fstrm-set-reopen-interval</strong></span>:
                     The number of seconds to wait between attempts to
                     reopen a closed output stream. The minimum is 1 second,
@@ -2818,24 +2958,25 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                     is 5 seconds.  For convenience, TTL-style time unit
                     suffixes may be used to specify the value.  It also
                     accepts ISO 8601 duration formats.
-                  </li>
+                  
+                </li>
 </ul></div>
-<p>
+              <p>
                 Note that all of the above minimum, maximum, and default
                 values are set by the <span class="command"><strong>libfstrm</strong></span> library,
                 and may be subject to change in future versions of the
                 library. See the <span class="command"><strong>libfstrm</strong></span> documentation
                 for more information.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnstap-output</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Configures the path to which the <span class="command"><strong>dnstap</strong></span>
                 frame stream will be sent if <span class="command"><strong>dnstap</strong></span>
                 is enabled at compile time and active.
               </p>
-<p>
+              <p>
                 The first argument is either <code class="literal">file</code> or
                 <code class="literal">unix</code>, indicating whether the destination
                 is a file or a UNIX domain socket.  The second argument
@@ -2846,7 +2987,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 (provided with <span class="command"><strong>libfstrm</strong></span>) is listening on
                 the socket.)
               </p>
-<p>
+              <p>
                 If the first argument is <code class="literal">file</code>, then
                 up to three additional options can be added:
                 <span class="command"><strong>size</strong></span> indicates the size to which a
@@ -2863,7 +3004,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 The default is to allow <span class="command"><strong>dnstap</strong></span> log
                 files to grow to any size without rolling.
               </p>
-<p>
+              <p>
                 <span class="command"><strong>dnstap-output</strong></span> can only be set globally
                 in <span class="command"><strong>options</strong></span>. Currently, it can only be
                 set once while <span class="command"><strong>named</strong></span> is running;
@@ -2871,24 +3012,29 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <span class="command"><strong>rndc reload</strong></span> or
                 <span class="command"><strong>rndc reconfig</strong></span>.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnstap-identity</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 Specifies an <span class="command"><strong>identity</strong></span> string to send in
                 <span class="command"><strong>dnstap</strong></span> messages. If set to
                 <code class="literal">hostname</code>, which is the default, the
                 server's hostname will be sent. If set to
                 <code class="literal">none</code>, no identity string will be sent.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnstap-version</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 Specifies a <span class="command"><strong>version</strong></span> string to send in
                 <span class="command"><strong>dnstap</strong></span> messages. The default is the
                 version number of the BIND release. If set to
                 <code class="literal">none</code>, no version string will be sent.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>geoip-directory</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 When <span class="command"><strong>named</strong></span> is compiled using the
                 MaxMind GeoIP2 geolocation API,
                 this specifies the directory containing GeoIP
@@ -2902,9 +3048,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 directory.  See <a class="xref" href="Bv9ARM.ch05.html#acl" title="acl Statement Definition and Usage">the section called &#8220;<span class="command"><strong>acl</strong></span> Statement Definition and
           Usage&#8221;</a> for details about
                 <span class="command"><strong>geoip</strong></span> ACLs.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>key-directory</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 When performing dynamic update of secure zones, the
                 directory where the public and private DNSSEC key files
                 should be found, if different than the current working
@@ -2913,10 +3061,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <code class="filename">bind.keys</code>,
                 <code class="filename">rndc.key</code> or
                 <code class="filename">session.key</code>.)
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>lmdb-mapsize</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 When <span class="command"><strong>named</strong></span> is built with liblmdb,
                 this option sets a maximum size for the memory map of
                 the new-zone database (NZD) in LMDB database format.
@@ -2925,7 +3074,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 Note that this is not the NZD database file size, but
                 the largest size that the database may grow to.
               </p>
-<p>
+              <p>
                 Because the database file is memory mapped, its size is
                 limited by the address space of the named process.  The
                 default of 32 megabytes was chosen to be usable with
@@ -2935,10 +3084,10 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 ought to be able to hold configurations of about 100,000
                 zones.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>managed-keys-directory</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Specifies the directory in which to store the files that
                 track managed DNSSEC keys (i.e., those configured using
                 the <span class="command"><strong>initial-key</strong></span> or
@@ -2948,7 +3097,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <span class="emphasis"><em>must</em></span> be writable by the effective
                 user ID of the <span class="command"><strong>named</strong></span> process.
               </p>
-<p>
+              <p>
                 If <span class="command"><strong>named</strong></span> is not configured to use views,
                 then managed keys for the server will be tracked in a single
                 file called <code class="filename">managed-keys.bind</code>.
@@ -2959,41 +3108,44 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 followed by the extension
                 <code class="filename">.mkeys</code>.
               </p>
-<p>
+              <p>
                 (Note: in previous releases, file names for views
                 always used the SHA256 hash of the view name. To ensure
                 compatibility after upgrade, if a file using the old
                 name format is found to exist, it will be used instead
                 of the new format.)
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>max-ixfr-ratio</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Sets the size threshold (expressed as a percentage
                 of the size of the full zone) beyond which
                 <span class="command"><strong>named</strong></span> will choose to use an AXFR
                 response rather than IXFR when answering zone transfer
                 requests.  See <a class="xref" href="Bv9ARM.ch04.html#incremental_zone_transfers" title="Incremental Zone Transfers (IXFR)">the section called &#8220;Incremental Zone Transfers (IXFR)&#8221;</a>.
               </p>
-<p>
+              <p>
                 The minimum value is <code class="literal">1%</code>. The keyword
                 <code class="literal">unlimited</code> disables ratio checking and
                 allows IXFRs of any size.  The default is
                 <code class="literal">100%</code>.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>new-zones-directory</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 Specifies the directory in which to store the configuration
                 parameters for zones added via <span class="command"><strong>rndc addzone</strong></span>.
                 By default, this is the working directory. If set to a relative
                 path, it will be relative to the working directory. The
                 directory <span class="emphasis"><em>must</em></span> be writable by the
                 effective user ID of the <span class="command"><strong>named</strong></span> process.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>qname-minimization</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 This option controls QNAME minimization behaviour
                 in the BIND resolver. When set to <span class="command"><strong>strict</strong></span>,
                 BIND will follow the QNAME minimization algorithm to
@@ -3006,16 +3158,20 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 QNAME minimization completely. The current default is
                 <span class="command"><strong>relaxed</strong></span>, but it might be changed to
                 <span class="command"><strong>strict</strong></span> in a future release.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>tkey-gssapi-keytab</strong></span></span></dt>
-<dd><p>
+<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>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>tkey-gssapi-credential</strong></span></span></dt>
-<dd><p>
+<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
@@ -3028,9 +3184,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 To use GSS-TSIG, <span class="command"><strong>tkey-domain</strong></span> must
                 also be set if a specific keytab is not set with
                 tkey-gssapi-keytab.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>tkey-domain</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The domain appended to the names of all shared keys
                 generated with <span class="command"><strong>TKEY</strong></span>.  When a
                 client requests a <span class="command"><strong>TKEY</strong></span> exchange,
@@ -3046,9 +3204,11 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 "_tkey.<code class="varname">domainname</code>".  If you are
                 using GSS-TSIG, this variable must be defined, unless
                 you specify a specific keytab using tkey-gssapi-keytab.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>tkey-dhkey</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The Diffie-Hellman key used by the server
                 to generate shared keys with clients using the Diffie-Hellman
                 mode
@@ -3057,27 +3217,34 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 public and private keys from files in the working directory.
                 In
                 most cases, the <code class="varname">key_name</code> should be the server's host name.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>cache-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 This is for testing only.  Do not use.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dump-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server dumps
                 the database to when instructed to do so with
                 <span class="command"><strong>rndc dumpdb</strong></span>.
                 If not specified, the default is <code class="filename">named_dump.db</code>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>memstatistics-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server writes memory
                 usage statistics to on exit. If not specified,
                 the default is <code class="filename">named.memstats</code>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>lock-file</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 The pathname of a file on which <span class="command"><strong>named</strong></span> will
                 attempt to acquire a file lock when starting up for
                 the first time; if unsuccessful, the server will
@@ -3085,7 +3252,7 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 server is already running.  If not specified, the default is
                 <code class="filename">none</code>.
               </p>
-<p>
+              <p>
                 Specifying <span class="command"><strong>lock-file none</strong></span> disables the
                 use of a lock file.  <span class="command"><strong>lock-file</strong></span> is
                 ignored if <span class="command"><strong>named</strong></span> was run using the <code class="option">-X</code>
@@ -3095,9 +3262,10 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 reconfigured; it is only effective when the server is
                 first started up.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>pid-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server writes its process ID
                 in. If not specified, the default is
                 <code class="filename">/var/run/named/named.pid</code>.
@@ -3109,41 +3277,51 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 is a keyword, not a filename, and therefore is not enclosed
                 in
                 double quotes.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>recursing-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server dumps
                 the queries that are currently recursing when instructed
                 to do so with <span class="command"><strong>rndc recursing</strong></span>.
                 If not specified, the default is <code class="filename">named.recursing</code>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>statistics-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server appends statistics
                 to when instructed to do so using <span class="command"><strong>rndc stats</strong></span>.
                 If not specified, the default is <code class="filename">named.stats</code> in the
                 server's current directory.  The format of the file is
                 described
                 in <a class="xref" href="Bv9ARM.ch05.html#statsfile" title="The Statistics File">the section called &#8220;The Statistics File&#8221;</a>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>bindkeys-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of a file to override the built-in trusted
                 keys provided by <span class="command"><strong>named</strong></span>.
                 See the discussion of <span class="command"><strong>dnssec-validation</strong></span>
                 for details.  If not specified, the default is
                 <code class="filename">/etc/bind.keys</code>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>secroots-file</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file the server dumps
                 security roots to when instructed to do so with
                 <span class="command"><strong>rndc secroots</strong></span>.
                 If not specified, the default is
                 <code class="filename">named.secroots</code>.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>session-keyfile</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The pathname of the file into which to write a TSIG
                 session key generated by <span class="command"><strong>named</strong></span> for use by
                 <span class="command"><strong>nsupdate -l</strong></span>.  If not specified, the
@@ -3153,21 +3331,27 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 <span class="command"><strong>update-policy</strong></span> statement's
                 <strong class="userinput"><code>local</code></strong> option for more
                 information about this feature.)
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>session-keyname</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The key name to use for the TSIG session key.
                 If not specified, the default is "local-ddns".
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>session-keyalg</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The algorithm to use for the TSIG session key.
                 Valid values are hmac-sha1, hmac-sha224, hmac-sha256,
                 hmac-sha384, hmac-sha512 and hmac-md5.  If not
                 specified, the default is hmac-sha256.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>port</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The UDP/TCP port number the server uses for
                 receiving and sending DNS protocol traffic.
                 The default is 53.  This option is mainly intended for server
@@ -3175,23 +3359,26 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 a server using a port other than 53 will not be able to
                 communicate with
                 the global DNS.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dscp</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 The global Differentiated Services Code Point (DSCP)
                 value to classify outgoing DNS traffic on operating
                 systems that support DSCP. Valid values are 0 through 63.
                 It is not configured by default.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>random-device</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Specifies a source of entropy to be used by the server.
                 This is a device or file from which to read entropy.
                 If it is a file, operations requiring entropy
                 will fail when the file has been exhausted.
               </p>
-<p>
+              <p>
                 Entropy is needed for cryptographic operations such as
                 TKEY transactions, dynamic update of signed zones, and
                 generation of TSIG session keys. It is also used for
@@ -3200,45 +3387,47 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 randomness such as generation of DNS message transaction
                 ID's.
               </p>
-<p>
+              <p>
                 If <span class="command"><strong>random-device</strong></span> is not specified, or
                 if it is set to <code class="literal">none</code>, entropy will be
                 read from the random number generation function supplied
                 by the cryptographic library with which BIND was linked
                 (i.e.  OpenSSL or a PKCS#11 provider).
               </p>
-<p>
+              <p>
                 The <span class="command"><strong>random-device</strong></span> option takes
                 effect during the initial configuration load at server
                 startup time and is ignored on subsequent reloads.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>preferred-glue</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 If specified, the listed type (A or AAAA) will be emitted
                 before other glue
                 in the additional section of a query response.
                 The default is to prefer A records when responding
                 to queries that arrived via IPv4 and AAAA when
                 responding to queries that arrived via IPv6.
-              </p></dd>
+              </p>
+            </dd>
 <dt>
 <a name="root_delegation_only"></a><span class="term"><span class="command"><strong>root-delegation-only</strong></span></span>
 </dt>
 <dd>
-<p>
+              <p>
                 Turn on enforcement of delegation-only in TLDs
                 (top level domains) and root zones with an optional
                 exclude list.
               </p>
-<p>
+              <p>
                 DS queries are expected to be made to and be answered by
                 delegation only zones.  Such queries and responses are
                 treated as an exception to delegation-only processing
                 and are not converted to NXDOMAIN responses provided
                 a CNAME is not discovered at the query name.
               </p>
-<p>
+              <p>
                 If a delegation only zone server also serves a child
                 zone it is not always possible to determine whether
                 an answer comes from the delegation only zone or the
@@ -3254,24 +3443,26 @@ badresp:1,adberr:0,findfail:0,valfail:0]
                 all these checks there is still a possibility of
                 false negatives when a child zone is being served.
               </p>
-<p>
+              <p>
                 Similarly false positives can arise from empty nodes
                 (no records at the name) in the delegation only zone
                 when the query type is not ANY.
               </p>
-<p>
+              <p>
                 Note some TLDs are not delegation only (e.g. "DE", "LV",
                 "US" and "MUSEUM").  This list is not exhaustive.
               </p>
+
 <pre class="programlisting">
 options {
         root-delegation-only exclude { "de"; "lv"; "us"; "museum"; };
 };
 </pre>
-</dd>
+
+            </dd>
 <dt><span class="term"><span class="command"><strong>disable-algorithms</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Disable the specified DNSSEC algorithms at and below the
                 specified name.
                 Multiple <span class="command"><strong>disable-algorithms</strong></span>
@@ -3279,22 +3470,22 @@ options {
                 Only the best match <span class="command"><strong>disable-algorithms</strong></span>
                 clause will be used to determine which algorithms are used.
               </p>
-<p>
+              <p>
                 If all supported algorithms are disabled, the zones covered
                 by the <span class="command"><strong>disable-algorithms</strong></span> will be treated
                 as insecure.
               </p>
-<p>
+              <p>
                 Configured trust anchors in <span class="command"><strong>trust-anchors</strong></span>
                 (or <span class="command"><strong>managed-keys</strong></span> or
                 <span class="command"><strong>trusted-keys</strong></span>, both deprecated)
                 that match a disabled algorithm will be ignored and treated
                 as if they were not configured at all.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>disable-ds-digests</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Disable the specified DS digest types at and below the
                 specified name.
                 Multiple <span class="command"><strong>disable-ds-digests</strong></span>
@@ -3302,14 +3493,15 @@ options {
                 Only the best match <span class="command"><strong>disable-ds-digests</strong></span>
                 clause will be used to determine which digest types are used.
               </p>
-<p>
+              <p>
                 If all supported digest types are disabled, the zones covered
                 by the <span class="command"><strong>disable-ds-digests</strong></span> will be treated
                 as insecure.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-must-be-secure</strong></span></span></dt>
-<dd><p>
+<dd>
+              <p>
                 Specify hierarchies which must be or may not be secure
                 (signed and validated).  If <strong class="userinput"><code>yes</code></strong>,
                 then <span class="command"><strong>named</strong></span> will only accept answers if
@@ -3319,10 +3511,11 @@ options {
                 trust anchor, for instance in a <span class="command"><strong>trust-anchors</strong></span>
                 statement, or <span class="command"><strong>dnssec-validation auto</strong></span> must
                 be active.
-              </p></dd>
+              </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dns64</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 This directive instructs <span class="command"><strong>named</strong></span> to
                 return mapped IPv4 addresses to AAAA queries when
                 there are no AAAA records.  It is intended to be
@@ -3330,13 +3523,13 @@ options {
                 <span class="command"><strong>dns64</strong></span> defines one DNS64 prefix.
                 Multiple DNS64 prefixes can be defined.
               </p>
-<p>
+              <p>
                 Compatible IPv6 prefixes have lengths of 32, 40, 48, 56,
                 64 and 96 as per RFC 6052.  Bits 64..71 inclusive must
                 be zero with the most significate bit of the prefix in
                 position 0.
               </p>
-<p>
+              <p>
                 Additionally a reverse IP6.ARPA zone will be created for
                 the prefix to provide a mapping from the IP6.ARPA names
                 to the corresponding IN-ADDR.ARPA names using synthesized
@@ -3346,20 +3539,20 @@ options {
                 are settable at the view / options level.  These are
                 not settable on a per-prefix basis.
               </p>
-<p>
+              <p>
                 Each <span class="command"><strong>dns64</strong></span> supports an optional
                 <span class="command"><strong>clients</strong></span> ACL that determines which
                 clients are affected by this directive.  If not defined,
                 it defaults to <strong class="userinput"><code>any;</code></strong>.
               </p>
-<p>
+              <p>
                 Each <span class="command"><strong>dns64</strong></span> supports an optional
                 <span class="command"><strong>mapped</strong></span> ACL that selects which
                 IPv4 addresses are to be mapped in the corresponding
                 A RRset.  If not defined it defaults to
                 <strong class="userinput"><code>any;</code></strong>.
               </p>
-<p>
+              <p>
                 Normally, DNS64 won't apply to a domain name that
                 owns one or more AAAA records; these records will
                 simply be returned.  The optional
@@ -3370,7 +3563,7 @@ options {
                 name owns.  If not defined, <span class="command"><strong>exclude</strong></span>
                 defaults to ::ffff:0.0.0.0/96.
               </p>
-<p>
+              <p>
                 A optional <span class="command"><strong>suffix</strong></span> can also
                 be defined to set the bits trailing the mapped
                 IPv4 address bits.  By default these bits are
@@ -3378,13 +3571,13 @@ options {
                 matching the prefix and mapped IPv4 address
                 must be zero.
               </p>
-<p>
+              <p>
                 If <span class="command"><strong>recursive-only</strong></span> is set to
                 <span class="command"><strong>yes</strong></span> the DNS64 synthesis will
                 only happen for recursive queries.  The default
                 is <span class="command"><strong>no</strong></span>.
               </p>
-<p>
+              <p>
                 If <span class="command"><strong>break-dnssec</strong></span> is set to
                 <span class="command"><strong>yes</strong></span> the DNS64 synthesis will
                 happen even if the result, if validated, would
@@ -3403,9 +3596,10 @@ options {
                 suffix ::;
         };
 </pre>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-loadkeys-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When a zone is configured with <span class="command"><strong>auto-dnssec
                   maintain;</strong></span> its key repository must be checked
                   periodically to see if any new keys have been added
@@ -3418,10 +3612,11 @@ options {
                   the minimum is <code class="literal">1</code> (1 minute), and the
                   maximum is <code class="literal">1440</code> (24 hours); any higher
                   value is silently reduced.
-                </p></dd>
+                </p>
+            </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-update-mode</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If this option is set to its default value of
                   <code class="literal">maintain</code> in a zone of type
                   <code class="literal">master</code> which is DNSSEC-signed
@@ -3434,13 +3629,13 @@ options {
                   by regenerating RRSIG records whenever they approach
                   their expiration date.
                 </p>
-<p>
+                <p>
                   If the option is changed to <code class="literal">no-resign</code>,
                   then <span class="command"><strong>named</strong></span> will sign all new or
                   changed records, but scheduled maintenance of
                   signatures is disabled.
                 </p>
-<p>
+                <p>
                   With either of these settings, <span class="command"><strong>named</strong></span>
                   will reject updates to a DNSSEC-signed zone when the
                   signing keys are inactive or unavailable to
@@ -3449,15 +3644,15 @@ options {
                   signing and allow DNSSEC data to be submitted into a zone
                   via dynamic update; this is not yet implemented.)
                 </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>nta-lifetime</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Species the default lifetime, in seconds,
                   that will be used for negative trust anchors added
                   via <span class="command"><strong>rndc nta</strong></span>.
                 </p>
-<p>
+                <p>
                   A negative trust anchor selectively disables
                   DNSSEC validation for zones that are known to be
                   failing because of misconfiguration rather than
@@ -3469,24 +3664,24 @@ options {
                   NTA's lifetime is elapsed. NTAs persist
                   across <span class="command"><strong>named</strong></span> restarts.
                 </p>
-<p>
+                <p>
                   For convenience, TTL-style time unit suffixes can be
                   used to specify the NTA lifetime in seconds, minutes
                   or hours.  It also accepts ISO 8601 duration formats.
                 </p>
-<p>
+                <p>
                  <code class="option">nta-lifetime</code> defaults to one hour.  It
                  cannot exceed one week.
                 </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>nta-recheck</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Species how often to check whether negative
                   trust anchors added via <span class="command"><strong>rndc nta</strong></span>
                   are still necessary.
                 </p>
-<p>
+                <p>
                   A negative trust anchor is normally used when a
                   domain has stopped validating due to operator error;
                   it temporarily disables DNSSEC validation for that
@@ -3497,33 +3692,33 @@ options {
                   to find out whether it can now be validated.  If so,
                   the negative trust anchor is allowed to expire early.
                 </p>
-<p>
+                <p>
                   Validity checks can be disabled for an individual
                   NTA by using <span class="command"><strong>rndc nta -f</strong></span>, or
                   for all NTAs by setting <code class="option">nta-recheck</code>
                   to zero.
                 </p>
-<p>
+                <p>
                   For convenience, TTL-style time unit suffixes can be
                   used to specify the NTA recheck interval in seconds,
                   minutes or hours.  It also accepts ISO 8601 duration
                   formats.
                 </p>
-<p>
+                <p>
                   The default is five minutes.  It cannot be longer than
                   <code class="option">nta-lifetime</code> (which cannot be longer
                   than a week).
                 </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>max-zone-ttl</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Specifies a maximum permissible TTL value in seconds.
                 For convenience, TTL-style time unit suffixes may be
                 used to specify the maximum value. It also
                 accepts ISO 8601 duration formats.
               </p>
-<p>
+              <p>
                 When loading a zone file using a
                 <code class="option">masterfile-format</code> of
                 <code class="constant">text</code> or <code class="constant">raw</code>,
@@ -3531,7 +3726,7 @@ options {
                 <code class="option">max-zone-ttl</code> will cause the zone to
                 be rejected.
               </p>
-<p>
+              <p>
                 This is useful in DNSSEC-signed zones because when
                 rolling to a new DNSKEY, the old key needs to remain
                 available until RRSIG records have expired from
@@ -3539,46 +3734,46 @@ options {
                 that the largest TTL in the zone will be no higher
                 than the set value.
               </p>
-<p>
+              <p>
                 (NOTE: Because <code class="constant">map</code>-format files
                 load directly into memory, this option cannot be
                 used with them.)
               </p>
-<p>
+              <p>
                 The default value is <code class="constant">unlimited</code>.
                 A <code class="option">max-zone-ttl</code> of zero is treated as
                 <code class="constant">unlimited</code>.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>stale-answer-ttl</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Specifies the TTL to be returned on stale answers.
                 The default is 1 second. The minimum allowed is
                 also 1 second; a value of 0 will be updated silently
                 to 1 second.
               </p>
-<p>
+              <p>
                 For stale answers to be returned, they must be enabled,
                 either in the configuration file using
                 <span class="command"><strong>stale-answer-enable</strong></span> or via
                 <span class="command"><strong>rndc serve-stale on</strong></span>.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>serial-update-method</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 Zones configured for dynamic DNS may use this
                 option to set the update method that will be used for
                 the zone serial number in the SOA record.
               </p>
-<p>
+              <p>
                 With the default setting of
                 <span class="command"><strong>serial-update-method increment;</strong></span>, the
                 SOA serial number will be incremented by one each time
                 the zone is updated.
               </p>
-<p>
+              <p>
                 When set to
                 <span class="command"><strong>serial-update-method unixtime;</strong></span>, the
                 SOA serial number will be set to the number of seconds
@@ -3586,7 +3781,7 @@ options {
                 already greater than or equal to that value, in which
                 case it is simply incremented by one.
               </p>
-<p>
+              <p>
                 When set to
                 <span class="command"><strong>serial-update-method date;</strong></span>, the
                 new SOA serial number will be the current date
@@ -3595,10 +3790,10 @@ options {
                 than or equal to that value, in which case it is
                 incremented by one.
               </p>
-</dd>
+            </dd>
 <dt><span class="term"><span class="command"><strong>zone-statistics</strong></span></span></dt>
 <dd>
-<p>
+              <p>
                 If <strong class="userinput"><code>full</code></strong>, the server will collect
                 statistical data on all zones (unless specifically
                 turned off on a per-zone basis by specifying
@@ -3612,7 +3807,7 @@ options {
                 current serial number, but not query type
                 counters).
               </p>
-<p>
+              <p>
                 These statistics may be accessed via the
                 <span class="command"><strong>statistics-channel</strong></span> or
                 using <span class="command"><strong>rndc stats</strong></span>, which
@@ -3620,7 +3815,7 @@ options {
                 in the <span class="command"><strong>statistics-file</strong></span>.  See
                 also <a class="xref" href="Bv9ARM.ch05.html#statsfile" title="The Statistics File">the section called &#8220;The Statistics File&#8221;</a>.
               </p>
-<p>
+              <p>
                 For backward compatibility with earlier versions
                 of BIND 9, the <span class="command"><strong>zone-statistics</strong></span>
                 option can also accept <strong class="userinput"><code>yes</code></strong>
@@ -3631,15 +3826,17 @@ options {
                 as <strong class="userinput"><code>none</code></strong>; previously, it
                 was the same as <strong class="userinput"><code>terse</code></strong>.
               </p>
-</dd>
+            </dd>
 </dl></div>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boolean_options"></a>Boolean Options</h4></div></div></div>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>automatic-interface-scan</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong> and supported by the operating
                   system, automatically rescan network interfaces when the
                   interface addresses are added or removed.  The default is
@@ -3650,21 +3847,21 @@ options {
                   confirms that automatic interface scanning is supported by the
                   operating system.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>automatic-interface-scan</strong></span> implementation
                   uses routing sockets for the network interface discovery,
                   and therefore the operating system has to support the routing
                   sockets for this feature to work.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-new-zones</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then zones can be
                   added at runtime via <span class="command"><strong>rndc addzone</strong></span>.
                   The default is <strong class="userinput"><code>no</code></strong>.
                 </p>
-<p>
+                <p>
                   Newly added zones' configuration parameters
                   are stored so that they can persist after the
                   server is restarted.  The configuration information
@@ -3678,7 +3875,7 @@ options {
                   incompatible with use as a file name, in which case a
                   cryptographic hash of the view name is used instead.
                 </p>
-<p>
+                <p>
                   Zones added at runtime will have their configuration
                   stored either in a new-zone file (NZF) or a new-zone
                   database (NZD) depending on whether
@@ -3687,34 +3884,40 @@ options {
                   See <a class="xref" href="man.rndc.html" title="rndc"><span class="refentrytitle"><span class="application">rndc</span></span>(8)</a> for further details
                   about <span class="command"><strong>rndc addzone</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>auth-nxdomain</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then the
                   <span class="command"><strong>AA</strong></span> bit is always set on NXDOMAIN
                   responses, even if the server is not actually
                   authoritative. The default is <strong class="userinput"><code>no</code></strong>.
                   If you are using very old DNS software, you
                   may need to set it to <strong class="userinput"><code>yes</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>deallocate-on-exit</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option was used in <acronym class="acronym">BIND</acronym>
                   8 to enable checking
                   for memory leaks on exit. <acronym class="acronym">BIND</acronym> 9 ignores the option and always performs
                   the checks.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>memstatistics</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Write memory statistics to the file specified by
                   <span class="command"><strong>memstatistics-file</strong></span> at exit.
                   The default is <strong class="userinput"><code>no</code></strong> unless
                   '-m record' is specified on the command line in
                   which case it is <strong class="userinput"><code>yes</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dialup</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then the
                   server treats all zones as if they are doing zone transfers
                   across
@@ -3729,14 +3932,14 @@ options {
                   the normal
                   zone maintenance traffic. The default is <strong class="userinput"><code>no</code></strong>.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>dialup</strong></span> option
                   may also be specified in the <span class="command"><strong>view</strong></span> and
                   <span class="command"><strong>zone</strong></span> statements,
                   in which case it overrides the global <span class="command"><strong>dialup</strong></span>
                   option.
                 </p>
-<p>
+                <p>
                   If the zone is a master zone, then the server will send out a
                   NOTIFY
                   request to all the slaves (default). This should trigger the
@@ -3748,7 +3951,7 @@ options {
                   by
                   <span class="command"><strong>notify</strong></span> and <span class="command"><strong>also-notify</strong></span>.
                 </p>
-<p>
+                <p>
                   If the
                   zone is a slave or stub zone, then the server will suppress
                   the regular
@@ -3758,7 +3961,7 @@ options {
                   addition to sending
                   NOTIFY requests.
                 </p>
-<p>
+                <p>
                   Finer control can be achieved by using
                   <strong class="userinput"><code>notify</code></strong> which only sends NOTIFY
                   messages,
@@ -3773,7 +3976,9 @@ options {
                   refresh
                   processing.
                 </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+                <div class="informaltable">
+                  <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="1.150in" class="2">
@@ -3924,33 +4129,43 @@ options {
                         </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+                </div>
+
+                <p>
                   Note that normal NOTIFY processing is not affected by
                   <span class="command"><strong>dialup</strong></span>.
                 </p>
-</dd>
+
+              </dd>
 <dt><span class="term"><span class="command"><strong>flush-zones-on-shutdown</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When the nameserver exits due receiving SIGTERM,
                   flush or do not flush any pending zone writes.  The default
                   is
                   <span class="command"><strong>flush-zones-on-shutdown</strong></span> <strong class="userinput"><code>no</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>geoip-use-ecs</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option was part of an experimental implementation
                   of the EDNS CLIENT-SUBNET for authoritative servers,
                   but is now obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>root-key-sentinel</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Respond to root key sentinel probes as described in
                   draft-ietf-dnsop-kskroll-sentinel-08. The default is
                   <strong class="userinput"><code>yes</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>message-compression</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, DNS name compression is
                   used in responses to regular queries (not including
                   AXFR or IXFR, which always uses compression).  Setting
@@ -3960,10 +4175,11 @@ options {
                   to be processed using TCP; a server with compression
                   disabled is out of compliance with RFC 1123 Section
                   6.1.3.2. The default is <strong class="userinput"><code>yes</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>minimal-responses</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   This option controls the addition of records to the
                   authority and additional sections of responses. Such
                   records may be included in responses to be helpful
@@ -3976,13 +4192,13 @@ options {
                   <span class="command"><strong>minimal-responses</strong></span> takes one of
                   four values:
                 </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+                <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
-<strong class="userinput"><code>no</code></strong>: the server will be
+                    <strong class="userinput"><code>no</code></strong>: the server will be
                     as complete as possible when generating responses.
                   </li>
 <li class="listitem">
-<strong class="userinput"><code>yes</code></strong>: the server will only add
+                    <strong class="userinput"><code>yes</code></strong>: the server will only add
                     records to the authority and additional sections when
                     such records are required by the DNS protocol (for
                     example, when returning delegations or negative
@@ -3990,20 +4206,20 @@ options {
                     but may result in more client queries.
                   </li>
 <li class="listitem">
-<strong class="userinput"><code>no-auth</code></strong>: the server
+                    <strong class="userinput"><code>no-auth</code></strong>: the server
                     will omit records from the authority section except
                     when they are required, but it may still add records
                     to the additional section.
                   </li>
 <li class="listitem">
-<strong class="userinput"><code>no-auth-recursive</code></strong>: the same
+                    <strong class="userinput"><code>no-auth-recursive</code></strong>: the same
                     as <strong class="userinput"><code>no-auth</code></strong> when recursion is
                     requested in the query (RD=1), or the same as
                     <strong class="userinput"><code>no</code></strong> if recursion is not
                     requested.
                   </li>
 </ul></div>
-<p>
+                <p>
                   <strong class="userinput"><code>no-auth</code></strong> and
                   <strong class="userinput"><code>no-auth-recursive</code></strong> are useful when
                   answering stub clients, which usually ignore the
@@ -4011,29 +4227,30 @@ options {
                   is meant for use in mixed-mode servers that handle both
                   authoritative and recursive queries.
                 </p>
-<p>
+                <p>
                   The default is <strong class="userinput"><code>no-auth-recursive</code></strong>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>glue-cache</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When set to <strong class="userinput"><code>yes</code></strong>, a cache is
                   used to improve query performance when adding
                   address-type (A and AAAA) glue records to the
                   additional section of DNS response messages that
                   delegate to a child zone.
                 </p>
-<p>
+                <p>
                   The glue cache uses memory proportional to the number
                   of delegations in the zone. The default setting is
                   <strong class="userinput"><code>yes</code></strong>, which improves performance
                   at the cost of increased memory usage for the zone. If
                   you don't want this, set it to <strong class="userinput"><code>no</code></strong>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>minimal-any</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If set to <strong class="userinput"><code>yes</code></strong>, then when
                   generating a positive response to a query of type
                   ANY over UDP, the server will reply with only one
@@ -4050,10 +4267,11 @@ options {
                   turned on for these queries, so no unnecessary records
                   will be added to the authority or additional sections.
                   The default is <strong class="userinput"><code>no</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong> (the default),
                   DNS NOTIFY messages are sent when a zone the server is
                   authoritative for
@@ -4064,7 +4282,7 @@ options {
                   in the SOA MNAME field), and to any servers listed in the
                   <span class="command"><strong>also-notify</strong></span> option.
                 </p>
-<p>
+                <p>
                   If <strong class="userinput"><code>master-only</code></strong>, notifies are only
                   sent
                   for master zones.
@@ -4073,7 +4291,7 @@ options {
                   servers explicitly listed using <span class="command"><strong>also-notify</strong></span>.
                   If <strong class="userinput"><code>no</code></strong>, no notifies are sent.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>notify</strong></span> option may also be
                   specified in the <span class="command"><strong>zone</strong></span>
                   statement,
@@ -4082,9 +4300,10 @@ options {
                   caused slaves
                   to crash.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify-to-soa</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong> do not check the nameservers
                   in the NS RRset against the SOA MNAME.  Normally a NOTIFY
                   message is not sent to the SOA MNAME (SOA ORIGIN) as it is
@@ -4093,9 +4312,11 @@ options {
                   hidden master configurations and in that case you would
                   want the ultimate master to still send NOTIFY messages to
                   all the nameservers listed in the NS RRset.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>recursion</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, and a
                   DNS query requests recursion, then the server will attempt
                   to do
@@ -4111,9 +4332,11 @@ options {
                   queries.
                   Caching may still occur as an effect the server's internal
                   operation, such as NOTIFY address lookups.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>request-nsid</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then an empty EDNS(0)
                   NSID (Name Server Identifier) option is sent with all
                   queries to authoritative name servers during iterative
@@ -4122,21 +4345,24 @@ options {
                   the <span class="command"><strong>nsid</strong></span> category at level
                   <span class="command"><strong>info</strong></span>.
                   The default is <strong class="userinput"><code>no</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>request-sit</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This experimental option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>require-server-cookie</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Require a valid server cookie before sending a full
                   response to a UDP request from a cookie aware client.
                   BADCOOKIE is sent if there is a bad or no existent
                   server cookie.
                   The default is <strong class="userinput"><code>no</code></strong>.
                 </p>
-<p>
+                <p>
                   Set this to <strong class="userinput"><code>yes</code></strong> to test that DNS
                   COOKIE clients correctly handle BADCOOKIE or if you are
                   getting a lot of forged DNS requests with DNS COOKIES
@@ -4146,10 +4372,10 @@ options {
                   a full response, while also requiring a legitimate client
                   to follow up with a second query with the new, valid, cookie.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>answer-cookie</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When set to the default value of <strong class="userinput"><code>yes</code></strong>,
                   COOKIE EDNS options will be sent when applicable in
                   replies to client queries. If set to
@@ -4157,7 +4383,7 @@ options {
                   be sent in replies.  This can only be set at the global
                   options level, not per-view.
                 </p>
-<p>
+                <p>
                   <span class="command"><strong>answer-cookie no</strong></span> is intended as a
                   temporary measure, for use when <span class="command"><strong>named</strong></span>
                   shares an IP address with other servers that do not yet
@@ -4168,9 +4394,10 @@ options {
                   caution. DNS COOKIE is an important security mechanism,
                   and should not be disabled unless absolutely necessary.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>send-cookie</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then a COOKIE EDNS
                   option is sent along with the query.  If the
                   resolver has previously talked to the server, the
@@ -4187,15 +4414,16 @@ options {
                   to receiving smaller responses via the
                   <span class="command"><strong>nocookie-udp-size</strong></span> option.
                   The default is <strong class="userinput"><code>yes</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>stale-answer-enable</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Enable the returning of "stale" cached answers when
                   the nameservers for a zone are not answering.  The
                   default is not to return stale answers.
                 </p>
-<p>
+                <p>
                   Stale answers can also be enabled or disabled at
                   runtime via <span class="command"><strong>rndc serve-stale on</strong></span> or
                   <span class="command"><strong>rndc serve-stale off</strong></span>; these
@@ -4210,33 +4438,39 @@ options {
                   <span class="command"><strong>rndc serve-stale on</strong></span>,
                   or the server must be restarted.
                 </p>
-<p>
+                <p>
                   Information about stale answers is logged under
                   the <span class="command"><strong>serve-stale</strong></span> log category.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>nocookie-udp-size</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Sets the maximum size of UDP responses that will be
                   sent to queries without a valid server COOKIE. A value
                   below 128 will be silently raised to 128. The default
                   value is 4096, but the <span class="command"><strong>max-udp-size</strong></span>
                   option may further limit the response size.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>sit-secret</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This experimental option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>cookie-algorithm</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Set the algorithm to be used when generating the
                   server cookie.  One of "aes", "sha1" or "sha256".
                   The default is "aes" if supported by the cryptographic
                   library or otherwise "sha256".
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>cookie-secret</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If set, this is a shared secret used for generating
                   and verifying EDNS COOKIE options
                   within an anycast cluster.  If not set, the system
@@ -4245,16 +4479,16 @@ options {
                   to be 128 bits for AES128, 160 bits for SHA1 and
                   256 bits for SHA256.
                 </p>
-<p>
+                <p>
                   If there are multiple secrets specified, the first
                   one listed in <code class="filename">named.conf</code> is
                   used to generate new server cookies.  The others
                   will only be used to verify returned cookies.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>response-padding</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The EDNS Padding option is intended to improve
                   confidentiality when DNS queries are sent over an
                   encrypted channel by reducing the variability in
@@ -4281,7 +4515,7 @@ options {
                   If these conditions are not met, the response is not
                   padded.
                 </p>
-<p>
+                <p>
                   If <code class="varname">block-size</code> is 0 or the ACL is
                   <span class="command"><strong>none;</strong></span>, then this feature is
                   disabled and no padding will occur; this is the
@@ -4290,17 +4524,17 @@ options {
                   to 512.  Block sizes are ordinarily expected to be powers
                   of two (for instance, 128), but this is not mandatory.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>trust-anchor-telemetry</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Causes <span class="command"><strong>named</strong></span> to send specially-formed
                   queries once per day to domains for which trust anchors
                   have been configured via, e.g.,
                   <span class="command"><strong>trust-anchors</strong></span> or
                   <span class="command"><strong>dnssec-validation auto</strong></span>.
                 </p>
-<p>
+                <p>
                   The query name used for these queries has the
                   form "_ta-xxxx(-xxxx)(...)".&lt;domain&gt;, where
                   each "xxxx" is a group of four hexadecimal digits
@@ -4308,18 +4542,19 @@ options {
                   The key IDs for each domain are sorted smallest
                   to largest prior to encoding. The query type is NULL.
                 </p>
-<p>
+                <p>
                   By monitoring these queries, zone operators will
                   be able to see which resolvers have been updated to
                   trust a new key; this may help them decide when it
                   is safe to remove an old one.
                 </p>
-<p>
+                <p>
                   The default is <strong class="userinput"><code>yes</code></strong>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>use-ixfr</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   <span class="emphasis"><em>This option is obsolete</em></span>.
                   If you need to disable IXFR to a particular server or
                   servers, see
@@ -4328,36 +4563,43 @@ options {
             Usage&#8221;</a>.
                   See also
                   <a class="xref" href="Bv9ARM.ch04.html#incremental_zone_transfers" title="Incremental Zone Transfers (IXFR)">the section called &#8220;Incremental Zone Transfers (IXFR)&#8221;</a>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>provide-ixfr</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   See the description of
                   <span class="command"><strong>provide-ixfr</strong></span> in
                   <a class="xref" href="Bv9ARM.ch05.html#server_statement_definition_and_usage" title="server Statement Definition and Usage">the section called &#8220;<span class="command"><strong>server</strong></span> Statement Definition and
             Usage&#8221;</a>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>request-ixfr</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   See the description of
                   <span class="command"><strong>request-ixfr</strong></span> in
                   <a class="xref" href="Bv9ARM.ch05.html#server_statement_definition_and_usage" title="server Statement Definition and Usage">the section called &#8220;<span class="command"><strong>server</strong></span> Statement Definition and
             Usage&#8221;</a>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>request-expire</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   See the description of
                   <span class="command"><strong>request-expire</strong></span> in
                   <a class="xref" href="Bv9ARM.ch05.html#server_statement_definition_and_usage" title="server Statement Definition and Usage">the section called &#8220;<span class="command"><strong>server</strong></span> Statement Definition and
             Usage&#8221;</a>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>match-mapped-addresses</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If <strong class="userinput"><code>yes</code></strong>, then an
                   IPv4-mapped IPv6 address will match any address match
                   list entries that match the corresponding IPv4 address.
                 </p>
-<p>
+                <p>
                   This option was introduced to work around a kernel quirk
                   in some operating systems that causes IPv4 TCP
                   connections, such as zone transfers, to be accepted on an
@@ -4366,10 +4608,10 @@ options {
                   <span class="command"><strong>named</strong></span> now solves this problem
                   internally.  The use of this option is discouraged.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>ixfr-from-differences</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When <strong class="userinput"><code>yes</code></strong> and the server loads a new
                   version of a master zone from its zone file or receives a
                   new version of a slave file via zone transfer, it will
@@ -4379,7 +4621,7 @@ options {
                   transmitted to downstream slaves as an incremental zone
                   transfer.
                 </p>
-<p>
+                <p>
                   By allowing incremental zone transfers to be used for
                   non-dynamic zones, this option saves bandwidth at the
                   expense of increased CPU and memory consumption at the
@@ -4391,7 +4633,7 @@ options {
                   temporarily allocate memory to hold this complete
                   difference set.
                 </p>
-<p><span class="command"><strong>ixfr-from-differences</strong></span>
+                <p><span class="command"><strong>ixfr-from-differences</strong></span>
                   also accepts <span class="command"><strong>master</strong></span> (or
                   <span class="command"><strong>primary</strong></span>) and
                   <span class="command"><strong>slave</strong></span> (or <span class="command"><strong>secondary</strong></span>)
@@ -4400,14 +4642,15 @@ options {
                   all primary or secondary zones, respectively.
                   It is off for all zones by default.
                 </p>
-<p>
+                <p>
                   Note: if inline signing is enabled for a zone, the
                   user-provided <span class="command"><strong>ixfr-from-differences</strong></span>
                   setting is ignored for that zone.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>multi-master</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This should be set when you have multiple masters for a zone
                   and the
                   addresses refer to different machines.  If <strong class="userinput"><code>yes</code></strong>, <span class="command"><strong>named</strong></span> will
@@ -4415,21 +4658,22 @@ options {
                   when the serial number on the master is less than what <span class="command"><strong>named</strong></span>
                   currently
                   has.  The default is <strong class="userinput"><code>no</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>auto-dnssec</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Zones configured for dynamic DNS may use this
                   option to allow varying levels of automatic DNSSEC key
                   management. There are three possible settings:
                 </p>
-<p>
+                <p>
                   <span class="command"><strong>auto-dnssec allow;</strong></span> permits
                   keys to be updated and the zone fully re-signed
                   whenever the user issues the command <span class="command"><strong>rndc sign
                   <em class="replaceable"><code>zonename</code></em></strong></span>.
                 </p>
-<p>
+                <p>
                   <span class="command"><strong>auto-dnssec maintain;</strong></span> includes the
                   above, but also automatically adjusts the zone's DNSSEC
                   keys on schedule, according to the keys' timing metadata
@@ -4452,28 +4696,30 @@ options {
                   interval is defined by
                   <span class="command"><strong>dnssec-loadkeys-interval</strong></span>.)
                 </p>
-<p>
+                <p>
                   The default setting is <span class="command"><strong>auto-dnssec off</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-enable</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is obsolete and has no effect.
-                </p></dd>
+                </p>
+              </dd>
 <dt>
 <a name="dnssec_validation"></a><span class="term"><a name="dnssec_validation_term"></a><span class="command"><strong>dnssec-validation</strong></span></span>
 </dt>
 <dd>
-<p>
+                <p>
                   This option enables DNSSEC validation in
                   <span class="command"><strong>named</strong></span>.
                 </p>
-<p>
+                <p>
                   If set to <strong class="userinput"><code>auto</code></strong>,
                   DNSSEC validation is enabled, and a default trust anchor
                   for the DNS root zone is used.
                 </p>
-<p>
+                <p>
                   If set to <strong class="userinput"><code>yes</code></strong>, DNSSEC validation is
                   enabled, but a trust anchor must be manually configured
                   using a <span class="command"><strong>trust-anchors</strong></span> statement (or
@@ -4482,17 +4728,17 @@ options {
                   If there is no configured trust anchor, validation will
                   not take place.
                 </p>
-<p>
+                <p>
                   If set to <strong class="userinput"><code>no</code></strong>, DNSSEC validation
                   is disabled.
                 </p>
-<p>
+                <p>
                   The default is <strong class="userinput"><code>auto</code></strong>, unless
                   BIND is built with
                   <span class="command"><strong>configure --disable-auto-validation</strong></span>,
                   in which case the default is <strong class="userinput"><code>yes</code></strong>.
                 </p>
-<p>
+                <p>
                   The default root trust anchor is stored in the file
                   <code class="filename">bind.keys</code>.
                   <span class="command"><strong>named</strong></span> will load that key at
@@ -4503,16 +4749,16 @@ options {
                   <code class="filename">bind.keys</code> can be downloaded
                   from <a class="link" href="https://www.isc.org/bind-keys" target="_top">https://www.isc.org/bind-keys</a>.
                 </p>
-<p>
+                <p>
                   (To prevent problems if <code class="filename">bind.keys</code> is
                   not found, the current trust anchor is also compiled in
                   to <span class="command"><strong>named</strong></span>.  Relying on this is not
                   recommended, however, as it requires <span class="command"><strong>named</strong></span>
                   to be recompiled with a new key when the root key expires.)
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+                  <p>
                     <span class="command"><strong>named</strong></span> loads <span class="emphasis"><em>only</em></span>
                     the root key from <code class="filename">bind.keys</code>.
                     The file cannot be used to store keys for other zones.
@@ -4520,16 +4766,17 @@ options {
                     if <span class="command"><strong>dnssec-validation auto</strong></span> is not in
                     use.
                   </p>
-<p>
+                  <p>
                     Whenever the resolver sends out queries to an
                     EDNS-compliant server, it always sets the DO bit
                     indicating it can support DNSSEC responses even if
                     <span class="command"><strong>dnssec-validation</strong></span> is off.
                   </p>
-</div>
-</dd>
+                </div>
+              </dd>
 <dt><span class="term"><span class="command"><strong>validate-except</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies a list of domain names at and beneath which DNSSEC
                   validation should <span class="emphasis"><em>not</em></span> be performed,
                   regardless of the presence of a trust anchor at or above
@@ -4540,25 +4787,28 @@ options {
                   to setting a negative trust anchor, except that it is a
                   permanent configuration, whereas negative trust anchors
                   expire and are removed after a set period of time.)
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-accept-expired</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Accept expired signatures when verifying DNSSEC signatures.
                   The default is <strong class="userinput"><code>no</code></strong>.
                   Setting this option to <strong class="userinput"><code>yes</code></strong>
                   leaves <span class="command"><strong>named</strong></span> vulnerable to
                   replay attacks.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>querylog</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Query logging provides a complete log of all incoming
                   queries and all query errors. This provides more insight
                   into the server's activity, but with a cost to
                   performance which may be significant on heavily-loaded
                   servers.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>querylog</strong></span> option specifies
                   whether query logging should be active when
                   <span class="command"><strong>named</strong></span> first starts.
@@ -4569,10 +4819,10 @@ options {
                   command <span class="command"><strong>rndc querylog on</strong></span>, or
                   deactivated with <span class="command"><strong>rndc querylog off</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-names</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   This option is used to restrict the character set and syntax
                   of
                   certain domain names in master files and/or DNS responses
@@ -4585,11 +4835,11 @@ options {
                   For answers received from the network (<span class="command"><strong>response</strong></span>)
                   the default is <span class="command"><strong>ignore</strong></span>.
                 </p>
-<p>
+                <p>
                   The rules for legal hostnames and mail domains are derived
                   from RFC 952 and RFC 821 as modified by RFC 1123.
                 </p>
-<p><span class="command"><strong>check-names</strong></span>
+                <p><span class="command"><strong>check-names</strong></span>
                   applies to the owner names of A, AAAA and MX records.
                   It also applies to the domain names in the RDATA of NS, SOA,
                   MX, and SRV records.
@@ -4597,24 +4847,29 @@ options {
                   name indicated that it is a reverse lookup of a hostname
                   (the owner name ends in IN-ADDR.ARPA, IP6.ARPA, or IP6.INT).
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-dup-records</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Check master zones for records that are treated as different
                   by DNSSEC but are semantically equal in plain DNS.  The
                   default is to <span class="command"><strong>warn</strong></span>.  Other possible
                   values are <span class="command"><strong>fail</strong></span> and
                   <span class="command"><strong>ignore</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-mx</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Check whether the MX record appears to refer to a IP address.
                   The default is to <span class="command"><strong>warn</strong></span>.  Other possible
                   values are <span class="command"><strong>fail</strong></span> and
                   <span class="command"><strong>ignore</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-wildcard</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is used to check for non-terminal wildcards.
                   The use of non-terminal wildcards is almost always as a
                   result of a failure
@@ -4622,10 +4877,11 @@ options {
                   This option
                   affects master zones.  The default (<span class="command"><strong>yes</strong></span>) is to check
                   for non-terminal wildcards and issue a warning.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-integrity</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Perform post load zone integrity checks on master
                   zones.  This checks that MX and SRV records refer
                   to address (A or AAAA) records and that glue
@@ -4638,7 +4894,7 @@ options {
                   checks use <span class="command"><strong>named-checkzone</strong></span>).
                   The default is <span class="command"><strong>yes</strong></span>.
                 </p>
-<p>
+                <p>
                   The use of the SPF record for publishing Sender
                   Policy Framework is deprecated as the migration
                   from using TXT records to SPF records was abandoned.
@@ -4648,53 +4904,65 @@ options {
                   TXT record does not exist and can be suppressed with
                   <span class="command"><strong>check-spf</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-mx-cname</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <span class="command"><strong>check-integrity</strong></span> is set then
                   fail, warn or ignore MX records that refer
                   to CNAMES.  The default is to <span class="command"><strong>warn</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-srv-cname</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <span class="command"><strong>check-integrity</strong></span> is set then
                   fail, warn or ignore SRV records that refer
                   to CNAMES.  The default is to <span class="command"><strong>warn</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-sibling</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When performing integrity checks, also check that
                   sibling glue exists.  The default is <span class="command"><strong>yes</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>check-spf</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   If <span class="command"><strong>check-integrity</strong></span> is set then
                   check that there is a TXT Sender Policy Framework
                   record present (starts with "v=spf1") if there is an
                   SPF record present. The default is
                   <span class="command"><strong>warn</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>zero-no-soa-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When returning authoritative negative responses to
                   SOA queries set the TTL of the SOA record returned in
                   the authority section to zero.
                   The default is <span class="command"><strong>yes</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>zero-no-soa-ttl-cache</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When caching a negative response to a SOA query
                   set the TTL to zero.
                   The default is <span class="command"><strong>no</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>update-check-ksk</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When set to the default value of <code class="literal">yes</code>,
                   check the KSK bit in each key to determine how the key
                   should be used when generating RRSIGs for a secure zone.
                 </p>
-<p>
+                <p>
                   Ordinarily, zone-signing keys (that is, keys without the
                   KSK bit set) are used to sign the entire zone, while
                   key-signing keys (keys with the KSK bit set) are only
@@ -4705,7 +4973,7 @@ options {
                   similar to the <span class="command"><strong>dnssec-signzone -z</strong></span>
                   command line option.
                 </p>
-<p>
+                <p>
                   When this option is set to <code class="literal">yes</code>, there
                   must be at least two active keys for every algorithm
                   represented in the DNSKEY RRset: at least one KSK and one
@@ -4713,10 +4981,10 @@ options {
                   this requirement is not met, this option will be ignored
                   for that algorithm.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-dnskey-kskonly</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When this option and <span class="command"><strong>update-check-ksk</strong></span>
                   are both set to <code class="literal">yes</code>, only key-signing
                   keys (that is, keys with the KSK bit set) will be used
@@ -4726,20 +4994,22 @@ options {
                   This is similar to the
                   <span class="command"><strong>dnssec-signzone -x</strong></span> command line option.
                 </p>
-<p>
+                <p>
                   The default is <span class="command"><strong>no</strong></span>.  If
                   <span class="command"><strong>update-check-ksk</strong></span> is set to
                   <code class="literal">no</code>, this option is ignored.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>try-tcp-refresh</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Try to refresh the zone using TCP if UDP queries fail.
                   The default is <span class="command"><strong>yes</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-secure-to-insecure</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Allow a dynamic zone to transition from secure to
                   insecure (i.e., signed to unsigned) by deleting all
                   of the DNSKEY records.  The default is <span class="command"><strong>no</strong></span>.
@@ -4747,54 +5017,57 @@ options {
                   at the zone apex is deleted, all RRSIG and NSEC records
                   will be removed from the zone as well.
                 </p>
-<p>
+                <p>
                   If the zone uses NSEC3, then it is also necessary to
                   delete the NSEC3PARAM RRset from the zone apex; this will
                   cause the removal of all corresponding NSEC3 records.
                   (It is expected that this requirement will be eliminated
                   in a future release.)
                 </p>
-<p>
+                <p>
                   Note that if a zone has been configured with
                   <span class="command"><strong>auto-dnssec maintain</strong></span> and the
                   private keys remain accessible in the key repository,
                   then the zone will be automatically signed again the
                   next time <span class="command"><strong>named</strong></span> is started.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>synth-from-dnssec</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Synthesize answers from cached NSEC, NSEC3 and
                   other RRsets that have been proved to be correct
                   using DNSSEC.  The default is <span class="command"><strong>no</strong></span>,
                   but it will become <span class="command"><strong>yes</strong></span> again
                   in the future releases.
                 </p>
-<p>
+                <p>
                   Note:
                   </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-<p>
+                      <p>
                         DNSSEC validation must be enabled for this
                         option to be effective.
                       </p>
-<p>
+                      <p>
                         This initial implementation only covers synthesis
                         of answers from NSEC records.  Synthesis from NSEC3
                         is planned for the future.  This will also be
                         controlled by <span class="command"><strong>synth-from-dnssec</strong></span>.
                       </p>
-</li></ul></div>
+                    </li></ul></div>
 <p>
                 </p>
-</dd>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="forwarding"></a>Forwarding</h4></div></div></div>
-<p>
+
+          <p>
             The forwarding facility can be used to create a large site-wide
             cache on a few servers, reducing traffic over links to external
             name servers. It can also be used to allow queries by servers that
@@ -4804,9 +5077,11 @@ options {
             the server is not authoritative and does not have the answer in
             its cache.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>forward</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is only meaningful if the
                   forwarders list is not empty. A value of <code class="varname">first</code>,
                   the default, causes the server to query the forwarders
@@ -4816,17 +5091,21 @@ options {
                   the answer itself. If <code class="varname">only</code> is
                   specified, the
                   server will only query the forwarders.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>forwarders</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies a list of IP addresses to which queries shall be
                   forwarded. The default is the empty list (no forwarding).
                   Each address in the list can be associated with an optional
                   port number and/or DSCP value, and a default port number and
                   DSCP value can be set for the entire list.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-<p>
+
+          <p>
             Forwarding can also be configured on a per-domain basis, allowing
             for the global forwarding options to be overridden in a variety
             of ways. You can set particular domains to use different
@@ -4835,20 +5114,24 @@ options {
             or not forward at all, see <a class="xref" href="Bv9ARM.ch05.html#zone_statement_grammar" title="zone Statement Grammar">the section called &#8220;<span class="command"><strong>zone</strong></span>
             Statement Grammar&#8221;</a>.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="dual_stack"></a>Dual-stack Servers</h4></div></div></div>
-<p>
+
+          <p>
             Dual-stack servers are used as servers of last resort to work
             around
             problems in reachability due the lack of support for either IPv4
             or IPv6
             on the host machine.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>dual-stack-servers</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies host names or addresses of machines with access to
                   both IPv4 and IPv6 transports. If a hostname is used, the
                   server must be able
@@ -4857,44 +5140,49 @@ options {
                   stacked, then the <span class="command"><strong>dual-stack-servers</strong></span> have no effect unless
                   access to a transport has been disabled on the command line
                   (e.g. <span class="command"><strong>named -4</strong></span>).
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="access_control"></a>Access Control</h4></div></div></div>
-<p>
+
+
+          <p>
             Access to the server can be restricted based on the IP address
             of the requesting system. See <a class="xref" href="Bv9ARM.ch05.html#address_match_lists" title="Address Match Lists">the section called &#8220;Address Match Lists&#8221;</a> for
             details on how to specify IP address lists.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>allow-notify</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   This ACL specifies which hosts may send NOTIFY messages
                   to inform this server of changes to zones for which it
                   is acting as a secondary server.  This is only
                   applicable for secondary zones (i.e., type
                   <code class="literal">secondary</code> or <code class="literal">slave</code>).
                 </p>
-<p>
+                <p>
                   If this option is set in <span class="command"><strong>view</strong></span> or
                   <span class="command"><strong>options</strong></span>, it is globally applied to
                   all secondary zones. If set in the <span class="command"><strong>zone</strong></span>
                   statement, the global value is overridden.
                 </p>
-<p>
+                <p>
                   If not specified, the default is to process NOTIFY
                   messages only from the configured
                   <span class="command"><strong>masters</strong></span> for the zone.
                   <span class="command"><strong>allow-notify</strong></span> can be used to expand the
                   list of permitted hosts, not to reduce it.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-query</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specifies which hosts are allowed to ask ordinary
                   DNS questions. <span class="command"><strong>allow-query</strong></span> may
                   also be specified in the <span class="command"><strong>zone</strong></span>
@@ -4903,49 +5191,50 @@ options {
                   If not specified, the default is to allow queries
                   from all hosts.
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+                  <p>
                     <span class="command"><strong>allow-query-cache</strong></span> is now
                     used to specify access to the cache.
                   </p>
-</div>
-</dd>
+                </div>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-query-on</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specifies which local addresses can accept ordinary
                   DNS questions. This makes it possible, for instance,
                   to allow queries on internal-facing interfaces but
                   disallow them on external-facing ones, without
                   necessarily knowing the internal network's addresses.
                 </p>
-<p>
+                <p>
                   Note that <span class="command"><strong>allow-query-on</strong></span> is only
                   checked for queries that are permitted by
                   <span class="command"><strong>allow-query</strong></span>.  A query must be
                   allowed by both ACLs, or it will be refused.
                 </p>
-<p>
+                <p>
                   <span class="command"><strong>allow-query-on</strong></span> may
                   also be specified in the <span class="command"><strong>zone</strong></span>
                   statement, in which case it overrides the
                   <span class="command"><strong>options allow-query-on</strong></span> statement.
                 </p>
-<p>
+                <p>
                   If not specified, the default is to allow queries
                   on all addresses.
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+                  <p>
                     <span class="command"><strong>allow-query-cache</strong></span> is
                     used to specify access to the cache.
                   </p>
-</div>
-</dd>
+                </div>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-query-cache</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies which hosts are allowed to get answers
                   from the cache.  If <span class="command"><strong>allow-query-cache</strong></span>
                   is not set then <span class="command"><strong>allow-recursion</strong></span>
@@ -4954,9 +5243,11 @@ options {
                   set in which case <span class="command"><strong>none;</strong></span> is used,
                   otherwise the default (<span class="command"><strong>localnets;</strong></span>
                   <span class="command"><strong>localhost;</strong></span>) is used.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-query-cache-on</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies which local addresses can send answers
                   from the cache.  If <span class="command"><strong>allow-query-cache-on</strong></span>
                   is not set, then <span class="command"><strong>allow-recursion-on</strong></span> is
@@ -4967,9 +5258,11 @@ options {
                   satisfied before a cache response can be sent;
                   a client that is blocked by one cannot be allowed
                   by the other.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-recursion</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies which hosts are allowed to make recursive
                   queries through this server. If
                   <span class="command"><strong>allow-recursion</strong></span> is not set
@@ -4978,9 +5271,11 @@ options {
                   is used if set, otherwise the default
                   (<span class="command"><strong>localnets;</strong></span>
                   <span class="command"><strong>localhost;</strong></span>) is used.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-recursion-on</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies which local addresses can accept recursive
                   queries.  If <span class="command"><strong>allow-recursion-on</strong></span>
                   is not set, then <span class="command"><strong>allow-query-cache-on</strong></span>
@@ -4993,21 +5288,22 @@ options {
                   satisfied before recursion is allowed;
                   a client that is blocked by one cannot be allowed
                   by the other.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-update</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When set in the <span class="command"><strong>zone</strong></span> statement for
                   a master zone, specifies which hosts are allowed to
                   submit Dynamic DNS updates to that zone.  The default
                   is to deny updates from all hosts.
                 </p>
-<p>
+                <p>
                   Note that allowing updates based on the
                   requestor's IP address is insecure; see
                   <a class="xref" href="Bv9ARM.ch06.html#dynamic_update_security" title="Dynamic Update Security">the section called &#8220;Dynamic Update Security&#8221;</a> for details.
                 </p>
-<p>
+                <p>
                   In general this option should only be set at the
                   <span class="command"><strong>zone</strong></span> level. While a default
                   value can be set at the <span class="command"><strong>options</strong></span> or
@@ -5015,10 +5311,10 @@ options {
                   this could lead to some zones unintentionally allowing
                   updates.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-update-forwarding</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When set in the <span class="command"><strong>zone</strong></span> statement for
                   a slave zone, specifies which hosts are allowed to
                   submit Dynamic DNS updates and have them be forwarded
@@ -5026,7 +5322,7 @@ options {
                   <strong class="userinput"><code>{ none; }</code></strong>, which means that no
                   update forwarding will be performed.
                 </p>
-<p>
+                <p>
                   To enable update forwarding, specify
                   <strong class="userinput"><code>allow-update-forwarding { any; };</code></strong>.
                   in the <span class="command"><strong>zone</strong></span> statement.
@@ -5036,13 +5332,13 @@ options {
                   access control should rest with the master server, not
                   the slave.
                 </p>
-<p>
+                <p>
                   Note that enabling the update forwarding feature on a slave
                   server may expose master servers to attacks if they rely
                   on insecure IP-address-based access control; see
                   <a class="xref" href="Bv9ARM.ch06.html#dynamic_update_security" title="Dynamic Update Security">the section called &#8220;Dynamic Update Security&#8221;</a> for more details.
                 </p>
-<p>
+                <p>
                   In general this option should only be set at the
                   <span class="command"><strong>zone</strong></span> level. While a default
                   value can be set at the <span class="command"><strong>options</strong></span> or
@@ -5050,9 +5346,10 @@ options {
                   this can lead to some zones unintentionally forwarding
                   updates.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>allow-v6-synthesis</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option was introduced for the smooth transition from
                   AAAA
                   to A6 and from "nibble labels" to binary labels.
@@ -5060,11 +5357,13 @@ options {
                   deprecated,
                   this option was also deprecated.
                   It is now ignored with some warning messages.
-                </p></dd>
+                </p>
+              </dd>
 <dt>
 <a name="allow_transfer"></a><span class="term"><a name="allow_transfer_term"></a><span class="command"><strong>allow-transfer</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies which hosts are allowed to receive zone
                   transfers from the server.  <span class="command"><strong>allow-transfer</strong></span>
                   may also be specified in the <span class="command"><strong>zone</strong></span>
@@ -5073,26 +5372,31 @@ options {
                   <span class="command"><strong>options</strong></span> or <span class="command"><strong>view</strong></span>.
                   If not specified, the default is to allow transfers to
                   all hosts.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>blackhole</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies a list of addresses that the
                   server will not accept queries from or use to resolve a
                   query. Queries
                   from these addresses will not be responded to. The default
                   is <strong class="userinput"><code>none</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>keep-response-order</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies a list of addresses to which the server
                   will send responses to TCP queries in the same order
                   in which they were received.  This disables the
                   processing of TCP queries in parallel. The default
                   is <strong class="userinput"><code>none</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>no-case-compress</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specifies a list of addresses which require responses
                   to use case-insensitive compression.  This ACL can be
                   used when <span class="command"><strong>named</strong></span> needs to work with
@@ -5100,7 +5404,7 @@ options {
                   1034 to use case-insensitive name comparisons when
                   checking for matching domain names.
                 </p>
-<p>
+                <p>
                   If left undefined, the ACL defaults to
                   <span class="command"><strong>none</strong></span>: case-insensitive compression
                   will be used for all clients.  If the ACL is defined and
@@ -5108,7 +5412,7 @@ options {
                   compressing domain names in DNS responses sent to that
                   client.
                 </p>
-<p>
+                <p>
                   This can result in slightly smaller responses: if
                   a response contains the names "example.com" and
                   "example.COM", case-insensitive compression would treat
@@ -5120,12 +5424,12 @@ options {
                   match the query, which is required by some clients
                   due to incorrect use of case-sensitive comparisons.
                 </p>
-<p>
+                <p>
                   Case-insensitive compression is <span class="emphasis"><em>always</em></span>
                   used in AXFR and IXFR responses, regardless of whether
                   the client matches this ACL.
                 </p>
-<p>
+                <p>
                   There are circumstances in which <span class="command"><strong>named</strong></span>
                   will not preserve the case of owner names of records:
                   if a zone file defines records of different types with
@@ -5140,10 +5444,10 @@ options {
                   have their case preserved unless the client matches this
                   ACL.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>resolver-query-timeout</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The amount of time in milliseconds that the resolver
                   will spend attempting to resolve a recursive
                   query before failing.  The default and minimum
@@ -5152,19 +5456,22 @@ options {
                   <code class="literal">0</code> will result in the default
                   being used.
                 </p>
-<p>
+                <p>
                   This value was originally specified in seconds.
                   Values less than or equal to 300 will be be treated
                   as seconds and converted to milliseconds before
                   applying the above limits.
                 </p>
-</dd>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="interfaces"></a>Interfaces</h4></div></div></div>
-<p>
+
+          <p>
             The interfaces and ports that the server will answer queries
             from may be specified using the <span class="command"><strong>listen-on</strong></span> option. <span class="command"><strong>listen-on</strong></span> takes
             an optional port and an <code class="varname">address_match_list</code>
@@ -5173,30 +5480,35 @@ options {
             The server will listen on all interfaces allowed by the address
             match list. If a port is not specified, port 53 will be used.
           </p>
-<p>
+          <p>
             Multiple <span class="command"><strong>listen-on</strong></span> statements are
             allowed.
             For example,
           </p>
+
 <pre class="programlisting">listen-on { 5.6.7.8; };
 listen-on port 1234 { !1.2.3.4; 1.2/16; };
 </pre>
-<p>
+
+          <p>
             will enable the name server on port 53 for the IP address
             5.6.7.8, and on port 1234 of an address on the machine in net
             1.2 that is not 1.2.3.4.
           </p>
-<p>
+
+          <p>
             If no <span class="command"><strong>listen-on</strong></span> is specified, the
             server will listen on port 53 on all IPv4 interfaces.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>listen-on-v6</strong></span> option is used to
             specify the interfaces and the ports on which the server will
             listen for incoming queries sent using IPv6.  If not specified,
             the server will listen on port 53 on all IPv6 interfaces.
           </p>
-<p>
+
+          <p>
             When </p>
 <pre class="programlisting">{ any; }</pre>
 <p> is
@@ -5211,7 +5523,8 @@ listen-on port 1234 { !1.2.3.4; 1.2/16; };
             If the system only has incomplete API support for IPv6, however,
             the behavior is the same as that for IPv4.
           </p>
-<p>
+
+          <p>
             A list of particular IPv6 addresses can also be specified, in
             which case
             the server listens on a separate socket for each specified
@@ -5220,30 +5533,38 @@ listen-on port 1234 { !1.2.3.4; 1.2/16; };
             IPv4 addresses specified in <span class="command"><strong>listen-on-v6</strong></span>
             will be ignored, with a logged warning.
           </p>
-<p>
+
+          <p>
             Multiple <span class="command"><strong>listen-on-v6</strong></span> options can
             be used.
             For example,
           </p>
+
 <pre class="programlisting">listen-on-v6 { any; };
 listen-on-v6 port 1234 { !2001:db8::/32; any; };
 </pre>
-<p>
+
+          <p>
             will enable the name server on port 53 for any IPv6 addresses
             (with a single wildcard socket),
             and on port 1234 of IPv6 addresses that is not in the prefix
             2001:db8::/32 (with separate sockets for each matched address.)
           </p>
-<p>
+
+          <p>
             To make the server not listen on any IPv6 address, use
           </p>
+
 <pre class="programlisting">listen-on-v6 { none; };
 </pre>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="query_address"></a>Query Address</h4></div></div></div>
-<p>
+
+          <p>
             If the server doesn't know the answer to a question, it will
             query other name servers. <span class="command"><strong>query-source</strong></span> specifies
             the address and port used for such queries. For queries sent over
@@ -5252,7 +5573,8 @@ listen-on-v6 port 1234 { !2001:db8::/32; any; };
             a wildcard IP address (<span class="command"><strong>INADDR_ANY</strong></span>)
             will be used.
           </p>
-<p>
+
+          <p>
             If <span class="command"><strong>port</strong></span> is <span class="command"><strong>*</strong></span> or is omitted,
             a random port number from a pre-configured
             range is picked up and will be used for each query.
@@ -5263,15 +5585,18 @@ listen-on-v6 port 1234 { !2001:db8::/32; any; };
             the <span class="command"><strong>avoid-v4-udp-ports</strong></span>
             and <span class="command"><strong>avoid-v6-udp-ports</strong></span> options, respectively.
           </p>
-<p>
+
+          <p>
             The defaults of the <span class="command"><strong>query-source</strong></span> and
             <span class="command"><strong>query-source-v6</strong></span> options
             are:
           </p>
+
 <pre class="programlisting">query-source address * port *;
 query-source-v6 address * port *;
 </pre>
-<p>
+
+          <p>
             If <span class="command"><strong>use-v4-udp-ports</strong></span> or
             <span class="command"><strong>use-v6-udp-ports</strong></span> is unspecified,
             <span class="command"><strong>named</strong></span> will check if the operating
@@ -5281,10 +5606,12 @@ query-source-v6 address * port *;
             <span class="command"><strong>named</strong></span> will use the corresponding system
             default range; otherwise, it will use its own defaults:
          </p>
+
 <pre class="programlisting">use-v4-udp-ports { range 1024 65535; };
 use-v6-udp-ports { range 1024 65535; };
 </pre>
-<p>
+
+          <p>
             Note: make sure the ranges be sufficiently large for
             security.  A desirable size depends on various parameters,
             but we generally recommend it contain at least 16384 ports
@@ -5300,7 +5627,8 @@ use-v6-udp-ports { range 1024 65535; };
             ranges are sufficiently large and are reasonably
             independent from the ranges used by other applications.
           </p>
-<p>
+
+          <p>
             Note: the operational configuration
             where <span class="command"><strong>named</strong></span> runs may prohibit the use
             of some ports.  For example, UNIX systems will not allow
@@ -5312,15 +5640,18 @@ use-v6-udp-ports { range 1024 65535; };
             It is therefore important to configure the set of ports
             that can be safely used in the expected operational environment.
           </p>
-<p>
+
+          <p>
             The defaults of the <span class="command"><strong>avoid-v4-udp-ports</strong></span> and
             <span class="command"><strong>avoid-v6-udp-ports</strong></span> options
             are:
           </p>
+
 <pre class="programlisting">avoid-v4-udp-ports {};
 avoid-v6-udp-ports {};
 </pre>
-<p>
+
+          <p>
             Note: BIND 9.5.0 introduced
             the <span class="command"><strong>use-queryport-pool</strong></span>
             option to support a pool of such random ports, but this
@@ -5332,57 +5663,67 @@ avoid-v6-udp-ports {};
             <span class="command"><strong>query-source-v6</strong></span> options;
             it implicitly disables the use of randomized port numbers.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>use-queryport-pool</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>queryport-pool-ports</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>queryport-pool-updateinterval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+            <p>
               The address specified in the <span class="command"><strong>query-source</strong></span> option
               is used for both UDP and TCP queries, but the port applies only
               to UDP queries.  TCP queries always use a random
               unprivileged port.
             </p>
-</div>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+          </div>
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+            <p>
               Solaris 2.5.1 and earlier does not support setting the source
               address for TCP sockets.
             </p>
-</div>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+          </div>
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+            <p>
               See also <span class="command"><strong>transfer-source</strong></span> and
               <span class="command"><strong>notify-source</strong></span>.
             </p>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="zone_transfers"></a>Zone Transfers</h4></div></div></div>
-<p>
+
+          <p>
             <acronym class="acronym">BIND</acronym> has mechanisms in place to
             facilitate zone transfers
             and set limits on the amount of load that transfers place on the
             system. The following options apply to zone transfers.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>also-notify</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Defines a global list of IP addresses of name servers
                   that are also sent NOTIFY messages whenever a fresh copy of
                   the
@@ -5400,7 +5741,7 @@ avoid-v6-udp-ports {};
                   In place of explicit addresses, one or more named
                   <span class="command"><strong>masters</strong></span> lists can be used.
                 </p>
-<p>
+                <p>
                   If an <span class="command"><strong>also-notify</strong></span> list
                   is given in a <span class="command"><strong>zone</strong></span> statement,
                   it will override
@@ -5413,37 +5754,46 @@ avoid-v6-udp-ports {};
                   the empty
                   list (no global notification list).
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-time-in</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Inbound zone transfers running longer than
                   this many minutes will be terminated. The default is 120
                   minutes
                   (2 hours).  The maximum value is 28 days (40320 minutes).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-idle-in</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Inbound zone transfers making no progress
                   in this many minutes will be terminated. The default is 60
                   minutes
                   (1 hour).  The maximum value is 28 days (40320 minutes).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-time-out</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Outbound zone transfers running longer than
                   this many minutes will be terminated. The default is 120
                   minutes
                   (2 hours).  The maximum value is 28 days (40320 minutes).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-idle-out</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Outbound zone transfers making no progress
                   in this many minutes will be terminated.  The default is 60
                   minutes (1
                   hour).  The maximum value is 28 days (40320 minutes).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify-rate</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The rate at which NOTIFY requests will be sent
                   during normal zone maintenance operations. (NOTIFY
                   requests due to initial zone loading are subject
@@ -5451,18 +5801,22 @@ avoid-v6-udp-ports {};
                   20 per second.
                   The lowest possible rate is one per second; when set
                   to zero, it will be silently raised to one.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>startup-notify-rate</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The rate at which NOTIFY requests will be sent
                   when the name server is first starting up, or when
                   zones have been newly added to the nameserver.
                   The default is 20 per second.
                   The lowest possible rate is one per second; when set
                   to zero, it will be silently raised to one.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>serial-query-rate</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Slave servers will periodically query master
                   servers to find out if zone serial numbers have
                   changed. Each such query uses a minute amount of
@@ -5474,9 +5828,12 @@ avoid-v6-udp-ports {};
                   per second.  The default is 20 per second.
                   The lowest possible rate is one per second; when set
                   to zero, it will be silently raised to one.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfer-format</strong></span></span></dt>
-<dd><p>
+<dd>
+
+                <p>
                   Zone transfers can be sent using two different formats,
                   <span class="command"><strong>one-answer</strong></span> and
                   <span class="command"><strong>many-answers</strong></span>.
@@ -5496,10 +5853,12 @@ avoid-v6-udp-ports {};
                   <span class="command"><strong>transfer-format</strong></span> may be overridden on a
                   per-server basis by using the <span class="command"><strong>server</strong></span>
                   statement.
-                </p></dd>
+                </p>
+
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfer-message-size</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   This is an upper bound on the uncompressed size of DNS
                   messages used in zone transfers over TCP.  If a message
                   grows larger than this size, additional messages will be
@@ -5509,7 +5868,7 @@ avoid-v6-udp-ports {};
                   fit within the size limit, a larger message will be
                   permitted so the record can be transferred.)
                 </p>
-<p>
+                <p>
                   Valid values are between 512 and 65535 octets, and any
                   values outside that range will be adjusted to the nearest
                   value within it.  The default is <code class="literal">20480</code>,
@@ -5519,30 +5878,35 @@ avoid-v6-udp-ports {};
                   as effectively, because 16536 is the largest permissible
                   compression offset pointer in a DNS message.
                 </p>
-<p>
+                <p>
                   This option is mainly intended for server testing;
                   there is rarely any benefit in setting a value other
                   than the default.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfers-in</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of inbound zone transfers
                   that can be running concurrently. The default value is <code class="literal">10</code>.
                   Increasing <span class="command"><strong>transfers-in</strong></span> may
                   speed up the convergence
                   of slave zones, but it also may increase the load on the
                   local system.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfers-out</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of outbound zone transfers
                   that can be running concurrently. Zone transfer requests in
                   excess
                   of the limit will be refused. The default value is <code class="literal">10</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfers-per-ns</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of inbound zone transfers
                   that can be concurrently transferring from a given remote
                   name server.
@@ -5554,10 +5918,11 @@ avoid-v6-udp-ports {};
                   the load on the remote name server. <span class="command"><strong>transfers-per-ns</strong></span> may
                   be overridden on a per-server basis by using the <span class="command"><strong>transfers</strong></span> phrase
                   of the <span class="command"><strong>server</strong></span> statement.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfer-source</strong></span></span></dt>
 <dd>
-<p><span class="command"><strong>transfer-source</strong></span>
+                <p><span class="command"><strong>transfer-source</strong></span>
                   determines which local address will be bound to IPv4
                   TCP connections used to fetch zones transferred
                   inbound by the server.  It also determines the
@@ -5578,28 +5943,30 @@ avoid-v6-udp-ports {};
                   <span class="command"><strong>zone</strong></span> block in the configuration
                   file.
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+                  <p>
                     Solaris 2.5.1 and earlier does not support setting the
                     source address for TCP sockets.
                   </p>
-</div>
-</dd>
+                </div>
+              </dd>
 <dt><span class="term"><span class="command"><strong>transfer-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The same as <span class="command"><strong>transfer-source</strong></span>,
                   except zone transfers are performed using IPv6.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>alt-transfer-source</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   An alternate transfer source if the one listed in
                   <span class="command"><strong>transfer-source</strong></span> fails and
                   <span class="command"><strong>use-alt-transfer-source</strong></span> is
                   set.
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
                   If you do not wish the alternate transfer source
@@ -5610,24 +5977,28 @@ avoid-v6-udp-ports {};
                   query.
                 </p>
 </div>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>alt-transfer-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   An alternate transfer source if the one listed in
                   <span class="command"><strong>transfer-source-v6</strong></span> fails and
                   <span class="command"><strong>use-alt-transfer-source</strong></span> is
                   set.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>use-alt-transfer-source</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Use the alternate transfer sources or not.  If views are
                   specified this defaults to <span class="command"><strong>no</strong></span>,
                   otherwise it defaults to
                   <span class="command"><strong>yes</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify-source</strong></span></span></dt>
 <dd>
-<p><span class="command"><strong>notify-source</strong></span>
+                <p><span class="command"><strong>notify-source</strong></span>
                   determines which local source address, and
                   optionally UDP port, will be used to send NOTIFY
                   messages.  This address must appear in the slave
@@ -5641,25 +6012,30 @@ avoid-v6-udp-ports {};
                   <span class="command"><strong>view</strong></span> block in the configuration
                   file.
                 </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+                <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+                  <p>
                     Solaris 2.5.1 and earlier does not support setting the
                     source address for TCP sockets.
                   </p>
-</div>
-</dd>
+                </div>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Like <span class="command"><strong>notify-source</strong></span>,
                   but applies to notify messages sent to IPv6 addresses.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="port_lists"></a>UDP Port Lists</h4></div></div></div>
-<p>
+
+          <p>
             <span class="command"><strong>use-v4-udp-ports</strong></span>,
             <span class="command"><strong>avoid-v4-udp-ports</strong></span>,
             <span class="command"><strong>use-v6-udp-ports</strong></span>, and
@@ -5670,17 +6046,20 @@ avoid-v6-udp-ports {};
             available ports are determined.
             For example, with the following configuration
           </p>
+
 <pre class="programlisting">
 use-v6-udp-ports { range 32768 65535; };
 avoid-v6-udp-ports { 40000; range 50000 60000; };
 </pre>
-<p>
+
+           <p>
              UDP ports of IPv6 messages sent
              from <span class="command"><strong>named</strong></span> will be in one
              of the following ranges: 32768 to 39999, 40001 to 49999,
              and 60001 to 65535.
            </p>
-<p>
+
+           <p>
              <span class="command"><strong>avoid-v4-udp-ports</strong></span> and
              <span class="command"><strong>avoid-v6-udp-ports</strong></span> can be used
              to prevent <span class="command"><strong>named</strong></span> from choosing as its random source port a
@@ -5697,11 +6076,13 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
              sense; they are provided for backward compatibility and
              to possibly simplify the port specification.
            </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="resource_limits"></a>Operating System Resource Limits</h4></div></div></div>
-<p>
+
+          <p>
             The server's usage of many system resources can be limited.
             Scaled values are allowed when specifying resource limits.  For
             example, <span class="command"><strong>1G</strong></span> can be used instead of
@@ -5714,7 +6095,8 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             that was in force when the server was started. See the description
             of <span class="command"><strong>size_spec</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#configuration_file_elements" title="Configuration File Elements">the section called &#8220;Configuration File Elements&#8221;</a>.
           </p>
-<p>
+
+          <p>
             The following options set operating system resource limits for
             the name server process.  Some operating systems don't support
             some or
@@ -5722,14 +6104,18 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             the
             unsupported limit is used.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>coresize</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum size of a core dump. The default
                   is <code class="literal">default</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>datasize</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum amount of data memory the server
                   may use. The default is <code class="literal">default</code>.
                   This is a hard limit on server memory usage.
@@ -5744,31 +6130,40 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <span class="command"><strong>max-cache-size</strong></span> and
                   <span class="command"><strong>recursive-clients</strong></span>
                   options instead.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>files</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of files the server
                   may have open concurrently. The default is <code class="literal">unlimited</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>stacksize</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum amount of stack memory the server
                   may use. The default is <code class="literal">default</code>.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="server_resource_limits"></a>Server  Resource Limits</h4></div></div></div>
-<p>
+
+          <p>
             The following options set limits on the server's
             resource consumption that are enforced internally by the
             server rather than the operating system.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>max-journal-size</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets a maximum size for each journal file (see
                   <a class="xref" href="Bv9ARM.ch04.html#journal" title="The journal file">the section called &#8220;The journal file&#8221;</a>), expressed in bytes
                   or, if followed by an optional unit suffix ('k',
@@ -5785,18 +6180,20 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   the zone. (There is little benefit in storing
                   larger journals.)
                 </p>
-<p>
+                <p>
                   This option may also be set on a per-zone basis.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-records</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of records permitted in a zone.
                   The default is zero which means unlimited.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>recursive-clients</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The maximum number ("hard quota") of simultaneous
                   recursive lookups the server will perform on behalf
                   of clients.  The default is
@@ -5807,14 +6204,14 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <span class="command"><strong>recursive-clients</strong></span> option may
                   have to be decreased on hosts with limited memory.
                 </p>
-<p>
+                <p>
                   <code class="option">recursive-clients</code> defines a "hard
                   quota" limit for pending recursive clients: when more
                   clients than this are pending, new incoming requests
                   will not be accepted, and for each incoming request
                   a previous pending request will also be dropped.
                 </p>
-<p>
+                <p>
                   A "soft quota" is also set.  When this lower
                   quota is exceeded, incoming requests are accepted, but
                   for each one, a pending request will be dropped.
@@ -5824,18 +6221,20 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   otherwise it is set to 90% of
                   <code class="option">recursive-clients</code>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-clients</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum number of simultaneous client TCP
                   connections that the server will accept.
                   The default is <code class="literal">150</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt>
 <a name="clients-per-query"></a><span class="term"><a name="cpq_term"></a><span class="command"><strong>clients-per-query</strong></span>, </span><span class="term"><span class="command"><strong>max-clients-per-query</strong></span></span>
 </dt>
 <dd>
-<p>These set the
+                <p>These set the
                   initial value (minimum) and maximum number of recursive
                   simultaneous clients for any given query
                   (&lt;qname,qtype,qclass&gt;) that the server will accept
@@ -5843,7 +6242,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   self tune this value and changes will be logged.  The
                   default values are 10 and 100.
                 </p>
-<p>
+                <p>
                   This value should reflect how many queries come in for
                   a given name in the time it takes to resolve that name.
                   If the number of queries exceed this value, <span class="command"><strong>named</strong></span> will
@@ -5853,22 +6252,22 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   estimate will then be lowered in 20 minutes if it has
                   remained unchanged.
                 </p>
-<p>
+                <p>
                   If <span class="command"><strong>clients-per-query</strong></span> is set to zero,
                   then there is no limit on the number of clients per query
                   and no queries will be dropped.
                 </p>
-<p>
+                <p>
                   If <span class="command"><strong>max-clients-per-query</strong></span> is set to zero,
                   then there is no upper bound other than imposed by
                   <span class="command"><strong>recursive-clients</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt>
 <a name="fetches-per-zone"></a><span class="term"><span class="command"><strong>fetches-per-zone</strong></span></span>
 </dt>
 <dd>
-<p>
+                <p>
                   The maximum number of simultaneous iterative
                   queries to any one domain that the server will
                   permit before blocking new queries for data
@@ -5878,7 +6277,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   would take to resolve them.  It should be smaller
                   than <code class="option">recursive-clients</code>.
                 </p>
-<p>
+                <p>
                   When many clients simultaneously query for the
                   same name and type, the clients will all be attached
                   to the same fetch, up to the
@@ -5890,7 +6289,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <code class="option">max-clients-per-query</code> is not
                   effective as a limit.
                 </p>
-<p>
+                <p>
                   Optionally, this value may be followed by the keyword
                   <code class="literal">drop</code> or <code class="literal">fail</code>,
                   indicating whether queries which exceed the fetch
@@ -5898,12 +6297,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   or answered with SERVFAIL.  The default is
                   <code class="literal">drop</code>.
                 </p>
-<p>
+                <p>
                   If <span class="command"><strong>fetches-per-zone</strong></span> is set to zero,
                   then there is no limit on the number of fetches per query
                   and no queries will be dropped.  The default is zero.
                 </p>
-<p>
+                <p>
                   The current list of active fetches can be dumped by
                   running <span class="command"><strong>rndc recursing</strong></span>.  The list
                   includes the number of active fetches for each
@@ -5916,12 +6315,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   next time a fetch is sent to that domain, it is
                   recreated with the counters set to zero.)
                 </p>
-</dd>
+              </dd>
 <dt>
 <a name="fetches-per-server"></a><span class="term"><span class="command"><strong>fetches-per-server</strong></span></span>
 </dt>
 <dd>
-<p>
+                <p>
                   The maximum number of simultaneous iterative
                   queries that the server will allow to be sent to
                   a single upstream name server before blocking
@@ -5931,7 +6330,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   would take to resolve them.  It should be smaller
                   than <code class="option">recursive-clients</code>.
                 </p>
-<p>
+                <p>
                   Optionally, this value may be followed by the keyword
                   <code class="literal">drop</code> or <code class="literal">fail</code>,
                   indicating whether queries will be dropped with no
@@ -5940,12 +6339,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   exceeded the per-server quota.  The default is
                   <code class="literal">fail</code>.
                 </p>
-<p>
+                <p>
                   If <span class="command"><strong>fetches-per-server</strong></span> is set to zero,
                   then there is no limit on the number of fetches per query
                   and no queries will be dropped.  The default is zero.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>fetches-per-server</strong></span> quota is
                   dynamically adjusted in response to detected
                   congestion. As queries are sent to a server
@@ -5961,15 +6360,15 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   can be used to adjust the parameters for this
                   calculation.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>fetch-quota-params</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the parameters to use for dynamic resizing of
                   the <code class="option">fetches-per-server</code> quota in
                   response to detected congestion.
                 </p>
-<p>
+                <p>
                   The first argument is an integer value indicating
                   how frequently to recalculate the moving average
                   of the ratio of timeouts to responses for each
@@ -5977,7 +6376,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   the average ratio after every 100 queries have either
                   been answered or timed out.
                 </p>
-<p>
+                <p>
                   The remaining three arguments represent the "low"
                   threshold (defaulting to a timeout ratio of 0.1),
                   the "high" threshold (defaulting to a timeout
@@ -5992,10 +6391,10 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   precision of 1/100: at most two places after
                   the decimal point are significant.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>reserved-sockets</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The number of file descriptors reserved for TCP, stdio,
                   etc.  This needs to be big enough to cover the number of
                   interfaces <span class="command"><strong>named</strong></span> listens on plus
@@ -6006,12 +6405,13 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   maximum value is <code class="literal">128</code> less than
                   maxsockets (-S).  This option may be removed in the future.
                 </p>
-<p>
+                <p>
                   This option has little effect on Windows.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-cache-size</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum amount of memory to use for the
                   server's cache, in bytes or % of total physical memory.
                   When the amount of data in the cache
@@ -6034,9 +6434,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   once at startup, so <span class="command"><strong>named</strong></span> will not
                   adjust the cache size if the amount of physical memory
                   is changed during runtime.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-listen-queue</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The listen queue depth.  The default and minimum is 10.
                   If the kernel supports the accept filter "dataready" this
                   also controls how
@@ -6046,9 +6448,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   less than 10 will be silently raised. A value of 0 may also
                   be used; on most platforms this sets the listen queue
                   length to a system-defined default value.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-initial-timeout</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The amount of time (in units of 100 milliseconds) the
                   server waits on a new TCP connection for the first message
                   from the client. The default is 300 (30 seconds),
@@ -6060,9 +6464,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   have enough time to submit a message.)
                   This value can be updated at runtime by using
                   <span class="command"><strong>rndc tcp-timeouts</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-idle-timeout</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The amount of time (in units of 100 milliseconds) the
                   server waits on an idle TCP connection before closing
                   it when the client is not using the EDNS TCP keepalive
@@ -6074,9 +6480,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   for clients using the EDNS TCP keepalive option.
                   This value can be updated at runtime by using
                   <span class="command"><strong>rndc tcp-timeouts</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-keepalive-timeout</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The amount of time (in units of 100 milliseconds) the
                   server waits on an idle TCP connection before closing
                   it when the client is using the EDNS TCP keepalive
@@ -6090,9 +6498,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   to use TCP connections for more than one message.
                   This value can be updated at runtime by using
                   <span class="command"><strong>rndc tcp-timeouts</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>tcp-advertised-timeout</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The timeout value (in units of 100 milliseconds) the
                   server will send in respones containing the EDNS TCP
                   keepalive option. This informs a client of the
@@ -6104,19 +6514,26 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   same value as <span class="command"><strong>tcp-keepalive-timeout</strong></span>.
                   This value can be updated at runtime by using
                   <span class="command"><strong>rndc tcp-timeouts</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="intervals"></a>Periodic Task Intervals</h4></div></div></div>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>cleaning-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This option is obsolete.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>heartbeat-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The server will perform zone maintenance tasks
                   for all zones marked as <span class="command"><strong>dialup</strong></span> whenever this
                   interval expires. The default is 60 minutes. Reasonable
@@ -6124,9 +6541,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   to 1 day (1440 minutes).  The maximum value is 28 days
                   (40320 minutes).
                   If set to 0, no zone maintenance for these zones will occur.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>interface-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The server will scan the network interface list
                   every <span class="command"><strong>interface-interval</strong></span>
                   minutes. The default
@@ -6142,13 +6561,17 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   For convenience, TTL-style time unit suffixes may be
                   used to specify the value.  It also accepts ISO 8601
                   duration formats.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="the_sortlist_statement"></a>The <span class="command"><strong>sortlist</strong></span> Statement</h4></div></div></div>
-<p>
+
+          <p>
             The response to a DNS query may consist of multiple resource
             records (RRs) forming a resource record set (RRset).  The name
             server will normally return the RRs within the RRset in an
@@ -6162,7 +6585,8 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             client's address. This only requires configuring the name
             servers, not all the clients.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>sortlist</strong></span> statement (see below) takes an
             <span class="command"><strong>address_match_list</strong></span> and interprets it in a
             special way.  Each top level statement in the
@@ -6174,7 +6598,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             the query until a match is found. When the addresses in the
             first element overlap, the first rule to match gets selected.
           </p>
-<p>
+          <p>
             Once the source address of the query has been matched, if the
             top level statement contains only one element, the actual
             primitive element that matched the source address is used to
@@ -6185,7 +6609,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             address in the response with the minimum distance is moved to
             the beginning of the response.
           </p>
-<p>
+          <p>
             In the following example, any queries received from any of the
             addresses of the host itself will get responses preferring
             addresses on any of the locally connected networks. Next most
@@ -6198,6 +6622,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             the 192.168.5/24 network will only prefer other addresses on
             their directly connected networks.
           </p>
+
 <pre class="programlisting">sortlist {
     // IF the local host
     // THEN first fit on the following nets
@@ -6221,7 +6646,8 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
     { { 192.168.4/24; 192.168.5/24; };
     };
 };</pre>
-<p>
+
+          <p>
             The following example will give reasonable behavior for the
             local host and hosts on directly connected networks. It is
             similar to the behavior of the address sort in
@@ -6231,16 +6657,19 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             directly connected network will prefer addresses on that same
             network.  Responses to other queries will not be sorted.
           </p>
+
 <pre class="programlisting">sortlist {
            { localhost; localnets; };
            { localnets; };
 };
 </pre>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="rrset_ordering"></a>RRset Ordering</h4></div></div></div>
-<p>
+
+          <p>
             When multiple records are returned in an answer it may be
             useful to configure the order of the records placed into the
             response.  The <span class="command"><strong>rrset-order</strong></span> statement permits
@@ -6249,24 +6678,25 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             See also the <span class="command"><strong>sortlist</strong></span> statement,
             <a class="xref" href="Bv9ARM.ch05.html#the_sortlist_statement" title="The sortlist Statement">the section called &#8220;The <span class="command"><strong>sortlist</strong></span> Statement&#8221;</a>.
           </p>
-<p>
+          <p>
             An <span class="command"><strong>order_spec</strong></span> is defined as follows:
           </p>
-<p>
+          <p>
             [<span class="optional">class <em class="replaceable"><code>class_name</code></em></span>]
             [<span class="optional">type <em class="replaceable"><code>type_name</code></em></span>]
             [<span class="optional">name <em class="replaceable"><code>"domain_name"</code></em></span>]
             order <em class="replaceable"><code>ordering</code></em>
           </p>
-<p>
+          <p>
             If no class is specified, the default is <span class="command"><strong>ANY</strong></span>.
             If no type is specified, the default is <span class="command"><strong>ANY</strong></span>.
             If no name is specified, the default is "<span class="command"><strong>*</strong></span>" (asterisk).
           </p>
-<p>
+          <p>
             The legal values for <span class="command"><strong>ordering</strong></span> are:
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="0.750in" class="1">
 <col width="3.750in" class="2">
@@ -6329,10 +6759,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+          </div>
+          <p>
           </p>
-<p>
+          <p>
             For example:
           </p>
 <pre class="programlisting">rrset-order {
@@ -6340,46 +6771,52 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
    order cyclic;
 };
 </pre>
-<p>
+          <p>
             will cause any responses for type A records in class IN that
             have "<code class="literal">host.example.com</code>" as a
             suffix, to always be returned
             in random order. All other records are returned in cyclic order.
           </p>
-<p>
+          <p>
             If multiple <span class="command"><strong>rrset-order</strong></span> statements
             appear, they are not combined &#8212; the last one applies.
           </p>
-<p>
+          <p>
             By default, records are returned in <span class="command"><strong>random</strong></span> order.
           </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+            <p>
               In this release of <acronym class="acronym">BIND</acronym> 9, the
               <span class="command"><strong>rrset-order</strong></span> statement does not support
               "fixed" ordering by default.  Fixed ordering can be enabled
               at compile time by specifying "--enable-fixed-rrset" on
               the "configure" command line.
             </p>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="tuning"></a>Tuning</h4></div></div></div>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>lame-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Sets the number of seconds to cache a
                   lame server indication. 0 disables caching. (This is
                   <span class="bold"><strong>NOT</strong></span> recommended.)
                   The default is <code class="literal">600</code> (10 minutes) and the
                   maximum value is
                   <code class="literal">1800</code> (30 minutes).
-                </p></dd>
+                </p>
+
+              </dd>
 <dt><span class="term"><span class="command"><strong>servfail-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the number of seconds to cache a
                   SERVFAIL response due to DNSSEC validation failure or
                   other general server failure.  If set to
@@ -6389,16 +6826,16 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   query that failed due to DNSSEC validation to be retried
                   without waiting for the SERVFAIL TTL to expire.
                 </p>
-<p>
+                <p>
                   The maximum value is <code class="literal">30</code>
                   seconds; any higher value will be silently
                   reduced. The default is <code class="literal">1</code>
                   second.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>min-ncache-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   To reduce network traffic and increase performance, the server
                   stores negative answers. <span class="command"><strong>min-ncache-ttl</strong></span> is
                   used to set a minimum retention time for these answers in the
@@ -6406,33 +6843,33 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   suffixes may be used to specify the value.  It also
                   accepts ISO 8601 duration formats.
                 </p>
-<p>
+                <p>
                   The default <span class="command"><strong>min-ncache-ttl</strong></span> is
                   <code class="literal">0</code> seconds.
                   <span class="command"><strong>min-ncache-ttl</strong></span> cannot exceed 90
                   seconds and will be truncated to 90 seconds if set to a
                   greater value.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>min-cache-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the minimum time for which the server will cache ordinary
                   (positive) answers in seconds.  For convenience, TTL-style
                   time unit suffixes may be used to specify the value.  It also
                   accepts ISO 8601 duration formats.
                 </p>
-<p>
+                <p>
                   The default <span class="command"><strong>min-cache-ttl</strong></span> is
                   <code class="literal">0</code> seconds.
                   <span class="command"><strong>min-cache-ttl</strong></span> cannot exceed 90
                   seconds and will be truncated to 90 seconds if set to a
                   greater value.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-ncache-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   To reduce network traffic and increase performance,
                   the server stores negative answers.
                   <span class="command"><strong>max-ncache-ttl</strong></span> is
@@ -6441,34 +6878,34 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   suffixes may be used to specify the value.  It also accepts
                   ISO 8601 duration formats.
                 </p>
-<p>
+                <p>
                   The default <span class="command"><strong>max-ncache-ttl</strong></span> is
                   <code class="literal">10800</code> seconds (3 hours).
                   <span class="command"><strong>max-ncache-ttl</strong></span> cannot exceed 7 days and
                   will be silently truncated to 7 days if set to a greater
                   value.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-cache-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the maximum time for which the server will
                   cache ordinary (positive) answers in seconds.
                   For convenience, TTL-style time unit suffixes may be
                   used to specify the value.  It also accepts ISO 8601
                   duration formats.
                 </p>
-<p>
+                <p>
                   The default is 604800 (one week).
                   A value of zero may cause all queries to return
                   SERVFAIL, because of lost caches of intermediate
                   RRsets (such as NS and glue AAAA/A records) in the
                   resolution process.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-stale-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   If stale answers are enabled,
                   <span class="command"><strong>max-stale-ttl</strong></span>
                   sets the maximum time for which the server will
@@ -6479,26 +6916,30 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   1 second; a value of 0 will be updated silently
                   to 1 second.
                 </p>
-<p>
+                <p>
                   For stale answers to be returned, they must be enabled,
                   either in the configuration file using
                   <span class="command"><strong>stale-answer-enable</strong></span> or via
                   <span class="command"><strong>rndc serve-stale on</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>resolver-nonbackoff-tries</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies how many retries occur before exponential
                   backoff kicks in.  The default is <strong class="userinput"><code>3</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>resolver-retry-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The base retry interval in milliseconds.
                   The default is <strong class="userinput"><code>800</code></strong>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>sig-validity-interval</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specifies the number of days into the future when
                   DNSSEC signatures automatically generated as a
                   result of dynamic updates (<a class="xref" href="Bv9ARM.ch04.html#dynamic_update" title="Dynamic Update">the section called &#8220;Dynamic Update&#8221;</a>) will expire.  There
@@ -6512,25 +6953,26 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   giving a re-signing interval of 7 1/2 days.  The maximum
                   values are 10 years (3660 days).
                 </p>
-<p>
+                <p>
                   The signature inception time is unconditionally
                   set to one hour before the current time to allow
                   for a limited amount of clock skew.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>sig-validity-interval</strong></span> can be
                   overridden for DNSKEY records by setting
                   <span class="command"><strong>dnskey-sig-validity</strong></span>.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>sig-validity-interval</strong></span>
                   should be, at least, several multiples of the SOA
                   expire interval to allow for reasonable interaction
                   between the various timer and expiry dates.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>dnskey-sig-validity</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specifies the number of days into the future when
                   DNSSEC signatures that are automatically generated
                   for DNSKEY RRsets as a result of dynamic updates
@@ -6541,33 +6983,38 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <span class="command"><strong>sig-validity-interval</strong></span> is used.
                   The maximum value is 3660 days (10 years), and
                   higher values will be rejected.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-nodes</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specify the maximum number of nodes to be
                   examined in each quantum when signing a zone with
                   a new DNSKEY. The default is
                   <code class="literal">100</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-signatures</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specify a threshold number of signatures that
                   will terminate processing a quantum when signing
                   a zone with a new DNSKEY.  The default is
                   <code class="literal">10</code>.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-type</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specify a private RDATA type to be used when generating
                   signing state records.  The default is
                   <code class="literal">65534</code>.
                 </p>
-<p>
+                <p>
                   It is expected that this parameter may be removed
                   in a future version once there is a standard type.
                 </p>
-<p>
+                <p>
                   Signing state records are used to internally by
                   <span class="command"><strong>named</strong></span> to track the current state of
                   a zone-signing process, i.e., whether it is still active
@@ -6583,12 +7030,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   records for a zone, use
                   <span class="command"><strong>rndc signing -clear all <em class="replaceable"><code>zone</code></em></strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt>
 <span class="term"><span class="command"><strong>min-refresh-time</strong></span>, </span><span class="term"><span class="command"><strong>max-refresh-time</strong></span>, </span><span class="term"><span class="command"><strong>min-retry-time</strong></span>, </span><span class="term"><span class="command"><strong>max-retry-time</strong></span></span>
 </dt>
 <dd>
-<p>
+                <p>
                   These options control the server's behavior on refreshing a
                   zone (querying for SOA changes) or retrying failed
                   transfers.  Usually the SOA values for the zone are used,
@@ -6596,14 +7043,14 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   these values are set by the master, giving slave server
                   administrators little control over their contents.
                 </p>
-<p>
+                <p>
                   These options allow the administrator to set a minimum and
                   maximum refresh and retry time in seconds per-zone,
                   per-view, or globally.  These options are valid for
                   slave and stub zones, and clamp the SOA refresh and
                   retry times to the specified values.
                 </p>
-<p>
+                <p>
                   The following defaults apply.
                   <span class="command"><strong>min-refresh-time</strong></span> 300 seconds,
                   <span class="command"><strong>max-refresh-time</strong></span> 2419200 seconds
@@ -6611,10 +7058,10 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   and <span class="command"><strong>max-retry-time</strong></span> 1209600 seconds
                   (2 weeks).
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>edns-udp-size</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the maximum advertised EDNS UDP buffer size in
                   bytes, to control the size of packets received from
                   authoritative servers in response to recursive queries.
@@ -6622,19 +7069,19 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   will be silently adjusted to the nearest value within
                   it).  The default value is 4096.
                 </p>
-<p>
+                <p>
                   The usual reason for setting
                   <span class="command"><strong>edns-udp-size</strong></span> to a non-default value
                   is to get UDP answers to pass through broken firewalls
                   that block fragmented packets and/or block UDP DNS
                   packets that are greater than 512 bytes.
                 </p>
-<p>
+                <p>
                   When <span class="command"><strong>named</strong></span> first queries a remote
                   server, it will advertise a UDP buffer size of 512, as
                   this has the greatest chance of success on the first try.
                 </p>
-<p>
+                <p>
                   If the initial query is successful with
                   EDNS advertising a buffer size of 512, then
                   <span class="command"><strong>named</strong></span> will advertise progressively
@@ -6642,7 +7089,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   responses begin timing out or
                   <span class="command"><strong>edns-udp-size</strong></span> is reached.
                 </p>
-<p>
+                <p>
                   The default buffer sizes used by <span class="command"><strong>named</strong></span>
                   are 512, 1232, 1432, and 4096, but never exceeding
                   <span class="command"><strong>edns-udp-size</strong></span>.  (The values 1232 and
@@ -6650,22 +7097,22 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   UDP message to be sent without fragmentation at the
                   minimum MTU sizes for Ethernet and IPv6 networks.)
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-udp-size</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Sets the maximum EDNS UDP message size
                   <span class="command"><strong>named</strong></span> will send in bytes.
                   Valid values are 512 to 4096 (values outside this
                   range will be silently adjusted to the nearest
                   value within it).  The default value is 4096.
                 </p>
-<p>
+                <p>
                   This value applies to responses sent by a server; to
                   set the advertised buffer size in queries, see
                   <span class="command"><strong>edns-udp-size</strong></span>.
                 </p>
-<p>
+                <p>
                   The usual reason for setting
                   <span class="command"><strong>max-udp-size</strong></span> to a non-default
                   value is to get UDP answers to pass through broken
@@ -6674,14 +7121,14 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   This is independent of the advertised receive
                   buffer (<span class="command"><strong>edns-udp-size</strong></span>).
                 </p>
-<p>
+                <p>
                   Setting this to a low value will encourage additional
                   TCP traffic to the nameserver.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>masterfile-format</strong></span></span></dt>
 <dd>
-<p>Specifies
+                <p>Specifies
                   the file format of zone files (see
                   <a class="xref" href="Bv9ARM.ch05.html#zonefile_format" title="Additional File Formats">the section called &#8220;Additional File Formats&#8221;</a>).
                   The default value is <code class="constant">text</code>, which is the
@@ -6692,7 +7139,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <span class="command"><strong>named-compilezone</strong></span> tool, or dumped by
                   <span class="command"><strong>named</strong></span>.
                 </p>
-<p>
+                <p>
                   Note that when a zone file in a different format than
                   <code class="constant">text</code> is loaded, <span class="command"><strong>named</strong></span>
                   may omit some of the checks which would be performed for a
@@ -6706,7 +7153,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   loaded directly into memory via memory mapping, with only
                   minimal checking.
                 </p>
-<p>
+                <p>
                   This statement sets the
                   <span class="command"><strong>masterfile-format</strong></span> for all zones,
                   but can be overridden on a per-zone or per-view basis
@@ -6715,16 +7162,16 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   <span class="command"><strong>view</strong></span> block in the configuration
                   file.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>masterfile-style</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Specifies the formatting of zone files during dump
                   when the <code class="option">masterfile-format</code> is
                   <code class="constant">text</code>. (This option is ignored
                   with any other <code class="option">masterfile-format</code>.)
                 </p>
-<p>
+                <p>
                   When set to <code class="constant">relative</code>,
                   records are printed in a multi-line format with owner
                   names expressed relative to a shared origin.  When set
@@ -6737,11 +7184,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   zone is to be edited by hand.  The default is
                   <code class="constant">relative</code>.
                 </p>
-</dd>
+              </dd>
 <dt>
 <a name="max-recursion-depth"></a><span class="term"><span class="command"><strong>max-recursion-depth</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                <p>
                   Sets the maximum number of levels of recursion
                   that are permitted at any one time while servicing
                   a recursive query. Resolving a name may require
@@ -6750,11 +7198,13 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   of indirections exceeds this value, the recursive
                   query is terminated and returns SERVFAIL.  The
                   default is 7.
-                </p></dd>
+                </p>
+              </dd>
 <dt>
 <a name="max-recursion-queries"></a><span class="term"><span class="command"><strong>max-recursion-queries</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                <p>
                   Sets the maximum number of iterative queries that
                   may be sent while servicing a recursive query.
                   If more queries are sent, the recursive query
@@ -6762,35 +7212,38 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   look up top level domains such as "com" and "net"
                   and the DNS root zone are exempt from this limitation.
                   The default is 75.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>notify-delay</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The delay, in seconds, between sending sets of notify
                   messages for a zone.  The default is five (5) seconds.
                 </p>
-<p>
+                <p>
                   The overall rate that NOTIFY messages are sent for all
                   zones is controlled by <span class="command"><strong>serial-query-rate</strong></span>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-rsa-exponent-size</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The maximum RSA exponent size, in bits, that will
                   be accepted when validating.  Valid values are 35
                   to 4096 bits.  The default zero (0) is also accepted
                   and is equivalent to 4096.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>prefetch</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   When a query is received for cached data which
                   is to expire shortly, <span class="command"><strong>named</strong></span> can
                   refresh the data from the authoritative server
                   immediately, ensuring that the cache always has an
                   answer available.
                 </p>
-<p>
+                <p>
                   The <code class="option">prefetch</code> specifies the
                   "trigger" TTL value at which prefetch of the current
                   query will take place: when a cache record with a
@@ -6802,7 +7255,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   prefetch to be disabled.
                   The default trigger TTL is <code class="literal">2</code>.
                 </p>
-<p>
+                <p>
                   An optional second argument specifies the "eligibility"
                   TTL: the smallest <span class="emphasis"><em>original</em></span>
                   TTL value that will be accepted for a record to be
@@ -6812,19 +7265,24 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   adjust it upward.
                   The default eligibility TTL is <code class="literal">9</code>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>v6-bias</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   When determining the next nameserver to try
                   preference IPv6 nameservers by this many milliseconds.
                   The default is <code class="literal">50</code> milliseconds.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="builtin"></a>Built-in server information zones</h4></div></div></div>
-<p>
+
+          <p>
             The server provides some helpful diagnostic information
             through a number of built-in zones under the
             pseudo-top-level-domain <code class="literal">bind</code> in the
@@ -6843,17 +7301,18 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             <span class="command"><strong>rate-limit</strong></span> is set to allow
             three responses per second.
           </p>
-<p>
+          <p>
             If you need to disable these zones, use the options
             below, or hide the built-in <span class="command"><strong>CHAOS</strong></span>
             view by
             defining an explicit view of class <span class="command"><strong>CHAOS</strong></span>
             that matches all clients.
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>version</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   The version the server should report
                   via a query of the name <code class="literal">version.bind</code>
                   with type <span class="command"><strong>TXT</strong></span>, class <span class="command"><strong>CHAOS</strong></span>.
@@ -6861,14 +7320,15 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   Specifying <span class="command"><strong>version none</strong></span>
                   disables processing of the queries.
                 </p>
-<p>
+                <p>
                   Setting <span class="command"><strong>version</strong></span> to any value
                   (including <code class="literal">none</code>) will also
                   disable queries for <code class="literal">authors.bind TXT CH</code>.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>hostname</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The hostname the server should report via a query of
                   the name <code class="filename">hostname.bind</code>
                   with type <span class="command"><strong>TXT</strong></span>, class <span class="command"><strong>CHAOS</strong></span>.
@@ -6879,9 +7339,11 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   identify which of a group of anycast servers is actually
                   answering your queries.  Specifying <span class="command"><strong>hostname none;</strong></span>
                   disables processing of the queries.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>server-id</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The ID the server should report when receiving a Name
                   Server Identifier (NSID) query, or a query of the name
                   <code class="filename">ID.SERVER</code> with type
@@ -6893,13 +7355,17 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
                   Specifying <span class="command"><strong>server-id hostname;</strong></span> will cause <span class="command"><strong>named</strong></span> to
                   use the hostname as found by the gethostname() function.
                   The default <span class="command"><strong>server-id</strong></span> is <span class="command"><strong>none</strong></span>.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="empty"></a>Built-in Empty Zones</h4></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>named</strong></span> server has some built-in
             empty zones (SOA and NS records only).
             These are for zones that should normally be answered locally
@@ -6912,13 +7378,13 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             IPv6 link local addresses, the IPv6 loopback address and the
             IPv6 unknown address.
           </p>
-<p>
+          <p>
             The server will attempt to determine if a built-in zone
             already exists or is active (covered by a forward-only
             forwarding declaration) and will not create an empty
             zone in that case.
           </p>
-<p>
+          <p>
             The current list of empty zones is:
             </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@@ -7024,7 +7490,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
 </ul></div>
 <p>
           </p>
-<p>
+          <p>
             Empty zones are settable at the view level and only apply to
             views of class IN.  Disabled empty zones are only inherited
             from options if there are no disabled empty zones specified
@@ -7036,7 +7502,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
 </pre>
 <p>
           </p>
-<p>
+          <p>
             If you are using the address ranges covered here, you should
             already have reverse zones covering the addresses you use.
             In practice this appears to not be the case with many queries
@@ -7045,7 +7511,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             to be deployed to channel the query load away from the
             infrastructure servers.
           </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
 <p>
             The real parent servers for these zones should disable all
@@ -7054,35 +7520,45 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             enable them to return referrals to deeper in the tree.
           </p>
 </div>
-<div class="variablelist"><dl class="variablelist">
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>empty-server</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specify what server name will appear in the returned
                   SOA record for empty zones.  If none is specified, then
                   the zone's name will be used.
-                </p></dd>
+                </p>
+               </dd>
 <dt><span class="term"><span class="command"><strong>empty-contact</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Specify what contact name will appear in the returned
                   SOA record for empty zones.  If none is specified, then
                   "." will be used.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>empty-zones-enable</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Enable or disable all empty zones.  By default, they
                   are enabled.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>disable-empty-zone</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Disable individual empty zones.  By default, none are
                   disabled.  This option can be specified multiple times.
-                </p></dd>
+                </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="content_filtering"></a>Content Filtering</h4></div></div></div>
-<p>
+
+          <p>
             <acronym class="acronym">BIND</acronym> 9 provides the ability to filter
             out DNS responses from external DNS servers containing
             certain types of data in the answer section.
@@ -7108,10 +7584,12 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             <span class="command"><strong>deny-answer-aliases</strong></span>,
           </p>
 <pre class="programlisting">www.example.com. CNAME xxx.example.com.</pre>
-<p>
+
+          <p>
             returned by an "example.com" server will be accepted.
           </p>
-<p>
+
+          <p>
             In the <code class="varname">address_match_list</code> of the
             <span class="command"><strong>deny-answer-addresses</strong></span> option, only
             <code class="varname">ip_addr</code>
@@ -7119,12 +7597,14 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             are meaningful;
             any <code class="varname">key_id</code> will be silently ignored.
           </p>
-<p>
+
+          <p>
             If a response message is rejected due to the filtering,
             the entire message is discarded without being cached, and
             a SERVFAIL error will be returned to the client.
           </p>
-<p>
+
+          <p>
             This filtering is intended to prevent "DNS rebinding attacks," in
             which an attacker, in response to a query for a domain name the
             attacker controls, returns an IP address within your own network or
@@ -7139,39 +7619,48 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
             </a>
             for more details about the attacks.
           </p>
-<p>
+
+          <p>
             For example, if you own a domain named "example.net" and
             your internal network uses an IPv4 prefix 192.0.2.0/24,
             you might specify the following rules:
           </p>
+
 <pre class="programlisting">deny-answer-addresses { 192.0.2.0/24; } except-from { "example.net"; };
 deny-answer-aliases { "example.net"; };
 </pre>
-<p>
+
+          <p>
             If an external attacker lets a web browser in your local
             network look up an IPv4 address of "attacker.example.com",
             the attacker's DNS server would return a response like this:
           </p>
+
 <pre class="programlisting">attacker.example.com. A 192.0.2.1</pre>
-<p>
+
+          <p>
             in the answer section.
             Since the rdata of this record (the IPv4 address) matches
             the specified prefix 192.0.2.0/24, this response will be
             ignored.
           </p>
-<p>
+
+          <p>
             On the other hand, if the browser looks up a legitimate
             internal web server "www.example.net" and the
             following response is returned to
             the <acronym class="acronym">BIND</acronym> 9 server
           </p>
+
 <pre class="programlisting">www.example.net. A 192.0.2.2</pre>
-<p>
+
+          <p>
             it will be accepted since the owner name "www.example.net"
             matches the <span class="command"><strong>except-from</strong></span> element,
             "example.net".
           </p>
-<p>
+
+          <p>
             Note that this is not really an attack on the DNS per se.
             In fact, there is nothing wrong for an "external" name to
             be mapped to your "internal" IP address or domain name
@@ -7192,7 +7681,8 @@ deny-answer-aliases { "example.net"; };
             very sure you have no other choice and the attack is a
             real threat for your applications.
           </p>
-<p>
+
+          <p>
             Care should be particularly taken if you want to use this
             option for addresses within 127.0.0.0/8.
             These addresses are obviously "internal", but many
@@ -7201,11 +7691,13 @@ deny-answer-aliases { "example.net"; };
             Filtering out DNS records containing this address
             spuriously can break such applications.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="rpz"></a>Response Policy Zone (RPZ) Rewriting</h4></div></div></div>
-<p>
+
+          <p>
             <acronym class="acronym">BIND</acronym> 9 includes a limited
             mechanism to modify DNS responses for requests
             analogous to email anti-spam DNS blacklists.
@@ -7213,7 +7705,8 @@ deny-answer-aliases { "example.net"; };
             deny the existence of IP addresses for domains (NODATA),
             or contain other IP addresses or data.
           </p>
-<p>
+
+          <p>
             Response policy zones are named in the
             <span class="command"><strong>response-policy</strong></span> option for the view or among the
             global options if there is no response-policy option for the view.
@@ -7224,7 +7717,8 @@ deny-answer-aliases { "example.net"; };
             Note that zones using <span class="command"><strong>masterfile-format map</strong></span>
             cannot be used as policy zones.
           </p>
-<p>
+
+          <p>
             A <span class="command"><strong>response-policy</strong></span> option can support
             multiple policy zones.  To maximize performance, a radix
             tree is used to quickly identify response policy zones
@@ -7233,20 +7727,22 @@ deny-answer-aliases { "example.net"; };
             in a single <span class="command"><strong>response-policy</strong></span> option; more
             than that is a configuration error.
           </p>
-<p>
+
+          <p>
             Rules encoded in response policy zones are processed after
             <a class="link" href="Bv9ARM.ch05.html#access_control" title="Access Control">Access Control Lists
             (ACLs)</a>.  All queries from clients which are not
             permitted access to the resolver will be answered with a
             status code of REFUSED, regardless of configured RPZ rules.
           </p>
-<p>
+
+          <p>
             Five policy triggers can be encoded in RPZ records.
             </p>
 <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>RPZ-CLIENT-IP</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     IP records are triggered by the IP address of the
                     DNS client.
                     Client IP address triggers are encoded in records that have
@@ -7261,7 +7757,8 @@ deny-answer-aliases { "example.net"; };
                     B4 is the decimal value of the least significant byte of the
                     IPv4 address as in IN-ADDR.ARPA.
                   </p>
-<p>
+
+                  <p>
                     IPv6 addresses are encoded in a format similar
                     to the standard IPv6 text representation,
                     <strong class="userinput"><code>prefixlength.W8.W7.W6.W5.W4.W3.W2.W1.rpz-client-ip</code></strong>.
@@ -7277,24 +7774,29 @@ deny-answer-aliases { "example.net"; };
                     encodings.
                     The IPv6 prefix length must be between 1 and 128.
                   </p>
-</dd>
+                </dd>
 <dt><span class="term"><span class="command"><strong>QNAME</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     QNAME policy records are triggered by query names of
                     requests and targets of CNAME records resolved to generate
                     the response.
                     The owner name of a QNAME policy record is
                     the query name relativized to the policy zone.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>RPZ-IP</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     IP triggers are IP addresses in an
                     A or AAAA record in the ANSWER section of a response.
                     They are encoded like client-IP triggers except as
                     subdomains of <span class="command"><strong>rpz-ip</strong></span>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>RPZ-NSDNAME</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     NSDNAME triggers match names of authoritative servers
                     for the query name, a parent of the query name, a CNAME for
                     query name, or a parent of a CNAME.
@@ -7307,10 +7809,11 @@ deny-answer-aliases { "example.net"; };
                     The <span class="command"><strong>nsdname-enable</strong></span> phrase turns NSDNAME
                     triggers off or on for a single policy zone or all
                     zones.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>RPZ-NSIP</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     NSIP triggers match the IP addresses of authoritative
                     servers.  They are enncoded like IP triggers, except as
                     subdomains of <span class="command"><strong>rpz-nsip</strong></span>.
@@ -7322,7 +7825,7 @@ deny-answer-aliases { "example.net"; };
                     triggers off or on for a single policy zone or all
                     zones.
                   </p>
-<p>
+                  <p>
                     If a name server's IP address is not yet known,
                     <span class="command"><strong>named</strong></span> will recursively look up
                     the IP address before applying an RPZ-NSIP rule.
@@ -7341,11 +7844,12 @@ deny-answer-aliases { "example.net"; };
                     rules should always be applied even if an
                     address needs to be looked up first.
                   </p>
-</dd>
+                </dd>
 </dl></div>
 <p>
           </p>
-<p>
+
+          <p>
             The query response is checked against all response policy zones,
             so two or more policy records can be triggered by a response.
             Because DNS responses are rewritten according to at most one
@@ -7374,14 +7878,16 @@ deny-answer-aliases { "example.net"; };
 </ol></div>
 <p>
           </p>
-<p>
+
+          <p>
             When the processing of a response is restarted to resolve
             DNAME or CNAME records and a policy record set has
             not been triggered,
             all response policy zones are again consulted for the
             DNAME or CNAME names and addresses.
           </p>
-<p>
+
+          <p>
             RPZ record sets are any types of DNS record except
             DNAME or DNSSEC that encode actions or responses to
             individual queries.
@@ -7393,48 +7899,59 @@ deny-answer-aliases { "example.net"; };
             </p>
 <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>PASSTHRU</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The whitelist policy is specified
                     by a CNAME whose target is <span class="command"><strong>rpz-passthru</strong></span>.
                     It causes the response to not be rewritten
                     and is most often used to "poke holes" in policies for
                     CIDR blocks.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>DROP</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The blacklist policy is specified
                     by a CNAME whose target is <span class="command"><strong>rpz-drop</strong></span>.
                     It causes the response to be discarded.
                     Nothing is sent to the DNS client.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>TCP-Only</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The "slip" policy is specified
                     by a CNAME whose target is <span class="command"><strong>rpz-tcp-only</strong></span>.
                     It changes UDP responses to short, truncated DNS responses
                     that require the DNS client to try again with TCP.
                     It is used to mitigate distributed DNS reflection attacks.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>NXDOMAIN</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The domain undefined response is encoded
                     by a CNAME whose target is the root domain (.)
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>NODATA</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The empty set of resource records is specified by
                     CNAME whose target is the wildcard top-level
                     domain (*.).
                     It rewrites the response to NODATA or ANCOUNT=0.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>Local Data</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     A set of ordinary DNS records can be used to answer queries.
                     Queries for record types not the set are answered with
                     NODATA.
                   </p>
-<p>
+
+                  <p>
                     A special form of local data is a CNAME whose target is a
                     wildcard such as *.example.com.
                     It is used as if were an ordinary CNAME after the asterisk (*)
@@ -7442,11 +7959,12 @@ deny-answer-aliases { "example.net"; };
                     The purpose for this special form is query logging in the
                     walled garden's authority DNS server.
                   </p>
-</dd>
+                </dd>
 </dl></div>
 <p>
           </p>
-<p>
+
+          <p>
             All of the actions specified in all of the individual records
             in a policy zone
             can be overridden with a <span class="command"><strong>policy</strong></span> clause in the
@@ -7457,11 +7975,14 @@ deny-answer-aliases { "example.net"; };
             </p>
 <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>GIVEN</strong></span></span></dt>
-<dd><p>The placeholder policy says "do not override but
+<dd>
+                  <p>The placeholder policy says "do not override but
                     perform the action specified in the zone."
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>DISABLED</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     The testing override policy causes policy zone records to do
                     nothing but log what they would have done if the
                     policy zone were not disabled.
@@ -7471,22 +7992,28 @@ deny-answer-aliases { "example.net"; };
                     Disabled policy zones should appear first,
                     because they will often not be logged
                     if a higher precedence trigger is found first.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt>
 <span class="term"><span class="command"><strong>PASSTHRU</strong></span>, </span><span class="term"><span class="command"><strong>DROP</strong></span>, </span><span class="term"><span class="command"><strong>TCP-Only</strong></span>, </span><span class="term"><span class="command"><strong>NXDOMAIN</strong></span>, </span><span class="term"><span class="command"><strong>NODATA</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                  <p>
                     override with the corresponding per-record policy.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>CNAME domain</strong></span></span></dt>
-<dd><p>
+<dd>
+                    <p>
                       causes all RPZ policy records to act as if they were
                       "cname domain" records.
-                    </p></dd>
+                    </p>
+                  </dd>
 </dl></div>
 <p>
           </p>
-<p>
+
+          <p>
             By default, the actions encoded in a response policy zone
             are applied only to queries that ask for recursion (RD=1).
             That default can be changed for a single policy zone or
@@ -7497,7 +8024,8 @@ deny-answer-aliases { "example.net"; };
             delete answers that would otherwise contain RFC 1918 values
             on the externally visible name server or view.
           </p>
-<p>
+
+          <p>
             Also by default, RPZ actions are applied only to DNS requests
             that either do not request DNSSEC metadata (DO=0) or when no
             DNSSEC records are available for request name in the original
@@ -7508,7 +8036,8 @@ deny-answer-aliases { "example.net"; };
             clause option reflects the fact that results rewritten by RPZ
             actions cannot verify.
           </p>
-<p>
+
+          <p>
             No DNS records are needed for a QNAME or Client-IP trigger.
             The name or IP address itself is sufficient,
             so in principle the query name need not be recursively resolved.
@@ -7535,13 +8064,15 @@ deny-answer-aliases { "example.net"; };
             appear to be rewritten, since no recursion is being done to
             discover problems at the authoritative server.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>dnsrps-enable yes</strong></span> option turns on
             the DNS Rsponse Policy Service (DNSRPS) interface, if it has been
             compiled in to <span class="command"><strong>named</strong></span> using
             <span class="command"><strong>configure --enable-dnsrps</strong></span>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>dnsrps-options</strong></span> block provides additional
             RPZ configuration settings, which are passed through to the
             DNSRPS provider library.
@@ -7552,7 +8083,8 @@ deny-answer-aliases { "example.net"; };
             concatenated with settings derived from the
             <span class="command"><strong>response-policy</strong></span> statement.
           </p>
-<p>
+
+          <p>
             Note: The <span class="command"><strong>dnsrps-options</strong></span> text should only include
             configuration settings that are specific to the DNSRPS
             provider.  For example, the DNSRPS provider from
@@ -7568,7 +8100,8 @@ deny-answer-aliases { "example.net"; };
             <span class="command"><strong>dnsrps-enable</strong></span> to "no", those options would
             be ignored.
           </p>
-<p>
+
+          <p>
             The TTL of a record modified by RPZ policies is set from the
             TTL of the relevant record in policy zone.  It is then limited
             to a maximum value.
@@ -7579,15 +8112,16 @@ deny-answer-aliases { "example.net"; };
             formats.
 
           </p>
-<p>
+
+          <p>
             For example, you might use this option statement
           </p>
 <pre class="programlisting">    response-policy { zone "badlist"; };</pre>
-<p>
+          <p>
             and this zone statement
           </p>
 <pre class="programlisting">    zone "badlist" {type master; file "master/badlist"; allow-query {none;}; };</pre>
-<p>
+          <p>
             with this zone file
           </p>
 <pre class="programlisting">$TTL 1H
@@ -7629,7 +8163,7 @@ example.com                 CNAME   rpz-tcp-only.
 *.example.com               CNAME   rpz-tcp-only.
 
 </pre>
-<p>
+          <p>
             RPZ can affect server performance.
             Each configured response policy zone requires the server to
             perform one to four additional database lookups before a
@@ -7644,23 +8178,27 @@ example.com                 CNAME   rpz-tcp-only.
             A server with four response policy zones with QNAME and IP
             triggers might have a maximum QPS rate about 50% lower.
           </p>
-<p>
+
+          <p>
             Responses rewritten by RPZ are counted in the
             <span class="command"><strong>RPZRewrites</strong></span> statistics.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>log</strong></span> clause can be used to optionally
             turn off rewrite logging for a particular response policy
             zone. By default, all rewrites are logged.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>add-soa</strong></span> option controls whether the RPZ's
             SOA record is added to the additional section for traceback
             of changes from this zone or not.  This can be set at the
             individual policy zone level or at the response-policy level.
             The default is <code class="literal">yes</code>.
           </p>
-<p>
+
+          <p>
             Updates to RPZ zones are processed asynchronously; if there
             is more than one update pending they are bundled together.
             If an update to a RPZ zone (for example, via IXFR) happens less
@@ -7671,11 +8209,13 @@ example.com                 CNAME   rpz-tcp-only.
             used to specify the value.  It also accepts ISO 8601 duration
             formats.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="rrl"></a>Response Rate Limiting</h4></div></div></div>
-<p>
+
+          <p>
             Excessive almost identical UDP <span class="emphasis"><em>responses</em></span>
             can be controlled by configuring a
             <span class="command"><strong>rate-limit</strong></span> clause in an
@@ -7688,7 +8228,8 @@ example.com                 CNAME   rpz-tcp-only.
             Legitimate clients react to dropped or truncated response
             by retrying with UDP or with TCP respectively.
           </p>
-<p>
+
+          <p>
             This mechanism is intended for authoritative DNS servers.
             It can be used on recursive servers but can slow
             applications such as SMTP servers (mail receivers) and
@@ -7696,7 +8237,8 @@ example.com                 CNAME   rpz-tcp-only.
             same domains.
             When possible, closing "open" recursive servers is better.
           </p>
-<p>
+
+          <p>
             Response rate limiting uses a "credit" or "token bucket" scheme.
             Each combination of identical response and client
             has a conceptual account that earns a specified number
@@ -7715,7 +8257,8 @@ example.com                 CNAME   rpz-tcp-only.
             When the specified number of credits for a class of
             responses is set to 0, those responses are not rate limited.
           </p>
-<p>
+
+          <p>
             The notions of "identical response" and "DNS client"
             for rate limiting are not simplistic.
             All responses to an address block are counted as if to a
@@ -7724,7 +8267,8 @@ example.com                 CNAME   rpz-tcp-only.
             specified with <span class="command"><strong>ipv4-prefix-length</strong></span> (default 24)
             and <span class="command"><strong>ipv6-prefix-length</strong></span> (default 56).
           </p>
-<p>
+
+          <p>
             All non-empty responses for a valid domain name (qname)
             and record type (qtype) are identical and have a limit specified
             with <span class="command"><strong>responses-per-second</strong></span>
@@ -7748,12 +8292,14 @@ example.com                 CNAME   rpz-tcp-only.
             <span class="command"><strong>referrals-per-second</strong></span>
             (default <span class="command"><strong>responses-per-second</strong></span>).
           </p>
-<p>
+
+          <p>
             Responses generated from local wildcards are counted and limited
             as if they were for the parent domain name.
             This controls flooding using random.wild.example.com.
           </p>
-<p>
+
+          <p>
             All requests that result in DNS errors other
             than NXDOMAIN, such as SERVFAIL and FORMERR, are identical
             regardless of requested name (qname) or record type (qtype).
@@ -7764,7 +8310,8 @@ example.com                 CNAME   rpz-tcp-only.
             but it can be set separately with
             <span class="command"><strong>errors-per-second</strong></span>.
           </p>
-<p>
+
+          <p>
             Many attacks using DNS involve UDP requests with forged source
             addresses.
             Rate limiting prevents the use of BIND 9 to flood a network
@@ -7788,7 +8335,8 @@ example.com                 CNAME   rpz-tcp-only.
             cannot be replaced with truncated responses and are instead
             leaked at the <span class="command"><strong>slip</strong></span> rate.
           </p>
-<p>
+
+          <p>
             (NOTE: Dropped responses from an authoritative server may
             reduce the difficulty of a third party successfully forging
             a response to a recursive resolver. The best security
@@ -7801,7 +8349,8 @@ example.com                 CNAME   rpz-tcp-only.
             responses to be truncated rather than dropped.  This reduces
             the effectiveness of rate-limiting against reflection attacks.)
           </p>
-<p>
+
+          <p>
             When the approximate query per second rate exceeds
             the <span class="command"><strong>qps-scale</strong></span> value,
             then the <span class="command"><strong>responses-per-second</strong></span>,
@@ -7819,7 +8368,8 @@ example.com                 CNAME   rpz-tcp-only.
             Responses sent via TCP are not limited
             but are counted to compute the query per second rate.
           </p>
-<p>
+
+          <p>
             Communities of DNS clients can be given their own parameters or no
             rate limiting by putting
             <span class="command"><strong>rate-limit</strong></span> statements in <span class="command"><strong>view</strong></span>
@@ -7831,7 +8381,8 @@ example.com                 CNAME   rpz-tcp-only.
             DNS clients within a view can be exempted from rate limits
             with the <span class="command"><strong>exempt-clients</strong></span> clause.
           </p>
-<p>
+
+          <p>
             UDP responses of all kinds can be limited with the
             <span class="command"><strong>all-per-second</strong></span> phrase.  This rate
             limiting is unlike the rate limiting provided by
@@ -7864,7 +8415,8 @@ example.com                 CNAME   rpz-tcp-only.
             or parsing DNS requests, but that rate limiting must
             be done before the DNS server sees the requests.
           </p>
-<p>
+
+          <p>
             The maximum size of the table used to track requests and
             rate limit responses is set with <span class="command"><strong>max-table-size</strong></span>.
             Each entry in the table is between 40 and 80 bytes.
@@ -7878,21 +8430,24 @@ example.com                 CNAME   rpz-tcp-only.
             expansions of the table and inform
             choices for the initial and maximum table size.
           </p>
-<p>
+
+          <p>
             Use <span class="command"><strong>log-only yes</strong></span> to test rate limiting parameters
             without actually dropping any requests.
           </p>
-<p>
+
+          <p>
             Responses dropped by rate limits are included in the
             <span class="command"><strong>RateDropped</strong></span> and <span class="command"><strong>QryDropped</strong></span>
             statistics.
             Responses that truncated by rate limits are included in
             <span class="command"><strong>RateSlipped</strong></span> and <span class="command"><strong>RespTruncated</strong></span>.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"></div>
-<p>
+          <p>
             Named supports NXDOMAIN redirection via two methods:
             </p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@@ -7903,19 +8458,19 @@ example.com                 CNAME   rpz-tcp-only.
 </ul></div>
 <p>
           </p>
-<p>
+          <p>
             With both methods when named gets a NXDOMAIN response
             it examines a separate namespace to see if the NXDOMAIN
             response should be replaced with an alternative response.
           </p>
-<p>
+          <p>
             With a redirect zone (<span class="command"><strong>zone "." { type redirect; };</strong></span>), the
             data used to replace the NXDOMAIN is held in a single
             zone which is not part of the normal namespace.  All the
             redirect information is contained in the zone; there are
             no delegations.
           </p>
-<p>
+          <p>
             With a redirect namespace (<span class="command"><strong>option { nxdomain-redirect
             &lt;suffix&gt; };</strong></span>) the data used to replace the
             NXDOMAIN is part of the normal namespace and is looked up by
@@ -7925,16 +8480,17 @@ example.com                 CNAME   rpz-tcp-only.
             the replacement data or a NXDOMAIN indicating that there
             is no replacement.
           </p>
-<p>
+          <p>
             If both a redirect zone and a redirect namespace are configured,
             the redirect zone is tried first.
           </p>
-</div>
-</div>
-<div class="section">
+        </div>
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="server_statement_grammar"></a><span class="command"><strong>server</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>server</strong></span> <em class="replaceable"><code>netprefix</code></em> {
        <span class="command"><strong>bogus</strong></span> <em class="replaceable"><code>boolean</code></em>;
        <span class="command"><strong>edns</strong></span> <em class="replaceable"><code>boolean</code></em>;
@@ -7968,12 +8524,14 @@ example.com                 CNAME   rpz-tcp-only.
        <span class="command"><strong>transfers</strong></span> <em class="replaceable"><code>integer</code></em>;
 };
 </pre>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="server_statement_definition_and_usage"></a><span class="command"><strong>server</strong></span> Statement Definition and
             Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>server</strong></span> statement defines
             characteristics
             to be associated with a remote name server.  If a prefix length is
@@ -7982,7 +8540,8 @@ example.com                 CNAME   rpz-tcp-only.
             server clause applies regardless of the order in
             <code class="filename">named.conf</code>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>server</strong></span> statement can occur at
             the top level of the
             configuration file or inside a <span class="command"><strong>view</strong></span>
@@ -7997,13 +8556,14 @@ example.com                 CNAME   rpz-tcp-only.
             used as
             defaults.
           </p>
-<p>
+
+          <p>
             If you discover that a remote server is giving out bad data,
             marking it as bogus will prevent further queries to it. The
             default
             value of <span class="command"><strong>bogus</strong></span> is <span class="command"><strong>no</strong></span>.
           </p>
-<p>
+          <p>
             The <span class="command"><strong>provide-ixfr</strong></span> clause determines
             whether
             the local server, acting as master, will respond with an
@@ -8019,7 +8579,8 @@ example.com                 CNAME   rpz-tcp-only.
             view or
             global options block is used as a default.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>request-ixfr</strong></span> clause determines
             whether
             the local server, acting as a slave, will request incremental zone
@@ -8029,7 +8590,8 @@ example.com                 CNAME   rpz-tcp-only.
             also be set in the zone block and, if set there, it will
             override the global or view setting for that zone.
           </p>
-<p>
+
+          <p>
             IXFR requests to servers that do not support IXFR will
             automatically
             fall back to AXFR.  Therefore, there is no need to manually list
@@ -8043,7 +8605,8 @@ example.com                 CNAME   rpz-tcp-only.
             and slave claim to support it, for example if one of the servers
             is buggy and crashes or corrupts data when IXFR is used.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>request-expire</strong></span> clause determines
             whether the local server, when acting as a slave, will
             request the EDNS EXPIRE value.  The EDNS EXPIRE value
@@ -8055,12 +8618,14 @@ example.com                 CNAME   rpz-tcp-only.
             record instead.
             The default is <span class="command"><strong>yes</strong></span>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>edns</strong></span> clause determines whether
             the local server will attempt to use EDNS when communicating
             with the remote server.  The default is <span class="command"><strong>yes</strong></span>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>edns-udp-size</strong></span> option sets the
             EDNS UDP size that is advertised by <span class="command"><strong>named</strong></span>
             when querying the remote server.  Valid values are 512
@@ -8079,7 +8644,8 @@ example.com                 CNAME   rpz-tcp-only.
             behavior may be brought into conformance with the
             <span class="command"><strong>options/view</strong></span> behavior in future releases.)
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>edns-version</strong></span> option sets the
             maximum EDNS VERSION that will be sent to the server(s)
             by the resolver.  The actual EDNS version sent is still
@@ -8094,7 +8660,8 @@ example.com                 CNAME   rpz-tcp-only.
             adjusted.  This option will not be needed until higher
             EDNS versions than 0 are in use.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>max-udp-size</strong></span> option sets the
             maximum EDNS UDP message size <span class="command"><strong>named</strong></span>
             will send.  Valid values are 512 to 4096 bytes (values
@@ -8102,7 +8669,8 @@ example.com                 CNAME   rpz-tcp-only.
             option is useful when you know that there is a firewall
             that is blocking large replies from <span class="command"><strong>named</strong></span>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>padding</strong></span> option adds EDNS Padding
             options to outgoing messages, increasing the packet size to
             a multiple of the specified block size. Valid block sizes
@@ -8114,18 +8682,21 @@ example.com                 CNAME   rpz-tcp-only.
             would have to be added to the packet after it had already
             been signed.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>tcp-only</strong></span> option sets the transport
             protocol to TCP. The default is to use the UDP transport
             and to fallback on TCP only when a truncated response
             is received.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>tcp-keepalive</strong></span> option adds EDNS
             TCP keepalive to messages sent over TCP. Note currently
             idle timeouts in responses are ignored.
           </p>
-<p>
+
+          <p>
             The server supports two zone transfer methods. The first, <span class="command"><strong>one-answer</strong></span>,
             uses one DNS message per resource record transferred. <span class="command"><strong>many-answers</strong></span> packs
             as many resource records as possible into a message. <span class="command"><strong>many-answers</strong></span> is
@@ -8139,14 +8710,16 @@ example.com                 CNAME   rpz-tcp-only.
             by the <span class="command"><strong>options</strong></span> statement will be
             used.
           </p>
-<p><span class="command"><strong>transfers</strong></span>
+
+          <p><span class="command"><strong>transfers</strong></span>
             is used to limit the number of concurrent inbound zone
             transfers from the specified server. If no
             <span class="command"><strong>transfers</strong></span> clause is specified, the
             limit is set according to the
             <span class="command"><strong>transfers-per-ns</strong></span> option.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>keys</strong></span> clause identifies a
             <span class="command"><strong>key_id</strong></span> defined by the <span class="command"><strong>key</strong></span> statement,
             to be used for transaction security (TSIG, <a class="xref" href="Bv9ARM.ch04.html#tsig" title="TSIG">the section called &#8220;TSIG&#8221;</a>)
@@ -8157,10 +8730,12 @@ example.com                 CNAME   rpz-tcp-only.
             required
             to be signed by this key.
           </p>
-<p>
+
+          <p>
             Only a single key per server is currently supported.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>transfer-source</strong></span> and
             <span class="command"><strong>transfer-source-v6</strong></span> clauses specify
             the IPv4 and IPv6 source
@@ -8176,7 +8751,8 @@ example.com                 CNAME   rpz-tcp-only.
             <span class="command"><strong>transfer-source-v6</strong></span> in
             <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>notify-source</strong></span> and
             <span class="command"><strong>notify-source-v6</strong></span> clauses specify the
             IPv4 and IPv6 source address to be used for notify
@@ -8185,7 +8761,8 @@ example.com                 CNAME   rpz-tcp-only.
             can be specified.  Similarly, for an IPv6 remote server,
             only <span class="command"><strong>notify-source-v6</strong></span> can be specified.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>query-source</strong></span> and
             <span class="command"><strong>query-source-v6</strong></span> clauses specify the
             IPv4 and IPv6 source address to be used for queries
@@ -8194,14 +8771,16 @@ example.com                 CNAME   rpz-tcp-only.
             be specified.  Similarly, for an IPv6 remote server,
             only <span class="command"><strong>query-source-v6</strong></span> can be specified.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>request-nsid</strong></span> clause determines
             whether the local server will add a NSID EDNS option
             to requests sent to the server.  This overrides
             <span class="command"><strong>request-nsid</strong></span> set at the view or
             option level.
           </p>
-<p>
+
+          <p>
             The <span class="command"><strong>send-cookie</strong></span> clause determines
             whether the local server will add a COOKIE EDNS option
             to requests sent to the server.  This overrides
@@ -8210,11 +8789,12 @@ example.com                 CNAME   rpz-tcp-only.
             determine that COOKIE is not supported by the remote server
             and not add a COOKIE EDNS option to requests.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="statschannels"></a><span class="command"><strong>statistics-channels</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+          <pre class="programlisting">
 <span class="command"><strong>statistics-channels</strong></span> {
        <span class="command"><strong>inet</strong></span> ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> |
            * ) [ port ( <em class="replaceable"><code>integer</code></em> | * ) ] [
@@ -8222,18 +8802,21 @@ example.com                 CNAME   rpz-tcp-only.
            } ];
 };
 </pre>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="statistics_channels"></a><span class="command"><strong>statistics-channels</strong></span> Statement Definition and
               Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>statistics-channels</strong></span> statement
             declares communication channels to be used by system
             administrators to get access to statistics information of
             the name server.
           </p>
-<p>
+
+          <p>
             This statement intends to be flexible to support multiple
             communication protocols in the future, but currently only
             HTTP access is supported.
@@ -8243,7 +8826,8 @@ example.com                 CNAME   rpz-tcp-only.
             still accepted even if it is built without the library,
             but any HTTP access will fail with an error.
           </p>
-<p>
+
+          <p>
             An <span class="command"><strong>inet</strong></span> control channel is a TCP socket
             listening at the specified <span class="command"><strong>ip_port</strong></span> on the
             specified <span class="command"><strong>ip_addr</strong></span>, which can be an IPv4 or IPv6
@@ -8254,12 +8838,14 @@ example.com                 CNAME   rpz-tcp-only.
             To listen on the IPv6 wildcard address,
             use an <span class="command"><strong>ip_addr</strong></span> of <code class="literal">::</code>.
           </p>
-<p>
+
+          <p>
             If no port is specified, port 80 is used for HTTP channels.
             The asterisk "<code class="literal">*</code>" cannot be used for
             <span class="command"><strong>ip_port</strong></span>.
           </p>
-<p>
+
+          <p>
             The attempt of opening a statistics channel is
             restricted by the optional <span class="command"><strong>allow</strong></span> clause.
             Connections to the statistics channel are permitted based on the
@@ -8271,11 +8857,13 @@ example.com                 CNAME   rpz-tcp-only.
             recommended to restrict the source of connection requests
             appropriately.
           </p>
-<p>
+
+          <p>
             If no <span class="command"><strong>statistics-channels</strong></span> statement is present,
             <span class="command"><strong>named</strong></span> will not open any communication channels.
           </p>
-<p>
+
+          <p>
             The statistics are available in various formats and views
             depending on the URI used to access them.  For example, if
             the statistics channel is configured to listen on 127.0.0.1
@@ -8287,7 +8875,8 @@ example.com                 CNAME   rpz-tcp-only.
             charts and graphs using the Google Charts API when using a
             javascript-capable browser.
           </p>
-<p>
+
+          <p>
             Broken-out subsets of the statistics can be viewed at
             <a class="link" href="http://127.0.0.1:8888/xml/v3/status" target="_top">http://127.0.0.1:8888/xml/v3/status</a>
             (server uptime and last reconfiguration time),
@@ -8304,7 +8893,8 @@ example.com                 CNAME   rpz-tcp-only.
             <a class="link" href="http://127.0.0.1:8888/xml/v3/traffic" target="_top">http://127.0.0.1:8888/xml/v3/traffic</a>
             (traffic sizes).
           </p>
-<p>
+
+          <p>
             The full set of statistics can also be read in JSON format at
             <a class="link" href="http://127.0.0.1:8888/json" target="_top">http://127.0.0.1:8888/json</a>,
             with the broken-out subsets at
@@ -8323,26 +8913,28 @@ example.com                 CNAME   rpz-tcp-only.
             <a class="link" href="http://127.0.0.1:8888/json/v1/traffic" target="_top">http://127.0.0.1:8888/json/v1/traffic</a>
             (traffic sizes).
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="trust_anchors"></a><span class="command"><strong>trust-anchors</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>trust-anchors</strong></span> { <em class="replaceable"><code>string</code></em> ( static-key |
     <span class="command"><strong>initial-key</strong></span> | static-ds | initial-ds )
     <em class="replaceable"><code>integer</code></em> <em class="replaceable"><code>integer</code></em> <em class="replaceable"><code>integer</code></em>
     <em class="replaceable"><code>quoted_string</code></em>; ... };
 </pre>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="trust-anchors"></a><span class="command"><strong>trust-anchors</strong></span> Statement Definition
             and Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>trust-anchors</strong></span> statement defines DNSSEC
             trust anchors.  DNSSEC is described in <a class="xref" href="Bv9ARM.ch04.html#DNSSEC" title="DNSSEC">the section called &#8220;DNSSEC&#8221;</a>.
           </p>
-<p>
+          <p>
             A trust anchor is defined when the public key or public key
             digest for a non-authoritative zone is known, but cannot be
             securely obtained through DNS, either because it is the DNS
@@ -8350,34 +8942,34 @@ example.com                 CNAME   rpz-tcp-only.
             or digest has been configured as a trust anchor, it is treated
             as if it had been validated and proven secure.
           </p>
-<p>
+          <p>
             The resolver attempts DNSSEC validation on all DNS data
             in subdomains of configured trust anchors.  (Validation below
             specified names can be temporarily disabled by using
             <span class="command"><strong>rndc nta</strong></span>, or permanently disabled with
             the <span class="command"><strong>validate-except</strong></span> option).
           </p>
-<p>
+          <p>
             All keys listed in <span class="command"><strong>trust-anchors</strong></span>, and
             their corresponding zones, are deemed to exist regardless
             of what parent zones say.  Only keys configured as trust anchors
             are used to validate the DNSKEY RRset for the corresponding
             name. The parent's DS RRset will not be used.
           </p>
-<p>
+          <p>
             <span class="command"><strong>trust-anchors</strong></span> may be set at the top level
             of <code class="filename">named.conf</code> or within a view.  If it is
             set in both places, the configurations are additive: keys
             defined at the top level are inherited by all views, but keys
             defined in a view are only used within that view.
           </p>
-<p>
+          <p>
             The <span class="command"><strong>trust-anchors</strong></span> statement can contain
             multiple trust anchor entries, each consisting of a
             domain name, followed by an "anchor type" keyword indicating
             the trust anchor's format, followed by the key or digest data.
           </p>
-<p>
+          <p>
             If the anchor type is <span class="command"><strong>static-key</strong></span> or
             <span class="command"><strong>initial-key</strong></span>, then it is followed with the
             key's flags, protocol, algorithm, and the Base64 representation
@@ -8386,7 +8978,7 @@ example.com                 CNAME   rpz-tcp-only.
             carriage returns are ignored in the key data, so the
             configuration may be split up into multiple lines.
           </p>
-<p>
+          <p>
             If the anchor type is <span class="command"><strong>static-ds</strong></span> or
             <span class="command"><strong>initial-ds</strong></span>, then it is followed with the
             key tag, algorithm, digest type, and the hexadecimal
@@ -8394,7 +8986,7 @@ example.com                 CNAME   rpz-tcp-only.
             text representation of a DS record.  Spaces, tabs, newlines
             and carriage returns are ignored.
           </p>
-<p>
+          <p>
             Trust anchors configured with the
             <span class="command"><strong>static-key</strong></span> or <span class="command"><strong>static-ds</strong></span>
             anchor types are immutable, while keys configured with
@@ -8404,7 +8996,7 @@ example.com                 CNAME   rpz-tcp-only.
             keys are identical to keys configured using the deprecated
             <span class="command"><strong>trusted-keys</strong></span> statement.)
           </p>
-<p>
+          <p>
             Suppose, for example, that a zone's key-signing
             key was compromised, and the zone owner had to revoke and
             replace the key.  A resolver which had the original key
@@ -8415,7 +9007,7 @@ example.com                 CNAME   rpz-tcp-only.
             updated the <span class="command"><strong>trust-anchors</strong></span> statement with
             the new key.
           </p>
-<p>
+          <p>
             If, however, the trust anchor had been configured with
             <span class="command"><strong>initial-key</strong></span> or <span class="command"><strong>initial-ds</strong></span>
             instead, then the zone owner could add a "stand-by" key to
@@ -8428,7 +9020,7 @@ example.com                 CNAME   rpz-tcp-only.
             This is the process used to keep the ICANN root DNSSEC key
             up to date.
           </p>
-<p>
+          <p>
             Whereas <span class="command"><strong>static-key</strong></span> and
             <span class="command"><strong>static-ds</strong></span> trust anchors continue
             to be trusted until they are removed from
@@ -8438,11 +9030,11 @@ example.com                 CNAME   rpz-tcp-only.
             takes to load the managed key database and start the RFC 5011
             key maintenance process.
           </p>
-<p>
+          <p>
             It is not possible to mix static with initial trust anchors
             for the same domain name.
           </p>
-<p>
+          <p>
             The first time <span class="command"><strong>named</strong></span> runs with an
             <span class="command"><strong>initial-key</strong></span> or <span class="command"><strong>initial-ds</strong></span>
             configured in <code class="filename">named.conf</code>, it fetches the
@@ -8452,7 +9044,7 @@ example.com                 CNAME   rpz-tcp-only.
             the trust anchor, then it is used as the basis for a new
             managed keys database.
           </p>
-<p>
+          <p>
             From that point on, whenever <span class="command"><strong>named</strong></span> runs, it
             sees the <span class="command"><strong>initial-key</strong></span> or
             <span class="command"><strong>initial-ds</strong></span> listed in
@@ -8464,7 +9056,7 @@ example.com                 CNAME   rpz-tcp-only.
             superseded by the key or keys stored in the managed keys
             database.
           </p>
-<p>
+          <p>
             The next time <span class="command"><strong>named</strong></span> runs after an
             <span class="command"><strong>initial-key</strong></span> or <span class="command"><strong>initial-ds</strong></span>
             trust anchor has been <span class="emphasis"><em>removed</em></span> from the
@@ -8474,11 +9066,11 @@ example.com                 CNAME   rpz-tcp-only.
             database, and RFC 5011 key maintenance will no longer be used
             for that domain.
           </p>
-<p>
+          <p>
             In the current implementation, the managed keys database
             is stored as a master-format zone file.
           </p>
-<p>
+          <p>
             On servers which do not use views, this file is named
             <code class="filename">managed-keys.bind</code>.  When views are in
             use, there will be a separate managed keys database for each
@@ -8487,7 +9079,7 @@ example.com                 CNAME   rpz-tcp-only.
             a hash of the view name), followed by
             the suffix <code class="filename">.mkeys</code>.
           </p>
-<p>
+          <p>
             When the key database is changed, the zone is updated.
             As with any other dynamic zone, changes will be written
             into a journal file, e.g.,
@@ -8501,7 +9093,7 @@ example.com                 CNAME   rpz-tcp-only.
             (For this reason among others, the working directory
             should be always be writable by <span class="command"><strong>named</strong></span>.)
           </p>
-<p>
+          <p>
             If the <span class="command"><strong>dnssec-validation</strong></span> option is
             set to <strong class="userinput"><code>auto</code></strong>, <span class="command"><strong>named</strong></span>
             will automatically initialize an <span class="command"><strong>initial-key</strong></span>
@@ -8513,11 +9105,12 @@ example.com                 CNAME   rpz-tcp-only.
             found, the initializing key is also compiled directly
             into <span class="command"><strong>named</strong></span>.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dnssec_policy_grammar"></a><span class="command"><strong>dnssec-policy</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>dnssec-policy</strong></span> <em class="replaceable"><code>string</code></em> {
     <span class="command"><strong>dnskey-ttl</strong></span> <em class="replaceable"><code>duration</code></em>;
     <span class="command"><strong>keys</strong></span> { ( csk | ksk | zsk ) key-directory lifetime ( <em class="replaceable"><code>duration</code></em> | unlimited ) algorithm <em class="replaceable"><code>integer</code></em> [ <em class="replaceable"><code>integer</code></em> ] ; ... };
@@ -8533,34 +9126,36 @@ example.com                 CNAME   rpz-tcp-only.
     <span class="command"><strong>zone-propagation-delay</strong></span> <em class="replaceable"><code>duration</code></em>;
 };
 </pre>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dnssec_policy"></a><span class="command"><strong>dnssec-policy</strong></span> Statement Definition and Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>dnssec-policy</strong></span> statement defines a key and
             signing policy (KASP) for zones.
           </p>
-<p>
+          <p>
             A KASP determines how one or more zones will be signed
             with DNSSEC. For example, it specifies how often keys should
             roll, which cryptographic algorithms to use, and how often RRSIG
             records need to be refreshed.
           </p>
-<p>
+          <p>
             Keys are not shared among zones, which means that one set of keys
             per zone will be generated even if they have the same policy.
             If multiple views are configured with different versions of the
             same zone, each separate version will use the same set of signing
             keys.
           </p>
-<p>
+          <p>
             Multiple key and signing policies can be configured.  To
             attach a policy to a zone, add a <span class="command"><strong>dnssec-policy</strong></span>
             option to the <span class="command"><strong>zone</strong></span> statement, specifying he
             name of the policy that should be used.
           </p>
-<p>
+          <p>
             Key rollover timing is computed for each key according to
             the key lifetime defined in the KASP.  The lifetime may be
             modified by zone TTLs and propagation delays, in order to
@@ -8571,14 +9166,14 @@ example.com                 CNAME   rpz-tcp-only.
             new one, and finally retire the old key according to a computed
             schedule.
           </p>
-<p>
+          <p>
             Zone-signing key (ZSK) rollovers require no operator input.
             Key-signing key (KSK) and combined signing key (CSK) rollovers
             require action to be taken to submit a DS record to the parent.
             Rollover timing for KSKs and CSKs is adjusted to take into account
             delays in processing and propagating DS updates.
           </p>
-<p>
+          <p>
             There are two predefined <span class="command"><strong>dnssec-policy</strong></span> names:
             <span class="command"><strong>none</strong></span> and <span class="command"><strong>default</strong></span>.
             Setting a zone's policy to
@@ -8603,7 +9198,7 @@ example.com                 CNAME   rpz-tcp-only.
             </div>
 <p>
           </p>
-<p>
+          <p>
             If a <span class="command"><strong>dnssec-policy</strong></span> statement is modified
             and the server restarted or reconfigured, <span class="command"><strong>named</strong></span>
             will attempt to change the policy smoothly from the old one to
@@ -8619,19 +9214,22 @@ example.com                 CNAME   rpz-tcp-only.
             </div>
 <p>
           </p>
-<p>
+          <p>
             The following options can be specified in a
             <span class="command"><strong>dnssec-policy</strong></span> statement:
           </p>
-<div class="variablelist"><dl class="variablelist">
+
+          <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>dnskey-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The TTL to use when generating DNSKEY resource records.
                   The default is 1 hour (3600 seconds).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>keys</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   A list specifying the algorithms and roles to use when
                   generating keys and signing the zone.
                   Entries in this list do not represent specific
@@ -8641,18 +9239,20 @@ example.com                 CNAME   rpz-tcp-only.
                   that the DNSKEY RRset will always include a key-signing key
                   for that algorithm.
                 </p>
-<p>
+                <p>
                   Here is an example (for illustration purposes only) of
                   some possible entries in a <span class="command"><strong>keys</strong></span>
                   list:
                 </p>
+
 <pre class="programlisting">keys {
     ksk key-directory lifetime unlimited algorithm rsasha1 2048;
     zsk lifetime P30D algorithm 8;
     csk lifetime P6MT12H3M15S algorithm ecdsa256;
 };
 </pre>
-<p>
+
+                <p>
                   This example specifies that three keys should be used
                   in the zone. The first token determines which role the
                   key will play in signing RRsets.  If set to
@@ -8666,14 +9266,14 @@ example.com                 CNAME   rpz-tcp-only.
                   <strong class="userinput"><code>csk</code></strong> the key will have the KSK
                   flag set and will be used to sign all RRsets.
                 </p>
-<p>
+                <p>
                   An optional second token determines where the key will
                   be stored.  Currently, keys can only be stored in the
                   configured <span class="command"><strong>key-directory</strong></span>. This token
                   may be used in the future to store keys in hardware
                   service modules or separate directories.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>lifetime</strong></span> parameter specifies how
                   long a key may be used before rolling over.  In the
                   example above, the first key will have an unlimited
@@ -8682,14 +9282,14 @@ example.com                 CNAME   rpz-tcp-only.
                   12 hours, 3 minutes and 15 seconds.  A lifetime of 0
                   seconds is the same as <span class="command"><strong>unlimited</strong></span>.
                 </p>
-<p>
+                <p>
                   Note that the lifetime of a key may be extended if
                   retiring it too soon would cause validation failures.
                   For example, if the key were configured to roll more
                   frequently than its own TTL, its lifetime would
                   automatically be extended to account for this.
                 </p>
-<p>
+                <p>
                   The <span class="command"><strong>algorithm</strong></span> parameter specifies
                   the key's algorithm, expressed either as a string
                   ("rsasha256", "ecdsa384", etc) or as a decimal number.
@@ -8698,47 +9298,57 @@ example.com                 CNAME   rpz-tcp-only.
                   example for the second and third keys, an appropriate
                   default size for the algorithm will be used.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>publish-safety</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   A margin that is added to the pre-publication
                   interval in rollover timing calculations to give some
                   extra time to cover unforeseen events. This increases
                   the time that keys are published before becoming active.
                   The default is <code class="constant">PT1H</code> (1 hour).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>retire-safety</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   A margin that is added to the post-publication interval
                   in rollover timing calculations to give some extra time
                   to cover unforeseen events. This increases the time a key
                   remains published after it is no longer active.  The
                   default is <code class="constant">PT1H</code> (1 hour).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>signatures-refresh</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   This determines how frequently an RRSIG record needs to be
                   refreshed.  The signature is renewed when the time until
                   the expiration time is closer than the specified interval.
                   The default is <code class="constant">P5D</code> (5 days), meaning
                   signatures that will expire in 5 days or sooner will be
                   refreshed.
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>signatures-validity</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The validity period of an RRSIG record (subject to
                   inception offset and jitter). The default is
                   <code class="constant">P2W</code> (2 weeks).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>signatures-validity-dnskey</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   Similar to <span class="command"><strong>signatures-validity</strong></span> but for
                   DNSKEY records. The default is <code class="constant">P2W</code>
                   (2 weeks).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>max-zone-ttl</strong></span></span></dt>
 <dd>
-<p>
+                <p>
                   Like the <span class="command"><strong>max-zone-ttl</strong></span> zone option,
                   this specifies the maximum permissible TTL value in
                   seconds for the zone. When loading a zone file using
@@ -8748,7 +9358,7 @@ example.com                 CNAME   rpz-tcp-only.
                   <code class="option">max-zone-ttl</code> will be capped at the
                   maximum permissible TTL value.
                 </p>
-<p>
+                <p>
                   This is needed in DNSSEC-maintained zones because when
                   rolling to a new DNSKEY, the old key needs to remain
                   available until RRSIG records have expired from caches.
@@ -8756,87 +9366,101 @@ example.com                 CNAME   rpz-tcp-only.
                   the largest TTL in the zone will be no higher than the
                   set value.
                 </p>
-<p>
+                <p>
                   (NOTE: Because <code class="constant">map</code>-format files
                   load directly into memory, this option cannot be
                   used with them.)
                 </p>
-<p>
+                <p>
                   The default value is <code class="constant">PT24H</code> (24 hours).
                   A <code class="option">max-zone-ttl</code> of zero is treated as if
                   the default value were in use.
                 </p>
-</dd>
+              </dd>
 <dt><span class="term"><span class="command"><strong>zone-propagation-delay</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The expected propagation delay from the time when a zone
                   is first updated to the time when the new version of the
                   zone will be served by all secondary servers.  The default
                   is <code class="constant">PT5M</code> (5 minutes).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>parent-ds-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The TTL of the DS RRset that the parent zone uses.  The
                   default is <code class="constant">P1D</code> (1 day).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>parent-propagation-delay</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The expected propagation delay from the time when the
                   parent zone is updated to the time when the new version
                   is served by all of the parent zone's name servers.
                   The default is <code class="constant">PT1H</code> (1 hour).
-                </p></dd>
+                </p>
+              </dd>
 <dt><span class="term"><span class="command"><strong>parent-registration-delay</strong></span></span></dt>
-<dd><p>
+<dd>
+                <p>
                   The expected registration delay from the time when a DS
                   RRset change is requested to the time when the DS RRset
                   will be updated in the parent zone.  The default is
                   <code class="constant">P1D</code> (1 day).
-              </p></dd>
+              </p>
+              </dd>
 </dl></div>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="managed-keys"></a><span class="command"><strong>managed-keys</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>managed-keys</strong></span> { <em class="replaceable"><code>string</code></em> ( static-key
     | initial-key | static-ds |
     <span class="command"><strong>initial-ds</strong></span> ) <em class="replaceable"><code>integer</code></em> <em class="replaceable"><code>integer</code></em>
     <em class="replaceable"><code>integer</code></em> <em class="replaceable"><code>quoted_string</code></em>; ... }; deprecated
 </pre>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="managed_keys"></a><span class="command"><strong>managed-keys</strong></span> Statement Definition
             and Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>managed-keys</strong></span> statement has been
             deprecated in favor of <a class="xref" href="Bv9ARM.ch05.html#trust_anchors" title="trust-anchors Statement Grammar">the section called &#8220;<span class="command"><strong>trust-anchors</strong></span> Statement Grammar&#8221;</a>
             with the <span class="command"><strong>initial-key</strong></span> keyword.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="trusted-keys"></a><span class="command"><strong>trusted-keys</strong></span> Statement Grammar</h3></div></div></div>
-<pre class="programlisting">
+        <pre class="programlisting">
 <span class="command"><strong>trusted-keys</strong></span> { <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>integer</code></em>
     <em class="replaceable"><code>integer</code></em> <em class="replaceable"><code>integer</code></em>
     <em class="replaceable"><code>quoted_string</code></em>; ... }; deprecated
 </pre>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="trusted_keys"></a><span class="command"><strong>trusted-keys</strong></span> Statement Definition
             and Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>trusted-keys</strong></span> statement has been
             deprecated in favor of <a class="xref" href="Bv9ARM.ch05.html#trust_anchors" title="trust-anchors Statement Grammar">the section called &#8220;<span class="command"><strong>trust-anchors</strong></span> Statement Grammar&#8221;</a>
             with the <span class="command"><strong>static-key</strong></span> keyword.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="view_statement_grammar"></a><span class="command"><strong>view</strong></span> Statement Grammar</h3></div></div></div>
+
 <pre class="programlisting"><span class="command"><strong>view</strong></span> <em class="replaceable"><code>view_name</code></em> [ <em class="replaceable"><code>class</code></em> ] <span class="command"><strong>{</strong></span>
     <span class="command"><strong>match-clients {</strong></span> <em class="replaceable"><code>address_match_list</code></em> <span class="command"><strong>}</strong></span> ;
     <span class="command"><strong>match-destinations {</strong></span> <em class="replaceable"><code>address_match_list</code></em> <span class="command"><strong>}</strong></span> ;
@@ -8845,11 +9469,13 @@ example.com                 CNAME   rpz-tcp-only.
   [ <em class="replaceable"><code>zone_statement</code></em> ; ... ]
 <span class="command"><strong>} </strong></span>;
 </pre>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="view_statement"></a><span class="command"><strong>view</strong></span> Statement Definition and Usage</h3></div></div></div>
-<p>
+
+          <p>
             The <span class="command"><strong>view</strong></span> statement is a powerful
             feature
             of <acronym class="acronym">BIND</acronym> 9 that lets a name server
@@ -8858,7 +9484,8 @@ example.com                 CNAME   rpz-tcp-only.
             implementing
             split DNS setups without having to run multiple servers.
           </p>
-<p>
+
+          <p>
             Each <span class="command"><strong>view</strong></span> statement defines a view
             of the
             DNS namespace that will be seen by a subset of clients.  A client
@@ -8886,7 +9513,8 @@ example.com                 CNAME   rpz-tcp-only.
             a client request will be resolved in the context of the first
             <span class="command"><strong>view</strong></span> that it matches.
           </p>
-<p>
+
+          <p>
             Zones defined within a <span class="command"><strong>view</strong></span>
             statement will
             only be accessible to clients that match the <span class="command"><strong>view</strong></span>.
@@ -8895,7 +9523,8 @@ example.com                 CNAME   rpz-tcp-only.
             "internal"
             and "external" clients in a split DNS setup.
           </p>
-<p>
+
+          <p>
             Many of the options given in the <span class="command"><strong>options</strong></span> statement
             can also be used within a <span class="command"><strong>view</strong></span>
             statement, and then
@@ -8908,12 +9537,14 @@ example.com                 CNAME   rpz-tcp-only.
             view-specific defaults
             take precedence over those in the <span class="command"><strong>options</strong></span> statement.
           </p>
-<p>
+
+          <p>
             Views are class specific.  If no class is given, class IN
             is assumed.  Note that all non-IN views must contain a hint zone,
             since only the IN class has compiled-in default hints.
           </p>
-<p>
+
+          <p>
             If there are no <span class="command"><strong>view</strong></span> statements in
             the config
             file, a default view that matches any client is automatically
@@ -8929,10 +9560,12 @@ example.com                 CNAME   rpz-tcp-only.
             statements must
             occur inside <span class="command"><strong>view</strong></span> statements.
           </p>
-<p>
+
+          <p>
             Here is an example of a typical split DNS setup implemented
             using <span class="command"><strong>view</strong></span> statements:
           </p>
+
 <pre class="programlisting">view "internal" {
       // This should match our internal networks.
       match-clients { 10.0.0.0/8; };
@@ -8965,11 +9598,13 @@ view "external" {
       };
 };
 </pre>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="zone_statement_grammar"></a><span class="command"><strong>zone</strong></span>
             Statement Grammar</h3></div></div></div>
+
 <pre class="programlisting">
 <span class="command"><strong>zone</strong></span> <em class="replaceable"><code>string</code></em> [ <em class="replaceable"><code>class</code></em> ] {
        <span class="command"><strong>type</strong></span> ( master | primary );
@@ -9218,14 +9853,16 @@ view "external" {
        <span class="command"><strong>in-view</strong></span> <em class="replaceable"><code>string</code></em>;
 };
 </pre>
-</div>
-<div class="section">
+
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="zone_statement"></a><span class="command"><strong>zone</strong></span> Statement Definition and Usage</h3></div></div></div>
-<div class="section">
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="zone_types"></a>Zone Types</h4></div></div></div>
-<p>
+            <p>
               The <span class="command"><strong>type</strong></span> keyword is required
               for the <span class="command"><strong>zone</strong></span> configuration unless
               it is an <span class="command"><strong>in-view</strong></span> configuration. Its
@@ -9240,75 +9877,84 @@ view "external" {
               <code class="varname">static-stub</code>,
               and <code class="varname">stub</code>.
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col class="1">
-<col class="2">
+<col width="4.017in" class="2">
 </colgroup>
-<tbody valign="top">
+<tbody>
 <tr>
-<td valign="top">
+<td>
                       <p>
-                        <code class="varname">primary</code>
+                        <code class="varname">master</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         The server has a master copy of the data
                         for the zone and will be able to provide authoritative
-                        answers for it. Type <code class="varname">master</code> is
-                        a synonym for <code class="varname">primary</code>.
+                        answers for it. Type <code class="varname">primary</code> is
+                        a synonym for <code class="varname">master</code>.
                       </p>
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
-                        <code class="varname">secondary</code>
+                        <code class="varname">slave</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
-                        A secondary zone is a replica of a master
-                        zone. Type <code class="varname">slave</code> is a
-                        synonym for <code class="varname">secondary</code>.
+                        A slave zone is a replica of a master
+                        zone. Type <code class="varname">secondary</code> is a
+                        synonym for <code class="varname">slave</code>.
                         The <span class="command"><strong>masters</strong></span> list
                         specifies one or more IP addresses
                         of master servers that the slave contacts to update
-                        its copy of the zone.  Masters list elements can
-                        also be names of other masters lists.  By default,
-                        transfers are made from port 53 on the servers;
-                        this can be changed for all servers by specifying
-                        a port number before the list of IP addresses,
-                        or on a per-server basis after the IP address.
+                        its copy of the zone.
+                        Masters list elements can also be names of other
+                        masters lists.
+                        By default, transfers are made from port 53 on the
+                        servers; this can
+                        be changed for all servers by specifying a port number
+                        before the
+                        list of IP addresses, or on a per-server basis after
+                        the IP address.
                         Authentication to the master can also be done with
-                        per-server TSIG keys.  If a file is specified, then the
+                        per-server TSIG keys.
+                        If a file is specified, then the
                         replica will be written to this file whenever the zone
-                        is changed, and reloaded from this file on a server
-                        restart. Use of a file is recommended, since it
-                        often speeds server startup and eliminates a
-                        needless waste of bandwidth. Note that for large
-                        numbers (in the tens or hundreds of thousands) of
-                        zones per server, it is best to use a two-level
-                        naming scheme for zone filenames. For example,
-                        a slave server for the zone
-                        <code class="literal">example.com</code> might place
+                        is changed,
+                        and reloaded from this file on a server restart. Use
+                        of a file is
+                        recommended, since it often speeds server startup and
+                        eliminates
+                        a needless waste of bandwidth. Note that for large
+                        numbers (in the
+                        tens or hundreds of thousands) of zones per server, it
+                        is best to
+                        use a two-level naming scheme for zone filenames. For
+                        example,
+                        a slave server for the zone <code class="literal">example.com</code> might place
                         the zone contents into a file called
-                        <code class="filename">ex/example.com</code> where
-                        <code class="filename">ex/</code> is just the first two
-                        letters of the zone name. (Most operating systems
+                        <code class="filename">ex/example.com</code> where <code class="filename">ex/</code> is
+                        just the first two letters of the zone name. (Most
+                        operating systems
                         behave very slowly if you put 100000 files into
                         a single directory.)
                       </p>
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">stub</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         A stub zone is similar to a slave zone,
                         except that it replicates only the NS records of a
@@ -9361,63 +10007,66 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">mirror</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
+                      <p>
+                        <span class="bold"><strong>Note:</strong></span> using
+                        this zone type with any zone other than the root
+                        zone should be considered
+                        <span class="emphasis"><em>experimental</em></span> and may cause
+                        performance issues, especially for zones which
+                        are large and/or frequently updated.
+                      </p>
                       <p>
-                        A mirror zone is similar to a zone of type
-                        <strong class="userinput"><code>secondary</code></strong>, except its data
-                        is subject to DNSSEC validation before being used
-                        in answers.  Validation is applied to the entire
-                        zone during the zone transfer process, and again
-                        when the zone file is loaded from disk when
-                        <span class="command"><strong>named</strong></span> is restarted.  If
+                        A mirror zone acts like a zone of type
+                        <strong class="userinput"><code>secondary</code></strong> whose data is
+                        subject to DNSSEC validation before being used
+                        in answers.  Validation is performed during the
+                        zone transfer process (for both AXFR and IXFR),
+                        and again when the zone file is loaded from disk
+                        when <span class="command"><strong>named</strong></span> is restarted.  If
                         validation of a new version of a mirror zone
                         fails, a retransfer is scheduled and the most
                         recent correctly validated version of that zone
-                        is used until it either expires or a newer version
-                        validates correctly. If no usable zone data is
-                        available for a mirror zone at all, either due to
-                        transfer failure or expiration, traditional DNS
-                        recursion is used to look up the answers instead.
-                        Mirror zones cannot be used in a view that does
-                        not have recursion enabled.
-                      </p>
-                      <p>
-                        Answers coming from a mirror zone look almost
-                        exactly like answers from a zone of type
-                        <strong class="userinput"><code>secondary</code></strong>, with the
-                        notable exceptions that the AA bit
-                        ("authoritative answer") is not set, and the AD
-                        bit ("authenticated data") is.
-                      </p>
-                      <p>
-                        Mirror zones are intended to be used to set up a
-                        fast local copy of the root zone, similar to the
-                        one described in RFC 7706.  A default list of primary
-                        servers for the IANA root zone is built into
-                        <span class="command"><strong>named</strong></span> and thus its mirroring
-                        can be enabled using the following configuration:
+                        is used until it expires; if a newer version of
+                        that zone is later correctly validated, it
+                        replaces the previously used version.  If no
+                        usable zone data is available for a mirror zone
+                        (either because it was never loaded from disk
+                        and has not yet been transferred from a primary
+                        server or because its most recent correctly
+                        validated version expired), traditional DNS
+                        recursion will be used to look up the answers
+                        instead.
+                      </p>
+                      <p>
+                        While any zone may be configured with this type,
+                        it is intended to be used to set up a fast local
+                        copy of the root zone, similar to the one
+                        described in RFC 7706.  Note, however, that
+                        mirror zones are not supposed to augment the
+                        example configuration provided by RFC 7706 but
+                        rather to replace it altogether.
+                      </p>
+                      <p>
+                        A default list of primary servers for the IANA
+                        root zone is built into <span class="command"><strong>named</strong></span>
+                        and thus its mirroring can be enabled using the
+                        following configuration:
                       </p>
 <pre class="programlisting">zone "." {
         type mirror;
 };</pre>
                       <p>
-                        Other zones can be configured as mirror zones,
-                        but this should be considered
-                        <span class="emphasis"><em>experimental</em></span> and may cause
-                        performance issues, especially with zones that
-                        are large and/or frequently updated.
-                        Mirroring a zone other than root requires an
-                        explicit list of primary servers to be provided
-                        using the <span class="command"><strong>masters</strong></span> option
-                        (see <a class="xref" href="Bv9ARM.ch05.html#masters_grammar" title="masters Statement Grammar">the section called &#8220;<span class="command"><strong>masters</strong></span> Statement Grammar&#8221;</a>
-                        for details), and a key-signing key (KSK)
-                        for the specified zone to be explicitly
-                        configured as a trust anchor.
+                        In order to set up mirroring of any other zone,
+                        an explicit list of primary servers needs to be
+                        provided using the <span class="command"><strong>masters</strong></span>
+                        option (see <a class="xref" href="Bv9ARM.ch05.html#masters_grammar" title="masters Statement Grammar">the section called &#8220;<span class="command"><strong>masters</strong></span> Statement Grammar&#8221;</a>
+                        for details).
                       </p>
                       <p>
                         To make mirror zone contents persist between
@@ -9425,20 +10074,57 @@ view "external" {
                         <a class="xref" href="Bv9ARM.ch05.html#file_option"><span class="command"><strong>file</strong></span></a>
                         option.
                       </p>
+                      <p>
+                        Mirror zone validation always happens for the
+                        entire zone contents, i.e. no "incremental
+                        validation" takes place, even for IXFRs.  This
+                        is required to ensure that each version of the
+                        zone used by the resolver is fully
+                        self-consistent with respect to DNSSEC.  Other,
+                        more efficient zone verification methods may be
+                        added in the future.
+                      </p>
+                      <p>
+                        For validation to succeed, a key-signing key
+                        (KSK) for the zone must be configured as a trust
+                        anchor in <code class="filename">named.conf</code>: that
+                        is, a key for the zone must be specified in
+                        <span class="command"><strong>trust-anchors</strong></span>.  In the case
+                        of the root zone, you may also rely on the
+                        built-in root trust anchor, which is enabled
+                        when <a class="xref" href="Bv9ARM.ch05.html#dnssec_validation"><span class="command"><strong>dnssec-validation</strong></span></a> is set to the
+                        default value <strong class="userinput"><code>auto</code></strong>.
+                      </p>
+                      <p>
+                        Answers coming from a mirror zone look almost
+                        exactly like answers from a zone of type
+                        <strong class="userinput"><code>secondary</code></strong>, with the
+                        notable exceptions that the AA bit
+                        ("authoritative answer") is not set, and the AD
+                        bit ("authenticated data") is.
+                      </p>
+                      <p>
+                        Since mirror zones are intended to be used by
+                        recursive resolvers, adding one to a view with
+                        recursion disabled is considered to be a
+                        configuration error.
+                      </p>
                       <p>
                         When configuring NOTIFY for a mirror zone, only
                         <strong class="userinput"><code>notify no;</code></strong> and
                         <strong class="userinput"><code>notify explicit;</code></strong> can be
-                        used at the zone level.  Using any other
+                        used.  Using any other <span class="command"><strong>notify</strong></span>
+                        setting at the zone level is a configuration
+                        error.  Using any other
                         <span class="command"><strong>notify</strong></span> setting at the
                         <span class="command"><strong>options</strong></span> or
                         <span class="command"><strong>view</strong></span> level will cause
                         that setting to be overridden with
                         <strong class="userinput"><code>notify explicit;</code></strong> for the
-                        mirror zone.  The global default for the
-                        <span class="command"><strong>notify</strong></span> option is
-                        <strong class="userinput"><code>yes</code></strong>, so mirror
-                        zones are by default configured with
+                        mirror zone in question.  Since the global
+                        default for the <span class="command"><strong>notify</strong></span> option
+                        is <strong class="userinput"><code>yes</code></strong>, mirror zones are
+                        by default configured with
                         <strong class="userinput"><code>notify explicit;</code></strong>.
                       </p>
                       <p>
@@ -9449,12 +10135,12 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">static-stub</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         A static-stub zone is similar to a stub zone
                         with the following exceptions:
@@ -9498,12 +10184,12 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">forward</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         A "forward zone" is a way to configure
                         forwarding on a per-domain basis.  A <span class="command"><strong>zone</strong></span> statement
@@ -9531,12 +10217,12 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">hint</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         The initial set of root name servers is
                         specified using a "hint zone". When the server starts
@@ -9552,12 +10238,12 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">redirect</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         Redirect zones are used to provide answers to
                         queries when normal resolution would result in
@@ -9617,12 +10303,12 @@ view "external" {
                     </td>
 </tr>
 <tr>
-<td valign="top">
+<td>
                       <p>
                         <code class="varname">delegation-only</code>
                       </p>
                     </td>
-<td valign="top">
+<td>
                       <p>
                         This is used to enforce the delegation-only
                         status of infrastructure zones (e.g. COM,
@@ -9643,17 +10329,20 @@ view "external" {
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="class"></a>Class</h4></div></div></div>
-<p>
+
+            <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>),
               is assumed. This is correct for the vast majority of cases.
             </p>
-<p>
+            <p>
               The <code class="literal">hesiod</code> class is
               named for an information service from MIT's Project Athena. It
               is
@@ -9662,52 +10351,69 @@ view "external" {
               <code class="literal">HS</code> is
               a synonym for hesiod.
             </p>
-<p>
+            <p>
               Another MIT development is Chaosnet, a LAN protocol created
               in the mid-1970s. Zone data for it can be specified with the <code class="literal">CHAOS</code> class.
             </p>
-</div>
-<div class="section">
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="zone_options"></a>Zone Options</h4></div></div></div>
-<div class="variablelist"><dl class="variablelist">
+
+            <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>allow-notify</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>allow-notify</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>allow-query</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>allow-query</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>allow-query-on</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>allow-query-on</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>allow-transfer</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>allow-transfer</strong></span>
                     in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>allow-update</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>allow-update</strong></span>
                     in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>update-policy</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Specifies a "Simple Secure Update" policy. See
                     <a class="xref" href="Bv9ARM.ch05.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>allow-update-forwarding</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>allow-update-forwarding</strong></span>
                     in <a class="xref" href="Bv9ARM.ch05.html#access_control" title="Access Control">the section called &#8220;Access Control&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>also-notify</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Only meaningful if <span class="command"><strong>notify</strong></span>
                     is
                     active for this zone. The set of machines that will
@@ -9728,9 +10434,11 @@ view "external" {
                     <span class="command"><strong>also-notify</strong></span> is not
                     meaningful for stub zones.
                     The default is the empty list.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-names</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     This option is used to restrict the character set and
                     syntax of
                     certain domain names in master files and/or DNS responses
@@ -9738,50 +10446,68 @@ view "external" {
                     network.  The default varies according to zone type.  For <span class="command"><strong>master</strong></span> zones the default is <span class="command"><strong>fail</strong></span>.  For <span class="command"><strong>slave</strong></span>
                     zones the default is <span class="command"><strong>warn</strong></span>.
                     It is not implemented for <span class="command"><strong>hint</strong></span> zones.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-mx</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>check-mx</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-spf</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>check-spf</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-wildcard</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>check-wildcard</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-integrity</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>check-integrity</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>check-sibling</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>check-sibling</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>zero-no-soa-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>zero-no-soa-ttl</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>update-check-ksk</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>update-check-ksk</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-loadkeys-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>dnssec-loadkeys-interval</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-policy</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Specifies which key and signing policy (KASP) should
                     be used for this zone.  This is a string referring to
                     a <span class="command"><strong>dnssec-policy</strong></span> statement.
@@ -9792,26 +10518,33 @@ view "external" {
                     The default is <strong class="userinput"><code>none</code></strong>.
                     See <a class="xref" href="Bv9ARM.ch05.html#dnssec_policy_grammar" title="dnssec-policy Statement Grammar">the section called &#8220;<span class="command"><strong>dnssec-policy</strong></span> Statement Grammar&#8221;</a> for
                     more details.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-update-mode</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>dnssec-update-mode</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-dnskey-kskonly</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>dnssec-dnskey-kskonly</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>try-tcp-refresh</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>try-tcp-refresh</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>database</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     Specify the type of database to be used for storing the
                     zone data.  The string following the <span class="command"><strong>database</strong></span> keyword
                     is interpreted as a list of whitespace-delimited words.
@@ -9822,40 +10555,43 @@ view "external" {
                     specific
                     to the database type.
                   </p>
-<p>
+                  <p>
                     The default is <strong class="userinput"><code>"rbt"</code></strong>, BIND 9's
                     native in-memory
                     red-black-tree database.  This database does not take
                     arguments.
                   </p>
-<p>
+                  <p>
                     Other values are possible if additional database drivers
                     have been linked into the server.  Some sample drivers are
                     included
                     with the distribution but none are linked in by default.
                   </p>
-</dd>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dialup</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>dialup</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>delegation-only</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     The flag only applies to forward, hint and stub
                     zones.  If set to <strong class="userinput"><code>yes</code></strong>,
                     then the zone will also be treated as if it is
                     also a delegation-only type zone.
                   </p>
-<p>
+                  <p>
                     See caveats in <a class="xref" href="Bv9ARM.ch05.html#root_delegation_only"><span class="command"><strong>root-delegation-only</strong></span></a>.
                   </p>
-</dd>
+                </dd>
 <dt>
 <a name="file_option"></a><span class="term"><a name="file_option_term"></a><span class="command"><strong>file</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                  <p>
                     Set the zone's filename. In <span class="command"><strong>master</strong></span>,
                     <span class="command"><strong>hint</strong></span>, and <span class="command"><strong>redirect</strong></span>
                     zones which do not have <span class="command"><strong>masters</strong></span>
@@ -9866,91 +10602,120 @@ view "external" {
                     defined, zone data is retrieved from another server
                     and saved in this file.  This option is not
                     applicable to other zone types.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>forward</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Only meaningful if the zone has a forwarders
                     list. The <span class="command"><strong>only</strong></span> value causes
                     the lookup to fail
                     after trying the forwarders and getting no answer, while <span class="command"><strong>first</strong></span> would
                     allow a normal lookup to be tried.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>forwarders</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Used to override the list of global forwarders.
                     If it is not specified in a zone of type <span class="command"><strong>forward</strong></span>,
                     no forwarding is done for the zone and the global options are
                     not used.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>journal</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     Allow the default journal's filename to be overridden.
                     The default is the zone's filename with "<code class="filename">.jnl</code>" appended.
                     This is applicable to <span class="command"><strong>master</strong></span> and <span class="command"><strong>slave</strong></span> zones.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-ixfr-ratio</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-ixfr-ratio</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-journal-size</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-journal-size</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#server_resource_limits" title="Server Resource Limits">the section called &#8220;Server  Resource Limits&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-records</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-records</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#server_resource_limits" title="Server Resource Limits">the section called &#8220;Server  Resource Limits&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-time-in</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-transfer-time-in</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-idle-in</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-transfer-idle-in</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-time-out</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-transfer-time-out</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-transfer-idle-out</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>max-transfer-idle-out</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>notify</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>notify</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>notify-delay</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>notify-delay</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>notify-to-soa</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>notify-to-soa</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>zone-statistics</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>zone-statistics</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>server-addresses</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     Only meaningful for static-stub zones.
                     This is a list of IP addresses to which queries
                     should be sent in recursive resolution for the
@@ -9959,7 +10724,7 @@ view "external" {
                     configure the apex NS RR with associated glue A or
                     AAAA RRs.
                   </p>
-<p>
+                  <p>
                     For example, if "example.com" is configured as a
                     static-stub zone with 192.0.2.1 and 2001:db8::1234
                     in a <span class="command"><strong>server-addresses</strong></span> option,
@@ -9968,7 +10733,7 @@ view "external" {
 <pre class="programlisting">example.com. NS example.com.
 example.com. A 192.0.2.1
 example.com. AAAA 2001:db8::1234</pre>
-<p>
+                  <p>
                     These records are internally used to resolve
                     names under the static-stub zone.
                     For instance, if the server receives a query for
@@ -9976,10 +10741,10 @@ example.com. AAAA 2001:db8::1234</pre>
                     will initiate recursive resolution and send
                     queries to 192.0.2.1 and/or 2001:db8::1234.
                   </p>
-</dd>
+                </dd>
 <dt><span class="term"><span class="command"><strong>server-names</strong></span></span></dt>
 <dd>
-<p>
+                  <p>
                     Only meaningful for static-stub zones.
                     This is a list of domain names of nameservers that
                     act as authoritative servers of the static-stub
@@ -9997,7 +10762,7 @@ example.com. AAAA 2001:db8::1234</pre>
                     "ns.example.net" cannot, and will be rejected by
                     the configuration parser.
                   </p>
-<p>
+                  <p>
                     A non empty list for this option will internally
                     configure the apex NS RR with the specified names.
                     For example, if "example.com" is configured as a
@@ -10009,7 +10774,7 @@ example.com. AAAA 2001:db8::1234</pre>
 <pre class="programlisting">example.com. NS ns1.example.net.
 example.com. NS ns2.example.net.
 </pre>
-<p>
+                  <p>
                     These records are internally used to resolve
                     names under the static-stub zone.
                     For instance, if the server receives a query for
@@ -10019,145 +10784,189 @@ example.com. NS ns2.example.net.
                     "ns2.example.net" to IP addresses, and then send
                     queries to (one or more of) these addresses.
                   </p>
-</dd>
+                </dd>
 <dt><span class="term"><span class="command"><strong>sig-validity-interval</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>sig-validity-interval</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-nodes</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>sig-signing-nodes</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-signatures</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>sig-signing-signatures</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>sig-signing-type</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>sig-signing-type</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>transfer-source</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>transfer-source</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>transfer-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>transfer-source-v6</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>alt-transfer-source</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>alt-transfer-source</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>alt-transfer-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>alt-transfer-source-v6</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>use-alt-transfer-source</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>use-alt-transfer-source</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>notify-source</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>notify-source</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>notify-source-v6</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>notify-source-v6</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt>
 <span class="term"><span class="command"><strong>min-refresh-time</strong></span>, </span><span class="term"><span class="command"><strong>max-refresh-time</strong></span>, </span><span class="term"><span class="command"><strong>min-retry-time</strong></span>, </span><span class="term"><span class="command"><strong>max-retry-time</strong></span></span>
 </dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>ixfr-from-differences</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>ixfr-from-differences</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
                     (Note that the <span class="command"><strong>ixfr-from-differences</strong></span>
                     <strong class="userinput"><code>master</code></strong> and
                     <strong class="userinput"><code>slave</code></strong> choices are not
                     available at the zone level.)
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>key-directory</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>key-directory</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>auto-dnssec</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>auto-dnssec</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>serial-update-method</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>serial-update-method</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>inline-signing</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     If <code class="literal">yes</code>, this enables
                     "bump in the wire" signing of a zone, where a
                     unsigned zone is transferred in or loaded from
                     disk and a signed version of the zone is served,
                     with possibly, a different serial number.  This
                     behavior is disabled by default.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>multi-master</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>multi-master</strong></span> in
                     <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>masterfile-format</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>masterfile-format</strong></span>
                     in <a class="xref" href="Bv9ARM.ch05.html#tuning" title="Tuning">the section called &#8220;Tuning&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>max-zone-ttl</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of <span class="command"><strong>max-zone-ttl</strong></span>
                     in <a class="xref" href="Bv9ARM.ch05.html#options" title="options Statement Definition and Usage">the section called &#8220;<span class="command"><strong>options</strong></span> Statement Definition and
           Usage&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>dnssec-secure-to-insecure</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     See the description of
                     <span class="command"><strong>dnssec-secure-to-insecure</strong></span> in <a class="xref" href="Bv9ARM.ch05.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a>.
-                  </p></dd>
+                  </p>
+                </dd>
 </dl></div>
-</div>
-<div class="section">
+
+          </div>
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="dynamic_update_policies"></a>Dynamic Update Policies</h4></div></div></div>
-<p><acronym class="acronym">BIND</acronym> 9 supports two alternative
+
+            <p><acronym class="acronym">BIND</acronym> 9 supports two alternative
               methods of granting clients the right to perform
               dynamic updates to a zone, configured by the
               <span class="command"><strong>allow-update</strong></span> and
               <span class="command"><strong>update-policy</strong></span> option, respectively.
             </p>
-<p>
+            <p>
               The <span class="command"><strong>allow-update</strong></span> clause is a simple
               access control list.  Any client that matches
               the ACL is granted permission to update any record
               in the zone.
             </p>
-<p>
+            <p>
               The <span class="command"><strong>update-policy</strong></span> clause
               allows more fine-grained control over what updates are
               allowed.  It specifies a set of rules, in which each rule
@@ -10170,7 +10979,7 @@ example.com. NS ns2.example.net.
               to specify update permissions based on client source
               address.
             </p>
-<p>
+            <p>
               <span class="command"><strong>update-policy</strong></span> rules are only meaningful
               for zones of type <span class="command"><strong>master</strong></span>, and are
               not allowed in any other zone type.
@@ -10178,7 +10987,7 @@ example.com. NS ns2.example.net.
               <span class="command"><strong>allow-update</strong></span> and
               <span class="command"><strong>update-policy</strong></span> at the same time.
             </p>
-<p>
+            <p>
               A pre-defined <span class="command"><strong>update-policy</strong></span> rule can be
               switched on with the command
               <span class="command"><strong>update-policy local;</strong></span>.
@@ -10201,30 +11010,35 @@ example.com. NS ns2.example.net.
               within the zone.  Assuming the key name is "local-ddns",
               this policy is equivalent to:
             </p>
-<pre class="programlisting">update-policy { grant local-ddns zonesub any; };
+
+            <pre class="programlisting">update-policy { grant local-ddns zonesub any; };
             </pre>
-<p>
+
+            <p>
               ...with the additional restriction that only clients
               connecting from the local system will be permitted to send
               updates.
             </p>
-<p>
+            <p>
               Note that only one session key is generated by
               <span class="command"><strong>named</strong></span>; all zones configured to use
               <span class="command"><strong>update-policy local</strong></span> will accept the same key.
             </p>
-<p>
+            <p>
               The command <span class="command"><strong>nsupdate -l</strong></span> implements this
               feature, sending requests to localhost and signing them using
               the key retrieved from the session key file.
             </p>
-<p>
+
+            <p>
               Other rule definitions look like this:
             </p>
+
 <pre class="programlisting">
 ( <span class="command"><strong>grant</strong></span> | <span class="command"><strong>deny</strong></span> ) <em class="replaceable"><code>identity</code></em> <em class="replaceable"><code>ruletype</code></em> [<span class="optional"> <em class="replaceable"><code>name</code></em> </span>] [<span class="optional"> <em class="replaceable"><code>types</code></em> </span>]
 </pre>
-<p>
+
+            <p>
               Each rule grants or denies privileges.  Rules are checked
               in the order in which they are specified in the
               <span class="command"><strong>update-policy</strong></span> statement. Once a message
@@ -10234,7 +11048,7 @@ example.com. NS ns2.example.net.
               <span class="command"><strong>ruletype</strong></span> field, and the interpretation
               of other fields varies depending on the rule type.
             </p>
-<p>
+            <p>
               In general, a rule is matched when the
               key that signed an update request matches the
               <span class="command"><strong>identity</strong></span> field, the name of the record
@@ -10244,7 +11058,7 @@ example.com. NS ns2.example.net.
               <span class="command"><strong>types</strong></span> field. Details for each rule type
               are described below.
             </p>
-<p>
+            <p>
               The <span class="command"><strong>identity</strong></span> field must be set to
               a fully-qualified domain name.  In most cases, this
               represensts the name of the TSIG or SIG(0) key that must be
@@ -10258,13 +11072,13 @@ example.com. NS ns2.example.net.
               (e.g, <strong class="userinput"><code>"host/machine@REALM"</code></strong>) or
               Windows realm (<strong class="userinput"><code>machine$@REALM</code></strong>).
             </p>
-<p>
+            <p>
               The <em class="replaceable"><code>name</code></em> field also specifies
               a fully-qualified domain name. This often
               represents the name of the record to be updated.
               Interpretation of this field is dependent on rule type.
             </p>
-<p>
+            <p>
               If no <span class="command"><strong>types</strong></span> are explicitly specified,
               then a rule matches all types except RRSIG, NS, SOA, NSEC
               and NSEC3. Types may be specified by name, including
@@ -10273,7 +11087,7 @@ example.com. NS ns2.example.net.
               is made to delete all records associated with a name,
               the rules are checked for each existing record type.
             </p>
-<p>
+            <p>
               The <em class="replaceable"><code>ruletype</code></em> field has 16
               values:
               <code class="varname">name</code>, <code class="varname">subdomain</code>,
@@ -10286,7 +11100,8 @@ example.com. NS ns2.example.net.
               <code class="varname">tcp-self</code>, <code class="varname">6to4-self</code>,
               <code class="varname">zonesub</code>, and <code class="varname">external</code>.
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="0.819in" class="1">
 <col width="3.681in" class="2">
@@ -10679,12 +11494,15 @@ example.com. NS ns2.example.net.
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="multiple_views"></a>Multiple views</h4></div></div></div>
-<p>
+
+            <p>
               When multiple views are in use, a zone may be
               referenced by more than one of them. Often, the views
               will contain different zones with the same name, allowing
@@ -10695,7 +11513,7 @@ example.com. NS ns2.example.net.
               way to do this: it allows a view to reference a zone that
               was defined in a previously configured view. Example:
             </p>
-<pre class="programlisting">
+            <pre class="programlisting">
 view internal {
     match-clients { 10/8; };
 
@@ -10713,11 +11531,11 @@ view external {
     };
 };
             </pre>
-<p>
+            <p>
               An <span class="command"><strong>in-view</strong></span> option cannot refer to a view
               that is configured later in the configuration file.
             </p>
-<p>
+            <p>
               A <span class="command"><strong>zone</strong></span> statement which uses the
               <span class="command"><strong>in-view</strong></span> option may not use any other
               options with the exception of <span class="command"><strong>forward</strong></span>
@@ -10725,41 +11543,45 @@ view external {
               the behavior of the containing view, rather than changing
               the zone object itself.)
             </p>
-<p>
+            <p>
               Zone level acls (e.g. allow-query, allow-transfer) and
               other configuration details of the zone are all set
               in the view the referenced zone is defined in.  Care
               need to be taken to ensure that acls are wide enough
               for all views referencing the zone.
             </p>
-<p>
+            <p>
               An <span class="command"><strong>in-view</strong></span> zone cannot be used as a
               response policy zone.
             </p>
-<p>
+            <p>
               An <span class="command"><strong>in-view</strong></span> zone is not intended to reference
               a <span class="command"><strong>forward</strong></span> zone.
             </p>
-</div>
-</div>
-</div>
-<div class="section">
+          </div>
+
+        </div>
+      </div>
+      <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="zone_file"></a>Zone File</h2></div></div></div>
-<div class="section">
+
+        <div class="section">
 <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>
-<p>
+
+          <p>
             This section, largely borrowed from RFC 1034, describes the
             concept of a Resource Record (RR) and explains when each is used.
             Since the publication of RFC 1034, several new RRs have been
             identified
             and implemented in the DNS. These are also included.
           </p>
-<div class="section">
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="id-1.6.6.2.3"></a>Resource Records</h4></div></div></div>
-<p>
+
+            <p>
               A domain name identifies a node.  Each node has a set of
               resource information, which may be empty.  The set of resource
               information associated with a particular name is composed of
@@ -10769,10 +11591,12 @@ view external {
               permitted for optimization purposes, for example, to specify
               that a particular nearby server be tried first. See <a class="xref" href="Bv9ARM.ch05.html#the_sortlist_statement" title="The sortlist Statement">the section called &#8220;The <span class="command"><strong>sortlist</strong></span> Statement&#8221;</a> and <a class="xref" href="Bv9ARM.ch05.html#rrset_ordering" title="RRset Ordering">the section called &#8220;RRset Ordering&#8221;</a>.
             </p>
-<p>
+
+            <p>
               The components of a Resource Record are:
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="1.000in" class="1">
 <col width="3.500in" class="2">
@@ -10847,11 +11671,13 @@ view external {
                     </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+            </div>
+            <p>
               The following are <span class="emphasis"><em>types</em></span> of valid RRs:
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="0.875in" class="1">
 <col width="3.625in" class="2">
@@ -11896,12 +12722,14 @@ view external {
                     </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+            </div>
+            <p>
               The following <span class="emphasis"><em>classes</em></span> of resource records
               are currently valid in the DNS:
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+<table border="1">
 <colgroup>
 <col width="0.875in" class="1">
 <col width="3.625in" class="2">
@@ -11954,8 +12782,10 @@ view external {
                     </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+            </div>
+
+            <p>
               The owner name is often implicit, rather than forming an
               integral
               part of the RR.  For example, many name servers internally form
@@ -11966,7 +12796,7 @@ view external {
               that
               fits the needs of the resource being described.
             </p>
-<p>
+            <p>
               The meaning of the TTL field is a time limit on how long an
               RR can be kept in a cache.  This limit does not apply to
               authoritative
@@ -11986,17 +12816,18 @@ view external {
               following
               the change.
             </p>
-<p>
+            <p>
               The data in the RDATA section of RRs is carried as a combination
               of binary strings and domain names.  The domain names are
               frequently
               used as "pointers" to other data in the DNS.
             </p>
-</div>
-<div class="section">
+          </div>
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="rr_text"></a>Textual expression of RRs</h4></div></div></div>
-<p>
+
+            <p>
               RRs are represented in binary form in the packets of the DNS
               protocol, and are usually represented in highly encoded form
               when
@@ -12009,13 +12840,13 @@ view external {
               possible
               using parentheses.
             </p>
-<p>
+            <p>
               The start of the line gives the owner of the RR.  If a line
               begins with a blank, then the owner is assumed to be the same as
               that of the previous RR.  Blank lines are often included for
               readability.
             </p>
-<p>
+            <p>
               Following the owner, we list the TTL, type, and class of the
               RR.  Class and type use the mnemonics defined above, and TTL is
               an integer before the type field.  In order to avoid ambiguity
@@ -12026,14 +12857,15 @@ view external {
               values
               are often omitted from examples in the interests of clarity.
             </p>
-<p>
+            <p>
               The resource data or RDATA section of the RR are given using
               knowledge of the typical representation for the data.
             </p>
-<p>
+            <p>
               For example, we might show the RRs carried in a message as:
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+<table border="1">
 <colgroup>
 <col width="1.381in" class="1">
 <col width="1.020in" class="2">
@@ -12137,21 +12969,23 @@ view external {
                     </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+            </div>
+            <p>
               The MX RRs have an RDATA section which consists of a 16-bit
               number followed by a domain name.  The address RRs use a
               standard
               IP address format to contain a 32-bit internet address.
             </p>
-<p>
+            <p>
               The above example shows six RRs, with two RRs at each of three
               domain names.
             </p>
-<p>
+            <p>
               Similarly we might see:
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+            <div class="informaltable">
+<table border="1">
 <colgroup>
 <col width="1.491in" class="1">
 <col width="1.067in" class="2">
@@ -12189,17 +13023,20 @@ view external {
                     </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+            </div>
+            <p>
               This example shows two addresses for
               <code class="literal">XX.LCS.MIT.EDU</code>, each of a different class.
             </p>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="mx_records"></a>Discussion of MX Records</h3></div></div></div>
-<p>
+
+          <p>
             As described above, domain servers store information as a
             series of resource records, each of which contains a particular
             piece of information about a given domain name (which is usually,
@@ -12208,7 +13045,8 @@ view external {
             and stored with some additional type information to help systems
             determine when the RR is relevant.
           </p>
-<p>
+
+          <p>
             MX records are used to control delivery of email. The data
             specified in the record is a priority and a domain name. The
             priority
@@ -12225,7 +13063,7 @@ view external {
             It <span class="emphasis"><em>must</em></span> have an associated address record
             (A or AAAA) &#8212; CNAME is not sufficient.
           </p>
-<p>
+          <p>
             For a given domain, if there is both a CNAME record and an
             MX record, the MX record is in error, and will be ignored.
             Instead,
@@ -12234,7 +13072,8 @@ view external {
             pointed to by the CNAME.
             For example:
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="1.708in" class="1">
 <col width="0.444in" class="2">
@@ -12371,18 +13210,20 @@ view external {
                   </td>
 </tr>
 </tbody>
-</table></div>
+</table>
+            </div>
 <p>
             Mail delivery will be attempted to <code class="literal">mail.example.com</code> and
             <code class="literal">mail2.example.com</code> (in
             any order), and if neither of those succeed, delivery to <code class="literal">mail.backup.org</code> will
             be attempted.
           </p>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="Setting_TTLs"></a>Setting TTLs</h3></div></div></div>
-<p>
+
+          <p>
             The time-to-live of the RR field is a 32-bit integer represented
             in units of seconds, and is primarily used by resolvers when they
             cache RRs. The TTL describes how long a RR can be cached before it
@@ -12390,7 +13231,8 @@ view external {
             currently
             used in a zone file.
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="0.750in" class="1">
 <col width="4.375in" class="2">
@@ -12445,16 +13287,18 @@ view external {
                   </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+          </div>
+          <p>
             All of these TTLs default to units of seconds, though units
             can be explicitly specified, for example, <code class="literal">1h30m</code>.
           </p>
-</div>
-<div class="section">
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="ipv4_reverse"></a>Inverse Mapping in IPv4</h3></div></div></div>
-<p>
+
+          <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
             and PTR records. Entries in the in-addr.arpa domain are made in
@@ -12469,7 +13313,8 @@ view external {
             PTR records if the machine has more than one name. For example,
             in the [<span class="optional">example.com</span>] domain:
           </p>
-<div class="informaltable"><table class="informaltable" border="1">
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="1.125in" class="1">
 <col width="4.000in" class="2">
@@ -12500,22 +13345,24 @@ view external {
                   </td>
 </tr>
 </tbody>
-</table></div>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+</table>
+          </div>
+          <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+            <p>
               The <span class="command"><strong>$ORIGIN</strong></span> lines in the examples
               are for providing context to the examples only &#8212; they do not
               necessarily
               appear in the actual usage. They are only used here to indicate
               that the example is relative to the listed origin.
             </p>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="zone_directives"></a>Other Zone File Directives</h3></div></div></div>
-<p>
+
+          <p>
             The Master File Format was initially defined in RFC 1035 and
             has subsequently been extended. While the Master File Format
             itself
@@ -12523,30 +13370,32 @@ view external {
             same
             class.
           </p>
-<p>
+          <p>
             Master File Directives include <span class="command"><strong>$ORIGIN</strong></span>, <span class="command"><strong>$INCLUDE</strong></span>,
             and <span class="command"><strong>$TTL.</strong></span>
           </p>
-<div class="section">
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="atsign"></a>The <span class="command"><strong>@</strong></span> (at-sign)</h4></div></div></div>
-<p>
+
+            <p>
               When used in the label (or name) field, the asperand or
               at-sign (@) symbol represents the current origin.
               At the start of the zone file, it is the
               &lt;<code class="varname">zone_name</code>&gt; (followed by
               trailing dot).
             </p>
-</div>
-<div class="section">
+          </div>
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="origin_directive"></a>The <span class="command"><strong>$ORIGIN</strong></span> Directive</h4></div></div></div>
-<p>
+
+            <p>
               Syntax: <span class="command"><strong>$ORIGIN</strong></span>
               <em class="replaceable"><code>domain-name</code></em>
               [<span class="optional"><em class="replaceable"><code>comment</code></em></span>]
             </p>
-<p><span class="command"><strong>$ORIGIN</strong></span>
+            <p><span class="command"><strong>$ORIGIN</strong></span>
               sets the domain name that will be appended to any
               unqualified records. When a zone is first read in there
               is an implicit <span class="command"><strong>$ORIGIN</strong></span>
@@ -12556,42 +13405,47 @@ view external {
               the domain specified in the <span class="command"><strong>$ORIGIN</strong></span>
               argument if it is not absolute.
             </p>
+
 <pre class="programlisting">
 $ORIGIN example.com.
 WWW     CNAME   MAIN-SERVER
 </pre>
-<p>
+
+            <p>
               is equivalent to
             </p>
+
 <pre class="programlisting">
 WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
 </pre>
-</div>
-<div class="section">
+
+          </div>
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="include_directive"></a>The <span class="command"><strong>$INCLUDE</strong></span> Directive</h4></div></div></div>
-<p>
+
+            <p>
               Syntax: <span class="command"><strong>$INCLUDE</strong></span>
               <em class="replaceable"><code>filename</code></em>
               [<span class="optional">
 <em class="replaceable"><code>origin</code></em> </span>]
               [<span class="optional"> <em class="replaceable"><code>comment</code></em> </span>]
             </p>
-<p>
+            <p>
               Read and process the file <code class="filename">filename</code> as
               if it were included into the file at this point.  If <span class="command"><strong>origin</strong></span> is
               specified the file is processed with <span class="command"><strong>$ORIGIN</strong></span> set
               to that value, otherwise the current <span class="command"><strong>$ORIGIN</strong></span> is
               used.
             </p>
-<p>
+            <p>
               The origin and the current domain name
               revert to the values they had prior to the <span class="command"><strong>$INCLUDE</strong></span> once
               the file has been read.
             </p>
-<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+            <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
 <h3 class="title">Note</h3>
-<p>
+              <p>
                 RFC 1035 specifies that the current origin should be restored
                 after
                 an <span class="command"><strong>$INCLUDE</strong></span>, but it is silent
@@ -12601,31 +13455,33 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
                 This could be construed as a deviation from RFC 1035, a
                 feature, or both.
               </p>
-</div>
-</div>
-<div class="section">
+            </div>
+          </div>
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="ttl_directive"></a>The <span class="command"><strong>$TTL</strong></span> Directive</h4></div></div></div>
-<p>
+
+            <p>
               Syntax: <span class="command"><strong>$TTL</strong></span>
               <em class="replaceable"><code>default-ttl</code></em>
               [<span class="optional">
 <em class="replaceable"><code>comment</code></em> </span>]
             </p>
-<p>
+            <p>
               Set the default Time To Live (TTL) for subsequent records
               with undefined TTLs. Valid TTLs are of the range 0-2147483647
               seconds.
             </p>
-<p><span class="command"><strong>$TTL</strong></span>
+            <p><span class="command"><strong>$TTL</strong></span>
                is defined in RFC 2308.
             </p>
-</div>
-</div>
-<div class="section">
+          </div>
+        </div>
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="generate_directive"></a><acronym class="acronym">BIND</acronym> Master File Extension: the  <span class="command"><strong>$GENERATE</strong></span> Directive</h3></div></div></div>
-<p>
+
+          <p>
             Syntax: <span class="command"><strong>$GENERATE</strong></span>
             <em class="replaceable"><code>range</code></em>
             <em class="replaceable"><code>lhs</code></em>
@@ -12635,7 +13491,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
             <em class="replaceable"><code>rhs</code></em>
             [<span class="optional"><em class="replaceable"><code>comment</code></em></span>]
           </p>
-<p><span class="command"><strong>$GENERATE</strong></span>
+          <p><span class="command"><strong>$GENERATE</strong></span>
             is used to create a series of resource records that only
             differ from each other by an
             iterator. <span class="command"><strong>$GENERATE</strong></span> can be used to
@@ -12643,12 +13499,15 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
             sub /24 reverse delegations described in RFC 2317:
             Classless IN-ADDR.ARPA delegation.
           </p>
+
 <pre class="programlisting">$ORIGIN 0.0.192.IN-ADDR.ARPA.
 $GENERATE 1-2 @ NS SERVER$.EXAMPLE.
 $GENERATE 1-127 $ CNAME $.0</pre>
-<p>
+
+          <p>
             is equivalent to
           </p>
+
 <pre class="programlisting">0.0.0.192.IN-ADDR.ARPA. NS SERVER1.EXAMPLE.
 0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
 1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
@@ -12656,18 +13515,22 @@ $GENERATE 1-127 $ CNAME $.0</pre>
 ...
 127.0.0.192.IN-ADDR.ARPA. CNAME 127.0.0.0.192.IN-ADDR.ARPA.
 </pre>
-<p>
+
+           <p>
             Generate a set of A and MX records.  Note the MX's right hand
             side is a quoted string.  The quotes will be stripped when the
             right hand side is processed.
            </p>
+
 <pre class="programlisting">
 $ORIGIN EXAMPLE.
 $GENERATE 1-127 HOST-$ A 1.2.3.$
 $GENERATE 1-127 HOST-$ MX "0 ."</pre>
-<p>
+
+          <p>
             is equivalent to
           </p>
+
 <pre class="programlisting">HOST-1.EXAMPLE.   A  1.2.3.1
 HOST-1.EXAMPLE.   MX 0 .
 HOST-2.EXAMPLE.   A  1.2.3.2
@@ -12678,7 +13541,9 @@ HOST-3.EXAMPLE.   MX 0 .
 HOST-127.EXAMPLE. A  1.2.3.127
 HOST-127.EXAMPLE. MX 0 .
 </pre>
-<div class="informaltable"><table class="informaltable" border="1">
+
+          <div class="informaltable">
+            <table border="1">
 <colgroup>
 <col width="0.875in" class="1">
 <col width="4.250in" class="2">
@@ -12806,27 +13671,30 @@ HOST-127.EXAMPLE. MX 0 .
                   </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+          </div>
+          <p>
             The <span class="command"><strong>$GENERATE</strong></span> directive is a <acronym class="acronym">BIND</acronym> extension
             and not part of the standard zone file format.
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="zonefile_format"></a>Additional File Formats</h3></div></div></div>
-<p>
+
+          <p>
             In addition to the standard textual format, BIND 9
             supports the ability to read or dump to zone files in
             other formats.
           </p>
-<p>
+          <p>
             The <code class="constant">raw</code> format is
             a binary representation of zone data in a manner similar
             to that used in zone transfers.  Since it does not require
             parsing text, load time is significantly reduced.
           </p>
-<p>
+          <p>
             An even faster alternative is the <code class="constant">map</code>
             format, which is an image of a <acronym class="acronym">BIND</acronym> 9
             in-memory zone database; it is capable of being loaded
@@ -12834,7 +13702,7 @@ HOST-127.EXAMPLE. MX 0 .
             function; the zone can begin serving queries almost
             immediately.
           </p>
-<p>
+          <p>
             For a primary server, a zone file in
             <code class="constant">raw</code> or <code class="constant">map</code>
             format is expected to be generated from a textual zone
@@ -12845,7 +13713,7 @@ HOST-127.EXAMPLE. MX 0 .
             <span class="command"><strong>named</strong></span> dumps the zone contents after
             zone transfer or when applying prior updates.
           </p>
-<p>
+          <p>
             If a zone file in a binary format needs manual modification,
             it first must be converted to a textual form by the
             <span class="command"><strong>named-compilezone</strong></span> command.  All
@@ -12853,7 +13721,7 @@ HOST-127.EXAMPLE. MX 0 .
             should then be converted to the binary form by the
             <span class="command"><strong>named-compilezone</strong></span> command again.
           </p>
-<p>
+          <p>
             Note that <span class="command"><strong>map</strong></span> format is extremely
             architecture-specific.  A <code class="constant">map</code>
             file <span class="emphasis"><em>cannot</em></span> be used on a system
@@ -12870,12 +13738,14 @@ HOST-127.EXAMPLE. MX 0 .
             portable backup of such a file, conversion to
             <code class="constant">text</code> format is recommended.
           </p>
-</div>
-</div>
-<div class="section">
+        </div>
+      </div>
+
+      <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="statistics"></a>BIND9 Statistics</h2></div></div></div>
-<p>
+
+        <p>
           <acronym class="acronym">BIND</acronym> 9 maintains lots of statistics
           information and provides several interfaces for users to
           get access to the statistics.
@@ -12884,11 +13754,14 @@ HOST-127.EXAMPLE. MX 0 .
           are meaningful in <acronym class="acronym">BIND</acronym> 9,
           and other information that is considered useful.
         </p>
-<p>
+
+        <p>
           The statistics information is categorized into the following
           sections.
         </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+        <div class="informaltable">
+          <table border="1">
 <colgroup>
 <col width="3.300in" class="1">
 <col width="2.625in" class="2">
@@ -13002,8 +13875,10 @@ HOST-127.EXAMPLE. MX 0 .
                 </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+        </div>
+
+        <p>
           A subset of Name Server Statistics is collected and shown
           per zone for which the server has the authority when
           <span class="command"><strong>zone-statistics</strong></span> is set to
@@ -13013,11 +13888,13 @@ HOST-127.EXAMPLE. MX 0 .
           Usage&#8221;</a>
           for further details.
         </p>
-<p>
+
+        <p>
           These statistics counters are shown with their zone and
           view names. The view name is omitted when the server is
           not configured with explicit views.</p>
-<p>
+
+        <p>
           There are currently two user interfaces to get access to the
           statistics.
           One is in the plain text format dumped to the file specified
@@ -13027,16 +13904,18 @@ HOST-127.EXAMPLE. MX 0 .
           is specified in the configuration file
           (see <a class="xref" href="Bv9ARM.ch05.html#statschannels" title="statistics-channels Statement Grammar">the section called &#8220;<span class="command"><strong>statistics-channels</strong></span> Statement Grammar&#8221;</a>.)
         </p>
-<div class="section">
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="statsfile"></a>The Statistics File</h3></div></div></div>
-<p>
+
+          <p>
             The text format statistics dump begins with a line, like:
           </p>
-<p>
+          <p>
             <span class="command"><strong>+++ Statistics Dump +++ (973798949)</strong></span>
           </p>
-<p>
+          <p>
             The number in parentheses is a standard
             Unix-style timestamp, measured as seconds since January 1, 1970.
 
@@ -13045,28 +13924,33 @@ HOST-127.EXAMPLE. MX 0 .
             as described above.
             Each section begins with a line, like:
           </p>
-<p>
+
+          <p>
             <span class="command"><strong>++ Name Server Statistics ++</strong></span>
           </p>
-<p>
+
+          <p>
             Each section consists of lines, each containing the statistics
             counter value followed by its textual description.
             See below for available counters.
             For brevity, counters that have a value of 0 are not shown
             in the statistics file.
           </p>
-<p>
+
+          <p>
             The statistics dump ends with the line where the
             number is identical to the number in the beginning line; for example:
           </p>
-<p>
+          <p>
             <span class="command"><strong>--- Statistics Dump --- (973798949)</strong></span>
           </p>
-</div>
-<div class="section">
+        </div>
+
+        <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="statistics_counters"></a>Statistics Counters</h3></div></div></div>
-<p>
+
+          <p>
             The following tables summarize statistics counters that
             <acronym class="acronym">BIND</acronym> 9 provides.
             For each row of the tables, the leftmost column is the
@@ -13082,7 +13966,8 @@ HOST-127.EXAMPLE. MX 0 .
             it gives the corresponding counter name of the
             <acronym class="acronym">BIND</acronym> 8 statistics, if applicable.
           </p>
-<p>
+
+          <p>
             Note: BIND statistics counters are signed 64-bit values on
             all platforms except one: 32-bit Windows, where they are
             signed 32-bit values.  Given that 32-bit values have a
@@ -13090,10 +13975,13 @@ HOST-127.EXAMPLE. MX 0 .
             counters in 32-bit Windows builds overflow significantly
             more quickly than on all other platforms.
           </p>
-<div class="section">
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="stats_counters"></a>Name Server Statistics Counters</h4></div></div></div>
-<div class="informaltable"><table class="informaltable" border="1">
+
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="1.150in" class="2">
@@ -13711,12 +14599,16 @@ HOST-127.EXAMPLE. MX 0 .
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="zone_stats"></a>Zone Maintenance Statistics Counters</h4></div></div></div>
-<div class="informaltable"><table class="informaltable" border="1">
+
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="3.350in" class="2">
@@ -13865,12 +14757,16 @@ HOST-127.EXAMPLE. MX 0 .
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="resolver_stats"></a>Resolver Statistics Counters</h4></div></div></div>
-<div class="informaltable"><table class="informaltable" border="1">
+
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="1.150in" class="2">
@@ -14248,12 +15144,16 @@ HOST-127.EXAMPLE. MX 0 .
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="socket_stats"></a>Socket I/O Statistics Counters</h4></div></div></div>
-<p>
+
+            <p>
               Socket I/O statistics counters are defined per socket
               types, which are
               <span class="command"><strong>UDP4</strong></span> (UDP/IPv4),
@@ -14268,7 +15168,9 @@ HOST-127.EXAMPLE. MX 0 .
               Not all counters are available for all socket types;
               exceptions are noted in the description field.
             </p>
-<div class="informaltable"><table class="informaltable" border="1">
+
+            <div class="informaltable">
+              <table border="1">
 <colgroup>
 <col width="1.150in" class="1">
 <col width="3.350in" class="2">
@@ -14403,45 +15305,58 @@ HOST-127.EXAMPLE. MX 0 .
                     </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section">
+</table>
+            </div>
+          </div>
+
+          <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="bind8_compatibility"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div>
-<p>
+
+            <p>
               Most statistics counters that were available
               in <span class="command"><strong>BIND</strong></span> 8 are also supported in
               <span class="command"><strong>BIND</strong></span> 9 as shown in the above tables.
               Here are notes about other counters that do not appear
               in these tables.
             </p>
-<div class="variablelist"><dl class="variablelist">
+
+            <div class="variablelist"><dl class="variablelist">
 <dt><span class="term"><span class="command"><strong>RFwdR,SFwdR</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     These counters are not supported
                     because <span class="command"><strong>BIND</strong></span> 9 does not adopt
                     the notion of <span class="emphasis"><em>forwarding</em></span>
                     as <span class="command"><strong>BIND</strong></span> 8 did.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>RAXFR</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     This counter is accessible in the Incoming Queries section.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>RIQ</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     This counter is accessible in the Incoming Requests section.
-                  </p></dd>
+                  </p>
+                </dd>
 <dt><span class="term"><span class="command"><strong>ROpts</strong></span></span></dt>
-<dd><p>
+<dd>
+                  <p>
                     This counter is not supported
                     because <span class="command"><strong>BIND</strong></span> 9 does not care
                     about IP options in the first place.
-                  </p></dd>
+                  </p>
+                </dd>
 </dl></div>
-</div>
-</div>
-</div>
-</div>
+          </div>
+        </div>
+      </div>
+
+    </div>
 <div class="navfooter">
 <hr>
 <table width="100%" summary="Navigation footer">
index 732034f991b7a502091018e6649fe4cbdcfac97d..0ae2ac68489c76721b2c1fc256e0e3342ad4ebf2 100644 (file)
@@ -10,7 +10,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Appendix A. Release Notes</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
 <link rel="home" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="up" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
 <link rel="prev" href="Bv9ARM.ch07.html" title="Chapter 7. Troubleshooting">
 </dl></dd>
 </dl>
 </div>
-<div class="section">
+      <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="id-1.9.2"></a>Release Notes for BIND Version 9.17.0</h2></div></div></div>
-<div class="section">
+  
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes_intro"></a>Introduction</h3></div></div></div>
-<p>
+  <p>
     BIND 9.17 is an unstable development release of BIND.
     This document summarizes new features and functional changes that
     have been introduced on this branch.  With each development release
     leading up to the stable BIND 9.18 release, this document will be
     updated with additional features added and bugs fixed.
   </p>
-<p>
+  <p>
     Please see the file <code class="filename">CHANGES</code> for a more
     detailed list of changes and bug fixes.
   </p>
 </div>
-<div class="section">
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes_platforms"></a>Supported Platforms</h3></div></div></div>
-<p>
+  <p>
     To build on UNIX-like systems, BIND requires support for POSIX.1c
     threads (IEEE Std 1003.1c-1995), the Advanced Sockets API for
     IPv6 (RFC 3542), and standard atomic operations provided by the
     C compiler.
   </p>
-<p>
+  <p>
     The <code class="filename">libuv</code> asynchronous I/O library and the
     OpenSSL cryptography library must be available for the target
     platform.  A PKCS#11 provider can be used instead of OpenSSL for
@@ -83,7 +84,7 @@
     but OpenSSL is still required for general cryptography operations
     such as hashing and random number generation.
   </p>
-<p>
+  <p>
     More information can be found in the <code class="filename">PLATFORMS.md</code>
     file that is included in the source distribution of BIND 9.  If your
     compiler and system libraries provide the above features, BIND 9
     for systems that are still supported by their respective vendors.
   </p>
 </div>
-<div class="section">
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes_download"></a>Download</h3></div></div></div>
-<p>
+  <p>
     The latest versions of BIND 9 software can always be found at
     <a class="link" href="https://www.isc.org/download/" target="_top">https://www.isc.org/download/</a>.
     There you will find additional information about each release,
     operating systems.
   </p>
 </div>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes-9.17.0"></a>Notes for BIND 9.17.0</h3></div></div></div>
-<p>
-    System-provided pthread rwlocks implementation is used by default instead of
-    built-in ISC implementation of rwlocks. Please be aware that unpatched glibc
-    version from 2.26 had a <a class="link" href="https://sourceware.org/bugzilla/show_bug.cgi?id=23844" target="_top">bug</a>
-    that could cause BIND 9 to deadlock.  The fix has been released as part of
-    glibc release 2.30, and various Linux distributions have patched their glibc
-    version with a notable exception of Ubuntu 18.04 (Bionic) which is work in
-    progress. If you are running on affected system (e.g. Ubuntu 18.04) you need
-    to compile BIND 9 with --disable-pthread-rwlock until Canonical releases
-    <a class="link" href="https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1864864" target="_top">fixed
-    version</a>.
-  </p>
-<div class="section">
+
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-known"></a>Known Issues</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          UDP network ports used for listening can no longer simultaneously be
+          used for sending traffic.  An example configuration which triggers
+          this issue would be one which uses the same
+          <em class="replaceable"><code>address:port</code></em> pair for
+          <span class="command"><strong>listen-on(-v6)</strong></span> statements as for
+          <span class="command"><strong>notify-source(-v6)</strong></span> or
+          <span class="command"><strong>transfer-source(-v6)</strong></span>.  While this issue affects all
+          operating systems, it only triggers log messages (e.g. "unable to
+          create dispatch for reserved port") on some of them.  There are
+          currently no plans to make such a combination of settings work again.
+        </p>
+      </li></ul></div>
+  </div>
+
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-new"></a>New Features</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          When a secondary server receives a large incremental zone
+          transfer (IXFR), it can have a negative impact on query
+          performance while the incremental changes are applied to
+          the zone. To address this, <span class="command"><strong>named</strong></span> can now
+          limit the size of IXFR responses it sends in response to zone
+          transfer requests. If an IXFR response would be larger than an
+          AXFR of the entire zone, it will send an AXFR resonse instead.
+        </p>
+        <p>
+          This behavior is controlled by the <span class="command"><strong>max-ixfr-ratio</strong></span>
+          option - a percentage value representing the ratio of IXFR size
+          to the size of a full zone transfer. The default is
+          <code class="literal">100%</code>. [GL #1515]
+        </p>
+      </li></ul></div>
+  </div>
+
+  <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="relnotes-9.17.0-changes"></a>Feature Changes</h4></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
-         The <span class="command"><strong>rndc nta -dump</strong></span> and
-         <span class="command"><strong>rndc secroots</strong></span> commands now both include
-         <span class="command"><strong>validate-except</strong></span> entries when listing negative
-         trust anchors. These are indicated by the keyword
-         <code class="literal">permanent</code> in place of the expiry
-         date. [GL #1532]
-        </p></li></ul></div>
-</div>
-<div class="section">
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+        <p>
+          The system-provided POSIX Threads read-write lock implementation is
+          now used by default instead of the native BIND 9 implementation.
+          Please be aware that glibc versions 2.26 through 2.29 had a
+          <a class="link" href="https://sourceware.org/bugzilla/show_bug.cgi?id=23844" target="_top">bug</a>
+          that could cause BIND 9 to deadlock. A fix was released in glibc 2.30,
+          and most current Linux distributions have patched or updated glibc,
+          with the notable exception of Ubuntu 18.04 (Bionic) which is a work in
+          progress. If you are running on an affected operating system, compile
+          BIND 9 with <span class="command"><strong>--disable-pthread-rwlock</strong></span> until a fixed
+          version of glibc is available. [GL !3125]
+        </p>
+      </li>
+<li class="listitem">
+        <p>
+          The <span class="command"><strong>rndc nta -dump</strong></span> and
+          <span class="command"><strong>rndc secroots</strong></span> commands now both include
+          <span class="command"><strong>validate-except</strong></span> entries when listing negative
+          trust anchors. These are indicated by the keyword
+          <code class="literal">permanent</code> in place of the expiry
+          date. [GL #1532]
+        </p>
+      </li>
+</ul></div>
+  </div>
+
+  <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="relnotes-9.17.0-bugs"></a>Bug Fixes</h4></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
-         Fixed re-signing issues with inline zones which resulted in
-         records being re-signed late or not at all.
-        </p></li></ul></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          Fixed re-signing issues with inline zones which resulted in
+          records being re-signed late or not at all.
+        </p>
+      </li></ul></div>
+  </div>
+
 </div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="relnotes-9.17.0-new"></a>New Features</h4></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-<p>
-         When a secondary server receives a large incremental zone
-         transfer (IXFR), it can have a negative impact on query
-         performance while the incremental changes are applied to
-         the zone. To address this, <span class="command"><strong>named</strong></span> can now
-         limit the size of IXFR responses it sends in response to zone
-         transfer requests. If an IXFR response would be larger than an
-         AXFR of the entire zone, it will send an AXFR resonse instead.
-       </p>
-<p>
-         This behavior is controlled by the <span class="command"><strong>max-ixfr-ratio</strong></span>
-         option - a percentage value representing the ratio of IXFR size
-         to the size of a full zone transfer. This value cannot exceed
-         100%, which is also the default. [GL #1515]
-       </p>
-</li></ul></div>
-</div>
-</div>
-<div class="section">
+
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes_license"></a>License</h3></div></div></div>
-<p>
+  <p>
     BIND 9 is open source software licensed under the terms of the Mozilla
     Public License, version 2.0 (see the <code class="filename">LICENSE</code>
     file for the full text).
   </p>
-<p>
+  <p>
     The license requires that if you make changes to BIND and distribute
     them outside your organization, those changes must be published under
     the same license. It does not require that you publish or disclose
     modifications, without redistributing it, nor anyone redistributing
     BIND without changes.
   </p>
-<p>
+  <p>
     Those wishing to discuss license compliance may contact ISC at
     <a class="link" href="https://www.isc.org/contact/" target="_top">
       https://www.isc.org/contact/</a>.
   </p>
 </div>
-<div class="section">
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="end_of_life"></a>End of Life</h3></div></div></div>
-<p>
+  <p>
     BIND 9.17 is an unstable development branch. When its development
     is complete, it will be renamed to BIND 9.18, which will be a
     stable branch.
   </p>
-<p>
+  <p>
     The end of life date for BIND 9.18 has not yet been determined.
     For those needing long term support, the current Extended Support
     Version (ESV) is BIND 9.11, which will be supported until at
     least December 2021.
   </p>
-<p>
+  <p>
     See
     <a class="link" href="https://kb.isc.org/docs/aa-00896" target="_top">https://kb.isc.org/docs/aa-00896</a>
     for details of ISC's software support policy.
   </p>
 </div>
-<div class="section">
+  <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes_thanks"></a>Thank You</h3></div></div></div>
-<p>
+  <p>
     Thank you to everyone who assisted us in making this release possible.
   </p>
 </div>
 </div>
-</div>
+    </div>
 <div class="navfooter">
 <hr>
 <table width="100%" summary="Navigation footer">
index 47acf39c26e28e092866db04916be6d5ad12a613..362656c78e361c4148bc338ff248feb63c0f7c7c 100644 (file)
Binary files a/doc/arm/Bv9ARM.pdf and b/doc/arm/Bv9ARM.pdf differ
index e368b3198da2887c94e189c4f66a85551bf978dc..0ef1ea00629055e0aedca7d6632a48a5121bda27 100644 (file)
 <div class="titlepage"><div><div><h3 class="title">
 <a name="relnotes-9.17.0"></a>Notes for BIND 9.17.0</h3></div></div></div>
 
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-known"></a>Known Issues</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          UDP network ports used for listening can no longer simultaneously be
+          used for sending traffic.  An example configuration which triggers
+          this issue would be one which uses the same
+          <em class="replaceable"><code>address:port</code></em> pair for
+          <span class="command"><strong>listen-on(-v6)</strong></span> statements as for
+          <span class="command"><strong>notify-source(-v6)</strong></span> or
+          <span class="command"><strong>transfer-source(-v6)</strong></span>.  While this issue affects all
+          operating systems, it only triggers log messages (e.g. "unable to
+          create dispatch for reserved port") on some of them.  There are
+          currently no plans to make such a combination of settings work again.
+        </p>
+      </li></ul></div>
+  </div>
+
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-new"></a>New Features</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          When a secondary server receives a large incremental zone
+          transfer (IXFR), it can have a negative impact on query
+          performance while the incremental changes are applied to
+          the zone. To address this, <span class="command"><strong>named</strong></span> can now
+          limit the size of IXFR responses it sends in response to zone
+          transfer requests. If an IXFR response would be larger than an
+          AXFR of the entire zone, it will send an AXFR resonse instead.
+        </p>
+        <p>
+          This behavior is controlled by the <span class="command"><strong>max-ixfr-ratio</strong></span>
+          option - a percentage value representing the ratio of IXFR size
+          to the size of a full zone transfer. The default is
+          <code class="literal">100%</code>. [GL #1515]
+        </p>
+      </li></ul></div>
+  </div>
+
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-changes"></a>Feature Changes</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+        <p>
+          The system-provided POSIX Threads read-write lock implementation is
+          now used by default instead of the native BIND 9 implementation.
+          Please be aware that glibc versions 2.26 through 2.29 had a
+          <a class="link" href="https://sourceware.org/bugzilla/show_bug.cgi?id=23844" target="_top">bug</a>
+          that could cause BIND 9 to deadlock. A fix was released in glibc 2.30,
+          and most current Linux distributions have patched or updated glibc,
+          with the notable exception of Ubuntu 18.04 (Bionic) which is a work in
+          progress. If you are running on an affected operating system, compile
+          BIND 9 with <span class="command"><strong>--disable-pthread-rwlock</strong></span> until a fixed
+          version of glibc is available. [GL !3125]
+        </p>
+      </li>
+<li class="listitem">
+        <p>
+          The <span class="command"><strong>rndc nta -dump</strong></span> and
+          <span class="command"><strong>rndc secroots</strong></span> commands now both include
+          <span class="command"><strong>validate-except</strong></span> entries when listing negative
+          trust anchors. These are indicated by the keyword
+          <code class="literal">permanent</code> in place of the expiry
+          date. [GL #1532]
+        </p>
+      </li>
+</ul></div>
+  </div>
+
+  <div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="relnotes-9.17.0-bugs"></a>Bug Fixes</h4></div></div></div>
+    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+        <p>
+          Fixed re-signing issues with inline zones which resulted in
+          records being re-signed late or not at all.
+        </p>
+      </li></ul></div>
+  </div>
+
 </div>
 
   <div class="section">
index 920fe3ac6c24fc17dc9c649d8b781f07211a413a..676fc93d4871abe6216510eaf9a3f33c89a61e5d 100644 (file)
Binary files a/doc/arm/notes.pdf and b/doc/arm/notes.pdf differ
index c0906231c6d80000a2bd2c64ccb871136a6a87c3..47a86c36598e2bb1c5b30d5647e763605c2dda77 100644 (file)
@@ -38,6 +38,52 @@ operating systems.
 
 Notes for BIND 9.17.0
 
+Known Issues
+
+  * UDP network ports used for listening can no longer simultaneously be
+    used for sending traffic. An example configuration which triggers this
+    issue would be one which uses the same address:port pair for listen-on
+    (-v6) statements as for notify-source(-v6) or transfer-source(-v6).
+    While this issue affects all operating systems, it only triggers log
+    messages (e.g. "unable to create dispatch for reserved port") on some
+    of them. There are currently no plans to make such a combination of
+    settings work again.
+
+New Features
+
+  * When a secondary server receives a large incremental zone transfer
+    (IXFR), it can have a negative impact on query performance while the
+    incremental changes are applied to the zone. To address this, named
+    can now limit the size of IXFR responses it sends in response to zone
+    transfer requests. If an IXFR response would be larger than an AXFR of
+    the entire zone, it will send an AXFR resonse instead.
+
+    This behavior is controlled by the max-ixfr-ratio option - a
+    percentage value representing the ratio of IXFR size to the size of a
+    full zone transfer. The default is 100%. [GL #1515]
+
+Feature Changes
+
+  * The system-provided POSIX Threads read-write lock implementation is
+    now used by default instead of the native BIND 9 implementation.
+    Please be aware that glibc versions 2.26 through 2.29 had a bug that
+    could cause BIND 9 to deadlock. A fix was released in glibc 2.30, and
+    most current Linux distributions have patched or updated glibc, with
+    the notable exception of Ubuntu 18.04 (Bionic) which is a work in
+    progress. If you are running on an affected operating system, compile
+    BIND 9 with --disable-pthread-rwlock until a fixed version of glibc is
+    available. [GL !3125]
+
+  * The rndc nta -dump and rndc secroots commands now both include
+    validate-except entries when listing negative trust anchors. These are
+    indicated by the keyword permanent in place of the expiry date. [GL
+    #1532]
+
+Bug Fixes
+
+  * Fixed re-signing issues with inline zones which resulted in records
+    being re-signed late or not at all.
+
 License
 
 BIND 9 is open source software licensed under the terms of the Mozilla
index 0f0dcc21b9e5a322fd614cefe73008a79d819828..da91545acaaaca996c9a5f5afea884e3ec49352b 100644 (file)
@@ -206,7 +206,7 @@ options {
         fstrm-set-output-queue-model ( mpsc | spsc ); // not configured
         fstrm-set-output-queue-size <integer>; // not configured
         fstrm-set-reopen-interval <duration>; // not configured
-        geoip-directory ( <quoted_string> | none );
+        geoip-directory ( <quoted_string> | none ); // not configured
         geoip-use-ecs <boolean>; // obsolete
         glue-cache <boolean>;
         has-old-clients <boolean>; // ancient
@@ -227,7 +227,7 @@ options {
         listen-on-v6 [ port <integer> ] [ dscp
             <integer> ] {
             <address_match_element>; ... }; // may occur multiple times
-        lmdb-mapsize <sizeval>;
+        lmdb-mapsize <sizeval>; // non-operational
         lock-file ( <quoted_string> | none );
         maintain-ixfr-base <boolean>; // ancient
         managed-keys-directory <quoted_string>;
@@ -582,7 +582,7 @@ view <string> [ <class> ] {
         }; // may occur multiple times
         key-directory <quoted_string>;
         lame-ttl <duration>;
-        lmdb-mapsize <sizeval>;
+        lmdb-mapsize <sizeval>; // non-operational
         maintain-ixfr-base <boolean>; // ancient
         managed-keys { <string> (
             static-key | initial-key
index 7a7f1fb04daead536fca3dabf05ff284451a0bb4..a73efddc885c2caadf5f2e6941455b0989f9eaa4 100644 (file)
@@ -188,7 +188,7 @@ options {
         fstrm-set-output-queue-model ( mpsc | spsc ); // not configured
         fstrm-set-output-queue-size <integer>; // not configured
         fstrm-set-reopen-interval <duration>; // not configured
-        geoip-directory ( <quoted_string> | none );
+        geoip-directory ( <quoted_string> | none ); // not configured
         glue-cache <boolean>;
         heartbeat-interval <integer>;
         hostname ( <quoted_string> | none );
@@ -205,7 +205,7 @@ options {
         listen-on-v6 [ port <integer> ] [ dscp
             <integer> ] {
             <address_match_element>; ... }; // may occur multiple times
-        lmdb-mapsize <sizeval>;
+        lmdb-mapsize <sizeval>; // non-operational
         lock-file ( <quoted_string> | none );
         managed-keys-directory <quoted_string>;
         masterfile-format ( map | raw | text );
@@ -523,7 +523,7 @@ view <string> [ <class> ] {
         }; // may occur multiple times
         key-directory <quoted_string>;
         lame-ttl <duration>;
-        lmdb-mapsize <sizeval>;
+        lmdb-mapsize <sizeval>; // non-operational
         managed-keys { <string> (
             static-key | initial-key
             | static-ds | initial-ds