diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-12-10 09:33:59 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-12-10 09:33:59 +0100 |
commit | de12bf3757f25e61d40cae88f5ba10ee3a04db8f (patch) | |
tree | 4b12ba8772db77d9c409c2cc548356883d90399d | |
parent | e9bf6cc7f20d93f35c2d7dc57c9a5a173fe7fc5d (diff) | |
parent | a68d72122c3cc032b5a7b05dafc0578e64244c4f (diff) | |
download | vyos-1x-de12bf3757f25e61d40cae88f5ba10ee3a04db8f.tar.gz vyos-1x-de12bf3757f25e61d40cae88f5ba10ee3a04db8f.zip |
Merge branch 'current' of github.com:vyos/vyos-1x into equuleus
* 'current' of github.com:vyos/vyos-1x:
T1855, T1826: Restore support for reboot/poweroff in M minutes.
vyos.config: T1764: allow for list argument to exists, in value case
vyos.config: T1846: ignore edit level when obtaining working config
T1843: use include files for interface proxy-arp-pvlan option
T1843: use include files for interface proxy-arp configuration
T1843: use include files for interface arp-cache-timeout configuration
T1843: use include files for interface link-detect feature
T1843: use include files for interface MTU size
T1843: use include files for interface MAC address
T1843: use include files to disable interface (admin down)
T1843: use include files for interface description
T1843: use include files for DHCP/DHCPv6 options
T1843: recursively include IP address definitions in VIF/VIF-S definitions
T1843: add support for recursive includes
T1843: use include files for VIF/VIF-S interfaces
T1843: use include files for IPv4/IPv6 interface address configuration
T1843: run interface-definitions though GCC preprocessor
62 files changed, 914 insertions, 2274 deletions
@@ -1,23 +1,48 @@ TMPL_DIR := templates-cfg OP_TMPL_DIR := templates-op +BUILD_DIR := build +CFLAGS := + +src = $(wildcard interface-definitions/*.xml.in) +obj = $(src:.xml.in=.xml) + +%.xml: %.xml.in + @echo Generating $(BUILD_DIR)/$@ from $< + # -ansi This turns off certain features of GCC that are incompatible + # with ISO C90. Without this regexes containing '/' as in an URL + # won't work + # -x c By default GCC guesses the input language from its file extension, + # thus XML is unknown. Force it to C language + # -E Stop after the preprocessing stage + # -undef Do not predefine any system-specific or GCC-specific macros. + # -nostdinc Do not search the standard system directories for header files + # -P Inhibit generation of linemarkers in the output from the + # preprocessor + @$(CC) -ansi -x c -E -undef -nostdinc -P -I$(CURDIR)/interface-definitions -o $(BUILD_DIR)/$@ -c $< + +$(BUILD_DIR): + install -d -m 0755 $(BUILD_DIR)/interface-definitions + install -d -m 0755 $(BUILD_DIR)/op-mode-definitions .PHONY: interface_definitions .ONESHELL: -interface_definitions: +interface_definitions: $(BUILD_DIR) $(obj) mkdir -p $(TMPL_DIR) - find $(CURDIR)/interface-definitions/ -type f -name "*.xml" | xargs -I {} $(CURDIR)/scripts/build-command-templates {} $(CURDIR)/schema/interface_definition.rng $(TMPL_DIR) || exit 1 + find $(BUILD_DIR)/interface-definitions -type f -name "*.xml" | xargs -I {} $(CURDIR)/scripts/build-command-templates {} $(CURDIR)/schema/interface_definition.rng $(TMPL_DIR) || exit 1 # XXX: delete top level node.def's that now live in other packages rm -f $(TMPL_DIR)/firewall/node.def rm -f $(TMPL_DIR)/interfaces/node.def rm -f $(TMPL_DIR)/interfaces/bonding/node.tag/ip/node.def + rm -f $(TMPL_DIR)/interfaces/bonding/node.tag/vif/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/bridge/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/ethernet/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/ethernet/node.tag/vif/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/ethernet/node.tag/vif-s/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/ethernet/node.tag/vif-s/node.tag/vif-c/node.tag/ip/node.def rm -f $(TMPL_DIR)/interfaces/vxlan/node.tag/ip/node.def + rm -f $(TMPL_DIR)/interfaces/wireless/node.tag/vif/node.tag/ip/node.def rm -f $(TMPL_DIR)/protocols/node.def rm -f $(TMPL_DIR)/protocols/static/node.def rm -f $(TMPL_DIR)/system/node.def @@ -56,8 +81,9 @@ all: clean interface_definitions op_mode_definitions .PHONY: clean clean: - rm -rf $(TMPL_DIR)/* - rm -rf $(OP_TMPL_DIR)/* + rm -rf $(BUILD_DIR) + rm -rf $(TMPL_DIR) + rm -rf $(OP_TMPL_DIR) .PHONY: test test: diff --git a/interface-definitions/arp.xml b/interface-definitions/arp.xml.in index b72f025a8..b72f025a8 100644 --- a/interface-definitions/arp.xml +++ b/interface-definitions/arp.xml.in diff --git a/interface-definitions/bcast-relay.xml b/interface-definitions/bcast-relay.xml.in index 96ce16639..96ce16639 100644 --- a/interface-definitions/bcast-relay.xml +++ b/interface-definitions/bcast-relay.xml.in diff --git a/interface-definitions/beep-on-boot.xml b/interface-definitions/beep-on-boot.xml.in index 0da7d0de4..0da7d0de4 100644 --- a/interface-definitions/beep-on-boot.xml +++ b/interface-definitions/beep-on-boot.xml.in diff --git a/interface-definitions/cron.xml b/interface-definitions/cron.xml.in index 2d4921bf0..2d4921bf0 100644 --- a/interface-definitions/cron.xml +++ b/interface-definitions/cron.xml.in diff --git a/interface-definitions/dhcp-relay.xml b/interface-definitions/dhcp-relay.xml.in index b83402aa1..b83402aa1 100644 --- a/interface-definitions/dhcp-relay.xml +++ b/interface-definitions/dhcp-relay.xml.in diff --git a/interface-definitions/dhcp-server.xml b/interface-definitions/dhcp-server.xml.in index 7d42294e8..e8bdff3df 100644 --- a/interface-definitions/dhcp-server.xml +++ b/interface-definitions/dhcp-server.xml.in @@ -414,7 +414,7 @@ </leafNode> <leafNode name="time-offset"> <properties> - <help>Offset of the client's subnet in seconds from Coordinated Universal Time (UTC)</help> + <help>Client subnet offset in seconds from Coordinated Universal Time (UTC)</help> <valueHelp> <format>[-]N</format> <description>Time offset (number, may be negative)</description> diff --git a/interface-definitions/dhcpv6-relay.xml b/interface-definitions/dhcpv6-relay.xml.in index 0beb09d05..0beb09d05 100644 --- a/interface-definitions/dhcpv6-relay.xml +++ b/interface-definitions/dhcpv6-relay.xml.in diff --git a/interface-definitions/dhcpv6-server.xml b/interface-definitions/dhcpv6-server.xml.in index 28b56a64d..7d4c0de23 100644 --- a/interface-definitions/dhcpv6-server.xml +++ b/interface-definitions/dhcpv6-server.xml.in @@ -300,7 +300,7 @@ <constraint> <regex>([0-9A-Fa-f]{1,2}[:])*([0-9A-Fa-f]{1,2})</regex> </constraint> - <constraintErrorMessage>Invalid DUID. Must be in the format h[[:h]...] where each \"h\" is 1 to 2 hex characters.</constraintErrorMessage> + <constraintErrorMessage>Invalid DUID, must be in the format h[[:h]...]</constraintErrorMessage> </properties> </leafNode> <leafNode name="ipv6-address"> diff --git a/interface-definitions/dns-domain-name.xml b/interface-definitions/dns-domain-name.xml.in index c16f0b02a..c16f0b02a 100644 --- a/interface-definitions/dns-domain-name.xml +++ b/interface-definitions/dns-domain-name.xml.in diff --git a/interface-definitions/dns-dynamic.xml b/interface-definitions/dns-dynamic.xml.in index 8e7e77475..8e7e77475 100644 --- a/interface-definitions/dns-dynamic.xml +++ b/interface-definitions/dns-dynamic.xml.in diff --git a/interface-definitions/dns-forwarding.xml b/interface-definitions/dns-forwarding.xml.in index a88c174e3..8b89bf758 100644 --- a/interface-definitions/dns-forwarding.xml +++ b/interface-definitions/dns-forwarding.xml.in @@ -47,7 +47,7 @@ </valueHelp> <valueHelp> <format>process-no-validate</format> - <description>Respond with DNSSEC records to clients that ask for it. Don't do any validation.</description> + <description>Respond with DNSSEC records to clients that ask for it. No validation done at all!</description> </valueHelp> <valueHelp> <format>process</format> diff --git a/interface-definitions/firewall-options.xml b/interface-definitions/firewall-options.xml.in index 2936cc703..2936cc703 100644 --- a/interface-definitions/firewall-options.xml +++ b/interface-definitions/firewall-options.xml.in diff --git a/interface-definitions/https.xml b/interface-definitions/https.xml.in index d9874a1f9..923aac811 100644 --- a/interface-definitions/https.xml +++ b/interface-definitions/https.xml.in @@ -132,4 +132,3 @@ </children> </node> </interfaceDefinition> - diff --git a/interface-definitions/igmp-proxy.xml b/interface-definitions/igmp-proxy.xml.in index ab56019b4..74fec6b48 100644 --- a/interface-definitions/igmp-proxy.xml +++ b/interface-definitions/igmp-proxy.xml.in @@ -31,7 +31,7 @@ <children> <leafNode name="alt-subnet"> <properties> - <help>Allowed unicast sources for multicast traffic to be proxy'ed</help> + <help>Unicast source networks allowed for multicast traffic to be proxyed</help> <valueHelp> <format>ipv4net</format> <description>IPv4 network</description> diff --git a/interface-definitions/include/address-ipv4-ipv6-dhcp.xml.i b/interface-definitions/include/address-ipv4-ipv6-dhcp.xml.i new file mode 100644 index 000000000..fb46f2c09 --- /dev/null +++ b/interface-definitions/include/address-ipv4-ipv6-dhcp.xml.i @@ -0,0 +1,29 @@ +<leafNode name="address"> + <properties> + <help>IP address</help> + <completionHelp> + <list>dhcp dhcpv6</list> + </completionHelp> + <valueHelp> + <format>ipv4net</format> + <description>IPv4 address and prefix length</description> + </valueHelp> + <valueHelp> + <format>ipv6net</format> + <description>IPv6 address and prefix length</description> + </valueHelp> + <valueHelp> + <format>dhcp</format> + <description>Dynamic Host Configuration Protocol</description> + </valueHelp> + <valueHelp> + <format>dhcpv6</format> + <description>Dynamic Host Configuration Protocol for IPv6</description> + </valueHelp> + <constraint> + <validator name="ip-cidr"/> + <regex>(dhcp|dhcpv6)</regex> + </constraint> + <multi/> + </properties> +</leafNode> diff --git a/interface-definitions/include/address-ipv4-ipv6.xml.i b/interface-definitions/include/address-ipv4-ipv6.xml.i new file mode 100644 index 000000000..aa84a5640 --- /dev/null +++ b/interface-definitions/include/address-ipv4-ipv6.xml.i @@ -0,0 +1,17 @@ +<leafNode name="address"> + <properties> + <help>IP address</help> + <valueHelp> + <format>ipv4net</format> + <description>IPv4 address and prefix length</description> + </valueHelp> + <valueHelp> + <format>ipv6net</format> + <description>IPv6 address and prefix length</description> + </valueHelp> + <constraint> + <validator name="ip-cidr"/> + </constraint> + <multi/> + </properties> +</leafNode> diff --git a/interface-definitions/include/dhcp-dhcpv6-options.xml.i b/interface-definitions/include/dhcp-dhcpv6-options.xml.i new file mode 100644 index 000000000..104b1fbe0 --- /dev/null +++ b/interface-definitions/include/dhcp-dhcpv6-options.xml.i @@ -0,0 +1,42 @@ +<node name="dhcp-options"> + <properties> + <help>DHCP options</help> + </properties> + <children> + <leafNode name="client-id"> + <properties> + <help>DHCP client identifier</help> + </properties> + </leafNode> + <leafNode name="host-name"> + <properties> + <help>DHCP client host name (overrides system host name)</help> + </properties> + </leafNode> + <leafNode name="vendor-class-id"> + <properties> + <help>DHCP client vendor type</help> + </properties> + </leafNode> + </children> +</node> +<node name="dhcpv6-options"> + <properties> + <help>DHCPv6 options</help> + <priority>319</priority> + </properties> + <children> + <leafNode name="parameters-only"> + <properties> + <help>Acquire only config parameters, no address</help> + <valueless/> + </properties> + </leafNode> + <leafNode name="temporary"> + <properties> + <help>IPv6 "temporary" address</help> + <valueless/> + </properties> + </leafNode> + </children> +</node> diff --git a/interface-definitions/include/interface-arp-cache-timeout.xml.i b/interface-definitions/include/interface-arp-cache-timeout.xml.i new file mode 100644 index 000000000..81d35f593 --- /dev/null +++ b/interface-definitions/include/interface-arp-cache-timeout.xml.i @@ -0,0 +1,13 @@ +<leafNode name="arp-cache-timeout"> + <properties> + <help>ARP cache entry timeout in seconds</help> + <valueHelp> + <format>1-86400</format> + <description>ARP cache entry timout in seconds (default 30)</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 1-86400"/> + </constraint> + <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> + </properties> +</leafNode> diff --git a/interface-definitions/include/interface-description.xml.i b/interface-definitions/include/interface-description.xml.i new file mode 100644 index 000000000..6356888da --- /dev/null +++ b/interface-definitions/include/interface-description.xml.i @@ -0,0 +1,9 @@ +<leafNode name="description"> + <properties> + <help>Interface description</help> + <constraint> + <regex>^.{1,256}$</regex> + </constraint> + <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> + </properties> +</leafNode> diff --git a/interface-definitions/include/interface-disable-link-detect.xml.i b/interface-definitions/include/interface-disable-link-detect.xml.i new file mode 100644 index 000000000..619cd03b0 --- /dev/null +++ b/interface-definitions/include/interface-disable-link-detect.xml.i @@ -0,0 +1,6 @@ +<leafNode name="disable-link-detect"> + <properties> + <help>Ignore link state changes</help> + <valueless/> + </properties> +</leafNode> diff --git a/interface-definitions/include/interface-disable.xml.i b/interface-definitions/include/interface-disable.xml.i new file mode 100644 index 000000000..c6c24f867 --- /dev/null +++ b/interface-definitions/include/interface-disable.xml.i @@ -0,0 +1,6 @@ +<leafNode name="disable">
+ <properties>
+ <help>Set interface to Administratively down</help>
+ <valueless/>
+ </properties>
+</leafNode>
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/interface-mac.xml.i b/interface-definitions/include/interface-mac.xml.i new file mode 100644 index 000000000..7b2456236 --- /dev/null +++ b/interface-definitions/include/interface-mac.xml.i @@ -0,0 +1,12 @@ +<leafNode name="mac"> + <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> diff --git a/interface-definitions/include/interface-mtu-1450-9000.xml.i b/interface-definitions/include/interface-mtu-1450-9000.xml.i new file mode 100644 index 000000000..87296a050 --- /dev/null +++ b/interface-definitions/include/interface-mtu-1450-9000.xml.i @@ -0,0 +1,13 @@ +<leafNode name="mtu"> + <properties> + <help>Maximum Transmission Unit (MTU)</help> + <valueHelp> + <format>1450-9000</format> + <description>Maximum Transmission Unit</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 1450-9000"/> + </constraint> + <constraintErrorMessage>MTU must be between 1450 and 9000</constraintErrorMessage> + </properties> +</leafNode> diff --git a/interface-definitions/include/interface-mtu-68-9000.xml.i b/interface-definitions/include/interface-mtu-68-9000.xml.i new file mode 100644 index 000000000..ad11afa80 --- /dev/null +++ b/interface-definitions/include/interface-mtu-68-9000.xml.i @@ -0,0 +1,13 @@ +<leafNode name="mtu"> + <properties> + <help>Maximum Transmission Unit (MTU)</help> + <valueHelp> + <format>68-9000</format> + <description>Maximum Transmission Unit</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 68-9000"/> + </constraint> + <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> + </properties> +</leafNode> diff --git a/interface-definitions/include/interface-proxy-arp-pvlan.xml.i b/interface-definitions/include/interface-proxy-arp-pvlan.xml.i new file mode 100644 index 000000000..7e72b3800 --- /dev/null +++ b/interface-definitions/include/interface-proxy-arp-pvlan.xml.i @@ -0,0 +1,6 @@ +<leafNode name="proxy-arp-pvlan"> + <properties> + <help>Enable private VLAN proxy ARP on this interface</help> + <valueless/> + </properties> +</leafNode> diff --git a/interface-definitions/include/vif-s.xml.i b/interface-definitions/include/vif-s.xml.i new file mode 100644 index 000000000..772804f53 --- /dev/null +++ b/interface-definitions/include/vif-s.xml.i @@ -0,0 +1,56 @@ +<tagNode name="vif-s">
+ <properties>
+ <help>QinQ TAG-S Virtual Local Area Network (VLAN) ID</help>
+ <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="ethertype">
+ <properties>
+ <help>Set Ethertype</help>
+ <completionHelp>
+ <list>0x88A8 0x8100</list>
+ </completionHelp>
+ <valueHelp>
+ <format>0x88A8</format>
+ <description>802.1ad</description>
+ </valueHelp>
+ <valueHelp>
+ <format>0x8100</format>
+ <description>802.1q</description>
+ </valueHelp>
+ <constraint>
+ <regex>(0x88A8|0x8100)</regex>
+ </constraint>
+ <constraintErrorMessage>Ethertype must be 0x88A8 or 0x8100</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/interface-mac.xml.i>
+ #include <include/interface-mtu-68-9000.xml.i>
+ <tagNode name="vif-c">
+ <properties>
+ <help>QinQ TAG-C Virtual Local Area Network (VLAN) ID</help>
+ <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>
+ #include <include/interface-mac.xml.i>
+ #include <include/interface-mtu-68-9000.xml.i>
+ </children>
+ </tagNode>
+ </children>
+</tagNode>
diff --git a/interface-definitions/include/vif.xml.i b/interface-definitions/include/vif.xml.i new file mode 100644 index 000000000..7c8a29a93 --- /dev/null +++ b/interface-definitions/include/vif.xml.i @@ -0,0 +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> + #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/intel_qat.xml b/interface-definitions/intel_qat.xml.in index 5e4d5b190..812484184 100644 --- a/interface-definitions/intel_qat.xml +++ b/interface-definitions/intel_qat.xml.in @@ -19,4 +19,3 @@ </children> </node> </interfaceDefinition> - diff --git a/interface-definitions/interfaces-bonding.xml b/interface-definitions/interfaces-bonding.xml deleted file mode 100644 index 821dd15fa..000000000 --- a/interface-definitions/interfaces-bonding.xml +++ /dev/null @@ -1,693 +0,0 @@ -<?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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <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> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides the system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <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> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> - <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> - </children> - </node> - <leafNode name="mac"> - <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> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="primary"> - <properties> - <help>Primary device interface</help> - <completionHelp> - <script>${vyos_completion_dir}/list_interfaces.py --bondable</script> - </completionHelp> - </properties> - </leafNode> - <tagNode name="vif-s"> - <properties> - <help>QinQ TAG-S Virtual Local Area Network (VLAN) ID</help> - <constraint> - <validator name="numeric" argument="--range 0-4094"/> - </constraint> - <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides the system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="ethertype"> - <properties> - <help>Set Ethertype</help> - <completionHelp> - <list>0x88A8 0x8100</list> - </completionHelp> - <valueHelp> - <format>0x88A8</format> - <description>802.1ad</description> - </valueHelp> - <valueHelp> - <format>0x8100</format> - <description>802.1q</description> - </valueHelp> - <constraint> - <regex>(0x88A8|0x8100)</regex> - </constraint> - <constraintErrorMessage>Ethertype must be 0x88A8 or 0x8100</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - <tagNode name="vif-c"> - <properties> - <help>QinQ TAG-C Virtual Local Area Network (VLAN) ID</help> - <constraint> - <validator name="numeric" argument="--range 0-4094"/> - </constraint> - <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides the system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </tagNode> - <tagNode name="vif"> - <properties> - <help>Virtual Local Area Network (VLAN) ID</help> - <constraint> - <validator name="numeric" argument="--range 0-4094"/> - </constraint> - <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides the system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </tagNode> - </children> - </node> -</interfaceDefinition> diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in new file mode 100644 index 000000000..e6557a967 --- /dev/null +++ b/interface-definitions/interfaces-bonding.xml.in @@ -0,0 +1,159 @@ +<?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> + #include <include/interface-enable-proxy-arp.xml.i> + #include <include/interface-proxy-arp-pvlan.xml.i> + </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-bridge.xml b/interface-definitions/interfaces-bridge.xml.in index 40505d7de..a28daeba6 100644 --- a/interface-definitions/interfaces-bridge.xml +++ b/interface-definitions/interfaces-bridge.xml.in @@ -16,35 +16,7 @@ </valueHelp> </properties> <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> + #include <include/address-ipv4-ipv6-dhcp.xml.i> <leafNode name="aging"> <properties> <help>MAC address aging interval</help> @@ -61,69 +33,10 @@ </constraint> </properties> </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides the system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> + #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="forwarding-delay"> <properties> <help>Forwarding delay</help> @@ -165,33 +78,10 @@ </node> <node name="ip"> <children> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> + #include <include/interface-arp-cache-timeout.xml.i> </children> </node> - <leafNode name="mac"> - <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> + #include <include/interface-mac.xml.i> <leafNode name="max-age"> <properties> <help>Interval at which neighbor bridges are removed</help> diff --git a/interface-definitions/interfaces-dummy.xml b/interface-definitions/interfaces-dummy.xml deleted file mode 100644 index 3bc4330e4..000000000 --- a/interface-definitions/interfaces-dummy.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0"?> -<interfaceDefinition> - <node name="interfaces"> - <children> - <tagNode name="dummy" owner="${vyos_conf_scripts_dir}/interfaces-dummy.py"> - <properties> - <help>Dummy interface name</help> - <priority>300</priority> - <constraint> - <regex>dum[0-9]+$</regex> - </constraint> - <constraintErrorMessage>Dummy interface must be named dumN</constraintErrorMessage> - <valueHelp> - <format>dumN</format> - <description>Dummy interface name</description> - </valueHelp> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <multi/> - <constraint> - <validator name="ip-cidr"/> - </constraint> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable interface</help> - <valueless/> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </node> -</interfaceDefinition> diff --git a/interface-definitions/interfaces-dummy.xml.in b/interface-definitions/interfaces-dummy.xml.in new file mode 100644 index 000000000..445f6b2d4 --- /dev/null +++ b/interface-definitions/interfaces-dummy.xml.in @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<interfaceDefinition> + <node name="interfaces"> + <children> + <tagNode name="dummy" owner="${vyos_conf_scripts_dir}/interfaces-dummy.py"> + <properties> + <help>Dummy interface name</help> + <priority>300</priority> + <constraint> + <regex>dum[0-9]+$</regex> + </constraint> + <constraintErrorMessage>Dummy interface must be named dumN</constraintErrorMessage> + <valueHelp> + <format>dumN</format> + <description>Dummy 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> + </children> + </tagNode> + </children> + </node> +</interfaceDefinition> diff --git a/interface-definitions/interfaces-ethernet.xml b/interface-definitions/interfaces-ethernet.xml deleted file mode 100644 index f51bb3d87..000000000 --- a/interface-definitions/interfaces-ethernet.xml +++ /dev/null @@ -1,904 +0,0 @@ -<?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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-flow-control"> - <properties> - <help>Disable Ethernet flow control (pause frames)</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <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> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> - <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> - </children> - </node> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - <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> - <tagNode name="vif-s"> - <properties> - <help>QinQ TAG-S Virtual Local Area Network (VLAN) ID</help> - <valueHelp> - <format>0-4094</format> - <description>QinQ TAG-S 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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="ethertype"> - <properties> - <help>Set Ethertype</help> - <completionHelp> - <list>0x88A8 0x8100</list> - </completionHelp> - <valueHelp> - <format>0x88A8</format> - <description>802.1ad</description> - </valueHelp> - <valueHelp> - <format>0x8100</format> - <description>802.1q</description> - </valueHelp> - <constraint> - <regex>(0x88A8|0x8100)</regex> - </constraint> - <constraintErrorMessage>Ethertype must be 0x88A8 or 0x8100</constraintErrorMessage> - </properties> - </leafNode> - <node name="ip"> - <children> - <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> - </children> - </node> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - <tagNode name="vif-c"> - <properties> - <help>QinQ TAG-C Virtual Local Area Network (VLAN) ID</help> - <valueHelp> - <format>0-4094</format> - <description>QinQ TAG-C 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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <node name="ip"> - <children> - <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> - </children> - </node> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </tagNode> - <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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="egress-qos"> - <properties> - <help>VLAN egress 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> - <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> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> - <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> - </children> - </node> - <leafNode name="mac"> - <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> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>68-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 68-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 68 and 9000</constraintErrorMessage> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </tagNode> - </children> - </node> -</interfaceDefinition> diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in new file mode 100644 index 000000000..7fa20ac18 --- /dev/null +++ b/interface-definitions/interfaces-ethernet.xml.in @@ -0,0 +1,273 @@ +<?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> + #include <include/interface-enable-proxy-arp.xml.i> + #include <include/interface-proxy-arp-pvlan.xml.i> + </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 b/interface-definitions/interfaces-geneve.xml deleted file mode 100644 index e65ce6826..000000000 --- a/interface-definitions/interfaces-geneve.xml +++ /dev/null @@ -1,118 +0,0 @@ -<?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> - <leafNode name="address"> - <properties> - <help>IP address</help> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <multi/> - <constraint> - <validator name="ip-cidr"/> - </constraint> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable interface</help> - <valueless/> - </properties> - </leafNode> - <node name="ip"> - <properties> - <help>IPv4 routing parameters</help> - </properties> - <children> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>1450-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1500-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 1500 and 9000</constraintErrorMessage> - </properties> - </leafNode> - <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-geneve.xml.in b/interface-definitions/interfaces-geneve.xml.in new file mode 100644 index 000000000..0a866143e --- /dev/null +++ b/interface-definitions/interfaces-geneve.xml.in @@ -0,0 +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> + #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-loopback.xml b/interface-definitions/interfaces-loopback.xml deleted file mode 100644 index 0f003bc64..000000000 --- a/interface-definitions/interfaces-loopback.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0"?> -<interfaceDefinition> - <node name="interfaces"> - <children> - <tagNode name="loopback" owner="${vyos_conf_scripts_dir}/interfaces-loopback.py"> - <properties> - <help>Loopback interface</help> - <priority>300</priority> - <constraint> - <regex>lo$</regex> - </constraint> - <constraintErrorMessage>Loopback interface must be named lo</constraintErrorMessage> - <valueHelp> - <format>lo</format> - <description>Loopback interface</description> - </valueHelp> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - </children> - </tagNode> - </children> - </node> -</interfaceDefinition> diff --git a/interface-definitions/interfaces-loopback.xml.in b/interface-definitions/interfaces-loopback.xml.in new file mode 100644 index 000000000..007a0f189 --- /dev/null +++ b/interface-definitions/interfaces-loopback.xml.in @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<interfaceDefinition> + <node name="interfaces"> + <children> + <tagNode name="loopback" owner="${vyos_conf_scripts_dir}/interfaces-loopback.py"> + <properties> + <help>Loopback interface</help> + <priority>300</priority> + <constraint> + <regex>lo$</regex> + </constraint> + <constraintErrorMessage>Loopback interface must be named lo</constraintErrorMessage> + <valueHelp> + <format>lo</format> + <description>Loopback interface</description> + </valueHelp> + </properties> + <children> + #include <include/address-ipv4-ipv6.xml.i> + #include <include/interface-description.xml.i> + </children> + </tagNode> + </children> + </node> +</interfaceDefinition> diff --git a/interface-definitions/interfaces-openvpn.xml b/interface-definitions/interfaces-openvpn.xml.in index 2c2556f45..638e9048b 100644 --- a/interface-definitions/interfaces-openvpn.xml +++ b/interface-definitions/interfaces-openvpn.xml.in @@ -33,11 +33,7 @@ </leafNode> </children> </node> - <leafNode name="description"> - <properties> - <help>Description</help> - </properties> - </leafNode> + #include <include/interface-description.xml.i> <leafNode name="device-type"> <properties> <help>OpenVPN interface device-type</help> @@ -57,12 +53,7 @@ </constraint> </properties> </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-disable.xml.i> <node name="encryption"> <properties> <help>Data Encryption settings</help> @@ -610,7 +601,7 @@ </leafNode> <leafNode name="key-file"> <properties> - <help>File containing this host's private key</help> + <help>Private key for this host</help> <valueHelp> <format>file</format> <description>File in /config/auth directory</description> @@ -645,7 +636,7 @@ </leafNode> <leafNode name="role"> <properties> - <help>File containing this host's private key</help> + <help>Private key for this host</help> <completionHelp> <list>active passive</list> </completionHelp> diff --git a/interface-definitions/interfaces-vxlan.xml b/interface-definitions/interfaces-vxlan.xml.in index f93711741..f6b5cadac 100644 --- a/interface-definitions/interfaces-vxlan.xml +++ b/interface-definitions/interfaces-vxlan.xml.in @@ -16,38 +16,9 @@ </valueHelp> </properties> <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <multi/> - <constraint> - <validator name="ip-cidr"/> - </constraint> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable interface</help> - <valueless/> - </properties> - </leafNode> + #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> @@ -62,25 +33,8 @@ </leafNode> <node name="ip"> <children> - <leafNode name="arp-cache-timeout"> - <properties> - <help>ARP cache entry timeout in seconds</help> - <valueHelp> - <format>1-86400</format> - <description>ARP cache entry timout in seconds (default 30)</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-86400"/> - </constraint> - <constraintErrorMessage>ARP cache entry timeout must be between 1 and 86400 seconds</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="enable-proxy-arp"> - <properties> - <help>Enable proxy-arp on this interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-arp-cache-timeout.xml.i> + #include <include/interface-enable-proxy-arp.xml.i> </children> </node> <leafNode name="link"> @@ -95,19 +49,7 @@ </completionHelp> </properties> </leafNode> - <leafNode name="mtu"> - <properties> - <help>Maximum Transmission Unit (MTU)</help> - <valueHelp> - <format>1450-9000</format> - <description>Maximum Transmission Unit</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1450-9000"/> - </constraint> - <constraintErrorMessage>MTU must be between 1450 and 9000</constraintErrorMessage> - </properties> - </leafNode> + #include <include/interface-mtu-1450-9000.xml.i> <leafNode name="remote"> <properties> <help>Remote address of VXLAN tunnel</help> diff --git a/interface-definitions/interfaces-wireguard.xml b/interface-definitions/interfaces-wireguard.xml.in index 0c32a3bc1..6be0292a1 100644 --- a/interface-definitions/interfaces-wireguard.xml +++ b/interface-definitions/interfaces-wireguard.xml.in @@ -17,38 +17,9 @@ </valueHelp> </properties> <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <constraint> - <validator name="ip-cidr"/> - </constraint> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>description</help> - <constraint> - <regex>^.{1,100}$</regex> - </constraint> - <constraintErrorMessage>interface description is too long (limit 100 characters)</constraintErrorMessage> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>disables interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/address-ipv4-ipv6.xml.i> + #include <include/interface-description.xml.i> + #include <include/interface-disable.xml.i> <leafNode name="port"> <properties> <help>Local port number to accept connections</help> diff --git a/interface-definitions/interfaces-wireless.xml b/interface-definitions/interfaces-wireless.xml.in index 6bc49dddb..53c448930 100644 --- a/interface-definitions/interfaces-wireless.xml +++ b/interface-definitions/interfaces-wireless.xml.in @@ -16,35 +16,7 @@ </valueHelp> </properties> <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> + #include <include/address-ipv4-ipv6-dhcp.xml.i> <node name="capabilities"> <properties> <help>HT and VHT capabilities for your card</help> @@ -473,74 +445,15 @@ </constraint> </properties> </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcp-options"> - <properties> - <help>DHCP options</help> - </properties> - <children> - <leafNode name="client-id"> - <properties> - <help>DHCP client identifier</help> - </properties> - </leafNode> - <leafNode name="host-name"> - <properties> - <help>DHCP client host name (overrides system host name)</help> - </properties> - </leafNode> - <leafNode name="vendor-class-id"> - <properties> - <help>DHCP client vendor type</help> - </properties> - </leafNode> - </children> - </node> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - <priority>319</priority> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> + #include <include/interface-description.xml.i> + #include <include/dhcp-dhcpv6-options.xml.i> <leafNode name="disable-broadcast-ssid"> <properties> <help>Disable broadcast of SSID from access-point</help> </properties> </leafNode> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> + #include <include/interface-disable-link-detect.xml.i> + #include <include/interface-disable.xml.i> <leafNode name="expunge-failing-stations"> <properties> <help>Disassociate stations based on excessive transmission failures</help> @@ -565,18 +478,7 @@ <valueless/> </properties> </leafNode> - <leafNode name="mac"> - <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> + #include <include/interface-mac.xml.i> <leafNode name="max-stations"> <properties> <help>Maximum number of wireless radio stations. Excess stations will be rejected upon authentication request.</help> @@ -843,98 +745,7 @@ <constraintErrorMessage>Type must be access-point, station or monitor</constraintErrorMessage> </properties> </leafNode> - <tagNode name="vif"> - <properties> - <help>Virtual Local Area Network (VLAN) ID</help> - <constraint> - <validator name="numeric" argument="--range 0-4094"/> - </constraint> - <constraintErrorMessage>VLAN ID must be between 0 and 4094</constraintErrorMessage> - </properties> - <children> - <leafNode name="address"> - <properties> - <help>IP address</help> - <completionHelp> - <list>dhcp dhcpv6</list> - </completionHelp> - <valueHelp> - <format>ipv4net</format> - <description>IPv4 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>ipv6net</format> - <description>IPv6 address and prefix length</description> - </valueHelp> - <valueHelp> - <format>dhcp</format> - <description>Dynamic Host Configuration Protocol</description> - </valueHelp> - <valueHelp> - <format>dhcpv6</format> - <description>Dynamic Host Configuration Protocol for IPv6</description> - </valueHelp> - <constraint> - <validator name="ip-cidr"/> - <regex>(dhcp|dhcpv6)</regex> - </constraint> - <multi/> - </properties> - </leafNode> - <leafNode name="description"> - <properties> - <help>Interface description</help> - <constraint> - <regex>^.{1,256}$</regex> - </constraint> - <constraintErrorMessage>Interface description too long (limit 256 characters)</constraintErrorMessage> - </properties> - </leafNode> - <node name="dhcpv6-options"> - <properties> - <help>DHCPv6 options</help> - </properties> - <children> - <leafNode name="parameters-only"> - <properties> - <help>Acquire only config parameters, no address</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="temporary"> - <properties> - <help>IPv6 "temporary" address</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> - <leafNode name="disable-link-detect"> - <properties> - <help>Ignore link state changes</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="disable"> - <properties> - <help>Disable this bridge interface</help> - <valueless/> - </properties> - </leafNode> - <leafNode name="mac"> - <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> - </children> - </tagNode> + #include <include/vif.xml.i> </children> </tagNode> </children> diff --git a/interface-definitions/ipoe-server.xml b/interface-definitions/ipoe-server.xml.in index 48f3e0fd9..5fee02614 100644 --- a/interface-definitions/ipoe-server.xml +++ b/interface-definitions/ipoe-server.xml.in @@ -289,7 +289,7 @@ </leafNode> <leafNode name="fail-time"> <properties> - <help>If server doesn't responds mark it as unavailable for this amount of time in seconds</help> + <help>If server does not respond, mark it unavailable for this time (seconds)</help> </properties> </leafNode> </children> diff --git a/interface-definitions/ipsec-settings.xml b/interface-definitions/ipsec-settings.xml.in index bc54baa27..bc54baa27 100644 --- a/interface-definitions/ipsec-settings.xml +++ b/interface-definitions/ipsec-settings.xml.in diff --git a/interface-definitions/l2tp-server.xml b/interface-definitions/l2tp-server.xml.in index e76b92b23..4e3a49b24 100644 --- a/interface-definitions/l2tp-server.xml +++ b/interface-definitions/l2tp-server.xml.in @@ -359,7 +359,7 @@ </valueHelp> <valueHelp> <format>prefer</format> - <description>ask client for mppe, if it rejects don't fail</description> + <description>Ask client for mppe, if it rejects do not fail</description> </valueHelp> <valueHelp> <format>require</format> @@ -471,7 +471,7 @@ </leafNode> <leafNode name="fail-time"> <properties> - <help>If server doesn't responds mark it as unavailable for this amount of time in seconds</help> + <help>If server doesn not responds mark it unavailable for this time (seconds)</help> </properties> </leafNode> </children> diff --git a/interface-definitions/mdns-repeater.xml b/interface-definitions/mdns-repeater.xml.in index a59321294..a59321294 100644 --- a/interface-definitions/mdns-repeater.xml +++ b/interface-definitions/mdns-repeater.xml.in diff --git a/interface-definitions/ntp.xml b/interface-definitions/ntp.xml.in index 945345898..945345898 100644 --- a/interface-definitions/ntp.xml +++ b/interface-definitions/ntp.xml.in diff --git a/interface-definitions/pppoe-server.xml b/interface-definitions/pppoe-server.xml.in index c2feef65b..6e99c2fd7 100644 --- a/interface-definitions/pppoe-server.xml +++ b/interface-definitions/pppoe-server.xml.in @@ -28,7 +28,7 @@ <regex>^[a-zA-Z0-9]{1,100}</regex> </constraint> <constraintErrorMessage>access-concentrator name limited to alphanumerical characters only (max. 100)</constraintErrorMessage> - </properties> + </properties> </leafNode> <node name="authentication"> <properties> @@ -127,7 +127,7 @@ </leafNode> <leafNode name="fail-time"> <properties> - <help>If server doesn't responds mark it as unavailable for this amount of time in seconds</help> + <help>If server does not responds mark it as unavailable for this amount of time in seconds</help> </properties> </leafNode> </children> @@ -293,7 +293,7 @@ </properties> </leafNode> </children> - </node> + </node> <node name="dnsv6-servers"> <properties> <help>IPv6 Domain Name Service (DNS) server</help> @@ -481,7 +481,7 @@ </leafNode> <leafNode name="prefer"> <properties> - <help>Ask client for MPPE, if it rejects don't fail</help> + <help>Ask client for MPPE, if it rejects do not fail</help> <valueless /> </properties> </leafNode> @@ -526,7 +526,7 @@ <constraintErrorMessage>invalid value</constraintErrorMessage> <valueHelp> <format>deny</format> - <description>Don't negotiate IPv4</description> + <description>Do not negotiate IPv4</description> </valueHelp> <valueHelp> <format>allow</format> @@ -534,7 +534,7 @@ </valueHelp> <valueHelp> <format>prefer</format> - <description>Ask client for IPv4 negotiation, don't fail if it rejects</description> + <description>Ask client for IPv4 negotiation, do not fail if it rejects</description> </valueHelp> <valueHelp> <format>require</format> @@ -551,7 +551,7 @@ <constraintErrorMessage>invalid value</constraintErrorMessage> <valueHelp> <format>deny</format> - <description>Don't negotiate IPv6</description> + <description>Do not negotiate IPv6</description> </valueHelp> <valueHelp> <format>allow</format> @@ -559,7 +559,7 @@ </valueHelp> <valueHelp> <format>prefer</format> - <description>Ask client for IPv6 negotiation, don't fail if it rejects</description> + <description>Ask client for IPv6 negotiation, do not fail if it rejects</description> </valueHelp> <valueHelp> <format>require</format> @@ -603,8 +603,8 @@ </leafNode> <leafNode name="ipv6-accept-peer-intf-id"> <properties> - <help>Accept peer's interface identifier</help> - <valueless /> + <help>Accept peer interface identifier</help> + <valueless /> </properties> </leafNode> </children> diff --git a/interface-definitions/pptp-server.xml b/interface-definitions/pptp-server.xml.in index 5d16f8b9f..3b4ea4f17 100644 --- a/interface-definitions/pptp-server.xml +++ b/interface-definitions/pptp-server.xml.in @@ -58,7 +58,7 @@ </properties> </leafNode> </children> - </node> + </node> <node name="wins-servers"> <properties> <help>Windows Internet Name Service (WINS) server settings</help> @@ -148,7 +148,7 @@ </valueHelp> <valueHelp> <format>prefer</format> - <description>ask client for mppe, if it rejects don't fail</description> + <description>ask client for mppe, if it rejects do not fail</description> </valueHelp> <valueHelp> <format>require</format> @@ -236,7 +236,7 @@ </leafNode> <leafNode name="fail-time"> <properties> - <help>If server doesn't responds mark it as unavailable for this amount of time in seconds</help> + <help>If server does not responds mark it as unavailable for this time (seconds)</help> </properties> </leafNode> </children> diff --git a/interface-definitions/protocols-bfd.xml b/interface-definitions/protocols-bfd.xml.in index 62e2c87b9..62e2c87b9 100644 --- a/interface-definitions/protocols-bfd.xml +++ b/interface-definitions/protocols-bfd.xml.in diff --git a/interface-definitions/snmp.xml b/interface-definitions/snmp.xml.in index bdfbd4ab6..bdfbd4ab6 100644 --- a/interface-definitions/snmp.xml +++ b/interface-definitions/snmp.xml.in diff --git a/interface-definitions/ssh.xml b/interface-definitions/ssh.xml.in index c0ce976d6..8dea94d05 100644 --- a/interface-definitions/ssh.xml +++ b/interface-definitions/ssh.xml.in @@ -83,7 +83,7 @@ </leafNode> <leafNode name="disable-host-validation"> <properties> - <help>Don't validate the remote host name with DNS</help> + <help>Disable IP Address to Hostname lookup</help> <valueless/> </properties> </leafNode> @@ -171,7 +171,7 @@ <properties> <help>how often send keep alives in seconds</help> <constraint> - <validator name="numeric" argument="--range 1-65535"/> + <validator name="numeric" argument="--range 1-65535"/> </constraint> </properties> </leafNode> diff --git a/interface-definitions/sstp.xml b/interface-definitions/sstp.xml.in index d944baaad..290b45a98 100644 --- a/interface-definitions/sstp.xml +++ b/interface-definitions/sstp.xml.in @@ -134,7 +134,7 @@ </leafNode> <leafNode name="fail-time"> <properties> - <help>If server doesn't responds mark it as unavailable for this amount of time in seconds</help> + <help>If server does not responds mark it as unavailable for this time (seconds)</help> </properties> </leafNode> </children> diff --git a/interface-definitions/system-proxy.xml b/interface-definitions/system-proxy.xml.in index f43702fc8..4b21139a6 100644 --- a/interface-definitions/system-proxy.xml +++ b/interface-definitions/system-proxy.xml.in @@ -11,7 +11,7 @@ <properties> <help>Proxy URL</help> <constraint> - <regex>^http://[a-z0-9\.]+$</regex> + <regex>http://[a-z0-9\.]+$</regex> </constraint> </properties> </leafNode> diff --git a/interface-definitions/system-syslog.xml b/interface-definitions/system-syslog.xml.in index 8f4b105c8..cce79a4c2 100644 --- a/interface-definitions/system-syslog.xml +++ b/interface-definitions/system-syslog.xml.in @@ -10,7 +10,7 @@ <children> <tagNode name="user"> <properties> - <help>Logging to specific user's terminal</help> + <help>Logging to specific terminal of given user</help> <constraint> <regex>^[a-z_][a-z0-9_-]{1,31}[$]?</regex> </constraint> @@ -213,7 +213,7 @@ <constraint> <regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex> </constraint> - <constraintErrorMessage>Invalid facility type</constraintErrorMessage> + <constraintErrorMessage>Invalid facility type</constraintErrorMessage> <valueHelp> <format>all</format> <description>All facilities excluding "mark"</description> @@ -574,7 +574,7 @@ <help>time interval how often a mark message is being sent in seconds (default: 1200)</help> <constraint> <validator name="numeric" argument="--positive"/> - </constraint> + </constraint> </properties> </leafNode> </children> diff --git a/interface-definitions/tftp-server.xml b/interface-definitions/tftp-server.xml.in index 2874b034c..2874b034c 100644 --- a/interface-definitions/tftp-server.xml +++ b/interface-definitions/tftp-server.xml.in diff --git a/interface-definitions/vrrp.xml b/interface-definitions/vrrp.xml.in index 2884ef613..2884ef613 100644 --- a/interface-definitions/vrrp.xml +++ b/interface-definitions/vrrp.xml.in diff --git a/python/vyos/config.py b/python/vyos/config.py index 892dcbff7..1a0da3e54 100644 --- a/python/vyos/config.py +++ b/python/vyos/config.py @@ -107,7 +107,7 @@ class Config(object): # Session config ("active") only exists in conf mode. # In op mode, we'll just use the same running config for both active and session configs. if self.in_session(): - session_config_text = self._run([self._cli_shell_api, '--show-working-only', '--show-show-defaults', 'showConfig']) + session_config_text = self._run([self._cli_shell_api, '--show-working-only', '--show-show-defaults', '--show-ignore-edit', 'showConfig']) else: session_config_text = running_config_text @@ -194,7 +194,8 @@ class Config(object): else: # libvyosconfig exists() works only for _nodes_, not _values_ # libvyattacfg one also worked for values, so we emulate that case here - path = re.split(r'\s+', path) + if isinstance(path, str): + path = re.split(r'\s*', path) path_without_value = path[:-1] path_str = " ".join(path_without_value) try: diff --git a/src/op_mode/powerctrl.py b/src/op_mode/powerctrl.py index 8de25d752..a6188ec74 100755 --- a/src/op_mode/powerctrl.py +++ b/src/op_mode/powerctrl.py @@ -27,7 +27,10 @@ from vyos.util import ask_yes_no def parse_time(s): try: - return datetime.strptime(s, "%H:%M").time() + if re.match(r'^\d{1,2}$', s): + return datetime.strptime(s, "%M").time() + else: + return datetime.strptime(s, "%H:%M").time() except ValueError: return None |