From d95200e96763e4a7ed02577b1b177c84abb77838 Mon Sep 17 00:00:00 2001
From: sarthurdev <965089+sarthurdev@users.noreply.github.com>
Date: Fri, 16 Dec 2022 11:41:33 +0100
Subject: dhcp: T3316: Migrate dhcp/dhcpv6 server to Kea
---
interface-definitions/dhcp-server.xml.in | 40 +----------------
interface-definitions/dhcpv6-server.xml.in | 51 +++++++++++++---------
.../include/dhcp/ping-check.xml.i | 8 ----
.../include/version/dhcp-server-version.xml.i | 2 +-
.../include/version/dhcpv6-server-version.xml.i | 2 +-
5 files changed, 34 insertions(+), 69 deletions(-)
delete mode 100644 interface-definitions/include/dhcp/ping-check.xml.i
(limited to 'interface-definitions')
diff --git a/interface-definitions/dhcp-server.xml.in b/interface-definitions/dhcp-server.xml.in
index 583de7ba9..948f19048 100644
--- a/interface-definitions/dhcp-server.xml.in
+++ b/interface-definitions/dhcp-server.xml.in
@@ -63,26 +63,16 @@
Invalid DHCP failover peer status
+ #include
+ #include
-
-
- Additional global parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.
-
-
-
Updating /etc/hosts file (per client lease)
-
-
- Use host declaration name for forward DNS name
-
-
-
#include
@@ -102,16 +92,9 @@
#include
#include
#include
- #include
#include
#include
#include
-
-
- Additional shared-network parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.
-
-
-
DHCP subnet for shared network
@@ -191,12 +174,6 @@
#include
#include
#include
-
-
- Enable DHCP failover support for this subnet
-
-
-
IP address to exclude from DHCP lease range
@@ -231,7 +208,6 @@
86400
#include
- #include
IP address of POP3 server
@@ -339,12 +315,6 @@
-
-
- Additional static-mapping parameters for DHCP server. Will be placed inside the "host" block of the mapping. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.
-
-
-
@@ -386,12 +356,6 @@
Seconds must be between 0 and 4294967295 (49 days)
-
-
- Additional subnet parameters for DHCP server. You must use the syntax of dhcpd.conf in this text-field. Using this without proper knowledge may result in a crashed DHCP server. Check system log to look for errors.
-
-
-
TFTP server name
diff --git a/interface-definitions/dhcpv6-server.xml.in b/interface-definitions/dhcpv6-server.xml.in
index 9dff68a24..16d0f9b01 100644
--- a/interface-definitions/dhcpv6-server.xml.in
+++ b/interface-definitions/dhcpv6-server.xml.in
@@ -41,6 +41,21 @@
#include
#include
+
+
+ Optional interface for this shared network to accept requests from
+
+
+
+
+ txt
+ Interface name
+
+
+ #include
+
+
+
Common options to distribute to all clients, including stateless clients
@@ -79,7 +94,7 @@
Parameters setting ranges for assigning IPv6 addresses
-
+
IPv6 prefix defining range of addresses to assign
@@ -89,16 +104,9 @@
+
-
-
-
- Address range will be used for temporary addresses
-
-
-
-
-
+
First in range of consecutive IPv6 addresses to assign
@@ -221,12 +229,12 @@
Parameters relating to IPv6 prefix delegation
-
+
- First in range of IPv6 addresses to be used in prefix delegation
+ IPv6 prefix to be used in prefix delegation
ipv6
- IPv6 address used in prefix delegation
+ IPv6 prefix used in prefix delegation
@@ -235,27 +243,28 @@
- Length in bits of prefixes to be delegated
+ Length in bits of prefix
u32:32-64
- Delagated prefix length (32-64)
+ Prefix length (32-64)
- Delegated prefix length must be between 32 and 64
+ Prefix length must be between 32 and 64
-
+
- Last in range of IPv6 addresses to be used in prefix delegation
+ Length in bits of prefixes to be delegated
- ipv6
- IPv6 address used in prefix delegation
+ u32:32-64
+ Delegated prefix length (32-64)
-
+
+ Delegated prefix length must be between 32 and 96
diff --git a/interface-definitions/include/dhcp/ping-check.xml.i b/interface-definitions/include/dhcp/ping-check.xml.i
deleted file mode 100644
index a506f68e4..000000000
--- a/interface-definitions/include/dhcp/ping-check.xml.i
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- Sends ICMP Echo request to the address being assigned
-
-
-
-
diff --git a/interface-definitions/include/version/dhcp-server-version.xml.i b/interface-definitions/include/version/dhcp-server-version.xml.i
index 330cb7d1b..7c4b5633e 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 @@
-
+
diff --git a/interface-definitions/include/version/dhcpv6-server-version.xml.i b/interface-definitions/include/version/dhcpv6-server-version.xml.i
index 4b2cf40aa..ae4178c90 100644
--- a/interface-definitions/include/version/dhcpv6-server-version.xml.i
+++ b/interface-definitions/include/version/dhcpv6-server-version.xml.i
@@ -1,3 +1,3 @@
-
+
--
cgit v1.2.3
From 4484a7398482caffdd5e0a74f73f46b162785bf3 Mon Sep 17 00:00:00 2001
From: sarthurdev <965089+sarthurdev@users.noreply.github.com>
Date: Wed, 26 Jul 2023 23:16:33 +0200
Subject: dhcp: T3316: Add captive portal v4/v6 options
---
interface-definitions/dhcp-server.xml.in | 1 +
interface-definitions/dhcpv6-server.xml.in | 1 +
interface-definitions/include/dhcp/captive-portal.xml.i | 11 +++++++++++
python/vyos/kea.py | 6 ++++--
4 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 interface-definitions/include/dhcp/captive-portal.xml.i
(limited to 'interface-definitions')
diff --git a/interface-definitions/dhcp-server.xml.in b/interface-definitions/dhcp-server.xml.in
index 948f19048..0fa06c534 100644
--- a/interface-definitions/dhcp-server.xml.in
+++ b/interface-definitions/dhcp-server.xml.in
@@ -145,6 +145,7 @@
+ #include
Specifies the clients subnet mask as per RFC 950. If unset, subnet declaration is used.
diff --git a/interface-definitions/dhcpv6-server.xml.in b/interface-definitions/dhcpv6-server.xml.in
index 16d0f9b01..b37f79434 100644
--- a/interface-definitions/dhcpv6-server.xml.in
+++ b/interface-definitions/dhcpv6-server.xml.in
@@ -135,6 +135,7 @@
+ #include
#include
diff --git a/interface-definitions/include/dhcp/captive-portal.xml.i b/interface-definitions/include/dhcp/captive-portal.xml.i
new file mode 100644
index 000000000..643f055a8
--- /dev/null
+++ b/interface-definitions/include/dhcp/captive-portal.xml.i
@@ -0,0 +1,11 @@
+
+
+
+ Captive portal API endpoint
+
+ txt
+ Captive portal API endpoint
+
+
+
+
diff --git a/python/vyos/kea.py b/python/vyos/kea.py
index 0ee6871e7..fa2948233 100644
--- a/python/vyos/kea.py
+++ b/python/vyos/kea.py
@@ -40,7 +40,8 @@ kea4_options = {
'bootfile_size': 'boot-size',
'time_offset': 'time-offset',
'wpad_url': 'wpad-url',
- 'ipv6_only_preferred': 'v6-only-preferred'
+ 'ipv6_only_preferred': 'v6-only-preferred',
+ 'captive_portal': 'v4-captive-portal'
}
kea6_options = {
@@ -51,7 +52,8 @@ kea6_options = {
'nis_server': 'nis-servers',
'nisplus_domain': 'nisp-domain-name',
'nisplus_server': 'nisp-servers',
- 'sntp_server': 'sntp-servers'
+ 'sntp_server': 'sntp-servers',
+ 'captive_portal': 'v6-captive-portal'
}
def kea_parse_options(config):
--
cgit v1.2.3
From 2787e7915c1225f05f1e07c62f7c4d1ac9dca5ac Mon Sep 17 00:00:00 2001
From: sarthurdev <965089+sarthurdev@users.noreply.github.com>
Date: Thu, 5 Oct 2023 13:47:38 +0200
Subject: dhcp: T3316: Add time-zone node for options 100 and 101
---
interface-definitions/dhcp-server.xml.in | 11 +++++++++++
python/vyos/kea.py | 7 +++++++
smoketest/scripts/cli/test_service_dhcp-server.py | 11 +++++++++++
3 files changed, 29 insertions(+)
(limited to 'interface-definitions')
diff --git a/interface-definitions/dhcp-server.xml.in b/interface-definitions/dhcp-server.xml.in
index 0fa06c534..081f7ed42 100644
--- a/interface-definitions/dhcp-server.xml.in
+++ b/interface-definitions/dhcp-server.xml.in
@@ -400,6 +400,17 @@
+
+
+ Time zone to send to clients. Uses RFC4833 options 100 and 101
+
+
+
+
+
+
+
+
Vendor Specific Options
diff --git a/python/vyos/kea.py b/python/vyos/kea.py
index fa2948233..cb341e0f2 100644
--- a/python/vyos/kea.py
+++ b/python/vyos/kea.py
@@ -83,6 +83,13 @@ def kea_parse_options(config):
options.append({'name': 'rfc3442-static-route', 'data': ", ".join(routes if not default_route else routes + [default_route])})
options.append({'name': 'windows-static-route', 'data': ", ".join(routes)})
+ if 'time_zone' in config:
+ with open("/usr/share/zoneinfo/" + config['time_zone'], "rb") as f:
+ tz_string = f.read().split(b"\n")[-2].decode("utf-8")
+
+ options.append({'name': 'pcode', 'data': tz_string})
+ options.append({'name': 'tcode', 'data': config['time_zone']})
+
return options
def kea_parse_subnet(subnet, config):
diff --git a/smoketest/scripts/cli/test_service_dhcp-server.py b/smoketest/scripts/cli/test_service_dhcp-server.py
index aeff2aa82..9f6e05ff3 100755
--- a/smoketest/scripts/cli/test_service_dhcp-server.py
+++ b/smoketest/scripts/cli/test_service_dhcp-server.py
@@ -184,6 +184,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):
self.cli_set(pool + ['static-route', '10.0.0.0/24', 'next-hop', '192.0.2.1'])
self.cli_set(pool + ['ipv6-only-preferred', ipv6_only_preferred])
+ self.cli_set(pool + ['time-zone', 'Europe/London'])
# check validate() - No DHCP address range or active static-mapping set
with self.assertRaises(ConfigSessionError):
@@ -262,6 +263,16 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):
['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'option-data'],
{'name': 'ip-forwarding', 'data': "true"})
+ # Time zone
+ self.verify_config_object(
+ obj,
+ ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'option-data'],
+ {'name': 'pcode', 'data': 'GMT0BST,M3.5.0/1,M10.5.0'})
+ self.verify_config_object(
+ obj,
+ ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'option-data'],
+ {'name': 'tcode', 'data': 'Europe/London'})
+
# Verify pools
self.verify_config_object(
obj,
--
cgit v1.2.3