]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3748] Updated ARM
authorThomas Markwalder <tmark@isc.org>
Tue, 25 Mar 2025 15:30:57 +0000 (11:30 -0400)
committerThomas Markwalder <tmark@isc.org>
Wed, 26 Mar 2025 15:17:29 +0000 (15:17 +0000)
new file: 3748-option-data-in-classes-without-only-in-additional-list-true-have-unexpected-precedence
modified:   ../doc/sphinx/arm/classify.rst

changelog_unreleased/3748-option-data-in-classes-without-only-in-additional-list-true-have-unexpected-precedence [new file with mode: 0644]
doc/sphinx/arm/classify.rst

diff --git a/changelog_unreleased/3748-option-data-in-classes-without-only-in-additional-list-true-have-unexpected-precedence b/changelog_unreleased/3748-option-data-in-classes-without-only-in-additional-list-true-have-unexpected-precedence
new file mode 100644 (file)
index 0000000..d0171b9
--- /dev/null
@@ -0,0 +1,3 @@
+[doc]          tmark
+       Clarified how classes impact option order precedence.
+       (Gitlab #3748)
index 2f3f44ae574ee4c8663d6279fa23be14e388811c..55b50bb3fb68d42a22d851833a82fd42e61fdbe3 100644 (file)
@@ -134,17 +134,41 @@ The classification process is conducted in several steps:
 
 .. note::
 
-    The ``lease4_select``, ``lease4_renew``, ``lease6_select``, ``lease6_renew``, and ``lease6_rebind``
-    callouts are called here.
+    The ``lease4_select``, ``lease4_renew``, ``lease6_select``, ``lease6_renew``,
+    and ``lease6_rebind`` callouts are called here.
 
-12. Classes marked as "additional" are evaluated in the order in which
-    they are listed: first pools, then the subnet, and finally
-    the shared network that assigned resources belong to.
+12. The ``evaluate-additional-classes`` lists (if any) are evaluated first
+    for the pool, then the subnet, and the finally shared-network to which the
+    assigned resources belong. Classes are evaluated in the order they appear
+    within each list.
 
 13. Options are assigned, again possibly based on the class information
     in the order that classes were associated with the incoming packet.
-    For DHCPv4 private and code 43 options, this includes option
-    definitions specified within classes.
+    The first class matched to the packet which specifies a given
+    option wins. For DHCPv4 private and code 43 options, this includes
+    option definitions specified within classes.  The order of precedence
+    for options is as follows:
+
+    1. Host options
+    2. Pool options
+    3. Subnet options
+    4. Shared network options
+    5. Options from classes assigned during normal classification:
+
+        a. ``ALL`` class
+        b. Vendor classes
+        c. Host classes
+        d. Evaluated classes that do not depend on ``KNOWN`` class
+        e. ``KNOWN`` and ``UNKNOWN`` classes
+        f. Evaluated classes that depend on ``KNOWN`` class
+
+    6. Options from classes in ``evaluate-additional-classes`` from:
+
+        a. Pool
+        b. Subnet
+        c. Shared network
+
+    7. Global options
 
 .. note::
 
@@ -1324,7 +1348,7 @@ while clients that do not match "melon" will have a value of 456 for option
 "foo".
 
 It is possible to achieve an if-elseif-else effect but specifying an option
-more than once with different class tags and values. Consider the following 
+more than once with different class tags and values. Consider the following
 configuration for a subnet which provides three possible values for the
 "server-str" option:
 
@@ -1348,10 +1372,10 @@ configuration for a subnet which provides three possible values for the
        }]
     }
 
-Clients belonging to "class-one" will get a value of "string.one", clients 
+Clients belonging to "class-one" will get a value of "string.one", clients
 belonging to "class-two" will get a value of "string.two", and clients that
-belong to neither "class-one" nor "class-two" will get a value of 
-"string.other". 
+belong to neither "class-one" nor "class-two" will get a value of
+"string.other".
 
 .. note::