summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/recognizing-same-client.uml
diff options
context:
space:
mode:
authorAndrei Pavel <andrei@isc.org>2023-07-26 17:58:13 +0200
committerAndrei Pavel <andrei@isc.org>2023-08-01 11:43:54 +0200
commitf3e0dde23c701d6afc806d501eb93554d1c16b8e (patch)
tree1c25ca1ba42e38c0fc046ed8447ab8454e1c2955 /doc/sphinx/uml/recognizing-same-client.uml
parent[#1356] fix generating UML images (diff)
downloadkea-f3e0dde23c701d6afc806d501eb93554d1c16b8e.tar.xz
kea-f3e0dde23c701d6afc806d501eb93554d1c16b8e.zip
[#1356] add recognizing-same-client.uml
Diffstat (limited to 'doc/sphinx/uml/recognizing-same-client.uml')
-rw-r--r--doc/sphinx/uml/recognizing-same-client.uml113
1 files changed, 113 insertions, 0 deletions
diff --git a/doc/sphinx/uml/recognizing-same-client.uml b/doc/sphinx/uml/recognizing-same-client.uml
new file mode 100644
index 0000000000..15b7c4fab6
--- /dev/null
+++ b/doc/sphinx/uml/recognizing-same-client.uml
@@ -0,0 +1,113 @@
+@startuml
+
+/'
+This UML uses the new syntax of activity diagrams from plantuml.
+Unfortunately, it also results in a more wide spread of the resulting
+visual diagram, so wide that it becomes unreadable when automatically
+scaled down in the ARM. This is the reason for the aggressive word
+wrapping below - to force the diagram to be longer and less wide, and
+as a result - more readable.
+'/
+
+start
+
+title How Kea Recognizes the Same Client In Different DHCP Messages (Kea 2.4.0)
+
+if (libdhcp_flex_id.so is used) then (yes)
+ if (replace-client-id is true (the default)) then (yes)
+ #palegreen:Client is recognized
+ by the result of the
+ identifier
+ expression in
+ libdhcp_flex_id.so.;
+ stop
+ else (no)
+ if (client has a reservation) then (yes)
+ if () then (for the purpose
+of acquiring a reservation)
+ #palegreen:Client is recognized
+ by the result of the
+ identifier
+ expression in
+ libdhcp_flex_id.so.;
+ stop
+ else (for the purpose
+of leasing outside a
+reservation or acquiring
+any other value outside
+of reservations)
+ :Go through the
+ diagram from the
+ beginning as if
+ libdhcp_flex_id.so
+ is unused.;
+ stop
+ endif
+ else (no)
+ :Go through the
+ diagram from the
+ beginning as if
+ libdhcp_flex_id.so
+ is unused.;
+ stop
+ endif
+ endif
+else (no)
+ if (DHCPv4
+or
+DHCPv6?) then (DHCPv4)
+ if (MAC
+address is
+present) then (yes)
+ if (match-client-id
+is true
+(the default)) then (yes)
+ if (client ID option (code 61) is present) then (yes)
+ #palegreen:Client is recognized
+ by the client ID
+ option (code 61).;
+ stop
+ else
+ #palegreen:Client is recognized
+ by the MAC address.;
+ stop
+ endif
+ else
+ #palegreen:Client is recognized
+ by the MAC address.;
+ stop
+ endif
+ else (no)
+ #pink:DHCP message is not
+ well formed.;
+ stop
+ endif
+ else (DHCPv6)
+ if (client ID
+option (code 1) is
+present) then (yes)
+ if (interested in
+identifying as a
+single client -
+the device or
+the lease) then (device)
+ #palegreen:Client is recognized
+ by the client ID
+ option (code 1) aka
+ DUID.;
+ stop
+ else (lease)
+ #palegreen:Client is recognized
+ by the tuple
+ <DUID, IA-type, IAID>.;
+ stop
+ endif
+ else (no)
+ #pink:DHCP message is not
+ well formed.;
+ stop
+ endif
+ endif
+endif
+
+@enduml