2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-29 04:57:52 +00:00

[#1329] Added UML files

This commit is contained in:
Francis Dupont 2020-07-17 12:56:16 +02:00
parent 612bbdae3b
commit 16970da27e
12 changed files with 788 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,97 @@
<?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="957px" preserveAspectRatio="none" style="width:674px;height:957px;" version="1.1" viewBox="0 0 674 957" width="674px" zoomAndPan="magnify"><defs><filter height="300%" id="f17jyru5kcc8mi" 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="199" x="228.5" y="17.4023">DHCP server main loop</text><!--MD5=[f7a7ee0c51b4e04c55c1f405505b5a33]
cluster Main Loop--><rect fill="#FFFFFF" filter="url(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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(#f17jyru5kcc8mi)" 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;"/><!--MD5=[d0a2a4ab2e4dbed2a237a8cda437bfff]
@startuml
title DHCP server main loop
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
@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>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,58 @@
@startuml
title DHCP server main loop
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
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

View File

@ -0,0 +1,149 @@
<?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="1622px" preserveAspectRatio="none" style="width:1541px;height:1622px;" version="1.1" viewBox="0 0 1541 1622" width="1541px" zoomAndPan="magnify"><defs><filter height="300%" id="f10gx5l1vihluf" 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="231" x="646" y="17.4023">DHCPv4 packet processing</text><!--MD5=[91c043391605f0bbc36c648123f05f04]
cluster process--><rect fill="#FFFFFF" filter="url(#f10gx5l1vihluf)" height="103" style="stroke: #000000; stroke-width: 1.5;" width="849" x="205" y="749.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="257" x="501" y="764.7344">Process Query on its Message Type</text><!--MD5=[a6437f938727ef6368484703a6d5a51f]
entity processDiscover--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="396" y="792.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="406" y="815.7344">Process Discover</text><!--MD5=[776f46e8e787ed3ff8f7399fa81d4ef1]
entity processRequest--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="229.5" y="792.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="111" x="239.5" y="815.7344">Process Request</text><!--MD5=[fc7d6e37f840cd9a10a681e81df6f28b]
entity processRelease--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="128" x="726" y="792.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="108" x="736" y="815.7344">Process Release</text><!--MD5=[8d825f552c438f1d41e38a94f08e3f47]
entity processDecline--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="565" y="792.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="575" y="815.7344">Process Decline</text><!--MD5=[3b341f45531d1fcf2cf88cb83e9fdef4]
entity processInform--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="889" y="792.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="102" x="899" y="815.7344">Process Inform</text><!--MD5=[aa62c1eea3f70b4dbb2d8a2ad04d8b75]
entity receivePacket--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1239" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1249" y="51.7344">Receive query</text><path d="M1150,33.6992 L1150,59.0098 A0,0 0 0 0 1150,59.0098 L1204,59.0098 A0,0 0 0 0 1204,59.0098 L1204,51.6992 L1238.77,46.1992 L1204,43.6992 L1204,43.6992 L1194,33.6992 L1150,33.6992 A0,0 0 0 0 1150,33.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1194,33.6992 L1194,43.6992 L1204,43.6992 L1194,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="1156" y="51.2676">input</text><!--MD5=[37dd4220ca2f2608029cfa1ef00c2d62]
entity isServiceEnabled--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="1232.5" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="1242.5" y="148.7344">Service Enabled</text><!--MD5=[f1e4a9c8bda8d25100748cfdff400bf1]
entity buffer4_receive--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="1087.5" y="238.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="159" x="1097.5" y="261.7344">Callout buffer4_receive</text><path d="M1301.5,243.6992 L1301.5,252.1992 L1266.66,256.1992 L1301.5,260.1992 L1301.5,269.0098 A0,0 0 0 0 1301.5,269.0098 L1354.5,269.0098 A0,0 0 0 0 1354.5,269.0098 L1354.5,253.6992 L1344.5,243.6992 L1301.5,243.6992 A0,0 0 0 0 1301.5,243.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1344.5,243.6992 L1344.5,253.6992 L1354.5,253.6992 L1344.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="1307.5" y="261.2676">hook</text><!--MD5=[ce6c3f645c8aec4915456c978c48f6f1]
entity unpack--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="990" y="351.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1000" y="374.7344">Unpack query</text><!--MD5=[f8582116def27e35cdbbbf5463e43073]
entity classify--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="115" x="989.5" y="448.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="95" x="999.5" y="471.7344">Classify query</text><!--MD5=[92aee3b8b080bbd52e01e7cb395370c4]
entity pkt4_receive--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="966.5" y="545.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="139" x="976.5" y="568.7344">Callout pkt4_receive</text><path d="M1160.5,550.6992 L1160.5,559.1992 L1125.59,563.1992 L1160.5,567.1992 L1160.5,576.0098 A0,0 0 0 0 1160.5,576.0098 L1213.5,576.0098 A0,0 0 0 0 1213.5,576.0098 L1213.5,560.6992 L1203.5,550.6992 L1160.5,550.6992 A0,0 0 0 0 1160.5,550.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1203.5,550.6992 L1203.5,560.6992 L1213.5,560.6992 L1203.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="1166.5" y="568.2676">hook</text><!--MD5=[7aeeef4718a003ce2e7ad9bcbdf71ad9]
entity drop_class--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="975.5" y="658.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="985.5" y="681.7344">Check DROP class</text><!--MD5=[a8af8e48f2cc558a0fee70431885f908]
entity lease4_committed--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="530.5" y="923.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="177" x="540.5" y="946.7344">Callout lease4_committed</text><path d="M762.5,928.6992 L762.5,937.1992 L727.75,941.1992 L762.5,945.1992 L762.5,954.0098 A0,0 0 0 0 762.5,954.0098 L815.5,954.0098 A0,0 0 0 0 815.5,954.0098 L815.5,938.6992 L805.5,928.6992 L762.5,928.6992 A0,0 0 0 0 762.5,928.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M805.5,928.6992 L805.5,938.6992 L815.5,938.6992 L805.5,928.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="768.5" y="946.2676">hook</text><!--MD5=[8e18f13991ca58e5a79e0b81ed56b9db]
entity park--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="612" y="1036.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="622" y="1059.7344">Park</text><!--MD5=[145fde1089ff11319f35031b66a8b2bf]
entity pkt4_send--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="443" y="1149.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="453" y="1172.7344">Callout pkt4_send</text><!--MD5=[62d5b04920c444814fafa1dbf06b35cd]
entity send--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="537.5" y="1472.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="101" x="547.5" y="1495.7344">Send response</text><!--MD5=[5f600c2348a98514851ba709bbd3f597]
entity pack--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="456" y="1262.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="98" x="466" y="1285.7344">Pack response</text><!--MD5=[d6829aa81ee0cd45a2e878b8b13197d5]
entity buffer4_send--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="549" y="1359.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="144" x="559" y="1382.7344">Callout buffer4_send</text><path d="M439.5,1477.6992 L439.5,1503.0098 A0,0 0 0 0 439.5,1503.0098 L502.5,1503.0098 A0,0 0 0 0 502.5,1503.0098 L502.5,1495.6992 L537.35,1490.1992 L502.5,1487.6992 L502.5,1487.6992 L492.5,1477.6992 L439.5,1477.6992 A0,0 0 0 0 439.5,1477.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M492.5,1477.6992 L492.5,1487.6992 L502.5,1487.6992 L492.5,1477.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="445.5" y="1495.2676">output</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#f10gx5l1vihluf)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="677.5" y="1569.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="83" x="687.5" y="1592.7344">Drop packet</text><path d="M591.5,1574.6992 L591.5,1600.0098 A0,0 0 0 0 591.5,1600.0098 L642.5,1600.0098 A0,0 0 0 0 642.5,1600.0098 L642.5,1592.6992 L677.49,1587.1992 L642.5,1584.6992 L642.5,1584.6992 L632.5,1574.6992 L591.5,1574.6992 A0,0 0 0 0 591.5,1574.6992 " fill="#FBFB77" filter="url(#f10gx5l1vihluf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M632.5,1574.6992 L632.5,1584.6992 L642.5,1584.6992 L632.5,1574.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="597.5" y="1592.2676">error</text><!--MD5=[9670815d90e482d849702fdd57183fae]
link receivePacket to isServiceEnabled--><path d="M1296,64.6192 C1296,80.1592 1296,102.9792 1296,119.8592 " fill="none" id="receivePacket-&gt;isServiceEnabled" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1296,124.8892,1300,115.8892,1296,119.8892,1292,115.8892,1296,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8b6c78e5054b687dbc9e19308d3a0129]
link isServiceEnabled to buffer4_receive--><path d="M1277.67,161.2992 C1256.59,180.9592 1221.99,213.2292 1199.35,234.3492 " fill="none" id="isServiceEnabled-&gt;buffer4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1195.55,237.8992,1204.8583,234.6813,1199.2048,234.4871,1199.399,228.8336,1195.55,237.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="1244" y="204.7676">service is enabled</text><!--MD5=[228411fb88ef1bcdfe7f19b853e215d2]
link isServiceEnabled to drop--><path d="M1334.3,161.3592 C1368.09,179.3992 1412,211.2992 1412,255.1992 C1412,255.1992 1412,255.1992 1412,1491.1992 C1412,1554.2292 949.82,1577.8492 785.85,1584.2392 " fill="none" id="isServiceEnabled-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="780.62,1584.4392,789.7727,1588.0763,785.616,1584.2394,789.4529,1580.0827,780.62,1584.4392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="116" x="1413" y="889.7676">service is disabled</text><!--MD5=[939988dada0403ed6d1a4e6924dd7701]
link buffer4_receive to unpack--><path d="M1127.37,274.3592 C1111.2,281.6992 1094.07,291.5492 1081,304.1992 C1068.92,315.8892 1060.19,332.8092 1054.6,346.3092 " fill="none" id="buffer4_receive-&gt;unpack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1052.68,351.1192,1059.7182,344.2298,1054.5246,346.4719,1052.2825,341.2784,1052.68,351.1192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1082" y="317.7676">CONTINUE</text><!--MD5=[02f70f5bfef59fd4c02228f0fd276994]
link buffer4_receive to classify--><path d="M1171.43,274.2292 C1167.05,287.2392 1160.59,305.5292 1154,321.1992 C1141.36,351.2492 1140.64,360.4492 1122,387.1992 C1107.15,408.5092 1086.46,429.5592 1070.57,444.4092 " fill="none" id="buffer4_receive-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1066.64,448.0492,1075.955,444.8508,1070.3019,444.6448,1070.5079,438.9917,1066.64,448.0492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="1142" y="374.2676">SKIP</text><!--MD5=[41e6595d93b5d76e06ef1219c230b624]
link buffer4_receive to drop--><path d="M1231.41,274.2392 C1272.55,290.9092 1322,320.7992 1322,368.1992 C1322,368.1992 1322,368.1992 1322,1491.1992 C1322,1544.9492 1263.04,1525.7592 1211,1539.1992 C1060.79,1577.9792 876.72,1585.2792 785.63,1586.3192 " fill="none" id="buffer4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="780.56,1586.3792,789.6051,1590.2761,785.5597,1586.3221,789.5137,1582.2766,780.56,1586.3792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1323" y="946.2676">DROP</text><!--MD5=[1ecae68ae42d9a73e40e9217f03f9ce7]
link unpack to classify--><path d="M1047,387.6192 C1047,403.1592 1047,425.9792 1047,442.8592 " fill="none" id="unpack-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1047,447.8892,1051,438.8892,1047,442.8892,1043,438.8892,1047,447.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[27fcba0ca5551c2a3eff6088113b3400]
link unpack to drop--><path d="M989.92,372.3892 C772.19,381.1192 6,415.3792 6,465.1992 C6,465.1992 6,465.1992 6,1491.1992 C6,1550.8192 494.13,1542.7992 660,1569.1992 C663.94,1569.8292 667.99,1570.5692 672.05,1571.3792 " fill="none" id="unpack-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.2,1572.4492,669.1976,1566.708,672.3038,1571.4357,667.576,1574.5419,677.2,1572.4492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="7" y="1002.7676">on error</text><!--MD5=[6d44324a94e4b11142830ec71aa81556]
link classify to pkt4_receive--><path d="M1046.82,484.6192 C1046.65,500.1592 1046.41,522.9792 1046.24,539.8592 " fill="none" id="classify-&gt;pkt4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1046.18,544.8892,1050.2572,535.9239,1046.223,539.8894,1042.2575,535.8552,1046.18,544.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0057d53684278b0199141f1c920049f3]
link pkt4_receive to drop_class--><path d="M1046,581.5392 C1046,600.7692 1046,631.8292 1046,652.8592 " fill="none" id="pkt4_receive-&gt;drop_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1046,657.9792,1050,648.9792,1046,652.9792,1042,648.9792,1046,657.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1047" y="624.7676">CONTINUE</text><!--MD5=[23d76d484a8ade2f68bc32d339275e55]
link pkt4_receive to drop--><path d="M966.21,565.0492 C735.01,568.5592 81,586.3492 81,675.1992 C81,675.1992 81,675.1992 81,1491.1992 C81,1545.4592 591.2,1557.6492 660,1569.1992 C663.94,1569.8592 667.98,1570.6292 672.04,1571.4592 " fill="none" id="pkt4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.18,1572.5492,669.1971,1566.7809,672.2873,1571.5192,667.549,1574.6093,677.18,1572.5492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="82" y="1115.7676">DROP</text><!--MD5=[17d61ffc5c9189e7f93f951e2b5510f6]
link drop_class to process--><path d="M1046,694.4592 C1046,703.2642 1046,714.6842 1046,726.8989 C1046,733.0063 1046,739.3123 1046,745.5894 C1046,746.3741 1046,747.1583 1046,747.9415 C1046,748.3332 1046,748.7246 1046,749.1158 " fill="none" id="drop_class-&gt;process" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1046,749.1158,1050,740.1158,1046,744.1158,1042,740.1158,1046,749.1158" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[4eef49efa4e6a39b9cad1f9dd4db75c9]
link drop_class to drop--><path d="M1069.48,694.4292 C1097.62,717.2392 1141,760.3492 1141,809.1992 C1141,809.1992 1141,809.1992 1141,1111.6992 C1141,1146.4992 1147.95,1156.7592 1168,1185.1992 C1180,1202.2192 1192.18,1198.0492 1204,1215.1992 C1221.07,1239.9592 1226,1249.1192 1226,1279.1992 C1226,1279.1992 1226,1279.1992 1226,1491.1992 C1226,1579.8992 916.71,1587.7792 786.11,1587.1492 " fill="none" id="drop_class-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="780.78,1587.1192,789.757,1591.1706,785.7799,1587.1478,789.8027,1583.1707,780.78,1587.1192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="126" x="1169" y="1172.2676">query in DROP class</text><!--MD5=[3640933a3eded42de606c73d1c2efb26]
link process to drop--><path d="M1049.382,852.4605 C1049.3955,852.6507 1049.4089,852.8414 1049.4224,853.0326 C1049.4761,853.7971 1049.53,854.5686 1049.5838,855.3467 C1051.305,880.2467 1053,911.9392 1053,940.1992 C1053,940.1992 1053,940.1992 1053,1491.1992 C1053,1546.2092 878.82,1571.6292 785.88,1581.2692 " fill="none" id="process-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="780.7,1581.7992,790.0638,1584.8519,785.6735,1581.2847,789.2406,1576.8944,780.7,1581.7992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="1054" y="1228.7676">unknown message type</text><!--MD5=[952846e6e065ca3396c39be4d5d60980]
link processDiscover to lease4_committed--><path d="M485.04,828.3292 C515.43,851.9392 570.11,894.4292 602.62,919.6992 " fill="none" id="processDiscover-&gt;lease4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="606.87,922.9992,602.2281,914.3129,602.9255,919.9265,597.3119,920.624,606.87,922.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7f61b5f2e024f0ea6329d761794804a2]
link processDiscover to drop--><path d="M441.41,828.4592 C424.87,840.9692 401.05,857.4992 378,868.1992 C366.26,873.6492 361.87,871.0292 350,876.1992 C299.55,898.1692 244,885.1692 244,940.1992 C244,940.1992 244,940.1992 244,1491.1992 C244,1539.4892 609.77,1559.9192 660,1569.1992 C663.92,1569.9292 667.96,1570.7392 672.01,1571.6092 " fill="none" id="processDiscover-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.15,1572.7292,669.2157,1566.8942,672.2661,1571.6582,667.5021,1574.7085,677.15,1572.7292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="245" y="1228.7676">on error</text><!--MD5=[f46ab6743faf3720230dd3ca9adf25a5]
link processRequest to lease4_committed--><path d="M316.31,828.4592 C332.64,840.9692 356.18,857.4992 379,868.1992 C430.4,892.2892 491.59,910.0792 540.57,921.9492 " fill="none" id="processRequest-&gt;lease4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="545.57,923.1492,537.7547,917.1558,540.7086,921.9802,535.8842,924.9341,545.57,923.1492" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[46780bcbdce00599e22cc2808afc4298]
link processRequest to drop--><path d="M252.1,828.3292 C209.97,848.2992 152,885.6992 152,940.1992 C152,940.1992 152,940.1992 152,1491.1992 C152,1536.8592 598.86,1558.4592 660,1569.1992 C663.93,1569.8892 667.97,1570.6792 672.03,1571.5292 " fill="none" id="processRequest-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.17,1572.6292,669.2195,1566.8164,672.2831,1571.5718,667.5276,1574.6354,677.17,1572.6292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="153" y="1228.7676">on error</text><!--MD5=[dd5280f7a4fbe519a789693377d2c3dc]
link processRelease to lease4_committed--><path d="M768.62,828.3292 C739.15,851.9392 686.12,894.4292 654.58,919.6992 " fill="none" id="processRelease-&gt;lease4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="650.47,922.9992,659.9988,920.509,654.3771,919.8792,655.0069,914.2575,650.47,922.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9c1ccee308c843163ae9c7fab5373c87]
link processRelease to drop--><path d="M809.12,828.3592 C832.5,851.3292 869,894.4992 869,940.1992 C869,940.1992 869,940.1992 869,1168.1992 C869,1245.6192 818.47,1435.0892 793,1508.1992 C787.96,1522.6492 787,1526.8192 778,1539.1992 C771.21,1548.5392 762.44,1557.6192 754.2,1565.2592 " fill="none" id="processRelease-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="750.21,1568.8892,759.5566,1565.7842,753.9058,1565.5216,754.1684,1559.8708,750.21,1568.8892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="866" y="1228.7676">on error</text><!--MD5=[762f153a4fd6a7efd08d553c7afbf530]
link processDecline to lease4_committed--><path d="M628.13,828.3292 C628.31,851.3592 628.63,892.3592 628.83,917.8192 " fill="none" id="processDecline-&gt;lease4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="628.87,922.9992,632.8185,913.9765,628.8414,917.9993,624.8186,914.0222,628.87,922.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d9fbe084438a9903d341665e19467c6]
link processDecline to drop--><path d="M607.69,828.2192 C592.13,840.5992 569.71,857.0892 548,868.1992 C459.43,913.5492 336,840.6892 336,940.1992 C336,940.1992 336,940.1992 336,1168.1992 C336,1321.2792 285.12,1397.6492 391,1508.1992 C475.8,1596.7292 540.7,1540.9792 660,1569.1992 C664.06,1570.1592 668.24,1571.1592 672.46,1572.1792 " fill="none" id="processDecline-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.41,1573.3792,669.5987,1567.3806,672.5494,1572.2069,667.723,1575.1576,677.41,1573.3792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="335" y="1228.7676">on error</text><!--MD5=[403b2bcd25ba6f5a11641c975fae6de0]
link processInform to lease4_committed--><path d="M930.7,828.2292 C915.62,840.7892 893.65,857.4892 872,868.1992 C823.01,892.4392 764.35,910.1092 716.93,921.8792 " fill="none" id="processInform-&gt;lease4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="711.8,923.1392,721.4919,924.8907,716.6574,921.9535,719.5946,917.1189,711.8,923.1392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c5223c78dfc731d8a0b6dd3ad2587a32]
link processInform to drop--><path d="M952.39,828.2692 C955.62,852.9292 961,899.9692 961,940.1992 C961,940.1992 961,940.1992 961,1491.1992 C961,1566.5992 854.76,1583.4592 786.07,1586.4692 " fill="none" id="processInform-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="780.78,1586.6792,789.9331,1590.3153,785.776,1586.4788,789.6124,1582.3217,780.78,1586.6792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="962" y="1228.7676">on error</text><!--MD5=[887612e1a41deb0055e6b261cad7b207]
link lease4_committed to pkt4_send--><path d="M600.35,959.4692 C575.96,975.8892 542.37,1002.9692 526,1036.1992 C508.92,1070.8692 509.72,1117.0692 512.16,1144.0392 " fill="none" id="lease4_committed-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="512.66,1149.1592,515.7659,1139.8129,512.1738,1144.1829,507.8038,1140.5908,512.66,1149.1592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="527" y="1059.2676">CONTINUE</text><!--MD5=[03d4f1b76350f6f230f27d5a69f4e552]
link lease4_committed to drop--><path d="M650.67,959.3192 C659.53,967.4492 669.08,977.8692 675,989.1992 C776.19,1182.8892 746.46,1254.6392 767,1472.1992 C768.5,1488.1292 770.57,1492.5992 767,1508.1992 C763.58,1523.1192 758.7,1525.4392 752,1539.1992 C748.05,1547.3192 743.7,1556.2192 739.86,1564.0592 " fill="none" id="lease4_committed-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="737.54,1568.7992,745.0944,1562.4801,739.7417,1564.3101,737.9117,1558.9574,737.54,1568.7992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="757" y="1285.2676">DROP</text><!--MD5=[e6b479318b22374427e5a12769813441]
link lease4_committed to park--><path d="M630.25,959.5392 C631.64,978.7692 633.87,1009.8292 635.39,1030.8592 " fill="none" id="lease4_committed-&gt;park" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="635.76,1035.9792,639.1067,1026.7164,635.4027,1030.992,631.1272,1027.288,635.76,1035.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="634" y="1002.7676">PARK</text><!--MD5=[6b0b05ab5b5e01054aa0e3030e86c15b]
link park to pkt4_send--><path d="M618.2,1072.2992 C596.6,1091.9592 561.13,1124.2292 537.92,1145.3492 " fill="none" id="park-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="534.02,1148.8992,543.3731,1145.8139,537.7229,1145.5394,537.9974,1139.8892,534.02,1148.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="584" y="1115.7676">unpark</text><!--MD5=[e1e7c40ae99ae9db4be329f6b3cb143f]
link pkt4_send to pack--><path d="M515,1185.5392 C515,1204.7692 515,1235.8292 515,1256.8592 " fill="none" id="pkt4_send-&gt;pack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="515,1261.9792,519,1252.9792,515,1256.9792,511,1252.9792,515,1261.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="516" y="1228.7676">CONTINUE</text><!--MD5=[729fab78839d14d65a522c939ef9b552]
link pkt4_send to buffer4_send--><path d="M556.05,1185.4192 C569.28,1192.8092 582.86,1202.6692 592,1215.1992 C622.73,1257.3292 629.49,1320.5292 630.82,1353.8392 " fill="none" id="pkt4_send-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="630.99,1358.9192,634.6793,1349.7874,630.8187,1353.9222,626.684,1350.0616,630.99,1358.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="625" y="1285.2676">SKIP</text><!--MD5=[7a343c005ca5222349b93a374f6aa4be]
link pkt4_send to drop--><path d="M495.53,1185.4392 C477.37,1202.8192 451.31,1231.4092 439,1262.1992 C398.31,1363.9592 354.72,1421.6892 422,1508.1992 C422.98,1509.4592 584.15,1549.9492 672.54,1572.0792 " fill="none" id="pkt4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="677.47,1573.3192,669.7131,1567.2504,672.6201,1572.1032,667.7674,1575.0102,677.47,1573.3192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="399" y="1382.2676">DROP</text><!--MD5=[e1b3754cee4214144faeedd0f77d1671]
link pack to buffer4_send--><path d="M536.01,1298.3992 C555.72,1314.5392 585.21,1338.6992 606.09,1355.7992 " fill="none" id="pack-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="610.15,1359.1192,605.7226,1350.3216,606.2821,1355.9507,600.653,1356.5102,610.15,1359.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0fe92c55fb860475c26b6ea914a50894]
link buffer4_send to send--><path d="M625.84,1395.5392 C620.1,1414.8492 610.82,1446.0892 604.56,1467.1292 " fill="none" id="buffer4_send-&gt;send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="603.12,1471.9792,609.5067,1464.4818,604.537,1467.1842,601.8347,1462.2146,603.12,1471.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="617" y="1438.7676">CONTINUE</text><!--MD5=[887aa11356841167329c21249679272f]
link buffer4_send to drop--><path d="M661.94,1395.2892 C673.3,1403.0292 685.26,1413.1492 693,1425.1992 C720.92,1468.6592 727.37,1530.7892 728.74,1563.7192 " fill="none" id="buffer4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="728.92,1568.7392,732.5832,1559.597,728.7344,1563.7427,724.5887,1559.8939,728.92,1568.7392" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="723" y="1495.2676">DROP</text><!--MD5=[6b25e4fe160ab604f67b02c1ded86970]
link send to drop--><!--MD5=[b13d16fe916d552630640f297118268c]
@startuml
title DHCPv4 packet processing
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
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 lease4_committed" as lease4_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 - -> process
drop_class - - -> drop : query in DROP class
process - - -> drop : unknown message type
processDiscover - -> lease4_committed
processDiscover - - -> drop : on error
processRequest - -> lease4_committed
processRequest - - -> drop : on error
processRelease - -> lease4_committed
processRelease - - -> drop : on error
processDecline - -> lease4_committed
processDecline - - -> drop : on error
processInform - -> lease4_committed
processInform - - -> drop : on error
lease4_committed - -> pkt4_send : CONTINUE
lease4_committed - - -> drop : DROP
lease4_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
@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>

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -0,0 +1,84 @@
@startuml
title DHCPv4 packet processing
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
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 lease4_committed" as lease4_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 --> process
drop_class ---> drop : query in DROP class
process ---> drop : unknown message type
processDiscover --> lease4_committed
processDiscover ---> drop : on error
processRequest --> lease4_committed
processRequest ---> drop : on error
processRelease --> lease4_committed
processRelease ---> drop : on error
processDecline --> lease4_committed
processDecline ---> drop : on error
processInform --> lease4_committed
processInform ---> drop : on error
lease4_committed --> pkt4_send : CONTINUE
lease4_committed ---> drop : DROP
lease4_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
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@ -0,0 +1,107 @@
<?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="f60sn3t2och8t" 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="225" x="248.5" y="17.4023">DHCPREQUEST processing</text><!--MD5=[638108c05bc1ef8eca3fbd57a1e57fe7]
cluster ack--><rect fill="#FFFFFF" filter="url(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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(#f60sn3t2och8t)" 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=[da6537993b0c75cf7b1e1dfe95a6f951]
@startuml
title DHCPREQUEST processing
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>

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,59 @@
@startuml
title DHCPREQUEST processing
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View File

@ -0,0 +1,152 @@
<?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="2113px" preserveAspectRatio="none" style="width:1462px;height:2113px;" version="1.1" viewBox="0 0 1462 2113" width="1462px" zoomAndPan="magnify"><defs><filter height="300%" id="fpaskhkj95i84" 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="216" x="614" y="17.4023">DHCPv4 subnet selection</text><!--MD5=[73860abe08ab23c9b8e49eb23f18ae46]
cluster relayed--><rect fill="#FFFFFF" filter="url(#fpaskhkj95i84)" height="374.86" style="stroke: #000000; stroke-width: 1.5;" width="445" x="7" y="232.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="201.5" y="247.7344">Relayed</text><!--MD5=[234613e222536af9475ae40e3492b0e6]
cluster set_address--><rect fill="#FFFFFF" filter="url(#fpaskhkj95i84)" height="164.86" style="stroke: #000000; stroke-width: 1.5;" width="803" x="227" y="672.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="546.5" y="687.5944">Set address for lookup</text><!--MD5=[a59c1d05a8f6fb54290705d41e67acbe]
cluster interface--><rect fill="#FFFFFF" filter="url(#fpaskhkj95i84)" height="488" style="stroke: #000000; stroke-width: 1.5;" width="383" x="945" y="893.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="1054.5" y="909.4544">Try incoming interface</text><!--MD5=[8f3f5adf9176dbd9c419c05d483ab0c6]
cluster address--><rect fill="#FFFFFF" filter="url(#fpaskhkj95i84)" height="294" style="stroke: #000000; stroke-width: 1.5;" width="190" x="739" y="1430.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="791.5" y="1446.4544">Try address</text><!--MD5=[aeb2f621969028d4547d386ac1a1ba6d]
entity relay_subnet--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="172" y="321.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="206" x="182" y="344.5944">Relay address matches subnet</text><!--MD5=[bf459b32eaaf498e62edf6d622ac5891]
entity relay_network--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="142" y="434.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="266" x="152" y="457.5944">Relay address matches shared network</text><!--MD5=[076bfff500cab59e856b606fdf63ed5a]
entity relay_class--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="112" y="547.0592"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="122" y="570.5944">Check client class</text><!--MD5=[467e96f12fdeb7da53b220e72b6eb1fc]
entity relay_address--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="251" y="776.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="116" x="261" y="800.4544">Set relay address</text><!--MD5=[a0e4201c97a623c3dfa593fb75aad03b]
entity client_address--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="553" y="776.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="563" y="800.4544">Set client address</text><!--MD5=[a2d7389029b0dd04029e629f1661a883]
entity source_address--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="856.5" y="776.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="866.5" y="800.4544">Set source address</text><!--MD5=[8eaa1e77cbee43fcac8de4e493864e04]
entity interface_subnet--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="995" y="928.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="1005" y="952.4544">Interface matches subnet</text><!--MD5=[44eac5a65cc5cd7e6cc1fc4b89b09f4d]
entity interface_network--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="239" x="1072.5" y="1041.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="219" x="1082.5" y="1065.4544">Interface atches shared network</text><!--MD5=[8e51806cb27b2b60db022c6084a961c9]
entity interface_class--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="1022" y="1154.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="1032" y="1178.4544">Check client class</text><!--MD5=[953883d00ea10db133fca33539954fed]
entity interface_address--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="961.5" y="1329.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="143" x="971.5" y="1353.4544">Set interface address</text><!--MD5=[132ec46735878e55c0250b14c07769ad]
entity inRange--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="158" x="755" y="1465.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="138" x="765" y="1489.4544">Check subnet prefix</text><!--MD5=[a34f95003b379bc2f5b7f1af307bcb98]
entity address_class--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="773" y="1672.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="783" y="1696.4544">Check client class</text><!--MD5=[e3476fda087b0512b1cf4e3a66ca5e59]
entity entry--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" 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(#fpaskhkj95i84)" 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=[6348f6d706001cc5dc6ed638bec44faf]
entity found--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="702.5" y="1849.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="712.5" y="1873.4544">Found a subnet</text><!--MD5=[7dc9e356e22f2f113ceeb6da807ce9ff]
entity not_found--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="864.5" y="1849.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="117" x="874.5" y="1873.4544">Found no subnet</text><!--MD5=[4a9142d0fee9ff77eb50a001ac7877e7]
entity subnet4_select--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="761.5" y="1946.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="155" x="771.5" y="1970.4544">Callout subnet4_select</text><!--MD5=[d0fdc5cb89e99cab1ccfec009231794d]
entity success--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="578.5" y="2059.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="588.5" y="2083.4544">Return a subnet</text><!--MD5=[d0255a03afa46a62fe0c456dae837167]
entity no_subnet--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="139" x="779.5" y="2059.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="119" x="789.5" y="2083.4544">Return no subnet</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#fpaskhkj95i84)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="97" x="980.5" y="2059.9192"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="77" x="990.5" y="2083.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=[5853887b4749cf1e36855f5979bccba8]
link rai_link_select to relayed--><path d="M389.65,161.5692 C382.075,177.3142 370.655,201.0567 361.01,221.1092 C359.8044,223.6158 358.6265,226.0647 357.4873,228.4331 C356.9177,229.6173 356.3578,230.7814 355.8089,231.9225 " fill="none" id="rai_link_select-&gt;relayed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="355.8089,231.9225,363.3147,225.5458,357.9762,227.4167,356.1053,222.0781,355.8089,231.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="204.7676">relayed</text><!--MD5=[4e1625724f20f702efa0fa07c823f159]
link rai_link_select to set_address--><path d="M433.44,161.3692 C466.58,180.1792 511,213.7592 511,258.5592 C511,258.5592 511,258.5592 511,566.0592 C511,614.2292 468.365,647.0467 425.0638,667.9542 C422.3574,669.2609 419.6485,670.5211 416.9472,671.7356 " fill="none" id="rai_link_select-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="416.9472,671.7356,426.796,671.6933,421.5075,669.6853,423.5155,664.3968,416.9472,671.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="400.6276">not relayed</text><!--MD5=[289599dfcd7d1f32272e42cc3c26c895]
link relayed to relay_subnet--><path d="M342.96,260.1192 C341.81,261.6492 317.61,294.2092 300.84,316.7592 " fill="none" id="relayed-&gt;relay_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="297.8,320.8392,306.3807,316.0049,300.784,316.8273,299.9616,311.2305,297.8,320.8392" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[65c9b407d2d4ddf1b89c397faeac317e]
link relay_subnet to relay_network--><path d="M285,357.3992 C285,376.6292 285,407.6892 285,428.7192 " fill="none" id="relay_subnet-&gt;relay_network" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="285,433.8392,289,424.8392,285,428.8392,281,424.8392,285,433.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="400.6276">no match</text><!--MD5=[918f6d4a891df42092f9be64f359f985]
link relay_subnet to relay_class--><path d="M199.58,357.0892 C156.79,370.3892 108.74,393.6992 83,434.0592 C56.99,474.8592 109.58,518.9992 147.59,543.9192 " fill="none" id="relay_subnet-&gt;relay_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="152.15,546.8592,146.7424,538.6277,147.9441,544.1554,142.4164,545.3571,152.15,546.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="457.1276">match</text><!--MD5=[ec56da742308e5dcfe86ad0421278606]
link relay_network to set_address--><path d="M288.52,470.3092 C294.12,497.7992 305.4675,553.4892 315.5475,602.9592 C320.5875,627.6942 325.3106,650.8742 328.84,668.1967 C329.0606,669.2794 329.2765,670.3392 329.4876,671.375 " fill="none" id="relay_network-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="329.4876,671.375,331.6103,661.7576,328.4893,666.4756,323.7713,663.3547,329.4876,671.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="570.1276">no match</text><!--MD5=[a30462b61ddf59585f12c8e1078496e0]
link relay_network to relay_class--><path d="M268.91,470.3992 C250.69,490.0392 221.02,522.0092 201.5,543.0392 " fill="none" id="relay_network-&gt;relay_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="197.98,546.8392,207.0376,542.9713,201.3844,543.1773,201.1785,537.5242,197.98,546.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="513.6276">match</text><!--MD5=[44feab40ce9c0df31465bdb13adac7ed]
link relay_class to found--><path d="M177.97,583.0792 C172.39,608.1692 163,656.6292 163,698.4192 C163,698.4192 163,698.4192 163,1781.4192 C163,1834.8592 539.11,1857.2192 697.25,1864.2592 " fill="none" id="relay_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="702.32,1864.4792,693.5121,1860.0724,697.3252,1864.2509,693.1467,1868.064,702.32,1864.4792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="164" y="1265.4876">compatible</text><!--MD5=[d5e1893c7bc3c7589901f4b78d6439f0]
link relay_class to set_address--><path d="M185.6,583.2592 C190.22,601.4992 199.91,630.0992 218,648.0592 C222.9438,652.9667 228.4423,657.4291 234.2844,661.4815 C237.2054,663.5077 240.2123,665.4314 243.2786,667.2571 C244.8117,668.1699 246.3597,669.0582 247.9193,669.9226 C248.6991,670.3547 249.4818,670.7809 250.2669,671.2012 C250.6595,671.4113 251.0527,671.6199 251.4464,671.8271 " fill="none" id="relay_class-&gt;set_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="251.4464,671.8271,245.3441,664.0965,247.0215,669.499,241.6191,671.1764,251.4464,671.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="644.6276">not compatible</text><!--MD5=[3f679d64a1cccee12b0e824b1733c0ed]
link set_address to relay_address--><path d="M334.99,699.9892 C334.66,701.9192 327.44,744.3492 322.81,771.5092 " fill="none" id="set_address-&gt;relay_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="321.93,776.7292,327.3899,768.5323,322.7728,771.8008,319.5043,767.1837,321.93,776.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="743.4876">try the relay addreess</text><!--MD5=[9d0435cdb5bba0d446c223c46240db6f]
link relay_address to client_address--><path d="M387.22,794.9192 C434.95,794.9192 498.7,794.9192 547.88,794.9192 " fill="none" id="relay_address-&gt;client_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="552.9,794.9192,543.9,790.9192,547.9,794.9192,543.9,798.9192,552.9,794.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="788.4876">has no relay address</text><!--MD5=[4192df04ddbb3f1e00a57ee174f51cdb]
link client_address to source_address--><path d="M693.28,794.9192 C740.3,794.9192 802.28,794.9192 851.17,794.9192 " fill="none" id="client_address-&gt;source_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="856.46,794.9192,847.46,790.9192,851.46,794.9192,847.46,798.9192,856.46,794.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="788.4876">has no client addrss</text><!--MD5=[1cd4e848379fc555ffa76a6d3111f3fb]
link source_address to interface_subnet--><path d="M949.35,813.1292 C979.01,840.9292 1037.35,895.6192 1069.12,925.4092 " fill="none" id="source_address-&gt;interface_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1072.86,928.9092,1069.0287,919.8361,1069.2119,925.49,1063.558,925.6731,1072.86,928.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="123" x="1016" y="874.4876">no suitable address</text><!--MD5=[a29ca77fdc41863d51ecafa8e32dcb85]
link relay_address to inRange--><path d="M319,813.0192 C319,840.8592 319,897.7392 319,945.9192 C319,945.9192 319,945.9192 319,1348.9192 C319,1436.8592 603.78,1468.1092 749.81,1478.3492 " fill="none" id="relay_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="754.94,1478.7092,746.2356,1474.1012,749.9518,1478.3662,745.6868,1482.0823,754.94,1478.7092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="120" x="320" y="1177.9876">has a relay address</text><!--MD5=[bf38c5431748c4414750c7275409615d]
link client_address to inRange--><path d="M598.14,813.0992 C565.15,838.1492 511,888.0692 511,945.9192 C511,945.9192 511,945.9192 511,1348.9192 C511,1452.3992 654.19,1477.4892 749.89,1482.6992 " fill="none" id="client_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="754.99,1482.9592,746.2073,1478.5023,749.9966,1482.7024,745.7964,1486.4917,754.99,1482.9592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="125" x="512" y="1177.9876">has a client address</text><!--MD5=[306377b471c1f30003804df3ba3e4280]
link source_address to inRange--><path d="M856.74,812.9992 C791.87,832.8492 708,872.6692 708,945.9192 C708,945.9192 708,945.9192 708,1348.9192 C708,1400.9292 759.01,1440.9992 796.11,1463.2692 " fill="none" id="source_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="800.57,1465.8992,794.8476,1457.8833,796.2625,1463.3604,790.7855,1464.7753,800.57,1465.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="219" x="709" y="1177.9876">has source addess and use unicast</text><!--MD5=[4c5f9760336ab58778079bb174cbf5f0]
link interface_subnet to not_found--><path d="M1179.38,964.9692 C1262.41,983.5892 1374,1016.4992 1374,1058.9192 C1374,1058.9192 1374,1058.9192 1374,1781.4192 C1374,1855.2692 1132.67,1866.6392 1007.06,1867.5692 " fill="none" id="interface_subnet-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1001.91,1867.5992,1010.9327,1871.5477,1006.9099,1867.5706,1010.887,1863.5479,1001.91,1867.5992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1375" y="1411.4876">no interface</text><!--MD5=[f6d146b568a537518d52dd0109d2cafd]
link interface_subnet to interface_class--><path d="M1069.03,964.9392 C1041.08,988.8192 998.24,1034.2492 1014,1077.9192 C1024.51,1107.0292 1048.39,1133.5092 1066.98,1150.8892 " fill="none" id="interface_subnet-&gt;interface_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1071.1,1154.6692,1067.178,1145.6349,1067.4178,1151.2867,1061.766,1151.5265,1071.1,1154.6692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="1015" y="1064.9876">match</text><!--MD5=[8c73b6f253b7f8003f1aeec9d3e2c401]
link interface_subnet to interface_network--><path d="M1106.78,965.2592 C1124.64,984.8992 1153.74,1016.8692 1172.88,1037.8992 " fill="none" id="interface_subnet-&gt;interface_network" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1176.33,1041.6992,1173.2249,1032.3526,1172.9624,1038.0034,1167.3116,1037.7408,1176.33,1041.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="1148" y="1008.4876">no match</text><!--MD5=[8a490629b42afa0a067bde343f0409be]
link interface_network to interface_class--><path d="M1176.38,1078.2592 C1158.69,1097.8992 1129.88,1129.8692 1110.93,1150.8992 " fill="none" id="interface_network-&gt;interface_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1107.52,1154.6992,1116.5139,1150.6854,1110.8648,1150.9827,1110.5675,1145.3337,1107.52,1154.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="1148" y="1121.4876">march</text><!--MD5=[e1288d340d0c431aabe10a4c239c74f7]
link interface_network to not_found--><path d="M1210.94,1078.1492 C1231.06,1098.4392 1260,1134.1792 1260,1171.9192 C1260,1171.9192 1260,1171.9192 1260,1781.4192 C1260,1833.4492 1103.1,1854.4192 1006.67,1862.3992 " fill="none" id="interface_network-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1001.55,1862.8192,1010.8511,1866.058,1006.5327,1862.404,1010.1867,1858.0856,1001.55,1862.8192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="1261" y="1488.9876">no match</text><!--MD5=[9d13a96273b9c1dbfb8a7fbd997b0088]
link interface_class to found--><path d="M1112.08,1191.1592 C1127.3,1205.6292 1147.08,1227.7592 1156,1251.9192 C1201.73,1375.7792 1155.4,1417.0592 1162,1548.9192 C1162.84,1565.6192 1165,1569.6992 1165,1586.4192 C1165,1586.4192 1165,1586.4192 1165,1781.4192 C1165,1782.4592 948.79,1828.2992 834.68,1852.4192 " fill="none" id="interface_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="829.66,1853.4792,839.2955,1855.5181,834.5505,1852.4384,837.6302,1847.6934,829.66,1853.4792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="1163" y="1545.4876">compatible</text><!--MD5=[d4a81a9eb6ae9754c2f91708a00f90ba]
link interface_class to interface_address--><path d="M1081.97,1190.9492 C1073.39,1206.3492 1061.43,1229.9092 1055,1251.9192 C1047.93,1276.1292 1045.02,1305.0192 1043.83,1324.5292 " fill="none" id="interface_class-&gt;interface_address" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1043.54,1329.7692,1048.0484,1321.0128,1043.8261,1324.7774,1040.0615,1320.5551,1043.54,1329.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="1265.4876">not compatible</text><!--MD5=[18f0036984a219b8e279d39e6955cbb3]
link interface_address to inRange--><path d="M961.44,1357.3092 C908.88,1364.5992 847.4,1377.2992 831,1397.9192 C817.05,1415.4592 820.69,1442.0692 825.97,1460.8292 " fill="none" id="interface_address-&gt;inRange" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="827.49,1465.8992,828.7218,1456.1277,826.0467,1461.1121,821.0623,1458.437,827.49,1465.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="153" x="832" y="1411.4876">has an interface address</text><!--MD5=[1be935c2e674a39bb491f742257146af]
link interface_address to not_found--><path d="M1036.43,1365.9692 C1027.33,1391.1492 1012,1439.9392 1012,1482.9192 C1012,1482.9192 1012,1482.9192 1012,1781.4192 C1012,1809.2692 989.11,1831.9092 967.97,1846.8892 " fill="none" id="interface_address-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="963.77,1849.7792,973.4482,1847.9538,967.8835,1846.9369,968.9005,1841.3722,963.77,1849.7792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="1013" y="1639.4876">no interface address</text><!--MD5=[65c872516cd5acbef394f498ee60e6f6]
link inRange to address_class--><path d="M834.75,1502.0492 C836.38,1539.0492 840.21,1626.4492 842.02,1667.6692 " fill="none" id="inRange-&gt;address_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="842.24,1672.6992,845.8498,1663.5358,842.0253,1667.7038,837.8572,1663.8793,842.24,1672.6992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="39" x="839" y="1592.4876">match</text><!--MD5=[c6a81dd9b5c38fb7a31992aeb43efba5]
link inRange to not_found--><path d="M762.39,1501.9792 C720.98,1516.5792 677,1542.4392 677,1586.4192 C677,1586.4192 677,1586.4192 677,1781.4192 C677,1800.7892 783.82,1830.8092 859.46,1849.6392 " fill="none" id="inRange-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="864.4,1850.8692,856.6221,1844.8274,859.5459,1849.67,854.7033,1852.5938,864.4,1850.8692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="678" y="1695.9876">no match</text><!--MD5=[6bbdb059bb8431be14feb2edf9179bcc]
link address_class to found--><path d="M809.7,1708.9392 C759.48,1735.3692 668.36,1786.6192 651,1818.9192 C638.07,1842.9792 665.86,1854.9792 697.35,1860.9692 " fill="none" id="address_class-&gt;found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="702.43,1861.8792,694.2794,1856.3504,697.5088,1860.9948,692.8644,1864.2243,702.43,1861.8792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="702" y="1785.4876">compatible</text><!--MD5=[6fa859304e08ed6b1a2f69b396a973f6]
link address_class to not_found--><path d="M850.62,1708.9192 C859.47,1728.4292 874.68,1761.2892 889,1788.9192 C898.99,1808.1792 911.16,1829.6292 920.17,1845.1492 " fill="none" id="address_class-&gt;not_found" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="922.86,1849.7592,921.7843,1839.9693,920.3424,1845.4393,914.8724,1843.9974,922.86,1849.7592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="890" y="1785.4876">not compatible</text><!--MD5=[920af236d2bfe8ac015294b6ec32c751]
link found to subnet4_select--><path d="M781.22,1886.3392 C795.03,1902.1492 815.43,1925.4892 830.24,1942.4392 " fill="none" id="found-&gt;subnet4_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="833.87,1946.6092,830.9563,1937.2012,830.5785,1942.8454,824.9343,1942.4676,833.87,1946.6092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[be5a985c5094547d1aa8a3dfda06631d]
link not_found to subnet4_select--><path d="M917.59,1886.3392 C903.62,1902.1492 882.98,1925.4892 867.99,1942.4392 " fill="none" id="not_found-&gt;subnet4_select" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="864.31,1946.6092,873.2712,1942.523,867.6247,1942.8659,867.2818,1937.2194,864.31,1946.6092" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[085d72d70044aeb14e8d963046e88b11]
link found to not_found--><!--MD5=[d0da1e00427a0ca7837196c7dddb3af4]
link subnet4_select to success--><path d="M761.05,1973.2692 C729.7,1979.7092 696,1991.4992 671,2012.9192 C658.53,2023.5992 651.42,2040.8792 647.49,2054.7992 " fill="none" id="subnet4_select-&gt;success" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="646.18,2059.7492,652.3343,2052.0599,647.4497,2054.9131,644.5965,2050.0285,646.18,2059.7492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="164" x="672" y="2026.4876">CONTINUE and subnet set</text><!--MD5=[48d8edc0219dd4d7c3847b4159c280ef]
link subnet4_select to no_subnet--><path d="M847.62,1983.3192 C846.99,1992.1692 846.31,2003.1092 846,2012.9192 C845.56,2026.8292 846.26,2042.4292 847.1,2054.7492 " fill="none" id="subnet4_select-&gt;no_subnet" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="847.47,2059.8092,850.8167,2050.5464,847.1127,2054.822,842.8372,2051.118,847.47,2059.8092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="138" x="847" y="2026.4876">SKIP or subnet not set</text><!--MD5=[f590b573e48b5dfdcd1774729941f83a]
link subnet4_select to drop--><path d="M932.2,1983.0192 C952.54,1989.9392 973.25,1999.5792 990,2012.9192 C1003.78,2023.8892 1013.89,2041.1592 1020.36,2054.9892 " fill="none" id="subnet4_select-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1022.58,2059.9192,1022.5229,2050.0705,1020.5228,2055.362,1015.2313,2053.362,1022.58,2059.9192" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1006" y="2026.4876">DROP</text><!--MD5=[b941b6948e212378197cd6fb1db1e006]
@startuml
title DHCPv4 subnet selection
agent "Entry point" as entry
agent "Try RAI link select" as rai_link_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 atches 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 - -> relayed : relayed
rai_link_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 addreess
relay_address -r-> client_address : has no relay address
client_address -r-> source_address : has no client addrss
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 addess 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
@endutl
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>

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,82 @@
@startuml
title DHCPv4 subnet selection
agent "Entry point" as entry
agent "Try RAI link select" as rai_link_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 atches 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 --> relayed : relayed
rai_link_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 addreess
relay_address -r-> client_address : has no relay address
client_address -r-> source_address : has no client addrss
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 addess 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
@endutl