]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5008] Editing changes to chapters 9 through 18 of the Kea guide
authorStephen Morris <stephen@isc.org>
Tue, 20 Sep 2016 14:20:43 +0000 (15:20 +0100)
committerStephen Morris <stephen@isc.org>
Tue, 20 Sep 2016 14:20:43 +0000 (15:20 +0100)
doc/guide/classify.xml
doc/guide/ctrl-channel.xml
doc/guide/ddns.xml
doc/guide/faq.xml
doc/guide/hooks.xml
doc/guide/lease-expiration.xml
doc/guide/lfc.xml
doc/guide/libdhcp.xml
doc/guide/logging.xml
doc/guide/stats.xml

index 3ddfab98c7475ba2c9058d1241e5c5d8e1790b4c..bba282e7754aa9a5c8e89af0a478ffb2b2f81361 100644 (file)
@@ -58,7 +58,7 @@
       When determining which options to include in the response the server will examine
       the union of options from all of the assigned classes. In the case two or more
       classes include the same option, the value from the first class examined will
-      be used.  When choosing a subnet the server will iterate over all of the
+      be used.  When choosing a subnet, the server will iterate over all of the
       subnets that are feasible given the information found in the packet (client address,
       relay address etc). It will use the first subnet it finds that either doesn't
       have a class associated with it or that has a class which matches one of
@@ -68,7 +68,8 @@
       </para>
 
       <para>
-      As an example, imagine two classes.  Class "foo" defines values for an NTP server
+      As an example, imagine that an incoming packet matches two classes.
+      Class "foo" defines values for an NTP server
       (option 42 in DHCPv4) and an SMTP server (option 69 in DHCPv4) while class
       "bar" defines values for an NTP server and a POP3 server (option 70 in DHCPv4).
       The server will examine the three options NTP, SMTP and POP3 and return any
       Expressions are pre-processed during the parsing of the configuration file
       and converted to an internal representation. This allows certain types of
       errors to be caught and logged during parsing.  Examples of these errors
-      include incorrect number or types of arguments to an operator.  The
+      include an incorrect number or types of arguments to an operator.  The
       evaluation code will also check for this class of error and generally
-      throw an exception, though they should not occur in a normally functioning
+      throw an exception, though this should not occur in a normally functioning
       system.
       </para>
 
       <para>
       Expressions are a work in progress and the supported operators and
       values are limited. The expectation is that additional operators and values
-      will be added over time, however it is expected the basic mechanisms will
+      will be added over time, however the basic mechanisms will
       remain the same.
       </para>
 
               <entry>4491</entry>
               <entry>If the vendor option is present, it returns the
               value of the enterprise-id field padded to 4
-              bytes. Returns '' otherwise.</entry>
+              bytes. Returns "" otherwise.</entry>
             </row>
             <row>
               <entry>Vendor sub-option existence</entry>
               <entry>4491</entry>
               <entry>If the vendor option is present, it returns the
               value of the enterprise-id field padded to 4
-              bytes. Returns '' otherwise.</entry>
+              bytes. Returns "" otherwise.</entry>
             </row>
             <row>
               <entry>First data chunk from vendor class option</entry>
               <entry>docsis3.0</entry>
               <entry>Returns content of the first data chunk from
               the vendor class option with specified enterprise-id.
-              Returns '' if missing.</entry>
+              Returns "" if missing.</entry>
             </row>
             <row>
               <entry>Specific data chunk from vendor class option</entry>
           </tbody>
           </tgroup>
         </table>
-      Hex Strings are converted into a string as expected.  The starting &quot;0X&quot; or
+        Notes:
+      </para>
+
+      <itemizedlist>
+
+      <listitem><para>
+      Hexadecimal strings are converted into a string as expected.  The starting &quot;0X&quot; or
       &quot;0x&quot; is removed and if the string is an odd number of characters a
       &quot;0&quot; is prepended to it.
-      </para>
+      </para></listitem>
 
-      <para>
+      <listitem><para>
       IP addresses are converted into strings of length 4 or 16. IPv4, IPv6,
       and IPv4 embedded IPv6 (e.g., IPv4 mapped IPv6) addresses are supported.
-      </para>
+      </para></listitem>
 
-      <para>
+      <listitem><para>
       Integers in an expression are converted to 32 bit unsigned integers and
-      are represented as four byte strings. For example 123 is represented as
-      0x0000007b. All expressions that return numeric values use 32 bit
+      are represented as four-byte strings. For example 123 is represented as
+      0x0000007b. All expressions that return numeric values use 32-bit
       unsigned integers, even if the field in the packet is smaller.  In general
       it is easier to use decimal notation to represent integers, but it is also
       possible to use hex notation. When using hex notation to represent an
       bits, e.g. use 0x00000001 instead of 0x1 or 0x01. Also, make
       sure the value is specified in network order, e.g. 1 is
       represented as 0x00000001.
-      </para>
+      </para></listitem>
 
-      <para>
+      <listitem><para>
       "option[code].hex" extracts the value of the option with the code "code"
       from the incoming packet. If the packet doesn't contain the option, it
       returns the empty string. The string is presented as a byte string of
       the option payload without the type code or length fields.
-      </para>
+      </para></listitem>
 
-      <para>
+      <listitem><para>
       "option[code].exists" checks if an option with the code "code" is present
       in the incoming packet. It can be used with empty options.
-      </para>
+      </para></listitem>
 
-      <para>
-        "relay4[code].hex" attempts to extract the value of the sub-option
-        "code" from the option inserted as the DHCPv4 Relay Agent Information
-        (82) option. If the packet doesn't contain a RAI option, or the RAI
-        option doesn't contain the requested sub-option, the expression returns
-        an empty string. The string is presented as a byte string of the
-        option payload without the type code or length fields. This
-        expression is allowed in DHCPv4 only.
-      </para>
+      <listitem><para>
+      "relay4[code].hex" attempts to extract the value of the sub-option
+      "code" from the option inserted as the DHCPv4 Relay Agent Information
+      (82) option. If the packet doesn't contain a RAI option, or the RAI
+      option doesn't contain the requested sub-option, the expression returns
+      an empty string. The string is presented as a byte string of the
+      option payload without the type code or length fields. This
+      expression is allowed in DHCPv4 only.
+      </para></listitem>
 
-      <para>
-       "relay4" shares the same representation types as "option", for
-       instance "relay4[code].exists" is supported.
-      </para>
+      <listitem><para>
+      "relay4" shares the same representation types as "option", for
+      instance "relay4[code].exists" is supported.
+      </para></listitem>
 
-      <para>
-       "relay6[nest]" allows access to the encapsulations used by any DHCPv6
-       relays that forwarded the packet.  The "nest" level specifies the relay
-       from which to extract the information, with a value of 0 indicating
-       the relay closest to the DHCPv6 server.  If the requested encapsulation
-       doesn't exist an empty string "" is returned.  This expression is
-       allowed in DHCPv6 only.
-      </para>
+      <listitem><para>
+      "relay6[nest]" allows access to the encapsulations used by any DHCPv6
+      relays that forwarded the packet.  The "nest" level specifies the relay
+      from which to extract the information, with a value of 0 indicating
+      the relay closest to the DHCPv6 server.  If the requested encapsulation
+      doesn't exist an empty string "" is returned.  This expression is
+      allowed in DHCPv6 only.
+      </para></listitem>
 
-      <para>
-       "relay6[nest].option[code]" shares the same representation types as
-       "option", for instance "relay6[nest].option[code].exists" is supported.
-      </para>
+      <listitem><para>
+      "relay6[nest].option[code]" shares the same representation types as
+      "option", for instance "relay6[nest].option[code].exists" is supported.
+      </para></listitem>
 
-      <para>
-        Expressions starting with "pkt4" can be used only in DHCPv4.
-        They allows access to DHCPv4 message fields.
-      </para>
+      <listitem><para>
+       Expressions starting with "pkt4" can be used only in DHCPv4.
+       They allows access to DHCPv4 message fields.
+      </para></listitem>
 
-      <para>
-       "pkt6" refers to information from the client request.  To access any
-       information from an intermediate relay use "relay6".  "pkt6.msgtype"
-       and "pkt6.transid" output a 4 byte binary string for the message type
-       or transaction id.  For example the message type SOLICIT will be
-       "0x00000001" or simply 1 as in "pkt6.msgtype == 1".
-      </para>
+      <listitem><para>
+      "pkt6" refers to information from the client request.  To access any
+      information from an intermediate relay use "relay6".  "pkt6.msgtype"
+      and "pkt6.transid" output a 4 byte binary string for the message type
+      or transaction id.  For example the message type SOLICIT will be
+      "0x00000001" or simply 1 as in "pkt6.msgtype == 1".
+      </para></listitem>
 
-      <para>
-        Vendor option means Vendor-Identifying Vendor-specific Information
-        option (code 125, see Section 4 of RFC3925) in DHCPv4 and
-        Vendor-specific Information Option (code 17, defined in Section 22.17 of
-        RFC3315) in DHCPv6. Vendor class option means Vendor-Identifying Vendor
-        Class Option (code 124, see Section 3 of RFC3925) in DHCPv4 and Vendor
-        Class Option (code 16, see Section 22.16 of RFC3315). Vendor options may
-        have sub-options that are referenced by their codes. Vendor class
-        options do not have sub-options, but rather data chunks, which are
-        referenced by index value. Index 0 means the first data chunk, Index 1
-        is for the second data chunk (if present), etc.
-      </para>
+      <listitem><para>
+      Vendor option means Vendor-Identifying Vendor-specific Information
+      option (code 125, see
+      <ulink url="http://tools.ietf.org/html/rfc3925#section-4">Section 4 of RFC 3925</ulink>) in DHCPv4 and
+      Vendor-specific Information Option (code 17, defined in
+      <ulink url="https://tools.ietf.org/html/rfc3315#section-22.17">Section 22.17 of
+      RFC 3315</ulink>) in DHCPv6. Vendor class option means Vendor-Identifying Vendor
+      Class Option (code 124, see
+      <ulink url="http://tools.ietf.org/html/rfc3925#section-3">Section 3 of RFC 3925</ulink>) in DHCPv4 and
+      Class Option (code 16, see
+      <ulink url="https://tools.ietf.org/html/rfc3315#section-22.16">Section 22.16 of RFC 3315</ulink>).
+      Vendor options may
+      have sub-options that are referenced by their codes. Vendor class
+      options do not have sub-options, but rather data chunks, which are
+      referenced by index value. Index 0 means the first data chunk, Index 1
+      is for the second data chunk (if present), etc.
+      </para></listitem>
 
-      <para>In the vendor and vendor-class constructs Asterisk (*) or 0 can be
+      <listitem><para>
+      In the vendor and vendor-class constructs Asterisk (*) or 0 can be
       used to specify a wildcard enterprise-id value, i.e. it will match any
-      enterprise-id value.</para>
+      enterprise-id value.
+      </para></listitem>
 
-      <para>Vendor Class Identifier (option 60 in DHCPv4) can be
-      accessed using option[60] expression.</para>
+      <listitem><para>Vendor Class Identifier (option 60 in DHCPv4) can be
+      accessed using option[60] expression.</para></listitem>
 
-      <para>RFC3925 and RFC3315 allow for multiple instances of vendor options
+      <listitem><para>
+      <ulink url="http://tools.ietf.org/html/rfc3925">RFC3925</ulink> and
+      <ulink url="http://tools.ietf.org/html/rfc3315">RFC3315</ulink>
+      allow for multiple instances of vendor options
       to appear in a single message. The client classification code currently
       examines the first instance if more than one appear. For vendor.enterprise
       and vendor-class.enterprise expressions, the value from the first instance
       is returned. Please submit a feature request on Kea website if you need
-      support for multiple instances.</para>
+      support for multiple instances.
+      </para></listitem>
+
+      </itemizedlist>
 
       <para>
         <table frame="all" id="classification-expressions-list">
@@ -557,7 +577,7 @@ concatenation of the strings</entry></row>
       <section>
         <title>Logical operators</title>
         The Not, And and Or logical operators are the common operators. Not
-        has the highest precedence, Or the lowest. And and Or are (left)
+        has the highest precedence and Or the lowest. And and Or are (left)
         associative, parentheses around a logical expression can be used
         to enforce a specific grouping, for instance in "A and (B or C)"
         (without parentheses "A and B or C" means "(A and B) or C").
@@ -626,7 +646,7 @@ concatenation of the strings</entry></row>
 
       <para>
       In the following example the class named &quot;Client_foo&quot; is defined.
-      It is comprised of all clients who's client ids (option 61) start with the
+      It is comprised of all clients whose client ids (option 61) start with the
       string &quot;foo&quot;. Members of this class will be given 192.0.2.1 and
       192.0.2.2 as their domain name servers.
 
@@ -685,7 +705,7 @@ concatenation of the strings</entry></row>
     <title>Configuring Subnets With Class Information</title>
       <para>
         In certain cases it beneficial to restrict access to certain subnets
-        only to clients that belong to a given class using the "client-class"
+        only to clients that belong to a given class, using the "client-class"
         keyword when defining the subnet.
       </para>
 
@@ -784,9 +804,9 @@ concatenation of the strings</entry></row>
       expression would either be complex or time consuming and be easier or
       better to write as code.  Once the hook has added the proper class name
       to the packet the rest of the classification system will work as normal
-      in choosing a subnet and selecting options.  For a description of the
+      in choosing a subnet and selecting options.  For a description of
       hooks see <xref linkend="hooks-libraries"/>, for a description on
-      configuring he classes see <xref linkend="classification-configuring"/>
+      configuring classes see <xref linkend="classification-configuring"/>
       and <xref linkend="classification-subnets"/>.
       </para>
   </section>
@@ -817,7 +837,7 @@ concatenation of the strings</entry></row>
      <para>
      The list of tokens is created when the configuration file is processed with
      most expressions and values being converted to a token.  The list is organized
-     in reverse Polish notation.  During execution the list will be traversed
+     in reverse Polish notation.  During execution, the list will be traversed
      in order.  As each token is executed it will be able to pop values
      from the top of the stack and eventually push its result on the top of the
      stack.  Imagine the following expression:
@@ -836,17 +856,17 @@ concatenation of the strings</entry></row>
      </para>
 
      <para>
-     When debug logging is enabled each time a token is evaluated it will
-     emit a log line indicating the values of any objects that were popped
+     When debug logging is enabled, each time a token is evaluated it will
+     emit a log message indicating the values of any objects that were popped
      off of the value stack and any objects that were pushed onto the value
      stack.
      </para>
 
      <para>
      The values will be displayed as either text if the command is known
-     to use text values or hex if the command either uses binary values or
+     to use text values or hexadecimal if the command either uses binary values or
      can manipulate either text or binary values.  For expressions that
-     pop multiple values off the stack the values will be displayed in
+     pop multiple values off the stack, the values will be displayed in
      the order they were popped.  For most expressions this won't matter
      but for the concat expression the values are displayed in reverse
      order from how they are written in the expression.
@@ -863,8 +883,7 @@ concatenation of the strings</entry></row>
        2016-05-19 13:35:04.163 DEBUG [kea.eval/44478] EVAL_DEBUG_OPTION Pushing option 61 with value 0x666F6F626172
        2016-05-19 13:35:04.164 DEBUG [kea.eval/44478] EVAL_DEBUG_STRING Pushing text string '0'
        2016-05-19 13:35:04.165 DEBUG [kea.eval/44478] EVAL_DEBUG_STRING Pushing text string '3'
-       2016-05-19 13:35:04.166 DEBUG [kea.eval/44478] EVAL_DEBUG_SUBSTRING Popping length 3, start 0,
-       string 0x666F6F626172 pushing result 0x666F6F
+       2016-05-19 13:35:04.166 DEBUG [kea.eval/44478] EVAL_DEBUG_SUBSTRING Popping length 3, start 0, string 0x666F6F626172 pushing result 0x666F6F
        2016-05-19 13:35:04.167 DEBUG [kea.eval/44478] EVAL_DEBUG_STRING Pushing text string 'foo'
        2016-05-19 13:35:04.168 DEBUG [kea.eval/44478] EVAL_DEBUG_EQUAL Popping 0x666F6F and 0x666F6F pushing result 'true'
        </screen>
@@ -872,7 +891,7 @@ concatenation of the strings</entry></row>
 
      <note><para>
      The debug logging may be quite verbose if you have a number of expressions
-     to evaluate.  It is intended as an aide in helping you create and debug
+     to evaluate.  It is intended as an aid in helping you create and debug
      your expressions.  You should plan to disable debug logging when you have your
      expressions working correctly.  You also may wish to include only one set of
      expressions at a time in the configuration file while debugging them in order
index 473089e021ab792fc7e43c41d584afb3922bfd91..8db374be5f7cdc175e6ed158c5409762f43f6b79 100644 (file)
     <title>Management API</title>
 
     <para>A classic approach to daemon configuration assumes that
-    the server's configuration is stored in the configuration files
-    and when the configuration is changed, the daemon is restarted.
+    the server's configuration is stored in configuration files
+    and, when the configuration is changed, the daemon is restarted.
     This approach has the significant disadvantage of introducing periods
     of downtime, when client traffic is not handled. Another risk
     is that if the new configuration is invalid for whatever reason,
     the server may refuse to start, which will further extend the
-    downtime period, until the issue is resolved.</para>
+    downtime period until the issue is resolved.</para>
 
-    <para>To avoid such problems, both DHCPv4 and DHCPv6 servers
-    introduced support for a mechanism that will allow
-    on-line reconfiguration, without requiring server shutdown.
+    <para>To avoid such problems, both the DHCPv4 and DHCPv6 servers
+    include support for a mechanism that allows
+    on-line reconfiguration without requiring server shutdown.
     Both servers can be instructed to open control sockets, which
     is a communication channel. The server is able to receive
     commands on that channel, act on them and report back status.
-    While the set of commands supported in Kea 0.9.2 is limited,
+    While the set of commands in Kea 1.1.0 is limited,
     the number is expected to grow over time.</para>
 
     <para>Currently the only supported type of control channel
     </para>
 
     <section id="ctrl-channel-syntax">
-    <title>Data syntax</title>
-    <para>Communication over control channel is conducted using JSON
-    structures. If configured, Kea will open a socket and will listen
-    for any incoming connections. A process connecting to this socket
+    <title>Data Syntax</title>
+    <para>Communication over the control channel is conducted using JSON
+    structures. If configured, Kea will open a socket and listen
+    for incoming connections. A process connecting to this socket
     is expected to send JSON commands structured as follows:
 
 <screen>
@@ -55,7 +55,7 @@
     <command>command</command> is the name of command to execute and
     is mandatory. <command>arguments</command> is a map of parameters
     required to carry out the given command.  The exact content and
-    format is command specific.</para>
+    format of the map is command specific.</para>
 
     <para>The server will process the incoming command and then send a
     response of the form:
     <command>result</command> indicates the outcome of the command. A value of 0
     means success while any non-zero value designates an error. Currently 1 is
     used as a generic error, but additional error codes may be added in the
-    future. <command>text</command> field typically appears when result is
+    future. The <command>text</command> field typically appears when result is
     non-zero and contains a description of the error encountered, but it may
-    also appear for successful results. That's command specific.
+    also appear for successful results (that is command specific).
     <command>arguments</command> is a map of additional data values returned by
-    the server, specific to the command issued. The map is always present, even
+    the server which is specific to the command issued. The map is always present, even
     if it contains no data values.</para>
     </section>
 
     <section id="ctrl-channel-client">
-    <title>Using control channel</title>
+    <title>Using the Control Channel</title>
 
-    <para>ISC does not provide a client for using control channel.  The primary
-    reason for that is the expectation is that the entity using control channel
+    <para>Kea does not currently provide a client for using the control channel.  The primary
+    reason for this is the expectation is that the entity using the control channel
     is typically an IPAM or similar network management/monitoring software which
     may have quite varied expectations regarding the client and is even likely to
-    be written in languages different than C or C++. Therefore we only provide
-    examples how one can take advantage of the API.</para>
+    be written in languages different than C or C++. Therefore only examples are provided to show
+    how one can take advantage of the API.</para>
 
     <para>The easiest way is to use a tool called <command>socat</command>,
     a tool available from <ulink url="http://www.dest-unreach.org/socat/">socat
@@ -101,7 +101,8 @@ $ socat UNIX:/path/to/the/kea/socket -
 </screen>
 where <command>/path/to/the/kea/socket</command> is the path specified in the
 <command>Dhcp4/control-socket/socket-name</command> parameter in the Kea
-configuration file.</para>
+configuration file. Text passed to <command>socat</command>
+will be sent to Kea and the responses received from Kea printed to standard output.</para>
 
     <para>It is also easy to open UNIX socket programmatically. An example of
     such a simplistic client written in C is available in the Kea Developer's
@@ -110,10 +111,10 @@ configuration file.</para>
     </section>
 
     <section id="commands-common">
-      <title>Commands supported by both DHCPv4 and DHCPv6 servers</title>
+      <title>Commands Supported by Both the DHCPv4 and DHCPv6 Servers</title>
 
       <section id="command-leases-reclaim">
-        <title>leases-reclaim command</title>
+        <title>leases-reclaim</title>
         <para>
           <emphasis>leases-reclaim</emphasis> command instructs the server to
           reclaim all expired leases immediately. The command has the following
@@ -140,10 +141,10 @@ configuration file.</para>
       </section>
 
       <section id="command-list-commands">
-      <title>list-commands command</title>
+      <title>list-commands</title>
 
       <para>
-       <emphasis>list-commands</emphasis> command retrieves a list of all
+       The <emphasis>list-commands</emphasis> command retrieves a list of all
        commands supported by the server. It does not take any arguments.
        An example command may look like this:
 <screen>
@@ -161,10 +162,10 @@ configuration file.</para>
     </section> <!-- end of command-list-commands -->
 
     <section id="command-shutdown">
-      <title>shutdown command</title>
+      <title>shutdown</title>
 
       <para>
-       <emphasis>shutdown</emphasis> command instructs the server to initiate
+       The <emphasis>shutdown</emphasis> command instructs the server to initiate
        its shutdown procedure. It is the equivalent of sending a SIGTERM signal
        to the process. This command does not take any arguments.  An example
        command may look like this:
index 5f741bb8f7107a1abc20fd790687a6b1f76da799..4a069f72b3a63ce93a0df0284ff423551a3980f0 100644 (file)
@@ -8,7 +8,8 @@
     <title>The DHCP-DDNS Server</title>
     <para>
     The DHCP-DDNS Server (kea-dhcp-ddns, known informally as D2) conducts the client side of
-    the DDNS protocol (defined in RFC 2136) on behalf of the DHCPv4 and DHCPv6
+    the DDNS protocol (defined in <ulink url="http://tools.ietf.org/html/rfc2136">RFC 2136</ulink>)
+    on behalf of the DHCPv4 and DHCPv6
     servers (kea-dhcp4 and kea-dhcp6 respectively). The DHCP servers construct
     DDNS update requests, known as NameChangeRequests (NCRs), based upon DHCP
     lease change events and then post these to D2. D2 attempts to match
           </listitem>
           <listitem>
             <simpara>
-              <command>-V</command> - prints out Kea extended version with
-              additional parameters and exits.
+              <command>-W</command> - prints out the Kea configuration report
+              and exits. The report is a copy of the
+              <filename>config.report</filename> file produced by
+              <userinput>./configure</userinput>: it is embedded in the
+              executable binary.
             </simpara>
           </listitem>
           <listitem>
           </listitem>
       </itemizedlist>
 
-      <para>
-            The <command>-V</command> command returns the versions of the
-            external libraries dynamically linked.
-      </para>
-
-      <para>
-            The <command>-W</command> command describes the environment used
-            to build Kea.  This command displays a copy of the
-            <filename>config.report</filename> file produced by
-            <userinput>./configure</userinput> that is embedded in the
-            executable binary.
-      </para>
-
       <para>
             The <filename>config.report</filename> may also be accessed more
             directly.  The following command may be used to extract this
@@ -188,26 +179,22 @@ strings <userinput>path</userinput>/kea-dhcp-ddns | sed -n 's/;;;; //p'
        <itemizedlist>
          <listitem>
            <simpara>
-             <command>Global Server Parameters</command> -
-             values which control connectivity and global server behavior
+        <emphasis>Global Server Parameters</emphasis> - values which control connectivity and global server behavior
            </simpara>
          </listitem>
          <listitem>
            <simpara>
-             <command>TSIG Key Info</command> -
-             defines the TSIG keys used for secure traffic with DNS servers
+             <emphasis>TSIG Key Info</emphasis> - defines the TSIG keys used for secure traffic with DNS servers
            </simpara>
          </listitem>
          <listitem>
            <simpara>
-             <command>Forward DDNS</command> -
-             defines the catalog of Forward DDNS Domains
+             <emphasis>Forward DDNS</emphasis> - defines the catalog of Forward DDNS Domains
            </simpara>
          </listitem>
          <listitem>
            <simpara>
-             <command>Reverse DDNS</command> -
-             defines the catalog of Forward DDNS Domains
+             <emphasis>Reverse DDNS</emphasis> - defines the catalog of Forward DDNS Domains
            </simpara>
          </listitem>
        </itemizedlist>
@@ -234,8 +221,7 @@ strings <userinput>path</userinput>/kea-dhcp-ddns | sed -n 's/;;;; //p'
 
       <listitem><simpara>
       <command>ncr-protocol</command> - Socket protocol to use when sending requests to D2.
-      Currently only UDP is supported.  TCP may be available in an upcoming
-      release.
+      Currently only UDP is supported.  TCP may be available in a future release.
       </simpara></listitem>
 
       <listitem><simpara>
@@ -347,7 +333,7 @@ corresponding values in the DHCP servers' "dhcp-ddns" configuration section.
            <simpara>
              <command>digest-bits</command> -
              is used to specify the minimum truncated length in bits.
-             The default value 0 means truncation is forbidden, not 0
+             The default value 0 means truncation is forbidden, non-zero
              values must be an integral number of octets, be greater
              than 80 and the half of the full length. Note in BIND9
              this parameter is appended after a dash to the algorithm
index 43badeddb24741d1ec3c3a761327c3e4c6b78bae..66157bf292d22ae2c24fc1ffa94150b2a2e5633b 100644 (file)
@@ -18,7 +18,7 @@
     it in the known issues list. -->
 
   <section id="faq-generic">
-    <title>Generic Frequently Asked Questions</title>
+    <title>General Frequently Asked Questions</title>
 
     <section id="q1-generic">
       <title>Where did the Kea name came from?</title>
@@ -61,7 +61,8 @@
       Accepted contributions range from minor documentation corrections to
       significant new features, like support for a new database type. Before
       considering writing and submitting a patch, make sure you read
-      the Contributor's Guide in <ulink url="http://git.kea.isc.org/~tester/kea/doxygen/">Kea Developer's Guide</ulink>.
+      the Contributor's Guide in the
+      <ulink url="http://git.kea.isc.org/~tester/kea/doxygen/">Kea Developer's Guide</ulink>.
       </para>
 
       <para>Kea is developed by ISC, which is a non-profit organization.
index 3aeefebfb928de4bcc41c8960d5687b6da381c3d..e25300add5dd04a71fdf1740f5a263a525ba7959 100644 (file)
 </screen>
       </para>
 
-      <note><para>
-        This is a change to the syntax used in Kea 0.9.2 and earlier, where
-        hooks-libraries was a list of strings, each string being the name of
-        a library.  The change has been made in Kea 1.0 to facilitate the
-        specification of library-specific parameters, a feature that will be
-        added to a future version of Kea.
-      </para></note>
-
         <note>
           <para>
           The library reloading behavior has changed in Kea 1.1. Libraries are
         parameter), floor (integer parameter), debug (boolean parameter) and
         even lists (list of strings) and maps (containing strings). Nested
         parameters could be used if the library supports it. This topic is
-        explained in detail in the Hooks Developer's Guide in Configuring Hooks
-        Libraries section.
+        explained in detail in the Hooks Developer's Guide in the "Configuring
+        Hooks Libraries" section.
       </para>
 
       <para>
index 2116dc499756bd09c975b3c319f9f83414115705..abca79b0f3521be63c670126b83da467420d86d9 100644 (file)
@@ -8,8 +8,8 @@
 
   <para>The primary role of the DHCP server is to assign addresses and/or
   delegate prefixes to DHCP clients. These addresses and prefixes are
-  often referred to as 'leases'. Leases are typically assigned to clients
-  for a finite amount of time, known as 'valid lifetime'. DHCP clients who
+  often referred to as "leases". Leases are typically assigned to clients
+  for a finite amount of time, known as the "valid lifetime". DHCP clients who
   wish to continue using their assigned leases, will periodically renew them
   by sending the appropriate message to the DHCP server. The DHCP server records
   the time when these leases are renewed and calculates new expiration times
   available for reassignment is referred to as "lease reclamation" and expired
   leases returned to availability through this process are referred to as
   "reclaimed".
-
-  The DHCP server should reclaim an expired lease as soon as it detects
-  that it has expired. One way in which the server may detect expiration
-  is when it is trying to allocate a lease to a client and finds this
-  lease already present in the database but expired.  Another way the
-  server detects expired leases is by periodically querying the lease
+  The DHCP server attempts to reclaim an expired lease as soon as it detects
+  that it has expired. One way in which the server detects expiration occurs
+  when it is trying to allocate a lease to a client and finds this
+  lease already present in the database but expired.  Another way
+  is by periodically querying the lease
   database for them.  Regardless of how an expired lease is detected, before
-  it my assigned to a client, it must be reclaimed.
-
+  it may assigned to a client, it must be reclaimed.
+  </para>
+  <para>
   This chapter explains how to configure the server to periodically query
-  for the expired leases and how to minimize the impact of the periodic leases
-  reclamation process on the server's responsiveness. Finally, 'lease affinity',
-  which provides the means to assign the same lease to the returning client
-  after its lease has expired, is explained.
+  for the expired leases and how to minimize the impact of the periodic lease
+  reclamation process on the server's responsiveness. Finally, it explains
+  "lease affinity", which provides the means to assign the same lease to a
+  returning client after its lease has expired.
   </para>
 
   <para>Although, all configuration examples in this section are provided
   <section id="lease-reclamation">
     <title>Lease Reclamation</title>
     <para>Lease reclamation is the process through which an expired lease
-    becomes available for assignment to the same or different client.
+    becomes available for assignment to the same or different client.
     This process involves the following steps for each reclaimed lease:
     </para>
 
     <itemizedlist>
       <listitem>
         <simpara>Invoke callouts for the <command>lease4_expire</command> or
-        <command>lease6_expire</command> hook points, if hook libraries
+        <command>lease6_expire</command> hook points if hook libraries
         supporting those callouts are currently loaded.</simpara>
       </listitem>
       <listitem>
@@ -69,9 +69,9 @@
         indicate that the lease is now available for re-assignment.</simpara>
       </listitem>
       <listitem>
-        <simpara>Update statistics of the server, which includes
+        <simpara>Update counters on the server, which includes
         increasing the number of reclaimed leases and decreasing the
-        number of assigned addresses or delegated prefixes etc.</simpara>
+        number of assigned addresses or delegated prefixes.</simpara>
       </listitem>
     </itemizedlist>
 
   </section>
 
   <section id="lease-reclaim-config">
-    <title>Configuring Leases Reclamation</title>
+    <title>Configuring Lease Reclamation</title>
     <para>Kea can be configured to periodically detect and reclaim expired
     leases. During this process the lease entries in the database are
-    modified or removed. Therefore the server will not process incoming DHCP
+    modified or removed. While this is happening the server will not process incoming DHCP
     messages to avoid issues with concurrent access to database information.
     As a result, the server will be unresponsive while lease reclamation
-    is performed. DHCP queries will accumulate and responses will be
+    is performed and DHCP queries will accumulate; responses will be
     sent once the leases reclamation cycle is complete.</para>
 
     <para>In deployments where response time is critical, administrators may
 
     <para>The first parameter is expressed in seconds and specifies an
     interval between the two consecutive lease reclamation cycles. This
-    is explained on the following diagram.
+    is explained by the following diagram.
 
 <screen>
 
 </screen>
 
     </para>
-    <para>This diagram shows 4 leases reclamation cycles of variable duration.
+    <para>This diagram shows four lease reclamation cycles (c1 through c4) of variable duration.
     Note that the duration of the reclamation cycle depends on the number
     of expired leases detected and processed in the particular cycle. This
     duration is also usually significantly shorter than the interval between
     </para>
 
     <para>According to the <command>reclaim-timer-wait-time</command> the
-    server keeps fixed intervals of 5 seconds between the end of one cycle
+    server keeps fixed intervals of five seconds between the end of one cycle
     and the start of the next cycle. This guarantees the presence of
     5s long periods during which the server remains responsive to DHCP
-    queries and does not perform leases reclamation. The
+    queries and does not perform lease reclamation. The
     <command>max-reclaim-leases</command> and
-    <command>max-reclaim-time</command> are set to 0, which implies that
-    there is no restriction on the maximum number of leases reclaimed
-    in the particular cycle, or the maximum duration of each cycle.
+    <command>max-reclaim-time</command> are set to 0, which sets
+    no restriction on the maximum number of leases reclaimed
+    in the particular cycle, or on the maximum duration of each cycle.
     </para>
 
     <para>In deployments with high lease pool utilization, relatively
     short valid lifetimes, and frequently disconnecting clients which
-    allow leases to expire; the number of expired leases requiring reclamation
+    allow leases to expire, the number of expired leases requiring reclamation
     at any given time may rise significantly. In this case it is often
     desirable to apply restrictions on the maximum duration of a reclamation
     cycle or the maximum number of leases reclaimed in a cycle. The following
         "max-reclaim-leases": 100,
         "max-reclaim-time": 50,
         "unwarned-reclaim-cycles": 10,
-        "flush-reclaimed-timer-wait-time": 0,
     },
 
     ...
     is a risk that expired leases will accumulate faster than the server can
     reclaim them.  This should not be the problem if the server is dealing
     with a temporary burst of expirations, because it should be able to
-    eventually deal with them over time. However, if leases expire at the high
+    eventually deal with them over time. However, if leases expire at a high
     rate for a longer period of time, the unreclaimed leases will pile up in
     the database. In order to notify the administrator that the current
     configuration does not satisfy the needs for reclamation of expired
-    leases, the server issues a warning message in the log, if it was unable
+    leases, the server issues a warning message in the log if it was unable
     to reclaim all leases within the last couple of reclamation cycles. The
     number of cycles after which such warning is issued is specified with the
     <command>unwarned-reclaim-cycles</command> configuration parameter.
     <para>Suppose that a laptop goes to a sleep mode after a period of user
     inactivity.  While the laptop is in sleep mode, its DHCP client will not
     renew leases obtained from the server and these leases will eventually
-    expire.  When the laptop wakes up, it is often desired that it continue
+    expire.  When the laptop wakes up, it is often desirable for it to continue
     using its previous assigned IP addresses. In order to facilitate this,
     the server needs to correlate returning clients with their expired leases
     When the client returns, the server will first check for those leases and
-    re-assign them if they have not assigned to another client.  The ability
+    re-assign them if they have not been assigned to another client.  The ability
     of the server to re-assign the same lease to a returning client is
-    referred to as 'lease affinity'.
+    referred to as "lease affinity".
     </para>
 
     <para>When lease affinity is enabled, the server will still
     any reclaimed lease may be assigned to another client if that client
     specifically asks for it. Therefore, the lease affinity does not
     guarantee that the reclaimed lease will be available for the client
-    who used it before. It merely increases the chances for the client to
-    be assigned the same lease. If the lease pool is small (mostly applies
+    who used it before; it merely increases the chances for the client to
+    be assigned the same lease. If the lease pool is small (this mostly applies
     to DHCPv4 for which address space is small), there is an increased
-    likelihood that the expired lease will be hijacked by another client.
+    likelihood that the expired lease will be assigned to another client.
     </para>
 
     <para>Consider the following configuration:
     the previous removal attempt was completed. Setting this value to 0
     disables lease affinity, in which case leases will be removed from the
     lease database when they are reclaimed.  If lease affinity is enabled, it
-    is recommended that hold-reclaim-time be set to a value significantly
+    is recommended that <command>hold-reclaim-time</command> be set to a value significantly
     higher than the <command>reclaim-timer-wait-time</command>, as timely
     removal of expired-reclaimed leases is less critical while the removal
     process may impact server responsiveness.</para>
index e177d7344a74ec484b74cc505a27c1ac9007aaf3..f6580e83fa6146ab86cd026ffcd6119f38b4e997 100644 (file)
@@ -22,7 +22,7 @@
       of the lease entries and to indicate where it is in the process in case of an
       interruption.  Currently the caller must supply names for all of the files, in
       the future this requirement may be relaxed with the process getting the names
-      from either the config file or from defaults.
+      from either the configuration file or from defaults.
       </para>
     </section>
 
index 841cec6a97131770de8d504bd14277d6ec89501c..851c87469fcad67ebf0b35e9a0adffa880014a33 100644 (file)
@@ -5,9 +5,9 @@
 ]>
 
   <chapter id="libdhcp">
-    <title>libdhcp++ library</title>
+    <title>The libdhcp++ Library</title>
     <para>
-      libdhcp++ is a common library written in C++ that handles
+      libdhcp++ is a library written in C++ that handles
       many DHCP-related tasks, including:
       <itemizedlist>
         <listitem>
@@ -40,7 +40,7 @@
       OpenBSD), Mac OS X and Solaris 11 systems.</para>
 
       <para>DHCPv4 requires special raw socket processing to send and receive
-      packets from hosts that do not have IPv4 address assigned yet. Support
+      packets from hosts that do not have IPv4 address assigned. Support
       for this operation is implemented on Linux, FreeBSD, NetBSD and OpenBSD.
       It is likely that DHCPv4 component will not work in certain cases on
       other systems.</para>
index 3693142793b4d5c3be8b2e8fcd6557ad05b379b7..82344bc3092139249347bfbed931de5d9dfa4f30 100644 (file)
        - module => daemon
     -->
 
-  <chapter id="logging">
-    <title>Logging</title>
+<chapter id="logging">
+  <title>Logging</title>
+
+  <section>
+    <title>Logging Configuration</title>
+    <para>
+      During its operation Kea may produce many messages. They differ in
+      severity (some are more important than others) and source (some are
+      produced by specific components, e.g. hooks). It is useful to understand
+      which log messages are needed and which are not, and configure your
+      logging appropriately. For example, debug level messages can be safely
+      ignored in a typical deployment. They are, however, very useful when
+      debugging a problem.
+    </para>
+
+    <para>
+      The logging system in Kea is configured through the
+      Logging section in your configuration
+      file. All daemons (e.g. DHCPv4 and DHCPv6 servers) will use the
+      configuration in the Logging section to see
+      what should be logged and to where. This allows for sharing identical
+      logging configuration between daemons.
+    </para>
 
     <section>
-      <title>Logging Configuration</title>
+      <title>Loggers</title>
+      <para>
+        Within Kea, a message is logged through an entity called a
+        "logger". Different components log messages through different
+        loggers, and each logger can be configured independently of
+        one another. Some components, in particular the DHCP server
+        processes, may use multiple loggers to log messages pertaining
+        to different logical functions of the component. For example,
+        the DHCPv4 server uses one logger for messages
+        pertaining to packet reception and transmission, another
+        logger for messages related to lease allocation and so on.
+        Some of the libraries used by the Kea servers, e.g. libdhcpsrv,
+        use their own loggers.
+      </para>
 
       <para>
-        During its operation Kea may produce many messages. They differ in
-        severity (some are more important than others) and source (some are
-        produced by specific components, e.g. hooks). It is useful to understand
-        which log messages are needed and which are not and configure your
-        logging appropriately. For example, debug level messages can be safely
-        ignored in a typical deployment. They are, however, very useful when
-        debugging a problem.
+        Users implementing hooks libraries (code attached to the server at
+        runtime) are responsible for creating the loggers used by those
+        libraries. Such loggers should have unique names, different
+        from the logger names used by Kea. In this way the
+        messages output by the hooks library can be distingued from
+        messages issued by the core Kea code. Unique names also allow
+        the loggers to be configured independently of loggers used
+        by Kea.  Whenever it makes sense, a hook library can use multiple
+        loggers to log messages pertaining to different logical parts
+        of the library.
       </para>
 
       <para>
-        The logging system in Kea is configured through the
-        <replaceable>Logging</replaceable> structure in your configuration
-        file. All daemons (e.g. DHCPv4 and DHCPv6 servers) will use the
-        configuration in the <replaceable>Logging</replaceable> structure to see
-        what should be logged and to where. This allows for sharing identical
-        logging configuration between daemons.
+        In the Logging section of a configuration file you can specify the
+        configuration for zero or more loggers (including loggers used by the
+        proprietary hooks libraries). If there are no loggers specified, the
+        code will use default values: these cause Kea to log messages of INFO
+        severity or greater to standard output.
+        <!-- @todo: add reference to section about controlling default
+        behavior with env. variables, after #3591 is merged. -->
       </para>
 
-      <section>
-        <title>Loggers</title>
+      <para>
+        The three main elements of a logger configuration are:
+        <command>name</command> (the component that is generating the messages),
+        the <command>severity</command> (what to log), and the
+        <command>output_commands</command> (where to log).  There is also a
+        <command>debuglevel</command> element, which is only relevant if
+        debug-level logging has been selected.
+      </para>
 
+      <section>
+        <title>name (string)</title>
         <para>
-          Within Kea, a message is logged through an entity called a
-          "logger". Different components log messages through different
-          loggers, and each logger can be configured independently of
-          one another. Some components, in particular the DHCP server
-          processes, may use multiple loggers to log messages pertaining
-          to different logical functions of the component. For example,
-          the DHCPv4 server is using one logger for messages
-          pertaining to packet reception and transmission, another
-          logger for messages related to lease allocation and so on.
-          Some of the libraries used by the Kea servers, e.g. libdhcpsrv
-          or libhooks library, use their own loggers.
+          Each logger in the system has a name, the name being that of the
+          component binary file using it to log messages. For instance, if you
+          want to configure logging for the DHCPv4 server, you add an entry
+          for a logger named <quote>kea-dhcp4</quote>. This configuration will
+          then be used by the loggers in the DHCPv4 server, and all the
+          libraries used by it (unless a library defines its own logger and
+          there is specific logger configuration that applies to that logger).
         </para>
 
         <para>
-          Users implementing hooks libraries (code attached to the server at
-          runtime) are responsible for creating the loggers used by those
-          libraries. Such loggers should have unique names, different
-          from the logger names used by Kea. In this way the
-          messages emitted from the hooks library can be distingued from
-          messages issued by the core Kea code. Unique names also allow
-          the loggers to be configured independently of loggers used
-          by Kea.  Whenever it makes sense, a hook library can use multiple
-          loggers to log messages pertaining to different logical parts
-          of the library.
+          When tracking down an issue with the server's operation, use of
+          DEBUG logging is required to obtain the verbose output needed for
+          problems diagnosis.  However, the high verbosity is likely to
+          overwhelm the logging system in cases when the server
+          is processing high volume traffic. To mitigate this problem, use
+          can be made of the fact that Kea uses multiple loggers for different
+          functional parts of the server and that each of these can be configured independently.
+          If the user is reasonably confident that a problem originates
+          in a specific function of the server, or that the problem is related
+          to the specific type of operation, they may enable high verbosity
+          only for the relevant logger, so limiting the debug messages
+          to the required minimum.
         </para>
 
         <para>
-          In the <quote>Logging</quote> structure of a configuration file
-          you can specify the configuration for zero or more loggers
-          (including loggers used by the proprietary hooks libraries). If
-          there are no loggers specified, the code will use default values which
-          cause Kea to log messages on at least INFO severity to standard
-          output.
-          <!-- @todo: add reference to section about controlling default
-          behavior with env. variables, after #3591 is merged. -->
+          The loggers are associated with a particular library or binary
+          of Kea. However, each library or binary may (and usually does)
+          include multiple loggers. For example, the DHCPv4 server binary
+          contains separate loggers for: packet parsing, for dropped packets,
+          for callouts etc.
         </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 loggers form a hierarchy.  For each program in Kea, there is
+          a "root" logger, named after the program (e.g. the root logger for
+          kea-dhcp (the DHCPv4 server) is named kea-dhcp4.  All other loggers
+          are children of this logger, and are named accordingly, e.g. the
+          the allocation engine in the DHCPv4 server logs messages using
+          a logger called kea-dhcp4.alloc-engine.
         </para>
 
-        <section>
-          <title>name (string)</title>
-
-          <para>
-            Each logger in the system has a name, the name being that of the
-            component binary file using it to log messages. For instance, if you
-            want to configure logging for the DHCPv4 server, you add an entry
-            for a logger named <quote>kea-dhcp4</quote>. This configuration will
-            then be used by the loggers in the DHCPv4 server, and all the
-            libraries used by it (unless a library defines its own logger and
-            there is specific logger configuration that applies to that logger).
-          </para>
-
-          <para>
-            When diagnosing the problem with the server's operation, it is often
-            desired to use the DEBUG logging level to obtain the verbose output
-            from the server and libraries it uses. However, high verbosity may
-            be an overkill for the logging system in cases when the server
-            is processing high volume traffic. To mitigate this problem, Kea
-            is using multiple loggers, which can be configured independently
-            and which are responsible for logging messages from different
-            functional parts of the server. If the user, trying to diagnose the
-            problem, has a reasonably high confidence that the problem origins
-            in a specific function of the server, or the problem is related
-            to the specific type of operation, he may enable high verbosity
-            only for the relevant logger, thus limiting the debug messages
-            to the required minimum.
-          </para>
-
-          <para>
-            The loggers are associated with a particular library or binary
-            of Kea. However, each library or binary may (and usually does)
-            include multiple loggers. For example, the DHCPv4 server binary
-            contains separate loggers for: packet parsing, for dropped packets,
-            for callouts etc. Each logger "derives" its configuration from the
-            root logger. In the typical case, the root logger configuration
-            is the only logging configuration specified in the configuration
-            file. Creating a specific configuration for the selected logger,
-            thus overriding the configuration settings specified in the
-            root logger configuration, requires putting its configuration
-            aside of the root logger's configuration with some of the
-            parameters modified.
-          </para>
+        <para>
+          This relationship is important as each child logger derives its
+          default configuration from its parent root logger.
+          In the typical case, the root logger configuration
+          is the only logging configuration specified in the configuration
+          file and so applies to all loggers. If an entry is made for
+          a given logger, any attributes specified override those of
+          the root logger, whereas any not specified are inherited from it.
+        </para>
 
-          <para>
-            To illustrate this, suppose you are using the DHCPv4 server
-            with the root logger <quote>kea-dhcp4</quote> logging at the
-            INFO level. In order to enable DEBUG verbosity for the DHCPv4
-            packet drops, you must create configuration entry for the
-            logger called <quote>kea-dhcp4.bad-packets</quote> and specify
-            severity DEBUG for this logger. All other configuration
-            parameters may be omited for this logger if the logger should
-            use the default values specified in the root logger's
-            configuration.
-          </para>
+        <para>
+          To illustrate this, suppose you are using the DHCPv4 server
+          with the root logger <quote>kea-dhcp4</quote> logging at the
+          INFO level. In order to enable DEBUG verbosity for the DHCPv4
+          packet drops, you must create configuration entry for the
+          logger called <quote>kea-dhcp4.bad-packets</quote> and specify
+          severity DEBUG for this logger. All other configuration
+          parameters may be omited for this logger if the logger should
+          use the default values specified in the root logger's
+          configuration.
+        </para>
 
         <!-- we don't support asterisk anymore.
         <para>
           daemon 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 both <quote>kea-dhcp4</quote> and
-            <quote>kea-dhcp4.dhcpsrv</quote>, the DHCPv4 server &mdash; and all
-            libraries it uses that are not dhcpsrv &mdash; will log messages
-            according to the configuration in the first entry
-            (<quote>kea-dhcp4</quote>).
-          </para>
-
-          <para>
-            Currently defined loggers are:
-          </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 both <quote>kea-dhcp4</quote> and
+          <quote>kea-dhcp4.dhcpsrv</quote>, the DHCPv4 server &mdash; and all
+          libraries it uses that are not dhcpsrv &mdash; will log messages
+          according to the configuration in the first entry
+          (<quote>kea-dhcp4</quote>).
+        </para>
 
+        <para>
+          Currently defined loggers are:
+        </para>
         <itemizedlist>
           <listitem>
-            <simpara><command>kea-dhcp4</command> - this is the root logger for
-            the DHCPv4 server. All components used by the DHCPv4 server inherit
-            the settings from this logger if there is no specialized logger
-            provided.</simpara>
+            <simpara>
+              <command>kea-dhcp4</command> - the root logger for the DHCPv4
+              server. All components used by the DHCPv4 server inherit the
+              settings from this logger.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.alloc-engine</command> - this is the
-            logger used by the lease allocation engine, which is responsible
-            for managing leases in the lease database, i.e. create, modify
-            and remove DHCPv4 leases as a result of processing messages from
-            the clients.</simpara>
+            <simpara>
+              <command>kea-dhcp4.alloc-engine</command> - used by the lease
+              allocation engine, which is responsible for managing leases in the
+              lease database, i.e. create, modify and remove DHCPv4 leases as a
+              result of processing messages from the clients.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.bad-packets</command> - this is the
-            logger used by the DHCPv4 server daemon for logging inbound client
-            packets that were dropped or to which the server responded with a
-            DHCPNAK. The allows administrators to configure a separate log
-            output that contains only packet drop and reject entries.</simpara>
+            <simpara>
+              <command>kea-dhcp4.bad-packets</command> - used by the DHCPv4
+              server daemon for logging inbound client packets that were dropped
+              or to which the server responded with a DHCPNAK. It allows
+              administrators to configure a separate log output that contains
+              only packet drop and reject entries.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.callouts</command> - this logger is used
-            to log messages pertaining to the callouts registration and execution
-            for the particular hook point.
+            <simpara>
+              <command>kea-dhcp4.callouts</command> - used to log messages
+              pertaining to the callouts registration and execution for the
+              particular hook point.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.commands</command> - this logger is used
-            to log messages relating to the handling of commands received by the
-            the DHCPv4 server over the command channel.
+            <simpara>
+              <command>kea-dhcp4.commands</command> - used to log messages
+              relating to the handling of commands received by the the DHCPv4
+              server over the command channel.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.ddns</command> - this logger is used by
-            the DHCPv4 server to log messages related to the Client FQDN and
-            Hostname option processing. It also includes log messages
-            related to the relevant DNS updates.</simpara>
+            <simpara>
+              <command>kea-dhcp4.ddns</command> - used by the DHCPv4 server to
+              log messages related to the Client FQDN and Hostname option
+              processing. It also includes log messages related to the relevant
+              DNS updates.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.dhcp4</command> - this is the logger
-            by the DHCPv4 server daemon to log basic operations.</simpara>
+            <simpara>
+              <command>kea-dhcp4.dhcp4</command> - used by the DHCPv4 server
+              daemon to log basic operations.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.dhcpsrv</command> - this is a base
-            logger for the libdhcpsrv library.</simpara>
+            <simpara>
+              <command>kea-dhcp4.dhcpsrv</command> - the base logger for the
+              libdhcpsrv library.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.eval</command> - this logger is used
-            to log messages relating to the client classification expression
-            evaluation code.</simpara>
+            <simpara>
+              <command>kea-dhcp4.eval</command> - used to log messages relating
+              to the client classification expression evaluation code.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.hooks</command> - this logger is used
-            to log messages related to management of hooks libraries, e.g.
-            registration and deregistration of the libraries, and to the
-            initialization of the callouts execution for various hook points
-            within the DHCPv4 server.</simpara>
+            <simpara>
+              <command>kea-dhcp4.hooks</command> - used to log messages related
+              to management of hooks libraries, e.g.  registration and
+              deregistration of the libraries, and to the initialization of the
+              callouts execution for various hook points within the DHCPv4
+              server.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.hosts</command> - this logger is used
-            within the libdhcpsrv and it logs messages related to the management
-            of the DHCPv4 host reservations, i.e. retrieval of the reservations
-            and adding new reservations.</simpara>
+            <simpara>
+              <command>kea-dhcp4.hosts</command> - used within the libdhcpsrv
+              and it logs messages related to the management of the DHCPv4 host
+              reservations, i.e. retrieval of the reservations and adding new
+              reservations.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.leases</command> - this logger is used
-            by the DHCPv4 server to log messages related to the lease allocation.
-            The messages include detailed information about the allocated or
-            offered leases, errors during the lease allocation etc.
+            <simpara>
+              <command>kea-dhcp4.leases</command> - used by the DHCPv4 server to
+              log messages related to the lease allocation.  The messages
+              include detailed information about the allocated or offered
+              leases, errors during the lease allocation etc.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.options</command> - this logger is
-            used by the DHCPv4 server to log messages related to processing
-            of the options in the DHCPv4 messages, i.e. parsing options,
-            encoding options into on-wire format and packet classification
-            using options contained in the received packets.</simpara>
+            <simpara>
+              <command>kea-dhcp4.options</command> - used by the DHCPv4 server
+              to log messages related to processing of the options in the DHCPv4
+              messages, i.e. parsing options, encoding options into on-wire
+              format and packet classification using options contained in the
+              received packets.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp4.packets</command> - this logger
-            is mostly used to log messages related to transmission of the DHCPv4
-            packets, i.e. packet reception and sending a response. Such messages
-            include the information about the source and destination IP addresses
-            and interfaces used to transmit packets. This logger is also used
-            to log messages related to subnet selection, as this selection is
-            usually based on the IP addresses and/or interface names, which can
-            be retrieved from the received packet, even before the DHCPv4 message
-            carried in the packet is parsed.
+            <simpara>
+              <command>kea-dhcp4.packets</command> - this logger is mostly used
+              to log messages related to transmission of the DHCPv4 packets,
+              i.e. packet reception and sending a response. Such messages
+              include information about the source and destination IP addresses
+              and interfaces used to transmit packets. The logger is also used
+              to log messages related to subnet selection, as this selection is
+              usually based on the IP addresses and/or interface names, which
+              can be retrieved from the received packet, even before the DHCPv4
+              message carried in the packet is parsed.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6</command> - this is the root logger for
-            the DHCPv6 server. All components used by the DHCPv6 server inherit
-            the settings from this logger if there is no specialized logger
-            provided.</simpara>
+            <simpara>
+              <command>kea-dhcp6</command> - the root logger for the DHCPv6
+              server. All components used by the DHCPv6 server inherit the
+              settings from this logger if there is no specialized logger
+              provided.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.alloc-engine</command> - this is the
-            logger used by the lease allocation engine, which is responsible
-            for managing leases in the lease database, i.e. create, modify
-            and remove DHCPv6 leases as a result of processing messages from
-            the clients.</simpara>
+            <simpara>
+              <command>kea-dhcp6.alloc-engine</command> - used used by the lease
+              allocation engine, which is responsible for managing leases in the
+              lease database, i.e. create, modify and remove DHCPv6 leases as a
+              result of processing messages from the clients.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.bad-packets</command> - this is the
-            logger used by the DHCPv6 server daemon for logging inbound client
-            packets that were dropped.</simpara>
+            <simpara>
+              <command>kea-dhcp6.bad-packets</command> - used used by the DHCPv6
+              server daemon for logging inbound client packets that were
+              dropped.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.callouts</command> - this logger is used
-            to log messages pertaining to the callouts registration and execution
-            for the particular hook point.
+            <simpara>
+              <command>kea-dhcp6.callouts</command> - used to log messages
+              pertaining to the callouts registration and execution for the
+              particular hook point.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.commands</command> - this logger is used
-            to log messages relating to the handling of commands received by the
-            the DHCPv6 server over the command channel.
+            <simpara>
+              <command>kea-dhcp6.commands</command> - used to log messages
+              relating to the handling of commands received by the the DHCPv6
+              server over the command channel.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.ddns</command> - this logger is used by
-            the DHCPv6 server to log messages related to the Client FQDN option
-            processing. It also includes log messages related to the relevant
-            DNS updates.</simpara>
+            <simpara>
+              <command>kea-dhcp6.ddns</command> - this logger is used by the
+              DHCPv6 server to log messages related to the Client FQDN option
+              processing. It also includes log messages related to the relevant
+              DNS updates.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.dhcp6</command> - this is the logger
-            used DHCPv6 server daemon to log basic operations.</simpara>
+            <simpara>
+              <command>kea-dhcp6.dhcp6</command> - used DHCPv6 server daemon to
+              log basic operations.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.dhcpsrv</command> - this is a base
-            logger for the libdhcpsrv library.</simpara>
+            <simpara>
+              <command>kea-dhcp6.dhcpsrv</command> - the base logger for the
+              libdhcpsrv library.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.eval</command> - this logger is used
-            to log messages relating to the client classification expression
-            evaluation code.</simpara>
+            <simpara>
+              <command>kea-dhcp6.eval</command> - used to log messages relating
+              to the client classification expression evaluation code.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.hooks</command> - this logger is used
-            to log messages related to management of hooks libraries, e.g.
-            registration and deregistration of the libraries, and to the
-            initialization of the callouts execution for various hook points
-            within the DHCPv6 server.</simpara>
+            <simpara>
+              <command>kea-dhcp6.hooks</command> - this logger is used to log
+              messages related to management of hooks libraries, e.g.
+              registration and deregistration of the libraries, and to the
+              initialization of the callouts execution for various hook points
+              within the DHCPv6 server.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.hosts</command> - this logger is used
-            within the libdhcpsrv and it logs messages related to the management
-            of the DHCPv6 host reservations, i.e. retrieval of the reservations
-            and adding new reservations.</simpara>
+            <simpara>
+              <command>kea-dhcp6.hosts</command> - used within the libdhcpsrv
+              and it logs messages related to the management of the DHCPv6 host
+              reservations, i.e. retrieval of the reservations and adding new
+              reservations.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.leases</command> - this logger is used
-            by the DHCPv6 server to log messages related to the lease allocation.
-            The messages include detailed information about the allocated or
-            offered leases, errors during the lease allocation etc.
+            <simpara>
+              <command>kea-dhcp6.leases</command> - used by the DHCPv6 server to
+              log messages related to the lease allocation.  The messages
+              include detailed information about the allocated or offered
+              leases, errors during the lease allocation etc.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.options</command> - this logger is
-            used by the DHCPv6 server to log messages related to processing
-            of the options in the DHCPv6 messages, i.e. parsing options,
-            encoding options into on-wire format and packet classification
-            using options contained in the received packets.</simpara>
+            <simpara>
+              <command>kea-dhcp6.options</command> - used by the DHCPv6 server
+              to log messages related to processing of the options in the DHCPv6
+              messages, i.e. parsing options, encoding options into on-wire
+              format and packet classification using options contained in the
+              received packets.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp6.packets</command> - this logger
-            is mostly used to log messages related to transmission of the DHCPv6
-            packets, i.e. packet reception and sending a response. Such messages
-            include the information about the source and destination IP addresses
-            and interfaces used to transmit packets. This logger is also used
-            to log messages related to subnet selection, as this selection is
-            usually based on the IP addresses and/or interface names, which can
-            be retrieved from the received packet, even before the DHCPv6 message
-            carried in the packet is parsed.
+            <simpara>
+              <command>kea-dhcp6.packets</command> - this logger is mostly used
+              to log messages related to transmission of the DHCPv6 packets,
+              i.e. packet reception and sending a response. Such messages
+              include the information about the source and destination IP
+              addresses and interfaces used to transmit packets. This logger is
+              also used to log messages related to subnet selection, as this
+              selection is usually based on the IP addresses and/or interface
+              names, which can be retrieved from the received packet, even
+              before the DHCPv6 message carried in the packet is parsed.
             </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp-ddns</command> - this is the root logger for
-            the kea-dhcp-ddns daemon. All components used by this daemon inherit
-            the settings from this logger if there is no specialized logger
-            provided.</simpara>
+            <simpara>
+              <command>kea-dhcp-ddns</command> - the root logger for the
+              kea-dhcp-ddns daemon. All components used by this daemon inherit
+              the settings from this logger if there is no specialized logger
+              provided.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp-ddns.dhcpddns</command> - this is the logger
-            used by the kea-dhcp-ddns daemon for logging configuration and global
-            event information.  This logger does not specify logging settings
-            for libraries used by the daemon.</simpara>
+            <simpara>
+              <command>kea-dhcp-ddns.dhcpddns</command> - the logger used by the
+              kea-dhcp-ddns daemon for logging configuration and global event
+              information.  This logger does not specify logging settings for
+              libraries used by the daemon.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp-ddns.dhcp-to-d2</command> - this is the logger
-            used by the kea-dhcp-ddns daemon for logging information about events
-            dealing with receiving messages from the DHCP servers and adding them
-            to the queue for processing.</simpara>
+            <simpara>
+              <command>kea-dhcp-ddns.dhcp-to-d2</command> - used by the
+              kea-dhcp-ddns daemon for logging information about events dealing
+              with receiving messages from the DHCP servers and adding them to
+              the queue for processing.
+            </simpara>
           </listitem>
+
           <listitem>
-            <simpara><command>kea-dhcp-ddns.d2-to-dns</command> - this is the logger
-            used by the kea-dhcp-ddns daemon for logging information about events
-            dealing with sending and receiving messages with the DNS servers.
+            <simpara>
+              <command>kea-dhcp-ddns.d2-to-dns</command> - used by the
+              kea-dhcp-ddns daemon for logging information about events dealing
+              with sending and receiving messages with the DNS servers.
             </simpara>
           </listitem>
-
         </itemizedlist>
 
         <para>
           Note that user-defined hook libraries should not use any of those
-          loggers, and should define new loggers with names that correspond to
-          the libraries using them. Suppose that the user created the library called
-          <quote>libpacket-capture</quote> to dump packets received and
+          loggers but should define new loggers with names that correspond to
+          the libraries using them. Suppose that the user created the library
+          called <quote>libpacket-capture</quote> to dump packets received and
           transmitted by the server to the file. The appropriate name for the
-          logger could be <command>kea-dhcp4.packet-capture</command>. Note
-          that the hook library implementor only specifies the second part
-          of this name, i.e. <quote>packet-capture</quote>. The first part is
-          a root logger name and is prepended by the Kea logging system.
-          It is also important to note that since this new logger is a child
-          of a root logger, it inherits the configuration from the root logger,
-          unless there is a separate configuration entry for the child logger
-          which overrides the default configuration.
+          logger could be <command>kea-dhcp4.packet-capture</command>. (Note
+          that the hook library implementor only specifies the second part of
+          this name, i.e. <quote>packet-capture</quote>. The first part is a
+          root logger name and is prepended by the Kea logging system.) It is
+          also important to note that since this new logger is a child of a root
+          logger, it inherits the configuration from the root logger, something
+          that can be overridden by an entry in the configuration file.
         </para>
 
         <para>
           The list of loggers above excludes any loggers implemented in hooks
-          libraries. Please consult the documentation of the specific hooks
-          libraries for the names of loggers they define.
+          libraries. Please consult the documentation for the libraries for the
+          names of the loggers they define.
         </para>
 
-        <para>Additional loggers may be defined in the future. The easiest
-        way to find out the logger name is to configure all logging to go
-        to a single destination and look for specific logger names. See
-        <xref linkend="logging-message-format"/> for details.</para>
-        </section>
-
-        <section>
-          <title>severity (string)</title>
+        <para>
+          Additional loggers may be defined in future versions of Kea. The
+          easiest way to find out the logger name is to configure all logging to
+          go to a single destination and look for specific logger names. See
+          <xref linkend="logging-message-format"/> for details.
+        </para>
+      </section>
 
+      <section>
+        <title>severity (string)</title>
         <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):
+          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):
         </para>
 
         <itemizedlist>
           <listitem>
-            <simpara> FATAL </simpara>
+            <simpara>
+              FATAL - associated with messages generated by a condition that is
+              so serious that the server cannot continue executing.
+            </simpara>
           </listitem>
 
           <listitem>
-            <simpara> ERROR </simpara>
+            <simpara>
+              ERROR- associated with messages generated by an error condition.
+              The server will continue executing, but the results may not be as
+              expected.
+            </simpara>
           </listitem>
 
           <listitem>
-            <simpara> WARN </simpara>
+            <simpara>
+              WARN - indicates an out of the ordinary condition.  However, the
+              server will continue executing normally.
+            </simpara>
           </listitem>
 
           <listitem>
-            <simpara> INFO </simpara>
+            <simpara>
+              INFO - an informational message marking some event.
+            </simpara>
           </listitem>
 
           <listitem>
-            <simpara> DEBUG </simpara>
+            <simpara>
+              DEBUG - messages produced for debugging purposes.
+            </simpara>
           </listitem>
         </itemizedlist>
 
         <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.
-
-<!-- TODO: worded wrong? If I set to INFO, why would it show DEBUG which is literally below in that list? -->
-
+          When the severity of a logger is set to one of these values, it will
+          only log messages of that severity and above (e.g. setting the logging
+          severity to INFO will log INFO, WARN, ERROR and FATAL messages).  The
+          severity may also be set to NONE, in which case all messages from that
+          logger are inhibited.
         </para>
 
         <note>
           <para>
             The keactrl tool, described in <xref linkend="keactrl"/>, can be
-            configured to start the servers in the verbose mode. If this is
-            the case, the settings of the logging severity in the configuration
-            file will have no effect, i.e. the servers will use logging severity
-            of DEBUG regardless of the logging settings specified in the configuration
-            file. If you need to control severity via configuration file, please
-            make sure that the <parameter>kea_verbose</parameter> value is set to
-            "no" within the keactrl configuration.
+            configured to start the servers in the verbose mode. If this is the
+            case, the settings of the logging severity in the configuration file
+            will have no effect, i.e. the servers will use logging severity of
+            DEBUG regardless of the logging settings specified in the
+            configuration file. If you need to control severity via
+            configuration file, please make sure that the
+            <parameter>kea_verbose</parameter> value is set to "no" within the
+            keactrl configuration.
           </para>
         </note>
+      </section>
 
-        </section>
-
-        <section>
-          <title>output_options (list)</title>
-
-        <para>
-
-          Each logger can have zero or more
-          <option>output_options</option>. These specify where log
-          messages are sent. These are explained in detail below.
-
-        </para>
-
-        <para>
-
-          The other options for a logger are:
-
-        </para>
-
-        </section>
-
-        <section>
-          <title>debuglevel (integer)</title>
-
-        <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).
-        </para>
-
-
-<!-- TODO: complete this sentence:
-
-          The general classification of debug message types is
-
-TODO; there's a ticket to determine these levels, see #1074
-
- -->
-
+      <section>
+        <title>debuglevel (integer)</title>
         <para>
-
-          If severity for the logger is not DEBUG, this value is ignored.
-
+          When a logger's severity is set to DEBUG, this value specifies what
+          level of debug messages should be printed. It ranges from 0 (least
+          verbose) to 99 (most verbose). If severity for the logger is not
+          DEBUG, this value is ignored.
         </para>
-
-        </section>
       </section>
 
       <section>
-        <title>Output Options</title>
-
+        <title>output_options (list)</title>
         <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.
-
+          Each logger can have zero or more <option>output_options</option>.
+          These specify where log messages are sent. These are explained in
+          detail below.
         </para>
 
         <section>
-          <title>destination (string)</title>
-
+          <title>output (string)</title>
           <para>
-
-            The destination is the type of output. It can be one of:
-
+            This value determines the type of output. There are several special
+            values allowed here: <command>stdout</command> (messages are printed
+            on standard output), <command>stderr</command> (messages are printed
+            on stderr), <command>syslog</command> (messages are logged to syslog
+            using default name, <command>syslog:name</command> (messages are
+            logged to syslog using specified name). Any other value is
+            interpreted as a filename to which messages should be written.
           </para>
-
-          <itemizedlist>
-
-            <listitem>
-              <simpara> console </simpara>
-          </listitem>
-
-            <listitem>
-              <simpara> file </simpara>
-          </listitem>
-
-            <listitem>
-              <simpara> syslog </simpara>
-            </listitem>
-
-          </itemizedlist>
-
         </section>
 
-        <section>
-          <title>output (string)</title>
-
-        <para>
-          This value determines the type of output. There are several
-          special values allowed here: <command>stdout</command> (messages
-          are printed on standard output), <command>stderr</command>
-          (messages are printed on stderr), <command>syslog</command> (messages
-          are logged to syslog using default name, <command>syslog:name</command>
-          (messages are logged to syslog using specified name). Any other
-          value is interpreted as a filename that the logs should be written to.
-        </para>
-
-        <para>
-
-          The other options for <option>output_options</option> are:
-
-        </para>
-
         <section>
           <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. Default is true.
+            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.
+            The default is "true".
           </para>
-
         </section>
 
         <section>
           <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",
-            etc.)
+            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>
-
           <para>
-            If this is 0, no maximum file size is used.
+            If this is set to 0 or omitted, no maximum file size is used.
           </para>
 
           <note>
             <simpara>
-             Due to a limitation of the underlying logging library
-             (log4cplus), rolling over the log files (from ".1" to
-             ".2", etc) may show odd results: There can be
-             multiple small files at the timing of roll over.  This
-             can happen when multiple processes try to roll
-             over the files simultaneously.
-             Version 1.1.0 of log4cplus solved this problem, so if
-             this or higher version of log4cplus is used to build
-             Kea, it shouldn't happen.  Even for older versions
-             it is normally expected to happen rarely unless the log
-             messages are produced very frequently by multiple
-             different processes.
-           </simpara>
-         </note>
-
+              Due to a limitation of the underlying logging library (log4cplus),
+              rolling over the log files (from ".1" to ".2", etc) may show odd
+              results: There can be multiple small files at the timing of roll
+              over.  This can happen when multiple processes try to roll over
+              the files simultaneously.  Version 1.1.0 of log4cplus solved this
+              problem, so if this version or later of log4cplus is used to
+              build Kea, it should not happen.  Even for older versions it is
+              normally expected to happen rarely unless the log messages are
+              produced very frequently by multiple different processes.
+            </simpara>
+          </note>
         </section>
 
         <section>
           <title>maxver (integer)</title>
-
           <para>
-            Maximum number of old log files to keep around when
-            rolling the output file. Only relevant when
-            <option>output</option> is <quote>file</quote>.
+            Maximum number of old log files to keep around when rolling the
+            output file. Only relevant when <option>output</option> is
+            <quote>file</quote>.
           </para>
-
         </section>
-
-      </section>
-
       </section>
 
       <section>
         <title>Example Logger Configurations</title>
-
         <para>
-          In this example we want to set the global logging to
-          write to the console using standard output.
+          In this example we want to set the global logging to write to the
+          console using standard output.
         </para>
 
-<screen><userinput>
-"Logging": {
+<screen><userinput>"Logging": {
     "loggers": [
         {
             "name": "kea-dhcp4",
@@ -653,17 +658,16 @@ TODO; there's a ticket to determine these levels, see #1074
             "severity": "WARN"
         }
     ]
-}
-</userinput>
-</screen>
+}</userinput> </screen>
 
-<para>In this second example, we want to store debug log messages
-in a file that is at most 2MB and keep up to 8 copies of old logfiles.
-Once the logfile grows to 2MB, it will be renamed and a new file
-file be created.</para>
+        <para>
+          In this second example, we want to store debug log messages in a file
+          that is at most 2MB and keep up to 8 copies of old logfiles.  Once the
+          logfile grows to 2MB, it will be renamed and a new file file be
+          created.
+        </para>
 
-<screen><userinput>
-"Logging": {
+<screen><userinput>"Logging": {
     "loggers": [
         {
             "name": "kea-dhcp6",
@@ -686,158 +690,171 @@ file be created.</para>
 
     <section id="logging-message-format">
       <title>Logging Message Format</title>
-
       <para>
-          Each message written  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  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>
-          Consider the message below logged to a file:
-          <screen>2014-04-11 12:58:01.005 INFO  [kea-dhcp4.dhcpsrv/27456]
+        Consider the message below logged to a file:
+
+<screen>2014-04-11 12:58:01.005 INFO  [kea-dhcp4.dhcpsrv/27456]
     DHCPSRV_MEMFILE_DB opening memory file lease database: type=memfile universe=4</screen>
       </para>
 
       <para>
-        Note: the layout of messages written to the system logging
-        file (syslog) may be slightly different.  This message has
-        been split across two lines here for display reasons; in the
-        logging file, it will appear on one line.
+        Note: the layout of messages written to the system logging file (syslog)
+        may be slightly different.  This message has been split across two lines
+        here for display reasons; in the logging file, it will appear on one
+        line.
       </para>
 
       <para>
         The log message comprises a number of components:
 
-          <variablelist>
-          <varlistentry>
-          <term>2014-04-11 12:58:01.005</term>
+       <variablelist>
+         <varlistentry>
+           <term>2014-04-11 12:58:01.005</term>
 <!-- TODO: timestamp repeated even if using syslog? -->
-          <listitem><para>
-              The date and time at which the message was generated.
-          </para></listitem>
+           <listitem>
+             <para>
+               The date and time at which the message was generated.
+              </para>
+            </listitem>
           </varlistentry>
 
           <varlistentry>
-          <term>INFO</term>
-          <listitem><para>
-              The severity of the message.
-          </para></listitem>
+            <term>INFO</term>
+            <listitem>
+              <para>
+                The severity of the message.
+              </para>
+            </listitem>
           </varlistentry>
 
           <varlistentry>
-          <term>[kea-dhcp4.dhcpsrv/27456]</term>
-          <listitem><para>
-            The source of the message.  This comprises two elements:
-            the Kea process generating the message (in this
-            case, <command>kea-dhcp4</command>) and the component
-            within the program from which the message originated
-            (which is the name of the common library used by DHCP server
-            implementations). The number after the slash is a process id
-            (pid).
-          </para></listitem>
+            <term>[kea-dhcp4.dhcpsrv/27456]</term>
+            <listitem>
+              <para>
+                The source of the message.  This comprises two elements: the Kea
+                process generating the message (in this case,
+                <command>kea-dhcp4</command>) and the component within the
+                program from which the message originated
+                (<command>dhcpsrv</command>, which is the name of the common
+                library used by DHCP server implementations). The number after
+                the slash is a process id (pid).
+              </para>
+            </listitem>
           </varlistentry>
 
           <varlistentry>
-          <term>DHCPSRV_MEMFILE_DB</term>
-          <listitem><para>
-            The message identification.  Every message in Kea
-            has a unique identification, which can be used as an
-            index into the <ulink
-            url="kea-messages.html"><citetitle>Kea Messages
-            Manual</citetitle></ulink> (<ulink
-            url="http://kea.isc.org/docs/kea-messages.html"
-            />) from which more information can be obtained.
-          </para></listitem>
+            <term>DHCPSRV_MEMFILE_DB</term>
+            <listitem>
+              <para>
+                The message identification.  Every message in Kea has a unique
+                identification, which can be used as an index into the
+                <ulink url="kea-messages.html"><citetitle>Kea Messages
+                Manual</citetitle></ulink>
+                (<ulink url="http://kea.isc.org/docs/kea-messages.html" />)
+                from which more information can be obtained.
+              </para>
+            </listitem>
           </varlistentry>
 
           <varlistentry>
-          <term>opening memory file lease database: type=memfile universe=4</term>
-          <listitem><para>
-              A brief description.
-              Within this text, information relating to the condition
-              that caused the message to be logged will be included.
-              In this example, the information is logged that the in-memory
-              lease database backend will be used to store DHCP leases.
-          </para></listitem>
+            <term>opening memory file lease database: type=memfile universe=4</term>
+            <listitem>
+              <para>
+                A brief description.  Within this text, information relating to
+                the condition that caused the message to be logged will be
+                included.  In this example, the information is logged that the
+                in-memory lease database backend will be used to store DHCP
+                leases.
+              </para>
+            </listitem>
           </varlistentry>
-          </variablelist>
+        </variablelist>
       </para>
-
     </section>
 
     <section>
       <title>Logging During Kea Startup</title>
-
       <para>
         The logging configuration is specified in the configuration file.
         However, when Kea starts, the file is not read until some way into the
-        initialization process.  Prior to that, the logging settings are
-        set to default values, although it is possible to modify some
-        aspects of the settings by means of environment variables. Note
-        that in the absence of any logging configuration in the configuration
-        file, the settings of (possibly modified) default configuration will
-        persist while the program is running.
+        initialization process.  Prior to that, the logging settings are set to
+        default values, although it is possible to modify some aspects of the
+        settings by means of environment variables. Note that in the absence of
+        any logging configuration in the configuration file, the settings of
+        (possibly modified) default configuration will persist while the program
+        is running.
       </para>
       <para>
-        The following environment variables can be used to control the
-        behavior of logging during startup:
+        The following environment variables can be used to control the behavior
+        of logging during startup:
       </para>
 
-          <variablelist>
-          <varlistentry>
+      <variablelist>
+        <varlistentry>
           <term>KEA_LOCKFILE_DIR</term>
-          <listitem><para>
+          <listitem>
+            <para>
               Specifies a directory where the logging system should create its
               lock file. If not specified, it is
               <replaceable>prefix</replaceable>/var/run/kea, where
-              <replaceable>prefix</replaceable> defaults to /usr/local.
-              This variable must not end
-              with a slash. There is one special value: "none", which
-              instructs Kea to not create lock file at all. This may cause
-              issues if several processes log to the same file.
-          </para></listitem>
-          </varlistentry>
+              <replaceable>prefix</replaceable> defaults to /usr/local.  This
+              variable must not end with a slash. There is one special value:
+              "none", which instructs Kea to not create lock file at all. This
+              may cause issues if several processes log to the same file.
+            </para>
+          </listitem>
+        </varlistentry>
 
-          <varlistentry>
+        <varlistentry>
           <term>KEA_LOGGER_DESTINATION</term>
-          <listitem><para>
+          <listitem>
+            <para>
               Specifies logging output. There are several special values.
               <variablelist>
-                  <varlistentry>
-                      <term>stdout</term>
-                      <listitem><para>
-                          Log to standard output.
-                      </para></listitem>
-                  </varlistentry>
-                  <varlistentry>
-                      <term>stderr</term>
-                      <listitem><para>
-                          Log to standard error.
-                      </para></listitem>
-                  </varlistentry>
-                  <varlistentry>
-                      <term>syslog<optional>:<replaceable>fac</replaceable></optional></term>
-                      <listitem><para>
-                          Log via syslog. The optional
-                          <replaceable>fac</replaceable> (which is
-                          separated from the word "syslog" by a colon)
-                          specifies the
-                          facility to be used for the log messages. Unless
-                          specified, messages will be logged using the
-                          facility "local0".
-                      </para></listitem>
-                  </varlistentry>
+                <varlistentry>
+                  <term>stdout</term>
+                  <listitem>
+                    <para>
+                      Log to standard output.
+                    </para>
+                  </listitem>
+                </varlistentry>
+
+                <varlistentry>
+                  <term>stderr</term>
+                  <listitem>
+                    <para>
+                      Log to standard error.
+                    </para>
+                  </listitem>
+                </varlistentry>
+
+                <varlistentry>
+                  <term>syslog<optional>:<replaceable>fac</replaceable></optional></term>
+                  <listitem>
+                    <para>
+                      Log via syslog. The optional
+                      <replaceable>fac</replaceable> (which is separated from
+                      the word "syslog" by a colon) specifies the facility to be
+                      used for the log messages. Unless specified, messages will
+                      be logged using the facility "local0".
+                    </para>
+                  </listitem>
+                </varlistentry>
               </variablelist>
-              Any other value is treated as a name
-              of the output file. If not specified otherwise, Kea will log to
-              standard output.
-          </para></listitem>
-          </varlistentry>
-
-          </variablelist>
+              Any other value is treated as a name of the output file. If not
+              specified otherwise, Kea will log to standard output.
+            </para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
     </section>
-
-  </chapter>
+  </section>
+</chapter>
index 335b25f672152729e20348ebaaf15dc1c3f7888d..17164c4df60e0a3d7137bbb15ed74e4e2d5a7917 100644 (file)
   <section>
     <title>Statistics Overview</title>
 
-    <para>Both Kea DHCP servers support statistics gathering since
-    0.9.2-beta version. A working DHCP server encounters various events
+    <para>Both Kea DHCP servers support statistics gathering.
+    A working DHCP server encounters various events
     that can cause certain statistics to be collected. For
     example, a DHCPv4 server may receive a packet (pkt4-received
-    statistic increases by one) that after parsing was identifier as
+    statistic increases by one) that after parsing was identified as a
     DHCPDISCOVER (pkt4-discover-received). The Server processed it and
-    decided to send DHCPOFFER representing its answer (pkt4-offer-sent
+    decided to send DHCPOFFER representing its answer (pkt4-offer-sent
     and pkt4-sent statistics increase by one). Such events happen
     frequently, so it is not uncommon for the statistics to have
     values in high thousands. They can serve as an easy and powerful
@@ -73,7 +73,7 @@
       statistics. When <command>statistic-get-all</command> is executed, an
       empty list is returned. Once the server performs an operation that causes
       a statistic to change, the related statistic will be created. In the general
-      case once a statistic is recorded even once, it is kept in the manager, until
+      case, once a statistic is recorded even once, it is kept in the manager, until
       explicitly removed, by <command>statistic-remove</command> or
        <command>statistic-remove-all</command> being called or the server is shut
       down. Per subnet statistics are explicitly removed when reconfiguration
       it.
     </para>
 
+    <note><para>
+    The following sections describe commands that can be sent to the server: the
+    examples are not fragments of a configuration file.  For more information on
+    sending commands to Kea, see <xref linkend="ctrl-channel"/>.
+    </para></note>
+
     <section id="command-statistic-get">
       <title>statistic-get command</title>