]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1367] Added sections about DHCP in Reference Guide, fixed whitespaces.
authorTomek Mrugalski <tomasz@isc.org>
Fri, 23 Dec 2011 17:11:19 +0000 (18:11 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Fri, 23 Dec 2011 17:11:19 +0000 (18:11 +0100)
doc/guide/bind10-guide.xml

index b1861111fdc17228afb4aa4e73618a8d989366f7..6cea253024d5375117f8f239c95d7e30feff4742 100644 (file)
 
     <abstract>
       <para>BIND 10 is a Domain Name System (DNS) suite managed by
-       Internet Systems Consortium (ISC). It includes DNS libraries
-       and modular components for controlling authoritative and
-       recursive DNS servers.
+        Internet Systems Consortium (ISC). It includes DNS libraries
+        and modular components for controlling authoritative and
+        recursive DNS servers.
       </para>
       <para>
         This is the reference guide for BIND 10 version &__VERSION__;.
-       The most up-to-date version of this document (in PDF, HTML,
-       and plain text formats), along with other documents for
-       BIND 10, can be found at <ulink url="http://bind10.isc.org/docs"/>.
-       </para> </abstract>
+        The most up-to-date version of this document (in PDF, HTML,
+        and plain text formats), along with other documents for
+        BIND 10, can be found at <ulink url="http://bind10.isc.org/docs"/>.
+        </para> </abstract>
 
       <releaseinfo>This is the reference guide for BIND 10 version
         &__VERSION__;.</releaseinfo>
       </para>
 
       <para>
-       BIND 10 uses the Botan crypto library for C++. It requires
-       at least Botan version 1.8.
+        BIND 10 uses the Botan crypto library for C++. It requires
+        at least Botan version 1.8.
       </para>
 
       <para>
-       BIND 10 uses the log4cplus C++ logging library. It requires
-       at least log4cplus version 1.0.3.
+        BIND 10 uses the log4cplus C++ logging library. It requires
+        at least log4cplus version 1.0.3.
       </para>
 
       <para>
-       The authoritative server requires SQLite 3.3.9 or newer.
-       The <command>b10-xfrin</command>, <command>b10-xfrout</command>,
-       and <command>b10-zonemgr</command> modules require the
-       libpython3 library and the Python _sqlite3.so module.
+        The authoritative server requires SQLite 3.3.9 or newer.
+        The <command>b10-xfrin</command>, <command>b10-xfrout</command>,
+        and <command>b10-zonemgr</command> modules require the
+        libpython3 library and the Python _sqlite3.so module.
       </para>
 <!-- TODO: this will change ... -->
 
       <para>
         BIND 10 is modular.  Part of this modularity is
         accomplished using multiple cooperating processes which, together,
-       provide the server functionality.  This is a change from
-       the previous generation of BIND software, which used a
-       single process.
+        provide the server functionality.  This is a change from
+        the previous generation of BIND software, which used a
+        single process.
       </para>
 
       <para>
-       At first, running many different processes may seem confusing.
-       However, these processes are started, stopped, and maintained
-       by a single command, <command>bind10</command>.
-       This command starts a master process which will start other
-       processes as needed.
-       The processes started by the <command>bind10</command>
-       command have names starting with "b10-", including:
+        At first, running many different processes may seem confusing.
+        However, these processes are started, stopped, and maintained
+        by a single command, <command>bind10</command>.
+        This command starts a master process which will start other
+        processes as needed.
+        The processes started by the <command>bind10</command>
+        command have names starting with "b10-", including:
       </para>
 
       <para>
             <simpara>
               <command>b10-xfrout</command> &mdash;
               Outgoing zone transfer service.
-             This process is used to handle transfer requests to
-             send a local zone to a remote secondary server,
-             when acting as a master server.
+              This process is used to handle transfer requests to
+              send a local zone to a remote secondary server,
+              when acting as a master server.
             </simpara>
           </listitem>
 
             <simpara>
               <command>b10-zonemgr</command> &mdash;
               Secondary manager.
-             This process keeps track of timers and other
+              This process keeps track of timers and other
               necessary information for BIND 10 to act as a slave server.
             </simpara>
           </listitem>
       </para>
 
       <para>
-       These are ran automatically by <command>bind10</command>
-       and do not need to be run manually.
+        These are ran automatically by <command>bind10</command>
+        and do not need to be run manually.
       </para>
 
     </section>
       <title>Managing BIND 10</title>
 
       <para>
-       Once BIND 10 is running, a few commands are used to interact
-       directly with the system:
+        Once BIND 10 is running, a few commands are used to interact
+        directly with the system:
         <itemizedlist>
           <listitem>
             <simpara>
@@ -342,8 +342,8 @@ var/
         </para>
 
         <para>
-         To build BIND 10, also install the Botan (at least version
-         1.8) and the log4cplus (at least version 1.0.3)
+          To build BIND 10, also install the Botan (at least version
+          1.8) and the log4cplus (at least version 1.0.3)
           development include headers.
         </para>
 
@@ -355,7 +355,7 @@ Debian and Ubuntu:
 
         <para>
 <!-- TODO: is this needed at build time? test time? -->
-         The Python Library and Python _sqlite3 module are required to
+          The Python Library and Python _sqlite3 module are required to
           enable the Xfrout and Xfrin support.
         </para>
 
@@ -818,20 +818,20 @@ Debian and Ubuntu:
       </para>
 
       <para>
-       The kind specifies how a failure of the component should
-       be handled.  If it is set to <quote>dispensable</quote>
-       (the default unless you set something else), it will get
-       started again if it fails. If it is set to <quote>needed</quote>
-       and it fails at startup, the whole <command>bind10</command>
-       shuts down and exits with error exit code. But if it fails
-       some time later, it is just started again. If you set it
-       to <quote>core</quote>, you indicate that the system is
-       not usable without the component and if such component
-       fails, the system shuts down no matter when the failure
-       happened.  This is the behaviour of the core components
-       (the ones you can't turn off), but you can declare any
-       other components as core as well if you wish (but you can
-       turn these off, they just can't fail).
+        The kind specifies how a failure of the component should
+        be handled.  If it is set to <quote>dispensable</quote>
+        (the default unless you set something else), it will get
+        started again if it fails. If it is set to <quote>needed</quote>
+        and it fails at startup, the whole <command>bind10</command>
+        shuts down and exits with error exit code. But if it fails
+        some time later, it is just started again. If you set it
+        to <quote>core</quote>, you indicate that the system is
+        not usable without the component and if such component
+        fails, the system shuts down no matter when the failure
+        happened.  This is the behaviour of the core components
+        (the ones you can't turn off), but you can declare any
+        other components as core as well if you wish (but you can
+        turn these off, they just can't fail).
       </para>
 
       <para>
@@ -842,13 +842,13 @@ Debian and Ubuntu:
 
       <para>
         There are other parameters we didn't use in our example.
-       One of them is <quote>address</quote>. It is the address
-       used by the component on the <command>b10-msgq</command>
-       message bus. The special components already know their
-       address, but the usual ones don't. The address is by
-       convention the thing after <emphasis>b10-</emphasis>, with
-       the first letter capital (eg. <command>b10-stats</command>
-       would have <quote>Stats</quote> as its address).
+        One of them is <quote>address</quote>. It is the address
+        used by the component on the <command>b10-msgq</command>
+        message bus. The special components already know their
+        address, but the usual ones don't. The address is by
+        convention the thing after <emphasis>b10-</emphasis>, with
+        the first letter capital (eg. <command>b10-stats</command>
+        would have <quote>Stats</quote> as its address).
 <!-- TODO: this should be simplified so we don't even have to document it -->
       </para>
 
@@ -877,15 +877,15 @@ address, but the usual ones don't." mean? -->
 
       <note>
         <para>
-         The configuration is quite powerful, but that includes
-         a lot of space for mistakes. You could turn off the
-         <command>b10-cmdctl</command>, but then you couldn't
-         change it back the usual way, as it would require it to
-         be running (you would have to find and edit the configuration
-         directly).  Also, some modules might have dependencies
-         -- <command>b10-stats-httpd</command> need
-         <command>b10-stats</command>, <command>b10-xfrout</command>
-         needs the <command>b10-auth</command> to be running, etc.
+          The configuration is quite powerful, but that includes
+          a lot of space for mistakes. You could turn off the
+          <command>b10-cmdctl</command>, but then you couldn't
+          change it back the usual way, as it would require it to
+          be running (you would have to find and edit the configuration
+          directly).  Also, some modules might have dependencies
+          -- <command>b10-stats-httpd</command> need
+          <command>b10-stats</command>, <command>b10-xfrout</command>
+          needs the <command>b10-auth</command> to be running, etc.
 
 <!-- TODO: should we define dependencies? -->
 
@@ -896,19 +896,19 @@ address, but the usual ones don't." mean? -->
       </note>
 
       <para>
-       Now, to the mysterious setuid virtual component. If you
-       use the <command>-u</command> option to start the
-       <command>bind10</command> as root, but change the user
-       later, we need to start the <command>b10-auth</command> or
-       <command>b10-resolver</command> as root (until the socket
-       creator is finished).<!-- TODO --> So we need to specify
-       the time when the switch from root do the given user happens
-       and that's what the setuid component is for. The switch is
-       done at the time the setuid component would be started, if
-       it was a process. The default configuration contains the
-       setuid component with priority 5, <command>b10-auth</command>
-       has 10 to be started before the switch and everything else
-       is without priority, so it is started after the switch.
+        Now, to the mysterious setuid virtual component. If you
+        use the <command>-u</command> option to start the
+        <command>bind10</command> as root, but change the user
+        later, we need to start the <command>b10-auth</command> or
+        <command>b10-resolver</command> as root (until the socket
+        creator is finished).<!-- TODO --> So we need to specify
+        the time when the switch from root do the given user happens
+        and that's what the setuid component is for. The switch is
+        done at the time the setuid component would be started, if
+        it was a process. The default configuration contains the
+        setuid component with priority 5, <command>b10-auth</command>
+        has 10 to be started before the switch and everything else
+        is without priority, so it is started after the switch.
       </para>
 
     </section>
@@ -1441,16 +1441,16 @@ TODO
     <section>
       <title>Configuration for Incoming Zone Transfers</title>
       <para>
-       In practice, you need to specify a list of secondary zones to
-       enable incoming zone transfers for these zones (you can still
-       trigger a zone transfer manually, without a prior configuration
-       (see below)).
+        In practice, you need to specify a list of secondary zones to
+        enable incoming zone transfers for these zones (you can still
+        trigger a zone transfer manually, without a prior configuration
+        (see below)).
       </para>
 
       <para>
-       For example, to enable zone transfers for a zone named "example.com"
-       (whose master address is assumed to be 2001:db8::53 here),
-       run the following at the <command>bindctl</command> prompt:
+        For example, to enable zone transfers for a zone named "example.com"
+        (whose master address is assumed to be 2001:db8::53 here),
+        run the following at the <command>bindctl</command> prompt:
 
       <screen>&gt; <userinput>config add Xfrin/zones</userinput>
 &gt; <userinput>config set Xfrin/zones[0]/name "<option>example.com</option>"</userinput>
@@ -1549,11 +1549,11 @@ what if a NOTIFY is sent?
       <title>Trigger an Incoming Zone Transfer Manually</title>
 
       <para>
-       To manually trigger a zone transfer to retrieve a remote zone,
-       you may use the <command>bindctl</command> utility.
-       For example, at the <command>bindctl</command> prompt run:
+        To manually trigger a zone transfer to retrieve a remote zone,
+        you may use the <command>bindctl</command> utility.
+        For example, at the <command>bindctl</command> prompt run:
 
-       <screen>&gt; <userinput>Xfrin retransfer zone_name="<option>foo.example.org</option>" master=<option>192.0.2.99</option></userinput></screen>
+        <screen>&gt; <userinput>Xfrin retransfer zone_name="<option>foo.example.org</option>" master=<option>192.0.2.99</option></userinput></screen>
       </para>
     </section>
 
@@ -1603,9 +1603,9 @@ Xfrout/transfer_acl[0]    {"action": "ACCEPT"}    any     (default)</screen>
 &gt; <userinput>config commit</userinput></screen>
 
     <note><simpara>
-       In the above example the lines
-       for <option>transfer_acl</option> were divided for
-       readability.  In the actual input it must be in a single line.
+        In the above example the lines
+        for <option>transfer_acl</option> were divided for
+        readability.  In the actual input it must be in a single line.
     </simpara></note>
 
     <para>
@@ -1630,10 +1630,10 @@ Xfrout/transfer_acl[0]  {"action": "ACCEPT"}    any     (default)</screen>
     </para>
 
     <note><simpara>
-       In a future version, <command>b10-xfrout</command> will also
-       use the system wide TSIG configuration.
-       The way to specify zone specific configuration (ACLs, etc) is
-       likely to be changed, too.
+        In a future version, <command>b10-xfrout</command> will also
+        use the system wide TSIG configuration.
+        The way to specify zone specific configuration (ACLs, etc) is
+        likely to be changed, too.
     </simpara></note>
 
 <!--
@@ -1711,30 +1711,30 @@ what is XfroutClient xfr_client??
         By default, the <command>b10-resolver</command> daemon only accepts
         DNS queries from the localhost (127.0.0.1 and ::1).
         The <option>Resolver/query_acl</option> configuration may
-       be used to reject, drop, or allow specific IPs or networks.
+        be used to reject, drop, or allow specific IPs or networks.
         This configuration list is first match.
       </para>
 
       <para>
-       The configuration's <option>action</option> item may be
-       set to <quote>ACCEPT</quote> to allow the incoming query,
-       <quote>REJECT</quote> to respond with a DNS REFUSED return
-       code, or <quote>DROP</quote> to ignore the query without
-       any response (such as a blackhole).  For more information,
-       see the respective debugging messages:  <ulink
-       url="bind10-messages.html#RESOLVER_QUERY_ACCEPTED">RESOLVER_QUERY_ACCEPTED</ulink>,
-       <ulink
-       url="bind10-messages.html#RESOLVER_QUERY_REJECTED">RESOLVER_QUERY_REJECTED</ulink>,
-       and <ulink
+        The configuration's <option>action</option> item may be
+        set to <quote>ACCEPT</quote> to allow the incoming query,
+        <quote>REJECT</quote> to respond with a DNS REFUSED return
+        code, or <quote>DROP</quote> to ignore the query without
+        any response (such as a blackhole).  For more information,
+        see the respective debugging messages:  <ulink
+        url="bind10-messages.html#RESOLVER_QUERY_ACCEPTED">RESOLVER_QUERY_ACCEPTED</ulink>,
+        <ulink
+        url="bind10-messages.html#RESOLVER_QUERY_REJECTED">RESOLVER_QUERY_REJECTED</ulink>,
+        and <ulink
 url="bind10-messages.html#RESOLVER_QUERY_DROPPED">RESOLVER_QUERY_DROPPED</ulink>.
       </para>
 
       <para>
-       The required configuration's <option>from</option> item is set
+        The required configuration's <option>from</option> item is set
         to an IPv4 or IPv6 address, addresses with an network mask, or to
-       the special lowercase keywords <quote>any6</quote> (for
-       any IPv6 address) or <quote>any4</quote> (for any IPv4
-       address).
+        the special lowercase keywords <quote>any6</quote> (for
+        any IPv6 address) or <quote>any4</quote> (for any IPv4
+        address).
       </para>
 
 <!-- TODO:
@@ -1745,9 +1745,9 @@ TODO: tsig
 -->
 
       <para>
-       For example to allow the <replaceable>192.168.1.0/24</replaceable>
-       network to use your recursive name server, at the
-       <command>bindctl</command> prompt run:
+        For example to allow the <replaceable>192.168.1.0/24</replaceable>
+        network to use your recursive name server, at the
+        <command>bindctl</command> prompt run:
       </para>
 
       <screen>
@@ -1806,6 +1806,164 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
 
   </chapter>
 
+  <chapter id="dhcp4">
+    <title>DHCPv4 Server</title>
+    <para>Dynamic Host Configuration Protocol for IPv4 (DHCP or
+    DHCPv4) and Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
+    are protocols that allow one node (server) to provision
+    configuration parameters to many hosts and devices (clients). To
+    ease deployment in larger networks, additional nodes (relays) may
+    be deployed that facilitate communication between servers and
+    clients. Even though principles of both DHCPv4 and DHCPv6 are
+    somewhat similar, these are two radically different
+    protocols. BIND10 offers server implementations for both DHCPv4
+    and DHCPv6.</para>
+
+    <note>
+      <para>
+        As of December 2011, both DHCPv4 and DHCPv6 components are
+        skeleton servers. That means that while they are capable of
+        performing DHCP configuration, they are not fully functional
+        yet. In particular, both do not have functional lease
+        databases. This means that they will assign the same, fixed,
+        hardcoded addresses to any client that will ask. See <xref
+        linkend="dhcp4-limit"/> and <xref linkend="dhcp6-limit"/> for
+        detailed description.
+      </para>
+    </note>
+
+    <section>
+      <title>Server Usage</title>
+      <para>BIND10 provides experimental DHCPv4 server component since
+      December 2011. It is currently described as skeleton server and
+      can be described as an early prototype that is not yet fully
+      functional. It is mature enough to conduct first tests in lab
+      environment, but it has significant limitations. See <xref
+      linkend="dhcp4-limit"/> for details.
+      </para>
+
+      <para>
+        DHCPv4 server is implemented as <command>b10-dhcp4</command>
+        daemon. As it is configurable yet, it is fully autonomous,
+        i.e. it does not interact with <command>b10-cfgmgr</command>.
+        To start DHCPv4 server, simply input:
+
+        <screen>
+#<userinput>cd src/bin/dhcp4</userinput>
+#<userinput>./b10-dhcp4</userinput>
+</screen>
+
+        Depending on your installation, <command>b10-dhcp4</command>
+        binary may reside in src/bin/dhcp4 in your source code
+        directory, in /usr/local/bin/b10-dhcp4 or other directory
+        you specified during compilation.
+
+        Afre start, server will detect available network interfaces
+        and will attempt to open UDP sockets on all interfaces that
+        are up, running, are not loopback and have IPv4 address
+        assigned.
+
+        Server will then listen to incoming traffic. Currently
+        supported client messages are DISCOVER and REQUEST. Server
+        will respond to them with OFFER and ACK, respectively.
+
+        As DHCPv4 server opens privileged ports, it requires root
+        access. Make sure you run this daemon as root.
+      </para>
+    </section>
+
+    <section>
+      <title>Server Configuration</title>
+      <para>
+        DHCPv4 server does not have lease database implemented yet
+        or any support for configuration, so every time the same set
+        of configuration options (including the same fixed address)
+        will be assigned every time.
+      </para>
+      <para>
+        At this stage of development, the only way to alter server
+        configuration is to tweak its source code. To do so, please edit
+        src/bin/dhcp4/dhcp4_srv.cc file and modify following parameters:
+        <screen>
+const std::string HARDCODED_LEASE = "10.3.2.222"; // assigned lease
+const std::string HARDCODED_NETMASK = "255.255.255.0";
+const uint32_t    HARDCODED_LEASE_TIME = 60; // in seconds
+const std::string HARDCODED_GATEWAY = "10.3.2.2";
+const std::string HARDCODED_DNS_SERVER = "8.8.8.8";
+const std::string HARDCODED_DOMAIN_NAME = "isc.example.org";
+const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
+
+        Lease database and configuration support is planned for 2012.
+      </para>
+    </section>
+
+    <section id="dhcp4-limit">
+      <title>DHCPv4 Server Limitations</title>
+      <para>
+        During initial IPv4 node configuration, where server has to
+        send packet to a node that does not have IPv4 address
+        assigned yet, server requires certain tricks (or hacks) to
+        transmit such packets. This is not implemented yet, therefore
+        DHCPv4 server supports relayed traffic only.
+      </para>
+    </section>
+  </chapter>
+
+  <chapter id="dhcp6-srv">
+    <title>DHCPv6 Server</title>
+    <section id="dhcp6-limit">
+      <title>DHCPv6 Server Limitations</title>
+      <para>
+        Relayed traffic is not supported.
+      </para>
+    </section>
+
+
+  </chapter>
+
+  <chapter id="libdhcp++">
+    <title>libdhcp++ library</title>
+    <para>libdhcp++ is a common library written in C++ that is
+    handles many DHCP-related tasks, like DHCPv4 and DHCPv6 packets
+    parsing, manipulation and assembly, option parsing, manipulation
+    and assembly, network interface detection and socket operations.
+    </para>
+
+    <para>
+    While this library is currently used by
+    <command>b10-dhcp6</command> and <command>b10-dhcp4</command>
+    only, it is designed to be portable, universal library useful
+    for any kind of DHCP-related software.
+    </para>
+
+    <section>
+      <title>Interface detection</title>
+      <para>Both DHCPv4 and DHCPv6 components share network
+      interface detection routines (see <xref
+      linkend="libdhcp++"/> for details). Interface detection is
+      currently only supported on Linux systems.</para>
+
+      <para>For non-linux systems, there is currently stub
+      implementation provided. As DHCP servers need to know
+      available addresses, there was a simple mechanism implemented
+      to provide that information. User is expected to create
+      interfaces.txt file. Format of this file is simple. It
+      contains list of interfaces along with available address on
+      each interface. This mechanism is temporary and is going to be
+      removed as soon as interface detection becomes available on
+      non-linux systems. Example of interfaces.txt file looks as follows:
+      <screen>
+# For DHCPv6, please specify link-local address (starts with fe80::)
+# If in doubt, check output of 'ifconfig -a' command.
+eth0 fe80::21e:8cff:fe9b:7349
+
+# For DHCPv4, please use following format:
+#eth0 192.0.2.5</screen>
+      </para>
+    </section>
+
+  </chapter>
+
   <chapter id="statistics">
     <title>Statistics</title>
 
@@ -1857,10 +2015,10 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
 
       <para>
 
-       The logging system in BIND 10 is configured through the
-       Logging module. All BIND 10 modules will look at the
-       configuration in Logging to see what should be logged and
-       to where.
+        The logging system in BIND 10 is configured through the
+        Logging module. All BIND 10 modules will look at the
+        configuration in Logging to see what should be logged and
+        to where.
 
 <!-- TODO: what is context of Logging module for readers of this guide? -->
 
@@ -1871,28 +2029,28 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
 
         <para>
 
-         Within BIND 10, a message is logged through a component
-         called a "logger". Different parts of BIND 10 log messages
-         through different loggers, and each logger can be configured
-         independently of one another.
+          Within BIND 10, a message is logged through a component
+          called a "logger". Different parts of BIND 10 log messages
+          through different loggers, and each logger can be configured
+          independently of one another.
 
         </para>
 
         <para>
 
-         In the Logging module, you can specify the configuration
-         for zero or more loggers; any that are not specified will
-         take appropriate default values..
+          In the Logging module, you can specify the configuration
+          for zero or more loggers; any that are not specified will
+          take appropriate default values..
 
         </para>
 
         <para>
 
-         The three most important elements of a logger configuration
-         are the <option>name</option> (the component that is
-         generating the messages), the <option>severity</option>
-         (what to log), and the <option>output_options</option>
-         (where to log).
+          The three most important elements of a logger configuration
+          are the <option>name</option> (the component that is
+          generating the messages), the <option>severity</option>
+          (what to log), and the <option>output_options</option>
+          (where to log).
 
         </para>
 
@@ -1900,12 +2058,12 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
           <title>name (string)</title>
 
           <para>
-         Each logger in the system has a name, the name being that
-         of the component using it to log messages. For instance,
-         if you want to configure logging for the resolver module,
-         you add an entry for a logger named <quote>Resolver</quote>. This
-         configuration will then be used by the loggers in the
-         Resolver module, and all the libraries used by it.
+          Each logger in the system has a name, the name being that
+          of the component using it to log messages. For instance,
+          if you want to configure logging for the resolver module,
+          you add an entry for a logger named <quote>Resolver</quote>. This
+          configuration will then be used by the loggers in the
+          Resolver module, and all the libraries used by it.
               </para>
 
 <!-- TODO: later we will have a way to know names of all modules
@@ -1917,13 +2075,13 @@ Right now you can only see what their names are if they are running
 
         <para>
 
-         If you want to specify logging for one specific library
-         within the module, you set the name to
-         <replaceable>module.library</replaceable>.  For example, the
-         logger used by the nameserver address store component
-         has the full name of <quote>Resolver.nsas</quote>. If
-         there is no entry in Logging for a particular library,
-         it will use the configuration given for the module.
+          If you want to specify logging for one specific library
+          within the module, you set the name to
+          <replaceable>module.library</replaceable>.  For example, the
+          logger used by the nameserver address store component
+          has the full name of <quote>Resolver.nsas</quote>. If
+          there is no entry in Logging for a particular library,
+          it will use the configuration given for the module.
 
 <!-- TODO: how to know these specific names?
 
@@ -1938,61 +2096,61 @@ specify module-wide logging and see what appears...
 
 <!-- TODO: severity has not been covered yet -->
 
-         To illustrate this, suppose you want the cache library
-         to log messages of severity DEBUG, and the rest of the
-         resolver code to log messages of severity INFO. To achieve
-         this you specify two loggers, one with the name
-         <quote>Resolver</quote> and severity INFO, and one with
-         the name <quote>Resolver.cache</quote> with severity
-         DEBUG. As there are no entries for other libraries (e.g.
-         the nsas), they will use the configuration for the module
-         (<quote>Resolver</quote>), so giving the desired behavior.
+          To illustrate this, suppose you want the cache library
+          to log messages of severity DEBUG, and the rest of the
+          resolver code to log messages of severity INFO. To achieve
+          this you specify two loggers, one with the name
+          <quote>Resolver</quote> and severity INFO, and one with
+          the name <quote>Resolver.cache</quote> with severity
+          DEBUG. As there are no entries for other libraries (e.g.
+          the nsas), they will use the configuration for the module
+          (<quote>Resolver</quote>), so giving the desired behavior.
 
         </para>
 
         <para>
 
-         One special case is that of a module name of <quote>*</quote>
-         (asterisks), which is interpreted as <emphasis>any</emphasis>
-         module. You can set global logging options by using this,
-         including setting the logging configuration for a library
-         that is used by multiple modules (e.g. <quote>*.config</quote>
-         specifies the configuration library code in whatever
-         module is using it).
+          One special case is that of a module name of <quote>*</quote>
+          (asterisks), which is interpreted as <emphasis>any</emphasis>
+          module. You can set global logging options by using this,
+          including setting the logging configuration for a library
+          that is used by multiple modules (e.g. <quote>*.config</quote>
+          specifies the configuration library code in whatever
+          module is using it).
 
         </para>
 
         <para>
 
-         If there are multiple logger specifications in the
-         configuration that might match a particular logger, the
-         specification with the more specific logger name takes
-         precedence. For example, if there are entries for for
-         both <quote>*</quote> and <quote>Resolver</quote>, the
-         resolver module &mdash; and all libraries it uses &mdash;
-         will log messages according to the configuration in the
-         second entry (<quote>Resolver</quote>). All other modules
-         will use the configuration of the first entry
-         (<quote>*</quote>). If there was also a configuration
-         entry for <quote>Resolver.cache</quote>, the cache library
-         within the resolver would use that in preference to the
-         entry for <quote>Resolver</quote>.
+          If there are multiple logger specifications in the
+          configuration that might match a particular logger, the
+          specification with the more specific logger name takes
+          precedence. For example, if there are entries for for
+          both <quote>*</quote> and <quote>Resolver</quote>, the
+          resolver module &mdash; and all libraries it uses &mdash;
+          will log messages according to the configuration in the
+          second entry (<quote>Resolver</quote>). All other modules
+          will use the configuration of the first entry
+          (<quote>*</quote>). If there was also a configuration
+          entry for <quote>Resolver.cache</quote>, the cache library
+          within the resolver would use that in preference to the
+          entry for <quote>Resolver</quote>.
 
         </para>
 
         <para>
 
-         One final note about the naming. When specifying the
-         module name within a logger, use the name of the module
-         as specified in <command>bindctl</command>, e.g.
-         <quote>Resolver</quote> for the resolver module,
-         <quote>Xfrout</quote> for the xfrout module, etc. When
-         the message is logged, the message will include the name
-         of the logger generating the message, but with the module
-         name replaced by the name of the process implementing
-         the module (so for example, a message generated by the
-         <quote>Auth.cache</quote> logger will appear in the output
-         with a logger name of <quote>b10-auth.cache</quote>).
+          One final note about the naming. When specifying the
+          module name within a logger, use the name of the module
+          as specified in <command>bindctl</command>, e.g.
+          <quote>Resolver</quote> for the resolver module,
+          <quote>Xfrout</quote> for the xfrout module, etc. When
+          the message is logged, the message will include the name
+          of the logger generating the message, but with the module
+          name replaced by the name of the process implementing
+          the module (so for example, a message generated by the
+          <quote>Auth.cache</quote> logger will appear in the output
+          with a logger name of <quote>b10-auth.cache</quote>).
 
         </para>
 
@@ -2004,9 +2162,9 @@ specify module-wide logging and see what appears...
         <para>
 
           This specifies the category of messages logged.
-         Each message is logged with an associated severity which
-         may be one of the following (in descending order of
-         severity):
+          Each message is logged with an associated severity which
+          may be one of the following (in descending order of
+          severity):
         </para>
 
         <itemizedlist>
@@ -2033,11 +2191,11 @@ specify module-wide logging and see what appears...
 
         <para>
 
-         When the severity of a logger is set to one of these
-         values, it will only log messages of that severity, and
-         the severities above it. The severity may also be set to
-         NONE, in which case all messages from that logger are
-         inhibited.
+          When the severity of a logger is set to one of these
+          values, it will only log messages of that severity, and
+          the severities above it. The severity may also be set to
+          NONE, in which case all messages from that logger are
+          inhibited.
 
 <!-- TODO: worded wrong? If I set to INFO, why would it show DEBUG which is literally below in that list? -->
 
@@ -2050,9 +2208,9 @@ specify module-wide logging and see what appears...
 
         <para>
 
-         Each logger can have zero or more
-         <option>output_options</option>. These specify where log
-         messages are sent to. These are explained in detail below.
+          Each logger can have zero or more
+          <option>output_options</option>. These specify where log
+          messages are sent to. These are explained in detail below.
 
         </para>
 
@@ -2069,15 +2227,15 @@ specify module-wide logging and see what appears...
 
         <para>
 
-         When a logger's severity is set to DEBUG, this value
-         specifies what debug messages should be printed. It ranges
-         from 0 (least verbose) to 99 (most verbose).
+          When a logger's severity is set to DEBUG, this value
+          specifies what debug messages should be printed. It ranges
+          from 0 (least verbose) to 99 (most verbose).
         </para>
 
 
 <!-- TODO: complete this sentence:
 
-         The general classification of debug message types is
+          The general classification of debug message types is
 
 TODO; there's a ticket to determine these levels, see #1074
 
@@ -2096,15 +2254,15 @@ TODO; there's a ticket to determine these levels, see #1074
 
         <para>
 
-         If this is true, the <option>output_options</option> from
-         the parent will be used. For example, if there are two
-         loggers configured; <quote>Resolver</quote> and
-         <quote>Resolver.cache</quote>, and <option>additive</option>
-         is true in the second, it will write the log messages
-         not only to the destinations specified for
-         <quote>Resolver.cache</quote>, but also to the destinations
-         as specified in the <option>output_options</option> in
-         the logger named <quote>Resolver</quote>.
+          If this is true, the <option>output_options</option> from
+          the parent will be used. For example, if there are two
+          loggers configured; <quote>Resolver</quote> and
+          <quote>Resolver.cache</quote>, and <option>additive</option>
+          is true in the second, it will write the log messages
+          not only to the destinations specified for
+          <quote>Resolver.cache</quote>, but also to the destinations
+          as specified in the <option>output_options</option> in
+          the logger named <quote>Resolver</quote>.
 
 <!-- TODO: check this -->
 
@@ -2119,10 +2277,10 @@ TODO; there's a ticket to determine these levels, see #1074
 
         <para>
 
-         The main settings for an output option are the
-         <option>destination</option> and a value called
-         <option>output</option>, the meaning of which depends on
-         the destination that is set.
+          The main settings for an output option are the
+          <option>destination</option> and a value called
+          <option>output</option>, the meaning of which depends on
+          the destination that is set.
 
         </para>
 
@@ -2158,8 +2316,8 @@ TODO; there's a ticket to determine these levels, see #1074
 
         <para>
 
-         Depending on what is set as the output destination, this
-         value is interpreted as follows:
+          Depending on what is set as the output destination, this
+          value is interpreted as follows:
 
         </para>
 
@@ -2169,10 +2327,10 @@ TODO; there's a ticket to determine these levels, see #1074
             <term><option>destination</option> is <quote>console</quote></term>
             <listitem>
               <simpara>
-                The value of output must be one of <quote>stdout</quote>
-                (messages printed to standard output) or
-                <quote>stderr</quote> (messages printed to standard
-                error).
+                 The value of output must be one of <quote>stdout</quote>
+                 (messages printed to standard output) or
+                 <quote>stderr</quote> (messages printed to standard
+                 error).
               </simpara>
             </listitem>
           </varlistentry>
@@ -2181,8 +2339,8 @@ TODO; there's a ticket to determine these levels, see #1074
             <term><option>destination</option> is <quote>file</quote></term>
             <listitem>
               <simpara>
-               The value of output is interpreted as a file name;
-               log messages will be appended to this file.
+                The value of output is interpreted as a file name;
+                log messages will be appended to this file.
               </simpara>
             </listitem>
           </varlistentry>
@@ -2191,10 +2349,10 @@ TODO; there's a ticket to determine these levels, see #1074
             <term><option>destination</option> is <quote>syslog</quote></term>
             <listitem>
               <simpara>
-               The value of output is interpreted as the
-               <command>syslog</command> facility (e.g.
-               <emphasis>local0</emphasis>) that should be used
-               for log messages.
+                The value of output is interpreted as the
+                <command>syslog</command> facility (e.g.
+                <emphasis>local0</emphasis>) that should be used
+                for log messages.
               </simpara>
             </listitem>
           </varlistentry>
@@ -2211,10 +2369,10 @@ TODO; there's a ticket to determine these levels, see #1074
           <title>flush (true of false)</title>
 
           <para>
-           Flush buffers after each log message. Doing this will
-           reduce performance but will ensure that if the program
-           terminates abnormally, all messages up to the point of
-           termination are output.
+            Flush buffers after each log message. Doing this will
+            reduce performance but will ensure that if the program
+            terminates abnormally, all messages up to the point of
+            termination are output.
           </para>
 
         </section>
@@ -2223,11 +2381,11 @@ TODO; there's a ticket to determine these levels, see #1074
           <title>maxsize (integer)</title>
 
           <para>
-           Only relevant when destination is file, this is maximum
-           file size of output files in bytes. When the maximum
-           size is reached, the file is renamed and a new file opened.
-           (For example, a ".1" is appended to the name &mdash;
-           if a ".1" file exists, it is renamed ".2",
+            Only relevant when destination is file, this is maximum
+            file size of output files in bytes. When the maximum
+            size is reached, the file is renamed and a new file opened.
+            (For example, a ".1" is appended to the name &mdash;
+            if a ".1" file exists, it is renamed ".2",
             etc.)
           </para>
 
@@ -2241,9 +2399,9 @@ TODO; there's a ticket to determine these levels, see #1074
           <title>maxver (integer)</title>
 
           <para>
-           Maximum number of old log files to keep around when
-           rolling the output file. Only relevant when
-           <option>destination</option> is <quote>file</quote>.
+            Maximum number of old log files to keep around when
+            rolling the output file. Only relevant when
+            <option>destination</option> is <quote>file</quote>.
           </para>
 
         </section>
@@ -2257,11 +2415,11 @@ TODO; there's a ticket to determine these levels, see #1074
 
         <para>
 
-         In this example we want to set the global logging to
-         write to the file <filename>/var/log/my_bind10.log</filename>,
-         at severity WARN. We want the authoritative server to
-         log at DEBUG with debuglevel 40, to a different file
-         (<filename>/tmp/debug_messages</filename>).
+          In this example we want to set the global logging to
+          write to the file <filename>/var/log/my_bind10.log</filename>,
+          at severity WARN. We want the authoritative server to
+          log at DEBUG with debuglevel 40, to a different file
+          (<filename>/tmp/debug_messages</filename>).
 
         </para>
 
@@ -2282,9 +2440,9 @@ Logging/loggers   []      list
 
         <para>
 
-         By default, no specific loggers are configured, in which
-         case the severity defaults to INFO and the output is
-         written to stderr.
+          By default, no specific loggers are configured, in which
+          case the severity defaults to INFO and the output is
+          written to stderr.
 
         </para>
 
@@ -2306,8 +2464,8 @@ Logging/loggers/  list    (modified)
 
         <para>
 
-         The loggers value line changed to indicate that it is no
-         longer an empty list:
+          The loggers value line changed to indicate that it is no
+          longer an empty list:
 
         </para>
 
@@ -2325,9 +2483,9 @@ Logging/loggers[0]/output_options []      list    (default)
 
         <para>
 
-         The name is mandatory, so we must set it. We will also
-         change the severity as well. Let's start with the global
-         logger.
+          The name is mandatory, so we must set it. We will also
+          change the severity as well. Let's start with the global
+          logger.
 
         </para>
 
@@ -2347,8 +2505,8 @@ Logging/loggers[0]/output_options []      list    (default)
 
         <para>
 
-         Of course, we need to specify where we want the log
-         messages to go, so we add an entry for an output option.
+          Of course, we need to specify where we want the log
+          messages to go, so we add an entry for an output option.
 
         </para>
 
@@ -2384,8 +2542,8 @@ Logging/loggers[0]/output_options[0]/maxver       0       integer (default)
 
         <para>
 
-         Which would make the entire configuration for this logger
-         look like:
+          Which would make the entire configuration for this logger
+          look like:
 
         </para>
 
@@ -2407,8 +2565,8 @@ Logging/loggers[0]/output_options[0]/maxver       8       integer (modified)
 
         <para>
 
-         That looks OK, so let's commit it before we add the
-         configuration for the authoritative server's logger.
+          That looks OK, so let's commit it before we add the
+          configuration for the authoritative server's logger.
 
         </para>
 
@@ -2420,8 +2578,8 @@ Logging/loggers[0]/output_options[0]/maxver       8       integer (modified)
 
         <para>
 
-         Now that we have set it, and checked each value along
-         the way, adding a second entry is quite similar.
+          Now that we have set it, and checked each value along
+          the way, adding a second entry is quite similar.
 
         </para>
 
@@ -2441,10 +2599,10 @@ Logging/loggers[0]/output_options[0]/maxver     8       integer (modified)
 
         <para>
 
-         And that's it. Once we have found whatever it was we
-         needed the debug messages for, we can simply remove the
-         second logger to let the authoritative server use the
-         same settings as the rest.
+          And that's it. Once we have found whatever it was we
+          needed the debug messages for, we can simply remove the
+          second logger to let the authoritative server use the
+          same settings as the rest.
 
         </para>
 
@@ -2458,8 +2616,8 @@ Logging/loggers[0]/output_options[0]/maxver       8       integer (modified)
 
         <para>
 
-         And every module will now be using the values from the
-         logger named <quote>*</quote>.
+          And every module will now be using the values from the
+          logger named <quote>*</quote>.
 
         </para>
 
@@ -2471,11 +2629,11 @@ Logging/loggers[0]/output_options[0]/maxver     8       integer (modified)
       <title>Logging Message Format</title>
 
       <para>
-         Each message written by BIND 10 to the configured logging
-         destinations comprises a number of components that identify
-         the origin of the message and, if the message indicates
-         a problem, information about the problem that may be
-         useful in fixing it.
+          Each message written by BIND 10 to the configured logging
+          destinations comprises a number of components that identify
+          the origin of the message and, if the message indicates
+          a problem, information about the problem that may be
+          useful in fixing it.
       </para>
 
       <para>
@@ -2525,29 +2683,29 @@ Logging/loggers[0]/output_options[0]/maxver     8       integer (modified)
           <varlistentry>
           <term>ASIODNS_OPENSOCK</term>
           <listitem><para>
-           The message identification.  Every message in BIND 10
-           has a unique identification, which can be used as an
-           index into the <ulink
-           url="bind10-messages.html"><citetitle>BIND 10 Messages
-           Manual</citetitle></ulink> (<ulink
-           url="http://bind10.isc.org/docs/bind10-messages.html"
-           />) from which more information can be obtained.
+            The message identification.  Every message in BIND 10
+            has a unique identification, which can be used as an
+            index into the <ulink
+            url="bind10-messages.html"><citetitle>BIND 10 Messages
+            Manual</citetitle></ulink> (<ulink
+            url="http://bind10.isc.org/docs/bind10-messages.html"
+            />) from which more information can be obtained.
           </para></listitem>
           </varlistentry>
 
           <varlistentry>
           <term>error 111 opening TCP socket to 127.0.0.1(53)</term>
           <listitem><para>
-             A brief description of the cause of the problem.
-             Within this text, information relating to the condition
-             that caused the message to be logged will be included.
-             In this example, error number 111 (an operating
-             system-specific error number) was encountered when
-             trying to open a TCP connection to port 53 on the
-             local system (address 127.0.0.1).  The next step
-             would be to find out the reason for the failure by
-             consulting your system's documentation to identify
-             what error number 111 means.
+              A brief description of the cause of the problem.
+              Within this text, information relating to the condition
+              that caused the message to be logged will be included.
+              In this example, error number 111 (an operating
+              system-specific error number) was encountered when
+              trying to open a TCP connection to port 53 on the
+              local system (address 127.0.0.1).  The next step
+              would be to find out the reason for the failure by
+              consulting your system's documentation to identify
+              what error number 111 means.
           </para></listitem>
           </varlistentry>
           </variablelist>