summaryrefslogtreecommitdiff
path: root/interface-definitions/vpp.xml.in
diff options
context:
space:
mode:
Diffstat (limited to 'interface-definitions/vpp.xml.in')
-rw-r--r--interface-definitions/vpp.xml.in1255
1 files changed, 1255 insertions, 0 deletions
diff --git a/interface-definitions/vpp.xml.in b/interface-definitions/vpp.xml.in
new file mode 100644
index 000000000..bf5e56db8
--- /dev/null
+++ b/interface-definitions/vpp.xml.in
@@ -0,0 +1,1255 @@
+<?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="ipfix" owner="${vyos_conf_scripts_dir}/vpp_ipfix.py">
+ <properties>
+ <help>IP Flow Information Export (IPFIX) configuration</help>
+ <priority>332</priority>
+ </properties>
+ <children>
+ <tagNode name="collector">
+ <properties>
+ <help>Collector IP address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 server to export IPFIX</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 server to export IPFIX</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ip-address"/>
+ </constraint>
+ </properties>
+ <children>
+ #include <include/port-number.xml.i>
+ <leafNode name="port">
+ <defaultValue>4739</defaultValue>
+ </leafNode>
+ <leafNode name="path-mtu">
+ <properties>
+ <help>Path MTU</help>
+ <valueHelp>
+ <format>u32:68-1450</format>
+ <description>Bytes</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 68-1450"/>
+ </constraint>
+ </properties>
+ <defaultValue>512</defaultValue>
+ </leafNode>
+ #include <include/source-address-ipv4-ipv6.xml.i>
+ <leafNode name="template-interval">
+ <properties>
+ <help>Interval in seconds</help>
+ <valueHelp>
+ <format>u32:1-300</format>
+ <description>Seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-300"/>
+ </constraint>
+ </properties>
+ <defaultValue>20</defaultValue>
+ </leafNode>
+ <leafNode name="udp-checksum">
+ <properties>
+ <help>Allow UDP checksum</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <tagNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <leafNode name="direction">
+ <properties>
+ <help>Flow direction</help>
+ <completionHelp>
+ <list>rx tx both</list>
+ </completionHelp>
+ <valueHelp>
+ <format>rx</format>
+ <description>Rx direction</description>
+ </valueHelp>
+ <valueHelp>
+ <format>tx</format>
+ <description>Tx direction</description>
+ </valueHelp>
+ <valueHelp>
+ <format>both</format>
+ <description>Rx and Tx direction</description>
+ </valueHelp>
+ <constraint>
+ <regex>(rx|tx|both)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>both</defaultValue>
+ </leafNode>
+ <leafNode name="flow-variant">
+ <properties>
+ <help>Flow variant</help>
+ <completionHelp>
+ <list>l2 ipv4 ipv6</list>
+ </completionHelp>
+ <valueHelp>
+ <format>l2</format>
+ <description>L2</description>
+ </valueHelp>
+ <valueHelp>
+ <format>_ipv4</format>
+ <description>IPv4</description>
+ </valueHelp>
+ <valueHelp>
+ <format>_ipv6</format>
+ <description>IPv6</description>
+ </valueHelp>
+ <constraint>
+ <regex>(l2|ipv4|ipv6)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>ipv4</defaultValue>
+ </leafNode>
+ </children>
+ </tagNode>
+ <leafNode name="active-timeout">
+ <properties>
+ <help>Flow activity timeout</help>
+ <valueHelp>
+ <format>u32:0-2147483647</format>
+ <description>Active flow export timeout (seconds)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-2147483647"/>
+ </constraint>
+ </properties>
+ <defaultValue>15</defaultValue>
+ </leafNode>
+ <leafNode name="inactive-timeout">
+ <properties>
+ <help>Flow inactivity timeout</help>
+ <valueHelp>
+ <format>u32:0-2147483647</format>
+ <description>Inactive flow export timeout (seconds)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-2147483647"/>
+ </constraint>
+ </properties>
+ <defaultValue>120</defaultValue>
+ </leafNode>
+ <leafNode name="flowprobe-record">
+ <properties>
+ <help>Flow record layers</help>
+ <completionHelp>
+ <list>l2 l3 l4</list>
+ </completionHelp>
+ <valueHelp>
+ <format>l2</format>
+ <description>Include level 2 information</description>
+ </valueHelp>
+ <valueHelp>
+ <format>l3</format>
+ <description>Include level 3 information</description>
+ </valueHelp>
+ <valueHelp>
+ <format>l4</format>
+ <description>Include level 4 information</description>
+ </valueHelp>
+ <constraint>
+ <regex>(l2|l3|l4)</regex>
+ </constraint>
+ <multi/>
+ </properties>
+ <defaultValue>l3</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <node name="settings">
+ <properties>
+ <help>VPP settings</help>
+ </properties>
+ <children>
+ <node name="resource-allocation">
+ <properties>
+ <help>Resource allocation settings</help>
+ </properties>
+ <children>
+ <leafNode name="cpu-cores">
+ <properties>
+ <help>Create worker threads (including main-core)</help>
+ <valueHelp>
+ <format>u32:1-512</format>
+ <description>Worker threads</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-512"/>
+ </constraint>
+ </properties>
+ <defaultValue>1</defaultValue>
+ </leafNode>
+ <node name="buffers">
+ <properties>
+ <help>Buffer settings</help>
+ </properties>
+ <children>
+ <leafNode name="buffers-per-numa">
+ <properties>
+ <help>Number of buffers per numa node</help>
+ <completionHelp>
+ <list>auto</list>
+ </completionHelp>
+ <valueHelp>
+ <format>u32:16384-4294967295</format>
+ <description>Number of buffers</description>
+ </valueHelp>
+ <valueHelp>
+ <format>auto</format>
+ <description>Auto calculate number of buffers per numa node</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 16384-4294967295"/>
+ <regex>(auto)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>auto</defaultValue>
+ </leafNode>
+ <leafNode name="data-size">
+ <properties>
+ <help>Size of buffer data area</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Size of buffer data area</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>2048</defaultValue>
+ </leafNode>
+ <leafNode name="page-size">
+ <properties>
+ <help>Set the page-size for buffer allocation</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ <defaultValue>2M</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <node name="ipv6">
+ <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>
+ <leafNode name="mac-limit">
+ <properties>
+ <help>Number of MAC addresses in the L2 FIB</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Number of MAC addresses in the L2 FIB</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>4194304</defaultValue>
+ </leafNode>
+ <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>
+ <defaultValue>3G</defaultValue>
+ </leafNode>
+ <leafNode name="main-heap-page-size">
+ <properties>
+ <help>Main heap page size</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ <defaultValue>2M</defaultValue>
+ </leafNode>
+ <leafNode name="physmem-max-size">
+ <properties>
+ <help>Memory size for protectable memory allocator (pmalloc) memory space</help>
+ #include <include/unformat_memory_size.xml.i>
+ </properties>
+ </leafNode>
+ <node name="stats">
+ <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>
+ <defaultValue>128M</defaultValue>
+ </leafNode>
+ <leafNode name="page-size">
+ <properties>
+ <help>Stats page size</help>
+ #include <include/unformat_log2_page_size.xml.i>
+ </properties>
+ <defaultValue>2M</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+ </node>
+ <tagNode name="interface">
+ <properties>
+ <help>Interface</help>
+ <valueHelp>
+ <format>ethN</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces --type ethernet</script>
+ </completionHelp>
+ <constraint>
+ <validator name="ethernet-interface"/>
+ </constraint>
+ <constraintErrorMessage>Invalid interface name</constraintErrorMessage>
+ </properties>
+ <children>
+ <leafNode name="num-rx-desc">
+ <properties>
+ <help>Receive ring descriptors</help>
+ <valueHelp>
+ <format>u32:256-16384</format>
+ <description>Number of descriptors in receive ring</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 256-16384"/>
+ </constraint>
+ </properties>
+ <defaultValue>1024</defaultValue>
+ </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>
+ <defaultValue>1024</defaultValue>
+ </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>
+ </children>
+ </tagNode>
+ <leafNode name="ipsec-acceleration">
+ <properties>
+ <help>Enable IPsec acceleration</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="ignore-kernel-routes">
+ <properties>
+ <help>Ignore kernel routes</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <node name="logging">
+ <properties>
+ <help>Logging settings</help>
+ </properties>
+ <children>
+ <leafNode name="default-level">
+ <properties>
+ <help>Default logging level</help>
+ <completionHelp>
+ <list>alert crit debug disabled emerg error 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>error</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|error|info|notice|warn)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <leafNode name="poll-sleep-usec">
+ <properties>
+ <help>Add a fixed-sleep between main loop poll</help>
+ <valueHelp>
+ <format>u32:0-500000</format>
+ <description>Sleep interval in microseconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-500000"/>
+ </constraint>
+ </properties>
+ <defaultValue>0</defaultValue>
+ </leafNode>
+ #include <include/vpp/iface_rx_mode.xml.i>
+ <leafNode name="allow-unsupported-nics">
+ <properties>
+ <help>Allow the attachment of unsupported NICs to VPP. This operation voids official support for the system</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="sflow" owner="${vyos_conf_scripts_dir}/vpp_sflow.py">
+ <properties>
+ <help>VPP data-plane sFlow</help>
+ <priority>322</priority>
+ </properties>
+ <children>
+ <leafNode name="interface">
+ <properties>
+ <help>Interface name</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <valueHelp>
+ <format>txt</format>
+ <description>Interface name</description>
+ </valueHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="header-bytes">
+ <properties>
+ <help>sFlow maximum packet-header length</help>
+ <completionHelp>
+ <list>64 96 128 160 192 224 256</list>
+ </completionHelp>
+ <valueHelp>
+ <format>64</format>
+ <description>64 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>96</format>
+ <description>96 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>128</format>
+ <description>128 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>160</format>
+ <description>160 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>192</format>
+ <description>192 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>224</format>
+ <description>224 bytes</description>
+ </valueHelp>
+ <valueHelp>
+ <format>256</format>
+ <description>256 bytes</description>
+ </valueHelp>
+ <constraint>
+ <regex>(64|96|128|160|192|224|256)</regex>
+ </constraint>
+ </properties>
+ <defaultValue>128</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <node name="nat">
+ <properties>
+ <help>Network Address Translation (NAT) settings</help>
+ </properties>
+ <children>
+ <node name="cgnat" owner="${vyos_conf_scripts_dir}/vpp_nat_cgnat.py">
+ <properties>
+ <help>Carrier-grade NAT (CGNAT)</help>
+ <priority>331</priority>
+ </properties>
+ <children>
+ <node name="interface">
+ <properties>
+ <help>CGNAT interface setting</help>
+ </properties>
+ <children>
+ <leafNode name="inside">
+ <properties>
+ <help>CGNAT inside interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="outside">
+ <properties>
+ <help>CGNAT outside interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number for CGNAT</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of rule</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <leafNode name="inside-prefix">
+ <properties>
+ <help>Inside IPv4 prefix</help>
+ <valueHelp>
+ <format>ipv4net</format>
+ <description>IPv4 prefix</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="outside-prefix">
+ <properties>
+ <help>Outside IPv4 prefix</help>
+ <valueHelp>
+ <format>ipv4net</format>
+ <description>IPv4 prefix</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ #include <include/generic-description.xml.i>
+ </children>
+ </tagNode>
+ <node name="exclude">
+ <properties>
+ <help>Exclude packets matching these rules from CGNAT</help>
+ </properties>
+ <children>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of rule</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <leafNode name="local-address">
+ <properties>
+ <help>IP address of the internal (local) device</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="local-port">
+ <properties>
+ <help>Port number used by connection on internal device</help>
+ <valueHelp>
+ <format>u32:1-65535</format>
+ <description>Numeric IP port</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-65535"/>
+ </constraint>
+ <constraintErrorMessage>Port number must be in range 1 to 65535</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/vpp/nat_protocol.xml.i>
+ #include <include/generic-description.xml.i>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ <node name="timeout">
+ <properties>
+ <help>Timeouts for CGNAT sessions</help>
+ </properties>
+ <children>
+ <leafNode name="icmp">
+ <properties>
+ <help>ICMP timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 60)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>60</defaultValue>
+ </leafNode>
+ <leafNode name="tcp-established">
+ <properties>
+ <help>TCP established timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>TCP established timeout in seconds (default: 7440)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>7440</defaultValue>
+ </leafNode>
+ <leafNode name="tcp-transitory">
+ <properties>
+ <help>TCP transitory timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 240)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>240</defaultValue>
+ </leafNode>
+ <leafNode name="udp">
+ <properties>
+ <help>UDP timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 300)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>300</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="nat44" owner="${vyos_conf_scripts_dir}/vpp_nat_nat44.py">
+ <properties>
+ <help>NAT44</help>
+ <priority>330</priority>
+ </properties>
+ <children>
+ <node name="timeout">
+ <properties>
+ <help>NAT44 session timeouts</help>
+ </properties>
+ <children>
+ <leafNode name="icmp">
+ <properties>
+ <help>ICMP timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 60)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>60</defaultValue>
+ </leafNode>
+ <leafNode name="tcp-established">
+ <properties>
+ <help>TCP established timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>TCP established timeout in seconds (default: 7440)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>7440</defaultValue>
+ </leafNode>
+ <leafNode name="tcp-transitory">
+ <properties>
+ <help>TCP transitory timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 240)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>240</defaultValue>
+ </leafNode>
+ <leafNode name="udp">
+ <properties>
+ <help>UDP timeout</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Timeout in seconds (default: 300)</description>
+ </valueHelp>
+ </properties>
+ <defaultValue>300</defaultValue>
+ </leafNode>
+ </children>
+ </node>
+ <leafNode name="session-limit">
+ <properties>
+ <help>Maximum number of sessions per thread</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of sessions</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>Number of sessions must be between 1 and 4294967295</constraintErrorMessage>
+ </properties>
+ <defaultValue>64512</defaultValue>
+ </leafNode>
+ <node name="interface">
+ <properties>
+ <help>NAT interface setting</help>
+ </properties>
+ <children>
+ <leafNode name="inside">
+ <properties>
+ <help>NAT inside interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="outside">
+ <properties>
+ <help>NAT outside interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ <multi/>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="address-pool">
+ <properties>
+ <help>NAT address pool</help>
+ </properties>
+ <children>
+ <node name="translation">
+ <properties>
+ <help>NAT translation pool</help>
+ </properties>
+ <children>
+ #include <include/vpp/nat_address_range.xml.i>
+ #include <include/vpp/nat_interface.xml.i>
+ </children>
+ </node>
+ <node name="twice-nat">
+ <properties>
+ <help>NAT twice-nat pool</help>
+ </properties>
+ <children>
+ #include <include/vpp/nat_address_range.xml.i>
+ #include <include/vpp/nat_interface.xml.i>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="static">
+ <properties>
+ <help>Static NAT rules</help>
+ </properties>
+ <children>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number for NAT</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of NAT rule</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <node name="external">
+ <properties>
+ <help>NAT external parameters</help>
+ </properties>
+ <children>
+ <leafNode name="address">
+ <properties>
+ <help>IP address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ #include <include/port-number.xml.i>
+ </children>
+ </node>
+ <node name="local">
+ <properties>
+ <help>NAT local parameters</help>
+ </properties>
+ <children>
+ <leafNode name="address">
+ <properties>
+ <help>IP address</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ #include <include/port-number.xml.i>
+ </children>
+ </node>
+ <node name="options">
+ <properties>
+ <help>NAT static mapping options</help>
+ </properties>
+ <children>
+ <leafNode name="twice-nat">
+ <properties>
+ <help>Rewrite source IP addresses on packets sent from outside to inside</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="self-twice-nat">
+ <properties>
+ <help>Rewrite source IP addresses on packets sent only from a local address to an external address</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="out-to-in-only">
+ <properties>
+ <help>Only apply rule for traffic from outside to inside interfaces</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="twice-nat-address">
+ <properties>
+ <help>Force use of specific IP address from twice-nat address pool</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ #include <include/vpp/nat_protocol.xml.i>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ <node name="exclude">
+ <properties>
+ <help>Exclude packets matching these rules from NAT</help>
+ </properties>
+ <children>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of rule</description>
+ </valueHelp>
+ </properties>
+ <children>
+ <leafNode name="local-address">
+ <properties>
+ <help>IP address of the internal (local) device</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="local-port">
+ <properties>
+ <help>Port number used by connection on internal device</help>
+ <valueHelp>
+ <format>u32:1-65535</format>
+ <description>Numeric IP port</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-65535"/>
+ </constraint>
+ <constraintErrorMessage>Port number must be in range 1 to 65535</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/vpp/nat_protocol.xml.i>
+ <leafNode name="external-interface">
+ <properties>
+ <help>External interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ </properties>
+ </leafNode>
+ #include <include/generic-description.xml.i>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="acl" owner="${vyos_conf_scripts_dir}/vpp_acl.py">
+ <properties>
+ <help>Access Control Lists (ACLs)</help>
+ <priority>332</priority>
+ </properties>
+ <children>
+ <node name="ip">
+ <properties>
+ <help>Access Control List by IPv4/IPv6</help>
+ </properties>
+ <children>
+ <tagNode name="tag-name">
+ <properties>
+ <help>ACL tag name</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>Tag name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number for Access control element (ACE)</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of ACE</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>Rule number must be between 1 and 4294967295</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <leafNode name="action">
+ <properties>
+ <help>Rule action</help>
+ <completionHelp>
+ <list>permit deny permit-reflect</list>
+ </completionHelp>
+ <valueHelp>
+ <format>permit</format>
+ <description>Permit matching traffic</description>
+ </valueHelp>
+ <valueHelp>
+ <format>deny</format>
+ <description>Deny matching traffic</description>
+ </valueHelp>
+ <valueHelp>
+ <format>permit-reflect</format>
+ <description>Permit the matching outbound traffic and allow the reverse traffic</description>
+ </valueHelp>
+ <constraint>
+ <regex>(permit|deny|permit-reflect)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ <node name="source">
+ <properties>
+ <help>Source parameters</help>
+ </properties>
+ <children>
+ #include <include/vpp/acl_prefix.xml.i>
+ #include <include/vpp/acl_port_range.xml.i>
+ </children>
+ </node>
+ <node name="destination">
+ <properties>
+ <help>Destination parameters</help>
+ </properties>
+ <children>
+ #include <include/vpp/acl_prefix.xml.i>
+ #include <include/vpp/acl_port_range.xml.i>
+ </children>
+ </node>
+ <leafNode name="protocol">
+ <properties>
+ <help>Protocol</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_protocols.sh</script>
+ <list>all</list>
+ </completionHelp>
+ <valueHelp>
+ <format>all</format>
+ <description>All IP protocols</description>
+ </valueHelp>
+ <valueHelp>
+ <format>&lt;protocol&gt;</format>
+ <description>IP protocol name</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ip-protocol"/>
+ </constraint>
+ </properties>
+ <defaultValue>all</defaultValue>
+ </leafNode>
+ <node name="tcp-flags">
+ <properties>
+ <help>Match TCP packet flags</help>
+ </properties>
+ <children>
+ <leafNode name="is-set">
+ <properties>
+ <help>Match TCP flags that are set</help>
+ #include <include/vpp/acl_tcp_flags.xml.i>
+ </properties>
+ </leafNode>
+ <leafNode name="is-not-set">
+ <properties>
+ <help>Match TCP flags that are not set</help>
+ #include <include/vpp/acl_tcp_flags.xml.i>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ </children>
+ </tagNode>
+ <tagNode name="interface">
+ <properties>
+ <help>Apply an ACL to an interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ </properties>
+ <children>
+ <node name="input">
+ <properties>
+ <help>Input direction</help>
+ </properties>
+ <children>
+ #include <include/vpp/acl_common_interface_ip_rule.xml.i>
+ </children>
+ </node>
+ <node name="output">
+ <properties>
+ <help>Output direction</help>
+ </properties>
+ <children>
+ #include <include/vpp/acl_common_interface_ip_rule.xml.i>
+ </children>
+ </node>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ <node name="mac">
+ <properties>
+ <help>Access Control List by mac address</help>
+ </properties>
+ <children>
+ <tagNode name="tag-name">
+ <properties>
+ <help>ACL tag name</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>ACL name</description>
+ </valueHelp>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <tagNode name="rule">
+ <properties>
+ <help>Rule number for Access control element (ACE)</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Number of ACE</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>Rule number must be between 1 and 4294967295</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-description.xml.i>
+ <leafNode name="action">
+ <properties>
+ <help>Rule action</help>
+ <completionHelp>
+ <list>permit deny</list>
+ </completionHelp>
+ <valueHelp>
+ <format>permit</format>
+ <description>Permit matching traffic</description>
+ </valueHelp>
+ <valueHelp>
+ <format>deny</format>
+ <description>Deny matching traffic</description>
+ </valueHelp>
+ <constraint>
+ <regex>(permit|deny)</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ #include <include/vpp/acl_prefix.xml.i>
+ <leafNode name="prefix">
+ <properties>
+ <help>Source IP prefix</help>
+ </properties>
+ </leafNode>
+ <leafNode name="mac-address">
+ <properties>
+ <help>Source MAC address</help>
+ <valueHelp>
+ <format>macaddr</format>
+ <description>MAC address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="mac-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="mac-mask">
+ <properties>
+ <help>Source MAC mask (default ff:ff:ff:ff:ff:ff)</help>
+ <valueHelp>
+ <format>macaddr</format>
+ <description>MAC mask</description>
+ </valueHelp>
+ <constraint>
+ <validator name="mac-address"/>
+ </constraint>
+ </properties>
+ <defaultValue>ff:ff:ff:ff:ff:ff</defaultValue>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+ </tagNode>
+ <tagNode name="interface">
+ <properties>
+ <help>Apply an ACL to an input interface</help>
+ <completionHelp>
+ <script>${vyos_completion_dir}/list_interfaces</script>
+ </completionHelp>
+ </properties>
+ <children>
+ <leafNode name="tag-name">
+ <properties>
+ <help>ACL tag name</help>
+ <completionHelp>
+ <path>vpp acl mac tag-name</path>
+ </completionHelp>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ </children>
+</node>
+</interfaceDefinition>