diff options
Diffstat (limited to 'doc/sphinx/uml/assign-lease4.uml')
-rw-r--r-- | doc/sphinx/uml/assign-lease4.uml | 64 |
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 |