summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancis Dupont <fdupont@isc.org>2020-08-02 16:24:54 +0200
committerFrancis Dupont <fdupont@isc.org>2020-08-04 10:45:38 +0200
commite49a6ac348fd043fdb6190f19f20aeaa287bf60a (patch)
treed3bf73a29625507ed075ca13922609e86adbaf61
parent[#1329] Added allocating subnet change (diff)
downloadkea-e49a6ac348fd043fdb6190f19f20aeaa287bf60a.tar.xz
kea-e49a6ac348fd043fdb6190f19f20aeaa287bf60a.zip
[#1329] Moved UML to ARM
-rw-r--r--doc/devel/Makefile.am45
-rw-r--r--doc/devel/images/assign-lease4.pngbin110780 -> 0 bytes
-rw-r--r--doc/devel/images/assign-lease4.svg111
-rw-r--r--doc/sphinx/Makefile.am48
-rw-r--r--doc/sphinx/index.rst2
-rw-r--r--doc/sphinx/uml/appendRequestedOptions.png (renamed from doc/devel/images/appendRequestedOptions.png)bin51235 -> 51235 bytes
-rw-r--r--doc/sphinx/uml/appendRequestedOptions.svg (renamed from doc/devel/images/appendRequestedOptions.svg)0
-rw-r--r--doc/sphinx/uml/appendRequestedOptions.uml (renamed from doc/devel/images/appendRequestedOptions.uml)0
-rw-r--r--doc/sphinx/uml/appendRequestedVendorOptions.png (renamed from doc/devel/images/appendRequestedVendorOptions.png)bin94690 -> 94690 bytes
-rw-r--r--doc/sphinx/uml/appendRequestedVendorOptions.svg (renamed from doc/devel/images/appendRequestedVendorOptions.svg)0
-rw-r--r--doc/sphinx/uml/appendRequestedVendorOptions.uml (renamed from doc/devel/images/appendRequestedVendorOptions.uml)0
-rw-r--r--doc/sphinx/uml/assign-lease4.pngbin0 -> 112647 bytes
-rw-r--r--doc/sphinx/uml/assign-lease4.svg113
-rw-r--r--doc/sphinx/uml/assign-lease4.uml (renamed from doc/devel/images/assign-lease4.uml)3
-rw-r--r--doc/sphinx/uml/buildCfgOptionList.png (renamed from doc/devel/images/buildCfgOptionList.png)bin87753 -> 87753 bytes
-rw-r--r--doc/sphinx/uml/buildCfgOptionList.svg (renamed from doc/devel/images/buildCfgOptionList.svg)0
-rw-r--r--doc/sphinx/uml/buildCfgOptionList.uml (renamed from doc/devel/images/buildCfgOptionList.uml)0
-rw-r--r--doc/sphinx/uml/currentHost4.png (renamed from doc/devel/images/currentHost4.png)bin146371 -> 146371 bytes
-rw-r--r--doc/sphinx/uml/currentHost4.svg (renamed from doc/devel/images/currentHost4.svg)0
-rw-r--r--doc/sphinx/uml/currentHost4.uml (renamed from doc/devel/images/currentHost4.uml)0
-rw-r--r--doc/sphinx/uml/lease-states.png (renamed from doc/devel/images/lease-states.png)bin51204 -> 51204 bytes
-rw-r--r--doc/sphinx/uml/lease-states.svg (renamed from doc/devel/images/lease-states.svg)0
-rw-r--r--doc/sphinx/uml/lease-states.uml (renamed from doc/devel/images/lease-states.uml)0
-rw-r--r--doc/sphinx/uml/main-loop.png (renamed from doc/devel/images/main-loop.png)bin44244 -> 44244 bytes
-rw-r--r--doc/sphinx/uml/main-loop.svg (renamed from doc/devel/images/main-loop.svg)0
-rw-r--r--doc/sphinx/uml/main-loop.uml (renamed from doc/devel/images/main-loop.uml)0
-rw-r--r--doc/sphinx/uml/packet4.png (renamed from doc/devel/images/packet4.png)bin220267 -> 220267 bytes
-rw-r--r--doc/sphinx/uml/packet4.svg (renamed from doc/devel/images/packet4.svg)0
-rw-r--r--doc/sphinx/uml/packet4.uml (renamed from doc/devel/images/packet4.uml)0
-rw-r--r--doc/sphinx/uml/request4-lease.png (renamed from doc/devel/images/request4-lease.png)bin278247 -> 278247 bytes
-rw-r--r--doc/sphinx/uml/request4-lease.svg (renamed from doc/devel/images/request4-lease.svg)0
-rw-r--r--doc/sphinx/uml/request4-lease.uml (renamed from doc/devel/images/request4-lease.uml)0
-rw-r--r--doc/sphinx/uml/request4.png (renamed from doc/devel/images/request4.png)bin89741 -> 89741 bytes
-rw-r--r--doc/sphinx/uml/request4.svg (renamed from doc/devel/images/request4.svg)0
-rw-r--r--doc/sphinx/uml/request4.uml (renamed from doc/devel/images/request4.uml)0
-rw-r--r--doc/sphinx/uml/requestLease4.png (renamed from doc/devel/images/requestLease4.png)bin248713 -> 248713 bytes
-rw-r--r--doc/sphinx/uml/requestLease4.svg (renamed from doc/devel/images/requestLease4.svg)0
-rw-r--r--doc/sphinx/uml/requestLease4.uml (renamed from doc/devel/images/requestLease4.uml)0
-rw-r--r--doc/sphinx/uml/select4.png (renamed from doc/devel/images/select4.png)bin179130 -> 179130 bytes
-rw-r--r--doc/sphinx/uml/select4.svg (renamed from doc/devel/images/select4.svg)0
-rw-r--r--doc/sphinx/uml/select4.uml (renamed from doc/devel/images/select4.uml)0
-rw-r--r--doc/sphinx/umls.rst109
42 files changed, 273 insertions, 158 deletions
diff --git a/doc/devel/Makefile.am b/doc/devel/Makefile.am
index 6562151616..9b740be71b 100644
--- a/doc/devel/Makefile.am
+++ b/doc/devel/Makefile.am
@@ -11,43 +11,6 @@ EXTRA_DIST += mainpage.dox
EXTRA_DIST += terminology.dox
EXTRA_DIST += unit-tests.dox
-EXTRA_DIST += images/appendRequestedOptions.png
-EXTRA_DIST += images/appendRequestedOptions.svg
-EXTRA_DIST += images/appendRequestedOptions.uml
-EXTRA_DIST += images/appendRequestedVendorOptions.png
-EXTRA_DIST += images/appendRequestedVendorOptions.svg
-EXTRA_DIST += images/appendRequestedVendorOptions.uml
-EXTRA_DIST += images/assign-lease4.png
-EXTRA_DIST += images/assign-lease4.svg
-EXTRA_DIST += images/assign-lease4.uml
-EXTRA_DIST += images/buildCfgOptionList.png
-EXTRA_DIST += images/buildCfgOptionList.svg
-EXTRA_DIST += images/buildCfgOptionList.uml
-EXTRA_DIST += images/currentHost4.png
-EXTRA_DIST += images/currentHost4.svg
-EXTRA_DIST += images/currentHost4.uml
-EXTRA_DIST += images/lease-states.png
-EXTRA_DIST += images/lease-states.svg
-EXTRA_DIST += images/lease-states.uml
-EXTRA_DIST += images/main-loop.png
-EXTRA_DIST += images/main-loop.svg
-EXTRA_DIST += images/main-loop.uml
-EXTRA_DIST += images/packet4.png
-EXTRA_DIST += images/packet4.svg
-EXTRA_DIST += images/packet4.uml
-EXTRA_DIST += images/request4-lease.png
-EXTRA_DIST += images/request4-lease.svg
-EXTRA_DIST += images/request4-lease.uml
-EXTRA_DIST += images/request4.png
-EXTRA_DIST += images/request4.svg
-EXTRA_DIST += images/request4.uml
-EXTRA_DIST += images/requestLease4.png
-EXTRA_DIST += images/requestLease4.svg
-EXTRA_DIST += images/requestLease4.uml
-EXTRA_DIST += images/select4.png
-EXTRA_DIST += images/select4.svg
-EXTRA_DIST += images/select4.uml
-
all: # do nothing, used only by developers manually
devel:
@@ -57,11 +20,3 @@ devel:
clean-local:
rm -rf html
-
-if HAVE_PLANTUML
-.uml.png:
- @PLANTUML@ $<
-
-.uml.svg:
- @PLANTUML@ -svg $<
-endif
diff --git a/doc/devel/images/assign-lease4.png b/doc/devel/images/assign-lease4.png
deleted file mode 100644
index c9f85fcb1a..0000000000
--- a/doc/devel/images/assign-lease4.png
+++ /dev/null
Binary files differ
diff --git a/doc/devel/images/assign-lease4.svg b/doc/devel/images/assign-lease4.svg
deleted file mode 100644
index da95e2fb74..0000000000
--- a/doc/devel/images/assign-lease4.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?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="1372px" preserveAspectRatio="none" style="width:1375px;height:1372px;" version="1.1" viewBox="0 0 1375 1372" width="1375px" zoomAndPan="magnify"><defs><filter height="300%" id="f1gmw8d9konsly" 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="298" x="529.5" y="17.4023">DHCPv4 Assign Lease (Kea 1.7.11)</text><!--MD5=[96a966798826de6e056b38ba6b9482ca]
-cluster init_reboot--><rect fill="#FFFFFF" filter="url(#f1gmw8d9konsly)" height="374.86" style="stroke: #000000; stroke-width: 1.5;" width="395" x="447" y="442.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="142" x="573.5" y="457.7344">INIT-REBOOT state</text><!--MD5=[71835f3367ed481a89f53801b2fdf617]
-cluster allocated--><rect fill="#FFFFFF" filter="url(#f1gmw8d9konsly)" height="263.36" style="stroke: #000000; stroke-width: 1.5;" width="158" x="7" y="1092.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="110" x="31" y="1107.5944">Lease allocated</text><!--MD5=[b13a83736ea85c18a1991bca4dbe863b]
-entity by_client_id--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="219" x="471.5" y="547.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="199" x="481.5" y="570.5944">Get existing lease by client id</text><!--MD5=[6b610307314e3774f091112845a2df2b]
-entity by_hw_addr--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="288" x="471" y="660.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="268" x="481" y="683.5944">Get existing lease by hardware address</text><!--MD5=[ef5397f1455a008291e257fb65cb453b]
-entity authoritative--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="548" y="757.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="558" y="780.5944">Get authoritative</text><!--MD5=[a54398e3d2c0f7657eea7ade058e1e7f]
-entity ddns--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="31" y="1198.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="90" x="41" y="1221.9544">update DDNS</text><!--MD5=[8edf83f1bb568d804760d31cec2ffb3b]
-entity ack--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="42.5" y="1295.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="52.5" y="1318.9544">Send ACK</text><!--MD5=[7f6071cca9390999bbf4a53289faea1c]
-entity subnet--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1205" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1215" y="51.7344">Check Subnet</text><path d="M1080,33.6992 L1080,59.0098 A0,0 0 0 0 1080,59.0098 L1170,59.0098 A0,0 0 0 0 1170,59.0098 L1170,51.6992 L1205,46.1992 L1170,43.6992 L1170,43.6992 L1160,33.6992 L1080,33.6992 A0,0 0 0 0 1080,33.6992 " fill="#FBFB77" filter="url(#f1gmw8d9konsly)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1160,33.6992 L1160,43.6992 L1170,43.6992 L1160,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="1086" y="51.2676">entry point</text><!--MD5=[d9ce3005481b6be8203f0e568049ebfd]
-entity server_id--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="1033" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="86" x="1043" y="148.7344">Get server id</text><!--MD5=[ee598753b08e093ad1dc6a89dd6a274b]
-entity hint--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="74" x="790" y="222.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="54" x="800" y="245.7344">Get hint</text><!--MD5=[fdc0ebc2726a1e25611a217b1a9cdddd]
-entity ident--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="540" y="335.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="238" x="550" y="358.7344">Get hardware address and client id</text><!--MD5=[9b403e692b0a4a2d394ce21b0c8a8b18]
-entity hostname--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="276" y="888.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="286" y="911.5944">Process hostname</text><!--MD5=[c7571992746652353b375880ae850124]
-entity allocate--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="204" y="985.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="214" y="1008.5944">Request lease</text><!--MD5=[18d4eff7c560e0870d2f30d7f8649cf3]
-entity failed--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="189" y="1101.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="199" y="1124.9544">No lease allocated</text><path d="M368,1106.9192 L368,1115.4192 L333.27,1119.4192 L368,1123.4192 L368,1132.2298 A0,0 0 0 0 368,1132.2298 L450,1132.2298 A0,0 0 0 0 450,1132.2298 L450,1116.9192 L440,1106.9192 L368,1106.9192 A0,0 0 0 0 368,1106.9192 " fill="#FBFB77" filter="url(#f1gmw8d9konsly)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M440,1106.9192 L440,1116.9192 L450,1116.9192 L440,1106.9192 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="374" y="1124.4876">exit point</text><!--MD5=[6dac4c34c80be6dabf811d62e9db4883]
-entity nak--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="728.5" y="1198.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="738.5" y="1221.9544">Send NAK</text><path d="M851,1203.9192 L851,1212.4192 L815.59,1216.4192 L851,1220.4192 L851,1229.2298 A0,0 0 0 0 851,1229.2298 L933,1229.2298 A0,0 0 0 0 933,1229.2298 L933,1213.9192 L923,1203.9192 L851,1203.9192 A0,0 0 0 0 851,1203.9192 " fill="#FBFB77" filter="url(#f1gmw8d9konsly)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M923,1203.9192 L923,1213.9192 L933,1213.9192 L923,1203.9192 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="857" y="1221.4876">exit point</text><!--MD5=[be0cad0b32609f2a377600c2fd818d08]
-entity no_response--><rect fill="#FEFECE" filter="url(#f1gmw8d9konsly)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="748" y="985.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="86" x="758" y="1008.5944">No response</text><path d="M889,990.5592 L889,999.0592 L854.16,1003.0592 L889,1007.0592 L889,1015.8698 A0,0 0 0 0 889,1015.8698 L971,1015.8698 A0,0 0 0 0 971,1015.8698 L971,1000.5592 L961,990.5592 L889,990.5592 A0,0 0 0 0 889,990.5592 " fill="#FBFB77" filter="url(#f1gmw8d9konsly)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M961,990.5592 L961,1000.5592 L971,1000.5592 L961,990.5592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="895" y="1008.1276">exit point</text><!--MD5=[359b6ca0b36d81a4e33a25f71e3b7c61]
-link subnet to server_id--><path d="M1230.13,64.3992 C1199.73,80.8092 1153.98,105.4992 1122.22,122.6492 " fill="none" id="subnet-&gt;server_id" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1117.64,125.1192,1127.4584,124.3457,1122.0355,122.736,1123.6452,117.313,1117.64,125.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7db9f4f0423b43d622896ef15525c632]
-link subnet to nak--><path d="M1273.1,64.2792 C1284,82.7192 1299,113.3492 1299,142.1992 C1299,142.1992 1299,142.1992 1299,1120.4192 C1299,1224.6692 934.24,1153.7892 834,1182.4192 C823.22,1185.4992 812.19,1190.6192 802.48,1195.9192 " fill="none" id="subnet-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="798.11,1198.3592,807.9178,1197.4606,802.4747,1195.9201,804.0152,1190.4771,798.11,1198.3592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="63" x="1300" y="626.6276">no subnet</text><!--MD5=[a38dfb09b1bcb8b95a969df0005f111d]
-link server_id to hint--><path d="M1039.4,161.2892 C990.82,179.1092 915.39,206.7792 868.72,223.8992 " fill="none" id="server_id-&gt;hint" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="864.01,225.6192,873.8375,226.2668,868.7027,223.8933,871.0761,218.7585,864.01,225.6192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[34fbc802059013c2537c0989625530bb]
-link hint to ident--><path d="M789.9,249.7492 C765.22,256.8692 733.18,269.0092 710,288.1992 C696.21,299.6192 685.52,316.9092 678.52,330.6392 " fill="none" id="hint-&gt;ident" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="676.29,335.1392,683.8605,328.8395,678.5032,330.6557,676.6869,325.2984,676.29,335.1392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="186" x="711" y="301.7676">use requested address option</text><!--MD5=[34fbc802059013c2537c0989625530bb]
-link hint to ident--><path d="M864.08,255.1692 C890.28,267.1392 918.1,285.5292 902,305.1992 C888.38,321.8392 847.22,332.7292 803.21,339.7792 " fill="none" id="hint-&gt;ident-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="798.11,340.5792,807.6192,343.1436,803.0502,339.8082,806.3855,335.2392,798.11,340.5792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="114" x="907" y="301.7676">use client address</text><!--MD5=[34fbc802059013c2537c0989625530bb]
-link hint to ident--><path d="M789.99,245.1092 C740.65,251.1692 657.38,264.6692 639,288.1992 C628.94,301.0892 637.47,317.8892 647.97,331.0492 " fill="none" id="hint-&gt;ident-2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="651.28,335.0092,648.5947,325.5335,648.0805,331.1669,642.447,330.6527,651.28,335.0092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="640" y="301.7676">no hint</text><!--MD5=[65f067d78ef63afdf91771d9a656ad03]
-link ident to init_reboot--><path d="M669,371.5692 C669,387.3142 669,411.0567 669,431.1092 C669,433.6158 669,436.0647 669,438.4331 C669,439.6173 669,440.7814 669,441.9225 " fill="none" id="ident-&gt;init_reboot" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="669,441.9225,673,432.9225,669,436.9225,665,432.9225,669,441.9225" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="670" y="414.7676">requested address and no server id</text><!--MD5=[14830c65b2a034d88d53d1ea466689d7]
-link ident to hostname--><path d="M563,371.2692 C469.5,389.4192 348,421.9692 348,468.5592 C348,468.5592 348,468.5592 348,776.0592 C348,813.4892 348,857.0192 348,882.7392 " fill="none" id="ident-&gt;hostname" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="348,887.9492,352,878.9492,348,882.9492,344,878.9492,348,887.9492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f67bf50fbab8c942c3b4d7a43dc78f8a]
-link init_reboot to by_client_id--><path d="M668.94,470.1292 C667.1,472.0892 626.08,515.9092 600.72,542.9992 " fill="none" id="init_reboot-&gt;by_client_id" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="597.1,546.8692,606.1731,543.038,600.5192,543.2211,600.3361,537.5672,597.1,546.8692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="641" y="513.6276">has a client id</text><!--MD5=[e73d6babdacfd6f192eca91886274ed0]
-link init_reboot to by_hw_addr--><path d="M669.15,470.0692 C672.13,470.2092 720.24,472.9692 738,500.0592 C742.14,506.3792 739.6,509.6792 738,517.0592 C725.15,576.3792 673.37,628.6792 641.23,656.2992 " fill="none" id="init_reboot-&gt;by_hw_addr" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="637.03,659.8692,646.4838,657.1077,640.8464,656.6389,641.3152,651.0015,637.03,659.8692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="735" y="570.1276">no client id</text><!--MD5=[81a28d33e53a361ab0f9b1ac80511604]
-link by_client_id to by_hw_addr--><path d="M562.09,583.1492 C550.23,596.0192 538.64,614.1292 547,630.0592 C552.77,641.0692 562.43,650.0092 572.67,657.0192 " fill="none" id="by_client_id-&gt;by_hw_addr" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="577.09,659.9092,571.7349,651.6435,572.9014,657.1788,567.3661,658.3453,577.09,659.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="548" y="626.6276">not fount</text><!--MD5=[996213fdf844dcf095df5ccc9b89cdbf]
-link by_hw_addr to authoritative--><path d="M615,696.4792 C615,712.0192 615,734.8392 615,751.7192 " fill="none" id="by_hw_addr-&gt;authoritative" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="615,756.7492,619,747.7492,615,751.7492,611,747.7492,615,756.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cc7ba6fbd1fdcf375abf61565bb8cbda]
-link authoritative to no_response--><path d="M629.29,793.4192 C662.91,834.2692 746.95,936.3892 783.53,980.8292 " fill="none" id="authoritative-&gt;no_response" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="786.92,984.9492,784.2938,975.457,783.7445,981.0871,778.1143,980.5378,786.92,984.9492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="233" x="736" y="911.1276">not authoritative and no owned lease</text><!--MD5=[f287a43fa002547e84e3e2517c1b3af8]
-link authoritative to nak--><path d="M682.03,782.3592 C802,795.4992 1041,830.9692 1041,905.0592 C1041,905.0592 1041,905.0592 1041,1120.4192 C1041,1216.4592 922.82,1145.8992 834,1182.4192 C824.67,1186.2492 814.91,1191.0492 805.95,1195.7992 " fill="none" id="authoritative-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="801.07,1198.4192,810.8922,1197.6951,805.4774,1196.0581,807.1144,1190.6433,801.07,1198.4192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="203" x="1042" y="1008.1276">owned lease with hint mismatch</text><!--MD5=[f287a43fa002547e84e3e2517c1b3af8]
-link authoritative to nak--><path d="M585.28,793.0692 C552.1,814.5292 503,854.7892 503,905.0592 C503,905.0592 503,905.0592 503,1120.4192 C503,1166.6392 646,1195.9592 723.48,1208.4592 " fill="none" id="authoritative-&gt;nak-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="728.48,1209.2592,720.2196,1203.8959,723.542,1208.4743,718.9636,1211.7967,728.48,1209.2592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="504" y="1008.1276">authoritative and no owned lease</text><!--MD5=[b7c0267f2f455dcd84cdca29c5404c83]
-link authoritative to hostname--><path d="M547.81,786.6292 C503.91,795.8492 446.82,812.3992 403,841.0592 C386.11,852.1092 371.47,869.7892 361.55,883.7792 " fill="none" id="authoritative-&gt;hostname" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="358.63,887.9892,367.049,882.8785,361.482,883.8824,360.4781,878.3153,358.63,887.9892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="72" x="404" y="854.6276">other cases</text><!--MD5=[986a8f86ec6d7417d34c7fd351c484dc]
-link hostname to allocate--><path d="M332.04,924.4792 C317.45,940.4192 295.83,964.0292 280.28,981.0092 " fill="none" id="hostname-&gt;allocate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="276.86,984.7492,285.886,980.8082,280.2347,981.0599,279.9831,975.4086,276.86,984.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c34dad786bb94ff8f8cc439f61a5c35f]
-link allocate to allocated--><path d="M212.16,1021.1492 C194.16,1028.7392 174.22,1038.7792 158,1051.0592 C150.43,1056.7942 143.1831,1063.7023 136.5469,1070.8789 C133.2288,1074.4672 130.0633,1078.1226 127.0864,1081.732 C125.598,1083.5367 124.1567,1085.3299 122.767,1087.0975 C122.0722,1087.9813 121.3903,1088.8587 120.7219,1089.7279 C120.3876,1090.1625 120.0568,1090.595 119.7294,1091.0253 C119.5657,1091.2405 119.4028,1091.4551 119.2408,1091.6691 C119.1598,1091.7761 119.0791,1091.8829 118.9985,1091.9896 " fill="none" id="allocate-&gt;allocated" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="118.9985,1091.9896,127.6138,1087.2171,122.0113,1087.9992,121.2292,1082.3967,118.9985,1091.9896" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="159" y="1064.6276">lease allocated</text><!--MD5=[539a3348c1089415ce435c139bd22f41]
-link allocated to ddns--><path d="M100.99,1120.4892 C100.68,1122.4392 93.91,1165.3192 89.58,1192.7692 " fill="none" id="allocated-&gt;ddns" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="88.74,1198.0392,94.1033,1189.7788,89.5249,1193.1012,86.2025,1188.5229,88.74,1198.0392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d51d97a60fea492264b409c209ca1ef]
-link ddns to ack--><path d="M86,1234.8392 C86,1250.3792 86,1273.1992 86,1290.0792 " fill="none" id="ddns-&gt;ack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="86,1295.1092,90,1286.1092,86,1290.1092,82,1286.1092,86,1295.1092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[dd12c52c80378d18331ab530a0ed76ab]
-link allocate to failed--><path d="M261,1021.4292 C261,1041.4392 261,1074.3792 261,1096.2292 " fill="none" id="allocate-&gt;failed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="261,1101.2592,265,1092.2592,261,1096.2592,257,1092.2592,261,1101.2592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="113" x="262" y="1064.6276">no lease allocated</text><!--MD5=[e8032f725f00abe81d7341b4b6fe8340]
-link failed to nak--><path d="M332.77,1137.5192 C374.7,1147.2092 428.7,1159.2092 477,1168.4192 C563.29,1184.8692 664.54,1200.1292 723.18,1208.5692 " fill="none" id="failed-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="728.37,1209.3092,720.0325,1204.0665,723.4211,1208.5961,718.8915,1211.9848,728.37,1209.3092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[eeaac936123f608bb48186e17072a1be]
-@startuml
-
-title DHCPv4 Assign Lease (Kea 1.7.11)
-
-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 - -> by_hw_addr : not fount
-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
-
-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> \ No newline at end of file
diff --git a/doc/sphinx/Makefile.am b/doc/sphinx/Makefile.am
index 2ebe069e81..ed524b4404 100644
--- a/doc/sphinx/Makefile.am
+++ b/doc/sphinx/Makefile.am
@@ -21,6 +21,7 @@ EXTRA_DIST += static/static_sources.mk
rst_arm_sources =
rst_arm_sources += index.rst
rst_arm_sources += manpages.rst
+rst_arm_sources += umls.rst
include arm/rst_arm_sources.mk
EXTRA_DIST += arm/rst_arm_sources.mk
@@ -90,6 +91,53 @@ $(srcdir)/arm/platforms.rst:
rm -f $(srcdir)/arm/platforms.rst
cp $(srcdir)/../../platforms.rst $(srcdir)/arm/platforms.rst
+# UML files
+
+if HAVE_PLANTUML
+.uml.png:
+ @PLANTUML@ $<
+
+.uml.svg:
+ @PLANTUML@ -svg $<
+endif
+
+EXTRA_DIST += uml/appendRequestedOptions.png
+EXTRA_DIST += uml/appendRequestedOptions.svg
+EXTRA_DIST += uml/appendRequestedOptions.uml
+EXTRA_DIST += uml/appendRequestedVendorOptions.png
+EXTRA_DIST += uml/appendRequestedVendorOptions.svg
+EXTRA_DIST += uml/appendRequestedVendorOptions.uml
+EXTRA_DIST += uml/assign-lease4.png
+EXTRA_DIST += uml/assign-lease4.svg
+EXTRA_DIST += uml/assign-lease4.uml
+EXTRA_DIST += uml/buildCfgOptionList.png
+EXTRA_DIST += uml/buildCfgOptionList.svg
+EXTRA_DIST += uml/buildCfgOptionList.uml
+EXTRA_DIST += uml/currentHost4.png
+EXTRA_DIST += uml/currentHost4.svg
+EXTRA_DIST += uml/currentHost4.uml
+EXTRA_DIST += uml/lease-states.png
+EXTRA_DIST += uml/lease-states.svg
+EXTRA_DIST += uml/lease-states.uml
+EXTRA_DIST += uml/main-loop.png
+EXTRA_DIST += uml/main-loop.svg
+EXTRA_DIST += uml/main-loop.uml
+EXTRA_DIST += uml/packet4.png
+EXTRA_DIST += uml/packet4.svg
+EXTRA_DIST += uml/packet4.uml
+EXTRA_DIST += uml/request4-lease.png
+EXTRA_DIST += uml/request4-lease.svg
+EXTRA_DIST += uml/request4-lease.uml
+EXTRA_DIST += uml/request4.png
+EXTRA_DIST += uml/request4.svg
+EXTRA_DIST += uml/request4.uml
+EXTRA_DIST += uml/requestLease4.png
+EXTRA_DIST += uml/requestLease4.svg
+EXTRA_DIST += uml/requestLease4.uml
+EXTRA_DIST += uml/select4.png
+EXTRA_DIST += uml/select4.svg
+EXTRA_DIST += uml/select4.uml
+
PDFLATEX_AND_OPTS=$(PDFLATEX) -interaction nonstopmode
pdf: $(main_sources) api-files.txt mes-files.txt $(srcdir)/arm/platforms.rst
diff --git a/doc/sphinx/index.rst b/doc/sphinx/index.rst
index 79a6c97e56..8ea10dd255 100644
--- a/doc/sphinx/index.rst
+++ b/doc/sphinx/index.rst
@@ -50,7 +50,7 @@ Kea, can be found in ISC's `Knowledgebase <https://kb.isc.org/docs/kea-administr
manpages
kea-messages
arm/acknowledgments
-
+ umls
diff --git a/doc/devel/images/appendRequestedOptions.png b/doc/sphinx/uml/appendRequestedOptions.png
index 943dc6f9bc..943dc6f9bc 100644
--- a/doc/devel/images/appendRequestedOptions.png
+++ b/doc/sphinx/uml/appendRequestedOptions.png
Binary files differ
diff --git a/doc/devel/images/appendRequestedOptions.svg b/doc/sphinx/uml/appendRequestedOptions.svg
index 5b3079e3ee..5b3079e3ee 100644
--- a/doc/devel/images/appendRequestedOptions.svg
+++ b/doc/sphinx/uml/appendRequestedOptions.svg
diff --git a/doc/devel/images/appendRequestedOptions.uml b/doc/sphinx/uml/appendRequestedOptions.uml
index 50ad7e8147..50ad7e8147 100644
--- a/doc/devel/images/appendRequestedOptions.uml
+++ b/doc/sphinx/uml/appendRequestedOptions.uml
diff --git a/doc/devel/images/appendRequestedVendorOptions.png b/doc/sphinx/uml/appendRequestedVendorOptions.png
index fe7266d07d..fe7266d07d 100644
--- a/doc/devel/images/appendRequestedVendorOptions.png
+++ b/doc/sphinx/uml/appendRequestedVendorOptions.png
Binary files differ
diff --git a/doc/devel/images/appendRequestedVendorOptions.svg b/doc/sphinx/uml/appendRequestedVendorOptions.svg
index 142f7958d4..142f7958d4 100644
--- a/doc/devel/images/appendRequestedVendorOptions.svg
+++ b/doc/sphinx/uml/appendRequestedVendorOptions.svg
diff --git a/doc/devel/images/appendRequestedVendorOptions.uml b/doc/sphinx/uml/appendRequestedVendorOptions.uml
index 15f31b903b..15f31b903b 100644
--- a/doc/devel/images/appendRequestedVendorOptions.uml
+++ b/doc/sphinx/uml/appendRequestedVendorOptions.uml
diff --git a/doc/sphinx/uml/assign-lease4.png b/doc/sphinx/uml/assign-lease4.png
new file mode 100644
index 0000000000..e8e6e62ad4
--- /dev/null
+++ b/doc/sphinx/uml/assign-lease4.png
Binary files differ
diff --git a/doc/sphinx/uml/assign-lease4.svg b/doc/sphinx/uml/assign-lease4.svg
new file mode 100644
index 0000000000..1a7d529f98
--- /dev/null
+++ b/doc/sphinx/uml/assign-lease4.svg
@@ -0,0 +1,113 @@
+<?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="1372px" preserveAspectRatio="none" style="width:1375px;height:1372px;" version="1.1" viewBox="0 0 1375 1372" width="1375px" zoomAndPan="magnify"><defs><filter height="300%" id="f1p3l6kosi5qna" 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="298" x="529.5" y="17.4023">DHCPv4 Assign Lease (Kea 1.7.11)</text><!--MD5=[96a966798826de6e056b38ba6b9482ca]
+cluster init_reboot--><rect fill="#FFFFFF" filter="url(#f1p3l6kosi5qna)" height="374.86" style="stroke: #000000; stroke-width: 1.5;" width="445" x="493" y="442.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="142" x="644.5" y="457.7344">INIT-REBOOT state</text><!--MD5=[71835f3367ed481a89f53801b2fdf617]
+cluster allocated--><rect fill="#FFFFFF" filter="url(#f1p3l6kosi5qna)" height="263.36" style="stroke: #000000; stroke-width: 1.5;" width="158" x="7" y="1092.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="110" x="31" y="1107.5944">Lease allocated</text><!--MD5=[b13a83736ea85c18a1991bca4dbe863b]
+entity by_client_id--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="219" x="517.5" y="547.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="199" x="527.5" y="570.5944">Get existing lease by client id</text><!--MD5=[6b610307314e3774f091112845a2df2b]
+entity by_hw_addr--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="288" x="626" y="660.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="268" x="636" y="683.5944">Get existing lease by hardware address</text><!--MD5=[ef5397f1455a008291e257fb65cb453b]
+entity authoritative--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="528" y="757.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="538" y="780.5944">Get authoritative</text><!--MD5=[a54398e3d2c0f7657eea7ade058e1e7f]
+entity ddns--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="31" y="1198.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="90" x="41" y="1221.9544">update DDNS</text><!--MD5=[8edf83f1bb568d804760d31cec2ffb3b]
+entity ack--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="42.5" y="1295.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="52.5" y="1318.9544">Send ACK</text><!--MD5=[7f6071cca9390999bbf4a53289faea1c]
+entity subnet--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1205" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1215" y="51.7344">Check Subnet</text><path d="M1080,33.6992 L1080,59.0098 A0,0 0 0 0 1080,59.0098 L1170,59.0098 A0,0 0 0 0 1170,59.0098 L1170,51.6992 L1205,46.1992 L1170,43.6992 L1170,43.6992 L1160,33.6992 L1080,33.6992 A0,0 0 0 0 1080,33.6992 " fill="#FBFB77" filter="url(#f1p3l6kosi5qna)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1160,33.6992 L1160,43.6992 L1170,43.6992 L1160,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="1086" y="51.2676">entry point</text><!--MD5=[d9ce3005481b6be8203f0e568049ebfd]
+entity server_id--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="1046" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="86" x="1056" y="148.7344">Get server id</text><!--MD5=[ee598753b08e093ad1dc6a89dd6a274b]
+entity hint--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="74" x="849" y="222.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="54" x="859" y="245.7344">Get hint</text><!--MD5=[fdc0ebc2726a1e25611a217b1a9cdddd]
+entity ident--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="565" y="335.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="238" x="575" y="358.7344">Get hardware address and client id</text><!--MD5=[9b403e692b0a4a2d394ce21b0c8a8b18]
+entity hostname--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="276" y="888.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="286" y="911.5944">Process hostname</text><!--MD5=[c7571992746652353b375880ae850124]
+entity allocate--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="204" y="985.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="214" y="1008.5944">Request lease</text><!--MD5=[18d4eff7c560e0870d2f30d7f8649cf3]
+entity failed--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="189" y="1101.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="199" y="1124.9544">No lease allocated</text><path d="M368,1106.9192 L368,1115.4192 L333.27,1119.4192 L368,1123.4192 L368,1132.2298 A0,0 0 0 0 368,1132.2298 L450,1132.2298 A0,0 0 0 0 450,1132.2298 L450,1116.9192 L440,1106.9192 L368,1106.9192 A0,0 0 0 0 368,1106.9192 " fill="#FBFB77" filter="url(#f1p3l6kosi5qna)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M440,1106.9192 L440,1116.9192 L450,1116.9192 L440,1106.9192 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="374" y="1124.4876">exit point</text><!--MD5=[6dac4c34c80be6dabf811d62e9db4883]
+entity nak--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="599.5" y="1198.4192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="609.5" y="1221.9544">Send NAK</text><path d="M722,1203.9192 L722,1212.4192 L686.59,1216.4192 L722,1220.4192 L722,1229.2298 A0,0 0 0 0 722,1229.2298 L804,1229.2298 A0,0 0 0 0 804,1229.2298 L804,1213.9192 L794,1203.9192 L722,1203.9192 A0,0 0 0 0 722,1203.9192 " fill="#FBFB77" filter="url(#f1p3l6kosi5qna)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M794,1203.9192 L794,1213.9192 L804,1213.9192 L794,1203.9192 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="728" y="1221.4876">exit point</text><!--MD5=[be0cad0b32609f2a377600c2fd818d08]
+entity no_response--><rect fill="#FEFECE" filter="url(#f1p3l6kosi5qna)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="1023" y="985.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="86" x="1033" y="1008.5944">No response</text><path d="M1164,990.5592 L1164,999.0592 L1129.16,1003.0592 L1164,1007.0592 L1164,1015.8698 A0,0 0 0 0 1164,1015.8698 L1246,1015.8698 A0,0 0 0 0 1246,1015.8698 L1246,1000.5592 L1236,990.5592 L1164,990.5592 A0,0 0 0 0 1164,990.5592 " fill="#FBFB77" filter="url(#f1p3l6kosi5qna)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1236,990.5592 L1236,1000.5592 L1246,1000.5592 L1236,990.5592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="61" x="1170" y="1008.1276">exit point</text><!--MD5=[359b6ca0b36d81a4e33a25f71e3b7c61]
+link subnet to server_id--><path d="M1232.48,64.3992 C1204.44,80.7492 1162.31,105.2992 1132.9,122.4392 " fill="none" id="subnet-&gt;server_id" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1128.3,125.1192,1138.0915,124.0576,1132.6235,122.6079,1134.0733,117.1399,1128.3,125.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7db9f4f0423b43d622896ef15525c632]
+link subnet to nak--><path d="M1273.1,64.2792 C1284,82.7192 1299,113.3492 1299,142.1992 C1299,142.1992 1299,142.1992 1299,1120.4192 C1299,1186.7792 768.46,1163.0292 705,1182.4192 C694.58,1185.5992 683.88,1190.5892 674.36,1195.7292 " fill="none" id="subnet-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="669.79,1198.2492,679.6021,1197.3996,674.1668,1195.8319,675.7345,1190.3966,669.79,1198.2492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="63" x="1300" y="626.6276">no subnet</text><!--MD5=[a38dfb09b1bcb8b95a969df0005f111d]
+link server_id to hint--><path d="M1060.43,161.3992 C1022.99,178.0992 966.32,203.3692 927.82,220.5492 " fill="none" id="server_id-&gt;hint" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="923.21,222.5992,933.0589,222.5935,927.7779,220.5659,929.8055,215.2849,923.21,222.5992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[34fbc802059013c2537c0989625530bb]
+link hint to ident--><path d="M848.75,241.0892 C774.38,241.7392 611.66,247.8692 577,288.1992 C559.81,308.1992 581.08,323.0792 609.99,333.4192 " fill="none" id="hint-&gt;ident" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="615.08,335.1692,607.8731,328.4565,610.3525,333.541,605.268,336.0204,615.08,335.1692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="186" x="578" y="301.7676">use requested address option</text><!--MD5=[34fbc802059013c2537c0989625530bb]
+link hint to ident--><path d="M856.42,258.2992 C821.75,278.3392 764.41,311.4992 727.95,332.5692 " fill="none" id="hint-&gt;ident-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="723.61,335.0792,733.4041,334.0418,727.9397,332.5785,729.403,327.1142,723.61,335.0792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="114" x="802" y="301.7676">use client address</text><!--MD5=[34fbc802059013c2537c0989625530bb]
+link hint to ident--><path d="M908.07,258.3492 C922.64,271.7392 937.02,290.4892 925,305.1992 C911.63,321.5592 871.46,332.3692 828.28,339.4492 " fill="none" id="hint-&gt;ident-2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="823.28,340.2492,832.7964,342.7867,828.218,339.4643,831.5404,334.8859,823.28,340.2492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="930" y="301.7676">no hint</text><!--MD5=[65f067d78ef63afdf91771d9a656ad03]
+link ident to init_reboot--><path d="M694,371.5692 C694,387.3142 694,411.0567 694,431.1092 C694,433.6158 694,436.0647 694,438.4331 C694,439.6173 694,440.7814 694,441.9225 " fill="none" id="ident-&gt;init_reboot" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="694,441.9225,698,432.9225,694,436.9225,690,432.9225,694,441.9225" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="695" y="414.7676">requested address and no server id</text><!--MD5=[14830c65b2a034d88d53d1ea466689d7]
+link ident to hostname--><path d="M571.53,371.2492 C471.99,388.6592 348,420.0792 348,468.5592 C348,468.5592 348,468.5592 348,776.0592 C348,813.4892 348,857.0192 348,882.7392 " fill="none" id="ident-&gt;hostname" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="348,887.9492,352,878.9492,348,882.9492,344,878.9492,348,887.9492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f67bf50fbab8c942c3b4d7a43dc78f8a]
+link init_reboot to by_client_id--><path d="M693.95,470.1292 C692.56,472.0792 661.57,515.5492 642.25,542.6592 " fill="none" id="init_reboot-&gt;by_client_id" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="639.25,546.8692,647.7294,541.8593,642.1508,542.7967,641.2134,537.218,639.25,546.8692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="673" y="513.6276">has a client id</text><!--MD5=[e73d6babdacfd6f192eca91886274ed0]
+link init_reboot to by_hw_addr--><path d="M694.16,470.0592 C697.44,470.0892 750.21,470.9692 770,500.0592 C802.04,547.1592 787.68,618.8592 777.31,654.8392 " fill="none" id="init_reboot-&gt;by_hw_addr" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="775.82,659.8792,782.2006,652.3767,777.2331,655.0831,774.5268,650.1156,775.82,659.8792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="790" y="570.1276">no client id</text><!--MD5=[0bee13a6f2540e80d374adb5c9fde696]
+link by_client_id to authoritative--><path d="M612.69,583.0592 C598.68,600.9192 578.27,630.4692 570,660.0592 C561.14,691.7592 573.59,729.1292 583.87,752.2092 " fill="none" id="by_client_id-&gt;authoritative" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="586.03,756.9092,585.9217,747.061,583.9492,752.3628,578.6474,750.3903,586.03,756.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="37" x="571" y="683.1276">found</text><!--MD5=[81a28d33e53a361ab0f9b1ac80511604]
+link by_client_id to by_hw_addr--><path d="M622.24,583.2592 C619.47,597.2192 618.2,616.7092 628,630.0592 C636.84,642.0992 648.87,651.0992 662.21,657.8192 " fill="none" id="by_client_id-&gt;by_hw_addr" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="666.79,660.0092,660.4134,652.5033,662.2842,657.8419,656.9456,659.7126,666.79,660.0092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="62" x="629" y="626.6276">not found</text><!--MD5=[996213fdf844dcf095df5ccc9b89cdbf]
+link by_hw_addr to authoritative--><path d="M738.31,696.2592 C708.08,712.6692 662.6,737.3592 631.01,754.5092 " fill="none" id="by_hw_addr-&gt;authoritative" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="626.46,756.9792,636.2784,756.2057,630.8555,754.596,632.4652,749.173,626.46,756.9792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cc7ba6fbd1fdcf375abf61565bb8cbda]
+link authoritative to no_response--><path d="M662.09,791.8592 C705.06,803.0892 761.47,819.8992 809,841.0592 C901.17,882.0792 1000.65,948.7092 1047.95,981.9092 " fill="none" id="authoritative-&gt;no_response" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1052.08,984.8292,1047.0166,976.3816,1047.9892,981.9542,1042.4166,982.9269,1052.08,984.8292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="233" x="960" y="911.1276">not authoritative and no owned lease</text><!--MD5=[f287a43fa002547e84e3e2517c1b3af8]
+link authoritative to nak--><path d="M662.08,792.5792 C716.07,810.3592 783,844.5992 783,905.0592 C783,905.0592 783,905.0592 783,1120.4192 C783,1133.0992 719.28,1171.9092 677.82,1195.8192 " fill="none" id="authoritative-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="673.38,1198.3692,683.178,1197.37,677.7195,1195.8855,679.204,1190.4269,673.38,1198.3692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="203" x="784" y="1008.1276">owned lease with hint mismatch</text><!--MD5=[f287a43fa002547e84e3e2517c1b3af8]
+link authoritative to nak--><path d="M571.78,793.3292 C544.53,815.7792 503,857.7492 503,905.0592 C503,905.0592 503,905.0592 503,1120.4192 C503,1165.8592 554.13,1191.0792 594.59,1203.9092 " fill="none" id="authoritative-&gt;nak-1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="599.47,1205.4192,592.043,1198.9509,594.6908,1203.9498,589.6919,1206.5976,599.47,1205.4192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="504" y="1008.1276">authoritative and no owned lease</text><!--MD5=[b7c0267f2f455dcd84cdca29c5404c83]
+link authoritative to hostname--><path d="M527.91,789.4292 C489.09,799.3592 440.63,815.6592 403,841.0592 C386.38,852.2692 371.81,869.7892 361.85,883.6592 " fill="none" id="authoritative-&gt;hostname" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="358.91,887.8392,367.3694,882.7956,361.7945,883.7552,360.8349,878.1803,358.91,887.8392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="72" x="404" y="854.6276">other cases</text><!--MD5=[986a8f86ec6d7417d34c7fd351c484dc]
+link hostname to allocate--><path d="M332.04,924.4792 C317.45,940.4192 295.83,964.0292 280.28,981.0092 " fill="none" id="hostname-&gt;allocate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="276.86,984.7492,285.886,980.8082,280.2347,981.0599,279.9831,975.4086,276.86,984.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c34dad786bb94ff8f8cc439f61a5c35f]
+link allocate to allocated--><path d="M212.16,1021.1492 C194.16,1028.7392 174.22,1038.7792 158,1051.0592 C150.43,1056.7942 143.1831,1063.7023 136.5469,1070.8789 C133.2288,1074.4672 130.0633,1078.1226 127.0864,1081.732 C125.598,1083.5367 124.1567,1085.3299 122.767,1087.0975 C122.0722,1087.9813 121.3903,1088.8587 120.7219,1089.7279 C120.3876,1090.1625 120.0568,1090.595 119.7294,1091.0253 C119.5657,1091.2405 119.4028,1091.4551 119.2408,1091.6691 C119.1598,1091.7761 119.0791,1091.8829 118.9985,1091.9896 " fill="none" id="allocate-&gt;allocated" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="118.9985,1091.9896,127.6138,1087.2171,122.0113,1087.9992,121.2292,1082.3967,118.9985,1091.9896" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="159" y="1064.6276">lease allocated</text><!--MD5=[539a3348c1089415ce435c139bd22f41]
+link allocated to ddns--><path d="M100.99,1120.4892 C100.68,1122.4392 93.91,1165.3192 89.58,1192.7692 " fill="none" id="allocated-&gt;ddns" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="88.74,1198.0392,94.1033,1189.7788,89.5249,1193.1012,86.2025,1188.5229,88.74,1198.0392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d51d97a60fea492264b409c209ca1ef]
+link ddns to ack--><path d="M86,1234.8392 C86,1250.3792 86,1273.1992 86,1290.0792 " fill="none" id="ddns-&gt;ack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="86,1295.1092,90,1286.1092,86,1290.1092,82,1286.1092,86,1295.1092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[dd12c52c80378d18331ab530a0ed76ab]
+link allocate to failed--><path d="M261,1021.4292 C261,1041.4392 261,1074.3792 261,1096.2292 " fill="none" id="allocate-&gt;failed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="261,1101.2592,265,1092.2592,261,1096.2592,257,1092.2592,261,1101.2592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="113" x="262" y="1064.6276">no lease allocated</text><!--MD5=[e8032f725f00abe81d7341b4b6fe8340]
+link failed to nak--><path d="M329.74,1137.5092 C406.04,1156.4892 527.27,1186.6392 594.35,1203.3192 " fill="none" id="failed-&gt;nak" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="599.48,1204.5992,591.7189,1198.5358,594.6293,1203.3865,589.7786,1206.297,599.48,1204.5992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[07326153c0e0bad8363d01291957b705]
+@startuml
+
+title DHCPv4 Assign Lease (Kea 1.7.11)
+
+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
+
+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> \ No newline at end of file
diff --git a/doc/devel/images/assign-lease4.uml b/doc/sphinx/uml/assign-lease4.uml
index 8382d97a99..5b29b77f0d 100644
--- a/doc/devel/images/assign-lease4.uml
+++ b/doc/sphinx/uml/assign-lease4.uml
@@ -47,7 +47,8 @@ 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 --> by_hw_addr : not fount
+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
diff --git a/doc/devel/images/buildCfgOptionList.png b/doc/sphinx/uml/buildCfgOptionList.png
index ddf6f96e51..ddf6f96e51 100644
--- a/doc/devel/images/buildCfgOptionList.png
+++ b/doc/sphinx/uml/buildCfgOptionList.png
Binary files differ
diff --git a/doc/devel/images/buildCfgOptionList.svg b/doc/sphinx/uml/buildCfgOptionList.svg
index 9c75d30209..9c75d30209 100644
--- a/doc/devel/images/buildCfgOptionList.svg
+++ b/doc/sphinx/uml/buildCfgOptionList.svg
diff --git a/doc/devel/images/buildCfgOptionList.uml b/doc/sphinx/uml/buildCfgOptionList.uml
index 719770f17c..719770f17c 100644
--- a/doc/devel/images/buildCfgOptionList.uml
+++ b/doc/sphinx/uml/buildCfgOptionList.uml
diff --git a/doc/devel/images/currentHost4.png b/doc/sphinx/uml/currentHost4.png
index 577e61b3d8..577e61b3d8 100644
--- a/doc/devel/images/currentHost4.png
+++ b/doc/sphinx/uml/currentHost4.png
Binary files differ
diff --git a/doc/devel/images/currentHost4.svg b/doc/sphinx/uml/currentHost4.svg
index ec300489ec..ec300489ec 100644
--- a/doc/devel/images/currentHost4.svg
+++ b/doc/sphinx/uml/currentHost4.svg
diff --git a/doc/devel/images/currentHost4.uml b/doc/sphinx/uml/currentHost4.uml
index c61eb6cd32..c61eb6cd32 100644
--- a/doc/devel/images/currentHost4.uml
+++ b/doc/sphinx/uml/currentHost4.uml
diff --git a/doc/devel/images/lease-states.png b/doc/sphinx/uml/lease-states.png
index 192d93600a..192d93600a 100644
--- a/doc/devel/images/lease-states.png
+++ b/doc/sphinx/uml/lease-states.png
Binary files differ
diff --git a/doc/devel/images/lease-states.svg b/doc/sphinx/uml/lease-states.svg
index 3956f34106..3956f34106 100644
--- a/doc/devel/images/lease-states.svg
+++ b/doc/sphinx/uml/lease-states.svg
diff --git a/doc/devel/images/lease-states.uml b/doc/sphinx/uml/lease-states.uml
index 0382709688..0382709688 100644
--- a/doc/devel/images/lease-states.uml
+++ b/doc/sphinx/uml/lease-states.uml
diff --git a/doc/devel/images/main-loop.png b/doc/sphinx/uml/main-loop.png
index f4348dffa0..f4348dffa0 100644
--- a/doc/devel/images/main-loop.png
+++ b/doc/sphinx/uml/main-loop.png
Binary files differ
diff --git a/doc/devel/images/main-loop.svg b/doc/sphinx/uml/main-loop.svg
index bc9b8f8776..bc9b8f8776 100644
--- a/doc/devel/images/main-loop.svg
+++ b/doc/sphinx/uml/main-loop.svg
diff --git a/doc/devel/images/main-loop.uml b/doc/sphinx/uml/main-loop.uml
index 2511ca7d47..2511ca7d47 100644
--- a/doc/devel/images/main-loop.uml
+++ b/doc/sphinx/uml/main-loop.uml
diff --git a/doc/devel/images/packet4.png b/doc/sphinx/uml/packet4.png
index 85adb4d6ef..85adb4d6ef 100644
--- a/doc/devel/images/packet4.png
+++ b/doc/sphinx/uml/packet4.png
Binary files differ
diff --git a/doc/devel/images/packet4.svg b/doc/sphinx/uml/packet4.svg
index bba5ab7a77..bba5ab7a77 100644
--- a/doc/devel/images/packet4.svg
+++ b/doc/sphinx/uml/packet4.svg
diff --git a/doc/devel/images/packet4.uml b/doc/sphinx/uml/packet4.uml
index f74715156c..f74715156c 100644
--- a/doc/devel/images/packet4.uml
+++ b/doc/sphinx/uml/packet4.uml
diff --git a/doc/devel/images/request4-lease.png b/doc/sphinx/uml/request4-lease.png
index 02ab48f66f..02ab48f66f 100644
--- a/doc/devel/images/request4-lease.png
+++ b/doc/sphinx/uml/request4-lease.png
Binary files differ
diff --git a/doc/devel/images/request4-lease.svg b/doc/sphinx/uml/request4-lease.svg
index 1eb8587237..1eb8587237 100644
--- a/doc/devel/images/request4-lease.svg
+++ b/doc/sphinx/uml/request4-lease.svg
diff --git a/doc/devel/images/request4-lease.uml b/doc/sphinx/uml/request4-lease.uml
index 00d4844ce9..00d4844ce9 100644
--- a/doc/devel/images/request4-lease.uml
+++ b/doc/sphinx/uml/request4-lease.uml
diff --git a/doc/devel/images/request4.png b/doc/sphinx/uml/request4.png
index 86f1cf6161..86f1cf6161 100644
--- a/doc/devel/images/request4.png
+++ b/doc/sphinx/uml/request4.png
Binary files differ
diff --git a/doc/devel/images/request4.svg b/doc/sphinx/uml/request4.svg
index 86a5d8e9f8..86a5d8e9f8 100644
--- a/doc/devel/images/request4.svg
+++ b/doc/sphinx/uml/request4.svg
diff --git a/doc/devel/images/request4.uml b/doc/sphinx/uml/request4.uml
index 977dc59f2a..977dc59f2a 100644
--- a/doc/devel/images/request4.uml
+++ b/doc/sphinx/uml/request4.uml
diff --git a/doc/devel/images/requestLease4.png b/doc/sphinx/uml/requestLease4.png
index a27c8741dc..a27c8741dc 100644
--- a/doc/devel/images/requestLease4.png
+++ b/doc/sphinx/uml/requestLease4.png
Binary files differ
diff --git a/doc/devel/images/requestLease4.svg b/doc/sphinx/uml/requestLease4.svg
index 24eeb2bd0f..24eeb2bd0f 100644
--- a/doc/devel/images/requestLease4.svg
+++ b/doc/sphinx/uml/requestLease4.svg
diff --git a/doc/devel/images/requestLease4.uml b/doc/sphinx/uml/requestLease4.uml
index a079b572fb..a079b572fb 100644
--- a/doc/devel/images/requestLease4.uml
+++ b/doc/sphinx/uml/requestLease4.uml
diff --git a/doc/devel/images/select4.png b/doc/sphinx/uml/select4.png
index 08c12eb850..08c12eb850 100644
--- a/doc/devel/images/select4.png
+++ b/doc/sphinx/uml/select4.png
Binary files differ
diff --git a/doc/devel/images/select4.svg b/doc/sphinx/uml/select4.svg
index c5b5e25d12..c5b5e25d12 100644
--- a/doc/devel/images/select4.svg
+++ b/doc/sphinx/uml/select4.svg
diff --git a/doc/devel/images/select4.uml b/doc/sphinx/uml/select4.uml
index 79488969b7..79488969b7 100644
--- a/doc/devel/images/select4.uml
+++ b/doc/sphinx/uml/select4.uml
diff --git a/doc/sphinx/umls.rst b/doc/sphinx/umls.rst
new file mode 100644
index 0000000000..af1c6787dd
--- /dev/null
+++ b/doc/sphinx/umls.rst
@@ -0,0 +1,109 @@
+..
+ Copyright (C) 2020 Internet Systems Consortium, Inc. ("ISC")
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ See the COPYRIGHT file distributed with this work for additional
+ information regarding copyright ownership.
+
+.. _umls:
+
+UML files
+=========
+
+These UML files describe the DHCPv4 server implementation. They are
+provided in UML (source), PNG and SVG formats.
+
+The main loop is common to DHCPv4 and DHPCv6 servers.
+
+.. figure:: uml/main-loop.*
+
+ DHCP server main loop
+
+Next is the DHCPv4 packet processing.
+
+.. figure:: uml/packet4.*
+
+ DHCPv4 packet processing
+
+With more details for DHCPREQUEST processing.
+
+.. figure:: uml/request4.*
+
+ DHCPREQUEST processing
+
+Packet processing begins by the subnet selection i.e. the localization
+of the sender of the query. Note that when the selected subnet is a
+member of a shared network in fact the whole shared network was selected.
+
+.. figure:: uml/select4.*
+
+ DHCPv4 subnet selection
+
+After the subnet selection and before the lease allocation the DHCPv4
+server handles specific case as the INIT-REBOOT client state.
+
+.. note::
+
+ The "Request lease" box will be expanded below as lease allocation.
+
+.. figure:: uml/assign-lease4.*
+
+ DHCPv4 Assign Lease
+
+The allocation of a lease (or not) to an incoming request is very complex
+so is given too as an algorithm summary.
+
+.. figure:: uml/request4-lease.*
+
+ Allocate a lease for DHCPREQUEST
+
+.. figure:: uml/requestLease4.*
+
+ requestLease4 algorithm
+
+The different lease states including the free one where no lease object exists.
+
+.. note::
+
+ In statistics declined addresses are counted with the assigned addresses
+ so the :math:`assigned + free = total` equation stands.
+
+.. figure:: uml/lease-states.*
+
+ lease states
+
+The allocation engine maintains a notion of current subnet and host
+reservation.
+
+.. note::
+
+ Beware that to find a free lease the allocation engine starts from
+ the *preferred* subnet i.e. the last used one so the current subnet
+ can depend on the history, not only from the incoming query...
+
+.. figure:: uml/currentHost4.*
+
+ currentHost
+
+Before sending a response options are added:
+ - evaluate required client classes
+ - build the configured option list
+ - append requested options
+ - append requested vendor options
+ - append basic options
+
+.. figure:: uml/buildCfgOptionList.*
+
+ buildCfgOptionList (build configured option list) algorithm
+
+.. figure:: uml/appendRequestedOptions.*
+
+ appendRequestedOptions (append requested options) algorithm
+
+.. figure:: uml/appendRequestedVendorOptions.*
+
+ appendRequestedVendorOptions (append vendor requested options) algorithm
+