From 5faaa75a70ff433c983ca3202bf218477f9455af Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 26 May 2016 23:14:56 +0200 Subject: [PATCH] ra: enforce defaults from radvd.conf(5) manual --- src/etc/inc/services.inc | 4 ++-- src/www/services_router_advertisements.php | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index d7afc2dc9..2459efe90 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -166,8 +166,8 @@ function services_radvd_configure($blacklist = array()) $radvdconf .= "# Generated for DHCPv6 Server $dhcpv6if\n"; $radvdconf .= "interface {$realif} {\n"; $radvdconf .= sprintf("\tAdvSendAdvert %s;\n", !empty($dhcpv6ifconf['ranosend']) ? 'off' : 'on'); - $radvdconf .= sprintf("\tMinRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramininterval']) ? $dhcpv6ifconf['ramininterval'] : '225'); - $radvdconf .= sprintf("\tMaxRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramaxinterval']) ? $dhcpv6ifconf['ramaxinterval'] : '300'); + $radvdconf .= sprintf("\tMinRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramininterval']) ? $dhcpv6ifconf['ramininterval'] : '200'); + $radvdconf .= sprintf("\tMaxRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramaxinterval']) ? $dhcpv6ifconf['ramaxinterval'] : '600'); $mtu = legacy_interface_stats($realif)['mtu']; if (is_numeric($mtu)) { $radvdconf .= "\tAdvLinkMTU {$mtu};\n"; diff --git a/src/www/services_router_advertisements.php b/src/www/services_router_advertisements.php index db614d113..b6f79ef4a 100644 --- a/src/www/services_router_advertisements.php +++ b/src/www/services_router_advertisements.php @@ -62,10 +62,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { // defaults if (empty($pconfig['ramininterval'])) { - $pconfig['ramininterval'] = 225; + $pconfig['ramininterval'] = 200; } if (empty($pconfig['ramaxinterval'])) { - $pconfig['ramaxinterval'] = 300; + $pconfig['ramaxinterval'] = 600; } // arrays @@ -107,12 +107,18 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { } } + if (!is_numericint($pconfig['ramaxinterval']) || $pconfig['ramaxnterval'] < 4 || $pconfig['ramaxinterval'] > 1800) { + $input_errors[] = gettext(sprintf('Maximum interval must be between %s and %s seconds.', 4, 1800)); + // chain this validation, we use the former value for calculation */ + } elseif (!is_numericint($pconfig['ramininterval']) || $pconfig['ramininterval'] < 3 || $pconfig['ramininterval'] > int($pconfig['ramaxinterval'] * 0.75)) { + $input_errors[] = gettext(sprintf('Minimum interval must be between %s and %s seconds.', 3, int($pconfig['ramaxinterval'] * 0.75))); + } + if (count($input_errors) == 0) { if (!is_array($config['dhcpdv6'][$if])) { $config['dhcpdv6'][$if] = array(); } - $config['dhcpdv6'][$if]['ramode'] = $pconfig['ramode']; $config['dhcpdv6'][$if]['rapriority'] = $pconfig['rapriority']; $config['dhcpdv6'][$if]['rainterface'] = $pconfig['rainterface'];