From 46b71412433a50e534cb0d03147f77ec46f30a9c Mon Sep 17 00:00:00 2001 From: Adam Greene Date: Mon, 18 Aug 2025 09:05:03 -0400 Subject: [PATCH 1/3] Changes to support DHCP option 26 (client interface mtu) --- interface-definitions/include/dhcp/option-v4.xml.i | 12 ++++++++++++ python/vyos/kea.py | 1 + smoketest/scripts/cli/test_service_dhcp-server.py | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/interface-definitions/include/dhcp/option-v4.xml.i b/interface-definitions/include/dhcp/option-v4.xml.i index 08fbcca4a0..4a9548a043 100644 --- a/interface-definitions/include/dhcp/option-v4.xml.i +++ b/interface-definitions/include/dhcp/option-v4.xml.i @@ -83,6 +83,18 @@ + + + Interface MTU + + u32:1-16 + Client interface MTU + + + + + + Enable IP forwarding on client diff --git a/python/vyos/kea.py b/python/vyos/kea.py index 15c8564b04..a24fc2748e 100644 --- a/python/vyos/kea.py +++ b/python/vyos/kea.py @@ -45,6 +45,7 @@ 'ipv6_only_preferred': 'v6-only-preferred', 'captive_portal': 'v4-captive-portal', 'capwap_controller': 'capwap-ac-v4', + 'interface_mtu': 'interface-mtu', } kea6_options = { diff --git a/smoketest/scripts/cli/test_service_dhcp-server.py b/smoketest/scripts/cli/test_service_dhcp-server.py index c59fc4efd8..add2408b16 100755 --- a/smoketest/scripts/cli/test_service_dhcp-server.py +++ b/smoketest/scripts/cli/test_service_dhcp-server.py @@ -225,6 +225,7 @@ def test_dhcp_single_pool_options(self): server_identifier = bootfile_server ipv6_only_preferred = '300' capwap_access_controller = '192.168.2.125' + interface_mtu = '1420' pool = base_path + ['shared-network-name', shared_net_name, 'subnet', subnet] self.cli_set(pool + ['subnet-id', '1']) @@ -233,6 +234,7 @@ def test_dhcp_single_pool_options(self): self.cli_set(pool + ['option', 'name-server', dns_1]) self.cli_set(pool + ['option', 'name-server', dns_2]) self.cli_set(pool + ['option', 'domain-name', domain_name]) + self.cli_set(pool + ['option', 'interface-mtu', interface_mtu]) self.cli_set(pool + ['option', 'ip-forwarding']) self.cli_set(pool + ['option', 'smtp-server', smtp_server]) self.cli_set(pool + ['option', 'pop-server', smtp_server]) @@ -365,6 +367,11 @@ def test_dhcp_single_pool_options(self): ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'option-data'], {'name': 'ip-forwarding', 'data': 'true'}, ) + self.verify_config_object( + obj, + ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'option-data'], + {'name': 'interface-mtu', 'data': interface_mtu}, + ) # Time zone self.verify_config_object( From 5fc7ec82dd429413eb5037525a89a9a66ee64308 Mon Sep 17 00:00:00 2001 From: Adam Greene Date: Fri, 29 Aug 2025 18:02:16 -0400 Subject: [PATCH 2/3] fix type for interface-mtu --- interface-definitions/include/dhcp/option-v4.xml.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface-definitions/include/dhcp/option-v4.xml.i b/interface-definitions/include/dhcp/option-v4.xml.i index 4a9548a043..fb8667c175 100644 --- a/interface-definitions/include/dhcp/option-v4.xml.i +++ b/interface-definitions/include/dhcp/option-v4.xml.i @@ -87,7 +87,7 @@ Interface MTU - u32:1-16 + u16:1200-9000 Client interface MTU From 1bb88d808481e1fa7ed8a0d53a343673753aeafc Mon Sep 17 00:00:00 2001 From: Adam Greene Date: Fri, 29 Aug 2025 18:23:14 -0400 Subject: [PATCH 3/3] use minimum MTU specified in RFC 790 as the lower bound --- interface-definitions/include/dhcp/option-v4.xml.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface-definitions/include/dhcp/option-v4.xml.i b/interface-definitions/include/dhcp/option-v4.xml.i index fb8667c175..0f446c9a95 100644 --- a/interface-definitions/include/dhcp/option-v4.xml.i +++ b/interface-definitions/include/dhcp/option-v4.xml.i @@ -87,11 +87,11 @@ Interface MTU - u16:1200-9000 + u16:576-9000 Client interface MTU - +