summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/assign-lease4.uml
blob: de19ed74ff47521862ea0efc266b1953bd6a7291 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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