summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2024-01-07 09:24:10 +0100
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2024-01-10 00:42:22 +0100
commitdaffee2cbf001dab13799f5b2b69330162491214 (patch)
tree7164b748eb92fb943773761715d4de9f8d91a875 /interface-definitions
parentdff740f3cfb57757146d465d994499c552876359 (diff)
downloadvyos-1x-daffee2cbf001dab13799f5b2b69330162491214.tar.gz
vyos-1x-daffee2cbf001dab13799f5b2b69330162491214.zip
dhcp: T3316: Move options to separate node and extend scopes
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/include/dhcp/option-v4.xml.i257
-rw-r--r--interface-definitions/include/version/dhcp-server-version.xml.i2
-rw-r--r--interface-definitions/service_dhcp-server.xml.in258
3 files changed, 264 insertions, 253 deletions
diff --git a/interface-definitions/include/dhcp/option-v4.xml.i b/interface-definitions/include/dhcp/option-v4.xml.i
new file mode 100644
index 000000000..bd6fc6043
--- /dev/null
+++ b/interface-definitions/include/dhcp/option-v4.xml.i
@@ -0,0 +1,257 @@
+<!-- include start from dhcp/option-v4.xml.i -->
+<node name="option">
+ <properties>
+ <help>DHCP option</help>
+ </properties>
+ <children>
+ #include <include/dhcp/captive-portal.xml.i>
+ #include <include/dhcp/domain-name.xml.i>
+ #include <include/dhcp/domain-search.xml.i>
+ #include <include/dhcp/ntp-server.xml.i>
+ #include <include/name-server-ipv4.xml.i>
+ <leafNode name="bootfile-name">
+ <properties>
+ <help>Bootstrap file name</help>
+ <constraint>
+ <regex>[[:ascii:]]{1,253}</regex>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="bootfile-server">
+ <properties>
+ <help>Server from which the initial boot file is to be loaded</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Bootfile server IPv4 address</description>
+ </valueHelp>
+ <valueHelp>
+ <format>hostname</format>
+ <description>Bootfile server FQDN</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ <validator name="fqdn"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="bootfile-size">
+ <properties>
+ <help>Bootstrap file size</help>
+ <valueHelp>
+ <format>u32:1-16</format>
+ <description>Bootstrap file size in 512 byte blocks</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-16"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="client-prefix-length">
+ <properties>
+ <help>Specifies the clients subnet mask as per RFC 950. If unset, subnet declaration is used.</help>
+ <valueHelp>
+ <format>u32:0-32</format>
+ <description>DHCP client prefix length must be 0 to 32</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-32"/>
+ </constraint>
+ <constraintErrorMessage>DHCP client prefix length must be 0 to 32</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="default-router">
+ <properties>
+ <help>IP address of default router</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Default router IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="ip-forwarding">
+ <properties>
+ <help>Enable IP forwarding on client</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="ipv6-only-preferred">
+ <properties>
+ <help>Disable IPv4 on IPv6 only hosts (RFC 8925)</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>Seconds must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="pop-server">
+ <properties>
+ <help>IP address of POP3 server</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>POP3 server IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="server-identifier">
+ <properties>
+ <help>Address for DHCP server identifier</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>DHCP server identifier IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="smtp-server">
+ <properties>
+ <help>IP address of SMTP server</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>SMTP server IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ <tagNode name="static-route">
+ <properties>
+ <help>Classless static route destination subnet</help>
+ <valueHelp>
+ <format>ipv4net</format>
+ <description>IPv4 address and prefix length</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-prefix"/>
+ </constraint>
+ </properties>
+ <children>
+ <leafNode name="next-hop">
+ <properties>
+ <help>IP address of router to be used to reach the destination subnet</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address of router</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ip-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode >
+ <leafNode name="tftp-server-name">
+ <properties>
+ <help>TFTP server name</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>TFTP server IPv4 address</description>
+ </valueHelp>
+ <valueHelp>
+ <format>hostname</format>
+ <description>TFTP server FQDN</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ <validator name="fqdn"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="time-offset">
+ <properties>
+ <help>Client subnet offset in seconds from Coordinated Universal Time (UTC)</help>
+ <valueHelp>
+ <format>[-]N</format>
+ <description>Time offset (number, may be negative)</description>
+ </valueHelp>
+ <constraint>
+ <regex>-?[0-9]+</regex>
+ </constraint>
+ <constraintErrorMessage>Invalid time offset value</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="time-server">
+ <properties>
+ <help>IP address of time server</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>Time server IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="time-zone">
+ <properties>
+ <help>Time zone to send to clients. Uses RFC4833 options 100 and 101</help>
+ <completionHelp>
+ <script>timedatectl list-timezones</script>
+ </completionHelp>
+ <constraint>
+ <validator name="timezone" argument="--validate"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <node name="vendor-option">
+ <properties>
+ <help>Vendor Specific Options</help>
+ </properties>
+ <children>
+ <node name="ubiquiti">
+ <properties>
+ <help>Ubiquiti specific parameters</help>
+ </properties>
+ <children>
+ <leafNode name="unifi-controller">
+ <properties>
+ <help>Address of UniFi controller</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IP address of UniFi controller</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <leafNode name="wins-server">
+ <properties>
+ <help>IP address for Windows Internet Name Service (WINS) server</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>WINS server IPv4 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="wpad-url">
+ <properties>
+ <help>Web Proxy Autodiscovery (WPAD) URL</help>
+ </properties>
+ </leafNode>
+ </children>
+</node>
+<!-- include end -->
diff --git a/interface-definitions/include/version/dhcp-server-version.xml.i b/interface-definitions/include/version/dhcp-server-version.xml.i
index cc84ea8b9..d83172e72 100644
--- a/interface-definitions/include/version/dhcp-server-version.xml.i
+++ b/interface-definitions/include/version/dhcp-server-version.xml.i
@@ -1,3 +1,3 @@
<!-- include start from include/version/dhcp-server-version.xml.i -->
-<syntaxVersion component='dhcp-server' version='8'></syntaxVersion>
+<syntaxVersion component='dhcp-server' version='9'></syntaxVersion>
<!-- include end -->
diff --git a/interface-definitions/service_dhcp-server.xml.in b/interface-definitions/service_dhcp-server.xml.in
index 8e13f9372..a5cee62d1 100644
--- a/interface-definitions/service_dhcp-server.xml.in
+++ b/interface-definitions/service_dhcp-server.xml.in
@@ -89,12 +89,9 @@
<valueless/>
</properties>
</leafNode>
- #include <include/dhcp/domain-name.xml.i>
- #include <include/dhcp/domain-search.xml.i>
- #include <include/dhcp/ntp-server.xml.i>
+ #include <include/dhcp/option-v4.xml.i>
#include <include/generic-description.xml.i>
#include <include/generic-disable-node.xml.i>
- #include <include/name-server-ipv4.xml.i>
<tagNode name="subnet">
<properties>
<help>DHCP subnet for shared network</help>
@@ -108,73 +105,9 @@
<constraintErrorMessage>Invalid IPv4 subnet definition</constraintErrorMessage>
</properties>
<children>
- <leafNode name="bootfile-name">
- <properties>
- <help>Bootstrap file name</help>
- <constraint>
- <regex>[[:ascii:]]{1,253}</regex>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="bootfile-server">
- <properties>
- <help>Server from which the initial boot file is to be loaded</help>
- <valueHelp>
- <format>ipv4</format>
- <description>Bootfile server IPv4 address</description>
- </valueHelp>
- <valueHelp>
- <format>hostname</format>
- <description>Bootfile server FQDN</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- <validator name="fqdn"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="bootfile-size">
- <properties>
- <help>Bootstrap file size</help>
- <valueHelp>
- <format>u32:1-16</format>
- <description>Bootstrap file size in 512 byte blocks</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-16"/>
- </constraint>
- </properties>
- </leafNode>
- #include <include/dhcp/captive-portal.xml.i>
- <leafNode name="client-prefix-length">
- <properties>
- <help>Specifies the clients subnet mask as per RFC 950. If unset, subnet declaration is used.</help>
- <valueHelp>
- <format>u32:0-32</format>
- <description>DHCP client prefix length must be 0 to 32</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-32"/>
- </constraint>
- <constraintErrorMessage>DHCP client prefix length must be 0 to 32</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="default-router">
- <properties>
- <help>IP address of default router</help>
- <valueHelp>
- <format>ipv4</format>
- <description>Default router IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- #include <include/dhcp/domain-name.xml.i>
- #include <include/dhcp/domain-search.xml.i>
+ #include <include/dhcp/option-v4.xml.i>
#include <include/generic-description.xml.i>
- #include <include/name-server-ipv4.xml.i>
+ #include <include/generic-disable-node.xml.i>
<leafNode name="exclude">
<properties>
<help>IP address to exclude from DHCP lease range</help>
@@ -188,12 +121,6 @@
<multi/>
</properties>
</leafNode>
- <leafNode name="ip-forwarding">
- <properties>
- <help>Enable IP forwarding on client</help>
- <valueless/>
- </properties>
- </leafNode>
<leafNode name="lease">
<properties>
<help>Lease timeout in seconds</help>
@@ -208,45 +135,6 @@
</properties>
<defaultValue>86400</defaultValue>
</leafNode>
- #include <include/dhcp/ntp-server.xml.i>
- <leafNode name="pop-server">
- <properties>
- <help>IP address of POP3 server</help>
- <valueHelp>
- <format>ipv4</format>
- <description>POP3 server IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
- <leafNode name="server-identifier">
- <properties>
- <help>Address for DHCP server identifier</help>
- <valueHelp>
- <format>ipv4</format>
- <description>DHCP server identifier IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="smtp-server">
- <properties>
- <help>IP address of SMTP server</help>
- <valueHelp>
- <format>ipv4</format>
- <description>SMTP server IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
<tagNode name="range">
<properties>
<help>DHCP lease range</help>
@@ -256,6 +144,7 @@
<constraintErrorMessage>Invalid range name, may only be alphanumeric, dot and hyphen</constraintErrorMessage>
</properties>
<children>
+ #include <include/dhcp/option-v4.xml.i>
<leafNode name="start">
<properties>
<help>First IP address for DHCP lease range</help>
@@ -291,6 +180,8 @@
<constraintErrorMessage>Invalid static mapping hostname</constraintErrorMessage>
</properties>
<children>
+ #include <include/dhcp/option-v4.xml.i>
+ #include <include/generic-description.xml.i>
#include <include/generic-disable-node.xml.i>
<leafNode name="ip-address">
<properties>
@@ -308,143 +199,6 @@
#include <include/interface/duid.xml.i>
</children>
</tagNode>
- <tagNode name="static-route">
- <properties>
- <help>Classless static route destination subnet</help>
- <valueHelp>
- <format>ipv4net</format>
- <description>IPv4 address and prefix length</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-prefix"/>
- </constraint>
- </properties>
- <children>
- <leafNode name="next-hop">
- <properties>
- <help>IP address of router to be used to reach the destination subnet</help>
- <valueHelp>
- <format>ipv4</format>
- <description>IPv4 address of router</description>
- </valueHelp>
- <constraint>
- <validator name="ip-address"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode >
- <leafNode name="ipv6-only-preferred">
- <properties>
- <help>Disable IPv4 on IPv6 only hosts (RFC 8925)</help>
- <valueHelp>
- <format>u32</format>
- <description>Seconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-4294967295"/>
- </constraint>
- <constraintErrorMessage>Seconds must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="tftp-server-name">
- <properties>
- <help>TFTP server name</help>
- <valueHelp>
- <format>ipv4</format>
- <description>TFTP server IPv4 address</description>
- </valueHelp>
- <valueHelp>
- <format>hostname</format>
- <description>TFTP server FQDN</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- <validator name="fqdn"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="time-offset">
- <properties>
- <help>Client subnet offset in seconds from Coordinated Universal Time (UTC)</help>
- <valueHelp>
- <format>[-]N</format>
- <description>Time offset (number, may be negative)</description>
- </valueHelp>
- <constraint>
- <regex>-?[0-9]+</regex>
- </constraint>
- <constraintErrorMessage>Invalid time offset value</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="time-server">
- <properties>
- <help>IP address of time server</help>
- <valueHelp>
- <format>ipv4</format>
- <description>Time server IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
- <leafNode name="time-zone">
- <properties>
- <help>Time zone to send to clients. Uses RFC4833 options 100 and 101</help>
- <completionHelp>
- <script>timedatectl list-timezones</script>
- </completionHelp>
- <constraint>
- <validator name="timezone" argument="--validate"/>
- </constraint>
- </properties>
- </leafNode>
- <node name="vendor-option">
- <properties>
- <help>Vendor Specific Options</help>
- </properties>
- <children>
- <node name="ubiquiti">
- <properties>
- <help>Ubiquiti specific parameters</help>
- </properties>
- <children>
- <leafNode name="unifi-controller">
- <properties>
- <help>Address of UniFi controller</help>
- <valueHelp>
- <format>ipv4</format>
- <description>IP address of UniFi controller</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </node>
- </children>
- </node>
- <leafNode name="wins-server">
- <properties>
- <help>IP address for Windows Internet Name Service (WINS) server</help>
- <valueHelp>
- <format>ipv4</format>
- <description>WINS server IPv4 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
- <leafNode name="wpad-url">
- <properties>
- <help>Web Proxy Autodiscovery (WPAD) URL</help>
- </properties>
- </leafNode>
</children>
</tagNode>
</children>