From e85557938c30d3c71e698c1cf88bdfaebc422972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0lteri=C5=9F=20Ero=C4=9Flu?= Date: Mon, 27 Apr 2020 12:36:55 +0300 Subject: [PATCH] Add AdvLinkMTU to Router Advertisements page (#4064) --- src/etc/inc/plugins.inc.d/dhcpd.inc | 9 +++++++++ src/www/services_router_advertisements.php | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc index 01fb8e6f1..fc17f22d0 100644 --- a/src/etc/inc/plugins.inc.d/dhcpd.inc +++ b/src/etc/inc/plugins.inc.d/dhcpd.inc @@ -260,6 +260,15 @@ function dhcpd_radvd_configure($verbose = false, $blacklist = array()) } } + if (!empty($dhcpv6ifconf['AdvLinkMTU'])) { + $overridemtu = $dhcpv6ifconf['AdvLinkMTU']; + if ($overridemtu < $mtu) { + $mtu = $overridemtu; + } else { + log_error("Warning! AdvLinkMTU set in config is not lower than the interface MTU, therefore can't be applied."); + } + } + $radvdconf .= "# Generated for DHCPv6 server $dhcpv6if\n"; $radvdconf .= "interface {$realif} {\n"; $radvdconf .= "\tAdvSendAdvert on;\n"; diff --git a/src/www/services_router_advertisements.php b/src/www/services_router_advertisements.php index 001df604d..b9c38f46d 100644 --- a/src/www/services_router_advertisements.php +++ b/src/www/services_router_advertisements.php @@ -37,7 +37,7 @@ function val_int_in_range($value, $min, $max) { return (((string)(int)$value) == $value) && $value >= $min && $value <= $max; } -$advanced_options = array('AdvDefaultLifetime', 'AdvValidLifetime', 'AdvPreferredLifetime', 'AdvRDNSSLifetime', 'AdvDNSSLLifetime', 'AdvRouteLifetime'); +$advanced_options = array('AdvDefaultLifetime', 'AdvValidLifetime', 'AdvPreferredLifetime', 'AdvRDNSSLifetime', 'AdvDNSSLLifetime', 'AdvRouteLifetime', 'AdvLinkMTU'); if ($_SERVER['REQUEST_METHOD'] === 'GET') { if (!empty($_GET['if']) && !empty($config['interfaces'][$_GET['if']])) { $if = $_GET['if']; @@ -136,6 +136,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { if (!empty($pconfig['AdvRouteLifetime']) && !val_int_in_range($pconfig['AdvRouteLifetime'], 1, 4294967295)) { $input_errors[] = sprintf(gettext('AdvRouteLifetime must be between %s and %s seconds.'), 1, 4294967295); } + if (!empty($pconfig['AdvLinkMTU']) && !val_int_in_range($pconfig['AdvLinkMTU'], 1280, 8192)) { + $input_errors[] = sprintf(gettext('AdvLinkMTU must be between %s and %s bytes.'), 1280, 8192); + } }