diff --git a/Makefile b/Makefile index 26f591e29..834e8dd3f 100644 --- a/Makefile +++ b/Makefile @@ -1,99 +1,101 @@ 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 @gcc -ansi -x c -E -undef -nostdinc -P -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: $(BUILD_DIR) $(obj) mkdir -p $(TMPL_DIR) 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 rm -f $(TMPL_DIR)/system/options/node.def rm -f $(TMPL_DIR)/vpn/node.def rm -f $(TMPL_DIR)/vpn/ipsec/node.def .PHONY: op_mode_definitions .ONESHELL: op_mode_definitions: mkdir -p $(OP_TMPL_DIR) find $(CURDIR)/op-mode-definitions/ -type f -name "*.xml" | xargs -I {} $(CURDIR)/scripts/build-command-op-templates {} $(CURDIR)/schema/op-mode-definition.rng $(OP_TMPL_DIR) || exit 1 # XXX: delete top level op mode node.def's that now live in other packages rm -f $(OP_TMPL_DIR)/clear/node.def rm -f $(OP_TMPL_DIR)/clear/interfaces/node.def rm -f $(OP_TMPL_DIR)/set/node.def rm -f $(OP_TMPL_DIR)/show/node.def rm -f $(OP_TMPL_DIR)/show/interfaces/node.def rm -f $(OP_TMPL_DIR)/show/ip/node.def rm -f $(OP_TMPL_DIR)/show/ip/route/node.def rm -f $(OP_TMPL_DIR)/show/ipv6/node.def rm -f $(OP_TMPL_DIR)/show/ipv6/route/node.def rm -f $(OP_TMPL_DIR)/restart/node.def rm -f $(OP_TMPL_DIR)/monitor/node.def rm -f $(OP_TMPL_DIR)/generate/node.def rm -f $(OP_TMPL_DIR)/show/vpn/node.def rm -f $(OP_TMPL_DIR)/show/system/node.def rm -f $(OP_TMPL_DIR)/delete/node.def rm -f $(OP_TMPL_DIR)/reset/vpn/node.def rm -f $(OP_TMPL_DIR)/show/system/node.def .PHONY: all all: clean interface_definitions op_mode_definitions .PHONY: clean clean: rm -rf $(BUILD_DIR) rm -rf $(TMPL_DIR) rm -rf $(OP_TMPL_DIR) .PHONY: test test: PYTHONPATH=python/ python3 -m "nose" --with-xunit src --with-coverage --cover-erase --cover-xml --cover-package src/conf_mode,src/op_mode,src/completion,src/helpers,src/validators,src/tests --verbose .PHONY: sonar sonar: sonar-scanner -X -Dsonar.login=${SONAR_TOKEN} .PHONY: docs .ONESHELL: docs: sphinx-apidoc -o sphinx/source/ python/ cd sphinx/ PYTHONPATH=../python make html diff --git a/interface-definitions/include/vif-s.xml.i b/interface-definitions/include/vif-s.xml.i new file mode 100644 index 000000000..9726e9156 --- /dev/null +++ b/interface-definitions/include/vif-s.xml.i @@ -0,0 +1,276 @@ +<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> diff --git a/interface-definitions/include/vif.xml.i b/interface-definitions/include/vif.xml.i new file mode 100644 index 000000000..c6268dbe5 --- /dev/null +++ b/interface-definitions/include/vif.xml.i @@ -0,0 +1,185 @@ +<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, 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> + <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> diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in index 12df69364..2f32c7263 100644 --- a/interface-definitions/interfaces-bonding.xml.in +++ b/interface-definitions/interfaces-bonding.xml.in @@ -1,665 +1,263 @@ <?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> <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> + #include "include/vif-s.xml.i" + #include "include/vif.xml.i" </children> </tagNode> </children> </node> </interfaceDefinition> diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in index 92cfcd2c2..fee17840c 100644 --- a/interface-definitions/interfaces-ethernet.xml.in +++ b/interface-definitions/interfaces-ethernet.xml.in @@ -1,876 +1,377 @@ <?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" <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, 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> - <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> + #include "include/vif-s.xml.i" + #include "include/vif.xml.i" </children> </tagNode> </children> </node> </interfaceDefinition> diff --git a/interface-definitions/interfaces-wireless.xml.in b/interface-definitions/interfaces-wireless.xml.in index d8779cf72..4d7e5735a 100644 --- a/interface-definitions/interfaces-wireless.xml.in +++ b/interface-definitions/interfaces-wireless.xml.in @@ -1,935 +1,844 @@ <?xml version="1.0"?> <interfaceDefinition> <node name="interfaces"> <children> <tagNode name="wireless" owner="${vyos_conf_scripts_dir}/interfaces-wireless.py"> <properties> <help>Wireless network interface (WiFi/WLAN)</help> <priority>400</priority> <constraint> <regex>wlan[0-9]+$</regex> </constraint> <constraintErrorMessage>Wireless interface must be named wlanN</constraintErrorMessage> <valueHelp> <format>wlanN</format> <description>Wireless (WiFi/WLAN) interface name</description> </valueHelp> </properties> <children> #include "include/address-ipv4-ipv6-dhcp.xml.i" <node name="capabilities"> <properties> <help>HT and VHT capabilities for your card</help> </properties> <children> <node name="ht"> <properties> <help>HT (High Throughput) settings</help> </properties> <children> <leafNode name="40mhz-incapable"> <properties> <help>40MHz intolerance, use 20MHz only!</help> <valueless/> </properties> </leafNode> <leafNode name="auto-powersave"> <properties> <help>Enable WMM-PS unscheduled automatic power aave delivery [U-APSD]</help> <valueless/> </properties> </leafNode> <leafNode name="channel-set-width"> <properties> <help>Supported channel set width</help> <completionHelp> <list>ht20 ht40+ ht40-</list> </completionHelp> <valueHelp> <format>ht20</format> <description>Supported channel set width both 20 MHz only</description> </valueHelp> <valueHelp> <format>ht40+</format> <description>Supported channel set width both 20 MHz and 40 MHz with secondary channel above primary channel</description> </valueHelp> <valueHelp> <format>ht40-</format> <description>Supported channel set width both 20 MHz and 40 MHz with secondary channel below primary channel</description> </valueHelp> <constraint> <regex>(ht20|ht40\+|ht40-)</regex> </constraint> <multi/> </properties> </leafNode> <leafNode name="delayed-block-ack"> <properties> <help>Enable HT-delayed block ack</help> <valueless/> </properties> </leafNode> <leafNode name="dsss-cck-40"> <properties> <help>Enable DSSS_CCK-40</help> <valueless/> </properties> </leafNode> <leafNode name="greenfield"> <properties> <help>Enable HT-greenfield</help> <valueless/> </properties> </leafNode> <leafNode name="ldpc"> <properties> <help>Enable LDPC coding capability</help> <valueless/> </properties> </leafNode> <leafNode name="lsig-protection"> <properties> <help>Enable L-SIG TXOP protection capability</help> <valueless/> </properties> </leafNode> <leafNode name="max-amsdu"> <properties> <help>Set maximum A-MSDU length</help> <completionHelp> <list>3839 7935</list> </completionHelp> <valueHelp> <format>3839</format> <description>Set maximum A-MSDU length to 3839 octets</description> </valueHelp> <valueHelp> <format>7935</format> <description>Set maximum A-MSDU length to 7935 octets</description> </valueHelp> <constraint> <regex>(3839|7935)</regex> </constraint> <multi/> </properties> </leafNode> <leafNode name="short-gi"> <properties> <help>Short GI capabilities</help> <completionHelp> <list>20 40</list> </completionHelp> <valueHelp> <format>20</format> <description>Short GI for 20 MHz</description> </valueHelp> <valueHelp> <format>40</format> <description>Short GI for 40 MHz</description> </valueHelp> <constraint> <regex>(20|40)</regex> </constraint> <multi/> </properties> </leafNode> <leafNode name="smps"> <properties> <help>Spatial Multiplexing Power Save (SMPS) settings</help> <completionHelp> <list>static dynamic</list> </completionHelp> <valueHelp> <format>static</format> <description>STATIC Spatial Multiplexing (SM) Power Save</description> </valueHelp> <valueHelp> <format>dynamic</format> <description>DYNAMIC Spatial Multiplexing (SM) Power Save</description> </valueHelp> <constraint> <regex>(static|dynamic)</regex> </constraint> <multi/> </properties> </leafNode> <node name="stbc"> <properties> <help>Support for sending and receiving PPDU using STBC (Space Time Block Coding)</help> </properties> <children> <leafNode name="rx"> <properties> <help>Enable receiving PPDU using STBC (Space Time Block Coding)</help> <valueHelp> <format>[1-3]+</format> <description>Number of spacial streams that can use RX STBC</description> </valueHelp> <constraint> <regex>[1-3]+</regex> </constraint> <constraintErrorMessage>Invalid capability item</constraintErrorMessage> </properties> </leafNode> <leafNode name="tx"> <properties> <help>Enable sending PPDU using STBC (Space Time Block Coding)</help> <valueless/> </properties> </leafNode> </children> </node> </children> </node> <leafNode name="require-ht"> <properties> <help>Require stations to support HT PHY (reject association if they do not)</help> <completionHelp> <script>echo If you reject non-HT, you also disable 802.11g</script> </completionHelp> <valueless/> </properties> </leafNode> <leafNode name="require-vht"> <properties> <help>Require stations to support VHT PHY (reject association if they do not)</help> <completionHelp> <script>echo If you reject non-VHT, you also disable 802.11n</script> </completionHelp> <valueless/> </properties> </leafNode> <node name="vht"> <properties> <help>VHT (Very High Throughput) settings</help> </properties> <children> <leafNode name="antenna-count"> <properties> <help>Number of antennas on this card</help> <valueHelp> <format>1-9</format> <description>Number of antennas for this card</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 1-9"/> </constraint> </properties> </leafNode> <leafNode name="antenna-pattern-fixed"> <properties> <help>Set if antenna pattern does not change during the lifetime of an association</help> <valueless/> </properties> </leafNode> <leafNode name="beamform"> <properties> <help>Beamforming capabilities</help> <completionHelp> <list>single-user-beamformer single-user-beamformee multi-user-beamformer multi-user-beamformee</list> </completionHelp> <valueHelp> <format>single-user-beamformer</format> <description>Support for operation as single user beamformer</description> </valueHelp> <valueHelp> <format>single-user-beamformee</format> <description>Support for operation as single user beamformee</description> </valueHelp> <valueHelp> <format>multi-user-beamformer</format> <description>Support for operation as multi user beamformer</description> </valueHelp> <valueHelp> <format>multi-user-beamformee</format> <description>Support for operation as multi user beamformee</description> </valueHelp> <constraint> <regex>(single-user-beamformer|single-user-beamformee|multi-user-beamformer|multi-user-beamformee)</regex> </constraint> <multi/> </properties> </leafNode> <node name="center-channel-freq"> <properties> <help>VHT operating channel center frequency</help> </properties> <children> <leafNode name="freq-1"> <properties> <help>VHT operating channel center frequency - center freq 1 (for use with 80, 80+80 and 160 modes)</help> <valueHelp> <format><34-173></format> <description>5Ghz (802.11 a/h/j/n/ac) center channel index (use 42 for primary 80MHz channel 36)</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 34-173"/> </constraint> <constraintErrorMessage>Channel center value must be between 34 and 173</constraintErrorMessage> </properties> </leafNode> <leafNode name="freq-2"> <properties> <help>VHT operating channel center frequency - center freq 2 (for use with the 80+80 mode)</help> <valueHelp> <format>34-173</format> <description>5Ghz (802.11 a/h/j/n/ac) center channel index (use 58 for primary 80MHz channel 52)</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 34-173"/> </constraint> <constraintErrorMessage>Channel center value must be between 34 and 173</constraintErrorMessage> </properties> </leafNode> </children> </node> <leafNode name="channel-set-width"> <properties> <help>VHT operating Channel width</help> <completionHelp> <list>0 1 2 3</list> </completionHelp> <valueHelp> <format>0</format> <description>20 or 40 MHz channel width (default)</description> </valueHelp> <valueHelp> <format>1</format> <description>80 MHz channel width</description> </valueHelp> <valueHelp> <format>2</format> <description>160 MHz channel width</description> </valueHelp> <valueHelp> <format>3</format> <description>80+80 MHz channel width</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-3"/> </constraint> </properties> </leafNode> <leafNode name="ldpc"> <properties> <help>Enable LDPC (Low Density Parity Check) coding capability</help> <valueless/> </properties> </leafNode> <leafNode name="link-adaptation"> <properties> <help>VHT link adaptation capabilities</help> <completionHelp> <list>single-user-beamformer single-user-beamformee multi-user-beamformer multi-user-beamformee</list> </completionHelp> <valueHelp> <format>unsolicited</format> <description>Station provides only unsolicited VHT MFB</description> </valueHelp> <valueHelp> <format>both</format> <description>Station can provide VHT MFB in response to VHT MRQ and unsolicited VHT MFB</description> </valueHelp> <constraint> <regex>(unsolicited|both)</regex> </constraint> <constraintErrorMessage>Invalid capability item</constraintErrorMessage> </properties> </leafNode> <leafNode name="max-mpdu-exp"> <properties> <help>Set the maximum length of A-MPDU pre-EOF padding that the station can receive</help> <valueHelp> <format><0-7></format> <description>Maximum length of A-MPDU pre-EOF padding = 2 pow(13 + x) -1 octets</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-7"/> </constraint> </properties> </leafNode> <leafNode name="max-mpdu"> <properties> <help>Increase Maximum MPDU length to 7991 or 11454 octets (otherwise: 3895 octets)</help> <completionHelp> <list>7991 11454</list> </completionHelp> <valueHelp> <format>7991</format> <description>ncrease Maximum MPDU length to 7991 octets</description> </valueHelp> <valueHelp> <format>11454</format> <description>ncrease Maximum MPDU length to 11454 octets</description> </valueHelp> <constraint> <regex>(7991|11454)</regex> </constraint> </properties> </leafNode> <leafNode name="short-gi"> <properties> <help>Short GI capabilities</help> <completionHelp> <list>80 160</list> </completionHelp> <valueHelp> <format>80</format> <description>Short GI for 80 MHz</description> </valueHelp> <valueHelp> <format>160</format> <description>Short GI for 160 MHz</description> </valueHelp> <constraint> <regex>(80|160)</regex> </constraint> <multi/> </properties> </leafNode> <node name="stbc"> <properties> <help>Support for sending and receiving PPDU using STBC (Space Time Block Coding)</help> </properties> <children> <leafNode name="rx"> <properties> <help>Enable receiving PPDU using STBC (Space Time Block Coding)</help> <valueHelp> <format>[1-4]+</format> <description>Number of spacial streams that can use RX STBC</description> </valueHelp> <constraint> <regex>[1-4]+</regex> </constraint> <constraintErrorMessage>Invalid capability item</constraintErrorMessage> </properties> </leafNode> <leafNode name="tx"> <properties> <help>Enable sending PPDU using STBC (Space Time Block Coding)</help> <valueless/> </properties> </leafNode> </children> </node> <leafNode name="tx-powersave"> <properties> <help>Enable VHT TXOP Power Save Mode</help> <valueless/> </properties> </leafNode> <leafNode name="vht-cf"> <properties> <help>Station supports receiving VHT variant HT Control field</help> <valueless/> </properties> </leafNode> </children> </node> </children> </node> <leafNode name="channel"> <properties> <help>Wireless radio channel (use 0 for ACS auto channel selection)</help> <valueHelp> <format><1-14></format> <description>2.4Ghz (802.11 b/g/n) Channel</description> </valueHelp> <valueHelp> <format><0,34-173></format> <description>5Ghz (802.11 a/h/j/n/ac) Channel</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-0 --range 1-14 --range 34-173"/> </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> <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> <leafNode name="expunge-failing-stations"> <properties> <help>Disassociate stations based on excessive transmission failures</help> <valueless/> </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> <leafNode name="isolate-stations"> <properties> <help>Isolate stations on the AP so they cannot see each other</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="max-stations"> <properties> <help>Maximum number of wireless radio stations. Excess stations will be rejected upon authentication request.</help> <valueHelp> <format><1-2007></format> <description>Number of allowed stations</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 1-2007"/> </constraint> <constraintErrorMessage>Number of stations must be between 1 and 2007</constraintErrorMessage> </properties> </leafNode> <leafNode name="mgmt-frame-protection"> <properties> <help>Management Frame Protection (MFP) according to IEEE 802.11w</help> <completionHelp> <list>disabled optional required</list> </completionHelp> <valueHelp> <format>disabled</format> <description>no MFP (hostapd default)</description> </valueHelp> <valueHelp> <format>optional</format> <description>MFP optional</description> </valueHelp> <valueHelp> <format>required</format> <description>MFP enforced</description> </valueHelp> <constraint> <regex>(disabled|optional|required)</regex> </constraint> </properties> </leafNode> <leafNode name="mode"> <properties> <help>Wireless radio mode</help> <completionHelp> <list>a b g n ac</list> </completionHelp> <valueHelp> <format>a</format> <description>802.11a - 54 Mbits/sec</description> </valueHelp> <valueHelp> <format>b</format> <description>802.11b - 11 Mbits/sec</description> </valueHelp> <valueHelp> <format>g</format> <description>802.11g - 54 Mbits/sec (default)</description> </valueHelp> <valueHelp> <format>n</format> <description>802.11n - 600 Mbits/sec</description> </valueHelp> <valueHelp> <format>ac</format> <description>802.11ac - 1300 Mbits/sec</description> </valueHelp> <constraint> <regex>(a|b|g|n|ac)</regex> </constraint> </properties> </leafNode> <leafNode name="physical-device"> <properties> <help>Wireless physical device</help> <completionHelp> <script>${vyos_completion_dir}/list_wireless_phys.sh</script> </completionHelp> </properties> </leafNode> <leafNode name="reduce-transmit-power"> <properties> <help>Transmission power reduction in dBm</help> <valueHelp> <format><0-255></format> <description>TX power reduction in dBm</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 0-255"/> </constraint> <constraintErrorMessage>dBm value must be between 0 and 255</constraintErrorMessage> </properties> </leafNode> <node name="security"> <properties> <help>Wireless security settings</help> </properties> <children> <node name="wep"> <properties> <help>Wired Equivalent Privacy (WEP) parameters</help> </properties> <children> <leafNode name="key"> <properties> <help>WEP encryption key</help> <valueHelp> <format><hexdigits></format> <description>Wired Equivalent Privacy key</description> </valueHelp> <constraint> <regex>([a-fA-F0-9]{10}|[a-fA-F0-9]{26}|[a-fA-F0-9]{32})</regex> </constraint> <constraintErrorMessage>Invalid WEP key</constraintErrorMessage> <multi/> </properties> </leafNode> </children> </node> <node name="wpa"> <properties> <help>Wifi Protected Access (WPA) parameters</help> </properties> <children> <leafNode name="cipher"> <properties> <help>Cipher suite for WPA</help> <completionHelp> <list>TKIP CCMP</list> </completionHelp> <valueHelp> <format>CCMP</format> <description>AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]</description> </valueHelp> <valueHelp> <format>TKIP</format> <description>Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]</description> </valueHelp> <constraint> <regex>(CCMP|TKIP)</regex> </constraint> <constraintErrorMessage>Invalid WEP key</constraintErrorMessage> <multi/> </properties> </leafNode> <leafNode name="mode"> <properties> <help>WPA mode</help> <completionHelp> <list>wpa wpa2 both</list> </completionHelp> <valueHelp> <format>wpa</format> <description>WPA (IEEE 802.11i/D3.0)</description> </valueHelp> <valueHelp> <format>wpa2</format> <description>WPA2 (full IEEE 802.11i/RSN)</description> </valueHelp> <valueHelp> <format>both</format> <description>Allow both WPA and WPA2</description> </valueHelp> <constraint> <regex>(wpa|wpa2|both)</regex> </constraint> <constraintErrorMessage>Unknown WPA mode</constraintErrorMessage> </properties> </leafNode> <leafNode name="passphrase"> <properties> <help>WPA personal shared pass phrase. If you are using special characters in the WPA passphrase then single quotes are required.</help> <valueHelp> <format><text></format> <description>Passphrase of at least 8 but not more than 63 printable characters</description> </valueHelp> <constraint> <regex>.{8,63}$</regex> </constraint> <constraintErrorMessage>Invalid WPA pass phrase, must be 8 to 63 printable characters!</constraintErrorMessage> </properties> </leafNode> <node name="radius"> <properties> <help>RADIUS specific configuration</help> </properties> <children> <leafNode name="source-address"> <properties> <help>RADIUS client forced local IP address</help> <valueHelp> <format>ipv4</format> <description>IPv4 address of RADIUS server</description> </valueHelp> </properties> </leafNode> <tagNode name="server"> <properties> <help>IP address of RADIUS server</help> <valueHelp> <format>ipv4</format> <description>IPv4 address of RADIUS server</description> </valueHelp> </properties> <children> <leafNode name="accounting"> <properties> <help>Enable RADIUS server to receive accounting info</help> <valueless/> </properties> </leafNode> <leafNode name="port"> <properties> <help>RADIUS server port (default: 1812)</help> <valueHelp> <format>1-65535</format> <description>RADIUS server port</description> </valueHelp> <constraint> <validator name="numeric" argument="--range 1-65535"/> </constraint> </properties> </leafNode> <leafNode name="key"> <properties> <help>RADIUS shared secret key</help> </properties> </leafNode> </children> </tagNode> </children> </node> </children> </node> </children> </node> <leafNode name="ssid"> <properties> <help>Wireless access-point service set identifier (SSID)</help> <constraint> <regex>.{1,32}$</regex> </constraint> <constraintErrorMessage>Invalid SSID</constraintErrorMessage> </properties> </leafNode> <leafNode name="type"> <properties> <help>Wireless device type for this interface</help> <completionHelp> <list>access-point station monitor</list> </completionHelp> <valueHelp> <format>access-point</format> <description>Access-point forwards packets between other nodes</description> </valueHelp> <valueHelp> <format>station</format> <description>Connects to another access point</description> </valueHelp> <valueHelp> <format>monitor</format> <description>Passively monitor all packets on the frequency/channel</description> </valueHelp> <constraint> <regex>(access-point|station|monitor)</regex> </constraint> <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> </node> <node name="system"> <children> <leafNode name="wifi-regulatory-domain" owner="${vyos_conf_scripts_dir}/system-wifi-regdom.py"> <properties> <help>Wireless regulatory domain (mandatory)</help> <priority>305</priority> <completionHelp> <list>US EU JP DE UK CN</list> </completionHelp> <valueHelp> <format><code%gt;</format> <description>Country code (ISO/IEC 3166-1)</description> </valueHelp> <constraint> <regex>[A-Z][A-Z]$</regex> </constraint> <constraintErrorMessage>invalid country code</constraintErrorMessage> </properties> </leafNode> </children> </node> </interfaceDefinition>