]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1329] Added append requested (vendor) options UMLs
authorFrancis Dupont <fdupont@isc.org>
Sat, 18 Jul 2020 20:56:45 +0000 (22:56 +0200)
committerFrancis Dupont <fdupont@isc.org>
Tue, 4 Aug 2020 08:45:38 +0000 (10:45 +0200)
doc/devel/Makefile.am
doc/devel/images/appendRequestedOptions.png [new file with mode: 0644]
doc/devel/images/appendRequestedOptions.svg [new file with mode: 0644]
doc/devel/images/appendRequestedOptions.uml [new file with mode: 0644]
doc/devel/images/appendRequestedVendorOptions.png [new file with mode: 0644]
doc/devel/images/appendRequestedVendorOptions.svg [new file with mode: 0644]
doc/devel/images/appendRequestedVendorOptions.uml [new file with mode: 0644]
doc/devel/images/buildCfgOptionList.uml [new file with mode: 0644]

index fa69b683f98e3687679df6655d12313fec9d5dcb..2b8e05a4403da00e07e37b31eed04f6e86ccde6e 100644 (file)
@@ -11,9 +11,18 @@ EXTRA_DIST += mainpage.dox
 EXTRA_DIST += terminology.dox
 EXTRA_DIST += unit-tests.dox
 
+EXTRA_DIST += images/appendRequestedOptions.png
+EXTRA_DIST += images/appendRequestedOptions.svg
+EXTRA_DIST += images/appendRequestedOptions.uml
+EXTRA_DIST += images/appendRequestedVendorOptions.png
+EXTRA_DIST += images/appendRequestedVendorOptions.svg
+EXTRA_DIST += images/appendRequestedVendorOptions.uml
 EXTRA_DIST += images/assign-lease4.png
 EXTRA_DIST += images/assign-lease4.svg
 EXTRA_DIST += images/assign-lease4.uml
+EXTRA_DIST += images/buildCfgOptionList.png
+EXTRA_DIST += images/buildCfgOptionList.svg
+EXTRA_DIST += images/buildCfgOptionList.uml
 EXTRA_DIST += images/main-loop.png
 EXTRA_DIST += images/main-loop.svg
 EXTRA_DIST += images/main-loop.uml
diff --git a/doc/devel/images/appendRequestedOptions.png b/doc/devel/images/appendRequestedOptions.png
new file mode 100644 (file)
index 0000000..40ae1ff
Binary files /dev/null and b/doc/devel/images/appendRequestedOptions.png differ
diff --git a/doc/devel/images/appendRequestedOptions.svg b/doc/devel/images/appendRequestedOptions.svg
new file mode 100644 (file)
index 0000000..9496aac
--- /dev/null
@@ -0,0 +1,41 @@
+<?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="797px" preserveAspectRatio="none" style="width:375px;height:797px;" version="1.1" viewBox="0 0 375 797" width="375px" zoomAndPan="magnify"><defs><filter height="300%" id="fpz5149x5yof3" 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="229" x="72" y="27.4023">Append requested options</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="100.5" y="32.1992"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="110.5" y="53.8008">get configured option list</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="272" x="46" y="86.332"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="252" x="56" y="107.9336">get parameter request list (PRL) from query</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="61" y="184.4648"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="222" x="71" y="206.0664">get configured options in dhcp4 space</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="192" x="86" y="282.5977"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="172" x="96" y="304.1992">push back option code to PRL</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="112.5,238.5977,251.5,238.5977,263.5,250.5977,251.5,262.5977,112.5,262.5977,100.5,250.5977,112.5,238.5977" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="112.5" y="254.7549">for each persistent option</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="73,140.4648,291,140.4648,303,152.4648,291,164.4648,73,164.4648,61,152.4648,73,140.4648" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="218" x="73" y="156.6221">for each item from configured option list</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="61" y="517.208"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="222" x="71" y="538.8096">get configured options in dhcp4 space</text><rect fill="#FEFECE" filter="url(#fpz5149x5yof3)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="104.5" y="619.8184"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="114.5" y="641.4199">add option to response</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="166,571.3408,198,571.3408,210,583.3408,198,595.3408,166,595.3408,154,583.3408,166,571.3408" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="22" x="186" y="605.9756">first</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="166" y="587.498">found</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="210" y="581.0205">not found or already found</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="182,673.9512,194,685.9512,182,697.9512,170,685.9512,182,673.9512" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="73,473.208,291,473.208,303,485.208,291,497.208,73,497.208,61,485.208,73,473.208" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="218" x="73" y="489.3652">for each item from configured option list</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="105.5,424.7305,258.5,424.7305,270.5,436.7305,258.5,448.7305,105.5,448.7305,93.5,436.7305,105.5,424.7305" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="186" y="459.3652">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="105.5" y="440.8877">option is not set in response</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="270.5" y="434.4102">no</text><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="182,739.9512,194,751.9512,182,763.9512,170,751.9512,182,739.9512" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fpz5149x5yof3)" points="128,380.7305,236,380.7305,248,392.7305,236,404.7305,128,404.7305,116,392.7305,128,380.7305" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="128" y="396.8877">for each code in PRL</text><ellipse cx="24" cy="435.7305" fill="#FFFFFF" filter="url(#fpz5149x5yof3)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="24" cy="435.7305" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="66.332" y2="86.332"/><polygon fill="#A80036" points="178,76.332,182,86.332,186,76.332,182,80.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="262.5977" y2="282.5977"/><polygon fill="#A80036" points="178,272.5977,182,282.5977,186,272.5977,182,276.5977" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="316.7305" y2="326.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="290" y1="326.7305" y2="326.7305"/><polygon fill="#A80036" points="286,297.6641,290,287.6641,294,297.6641,290,293.6641" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="290" x2="290" y1="250.5977" y2="326.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="290" x2="263.5" y1="250.5977" y2="250.5977"/><polygon fill="#A80036" points="273.5,246.5977,263.5,250.5977,273.5,254.5977,269.5,250.5977" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="100.5" x2="74" y1="250.5977" y2="250.5977"/><polygon fill="#A80036" points="70,283.6641,74,293.6641,78,283.6641,74,287.6641" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="74" x2="74" y1="250.5977" y2="338.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="74" x2="315" y1="338.7305" y2="338.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="152.4648" y2="338.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="303" y1="152.4648" y2="152.4648"/><polygon fill="#A80036" points="313,148.4648,303,152.4648,313,156.4648,309,152.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="218.5977" y2="238.5977"/><polygon fill="#A80036" points="178,228.5977,182,238.5977,186,228.5977,182,232.5977" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="164.4648" y2="184.4648"/><polygon fill="#A80036" points="178,174.4648,182,184.4648,186,174.4648,182,178.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="61" x2="49" y1="152.4648" y2="152.4648"/><polygon fill="#A80036" points="45,241.0977,49,251.0977,53,241.0977,49,245.0977" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="49" x2="49" y1="152.4648" y2="360.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="49" x2="182" y1="360.7305" y2="360.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="360.7305" y2="380.7305"/><polygon fill="#A80036" points="178,370.7305,182,380.7305,186,370.7305,182,374.7305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="120.4648" y2="140.4648"/><polygon fill="#A80036" points="178,130.4648,182,140.4648,186,130.4648,182,134.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="595.3408" y2="619.8184"/><polygon fill="#A80036" points="178,609.8184,182,619.8184,186,609.8184,182,613.8184" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="210" x2="269.5" y1="583.3408" y2="583.3408"/><polygon fill="#A80036" points="265.5,626.8848,269.5,636.8848,273.5,626.8848,269.5,630.8848" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="269.5" x2="269.5" y1="583.3408" y2="685.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="269.5" x2="194" y1="685.9512" y2="685.9512"/><polygon fill="#A80036" points="204,681.9512,194,685.9512,204,689.9512,200,685.9512" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="653.9512" y2="673.9512"/><polygon fill="#A80036" points="178,663.9512,182,673.9512,186,663.9512,182,667.9512" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="551.3408" y2="571.3408"/><polygon fill="#A80036" points="178,561.3408,182,571.3408,186,561.3408,182,565.3408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="497.208" y2="517.208"/><polygon fill="#A80036" points="178,507.208,182,517.208,186,507.208,182,511.208" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="697.9512" y2="707.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="315" y1="707.9512" y2="707.9512"/><polygon fill="#A80036" points="311,600.3184,315,590.3184,319,600.3184,315,596.3184" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="485.208" y2="707.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="303" y1="485.208" y2="485.208"/><polygon fill="#A80036" points="313,481.208,303,485.208,313,489.208,309,485.208" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="61" x2="49" y1="485.208" y2="485.208"/><polygon fill="#A80036" points="45,586.3184,49,596.3184,53,586.3184,49,590.3184" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="49" x2="49" y1="485.208" y2="719.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="49" x2="182" y1="719.9512" y2="719.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="719.9512" y2="739.9512"/><polygon fill="#A80036" points="178,729.9512,182,739.9512,186,729.9512,182,733.9512" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="448.7305" y2="473.208"/><polygon fill="#A80036" points="178,463.208,182,473.208,186,463.208,182,467.208" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="270.5" x2="325" y1="436.7305" y2="436.7305"/><polygon fill="#A80036" points="321,580.3184,325,590.3184,329,580.3184,325,584.3184" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="325" x2="325" y1="436.7305" y2="751.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="325" x2="194" y1="751.9512" y2="751.9512"/><polygon fill="#A80036" points="204,747.9512,194,751.9512,204,755.9512,200,751.9512" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="404.7305" y2="424.7305"/><polygon fill="#A80036" points="178,414.7305,182,424.7305,186,414.7305,182,418.7305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="182" y1="763.9512" y2="773.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="182" x2="349" y1="773.9512" y2="773.9512"/><polygon fill="#A80036" points="345,588.3184,349,578.3184,353,588.3184,349,584.3184" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="349" x2="349" y1="392.7305" y2="773.9512"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="349" x2="248" y1="392.7305" y2="392.7305"/><polygon fill="#A80036" points="258,388.7305,248,392.7305,258,396.7305,254,392.7305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="116" x2="24" y1="392.7305" y2="392.7305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="24" y1="392.7305" y2="424.7305"/><polygon fill="#A80036" points="20,414.7305,24,424.7305,28,414.7305,24,418.7305" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a7f308aa87ac28ab1e7482489b6cd310]
+@startuml\r
+\r
+Title Append requested options\r
+\r
+:get configured option list;\r
+\r
+:get parameter request list (PRL) from query;\r
+\r
+while (for each item from configured option list)\r
+  :get configured options in dhcp4 space;\r
+  while (for each persistent option)\r
+    :push back option code to PRL;\r
+  endwhile\r
+endwhile\r
+\r
+while (for each code in PRL)\r
+  if (option is not set in response) then (yes)\r
+    while (for each item from configured option list)\r
+      :get configured options in dhcp4 space;\r
+      if (found) then (first)\r
+        :add option to response;\r
+      else (not found or already found)\r
+      endif\r
+    endwhile\r
+  else (no)\r
+  endif\r
+endwhile\r
+->done;\r
+stop\r
+\r
+@enduml\r
+
+PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/doc/devel/images/appendRequestedOptions.uml b/doc/devel/images/appendRequestedOptions.uml
new file mode 100644 (file)
index 0000000..3461916
--- /dev/null
@@ -0,0 +1,31 @@
+@startuml
+
+Title Append requested options
+
+:get configured option list;
+
+:get parameter request list (PRL) from query;
+
+while (for each item from configured option list)
+  :get configured options in dhcp4 space;
+  while (for each persistent option)
+    :push back option code to PRL;
+  endwhile
+endwhile
+
+while (for each code in PRL)
+  if (option is not set in response) then (yes)
+    while (for each item from configured option list)
+      :get configured options in dhcp4 space;
+      if (found) then (first)
+        :add option to response;
+      else (not found or already found)
+      endif
+    endwhile
+  else (no)
+  endif
+endwhile
+->done;
+stop
+
+@enduml
diff --git a/doc/devel/images/appendRequestedVendorOptions.png b/doc/devel/images/appendRequestedVendorOptions.png
new file mode 100644 (file)
index 0000000..2cafd5e
Binary files /dev/null and b/doc/devel/images/appendRequestedVendorOptions.png differ
diff --git a/doc/devel/images/appendRequestedVendorOptions.svg b/doc/devel/images/appendRequestedVendorOptions.svg
new file mode 100644 (file)
index 0000000..1c59254
--- /dev/null
@@ -0,0 +1,63 @@
+<?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="1590px" preserveAspectRatio="none" style="width:418px;height:1590px;" version="1.1" viewBox="0 0 418 1590" width="418px" zoomAndPan="magnify"><defs><filter height="300%" id="f1m95hr65q3xut" 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="294" x="61.25" y="27.4023">Append vendor requested options</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="237" x="92.5" y="32.1992"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="217" x="102.5" y="53.8008">get vendor id from query vivso option</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="257" x="82.5" y="86.332"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="237" x="92.5" y="107.9336">get vendor id from response vivso option</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="55" x="183.5" y="188.9424"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="35" x="193.5" y="210.5439">return</text><ellipse cx="211" cy="262.5088" fill="#FFFFFF" filter="url(#f1m95hr65q3xut)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="211" cy="262.5088" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="185.5,140.4648,236.5,140.4648,248.5,152.4648,236.5,164.4648,185.5,164.4648,173.5,152.4648,185.5,140.4648" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="215" y="175.0996">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="185.5" y="156.6221">vendor id</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="248.5" y="150.1445">yes</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="129.5" y="315.5088"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="139.5" y="337.1104">get configured option list</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="381" x="20.5" y="369.6416"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="361" x="30.5" y="391.2432">get option request list (ORO) from query DOCSIS vendor option</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="81" y="467.7744"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="91" y="489.376">get configured options in vendor id space</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="112.5" y="565.9072"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="177" x="122.5" y="587.5088">push back option code to ORO</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="141.5,521.9072,280.5,521.9072,292.5,533.9072,280.5,545.9072,141.5,545.9072,129.5,533.9072,141.5,521.9072" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="141.5" y="538.0645">for each persistent option</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="102,423.7744,320,423.7744,332,435.7744,320,447.7744,102,447.7744,90,435.7744,102,423.7744" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="218" x="102" y="439.9316">for each item from configured option list</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="207" x="107.5" y="712.5176"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="187" x="117.5" y="734.1191">create vivso option for vendor id</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="151.5,664.04,270.5,664.04,282.5,676.04,270.5,688.04,151.5,688.04,139.5,676.04,151.5,664.04" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="215" y="698.6748">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="151.5" y="680.1973">response vivso option</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="282.5" y="673.7197">yes</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="211,766.6504,223,778.6504,211,790.6504,199,778.6504,211,766.6504" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="159.5" y="810.6504"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="169.5" y="832.252">added = false</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="81" y="1001.2607"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="91" y="1022.8623">get configured options in vendor id space</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="198" x="112" y="1103.8711"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="178" x="122" y="1125.4727">add sub-option to vivso option</text><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="161.5" y="1173.0039"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="171.5" y="1194.6055">added = true</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="195,1055.3936,227,1055.3936,239,1067.3936,227,1079.3936,195,1079.3936,183,1067.3936,195,1055.3936" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="22" x="215" y="1090.0283">first</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="195" y="1071.5508">found</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="239" y="1065.0732">not found or already found</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="211,1227.1367,223,1239.1367,211,1251.1367,199,1239.1367,211,1227.1367" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="102,957.2607,320,957.2607,332,969.2607,320,981.2607,102,981.2607,90,969.2607,102,957.2607" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="218" x="102" y="973.418">for each item from configured option list</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="113.5,908.7832,308.5,908.7832,320.5,920.7832,308.5,932.7832,113.5,932.7832,101.5,920.7832,113.5,908.7832" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="215" y="943.418">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="113.5" y="924.9404">sub-option is not set in vivso option</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="320.5" y="918.4629">no</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="211,1293.1367,223,1305.1367,211,1317.1367,199,1305.1367,211,1293.1367" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1m95hr65q3xut)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="186" x="118" y="1434.0918"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="166" x="128" y="1455.6934">add vivso option in response</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="145,1385.6143,277,1385.6143,289,1397.6143,277,1409.6143,145,1409.6143,133,1397.6143,145,1385.6143" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="215" y="1420.249">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="145" y="1401.7715">vivso option in response</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="289" y="1395.2939">yes</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="211,1488.2246,223,1500.2246,211,1512.2246,199,1500.2246,211,1488.2246" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="194.5,1337.1367,227.5,1337.1367,239.5,1349.1367,227.5,1361.1367,194.5,1361.1367,182.5,1349.1367,194.5,1337.1367" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="215" y="1371.7715">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="194.5" y="1353.2939">added</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="239.5" y="1346.8164">no</text><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="211,1532.2246,223,1544.2246,211,1556.2246,199,1544.2246,211,1532.2246" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1m95hr65q3xut)" points="154,864.7832,268,864.7832,280,876.7832,268,888.7832,154,888.7832,142,876.7832,154,864.7832" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="154" y="880.9404">for each code in ORO</text><ellipse cx="24" cy="919.7832" fill="#FFFFFF" filter="url(#f1m95hr65q3xut)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="24" cy="919.7832" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="66.332" y2="86.332"/><polygon fill="#A80036" points="207,76.332,211,86.332,215,76.332,211,80.332" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="223.0752" y2="251.5088"/><polygon fill="#A80036" points="207,241.5088,211,251.5088,215,241.5088,211,245.5088" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="164.4648" y2="188.9424"/><polygon fill="#A80036" points="207,178.9424,211,188.9424,215,178.9424,211,182.9424" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="248.5" x2="260.5" y1="152.4648" y2="152.4648"/><polygon fill="#A80036" points="256.5,221.5088,260.5,231.5088,264.5,221.5088,260.5,225.5088" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.5" x2="260.5" y1="152.4648" y2="295.5088"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.5" x2="211" y1="295.5088" y2="295.5088"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="295.5088" y2="315.5088"/><polygon fill="#A80036" points="207,305.5088,211,315.5088,215,305.5088,211,309.5088" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="120.4648" y2="140.4648"/><polygon fill="#A80036" points="207,130.4648,211,140.4648,215,130.4648,211,134.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="349.6416" y2="369.6416"/><polygon fill="#A80036" points="207,359.6416,211,369.6416,215,359.6416,211,363.6416" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="545.9072" y2="565.9072"/><polygon fill="#A80036" points="207,555.9072,211,565.9072,215,555.9072,211,559.9072" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="600.04" y2="610.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="321.5" y1="610.04" y2="610.04"/><polygon fill="#A80036" points="317.5,580.9736,321.5,570.9736,325.5,580.9736,321.5,576.9736" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321.5" x2="321.5" y1="533.9072" y2="610.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321.5" x2="292.5" y1="533.9072" y2="533.9072"/><polygon fill="#A80036" points="302.5,529.9072,292.5,533.9072,302.5,537.9072,298.5,533.9072" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="129.5" x2="100.5" y1="533.9072" y2="533.9072"/><polygon fill="#A80036" points="96.5,566.9736,100.5,576.9736,104.5,566.9736,100.5,570.9736" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="100.5" x2="100.5" y1="533.9072" y2="622.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="100.5" x2="353" y1="622.04" y2="622.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="435.7744" y2="622.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="332" y1="435.7744" y2="435.7744"/><polygon fill="#A80036" points="342,431.7744,332,435.7744,342,439.7744,338,435.7744" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="501.9072" y2="521.9072"/><polygon fill="#A80036" points="207,511.9072,211,521.9072,215,511.9072,211,515.9072" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="447.7744" y2="467.7744"/><polygon fill="#A80036" points="207,457.7744,211,467.7744,215,457.7744,211,461.7744" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="90" x2="69" y1="435.7744" y2="435.7744"/><polygon fill="#A80036" points="65,524.4072,69,534.4072,73,524.4072,69,528.4072" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="69" y1="435.7744" y2="644.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="211" y1="644.04" y2="644.04"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="644.04" y2="664.04"/><polygon fill="#A80036" points="207,654.04,211,664.04,215,654.04,211,658.04" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="403.7744" y2="423.7744"/><polygon fill="#A80036" points="207,413.7744,211,423.7744,215,413.7744,211,417.7744" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="688.04" y2="712.5176"/><polygon fill="#A80036" points="207,702.5176,211,712.5176,215,702.5176,211,706.5176" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="282.5" x2="324.5" y1="676.04" y2="676.04"/><polygon fill="#A80036" points="320.5,719.584,324.5,729.584,328.5,719.584,324.5,723.584" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="324.5" x2="324.5" y1="676.04" y2="778.6504"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="324.5" x2="223" y1="778.6504" y2="778.6504"/><polygon fill="#A80036" points="233,774.6504,223,778.6504,233,782.6504,229,778.6504" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="746.6504" y2="766.6504"/><polygon fill="#A80036" points="207,756.6504,211,766.6504,215,756.6504,211,760.6504" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="790.6504" y2="810.6504"/><polygon fill="#A80036" points="207,800.6504,211,810.6504,215,800.6504,211,804.6504" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1138.0039" y2="1173.0039"/><polygon fill="#A80036" points="207,1163.0039,211,1173.0039,215,1163.0039,211,1167.0039" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1079.3936" y2="1103.8711"/><polygon fill="#A80036" points="207,1093.8711,211,1103.8711,215,1093.8711,211,1097.8711" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="239" x2="320" y1="1067.3936" y2="1067.3936"/><polygon fill="#A80036" points="316,1145.5039,320,1155.5039,324,1145.5039,320,1149.5039" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="320" x2="320" y1="1067.3936" y2="1239.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="320" x2="223" y1="1239.1367" y2="1239.1367"/><polygon fill="#A80036" points="233,1235.1367,223,1239.1367,233,1243.1367,229,1239.1367" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1207.1367" y2="1227.1367"/><polygon fill="#A80036" points="207,1217.1367,211,1227.1367,215,1217.1367,211,1221.1367" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1035.3936" y2="1055.3936"/><polygon fill="#A80036" points="207,1045.3936,211,1055.3936,215,1045.3936,211,1049.3936" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="981.2607" y2="1001.2607"/><polygon fill="#A80036" points="207,991.2607,211,1001.2607,215,991.2607,211,995.2607" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1251.1367" y2="1261.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="353" y1="1261.1367" y2="1261.1367"/><polygon fill="#A80036" points="349,1118.9375,353,1108.9375,357,1118.9375,353,1114.9375" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="969.2607" y2="1261.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="332" y1="969.2607" y2="969.2607"/><polygon fill="#A80036" points="342,965.2607,332,969.2607,342,973.2607,338,969.2607" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="90" x2="69" y1="969.2607" y2="969.2607"/><polygon fill="#A80036" points="65,1104.9375,69,1114.9375,73,1104.9375,69,1108.9375" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="69" y1="969.2607" y2="1273.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="69" x2="211" y1="1273.1367" y2="1273.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1273.1367" y2="1293.1367"/><polygon fill="#A80036" points="207,1283.1367,211,1293.1367,215,1283.1367,211,1287.1367" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="932.7832" y2="957.2607"/><polygon fill="#A80036" points="207,947.2607,211,957.2607,215,947.2607,211,951.2607" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="320.5" x2="363" y1="920.7832" y2="920.7832"/><polygon fill="#A80036" points="359,1098.9375,363,1108.9375,367,1098.9375,363,1102.9375" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="363" x2="363" y1="920.7832" y2="1305.1367"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="363" x2="223" y1="1305.1367" y2="1305.1367"/><polygon fill="#A80036" points="233,1301.1367,223,1305.1367,233,1309.1367,229,1305.1367" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1409.6143" y2="1434.0918"/><polygon fill="#A80036" points="207,1424.0918,211,1434.0918,215,1424.0918,211,1428.0918" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="289" x2="314" y1="1397.6143" y2="1397.6143"/><polygon fill="#A80036" points="310,1441.1582,314,1451.1582,318,1441.1582,314,1445.1582" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="314" x2="314" y1="1397.6143" y2="1500.2246"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="314" x2="223" y1="1500.2246" y2="1500.2246"/><polygon fill="#A80036" points="233,1496.2246,223,1500.2246,233,1504.2246,229,1500.2246" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1468.2246" y2="1488.2246"/><polygon fill="#A80036" points="207,1478.2246,211,1488.2246,215,1478.2246,211,1482.2246" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1361.1367" y2="1385.6143"/><polygon fill="#A80036" points="207,1375.6143,211,1385.6143,215,1375.6143,211,1379.6143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="239.5" x2="336" y1="1349.1367" y2="1349.1367"/><polygon fill="#A80036" points="332,1441.1582,336,1451.1582,340,1441.1582,336,1445.1582" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="336" x2="336" y1="1349.1367" y2="1544.2246"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="336" x2="223" y1="1544.2246" y2="1544.2246"/><polygon fill="#A80036" points="233,1540.2246,223,1544.2246,233,1548.2246,229,1544.2246" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1512.2246" y2="1532.2246"/><polygon fill="#A80036" points="207,1522.2246,211,1532.2246,215,1522.2246,211,1526.2246" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1317.1367" y2="1337.1367"/><polygon fill="#A80036" points="207,1327.1367,211,1337.1367,215,1327.1367,211,1331.1367" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="888.7832" y2="908.7832"/><polygon fill="#A80036" points="207,898.7832,211,908.7832,215,898.7832,211,902.7832" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="1556.2246" y2="1566.2246"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="387" y1="1566.2246" y2="1566.2246"/><polygon fill="#A80036" points="383,1233.9814,387,1223.9814,391,1233.9814,387,1229.9814" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="387" x2="387" y1="876.7832" y2="1566.2246"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="387" x2="280" y1="876.7832" y2="876.7832"/><polygon fill="#A80036" points="290,872.7832,280,876.7832,290,880.7832,286,876.7832" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="142" x2="24" y1="876.7832" y2="876.7832"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="24" x2="24" y1="876.7832" y2="908.7832"/><polygon fill="#A80036" points="20,898.7832,24,908.7832,28,898.7832,24,902.7832" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="211" x2="211" y1="844.7832" y2="864.7832"/><polygon fill="#A80036" points="207,854.7832,211,864.7832,215,854.7832,211,858.7832" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c7800bfbb2fee12978af3e61f8586d8b]
+@startuml\r
+\r
+Title Append vendor requested options\r
+\r
+:get vendor id from query vivso option;\r
+:get vendor id from response vivso option;\r
+if (vendor id) then (no)\r
+  :return;\r
+  stop\r
+else (yes)\r
+endif\r
+\r
+:get configured option list;\r
+\r
+:get option request list (ORO) from query DOCSIS vendor option;\r
+\r
+while (for each item from configured option list)\r
+  :get configured options in vendor id space;\r
+  while (for each persistent option)\r
+    :push back option code to ORO;\r
+  endwhile\r
+endwhile\r
+\r
+if (response vivso option) then (no)\r
+  :create vivso option for vendor id;\r
+else (yes)\r
+endif\r
+\r
+:added = false;\r
+while (for each code in ORO)\r
+  if (sub-option is not set in vivso option) then (yes)\r
+    while (for each item from configured option list)\r
+      :get configured options in vendor id space;\r
+      if (found) then (first)\r
+        :add sub-option to vivso option;\r
+        :added = true;\r
+      else (not found or already found)\r
+      endif\r
+    endwhile\r
+  else (no)\r
+  endif\r
+  if (added) then (yes)\r
+    if (vivso option in response) then (no)\r
+      :add vivso option in response;\r
+    else (yes)\r
+    endif\r
+  else (no)\r
+  endif\r
+endwhile\r
+->done;\r
+stop\r
+\r
+@enduml\r
+
+PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/doc/devel/images/appendRequestedVendorOptions.uml b/doc/devel/images/appendRequestedVendorOptions.uml
new file mode 100644 (file)
index 0000000..50f721d
--- /dev/null
@@ -0,0 +1,53 @@
+@startuml
+
+Title Append vendor requested options
+
+:get vendor id from query vivso option;
+:get vendor id from response vivso option;
+if (vendor id) then (no)
+  :return;
+  stop
+else (yes)
+endif
+
+:get configured option list;
+
+:get option request list (ORO) from query DOCSIS vendor option;
+
+while (for each item from configured option list)
+  :get configured options in vendor id space;
+  while (for each persistent option)
+    :push back option code to ORO;
+  endwhile
+endwhile
+
+if (response vivso option) then (no)
+  :create vivso option for vendor id;
+else (yes)
+endif
+
+:added = false;
+while (for each code in ORO)
+  if (sub-option is not set in vivso option) then (yes)
+    while (for each item from configured option list)
+      :get configured options in vendor id space;
+      if (found) then (first)
+        :add sub-option to vivso option;
+        :added = true;
+      else (not found or already found)
+      endif
+    endwhile
+  else (no)
+  endif
+  if (added) then (yes)
+    if (vivso option in response) then (no)
+      :add vivso option in response;
+    else (yes)
+    endif
+  else (no)
+  endif
+endwhile
+->done;
+stop
+
+@enduml
diff --git a/doc/devel/images/buildCfgOptionList.uml b/doc/devel/images/buildCfgOptionList.uml
new file mode 100644 (file)
index 0000000..2ee3a10
--- /dev/null
@@ -0,0 +1,52 @@
+@startuml
+
+title buildCfgOptionList: build configured option list
+
+start
+:Get (empty) configured option list;
+
+if (no subnet) then (yes)
+  :return;
+  stop
+else (no)
+endif
+
+if (current host reservation) then (yes)
+  :push back host configured options;
+else (no)
+endif
+
+if (assigned address) then (yes)
+  :get pool of assigned address;
+  if (pool) then (yes)
+    :push back pool configured options;
+  else (no)
+  endif
+else (no)
+endif
+
+:push back subnet configured options;
+
+:get shared network from subnet;
+if (shared network) then (yes)
+  :push back shared network configured options;
+else (no)
+endif
+
+while (for each query client class)
+ :get client class definition from current configuration;
+ if (found) then (no)
+    if (built-in client class) then (yes)
+    else (no)
+      :log debug "class unconfigured";
+    endif
+  else (yes)
+    :push back client class definition configured options;
+  endif
+endwhile
+
+:push back global configured options;
+:return;
+stop
+
+@enduml