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