summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/assign-lease4.uml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sphinx/uml/assign-lease4.uml')
-rw-r--r--doc/sphinx/uml/assign-lease4.uml64
1 files changed, 64 insertions, 0 deletions
diff --git a/doc/sphinx/uml/assign-lease4.uml b/doc/sphinx/uml/assign-lease4.uml
new file mode 100644
index 0000000..de19ed7
--- /dev/null
+++ b/doc/sphinx/uml/assign-lease4.uml
@@ -0,0 +1,64 @@
+@startuml
+
+title DHCPv4 Assign Lease (Kea 1.8.0)
+
+agent "Check Subnet" as subnet
+note left : entry point
+
+agent "Get server id" as server_id
+
+agent "Get hint" as hint
+
+agent "Get hardware address and client id" as ident
+
+rectangle "INIT-REBOOT state" as init_reboot {
+ agent "Get existing lease by client id" as by_client_id
+
+ agent "Get existing lease by hardware address" as by_hw_addr
+
+ agent "Get authoritative" as authoritative
+}
+
+agent "Process hostname" as hostname
+
+agent "Request lease" as allocate
+
+rectangle "Lease allocated" as allocated {
+ agent "update DDNS" as ddns
+ agent "Send ACK" as ack
+}
+
+agent "No lease allocated" as failed
+note right : exit point
+
+agent "Send NAK" as nak
+note right : exit point
+
+agent "No response" as no_response
+note right : exit point
+
+subnet --> server_id
+subnet ---> nak : no subnet
+server_id --> hint
+hint --> ident : use requested address option
+hint --> ident : use client address
+hint --> ident : no hint
+ident --> init_reboot : requested address and no server id
+ident ---> hostname
+init_reboot --> by_client_id : has a client id
+init_reboot --> by_hw_addr : no client id
+by_client_id ---> authoritative : found
+by_client_id --> by_hw_addr : not found
+by_hw_addr --> authoritative
+authoritative ---> no_response : not authoritative and no owned lease
+authoritative --> nak : owned lease with hint mismatch
+authoritative --> nak : authoritative and no owned lease
+authoritative --> hostname : other cases
+hostname --> allocate
+allocate --> allocated : lease allocated
+allocated --> ddns
+ddns --> ack
+allocate --> failed : no lease allocated
+failed --> nak
+
+@enduml