summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-01-07 23:30:14 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2025-01-07 23:30:14 +0000
commitd7cad8ea121162dd54722f2c4db72c458dfcf02d (patch)
treed63926fbce069550b8ce7ad789901ae24b3e92b1 /interface-definitions
parentbb4427bfb4a8c03784dd6f097cbe521f561edaf4 (diff)
downloadvyos-1x-d7cad8ea121162dd54722f2c4db72c458dfcf02d.tar.gz
vyos-1x-d7cad8ea121162dd54722f2c4db72c458dfcf02d.zip
Add XML CLI for conf and op-mode
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/include/kernel-interface-tap.xml.i15
-rw-r--r--interface-definitions/include/kernel-interface-tun.xml.i15
-rw-r--r--interface-definitions/include/unformat_log2_page_size.xml.i29
-rw-r--r--interface-definitions/include/unformat_memory_size.xml.i22
-rw-r--r--interface-definitions/include/version/vpp-version.xml.i3
-rw-r--r--interface-definitions/include/vpp/iface_rx_mode.xml.i25
-rw-r--r--interface-definitions/include/vpp/vif.xml.i21
-rw-r--r--interface-definitions/include/vpp_host_resources.xml.i48
-rw-r--r--interface-definitions/vpp.xml.in814
-rw-r--r--interface-definitions/xml-component-version.xml.in4
10 files changed, 996 insertions, 0 deletions
diff --git a/interface-definitions/include/kernel-interface-tap.xml.i b/interface-definitions/include/kernel-interface-tap.xml.i
new file mode 100644
index 000000000..83399f1f4
--- /dev/null
+++ b/interface-definitions/include/kernel-interface-tap.xml.i
@@ -0,0 +1,15 @@
+<!-- include start from kernel-interface-tap.xml.i -->
+<leafNode name="kernel-interface">
+ <properties>
+ <help>Kernel interface name</help>
+ <valueHelp>
+ <format>vpptapN</format>
+ <description>Kernel interface name</description>
+ </valueHelp>
+ <constraint>
+ <regex>vpptap\d+</regex>
+ </constraint>
+ <constraintErrorMessage>Kernel interface must start with vpptapN</constraintErrorMessage>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/kernel-interface-tun.xml.i b/interface-definitions/include/kernel-interface-tun.xml.i
new file mode 100644
index 000000000..3cbd5ab30
--- /dev/null
+++ b/interface-definitions/include/kernel-interface-tun.xml.i
@@ -0,0 +1,15 @@
+<!-- include start from kernel-interface-tun.xml.i -->
+<leafNode name="kernel-interface">
+ <properties>
+ <help>Kernel interface name</help>
+ <valueHelp>
+ <format>vpptunN</format>
+ <description>Kernel interface name</description>
+ </valueHelp>
+ <constraint>
+ <regex>vpptun\d+</regex>
+ </constraint>
+ <constraintErrorMessage>Kernel interface must start with vpptunN</constraintErrorMessage>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/unformat_log2_page_size.xml.i b/interface-definitions/include/unformat_log2_page_size.xml.i
new file mode 100644
index 000000000..240fd5bb8
--- /dev/null
+++ b/interface-definitions/include/unformat_log2_page_size.xml.i
@@ -0,0 +1,29 @@
+<!-- include start from unformat_log2_page_size.xml.i -->
+<completionHelp>
+ <list>default default-hugepage</list>
+</completionHelp>
+<valueHelp>
+ <format>default</format>
+ <description>Default</description>
+</valueHelp>
+<valueHelp>
+ <format>default-hugepage</format>
+ <description>Default huge-page</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;K</format>
+ <description>Kilobyte</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;M</format>
+ <description>Megabyte</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;G</format>
+ <description>Gigabyte</description>
+</valueHelp>
+<constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ <regex>(default|default-hugepage|\d+K|\d+M|\d+G)</regex>
+</constraint>
+<!-- include end -->
diff --git a/interface-definitions/include/unformat_memory_size.xml.i b/interface-definitions/include/unformat_memory_size.xml.i
new file mode 100644
index 000000000..bb8f4ae67
--- /dev/null
+++ b/interface-definitions/include/unformat_memory_size.xml.i
@@ -0,0 +1,22 @@
+<!-- include start from unformat_memory_size.xml.i -->
+<valueHelp>
+ <format>&lt;number&gt;</format>
+ <description>byte</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;K</format>
+ <description>Kilobyte</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;M</format>
+ <description>Megabyte</description>
+</valueHelp>
+<valueHelp>
+ <format>&lt;number&gt;G</format>
+ <description>Gigabyte</description>
+</valueHelp>
+<constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ <regex>(\d+|\d+K|\d+M|\d+G)</regex>
+</constraint>
+<!-- include end -->
diff --git a/interface-definitions/include/version/vpp-version.xml.i b/interface-definitions/include/version/vpp-version.xml.i
new file mode 100644
index 000000000..96a69c92f
--- /dev/null
+++ b/interface-definitions/include/version/vpp-version.xml.i
@@ -0,0 +1,3 @@
+<!-- include start from include/version/vpp-version.xml.i -->
+<syntaxVersion component='vpp' version='1'></syntaxVersion>
+<!-- include end --> \ No newline at end of file
diff --git a/interface-definitions/include/vpp/iface_rx_mode.xml.i b/interface-definitions/include/vpp/iface_rx_mode.xml.i
new file mode 100644
index 000000000..374654b08
--- /dev/null
+++ b/interface-definitions/include/vpp/iface_rx_mode.xml.i
@@ -0,0 +1,25 @@
+<!-- include start from vpp/iface_rx_mode.xml.i -->
+<leafNode name="rx-mode">
+ <properties>
+ <help>Receive packet processing mode</help>
+ <completionHelp>
+ <list>polling interrupt adaptive</list>
+ </completionHelp>
+ <valueHelp>
+ <format>polling</format>
+ <description>Constantly check for new data</description>
+ </valueHelp>
+ <valueHelp>
+ <format>interrupt</format>
+ <description>Interrupt mode</description>
+ </valueHelp>
+ <valueHelp>
+ <format>adaptive</format>
+ <description>Adaptive mode</description>
+ </valueHelp>
+ <constraint>
+ <regex>(polling|interrupt|adaptive)</regex>
+ </constraint>
+ </properties>
+</leafNode>
+<!-- include end -->
diff --git a/interface-definitions/include/vpp/vif.xml.i b/interface-definitions/include/vpp/vif.xml.i
new file mode 100644
index 000000000..8f0e9772f
--- /dev/null
+++ b/interface-definitions/include/vpp/vif.xml.i
@@ -0,0 +1,21 @@
+<!-- include start from vpp/vif.xml.i -->
+<tagNode name="vif">
+ <properties>
+ <help>Virtual Local Area Network (VLAN) ID</help>
+ <valueHelp>
+ <format>u32:0-4094</format>
+ <description>Virtual Local Area Network (VLAN) ID</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4094"/>
+ </constraint>
+ <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ #include <include/interface/address-ipv4-ipv6-dhcp.xml.i>
+ #include <include/interface/disable.xml.i>
+ #include <include/interface/mtu-68-16000.xml.i>
+ </children>
+</tagNode>
+<!-- include end -->
diff --git a/interface-definitions/include/vpp_host_resources.xml.i b/interface-definitions/include/vpp_host_resources.xml.i
new file mode 100644
index 000000000..7f988ce44
--- /dev/null
+++ b/interface-definitions/include/vpp_host_resources.xml.i
@@ -0,0 +1,48 @@
+<!-- include start from vpp_host_resources.xml.i -->
+<node name="host-resources">
+ <properties>
+ <help>Host resources control</help>
+ </properties>
+ <children>
+ <leafNode name="nr-hugepages">
+ <properties>
+ <help>Number of pre-allocated huge pages of the default size</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Pages count</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>1024</defaultValue>
+ </leafNode>
+ <leafNode name="max-map-count">
+ <properties>
+ <help>Maximum number of memory map areas a process may have</help>
+ <valueHelp>
+ <format>u32:0-65535</format>
+ <description>Areas count</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-65535"/>
+ </constraint>
+ </properties>
+ <defaultValue>3096</defaultValue>
+ </leafNode>
+ <leafNode name="shmmax">
+ <properties>
+ <help>Maximum shared memory segment size that can be created</help>
+ <valueHelp>
+ <format>u32:0-18446744073709551612</format>
+ <description>Size in bytes</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-18446744073709551612"/>
+ </constraint>
+ </properties>
+ <defaultValue>2147483648</defaultValue>
+ </leafNode>
+ </children>
+</node>
+<!-- include end -->
diff --git a/interface-definitions/vpp.xml.in b/interface-definitions/vpp.xml.in
new file mode 100644
index 000000000..329d313be
--- /dev/null
+++ b/interface-definitions/vpp.xml.in
@@ -0,0 +1,814 @@
+<?xml version="1.0"?>
+<interfaceDefinition>
+ <node name="vpp" owner="${vyos_conf_scripts_dir}/vpp.py">
+ <properties>
+ <help>Accelerated data-plane</help>
+ <priority>295</priority>
+ </properties>
+ <children>
+ <node name='interfaces'>
+ <properties>
+ <help>Network interfaces</help>
+ <priority>300</priority>
+ </properties>
+ <children>
+ <tagNode name="bonding" owner="${vyos_conf_scripts_dir}/vpp_interfaces_bonding.py">
+ <properties>
+ <priority>300</priority>
+ <help>Bonding Interface/Link Aggregation</help>
+ <constraint>
+ <regex>bond[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>Bonding interface must be named bondN</constraintErrorMessage>
+ <valueHelp>
+ <format>bondN</format>
+ <description>Bonding interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <leafNode name="hash-policy">
+ <properties>
+ <help>Bonding transmit hash policy</help>
+ <completionHelp>
+ <list>layer2 layer2+3 layer3+4</list>
+ </completionHelp>
+ <valueHelp>
+ <format>layer2</format>
+ <description>use MAC addresses to generate the hash</description>
+ </valueHelp>
+ <valueHelp>
+ <format>layer2+3</format>
+ <description>combine MAC address and IP address to make hash</description>
+ </valueHelp>
+ <valueHelp>
+ <format>layer3+4</format>
+ <description>combine IP address and port to make hash</description>
+ </valueHelp>
+ <constraint>
+ <regex>(layer2\+3|layer3\+4|layer2)</regex>
+ </constraint>
+ <constraintErrorMessage>hash-policy must be layer2 layer2+3 layer3+4</constraintErrorMessage>
+ </properties>
+ <defaultValue>layer2</defaultValue>
+ </leafNode>
+ #include <include/interface/mac.xml.i>
+ #include <include/kernel-interface-tun.xml.i>
+ <leafNode name="mode">
+ <properties>
+ <help>Bonding mode</help>
+ <completionHelp>
+ <list>802.3ad active-backup broadcast round-robin xor-hash</list>
+ </completionHelp>
+ <valueHelp>
+ <format>802.3ad</format>
+ <description>IEEE 802.3ad Dynamic link aggregation</description>
+ </valueHelp>
+ <valueHelp>
+ <format>active-backup</format>
+ <description>Fault tolerant: only one slave in the bond is active</description>
+ </valueHelp>
+ <valueHelp>
+ <format>broadcast</format>
+ <description>Fault tolerant: transmits everything on all slave interfaces</description>
+ </valueHelp>
+ <valueHelp>
+ <format>round-robin</format>
+ <description>Load balance: transmit packets in sequential order</description>
+ </valueHelp>
+ <valueHelp>
+ <format>xor-hash</format>
+ <description>Distribute based on MAC address</description>
+ </valueHelp>
+ <constraint>
+ <regex>(802.3ad|active-backup|broadcast|round-robin|xor-hash)</regex>
+ </constraint>
+ <constraintErrorMessage>mode must be 802.3ad, active-backup, broadcast, round-robin, or xor</constraintErrorMessage>
+ </properties>
+ <defaultValue>802.3ad</defaultValue>
+ </leafNode>
+ <node name="member">
+ <properties>
+ <help>Bonding member interfaces</help>
+ </properties>
+ <children>
+ <leafNode name="interface">
+ <properties>
+ <help>Member interface name</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces --bondable</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ <tagNode name="bridge" owner="${vyos_conf_scripts_dir}/vpp_interfaces_bridge.py">
+ <properties>
+ <priority>307</priority>
+ <help>Bridge domain</help>
+ <constraint>
+ <!-- Bridge domain 0 is reserved to vpp default -->
+ <regex>br(?!0$)[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>Bridge domain must be named brN and br0 is reserved</constraintErrorMessage>
+ <valueHelp>
+ <format>brN</format>
+ <description>Bridge interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <node name="member">
+ <properties>
+ <help>Bridge member interfaces</help>
+ </properties>
+ <children>
+ <leafNode name="interface">
+ <properties>
+ <help>Member interface name</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces --bridgeable</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ <tagNode name="geneve" owner="${vyos_conf_scripts_dir}/vpp_interfaces_geneve.py">
+ <properties>
+ <priority>305</priority>
+ <help>Generic Network Virtualization Encapsulation (GENEVE) Interface</help>
+ <constraint>
+ <regex>geneve[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>GENEVE interface must be named geneveN</constraintErrorMessage>
+ <valueHelp>
+ <format>geneveN</format>
+ <description>GENEVE interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/source-address-ipv4-ipv6.xml.i>
+ #include <include/interface/tunnel-remote.xml.i>
+ #include <include/vni.xml.i>
+ #include <include/kernel-interface-tun.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="gre" owner="${vyos_conf_scripts_dir}/vpp_interfaces_gre.py">
+ <properties>
+ <priority>305</priority>
+ <help>Generic Network Encapsulation (GRE) Interface</help>
+ <constraint>
+ <regex>gre[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>GRE interface must be named greN</constraintErrorMessage>
+ <valueHelp>
+ <format>greN</format>
+ <description>GRE interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/source-address-ipv4-ipv6.xml.i>
+ #include <include/interface/tunnel-remote.xml.i>
+ #include <include/kernel-interface-tun.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="ipip" owner="${vyos_conf_scripts_dir}/vpp_interfaces_ipip.py">
+ <properties>
+ <priority>305</priority>
+ <help>IP encapsulation tunnel interface</help>
+ <constraint>
+ <regex>ipip[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>IPIP tunnel interface must be named ipipN</constraintErrorMessage>
+ <valueHelp>
+ <format>ipipN</format>
+ <description>IPIP tunnel interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/source-address-ipv4-ipv6.xml.i>
+ #include <include/interface/tunnel-remote.xml.i>
+ #include <include/kernel-interface-tun.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="loopback" owner="${vyos_conf_scripts_dir}/vpp_interfaces_loopback.py">
+ <properties>
+ <priority>305</priority>
+ <help>Loopback Interface</help>
+ <constraint>
+ <regex>lo[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>Loopback interface must be named loN</constraintErrorMessage>
+ <valueHelp>
+ <format>loN</format>
+ <description>Loopback interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/kernel-interface-tun.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="vxlan" owner="${vyos_conf_scripts_dir}/vpp_interfaces_vxlan.py">
+ <properties>
+ <priority>305</priority>
+ <help>Virtual Extensible LAN (VXLAN) Interface</help>
+ <constraint>
+ <regex>vxlan[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>VXLAN interface must be named vxlanN</constraintErrorMessage>
+ <valueHelp>
+ <format>vxlanN</format>
+ <description>VXLAN interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/source-address-ipv4-ipv6.xml.i>
+ #include <include/interface/tunnel-remote.xml.i>
+ #include <include/vni.xml.i>
+ #include <include/kernel-interface-tap.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="xconnect" owner="${vyos_conf_scripts_dir}/vpp_interfaces_xconnect.py">
+ <properties>
+ <help>Layer 2 cross connect</help>
+ <priority>305</priority>
+ <constraint>
+ <regex>xcon[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>Cross connect must be named xconN</constraintErrorMessage>
+ <valueHelp>
+ <format>xconN</format>
+ <description>Cross connect interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <node name="member">
+ <properties>
+ <help>Cross connect pair mamber interfaces</help>
+ </properties>
+ <children>
+ <leafNode name="interface">
+ <properties>
+ <help>Member interface name</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces --bridgeable</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ <node name="settings">
+ <properties>
+ <help>VPP settings</help>
+ </properties>
+ <children>
+ <node name="buffers">
+ <properties>
+ <help>Buffer settings</help>
+ </properties>
+ <children>
+ <leafNode name="buffers-per-numa">
+ <properties>
+ <help>Number of buffers per numa node</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Number of buffers</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="data-size">
+ <properties>
+ <help>Size of buffer data area</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Size of buffer data area</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="page-size">
+ <properties>
+ <help>Set the page-size for buffer allocation</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="cpu">
+ <properties>
+ <help>CPU settings</help>
+ </properties>
+ <children>
+ <leafNode name="corelist-workers">
+ <properties>
+ <help>List of cores worker threads</help>
+ <valueHelp>
+ <format>&lt;id&gt;</format>
+ <description>CPU core id</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;idN&gt;-&lt;idM&gt;</format>
+ <description>CPU core id range (use '-' as delimiter)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--allow-range --range 0-512"/>
+ </constraint>
+ <constraintErrorMessage>not a valid CPU core value or range</constraintErrorMessage>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="main-core">
+ <properties>
+ <help>Main core</help>
+ <valueHelp>
+ <format>u32:0-512</format>
+ <description>Assign main thread to specific core</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-512"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="skip-cores">
+ <properties>
+ <help>Skip cores</help>
+ <valueHelp>
+ <format>u32:0-512</format>
+ <description>Skip cores</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-512"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="workers">
+ <properties>
+ <help>Create worker threads</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Worker threads</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-512"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ #include <include/vpp_host_resources.xml.i>
+ <tagNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <valueHelp>
+ <format>ethN</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <constraint>
+ <regex>((eth|lan)[0-9]+|(eno|ens|enp|enx).+)</regex>
+ </constraint>
+ <constraintErrorMessage>Invalid interface name</constraintErrorMessage>
+ </properties>
+ <children>
+ <leafNode name="driver">
+ <properties>
+ <help>Driver mode</help>
+ <completionHelp>
+ <list>dpdk xdp</list>
+ </completionHelp>
+ <valueHelp>
+ <format>dpdk</format>
+ <description>Data Plane Development Kit (DPDK)</description>
+ </valueHelp>
+ <valueHelp>
+ <format>xdp</format>
+ <description>eXpress Data Path (XDP)</description>
+ </valueHelp>
+ <constraint>
+ <regex>(dpdk|xdp)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ #include <include/vpp/iface_rx_mode.xml.i>
+ <node name="dpdk-options">
+ <properties>
+ <help>DPDK settings</help>
+ </properties>
+ <children>
+ <leafNode name="num-rx-desc">
+ <properties>
+ <help>Receive ring descriptors</help>
+ <valueHelp>
+ <format>u32:256-8192</format>
+ <description>Number of descriptors in receive ring</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 256-8192"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="num-tx-desc">
+ <properties>
+ <help>Tranceive ring descriptors</help>
+ <valueHelp>
+ <format>u32:256-8192</format>
+ <description>Number of descriptors in tranceive ring</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 256-8192"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="num-rx-queues">
+ <properties>
+ <help>Number of receive queues</help>
+ <valueHelp>
+ <format>u32:1-8192</format>
+ <description>Number of receive queues</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-8192"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="num-tx-queues">
+ <properties>
+ <help>Number of tranceive queues</help>
+ <valueHelp>
+ <format>u32:1-8192</format>
+ <description>Number of tranceive queues</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-8192"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="promisc">
+ <properties>
+ <help>Enable promisc mode on a vpp interface</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="xdp-options">
+ <properties>
+ <help>XDP settings</help>
+ </properties>
+ <children>
+ <leafNode name="no-syscall-lock">
+ <properties>
+ <help>Unlock multithreading in interrupt and adaptive modes</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="num-rx-queues">
+ <properties>
+ <help>Number of receive queues</help>
+ <valueHelp>
+ <format>u32:1-65535</format>
+ <description>Number of receive queues to connect to</description>
+ </valueHelp>
+ <valueHelp>
+ <format>all</format>
+ <description>All</description>
+ </valueHelp>
+ <constraint>
+ <regex>(all)</regex>
+ <validator name="numeric" argument="--range 1-65535"/>
+ </constraint>
+ </properties>
+ <defaultValue>all</defaultValue>
+ </leafNode>
+ <leafNode name="promisc">
+ <properties>
+ <help>Enable promisc mode on a real interface</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="rx-queue-size">
+ <properties>
+ <help>Receive queue size</help>
+ <valueHelp>
+ <format>u32:0-65535</format>
+ <description>Size of receive queue</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-65535"/>
+ </constraint>
+ </properties>
+ <defaultValue>0</defaultValue>
+ </leafNode>
+ <leafNode name="tx-queue-size">
+ <properties>
+ <help>Tranceive queue size</help>
+ <valueHelp>
+ <format>u32:0-65535</format>
+ <description>Size of tranceive queue</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-65535"/>
+ </constraint>
+ </properties>
+ <defaultValue>0</defaultValue>
+ </leafNode>
+ <leafNode name="zero-copy">
+ <properties>
+ <help>Enable zero-copy mode</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ <node name="ip6">
+ <properties>
+ <help>IPv6 settings</help>
+ </properties>
+ <children>
+ <leafNode name="heap-size">
+ <properties>
+ <help>IPv6 heap size</help>
+ #include <include/unformat_memory_size.xml.i>
+ </properties>
+ <defaultValue>32M</defaultValue>
+ </leafNode>
+ <leafNode name="hash-buckets">
+ <properties>
+ <help>IPv6 forwarding table hash buckets</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>IPv6 forwarding table hash buckets</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>65536</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <node name="l2learn">
+ <properties>
+ <help>Level 2 MAC address learning settings</help>
+ </properties>
+ <children>
+ <leafNode name="limit">
+ <properties>
+ <help>Number of MAC addresses in the L2 FIB</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Number of concurent entries</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>4194304</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <node name="lcp">
+ <properties>
+ <help>Linux control plane setting</help>
+ </properties>
+ <children>
+ <node name="netlink">
+ <properties>
+ <help>Netlink options</help>
+ </properties>
+ <children>
+ <leafNode name="rx-buffer-size">
+ <properties>
+ <help>Receive buffer size</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Receive buffer size</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="batch-size">
+ <properties>
+ <help>Batch size</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Batch size</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="batch-delay-ms">
+ <properties>
+ <help>Batch delay</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Batch delay (in ms)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <leafNode name="route-no-paths">
+ <properties>
+ <help>Route no paths</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="logging">
+ <properties>
+ <help>Loggint settings</help>
+ </properties>
+ <children>
+ <leafNode name="default-log-level">
+ <properties>
+ <help>default-log-level</help>
+ <completionHelp>
+ <list>alert crit debug disabled emerg err info notice warn</list>
+ </completionHelp>
+ <valueHelp>
+ <format>alert</format>
+ <description>Alert</description>
+ </valueHelp>
+ <valueHelp>
+ <format>crit</format>
+ <description>Critical</description>
+ </valueHelp>
+ <valueHelp>
+ <format>debug</format>
+ <description>Debug</description>
+ </valueHelp>
+ <valueHelp>
+ <format>disabled</format>
+ <description>Disabled</description>
+ </valueHelp>
+ <valueHelp>
+ <format>emerg</format>
+ <description>Emergency</description>
+ </valueHelp>
+ <valueHelp>
+ <format>err</format>
+ <description>Error</description>
+ </valueHelp>
+ <valueHelp>
+ <format>info</format>
+ <description>Informational</description>
+ </valueHelp>
+ <valueHelp>
+ <format>notice</format>
+ <description>Notice</description>
+ </valueHelp>
+ <valueHelp>
+ <format>warn</format>
+ <description>Warning</description>
+ </valueHelp>
+ <constraint>
+ <regex>(alert|crit|debug|disabled|emerg|err|info|notice|warn)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="memory">
+ <properties>
+ <help>Memory settings</help>
+ </properties>
+ <children>
+ <leafNode name="main-heap-size">
+ <properties>
+ <help>Main heap size</help>
+ #include <include/unformat_memory_size.xml.i>
+ </properties>
+ </leafNode>
+ <leafNode name="main-heap-page-size">
+ <properties>
+ <help>Main heap page size</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ </leafNode>
+ <leafNode name="default-hugepage-size">
+ <properties>
+ <help>Default hugepage size</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="physmem">
+ <properties>
+ <help>Physical memory settings</help>
+ </properties>
+ <children>
+ <leafNode name="max-size">
+ <properties>
+ <help>Set memory size for protectable memory allocator (pmalloc) memory space</help>
+ #include <include/unformat_memory_size.xml.i>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="statseg">
+ <properties>
+ <help>Stats settings</help>
+ </properties>
+ <children>
+ <leafNode name="size">
+ <properties>
+ <help>Size of stats segment</help>
+ #include <include/unformat_memory_size.xml.i>
+ </properties>
+ </leafNode>
+ <leafNode name="page-size">
+ <properties>
+ <help>Stats page size</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="unix">
+ <properties>
+ <help>Unix settings</help>
+ </properties>
+ <children>
+ <leafNode name="poll-sleep-usec">
+ <properties>
+ <help>Add a fixed-sleep between main loop poll</help>
+ <valueHelp>
+ <format>u32:0-4294967295</format>
+ <description>Number of receive queues</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>0</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <tagNode name="kernel-interfaces" owner="${vyos_conf_scripts_dir}/vpp_kernel-interfaces.py">
+ <properties>
+ <help>VPP kernel interface settings</help>
+ <priority>305</priority>
+ <valueHelp>
+ <format>vpptapN</format>
+ <description>Kernel interface name</description>
+ </valueHelp>
+ <valueHelp>
+ <format>vpptunN</format>
+ <description>Kernel interface name</description>
+ </valueHelp>
+ <constraint>
+ <regex>vpp(tun|tap)\d+</regex>
+ </constraint>
+ <constraintErrorMessage>Kernel interface must start with vpp and include tun or tap N</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/interface/address-ipv4-ipv6.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/interface/disable.xml.i>
+ #include <include/interface/mtu-68-16000.xml.i>
+ #include <include/vpp/vif.xml.i>
+ #include <include/vpp/iface_rx_mode.xml.i>
+ </children>
+ </tagNode>
+ </children>
+</node>
+</interfaceDefinition>
diff --git a/interface-definitions/xml-component-version.xml.in b/interface-definitions/xml-component-version.xml.in
new file mode 100644
index 000000000..ae137d435
--- /dev/null
+++ b/interface-definitions/xml-component-version.xml.in
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<interfaceDefinition>
+ #include <include/version/vpp-version.xml.i>
+</interfaceDefinition>