diff --git a/interface-definitions/include/interface-enable-proxy-arp.xml.i b/interface-definitions/include/interface-enable-proxy-arp.xml.i new file mode 100644 index 000000000..14ab08875 --- /dev/null +++ b/interface-definitions/include/interface-enable-proxy-arp.xml.i @@ -0,0 +1,6 @@ +<leafNode name="enable-proxy-arp"> + <properties> + <help>Enable proxy-arp on this interface</help> + <valueless/> + </properties> +</leafNode> diff --git a/interface-definitions/include/vif.xml.i b/interface-definitions/include/vif.xml.i index 4adae6016..7c8a29a93 100644 --- a/interface-definitions/include/vif.xml.i +++ b/interface-definitions/include/vif.xml.i @@ -1,63 +1,52 @@ <tagNode name="vif"> <properties> <help>Virtual Local Area Network (VLAN) ID</help> <valueHelp> <format>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/address-ipv4-ipv6-dhcp.xml.i> #include <include/interface-description.xml.i> #include <include/dhcp-dhcpv6-options.xml.i> #include <include/interface-disable-link-detect.xml.i> #include <include/interface-disable.xml.i> <leafNode name="egress-qos"> <properties> <help>VLAN egress QoS</help> <completionHelp> <script>echo Format for qos mapping, e.g.: '0:1 1:6 7:6'</script> </completionHelp> <constraint> <regex>[:0-7 ]+$</regex> </constraint> <constraintErrorMessage>QoS mapping should be in the format of '0:7 2:3' with numbers 0-9</constraintErrorMessage> </properties> </leafNode> <leafNode name="ingress-qos"> <properties> <help>VLAN ingress QoS</help> <completionHelp> <script>echo Format for qos mapping '0:1 1:6 7:6'</script> </completionHelp> <constraint> <regex>[:0-7 ]+$</regex> </constraint> <constraintErrorMessage>QoS mapping should be in the format of '0:7 2:3' with numbers 0-9</constraintErrorMessage> </properties> </leafNode> <node name="ip"> <children> #include <include/interface-arp-cache-timeout.xml.i> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="proxy-arp-pvlan"> - <properties> - <help>Enable private VLAN proxy ARP on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-enable-proxy-arp.xml.i> </children> </node> #include <include/interface-mac.xml.i> #include <include/interface-mtu-68-9000.xml.i> </children> </tagNode> diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in index 6e4bef649..e2e20b4a3 100644 --- a/interface-definitions/interfaces-bonding.xml.in +++ b/interface-definitions/interfaces-bonding.xml.in @@ -1,169 +1,164 @@ <?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="bonding" owner="${vyos_conf_scripts_dir}/interfaces-bonding.py"> <properties> <help>Bonding interface name</help> <priority>320</priority> <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> #include <include/address-ipv4-ipv6-dhcp.xml.i> <node name="arp-monitor"> <properties> <help>ARP link monitoring parameters</help> </properties> <children> <leafNode name="interval"> <properties> <help>ARP link monitoring interval</help> <valueHelp> <format>0-4294967295</format> <description>Specifies the ARP link monitoring frequency in milliseconds</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-4294967295"/> </constraint> </properties> </leafNode> <leafNode name="target"> <properties> <help>IP address used for ARP monitoring</help> <valueHelp> <format>ipv4</format> <description>Network Time Protocol (NTP) IPv4 address</description> </valueHelp> <constraint> <validator name="ipv4-address"/> </constraint> <multi/> </properties> </leafNode> </children> </node> #include <include/interface-description.xml.i> #include <include/dhcp-dhcpv6-options.xml.i> #include <include/interface-disable-link-detect.xml.i> #include <include/interface-disable.xml.i> <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 (802.3ad, default)</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 or layer3+4</constraintErrorMessage> </properties> </leafNode> <node name="ip"> <children> #include <include/interface-arp-cache-timeout.xml.i> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-enable-proxy-arp.xml.i> <leafNode name="proxy-arp-pvlan"> <properties> <help>Enable private VLAN proxy ARP on this interface</help> <valueless/> </properties> </leafNode> </children> </node> #include <include/interface-mac.xml.i> <leafNode name="mode"> <properties> <help>Bonding mode</help> <completionHelp> <list>802.3ad active-backup broadcast round-robin transmit-load-balance adaptive-load-balance xor-hash</list> </completionHelp> <valueHelp> <format>802.3ad</format> <description>IEEE 802.3ad Dynamic link aggregation (Default)</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>transmit-load-balance</format> <description>Load balance: adapts based on transmit load and speed</description> </valueHelp> <valueHelp> <format>adaptive-load-balance</format> <description>Load balance: adapts based on transmit and receive plus ARP</description> </valueHelp> <valueHelp> <format>xor-hash</format> <description>Distribute based on MAC address</description> </valueHelp> <constraint> <regex>(802.3ad|active-backup|broadcast|round-robin|transmit-load-balance|adaptive-load-balance|xor-hash)</regex> </constraint> <constraintErrorMessage>mode must be 802.3ad, active-backup, broadcast, round-robin, transmit-load-balance, adaptive-load-balance, or xor</constraintErrorMessage> </properties> </leafNode> <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.py --bondable</script> </completionHelp> <multi/> </properties> </leafNode> </children> </node> #include <include/interface-mtu-68-9000.xml.i> <leafNode name="primary"> <properties> <help>Primary device interface</help> <completionHelp> <script>${vyos_completion_dir}/list_interfaces.py --bondable</script> </completionHelp> </properties> </leafNode> #include <include/vif-s.xml.i> #include <include/vif.xml.i> </children> </tagNode> </children> </node> </interfaceDefinition> diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in index e44661d10..2f7d62f46 100644 --- a/interface-definitions/interfaces-ethernet.xml.in +++ b/interface-definitions/interfaces-ethernet.xml.in @@ -1,283 +1,278 @@ <?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="ethernet" owner="${vyos_conf_scripts_dir}/interfaces-ethernet.py"> <properties> <help>Ethernet interface name</help> <priority>318</priority> <constraint> <regex>((eth|lan)[0-9]+|(eno|ens|enp|enx).+)$</regex> </constraint> <constraintErrorMessage>Invalid Ethernet interface name</constraintErrorMessage> <valueHelp> <format>ethN</format> <description>Ethernet interface name</description> </valueHelp> <valueHelp> <format>en[ospx]N</format> <description>Ethernet interface name</description> </valueHelp> </properties> <children> #include <include/address-ipv4-ipv6-dhcp.xml.i> #include <include/interface-description.xml.i> #include <include/dhcp-dhcpv6-options.xml.i> <leafNode name="disable-flow-control"> <properties> <help>Disable Ethernet flow control (pause frames)</help> <valueless/> </properties> </leafNode> #include <include/interface-disable-link-detect.xml.i> #include <include/interface-disable.xml.i> <leafNode name="duplex"> <properties> <help>Duplex mode</help> <completionHelp> <list>auto half full</list> </completionHelp> <valueHelp> <format>auto</format> <description>Auto negotiation (default)</description> </valueHelp> <valueHelp> <format>half</format> <description>Half duplex</description> </valueHelp> <valueHelp> <format>full</format> <description>Full duplex</description> </valueHelp> <constraint> <regex>(auto|half|full)</regex> </constraint> <constraintErrorMessage>duplex must be auto, half or full</constraintErrorMessage> </properties> </leafNode> <leafNode name="hw-id"> <properties> <help>Media Access Control (MAC) address</help> <valueHelp> <format>h:h:h:h:h:h</format> <description>Hardware (MAC) address</description> </valueHelp> <constraint> <validator name="mac-address"/> </constraint> </properties> </leafNode> <node name="ip"> <children> #include <include/interface-arp-cache-timeout.xml.i> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-enable-proxy-arp.xml.i> <leafNode name="proxy-arp-pvlan"> <properties> <help>Enable private VLAN proxy ARP on this interface</help> <valueless/> </properties> </leafNode> </children> </node> #include <include/interface-mac.xml.i> #include <include/interface-mtu-68-9000.xml.i> <node name="offload-options"> <properties> <help>Configurable offload options</help> </properties> <children> <leafNode name="generic-receive"> <properties> <help>Configure GRO (generic receive offload)</help> <completionHelp> <list>on off</list> </completionHelp> <valueHelp> <format>on</format> <description>Enable GRO (generic receive offload)</description> </valueHelp> <valueHelp> <format>off</format> <description>Disable GRO (generic receive offload)</description> </valueHelp> <constraint> <regex>(on|off)</regex> </constraint> <constraintErrorMessage>Must be either 'on' or 'off'</constraintErrorMessage> </properties> </leafNode> <leafNode name="generic-segmentation"> <properties> <help>Configure GSO (generic segmentation offload)</help> <completionHelp> <list>on off</list> </completionHelp> <valueHelp> <format>on</format> <description>Enable GSO (generic segmentation offload)</description> </valueHelp> <valueHelp> <format>off</format> <description>Disable GSO (generic segmentation offload)</description> </valueHelp> <constraint> <regex>(on|off)</regex> </constraint> <constraintErrorMessage>Must be either 'on' or 'off'</constraintErrorMessage> </properties> </leafNode> <leafNode name="scatter-gather"> <properties> <help>Configure scatter-gather option</help> <completionHelp> <list>on off</list> </completionHelp> <valueHelp> <format>on</format> <description>Enable scatter-gather</description> </valueHelp> <valueHelp> <format>off</format> <description>Disable scatter-gather</description> </valueHelp> <constraint> <regex>(on|off)</regex> </constraint> <constraintErrorMessage>Must be either 'on' or 'off'</constraintErrorMessage> </properties> </leafNode> <leafNode name="tcp-segmentation"> <properties> <help>Configure TSO (TCP segmentation offloading)</help> <completionHelp> <list>on off</list> </completionHelp> <valueHelp> <format>on</format> <description>Enable TSO (TCP segmentation offloading)</description> </valueHelp> <valueHelp> <format>off</format> <description>Disable TSO (TCP segmentation offloading)</description> </valueHelp> <constraint> <regex>(on|off)</regex> </constraint> <constraintErrorMessage>Must be either 'on' or 'off'</constraintErrorMessage> </properties> </leafNode> <leafNode name="udp-fragmentation"> <properties> <help>Configure UDP fragmentation offloading</help> <completionHelp> <list>on off</list> </completionHelp> <valueHelp> <format>on</format> <description>Enable UDP fragmentation offloading</description> </valueHelp> <valueHelp> <format>off</format> <description>Disable UDP fragmentation offloading</description> </valueHelp> <constraint> <regex>(on|off)</regex> </constraint> <constraintErrorMessage>Must be either 'on' or 'off'</constraintErrorMessage> </properties> </leafNode> </children> </node> <leafNode name="smp-affinity"> <properties> <help>CPU interrupt affinity mask</help> <completionHelp> <list>auto 10 100 1000 2500 5000 10000</list> </completionHelp> <valueHelp> <format>auto</format> <description>Auto negotiation (default)</description> </valueHelp> <valueHelp> <format>hex</format> <description>Bitmask representing CPUs that this NIC will interrupt</description> </valueHelp> <valueHelp> <format>hex,hex</format> <description>Bitmasks representing CPUs for interrupt and receive processing</description> </valueHelp> <constraint> <regex>(auto)</regex> <regex>[0-9a-f]+(|,[0-9a-f]+)$</regex> </constraint> <constraintErrorMessage>IRQ affinity mask must be hex value or auto</constraintErrorMessage> </properties> </leafNode> <leafNode name="speed"> <properties> <help>Link speed</help> <completionHelp> <list>auto 10 100 1000 2500 5000 10000 25000 40000 50000 100000</list> </completionHelp> <valueHelp> <format>auto</format> <description>Auto negotiation (default)</description> </valueHelp> <valueHelp> <format>10</format> <description>10 Mbit/sec</description> </valueHelp> <valueHelp> <format>100</format> <description>100 Mbit/sec</description> </valueHelp> <valueHelp> <format>1000</format> <description>1 Gbit/sec</description> </valueHelp> <valueHelp> <format>2500</format> <description>2.5 Gbit/sec</description> </valueHelp> <valueHelp> <format>5000</format> <description>5 Gbit/sec</description> </valueHelp> <valueHelp> <format>10000</format> <description>10 Gbit/sec</description> </valueHelp> <valueHelp> <format>25000</format> <description>25 Gbit/sec</description> </valueHelp> <valueHelp> <format>40000</format> <description>40 Gbit/sec</description> </valueHelp> <valueHelp> <format>50000</format> <description>50 Gbit/sec</description> </valueHelp> <valueHelp> <format>100000</format> <description>100 Gbit/sec</description> </valueHelp> <constraint> <regex>(auto|10|100|1000|2500|5000|10000|25000|40000|50000|100000)</regex> </constraint> <constraintErrorMessage>Speed must be auto, 10, 100, 1000, 2500, 5000, 10000, 25000, 40000, 50000 or 100000</constraintErrorMessage> </properties> </leafNode> #include <include/vif-s.xml.i> #include <include/vif.xml.i> </children> </tagNode> </children> </node> </interfaceDefinition> diff --git a/interface-definitions/interfaces-geneve.xml.in b/interface-definitions/interfaces-geneve.xml.in index ae5b3c59f..0a866143e 100644 --- a/interface-definitions/interfaces-geneve.xml.in +++ b/interface-definitions/interfaces-geneve.xml.in @@ -1,65 +1,60 @@ <?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="geneve" owner="${vyos_conf_scripts_dir}/interfaces-geneve.py"> <properties> <help>Generic Network Virtualization Encapsulation (GENEVE)</help> <priority>460</priority> <constraint> <regex>gnv[0-9]+$</regex> </constraint> <constraintErrorMessage>GENEVE interface must be named gnvN</constraintErrorMessage> <valueHelp> <format>gnvN</format> <description>GENEVE interface name</description> </valueHelp> </properties> <children> #include <include/address-ipv4-ipv6.xml.i> #include <include/interface-description.xml.i> #include <include/interface-disable.xml.i> <node name="ip"> <properties> <help>IPv4 routing parameters</help> </properties> <children> #include <include/interface-arp-cache-timeout.xml.i> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-enable-proxy-arp.xml.i> </children> </node> #include <include/interface-mtu-1450-9000.xml.i> <leafNode name="remote"> <properties> <help>Remote address of GENEVE tunnel</help> <valueHelp> <format>ipv4</format> <description>Remote address of GENEVE tunnel</description> </valueHelp> <constraint> <validator name="ipv4-address"/> </constraint> </properties> </leafNode> <leafNode name="vni"> <properties> <help>Virtual Network Identifier</help> <valueHelp> <format>0-16777214</format> <description>GENEVE virtual network identifier</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-16777214"/> </constraint> </properties> </leafNode> </children> </tagNode> </children> </node> </interfaceDefinition> diff --git a/interface-definitions/interfaces-vxlan.xml.in b/interface-definitions/interfaces-vxlan.xml.in index a78b46023..f6b5cadac 100644 --- a/interface-definitions/interfaces-vxlan.xml.in +++ b/interface-definitions/interfaces-vxlan.xml.in @@ -1,98 +1,93 @@ <?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="vxlan" owner="${vyos_conf_scripts_dir}/interfaces-vxlan.py"> <properties> <help>Virtual extensible LAN interface (VXLAN)</help> <priority>460</priority> <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/address-ipv4-ipv6.xml.i> #include <include/interface-description.xml.i> #include <include/interface-disable.xml.i> <leafNode name="group"> <properties> <help>Multicast group address for VXLAN interface</help> <valueHelp> <format>ipv4</format> <description>Multicast group address</description> </valueHelp> <constraint> <validator name="ipv4-address"/> </constraint> </properties> </leafNode> <node name="ip"> <children> #include <include/interface-arp-cache-timeout.xml.i> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-enable-proxy-arp.xml.i> </children> </node> <leafNode name="link"> <properties> <help>Underlay device of VXLAN interface</help> <valueHelp> <format>interface</format> <description>Interface used for VXLAN underlay</description> </valueHelp> <completionHelp> <script>${vyos_completion_dir}/list_interfaces.py</script> </completionHelp> </properties> </leafNode> #include <include/interface-mtu-1450-9000.xml.i> <leafNode name="remote"> <properties> <help>Remote address of VXLAN tunnel</help> <valueHelp> <format>ipv4</format> <description>Remote address of VXLAN tunnel</description> </valueHelp> <constraint> <validator name="ipv4-address"/> </constraint> </properties> </leafNode> <leafNode name="port"> <properties> <help>Destination port of VXLAN tunnel (default: 8472)</help> <valueHelp> <format>1-65535</format> <description>Numeric IP port</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 1-65535"/> </constraint> </properties> </leafNode> <leafNode name="vni"> <properties> <help>Virtual Network Identifier</help> <valueHelp> <format>0-16777214</format> <description>VXLAN virtual network identifier</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-16777214"/> </constraint> </properties> </leafNode> </children> </tagNode> </children> </node> </interfaceDefinition>