summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/packet4.svg
blob: 2e37ed9fffe6a3550cced09115719aab2c7498ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1814px" preserveAspectRatio="none" style="width:1862px;height:1814px;" version="1.1" viewBox="0 0 1862 1814" width="1862px" zoomAndPan="magnify"><defs><filter height="300%" id="f1u1c8b25aigi3" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="332" x="756" y="17.4023">DHCPv4 packet processing (Kea 1.8.0)</text><!--MD5=[91c043391605f0bbc36c648123f05f04]
cluster process--><rect fill="#FFFFFF" filter="url(#f1u1c8b25aigi3)" height="103" style="stroke: #000000; stroke-width: 1.5;" width="849" x="715" y="924.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="257" x="1011" y="939.7344">Process Query on its Message Type</text><!--MD5=[a6437f938727ef6368484703a6d5a51f]
entity processDiscover--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="134" x="1088" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="1098" y="990.7344">Process Discover</text><!--MD5=[776f46e8e787ed3ff8f7399fa81d4ef1]
entity processRequest--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="758.5" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="111" x="768.5" y="990.7344">Process Request</text><!--MD5=[fc7d6e37f840cd9a10a681e81df6f28b]
entity processRelease--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="128" x="925" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="108" x="935" y="990.7344">Process Release</text><!--MD5=[8d825f552c438f1d41e38a94f08e3f47]
entity processDecline--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="1257" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="1267" y="990.7344">Process Decline</text><!--MD5=[3b341f45531d1fcf2cf88cb83e9fdef4]
entity processInform--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="1418" y="967.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="102" x="1428" y="990.7344">Process Inform</text><!--MD5=[aa62c1eea3f70b4dbb2d8a2ad04d8b75]
entity receivePacket--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1560" y="28.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="1570" y="51.7344">Receive query</text><path d="M1471,33.6992 L1471,59.0098 A0,0 0 0 0 1471,59.0098 L1525,59.0098 A0,0 0 0 0 1525,59.0098 L1525,51.6992 L1559.77,46.1992 L1525,43.6992 L1525,43.6992 L1515,33.6992 L1471,33.6992 A0,0 0 0 0 1471,33.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1515,33.6992 L1515,43.6992 L1525,43.6992 L1515,33.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="33" x="1477" y="51.2676">input</text><!--MD5=[37dd4220ca2f2608029cfa1ef00c2d62]
entity isServiceEnabled--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="1553.5" y="125.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="107" x="1563.5" y="148.7344">Service Enabled</text><!--MD5=[f1e4a9c8bda8d25100748cfdff400bf1]
entity buffer4_receive--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="1000.5" y="238.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="159" x="1010.5" y="261.7344">Callout buffer4_receive</text><path d="M1214.5,243.6992 L1214.5,252.1992 L1179.66,256.1992 L1214.5,260.1992 L1214.5,269.0098 A0,0 0 0 0 1214.5,269.0098 L1267.5,269.0098 A0,0 0 0 0 1267.5,269.0098 L1267.5,253.6992 L1257.5,243.6992 L1214.5,243.6992 A0,0 0 0 0 1214.5,243.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1257.5,243.6992 L1257.5,253.6992 L1267.5,253.6992 L1257.5,243.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1220.5" y="261.2676">hook</text><!--MD5=[ce6c3f645c8aec4915456c978c48f6f1]
entity unpack--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="640" y="351.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="94" x="650" y="374.7344">Unpack query</text><!--MD5=[f8582116def27e35cdbbbf5463e43073]
entity classify--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="115" x="639.5" y="448.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="95" x="649.5" y="471.7344">Classify query</text><!--MD5=[92aee3b8b080bbd52e01e7cb395370c4]
entity pkt4_receive--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="454.5" y="545.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="139" x="464.5" y="568.7344">Callout pkt4_receive</text><path d="M648.5,550.6992 L648.5,559.1992 L613.59,563.1992 L648.5,567.1992 L648.5,576.0098 A0,0 0 0 0 648.5,576.0098 L701.5,576.0098 A0,0 0 0 0 701.5,576.0098 L701.5,560.6992 L691.5,550.6992 L648.5,550.6992 A0,0 0 0 0 648.5,550.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M691.5,550.6992 L691.5,560.6992 L701.5,560.6992 L691.5,550.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="654.5" y="568.2676">hook</text><!--MD5=[7aeeef4718a003ce2e7ad9bcbdf71ad9]
entity drop_class--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="243.5" y="658.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="121" x="253.5" y="681.7344">Check DROP class</text><!--MD5=[a52533196b9ad0f42d77bd2c5acf5304]
entity same_client--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="333" x="147.5" y="755.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="313" x="157.5" y="778.7344">Avoid same client race in multi-threaded mode</text><path d="M587.5,760.6992 L587.5,769.1992 L480.63,773.1992 L587.5,777.1992 L587.5,786.0098 A0,0 0 0 0 587.5,786.0098 L790.5,786.0098 A0,0 0 0 0 790.5,786.0098 L790.5,770.6992 L780.5,760.6992 L587.5,760.6992 A0,0 0 0 0 587.5,760.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M780.5,760.6992 L780.5,770.6992 L790.5,770.6992 L780.5,760.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="593.5" y="778.2676">postpone processing or drop</text><!--MD5=[a8af8e48f2cc558a0fee70431885f908]
entity leases4_committed--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="1045.5" y="1098.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="177" x="1055.5" y="1121.7344">Callout leases4_committed</text><path d="M1277.5,1103.6992 L1277.5,1112.1992 L1242.75,1116.1992 L1277.5,1120.1992 L1277.5,1129.0098 A0,0 0 0 0 1277.5,1129.0098 L1330.5,1129.0098 A0,0 0 0 0 1330.5,1129.0098 L1330.5,1113.6992 L1320.5,1103.6992 L1277.5,1103.6992 A0,0 0 0 0 1277.5,1103.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1320.5,1103.6992 L1320.5,1113.6992 L1330.5,1113.6992 L1320.5,1103.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1283.5" y="1121.2676">hook</text><!--MD5=[8e18f13991ca58e5a79e0b81ed56b9db]
entity park--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="50" x="1119" y="1211.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="1129" y="1234.7344">Park</text><!--MD5=[145fde1089ff11319f35031b66a8b2bf]
entity pkt4_send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="943" y="1324.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="124" x="953" y="1347.7344">Callout pkt4_send</text><!--MD5=[62d5b04920c444814fafa1dbf06b35cd]
entity send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="1052.5" y="1647.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="101" x="1062.5" y="1670.7344">Send response</text><!--MD5=[5f600c2348a98514851ba709bbd3f597]
entity pack--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="1077" y="1437.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="98" x="1087" y="1460.7344">Pack response</text><!--MD5=[d6829aa81ee0cd45a2e878b8b13197d5]
entity buffer4_send--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="1037" y="1534.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="144" x="1047" y="1557.7344">Callout buffer4_send</text><path d="M954.5,1652.6992 L954.5,1678.0098 A0,0 0 0 0 954.5,1678.0098 L1017.5,1678.0098 A0,0 0 0 0 1017.5,1678.0098 L1017.5,1670.6992 L1052.35,1665.1992 L1017.5,1662.6992 L1017.5,1662.6992 L1007.5,1652.6992 L954.5,1652.6992 A0,0 0 0 0 954.5,1652.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1007.5,1652.6992 L1007.5,1662.6992 L1017.5,1662.6992 L1007.5,1652.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="42" x="960.5" y="1670.2676">output</text><!--MD5=[c92710f32fe9c293a125fb7e80204a05]
entity drop--><rect fill="#FEFECE" filter="url(#f1u1c8b25aigi3)" height="36.4883" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="912.5" y="1744.1992"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="83" x="922.5" y="1767.7344">Drop packet</text><path d="M826.5,1749.6992 L826.5,1775.0098 A0,0 0 0 0 826.5,1775.0098 L877.5,1775.0098 A0,0 0 0 0 877.5,1775.0098 L877.5,1767.6992 L912.49,1762.1992 L877.5,1759.6992 L877.5,1759.6992 L867.5,1749.6992 L826.5,1749.6992 A0,0 0 0 0 826.5,1749.6992 " fill="#FBFB77" filter="url(#f1u1c8b25aigi3)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M867.5,1749.6992 L867.5,1759.6992 L877.5,1759.6992 L867.5,1749.6992 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="30" x="832.5" y="1767.2676">error</text><!--MD5=[9670815d90e482d849702fdd57183fae]
link receivePacket to isServiceEnabled--><path d="M1617,64.6192 C1617,80.1592 1617,102.9792 1617,119.8592 " fill="none" id="receivePacket-&gt;isServiceEnabled" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1617,124.8892,1621,115.8892,1617,119.8892,1613,115.8892,1617,124.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8b6c78e5054b687dbc9e19308d3a0129]
link isServiceEnabled to buffer4_receive--><path d="M1553.43,157.5892 C1459.11,177.4592 1281.88,214.7792 1176.04,237.0792 " fill="none" id="isServiceEnabled-&gt;buffer4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1171.05,238.1292,1180.681,240.1893,1175.9427,237.0992,1179.0329,232.3609,1171.05,238.1292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="1386" y="204.7676">service is enabled</text><!--MD5=[228411fb88ef1bcdfe7f19b853e215d2]
link isServiceEnabled to drop--><path d="M1655.3,161.3592 C1689.09,179.3992 1733,211.2992 1733,255.1992 C1733,255.1992 1733,255.1992 1733,1666.1992 C1733,1737.9692 1198.66,1756.0992 1020.81,1760.1492 " fill="none" id="isServiceEnabled-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.65,1760.2592,1024.7391,1764.0525,1020.6487,1760.145,1024.5562,1756.0546,1015.65,1760.2592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="116" x="1734" y="896.7676">service is disabled</text><!--MD5=[939988dada0403ed6d1a4e6924dd7701]
link buffer4_receive to unpack--><path d="M1029.46,274.2992 C956.18,294.9992 833.42,329.6692 759.35,350.5892 " fill="none" id="buffer4_receive-&gt;unpack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="754.1,352.0692,763.8515,353.4505,758.9087,350.6994,761.6598,345.7566,754.1,352.0692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="918" y="317.7676">CONTINUE</text><!--MD5=[02f70f5bfef59fd4c02228f0fd276994]
link buffer4_receive to classify--><path d="M1066.12,274.4492 C1047.04,287.8992 1019.38,306.6792 994,321.1992 C907.16,370.8892 800.63,419.7792 741.66,445.8492 " fill="none" id="buffer4_receive-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="736.8,447.9892,746.6488,448.032,741.3778,445.9784,743.4314,440.7075,736.8,447.9892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="940" y="374.2676">SKIP</text><!--MD5=[41e6595d93b5d76e06ef1219c230b624]
link buffer4_receive to drop--><path d="M1179.77,272.9392 C1336.38,300.6992 1643,356.5292 1643,368.1992 C1643,368.1992 1643,368.1992 1643,1666.1992 C1643,1728.8292 1184.07,1752.6892 1020.81,1759.1992 " fill="none" id="buffer4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.59,1759.3992,1024.7431,1763.0353,1020.586,1759.1988,1024.4224,1755.0417,1015.59,1759.3992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1644" y="990.2676">DROP</text><!--MD5=[1ecae68ae42d9a73e40e9217f03f9ce7]
link unpack to classify--><path d="M697,387.6192 C697,403.1592 697,425.9792 697,442.8592 " fill="none" id="unpack-&gt;classify" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="697,447.8892,701,438.8892,697,442.8892,693,438.8892,697,447.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[27fcba0ca5551c2a3eff6088113b3400]
link unpack to drop--><path d="M639.86,372.0692 C474.31,378.2592 6,401.3992 6,465.1992 C6,465.1992 6,465.1992 6,1666.1992 C6,1765.3592 797.05,1728.7492 895,1744.1992 C898.94,1744.8192 902.99,1745.5592 907.05,1746.3692 " fill="none" id="unpack-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.2,1747.4292,904.201,1741.6833,907.3044,1746.4129,902.5748,1749.5163,912.2,1747.4292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="7" y="1064.7676">on error</text><!--MD5=[6d44324a94e4b11142830ec71aa81556]
link classify to pkt4_receive--><path d="M667.48,484.3992 C639.44,500.7492 597.31,525.2992 567.9,542.4392 " fill="none" id="classify-&gt;pkt4_receive" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="563.3,545.1192,573.0915,544.0576,567.6235,542.6079,569.0733,537.1399,563.3,545.1192" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0057d53684278b0199141f1c920049f3]
link pkt4_receive to drop_class--><path d="M499.2,581.2692 C481.2,590.1392 458.89,601.1892 439,611.1992 C409.58,626.0092 376.4,643.0092 351.62,655.7692 " fill="none" id="pkt4_receive-&gt;drop_class" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="347.1,658.0992,356.9329,657.5388,351.5461,655.8118,353.2731,650.425,347.1,658.0992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="440" y="624.7676">CONTINUE</text><!--MD5=[23d76d484a8ade2f68bc32d339275e55]
link pkt4_receive to drop--><path d="M534,581.4992 C534,603.3392 534,642.0492 534,675.1992 C534,675.1992 534,675.1992 534,1666.1992 C534,1687.5792 558.43,1677.3692 579,1683.1992 C716.63,1722.1692 755.29,1713.5292 895,1744.1992 C899.07,1745.0892 903.27,1746.0492 907.49,1747.0292 " fill="none" id="pkt4_receive-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.45,1748.1992,904.6015,1742.2493,907.5822,1747.0572,902.7743,1750.0379,912.45,1748.1992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="535" y="1177.7676">DROP</text><!--MD5=[2ba86aae9fb469d61f9b8011ebc0bd96]
link drop_class to same_client--><path d="M314,694.6192 C314,710.1592 314,732.9792 314,749.8592 " fill="none" id="drop_class-&gt;same_client" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="314,754.8892,318,745.8892,314,749.8892,310,745.8892,314,754.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[4eef49efa4e6a39b9cad1f9dd4db75c9]
link drop_class to drop--><path d="M243.48,679.2592 C179.13,685.3592 94,705.9492 94,772.1992 C94,772.1992 94,772.1992 94,1666.1992 C94,1720.9492 161.68,1676.3392 216,1683.1992 C337.59,1698.5492 367.98,1702.7792 490,1714.1992 C669.71,1731.0192 716.75,1715.8392 895,1744.1992 C898.94,1744.8292 902.99,1745.5692 907.05,1746.3792 " fill="none" id="drop_class-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.2,1747.4492,904.1976,1741.708,907.3038,1746.4357,902.576,1749.5419,912.2,1747.4492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="126" x="95" y="1234.2676">query in DROP class</text><!--MD5=[bb9b361438ecdeec2ed5ec34799fad2e]
link same_client to process--><path d="M347.12,791.2092 C395.425,816.0092 488.31,863.6992 569.655,905.4642 C610.3275,926.3467 648.115,945.748 676.0025,960.0661 C689.9463,967.2252 701.415,973.1134 709.5319,977.2807 C711.5611,978.3225 713.3808,979.2568 714.9774,980.0764 " fill="none" id="same_client-&gt;process" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="714.9774,980.0764,708.7978,972.4075,710.5293,977.7928,705.144,979.5244,714.9774,980.0764" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[2de62570b816e5df0f82700c4b296cc3]
link same_client to drop--><path d="M299.7,791.2592 C288.57,806.3092 275,829.3392 275,852.1992 C275,852.1992 275,852.1992 275,1173.6992 C275,1222.3992 247.11,1229.1792 239,1277.1992 C237.74,1284.6492 238.76,1286.6492 239,1294.1992 C239.67,1315.1192 242,1320.2692 242,1341.1992 C242,1341.1992 242,1341.1992 242,1666.1992 C242,1713.3692 777.64,1725.3292 895,1744.1992 C898.94,1744.8292 902.99,1745.5792 907.05,1746.3992 " fill="none" id="same_client-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.19,1747.4692,904.2071,1741.7009,907.2973,1746.4392,902.559,1749.5293,912.19,1747.4692" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="240" y="1290.7676">queries from the same client possible race</text><!--MD5=[3640933a3eded42de606c73d1c2efb26]
link process to drop--><path d="M714.7345,990.1215 C714.4884,990.2441 714.2376,990.3695 713.9823,990.4976 C712.9607,991.0103 711.8653,991.5676 710.703,992.1686 C708.3783,993.3708 705.7858,994.7482 702.9805,996.2952 C691.7591,1002.483 677.1319,1011.383 662.6163,1022.6242 C633.585,1045.1067 605,1076.9542 605,1115.1992 C605,1115.1992 605,1115.1992 605,1286.6992 C605,1382.9192 605,1406.9792 605,1503.1992 C605,1503.1992 605,1503.1992 605,1666.1992 C605,1670.0592 805.92,1721.3092 907.14,1746.8892 " fill="none" id="process-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="912.18,1748.1592,904.4231,1742.0904,907.3301,1746.9432,902.4774,1749.8502,912.18,1748.1592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="606" y="1403.7676">unknown message type</text><!--MD5=[952846e6e065ca3396c39be4d5d60980]
link processDiscover to leases4_committed--><path d="M1153.54,1003.3292 C1151.58,1026.3592 1148.08,1067.3592 1145.91,1092.8192 " fill="none" id="processDiscover-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1145.47,1097.9992,1150.2261,1089.3749,1145.8982,1093.0176,1142.2555,1088.6897,1145.47,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7f61b5f2e024f0ea6329d761794804a2]
link processDiscover to drop--><path d="M1178.66,1003.2492 C1195.43,1015.0392 1218.66,1030.7692 1240,1043.1992 C1301.84,1079.1992 1384,1043.6492 1384,1115.1992 C1384,1115.1992 1384,1115.1992 1384,1343.1992 C1384,1405.5792 1346.5,1559.4192 1323,1617.1992 C1310.64,1647.5792 1313.41,1660.2292 1290,1683.1992 C1252.31,1720.1992 1104.17,1743.9392 1021.16,1754.6292 " fill="none" id="processDiscover-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.79,1755.3092,1025.2217,1758.1453,1020.7503,1754.6802,1024.2153,1750.2088,1015.79,1755.3092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1380" y="1403.7676">on error</text><!--MD5=[f46ab6743faf3720230dd3ca9adf25a5]
link processRequest to leases4_committed--><path d="M845.36,1003.3592 C861.72,1015.8092 885.26,1032.3292 908,1043.1992 C957.4,1066.8292 1016.32,1084.8192 1062.92,1096.8992 " fill="none" id="processRequest-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1067.97,1098.1992,1060.2468,1092.0875,1063.1269,1096.9563,1058.2582,1099.8364,1067.97,1098.1992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[46780bcbdce00599e22cc2808afc4298]
link processRequest to drop--><path d="M814.47,1003.5592 C802.08,1027.7992 782,1073.5092 782,1115.1992 C782,1115.1992 782,1115.1992 782,1343.1992 C782,1504.6592 842.57,1536.4892 910,1683.1992 C916.56,1697.4792 918.33,1701.0892 927,1714.1992 C932.7,1722.8192 939.57,1731.8492 945.83,1739.6592 " fill="none" id="processRequest-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="949.23,1743.8592,946.6802,1734.3461,946.0857,1739.9717,940.4601,1739.3771,949.23,1743.8592" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="786" y="1403.7676">on error</text><!--MD5=[dd5280f7a4fbe519a789693377d2c3dc]
link processRelease to leases4_committed--><path d="M1009.58,1003.3292 C1037.95,1026.9392 1089.01,1069.4292 1119.37,1094.6992 " fill="none" id="processRelease-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1123.33,1097.9992,1118.9735,1089.1663,1119.4877,1094.7997,1113.8543,1095.3139,1123.33,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9c1ccee308c843163ae9c7fab5373c87]
link processRelease to drop--><path d="M958.18,1003.1992 C924.12,1024.5192 874,1064.4892 874,1115.1992 C874,1115.1992 874,1115.1992 874,1343.1992 C874,1496.1392 893.83,1533.8992 927,1683.1992 C930.11,1697.2092 930.28,1701.0392 936,1714.1992 C939.7,1722.7092 944.65,1731.5692 949.37,1739.2792 " fill="none" id="processRelease-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="952.26,1743.9092,950.8732,1734.1585,949.6062,1739.6716,944.093,1738.4046,952.26,1743.9092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="876" y="1403.7676">on error</text><!--MD5=[762f153a4fd6a7efd08d553c7afbf530]
link processDecline to leases4_committed--><path d="M1296.63,1003.3292 C1264.28,1027.0392 1205.97,1069.7792 1171.54,1095.0092 " fill="none" id="processDecline-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1167.47,1097.9992,1177.0921,1095.8981,1171.5007,1095.0405,1172.3582,1089.4491,1167.47,1097.9992" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d9fbe084438a9903d341665e19467c6]
link processDecline to drop--><path d="M1344.72,1003.4392 C1388.71,1034.5392 1476,1098.3692 1476,1115.1992 C1476,1115.1992 1476,1115.1992 1476,1666.1992 C1476,1712.0592 1154.4,1744.8992 1020.96,1756.5492 " fill="none" id="processDecline-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.91,1756.9892,1025.2195,1760.2037,1020.8916,1756.561,1024.5344,1752.2331,1015.91,1756.9892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1477" y="1403.7676">on error</text><!--MD5=[403b2bcd25ba6f5a11641c975fae6de0]
link processInform to leases4_committed--><path d="M1459.75,1003.3292 C1444.69,1015.9292 1422.73,1032.6492 1401,1043.1992 C1350.13,1067.9092 1289.34,1085.4192 1239.66,1096.9892 " fill="none" id="processInform-&gt;leases4_committed" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1234.58,1098.1592,1244.2506,1100.0248,1239.451,1097.0307,1242.445,1092.2312,1234.58,1098.1592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c5223c78dfc731d8a0b6dd3ad2587a32]
link processInform to drop--><path d="M1501,1003.2392 C1527.36,1025.7692 1568,1068.1292 1568,1115.1992 C1568,1115.1992 1568,1115.1992 1568,1666.1992 C1568,1721.2392 1171.5,1749.4592 1021.01,1758.1792 " fill="none" id="processInform-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.76,1758.4792,1024.9741,1761.9578,1020.7518,1758.1932,1024.5164,1753.9709,1015.76,1758.4792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="1569" y="1403.7676">on error</text><!--MD5=[887612e1a41deb0055e6b261cad7b207]
link leases4_committed to pkt4_send--><path d="M1113.34,1134.3192 C1087.4,1150.5592 1051.56,1177.4592 1033,1211.1992 C1014.26,1245.2592 1012.51,1291.6692 1013.42,1318.8292 " fill="none" id="leases4_committed-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1013.63,1323.9992,1017.2398,1314.8358,1013.4153,1319.0038,1009.2472,1315.1793,1013.63,1323.9992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1034" y="1234.2676">CONTINUE</text><!--MD5=[03d4f1b76350f6f230f27d5a69f4e552]
link leases4_committed to drop--><path d="M1215.67,1134.3092 C1261.73,1150.0592 1313,1178.6992 1313,1228.1992 C1313,1228.1992 1313,1228.1992 1313,1399.6992 C1313,1528.5792 1332.51,1582.5492 1252,1683.1992 C1223.32,1719.0492 1096.3,1742.6492 1020.86,1753.7692 " fill="none" id="leases4_committed-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.52,1754.5492,1025.0071,1757.1941,1020.4666,1753.8201,1023.8405,1749.2796,1015.52,1754.5492" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1315" y="1460.2676">DROP</text><!--MD5=[e6b479318b22374427e5a12769813441]
link leases4_committed to park--><path d="M1144,1134.5392 C1144,1153.7692 1144,1184.8292 1144,1205.8592 " fill="none" id="leases4_committed-&gt;park" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1144,1210.9792,1148,1201.9792,1144,1205.9792,1140,1201.9792,1144,1210.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1145" y="1177.7676">PARK</text><!--MD5=[6b0b05ab5b5e01054aa0e3030e86c15b]
link park to pkt4_send--><path d="M1124.13,1247.2992 C1101.18,1267.0392 1063.46,1299.4992 1038.93,1320.6092 " fill="none" id="park-&gt;pkt4_send" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1035.11,1323.8992,1044.5412,1321.0616,1038.9002,1320.6382,1039.3236,1314.9972,1035.11,1323.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="1088" y="1290.7676">unpark</text><!--MD5=[e1e7c40ae99ae9db4be329f6b3cb143f]
link pkt4_send to pack--><path d="M1033.64,1360.2992 C1055.07,1379.9592 1090.25,1412.2292 1113.27,1433.3492 " fill="none" id="pkt4_send-&gt;pack" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1117.14,1436.8992,1113.218,1427.8649,1113.4578,1433.5167,1107.806,1433.7565,1117.14,1436.8992" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1083" y="1403.7676">CONTINUE</text><!--MD5=[729fab78839d14d65a522c939ef9b552]
link pkt4_send to buffer4_send--><path d="M1013.6,1360.3192 C1012.24,1386.3092 1012.69,1436.5492 1032,1473.1992 C1044.57,1497.0592 1067.55,1517.1692 1086.73,1530.9992 " fill="none" id="pkt4_send-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1091.02,1534.0292,1085.9763,1525.5698,1086.936,1531.1447,1081.3611,1532.1043,1091.02,1534.0292" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="1033" y="1460.2676">SKIP</text><!--MD5=[7a343c005ca5222349b93a374f6aa4be]
link pkt4_send to drop--><path d="M1008.96,1360.3792 C993.2,1406.2292 951.09,1535.5692 937,1647.1992 C935,1663.0692 934.35,1667.4192 937,1683.1992 C940.27,1702.6292 947.81,1723.6792 954.1,1739.0092 " fill="none" id="pkt4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="956.17,1743.9792,956.39,1734.1328,954.2419,1739.3659,949.0087,1737.2179,956.17,1743.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="959" y="1557.2676">DROP</text><!--MD5=[e1b3754cee4214144faeedd0f77d1671]
link pack to buffer4_send--><path d="M1132.88,1473.6192 C1130.1,1489.1592 1126.02,1511.9792 1123,1528.8592 " fill="none" id="pack-&gt;buffer4_send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1122.1,1533.8892,1127.61,1525.7259,1122.973,1528.966,1119.7329,1524.3291,1122.1,1533.8892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0fe92c55fb860475c26b6ea914a50894]
link buffer4_send to send--><path d="M1118.06,1570.5392 C1117.02,1589.7692 1115.34,1620.8292 1114.21,1641.8592 " fill="none" id="buffer4_send-&gt;send" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1113.93,1646.9792,1118.412,1638.2093,1114.201,1641.9866,1110.4237,1637.7756,1113.93,1646.9792" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="1117" y="1613.7676">CONTINUE</text><!--MD5=[887aa11356841167329c21249679272f]
link buffer4_send to drop--><path d="M1161.34,1570.3192 C1173.8,1577.5792 1185.96,1587.3992 1193,1600.1992 C1201.95,1616.4792 1222.86,1639.9692 1191,1683.1992 C1151.85,1736.3392 1074.24,1753.5792 1020.76,1758.9992 " fill="none" id="buffer4_send-&gt;drop" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1015.66,1759.4892,1025.0054,1762.5977,1020.6364,1759.0044,1024.2297,1754.6354,1015.66,1759.4892" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="35" x="1208" y="1670.2676">DROP</text><!--MD5=[6b25e4fe160ab604f67b02c1ded86970]
link send to drop--><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="225" x="809.5" y="1801.3555">dashed arrow means asynchronous processing</text><!--MD5=[3241bf81dfc1d82f66e0faca3c9d8456]
@startuml

title DHCPv4 packet processing (Kea 1.8.0)

agent "Receive query" as receivePacket
note left : input

agent "Service Enabled" as isServiceEnabled

agent "Callout buffer4_receive" as buffer4_receive
note right : hook

agent "Unpack query" as unpack

agent "Classify query" as classify

agent "Callout pkt4_receive" as pkt4_receive
note right : hook

agent "Check DROP class" as drop_class

agent "Avoid same client race in multi-threaded mode" as same_client
note right : postpone processing or drop

rectangle "Process Query on its Message Type" as process {
 agent "Process Discover" as processDiscover
 agent "Process Request" as processRequest
 agent "Process Release" as processRelease
 agent "Process Decline" as processDecline
 agent "Process Inform" as processInform
}

agent "Callout leases4_committed" as leases4_committed
note right : hook

agent "Park" as park

agent "Callout pkt4_send" as pkt4_send

agent "Send response" as send

agent "Pack response" as pack

agent "Callout buffer4_send" as buffer4_send

agent "Send response" as send
note left : output

agent "Drop packet" as drop
note left : error

receivePacket - -> isServiceEnabled
isServiceEnabled - -> buffer4_receive : service is enabled
isServiceEnabled - - - -> drop : service is disabled
buffer4_receive - -> unpack : CONTINUE
buffer4_receive - -> classify : SKIP
buffer4_receive - - - -> drop : DROP
unpack - -> classify
unpack - - -> drop : on error
classify - -> pkt4_receive
pkt4_receive - -> drop_class : CONTINUE
pkt4_receive - - -> drop : DROP
drop_class - -> same_client
drop_class - - -> drop : query in DROP class
same_client - - -> process
same_client - - -> drop : queries from the same client possible race
process - - -> drop : unknown message type
processDiscover - -> leases4_committed
processDiscover - - -> drop : on error
processRequest - -> leases4_committed
processRequest - - -> drop : on error
processRelease - -> leases4_committed
processRelease - - -> drop : on error
processDecline - -> leases4_committed
processDecline - - -> drop : on error
processInform - -> leases4_committed
processInform - - -> drop : on error
leases4_committed - -> pkt4_send : CONTINUE
leases4_committed - - -> drop : DROP
leases4_committed - -> park : PARK
park -[dashed]-> pkt4_send : unpark
pkt4_send - -> pack : CONTINUE
pkt4_send - -> buffer4_send : SKIP
pkt4_send - - -> drop : DROP
pack - -> buffer4_send
buffer4_send - -> send : CONTINUE
buffer4_send - - -> drop : DROP
send -[hidden]-> drop

footer dashed arrow means asynchronous processing

@enduml

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