summaryrefslogtreecommitdiff
path: root/interface-definitions
diff options
context:
space:
mode:
authorDavid Vølker <david@voelker.dk>2025-08-15 09:31:49 +0200
committerDavid Vølker <david@voelker.dk>2025-08-15 09:31:49 +0200
commit974f9a5d5e13241e2b4ea54152bf835db6b7feff (patch)
treeb816d2c6c6bea3e670f44e880f32b10d311d353e /interface-definitions
parent862817a7207c5b5d17c67451bac602d296b88230 (diff)
downloadvyos-1x-974f9a5d5e13241e2b4ea54152bf835db6b7feff.tar.gz
vyos-1x-974f9a5d5e13241e2b4ea54152bf835db6b7feff.zip
kea: T6211: add VRF support for KEA dhcp server
Diffstat (limited to 'interface-definitions')
-rw-r--r--interface-definitions/include/dhcp/dhcp-server-common-config.xml.i342
-rw-r--r--interface-definitions/include/dhcp/dhcpv6-server-common-config.xml.i276
-rw-r--r--interface-definitions/service_dhcp-server.xml.in341
-rw-r--r--interface-definitions/service_dhcpv6-server.xml.in275
-rw-r--r--interface-definitions/vrf.xml.in25
5 files changed, 645 insertions, 614 deletions
diff --git a/interface-definitions/include/dhcp/dhcp-server-common-config.xml.i b/interface-definitions/include/dhcp/dhcp-server-common-config.xml.i
new file mode 100644
index 000000000..60eb01489
--- /dev/null
+++ b/interface-definitions/include/dhcp/dhcp-server-common-config.xml.i
@@ -0,0 +1,342 @@
+<!-- include start from dhcp/dhcp-server-common-config.xml.i -->
+#include <include/generic-disable-node.xml.i>
+<node name="dynamic-dns-update">
+ <properties>
+ <help>Dynamically update Domain Name System (RFC4702)</help>
+ </properties>
+ <children>
+ #include <include/dhcp/ddns-settings.xml.i>
+ <tagNode name="tsig-key">
+ <properties>
+ <help>TSIG key definition for DNS updates</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, hyphen and underscore</constraintErrorMessage>
+ </properties>
+ <children>
+ <leafNode name="algorithm">
+ <properties>
+ <help>TSIG key algorithm</help>
+ <completionHelp>
+ <list>md5 sha1 sha224 sha256 sha384 sha512</list>
+ </completionHelp>
+ <valueHelp>
+ <format>md5</format>
+ <description>MD5 HMAC algorithm</description>
+ </valueHelp>
+ <valueHelp>
+ <format>sha1</format>
+ <description>SHA1 HMAC algorithm</description>
+ </valueHelp>
+ <valueHelp>
+ <format>sha224</format>
+ <description>SHA224 HMAC algorithm</description>
+ </valueHelp>
+ <valueHelp>
+ <format>sha256</format>
+ <description>SHA256 HMAC algorithm</description>
+ </valueHelp>
+ <valueHelp>
+ <format>sha384</format>
+ <description>SHA384 HMAC algorithm</description>
+ </valueHelp>
+ <valueHelp>
+ <format>sha512</format>
+ <description>SHA512 HMAC algorithm</description>
+ </valueHelp>
+ <constraint>
+ <regex>(md5|sha1|sha224|sha256|sha384|sha512)</regex>
+ </constraint>
+ <constraintErrorMessage>Invalid TSIG key algorithm</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="secret">
+ <properties>
+ <help>TSIG key secret (base64-encoded)</help>
+ <constraint>
+ <validator name="base64"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <tagNode name="forward-domain">
+ <properties>
+ <help>Forward DNS domain name</help>
+ <constraint>
+ <validator name="fqdn"/>
+ </constraint>
+ <constraintErrorMessage>Invalid forward DNS domain name</constraintErrorMessage>
+ </properties>
+ <children>
+ <leafNode name="key-name">
+ <properties>
+ <help>TSIG key name for forward DNS updates</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, numbers, hyphen and underscore</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/dhcp/ddns-dns-server.xml.i>
+ </children>
+ </tagNode>
+ <tagNode name="reverse-domain">
+ <properties>
+ <help>Reverse DNS domain name</help>
+ <constraint>
+ <validator name="fqdn"/>
+ </constraint>
+ <constraintErrorMessage>Invalid reverse DNS domain name</constraintErrorMessage>
+ </properties>
+ <children>
+ <leafNode name="key-name">
+ <properties>
+ <help>TSIG key name for reverse DNS updates</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, numbers, hyphen and underscore</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/dhcp/ddns-dns-server.xml.i>
+ </children>
+ </tagNode>
+ </children>
+</node>
+<node name="high-availability">
+ <properties>
+ <help>DHCP high availability configuration</help>
+ </properties>
+ <children>
+ #include <include/source-address-ipv4.xml.i>
+ <leafNode name="mode">
+ <properties>
+ <help>Configure high availability mode</help>
+ <completionHelp>
+ <list>active-active active-passive</list>
+ </completionHelp>
+ <valueHelp>
+ <format>active-active</format>
+ <description>Both server attend DHCP requests</description>
+ </valueHelp>
+ <valueHelp>
+ <format>active-passive</format>
+ <description>Only primary server attends DHCP requests</description>
+ </valueHelp>
+ <constraint>
+ <regex>(active-active|active-passive)</regex>
+ </constraint>
+ <constraintErrorMessage>Invalid DHCP high availability mode</constraintErrorMessage>
+ </properties>
+ <defaultValue>active-active</defaultValue>
+ </leafNode>
+ <leafNode name="remote">
+ <properties>
+ <help>IPv4 remote address used for connection</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address of high availability peer</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="name">
+ <properties>
+ <help>Peer name used to identify connection</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid failover peer name. May only contain letters, numbers and .-_</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="status">
+ <properties>
+ <help>High availability hierarchy</help>
+ <completionHelp>
+ <list>primary secondary</list>
+ </completionHelp>
+ <valueHelp>
+ <format>primary</format>
+ <description>Configure this server to be the primary node</description>
+ </valueHelp>
+ <valueHelp>
+ <format>secondary</format>
+ <description>Configure this server to be the secondary node</description>
+ </valueHelp>
+ <constraint>
+ <regex>(primary|secondary)</regex>
+ </constraint>
+ <constraintErrorMessage>Invalid DHCP high availability peer status</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ #include <include/pki/ca-certificate.xml.i>
+ #include <include/pki/certificate.xml.i>
+ </children>
+</node>
+<leafNode name="hostfile-update">
+ <properties>
+ <help>Updating /etc/hosts file (per client lease)</help>
+ <valueless/>
+ </properties>
+</leafNode>
+#include <include/listen-address-ipv4.xml.i>
+#include <include/listen-interface-multi-broadcast.xml.i>
+<tagNode name="shared-network-name">
+ <properties>
+ <help>Name of DHCP shared network</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
+ </properties>
+ <children>
+ <node name="dynamic-dns-update">
+ <properties>
+ <help>Dynamically update Domain Name System (RFC4702)</help>
+ </properties>
+ <children>
+ #include <include/dhcp/ddns-settings.xml.i>
+ </children>
+ </node>
+ <leafNode name="authoritative">
+ <properties>
+ <help>Option to make DHCP server authoritative for this physical network</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ #include <include/dhcp/option-v4.xml.i>
+ #include <include/dhcp/ping-check.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/generic-disable-node.xml.i>
+ <tagNode name="subnet">
+ <properties>
+ <help>DHCP subnet for shared network</help>
+ <valueHelp>
+ <format>ipv4net</format>
+ <description>IPv4 address and prefix length</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-prefix"/>
+ </constraint>
+ <constraintErrorMessage>Invalid IPv4 subnet definition</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/dhcp/option-v4.xml.i>
+ #include <include/dhcp/ping-check.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/generic-disable-node.xml.i>
+ <node name="dynamic-dns-update">
+ <properties>
+ <help>Dynamically update Domain Name System (RFC4702)</help>
+ </properties>
+ <children>
+ #include <include/dhcp/ddns-settings.xml.i>
+ </children>
+ </node>
+ <leafNode name="exclude">
+ <properties>
+ <help>IP address to exclude from DHCP lease range</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 address to exclude from lease range</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ <multi/>
+ </properties>
+ </leafNode>
+ <leafNode name="ignore-client-id">
+ <properties>
+ <help>Ignore client identifier for lease lookups</help>
+ <valueless/>
+ </properties>
+ </leafNode>
+ <leafNode name="lease">
+ <properties>
+ <help>Lease timeout in seconds</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>DHCP lease time in seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-4294967295"/>
+ </constraint>
+ <constraintErrorMessage>DHCP lease time must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
+ </properties>
+ <defaultValue>86400</defaultValue>
+ </leafNode>
+ <tagNode name="range">
+ <properties>
+ <help>DHCP lease range</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+ </constraint>
+ <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>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 start address of pool</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="stop">
+ <properties>
+ <help>Last IP address for DHCP lease range</help>
+ <valueHelp>
+ <format>ipv4</format>
+ <description>IPv4 end address of pool</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv4-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <tagNode name="static-mapping">
+ <properties>
+ <help>Hostname for static mapping reservation</help>
+ <constraint>
+ <validator name="fqdn"/>
+ </constraint>
+ <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>
+ #include <include/ip-address.xml.i>
+ #include <include/interface/mac.xml.i>
+ #include <include/interface/duid.xml.i>
+ </children>
+ </tagNode>
+ <leafNode name="subnet-id">
+ <properties>
+ <help>Unique ID mapped to leases in the lease file</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Unique subnet ID</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+</tagNode>
+<!-- include end -->
diff --git a/interface-definitions/include/dhcp/dhcpv6-server-common-config.xml.i b/interface-definitions/include/dhcp/dhcpv6-server-common-config.xml.i
new file mode 100644
index 000000000..798ecac4b
--- /dev/null
+++ b/interface-definitions/include/dhcp/dhcpv6-server-common-config.xml.i
@@ -0,0 +1,276 @@
+<!-- include start from dhcp/dhcpv6-server-common-config.xml.i -->
+#include <include/generic-disable-node.xml.i>
+#include <include/listen-interface-multi-broadcast.xml.i>
+<leafNode name="disable-route-autoinstall">
+ <properties>
+ <help>Do not install routes for delegated prefixes</help>
+ <valueless/>
+ </properties>
+</leafNode>
+<node name="global-parameters">
+ <properties>
+ <help>Additional global parameters for DHCPv6 server</help>
+ </properties>
+ <children>
+ #include <include/name-server-ipv6.xml.i>
+ </children>
+</node>
+<leafNode name="preference">
+ <properties>
+ <help>Preference of this DHCPv6 server compared with others</help>
+ <valueHelp>
+ <format>u32:0-255</format>
+ <description>DHCPv6 server preference (0-255)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 0-255"/>
+ </constraint>
+ <constraintErrorMessage>Preference must be between 0 and 255</constraintErrorMessage>
+ </properties>
+</leafNode>
+<tagNode name="shared-network-name">
+ <properties>
+ <help>DHCPv6 shared network name</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid DHCPv6 shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/generic-disable-node.xml.i>
+ #include <include/generic-description.xml.i>
+ #include <include/generic-interface.xml.i>
+ #include <include/dhcp/option-v6.xml.i>
+ <tagNode name="subnet">
+ <properties>
+ <help>IPv6 DHCP subnet for this shared network</help>
+ <valueHelp>
+ <format>ipv6net</format>
+ <description>IPv6 address and prefix length</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-prefix"/>
+ </constraint>
+ </properties>
+ <children>
+ #include <include/dhcp/option-v6.xml.i>
+ #include <include/generic-interface.xml.i>
+ <tagNode name="range">
+ <properties>
+ <help>Parameters setting ranges for assigning IPv6 addresses</help>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
+ </constraint>
+ <constraintErrorMessage>Invalid range name, may only be alphanumeric, dot and hyphen</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/dhcp/option-v6.xml.i>
+ <leafNode name="prefix">
+ <properties>
+ <help>IPv6 prefix defining range of addresses to assign</help>
+ <valueHelp>
+ <format>ipv6net</format>
+ <description>IPv6 address and prefix length</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="start">
+ <properties>
+ <help>First in range of consecutive IPv6 addresses to assign</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="stop">
+ <properties>
+ <help>Last in range of consecutive IPv6 addresses</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 address</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <node name="lease-time">
+ <properties>
+ <help>Parameters relating to the lease time</help>
+ </properties>
+ <children>
+ <leafNode name="default">
+ <properties>
+ <help>Default time (in seconds) that will be assigned to a lease</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>DHCPv6 valid lifetime</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="maximum">
+ <properties>
+ <help>Maximum time (in seconds) that will be assigned to a lease</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Maximum lease time in seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="minimum">
+ <properties>
+ <help>Minimum time (in seconds) that will be assigned to a lease</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Minimum lease time in seconds</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
+ <node name="prefix-delegation">
+ <properties>
+ <help>Parameters relating to IPv6 prefix delegation</help>
+ </properties>
+ <children>
+ <tagNode name="prefix">
+ <properties>
+ <help>IPv6 prefix to be used in prefix delegation</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 prefix used in prefix delegation</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ <children>
+ <leafNode name="prefix-length">
+ <properties>
+ <help>Length in bits of prefix</help>
+ <valueHelp>
+ <format>u32:32-64</format>
+ <description>Prefix length (32-64)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 32-64"/>
+ </constraint>
+ <constraintErrorMessage>Prefix length must be between 32 and 64</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="delegated-length">
+ <properties>
+ <help>Length in bits of prefixes to be delegated</help>
+ <valueHelp>
+ <format>u32:32-64</format>
+ <description>Delegated prefix length (32-64)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 32-96"/>
+ </constraint>
+ <constraintErrorMessage>Delegated prefix length must be between 32 and 96</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ <leafNode name="excluded-prefix">
+ <properties>
+ <help>IPv6 prefix to be excluded from prefix delegation</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 prefix excluded from prefix delegation</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="excluded-prefix-length">
+ <properties>
+ <help>Length in bits of excluded prefix</help>
+ <valueHelp>
+ <format>u32:33-64</format>
+ <description>Excluded prefix length (33-128)</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 33-128"/>
+ </constraint>
+ <constraintErrorMessage>Prefix length must be between 33 and 128</constraintErrorMessage>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ <tagNode name="static-mapping">
+ <properties>
+ <help>Hostname for static mapping reservation</help>
+ <constraint>
+ <validator name="fqdn"/>
+ </constraint>
+ <constraintErrorMessage>Invalid static mapping hostname</constraintErrorMessage>
+ </properties>
+ <children>
+ #include <include/dhcp/option-v6.xml.i>
+ #include <include/generic-disable-node.xml.i>
+ #include <include/interface/mac.xml.i>
+ #include <include/interface/duid.xml.i>
+ <leafNode name="ipv6-address">
+ <properties>
+ <help>Client IPv6 address for this static mapping</help>
+ <valueHelp>
+ <format>ipv6</format>
+ <description>IPv6 address for this static mapping</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-address"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ <leafNode name="ipv6-prefix">
+ <properties>
+ <help>Client IPv6 prefix for this static mapping</help>
+ <valueHelp>
+ <format>ipv6net</format>
+ <description>IPv6 prefix for this static mapping</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ <leafNode name="subnet-id">
+ <properties>
+ <help>Unique ID mapped to leases in the lease file</help>
+ <valueHelp>
+ <format>u32</format>
+ <description>Unique subnet ID</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </tagNode>
+ </children>
+</tagNode>
+<!-- include end -->
diff --git a/interface-definitions/service_dhcp-server.xml.in b/interface-definitions/service_dhcp-server.xml.in
index 78f1cea4e..4d1172e03 100644
--- a/interface-definitions/service_dhcp-server.xml.in
+++ b/interface-definitions/service_dhcp-server.xml.in
@@ -9,346 +9,7 @@
<priority>911</priority>
</properties>
<children>
- #include <include/generic-disable-node.xml.i>
- <node name="dynamic-dns-update">
- <properties>
- <help>Dynamically update Domain Name System (RFC4702)</help>
- </properties>
- <children>
- #include <include/dhcp/ddns-settings.xml.i>
- <tagNode name="tsig-key">
- <properties>
- <help>TSIG key definition for DNS updates</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, hyphen and underscore</constraintErrorMessage>
- </properties>
- <children>
- <leafNode name="algorithm">
- <properties>
- <help>TSIG key algorithm</help>
- <completionHelp>
- <list>md5 sha1 sha224 sha256 sha384 sha512</list>
- </completionHelp>
- <valueHelp>
- <format>md5</format>
- <description>MD5 HMAC algorithm</description>
- </valueHelp>
- <valueHelp>
- <format>sha1</format>
- <description>SHA1 HMAC algorithm</description>
- </valueHelp>
- <valueHelp>
- <format>sha224</format>
- <description>SHA224 HMAC algorithm</description>
- </valueHelp>
- <valueHelp>
- <format>sha256</format>
- <description>SHA256 HMAC algorithm</description>
- </valueHelp>
- <valueHelp>
- <format>sha384</format>
- <description>SHA384 HMAC algorithm</description>
- </valueHelp>
- <valueHelp>
- <format>sha512</format>
- <description>SHA512 HMAC algorithm</description>
- </valueHelp>
- <constraint>
- <regex>(md5|sha1|sha224|sha256|sha384|sha512)</regex>
- </constraint>
- <constraintErrorMessage>Invalid TSIG key algorithm</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="secret">
- <properties>
- <help>TSIG key secret (base64-encoded)</help>
- <constraint>
- <validator name="base64"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- <tagNode name="forward-domain">
- <properties>
- <help>Forward DNS domain name</help>
- <constraint>
- <validator name="fqdn"/>
- </constraint>
- <constraintErrorMessage>Invalid forward DNS domain name</constraintErrorMessage>
- </properties>
- <children>
- <leafNode name="key-name">
- <properties>
- <help>TSIG key name for forward DNS updates</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, numbers, hyphen and underscore</constraintErrorMessage>
- </properties>
- </leafNode>
- #include <include/dhcp/ddns-dns-server.xml.i>
- </children>
- </tagNode>
- <tagNode name="reverse-domain">
- <properties>
- <help>Reverse DNS domain name</help>
- <constraint>
- <validator name="fqdn"/>
- </constraint>
- <constraintErrorMessage>Invalid reverse DNS domain name</constraintErrorMessage>
- </properties>
- <children>
- <leafNode name="key-name">
- <properties>
- <help>TSIG key name for reverse DNS updates</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid TSIG key name. May only contain letters, numbers, numbers, hyphen and underscore</constraintErrorMessage>
- </properties>
- </leafNode>
- #include <include/dhcp/ddns-dns-server.xml.i>
- </children>
- </tagNode>
- </children>
- </node>
- <node name="high-availability">
- <properties>
- <help>DHCP high availability configuration</help>
- </properties>
- <children>
- #include <include/source-address-ipv4.xml.i>
- <leafNode name="mode">
- <properties>
- <help>Configure high availability mode</help>
- <completionHelp>
- <list>active-active active-passive</list>
- </completionHelp>
- <valueHelp>
- <format>active-active</format>
- <description>Both server attend DHCP requests</description>
- </valueHelp>
- <valueHelp>
- <format>active-passive</format>
- <description>Only primary server attends DHCP requests</description>
- </valueHelp>
- <constraint>
- <regex>(active-active|active-passive)</regex>
- </constraint>
- <constraintErrorMessage>Invalid DHCP high availability mode</constraintErrorMessage>
- </properties>
- <defaultValue>active-active</defaultValue>
- </leafNode>
- <leafNode name="remote">
- <properties>
- <help>IPv4 remote address used for connection</help>
- <valueHelp>
- <format>ipv4</format>
- <description>IPv4 address of high availability peer</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="name">
- <properties>
- <help>Peer name used to identify connection</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid failover peer name. May only contain letters, numbers and .-_</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="status">
- <properties>
- <help>High availability hierarchy</help>
- <completionHelp>
- <list>primary secondary</list>
- </completionHelp>
- <valueHelp>
- <format>primary</format>
- <description>Configure this server to be the primary node</description>
- </valueHelp>
- <valueHelp>
- <format>secondary</format>
- <description>Configure this server to be the secondary node</description>
- </valueHelp>
- <constraint>
- <regex>(primary|secondary)</regex>
- </constraint>
- <constraintErrorMessage>Invalid DHCP high availability peer status</constraintErrorMessage>
- </properties>
- </leafNode>
- #include <include/pki/ca-certificate.xml.i>
- #include <include/pki/certificate.xml.i>
- </children>
- </node>
- <leafNode name="hostfile-update">
- <properties>
- <help>Updating /etc/hosts file (per client lease)</help>
- <valueless/>
- </properties>
- </leafNode>
- #include <include/listen-address-ipv4.xml.i>
- #include <include/listen-interface-multi-broadcast.xml.i>
- <tagNode name="shared-network-name">
- <properties>
- <help>Name of DHCP shared network</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
- </properties>
- <children>
- <node name="dynamic-dns-update">
- <properties>
- <help>Dynamically update Domain Name System (RFC4702)</help>
- </properties>
- <children>
- #include <include/dhcp/ddns-settings.xml.i>
- </children>
- </node>
- <leafNode name="authoritative">
- <properties>
- <help>Option to make DHCP server authoritative for this physical network</help>
- <valueless/>
- </properties>
- </leafNode>
- #include <include/dhcp/option-v4.xml.i>
- #include <include/dhcp/ping-check.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/generic-disable-node.xml.i>
- <tagNode name="subnet">
- <properties>
- <help>DHCP subnet for shared network</help>
- <valueHelp>
- <format>ipv4net</format>
- <description>IPv4 address and prefix length</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-prefix"/>
- </constraint>
- <constraintErrorMessage>Invalid IPv4 subnet definition</constraintErrorMessage>
- </properties>
- <children>
- #include <include/dhcp/option-v4.xml.i>
- #include <include/dhcp/ping-check.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/generic-disable-node.xml.i>
- <node name="dynamic-dns-update">
- <properties>
- <help>Dynamically update Domain Name System (RFC4702)</help>
- </properties>
- <children>
- #include <include/dhcp/ddns-settings.xml.i>
- </children>
- </node>
- <leafNode name="exclude">
- <properties>
- <help>IP address to exclude from DHCP lease range</help>
- <valueHelp>
- <format>ipv4</format>
- <description>IPv4 address to exclude from lease range</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- <multi/>
- </properties>
- </leafNode>
- <leafNode name="ignore-client-id">
- <properties>
- <help>Ignore client identifier for lease lookups</help>
- <valueless/>
- </properties>
- </leafNode>
- <leafNode name="lease">
- <properties>
- <help>Lease timeout in seconds</help>
- <valueHelp>
- <format>u32</format>
- <description>DHCP lease time in seconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-4294967295"/>
- </constraint>
- <constraintErrorMessage>DHCP lease time must be between 0 and 4294967295 (49 days)</constraintErrorMessage>
- </properties>
- <defaultValue>86400</defaultValue>
- </leafNode>
- <tagNode name="range">
- <properties>
- <help>DHCP lease range</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
- </constraint>
- <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>
- <valueHelp>
- <format>ipv4</format>
- <description>IPv4 start address of pool</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="stop">
- <properties>
- <help>Last IP address for DHCP lease range</help>
- <valueHelp>
- <format>ipv4</format>
- <description>IPv4 end address of pool</description>
- </valueHelp>
- <constraint>
- <validator name="ipv4-address"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- <tagNode name="static-mapping">
- <properties>
- <help>Hostname for static mapping reservation</help>
- <constraint>
- <validator name="fqdn"/>
- </constraint>
- <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>
- #include <include/ip-address.xml.i>
- #include <include/interface/mac.xml.i>
- #include <include/interface/duid.xml.i>
- </children>
- </tagNode>
- <leafNode name="subnet-id">
- <properties>
- <help>Unique ID mapped to leases in the lease file</help>
- <valueHelp>
- <format>u32</format>
- <description>Unique subnet ID</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- </children>
- </tagNode>
+ #include <include/dhcp/dhcp-server-common-config.xml.i>
</children>
</node>
</children>
diff --git a/interface-definitions/service_dhcpv6-server.xml.in b/interface-definitions/service_dhcpv6-server.xml.in
index a6763a345..d2b96061d 100644
--- a/interface-definitions/service_dhcpv6-server.xml.in
+++ b/interface-definitions/service_dhcpv6-server.xml.in
@@ -8,280 +8,7 @@
<priority>900</priority>
</properties>
<children>
- #include <include/generic-disable-node.xml.i>
- #include <include/listen-interface-multi-broadcast.xml.i>
- <leafNode name="disable-route-autoinstall">
- <properties>
- <help>Do not install routes for delegated prefixes</help>
- <valueless/>
- </properties>
- </leafNode>
- <node name="global-parameters">
- <properties>
- <help>Additional global parameters for DHCPv6 server</help>
- </properties>
- <children>
- #include <include/name-server-ipv6.xml.i>
- </children>
- </node>
- <leafNode name="preference">
- <properties>
- <help>Preference of this DHCPv6 server compared with others</help>
- <valueHelp>
- <format>u32:0-255</format>
- <description>DHCPv6 server preference (0-255)</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 0-255"/>
- </constraint>
- <constraintErrorMessage>Preference must be between 0 and 255</constraintErrorMessage>
- </properties>
- </leafNode>
- <tagNode name="shared-network-name">
- <properties>
- <help>DHCPv6 shared network name</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid DHCPv6 shared network name. May only contain letters, numbers and .-_</constraintErrorMessage>
- </properties>
- <children>
- #include <include/generic-disable-node.xml.i>
- #include <include/generic-description.xml.i>
- #include <include/generic-interface.xml.i>
- #include <include/dhcp/option-v6.xml.i>
- <tagNode name="subnet">
- <properties>
- <help>IPv6 DHCP subnet for this shared network</help>
- <valueHelp>
- <format>ipv6net</format>
- <description>IPv6 address and prefix length</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-prefix"/>
- </constraint>
- </properties>
- <children>
- #include <include/dhcp/option-v6.xml.i>
- #include <include/generic-interface.xml.i>
- <tagNode name="range">
- <properties>
- <help>Parameters setting ranges for assigning IPv6 addresses</help>
- <constraint>
- #include <include/constraint/alpha-numeric-hyphen-underscore-dot.xml.i>
- </constraint>
- <constraintErrorMessage>Invalid range name, may only be alphanumeric, dot and hyphen</constraintErrorMessage>
- </properties>
- <children>
- #include <include/dhcp/option-v6.xml.i>
- <leafNode name="prefix">
- <properties>
- <help>IPv6 prefix defining range of addresses to assign</help>
- <valueHelp>
- <format>ipv6net</format>
- <description>IPv6 address and prefix length</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-prefix"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="start">
- <properties>
- <help>First in range of consecutive IPv6 addresses to assign</help>
- <valueHelp>
- <format>ipv6</format>
- <description>IPv6 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="stop">
- <properties>
- <help>Last in range of consecutive IPv6 addresses</help>
- <valueHelp>
- <format>ipv6</format>
- <description>IPv6 address</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-address"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- <node name="lease-time">
- <properties>
- <help>Parameters relating to the lease time</help>
- </properties>
- <children>
- <leafNode name="default">
- <properties>
- <help>Default time (in seconds) that will be assigned to a lease</help>
- <valueHelp>
- <format>u32:1-4294967295</format>
- <description>DHCPv6 valid lifetime</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="maximum">
- <properties>
- <help>Maximum time (in seconds) that will be assigned to a lease</help>
- <valueHelp>
- <format>u32:1-4294967295</format>
- <description>Maximum lease time in seconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="minimum">
- <properties>
- <help>Minimum time (in seconds) that will be assigned to a lease</help>
- <valueHelp>
- <format>u32:1-4294967295</format>
- <description>Minimum lease time in seconds</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </node>
- <node name="prefix-delegation">
- <properties>
- <help>Parameters relating to IPv6 prefix delegation</help>
- </properties>
- <children>
- <tagNode name="prefix">
- <properties>
- <help>IPv6 prefix to be used in prefix delegation</help>
- <valueHelp>
- <format>ipv6</format>
- <description>IPv6 prefix used in prefix delegation</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-address"/>
- </constraint>
- </properties>
- <children>
- <leafNode name="prefix-length">
- <properties>
- <help>Length in bits of prefix</help>
- <valueHelp>
- <format>u32:32-64</format>
- <description>Prefix length (32-64)</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 32-64"/>
- </constraint>
- <constraintErrorMessage>Prefix length must be between 32 and 64</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="delegated-length">
- <properties>
- <help>Length in bits of prefixes to be delegated</help>
- <valueHelp>
- <format>u32:32-64</format>
- <description>Delegated prefix length (32-64)</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 32-96"/>
- </constraint>
- <constraintErrorMessage>Delegated prefix length must be between 32 and 96</constraintErrorMessage>
- </properties>
- </leafNode>
- <leafNode name="excluded-prefix">
- <properties>
- <help>IPv6 prefix to be excluded from prefix delegation</help>
- <valueHelp>
- <format>ipv6</format>
- <description>IPv6 prefix excluded from prefix delegation</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="excluded-prefix-length">
- <properties>
- <help>Length in bits of excluded prefix</help>
- <valueHelp>
- <format>u32:33-64</format>
- <description>Excluded prefix length (33-128)</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 33-128"/>
- </constraint>
- <constraintErrorMessage>Prefix length must be between 33 and 128</constraintErrorMessage>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- </children>
- </node>
- <tagNode name="static-mapping">
- <properties>
- <help>Hostname for static mapping reservation</help>
- <constraint>
- <validator name="fqdn"/>
- </constraint>
- <constraintErrorMessage>Invalid static mapping hostname</constraintErrorMessage>
- </properties>
- <children>
- #include <include/dhcp/option-v6.xml.i>
- #include <include/generic-disable-node.xml.i>
- #include <include/interface/mac.xml.i>
- #include <include/interface/duid.xml.i>
- <leafNode name="ipv6-address">
- <properties>
- <help>Client IPv6 address for this static mapping</help>
- <valueHelp>
- <format>ipv6</format>
- <description>IPv6 address for this static mapping</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-address"/>
- </constraint>
- </properties>
- </leafNode>
- <leafNode name="ipv6-prefix">
- <properties>
- <help>Client IPv6 prefix for this static mapping</help>
- <valueHelp>
- <format>ipv6net</format>
- <description>IPv6 prefix for this static mapping</description>
- </valueHelp>
- <constraint>
- <validator name="ipv6-prefix"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- <leafNode name="subnet-id">
- <properties>
- <help>Unique ID mapped to leases in the lease file</help>
- <valueHelp>
- <format>u32</format>
- <description>Unique subnet ID</description>
- </valueHelp>
- <constraint>
- <validator name="numeric" argument="--range 1-4294967295"/>
- </constraint>
- </properties>
- </leafNode>
- </children>
- </tagNode>
- </children>
- </tagNode>
+ #include <include/dhcp/dhcpv6-server-common-config.xml.i>
</children>
</node>
</children>
diff --git a/interface-definitions/vrf.xml.in b/interface-definitions/vrf.xml.in
index 03128cb99..3fa95076e 100644
--- a/interface-definitions/vrf.xml.in
+++ b/interface-definitions/vrf.xml.in
@@ -116,6 +116,31 @@
</node>
</children>
</node>
+ <node name="service">
+ <properties>
+ <help>Enable services in the vrf itself</help>
+ </properties>
+ <children>
+ <node name="dhcp-server" owner="${vyos_conf_scripts_dir}/service_dhcp-server.py $VAR(../../@)">
+ <properties>
+ <help>Dynamic Host Configuration Protocol (DHCP) for DHCP server</help>
+ <priority>912</priority>
+ </properties>
+ <children>
+ #include <include/dhcp/dhcp-server-common-config.xml.i>
+ </children>
+ </node>
+ <node name="dhcpv6-server" owner="${vyos_conf_scripts_dir}/service_dhcpv6-server.py $VAR(../../@)">
+ <properties>
+ <help>DHCP for IPv6 (DHCPv6) server</help>
+ <priority>901</priority>
+ </properties>
+ <children>
+ #include <include/dhcp/dhcpv6-server-common-config.xml.i>
+ </children>
+ </node>
+ </children>
+ </node>
<leafNode name="table">
<properties>
<help>Routing table associated with this instance</help>