2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-29 13:07:50 +00:00

[#2750] regenerate all SVGs

Mainly, to format them which puts every tag on a single line which makes
diffing much easier going forward, but this also updates how they look.
This commit is contained in:
Andrei Pavel 2023-10-06 09:51:36 +03:00
parent a5866f3114
commit c0880a140b
No known key found for this signature in database
GPG Key ID: D4E804481939CB21
14 changed files with 3241 additions and 1571 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,113 +1,238 @@
<?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="f1hqawhmrx3191" 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="287" x="535" y="17.4023">DHCPv4 Assign Lease (Kea 1.8.0)</text><!--MD5=[96a966798826de6e056b38ba6b9482ca]
cluster init_reboot--><rect fill="#FFFFFF" filter="url(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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(#f1hqawhmrx3191)" 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=[0f73f9f94dec6643990f2b1b148176bd]
@startuml
title DHCPv4 Assign Lease (Kea 1.8.0)
agent "Check Subnet" as subnet
note left : entry point
agent "Get server id" as server_id
agent "Get hint" as hint
agent "Get hardware address and client id" as ident
rectangle "INIT-REBOOT state" as init_reboot {
agent "Get existing lease by client id" as by_client_id
agent "Get existing lease by hardware address" as by_hw_addr
agent "Get authoritative" as authoritative
}
agent "Process hostname" as hostname
agent "Request lease" as allocate
rectangle "Lease allocated" as allocated {
agent "update DDNS" as ddns
agent "Send ACK" as ack
}
agent "No lease allocated" as failed
note right : exit point
agent "Send NAK" as nak
note right : exit point
agent "No response" as no_response
note right : exit point
subnet - -> server_id
subnet - - -> nak : no subnet
server_id - -> hint
hint - -> ident : use requested address option
hint - -> ident : use client address
hint - -> ident : no hint
ident - -> init_reboot : requested address and no server id
ident - - -> hostname
init_reboot - -> by_client_id : has a client id
init_reboot - -> by_hw_addr : no client id
by_client_id - - -> authoritative : found
by_client_id - -> by_hw_addr : not found
by_hw_addr - -> authoritative
authoritative - - -> no_response : not authoritative and no owned lease
authoritative - -> nak : owned lease with hint mismatch
authoritative - -> nak : authoritative and no owned lease
authoritative - -> hostname : other cases
hostname - -> allocate
allocate - -> allocated : lease allocated
allocated - -> ddns
ddns - -> ack
allocate - -> failed : no lease allocated
failed - -> nak
@enduml
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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1433px" preserveAspectRatio="none" style="width:1340px;height:1433px;background:#FFFFFF;" version="1.1" viewBox="0 0 1340 1433" width="1340px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="223" x="551.5" y="24.9659">DHCPv4 Assign Lease (Kea 1.8.0)</text>
<!--cluster init_reboot-->
<g id="cluster_init_reboot">
<rect fill="none" height="391.06" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="442" x="487" y="477.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="129" x="643.5" y="494.3039">INIT-REBOOT state</text>
</g>
<!--cluster allocated-->
<g id="cluster_allocated">
<rect fill="none" height="274.03" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="160" x="7" y="1153.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="106" x="34" y="1170.5039">Lease allocated</text>
</g>
<!--entity by_client_id-->
<g id="elem_by_client_id">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="217" x="511.5" y="587.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="197" x="521.5" y="612.1639">Get existing lease by client id</text>
</g>
<!--entity by_hw_addr-->
<g id="elem_by_hw_addr">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="286" x="619" y="705.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="266" x="629" y="730.2339">Get existing lease by hardware address</text>
</g>
<!--entity authoritative-->
<g id="elem_authoritative">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="519.5" y="805.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113" x="529.5" y="830.3039">Get authoritative</text>
</g>
<!--entity ddns-->
<g id="elem_ddns">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111" x="31.5" y="1264.4279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="41.5" y="1289.3939">update DDNS</text>
</g>
<!--entity ack-->
<g id="elem_ack">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="85" x="44.5" y="1364.4979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="65" x="54.5" y="1389.4639">Send ACK</text>
</g>
<!--entity subnet-->
<g id="elem_subnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="112" x="1177" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="92" x="1187" y="72.0339">Check Subnet</text>
</g>
<g id="elem_GMN3">
<path d="M1054,52.7479 L1054,80.4539 A0,0 0 0 0 1054,80.4539 L1142,80.4539 A0,0 0 0 0 1142,80.4539 L1142,70.7479 L1176.66,66.5979 L1142,62.7479 L1142,62.7479 L1132,52.7479 L1054,52.7479 A0,0 0 0 0 1054,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1132,52.7479 L1132,62.7479 L1142,62.7479 L1132,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="67" x="1060" y="71.6449">entry point</text>
</g>
<!--entity server_id-->
<g id="elem_server_id">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="106" x="1020" y="147.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="86" x="1030" y="172.1039">Get server id</text>
</g>
<!--entity hint-->
<g id="elem_hint">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="74" x="832" y="247.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="842" y="272.1639">Get hint</text>
</g>
<!--entity ident-->
<g id="elem_ident">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="258" x="556" y="365.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="238" x="566" y="390.2339">Get hardware address and client id</text>
</g>
<!--entity hostname-->
<g id="elem_hostname">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="142" x="277" y="941.3979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="122" x="287" y="966.3639">Process hostname</text>
</g>
<!--entity allocate-->
<g id="elem_allocate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="205" y="1041.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="215" y="1066.4339">Request lease</text>
</g>
<!--entity failed-->
<g id="elem_failed">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="143" x="190.5" y="1164.3679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="200.5" y="1189.3339">No lease allocated</text>
</g>
<g id="elem_GMN19">
<path d="M368,1170.0479 L368,1179.8979 L333.93,1183.8979 L368,1187.8979 L368,1197.7539 A0,0 0 0 0 368,1197.7539 L446,1197.7539 A0,0 0 0 0 446,1197.7539 L446,1180.0479 L436,1170.0479 L368,1170.0479 A0,0 0 0 0 368,1170.0479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M436,1170.0479 L436,1180.0479 L446,1180.0479 L436,1170.0479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="374" y="1188.9449">exit point</text>
</g>
<!--entity nak-->
<g id="elem_nak">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="87" x="591.5" y="1264.4279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="67" x="601.5" y="1289.3939">Send NAK</text>
</g>
<g id="elem_GMN23">
<path d="M713,1270.1179 L713,1279.9679 L678.88,1283.9679 L713,1287.9679 L713,1297.8239 A0,0 0 0 0 713,1297.8239 L791,1297.8239 A0,0 0 0 0 791,1297.8239 L791,1280.1179 L781,1270.1179 L713,1270.1179 A0,0 0 0 0 713,1270.1179 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M781,1270.1179 L781,1280.1179 L791,1280.1179 L781,1270.1179 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="719" y="1289.0149">exit point</text>
</g>
<!--entity no_response-->
<g id="elem_no_response">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="105" x="999.5" y="1041.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="1009.5" y="1066.4339">No response</text>
</g>
<g id="elem_GMN27">
<path d="M1139,1047.1479 L1139,1057.0079 L1104.66,1061.0079 L1139,1065.0079 L1139,1074.8539 A0,0 0 0 0 1139,1074.8539 L1217,1074.8539 A0,0 0 0 0 1217,1074.8539 L1217,1057.1479 L1207,1047.1479 L1139,1047.1479 A0,0 0 0 0 1139,1047.1479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1207,1047.1479 L1207,1057.1479 L1217,1057.1479 L1207,1047.1479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="1145" y="1066.0449">exit point</text>
</g>
<!--link subnet to server_id-->
<g id="link_subnet_server_id">
<path d="M1202.15,86.5079 C1175.67,102.7379 1137.47,126.1579 1109.48,143.3079 " fill="none" id="subnet-to-server_id" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1105.32,145.8579,1115.0825,144.5568,1109.5807,143.2414,1110.8961,137.7396,1105.32,145.8579" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link subnet to nak-->
<g id="link_subnet_nak">
<path d="M1244.71,86.3479 C1255.55,105.5279 1270,136.5579 1270,165.6679 C1270,165.6679 1270,165.6679 1270,1184.8979 C1270,1249.0679 757.06,1228.6979 696,1248.4279 C686.6,1251.4679 677.03,1256.0479 668.34,1260.8979 " fill="none" id="subnet-to-nak" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="664.37,1263.1779,674.1655,1262.1545,668.7033,1260.6834,670.1743,1255.2212,664.37,1263.1779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="61" x="1271" y="671.1649">no subnet</text>
</g>
<!--link server_id to hint-->
<g id="link_server_id_hint">
<path d="M1033.67,186.5779 C998.83,203.3279 948.06,227.7279 912.13,245.0079 " fill="none" id="server_id-to-hint" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="907.86,247.0579,917.704,246.7491,912.3631,244.885,914.2273,239.5441,907.86,247.0579" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link hint to ident-->
<g id="link_hint_ident">
<path d="M831.51,268.0879 C759.25,269.6479 604.9,277.5579 572,316.2679 C555.28,335.9479 575.32,351.4079 602.93,362.5379 " fill="none" id="hint-to-ident" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="607.52,364.3079,600.5673,357.3323,602.8562,362.5054,597.6832,364.7943,607.52,364.3079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="178" x="573" y="331.1649">use requested address option</text>
</g>
<!--link hint to ident-->
<g id="link_hint_ident">
<path d="M839.01,286.6279 C824.77,295.6079 807.5,306.4879 792,316.2679 C768.12,331.3279 741.25,348.2879 720.41,361.4479 " fill="none" id="hint-to-ident-1" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="716.26,364.0679,726.0052,362.6427,720.4871,361.3974,721.7324,355.8793,716.26,364.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="106" x="793" y="331.1649">use client address</text>
</g>
<!--link hint to ident-->
<g id="link_hint_ident">
<path d="M890.07,286.6879 C903.34,300.9279 915.9,320.4379 904,335.2679 C892.23,349.9379 858.17,360.4479 820.31,367.8479 " fill="none" id="hint-to-ident-2" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="815.69,368.7279,825.2762,370.9874,820.6031,367.7996,823.7908,363.1265,815.69,368.7279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="909" y="331.1649">no hint</text>
</g>
<!--link ident to init_reboot-->
<g id="link_ident_init_reboot">
<path d="M685,404.6979 C685,421.4329 685,446.4029 685,467.4479 C685,470.0785 685,472.6478 685,475.1321 C685,475.7531 685,476.3688 685,476.9789 " fill="none" id="ident-to-init_reboot" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="685,476.9789,689,467.9789,685,471.9789,681,467.9789,685,476.9789" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="210" x="686" y="449.2349">requested address and no server id</text>
</g>
<!--link ident to hostname-->
<g id="link_ident_hostname">
<path d="M569.5,404.8179 C471.94,424.2579 348,458.4479 348,506.6979 C348,506.6979 348,506.6979 348,825.8679 C348,863.8479 348,907.8779 348,934.8179 " fill="none" id="ident-to-hostname" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="348,939.7679,352,930.7679,348,934.7679,344,930.7679,348,939.7679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link init_reboot to by_client_id-->
<g id="link_init_reboot_by_client_id">
<path d="M684.81,508.4779 C682.27,512.2879 654.33,554.2279 635.97,581.7679 " fill="none" id="init_reboot-to-by_client_id" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="633.28,585.8079,641.5922,580.5251,636.0469,581.6433,634.9287,576.098,633.28,585.8079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="80" x="664" y="553.0949">has a client id</text>
</g>
<!--link init_reboot to by_hw_addr-->
<g id="link_init_reboot_by_hw_addr">
<path d="M685.56,508.2379 C691.04,508.6379 735.47,512.6679 753,538.1979 C786.32,586.7179 776.72,660.3479 768.45,698.6579 " fill="none" id="init_reboot-to-by_hw_addr" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="767.37,703.4579,773.2491,695.5563,768.4682,698.58,765.4445,693.7991,767.37,703.4579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="65" x="777" y="612.1249">no client id</text>
</g>
<!--link by_client_id to authoritative-->
<g id="link_by_client_id_authoritative">
<path d="M605.16,626.5679 C591.42,645.2879 571.95,675.4579 564,705.2679 C555.44,737.3479 565.93,775.1879 575.15,799.3479 " fill="none" id="by_client_id-to-authoritative" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="576.89,803.7779,577.2979,793.9375,575.0503,799.1287,569.8591,796.8811,576.89,803.7779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="36" x="565" y="730.1949">found</text>
</g>
<!--link by_client_id to by_hw_addr-->
<g id="link_by_client_id_by_hw_addr">
<path d="M615.57,626.5079 C613.24,641.2079 612.7,661.4279 623,675.2679 C631.4,686.5579 642.62,695.2379 655.06,701.9079 " fill="none" id="by_client_id-to-by_hw_addr" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="659.5,704.1479,653.2585,696.5293,655.0336,701.9004,649.6625,703.6755,659.5,704.1479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="60" x="624" y="671.1649">not found</text>
</g>
<!--link by_hw_addr to authoritative-->
<g id="link_by_hw_addr_authoritative">
<path d="M728.07,744.7079 C698.82,761.0079 656.57,784.5479 625.75,801.7179 " fill="none" id="by_hw_addr-to-authoritative" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="621.45,804.1179,631.26,803.2438,625.8208,801.6897,627.3748,796.2505,621.45,804.1179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link authoritative to no_response-->
<g id="link_authoritative_no_response">
<path d="M652.89,841.8779 C695.29,853.2479 750.68,870.3979 797,892.3979 C884.78,934.0979 977.68,1002.0879 1023.3,1037.2879 " fill="none" id="authoritative-to-no_response" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1027.17,1040.2779,1022.5281,1031.5915,1023.2255,1037.2052,1017.6119,1037.9027,1027.17,1040.2779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="224" x="944" y="966.3349">not authoritative and no owned lease</text>
</g>
<!--link authoritative to nak-->
<g id="link_authoritative_nak">
<path d="M652.79,844.4179 C705.78,863.6879 771,899.6479 771,959.9379 C771,959.9379 771,959.9379 771,1184.8979 C771,1197.1579 712.12,1235.7379 671.85,1260.6979 " fill="none" id="authoritative-to-nak" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="667.83,1263.1779,677.5925,1261.8768,672.0907,1260.5614,673.4061,1255.0596,667.83,1263.1779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="192" x="772" y="1066.4049">owned lease with hint mismatch</text>
</g>
<!--link authoritative to nak-->
<g id="link_authoritative_nak">
<path d="M563.6,844.6979 C537.82,868.6079 499,912.4879 499,959.9379 C499,959.9379 499,959.9379 499,1184.8979 C499,1229.0079 546.66,1255.2679 585.55,1269.3379 " fill="none" id="authoritative-to-nak-1" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="589.79,1270.8279,582.6258,1264.0697,585.0729,1269.1698,579.9728,1271.617,589.79,1270.8279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="200" x="500" y="1066.4049">authoritative and no owned lease</text>
</g>
<!--link authoritative to hostname-->
<g id="link_authoritative_hostname">
<path d="M519.21,840.8179 C482.59,851.2179 437.72,867.7179 403,892.3979 C386.76,903.9479 372.66,921.5079 362.8,935.8279 " fill="none" id="authoritative-to-hostname" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="360.21,939.6879,368.5513,934.4513,363,935.5387,361.9126,929.9873,360.21,939.6879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="68" x="404" y="907.2949">other cases</text>
</g>
<!--link hostname to allocate-->
<g id="link_hostname_allocate">
<path d="M331.42,980.8479 C317.5,996.7179 297.55,1019.4679 282.6,1036.5079 " fill="none" id="hostname-to-allocate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="279.53,1040.0179,288.4746,1035.8956,282.8296,1036.2612,282.4639,1030.6162,279.53,1040.0179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link allocate to allocated-->
<g id="link_allocate_allocated">
<path d="M214.81,1080.8979 C198.19,1088.7379 179.94,1098.7679 165,1110.5379 C156.9975,1116.8404 149.2931,1124.3342 142.2119,1132.0726 C138.6713,1135.9418 135.2864,1139.8722 132.098,1143.7455 C130.5038,1145.6821 128.9586,1147.6044 127.4677,1149.4977 C126.7222,1150.4443 125.9903,1151.3837 125.2726,1152.3139 C125.0931,1152.5465 124.9146,1152.7784 124.7369,1153.0098 C124.6481,1153.1255 124.5595,1153.2411 124.4711,1153.3565 " fill="none" id="allocate-to-allocated" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="124.4711,1153.3565,133.1191,1148.6435,127.5113,1149.3869,126.7678,1143.7792,124.4711,1153.3565" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87" x="166" y="1125.4349">lease allocated</text>
</g>
<!--link allocated to ddns-->
<g id="link_allocated_ddns">
<path d="M103.99,1184.9679 C103.65,1186.9379 96.26,1229.5779 91.34,1257.9479 " fill="none" id="allocated-to-ddns" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="90.52,1262.6279,96.0029,1254.4464,91.3767,1257.7019,88.1212,1253.0756,90.52,1262.6279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link ddns to ack-->
<g id="link_ddns_ack">
<path d="M87,1303.8779 C87,1319.2079 87,1340.9479 87,1357.7679 " fill="none" id="ddns-to-ack" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="87,1362.6679,91,1353.6679,87,1357.6679,83,1353.6679,87,1362.6679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link allocate to failed-->
<g id="link_allocate_failed">
<path d="M262,1080.8979 C262,1101.5679 262,1134.8079 262,1157.6879 " fill="none" id="allocate-to-failed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="262,1162.6279,266,1153.6279,262,1157.6279,258,1153.6279,262,1162.6279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="106" x="263" y="1125.4349">no lease allocated</text>
</g>
<!--link failed to nak-->
<g id="link_failed_nak">
<path d="M333.92,1203.8079 C407.65,1223.1879 520.38,1252.8279 584.94,1269.8079 " fill="none" id="failed-to-nak" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="589.57,1271.0179,581.8807,1264.8636,584.7339,1269.7483,579.8493,1272.6014,589.57,1271.0179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--SRC=[dLF1Rjim3BtxAuYSjaEA3jXXw650bWnRqI4jcju3nM8Y8OwKMNJIODY_Zv8intBI3TZ5iAZt7YdoaJHL2BFlqwV3HvWufpS6Vg1m2EyUKC27cqytj- -BGcpG48oc2iijB9gLGHg1SE32Rs4i8LIu9hW31jOds5jjgEDzGmA7zG5hq38ImscfPOPHJ0hNQiXMefP7KIC8AMjq3eIHK5RQ0rf9BT6JQYn9c0s_QdG_ltyPFt_zylZu0eu4OSGPJSiQLzOI_2gWbmHVjIDjDlmKtu7LQP1XTLh6GAZxxynXmKb07PS-ajD5GyhMcalKXrXa5Yb-Txrugctfdw-i8oDs4PmE7UePVpReA5OJzQhAbjo1h3znqEbAPa3Pwqspbno1sMo-21WfZUik5yYJc4mV8hlSzegTsxOVUOgrq1NAQ9fQRrHmpQkcWMc2y7mIXOtO_fF0wRZJUslQDnkxJEUtkT71C1v_xdco2tAKCpF5sEJr3XKumQZ-4qx1Wenk-Crrd04tCbdMxabRSntT6gs5Nc8uVqWLp-6cP-ExAzdyWlYgqzfrL5zrCanVn5_q7Swgoe_ql0JNuAsVOubdP2OKScQEPlZQDkO2To59PrmANuWLkNISsddshKuEQhjZZuPR5anweP96tyF0KPCAWu2TTZj1fNgJzX_vqbXyKb8yjP9nR8OK3YzFYvn-igWVsc3bYlETHuRTzP_8uttDXE9kncaEXTgxzed57m00]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,147 +1,301 @@
<?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="2163px" preserveAspectRatio="none" style="width:969px;height:2163px;" version="1.1" viewBox="0 0 969 2163" width="969px" zoomAndPan="magnify"><defs><filter height="300%" id="fgxgo3z1vpo2" 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="277" x="337.25" y="17.4023">currentHost DHCPv4 (Kea 1.8.0)</text><!--MD5=[e3476fda087b0512b1cf4e3a66ca5e59]
entity entry--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="314.5" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="324.5" y="51.7344">Subnet Selection</text><!--MD5=[f65ad2d20ed779f8ee7fa3e9ca8ab4c3]
entity setSelected--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="247" x="258" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="227" x="268" y="148.7344">Set subnet to the selected subnet</text><!--MD5=[c0678c1aaf89874ea821e39d7ef5404f]
entity clientid_lookup--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="259" y="222.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="225" x="269" y="245.7344">Has client a lease for its client id?</text><!--MD5=[a51c27fcfb0c2b9388b266a7e30efdf3]
entity clientid_iterate--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="283" x="7" y="319.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="263" x="17" y="342.7344">Iterate on allowed subnets for client id</text><!--MD5=[96d14c76c72fae1f84c71c464af0f0e6]
entity found_clientid--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="253" x="22" y="498.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="233" x="32" y="521.7344">Set subnet to the by client id lease</text><!--MD5=[9f5518b92d1482f0724c659635bb4f8f]
entity hwaddr_lookup--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="211" x="449" y="432.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="191" x="459" y="455.7344">Has client a matching lease?</text><!--MD5=[7366630e5488cbc20c26d829a87e86ca]
entity hwaddr_iterate--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="352" x="201.5" y="564.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="332" x="211.5" y="587.7344">Iterate on allowed subnets for hardware address</text><!--MD5=[096d593c9a7e1a0b5ae2681804d4217f]
entity found_hwaddr--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="243" x="229" y="677.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="223" x="239" y="700.7344">Set subnet to the matching lease</text><!--MD5=[f1bd864ca92b3a59ad91e15b6c278a16]
entity hasAddressReservation--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="211" x="375" y="930.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="191" x="385" y="953.7344">Has an address reservation?</text><!--MD5=[0af8b8cc29117b7db26a4bf8fde82b62]
entity setAddressReservation--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="300" x="220.5" y="1043.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="280" x="230.5" y="1066.7344">Set subnet to address reservation subnet</text><!--MD5=[42a0a2711e18aa980e3ea9f910af1c90]
entity pool--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="355" y="1140.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="231" x="365" y="1163.7344">Is the address in an allowed pool?</text><!--MD5=[ec337e6f6831b541235537d1c5125816]
entity pool_iterate--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="269" x="141" y="1237.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="249" x="151" y="1260.7344">Iterate on allowed subnets with pool</text><!--MD5=[8426a0f58e3c900bd89aafdc516c0a64]
entity inAllowedPool--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="254" x="148.5" y="1350.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="234" x="158.5" y="1373.7344">Set subnet to address pool subnet</text><!--MD5=[c7571992746652353b375880ae850124]
entity allocate--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="393.5" y="1447.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="138" x="403.5" y="1470.7344">Allocate a new lease</text><!--MD5=[539657d7008b7b9e186112fa27fe2a64]
entity allocate_iterate--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="201" x="232" y="1560.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="181" x="242" y="1583.7344">Iterate on allowed subnets</text><!--MD5=[98bd7f0fd78ffed8e2b0c08f2369be38]
entity allocated--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="266" x="270.5" y="1673.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="246" x="280.5" y="1696.7344">Set subnet to allocated lease subnet</text><!--MD5=[a2ab21a8d09e419da8ba4e22e422b87f]
entity getHRmode--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="394.5" y="1770.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="232" x="404.5" y="1793.7344">Get subnet host reservation mode</text><!--MD5=[9e66760393f24350dd53d10577644815]
entity checkHRmode--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="293" x="374" y="1867.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="273" x="384" y="1890.7344">Is subnet host reservation mode global?</text><!--MD5=[9225881c05e5dcc29801826dc3c4a44b]
entity global--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="205" x="298" y="1980.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="185" x="308" y="2003.7344">Get global host reservation</text><!--MD5=[fb2193611fca68211907294b61bd1772]
entity bySubnet--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="538" y="1980.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="189" x="548" y="2003.7344">Get subnet host reservation</text><!--MD5=[c13398c59c328d6fcc544c8c17f5b117]
entity return--><rect fill="#FEFECE" filter="url(#fgxgo3z1vpo2)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="235" x="403" y="2093.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="215" x="413" y="2116.7344">Return current host reservation</text><!--MD5=[4190d3dcd511d21b11bd238065bcb30b]
link entry to setSelected--><path d="M381.5,64.6192 C381.5,80.1592 381.5,102.9792 381.5,119.8592 " fill="none" id="entry-&gt;setSelected" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="381.5,124.8892,385.5,115.8892,381.5,119.8892,377.5,115.8892,381.5,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e08d915304835ed62ca4e0728c34eef1]
link setSelected to clientid_lookup--><path d="M381.5,161.6192 C381.5,177.1592 381.5,199.9792 381.5,216.8592 " fill="none" id="setSelected-&gt;clientid_lookup" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="381.5,221.8892,385.5,212.8892,381.5,216.8892,377.5,212.8892,381.5,221.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6be1f2e9e03fb1c5265b47f0fe05d4fb]
link clientid_lookup to hwaddr_lookup--><path d="M450.66,258.2792 C487.31,270.2592 530.95,289.5492 561.5,319.1992 C589.76,346.6192 605.63,365.0792 592.5,402.1992 C589.19,411.5492 583.15,420.3992 576.84,427.8492 " fill="none" id="clientid_lookup-&gt;hwaddr_lookup" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="573.32,431.8292,582.2724,427.7238,576.6267,428.0788,576.2717,422.4331,573.32,431.8292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="116" x="591.5" y="342.2676">no client id option</text><!--MD5=[e88e8ce2e61ddfe0f17d6f35f9f4b567]
link clientid_lookup to clientid_iterate--><path d="M339.58,258.2892 C298.95,274.8592 237.46,299.9292 195.27,317.1292 " fill="none" id="clientid_lookup-&gt;clientid_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="190.48,319.0792,200.324,319.3879,195.1105,317.1927,197.3056,311.9792,190.48,319.0792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[574cfa9865ae5a8c4342d01c24825c76]
link clientid_iterate to clientid_iterate--><path d="M290.1,329.0592 C310.94,330.3392 325,333.0492 325,337.1992 C325,340.9892 313.25,343.5892 295.32,344.9792 " fill="none" id="clientid_iterate-&gt;clientid_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="290.1,345.3392,299.3532,348.7123,295.0882,344.9962,298.8044,340.7312,290.1,345.3392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="224" x="331" y="342.2676">match-client-id is false or no lease</text><!--MD5=[6bcef6072872efd8a87246b817e1d22e]
link clientid_iterate to found_clientid--><path d="M148.5,355.4892 C148.5,387.8292 148.5,457.3892 148.5,493.0792 " fill="none" id="clientid_iterate-&gt;found_clientid" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="148.5,498.0992,152.5,489.0992,148.5,493.0992,144.5,489.0992,148.5,498.0992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="149.5" y="398.7676">found a lease</text><!--MD5=[7615618d548cc7387965d08a49484701]
link found_clientid to hasAddressReservation--><path d="M148.5,534.3592 C148.5,557.7292 148.5,600.8792 148.5,637.6992 C148.5,637.6992 148.5,637.6992 148.5,869.1992 C148.5,915.6592 273.28,934.4692 369.84,942.0692 " fill="none" id="found_clientid-&gt;hasAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="375,942.4692,366.3353,937.7869,370.0149,942.0836,365.7183,945.7631,375,942.4692" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a2c6bf2befd5a55c13fb7d14d9b0c240]
link clientid_iterate to hwaddr_lookup--><path d="M180.8,355.2592 C209.44,369.7192 252.75,389.9992 292.5,402.1992 C341.2,417.1492 396.54,427.9392 443.77,435.3792 " fill="none" id="clientid_iterate-&gt;hwaddr_lookup" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="448.9,436.1792,440.6245,430.8392,443.9598,435.4082,439.3908,438.7436,448.9,436.1792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="294" x="293.5" y="398.7676">not found by client id, try by hardware address</text><!--MD5=[5a497db9eec20d36442cfd8ff0bb8196]
link hwaddr_lookup to hasAddressReservation--><path d="M660.05,459.9192 C736.51,472.7092 826.5,504.1292 826.5,581.1992 C826.5,581.1992 826.5,581.1992 826.5,869.1992 C826.5,918.2492 692.51,936.4592 591.29,943.2192 " fill="none" id="hwaddr_lookup-&gt;hasAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="586.19,943.5492,595.4238,946.9751,591.1801,943.2347,594.9205,938.9909,586.19,943.5492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="827.5" y="756.7676">no hardware address</text><!--MD5=[3e65bd8831bbfab836115278d54dbd54]
link hwaddr_lookup to hwaddr_iterate--><path d="M531,468.4592 C498.37,492.4192 439.49,535.6692 404.91,561.0692 " fill="none" id="hwaddr_lookup-&gt;hwaddr_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="400.82,564.0692,410.4373,561.946,404.8438,561.1013,405.6886,555.5078,400.82,564.0692" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8827ae6ff5ddcc22e7f77fe98cdf1a45]
link hwaddr_iterate to hwaddr_iterate--><path d="M553.73,573.1792 C574.76,574.8192 588.5,577.8192 588.5,582.1992 C588.5,586.1992 577.02,589.0592 558.99,590.7692 " fill="none" id="hwaddr_iterate-&gt;hwaddr_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="553.73,591.2192,563.0395,594.4337,558.7116,590.791,562.3544,586.4631,553.73,591.2192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="190" x="594.5" y="587.2676">no lease or client id mismatch</text><!--MD5=[c5ee7e899f7e78ebb49c392f0cd68ce0]
link hwaddr_iterate to found_hwaddr--><path d="M373.28,600.5392 C368.61,619.7692 361.05,650.8292 355.93,671.8592 " fill="none" id="hwaddr_iterate-&gt;found_hwaddr" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="354.69,676.9792,360.6886,669.1679,355.8623,672.1186,352.9116,667.2923,354.69,676.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="367.5" y="643.7676">found a lease</text><!--MD5=[49806d919f2e8f347acf33d16af6c958]
link found_hwaddr to hasAddressReservation--><path d="M359.44,713.4492 C382.5,757.9792 443.99,876.6992 469.34,925.6492 " fill="none" id="found_hwaddr-&gt;hasAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="471.67,930.1592,471.0846,920.3278,469.3713,925.7189,463.9802,924.0056,471.67,930.1592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[419c32f3c11394d82c4ebd3db00104c7]
link hwaddr_iterate to hasAddressReservation--><path d="M433.87,600.2492 C475.7,616.7892 525.5,646.4992 525.5,694.1992 C525.5,694.1992 525.5,694.1992 525.5,869.1992 C525.5,890.4892 512.76,911.2092 500.84,925.9292 " fill="none" id="hwaddr_iterate-&gt;hasAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="497.51,929.9192,506.343,925.5627,500.7095,926.0769,500.1953,920.4435,497.51,929.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="62" x="526.5" y="803.7676">not found</text><!--MD5=[1a9e971bc87c9d378000ad9b2e367c91]
link hasAddressReservation to setAddressReservation--><path d="M463.31,966.5392 C443.86,986.1792 412.17,1018.1492 391.33,1039.1792 " fill="none" id="hasAddressReservation-&gt;setAddressReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="387.57,1042.9792,396.7481,1039.4066,391.0912,1039.4295,391.0684,1033.7726,387.57,1042.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="21" x="432.5" y="1009.7676">yes</text><!--MD5=[d42a4bd24fb375c431deb7abe8a74e17]
link hasAddressReservation to pool--><path d="M497.22,966.4192 C518.88,990.8992 552.33,1037.4392 538.5,1079.1992 C531.33,1100.8692 515.54,1121.4192 502.24,1135.9792 " fill="none" id="hasAddressReservation-&gt;pool" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="498.57,1139.9292,507.6356,1136.0803,501.9821,1136.2744,501.7879,1130.6209,498.57,1139.9292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="225" x="542.5" y="1066.2676">no or not check in the taken branch</text><!--MD5=[791581dff43cc3b6477c496805383c47]
link setAddressReservation to pool--><path d="M390.42,1079.3992 C409.11,1095.5392 437.07,1119.6992 456.88,1136.7992 " fill="none" id="setAddressReservation-&gt;pool" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="460.73,1140.1192,456.5357,1131.2081,456.9468,1136.85,451.305,1137.2612,460.73,1140.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7a1241998e61cc09e6a084344a13ee40]
link pool to pool_iterate--><path d="M443.38,1176.3992 C407.82,1192.8792 354.25,1217.7092 317.23,1234.8592 " fill="none" id="pool-&gt;pool_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="312.35,1237.1192,322.1978,1236.9736,316.8885,1235.0212,318.841,1229.712,312.35,1237.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1c40abd319323f0f8c3e812984d047be]
link pool to allocate--><path d="M562.27,1176.2592 C595.56,1187.6592 630.78,1206.4492 650.5,1237.1992 C659.14,1250.6692 654.47,1257.6992 650.5,1273.1992 C636.28,1328.6892 627.14,1343.9092 588.5,1386.1992 C566.39,1410.3992 535.31,1430.7792 510.89,1444.6292 " fill="none" id="pool-&gt;allocate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="506.41,1447.1392,516.2178,1446.2406,510.7747,1444.7001,512.3152,1439.2571,506.41,1447.1392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="205" x="642.5" y="1316.7676">pool check is not in all branches</text><!--MD5=[f92712dd8e32c9acdf8619de922fc5cb]
link pool_iterate to pool_iterate--><path d="M410.12,1246.9692 C430.88,1248.2192 445,1250.9592 445,1255.1992 C445,1259.0792 433.2,1261.6992 415.32,1263.0692 " fill="none" id="pool_iterate-&gt;pool_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="410.12,1263.4292,419.3732,1266.8023,415.1082,1263.0862,418.8244,1258.8212,410.12,1263.4292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="193" x="451" y="1260.2676">address not in an allowed pool</text><!--MD5=[89f40702130c31205e20b7afecbe9ed1]
link pool_iterate to inAllowedPool--><path d="M275.5,1273.5392 C275.5,1292.7692 275.5,1323.8292 275.5,1344.8592 " fill="none" id="pool_iterate-&gt;inAllowedPool" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="275.5,1349.9792,279.5,1340.9792,275.5,1344.9792,271.5,1340.9792,275.5,1349.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="276.5" y="1316.7676">address in an allowed pool</text><!--MD5=[03b0dcad835fe04723134b797eb9a319]
link pool_iterate to allocate--><path d="M375.89,1273.2492 C408.78,1280.8692 439.69,1290.9192 450.5,1303.1992 C484.66,1341.9792 481.2,1407.7092 476.46,1441.9492 " fill="none" id="pool_iterate-&gt;allocate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="475.7,1447.1692,480.9697,1438.8487,476.4291,1442.2227,473.0552,1437.6821,475.7,1447.1692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="100" x="479.5" y="1373.2676">no allowed pool</text><!--MD5=[27c03cbbcf5b4bbc0f83ff469240ee91]
link inAllowedPool to allocate--><path d="M311.18,1386.3992 C345.34,1402.8792 396.82,1427.7092 432.4,1444.8592 " fill="none" id="inAllowedPool-&gt;allocate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="437.09,1447.1192,430.7227,1439.6054,432.5869,1444.9463,427.246,1446.8104,437.09,1447.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c7ed7f8e85efd784aa0446a03842ecad]
link allocate to allocate_iterate--><path d="M393.3,1481.6592 C375.37,1488.5992 357.97,1498.6492 345.5,1513.1992 C335.73,1524.5992 332.59,1541.3292 331.83,1554.8292 " fill="none" id="allocate-&gt;allocate_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="331.65,1560.0092,335.9813,1551.1639,331.8356,1555.0127,327.9868,1550.867,331.65,1560.0092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="240" x="346.5" y="1526.7676">start from preferred (last used) subnet</text><!--MD5=[b4b32474e67014a0ea8b9d2dcb8b921b]
link allocate to getHRmode--><path d="M551.57,1482.2592 C567.28,1489.1692 581.88,1499.0592 591.5,1513.1992 C647.03,1594.8392 571.65,1717.1292 536.65,1765.9492 " fill="none" id="allocate-&gt;getHRmode" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="533.6,1770.1692,542.1109,1765.2129,536.5264,1766.1151,535.6242,1760.5306,533.6,1770.1692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="198" x="605.5" y="1639.7676">allocation is not in all branches</text><!--MD5=[5d722979ddb74375b031e6d5bd55f242]
link allocate_iterate to allocate_iterate--><path d="M433.25,1568.1192 C453.52,1569.2292 468,1572.5892 468,1578.1992 C468,1583.3192 455.9,1586.5692 438.34,1587.9492 " fill="none" id="allocate_iterate-&gt;allocate_iterate" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="433.25,1588.2792,442.4936,1591.6787,438.2392,1587.9504,441.9675,1583.696,433.25,1588.2792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="474" y="1583.2676">no free address</text><!--MD5=[0a74e69bd975a88dffe2300213585d86]
link allocate_iterate to allocated--><path d="M343.59,1596.5392 C356.05,1616.0092 376.26,1647.6192 389.72,1668.6592 " fill="none" id="allocate_iterate-&gt;allocated" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="392.48,1672.9792,390.9779,1663.2456,389.7762,1668.7733,384.2485,1667.5716,392.48,1672.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="373.5" y="1639.7676">found a free address</text><!--MD5=[1be0f2f74e199399aa4e09476dce36f7]
link allocated to getHRmode--><path d="M424.69,1709.3992 C444.57,1725.5392 474.31,1749.6992 495.38,1766.7992 " fill="none" id="allocated-&gt;getHRmode" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="499.47,1770.1192,494.9879,1761.3494,495.5824,1766.9749,489.9569,1767.5694,499.47,1770.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9e14dd0054774aedb71cf602d40d12b7]
link getHRmode to checkHRmode--><path d="M520.5,1806.6192 C520.5,1822.1592 520.5,1844.9792 520.5,1861.8592 " fill="none" id="getHRmode-&gt;checkHRmode" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="520.5,1866.8892,524.5,1857.8892,520.5,1861.8892,516.5,1857.8892,520.5,1866.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a84b25cfb30efcca4b707749deb6e97a]
link checkHRmode to global--><path d="M502.01,1903.2992 C480.76,1922.9592 445.87,1955.2292 423.04,1976.3492 " fill="none" id="checkHRmode-&gt;global" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="419.21,1979.8992,428.5379,1976.7384,422.8857,1976.5096,423.1145,1970.8574,419.21,1979.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="21" x="468.5" y="1946.7676">yes</text><!--MD5=[a6bc61640de244f08df3cca17a4f2365]
link checkHRmode to bySubnet--><path d="M539.3,1903.2992 C560.9,1922.9592 596.37,1955.2292 619.58,1976.3492 " fill="none" id="checkHRmode-&gt;bySubnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="623.48,1979.8992,619.5026,1970.8892,619.7771,1976.5394,614.1269,1976.8139,623.48,1979.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="589.5" y="1946.7676">no</text><!--MD5=[b516e9f33f07fd0923019528919312cb]
link global to return--><path d="M397.59,2016.3892 C396.2,2030.3392 396.61,2049.8292 406.5,2063.1992 C415.42,2075.2592 428,2084.2392 441.56,2090.9292 " fill="none" id="global-&gt;return" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="446.2,2093.1092,439.7564,2085.6607,441.6749,2090.9823,436.3533,2092.9008,446.2,2093.1092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="187" x="407.5" y="2059.7676">return global host reservation</text><!--MD5=[31ce4acb5044d12c75fb908f2994650f]
link bySubnet to return--><path d="M633.84,2016.2092 C626.18,2030.0592 613.99,2049.4892 599.5,2063.1992 C588.25,2073.8392 574.18,2083.1692 561.05,2090.6492 " fill="none" id="bySubnet-&gt;return" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="556.63,2093.1192,566.4378,2092.2206,560.9947,2090.6801,562.5352,2085.2371,556.63,2093.1192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="191" x="614.5" y="2059.7676">return subnet host reservation</text><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="622" x="164.75" y="2150.3555">Only the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches</text><!--MD5=[84940467d5c8b64b9d1a8ec6eb53bf6f]
@startuml
title currentHost DHCPv4 (Kea 1.8.0)
agent "Subnet Selection" as entry
agent "Set subnet to the selected subnet" as setSelected
agent "Has client a lease for its client id?" as clientid_lookup
agent "Iterate on allowed subnets for client id" as clientid_iterate
agent "Set subnet to the by client id lease" as found_clientid
agent "Has client a matching lease?" as hwaddr_lookup
agent "Iterate on allowed subnets for hardware address" as hwaddr_iterate
agent "Set subnet to the matching lease" as found_hwaddr
agent "Has an address reservation?" as hasAddressReservation
agent "Set subnet to address reservation subnet" as setAddressReservation
agent "Is the address in an allowed pool?" as pool
agent "Iterate on allowed subnets with pool" as pool_iterate
agent "Set subnet to address pool subnet" as inAllowedPool
agent "Allocate a new lease" as allocate
agent "Iterate on allowed subnets" as allocate_iterate
agent "Set subnet to allocated lease subnet" as allocated
agent "Get subnet host reservation mode" as getHRmode
agent "Is subnet host reservation mode global?" as checkHRmode
agent "Get global host reservation" as global
agent "Get subnet host reservation" as bySubnet
agent "Return current host reservation" as return
entry - -> setSelected
setSelected - -> clientid_lookup
clientid_lookup - - -> hwaddr_lookup : no client id option
clientid_lookup - -> clientid_iterate
clientid_iterate -> clientid_iterate : match-client-id is false or no lease
clientid_iterate - -> found_clientid : found a lease
found_clientid - - - -> hasAddressReservation
clientid_iterate - -> hwaddr_lookup : not found by client id, try by hardware address
hwaddr_lookup - - -> hasAddressReservation : no hardware address
hwaddr_lookup - -> hwaddr_iterate
hwaddr_iterate -> hwaddr_iterate : no lease or client id mismatch
hwaddr_iterate - -> found_hwaddr : found a lease
found_hwaddr - - - -> hasAddressReservation
hwaddr_iterate - -> hasAddressReservation : not found
hasAddressReservation - -> setAddressReservation : yes
hasAddressReservation - -> pool : no or not check in the taken branch
setAddressReservation - -> pool
pool - -> pool_iterate
pool - - -> allocate : pool check is not in all branches
pool_iterate -> pool_iterate : address not in an allowed pool
pool_iterate - -> inAllowedPool : address in an allowed pool
pool_iterate - - -> allocate : no allowed pool
inAllowedPool - -> allocate
allocate - -> allocate_iterate : start from preferred (last used) subnet
allocate - - -> getHRmode : allocation is not in all branches
allocate_iterate -> allocate_iterate : no free address
allocate_iterate - -> allocated : found a free address
allocated - -> getHRmode
getHRmode - -> checkHRmode
checkHRmode - -> global : yes
checkHRmode - -> bySubnet : no
global - -> return : return global host reservation
bySubnet - -> return : return subnet host reservation
footer Only the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2256px" preserveAspectRatio="none" style="width:944px;height:2256px;background:#FFFFFF;" version="1.1" viewBox="0 0 944 2256" width="944px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="218" x="356.25" y="24.9659">currentHost DHCPv4 (Kea 1.8.0)</text>
<!--entity entry-->
<g id="elem_entry">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="301" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113" x="311" y="72.0339">Subnet Selection</text>
</g>
<!--entity setSelected-->
<g id="elem_setSelected">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="246" x="244.5" y="147.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="226" x="254.5" y="172.1039">Set subnet to the selected subnet</text>
</g>
<!--entity clientid_lookup-->
<g id="elem_clientid_lookup">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="244" x="245.5" y="247.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="224" x="255.5" y="272.1739">Has client a lease for its client id?</text>
</g>
<!--entity clientid_iterate-->
<g id="elem_clientid_iterate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="281" x="7" y="347.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="261" x="17" y="372.2439">Iterate on allowed subnets for client id</text>
</g>
<!--entity found_clientid-->
<g id="elem_found_clientid">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="252" x="21.5" y="534.4079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="232" x="31.5" y="559.3739">Set subnet to the by client id lease</text>
</g>
<!--entity hwaddr_lookup-->
<g id="elem_hwaddr_lookup">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="211" x="429" y="465.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="191" x="439" y="490.3039">Has client a matching lease?</text>
</g>
<!--entity hwaddr_iterate-->
<g id="elem_hwaddr_iterate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="350" x="200.5" y="603.4779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="330" x="210.5" y="628.4439">Iterate on allowed subnets for hardware address</text>
</g>
<!--entity found_hwaddr-->
<g id="elem_found_hwaddr">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="242" x="227.5" y="721.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="222" x="237.5" y="746.5139">Set subnet to the matching lease</text>
</g>
<!--entity hasAddressReservation-->
<g id="elem_hasAddressReservation">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="210" x="373.5" y="981.6079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="190" x="383.5" y="1006.5739">Has an address reservation?</text>
</g>
<!--entity setAddressReservation-->
<g id="elem_setAddressReservation">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="298" x="220.5" y="1099.6779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="278" x="230.5" y="1124.6439">Set subnet to address reservation subnet</text>
</g>
<!--entity pool-->
<g id="elem_pool">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="249" x="354" y="1199.7479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="229" x="364" y="1224.7139">Is the address in an allowed pool?</text>
</g>
<!--entity pool_iterate-->
<g id="elem_pool_iterate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="266" x="146.5" y="1299.8179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="246" x="156.5" y="1324.7839">Iterate on allowed subnets with pool</text>
</g>
<!--entity inAllowedPool-->
<g id="elem_inAllowedPool">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="251" x="154" y="1417.8879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="231" x="164" y="1442.8539">Set subnet to address pool subnet</text>
</g>
<!--entity allocate-->
<g id="elem_allocate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="156" x="396.5" y="1517.9479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="406.5" y="1542.9139">Allocate a new lease</text>
</g>
<!--entity allocate_iterate-->
<g id="elem_allocate_iterate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="200" x="237.5" y="1636.0179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="180" x="247.5" y="1660.9839">Iterate on allowed subnets</text>
</g>
<!--entity allocated-->
<g id="elem_allocated">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="264" x="273.5" y="1754.0879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="244" x="283.5" y="1779.0539">Set subnet to allocated lease subnet</text>
</g>
<!--entity getHRmode-->
<g id="elem_getHRmode">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="249" x="395" y="1854.1579"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="229" x="405" y="1879.1239">Get subnet host reservation mode</text>
</g>
<!--entity checkHRmode-->
<g id="elem_checkHRmode">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="290" x="374.5" y="1954.2279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="270" x="384.5" y="1979.1939">Is subnet host reservation mode global?</text>
</g>
<!--entity global-->
<g id="elem_global">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="202" x="298.5" y="2072.2879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="182" x="308.5" y="2097.2539">Get global host reservation</text>
</g>
<!--entity bySubnet-->
<g id="elem_bySubnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="207" x="536" y="2072.2879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="187" x="546" y="2097.2539">Get subnet host reservation</text>
</g>
<!--entity return-->
<g id="elem_return">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="233" x="402" y="2190.3579"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="213" x="412" y="2215.3239">Return current host reservation</text>
</g>
<!--link entry to setSelected-->
<g id="link_entry_setSelected">
<path d="M367.5,86.5079 C367.5,101.8379 367.5,123.5879 367.5,140.4079 " fill="none" id="entry-to-setSelected" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="367.5,145.3079,371.5,136.3079,367.5,140.3079,363.5,136.3079,367.5,145.3079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link setSelected to clientid_lookup-->
<g id="link_setSelected_clientid_lookup">
<path d="M367.5,186.5779 C367.5,201.9079 367.5,223.6579 367.5,240.4779 " fill="none" id="setSelected-to-clientid_lookup" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="367.5,245.3779,371.5,236.3779,367.5,240.3779,363.5,236.3779,367.5,245.3779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link clientid_lookup to hwaddr_lookup-->
<g id="link_clientid_lookup_hwaddr_lookup">
<path d="M432.71,286.6579 C466.61,299.2479 506.66,318.7979 534.5,347.2779 C563.51,376.9479 577.14,395.5079 565.5,435.3379 C562.95,444.0779 558.29,452.7279 553.35,460.2679 " fill="none" id="clientid_lookup-to-hwaddr_lookup" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="550.77,464.0379,559.1444,458.8543,553.5862,459.9065,552.5341,454.3483,550.77,464.0379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="108" x="564.5" y="372.2049">no client id option</text>
</g>
<!--link clientid_lookup to clientid_iterate-->
<g id="link_clientid_lookup_clientid_iterate">
<path d="M324.82,286.7679 C287.78,303.2779 234.2,327.1579 195.64,344.3479 " fill="none" id="clientid_lookup-to-clientid_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="191.44,346.2179,201.2889,346.2122,196.0079,344.1846,198.0355,338.9036,191.44,346.2179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link clientid_iterate to clientid_iterate-->
<g id="link_clientid_iterate_clientid_iterate">
<path d="M288.3,358.3179 C309.02,359.6579 323,362.4879 323,366.8079 C323,370.6879 311.71,373.3679 294.4,374.8379 " fill="none" id="clientid_iterate-to-clientid_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="289.81,375.1879,299.0823,378.5082,294.7962,374.8165,298.488,370.5303,289.81,375.1879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="199" x="329" y="372.2049">match-client-id is false or no lease</text>
</g>
<!--link clientid_iterate to found_clientid-->
<g id="link_clientid_iterate_found_clientid">
<path d="M147.5,386.5779 C147.5,420.1179 147.5,490.3479 147.5,527.9379 " fill="none" id="clientid_iterate-to-found_clientid" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="147.5,532.6079,151.5,523.6079,147.5,527.6079,143.5,523.6079,147.5,532.6079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="79" x="148.5" y="431.2349">found a lease</text>
</g>
<!--link found_clientid to hasAddressReservation-->
<g id="link_found_clientid_hasAddressReservation">
<path d="M147.5,573.7479 C147.5,598.3879 147.5,642.9479 147.5,681.0479 C147.5,681.0479 147.5,681.0479 147.5,920.6079 C147.5,966.8079 270.91,986.2379 367.03,994.3679 " fill="none" id="found_clientid-to-hasAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="371.81,994.7679,363.1721,990.0364,366.8272,994.3539,362.5097,998.0089,371.81,994.7679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link clientid_iterate to hwaddr_lookup-->
<g id="link_clientid_iterate_hwaddr_lookup">
<path d="M182.5,386.8379 C215.25,404.3879 261.96,428.6879 281.5,435.3379 C326.59,450.6879 377.94,461.6679 422.55,469.2579 " fill="none" id="clientid_iterate-to-hwaddr_lookup" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="427.3,470.0579,419.0851,464.625,422.3688,469.2313,417.7626,472.515,427.3,470.0579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="278" x="282.5" y="431.2349">not found by client id, try by hardware address</text>
</g>
<!--link hwaddr_lookup to hasAddressReservation-->
<g id="link_hwaddr_lookup_hasAddressReservation">
<path d="M640.43,496.0879 C717.9,510.0979 809.5,543.2979 809.5,622.0079 C809.5,622.0079 809.5,622.0079 809.5,920.6079 C809.5,966.8079 686.09,986.2379 589.97,994.3679 " fill="none" id="hwaddr_lookup-to-hasAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="585.19,994.7679,594.4903,998.0089,590.1728,994.3539,593.8279,990.0364,585.19,994.7679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="126" x="810.5" y="805.5049">no hardware address</text>
</g>
<!--link hwaddr_lookup to hwaddr_iterate-->
<g id="link_hwaddr_lookup_hwaddr_iterate">
<path d="M512.39,504.8079 C483.64,529.4279 433.44,572.4079 402.47,598.9179 " fill="none" id="hwaddr_lookup-to-hwaddr_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="398.83,602.0379,408.2726,599.2383,402.6333,598.7922,403.0794,593.153,398.83,602.0379" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link hwaddr_iterate to hwaddr_iterate-->
<g id="link_hwaddr_iterate_hwaddr_iterate">
<path d="M550.89,613.4979 C571.83,615.2279 585.5,618.3979 585.5,623.0079 C585.5,627.1579 574.46,630.1379 557.04,631.9479 " fill="none" id="hwaddr_iterate-to-hwaddr_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="552.4,632.3879,561.7285,635.547,557.379,631.9301,560.9959,627.5806,552.4,632.3879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="176" x="591.5" y="628.4049">no lease or client id mismatch</text>
</g>
<!--link hwaddr_iterate to found_hwaddr-->
<g id="link_hwaddr_iterate_found_hwaddr">
<path d="M371.1,642.9179 C366.53,662.5579 359.36,693.3979 354.32,715.0579 " fill="none" id="hwaddr_iterate-to-found_hwaddr" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="353.24,719.7079,359.168,711.8429,354.3685,714.8369,351.3745,710.0374,353.24,719.7079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="79" x="365.5" y="687.4449">found a lease</text>
</g>
<!--link found_hwaddr to hasAddressReservation-->
<g id="link_found_hwaddr_hasAddressReservation">
<path d="M358.06,761.0579 C381.21,807.0079 440.27,924.2479 466.09,975.5179 " fill="none" id="found_hwaddr-to-hasAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="468.25,979.7879,467.7902,969.9498,466.0082,975.3186,460.6394,973.5366,468.25,979.7879" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link hwaddr_iterate to hasAddressReservation-->
<g id="link_hwaddr_iterate_hasAddressReservation">
<path d="M432.33,643.0379 C473.7,660.8879 522.5,692.1179 522.5,740.0779 C522.5,740.0779 522.5,740.0779 522.5,920.6079 C522.5,941.1679 511.11,961.3979 499.91,976.3179 " fill="none" id="hwaddr_iterate-to-hasAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="497.07,979.9679,505.7564,975.326,500.1427,976.0235,499.4452,970.4098,497.07,979.9679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="60" x="523.5" y="854.5049">not found</text>
</g>
<!--link hasAddressReservation to setAddressReservation-->
<g id="link_hasAddressReservation_setAddressReservation">
<path d="M460.74,1021.0579 C441.9,1041.1179 412.09,1072.8679 391.7,1094.5779 " fill="none" id="hasAddressReservation-to-setAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="388.28,1098.2079,397.3611,1094.3956,391.7068,1094.5669,391.5355,1088.9127,388.28,1098.2079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="20" x="431.5" y="1065.5749">yes</text>
</g>
<!--link hasAddressReservation to pool-->
<g id="link_hasAddressReservation_pool">
<path d="M495.7,1020.7579 C517.49,1046.6879 550.63,1095.3879 536.5,1138.7479 C529.65,1159.7679 514.91,1179.8579 502,1194.5879 " fill="none" id="hasAddressReservation-to-pool" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="498.72,1198.2379,507.7062,1194.207,502.0577,1194.5151,501.7496,1188.8666,498.72,1198.2379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="212" x="540.5" y="1124.6149">no or not check in the taken branch</text>
</g>
<!--link setAddressReservation to pool-->
<g id="link_setAddressReservation_pool">
<path d="M390.52,1139.1279 C408.31,1155.1279 433.88,1178.1379 452.87,1195.2279 " fill="none" id="setAddressReservation-to-pool" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="456.42,1198.4179,452.4062,1189.4241,452.7035,1195.0731,447.0545,1195.3704,456.42,1198.4179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link pool to pool_iterate-->
<g id="link_pool_pool_iterate">
<path d="M440.13,1239.1879 C406.79,1255.6179 358.5,1279.4179 323.58,1296.6279 " fill="none" id="pool-to-pool_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="319.45,1298.6679,329.2909,1298.271,323.9335,1296.4547,325.7497,1291.0974,319.45,1298.6679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link pool to allocate-->
<g id="link_pool_allocate">
<path d="M557.89,1239.2379 C589.58,1251.1179 622.9,1270.0379 641.5,1299.8179 C650.7,1314.5379 645.43,1321.9679 641.5,1338.8879 C628.27,1395.8279 621.1,1412.1779 583.5,1456.9479 C564.11,1480.0379 536.68,1500.0079 514.18,1514.1679 " fill="none" id="pool-to-allocate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="510.16,1516.6579,519.9161,1515.3094,514.408,1514.0207,515.6966,1508.5126,510.16,1516.6579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="188" x="634.5" y="1383.7849">pool check is not in all branches</text>
</g>
<!--link pool_iterate to pool_iterate-->
<g id="link_pool_iterate_pool_iterate">
<path d="M412.93,1310.7779 C433.5,1312.0679 447.5,1314.9279 447.5,1319.3479 C447.5,1323.3279 436.2,1326.0379 418.99,1327.4879 " fill="none" id="pool_iterate-to-pool_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="414.44,1327.8179,423.7123,1331.1382,419.4262,1327.4465,423.118,1323.1603,414.44,1327.8179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="182" x="453.5" y="1324.7449">address not in an allowed pool</text>
</g>
<!--link pool_iterate to inAllowedPool-->
<g id="link_pool_iterate_inAllowedPool">
<path d="M279.5,1339.2579 C279.5,1358.8179 279.5,1389.4779 279.5,1411.1179 " fill="none" id="pool_iterate-to-inAllowedPool" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="279.5,1416.0079,283.5,1407.0079,279.5,1411.0079,275.5,1407.0079,279.5,1416.0079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="158" x="280.5" y="1383.7849">address in an allowed pool</text>
</g>
<!--link pool_iterate to allocate-->
<g id="link_pool_iterate_allocate">
<path d="M405.43,1339.2479 C421.34,1346.3379 436.03,1355.9279 447.5,1368.8879 C482.63,1408.5679 481.73,1475.1879 478.08,1511.3279 " fill="none" id="pool_iterate-to-allocate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="477.55,1516.2079,482.5033,1507.6953,478.0928,1511.2375,474.5506,1506.8269,477.55,1516.2079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="479.5" y="1442.8149">no allowed pool</text>
</g>
<!--link inAllowedPool to allocate-->
<g id="link_inAllowedPool_allocate">
<path d="M317.1,1457.3279 C349.64,1473.6879 396.7,1497.3579 430.89,1514.5579 " fill="none" id="inAllowedPool-to-allocate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="435.33,1516.7879,429.0787,1509.1773,430.8607,1514.5461,425.4919,1516.3281,435.33,1516.7879" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link allocate to allocate_iterate-->
<g id="link_allocate_allocate_iterate">
<path d="M399.66,1557.3979 C383.63,1564.4479 368.06,1574.0279 356.5,1587.0179 C346.18,1598.6179 341.42,1615.4079 339.25,1629.3479 " fill="none" id="allocate-to-allocate_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="338.63,1634.0279,343.778,1625.6316,339.2871,1629.0713,335.8474,1624.5803,338.63,1634.0279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="228" x="357.5" y="1601.9149">start from preferred (last used) subnet</text>
</g>
<!--link allocate to getHRmode-->
<g id="link_allocate_getHRmode">
<path d="M552.86,1556.5279 C567.72,1563.5779 581.43,1573.3879 590.5,1587.0179 C646.76,1671.5379 572.93,1796.9279 537.05,1848.8479 " fill="none" id="allocate-to-getHRmode" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="534.36,1852.6879,542.7993,1847.6107,537.2283,1848.5924,536.2465,1843.0214,534.36,1852.6879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="182" x="605.5" y="1719.9849">allocation is not in all branches</text>
</g>
<!--link allocate_iterate to allocate_iterate-->
<g id="link_allocate_iterate_allocate_iterate">
<path d="M437.88,1644.9279 C458.07,1646.0979 472.5,1649.6479 472.5,1655.5579 C472.5,1660.8179 461.06,1664.2079 444.29,1665.7079 " fill="none" id="allocate_iterate-to-allocate_iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="439.39,1666.0679,448.6623,1669.3882,444.3762,1665.6965,448.068,1661.4103,439.39,1666.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="92" x="478.5" y="1660.9549">no free address</text>
</g>
<!--link allocate_iterate to allocated-->
<g id="link_allocate_iterate_allocated">
<path d="M348.58,1675.4579 C360.18,1695.2779 378.46,1726.4779 391.17,1748.1579 " fill="none" id="allocate_iterate-to-allocated" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="393.66,1752.4179,392.5601,1742.6307,391.1318,1748.1042,385.6582,1746.6758,393.66,1752.4179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122" x="377.5" y="1719.9849">found a free address</text>
</g>
<!--link allocated to getHRmode-->
<g id="link_allocated_getHRmode">
<path d="M427.48,1793.5279 C446.09,1809.5379 472.83,1832.5479 492.69,1849.6279 " fill="none" id="allocated-to-getHRmode" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="496.44,1852.8479,492.2264,1843.9459,492.6498,1849.5869,487.0088,1850.0103,496.44,1852.8479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link getHRmode to checkHRmode-->
<g id="link_getHRmode_checkHRmode">
<path d="M519.5,1893.5979 C519.5,1908.9279 519.5,1930.6779 519.5,1947.4979 " fill="none" id="getHRmode-to-checkHRmode" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="519.5,1952.3979,523.5,1943.3979,519.5,1947.3979,515.5,1943.3979,519.5,1952.3979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link checkHRmode to global-->
<g id="link_checkHRmode_global">
<path d="M499.95,1993.6679 C479.12,2013.8179 446.11,2045.7479 423.66,2067.4579 " fill="none" id="checkHRmode-to-global" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="420.13,2070.8779,429.3782,2067.4911,423.7221,2067.3999,423.8133,2061.7437,420.13,2070.8779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="20" x="467.5" y="2038.1849">yes</text>
</g>
<!--link checkHRmode to bySubnet-->
<g id="link_checkHRmode_bySubnet">
<path d="M539.05,1993.6679 C559.88,2013.8179 592.89,2045.7479 615.34,2067.4579 " fill="none" id="checkHRmode-to-bySubnet" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="618.87,2070.8779,615.1867,2061.7437,615.2779,2067.3999,609.6218,2067.4911,618.87,2070.8779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="16" x="587.5" y="2038.1849">no</text>
</g>
<!--link global to return-->
<g id="link_global_return">
<path d="M398,2111.5979 C397.82,2126.2979 399.86,2146.5079 410.5,2160.3579 C419.21,2171.6979 431.16,2180.4579 443.95,2187.2079 " fill="none" id="global-to-return" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="448.12,2189.2979,441.859,2181.6953,443.6479,2187.0618,438.2813,2188.8507,448.12,2189.2979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="179" x="411.5" y="2156.2549">return global host reservation</text>
</g>
<!--link bySubnet to return-->
<g id="link_bySubnet_return">
<path d="M630.17,2111.5779 C622.32,2126.0679 610.05,2146.0179 595.5,2160.3579 C585.35,2170.3579 572.79,2179.3379 560.79,2186.7779 " fill="none" id="bySubnet-to-return" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="556.61,2189.2979,566.3825,2188.0735,560.8912,2186.715,562.2497,2181.2237,556.61,2189.2979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="184" x="611.5" y="2156.2549">return subnet host reservation</text>
</g>
<text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="620" x="155.25" y="2245.1158">Only the initial lookup is always performed: other occasions to change the subnet so the current host are only in some branches</text>
<!--SRC=[bLR1Rjim3BtxAuYUMc0fDc27eOSEnGOinGuhsWye59k9XJfI82aDylUZH5cMR2TfBuP4yZrIbFHa9rs7KE-DGUMMsZhulVprzFuThl-YW6-tFsw_tbILs90NhbxsAuKENh33sacjha1O88yv3Y7ajnpcDBWMmOPeRA8vO2owbsXEo2NPwqxwiO0EXKLOQmFI9RDiVWOqJsNpscdzjjybXaU7HZW4hK1qdJwad3Om9PQIH3Bgp0fMnm7BbGM6jTwhvhNdcL_7LhYwbMh3C2w_FOYcCPyilXMcEGY3uB5eRSvqUGLb6Ldrp53KBbIV0-Y3vbtuhOwb2_l0lkV1TIBl3Cde29oXUhIXxfv3gb1MxCjEwuxhyQEFTF0WNHk24-f2q_h4FZIlMge7fdxACtjRxLCBK7Z8cYoYumCr5l6NgejXyJJc1IPNWluPeAs_t_b-R7N3XMxGBP_zBD-1SoZOT7ebuZRKBTPl8xnFop4J0iuOV1-fCeIlZYm-2V2CRczKhrpp81DYgYf852mMzuNmPEFW6ylAQ4un55HSNhW3fJDjqBjmYAV0-wdSZ0qm4qJyuUOksB6W599khkXepqaJA7VO_nak8YlbYQY2eTVMQkHUyEfcx_Si_RGHBcR8vV8B-CwJPQnVLOa_dPrxV15-FnR3SWgJ0ERb-vC_3h2LDZHzmf1woeuJ7OtES_sS8JwzzDZLQZuYdkbPx17j6LHGjj23S98SNsAlj5vudNX31IiZ53LYFa5FKWMcVfRw7wraxYM9iWLZJ6H3LXc4C6QYWdCE674IGQ_BFRHy54PeWXTwdU4lOyl2bIw3Izuyk4get9ejmJfXQ5EDtiBEu1f9lnguxWJfrzvYSnDbCESXeYJGVX7iyPjmeekJjFEbqAhM1eTBDOLbk5n2Pb6ieiDBCfGS131x8x8nO_YTu2CxTlRA7-gjOgXtiBgJEGvEl3PL8fW3dNXpAhhDcfe0_rHt33T2AkaaqKV5aVwfFOWZ_IAWeH-qBJPte2dGWAvhOOd3-gUwReNQ8Fy8SohBlsJ5m-MLJVjCj95MRt7OoVy0]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,67 +1,116 @@
<?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="699px" preserveAspectRatio="none" style="width:631px;height:699px;" version="1.1" viewBox="0 0 631 699" width="631px" zoomAndPan="magnify"><defs><filter height="300%" id="f14qs590hur024" 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="203" x="205" y="17.4023">lease states (Kea 1.8.0)</text><!--MD5=[4278daa906671312366ccb0dccb3e92f]
entity free--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="268" y="35.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="278" y="58.8744">Free</text><path d="M55,40.8392 L55,66.1498 A0,0 0 0 0 55,66.1498 L233,66.1498 A0,0 0 0 0 233,66.1498 L233,58.8392 L267.71,53.3392 L233,50.8392 L233,50.8392 L223,40.8392 L55,40.8392 A0,0 0 0 0 55,40.8392 " fill="#FBFB77" filter="url(#f14qs590hur024)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M223,40.8392 L223,50.8392 L233,50.8392 L223,40.8392 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="157" x="61" y="58.4076">not in the lease database</text><!--MD5=[4c0421e83b31106584008715812a1ea8]
entity assigned--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="83" x="256.5" y="210.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="63" x="266.5" y="233.8744">Assigned</text><!--MD5=[046a8c2cc2caa2564a440430281543c8]
entity assigned_expired--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="357" y="323.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="367" y="346.8744">Assigned expired</text><!--MD5=[be39be446611673079158bd75084bb29]
entity declined--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="130.5" y="436.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="59" x="140.5" y="459.8744">Declined</text><!--MD5=[b74f0280ed02bec002eedfc3903cd610]
entity declined_expired--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="38" y="549.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="116" x="48" y="572.8744">Declined expired</text><!--MD5=[309798e71ae1dfa592ce5bb406cc7544]
entity reclaimed--><rect fill="#FEFECE" filter="url(#f14qs590hur024)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="272.5" y="646.3392"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="131" x="282.5" y="669.8744">Expired-Reclaimed</text><!--MD5=[219c0a330ff1ab87a7e7f51a72cedfde]
link free to assigned--><path d="M276.19,71.5392 C260.17,90.0792 239.64,120.7892 248,149.3392 C254.2,170.4992 268.1,191.3692 279.68,206.1892 " fill="none" id="free-&gt;assigned" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="282.87,210.1992,280.3967,200.666,279.757,206.2865,274.1364,205.6468,282.87,210.1992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="249" y="145.9076">assignment</text><!--MD5=[d0e432b1584877a475e5f2fe76611e15]
reverse link free to assigned--><path d="M305.4,76.1392 C313.32,91.3492 322.85,112.4192 327,132.3392 C332.77,160.0292 319.25,191.2292 308.78,210.0792 " fill="none" id="free&lt;-assigned" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="303.01,71.6192,303.6712,81.4459,305.3429,76.0416,310.7471,77.7133,303.01,71.6192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="330" y="145.9076">release query</text><!--MD5=[7534ad65a31e40f6f58c860fbe4b1334]
link assigned to assigned_expired--><path d="M339.85,243.3892 C357.83,250.9992 378.09,261.8492 393,276.3392 C405.06,288.0492 413.79,304.9692 419.38,318.4692 " fill="none" id="assigned-&gt;assigned_expired" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="421.3,323.2692,421.6714,313.4274,419.443,318.6268,414.2436,316.3985,421.3,323.2692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="115" x="407" y="289.9076">after valid lifetime</text><!--MD5=[fde569cd6ac85f95e2a638ce16dc5096]
reverse link assigned to assigned_expired--><path d="M312.18,250.8492 C321.59,264.0992 334.8,280.8792 349,293.3392 C362.19,304.9092 378.61,315.2892 392.97,323.3192 " fill="none" id="assigned&lt;-assigned_expired" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="309.13,246.4992,311.0324,256.1626,312.005,250.59,317.5776,251.5626,309.13,246.4992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="34" x="350" y="289.9076">reuse</text><!--MD5=[21716a85bcf00f22f38541e3e291568a]
link assigned to assigned--><path d="M339.71,219.4792 C358.36,218.6392 374.5,221.5892 374.5,228.3392 C374.5,234.4592 361.25,237.4592 344.88,237.3392 " fill="none" id="assigned-&gt;assigned" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="339.71,237.1992,348.6042,241.4292,344.7083,237.3277,348.8098,233.4319,339.71,237.1992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="380.5" y="233.4076">renew query</text><!--MD5=[8bb46c3b4dde016c313b8e321f1d7e1a]
link assigned to declined--><path d="M269.68,246.4392 C245,262.9292 210.38,290.2192 192,323.3392 C173.05,357.4892 169.59,403.8692 169.39,430.9992 " fill="none" id="assigned-&gt;declined" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="169.39,436.1592,173.39,427.1592,169.39,431.1592,165.39,427.1592,169.39,436.1592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="193" y="346.4076">decline query</text><!--MD5=[8dc60d8855cbb8c3dba4463bc36210b7]
link declined to declined_expired--><path d="M157.58,472.3892 C151.4,481.1592 144,492.1192 138,502.3392 C130.01,515.9592 122.06,531.8392 116.09,544.3692 " fill="none" id="declined-&gt;declined_expired" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="113.82,549.1692,121.2851,542.7449,115.9586,544.6497,114.0538,539.3231,113.82,549.1692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="138" x="139" y="515.9076">after probation period</text><!--MD5=[6d44915acfde63a8254178afd3aa27e3]
reverse link assigned to declined_expired--><path d="M251.59,248.4092 C236.48,255.8492 220.22,265.2692 207,276.3392 C159.82,315.8392 153.14,333.6292 127,389.3392 C101.63,443.4092 102.58,516.5492 104.58,549.2792 " fill="none" id="assigned&lt;-declined_expired" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="256.23,246.1592,246.386,246.468,251.7269,248.3322,249.8627,253.673,256.23,246.1592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="34" x="128" y="402.9076">reuse</text><!--MD5=[bdcfcd9c1cacddd2a3f75c7ff5da35a5]
link assigned_expired to reclaimed--><path d="M422.75,359.5992 C409.44,413.6992 368.51,579.9992 353.55,640.7892 " fill="none" id="assigned_expired-&gt;reclaimed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="352.27,645.9992,358.3119,638.2213,353.4692,641.1452,350.5454,636.3025,352.27,645.9992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="388" y="515.9076">reclaim</text><!--MD5=[1c9e2837121ab398f7070aba53df7029]
link declined_expired to free--><path d="M75.18,549.2492 C45.8,530.4392 6,497.2292 6,455.3392 C6,139.8392 6,139.8392 6,139.8392 C6,27.1992 143.26,107.3192 250,71.3392 C254.16,69.9392 258.5,68.3592 262.75,66.7492 " fill="none" id="declined_expired-&gt;free" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="267.69,64.8392,257.8532,64.3528,263.0262,66.6418,260.7373,71.8148,267.69,64.8392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="7" y="289.9076">remove</text><!--MD5=[b52d5a7ca53f64269da3993e04180d07]
reverse link assigned to reclaimed--><path d="M299.31,251.7292 C301.08,283.8392 304,344.8492 304,396.8392 C304,396.8392 304,396.8392 304,568.3392 C304,597.7892 321.62,628.0092 334.56,646.2292 " fill="none" id="assigned&lt;-reclaimed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="299.02,246.4492,295.5152,255.6534,299.2918,251.4418,303.5033,255.2185,299.02,246.4492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="34" x="305" y="459.4076">reuse</text><!--MD5=[d78006695828b24d5c043b2b2f6223cc]
reverse link free to reclaimed--><path d="M323.27,57.1392 C395.5,64.6392 572,88.2592 572,139.8392 C572,139.8392 572,139.8392 572,568.3392 C572,634.3392 488.55,655.1692 423.52,661.3692 " fill="none" id="free&lt;-reclaimed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="318.25,56.6192,326.8045,61.4998,323.2249,57.1196,327.6051,53.5399,318.25,56.6192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="573" y="346.4076">remove</text><!--MD5=[7a97b2a903c7311ebfa1bcbf72f0a383]
link declined_expired to reclaimed--><!--MD5=[ad1f216ff27ad402bdd959662ff0ee60]
@startuml
title lease states (Kea 1.8.0)
agent "Free" as free
note left : not in the lease database
agent "Assigned" as assigned
agent "Assigned expired" as assigned_expired
agent "Declined" as declined
agent "Declined expired" as declined_expired
agent "Expired-Reclaimed" as reclaimed
free - - -> assigned : assignment
assigned -> assigned_expired : after valid lifetime
assigned -> assigned : renew query
assigned - - -> declined : decline query
assigned -up-> free : release query
declined - -> declined_expired : after probation period
assigned_expired -up-> assigned : reuse
declined_expired -up-> assigned : reuse
assigned_expired - - -> reclaimed : reclaim
declined_expired - - -> free : remove
reclaimed -up-> assigned : reuse
reclaimed -up- -> free : remove
declined_expired -[hidden]-> reclaimed
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="728px" preserveAspectRatio="none" style="width:617px;height:728px;background:#FFFFFF;" version="1.1" viewBox="0 0 617 728" width="617px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="156" x="223.5" y="24.9659">lease states (Kea 1.8.0)</text>
<!--entity free-->
<g id="elem_free">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="266.5" y="49.3979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="276.5" y="74.3639">Free</text>
</g>
<g id="elem_GMN3">
<path d="M61,55.0779 L61,82.7839 A0,0 0 0 0 61,82.7839 L231,82.7839 A0,0 0 0 0 231,82.7839 L231,73.0779 L266.26,68.9379 L231,65.0779 L231,65.0779 L221,55.0779 L61,55.0779 A0,0 0 0 0 61,55.0779 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M221,55.0779 L221,65.0779 L231,65.0779 L221,55.0779 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="149" x="67" y="73.9749">not in the lease database</text>
</g>
<!--entity assigned-->
<g id="elem_assigned">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="82" x="257" y="229.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="267" y="254.4339">Assigned</text>
</g>
<!--entity assigned_expired-->
<g id="elem_assigned_expired">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="137" x="353.5" y="347.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117" x="363.5" y="372.5039">Assigned expired</text>
</g>
<!--entity declined-->
<g id="elem_declined">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="79" x="129.5" y="465.6079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="59" x="139.5" y="490.5739">Declined</text>
</g>
<!--entity declined_expired-->
<g id="elem_declined_expired">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="134" x="40" y="583.6679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114" x="50" y="608.6339">Declined expired</text>
</g>
<!--entity reclaimed-->
<g id="elem_reclaimed">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="146" x="271" y="683.7379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="126" x="281" y="708.7039">Expired-Reclaimed</text>
</g>
<!--link free to assigned-->
<g id="link_free_assigned">
<path d="M273.81,88.6079 C258.11,108.0179 238.52,139.5279 247,168.4679 C253.01,188.9779 266.11,209.2079 277.53,224.1279 " fill="none" id="free-to-assigned" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="280.39,227.7879,278.0148,218.2298,277.3173,223.8435,271.7036,223.146,280.39,227.7879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="70" x="248" y="164.3649">assignment</text>
</g>
<!--reverse link free to assigned-->
<g id="link_free_assigned">
<path d="M303.84,94.7279 C311.04,110.0579 319.3,130.3779 323,149.4679 C328.44,177.5379 316.98,209.5379 307.84,229.2579 " fill="none" id="free-backto-assigned" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="301.7,90.2779,302.0088,100.1219,303.8729,94.7811,309.2138,96.6452,301.7,90.2779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="80" x="326" y="164.3649">release query</text>
</g>
<!--link assigned to assigned_expired-->
<g id="link_assigned_assigned_expired">
<path d="M339.42,264.1779 C357.42,272.0179 377.63,283.3079 392,298.5379 C403.22,310.4379 410.71,327.2279 415.39,341.0879 " fill="none" id="assigned-to-assigned_expired" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="416.89,345.7879,417.9535,335.9966,415.3646,341.0263,410.3349,338.4373,416.89,345.7879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="106" x="405" y="313.4349">after valid lifetime</text>
</g>
<!--reverse link assigned to assigned_expired-->
<g id="link_assigned_assigned_expired">
<path d="M313.23,274.0979 C322.56,287.7579 335.31,304.6379 349,317.5379 C360.86,328.6979 375.55,339.0079 388.65,347.2279 " fill="none" id="assigned-backto-assigned_expired" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="310.55,270.0979,312.2372,279.8012,313.3334,274.2516,318.883,275.3478,310.55,270.0979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="350" y="313.4349">reuse</text>
</g>
<!--link assigned to assigned-->
<g id="link_assigned_assigned">
<path d="M339.43,239.7679 C357.97,238.8879 374,241.9679 374,248.9979 C374,255.2179 361.51,258.3379 345.82,258.3879 " fill="none" id="assigned-to-assigned" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="340.95,258.2679,349.8562,262.4725,345.9487,258.3822,350.0391,254.4746,340.95,258.2679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="75" x="380" y="254.3949">renew query</text>
</g>
<!--link assigned to declined-->
<g id="link_assigned_declined">
<path d="M268.22,269.0179 C243.65,286.3679 210,314.3379 192,347.5379 C172.82,382.9179 168.88,430.4079 168.46,459.0679 " fill="none" id="assigned-to-declined" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="168.43,463.7179,172.4814,454.7409,168.4586,458.718,164.4815,454.6952,168.43,463.7179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="80" x="193" y="372.4649">decline query</text>
</g>
<!--link declined to declined_expired-->
<g id="link_declined_declined_expired">
<path d="M156.82,504.7479 C151.16,513.6679 144.49,524.5779 139,534.6679 C131.42,548.6079 123.78,564.6379 117.87,577.5879 " fill="none" id="declined-to-declined_expired" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="115.9,581.9179,123.2734,575.3886,117.9744,577.3685,115.9944,572.0695,115.9,581.9179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="133" x="140" y="549.5649">after probation period</text>
</g>
<!--reverse link assigned to declined_expired-->
<g id="link_assigned_declined_expired">
<path d="M251.01,269.6579 C235.72,277.3479 219.28,287.0879 206,298.5379 C158.17,339.7579 153.15,359.1379 127,416.6079 C101.37,472.9479 102.85,548.5379 105.26,583.2879 " fill="none" id="assigned-backto-declined_expired" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="255.22,267.5879,245.3791,267.9849,250.7365,269.8011,248.9203,275.1585,255.22,267.5879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="128" y="431.5049">reuse</text>
</g>
<!--link assigned_expired to reclaimed-->
<g id="link_assigned_expired_reclaimed">
<path d="M417.58,386.9979 C404.31,443.8679 364.78,613.2479 349.82,677.3379 " fill="none" id="assigned_expired-to-reclaimed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="348.71,682.0779,354.638,674.2129,349.8385,677.2069,346.8445,672.4074,348.71,682.0779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="384" y="549.5649">reclaim</text>
</g>
<!--link declined_expired to free-->
<g id="link_declined_expired_free">
<path d="M74.77,583.3279 C45.21,563.3179 6,528.7479 6,486.1379 C6,157.9679 6,157.9679 6,157.9679 C6,46.0679 142.63,126.1379 248,88.4679 C252.01,87.0379 256.18,85.4079 260.28,83.7379 " fill="none" id="declined_expired-to-free" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="264.81,81.8479,254.9636,81.628,260.1967,83.7761,258.0486,89.0092,264.81,81.8479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="46" x="7" y="313.4349">remove</text>
</g>
<!--reverse link assigned to reclaimed-->
<g id="link_assigned_reclaimed">
<path d="M298.47,275.3379 C299.06,309.3879 300,371.8079 300,425.1079 C300,425.1079 300,425.1079 300,604.2079 C300,633.8779 316.97,664.5179 329.84,683.4879 " fill="none" id="assigned-backto-reclaimed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="298.38,270.4279,294.5349,279.4952,298.4657,275.4272,302.5337,279.358,298.38,270.4279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="301" y="490.5349">reuse</text>
</g>
<!--reverse link free to reclaimed-->
<g id="link_free_reclaimed">
<path d="M321.67,73.3179 C392.62,81.9779 562,107.9079 562,157.9679 C562,157.9679 562,157.9679 562,604.2079 C562,669.1579 480.53,691.3479 417.2,698.7779 " fill="none" id="free-backto-reclaimed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="317.03,72.7579,325.4985,77.7863,321.9955,73.3446,326.4372,69.8416,317.03,72.7579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="46" x="563" y="372.4649">remove</text>
</g>
<!--link declined_expired to reclaimed-->
<!--SRC=[TP6nJiGm343tV8Lr4mmzmOOOa93W5ZPMX52Ek7UMsgGaxW5_ZzCskPRqDZjvVhOJ9cuG6jG18R1c373rWXfkjtVRcskbz04jmsRd4JUW0zGIAEiurjGCzo0na0K-9elHhFSIvDh74EXWqGprUagAMy2VZlm_wcCwpFGJVZQKN6PAYjk5Ar65wtdCgrS1DBKJxbEcLDmLggfwoFF8lcFOYa54wNY6f3OHhHazd7H31XggaKMxMYEiHulVyDMZ_vqXiNUQNw0fBB2-4swODeh6RnWPbQldgcB6phkzPd8MElJap7crZ8vD5XFtyic5yWAt8emJvTSUm25UKLRpzLft4jsvy4B39L0AoYvlHp86xVjyBFK7]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,99 +1,162 @@
<?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="974px" preserveAspectRatio="none" style="width:674px;height:974px;" version="1.1" viewBox="0 0 674 974" width="674px" zoomAndPan="magnify"><defs><filter height="300%" id="f1hatkcuz2d0l4" 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="300" x="178" y="17.4023">DHCP server main loop (Kea 1.8.0)</text><!--MD5=[f7a7ee0c51b4e04c55c1f405505b5a33]
cluster Main Loop--><rect fill="#FFFFFF" filter="url(#f1hatkcuz2d0l4)" height="911.86" style="stroke: #000000; stroke-width: 1.5;" width="650" x="7" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="294.5" y="43.7344">Main Loop</text><!--MD5=[5612987a0f9796801dd6d08eccf6974b]
cluster run_one--><rect fill="#FFFFFF" filter="url(#f1hatkcuz2d0l4)" height="467.86" style="stroke: #000000; stroke-width: 1.5;" width="572" x="49" y="170.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="79" x="295.5" y="185.7344">Event Loop</text><!--MD5=[983d0794f401e349a629364dfc448d7d]
entity run--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="145.5" y="63.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="155.5" y="86.7344">Wait for next event</text><!--MD5=[463fa6ce3d00da797e8ff80a4d9c8378]
entity shutdown--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="28.5" y="888.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="115" x="38.5" y="911.5944">Check Shutdown</text><!--MD5=[f73c77a11c1a01c10ee045ae76f5a064]
entity timeout--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="306.5" y="578.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="316.5" y="601.5944">Timeout</text><!--MD5=[53133b9ef51e4e7f3d2c6bacee8894bf]
entity signal--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="62" x="311" y="277.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="42" x="321" y="300.5944">Signal</text><!--MD5=[7492a645d94b1ba942c71cddc305dc30]
entity handleSignal--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="97" y="277.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="107" y="300.5944">Handle Signal</text><!--MD5=[82e30069e7a5a9e7454e349f4f7c28bc]
entity external_socket--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="97" y="378.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="107" y="401.5944">External Socket</text><!--MD5=[ba069a43eac8d7db5b41bef0d2c2bb79]
entity handleExternalSocket--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="178" x="395" y="378.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="158" x="405" y="401.5944">Handle External Socket</text><!--MD5=[a096c1983bcf686c95ea726f28f7a0ed]
entity query--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="371.5" y="479.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="83" x="381.5" y="502.5944">DHCP Query</text><!--MD5=[15a052d0312126cb226db0f9a615136d]
entity processQuery--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="97.5" y="479.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="97" x="107.5" y="502.5944">Process Query</text><!--MD5=[3ec86a5ecee919912764a4f49fada726]
entity poll--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="94" x="60" y="711.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="74" x="70" y="734.5944">I/O Service</text><!--MD5=[55a3d76f9f066a914db2e6a0219879c4]
entity ready--><rect fill="#FEFECE" filter="url(#f1hatkcuz2d0l4)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="275.5" y="711.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="153" x="285.5" y="734.5944">Execute ready handler</text><!--MD5=[5e1c1922f34751d45a9d92a38b9ac144]
link run to run_one--><path d="M265,99.3792 C265,114.9742 265,138.0042 265,157.8405 C265,160.32 265,162.7496 265,165.1086 C265,166.2881 265,167.4499 265,168.5915 C265,168.8768 265,169.161 265,169.4438 C265,169.5852 265,169.7263 265,169.867 " fill="none" id="run-&gt;run_one" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="265,169.867,269,160.867,265,164.867,261,160.867,265,169.867" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="236" y="142.7676">get next event</text><!--MD5=[0596cb5bc7e39429b5a70ee803d7702a]
link run_one to signal--><path d="M265,198.1292 C265,205.6592 265,286.0592 265,286.0592 C265,286.0592 305.68,286.0592 305.68,286.0592 " fill="none" id="run_one-&gt;signal" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="310.68,286.0592,301.68,282.0592,305.68,286.0592,301.68,290.0592,310.68,286.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[71bca8b2b5579f3e01e5a5e6d05e252f]
link signal to handleSignal--><path d="M310.96,295.0592 C310.96,295.0592 216.31,295.0592 216.31,295.0592 " fill="none" id="signal-&gt;handleSignal" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="211.31,295.0592,220.31,299.0592,216.31,295.0592,220.31,291.0592,211.31,295.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[59b958d73309821d887c593216a24bf9]
link handleSignal to poll--><path d="M96.78,295.0592 C86.25,295.0592 78.5,295.0592 78.5,295.0592 C78.5,295.0592 78.5,705.9592 78.5,705.9592 " fill="none" id="handleSignal-&gt;poll" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="78.5,710.9592,82.5,701.9592,78.5,705.9592,74.5,701.9592,78.5,710.9592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[85a6501bbdb71fe843a154c65df0b326]
link signal to external_socket--><path d="M310.78,304.0592 C273.76,304.0592 217,304.0592 217,304.0592 C217,304.0592 217,372.8792 217,372.8792 " fill="none" id="signal-&gt;external_socket" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="217,377.8792,221,368.8792,217,372.8792,213,368.8792,217,377.8792" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[3cd4ee53a51a0c2827ab7b17e0cc3c3c]
link external_socket to handleExternalSocket--><path d="M223.24,390.0592 C223.24,390.0592 389.87,390.0592 389.87,390.0592 " fill="none" id="external_socket-&gt;handleExternalSocket" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="394.87,390.0592,385.87,386.0592,389.87,390.0592,385.87,394.0592,394.87,390.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9e360989e7d922bcf27daccb5299f564]
link handleExternalSocket to poll--><path d="M394.76,402.0592 C335.73,402.0592 269.17,402.0592 269.17,402.0592 C269.17,402.0592 269.17,723.0592 269.17,723.0592 C269.17,723.0592 159.34,723.0592 159.34,723.0592 " fill="none" id="handleExternalSocket-&gt;poll" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="154.34,723.0592,163.34,727.0592,159.34,723.0592,163.34,719.0592,154.34,723.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[281658fee0b0d1e8e512917c18413af8]
link external_socket to query--><path d="M218.75,414.3792 C218.75,441.9792 218.75,491.0592 218.75,491.0592 C218.75,491.0592 366.46,491.0592 366.46,491.0592 " fill="none" id="external_socket-&gt;query" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="371.46,491.0592,362.46,487.0592,366.46,491.0592,362.46,495.0592,371.46,491.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0da47bb881eae3b3085d664f44c330f1]
link query to processQuery--><path d="M371.2,503.0592 C371.2,503.0592 219.62,503.0592 219.62,503.0592 " fill="none" id="query-&gt;processQuery" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="214.62,503.0592,223.62,507.0592,219.62,503.0592,223.62,499.0592,214.62,503.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[5ae6948e7f9ea24c9961deb19f615012]
link processQuery to poll--><path d="M116.33,515.2592 C116.33,515.2592 116.33,705.9392 116.33,705.9392 " fill="none" id="processQuery-&gt;poll" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="116.33,710.9392,120.33,701.9392,116.33,705.9392,112.33,701.9392,116.33,710.9392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[351006a45bcbe20db47f41960f495fbd]
link query to timeout--><path d="M377.5,515.2192 C377.5,515.2192 377.5,573.0192 377.5,573.0192 " fill="none" id="query-&gt;timeout" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="377.5,578.0192,381.5,569.0192,377.5,573.0192,373.5,569.0192,377.5,578.0192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8da1f0cfac91639d3cdbe4344b95ba5e]
link timeout to poll--><path d="M306.02,596.0592 C245.34,596.0592 135.17,596.0592 135.17,596.0592 C135.17,596.0592 135.17,705.8492 135.17,705.8492 " fill="none" id="timeout-&gt;poll" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="135.17,710.8492,139.17,701.8492,135.17,705.8492,131.17,701.8492,135.17,710.8492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="100" x="277" y="675.6276">timeout expired</text><!--MD5=[7fc4943622e5fd2b8bdecbc7965863a3]
link poll to ready--><path d="M154.07,735.0592 C154.07,735.0592 270.48,735.0592 270.48,735.0592 " fill="none" id="poll-&gt;ready" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="275.48,735.0592,266.48,731.0592,270.48,735.0592,266.48,739.0592,275.48,735.0592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[82806226eee1d65d24007de8ef94d3ba]
link poll to shutdown--><path d="M107,747.3392 C107,747.3392 107,882.8792 107,882.8792 " fill="none" id="poll-&gt;shutdown" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="107,887.8792,111,878.8792,107,882.8792,103,878.8792,107,887.8792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="105" x="102" y="823.6276">no ready handler</text><!--MD5=[9e95aa1826d8662af772234e20e4c11a]
link ready to ready--><path d="M285,711.0292 C285,691.4792 285,663.0592 285,663.0592 C285,663.0592 272.33,663.0592 272.33,663.0592 C272.33,663.0592 272.33,818.0592 272.33,818.0592 C272.33,818.0592 362,818.0592 362,818.0592 C362,818.0592 362,752.0692 362,752.0692 " fill="none" id="ready-&gt;ready" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="362,747.0692,358,756.0692,362,752.0692,366,756.0692,362,747.0692" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e3e9af49381d3719c9282a3c352c133e]
reverse link run to shutdown--><path d="M243.5,104.5792 C243.5,104.5792 243.5,906.0592 243.5,906.0592 C243.5,906.0592 202.48,906.0592 163.71,906.0592 " fill="none" id="run&lt;-shutdown" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="243.5,99.5792,239.5,108.5792,243.5,104.5792,247.5,108.5792,243.5,99.5792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="139" x="258.5" y="960.7272">dashed arrow means priority</text><!--MD5=[8fa551d0c9d64d50247cb50d8338b7c4]
@startuml
title DHCP server main loop (Kea 1.8.0)
skinparam linetype ortho
rectangle "Main Loop" {
agent "Wait for next event" as run
rectangle "Event Loop" as run_one {
together {
agent "Signal" as signal
agent "Handle Signal" as handleSignal
}
together {
agent "External Socket" as external_socket
agent "Handle External Socket" as handleExternalSocket
}
together {
agent "DHCP Query" as query
agent "Process Query" as processQuery
}
agent "Timeout" as timeout
}
together {
agent "I/O Service" as poll
agent "Execute ready handler" as ready
}
agent "Check Shutdown" as shutdown
}
run - -> run_one : get next event
run_one - -> signal
signal -right-> handleSignal : got signal
handleSignal - -> poll
signal -[dashed]-> external_socket
external_socket -right-> handleExternalSocket : external socket ready
handleExternalSocket - -> poll
external_socket -[dashed]-> query
query -right-> processQuery : DHCP socket ready
processQuery - -> poll
query -[dashed]-> timeout
timeout - -> poll : timeout expired
poll -> ready : handler ready
poll - - -> shutdown : no ready handler
ready -> ready : execute ready handler
shutdown -u-> run
footer dashed arrow means priority
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="883px" preserveAspectRatio="none" style="width:498px;height:883px;background:#FFFFFF;" version="1.1" viewBox="0 0 498 883" width="498px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="235" x="124.5" y="24.9659">DHCP server main loop (Kea 1.8.0)</text>
<!--cluster Main Loop-->
<g id="cluster_Main Loop">
<rect fill="none" height="809.48" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="485" x="7" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="73" x="213" y="64.0339">Main Loop</text>
</g>
<!--cluster run_one-->
<g id="cluster_run_one">
<rect fill="none" height="451.13" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="395" x="65" y="154.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="78" x="223.5" y="171.2439">Event Loop</text>
</g>
<!--entity run-->
<g id="elem_run">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="147" x="113.5" y="85.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="127" x="123.5" y="110.0339">Wait for next event</text>
</g>
<!--entity poll-->
<g id="elem_poll">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="93" x="108.5" y="641.4079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="73" x="118.5" y="666.3739">I/O Service</text>
</g>
<!--entity ready-->
<g id="elem_ready">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="171" x="236.5" y="641.4079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="151" x="246.5" y="666.3739">Execute ready handler</text>
</g>
<!--entity shutdown-->
<g id="elem_shutdown">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="132" x="56" y="801.4779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="66" y="826.4439">Check Shutdown</text>
</g>
<!--entity signal-->
<g id="elem_signal">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="62" x="246" y="245.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="42" x="256" y="270.1039">Signal</text>
</g>
<!--entity handleSignal-->
<g id="elem_handleSignal">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="97" y="245.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="107" y="270.1039">Handle Signal</text>
</g>
<!--entity external_socket-->
<g id="elem_external_socket">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="122" x="97" y="344.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="102" x="107" y="369.1739">External Socket</text>
</g>
<!--entity handleExternalSocket-->
<g id="elem_handleExternalSocket">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="174" x="254" y="344.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="154" x="264" y="369.1739">Handle External Socket</text>
</g>
<!--entity query-->
<g id="elem_query">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="102" x="248" y="443.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="82" x="258" y="468.2439">DHCP Query</text>
</g>
<!--entity processQuery-->
<g id="elem_processQuery">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="116" x="97" y="443.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="107" y="468.2439">Process Query</text>
</g>
<!--entity timeout-->
<g id="elem_timeout">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="75" x="226.5" y="542.3479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="55" x="236.5" y="567.3139">Timeout</text>
</g>
<!--link run to run_one-->
<g id="link_run_run_one">
<path d="M232,124.3879 C232,129.8504 232,135.9954 232,142.2182 C232,145.3296 232,148.4605 232,151.5352 C232,152.3039 232,153.0691 232,153.8296 C232,153.9246 232,154.0196 232,154.1145 " fill="none" id="run-to-run_one" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="232,154.1145,236,145.1145,232,149.1145,228,145.1145,232,154.1145" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87" x="144" y="150.0849">get next event</text>
</g>
<!--link run_one to signal-->
<g id="link_run_one_signal">
<path d="M232.06,185.5479 C233.31,185.5479 253.25,185.5479 253.25,185.5479 C253.25,185.5479 253.25,238.1979 253.25,238.1979 " fill="none" id="run_one-to-signal" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="253.25,243.1979,257.25,234.1979,253.25,238.1979,249.25,234.1979,253.25,243.1979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link signal to handleSignal-->
<g id="link_signal_handleSignal">
<path d="M245.64,258.5479 C245.64,258.5479 217.64,258.5479 217.64,258.5479 " fill="none" id="signal-to-handleSignal" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="212.64,258.5479,221.64,262.5479,217.64,258.5479,221.64,254.5479,212.64,258.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="59" x="186.89" y="273.4449">got signal</text>
</g>
<!--link handleSignal to poll-->
<g id="link_handleSignal_poll">
<path d="M96.86,265.5479 C85.25,265.5479 76.5,265.5479 76.5,265.5479 C76.5,265.5479 76.5,661.5479 76.5,661.5479 C76.5,661.5479 101.92,661.5479 101.92,661.5479 " fill="none" id="handleSignal-to-poll" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="106.92,661.5479,97.92,657.5479,101.92,661.5479,97.92,665.5479,106.92,661.5479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link signal to external_socket-->
<g id="link_signal_external_socket">
<path d="M245.64,271.5479 C230.26,271.5479 215,271.5479 215,271.5479 C215,271.5479 215,337.2279 215,337.2279 " fill="none" id="signal-to-external_socket" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/>
<polygon fill="#181818" points="215,342.2279,219,333.2279,215,337.2279,211,333.2279,215,342.2279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link external_socket to handleExternalSocket-->
<g id="link_external_socket_handleExternalSocket">
<path d="M219.45,354.5479 C219.45,354.5479 247.17,354.5479 247.17,354.5479 " fill="none" id="external_socket-to-handleExternalSocket" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="252.17,354.5479,243.17,350.5479,247.17,354.5479,243.17,358.5479,252.17,354.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="234.31" y="350.4449">external socket ready</text>
</g>
<!--link handleExternalSocket to poll-->
<g id="link_handleExternalSocket_poll">
<path d="M253.51,373.5479 C235.94,373.5479 222.75,373.5479 222.75,373.5479 C222.75,373.5479 222.75,651.5479 222.75,651.5479 C222.75,651.5479 208.2,651.5479 208.2,651.5479 " fill="none" id="handleExternalSocket-to-poll" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="203.2,651.5479,212.2,655.5479,208.2,651.5479,212.2,647.5479,203.2,651.5479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link external_socket to query-->
<g id="link_external_socket_query">
<path d="M219.4,364.5479 C222.66,364.5479 224.62,364.5479 224.62,364.5479 C224.62,364.5479 224.62,456.5479 224.62,456.5479 C224.62,456.5479 241.24,456.5479 241.24,456.5479 " fill="none" id="external_socket-to-query" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/>
<polygon fill="#181818" points="246.24,456.5479,237.24,452.5479,241.24,456.5479,237.24,460.5479,246.24,456.5479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link query to processQuery-->
<g id="link_query_processQuery">
<path d="M247.83,469.5479 C247.83,469.5479 219.89,469.5479 219.89,469.5479 " fill="none" id="query-to-processQuery" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="214.89,469.5479,223.89,473.5479,219.89,469.5479,223.89,465.5479,214.89,469.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="114" x="176.86" y="484.4449">DHCP socket ready</text>
</g>
<!--link processQuery to poll-->
<g id="link_processQuery_poll">
<path d="M155,482.5279 C155,482.5279 155,634.4979 155,634.4979 " fill="none" id="processQuery-to-poll" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="155,639.4979,159,630.4979,155,634.4979,151,630.4979,155,639.4979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link query to timeout-->
<g id="link_query_timeout">
<path d="M274.75,482.3779 C274.75,482.3779 274.75,535.4979 274.75,535.4979 " fill="none" id="query-to-timeout" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/>
<polygon fill="#181818" points="274.75,540.4979,278.75,531.4979,274.75,535.4979,270.75,531.4979,274.75,540.4979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link timeout to poll-->
<g id="link_timeout_poll">
<path d="M229.83,581.5679 C229.83,610.6179 229.83,661.5479 229.83,661.5479 C229.83,661.5479 208.48,661.5479 208.48,661.5479 " fill="none" id="timeout-to-poll" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="203.48,661.5479,212.48,665.5479,208.48,661.5479,212.48,657.5479,203.48,661.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="96" x="132.83" y="628.1349">timeout expired</text>
</g>
<!--link poll to ready-->
<g id="link_poll_ready">
<path d="M201.96,671.5479 C201.96,671.5479 229.64,671.5479 229.64,671.5479 " fill="none" id="poll-to-ready" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="234.64,671.5479,225.64,667.5479,229.64,671.5479,225.64,675.5479,234.64,671.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="83" x="174.3" y="686.4449">handler ready</text>
</g>
<!--link poll to shutdown-->
<g id="link_poll_shutdown">
<path d="M148.25,680.8979 C148.25,680.8979 148.25,794.5479 148.25,794.5479 " fill="none" id="poll-to-shutdown" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="148.25,799.5479,152.25,790.5479,148.25,794.5479,144.25,790.5479,148.25,799.5479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="102" x="45.25" y="733.6249">no ready handler</text>
</g>
<!--link ready to ready-->
<g id="link_ready_ready">
<path d="M269,641.1379 C269,627.3979 269,611.5479 269,611.5479 C269,611.5479 233.17,611.5479 233.17,611.5479 C233.17,611.5479 233.17,741.5479 233.17,741.5479 C233.17,741.5479 322,741.5479 322,741.5479 C322,741.5479 322,687.3879 322,687.3879 " fill="none" id="ready-to-ready" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="322,682.3879,318,691.3879,322,687.3879,326,691.3879,322,682.3879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="133" x="239.17" y="735.2349">execute ready handler</text>
</g>
<!--reverse link run to shutdown-->
<g id="link_run_shutdown">
<path d="M220.87,131.0479 C220.87,131.0479 220.87,821.5479 220.87,821.5479 C220.87,821.5479 206.39,821.5479 188.5,821.5479 " fill="none" id="run-backto-shutdown" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="220.88,126.0479,216.88,135.0479,220.88,131.0479,224.88,135.0479,220.88,126.0479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="139" x="172.5" y="872.2379">dashed arrow means priority</text>
<!--SRC=[VLF1ZjCm4BtFLunwWaDtuORsm6LPQLU0M5Ga3WYjh6GsiPfwWkFijaByEsEF7TnIk3JncpVlJVocmOQ1yDtjzJrEv9_8uyvOXmFpY2_Uay7N5sykNhq4cBRMZSQR7GxMKJYCXEn3pm2Ucc1S9pAhZx7tW_Iky2UWwSW5N7qrDk0ZUtIq3qXF0gxGJEXd1u1LzqqivNQjFx2Zg8I1EmgzJ1SFHNXZEsU6n9tIArJ5M-DQ4QquVK8K4E8l-9VkpJwG5n9kkDcI3aiPUvWITiRfN9TQbeeM_ckTWlWyap-a_X_nhVQwzzpGD5MKKP445Ed2_c9tnBEE4lGT4kF8EvFlBZ_XHbR0DgJ2FAGBNIw5cZcGv6NQG_umhpb5H7KpzxgdPekRVWujFpiDA1z0Q18ihjTlbu2lKAQfjWDA8P9oilh0jRTT7mIkmum270hpg18LqeUK_c-jcNfglmj-6kd9-TJhE4NnB7pCVBs7i-HbZByygdaqxFJxnxkELpprZrhx7H4MdwnIgPVyytEXYcY1Q3zQJoqaEEQJehugOHV3L4tHv4o5ulXuCK1FbGYTsnzO9DQpBWJ08xFS4UhaQBpdPzoHSN7LBNiR3l0R]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,160 +1,355 @@
<?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="1814px" preserveAspectRatio="none" style="width:1862px;height:1814px;" version="1.1" viewBox="0 0 1862 1814" width="1862px" zoomAndPan="magnify"><defs><filter height="300%" id="f1u1c8b25aigi3" 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="332" x="756" y="17.4023">DHCPv4 packet processing (Kea 1.8.0)</text><!--MD5=[91c043391605f0bbc36c648123f05f04]
cluster process--><rect fill="#FFFFFF" filter="url(#f1u1c8b25aigi3)" height="103" style="stroke: #000000; stroke-width: 1.5;" width="849" x="715" y="924.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="257" x="1011" y="939.7344">Process Query on its Message Type</text><!--MD5=[a6437f938727ef6368484703a6d5a51f]
entity processDiscover--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="1088" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="1098" y="990.7344">Process Discover</text><!--MD5=[776f46e8e787ed3ff8f7399fa81d4ef1]
entity processRequest--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="758.5" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="111" x="768.5" y="990.7344">Process Request</text><!--MD5=[fc7d6e37f840cd9a10a681e81df6f28b]
entity processRelease--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="128" x="925" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="108" x="935" y="990.7344">Process Release</text><!--MD5=[8d825f552c438f1d41e38a94f08e3f47]
entity processDecline--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="1257" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="1267" y="990.7344">Process Decline</text><!--MD5=[3b341f45531d1fcf2cf88cb83e9fdef4]
entity processInform--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="1418" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="102" x="1428" y="990.7344">Process Inform</text><!--MD5=[aa62c1eea3f70b4dbb2d8a2ad04d8b75]
entity receivePacket--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1560" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1570" y="51.7344">Receive query</text><path d="M1471,33.6992 L1471,59.0098 A0,0 0 0 0 1471,59.0098 L1525,59.0098 A0,0 0 0 0 1525,59.0098 L1525,51.6992 L1559.77,46.1992 L1525,43.6992 L1525,43.6992 L1515,33.6992 L1471,33.6992 A0,0 0 0 0 1471,33.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1515,33.6992 L1515,43.6992 L1525,43.6992 L1515,33.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="33" x="1477" y="51.2676">input</text><!--MD5=[37dd4220ca2f2608029cfa1ef00c2d62]
entity isServiceEnabled--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="1553.5" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="1563.5" y="148.7344">Service Enabled</text><!--MD5=[f1e4a9c8bda8d25100748cfdff400bf1]
entity buffer4_receive--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="1000.5" y="238.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="159" x="1010.5" y="261.7344">Callout buffer4_receive</text><path d="M1214.5,243.6992 L1214.5,252.1992 L1179.66,256.1992 L1214.5,260.1992 L1214.5,269.0098 A0,0 0 0 0 1214.5,269.0098 L1267.5,269.0098 A0,0 0 0 0 1267.5,269.0098 L1267.5,253.6992 L1257.5,243.6992 L1214.5,243.6992 A0,0 0 0 0 1214.5,243.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1257.5,243.6992 L1257.5,253.6992 L1267.5,253.6992 L1257.5,243.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1220.5" y="261.2676">hook</text><!--MD5=[ce6c3f645c8aec4915456c978c48f6f1]
entity unpack--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="640" y="351.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="650" y="374.7344">Unpack query</text><!--MD5=[f8582116def27e35cdbbbf5463e43073]
entity classify--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="115" x="639.5" y="448.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="95" x="649.5" y="471.7344">Classify query</text><!--MD5=[92aee3b8b080bbd52e01e7cb395370c4]
entity pkt4_receive--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="454.5" y="545.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="139" x="464.5" y="568.7344">Callout pkt4_receive</text><path d="M648.5,550.6992 L648.5,559.1992 L613.59,563.1992 L648.5,567.1992 L648.5,576.0098 A0,0 0 0 0 648.5,576.0098 L701.5,576.0098 A0,0 0 0 0 701.5,576.0098 L701.5,560.6992 L691.5,550.6992 L648.5,550.6992 A0,0 0 0 0 648.5,550.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M691.5,550.6992 L691.5,560.6992 L701.5,560.6992 L691.5,550.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="654.5" y="568.2676">hook</text><!--MD5=[7aeeef4718a003ce2e7ad9bcbdf71ad9]
entity drop_class--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="243.5" y="658.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="253.5" y="681.7344">Check DROP class</text><!--MD5=[a52533196b9ad0f42d77bd2c5acf5304]
entity same_client--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="333" x="147.5" y="755.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="313" x="157.5" y="778.7344">Avoid same client race in multi-threaded mode</text><path d="M587.5,760.6992 L587.5,769.1992 L480.63,773.1992 L587.5,777.1992 L587.5,786.0098 A0,0 0 0 0 587.5,786.0098 L790.5,786.0098 A0,0 0 0 0 790.5,786.0098 L790.5,770.6992 L780.5,760.6992 L587.5,760.6992 A0,0 0 0 0 587.5,760.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M780.5,760.6992 L780.5,770.6992 L790.5,770.6992 L780.5,760.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="593.5" y="778.2676">postpone processing or drop</text><!--MD5=[a8af8e48f2cc558a0fee70431885f908]
entity leases4_committed--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="1045.5" y="1098.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="177" x="1055.5" y="1121.7344">Callout leases4_committed</text><path d="M1277.5,1103.6992 L1277.5,1112.1992 L1242.75,1116.1992 L1277.5,1120.1992 L1277.5,1129.0098 A0,0 0 0 0 1277.5,1129.0098 L1330.5,1129.0098 A0,0 0 0 0 1330.5,1129.0098 L1330.5,1113.6992 L1320.5,1103.6992 L1277.5,1103.6992 A0,0 0 0 0 1277.5,1103.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1320.5,1103.6992 L1320.5,1113.6992 L1330.5,1113.6992 L1320.5,1103.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1283.5" y="1121.2676">hook</text><!--MD5=[8e18f13991ca58e5a79e0b81ed56b9db]
entity park--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="1119" y="1211.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="1129" y="1234.7344">Park</text><!--MD5=[145fde1089ff11319f35031b66a8b2bf]
entity pkt4_send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="943" y="1324.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="953" y="1347.7344">Callout pkt4_send</text><!--MD5=[62d5b04920c444814fafa1dbf06b35cd]
entity send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="1052.5" y="1647.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="101" x="1062.5" y="1670.7344">Send response</text><!--MD5=[5f600c2348a98514851ba709bbd3f597]
entity pack--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="1077" y="1437.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="98" x="1087" y="1460.7344">Pack response</text><!--MD5=[d6829aa81ee0cd45a2e878b8b13197d5]
entity buffer4_send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="1037" y="1534.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="144" x="1047" y="1557.7344">Callout buffer4_send</text><path d="M954.5,1652.6992 L954.5,1678.0098 A0,0 0 0 0 954.5,1678.0098 L1017.5,1678.0098 A0,0 0 0 0 1017.5,1678.0098 L1017.5,1670.6992 L1052.35,1665.1992 L1017.5,1662.6992 L1017.5,1662.6992 L1007.5,1652.6992 L954.5,1652.6992 A0,0 0 0 0 954.5,1652.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1007.5,1652.6992 L1007.5,1662.6992 L1017.5,1662.6992 L1007.5,1652.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="42" x="960.5" y="1670.2676">output</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="912.5" y="1744.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="83" x="922.5" y="1767.7344">Drop packet</text><path d="M826.5,1749.6992 L826.5,1775.0098 A0,0 0 0 0 826.5,1775.0098 L877.5,1775.0098 A0,0 0 0 0 877.5,1775.0098 L877.5,1767.6992 L912.49,1762.1992 L877.5,1759.6992 L877.5,1759.6992 L867.5,1749.6992 L826.5,1749.6992 A0,0 0 0 0 826.5,1749.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M867.5,1749.6992 L867.5,1759.6992 L877.5,1759.6992 L867.5,1749.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="30" x="832.5" y="1767.2676">error</text><!--MD5=[9670815d90e482d849702fdd57183fae]
link receivePacket to isServiceEnabled--><path d="M1617,64.6192 C1617,80.1592 1617,102.9792 1617,119.8592 " fill="none" id="receivePacket-&gt;isServiceEnabled" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1617,124.8892,1621,115.8892,1617,119.8892,1613,115.8892,1617,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8b6c78e5054b687dbc9e19308d3a0129]
link isServiceEnabled to buffer4_receive--><path d="M1553.43,157.5892 C1459.11,177.4592 1281.88,214.7792 1176.04,237.0792 " fill="none" id="isServiceEnabled-&gt;buffer4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1171.05,238.1292,1180.681,240.1893,1175.9427,237.0992,1179.0329,232.3609,1171.05,238.1292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="1386" y="204.7676">service is enabled</text><!--MD5=[228411fb88ef1bcdfe7f19b853e215d2]
link isServiceEnabled to drop--><path d="M1655.3,161.3592 C1689.09,179.3992 1733,211.2992 1733,255.1992 C1733,255.1992 1733,255.1992 1733,1666.1992 C1733,1737.9692 1198.66,1756.0992 1020.81,1760.1492 " fill="none" id="isServiceEnabled-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.65,1760.2592,1024.7391,1764.0525,1020.6487,1760.145,1024.5562,1756.0546,1015.65,1760.2592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="116" x="1734" y="896.7676">service is disabled</text><!--MD5=[939988dada0403ed6d1a4e6924dd7701]
link buffer4_receive to unpack--><path d="M1029.46,274.2992 C956.18,294.9992 833.42,329.6692 759.35,350.5892 " fill="none" id="buffer4_receive-&gt;unpack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="754.1,352.0692,763.8515,353.4505,758.9087,350.6994,761.6598,345.7566,754.1,352.0692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="918" y="317.7676">CONTINUE</text><!--MD5=[02f70f5bfef59fd4c02228f0fd276994]
link buffer4_receive to classify--><path d="M1066.12,274.4492 C1047.04,287.8992 1019.38,306.6792 994,321.1992 C907.16,370.8892 800.63,419.7792 741.66,445.8492 " fill="none" id="buffer4_receive-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="736.8,447.9892,746.6488,448.032,741.3778,445.9784,743.4314,440.7075,736.8,447.9892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="940" y="374.2676">SKIP</text><!--MD5=[41e6595d93b5d76e06ef1219c230b624]
link buffer4_receive to drop--><path d="M1179.77,272.9392 C1336.38,300.6992 1643,356.5292 1643,368.1992 C1643,368.1992 1643,368.1992 1643,1666.1992 C1643,1728.8292 1184.07,1752.6892 1020.81,1759.1992 " fill="none" id="buffer4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.59,1759.3992,1024.7431,1763.0353,1020.586,1759.1988,1024.4224,1755.0417,1015.59,1759.3992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1644" y="990.2676">DROP</text><!--MD5=[1ecae68ae42d9a73e40e9217f03f9ce7]
link unpack to classify--><path d="M697,387.6192 C697,403.1592 697,425.9792 697,442.8592 " fill="none" id="unpack-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="697,447.8892,701,438.8892,697,442.8892,693,438.8892,697,447.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[27fcba0ca5551c2a3eff6088113b3400]
link unpack to drop--><path d="M639.86,372.0692 C474.31,378.2592 6,401.3992 6,465.1992 C6,465.1992 6,465.1992 6,1666.1992 C6,1765.3592 797.05,1728.7492 895,1744.1992 C898.94,1744.8192 902.99,1745.5592 907.05,1746.3692 " fill="none" id="unpack-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.2,1747.4292,904.201,1741.6833,907.3044,1746.4129,902.5748,1749.5163,912.2,1747.4292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="7" y="1064.7676">on error</text><!--MD5=[6d44324a94e4b11142830ec71aa81556]
link classify to pkt4_receive--><path d="M667.48,484.3992 C639.44,500.7492 597.31,525.2992 567.9,542.4392 " fill="none" id="classify-&gt;pkt4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="563.3,545.1192,573.0915,544.0576,567.6235,542.6079,569.0733,537.1399,563.3,545.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0057d53684278b0199141f1c920049f3]
link pkt4_receive to drop_class--><path d="M499.2,581.2692 C481.2,590.1392 458.89,601.1892 439,611.1992 C409.58,626.0092 376.4,643.0092 351.62,655.7692 " fill="none" id="pkt4_receive-&gt;drop_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="347.1,658.0992,356.9329,657.5388,351.5461,655.8118,353.2731,650.425,347.1,658.0992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="440" y="624.7676">CONTINUE</text><!--MD5=[23d76d484a8ade2f68bc32d339275e55]
link pkt4_receive to drop--><path d="M534,581.4992 C534,603.3392 534,642.0492 534,675.1992 C534,675.1992 534,675.1992 534,1666.1992 C534,1687.5792 558.43,1677.3692 579,1683.1992 C716.63,1722.1692 755.29,1713.5292 895,1744.1992 C899.07,1745.0892 903.27,1746.0492 907.49,1747.0292 " fill="none" id="pkt4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.45,1748.1992,904.6015,1742.2493,907.5822,1747.0572,902.7743,1750.0379,912.45,1748.1992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="535" y="1177.7676">DROP</text><!--MD5=[2ba86aae9fb469d61f9b8011ebc0bd96]
link drop_class to same_client--><path d="M314,694.6192 C314,710.1592 314,732.9792 314,749.8592 " fill="none" id="drop_class-&gt;same_client" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="314,754.8892,318,745.8892,314,749.8892,310,745.8892,314,754.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[4eef49efa4e6a39b9cad1f9dd4db75c9]
link drop_class to drop--><path d="M243.48,679.2592 C179.13,685.3592 94,705.9492 94,772.1992 C94,772.1992 94,772.1992 94,1666.1992 C94,1720.9492 161.68,1676.3392 216,1683.1992 C337.59,1698.5492 367.98,1702.7792 490,1714.1992 C669.71,1731.0192 716.75,1715.8392 895,1744.1992 C898.94,1744.8292 902.99,1745.5692 907.05,1746.3792 " fill="none" id="drop_class-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.2,1747.4492,904.1976,1741.708,907.3038,1746.4357,902.576,1749.5419,912.2,1747.4492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="126" x="95" y="1234.2676">query in DROP class</text><!--MD5=[bb9b361438ecdeec2ed5ec34799fad2e]
link same_client to process--><path d="M347.12,791.2092 C395.425,816.0092 488.31,863.6992 569.655,905.4642 C610.3275,926.3467 648.115,945.748 676.0025,960.0661 C689.9463,967.2252 701.415,973.1134 709.5319,977.2807 C711.5611,978.3225 713.3808,979.2568 714.9774,980.0764 " fill="none" id="same_client-&gt;process" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="714.9774,980.0764,708.7978,972.4075,710.5293,977.7928,705.144,979.5244,714.9774,980.0764" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2de62570b816e5df0f82700c4b296cc3]
link same_client to drop--><path d="M299.7,791.2592 C288.57,806.3092 275,829.3392 275,852.1992 C275,852.1992 275,852.1992 275,1173.6992 C275,1222.3992 247.11,1229.1792 239,1277.1992 C237.74,1284.6492 238.76,1286.6492 239,1294.1992 C239.67,1315.1192 242,1320.2692 242,1341.1992 C242,1341.1992 242,1341.1992 242,1666.1992 C242,1713.3692 777.64,1725.3292 895,1744.1992 C898.94,1744.8292 902.99,1745.5792 907.05,1746.3992 " fill="none" id="same_client-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.19,1747.4692,904.2071,1741.7009,907.2973,1746.4392,902.559,1749.5293,912.19,1747.4692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="240" y="1290.7676">queries from the same client possible race</text><!--MD5=[3640933a3eded42de606c73d1c2efb26]
link process to drop--><path d="M714.7345,990.1215 C714.4884,990.2441 714.2376,990.3695 713.9823,990.4976 C712.9607,991.0103 711.8653,991.5676 710.703,992.1686 C708.3783,993.3708 705.7858,994.7482 702.9805,996.2952 C691.7591,1002.483 677.1319,1011.383 662.6163,1022.6242 C633.585,1045.1067 605,1076.9542 605,1115.1992 C605,1115.1992 605,1115.1992 605,1286.6992 C605,1382.9192 605,1406.9792 605,1503.1992 C605,1503.1992 605,1503.1992 605,1666.1992 C605,1670.0592 805.92,1721.3092 907.14,1746.8892 " fill="none" id="process-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.18,1748.1592,904.4231,1742.0904,907.3301,1746.9432,902.4774,1749.8502,912.18,1748.1592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="606" y="1403.7676">unknown message type</text><!--MD5=[952846e6e065ca3396c39be4d5d60980]
link processDiscover to leases4_committed--><path d="M1153.54,1003.3292 C1151.58,1026.3592 1148.08,1067.3592 1145.91,1092.8192 " fill="none" id="processDiscover-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1145.47,1097.9992,1150.2261,1089.3749,1145.8982,1093.0176,1142.2555,1088.6897,1145.47,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7f61b5f2e024f0ea6329d761794804a2]
link processDiscover to drop--><path d="M1178.66,1003.2492 C1195.43,1015.0392 1218.66,1030.7692 1240,1043.1992 C1301.84,1079.1992 1384,1043.6492 1384,1115.1992 C1384,1115.1992 1384,1115.1992 1384,1343.1992 C1384,1405.5792 1346.5,1559.4192 1323,1617.1992 C1310.64,1647.5792 1313.41,1660.2292 1290,1683.1992 C1252.31,1720.1992 1104.17,1743.9392 1021.16,1754.6292 " fill="none" id="processDiscover-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.79,1755.3092,1025.2217,1758.1453,1020.7503,1754.6802,1024.2153,1750.2088,1015.79,1755.3092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1380" y="1403.7676">on error</text><!--MD5=[f46ab6743faf3720230dd3ca9adf25a5]
link processRequest to leases4_committed--><path d="M845.36,1003.3592 C861.72,1015.8092 885.26,1032.3292 908,1043.1992 C957.4,1066.8292 1016.32,1084.8192 1062.92,1096.8992 " fill="none" id="processRequest-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1067.97,1098.1992,1060.2468,1092.0875,1063.1269,1096.9563,1058.2582,1099.8364,1067.97,1098.1992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[46780bcbdce00599e22cc2808afc4298]
link processRequest to drop--><path d="M814.47,1003.5592 C802.08,1027.7992 782,1073.5092 782,1115.1992 C782,1115.1992 782,1115.1992 782,1343.1992 C782,1504.6592 842.57,1536.4892 910,1683.1992 C916.56,1697.4792 918.33,1701.0892 927,1714.1992 C932.7,1722.8192 939.57,1731.8492 945.83,1739.6592 " fill="none" id="processRequest-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="949.23,1743.8592,946.6802,1734.3461,946.0857,1739.9717,940.4601,1739.3771,949.23,1743.8592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="786" y="1403.7676">on error</text><!--MD5=[dd5280f7a4fbe519a789693377d2c3dc]
link processRelease to leases4_committed--><path d="M1009.58,1003.3292 C1037.95,1026.9392 1089.01,1069.4292 1119.37,1094.6992 " fill="none" id="processRelease-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1123.33,1097.9992,1118.9735,1089.1663,1119.4877,1094.7997,1113.8543,1095.3139,1123.33,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9c1ccee308c843163ae9c7fab5373c87]
link processRelease to drop--><path d="M958.18,1003.1992 C924.12,1024.5192 874,1064.4892 874,1115.1992 C874,1115.1992 874,1115.1992 874,1343.1992 C874,1496.1392 893.83,1533.8992 927,1683.1992 C930.11,1697.2092 930.28,1701.0392 936,1714.1992 C939.7,1722.7092 944.65,1731.5692 949.37,1739.2792 " fill="none" id="processRelease-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="952.26,1743.9092,950.8732,1734.1585,949.6062,1739.6716,944.093,1738.4046,952.26,1743.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="876" y="1403.7676">on error</text><!--MD5=[762f153a4fd6a7efd08d553c7afbf530]
link processDecline to leases4_committed--><path d="M1296.63,1003.3292 C1264.28,1027.0392 1205.97,1069.7792 1171.54,1095.0092 " fill="none" id="processDecline-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1167.47,1097.9992,1177.0921,1095.8981,1171.5007,1095.0405,1172.3582,1089.4491,1167.47,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d9fbe084438a9903d341665e19467c6]
link processDecline to drop--><path d="M1344.72,1003.4392 C1388.71,1034.5392 1476,1098.3692 1476,1115.1992 C1476,1115.1992 1476,1115.1992 1476,1666.1992 C1476,1712.0592 1154.4,1744.8992 1020.96,1756.5492 " fill="none" id="processDecline-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.91,1756.9892,1025.2195,1760.2037,1020.8916,1756.561,1024.5344,1752.2331,1015.91,1756.9892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1477" y="1403.7676">on error</text><!--MD5=[403b2bcd25ba6f5a11641c975fae6de0]
link processInform to leases4_committed--><path d="M1459.75,1003.3292 C1444.69,1015.9292 1422.73,1032.6492 1401,1043.1992 C1350.13,1067.9092 1289.34,1085.4192 1239.66,1096.9892 " fill="none" id="processInform-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1234.58,1098.1592,1244.2506,1100.0248,1239.451,1097.0307,1242.445,1092.2312,1234.58,1098.1592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c5223c78dfc731d8a0b6dd3ad2587a32]
link processInform to drop--><path d="M1501,1003.2392 C1527.36,1025.7692 1568,1068.1292 1568,1115.1992 C1568,1115.1992 1568,1115.1992 1568,1666.1992 C1568,1721.2392 1171.5,1749.4592 1021.01,1758.1792 " fill="none" id="processInform-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.76,1758.4792,1024.9741,1761.9578,1020.7518,1758.1932,1024.5164,1753.9709,1015.76,1758.4792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1569" y="1403.7676">on error</text><!--MD5=[887612e1a41deb0055e6b261cad7b207]
link leases4_committed to pkt4_send--><path d="M1113.34,1134.3192 C1087.4,1150.5592 1051.56,1177.4592 1033,1211.1992 C1014.26,1245.2592 1012.51,1291.6692 1013.42,1318.8292 " fill="none" id="leases4_committed-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1013.63,1323.9992,1017.2398,1314.8358,1013.4153,1319.0038,1009.2472,1315.1793,1013.63,1323.9992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1034" y="1234.2676">CONTINUE</text><!--MD5=[03d4f1b76350f6f230f27d5a69f4e552]
link leases4_committed to drop--><path d="M1215.67,1134.3092 C1261.73,1150.0592 1313,1178.6992 1313,1228.1992 C1313,1228.1992 1313,1228.1992 1313,1399.6992 C1313,1528.5792 1332.51,1582.5492 1252,1683.1992 C1223.32,1719.0492 1096.3,1742.6492 1020.86,1753.7692 " fill="none" id="leases4_committed-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.52,1754.5492,1025.0071,1757.1941,1020.4666,1753.8201,1023.8405,1749.2796,1015.52,1754.5492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1315" y="1460.2676">DROP</text><!--MD5=[e6b479318b22374427e5a12769813441]
link leases4_committed to park--><path d="M1144,1134.5392 C1144,1153.7692 1144,1184.8292 1144,1205.8592 " fill="none" id="leases4_committed-&gt;park" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1144,1210.9792,1148,1201.9792,1144,1205.9792,1140,1201.9792,1144,1210.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1145" y="1177.7676">PARK</text><!--MD5=[6b0b05ab5b5e01054aa0e3030e86c15b]
link park to pkt4_send--><path d="M1124.13,1247.2992 C1101.18,1267.0392 1063.46,1299.4992 1038.93,1320.6092 " fill="none" id="park-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1035.11,1323.8992,1044.5412,1321.0616,1038.9002,1320.6382,1039.3236,1314.9972,1035.11,1323.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="1088" y="1290.7676">unpark</text><!--MD5=[e1e7c40ae99ae9db4be329f6b3cb143f]
link pkt4_send to pack--><path d="M1033.64,1360.2992 C1055.07,1379.9592 1090.25,1412.2292 1113.27,1433.3492 " fill="none" id="pkt4_send-&gt;pack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1117.14,1436.8992,1113.218,1427.8649,1113.4578,1433.5167,1107.806,1433.7565,1117.14,1436.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1083" y="1403.7676">CONTINUE</text><!--MD5=[729fab78839d14d65a522c939ef9b552]
link pkt4_send to buffer4_send--><path d="M1013.6,1360.3192 C1012.24,1386.3092 1012.69,1436.5492 1032,1473.1992 C1044.57,1497.0592 1067.55,1517.1692 1086.73,1530.9992 " fill="none" id="pkt4_send-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1091.02,1534.0292,1085.9763,1525.5698,1086.936,1531.1447,1081.3611,1532.1043,1091.02,1534.0292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="1033" y="1460.2676">SKIP</text><!--MD5=[7a343c005ca5222349b93a374f6aa4be]
link pkt4_send to drop--><path d="M1008.96,1360.3792 C993.2,1406.2292 951.09,1535.5692 937,1647.1992 C935,1663.0692 934.35,1667.4192 937,1683.1992 C940.27,1702.6292 947.81,1723.6792 954.1,1739.0092 " fill="none" id="pkt4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="956.17,1743.9792,956.39,1734.1328,954.2419,1739.3659,949.0087,1737.2179,956.17,1743.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="959" y="1557.2676">DROP</text><!--MD5=[e1b3754cee4214144faeedd0f77d1671]
link pack to buffer4_send--><path d="M1132.88,1473.6192 C1130.1,1489.1592 1126.02,1511.9792 1123,1528.8592 " fill="none" id="pack-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1122.1,1533.8892,1127.61,1525.7259,1122.973,1528.966,1119.7329,1524.3291,1122.1,1533.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0fe92c55fb860475c26b6ea914a50894]
link buffer4_send to send--><path d="M1118.06,1570.5392 C1117.02,1589.7692 1115.34,1620.8292 1114.21,1641.8592 " fill="none" id="buffer4_send-&gt;send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1113.93,1646.9792,1118.412,1638.2093,1114.201,1641.9866,1110.4237,1637.7756,1113.93,1646.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1117" y="1613.7676">CONTINUE</text><!--MD5=[887aa11356841167329c21249679272f]
link buffer4_send to drop--><path d="M1161.34,1570.3192 C1173.8,1577.5792 1185.96,1587.3992 1193,1600.1992 C1201.95,1616.4792 1222.86,1639.9692 1191,1683.1992 C1151.85,1736.3392 1074.24,1753.5792 1020.76,1758.9992 " fill="none" id="buffer4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.66,1759.4892,1025.0054,1762.5977,1020.6364,1759.0044,1024.2297,1754.6354,1015.66,1759.4892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1208" y="1670.2676">DROP</text><!--MD5=[6b25e4fe160ab604f67b02c1ded86970]
link send to drop--><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="225" x="809.5" y="1801.3555">dashed arrow means asynchronous processing</text><!--MD5=[3241bf81dfc1d82f66e0faca3c9d8456]
@startuml
title DHCPv4 packet processing (Kea 1.8.0)
agent "Receive query" as receivePacket
note left : input
agent "Service Enabled" as isServiceEnabled
agent "Callout buffer4_receive" as buffer4_receive
note right : hook
agent "Unpack query" as unpack
agent "Classify query" as classify
agent "Callout pkt4_receive" as pkt4_receive
note right : hook
agent "Check DROP class" as drop_class
agent "Avoid same client race in multi-threaded mode" as same_client
note right : postpone processing or drop
rectangle "Process Query on its Message Type" as process {
agent "Process Discover" as processDiscover
agent "Process Request" as processRequest
agent "Process Release" as processRelease
agent "Process Decline" as processDecline
agent "Process Inform" as processInform
}
agent "Callout leases4_committed" as leases4_committed
note right : hook
agent "Park" as park
agent "Callout pkt4_send" as pkt4_send
agent "Send response" as send
agent "Pack response" as pack
agent "Callout buffer4_send" as buffer4_send
agent "Send response" as send
note left : output
agent "Drop packet" as drop
note left : error
receivePacket - -> isServiceEnabled
isServiceEnabled - -> buffer4_receive : service is enabled
isServiceEnabled - - - -> drop : service is disabled
buffer4_receive - -> unpack : CONTINUE
buffer4_receive - -> classify : SKIP
buffer4_receive - - - -> drop : DROP
unpack - -> classify
unpack - - -> drop : on error
classify - -> pkt4_receive
pkt4_receive - -> drop_class : CONTINUE
pkt4_receive - - -> drop : DROP
drop_class - -> same_client
drop_class - - -> drop : query in DROP class
same_client - - -> process
same_client - - -> drop : queries from the same client possible race
process - - -> drop : unknown message type
processDiscover - -> leases4_committed
processDiscover - - -> drop : on error
processRequest - -> leases4_committed
processRequest - - -> drop : on error
processRelease - -> leases4_committed
processRelease - - -> drop : on error
processDecline - -> leases4_committed
processDecline - - -> drop : on error
processInform - -> leases4_committed
processInform - - -> drop : on error
leases4_committed - -> pkt4_send : CONTINUE
leases4_committed - - -> drop : DROP
leases4_committed - -> park : PARK
park -[dashed]-> pkt4_send : unpark
pkt4_send - -> pack : CONTINUE
pkt4_send - -> buffer4_send : SKIP
pkt4_send - - -> drop : DROP
pack - -> buffer4_send
buffer4_send - -> send : CONTINUE
buffer4_send - - -> drop : DROP
send -[hidden]-> drop
footer dashed arrow means asynchronous processing
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1930px" preserveAspectRatio="none" style="width:1791px;height:1930px;background:#FFFFFF;" version="1.1" viewBox="0 0 1791 1930" width="1791px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="260" x="758.5" y="24.9659">DHCPv4 packet processing (Kea 1.8.0)</text>
<!--cluster process-->
<g id="cluster_process">
<rect fill="none" height="109.06" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="842" x="680" y="975.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="243" x="979.5" y="992.5839">Process Query on its Message Type</text>
</g>
<!--entity processDiscover-->
<g id="elem_processDiscover">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="132" x="1050" y="1021.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="1060" y="1046.5839">Process Discover</text>
</g>
<!--entity processRequest-->
<g id="elem_processRequest">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="130" x="723" y="1021.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110" x="733" y="1046.5839">Process Request</text>
</g>
<!--entity processRelease-->
<g id="elem_processRelease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="127" x="888.5" y="1021.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="898.5" y="1046.5839">Process Release</text>
</g>
<!--entity processDecline-->
<g id="elem_processDecline">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="125" x="1216.5" y="1021.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="105" x="1226.5" y="1046.5839">Process Decline</text>
</g>
<!--entity processInform-->
<g id="elem_processInform">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="121" x="1376.5" y="1021.6179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101" x="1386.5" y="1046.5839">Process Inform</text>
</g>
<!--entity receivePacket-->
<g id="elem_receivePacket">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="1505" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="1515" y="72.0339">Receive query</text>
</g>
<g id="elem_GMN3">
<path d="M1417.5,52.7479 L1417.5,80.4539 A0,0 0 0 0 1417.5,80.4539 L1470.5,80.4539 A0,0 0 0 0 1470.5,80.4539 L1470.5,70.7479 L1504.6,66.6079 L1470.5,62.7479 L1470.5,62.7479 L1460.5,52.7479 L1417.5,52.7479 A0,0 0 0 0 1417.5,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1460.5,52.7479 L1460.5,62.7479 L1470.5,62.7479 L1460.5,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="32" x="1423.5" y="71.6449">input</text>
</g>
<!--entity isServiceEnabled-->
<g id="elem_isServiceEnabled">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="127" x="1498.5" y="147.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="1508.5" y="172.1039">Service Enabled</text>
</g>
<!--entity buffer4_receive-->
<g id="elem_buffer4_receive">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="175" x="974.5" y="265.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="155" x="984.5" y="290.1739">Callout buffer4_receive</text>
</g>
<g id="elem_GMN8">
<path d="M1185,270.8879 L1185,280.7379 L1149.89,284.7379 L1185,288.7379 L1185,298.5939 A0,0 0 0 0 1185,298.5939 L1237,298.5939 A0,0 0 0 0 1237,298.5939 L1237,280.8879 L1227,270.8879 L1185,270.8879 A0,0 0 0 0 1185,270.8879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1227,270.8879 L1227,280.8879 L1237,280.8879 L1227,270.8879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31" x="1191" y="289.7849">hook</text>
</g>
<!--entity unpack-->
<g id="elem_unpack">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="113" x="630.5" y="383.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="640.5" y="408.2439">Unpack query</text>
</g>
<!--entity classify-->
<g id="elem_classify">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="630" y="483.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="640" y="508.3039">Classify query</text>
</g>
<!--entity pkt4_receive-->
<g id="elem_pkt4_receive">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="154" x="459" y="583.4079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="134" x="469" y="608.3739">Callout pkt4_receive</text>
</g>
<g id="elem_GMN14">
<path d="M648,589.0879 L648,598.9479 L613.36,602.9479 L648,606.9479 L648,616.7939 A0,0 0 0 0 648,616.7939 L700,616.7939 A0,0 0 0 0 700,616.7939 L700,599.0879 L690,589.0879 L648,589.0879 A0,0 0 0 0 648,589.0879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M690,589.0879 L690,599.0879 L700,599.0879 L690,589.0879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31" x="654" y="607.9849">hook</text>
</g>
<!--entity drop_class-->
<g id="elem_drop_class">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="139" x="245.5" y="701.4779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="255.5" y="726.4439">Check DROP class</text>
</g>
<!--entity same_client-->
<g id="elem_same_client">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="336" x="147" y="801.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="316" x="157" y="826.5139">Avoid same client race in multi-threaded mode</text>
</g>
<g id="elem_GMN19">
<path d="M588.5,807.2279 L588.5,817.0779 L483.47,821.0779 L588.5,825.0779 L588.5,834.9339 A0,0 0 0 0 588.5,834.9339 L783.5,834.9339 A0,0 0 0 0 783.5,834.9339 L783.5,817.2279 L773.5,807.2279 L588.5,807.2279 A0,0 0 0 0 588.5,807.2279 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M773.5,807.2279 L773.5,817.2279 L783.5,817.2279 L773.5,807.2279 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="174" x="594.5" y="826.1249">postpone processing or drop</text>
</g>
<!--entity leases4_committed-->
<g id="elem_leases4_committed">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="199" x="991.5" y="1157.6779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="179" x="1001.5" y="1182.6439">Callout leases4_committed</text>
</g>
<g id="elem_GMN29">
<path d="M1225,1163.3679 L1225,1173.2179 L1191,1177.2179 L1225,1181.2179 L1225,1191.0739 A0,0 0 0 0 1225,1191.0739 L1277,1191.0739 A0,0 0 0 0 1277,1191.0739 L1277,1173.3679 L1267,1163.3679 L1225,1163.3679 A0,0 0 0 0 1225,1163.3679 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1267,1163.3679 L1267,1173.3679 L1277,1173.3679 L1267,1163.3679 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31" x="1231" y="1182.2649">hook</text>
</g>
<!--entity park-->
<g id="elem_park">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="1130.5" y="1275.7479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="1140.5" y="1300.7139">Park</text>
</g>
<!--entity pkt4_send-->
<g id="elem_pkt4_send">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="139" x="991.5" y="1393.8179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="1001.5" y="1418.7839">Callout pkt4_send</text>
</g>
<!--entity send-->
<g id="elem_send">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="1000" y="1730.0179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100" x="1010" y="1754.9839">Send response</text>
</g>
<!--entity pack-->
<g id="elem_pack">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="116" x="1003" y="1511.8879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="1013" y="1536.8539">Pack response</text>
</g>
<!--entity buffer4_send-->
<g id="elem_buffer4_send">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="160" x="953" y="1611.9579"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140" x="963" y="1636.9239">Callout buffer4_send</text>
</g>
<g id="elem_GMN37">
<path d="M855.5,1617.6379 L855.5,1645.3439 A0,0 0 0 0 855.5,1645.3439 L918.5,1645.3439 A0,0 0 0 0 918.5,1645.3439 L918.5,1635.6379 L952.8,1631.4879 L918.5,1627.6379 L918.5,1627.6379 L908.5,1617.6379 L855.5,1617.6379 A0,0 0 0 0 855.5,1617.6379 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M908.5,1617.6379 L908.5,1627.6379 L918.5,1627.6379 L908.5,1617.6379 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="42" x="861.5" y="1636.5349">output</text>
</g>
<!--entity drop-->
<g id="elem_drop">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="101" x="920.5" y="1830.0879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="930.5" y="1855.0539">Drop packet</text>
</g>
<g id="elem_GMN41">
<path d="M834.5,1835.7679 L834.5,1863.4739 A0,0 0 0 0 834.5,1863.4739 L885.5,1863.4739 A0,0 0 0 0 885.5,1863.4739 L885.5,1853.7679 L920.28,1849.6279 L885.5,1845.7679 L885.5,1845.7679 L875.5,1835.7679 L834.5,1835.7679 A0,0 0 0 0 834.5,1835.7679 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M875.5,1835.7679 L875.5,1845.7679 L885.5,1845.7679 L875.5,1835.7679 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30" x="840.5" y="1854.6649">error</text>
</g>
<!--link receivePacket to isServiceEnabled-->
<g id="link_receivePacket_isServiceEnabled">
<path d="M1562,86.5179 C1562,101.8479 1562,123.5879 1562,140.4079 " fill="none" id="receivePacket-to-isServiceEnabled" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1562,145.3079,1566,136.3079,1562,140.3079,1558,136.3079,1562,145.3079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link isServiceEnabled to buffer4_receive-->
<g id="link_isServiceEnabled_buffer4_receive">
<path d="M1498.17,182.4879 C1409.72,203.0279 1249.54,240.2079 1149.86,263.3479 " fill="none" id="isServiceEnabled-to-buffer4_receive" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1145.15,264.4379,1154.8218,266.2972,1150.0203,263.3063,1153.0112,258.5048,1145.15,264.4379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="104" x="1342" y="231.1049">service is enabled</text>
</g>
<!--link isServiceEnabled to drop-->
<g id="link_isServiceEnabled_drop">
<path d="M1600.28,186.6079 C1633.4,206.0079 1676,239.5379 1676,283.7379 C1676,283.7379 1676,283.7379 1676,1750.5579 C1676,1815.7879 1196.34,1840.1279 1028.31,1846.6579 " fill="none" id="isServiceEnabled-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.5,1846.8379,1032.6423,1850.5011,1028.4966,1846.6523,1032.3453,1842.5066,1023.5,1846.8379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="106" x="1677" y="947.5149">service is disabled</text>
</g>
<!--link buffer4_receive to unpack-->
<g id="link_buffer4_receive_unpack">
<path d="M1000.92,304.6479 C931.81,326.0379 819.84,360.6979 749.97,382.3179 " fill="none" id="buffer4_receive-to-unpack" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="745.2,383.7979,754.9823,384.9414,749.9739,382.3114,752.6039,377.3031,745.2,383.7979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="897" y="349.1749">CONTINUE</text>
</g>
<!--link buffer4_receive to classify-->
<g id="link_buffer4_receive_classify">
<path d="M1039.06,304.5979 C1021.3,318.7879 995.8,338.2779 972,353.2779 C891.44,404.0279 791.65,453.1479 734.06,480.2579 " fill="none" id="buffer4_receive-to-classify" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="729.65,482.3279,739.4967,482.1195,734.1751,480.201,736.0936,474.8794,729.65,482.3279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="27" x="922" y="408.2049">SKIP</text>
</g>
<!--link buffer4_receive to drop-->
<g id="link_buffer4_receive_drop">
<path d="M1149.71,302.9379 C1298.88,332.4779 1586,390.7779 1586,401.8079 C1586,401.8079 1586,401.8079 1586,1750.5579 C1586,1806.7379 1180.52,1836.3379 1028.04,1845.4879 " fill="none" id="buffer4_receive-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.36,1845.7679,1032.5834,1849.2217,1028.351,1845.4685,1032.1043,1841.2361,1023.36,1845.7679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="1587" y="1046.5449">DROP</text>
</g>
<!--link unpack to classify-->
<g id="link_unpack_classify">
<path d="M687,422.7179 C687,438.0479 687,459.7979 687,476.6179 " fill="none" id="unpack-to-classify" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="687,481.5079,691,472.5079,687,476.5079,683,472.5079,687,481.5079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link unpack to drop-->
<g id="link_unpack_drop">
<path d="M630.11,406.0479 C466.44,413.2279 6,439.0179 6,501.8779 C6,501.8779 6,501.8779 6,1750.5579 C6,1796.6079 52.59,1787.9079 97,1800.0879 C269.84,1847.5279 725.82,1803.0179 903,1830.0879 C906.56,1830.6379 910.21,1831.2979 913.87,1832.0479 " fill="none" id="unpack-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="918.55,1833.0679,910.6157,1827.2329,913.6661,1831.9969,908.9021,1835.0472,918.55,1833.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="7" y="1123.5749">on error</text>
</g>
<!--link classify to pkt4_receive-->
<g id="link_classify_pkt4_receive">
<path d="M657.89,522.7879 C632.9,539.0179 596.84,562.4279 570.43,579.5879 " fill="none" id="classify-to-pkt4_receive" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="566.55,582.0979,576.2763,580.5491,570.7429,579.374,571.918,573.8405,566.55,582.0979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link pkt4_receive to drop_class-->
<g id="link_pkt4_receive_drop_class">
<path d="M498.89,622.9779 C481.58,631.8879 460.71,642.6779 442,652.4779 C413.11,667.6179 380.64,684.8879 355.76,698.1779 " fill="none" id="pkt4_receive-to-drop_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="351.58,700.4079,361.4032,699.6971,355.9906,698.0528,357.6349,692.6402,351.58,700.4079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="443" y="667.3749">CONTINUE</text>
</g>
<!--link pkt4_receive to drop-->
<g id="link_pkt4_receive_drop">
<path d="M536,622.8379 C536,645.8179 536,685.7579 536,720.0079 C536,720.0079 536,720.0079 536,1750.5579 C536,1860.5579 649.96,1782.9379 903,1830.0879 C906.62,1830.7679 910.33,1831.5379 914.06,1832.3779 " fill="none" id="pkt4_receive-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="918.87,1833.4979,911.005,1827.5699,913.999,1832.3694,909.1994,1835.3635,918.87,1833.4979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="537" y="1241.6449">DROP</text>
</g>
<!--link drop_class to same_client-->
<g id="link_drop_class_same_client">
<path d="M315,740.9179 C315,756.2479 315,777.9979 315,794.8179 " fill="none" id="drop_class-to-same_client" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="315,799.7179,319,790.7179,315,794.7179,311,790.7179,315,799.7179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link drop_class to drop-->
<g id="link_drop_class_drop">
<path d="M245.07,724.7079 C180.33,731.3979 94,752.9179 94,820.0779 C94,820.0779 94,820.0779 94,1750.5579 C94,1903.2579 282.12,1784.1979 434,1800.0879 C641.74,1821.8279 696.97,1795.7879 903,1830.0879 C906.56,1830.6779 910.2,1831.3879 913.85,1832.1579 " fill="none" id="drop_class-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="918.53,1833.2079,910.612,1827.3508,913.6491,1832.1233,908.8766,1835.1603,918.53,1833.2079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="118" x="95" y="1300.6849">query in DROP class</text>
</g>
<!--link same_client to process-->
<g id="link_same_client_process">
<path d="M347.45,841.0479 C392.47,867.3679 476.635,916.5729 550.025,959.4792 C586.72,980.9323 620.7213,1000.8107 645.7888,1015.4665 C658.3225,1022.7944 668.6228,1028.8166 675.9097,1033.0772 C676.8205,1033.6098 677.6843,1034.1148 678.4995,1034.5914 C678.9071,1034.8298 679.3025,1035.061 679.6856,1035.285 " fill="none" id="same_client-to-process" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="679.6856,1035.285,673.9353,1027.2891,675.3693,1032.7612,669.8972,1034.1952,679.6856,1035.285" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link same_client to drop-->
<g id="link_same_client_drop">
<path d="M295.48,841.0979 C282.19,856.1279 267,878.3879 267,901.6179 C267,901.6179 267,901.6179 267,1237.2479 C267,1293.6179 257.26,1307.4779 259,1363.8179 C259.67,1385.4179 262,1390.7379 262,1412.3479 C262,1412.3479 262,1412.3479 262,1750.5579 C262,1862.9579 398.65,1784.7779 510,1800.0879 C683.54,1823.9579 730.38,1800.2579 903,1830.0879 C906.63,1830.7179 910.35,1831.4579 914.08,1832.2679 " fill="none" id="same_client-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="918.89,1833.3579,910.9884,1827.4788,914.0121,1832.2597,909.2312,1835.2834,918.89,1833.3579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="249" x="260" y="1359.7149">queries from the same client possible race</text>
</g>
<!--link process to drop-->
<g id="link_process_drop">
<path d="M679.8577,1049.157 C679.7594,1049.2455 679.6604,1049.3349 679.5607,1049.4249 C677.9649,1050.8664 676.1853,1052.5069 674.2595,1054.3326 C666.5566,1061.6354 656.5156,1071.9017 646.5513,1084.2479 C626.6225,1108.9404 607,1141.9529 607,1176.2179 C607,1176.2179 607,1176.2179 607,1355.3179 C607,1455.5979 607,1480.6679 607,1580.9579 C607,1580.9579 607,1580.9579 607,1750.5579 C607,1886.7779 771.51,1794.5079 903,1830.0879 C906.56,1831.0479 910.22,1832.0479 913.91,1833.0479 " fill="none" id="process-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="918.67,1834.3379,911.0365,1828.1146,913.8455,1833.0247,908.9354,1835.8338,918.67,1834.3379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="143" x="608" y="1477.7849">unknown message type</text>
</g>
<!--link processDiscover to leases4_committed-->
<g id="link_processDiscover_leases4_committed">
<path d="M1112.47,1061.0679 C1108.08,1084.6279 1100.56,1124.9379 1095.69,1151.0679 " fill="none" id="processDiscover-to-leases4_committed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1094.79,1155.8979,1100.3645,1147.7785,1095.702,1150.9818,1092.4987,1146.3193,1094.79,1155.8979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processDiscover to drop-->
<g id="link_processDiscover_drop">
<path d="M1141.38,1060.9579 C1157.61,1072.7479 1179.24,1088.0579 1199,1100.6779 C1255.63,1136.8679 1330,1109.0079 1330,1176.2179 C1330,1176.2179 1330,1176.2179 1330,1414.3479 C1330,1435.9679 1327.67,1441.2879 1327,1462.8879 C1326.74,1471.3279 1326.04,1473.4979 1327,1481.8879 C1332.14,1526.7979 1350,1535.7579 1350,1580.9579 C1350,1580.9579 1350,1580.9579 1350,1750.5579 C1350,1816.2779 1133.7,1838.6679 1027.91,1845.6879 " fill="none" id="processDiscover-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.23,1845.9879,1032.4632,1849.4154,1028.2202,1845.6743,1031.9613,1841.4312,1023.23,1845.9879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="1328" y="1477.7849">on error</text>
</g>
<!--link processRequest to leases4_committed-->
<g id="link_processRequest_leases4_committed">
<path d="M810.84,1060.9379 C826.91,1073.4679 849.33,1089.6079 871,1100.6779 C916.25,1123.8079 970.17,1142.4479 1013.3,1155.4279 " fill="none" id="processRequest-to-leases4_committed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1017.86,1156.7879,1010.3749,1150.3868,1013.0677,1155.3616,1008.0929,1158.0544,1017.86,1156.7879" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processRequest to drop-->
<g id="link_processRequest_drop">
<path d="M785.96,1060.7779 C783.3,1086.6379 779,1134.9279 779,1176.2179 C779,1176.2179 779,1176.2179 779,1414.3479 C779,1576.7879 769.86,1638.8979 867,1769.0879 C884.42,1792.4379 910.46,1812.3379 932.12,1826.3879 " fill="none" id="processRequest-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="936.25,1829.0279,930.8099,1820.8178,932.0335,1826.3408,926.5105,1827.5643,936.25,1829.0279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="779" y="1477.7849">on error</text>
</g>
<!--link processRelease to leases4_committed-->
<g id="link_processRelease_leases4_committed">
<path d="M971.62,1061.0679 C996.66,1085.2279 1039.97,1126.9979 1066.96,1153.0379 " fill="none" id="processRelease-to-leases4_committed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1070.39,1156.3379,1066.6879,1147.2113,1066.7908,1152.8672,1061.1349,1152.9701,1070.39,1156.3379" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processRelease to drop-->
<g id="link_processRelease_drop">
<path d="M931.31,1060.8179 C907.02,1084.8979 870,1129.2879 870,1176.2179 C870,1176.2179 870,1176.2179 870,1414.3479 C870,1520.4979 807.02,1549.4979 838,1651.0179 C859.66,1721.9979 916.3,1790.5579 948.24,1825.2179 " fill="none" id="processRelease-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="951.36,1828.5679,948.1796,1819.2467,947.9627,1824.8994,942.31,1824.6824,951.36,1828.5679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="866" y="1477.7849">on error</text>
</g>
<!--link processDecline to leases4_committed-->
<g id="link_processDecline_leases4_committed">
<path d="M1253.52,1061.0079 C1237.85,1072.5479 1217.34,1087.5679 1199,1100.6779 C1173.78,1118.7279 1145,1138.8279 1123.49,1153.7579 " fill="none" id="processDecline-to-leases4_committed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1119.43,1156.5779,1129.1039,1154.7298,1123.5368,1153.7259,1124.5407,1148.1589,1119.43,1156.5779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processDecline to drop-->
<g id="link_processDecline_drop">
<path d="M1302.45,1061.0779 C1342.78,1094.0579 1421,1160.1079 1421,1176.2179 C1421,1176.2179 1421,1176.2179 1421,1750.5579 C1421,1830.0879 1149.24,1845.2379 1028.1,1848.0379 " fill="none" id="processDecline-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.26,1848.1379,1032.3491,1851.9312,1028.2587,1848.0237,1032.1662,1843.9333,1023.26,1848.1379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="1422" y="1477.7849">on error</text>
</g>
<!--link processInform to leases4_committed-->
<g id="link_processInform_leases4_committed">
<path d="M1416.23,1061.1179 C1401.28,1073.8879 1380.1,1090.2479 1359,1100.6779 C1308.2,1125.8079 1247.72,1143.7579 1197.09,1155.8379 " fill="none" id="processInform-to-leases4_committed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1192.44,1156.9379,1202.1169,1158.7702,1197.3071,1155.7927,1200.2846,1150.9829,1192.44,1156.9379" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processInform to drop-->
<g id="link_processInform_drop">
<path d="M1455.93,1061.1579 C1478.14,1085.5879 1512,1130.3479 1512,1176.2179 C1512,1176.2179 1512,1176.2179 1512,1750.5579 C1512,1804.9879 1452.54,1785.8579 1400,1800.0879 C1270.09,1835.2779 1111.35,1844.9779 1028.14,1847.6379 " fill="none" id="processInform-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.31,1847.7879,1032.4312,1851.5032,1028.3075,1847.6309,1032.1799,1843.5072,1023.31,1847.7879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="1513" y="1477.7849">on error</text>
</g>
<!--link leases4_committed to pkt4_send-->
<g id="link_leases4_committed_pkt4_send">
<path d="M1078.99,1197.0979 C1067.68,1216.1179 1051.51,1246.6979 1045,1275.7479 C1036.36,1314.3079 1045.58,1360.0979 1053.17,1387.6579 " fill="none" id="leases4_committed-to-pkt4_send" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1054.45,1392.1279,1055.8505,1382.3791,1053.0896,1387.3165,1048.1522,1384.5557,1054.45,1392.1279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="1046" y="1300.6849">CONTINUE</text>
</g>
<!--link leases4_committed to drop-->
<g id="link_leases4_committed_drop">
<path d="M1128.87,1197.2279 C1142.26,1205.1379 1156.76,1215.1979 1168,1226.7479 C1185.64,1244.8979 1188.99,1251.7479 1197,1275.7479 C1250.04,1434.7279 1272.49,1487.9079 1234,1651.0179 C1215.74,1728.4279 1205.78,1763.8179 1135,1800.0879 C1101.17,1817.4279 1060.16,1829.5579 1027.61,1837.3579 " fill="none" id="leases4_committed-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.11,1838.4179,1032.7857,1840.2566,1027.9778,1837.2759,1030.9585,1832.468,1023.11,1838.4179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="1254" y="1536.8149">DROP</text>
</g>
<!--link leases4_committed to park-->
<g id="link_leases4_committed_park">
<path d="M1101.43,1197.1279 C1112.35,1216.9379 1129.55,1248.1379 1141.51,1269.8179 " fill="none" id="leases4_committed-to-park" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1143.85,1274.0579,1143.0139,1264.2446,1141.4388,1269.6777,1136.0056,1268.1026,1143.85,1274.0579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="32" x="1127" y="1241.6449">PARK</text>
</g>
<!--link park to pkt4_send-->
<g id="link_park_pkt4_send">
<path d="M1139.69,1315.1879 C1123.51,1335.1679 1097.94,1366.7379 1080.37,1388.4379 " fill="none" id="park-to-pkt4_send" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/>
<polygon fill="#181818" points="1077.26,1392.2779,1086.0398,1387.8153,1080.413,1388.3973,1079.8309,1382.7705,1077.26,1392.2779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="43" x="1114" y="1359.7149">unpark</text>
</g>
<!--link pkt4_send to pack-->
<g id="link_pkt4_send_pack">
<path d="M1061,1433.2579 C1061,1452.8179 1061,1483.4779 1061,1505.1179 " fill="none" id="pkt4_send-to-pack" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1061,1510.0079,1065,1501.0079,1061,1505.0079,1057,1501.0079,1061,1510.0079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="1062" y="1477.7849">CONTINUE</text>
</g>
<!--link pkt4_send to buffer4_send-->
<g id="link_pkt4_send_buffer4_send">
<path d="M1029.86,1433.1479 C1004.93,1450.1879 971.76,1477.8179 957,1511.8879 C941.54,1547.5879 974.65,1584.7179 1001.93,1607.7179 " fill="none" id="pkt4_send-to-buffer4_send" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1005.77,1610.8879,1001.3586,1602.0823,1001.9079,1607.7124,996.2777,1608.2617,1005.77,1610.8879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="27" x="958" y="1536.8149">SKIP</text>
</g>
<!--link pkt4_send to drop-->
<g id="link_pkt4_send_drop">
<path d="M1106.46,1433.2979 C1118.54,1440.6679 1130.13,1450.4079 1137,1462.8879 C1202.62,1582.1179 1210.65,1654.0179 1138,1769.0879 C1114,1807.1079 1066.3,1827.3279 1028,1837.8479 " fill="none" id="pkt4_send-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1023.4,1839.0679,1033.1219,1840.6444,1028.2352,1837.7947,1031.0848,1832.9081,1023.4,1839.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="1190" y="1636.8849">DROP</text>
</g>
<!--link pack to buffer4_send-->
<g id="link_pack_buffer4_send">
<path d="M1055.6,1551.3279 C1051.19,1566.7979 1044.91,1588.7879 1040.09,1605.6679 " fill="none" id="pack-to-buffer4_send" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1038.8,1610.1779,1045.1186,1602.6231,1040.1736,1605.3703,1037.4264,1600.4253,1038.8,1610.1779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link buffer4_send to send-->
<g id="link_buffer4_send_send">
<path d="M1037.4,1651.3979 C1041.97,1671.0379 1049.14,1701.8779 1054.18,1723.5379 " fill="none" id="buffer4_send-to-send" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1055.26,1728.1879,1057.1255,1718.5174,1054.1315,1723.3169,1049.332,1720.3229,1055.26,1728.1879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="1049" y="1695.9149">CONTINUE</text>
</g>
<!--link buffer4_send to drop-->
<g id="link_buffer4_send_drop">
<path d="M1007.81,1651.3279 C986.51,1668.9779 957.52,1697.4479 945,1730.0179 C932.96,1761.3479 945.95,1799.5979 957.5,1824.0279 " fill="none" id="buffer4_send-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="959.57,1828.2679,959.2236,1818.4252,957.3799,1823.7731,952.0319,1821.9294,959.57,1828.2679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="946" y="1754.9549">DROP</text>
</g>
<!--link send to drop-->
<text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacing" textLength="225" x="776" y="1919.9479">dashed arrow means asynchronous processing</text>
<!--SRC=[XLLDRzim3BthLn0zROSK6z33iCE08YcmebYRfUsfA0BLPc8XZkH9SefWs7yVzH5RifFq5Z- -Hr8I-MA5hH5cFwVptHKqlDYWXKQh0eqHSWsVxf33ryjlbry-CyRNA2rSBB10iKFuqwBUNm0te0Cozt8cbKMeSMNXEmZPjBPJFgBUYGBXHlAt6akl5IQY4Up8KrxNghNmrgvMgA-MiOWN3R1GKejrvMfMIcswBC_I7IhfjVL0NwNcTDBLFc4K4HfrqcnitaOAdEbXMY6rC5iyp4DkhosrQfR-i-DTxvGemV0j4ayuI7EwBI5XszPMJ6obaPTOmbQLeG77NGPkNhzHnZPAOlgMIlkYZ577biirlVl5F8JXjpizA0d26lX52BK4J_icdZEo_ZA8hHvqCs4AjKETqWxOYBn0kcHZKsw4Zb1hv0PpgeV6BI1TWCoe4HfHR-LAwMtA30ZxDtfhNyjSBGkrtGfhux2Eq3ElFkTw4qhHZ-EpP52M_I2vhsHLP4bxPUWHupLaORTgUJYVwi7kT8LIuADQwHvJidIHPpH7qIswOSxugBNIVj9wOu39vCTutOU0PmtscnAQQ1t209vMEgth9HUKmWJ5CAsZ1pyWmVJX_kds_ldcAElW2SHxlBkT7-4afTscivWt5VTOpwML2tVLLN31p5ZI3pX8WtMaRGzeWtOIZGkbnf65UfatH6S-lN6nH1QuSOt6WII9G0ChhRPWAypSZKpA27eORtFiO3Afl9KRgTx9_w8ZMN8aDh0PVvxnOevPHouzTw7pcNhIkKHU_b6Y0-bqekXW7voj8vrE50pkV9wESoJDIDJFfpE9T02FKGTJU28R6IGnvjUBE-P_JrvARYeiNmUbtFwGb_PGKEVhcqTJmpiiRyeODDZjR6QKMHA_FeEZ3mY3f05zgKHPedoDGSPMYWoJ_fFzKO7JTR_Je7Dfo57tigYqageroJyu-my0]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -1,203 +1,437 @@
<?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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2463px" preserveAspectRatio="none" style="width:2209px;height:2463px;background:#FFFFFF;" version="1.1" viewBox="0 0 2209 2463" width="2209px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="312" x="941.5" y="24.9659">Allocate a lease for DHCPREQUEST (Kea 1.8.0)</text>
<!--cluster check_hint-->
<g id="cluster_check_hint">
<rect fill="none" height="392.85" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="926" x="903" y="277.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="174" x="1279" y="294.1739">Check requested address</text>
</g>
<!--cluster get_existing-->
<g id="cluster_get_existing">
<rect fill="none" height="172.92" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="235" x="1554" y="379.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="219" x="1562" y="396.0339">Get lease for requested address</text>
</g>
<!--cluster check_done-->
<g id="cluster_check_done">
<rect fill="none" height="172.93" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="154" x="447" y="737.0579"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="123" x="462.5" y="754.0239">Check client lease</text>
</g>
<!--cluster new_lease-->
<g id="cluster_new_lease">
<rect fill="none" height="1404.29" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="1087" x="7" y="958.9879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="140" x="480.5" y="975.9539">Allocate a new lease</text>
</g>
<!--cluster allocateOrReuseLease4-->
<g id="cluster_allocateOrReuseLease4">
<rect fill="none" height="710.3" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="293" x="55" y="1526.9079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="156" x="123.5" y="1543.8739">Allocate or reuse lease</text>
</g>
<!--cluster allocateUnreservedLease4-->
<g id="cluster_allocateUnreservedLease4">
<rect fill="none" height="614.02" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="502" x="388" y="1086.8479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="177" x="550.5" y="1103.8139">Allocate unreserved lease</text>
</g>
<!--entity getReservedLease-->
<g id="elem_getReservedLease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="243" x="1086.5" y="488.9279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="223" x="1096.5" y="513.8939">Check lease for reserved address</text>
</g>
<!--entity out_of_pool-->
<g id="elem_out_of_pool">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="196" x="973" y="606.9879"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="176" x="983" y="631.9539">Check out-of-pool address</text>
</g>
<!--entity existing-->
<g id="elem_existing">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="172" x="1593" y="488.9279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="152" x="1603" y="513.8939">Check requested lease</text>
</g>
<!--entity client_lease-->
<g id="elem_client_lease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="106" x="471" y="846.9179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="86" x="481" y="871.8839">Check renew</text>
</g>
<!--entity create-->
<g id="elem_create">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="147" x="922.5" y="1773.8679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="127" x="932.5" y="1798.8339">Create a new lease</text>
</g>
<!--entity old_lease-->
<g id="elem_old_lease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="127" x="703.5" y="2300.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107" x="713.5" y="2325.1739">Delete old lease</text>
</g>
<!--entity candidate-->
<g id="elem_candidate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="153" x="166.5" y="1637.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133" x="176.5" y="1662.7739">Get candidate lease</text>
</g>
<!--entity reuseExpiredLease4-->
<g id="elem_reuseExpiredLease4">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="155" x="104.5" y="1773.8679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="135" x="114.5" y="1798.8339">Reuse expired lease</text>
</g>
<!--entity reclaimExpiredLease-->
<g id="elem_reclaimExpiredLease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="167" x="97.5" y="1873.9379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="147" x="107.5" y="1898.9039">Reclaim expired lease</text>
</g>
<!--entity updateLease4Information-->
<g id="elem_updateLease4Information">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="190" x="81" y="1974.0079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="170" x="91" y="1998.9739">update lease information</text>
</g>
<!--entity lease4_select-->
<g id="elem_lease4_select">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="159" x="78.5" y="2074.0779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="139" x="88.5" y="2099.0439">Callout lease4_select</text>
</g>
<g id="elem_GMN23">
<path d="M272,2079.7579 L272,2089.6079 L237.84,2093.6079 L272,2097.6079 L272,2107.4639 A0,0 0 0 0 272,2107.4639 L324,2107.4639 A0,0 0 0 0 324,2107.4639 L324,2089.7579 L314,2079.7579 L272,2079.7579 A0,0 0 0 0 272,2079.7579 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M314,2079.7579 L314,2089.7579 L324,2089.7579 L314,2079.7579 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31" x="278" y="2098.6549">hook</text>
</g>
<!--entity updateLease4-->
<g id="elem_updateLease4">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="108" x="188" y="2174.1479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="88" x="198" y="2199.1139">Update lease</text>
</g>
<!--entity iterate-->
<g id="elem_iterate">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="193" x="426.5" y="1178.7079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="173" x="436.5" y="1203.6739">Iterate pools and subnets</text>
</g>
<!--entity pick-->
<g id="elem_pick">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="104" x="486" y="1296.7779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="496" y="1321.7439">Pick address</text>
</g>
<!--entity pick_reserved-->
<g id="elem_pick_reserved">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="198" x="607" y="1414.8379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178" x="617" y="1439.8039">Check reserved addressed</text>
</g>
<!--entity mt_in_use-->
<g id="elem_mt_in_use">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="285" x="482.5" y="1537.7379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="265" x="492.5" y="1562.7039">Check already in use by another thread</text>
</g>
<!--entity pick_lease-->
<g id="elem_pick_lease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="99" x="451.5" y="1637.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="79" x="461.5" y="1662.7739">Check lease</text>
</g>
<!--entity findClientLease-->
<g id="elem_findClientLease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="1335.5" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="1345.5" y="72.0339">Find client lease</text>
</g>
<g id="elem_GMN3">
<path d="M1500,52.7479 L1500,62.5979 L1464.97,66.5979 L1500,70.5979 L1500,80.4539 A0,0 0 0 0 1500,80.4539 L1588,80.4539 A0,0 0 0 0 1588,80.4539 L1588,62.7479 L1578,52.7479 L1500,52.7479 A0,0 0 0 0 1500,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1578,52.7479 L1578,62.7479 L1588,62.7479 L1578,52.7479 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="67" x="1506" y="71.6449">entry point</text>
</g>
<!--entity addressReserved-->
<g id="elem_addressReserved">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="213" x="1564.5" y="165.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="193" x="1574.5" y="190.1039">Check requested reservation</text>
</g>
<!--entity hasAddressReservation-->
<g id="elem_hasAddressReservation">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="123" x="1068.5" y="165.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103" x="1078.5" y="190.1039">Get reservation</text>
</g>
<!--entity update_hint-->
<g id="elem_update_hint">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="200" x="1330" y="165.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="180" x="1340" y="190.1039">Update requested address</text>
</g>
<!--entity no_lease-->
<g id="elem_no_lease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="126" x="1382" y="2300.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106" x="1392" y="2325.1739">Return no lease</text>
</g>
<g id="elem_GMN36">
<path d="M1543,2305.8979 L1543,2315.7479 L1508.42,2319.7479 L1543,2323.7479 L1543,2333.6039 A0,0 0 0 0 1543,2333.6039 L1621,2333.6039 A0,0 0 0 0 1621,2333.6039 L1621,2315.8979 L1611,2305.8979 L1543,2305.8979 A0,0 0 0 0 1543,2305.8979 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1611,2305.8979 L1611,2315.8979 L1621,2315.8979 L1611,2305.8979 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="1549" y="2324.7949">exit point</text>
</g>
<!--entity renew-->
<g id="elem_renew">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="168" x="927" y="846.9179"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="148" x="937" y="871.8839">Return renewed lease</text>
</g>
<g id="elem_GMN40">
<path d="M1130,852.5979 L1130,862.4479 L1095.25,866.4479 L1130,870.4479 L1130,880.3039 A0,0 0 0 0 1130,880.3039 L1208,880.3039 A0,0 0 0 0 1208,880.3039 L1208,862.5979 L1198,852.5979 L1130,852.5979 A0,0 0 0 0 1130,852.5979 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M1198,852.5979 L1198,862.5979 L1208,862.5979 L1198,852.5979 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="1136" y="871.4949">exit point</text>
</g>
<!--entity return-->
<g id="elem_return">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="105" x="714.5" y="2418.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="724.5" y="2443.2439">Return lease</text>
</g>
<g id="elem_GMN44">
<path d="M854,2423.9579 L854,2433.8179 L819.66,2437.8179 L854,2441.8179 L854,2451.6639 A0,0 0 0 0 854,2451.6639 L932,2451.6639 A0,0 0 0 0 932,2451.6639 L932,2433.9579 L922,2423.9579 L854,2423.9579 A0,0 0 0 0 854,2423.9579 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M922,2423.9579 L922,2433.9579 L932,2433.9579 L922,2423.9579 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="860" y="2442.8549">exit point</text>
</g>
<!--link findClientLease to addressReserved-->
<g id="link_findClientLease_addressReserved">
<path d="M1444.14,86.5079 C1492.67,107.2879 1570.45,140.6079 1621.14,162.3179 " fill="none" id="findClientLease-to-addressReserved" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1625.48,164.1779,1618.7834,156.9561,1620.8843,162.2083,1615.632,164.3092,1625.48,164.1779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="170" x="1552" y="131.0349">has requested address (hint)</text>
</g>
<!--link findClientLease to hasAddressReservation-->
<g id="link_findClientLease_hasAddressReservation">
<path d="M1356.02,86.5079 C1307.67,107.2879 1230.18,140.6079 1179.68,162.3179 " fill="none" id="findClientLease-to-hasAddressReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1175.35,164.1679,1185.198,164.2992,1179.9457,162.1983,1182.0466,156.9461,1175.35,164.1679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165" x="1282" y="131.0349">no requested address (hint)</text>
</g>
<!--link addressReserved to check_hint-->
<g id="link_addressReserved_check_hint">
<path d="M1653.97,204.5579 C1638.88,221.2929 1616.365,246.2654 1597.3888,267.3129 C1595.0167,269.9439 1592.7,272.5135 1590.4599,274.998 C1589.8999,275.6191 1589.3447,276.2349 1588.7946,276.8451 " fill="none" id="addressReserved-to-check_hint" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1588.7946,276.8451,1597.792,272.8392,1592.1427,273.1315,1591.8504,267.4822,1588.7946,276.8451" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="152" x="1627" y="249.1049">no conflicting reservation</text>
</g>
<!--link addressReserved to no_lease-->
<g id="link_addressReserved_no_lease">
<path d="M1771.76,204.6379 C1863.26,224.8279 1984,260.2479 1984,306.5679 C1984,306.5679 1984,306.5679 1984,2194.6779 C1984,2299.1179 1627.93,2277.4479 1526,2300.2079 C1522.21,2301.0579 1518.33,2301.9279 1514.4,2302.8179 " fill="none" id="addressReserved-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1509.69,2303.8779,1519.3488,2305.8034,1514.5679,2302.7797,1517.5916,2297.9988,1509.69,2303.8779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="216" x="1985" y="1262.6749">reservation owned by another client</text>
</g>
<!--link hasAddressReservation to update_hint-->
<g id="link_hasAddressReservation_update_hint">
<path d="M1191.8,184.6679 C1229.64,184.6679 1279.11,184.6679 1323.15,184.6679 " fill="none" id="hasAddressReservation-to-update_hint" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1328.09,184.6679,1319.09,180.6679,1323.09,184.6679,1319.09,188.6679,1328.09,184.6679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="102" x="1209.75" y="177.5649">has a reservation</text>
</g>
<!--link update_hint to check_hint-->
<g id="link_update_hint_check_hint">
<path d="M1432.09,204.5379 C1434.6,219.2979 1440.09,239.5379 1452,253.2079 C1456.3938,258.2467 1461.3717,262.8532 1466.7236,267.0577 C1469.3996,269.1599 1472.169,271.1616 1475.0056,273.0665 C1476.4239,274.019 1477.859,274.9473 1479.3077,275.8518 C1480.032,276.3041 1480.7597,276.7505 1481.4903,277.1909 " fill="none" id="update_hint-to-check_hint" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1481.4903,277.1909,1475.8477,269.1187,1477.2082,274.6095,1471.7174,275.97,1481.4903,277.1909" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="151" x="1453" y="249.1049">request reserved address</text>
</g>
<!--link hasAddressReservation to check_done-->
<g id="link_hasAddressReservation_check_done">
<path d="M1068.19,186.7879 C928,191.0079 598,211.0779 598,306.5679 C598,306.5679 598,306.5679 598,627.5279 C598,657.9279 596.79,692.0479 595.56,718.8617 C595.4063,722.2134 595.2522,725.4509 595.1001,728.5528 C595.0241,730.1037 594.9486,731.6207 594.8739,733.1011 C594.8365,733.8413 594.7993,734.5724 594.7624,735.2939 C594.7439,735.6547 594.7255,736.0131 594.7072,736.3691 C594.698,736.5471 594.6889,736.7245 594.6797,736.9013 " fill="none" id="hasAddressReservation-to-check_done" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="594.6797,736.9013,599.1391,728.1198,594.9379,731.9079,591.1497,727.7067,594.6797,736.9013" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87" x="599" y="454.8249">no reservation</text>
</g>
<!--link check_hint to get_existing-->
<g id="link_check_hint_get_existing">
<path d="M1562,308.3479 C1562,311.2479 1562,335.5354 1562,359.4554 C1562,365.4354 1562,371.3924 1562,376.9866 C1562,377.6859 1562,378.3795 1562,379.0667 " fill="none" id="check_hint-to-get_existing" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1562,379.0667,1566,370.0667,1562,374.0667,1558,370.0667,1562,379.0667" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link get_existing to existing-->
<g id="link_get_existing_existing">
<path d="M1562.34,410.1979 C1566.97,414.0679 1618.62,457.1179 1651.62,484.6279 " fill="none" id="get_existing-to-existing" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1655.18,487.5979,1650.8235,478.765,1651.3377,484.3984,1645.7043,484.9126,1655.18,487.5979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="118" x="1621" y="454.8249">has requested lease</text>
</g>
<!--link existing to no_lease-->
<g id="link_existing_no_lease">
<path d="M1679,528.3579 C1679,551.3279 1679,591.2679 1679,625.5279 C1679,625.5279 1679,625.5279 1679,2194.6779 C1679,2232.9179 1580.23,2273.8379 1511.02,2297.8179 " fill="none" id="existing-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1506.69,2299.3079,1516.502,2300.1591,1511.4175,2297.6797,1513.8969,2292.5952,1506.69,2299.3079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="250" x="1680" y="1439.7749">not expired lease owned by another client</text>
</g>
<!--link get_existing to out_of_pool-->
<g id="link_get_existing_out_of_pool">
<path d="M1553.7013,410.1388 C1553.4182,410.1466 1553.1282,410.1547 1552.8314,410.163 C1548.0828,410.296 1541.5925,410.4854 1533.6022,410.7367 C1517.6218,411.2395 1495.6421,411.9901 1469.5986,413.0329 C1417.5116,415.1185 1349.1694,418.3729 1280.0562,423.1504 C1141.83,432.7054 1000.52,448.3529 980,472.9279 C952.92,505.3579 959.61,530.9779 980,567.9879 C988.27,583.0079 1002.3,594.6479 1016.9,603.4079 " fill="none" id="get_existing-to-out_of_pool" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1020.98,605.7579,1015.187,597.7929,1016.6503,603.2572,1011.1859,604.7205,1020.98,605.7579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87" x="981" y="513.8549">no reservation</text>
</g>
<!--link get_existing to out_of_pool-->
<g id="link_get_existing_out_of_pool">
<path d="M1553.7208,411.9855 C1553.6146,412.0133 1553.5076,412.0414 1553.3996,412.0698 C1553.1837,412.1266 1552.9642,412.1845 1552.7411,412.2435 C1551.8486,412.4797 1550.8989,412.7341 1549.8951,413.0069 C1547.8877,413.5524 1545.6642,414.1711 1543.2506,414.8639 C1533.5963,417.6348 1520.9,421.5892 1506.82,426.7704 C1478.66,437.1329 1444.965,452.4029 1419,472.9279 C1377.42,505.7879 1391.79,539.6579 1347,567.9879 C1296.02,600.2479 1230.15,614.7779 1175.55,621.1779 " fill="none" id="get_existing-to-out_of_pool-1" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1170.79,621.7079,1180.1795,624.6807,1175.7589,621.1511,1179.2885,616.7305,1170.79,621.7079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="156" x="1420" y="513.8549">has requested reservation</text>
</g>
<!--link get_existing to getReservedLease-->
<g id="link_get_existing_getReservedLease">
<path d="M1553.4552,409.9078 C1552.9981,409.9078 1552.5239,409.908 1552.0329,409.9083 C1551.0509,409.9088 1550.0018,409.9097 1548.8879,409.9113 C1546.6601,409.9143 1544.1733,409.9196 1541.4469,409.9281 C1530.5414,409.9623 1515.8032,410.0482 1498.477,410.249 C1463.8247,410.6507 1418.8206,411.5123 1373.4238,413.3392 C1282.63,416.9929 1190.265,424.5079 1176,439.9279 C1164.54,452.3079 1172.98,469.5379 1184.06,483.4879 " fill="none" id="get_existing-to-getReservedLease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1187.26,487.3079,1184.5539,477.8381,1184.0521,483.4727,1178.4175,482.9708,1187.26,487.3079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="213" x="1177" y="454.8249">has reservation for another address</text>
</g>
<!--link getReservedLease to no_lease-->
<g id="link_getReservedLease_no_lease">
<path d="M1250.44,528.4779 C1323.43,561.2179 1465,624.7979 1465,625.5279 C1465,625.5279 1465,625.5279 1465,1376.3379 C1465,1412.8479 1470.29,1424.5679 1492,1453.9079 C1505.43,1472.0579 1519.93,1465.4979 1533,1483.9079 C1552.45,1511.3279 1555,1522.6579 1555,1556.2679 C1555,1556.2679 1555,1556.2679 1555,2194.6779 C1555,2238.8979 1515.39,2274.7179 1483.71,2296.3079 " fill="none" id="getReservedLease-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1479.56,2299.0679,1489.2673,2297.4038,1483.7203,2296.2944,1484.8297,2290.7474,1479.56,2299.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="142" x="1493" y="1439.7749">no active reserved lease</text>
</g>
<!--link getReservedLease to out_of_pool-->
<g id="link_getReservedLease_out_of_pool">
<path d="M1185.68,528.3679 C1161.8,548.5979 1123.9,580.7079 1098.26,602.4279 " fill="none" id="getReservedLease-to-out_of_pool" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1094.46,605.6479,1103.9138,602.8864,1098.2764,602.4176,1098.7452,596.7802,1094.46,605.6479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link out_of_pool to check_done-->
<g id="link_out_of_pool_check_done">
<path d="M1042.32,646.4379 C1011.08,666.1379 959,696.4079 910,713.0579 C843.42,735.6829 765.5875,748.9629 703.7075,756.6167 C672.7675,760.4435 645.8156,762.8639 626.2525,764.3424 C616.4709,765.0817 608.5366,765.5856 602.8745,765.9122 C602.5206,765.9326 602.1756,765.9523 601.8395,765.9713 C601.6715,765.9808 601.5058,765.9902 601.3422,765.9994 " fill="none" id="out_of_pool-to-check_done" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="601.3422,765.9994,610.5523,769.4885,606.3344,765.719,610.1038,761.5011,601.3422,765.9994" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="269" x="957" y="708.9549">owned reservation for the requested address</text>
</g>
<!--link out_of_pool to check_done-->
<g id="link_out_of_pool_check_done">
<path d="M972.77,636.7379 C870.54,647.5379 718.2,667.4179 666,694.0579 C646.29,704.1179 628.5475,721.4104 615.49,736.5679 C612.2256,740.3573 609.2541,744.0132 606.6178,747.3894 C605.2996,749.0774 604.0653,750.6955 602.9201,752.2254 C602.3475,752.9903 601.7972,753.7332 601.2698,754.4517 C601.2039,754.5416 601.1383,754.631 601.0731,754.72 " fill="none" id="out_of_pool-to-check_done-1" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="601.0731,754.72,609.6174,749.8216,604.027,750.6859,603.1627,745.0954,601.0731,754.72" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="234" x="667" y="708.9549">requested address is in allowed an pool</text>
</g>
<!--link out_of_pool to no_lease-->
<g id="link_out_of_pool_no_lease">
<path d="M1154.92,646.5479 C1183.44,656.5979 1213.5,671.6779 1235,694.0579 C1258.67,718.7079 1261,732.2479 1261,766.4179 C1261,766.4179 1261,766.4179 1258,1494.4079 C1258,1740.6479 1335,1796.8379 1335,2043.0779 C1335,2043.0779 1335,2043.0779 1335,2194.6779 C1335,2238.8979 1374.61,2274.7179 1406.29,2296.3079 " fill="none" id="out_of_pool-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1410.44,2299.0679,1405.1703,2290.7474,1406.2797,2296.2944,1400.7327,2297.4038,1410.44,2299.0679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="269" x="1262" y="1498.8049">address not reserved and not in allowed pool</text>
</g>
<!--link check_done to client_lease-->
<g id="link_check_done_client_lease">
<path d="M592.8,768.1979 C590.1,772.0079 560.44,813.9479 540.95,841.4879 " fill="none" id="check_done-to-client_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="538.08,845.5579,546.5477,840.5282,540.9713,841.4786,540.0209,835.9022,538.08,845.5579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="99" x="572" y="812.8149">has a client lease</text>
</g>
<!--link client_lease to renew-->
<g id="link_client_lease_renew">
<path d="M577.04,866.4479 C659.51,866.4479 819.44,866.4479 920.42,866.4479 " fill="none" id="client_lease-to-renew" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="925.18,866.4479,916.18,862.4479,920.18,866.4479,916.18,870.4479,925.18,866.4479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="314" x="595" y="859.3449">requested address was already assigned to the client</text>
</g>
<!--link client_lease to new_lease-->
<g id="link_client_lease_new_lease">
<path d="M523.84,886.3379 C523.705,903.0729 523.5,928.0454 523.3263,949.0929 C523.3045,951.7239 523.2833,954.2935 523.2628,956.778 C523.2576,957.3991 523.2525,958.0149 523.2475,958.6251 " fill="none" id="client_lease-to-new_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="523.2475,958.6251,527.3218,949.6585,523.2888,953.6252,519.3221,949.5923,523.2475,958.6251" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link new_lease to allocateOrReuseLease4-->
<g id="link_new_lease_allocateOrReuseLease4">
<path d="M522.5,989.9379 C508.82,992.3279 217,1044.3579 217,1116.2079 C217,1116.2079 217,1116.2079 217,1435.3779 C217,1462.0279 220.6325,1491.7304 224.3225,1515.0242 C224.7838,1517.9359 225.2459,1520.7475 225.702,1523.4404 C225.816,1524.1137 225.9296,1524.7795 226.0428,1525.4376 C226.0993,1525.7667 226.1558,1526.0938 226.2121,1526.419 C226.2403,1526.5816 226.2684,1526.7437 226.2965,1526.9053 " fill="none" id="new_lease-to-allocateOrReuseLease4" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="226.2965,1526.9053,228.6962,1517.3533,225.4403,1521.9791,220.8144,1518.7232,226.2965,1526.9053" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="145" x="218" y="1262.6749">has a requested address</text>
</g>
<!--link new_lease to allocateUnreservedLease4-->
<g id="link_new_lease_allocateUnreservedLease4">
<path d="M523,989.9379 C523,991.8229 523,1022.4404 523,1053.0504 C523,1060.7029 523,1068.3549 523,1075.5574 C523,1079.1587 523,1082.6476 523,1085.9679 C523,1086.1754 523,1086.3823 523,1086.5885 " fill="none" id="new_lease-to-allocateUnreservedLease4" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="523,1086.5885,527,1077.5885,523,1081.5885,519,1077.5885,523,1086.5885" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="130" x="524" y="1034.7449">no requested address</text>
</g>
<!--link allocateOrReuseLease4 to candidate-->
<g id="link_allocateOrReuseLease4_candidate">
<path d="M232.01,1558.3379 C232.23,1560.3179 237.01,1602.9479 240.19,1631.3279 " fill="none" id="allocateOrReuseLease4-to-candidate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="240.72,1635.9879,243.6928,1626.5984,240.1631,1631.019,235.7425,1627.4894,240.72,1635.9879" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link candidate to reuseExpiredLease4-->
<g id="link_candidate_reuseExpiredLease4">
<path d="M234.39,1677.2579 C223.58,1701.0179 205.02,1741.8079 193.14,1767.9179 " fill="none" id="candidate-to-reuseExpiredLease4" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="191.19,1772.1979,198.5557,1765.6598,193.259,1767.6461,191.2728,1762.3494,191.19,1772.1979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="140" x="214" y="1739.7649">expired candidate lease</text>
</g>
<!--link candidate to no_lease-->
<g id="link_candidate_no_lease">
<path d="M281.19,1677.3079 C311.49,1691.2679 355.35,1709.1179 396,1716.8679 C414.83,1720.4679 1069.57,1715.0079 1086,1724.8679 C1115.34,1742.4879 1123,1758.1779 1123,1792.4079 C1123,1792.4079 1123,1792.4079 1123,2194.6779 C1123,2248.3879 1280.98,2287.7279 1375.63,2306.4779 " fill="none" id="candidate-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1380.28,2307.3879,1372.2107,2301.7411,1375.3722,2306.432,1370.6813,2309.5936,1380.28,2307.3879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="157" x="1124" y="1998.9349">conflicting candidate lease</text>
</g>
<!--link candidate to create-->
<g id="link_candidate_create">
<path d="M283.96,1677.3279 C314.26,1690.5579 356.88,1707.4379 396,1716.8679 C428.16,1724.6279 437.15,1720.9879 470,1724.8679 C628.07,1743.5579 812.53,1767.8079 915.65,1781.5779 " fill="none" id="candidate-to-create" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="920.51,1782.2279,912.1137,1777.0799,915.5534,1781.5708,911.0624,1785.0105,920.51,1782.2279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111" x="616" y="1739.7649">no candidate lease</text>
</g>
<!--link reuseExpiredLease4 to reclaimExpiredLease-->
<g id="link_reuseExpiredLease4_reclaimExpiredLease">
<path d="M181.81,1813.3179 C181.65,1828.6479 181.43,1850.3879 181.26,1867.2079 " fill="none" id="reuseExpiredLease4-to-reclaimExpiredLease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="181.21,1872.1079,185.3126,1863.1542,181.2671,1867.1082,177.3131,1863.0628,181.21,1872.1079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link reclaimExpiredLease to updateLease4Information-->
<g id="link_reclaimExpiredLease_updateLease4Information">
<path d="M180.04,1913.3779 C179.25,1928.7179 178.15,1950.4579 177.29,1967.2779 " fill="none" id="reclaimExpiredLease-to-updateLease4Information" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="177.04,1972.1779,181.4983,1963.3959,177.2975,1967.1846,173.5089,1962.9838,177.04,1972.1779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link updateLease4Information to lease4_select-->
<g id="link_updateLease4Information_lease4_select">
<path d="M172.53,2013.4479 C169.69,2028.9179 165.65,2050.9079 162.56,2067.7979 " fill="none" id="updateLease4Information-to-lease4_select" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="161.73,2072.2679,167.2817,2064.1329,162.6282,2067.3493,159.4118,2062.6958,161.73,2072.2679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link lease4_select to no_lease-->
<g id="link_lease4_select_no_lease">
<path d="M237.86,2110.8479 C399.58,2143.4479 777.6,2218.1779 1097,2270.2079 C1193.29,2285.8979 1305.08,2300.9279 1375.43,2309.9979 " fill="none" id="lease4_select-to-no_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1380.18,2310.6079,1371.7692,2305.4837,1375.2215,2309.9649,1370.7403,2313.4172,1380.18,2310.6079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="27" x="1041" y="2199.0749">SKIP</text>
</g>
<!--link lease4_select to updateLease4-->
<g id="link_lease4_select_updateLease4">
<path d="M168.99,2113.1879 C175.01,2122.7879 182.89,2134.4979 191,2144.1479 C198.43,2152.9879 207.33,2161.9179 215.59,2169.6579 " fill="none" id="lease4_select-to-updateLease4" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="218.99,2172.8079,215.1045,2163.7579,215.3215,2169.4106,209.6688,2169.6276,218.99,2172.8079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link updateLease4 to old_lease-->
<g id="link_updateLease4_old_lease">
<path d="M252.95,2213.5979 C263.06,2229.1579 279.56,2250.3579 300,2261.2079 C367.18,2296.8879 583.75,2311.1079 696.81,2316.2079 " fill="none" id="updateLease4-to-old_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="701.6,2316.4179,692.7795,2312.0362,696.6046,2316.2038,692.437,2320.0289,701.6,2316.4179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link allocateUnreservedLease4 to iterate-->
<g id="link_allocateUnreservedLease4_iterate">
<path d="M523,1117.9379 C523,1120.7879 523,1149.8079 523,1171.9279 " fill="none" id="allocateUnreservedLease4-to-iterate" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="523,1176.7279,527,1167.7279,523,1171.7279,519,1167.7279,523,1176.7279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link iterate to pick-->
<g id="link_iterate_pick">
<path d="M525.44,1218.1479 C527.97,1237.7079 531.93,1268.3679 534.73,1290.0079 " fill="none" id="iterate-to-pick" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="535.36,1294.9079,538.1693,1285.4682,534.717,1289.9494,530.2358,1286.4971,535.36,1294.9079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link pick to pick_reserved-->
<g id="link_pick_pick_reserved">
<path d="M590.31,1329.7379 C635.21,1340.9179 693.8,1356.8979 701,1365.8379 C710.4,1377.5179 711.67,1394.3079 710.59,1408.2279 " fill="none" id="pick-to-pick_reserved" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="710.1,1412.8879,715.0049,1404.3473,710.6145,1407.9145,707.0473,1403.5241,710.1,1412.8879" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--reverse link iterate to pick_reserved-->
<g id="link_iterate_pick_reserved">
<path d="M563.34,1221.4079 C608.29,1248.6779 678.52,1299.6279 708,1365.8379 C714.82,1381.1679 713.4,1400.4479 710.81,1414.4779 " fill="none" id="iterate-backto-pick_reserved" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="559.28,1218.9779,564.9395,1227.0384,563.5675,1221.5504,569.0554,1220.1784,559.28,1218.9779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="204" x="691" y="1321.7049">address reserved to another client</text>
</g>
<!--link pick_reserved to mt_in_use-->
<g id="link_pick_reserved_mt_in_use">
<path d="M693.34,1454.2679 C679.26,1475.2879 656.46,1509.3179 641.11,1532.2279 " fill="none" id="pick_reserved-to-mt_in_use" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="638.41,1536.2579,646.743,1531.008,641.1934,1532.1043,640.0972,1526.5546,638.41,1536.2579" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--reverse link iterate to mt_in_use-->
<g id="link_iterate_mt_in_use">
<path d="M499.34,1222.9279 C465.42,1259.8279 410.87,1332.2379 447,1384.8379 C468.03,1415.4579 495.69,1392.0379 525,1414.8379 C568.91,1449.0079 601.58,1507.6479 616.32,1537.5479 " fill="none" id="iterate-backto-mt_in_use" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="502.74,1219.2879,493.6669,1223.1192,499.3208,1222.936,499.5039,1228.5899,502.74,1219.2879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="244" x="448" y="1380.7349">address already in use by another thread</text>
</g>
<!--link mt_in_use to pick_lease-->
<g id="link_mt_in_use_pick_lease">
<path d="M601.09,1577.1779 C580.76,1593.2579 551.52,1616.3879 529.88,1633.4979 " fill="none" id="mt_in_use-to-pick_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="526.02,1636.5479,535.5588,1634.096,529.9396,1633.4437,530.592,1627.8246,526.02,1636.5479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--reverse link iterate to pick_lease-->
<g id="link_iterate_pick_lease">
<path d="M486.95,1221.7579 C476.56,1229.2579 465.69,1238.1679 457,1247.7779 C440.02,1266.5379 434.68,1272.3679 428,1296.7779 C411.43,1357.3179 446.44,1516.8379 465,1576.8079 C471.68,1598.3779 482.78,1621.7779 490.89,1637.5779 " fill="none" id="iterate-backto-pick_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="490.76,1219.0579,481.1011,1220.9828,486.676,1221.9425,485.7163,1227.5173,490.76,1219.0579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="68" x="437" y="1439.7749">active lease</text>
</g>
<!--link pick_lease to reuseExpiredLease4-->
<g id="link_pick_lease_reuseExpiredLease4">
<path d="M460.73,1677.3379 C436.84,1689.4379 406.54,1706.3079 382,1724.8679 C372.48,1732.0779 373.34,1737.8979 363,1743.8679 C354.02,1749.0579 309.1,1761.1179 266.26,1771.9079 " fill="none" id="pick_lease-to-reuseExpiredLease4" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="261.43,1773.1279,271.1314,1774.8257,266.2807,1771.9152,269.1911,1767.0645,261.43,1773.1279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="78" x="383" y="1739.7649">expired lease</text>
</g>
<!--link pick_lease to create-->
<g id="link_pick_lease_create">
<path d="M550.73,1671.8079 C637.51,1695.3079 817.1,1743.9479 919.71,1771.7479 " fill="none" id="pick_lease-to-create" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="924.29,1772.9879,916.6394,1766.7857,919.4619,1771.688,914.5596,1774.5106,924.29,1772.9879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="808" y="1739.7649">no lease</text>
</g>
<!--link create to old_lease-->
<g id="link_create_old_lease">
<path d="M975.35,1813.2879 C957.65,1831.6179 935,1861.1979 935,1892.4779 C935,1892.4779 935,1892.4779 935,2194.6779 C935,2246.3179 883.01,2278.8979 836.88,2297.6379 " fill="none" id="create-to-old_lease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="832.4,2299.4179,842.2408,2299.8154,837.0473,2297.5733,839.2894,2292.3798,832.4,2299.4179" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link old_lease to return-->
<g id="link_old_lease_return">
<path d="M767,2339.6479 C767,2359.2079 767,2389.8779 767,2411.5079 " fill="none" id="old_lease-to-return" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="767,2416.3979,771,2407.3979,767,2411.3979,763,2407.3979,767,2416.3979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--SRC=[ZLPBRzGm4BxdLrYSuB0890w80n8g1IgGA8MU8vDuTorIUqaSIeNuxyoC4tlyICkbtOpdcnb_y_0uxGObtWo3xQHJGef1oKc9lHt5smzdbrVdNwxFltuJZpygAPu_VVdqsPEcaGTbd7ZqJfjUT8F63q8z4d8IUv2UaV0JoXfZmUoe3qSdNWcGZdVYPBLnmSpPKNK_nAX-pcfogeTVanf_IQUj8OEoxq4qNP5OzG7tNhb2zoYdDroTJWBY-jJZ7QEhnJH1PpfiZnJQg3edpG6OASBZc0xF22B-D8A1CBP8P1ryKAvLl_Naj3aWN6pm4QbTjHlnjsbITUxCyvJxMldpMSdWTdOxkz-Th1qI7CXRkszHtlojq59atpFIMwFmIjcDZBhrIeHg2PMPPOK8simmV7a0sdKMBdHK8z5MGnCFCoX70t8v-pnUuGdHy88C25PGdJIzfYfXTrfb3LCc8v2HanwJ797RSo_sFb9KDqXzKyNH2KToeA_E9StQGA9lOjNxG-_j8fvn_1bUVruozQATr02i4JYH829fsAErFxYTwrD63lSDUbYOrOpC9XHccPFhS5X9ouLJ8rh08WG8p9nf_cwKynMg_IcFyL93jV4gFe4W8MEfnxHHL1-Ksp4CcnmbXr79_Wvo8B00ljz1H9PgqHtnX6pSk5QRTavJo1erEl8zWBmbFGsMAZtGaJYglOMSOR4Fd5FuYfqLoixDeu7CyeQoYrewe7zhbytd1KpjcvKiIFuNpc4esCPb3uZOxLxdRm0M9bdAvgfuZBFuITL4zMa0Gq3AfftSBTfXCv_0dJNxGNSqnTbpLCMkd0EIgGfxQq21bP8Va4qzPB33tgg52fduvkT5pCjjY_hVSXVmDDKNmg8lPXjL-QlM94ySdeQFF86-59bkoXRmaixCJSuAb-m9AuD_G3kDyLvW_i86T6GIN-SrsfNp0bRUN4WehbzAfFEpXap2R_XLYYHw-lBe8BIo6UutLFQEdd0uucZ7SI6Dg4R3hhW2CScnA67Eeu2P8ZlCESN2LedG2dmhQH8DGD3KgWP-Io-I7-zoclG1ANAMM5cgApM6rrZNaYOkA3Imgjj6xDMSupgwU1VhuwgfUoD-mkuIDviTiP2lAJI5VOTbIr06PPdZi-z-a7-wbecPQLPYyI6M6r55HhfR6z26d33fufDy5LtuzUF5PQ6Ikary-MOCB_5cFb5jtM2M_oIZZGN_XA-uaYHVOZUVeWtMJ4412ZWRaPa1WCTz9VpQDFpG0iHDhB5x5kBFqhWVSQNUGwLQHV1YMuhHIzAiX5-B6rfB_W40]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -1,107 +1,213 @@
<?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="1782px" preserveAspectRatio="none" style="width:740px;height:1782px;" version="1.1" viewBox="0 0 740 1782" width="740px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ilk3q3nd6gdc" 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="326" x="198" y="17.4023">DHCPREQUEST processing (Kea 1.8.0)</text><!--MD5=[638108c05bc1ef8eca3fbd57a1e57fe7]
cluster ack--><rect fill="#FFFFFF" filter="url(#f1ilk3q3nd6gdc)" height="762.86" style="stroke: #000000; stroke-width: 1.5;" width="304" x="419" y="717.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="154" x="494" y="732.7344">A lease was assigned</text><!--MD5=[bf2e5648ffce4090541457b458b3eec7]
entity setReservedClasses--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="449.5" y="806.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="143" x="459.5" y="829.5944">Add reserved classes</text><!--MD5=[b4c6d216ba631a143bfc1836b312cb78]
entity requiredClassify--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="447.5" y="903.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="167" x="457.5" y="926.5944">Classify required classes</text><!--MD5=[f89e27cff326c32e9ba835d84fbfe859]
entity buildCfgOptionList--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="206" x="455" y="1000.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="186" x="465" y="1023.5944">Build configured option list</text><!--MD5=[66aecdc5adcec4353637f7b7b5526ad2]
entity appendRequestedOptions--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="203" x="464.5" y="1113.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="183" x="474.5" y="1136.5944">Append requested options</text><!--MD5=[c1e338234dc43680cac932baec853545]
entity appendRequestedVendorOptions--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="255" x="443.5" y="1226.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="235" x="453.5" y="1249.5944">Append requested vendor options</text><!--MD5=[c9adb4adbcc3777a62f0437095b92421]
entity appendBasicOptions--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="169" x="485.5" y="1323.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="149" x="495.5" y="1346.5944">Append basic options</text><!--MD5=[f001f897bdcc87f34b1f31db09c9e4bc]
entity setFixedFields--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="508.5" y="1420.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="101" x="518.5" y="1443.5944">Set fixed fields</text><!--MD5=[e3476fda087b0512b1cf4e3a66ca5e59]
entity entry--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="78.5" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="75" x="88.5" y="51.7344">Entry point</text><!--MD5=[a7ec37c34d1a4a150f9193e171f7b981]
entity selectSubnet--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="70.5" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="91" x="80.5" y="148.7344">Select subnet</text><path d="M217,130.6992 L217,139.1992 L181.52,143.1992 L217,147.1992 L217,156.0098 A0,0 0 0 0 217,156.0098 L307,156.0098 A0,0 0 0 0 307,156.0098 L307,140.6992 L297,130.6992 L217,130.6992 A0,0 0 0 0 217,130.6992 " fill="#FBFB77" filter="url(#f1ilk3q3nd6gdc)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M297,130.6992 L297,140.6992 L307,140.6992 L297,130.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="223" y="148.2676">hook point</text><!--MD5=[bd2ef8d619eb080c7e3a318a85d9bc74]
entity findReservation--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="165" x="187.5" y="222.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="145" x="197.5" y="245.7344">Find host reservation</text><!--MD5=[2cdbe39ce7f7beceaf096677903e27aa]
entity known--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="174" y="319.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="260" x="184" y="342.7344">Add either KNOWN or UNKNOWN class</text><!--MD5=[63b5186a9d9ded916d56a4c496be57e4]
entity classify2--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="148" x="248" y="416.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="128" x="258" y="439.7344">Classify (2nd pass)</text><!--MD5=[40832264567e158d4eae9eb68a571da4]
entity processClientName--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="248.5" y="513.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="258.5" y="536.7344">Process client name</text><!--MD5=[2a562006d844a2c20ab5026a88816353]
entity assignLease--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="117" x="269.5" y="610.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="97" x="279.5" y="633.7344">Assign a lease</text><!--MD5=[8274bfb416b6365278739ca5c48d26ea]
entity common--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="487" y="1535.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="142" x="497" y="1558.5944">Adjust interface data</text><!--MD5=[ca1312f187078c0b4317d510df91f0fb]
entity appendServerID--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="138" x="499" y="1632.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="118" x="509" y="1655.5944">Append server ID</text><path d="M308,1637.5592 L308,1662.8698 A0,0 0 0 0 308,1662.8698 L464,1662.8698 A0,0 0 0 0 464,1662.8698 L464,1655.5592 L498.67,1650.0592 L464,1647.5592 L464,1647.5592 L454,1637.5592 L308,1637.5592 A0,0 0 0 0 308,1637.5592 " fill="#FBFB77" filter="url(#f1ilk3q3nd6gdc)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M454,1637.5592 L454,1647.5592 L464,1647.5592 L454,1637.5592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="135" x="314" y="1655.1276">on success exit point</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#f1ilk3q3nd6gdc)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="177.5" y="1729.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="187.5" y="1752.5944">Return no response</text><path d="M6,1734.5592 L6,1759.8698 A0,0 0 0 0 6,1759.8698 L142,1759.8698 A0,0 0 0 0 142,1759.8698 L142,1752.5592 L177.47,1747.0592 L142,1744.5592 L142,1744.5592 L132,1734.5592 L6,1734.5592 A0,0 0 0 0 6,1734.5592 " fill="#FBFB77" filter="url(#f1ilk3q3nd6gdc)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M132,1734.5592 L132,1744.5592 L142,1744.5592 L132,1734.5592 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="115" x="12" y="1752.1276">on error exit point</text><!--MD5=[f1b2710c384eb85faf81d18e639f63a6]
link entry to selectSubnet--><path d="M126,64.6192 C126,80.1592 126,102.9792 126,119.8592 " fill="none" id="entry-&gt;selectSubnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="126,124.8892,130,115.8892,126,119.8892,122,115.8892,126,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b2566f3d1f41175aa140f0cd50933407]
link selectSubnet to findReservation--><path d="M152.08,161.3992 C176.75,177.6792 213.76,202.0992 239.73,219.2292 " fill="none" id="selectSubnet-&gt;findReservation" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="244.12,222.1192,238.8174,213.8197,239.9488,219.3622,234.4062,220.4936,244.12,222.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1a93233187986d890dbf5eee85d4aa4a]
link selectSubnet to drop--><path d="M120.11,161.4792 C114.21,180.3392 106,211.5592 106,239.1992 C106,239.1992 106,239.1992 106,1651.0592 C106,1689.5192 141.74,1713.0992 178.21,1727.1392 " fill="none" id="selectSubnet-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="183.12,1728.9792,176.0975,1722.0738,178.4384,1727.2236,173.2885,1729.5644,183.12,1728.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="107" y="926.1276">hook set DROP</text><!--MD5=[ec2fdd3e226382e0a9d3911ff6fdaa1e]
link findReservation to known--><path d="M278.07,258.6192 C285.33,274.2892 296.02,297.3792 303.85,314.2892 " fill="none" id="findReservation-&gt;known" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="305.98,318.8892,305.8344,309.0414,303.882,314.3507,298.5728,312.3982,305.98,318.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9b534dc7ab92ef37bc4e582dc201fb22]
link known to classify2--><path d="M315.47,355.6192 C316.78,371.1592 318.7,393.9792 320.12,410.8592 " fill="none" id="known-&gt;classify2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="320.54,415.8892,323.781,406.5889,320.126,410.9064,315.8085,407.2514,320.54,415.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[96b9d5e38c2d93af2aa0f6088adcad57]
link classify2 to processClientName--><path d="M322.73,452.6192 C323.39,468.1592 324.35,490.9792 325.06,507.8592 " fill="none" id="classify2-&gt;processClientName" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="325.27,512.8892,328.9071,503.7365,325.0702,507.8932,320.9135,504.0563,325.27,512.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ad449cd118a7a2b2ce8548c9076b781b]
link processClientName to assignLease--><path d="M326.37,549.6192 C326.69,565.1592 327.17,587.9792 327.53,604.8592 " fill="none" id="processClientName-&gt;assignLease" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="327.64,609.8892,331.4592,600.811,327.54,604.8902,323.4608,600.971,327.64,609.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[dbcae5b7ba85be5e06360ecde09c32a7]
link assignLease to ack--><path d="M350.16,646.3192 C370.48,662.0192 401.2825,685.8217 427.3263,705.9467 C430.5817,708.4623 433.7628,710.9205 436.8398,713.2982 C438.3783,714.4871 439.8908,715.6558 441.3735,716.8015 " fill="none" id="assignLease-&gt;ack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="441.3735,716.8015,436.6977,708.1333,437.4171,713.7443,431.8061,714.4636,441.3735,716.8015" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="62" x="407" y="689.7676">DHCPACK</text><!--MD5=[2f984fc865edd3cdda8891855a184a01]
link assignLease to common--><path d="M328.48,646.2492 C329.08,668.5892 330,709.0092 330,743.5592 C330,743.5592 330,743.5592 330,1439.0592 C330,1508.3792 413.41,1535.2292 481.47,1545.5992 " fill="none" id="assignLease-&gt;common" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="486.76,1546.3692,478.4373,1541.103,481.8131,1545.6422,477.274,1549.018,486.76,1546.3692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="63" x="331" y="1079.6276">DHCPNAK</text><!--MD5=[1a01e4a77361624092d23c61082f06c9]
link assignLease to drop--><path d="M308.05,646.4192 C286.44,667.0992 255,703.9892 255,743.5592 C255,743.5592 255,743.5592 255,1651.0592 C255,1675.9292 255,1704.4692 255,1723.7292 " fill="none" id="assignLease-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="255,1728.8992,259,1719.8992,255,1723.8992,251,1719.8992,255,1728.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="256" y="1192.6276">on error</text><!--MD5=[45361b0d0807638813b657d9c2aeacea]
link ack to setReservedClasses--><path d="M476.04,745.1192 C477.12,746.6492 499.89,778.9392 515.78,801.4792 " fill="none" id="ack-&gt;setReservedClasses" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="518.86,805.8392,516.9576,796.1758,515.985,801.7484,510.4124,800.7758,518.86,805.8392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[59a85614cff14ca40e3cee07aa3bbe30]
link setReservedClasses to requiredClassify--><path d="M532.83,842.4792 C534.47,858.0192 536.87,880.8392 538.65,897.7192 " fill="none" id="setReservedClasses-&gt;requiredClassify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="539.18,902.7492,542.206,893.3768,538.6514,897.7772,534.2509,894.2226,539.18,902.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2efe0b9050a6d4600ee0e20f04479830]
link requiredClassify to buildCfgOptionList--><path d="M544.12,939.4792 C546.9,955.0192 550.98,977.8392 554,994.7192 " fill="none" id="requiredClassify-&gt;buildCfgOptionList" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="554.9,999.7492,557.2671,990.1891,554.027,994.826,549.39,991.5859,554.9,999.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7441c48dbaadb9becd02fb7c753a194c]
link buildCfgOptionList to appendRequestedOptions--><path d="M559.25,1036.3992 C560.64,1055.6292 562.87,1086.6892 564.39,1107.7192 " fill="none" id="buildCfgOptionList-&gt;appendRequestedOptions" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="564.76,1112.8392,568.1067,1103.5764,564.4027,1107.852,560.1272,1104.148,564.76,1112.8392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[47343daf35e3c3d46fb0ba57547a88fa]
link appendRequestedOptions to appendRequestedVendorOptions--><path d="M566.78,1149.3992 C567.65,1168.6292 569.05,1199.6892 569.99,1220.7192 " fill="none" id="appendRequestedOptions-&gt;appendRequestedVendorOptions" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="570.22,1225.8392,573.8048,1216.6659,569.9917,1220.8444,565.8132,1217.0313,570.22,1225.8392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[58b55c53e5f94649550176181093f5f5]
link appendRequestedVendorOptions to appendBasicOptions--><path d="M570.82,1262.4792 C570.65,1278.0192 570.41,1300.8392 570.24,1317.7192 " fill="none" id="appendRequestedVendorOptions-&gt;appendBasicOptions" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="570.18,1322.7492,574.2572,1313.7839,570.223,1317.7494,566.2575,1313.7152,570.18,1322.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7264f1f21cb707b81d802a97c78240a4]
link appendBasicOptions to setFixedFields--><path d="M569.82,1359.4792 C569.65,1375.0192 569.41,1397.8392 569.24,1414.7192 " fill="none" id="appendBasicOptions-&gt;setFixedFields" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="569.18,1419.7492,573.2572,1410.7839,569.223,1414.7494,565.2575,1410.7152,569.18,1419.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6bbcaa41c57dc9195ee921caca416269]
link setFixedFields to common--><path d="M568.85,1456.2192 C568.67,1475.7992 568.39,1507.8892 568.2,1529.4892 " fill="none" id="setFixedFields-&gt;common" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="568.15,1534.7392,572.227,1525.7738,568.1929,1529.7394,564.2273,1525.7053,568.15,1534.7392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[132fd8477c39c92905ed9637c759fac2]
link common to appendServerID--><path d="M568,1571.4792 C568,1587.0192 568,1609.8392 568,1626.7192 " fill="none" id="common-&gt;appendServerID" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="568,1631.7492,572,1622.7492,568,1626.7492,564,1622.7492,568,1631.7492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c3fa6a6e0f86213585b749ab16a0c5af]
link appendServerID to drop--><!--MD5=[4750f740a763649f6d3712e660b5e97b]
@startuml
title DHCPREQUEST processing (Kea 1.8.0)
agent "Entry point" as entry
agent "Select subnet" as selectSubnet
note right : hook point
agent "Find host reservation" as findReservation
agent "Add either KNOWN or UNKNOWN class" as known
agent "Classify (2nd pass)" as classify2
agent "Process client name" as processClientName
agent "Assign a lease" as assignLease
rectangle "A lease was assigned" as ack {
agent "Add reserved classes" as setReservedClasses
agent "Classify required classes" as requiredClassify
agent "Build configured option list" as buildCfgOptionList
agent "Append requested options" as appendRequestedOptions
agent "Append requested vendor options" as appendRequestedVendorOptions
agent "Append basic options" as appendBasicOptions
agent "Set fixed fields" as setFixedFields
}
agent "Adjust interface data" as common
agent "Append server ID" as appendServerID
note left : on success exit point
agent "Return no response" as drop
note left : on error exit point
entry - -> selectSubnet
selectSubnet - -> findReservation
selectSubnet - - -> drop : hook set DROP
findReservation - -> known
known - -> classify2
classify2 - -> processClientName
processClientName - -> assignLease
assignLease - -> ack : DHCPACK
assignLease - -> common : DHCPNAK
assignLease - - -> drop : on error
ack - -> setReservedClasses
setReservedClasses - -> requiredClassify
requiredClassify - -> buildCfgOptionList
buildCfgOptionList - -> appendRequestedOptions
appendRequestedOptions - -> appendRequestedVendorOptions
appendRequestedVendorOptions - -> appendBasicOptions
appendBasicOptions - -> setFixedFields
setFixedFields - -> common
common - -> appendServerID
appendServerID -[hidden]-> drop
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1851px" preserveAspectRatio="none" style="width:713px;height:1851px;background:#FFFFFF;" version="1.1" viewBox="0 0 713 1851" width="713px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="256" x="221.5" y="24.9659">DHCPREQUEST processing (Kea 1.8.0)</text>
<!--cluster ack-->
<g id="cluster_ack">
<rect fill="none" height="791.34" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="298" x="409" y="759.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="145" x="485.5" y="776.5039">A lease was assigned</text>
</g>
<!--entity setReservedClasses-->
<g id="elem_setReservedClasses">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="162" x="439" y="851.3979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="142" x="449" y="876.3639">Add reserved classes</text>
</g>
<!--entity requiredClassify-->
<g id="elem_requiredClassify">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="186" x="437" y="951.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="166" x="447" y="976.4339">Classify required classes</text>
</g>
<!--entity buildCfgOptionList-->
<g id="elem_buildCfgOptionList">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="204" x="444" y="1051.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="184" x="454" y="1076.5039">Build configured option list</text>
</g>
<!--entity appendRequestedOptions-->
<g id="elem_appendRequestedOptions">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="200" x="453" y="1169.5979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="180" x="463" y="1194.5639">Append requested options</text>
</g>
<!--entity appendRequestedVendorOptions-->
<g id="elem_appendRequestedVendorOptions">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="251" x="432.5" y="1287.6679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="231" x="442.5" y="1312.6339">Append requested vendor options</text>
</g>
<!--entity appendBasicOptions-->
<g id="elem_appendBasicOptions">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="166" x="474" y="1387.7379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="146" x="484" y="1412.7039">Append basic options</text>
</g>
<!--entity setFixedFields-->
<g id="elem_setFixedFields">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="119" x="494.5" y="1487.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="504.5" y="1512.7739">Set fixed fields</text>
</g>
<!--entity entry-->
<g id="elem_entry">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="94" x="76" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="86" y="72.0339">Entry point</text>
</g>
<!--entity selectSubnet-->
<g id="elem_selectSubnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111" x="67.5" y="147.1279"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91" x="77.5" y="172.0939">Select subnet</text>
</g>
<g id="elem_GMN4">
<path d="M213.5,152.8079 L213.5,162.6679 L178.75,166.6679 L213.5,170.6679 L213.5,180.5139 A0,0 0 0 0 213.5,180.5139 L300.5,180.5139 A0,0 0 0 0 300.5,180.5139 L300.5,162.8079 L290.5,152.8079 L213.5,152.8079 A0,0 0 0 0 213.5,152.8079 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M290.5,152.8079 L290.5,162.8079 L300.5,162.8079 L290.5,152.8079 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66" x="219.5" y="171.7049">hook point</text>
</g>
<!--entity findReservation-->
<g id="elem_findReservation">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="162" x="186" y="247.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="142" x="196" y="272.1639">Find host reservation</text>
</g>
<!--entity known-->
<g id="elem_known">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="285" x="167.5" y="347.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="265" x="177.5" y="372.2339">Add either KNOWN or UNKNOWN class</text>
</g>
<!--entity classify2-->
<g id="elem_classify2">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="144" x="244" y="447.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="254" y="472.3039">Classify (2nd pass)</text>
</g>
<!--entity processClientName-->
<g id="elem_processClientName">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="154" x="242" y="547.3979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="134" x="252" y="572.3639">Process client name</text>
</g>
<!--entity assignLease-->
<g id="elem_assignLease">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="116" x="263" y="647.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="273" y="672.4339">Assign a lease</text>
</g>
<!--entity common-->
<g id="elem_common">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="161" x="470.5" y="1605.8779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="141" x="480.5" y="1630.8439">Adjust interface data</text>
</g>
<!--entity appendServerID-->
<g id="elem_appendServerID">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="482" y="1705.9379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="492" y="1730.9039">Append server ID</text>
</g>
<g id="elem_GMN22">
<path d="M301.5,1711.6279 L301.5,1739.3339 A0,0 0 0 0 301.5,1739.3339 L446.5,1739.3339 A0,0 0 0 0 446.5,1739.3339 L446.5,1729.6279 L481.9,1725.4779 L446.5,1721.6279 L446.5,1721.6279 L436.5,1711.6279 L301.5,1711.6279 A0,0 0 0 0 301.5,1711.6279 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M436.5,1711.6279 L436.5,1721.6279 L446.5,1721.6279 L436.5,1711.6279 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="307.5" y="1730.5249">on success exit point</text>
</g>
<!--entity drop-->
<g id="elem_drop">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="153" x="171.5" y="1806.0079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133" x="181.5" y="1830.9739">Return no response</text>
</g>
<g id="elem_GMN26">
<path d="M6,1811.6879 L6,1839.3939 A0,0 0 0 0 6,1839.3939 L136,1839.3939 A0,0 0 0 0 136,1839.3939 L136,1829.6879 L171.23,1825.5479 L136,1821.6879 L136,1821.6879 L126,1811.6879 L6,1811.6879 A0,0 0 0 0 6,1811.6879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<path d="M126,1811.6879 L126,1821.6879 L136,1821.6879 L126,1811.6879 " fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="109" x="12" y="1830.5849">on error exit point</text>
</g>
<!--link entry to selectSubnet-->
<g id="link_entry_selectSubnet">
<path d="M123,86.5079 C123,101.8379 123,123.5779 123,140.3979 " fill="none" id="entry-to-selectSubnet" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="123,145.2979,127,136.2979,123,140.2979,119,136.2979,123,145.2979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link selectSubnet to findReservation-->
<g id="link_selectSubnet_findReservation">
<path d="M150.76,186.5779 C174.57,202.7879 208.91,226.1679 234.09,243.3179 " fill="none" id="selectSubnet-to-findReservation" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="238.07,246.0279,232.8864,237.6535,233.9386,243.2117,228.3804,244.2638,238.07,246.0279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link selectSubnet to drop-->
<g id="link_selectSubnet_drop">
<path d="M116.78,186.5979 C110.91,206.1779 103,237.7579 103,265.7379 C103,265.7379 103,265.7379 103,1726.4779 C103,1764.1179 136.95,1788.2979 171.99,1803.2279 " fill="none" id="selectSubnet-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="176.22,1804.9679,169.4398,1797.8245,171.6017,1803.0519,166.3742,1805.2138,176.22,1804.9679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="90" x="104" y="976.3949">hook set DROP</text>
</g>
<!--link findReservation to known-->
<g id="link_findReservation_known">
<path d="M275.29,286.6379 C282.13,302.2479 291.89,324.4879 299.31,341.4279 " fill="none" id="findReservation-to-known" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="301.13,345.5679,301.1615,335.7191,299.1139,340.9924,293.8406,338.9449,301.13,345.5679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link known to classify2-->
<g id="link_known_classify2">
<path d="M311.16,386.7079 C312.09,402.0379 313.43,423.7879 314.45,440.6079 " fill="none" id="known-to-classify2" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="314.75,445.5079,318.1775,436.2747,314.4363,440.5178,310.1933,436.7766,314.75,445.5079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link classify2 to processClientName-->
<g id="link_classify2_processClientName">
<path d="M316.58,486.7779 C317.05,502.1079 317.71,523.8579 318.23,540.6779 " fill="none" id="classify2-to-processClientName" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="318.38,545.5779,322.0953,536.4567,318.2229,540.5804,314.0993,536.708,318.38,545.5779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link processClientName to assignLease-->
<g id="link_processClientName_assignLease">
<path d="M319.39,586.8479 C319.7,602.1779 320.14,623.9179 320.48,640.7379 " fill="none" id="processClientName-to-assignLease" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="320.58,645.6379,324.3992,636.5597,320.48,640.6389,316.4008,636.7197,320.58,645.6379" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link assignLease to ack-->
<g id="link_assignLease_ack">
<path d="M343.66,686.8979 C363.73,703.6329 393.68,728.6029 418.9225,749.6479 C422.0778,752.2785 425.1596,754.8478 428.1393,757.3321 C428.8842,757.9531 429.6228,758.5688 430.3545,759.1789 " fill="none" id="assignLease-to-ack" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="430.3545,759.1789,426.0032,750.3434,426.5141,755.9771,420.8804,756.488,430.3545,759.1789" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="59" x="398" y="731.4349">DHCPACK</text>
</g>
<!--link assignLease to common-->
<g id="link_assignLease_common">
<path d="M321.25,686.8479 C321.55,710.6379 322,752.7979 322,788.8979 C322,788.8979 322,788.8979 322,1508.3379 C322,1574.6179 399.27,1603.0579 464.04,1615.2579 " fill="none" id="assignLease-to-common" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="468.77,1616.1179,460.6378,1610.5621,463.8518,1615.2172,459.1967,1618.4312,468.77,1616.1179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="61" x="323" y="1135.4949">DHCPNAK</text>
</g>
<!--link assignLease to drop-->
<g id="link_assignLease_drop">
<path d="M300.67,686.8379 C279.07,708.9779 248,747.9579 248,788.8979 C248,788.8979 248,788.8979 248,1726.4779 C248,1751.2579 248,1779.5579 248,1799.3679 " fill="none" id="assignLease-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="248,1804.2279,252,1795.2279,248,1799.2279,244,1795.2279,248,1804.2279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="49" x="249" y="1253.5649">on error</text>
</g>
<!--link ack to setReservedClasses-->
<g id="link_ack_setReservedClasses">
<path d="M466.15,790.6279 C468.13,793.5279 488.48,823.5079 503.58,845.7479 " fill="none" id="ack-to-setReservedClasses" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="506.25,849.6779,504.5015,839.9855,503.4404,845.542,497.884,844.4809,506.25,849.6779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link setReservedClasses to requiredClassify-->
<g id="link_setReservedClasses_requiredClassify">
<path d="M521.93,890.8379 C523.49,906.1679 525.71,927.9179 527.42,944.7379 " fill="none" id="setReservedClasses-to-requiredClassify" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="527.92,949.6479,530.9727,940.2841,527.4055,944.6745,523.0151,941.1073,527.92,949.6479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link requiredClassify to buildCfgOptionList-->
<g id="link_requiredClassify_buildCfgOptionList">
<path d="M533.08,990.9079 C535.59,1006.2379 539.13,1027.9879 541.88,1044.8079 " fill="none" id="requiredClassify-to-buildCfgOptionList" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="542.68,1049.7279,545.1863,1040.2033,541.8789,1044.7925,537.2897,1041.4851,542.68,1049.7279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link buildCfgOptionList to appendRequestedOptions-->
<g id="link_buildCfgOptionList_appendRequestedOptions">
<path d="M547.14,1090.9779 C548.32,1110.5379 550.17,1141.1979 551.47,1162.8379 " fill="none" id="buildCfgOptionList-to-appendRequestedOptions" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="551.77,1167.7279,555.2222,1158.5039,551.4697,1162.7369,547.2367,1158.9844,551.77,1167.7279" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link appendRequestedOptions to appendRequestedVendorOptions-->
<g id="link_appendRequestedOptions_appendRequestedVendorOptions">
<path d="M553.81,1209.0479 C554.66,1228.6079 555.98,1259.2679 556.91,1280.8979 " fill="none" id="appendRequestedOptions-to-appendRequestedVendorOptions" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="557.12,1285.7979,560.7298,1276.6345,556.9053,1280.8025,552.7372,1276.978,557.12,1285.7979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link appendRequestedVendorOptions to appendBasicOptions-->
<g id="link_appendRequestedVendorOptions_appendBasicOptions">
<path d="M557.81,1327.1079 C557.65,1342.4479 557.43,1364.1879 557.26,1381.0079 " fill="none" id="appendRequestedVendorOptions-to-appendBasicOptions" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="557.21,1385.9079,561.3126,1376.9542,557.2671,1380.9082,553.3131,1376.8628,557.21,1385.9079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link appendBasicOptions to setFixedFields-->
<g id="link_appendBasicOptions_setFixedFields">
<path d="M556.42,1427.1779 C555.95,1442.5079 555.29,1464.2579 554.77,1481.0779 " fill="none" id="appendBasicOptions-to-setFixedFields" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="554.62,1485.9779,558.8754,1477.0958,554.7628,1480.98,550.8787,1476.8673,554.62,1485.9779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link setFixedFields to common-->
<g id="link_setFixedFields_common">
<path d="M553.51,1527.2479 C553.01,1546.8079 552.21,1577.4679 551.65,1599.1079 " fill="none" id="setFixedFields-to-common" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="551.53,1603.9979,555.76,1595.1037,551.6585,1598.9996,547.7627,1594.8981,551.53,1603.9979" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link common to appendServerID-->
<g id="link_common_appendServerID">
<path d="M551,1645.3179 C551,1660.6479 551,1682.3879 551,1699.2179 " fill="none" id="common-to-appendServerID" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="551,1704.1079,555,1695.1079,551,1699.1079,547,1695.1079,551,1704.1079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link appendServerID to drop-->
<!--SRC=[VLJBRjim4BphAnOv9GS7RKv53WKSsKO31xOhD-sXw86MLZ9hcLH9AWyK_VUIIucI9ISNGpixiwA6EpRSb0YpB_4ccNzzd6-_GQLaYbfpKS3b4XbylFvq_U4gYbY1mi35N1Zr2fNambm0qu2k3jqjbfWQqFLEeEzhGhO4H48Q1CMBlO5Rs4jvy8E2VC55Pd5jGA56zSGCbuB6vBQJT5XGJBCCa9izAbYkrZzM81KyhlnZMZAjINqGyhdJn0xd-IjStjZNLRQu8bRQu3U1kV5Us0vtjM1796RZKKpmogBTUUo4GW234fdsP4RGWwkZI5apc2YivnTJpu7dmC7C2z83_8sWzuNU3Spy4L4tpfgamMCF1qtuGeL_Qgu6mXPiMK5sL_FIKgN8UL4xbQoSsL1oxIzpvmXnNgm9Vx1mTyogGf7HRDGcQFqR6JMJjkVb-ctjaotjHRupuZintXYqOvgdPzHt3XzgjcZiThtOj-OSoonukt3OWg3eNs_VVjTsFUtIeifPYf0nm_psoEEnlvZ-A7G_2kvdlMDi2RkV-JYKcBiqM9jrdTAsuGitWs0aQ6ebG4Yt2fKzlb-jJCbgE0MLijRrPr14OJBvV1h6Va7TOSO61CjmxskJQos2MRBUH0CPZVA1er-gksY59yB7GHeXnEjdgFViUpOkj_GNDesNeww_beQmcWu9tKUrraLkdZThbAynHCnHe8O0iSw4PmpvBpeVb_FmESLfEjvhzjGdwHX3hIVzN9oMFR-ZnlPkUbZwqn8cF_Syor3yQcuY-Wy0]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -1,157 +1,345 @@
<?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="2210px" preserveAspectRatio="none" style="width:1468px;height:2210px;" version="1.1" viewBox="0 0 1468 2210" width="1468px" zoomAndPan="magnify"><defs><filter height="300%" id="f5nw3f4rb2pkr" 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="317" x="566.5" y="17.4023">DHCPv4 subnet selection (Kea 1.8.0)</text><!--MD5=[73860abe08ab23c9b8e49eb23f18ae46]
cluster relayed--><rect fill="#FFFFFF" filter="url(#f5nw3f4rb2pkr)" height="374.86" style="stroke: #000000; stroke-width: 1.5;" width="445" x="7" y="329.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="201.5" y="344.7344">Relayed</text><!--MD5=[234613e222536af9475ae40e3492b0e6]
cluster set_address--><rect fill="#FFFFFF" filter="url(#f5nw3f4rb2pkr)" height="164.86" style="stroke: #000000; stroke-width: 1.5;" width="803" x="227" y="769.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="546.5" y="784.5944">Set address for lookup</text><!--MD5=[a59c1d05a8f6fb54290705d41e67acbe]
cluster interface--><rect fill="#FFFFFF" filter="url(#f5nw3f4rb2pkr)" height="488" style="stroke: #000000; stroke-width: 1.5;" width="395" x="945" y="990.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="1060.5" y="1006.4544">Try incoming interface</text><!--MD5=[8f3f5adf9176dbd9c419c05d483ab0c6]
cluster address--><rect fill="#FFFFFF" filter="url(#f5nw3f4rb2pkr)" height="294" style="stroke: #000000; stroke-width: 1.5;" width="190" x="745" y="1527.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="797.5" y="1543.4544">Try address</text><!--MD5=[aeb2f621969028d4547d386ac1a1ba6d]
entity relay_subnet--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="172" y="418.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="206" x="182" y="441.5944">Relay address matches subnet</text><!--MD5=[bf459b32eaaf498e62edf6d622ac5891]
entity relay_network--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="142" y="531.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="266" x="152" y="554.5944">Relay address matches shared network</text><!--MD5=[076bfff500cab59e856b606fdf63ed5a]
entity relay_class--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="112" y="644.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="122" y="667.5944">Check client class</text><!--MD5=[467e96f12fdeb7da53b220e72b6eb1fc]
entity relay_address--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="251" y="873.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="116" x="261" y="897.4544">Set relay address</text><!--MD5=[a0e4201c97a623c3dfa593fb75aad03b]
entity client_address--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="553" y="873.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="563" y="897.4544">Set client address</text><!--MD5=[a2d7389029b0dd04029e629f1661a883]
entity source_address--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="856.5" y="873.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="866.5" y="897.4544">Set source address</text><!--MD5=[8eaa1e77cbee43fcac8de4e493864e04]
entity interface_subnet--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="997" y="1025.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="1007" y="1049.4544">Interface matches subnet</text><!--MD5=[44eac5a65cc5cd7e6cc1fc4b89b09f4d]
entity interface_network--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1072" y="1138.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="232" x="1082" y="1162.4544">Interface matches shared network</text><!--MD5=[8e51806cb27b2b60db022c6084a961c9]
entity interface_class--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="1022" y="1251.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="1032" y="1275.4544">Check client class</text><!--MD5=[953883d00ea10db133fca33539954fed]
entity interface_address--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="961.5" y="1426.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="143" x="971.5" y="1450.4544">Set interface address</text><!--MD5=[132ec46735878e55c0250b14c07769ad]
entity inRange--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="761" y="1562.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="138" x="771" y="1586.4544">Check subnet prefix</text><!--MD5=[a34f95003b379bc2f5b7f1af307bcb98]
entity address_class--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="779" y="1769.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="789" y="1793.4544">Check client class</text><!--MD5=[e3476fda087b0512b1cf4e3a66ca5e59]
entity entry--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="350.5" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="75" x="360.5" y="51.7344">Entry point</text><!--MD5=[a23c6b9dab1f8744947aaee2891e743e]
entity rai_link_select--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="327.5" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="337.5" y="148.7344">Try RAI link select</text><!--MD5=[6d8910fd8533ab76ffd986c0d960248c]
entity subnet_select--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="294.5" y="222.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="187" x="304.5" y="245.7344">Try subnet selection option</text><!--MD5=[6348f6d706001cc5dc6ed638bec44faf]
entity found--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="708.5" y="1946.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="718.5" y="1970.4544">Found a subnet</text><!--MD5=[7dc9e356e22f2f113ceeb6da807ce9ff]
entity not_found--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="870.5" y="1946.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="117" x="880.5" y="1970.4544">Found no subnet</text><!--MD5=[4a9142d0fee9ff77eb50a001ac7877e7]
entity subnet4_select--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="767.5" y="2043.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="155" x="777.5" y="2067.4544">Callout subnet4_select</text><!--MD5=[d0fdc5cb89e99cab1ccfec009231794d]
entity success--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="584.5" y="2156.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="594.5" y="2180.4544">Return a subnet</text><!--MD5=[d0255a03afa46a62fe0c456dae837167]
entity no_subnet--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="139" x="785.5" y="2156.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="119" x="795.5" y="2180.4544">Return no subnet</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#f5nw3f4rb2pkr)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="97" x="986.5" y="2156.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="77" x="996.5" y="2180.4544">Drop query</text><!--MD5=[732ffb0ffbc5cdc82abf95e46b9c6dc7]
link entry to rai_link_select--><path d="M398,64.6192 C398,80.1592 398,102.9792 398,119.8592 " fill="none" id="entry-&gt;rai_link_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="398,124.8892,402,115.8892,398,119.8892,394,115.8892,398,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f0b6d7b08c058a6efc1e3a3886382c22]
link rai_link_select to subnet_select--><path d="M398,161.6192 C398,177.1592 398,199.9792 398,216.8592 " fill="none" id="rai_link_select-&gt;subnet_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="398,221.8892,402,212.8892,398,216.8892,394,212.8892,398,221.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2989df9457f995d9ec76378f9e46e3a6]
link subnet_select to relayed--><path d="M389.65,258.5692 C382.075,274.3142 370.655,298.0567 361.01,318.1092 C359.8044,320.6158 358.6265,323.0647 357.4873,325.4331 C356.9177,326.6173 356.3578,327.7814 355.8089,328.9225 " fill="none" id="subnet_select-&gt;relayed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="355.8089,328.9225,363.3147,322.5458,357.9762,324.4167,356.1053,319.0781,355.8089,328.9225" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="374" y="301.7676">relayed</text><!--MD5=[19a01d6111b1c934e32249a327a2afa6]
link subnet_select to set_address--><path d="M433.44,258.3692 C466.58,277.1792 511,310.7592 511,355.5592 C511,355.5592 511,355.5592 511,663.0592 C511,711.2292 468.365,744.0467 425.0638,764.9542 C422.3574,766.2609 419.6485,767.5211 416.9472,768.7356 " fill="none" id="subnet_select-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="416.9472,768.7356,426.796,768.6933,421.5075,766.6853,423.5155,761.3968,416.9472,768.7356" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="512" y="497.6276">not relayed</text><!--MD5=[289599dfcd7d1f32272e42cc3c26c895]
link relayed to relay_subnet--><path d="M342.96,357.1192 C341.81,358.6492 317.61,391.2092 300.84,413.7592 " fill="none" id="relayed-&gt;relay_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="297.8,417.8392,306.3807,413.0049,300.784,413.8273,299.9616,408.2305,297.8,417.8392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[65c9b407d2d4ddf1b89c397faeac317e]
link relay_subnet to relay_network--><path d="M285,454.3992 C285,473.6292 285,504.6892 285,525.7192 " fill="none" id="relay_subnet-&gt;relay_network" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="285,530.8392,289,521.8392,285,525.8392,281,521.8392,285,530.8392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="286" y="497.6276">no match</text><!--MD5=[918f6d4a891df42092f9be64f359f985]
link relay_subnet to relay_class--><path d="M199.58,454.0892 C156.79,467.3892 108.74,490.6992 83,531.0592 C56.99,571.8592 109.58,615.9992 147.59,640.9192 " fill="none" id="relay_subnet-&gt;relay_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="152.15,643.8592,146.7424,635.6277,147.9441,641.1554,142.4164,642.3571,152.15,643.8592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="84" y="554.1276">match</text><!--MD5=[ec56da742308e5dcfe86ad0421278606]
link relay_network to set_address--><path d="M288.52,567.3092 C294.12,594.7992 305.4675,650.4892 315.5475,699.9592 C320.5875,724.6942 325.3106,747.8742 328.84,765.1967 C329.0606,766.2794 329.2765,767.3392 329.4876,768.375 " fill="none" id="relay_network-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="329.4876,768.375,331.6103,758.7576,328.4893,763.4756,323.7713,760.3547,329.4876,768.375" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="319" y="667.1276">no match</text><!--MD5=[a30462b61ddf59585f12c8e1078496e0]
link relay_network to relay_class--><path d="M268.91,567.3992 C250.69,587.0392 221.02,619.0092 201.5,640.0392 " fill="none" id="relay_network-&gt;relay_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="197.98,643.8392,207.0376,639.9713,201.3844,640.1773,201.1785,634.5242,197.98,643.8392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="241" y="610.6276">match</text><!--MD5=[44feab40ce9c0df31465bdb13adac7ed]
link relay_class to found--><path d="M177.97,680.0792 C172.39,705.1692 163,753.6292 163,795.4192 C163,795.4192 163,795.4192 163,1878.4192 C163,1932.4492 543.78,1954.4892 703.15,1961.3492 " fill="none" id="relay_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="708.26,1961.5692,699.4395,1957.1875,703.2646,1961.3551,699.097,1965.1802,708.26,1961.5692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="164" y="1362.4876">compatible</text><!--MD5=[d5e1893c7bc3c7589901f4b78d6439f0]
link relay_class to set_address--><path d="M185.6,680.2592 C190.22,698.4992 199.91,727.0992 218,745.0592 C222.9438,749.9667 228.4423,754.4291 234.2844,758.4815 C237.2054,760.5077 240.2123,762.4314 243.2786,764.2571 C244.8117,765.1699 246.3597,766.0582 247.9193,766.9226 C248.6991,767.3547 249.4818,767.7809 250.2669,768.2012 C250.6595,768.4113 251.0527,768.6199 251.4464,768.8271 " fill="none" id="relay_class-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="251.4464,768.8271,245.3441,761.0965,247.0215,766.499,241.6191,768.1764,251.4464,768.8271" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="219" y="741.6276">not compatible</text><!--MD5=[3f679d64a1cccee12b0e824b1733c0ed]
link set_address to relay_address--><path d="M334.99,796.9892 C334.66,798.9192 327.44,841.3492 322.81,868.5092 " fill="none" id="set_address-&gt;relay_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="321.93,873.7292,327.3899,865.5323,322.7728,868.8008,319.5043,864.1837,321.93,873.7292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="135" x="330" y="840.4876">try the relay address</text><!--MD5=[9d0435cdb5bba0d446c223c46240db6f]
link relay_address to client_address--><path d="M387.22,891.9192 C434.95,891.9192 498.7,891.9192 547.88,891.9192 " fill="none" id="relay_address-&gt;client_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="552.9,891.9192,543.9,887.9192,547.9,891.9192,543.9,895.9192,552.9,891.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="405.5" y="885.4876">has no relay address</text><!--MD5=[4192df04ddbb3f1e00a57ee174f51cdb]
link client_address to source_address--><path d="M693.28,891.9192 C740.3,891.9192 802.28,891.9192 851.17,891.9192 " fill="none" id="client_address-&gt;source_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="856.46,891.9192,847.46,887.9192,851.46,891.9192,847.46,895.9192,856.46,891.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="127" x="711.25" y="885.4876">has no client address</text><!--MD5=[1cd4e848379fc555ffa76a6d3111f3fb]
link source_address to interface_subnet--><path d="M949.58,910.1292 C979.61,937.9292 1038.68,992.6192 1070.85,1022.4092 " fill="none" id="source_address-&gt;interface_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1074.63,1025.9092,1070.7255,1016.8674,1070.9543,1022.5196,1065.3021,1022.7484,1074.63,1025.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="123" x="1017" y="971.4876">no suitable address</text><!--MD5=[a29ca77fdc41863d51ecafa8e32dcb85]
link relay_address to inRange--><path d="M319,910.0192 C319,937.8592 319,994.7392 319,1042.9192 C319,1042.9192 319,1042.9192 319,1445.9192 C319,1534.9892 608.22,1565.7192 755.69,1575.5992 " fill="none" id="relay_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="760.87,1575.9392,752.1525,1571.356,755.8808,1575.6104,751.6264,1579.3387,760.87,1575.9392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="120" x="320" y="1274.9876">has a relay address</text><!--MD5=[bf38c5431748c4414750c7275409615d]
link client_address to inRange--><path d="M598.14,910.0992 C565.15,935.1492 511,985.0692 511,1042.9192 C511,1042.9192 511,1042.9192 511,1445.9192 C511,1498.7592 658.41,1540.8992 755.88,1562.9892 " fill="none" id="client_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="760.78,1564.0892,752.8657,1558.2272,755.8997,1563.0015,751.1254,1566.0356,760.78,1564.0892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="125" x="512" y="1274.9876">has a client address</text><!--MD5=[306377b471c1f30003804df3ba3e4280]
link source_address to inRange--><path d="M856.74,909.9992 C791.87,929.8492 708,969.6692 708,1042.9192 C708,1042.9192 708,1042.9192 708,1445.9192 C708,1498.6392 760.49,1538.1592 799.27,1560.1592 " fill="none" id="source_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="803.93,1562.7492,798.0248,1554.8671,799.5653,1560.3101,794.1222,1561.8506,803.93,1562.7492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="219" x="709" y="1274.9876">has source address and use unicast</text><!--MD5=[4c5f9760336ab58778079bb174cbf5f0]
link interface_subnet to not_found--><path d="M1183.41,1061.9192 C1267.54,1080.3992 1380,1113.1092 1380,1155.9192 C1380,1155.9192 1380,1155.9192 1380,1878.4192 C1380,1952.2692 1138.67,1963.6392 1013.06,1964.5692 " fill="none" id="interface_subnet-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1007.91,1964.5992,1016.9327,1968.5477,1012.9099,1964.5706,1016.887,1960.5479,1007.91,1964.5992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1381" y="1508.4876">no interface</text><!--MD5=[f6d146b568a537518d52dd0109d2cafd]
link interface_subnet to interface_class--><path d="M1071.84,1062.1092 C1052.58,1079.2392 1025.46,1107.4692 1014,1138.9192 C998.88,1180.3992 1037.07,1223.3392 1065.19,1248.0092 " fill="none" id="interface_subnet-&gt;interface_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1069.26,1251.5192,1065.0657,1242.6081,1065.4768,1248.25,1059.835,1248.6612,1069.26,1251.5192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="1015" y="1161.9876">match</text><!--MD5=[8c73b6f253b7f8003f1aeec9d3e2c401]
link interface_subnet to interface_network--><path d="M1109.41,1062.2592 C1127.98,1081.8992 1158.22,1113.8692 1178.12,1134.8992 " fill="none" id="interface_subnet-&gt;interface_network" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1181.71,1138.6992,1178.417,1129.4172,1178.2685,1135.0721,1172.6136,1134.9236,1181.71,1138.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="1152" y="1105.4876">no match</text><!--MD5=[8a490629b42afa0a067bde343f0409be]
link interface_network to interface_class--><path d="M1181.44,1175.2592 C1162.69,1194.8992 1132.15,1226.8692 1112.07,1247.8992 " fill="none" id="interface_network-&gt;interface_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1108.45,1251.6992,1117.5542,1247.9424,1111.899,1248.0792,1111.7622,1242.424,1108.45,1251.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="1152" y="1218.4876">march</text><!--MD5=[e1288d340d0c431aabe10a4c239c74f7]
link interface_network to not_found--><path d="M1216.94,1175.1492 C1237.06,1195.4392 1266,1231.1792 1266,1268.9192 C1266,1268.9192 1266,1268.9192 1266,1878.4192 C1266,1930.4492 1109.1,1951.4192 1012.67,1959.3992 " fill="none" id="interface_network-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1007.55,1959.8192,1016.8511,1963.058,1012.5327,1959.404,1016.1867,1955.0856,1007.55,1959.8192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="1267" y="1585.9876">no match</text><!--MD5=[9d13a96273b9c1dbfb8a7fbd997b0088]
link interface_class to found--><path d="M1111.94,1288.2092 C1127.1,1302.7092 1146.84,1324.8592 1156,1348.9192 C1203,1472.3792 1160.06,1514.0492 1168,1645.9192 C1169,1662.6092 1171,1666.6992 1171,1683.4192 C1171,1683.4192 1171,1683.4192 1171,1878.4192 C1171,1879.4592 954.79,1925.2992 840.68,1949.4192 " fill="none" id="interface_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="835.66,1950.4792,845.2955,1952.5181,840.5505,1949.4384,843.6302,1944.6934,835.66,1950.4792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="1169" y="1642.4876">compatible</text><!--MD5=[d4a81a9eb6ae9754c2f91708a00f90ba]
link interface_class to interface_address--><path d="M1081.97,1287.9492 C1073.39,1303.3492 1061.43,1326.9092 1055,1348.9192 C1047.93,1373.1292 1045.02,1402.0192 1043.83,1421.5292 " fill="none" id="interface_class-&gt;interface_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1043.54,1426.7692,1048.0484,1418.0128,1043.8261,1421.7774,1040.0615,1417.5551,1043.54,1426.7692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="1056" y="1362.4876">not compatible</text><!--MD5=[18f0036984a219b8e279d39e6955cbb3]
link interface_address to inRange--><path d="M961.24,1454.9892 C910.72,1462.4692 852.64,1475.1192 837,1494.9192 C823.19,1512.3892 826.7,1538.7792 831.91,1557.5092 " fill="none" id="interface_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="833.41,1562.5792,834.6953,1552.8146,831.993,1557.7842,827.0233,1555.0818,833.41,1562.5792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="153" x="838" y="1508.4876">has an interface address</text><!--MD5=[1be935c2e674a39bb491f742257146af]
link interface_address to not_found--><path d="M1037.7,1463.0692 C1030.36,1488.3792 1018,1537.3192 1018,1579.9192 C1018,1579.9192 1018,1579.9192 1018,1878.4192 C1018,1906.2692 995.11,1928.9092 973.97,1943.8892 " fill="none" id="interface_address-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="969.77,1946.7792,979.4482,1944.9538,973.8835,1943.9369,974.9005,1938.3722,969.77,1946.7792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="1019" y="1736.4876">no interface address</text><!--MD5=[65c872516cd5acbef394f498ee60e6f6]
link inRange to address_class--><path d="M840.75,1599.0492 C842.38,1636.0492 846.21,1723.4492 848.02,1764.6692 " fill="none" id="inRange-&gt;address_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="848.24,1769.6992,851.8498,1760.5358,848.0253,1764.7038,843.8572,1760.8793,848.24,1769.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="845" y="1689.4876">match</text><!--MD5=[c6a81dd9b5c38fb7a31992aeb43efba5]
link inRange to not_found--><path d="M768.39,1598.9792 C726.98,1613.5792 683,1639.4392 683,1683.4192 C683,1683.4192 683,1683.4192 683,1878.4192 C683,1897.7892 789.82,1927.8092 865.46,1946.6392 " fill="none" id="inRange-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="870.4,1947.8692,862.6221,1941.8274,865.5459,1946.67,860.7033,1949.5938,870.4,1947.8692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="684" y="1792.9876">no match</text><!--MD5=[6bbdb059bb8431be14feb2edf9179bcc]
link address_class to found--><path d="M815.7,1805.9392 C765.48,1832.3692 674.36,1883.6192 657,1915.9192 C644.07,1939.9792 671.86,1951.9792 703.35,1957.9692 " fill="none" id="address_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="708.43,1958.8792,700.2794,1953.3504,703.5088,1957.9948,698.8644,1961.2243,708.43,1958.8792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="708" y="1882.4876">compatible</text><!--MD5=[6fa859304e08ed6b1a2f69b396a973f6]
link address_class to not_found--><path d="M856.62,1805.9192 C865.47,1825.4292 880.68,1858.2892 895,1885.9192 C904.99,1905.1792 917.16,1926.6292 926.17,1942.1492 " fill="none" id="address_class-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="928.86,1946.7592,927.7843,1936.9693,926.3424,1942.4393,920.8724,1940.9974,928.86,1946.7592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="896" y="1882.4876">not compatible</text><!--MD5=[920af236d2bfe8ac015294b6ec32c751]
link found to subnet4_select--><path d="M787.22,1983.3392 C801.03,1999.1492 821.43,2022.4892 836.24,2039.4392 " fill="none" id="found-&gt;subnet4_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="839.87,2043.6092,836.9563,2034.2012,836.5785,2039.8454,830.9343,2039.4676,839.87,2043.6092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[be5a985c5094547d1aa8a3dfda06631d]
link not_found to subnet4_select--><path d="M923.59,1983.3392 C909.62,1999.1492 888.98,2022.4892 873.99,2039.4392 " fill="none" id="not_found-&gt;subnet4_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="870.31,2043.6092,879.2712,2039.523,873.6247,2039.8659,873.2818,2034.2194,870.31,2043.6092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[085d72d70044aeb14e8d963046e88b11]
link found to not_found--><!--MD5=[d0da1e00427a0ca7837196c7dddb3af4]
link subnet4_select to success--><path d="M767.05,2070.2692 C735.7,2076.7092 702,2088.4992 677,2109.9192 C664.53,2120.5992 657.42,2137.8792 653.49,2151.7992 " fill="none" id="subnet4_select-&gt;success" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="652.18,2156.7492,658.3343,2149.0599,653.4497,2151.9131,650.5965,2147.0285,652.18,2156.7492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="164" x="678" y="2123.4876">CONTINUE and subnet set</text><!--MD5=[48d8edc0219dd4d7c3847b4159c280ef]
link subnet4_select to no_subnet--><path d="M853.62,2080.3192 C852.99,2089.1692 852.31,2100.1092 852,2109.9192 C851.56,2123.8292 852.26,2139.4292 853.1,2151.7492 " fill="none" id="subnet4_select-&gt;no_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="853.47,2156.8092,856.8167,2147.5464,853.1127,2151.822,848.8372,2148.118,853.47,2156.8092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="138" x="853" y="2123.4876">SKIP or subnet not set</text><!--MD5=[f590b573e48b5dfdcd1774729941f83a]
link subnet4_select to drop--><path d="M938.2,2080.0192 C958.54,2086.9392 979.25,2096.5792 996,2109.9192 C1009.78,2120.8892 1019.89,2138.1592 1026.36,2151.9892 " fill="none" id="subnet4_select-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1028.58,2156.9192,1028.5229,2147.0705,1026.5228,2152.362,1021.2313,2150.362,1028.58,2156.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1012" y="2123.4876">DROP</text><!--MD5=[ac540f98c992b562d25c0989cf3dd0fa]
@startuml
title DHCPv4 subnet selection (Kea 1.8.0)
agent "Entry point" as entry
agent "Try RAI link select" as rai_link_select
agent "Try subnet selection option" as subnet_select
rectangle "Relayed" as relayed {
agent "Relay address matches subnet" as relay_subnet
agent "Relay address matches shared network" as relay_network
agent "Check client class" as relay_class
}
rectangle "Set address for lookup" as set_address {
agent "Set relay address" as relay_address
agent "Set client address" as client_address
agent "Set source address" as source_address
}
rectangle "Try incoming interface" as interface {
agent "Interface matches subnet" as interface_subnet
agent "Interface matches shared network" as interface_network
agent "Check client class" as interface_class
agent "Set interface address" as interface_address
}
rectangle "Try address" as address {
agent "Check subnet prefix" as inRange
agent "Check client class" as address_class
}
agent "Found a subnet" as found
agent "Found no subnet" as not_found
agent "Callout subnet4_select" as subnet4_select
agent "Return a subnet" as success
agent "Return no subnet" as no_subnet
agent "Drop query" as drop
entry - -> rai_link_select
rai_link_select - -> subnet_select
subnet_select - -> relayed : relayed
subnet_select - -> set_address : not relayed
relayed - -> relay_subnet
relay_subnet - -> relay_network : no match
relay_subnet - -> relay_class : match
relay_network - -> set_address : no match
relay_network - -> relay_class : match
relay_class - - -> found : compatible
relay_class - -> set_address : not compatible
set_address - -> relay_address : try the relay address
relay_address -r-> client_address : has no relay address
client_address -r-> source_address : has no client address
source_address - -> interface_subnet : no suitable address
relay_address - -> inRange : has a relay address
client_address - -> inRange : has a client address
source_address - -> inRange : has source address and use unicast
interface_subnet - - -> not_found : no interface
interface_subnet - -> interface_class : match
interface_subnet - -> interface_network : no match
interface_network - -> interface_class : march
interface_network - - -> not_found : no match
interface_class - - -> found : compatible
interface_class - - -> interface_address : not compatible
interface_address - -> inRange : has an interface address
interface_address - - -> not_found : no interface address
inRange - - -> address_class : match
inRange - - -> not_found : no match
address_class - - -> found : compatible
address_class - - -> not_found : not compatible
found - -> subnet4_select
not_found - -> subnet4_select
found -[hidden]> not_found
subnet4_select - -> success : CONTINUE and subnet set
subnet4_select - -> no_subnet : SKIP or subnet not set
subnet4_select - -> drop : DROP
@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>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2308px" preserveAspectRatio="none" style="width:1429px;height:2308px;background:#FFFFFF;" version="1.1" viewBox="0 0 1429 2308" width="1429px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="248" x="583.5" y="24.9659">DHCPv4 subnet selection (Kea 1.8.0)</text>
<!--cluster relayed-->
<g id="cluster_relayed">
<rect fill="none" height="391.06" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="442" x="7" y="359.2779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="54" x="201" y="376.2439">Relayed</text>
</g>
<!--cluster set_address-->
<g id="cluster_set_address">
<rect fill="none" height="172.93" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="792" x="226" y="817.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="157" x="543.5" y="834.3039">Set address for lookup</text>
</g>
<!--cluster interface-->
<g id="cluster_interface">
<rect fill="none" height="509.27" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="392" x="919" y="1049.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="156" x="1037" y="1066.2339">Try incoming interface</text>
</g>
<!--cluster address-->
<g id="cluster_address">
<rect fill="none" height="309.14" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1.0;" width="186" x="737" y="1609.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="80" x="790" y="1626.5039">Try address</text>
</g>
<!--entity relay_subnet-->
<g id="elem_relay_subnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="226" x="170" y="451.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="206" x="180" y="476.1039">Relay address matches subnet</text>
</g>
<!--entity relay_network-->
<g id="elem_relay_network">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="284" x="141" y="569.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="264" x="151" y="594.1639">Relay address matches shared network</text>
</g>
<!--entity relay_class-->
<g id="elem_relay_class">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="113" y="687.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="123" y="712.2339">Check client class</text>
</g>
<!--entity relay_address-->
<g id="elem_relay_address">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="136" x="250" y="927.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="260" y="952.1639">Set relay address</text>
</g>
<!--entity client_address-->
<g id="elem_client_address">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="140" x="544" y="927.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="554" y="952.1639">Set client address</text>
</g>
<!--entity source_address-->
<g id="elem_source_address">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="148" x="846" y="927.1979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="856" y="952.1639">Set source address</text>
</g>
<!--entity interface_subnet-->
<g id="elem_interface_subnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="193" x="970.5" y="1087.2679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="173" x="980.5" y="1112.2339">Interface matches subnet</text>
</g>
<!--entity interface_network-->
<g id="elem_interface_network">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="251" x="1044.5" y="1205.3379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="231" x="1054.5" y="1230.3039">Interface matches shared network</text>
</g>
<!--entity interface_class-->
<g id="elem_interface_class">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="995" y="1323.3979"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="1005" y="1348.3639">Check client class</text>
</g>
<!--entity interface_address-->
<g id="elem_interface_address">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="163" x="935.5" y="1503.4679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="143" x="945.5" y="1528.4339">Set interface address</text>
</g>
<!--entity inRange-->
<g id="elem_inRange">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="154" x="753" y="1647.5379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="134" x="763" y="1672.5039">Check subnet prefix</text>
</g>
<!--entity address_class-->
<g id="elem_address_class">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="769" y="1863.6079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="779" y="1888.5739">Check client class</text>
</g>
<!--entity entry-->
<g id="elem_entry">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="94" x="348" y="47.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="358" y="72.0339">Entry point</text>
</g>
<!--entity rai_link_select-->
<g id="elem_rai_link_select">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="139" x="325.5" y="147.1379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="335.5" y="172.1039">Try RAI link select</text>
</g>
<!--entity subnet_select-->
<g id="elem_subnet_select">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="203" x="293.5" y="247.2079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="183" x="303.5" y="272.1739">Try subnet selection option</text>
</g>
<!--entity found-->
<g id="elem_found">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="125" x="696.5" y="2045.6779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="105" x="706.5" y="2070.6439">Found a subnet</text>
</g>
<!--entity not_found-->
<g id="elem_not_found">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="134" x="856" y="2045.6779"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114" x="866" y="2070.6439">Found no subnet</text>
</g>
<!--entity subnet4_select-->
<g id="elem_subnet4_select">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="171" x="754.5" y="2145.7379"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="151" x="764.5" y="2170.7039">Callout subnet4_select</text>
</g>
<!--entity success-->
<g id="elem_success">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="575.5" y="2263.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109" x="585.5" y="2288.7739">Return a subnet</text>
</g>
<!--entity no_subnet-->
<g id="elem_no_subnet">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="138" x="771" y="2263.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118" x="781" y="2288.7739">Return no subnet</text>
</g>
<!--entity drop-->
<g id="elem_drop">
<rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="96" x="967" y="2263.8079"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="977" y="2288.7739">Drop query</text>
</g>
<!--link entry to rai_link_select-->
<g id="link_entry_rai_link_select">
<path d="M395,86.5179 C395,101.8479 395,123.5879 395,140.4079 " fill="none" id="entry-to-rai_link_select" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="395,145.3079,399,136.3079,395,140.3079,391,136.3079,395,145.3079" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link rai_link_select to subnet_select-->
<g id="link_rai_link_select_subnet_select">
<path d="M395,186.5779 C395,201.9079 395,223.6579 395,240.4779 " fill="none" id="rai_link_select-to-subnet_select" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="395,245.3779,399,236.3779,395,240.3779,391,236.3779,395,245.3779" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link subnet_select to relayed-->
<g id="link_subnet_select_relayed">
<path d="M386.56,286.6279 C379.085,303.3629 367.9325,328.3354 358.5325,349.3829 C357.3575,352.0139 356.2099,354.5835 355.1003,357.068 C354.8228,357.6891 354.5478,358.3049 354.2753,358.9151 " fill="none" id="subnet_select-to-relayed" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="354.2753,358.9151,361.5978,352.3286,356.3143,354.3497,354.2932,349.0662,354.2753,358.9151" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="44" x="373" y="331.1749">relayed</text>
</g>
<!--link subnet_select to set_address-->
<g id="link_subnet_select_set_address">
<path d="M430.75,286.5979 C463.86,306.9379 508,342.6679 508,388.6379 C508,388.6379 508,388.6379 508,707.8079 C508,756.6779 465.6075,791.0879 422.5525,813.4329 C421.207,814.1312 419.8609,814.8177 418.5154,815.4925 C417.8427,815.8299 417.1701,816.1643 416.4978,816.4959 C416.1617,816.6617 415.8256,816.8267 415.4897,816.991 " fill="none" id="subnet_select-to-set_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="415.4897,816.991,425.3319,816.63,419.9812,814.7942,421.817,809.4435,415.4897,816.991" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="68" x="509" y="535.0949">not relayed</text>
</g>
<!--link relayed to relay_subnet-->
<g id="link_relayed_relay_subnet">
<path d="M340.83,390.3679 C338.72,393.2679 316.86,423.2379 300.64,445.4879 " fill="none" id="relayed-to-relay_subnet" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="297.75,449.4479,306.2806,444.5256,300.6926,445.4055,299.8126,439.8175,297.75,449.4479" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link relay_subnet to relay_network-->
<g id="link_relay_subnet_relay_network">
<path d="M283,490.5779 C283,510.1379 283,540.7979 283,562.4379 " fill="none" id="relay_subnet-to-relay_network" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="283,567.3279,287,558.3279,283,562.3279,279,558.3279,283,567.3279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="284" y="535.0949">no match</text>
</g>
<!--link relay_subnet to relay_class-->
<g id="link_relay_subnet_relay_class">
<path d="M198.2,490.6879 C156.15,504.8679 109.09,528.9679 84,569.1979 C57.99,610.9179 108.63,656.8779 146.32,683.4379 " fill="none" id="relay_subnet-to-relay_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="150.06,686.0279,144.9432,677.6125,145.9511,683.1789,140.3848,684.1868,150.06,686.0279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="38" x="85" y="594.1349">match</text>
</g>
<!--link relay_network to set_address-->
<g id="link_relay_network_set_address">
<path d="M286.68,608.6279 C292.36,637.8379 303.67,695.9654 313.6913,747.4692 C318.7019,773.221 323.3903,797.317 326.8917,815.3143 C327.0011,815.8767 327.1094,816.4332 327.2165,816.9836 " fill="none" id="relay_network-to-set_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="327.2165,816.9836,329.4241,807.3853,326.2616,812.0756,321.5714,808.9131,327.2165,816.9836" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="317" y="712.2049">no match</text>
</g>
<!--link relay_network to relay_class-->
<g id="link_relay_network_relay_class">
<path d="M266.55,608.6479 C249.09,628.7079 221.46,660.4579 202.57,682.1679 " fill="none" id="relay_network-to-relay_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="199.44,685.7679,208.3589,681.5903,202.7163,681.9909,202.3157,676.3482,199.44,685.7679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="38" x="240" y="653.1649">match</text>
</g>
<!--link relay_class to found-->
<g id="link_relay_class_found">
<path d="M178.01,726.5779 C172.7,753.1779 164,803.4179 164,846.6979 C164,846.6979 164,846.6979 164,1976.1779 C164,2028.7979 532.92,2053.1279 689.77,2061.0979 " fill="none" id="relay_class-to-found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="694.66,2061.3479,685.8653,2056.9148,689.6659,2061.1047,685.476,2064.9053,694.66,2061.3479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="67" x="165" y="1438.3649">compatible</text>
</g>
<!--link relay_class to set_address-->
<g id="link_relay_class_set_address">
<path d="M186.01,726.6779 C190.9,745.6379 200.85,774.6479 219,793.3379 C223.795,798.2767 229.1359,802.8079 234.8159,806.9572 C237.6558,809.0318 240.5806,811.0109 243.5642,812.8978 C245.056,813.8412 246.5625,814.7615 248.0805,815.6592 C248.8395,816.108 249.6014,816.5511 250.3657,816.9887 C250.5568,817.0981 250.7481,817.2071 250.9395,817.3158 " fill="none" id="relay_class-to-set_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="250.9395,817.3158,245.0885,809.3933,246.5916,814.8468,241.1381,816.3499,250.9395,817.3158" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="91" x="220" y="789.2349">not compatible</text>
</g>
<!--link set_address to relay_address-->
<g id="link_set_address_relay_address">
<path d="M332.96,848.4779 C332.38,852.2479 326.08,893.1779 321.85,920.7279 " fill="none" id="set_address-to-relay_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="321.1,925.5779,326.4166,917.2873,321.8571,920.6356,318.5088,916.076,321.1,925.5779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122" x="329" y="893.0949">try the relay address</text>
</g>
<!--link relay_address to client_address-->
<g id="link_relay_address_client_address">
<path d="M386.28,946.7279 C431.37,946.7279 490.52,946.7279 537.24,946.7279 " fill="none" id="relay_address-to-client_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="542.24,946.7279,533.24,942.7279,537.24,946.7279,533.24,950.7279,542.24,946.7279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122" x="404" y="939.6249">has no relay address</text>
</g>
<!--link client_address to source_address-->
<g id="link_client_address_source_address">
<path d="M684.2,946.7279 C730.39,946.7279 790.98,946.7279 839.17,946.7279 " fill="none" id="client_address-to-source_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="844.07,946.7279,835.07,942.7279,839.07,946.7279,835.07,950.7279,844.07,946.7279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="125" x="702.5" y="939.6249">has no client address</text>
</g>
<!--link source_address to interface_subnet-->
<g id="link_source_address_interface_subnet">
<path d="M937.44,966.4879 C964.41,995.4779 1016.16,1051.1279 1045.43,1082.6079 " fill="none" id="source_address-to-interface_subnet" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1048.55,1085.9679,1045.3321,1076.6596,1045.1379,1082.3131,1039.4844,1082.119,1048.55,1085.9679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="116" x="998" y="1029.1649">no suitable address</text>
</g>
<!--link relay_address to inRange-->
<g id="link_relay_address_inRange">
<path d="M318,966.7079 C318,996.3879 318,1055.5779 318,1105.7979 C318,1105.7979 318,1105.7979 318,1524.0079 C318,1611.7779 600.91,1647.5579 746.13,1660.1479 " fill="none" id="relay_address-to-inRange" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="751.01,1660.5679,742.3868,1655.8097,746.0285,1660.1385,741.6997,1663.7801,751.01,1660.5679" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="113" x="319" y="1348.3349">has a relay address</text>
</g>
<!--link client_address to inRange-->
<g id="link_client_address_inRange">
<path d="M588.81,966.6479 C556.06,993.6079 503,1046.4479 503,1105.7979 C503,1105.7979 503,1105.7979 503,1524.0079 C503,1629.9979 649.31,1657.7579 746.2,1664.5179 " fill="none" id="client_address-to-inRange" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="751,1664.8379,742.2817,1660.2564,746.0108,1664.5101,741.7571,1668.2392,751,1664.8379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="116" x="504" y="1348.3349">has a client address</text>
</g>
<!--link source_address to inRange-->
<g id="link_source_address_inRange">
<path d="M845.65,965.7379 C778.78,986.8879 691,1029.2279 691,1105.7979 C691,1105.7979 691,1105.7979 691,1524.0079 C691,1578.9879 744.85,1620.5679 785.52,1644.1279 " fill="none" id="source_address-to-inRange" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="789.59,1646.4379,783.7463,1638.51,785.2444,1643.9649,779.7895,1645.463,789.59,1646.4379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="210" x="692" y="1348.3349">has source address and use unicast</text>
</g>
<!--link interface_subnet to not_found-->
<g id="link_interface_subnet_not_found">
<path d="M1163.65,1109.3879 C1245.29,1116.4879 1349,1141.6779 1349,1223.8679 C1349,1223.8679 1349,1223.8679 1349,1976.1779 C1349,2047.3079 1118.33,2061.4179 996.47,2063.9179 " fill="none" id="interface_subnet-to-not_found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="991.54,2064.0079,1000.6182,2067.8272,996.539,2063.9079,1000.4582,2059.8288,991.54,2064.0079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="71" x="1350" y="1589.4349">no interface</text>
</g>
<!--link interface_subnet to interface_class-->
<g id="link_interface_subnet_interface_class">
<path d="M1044.43,1126.7879 C1025,1144.7379 998.36,1173.5779 987,1205.3379 C971.83,1247.7379 1008.42,1292.3879 1036.21,1318.6679 " fill="none" id="interface_subnet-to-interface_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1039.82,1322.0079,1035.9155,1312.9661,1036.1443,1318.6183,1030.4921,1318.8471,1039.82,1322.0079" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="38" x="988" y="1230.2649">match</text>
</g>
<!--link interface_subnet to interface_network-->
<g id="link_interface_subnet_interface_network">
<path d="M1083.78,1126.7079 C1101.58,1146.7779 1129.76,1178.5179 1149.02,1200.2279 " fill="none" id="interface_subnet-to-interface_network" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1152.22,1203.8379,1149.2304,1194.4538,1148.8982,1200.1009,1143.2511,1199.7687,1152.22,1203.8379" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="1125" y="1171.2349">no match</text>
</g>
<!--link interface_network to interface_class-->
<g id="link_interface_network_interface_class">
<path d="M1152.73,1244.7779 C1134.41,1264.8379 1105.41,1296.5879 1085.59,1318.2979 " fill="none" id="interface_network-to-interface_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1082.28,1321.9179,1091.306,1317.9769,1085.6547,1318.2286,1085.4031,1312.5773,1082.28,1321.9179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="38" x="1124" y="1289.2949">march</text>
</g>
<!--link interface_network to not_found-->
<g id="link_interface_network_not_found">
<path d="M1189.38,1244.8879 C1209.17,1266.4279 1237,1303.5479 1237,1341.9379 C1237,1341.9379 1237,1341.9379 1237,1976.1779 C1237,2025.8479 1089.48,2048.7879 996.67,2058.2979 " fill="none" id="interface_network-to-not_found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="991.87,2058.7879,1001.2242,2061.8699,996.845,2058.289,1000.4259,2053.9098,991.87,2058.7879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="1238" y="1672.4649">no match</text>
</g>
<!--link interface_class to found-->
<g id="link_interface_class_found">
<path d="M1085.86,1362.7379 C1101.31,1377.4979 1120.83,1399.5079 1130,1423.4679 C1179.63,1553.1279 1133.94,1597.0079 1142,1735.6079 C1143,1752.7379 1145,1756.9479 1145,1774.1079 C1145,1774.1079 1145,1774.1079 1145,1976.1779 C1145,2045.9079 906.97,2030.0779 839,2045.6779 C835.44,2046.4879 831.79,2047.3279 828.1,2048.1779 " fill="none" id="interface_class-to-found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="823.35,2049.2779,833.0206,2051.1435,828.221,2048.1494,831.215,2043.3499,823.35,2049.2779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="67" x="1143" y="1731.5049">compatible</text>
</g>
<!--link interface_class to interface_address-->
<g id="link_interface_class_interface_address">
<path d="M1055.33,1362.8379 C1048.36,1378.7179 1038.81,1402.1679 1033,1423.4679 C1026.32,1447.9579 1022.05,1476.6679 1019.61,1496.7679 " fill="none" id="interface_class-to-interface_address" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1019.03,1501.7279,1024.0584,1493.2594,1019.6167,1496.7625,1016.1137,1492.3207,1019.03,1501.7279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="91" x="1034" y="1438.3649">not compatible</text>
</g>
<!--link interface_address to inRange-->
<g id="link_interface_address_inRange">
<path d="M935.09,1535.7079 C890.06,1543.9979 840.63,1556.8179 827,1574.5379 C812.66,1593.1879 815.9,1620.8679 821.19,1640.8979 " fill="none" id="interface_address-to-inRange" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="822.54,1645.6579,823.9213,1635.9064,821.1702,1640.8492,816.2273,1638.0981,822.54,1645.6579" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144" x="828" y="1589.4349">has an interface address</text>
</g>
<!--link interface_address to not_found-->
<g id="link_interface_address_not_found">
<path d="M1013.09,1542.7479 C1007.8,1569.8479 999,1621.5679 999,1666.0679 C999,1666.0679 999,1666.0679 999,1976.1779 C999,2003.1679 978.28,2025.9679 958.48,2041.6079 " fill="none" id="interface_address-to-not_found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="954.68,2044.4979,964.2621,2042.2211,958.6558,2041.466,959.411,2035.8597,954.68,2044.4979" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="1000" y="1829.5049">no interface address</text>
</g>
<!--link inRange to address_class-->
<g id="link_inRange_address_class">
<path d="M830.71,1687.0679 C832.15,1725.7079 835.43,1813.4579 837.06,1856.8679 " fill="none" id="inRange-to-address_class" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="837.24,1861.6779,840.9032,1852.5356,837.0544,1856.6814,832.9087,1852.8326,837.24,1861.6779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="38" x="835" y="1780.5049">match</text>
</g>
<!--link inRange to not_found-->
<g id="link_inRange_not_found">
<path d="M759.3,1687.0679 C718.42,1702.8079 675,1729.9279 675,1774.1079 C675,1774.1079 675,1774.1079 675,1976.1779 C675,1994.8679 776.34,2025.6379 849.46,2045.3979 " fill="none" id="inRange-to-not_found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="854.1,2046.6479,846.4494,2040.4457,849.2719,2045.348,844.3696,2048.1706,854.1,2046.6479" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="57" x="676" y="1888.5349">no match</text>
</g>
<!--link address_class to found-->
<g id="link_address_class_found">
<path d="M803.16,1902.9579 C753.3,1930.6979 665.77,1982.7179 649,2014.6779 C637.19,2037.1879 661.3,2049.4879 689.93,2056.1979 " fill="none" id="address_class-to-found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="694.62,2057.2179,686.6857,2051.3829,689.7361,2056.1469,684.9721,2059.1972,694.62,2057.2179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="67" x="701" y="1980.5749">compatible</text>
</g>
<!--link address_class to not_found-->
<g id="link_address_class_not_found">
<path d="M845.19,1902.9179 C853.15,1923.2979 866.63,1956.6779 880,1984.6779 C888.98,2003.4679 900.2,2024.1479 908.93,2039.7079 " fill="none" id="address_class-to-not_found" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="911.28,2043.8779,910.3433,2034.0737,908.8239,2039.5227,903.3749,2038.0034,911.28,2043.8779" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="91" x="881" y="1980.5749">not compatible</text>
</g>
<!--link found to subnet4_select-->
<g id="link_found_subnet4_select">
<path d="M774.62,2085.1179 C787.73,2100.9879 806.52,2123.7379 820.59,2140.7779 " fill="none" id="found-to-subnet4_select" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="823.47,2144.2579,820.8228,2134.7715,820.286,2140.4028,814.6546,2139.8659,823.47,2144.2579" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link not_found to subnet4_select-->
<g id="link_not_found_subnet4_select">
<path d="M907,2085.1179 C893.56,2100.9879 874.31,2123.7379 859.89,2140.7779 " fill="none" id="not_found-to-subnet4_select" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="856.93,2144.2679,865.7977,2139.9827,860.1604,2140.4515,859.6915,2134.8141,856.93,2144.2679" style="stroke:#181818;stroke-width:1.0;"/>
</g>
<!--link found to not_found-->
<!--link subnet4_select to success-->
<g id="link_subnet4_select_success">
<path d="M754.28,2174.9179 C724.09,2181.6979 691.77,2193.6879 668,2214.8079 C655.63,2225.7979 648.6,2243.1079 644.67,2257.4579 " fill="none" id="subnet4_select-to-success" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="643.55,2261.9279,649.6348,2254.1836,644.7761,2257.0806,641.8791,2252.2218,643.55,2261.9279" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="158" x="669" y="2229.7049">CONTINUE and subnet set</text>
</g>
<!--link subnet4_select to no_subnet-->
<g id="link_subnet4_select_no_subnet">
<path d="M838.56,2185.1679 C837.95,2194.1379 837.3,2205.0179 837,2214.8079 C836.57,2228.7979 837.19,2244.3979 837.98,2257.0879 " fill="none" id="subnet4_select-to-no_subnet" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="838.3,2261.9179,841.6731,2252.6647,837.957,2256.9297,833.692,2253.2135,838.3,2261.9179" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="133" x="838" y="2229.7049">SKIP or subnet not set</text>
</g>
<!--link subnet4_select to drop-->
<g id="link_subnet4_select_drop">
<path d="M922.26,2185.2079 C941.3,2192.2879 960.5,2201.8879 976,2214.8079 C989.56,2226.1179 999.42,2243.4179 1005.84,2257.6779 " fill="none" id="subnet4_select-to-drop" style="stroke:#181818;stroke-width:1.0;"/>
<polygon fill="#181818" points="1007.78,2262.1879,1007.9113,2252.3399,1005.8104,2257.5922,1000.5581,2255.4913,1007.78,2262.1879" style="stroke:#181818;stroke-width:1.0;"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="992" y="2229.7049">DROP</text>
</g>
<!--SRC=[ZPPDRzim38Rl_XL2JziXnGRqCFHGO4WwB2ZG1cbt6eP0jPbOY2jvahmj6FRVfo_hotBJIskHpqjHf4n74ja1MdrTRdvT8J4yKv18G0Ur98oYTtU0qSVBJvSVtbSLFW2LwEAMIdv2FIDKNY0i4EYrzpuft_Rp6dM47bqWGt5CTjgsixQ4dspBUltFwApFgxZwY-b1fNonXGwVeB7HxJFwMo4NrtWHRXeEGg0NBEiMncX1ihE6SweMSnLSWRyPFqPgP_7oPGlr4TKTqQkwmq94i5bN_v8pFAfZZxlj6KSTOyUXjmTNfnvTuLXQmECaemsS9M5TBZ5iJKLQi87NaD3MvEaqVTqyGclsGkX1FKZWUro3qVbLbFpQsmhzy8Ay9mNLj1z1_SQU187jIro6a7jSYQ2OBqRCJvjdKt6tlUUm9tzSvAsA0UTITW73HNBu5pRG1k6uc7jjoW3AOe8okKkf9UuwDaW7NUsYbpSrUSKMvC1fkhCOwbhN9cFopSScZzYAinxz782V3D2ePLMPoO8MYvl9zCZMXaadHRAoCToCk1wV2apyqbth6dbsLFj8umdYHUHrrz14iHTtZZJjL5mCZUfIJhFWV3XhMsZ8z5ovrKlROqcUEyYOKX4YE7Q6JGEkEoPRI8TKbL8BheJf65BArboCJ9XHHfcEfA1CPrsLOJhPVCROUeg1IApEDfUj4PetrEs5poHP4BmbjrYHJcA4LSy60MYWfCP2LfE3cDxwTzgUoqCb_2QVWFxAd84B5tlgd8lFP-XfyddarwzmaPiCxEbjdYA5vj7f1w4eVAK3aSw6DdGoqAFwHqYnAgbkhYO5AesMLCAQmnprmpve2axd-DwIfW7w8zgXIaadDjy6jVdouVvfVV_jrbni__DFbaJ-Mw5aZtVh3L8_avn17s56fJyWIh3QFcog_m00]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,21 +1,24 @@
<?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="197px" preserveAspectRatio="none" style="width:308px;height:197px;background:#FFFFFF;" version="1.1" viewBox="0 0 308 197" width="308px" zoomAndPan="magnify"><defs><filter height="300%" id="fz1ehskz14z05" 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="spacing" textLength="283" x="9" y="29.4023">TKEY Exchange (GSS-TSIG hook)</text><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="70.5" x2="70.5" y1="75.6875" y2="154.3086"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="240.5" x2="240.5" y1="75.6875" y2="154.3086"/><rect fill="#FEFECE" filter="url(#fz1ehskz14z05)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="108" x="14.5" y="40.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="21.5" y="60.7344">Kea D2 server</text><rect fill="#FEFECE" filter="url(#fz1ehskz14z05)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="108" x="14.5" y="153.3086"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="21.5" y="173.8438">Kea D2 server</text><rect fill="#FEFECE" filter="url(#fz1ehskz14z05)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="88" x="194.5" y="40.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="201.5" y="60.7344">DNS server</text><rect fill="#FEFECE" filter="url(#fz1ehskz14z05)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="88" x="194.5" y="153.3086"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="201.5" y="173.8438">DNS server</text><polygon fill="#A80036" points="228.5,102.998,238.5,106.998,228.5,110.998,232.5,106.998" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="70.5" x2="234.5" y1="106.998" y2="106.998"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="82" x="77.5" y="102.2559">TKEY request</text><polygon fill="#A80036" points="81.5,132.3086,71.5,136.3086,81.5,140.3086,77.5,136.3086" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="75.5" x2="239.5" y1="136.3086" y2="136.3086"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="146" x="87.5" y="131.5664">TKEY response (signed)</text><!--MD5=[7d4889a5feeb1588c9f7e0e768327f46]
@startuml
title TKEY Exchange (GSS-TSIG hook)
participant "Kea D2 server" as Kea
participant "DNS server" as DNS
Kea -> DNS: TKEY request
DNS -> Kea: TKEY response (signed)
@enduml
PlantUML version 1.2021.9(Sun Jul 25 12:13:56 CEST 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="200px" preserveAspectRatio="none" style="width:271px;height:200px;background:#FFFFFF;" version="1.1" viewBox="0 0 271 200" width="271px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="220" x="24.5" y="29.9659">TKEY Exchange (GSS-TSIG hook)</text>
<line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="58" x2="58" y1="79.1358" y2="162.5479"/>
<line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="220" x2="220" y1="79.1358" y2="162.5479"/>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="107" x="5" y="45.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="12" y="67.0339">Kea D2 server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="107" x="5" y="161.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="12" y="183.5138">Kea D2 server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="89" x="176" y="45.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75" x="183" y="67.0339">DNS server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="89" x="176" y="161.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75" x="183" y="183.5138">DNS server</text>
<polygon fill="#181818" points="208.5,108.8419,218.5,112.8419,208.5,116.8419,212.5,112.8419" style="stroke:#181818;stroke-width:1.0;"/>
<line style="stroke:#181818;stroke-width:1.0;" x1="58.5" x2="214.5" y1="112.8419" y2="112.8419"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="78" x="65.5" y="107.0328">TKEY request</text>
<polygon fill="#181818" points="69.5,140.5479,59.5,144.5479,69.5,148.5479,65.5,144.5479" style="stroke:#181818;stroke-width:1.0;"/>
<line style="stroke:#181818;stroke-width:1.0;" x1="63.5" x2="219.5" y1="144.5479" y2="144.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="138" x="75.5" y="138.7389">TKEY response (signed)</text>
<!--SRC=[AyaioKbL2F5sZLHmhKZEICnBJrNGS0yErWq9zdHNoCZFpzRauYf8B2h9JCuiICmhKL3oJarKS35IA4ujAaijKb98B5O0Yg0gSV4BHfO7ShcuGDfqxK1iAuXrHQc5fQd59LmWnK09e3nSehWWFwyOw8xYpFIyr1HDBW00]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,21 +1,24 @@
<?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="197px" preserveAspectRatio="none" style="width:367px;height:197px;background:#FFFFFF;" version="1.1" viewBox="0 0 367 197" width="367px" zoomAndPan="magnify"><defs><filter height="300%" id="f1k5dkaewnu0nj" 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="spacing" textLength="342" x="9" y="29.4023">DNS Update Exchange (GSS-TSIG hook)</text><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="78.5" x2="78.5" y1="75.6875" y2="154.3086"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="291.5" x2="291.5" y1="75.6875" y2="154.3086"/><rect fill="#FEFECE" filter="url(#f1k5dkaewnu0nj)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="108" x="22.5" y="40.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="29.5" y="60.7344">Kea D2 server</text><rect fill="#FEFECE" filter="url(#f1k5dkaewnu0nj)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="108" x="22.5" y="153.3086"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="29.5" y="173.8438">Kea D2 server</text><rect fill="#FEFECE" filter="url(#f1k5dkaewnu0nj)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="88" x="245.5" y="40.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="252.5" y="60.7344">DNS server</text><rect fill="#FEFECE" filter="url(#f1k5dkaewnu0nj)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="88" x="245.5" y="153.3086"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="74" x="252.5" y="173.8438">DNS server</text><polygon fill="#A80036" points="279.5,102.998,289.5,106.998,279.5,110.998,283.5,106.998" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="78.5" x2="285.5" y1="106.998" y2="106.998"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="179" x="85.5" y="102.2559">DNS update request (signed)</text><polygon fill="#A80036" points="89.5,132.3086,79.5,136.3086,89.5,140.3086,85.5,136.3086" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="83.5" x2="290.5" y1="136.3086" y2="136.3086"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="189" x="95.5" y="131.5664">DNS update response (signed)</text><!--MD5=[1878df8bb6338e54fcd61a1faf1a5cc0]
@startuml
title DNS Update Exchange (GSS-TSIG hook)
participant "Kea D2 server" as Kea
participant "DNS server" as DNS
Kea -> DNS: DNS update request (signed)
DNS -> Kea: DNS update response (signed)
@enduml
PlantUML version 1.2021.9(Sun Jul 25 12:13:56 CEST 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="200px" preserveAspectRatio="none" style="width:314px;height:200px;background:#FFFFFF;" version="1.1" viewBox="0 0 314 200" width="314px" zoomAndPan="magnify">
<defs/>
<g>
<text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="270" x="21" y="29.9659">DNS Update Exchange (GSS-TSIG hook)</text>
<line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="58" x2="58" y1="79.1358" y2="162.5479"/>
<line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="263" x2="263" y1="79.1358" y2="162.5479"/>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="107" x="5" y="45.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="12" y="67.0339">Kea D2 server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="107" x="5" y="161.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="12" y="183.5138">Kea D2 server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="89" x="219" y="45.0679"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75" x="226" y="67.0339">DNS server</text>
<rect fill="#E2E2F0" height="33.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="89" x="219" y="161.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="75" x="226" y="183.5138">DNS server</text>
<polygon fill="#181818" points="251.5,108.8419,261.5,112.8419,251.5,116.8419,255.5,112.8419" style="stroke:#181818;stroke-width:1.0;"/>
<line style="stroke:#181818;stroke-width:1.0;" x1="58.5" x2="257.5" y1="112.8419" y2="112.8419"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="172" x="65.5" y="107.0328">DNS update request (signed)</text>
<polygon fill="#181818" points="69.5,140.5479,59.5,144.5479,69.5,148.5479,65.5,144.5479" style="stroke:#181818;stroke-width:1.0;"/>
<line style="stroke:#181818;stroke-width:1.0;" x1="63.5" x2="262.5" y1="144.5479" y2="144.5479"/>
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="181" x="75.5" y="138.7389">DNS update response (signed)</text>
<!--SRC=[NOsz3i8m38JtFCMfKpjqOMHWAgeG4alA0rYjrKQW9CGkul59OE1dy_c-krEdLqPtiZZ7YPInVumB-PbHzzQsWptqM4AuDCP4Ikf65yahgYCJkWs4qvrJ1HBapozIIh_yB8qfiNPNxkrhT7sF9hwjB8fQtEnvQapnCfVnFqvYyC8Vy0a0]-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB