]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1977] General CB sections extended
authorMarcin Siodelski <marcin@isc.org>
Fri, 16 Jul 2021 07:08:26 +0000 (09:08 +0200)
committerMarcin Siodelski <marcin@isc.org>
Fri, 23 Jul 2021 06:04:51 +0000 (08:04 +0200)
Corrected some existing text about CB and added information about support
for Client Classes.

doc/sphinx/arm/config-backend.rst
doc/sphinx/arm/dhcp4-srv.rst
doc/sphinx/arm/dhcp6-srv.rst

index 990dca7748f1f237376061d8a3682b91b78b9dad..b44b3a6305af557c27207b32aaf6831b0c46f6e4 100644 (file)
@@ -66,55 +66,53 @@ brings other benefits, such as:
 CB Capabilities and Limitations
 -------------------------------
 
-Kea CB, introduced in the 1.6.0 release,
-comes with a number of limitations as a result of the overall
-complexity of this feature and the development time constraints. This
-feature will evolve over time and the new capabilities will be added in
-subsequent releases. In this section we present the capabilities and limitations of the
-CB in the Kea 1.6.0 release:
+Kea CB has some limitations as a result of its complexity and development
+time constraints:
+- supported for the MySQL database only,
 
--  Kea CB is supported for the MySQL database only.
+- supported for DHCPv4 and DHCPv6 daemon; neither the Control Agent nor D2
+  daemon can be configured from the database,
 
--  Kea CB is only supported for DHCPv4 and DHCPv6 servers. Neither the
-   Control Agent nor the D2 daemon can be configured via the database.
+- only a subset of the DHCP configuration parameters can be set in the
+  database: global parameters, option definitions, global options, client
+  classes, shared networks, and subnets; other configuration parameters
+  must be sourced from a JSON configuration file.
 
--  Potential configurations to be stored for the DHCP servers include: global
-   parameters, option definitions, global options, shared networks, and
-   subnets. Other configuration parameters are not stored in the
-   database and must be configured via the JSON
-   configuration file.
+The current CB limitations will be gradually removed in subsequent Kea releases.
 
 ..
 
 .. note::
-    Kea CB stores data in a MySQL schema that is public. It's possible to
-    insert configuration data into the MySQL tables manually, or automatically
-    using SQL scripts, but this requires a reasonably good knowledge of SQL and the
-    schema.  The supported method for managing the data is through our cb-cmds
-    hook library which provides management commands for config backends.
-    It simplifies many typical operations, such as listing, adding, retrieving,
-    and deleting of global parameters, shared networks, subnets, pools, options,
-    and option definitions.  In addition, it provides essential business logic
-    that ensures logical integrity of the data.  For a complete list, see commands
-    starting with "remote-" in Appendix A of the Kea Administrator Reference Manual.
-    The cb_cmds hooks library is available to subscribers only. If you are not a
-    subscriber and would like to subscribe, please contact info@isc.org and
-    our sales team will assist you.
-
-    The schema creation script can be found here `dhcpdb_create.mysql <https://gitlab.isc.org/isc-projects/kea/blob/master/src/share/database/scripts/mysql/dhcpdb_create.mysql>`__ and
-    we have some related design documents in gitlab `CB Design <https://gitlab.isc.org/isc-projects/kea/wikis/designs/configuration-in-db-design>`__.
+
+   Kea CB stores data in a MySQL schema that is public. It's possible to
+   insert configuration data into the MySQL tables manually or automatically
+   using SQL scripts, but this requires reasonably good SQL and schema knowledge.
+   The supported method for managing the data is through our cb-cmds hook library,
+   which provides management commands for config backends. It simplifies many
+   typical operations, such as listing, adding, retrieving, and deleting global
+   parameters, shared networks, subnets, pools, options, option definitions, and
+   client classes. In addition, it provides essential business logic that ensures
+   the logical integrity of the data.  See commands starting with "remote-" in
+   Appendix A of the Kea Administrator Reference Manual for a complete list.
+   The cb_cmds hooks library is available to subscribers only. If you are not a
+   subscriber and would like to subscribe, please contact info@isc.org, and our
+   sales team will assist you.
+
+   The schema creation script can be found here `dhcpdb_create.mysql <https://gitlab.isc.org/isc-projects/kea/blob/master/src/share/database/scripts/mysql/dhcpdb_create.mysql>`__ and
+   we have some related design documents in gitlab: `CB Design <https://gitlab.isc.org/isc-projects/kea/wikis/designs/configuration-in-db-design>`__ and
+   `Client Classes in CB Design <https://gitlab.isc.org/isc-projects/kea/wikis/designs/client-classes-in-cb>`__.
 
 .. note::
 
    We strongly recommend against duplication of the configuration information
    in the file and the database. For example, when specifying subnets
    for the DHCP server, please store them in either the configuration backend
-   or in the configuration file, not both. Storing some
-   subnets in the database and others in the file may put you at risk of
-   potential configuration conflicts. Note that the configuration instructions from
-   the database take precedence over instructions from the file,
-   so it is possible that parts of the configuration specified in the
-   file may be overridden if contradicted by information in the database.
+   or in the configuration file, not both. Storing some subnets in the database
+   and others in the file may put you at risk of potential configuration
+   conflicts. Note that the configuration instructions from the database take
+   precedence over instructions from the file, so parts of the configuration
+   specified in the file may be overridden if contradicted by information in
+   the database.
 
 .. note::
 
@@ -128,13 +126,12 @@ CB in the Kea 1.6.0 release:
 CB Components
 -------------
 
-In order to use the Kea CB feature, the Kea 1.6.0 version or later is
-required. The ``mysql_cb`` open source hooks library implementing the
-Configuration Backend for MySQL must be compiled and loaded by the DHCP
-servers. This hooks library is compiled when the ``--with-mysql``
-configuration switch is used during the Kea build. The MySQL C client
-libraries must be installed, as explained in
-:ref:`dhcp-install-configure`.
+Kea 1.6.0 version or later is required to use the Configuration Backend.
+The ``mysql_cb`` open source hooks library implementing the Configuration
+Backend for MySQL must be compiled and loaded by the DHCP servers. This
+hooks library is compiled when the ``--with-mysql`` configuration switch
+is used during the Kea build. The MySQL C client libraries must be
+installed, as explained in :ref:`dhcp-install-configure`.
 
 .. note::
 
@@ -225,7 +222,7 @@ and :ref:`dhcp6-cb` list the DHCP specific shareable and
 non-shareable configuration elements. However, in this section we
 want to briefly explain the difference between them.
 
-The shareable configuration element is the one having some unique
+A shareable configuration element is the one having some unique
 property identifying it and which instance may appear only once in
 the database. An example of the shareable DHCP element is a subnet
 instance. The subnet is a part of the network topology and we assume
@@ -284,6 +281,7 @@ configuration in the database is shareable because all its pieces
 belong to "all" servers.
 
 .. note::
+
    Be very careful when associating the configuration elements with
    different server tags. The configuration backend doesn't protect you
    against some possible misconfigurations that may arise from the
index f00aaeac9601c34e9bc8edf2b241b6672bf20491..1180426ecbb6d2787908a10506bef9bbf278e7c6 100644 (file)
@@ -6824,22 +6824,22 @@ Supported Parameters
 
 The ultimate goal for the CB is to serve as a central configuration
 repository for one or multiple Kea servers connected to the database. In
-the future it will be possible to store most of the server's
+the future, it will be possible to store most of the server's
 configuration in the database and reduce the configuration file to a bare
 minimum; the only mandatory parameter will be
 ``config-control``, which includes the necessary information to connect
-to the database. In the Kea 1.6.0 release, however, only a subset of
-the DHCPv4 server parameters can be stored in the database. All other
+to the database. In the present release, however, only a subset of
+the DHCPv4 server parameters can be configured in the database. All other
 parameters must be specified in the JSON configuration file, if
 required.
 
 The following table lists DHCPv4 specific parameters supported by the
 Configuration Backend, with an indication on which level of the hierarchy
-it is currently supported. "n/a" is used in cases when a
-given parameter is not applicable on a particular level of the
-hierarchy, or in cases when the parameter is not supported by the server
-at this level of the hierarchy. "no" is used when the parameter is
-supported by the server on the given level of the hierarchy, but is not
+it is currently supported. The "n/a" marks cases when a
+given parameter is not applicable at the particular level of the
+hierarchy or in cases when the server does not support the parameter
+at this level of the hierarchy. "no" is used when a parameter is
+supported at the given level of the hierarchy but is not
 configurable via the Configuration Backend.
 
 All supported parameters can be configured via the ``cb_cmds`` hooks library
@@ -6851,7 +6851,9 @@ parameters are set using ``remote-subnet4-set``. Whenever
 there is an exception to this general rule, it is highlighted in the
 table. The non-scalar global parameters have dedicated commands; for example,
 the global DHCPv4 options (``option-data``) are modified using
-``remote-option4-global-set``.
+``remote-option4-global-set``. Client classes together with class specific
+option definitions and DHCPv4 options are configured using the
+``remote-class4-set`` command.
 
 The :ref:`cb-sharing` explains the concept of shareable
 and non-shareable configuration elements and the limitations for
@@ -6866,84 +6868,84 @@ used by all servers connecting to the configuration database.
 
 .. table:: List of DHCPv4 Parameters Supported by the Configuration Backend
 
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | Parameter                   | Global                     | Shared      | Subnet      | Pool        |
-   |                             |                            | Network     |             |             |
-   +=============================+============================+=============+=============+=============+
-   | 4o6-interface               | n/a                        | n/a         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | 4o6-interface-id            | n/a                        | n/a         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | 4o6-subnet                  | n/a                        | n/a         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | boot-file-name              | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | cache-max-age               | yes                        | todo        | todo        | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | cache-threshold             | yes                        | todo        | todo        | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | calculate-tee-times         | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | client-class                | n/a                        | yes         | yes         | yes         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-send-update            | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-override-no-update     | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-override-client-update | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-replace-client-name    | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-generated-prefix       | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | ddns-qualifying-suffix      | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | decline-probation-period    | yes                        | n/a         | n/a         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | dhcp4o6-port                | yes                        | n/a         | n/a         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | echo-client-id              | yes                        | n/a         | n/a         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | hostname-char-set           | no                         | no          | no          | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | hostname-char-replacement   | no                         | no          | no          | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | interface                   | n/a                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | match-client-id             | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | next-server                 | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | option-data                 | yes (via                   | yes         | yes         | yes         |
-   |                             | remote-option4-global-set) |             |             |             |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | option-def                  | yes (via                   | n/a         | n/a         | n/a         |
-   |                             | remote-option-def4-set)    |             |             |             |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | rebind-timer                | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | renew-timer                 | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | server-hostname             | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | valid-lifetime              | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | relay                       | n/a                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | require-client-classes      | no                         | yes         | yes         | yes         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | reservation-mode            | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | reservations-global         | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | reservations-in-subnet      | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | reservations-out-of-pool    | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | t1-percent                  | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
-   | t2-percent                  | yes                        | yes         | yes         | n/a         |
-   +-----------------------------+----------------------------+-------------+-------------+-------------+
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | Parameter                   | Global                     | Client       | Shared      | Subnet      | Pool        |
+   |                             |                            | Class        | Network     |             |             |
+   +=============================+============================+==============+=============+=============+=============+
+   | 4o6-interface               | n/a                        | n/a          | n/a         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | 4o6-interface-id            | n/a                        | n/a          | n/a         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | 4o6-subnet                  | n/a                        | n/a          | n/a         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | boot-file-name              | yes                        | yes          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | cache-max-age               | yes                        | n/a          | todo        | todo        | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | cache-threshold             | yes                        | n/a          | todo        | todo        | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | calculate-tee-times         | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | client-class                | n/a                        | n/a          | yes         | yes         | yes         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-send-update            | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-override-no-update     | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-override-client-update | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-replace-client-name    | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-generated-prefix       | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | ddns-qualifying-suffix      | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | decline-probation-period    | yes                        | n/a          | n/a         | n/a         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | dhcp4o6-port                | yes                        | n/a          | n/a         | n/a         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | echo-client-id              | yes                        | n/a          | n/a         | n/a         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | hostname-char-set           | no                         | n/a          | no          | no          | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | hostname-char-replacement   | no                         | n/a          | no          | no          | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | interface                   | n/a                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | match-client-id             | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | next-server                 | yes                        | yes          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | option-data                 | yes (via                   | yes          | yes         | yes         | yes         |
+   |                             | remote-option4-global-set) |              |             |             |             |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | option-def                  | yes (via                   | yes          | n/a         | n/a         | n/a         |
+   |                             | remote-option-def4-set)    |              |             |             |             |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | rebind-timer                | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | renew-timer                 | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | server-hostname             | yes                        | yes          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | valid-lifetime              | yes                        | yes          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | relay                       | n/a                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | require-client-classes      | no                         | n/a          | yes         | yes         | yes         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | reservation-mode            | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | reservations-global         | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | reservations-in-subnet      | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | reservations-out-of-pool    | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | t1-percent                  | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
+   | t2-percent                  | yes                        | n/a          | yes         | yes         | n/a         |
+   +-----------------------------+----------------------------+--------------+-------------+-------------+-------------+
 
 .. _dhcp4-cb-json:
 
index 5de93b6b5c1ed660fa8c66c93917ae7469ee4988..4d2af6222d1a755abf701684354ddf57635b788b 100644 (file)
@@ -6792,22 +6792,22 @@ Supported Parameters
 
 The ultimate goal for the CB is to serve as a central configuration
 repository for one or multiple Kea servers connected to the database. In
-the future it will be possible to store most of the server's
+the future, it will be possible to store most of the server's
 configuration in the database and reduce the configuration file to a bare
 minimum; the only mandatory parameter will be the
 ``config-control``, which includes the necessary information to connect
-to the database. In the Kea 1.6.0 release, however, only a subset of
+to the database. In the present release, however, only a subset of
 the DHCPv4 server parameters can be stored in the database. All other
 parameters must be specified in the JSON configuration file, if
 required.
 
-The following table lists DHCPv6-specific parameters supported by the
+The following table lists DHCPv6 specific parameters supported by the
 Configuration Backend, with an indication on which level of the hierarchy
-it is currently supported. "n/a" is used in cases when a
-particular parameter is not applicable on a particular level of the
-hierarchy, or in cases when the parameter is not supported by the server
-at this level of the hierarchy. "no" is used when the parameter is
-supported by the server on the given level of the hierarchy, but is not
+it is currently supported. The "n/a" marks cases when a
+given parameter is not applicable at the particular level of the
+hierarchy or in cases when the server does not support the parameter
+at this level of the hierarchy. "no" is used when a parameter is
+supported at the given level of the hierarchy but is not
 configurable via the Configuration Backend.
 
 All supported parameters can be configured via ``cb_cmds`` hooks library
@@ -6819,89 +6819,91 @@ parameters are set using ``remote-subnet6-set``. Whenever
 there is an exception to this general rule, it is highlighted in the
 table. The non-scalar global parameters have dedicated commands; for example,
 the global DHCPv6 options (``option-data``) are modified using
-``remote-option6-global-set``.
+``remote-option6-global-set``. Client classes together with class specific
+option definitions and DHCPv6 options are configured using the
+``remote-class6-set`` command.
 
 .. table:: List of DHCPv6 Parameters Supported by the Configuration Backend
 
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | Parameter                   | Global                     | Shared    | Subnet    | Pool      | Prefix     |
-   |                             |                            | Network   |           |           | Delegation |
-   |                             |                            |           |           |           | Pool       |
-   +=============================+============================+===========+===========+===========+============+
-   | cache-max-age               | yes                        | todo      | todo      | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | cache-threshold             | yes                        | todo      | todo      | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | calculate-tee-times         | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | client-class                | n/a                        | yes       | yes       | yes       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-send-update            | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-override-no-update     | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-override-client-update | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-replace-client-name    | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-generated-prefix       | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | ddns-qualifying-suffix      | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | decline-probation-period    | yes                        | n/a       | n/a       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | delegated-len               | n/a                        | n/a       | n/a       | n/a       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | dhcp4o6-port                | yes                        | n/a       | n/a       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | excluded-prefix             | n/a                        | n/a       | n/a       | n/a       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | excluded-prefix-len         | n/a                        | n/a       | n/a       | n/a       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | hostname-char-set           | no                         | no        | no        | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | hostname-char-replacement   | no                         | no        | no        | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | interface                   | n/a                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | interface-id                | n/a                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | option-data                 | yes (via                   | yes       | yes       | yes       | yes        |
-   |                             | remote-option6-global-set) |           |           |           |            |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | option-def                  | yes (via                   | n/a       | n/a       | n/a       | n/a        |
-   |                             | remote-option-def6-set)    |           |           |           |            |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | preferred-lifetime          | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | prefix                      | n/a                        | n/a       | n/a       | n/a       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | prefix-len                  | n/a                        | n/a       | n/a       | n/a       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | rapid-commit                | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | rebind-timer                | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | relay                       | n/a                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | renew-timer                 | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | require-client-classes      | n/a                        | yes       | yes       | yes       | yes        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | reservation-mode            | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | reservations-global         | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | reservations-in-subnet      | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | reservations-out-of-pool    | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | t1-percent                  | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | t2-percent                  | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
-   | valid-lifetime              | yes                        | yes       | yes       | n/a       | n/a        |
-   +-----------------------------+----------------------------+-----------+-----------+-----------+------------+
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | Parameter                   | Global                     | Client    | Shared    | Subnet    | Pool      | Prefix     |
+   |                             |                            | Class     | Network   |           |           | Delegation |
+   |                             |                            |           |           |           |           | Pool       |
+   +=============================+============================+===========+===========+===========+===========+============+
+   | cache-max-age               | yes                        | n/a       | todo      | todo      | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | cache-threshold             | yes                        | n/a       | todo      | todo      | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | calculate-tee-times         | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | client-class                | n/a                        | n/a       | yes       | yes       | yes       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-send-update            | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-override-no-update     | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-override-client-update | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-replace-client-name    | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-generated-prefix       | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | ddns-qualifying-suffix      | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | decline-probation-period    | yes                        | n/a       | n/a       | n/a       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | delegated-len               | n/a                        | n/a       | n/a       | n/a       | n/a       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | dhcp4o6-port                | yes                        | n/a       | n/a       | n/a       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | excluded-prefix             | n/a                        | n/a       | n/a       | n/a       | n/a       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | excluded-prefix-len         | n/a                        | n/a       | n/a       | n/a       | n/a       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | hostname-char-set           | no                         | n/a       | no        | no        | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | hostname-char-replacement   | no                         | n/a       | no        | no        | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | interface                   | n/a                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | interface-id                | n/a                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | option-data                 | yes (via                   | yes       | yes       | yes       | yes       | yes        |
+   |                             | remote-option6-global-set) |           |           |           |           |            |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | option-def                  | yes (via                   | yes       | n/a       | n/a       | n/a       | n/a        |
+   |                             | remote-option-def6-set)    |           |           |           |           |            |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | preferred-lifetime          | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | prefix                      | n/a                        | n/a       | n/a       | n/a       | n/a       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | prefix-len                  | n/a                        | n/a       | n/a       | n/a       | n/a       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | rapid-commit                | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | rebind-timer                | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | relay                       | n/a                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | renew-timer                 | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | require-client-classes      | n/a                        | n/a       | yes       | yes       | yes       | yes        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | reservation-mode            | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | reservations-global         | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | reservations-in-subnet      | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | reservations-out-of-pool    | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | t1-percent                  | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | t2-percent                  | yes                        | n/a       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
+   | valid-lifetime              | yes                        | yes       | yes       | yes       | n/a       | n/a        |
+   +-----------------------------+----------------------------+-----------+-----------+-----------+-----------+------------+
 
 .. _dhcp6-cb-json: