From dcc887a355aae49c7df0c29752c04e12922aca83 Mon Sep 17 00:00:00 2001 From: elbinteh Date: Mon, 28 Jan 2019 00:14:39 +0000 Subject: [PATCH] RADVD: In "managed" or "stateless_dhcp" mode, don't use default values for DNS servers etc (these should come from DHCPv6) --- src/etc/inc/services.inc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index 8fc5309f2c3..fa8a3765f02 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -246,6 +246,8 @@ function services_radvd_configure($blacklist = array()) { $radvdconf .= "\t\tRemoveRoute on;\n"; $radvdconf .= "\t};\n"; + $usedefaultvalues = $dhcpv6ifconf['ramode'] == "managed" || $dhcpv6ifconf['ramode'] == "stateless_dhcp" ? false : true; + /* add DNS servers */ $dnslist = array(); if (isset($dhcpv6ifconf['rasamednsasdhcp6']) && is_array($dhcpv6ifconf['dnsserver']) && !empty($dhcpv6ifconf['dnsserver'])) { @@ -260,9 +262,9 @@ function services_radvd_configure($blacklist = array()) { $dnslist[] = $server; } } - } elseif (isset($config['dnsmasq']['enable']) || isset($config['unbound']['enable'])) { + } elseif ($usedefaultvalues && (isset($config['dnsmasq']['enable']) || isset($config['unbound']['enable']))) { $dnslist[] = get_interface_ipv6($realif); - } elseif (is_array($config['system']['dnsserver']) && !empty($config['system']['dnsserver'])) { + } elseif ($usedefaultvalues && (is_array($config['system']['dnsserver']) && !empty($config['system']['dnsserver']))) { foreach ($config['system']['dnsserver'] as $server) { if (is_ipaddrv6($server)) { $dnslist[] = $server; @@ -284,13 +286,16 @@ function services_radvd_configure($blacklist = array()) { $searchlist[] = $sd; } } + $searchliststring = ""; if (count($searchlist) > 0) { $searchliststring = trim(implode(" ", $searchlist)); } - if (!empty($dhcpv6ifconf['domain'])) { - $radvdconf .= "\tDNSSL {$dhcpv6ifconf['domain']} {$searchliststring} { };\n"; - } elseif (!empty($config['system']['domain'])) { - $radvdconf .= "\tDNSSL {$config['system']['domain']} {$searchliststring} { };\n"; + if (isset($dhcpv6ifconf['rasamednsasdhcp6']) && !empty($dhcpv6ifconf['domain'])) { + $radvdconf .= "\tDNSSL {$dhcpv6ifconf['domain']} { };\n"; + } elseif (!isset($dhcpv6ifconf['rasamednsasdhcp6']) && !empty($searchliststring)) { + $radvdconf .= "\tDNSSL {$searchliststring} { };\n"; + } elseif ($usedefaultvalues && !empty($config['system']['domain'])) { + $radvdconf .= "\tDNSSL {$config['system']['domain']} { };\n"; } $radvdconf .= "};\n"; }