summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/request4-lease.svg
blob: 28b47de99971234d0f33466030119c41d5373c5a (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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="2399px" preserveAspectRatio="none" style="width:2294px;height:2399px;" version="1.1" viewBox="0 0 2294 2399" width="2294px" zoomAndPan="magnify"><defs><filter height="300%" id="f5oag86dlpmno" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="399" x="938.5" y="17.4023">Allocate a lease for DHCPREQUEST (Kea 1.8.0)</text><!--MD5=[eaee9025590d004dcfc2daa117adb8bb]
cluster check_hint--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="378.72" style="stroke: #000000; stroke-width: 1.5;" width="939" x="950" y="248.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="180" x="1329.5" y="263.7344">Check requested address</text><!--MD5=[c6fdc214782d2c6b530af6f84e869950]
cluster get_existing--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="164.86" style="stroke: #000000; stroke-width: 1.5;" width="245" x="1604" y="347.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="229" x="1612" y="362.5944">Get lease for requested address</text><!--MD5=[57e960cb4db100c9a2ccd6f4d6705f05]
cluster check_done--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="164.86" style="stroke: #000000; stroke-width: 1.5;" width="161" x="470" y="691.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="130" x="485.5" y="707.4544">Check client lease</text><!--MD5=[a6e23b86b5ec2c7080f88f7cf966373c]
cluster new_lease--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="1385.08" style="stroke: #000000; stroke-width: 1.5;" width="1138" x="7" y="905.7792"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="147" x="502.5" y="921.3144">Allocate a new lease</text><!--MD5=[c0a0058b985d9500e1903c17b16df914]
cluster allocateOrReuseLease4--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="685.36" style="stroke: #000000; stroke-width: 1.5;" width="300" x="71" y="1466.4992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="139" y="1482.0344">Allocate or reuse lease</text><!--MD5=[23478a531f37cd80899cad04cd2b7f18]
cluster allocateUnreservedLease4--><rect fill="#FFFFFF" filter="url(#f5oag86dlpmno)" height="588.22" style="stroke: #000000; stroke-width: 1.5;" width="514" x="411" y="1044.6392"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="184" x="576" y="1060.1744">Allocate unreserved lease</text><!--MD5=[f07ece90dffecaa599052c39e01a94c5]
entity getReservedLease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="246" x="1136" y="451.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="226" x="1146" y="475.4544">Check lease for reserved address</text><!--MD5=[8636dd2beae72b933abf12250cfd1025]
entity out_of_pool--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="1020" y="566.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="188" x="1030" y="590.4544">Check out-of-pool address</text><!--MD5=[ec14e8cae259e632e03b8f7e5f2fa627]
entity existing--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="1651" y="451.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="154" x="1661" y="475.4544">Check requested lease</text><!--MD5=[0edbe06a49914a247f1c11b045d92815]
entity client_lease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="108" x="494" y="796.7792"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="88" x="504" y="820.3144">Check renew</text><!--MD5=[66e1e431ca0dbea91ea05cb758558585]
entity create--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="973" y="1703.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="128" x="983" y="1727.3944">Create a new lease</text><!--MD5=[a85809bef6165a661ce702016b2b24bf]
entity old_lease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="128" x="747" y="2230.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="108" x="757" y="2254.3944">Delete old lease</text><!--MD5=[3e4eb9e968ddf7eb79447dabaa827d00]
entity candidate--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="188.5" y="1572.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="133" x="198.5" y="1596.3944">Get candidate lease</text><!--MD5=[3dd4b79f11e480f9e62df46d2d0a412b]
entity reuseExpiredLease4--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="118.5" y="1703.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="137" x="128.5" y="1727.3944">Reuse expired lease</text><!--MD5=[7989e4485f5064553517c02d5ce8346d]
entity reclaimExpiredLease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="169" x="111.5" y="1800.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="149" x="121.5" y="1824.3944">Reclaim expired lease</text><!--MD5=[8b161cca1eea0fa2f14429822e5193fc]
entity updateLease4Information--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="96" y="1897.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="106" y="1921.3944">update lease information</text><!--MD5=[20b997f41be7d019adfd03f05289a85b]
entity lease4_select--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="95.5" y="1994.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="143" x="105.5" y="2018.3944">Callout lease4_select</text><path d="M293.5,2000.3592 L293.5,2008.8592 L258.55,2012.8592 L293.5,2016.8592 L293.5,2025.6698 A0,0 0 0 0 293.5,2025.6698 L346.5,2025.6698 A0,0 0 0 0 346.5,2025.6698 L346.5,2010.3592 L336.5,2000.3592 L293.5,2000.3592 A0,0 0 0 0 293.5,2000.3592 " fill="#FBFB77" filter="url(#f5oag86dlpmno)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M336.5,2000.3592 L336.5,2010.3592 L346.5,2010.3592 L336.5,2000.3592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="299.5" y="2017.9276">hook</text><!--MD5=[d0c6f6a5b1ca3e5ac503933fbe44aaa9]
entity updateLease4--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="108" x="210" y="2091.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="88" x="220" y="2115.3944">Update lease</text><!--MD5=[8ae068fcc4f60e406016be9ba14134ac]
entity iterate--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="194" x="450" y="1133.4992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="174" x="460" y="1157.0344">Iterate pools and subnets</text><!--MD5=[cb628e8ea2f367fa2f488bc44b336c46]
entity pick--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="509.5" y="1246.4992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="85" x="519.5" y="1270.0344">Pick address</text><!--MD5=[3307242102673314e57f67fe596f1a7c]
entity pick_reserved--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="200" x="640" y="1359.4992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="180" x="650" y="1383.0344">Check reserved addressed</text><!--MD5=[ac311a8dd9b9ea9d39416a955479a4fe]
entity mt_in_use--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="288" x="506" y="1475.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="268" x="516" y="1499.3944">Check already in use by another thread</text><!--MD5=[3fa202f6559a381d70247672876b819e]
entity pick_lease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="101" x="476.5" y="1572.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="81" x="486.5" y="1596.3944">Check lease</text><!--MD5=[1213eaa42773f0ba0384c538d3efa224]
entity findClientLease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="1383" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="110" x="1393" y="51.7344">Find client lease</text><path d="M1548,33.6992 L1548,42.1992 L1513.14,46.1992 L1548,50.1992 L1548,59.0098 A0,0 0 0 0 1548,59.0098 L1638,59.0098 A0,0 0 0 0 1638,59.0098 L1638,43.6992 L1628,33.6992 L1548,33.6992 A0,0 0 0 0 1548,33.6992 " fill="#FBFB77" filter="url(#f5oag86dlpmno)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1628,33.6992 L1628,43.6992 L1638,43.6992 L1628,33.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="1554" y="51.2676">entry point</text><!--MD5=[0f69bb3143e68c3e4ebf8b928e2a1af4]
entity addressReserved--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="216" x="1615" y="141.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="196" x="1625" y="164.7344">Check requested reservation</text><!--MD5=[f1bd864ca92b3a59ad91e15b6c278a16]
entity hasAddressReservation--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="124" x="1112" y="141.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="1122" y="164.7344">Get reservation</text><!--MD5=[29cbf9a69668994ea4ff4bb0b8dea6d6]
entity update_hint--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="200" x="1380" y="141.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="180" x="1390" y="164.7344">Update requested address</text><!--MD5=[999fe650e2a9819ebed27de3d290658a]
entity no_lease--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="1444.5" y="2230.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="1454.5" y="2254.3944">Return no lease</text><path d="M1607,2236.3592 L1607,2244.8592 L1571.71,2248.8592 L1607,2252.8592 L1607,2261.6698 A0,0 0 0 0 1607,2261.6698 L1689,2261.6698 A0,0 0 0 0 1689,2261.6698 L1689,2246.3592 L1679,2236.3592 L1607,2236.3592 A0,0 0 0 0 1607,2236.3592 " fill="#FBFB77" filter="url(#f5oag86dlpmno)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1679,2236.3592 L1679,2246.3592 L1689,2246.3592 L1679,2236.3592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="1613" y="2253.9276">exit point</text><!--MD5=[45b45980895812fee5a3bd80c1953e7a]
entity renew--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="971" y="796.7792"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="148" x="981" y="820.3144">Return renewed lease</text><path d="M1174,802.2792 L1174,810.7792 L1139.06,814.7792 L1174,818.7792 L1174,827.5898 A0,0 0 0 0 1174,827.5898 L1256,827.5898 A0,0 0 0 0 1256,827.5898 L1256,812.2792 L1246,802.2792 L1174,802.2792 A0,0 0 0 0 1174,802.2792 " fill="#FBFB77" filter="url(#f5oag86dlpmno)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1246,802.2792 L1246,812.2792 L1256,812.2792 L1246,802.2792 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="1180" y="819.8476">exit point</text><!--MD5=[c13398c59c328d6fcc544c8c17f5b117]
entity return--><rect fill="#FEFECE" filter="url(#f5oag86dlpmno)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="758.5" y="2345.8592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="85" x="768.5" y="2369.3944">Return lease</text><path d="M899,2351.3592 L899,2359.8592 L863.66,2363.8592 L899,2367.8592 L899,2376.6698 A0,0 0 0 0 899,2376.6698 L981,2376.6698 A0,0 0 0 0 981,2376.6698 L981,2361.3592 L971,2351.3592 L899,2351.3592 A0,0 0 0 0 899,2351.3592 " fill="#FBFB77" filter="url(#f5oag86dlpmno)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M971,2351.3592 L971,2361.3592 L981,2361.3592 L971,2351.3592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="905" y="2368.9276">exit point</text><!--MD5=[58c45ac03f61bca16a2604d1f9090edc]
link findClientLease to addressReserved--><path d="M1490.37,64.2992 C1540.43,84.5092 1623.49,118.0392 1675.64,139.0792 " fill="none" id="findClientLease-&gt;addressReserved" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1680.59,141.0792,1673.7456,133.9973,1675.9546,139.205,1670.7468,141.414,1680.59,141.0792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="178" x="1602" y="107.7676">has requested address (hint)</text><!--MD5=[3ed98210a29f20764b03cb44cfd671eb]
link findClientLease to hasAddressReservation--><path d="M1405.79,64.2992 C1355.91,84.5092 1273.15,118.0392 1221.19,139.0792 " fill="none" id="findClientLease-&gt;hasAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1216.26,141.0792,1226.1032,141.414,1220.8954,139.205,1223.1044,133.9973,1216.26,141.0792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="172" x="1328" y="107.7676">no requested address (hint)</text><!--MD5=[0f8169b991248aaf1e86d3e126ee7fc7]
link addressReserved to check_hint--><path d="M1706.14,177.5692 C1690.855,193.3142 1667.81,217.0567 1648.3475,237.1092 C1645.9147,239.6158 1643.5379,242.0647 1641.2391,244.4331 C1640.0898,245.6173 1638.96,246.7814 1637.8525,247.9225 " fill="none" id="addressReserved-&gt;check_hint" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1637.8525,247.9225,1646.991,244.2501,1641.3348,244.3346,1641.2503,238.6783,1637.8525,247.9225" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="162" x="1675" y="220.7676">no conflicting reservation</text><!--MD5=[afeb447a9f6636bece5d73dd5d09cefa]
link addressReserved to no_lease--><path d="M1831.12,176.2492 C1928.35,193.8192 2056,226.1192 2056,274.5592 C2056,274.5592 2056,274.5592 2056,2110.8592 C2056,2245.5392 1894.72,2159.4592 1764,2191.8592 C1729.14,2200.4992 1639.9,2219.7792 1576.62,2233.2992 " fill="none" id="addressReserved-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1571.73,2234.3392,1581.3655,2236.3781,1576.6205,2233.2984,1579.7002,2228.5534,1571.73,2234.3392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="225" x="2057" y="1213.0676">reservation owned by another client</text><!--MD5=[961d5a31619e7d456669487d013a1899]
link hasAddressReservation to update_hint--><path d="M1236.29,159.1992 C1276.08,159.1992 1328.68,159.1992 1374.83,159.1992 " fill="none" id="hasAddressReservation-&gt;update_hint" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1379.85,159.1992,1370.85,155.1992,1374.85,159.1992,1370.85,163.1992,1379.85,159.1992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="107" x="1254.5" y="152.7676">has a reservation</text><!--MD5=[05586e2e35799af932c772159165fde5]
link update_hint to check_hint--><path d="M1480.56,177.2992 C1481.87,191.3892 1485.77,211.1092 1497,224.1992 C1501.4688,229.4105 1506.5789,234.1017 1512.105,238.322 C1514.868,240.4322 1517.735,242.4246 1520.6778,244.3054 C1522.1492,245.2458 1523.6395,246.1583 1525.1453,247.0437 C1525.5217,247.2651 1525.8991,247.4847 1526.2774,247.7027 C1526.4666,247.8117 1526.656,247.9202 1526.8456,248.0284 " fill="none" id="update_hint-&gt;check_hint" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1526.8456,248.0284,1521.0095,240.0949,1522.5024,245.5512,1517.046,247.044,1526.8456,248.0284" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="157" x="1498" y="220.7676">request reserved address</text><!--MD5=[f5740591afdec92972eb12364704fbda]
link hasAddressReservation to check_done--><path d="M1111.78,160.2292 C968.42,161.9792 627,176.4492 627,274.5592 C627,274.5592 627,274.5592 627,585.9192 C627,614.8842 626.03,647.4017 625.045,672.958 C624.7987,679.347 624.5516,685.301 624.3184,690.6556 C624.3038,690.9903 624.2893,691.3226 624.2748,691.6526 " fill="none" id="hasAddressReservation-&gt;check_done" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="624.2748,691.6526,628.6651,682.8364,624.4938,686.6574,620.6728,682.486,624.2748,691.6526" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="628" y="418.4876">no reservation</text><!--MD5=[05b1cca34cf1798b13fb9b06f5ca5f3a]
link check_hint to get_existing--><path d="M1612,276.1292 C1612,277.5792 1612,301.1692 1612,324.7542 C1612,330.6505 1612,336.5464 1612,342.096 C1612,343.4834 1612,344.8492 1612,346.1879 C1612,346.3552 1612,346.5221 1612,346.6886 " fill="none" id="check_hint-&gt;get_existing" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1612,346.6886,1616,337.6886,1612,341.6886,1608,337.6886,1612,346.6886" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a6e7bc949cef76964a3dcada3d94e736]
link get_existing to existing--><path d="M1612.09,374.9892 C1614.74,376.9592 1674.43,421.4892 1710.66,448.5192 " fill="none" id="get_existing-&gt;existing" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1714.95,451.7292,1710.1157,443.1485,1710.938,448.7452,1705.3413,449.5676,1714.95,451.7292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="124" x="1676" y="418.4876">has requested lease</text><!--MD5=[86bae6c5db5c6e2b2f64eec8702a172a]
link existing to no_lease--><path d="M1738,488.1492 C1738,510.3092 1738,549.9792 1738,583.9192 C1738,583.9192 1738,583.9192 1738,2110.8592 C1738,2169.0192 1692.68,2170.6192 1643,2200.8592 C1622.7,2213.2092 1598.7,2222.8992 1576.6,2230.1892 " fill="none" id="existing-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1571.62,2231.7992,1581.415,2232.8276,1576.3761,2230.2567,1578.947,2225.2178,1571.62,2231.7992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="263" x="1739" y="1382.5676">not expired lease owned by another client</text><!--MD5=[d1913c1ad5468c4f26e27e58c8f67311]
link get_existing to out_of_pool--><path d="M1603.5702,375.107 C1603.282,375.1139 1602.9868,375.1209 1602.6847,375.1282 C1602.0805,375.1427 1601.4485,375.158 1600.7892,375.1741 C1599.4706,375.2063 1598.043,375.2417 1596.5101,375.2804 C1593.4444,375.3579 1589.9579,375.4487 1586.0818,375.5535 C1570.5772,375.973 1548.8378,376.6183 1522.855,377.543 C1470.8894,379.3923 1401.95,382.3592 1331.9675,386.8717 C1192.0025,395.8967 1047.865,411.1042 1027,435.9192 C1000.68,467.2192 1006.56,492.5092 1027,527.9192 C1036.33,544.0792 1052.3,555.9992 1068.62,564.5792 " fill="none" id="get_existing-&gt;out_of_pool" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1073.22,566.9092,1066.998,559.2747,1068.7594,564.6503,1063.3837,566.4117,1073.22,566.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="1028" y="474.9876">no reservation</text><!--MD5=[d1913c1ad5468c4f26e27e58c8f67311]
link get_existing to out_of_pool--><path d="M1603.8377,376.8955 C1603.4057,377.006 1602.9584,377.1212 1602.4962,377.2411 C1600.6472,377.7206 1598.5597,378.2751 1596.2617,378.9056 C1587.0697,381.4277 1574.5094,385.1648 1560.3738,390.173 C1532.1025,400.1892 1497.53,415.2892 1471,435.9192 C1430.23,467.6192 1443.85,500.6192 1400,527.9192 C1350.34,558.8392 1286.82,573.0892 1233.23,579.4992 " fill="none" id="get_existing-&gt;out_of_pool-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1228.08,580.0892,1237.4862,583.0087,1233.0457,579.5042,1236.5502,575.0636,1228.08,580.0892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="162" x="1472" y="474.9876">has requested reservation</text><!--MD5=[a80af0ff9802cb26b63fe0e5cdeeb896]
link get_existing to getReservedLease--><path d="M1603.7999,374.8934 C1603.5697,374.893 1603.3349,374.8927 1603.0956,374.8923 C1602.6171,374.8916 1602.1205,374.891 1601.6064,374.8904 C1599.5497,374.8882 1597.2106,374.8875 1594.61,374.8892 C1584.2075,374.8962 1569.6199,374.9436 1552.1798,375.1011 C1517.2997,375.4161 1471.0094,376.1717 1423.9688,377.9267 C1329.8875,381.4367 1232.805,388.9442 1218,404.9192 C1205.95,417.9192 1217.84,434.9092 1231.87,448.1092 " fill="none" id="get_existing-&gt;getReservedLease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1235.86,451.7292,1231.8826,442.7192,1232.1571,448.3694,1226.5069,448.6439,1235.86,451.7292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="223" x="1219" y="418.4876">has reservation for another address</text><!--MD5=[460f9433d097e6134b488e2edc059749]
link getReservedLease to no_lease--><path d="M1298.31,487.9392 C1370.31,519.1292 1516,582.4492 1516,583.9192 C1516,583.9192 1516,583.9192 1516,1321.9992 C1516,1356.7992 1520.59,1368.8792 1543,1395.4992 C1560.18,1415.9092 1578.19,1404.7792 1595,1425.4992 C1614.84,1449.9592 1617,1461.3692 1617,1492.8592 C1617,1492.8592 1617,1492.8592 1617,2110.8592 C1617,2161.3292 1571.14,2203.9592 1538.92,2227.6992 " fill="none" id="getReservedLease-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1534.66,2230.7792,1544.2952,2228.7389,1538.7092,2227.846,1539.6021,2222.2601,1534.66,2230.7792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="1544" y="1382.5676">no active reserved lease</text><!--MD5=[e9bc3bd5a379396c200e43b0baf79c85]
link getReservedLease to out_of_pool--><path d="M1238.5,488.0792 C1214.41,508.2392 1174.48,541.6692 1148.71,563.2392 " fill="none" id="getReservedLease-&gt;out_of_pool" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1144.7,566.5992,1154.1757,563.9139,1148.5423,563.3997,1149.0565,557.7663,1144.7,566.5992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e17e653abfe61c21e03d310137f9f5d3]
link out_of_pool to check_done--><path d="M1094.93,603.0392 C1061.57,621.9092 1004.65,651.7292 952,667.9192 C882.41,689.3242 801.6225,701.8592 737.5188,709.0692 C705.4669,712.6742 677.5859,714.948 657.3611,716.3336 C647.2487,717.0264 639.0503,717.4972 633.2015,717.8013 C632.4705,717.8393 631.7761,717.8748 631.1193,717.9077 " fill="none" id="out_of_pool-&gt;check_done" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="631.1193,717.9077,640.3082,721.4522,636.113,717.6574,639.9078,713.4622,631.1193,717.9077" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="280" x="997" y="664.4876">owned reservation for the requested address</text><!--MD5=[e17e653abfe61c21e03d310137f9f5d3]
link out_of_pool to check_done--><path d="M1019.57,594.3492 C910.87,604.4092 748.83,623.3992 693,650.9192 C674.24,660.1642 657.23,676.2567 644.6763,690.3942 C641.5378,693.9286 638.6779,697.3408 636.1388,700.4932 C634.8692,702.0695 633.6798,703.5808 632.576,705.0099 C632.3,705.3672 632.0294,705.7194 631.7642,706.0662 C631.6316,706.2395 631.5003,706.4116 631.3705,706.5822 C631.3055,706.6675 631.2409,706.7525 631.1767,706.8371 " fill="none" id="out_of_pool-&gt;check_done-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="631.1767,706.8371,639.8049,702.088,634.2002,702.8549,633.4333,697.2503,631.1767,706.8371" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="249" x="694" y="664.4876">requested address is in allowed an pool</text><!--MD5=[7bd3c3d867479d62123546af0a0eba34]
link out_of_pool to no_lease--><path d="M1203.74,602.9892 C1232.91,612.7492 1264.1,627.8392 1286,650.9192 C1307.77,673.8692 1309,686.6492 1309,718.2792 C1309,718.2792 1309,718.2792 1306,1434.9992 C1306,1673.5792 1398,1725.2792 1398,1963.8592 C1398,1963.8592 1398,1963.8592 1398,2110.8592 C1398,2161.5092 1444.28,2204.0892 1476.8,2227.7592 " fill="none" id="out_of_pool-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1481.09,2230.8292,1476.0801,2222.3498,1477.0175,2227.9284,1471.4388,2228.8658,1481.09,2230.8292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="283" x="1310" y="1439.0676">address not reserved and not in allowed pool</text><!--MD5=[285a75cccafb8a8e1e8a8d054b6bd861]
link check_done to client_lease--><path d="M622.95,719.8492 C621.39,721.7992 586.7,765.2692 565.07,792.3792 " fill="none" id="check_done-&gt;client_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="561.72,796.5892,570.4617,792.0524,564.84,792.6821,564.2103,787.0604,561.72,796.5892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="108" x="600" y="763.3476">has a client lease</text><!--MD5=[69a418bc3ca1e1b953129b8feacd7c7c]
link client_lease to renew--><path d="M602.26,814.7792 C689.18,814.7792 860.52,814.7792 965.69,814.7792 " fill="none" id="client_lease-&gt;renew" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="970.96,814.7792,961.96,810.7792,965.96,814.7792,961.96,818.7792,970.96,814.7792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="332" x="620.5" y="808.3476">requested address was already assigned to the client</text><!--MD5=[82bd19346130f27c4982b22ea05f0ccb]
link client_lease to new_lease--><path d="M547.85,832.9492 C547.715,848.8792 547.5075,873.1567 547.3313,893.7055 C547.3092,896.2741 547.2877,898.7844 547.2668,901.2129 C547.2564,902.4271 547.2461,903.6209 547.2361,904.7913 C547.2336,905.0839 547.2311,905.375 547.2286,905.6646 " fill="none" id="client_lease-&gt;new_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="547.2286,905.6646,551.3058,896.6993,547.2715,900.6648,543.3061,896.6306,547.2286,905.6646" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f19fad7ef643a710f1fa744c146e27e1]
link new_lease to allocateOrReuseLease4--><path d="M546.94,933.6392 C542.11,933.4192 233,919.8692 233,1070.9992 C233,1070.9992 233,1070.9992 233,1378.4992 C233,1403.8242 237.36,1431.9242 241.7888,1453.9317 C242.3423,1456.6827 242.897,1459.3384 243.4444,1461.8816 C243.7181,1463.1532 243.9899,1464.3967 244.2589,1465.6099 C244.2925,1465.7616 244.3261,1465.9127 244.3596,1466.0634 " fill="none" id="new_lease-&gt;allocateOrReuseLease4" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="244.3596,1466.0634,246.3094,1456.4095,243.2737,1461.1828,238.5004,1458.147,244.3596,1466.0634" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="152" x="234" y="1213.0676">has a requested address</text><!--MD5=[1e19bcf55215d199025544543592d337]
link new_lease to allocateUnreservedLease4--><path d="M547,933.7392 C547,935.7842 547,969.0667 547,1002.3417 C547,1010.6605 547,1018.9788 547,1026.8084 C547,1030.7232 547,1034.5158 547,1038.1252 C547,1039.93 547,1041.6889 547,1043.3944 C547,1043.6076 547,1043.8199 547,1044.0314 " fill="none" id="new_lease-&gt;allocateUnreservedLease4" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="547,1044.0314,551,1035.0314,547,1039.0314,543,1035.0314,547,1044.0314" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="135" x="548" y="977.2076">no requested address</text><!--MD5=[2c84e3b0a8d19577f3d2d8902e61dda6]
link allocateOrReuseLease4 to candidate--><path d="M251.01,1494.9292 C251.3,1496.8792 257.62,1539.7592 261.66,1567.2092 " fill="none" id="allocateOrReuseLease4-&gt;candidate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="262.44,1572.4792,265.0848,1562.9921,261.7109,1567.5327,257.1703,1564.1587,262.44,1572.4792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a5e8e7e456414e548f2004cb6dbe84b6]
link candidate to reuseExpiredLease4--><path d="M255.97,1608.9892 C243.73,1632.2192 221.85,1673.7092 208.46,1699.1092 " fill="none" id="candidate-&gt;reuseExpiredLease4" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="206.07,1703.6592,213.799,1697.5549,208.397,1699.2337,206.7181,1693.8317,206.07,1703.6592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="230" y="1670.4276">expired candidate lease</text><!--MD5=[d2a65277aca220a8b88ff33e161a522b]
link candidate to no_lease--><path d="M300.41,1608.9492 C331,1622.7292 376.81,1641.0592 419,1648.8592 C438.61,1652.4892 1119.78,1646.7992 1137,1656.8592 C1165.37,1673.4392 1174,1687.9992 1174,1720.8592 C1174,1720.8592 1174,1720.8592 1174,2110.8592 C1174,2167.7192 1341.77,2212.7992 1439.5,2234.2292 " fill="none" id="candidate-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1444.39,2235.2992,1436.4557,2229.4642,1439.5061,2234.2282,1434.7421,2237.2785,1444.39,2235.2992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="169" x="1175" y="1920.9276">conflicting candidate lease</text><!--MD5=[7d0ea550df801bc4f2e5d77c4007fd73]
link candidate to create--><path d="M302.78,1608.8892 C333.47,1621.9592 378.19,1639.3492 419,1648.8592 C452.51,1656.6692 461.8,1653.0992 496,1656.8592 C663.96,1675.3392 860.53,1698.5492 967.59,1711.3292 " fill="none" id="candidate-&gt;create" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="972.62,1711.9292,964.1641,1706.8797,967.656,1711.3301,963.2056,1714.822,972.62,1711.9292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="117" x="634" y="1670.4276">no candidate lease</text><!--MD5=[41d477ba3ffb73c8ff7e1f8771a2bc5c]
link reuseExpiredLease4 to reclaimExpiredLease--><path d="M196.82,1740.2792 C196.65,1755.8192 196.41,1778.6392 196.24,1795.5192 " fill="none" id="reuseExpiredLease4-&gt;reclaimExpiredLease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="196.18,1800.5492,200.2572,1791.5839,196.223,1795.5494,192.2575,1791.5152,196.18,1800.5492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6426546e78ac0ba7440fd3d40f44ede2]
link reclaimExpiredLease to updateLease4Information--><path d="M195.27,1837.2792 C194.61,1852.8192 193.65,1875.6392 192.94,1892.5192 " fill="none" id="reclaimExpiredLease-&gt;updateLease4Information" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="192.73,1897.5492,197.0865,1888.7163,192.9298,1892.5532,189.0929,1888.3965,192.73,1897.5492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a62828ac2ba9e6deab1d38c41c6a28c7]
link updateLease4Information to lease4_select--><path d="M189.25,1934.2792 C186.8,1949.8192 183.19,1972.6392 180.53,1989.5192 " fill="none" id="updateLease4Information-&gt;lease4_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="179.73,1994.5492,185.097,1986.2912,180.5172,1989.6116,177.1968,1985.0317,179.73,1994.5492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8451cb76573000a7f0f17878defd5d68]
link lease4_select to no_lease--><path d="M256.64,2030.8892 C422.11,2065.8992 815.39,2147.1692 1148,2200.8592 C1249.02,2217.1692 1366.7,2231.6892 1439.28,2240.1392 " fill="none" id="lease4_select-&gt;no_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1444.43,2240.7392,1435.9456,2235.7377,1439.4627,2240.1683,1435.0321,2243.6853,1444.43,2240.7392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="1090" y="2114.9276">SKIP</text><!--MD5=[6d30d4fb129fbbb4308e51704d598b83]
link lease4_select to updateLease4--><path d="M187.75,2031.0092 C194.04,2040.4992 202.41,2052.2792 211,2061.8592 C219.4,2071.2392 229.56,2080.6292 238.73,2088.5292 " fill="none" id="lease4_select-&gt;updateLease4" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="242.59,2091.8092,238.3406,2082.9243,238.7867,2088.5635,233.1474,2089.0096,242.59,2091.8092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f38e7914af006d3091e34eae716cf611]
link updateLease4 to old_lease--><path d="M271.13,2128.1092 C280.01,2147.2092 297.1,2177.2192 322,2191.8592 C391.49,2232.7292 624.21,2243.7792 741.78,2246.7592 " fill="none" id="updateLease4-&gt;old_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="746.95,2246.8892,738.0438,2242.6846,741.9513,2246.775,737.8609,2250.6825,746.95,2246.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9b569e4e69bfc07b8f4591db492d7934]
link allocateUnreservedLease4 to iterate--><path d="M547,1072.5592 C547,1074.0692 547,1105.5792 547,1128.0692 " fill="none" id="allocateUnreservedLease4-&gt;iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="547,1133.2792,551,1124.2792,547,1128.2792,543,1124.2792,547,1133.2792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[913c99c1aa5de4d885de0fade3210176]
link iterate to pick--><path d="M549.34,1169.8392 C551.94,1189.0692 556.14,1220.1292 558.98,1241.1592 " fill="none" id="iterate-&gt;pick" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="559.67,1246.2792,562.4258,1236.8238,558.9989,1241.3245,554.4982,1237.8975,559.67,1246.2792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[98fd2d33f60f8d171595f3ad38490357]
link pick to pick_reserved--><path d="M614.74,1276.6292 C662.69,1287.2492 727.13,1302.9992 735,1312.4992 C744.41,1323.8692 745.43,1340.5992 744.21,1354.0992 " fill="none" id="pick-&gt;pick_reserved" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="743.62,1359.2892,748.6002,1350.7923,744.1784,1354.3205,740.6502,1349.8988,743.62,1359.2892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[40bbb0c51a3c4e170e8c88288f4abbc7]
reverse link iterate to pick_reserved--><path d="M587.85,1171.9592 C635.04,1196.9992 710.25,1245.3892 742,1312.4992 C748.94,1327.1692 747.31,1345.9192 744.63,1359.3292 " fill="none" id="iterate&lt;-pick_reserved" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="583.37,1169.6092,589.4641,1177.3463,587.7924,1171.9421,593.1966,1170.2704,583.37,1169.6092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="214" x="723" y="1269.5676">address reserved to another client</text><!--MD5=[d452465c31c3e200782285fc87364de7]
link pick_reserved to mt_in_use--><path d="M726.33,1395.8692 C710.31,1416.2192 683.78,1449.9292 666.6,1471.7692 " fill="none" id="pick_reserved-&gt;mt_in_use" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="663.5,1475.6992,672.2152,1471.1118,666.5973,1471.7741,665.935,1466.1561,663.5,1475.6992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0d2cb4b21f131724b772926f54d8c5a6]
reverse link iterate to mt_in_use--><path d="M525.22,1173.1292 C491.49,1207.6292 434.06,1278.2892 470,1329.4992 C492.53,1361.6092 521.64,1335.9392 553,1359.4992 C595.57,1391.4892 627.49,1447.3892 641.76,1475.5692 " fill="none" id="iterate&lt;-mt_in_use" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="528.81,1169.5092,519.6392,1173.1004,525.296,1173.0661,525.3302,1178.7229,528.81,1169.5092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="255" x="471" y="1326.0676">address already in use by another thread</text><!--MD5=[bc2a6c320076cde845cfe5f7d4f3068f]
link mt_in_use to pick_lease--><path d="M627.73,1512.0592 C606.74,1528.2692 575.3,1552.5592 553.13,1569.6792 " fill="none" id="mt_in_use-&gt;pick_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="549.11,1572.7792,558.6776,1570.4423,553.0667,1569.7224,553.7867,1564.1115,549.11,1572.7792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2a521ba838ca3ea39c3c98b97230fab1]
reverse link iterate to pick_lease--><path d="M513.37,1172.6092 C502.3,1180.1892 490.42,1189.4392 481,1199.4992 C464.23,1217.4192 458.7,1222.8892 452,1246.4992 C435.76,1303.7492 469.06,1455.4492 488,1511.8592 C495.37,1533.8192 507.86,1557.3892 516.72,1572.7992 " fill="none" id="iterate&lt;-pick_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="517.73,1169.6792,508.0294,1171.3818,513.5808,1172.4692,512.4934,1178.0206,517.73,1169.6792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="461" y="1382.5676">active lease</text><!--MD5=[63357d070723cd23e47a694c7dc5adee]
link pick_lease to reuseExpiredLease4--><path d="M486.46,1608.9192 C461.21,1620.5292 428.75,1637.3192 403,1656.8592 C394.74,1663.1292 395.96,1668.6192 387,1673.8592 C377.25,1679.5592 326.42,1692.0092 279.78,1702.6592 " fill="none" id="pick_lease-&gt;reuseExpiredLease4" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="274.7,1703.8192,284.3588,1705.7447,279.5779,1702.721,282.6016,1697.9401,274.7,1703.8192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="404" y="1670.4276">expired lease</text><!--MD5=[cf9da26e069a0df2c62fe2799950086c]
link pick_lease to create--><path d="M577.81,1604.4592 C670.26,1627.3992 866.3,1676.0292 973.39,1702.5992 " fill="none" id="pick_lease-&gt;create" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="978.42,1703.8492,970.6421,1697.8074,973.5659,1702.65,968.7233,1705.5738,978.42,1703.8492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="52" x="849" y="1670.4276">no lease</text><!--MD5=[64e111b9225aa9d21cd5edaf123c77e3]
link create to old_lease--><path d="M1027.36,1740.0192 C1009.53,1757.5992 986,1786.6992 986,1817.8592 C986,1817.8592 986,1817.8592 986,2110.8592 C986,2170.8492 921.44,2208.5092 870.75,2228.8292 " fill="none" id="create-&gt;old_lease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="865.89,2230.7392,875.7293,2231.1732,870.5441,2228.9118,872.8055,2223.7267,865.89,2230.7392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f504166a5b4bb527b5be2231a925b659]
link old_lease to return--><path d="M811,2267.0192 C811,2286.5992 811,2318.6892 811,2340.2892 " fill="none" id="old_lease-&gt;return" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="811,2345.5392,815,2336.5392,811,2340.5392,807,2336.5392,811,2345.5392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1b4d46ef90f054326099bee1d7a95d46]
@startuml

title Allocate a lease for DHCPREQUEST (Kea 1.8.0)

agent "Find client lease" as findClientLease
note right : entry point

agent "Check requested reservation" as addressReserved

agent "Get reservation" as hasAddressReservation

agent "Update requested address" as update_hint

rectangle "Check requested address" as check_hint {
 rectangle "Get lease for requested address" as get_existing {
  agent "Check requested lease" as existing
 }

 agent "Check lease for reserved address" as getReservedLease

 agent "Check out-of-pool address" as out_of_pool
}

rectangle "Check client lease" as check_done {
 agent "Check renew" as client_lease
}

rectangle "Allocate a new lease" as new_lease {
 together {
  rectangle "Allocate or reuse lease" as allocateOrReuseLease4 {
   agent "Get candidate lease" as candidate

   agent "Reuse expired lease" as reuseExpiredLease4

   agent "Reclaim expired lease" as reclaimExpiredLease

   agent "update lease information" as updateLease4Information

   agent "Callout lease4_select" as lease4_select
   note right : hook

   agent "Update lease" as updateLease4
  }

  rectangle "Allocate unreserved lease" as allocateUnreservedLease4 {
   agent "Iterate pools and subnets" as iterate

   agent "Pick address" as pick

   agent "Check reserved addressed" as pick_reserved

   agent "Check already in use by another thread" as mt_in_use

   agent "Check lease" as pick_lease
  }
 }

 agent "Create a new lease" as create

 agent "Delete old lease" as old_lease
}

agent "Return no lease" as no_lease
note right : exit point

agent "Return renewed lease" as renew
note right : exit point

agent "Return lease" as return
note right : exit point

findClientLease - -> addressReserved : has requested address (hint)
findClientLease - -> hasAddressReservation : no requested address (hint)
addressReserved - -> check_hint : no conflicting reservation
addressReserved - -> no_lease : reservation owned by another client
hasAddressReservation -> update_hint : has a reservation
update_hint - -> check_hint : request reserved address
hasAddressReservation - -> check_done : no reservation
check_hint - -> get_existing
get_existing - -> existing : has requested lease
existing - - -> no_lease : not expired lease owned by another client
get_existing - -> out_of_pool : no reservation
get_existing - -> out_of_pool : has requested reservation
get_existing - -> getReservedLease : has reservation for another address
getReservedLease - - -> no_lease : no active reserved lease
getReservedLease - -> out_of_pool
out_of_pool - -> check_done : owned reservation for the requested address
out_of_pool - -> check_done : requested address is in allowed an pool
out_of_pool - -> no_lease : address not reserved and not in allowed pool
check_done - -> client_lease : has a client lease
client_lease -> renew : requested address was already assigned to the client
client_lease - -> new_lease
new_lease - -> allocateOrReuseLease4 : has a requested address
new_lease - -> allocateUnreservedLease4 : no requested address
allocateOrReuseLease4 - -> candidate
candidate - -> reuseExpiredLease4 : expired candidate lease
candidate - -> no_lease : conflicting candidate lease
candidate - -> create : no candidate lease
reuseExpiredLease4 - -> reclaimExpiredLease
reclaimExpiredLease - -> updateLease4Information
updateLease4Information - -> lease4_select
lease4_select - - -> no_lease : SKIP
lease4_select - -> updateLease4
updateLease4 - -> old_lease
allocateUnreservedLease4 - -> iterate
iterate - -> pick
pick - -> pick_reserved
pick_reserved -up-> iterate : address reserved to another client
pick_reserved - -> mt_in_use
mt_in_use -up-> iterate : address already in use by another thread
mt_in_use - -> pick_lease
pick_lease -up-> iterate : active lease
pick_lease - -> reuseExpiredLease4 : expired lease
pick_lease - -> create : no lease
create - -> old_lease
old_lease - -> return

@enduml

PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>