diff options
author | Seth Mos <seth.mos@dds.nl> | 2011-09-06 22:24:02 +0200 |
---|---|---|
committer | Seth Mos <seth.mos@dds.nl> | 2011-09-06 22:25:50 +0200 |
commit | 3aa114d5550f03ceb0d05d6c9c2ce22542ba5512 (patch) | |
tree | c64cf45aca35ea4c0f8e755f2c9c95435659d388 | |
parent | f8707b1537b2d83c3f843ccdd43c122bf57a45fc (diff) | |
download | pfsense-3aa114d5550f03ceb0d05d6c9c2ce22542ba5512.zip pfsense-3aa114d5550f03ceb0d05d6c9c2ce22542ba5512.tar.gz |
Add proper validation to the services_rtadvd_configure() to only pick up the IPv6 nameservers if any
Ticket #1836
-rw-r--r-- | etc/inc/services.inc | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc index b576dee..2c1506c 100644 --- a/etc/inc/services.inc +++ b/etc/inc/services.inc @@ -121,17 +121,24 @@ EOD; } $rtadvdconf .= "\t:tc=ether:\\\n"; /* add DNS servers */ + $dnslist = array(); if(!empty($dhcpv6ifconf['dnsserver'][0])) { - $dnslist = implode(",", $dhcpv6ifconf['dnsserver']); - $rtadvdconf .= "\t:rdnss=\"{$dnslist}\":\\\n"; + foreach($dhcpv6ifconf['dnsserver'] as $server) { + if(is_ipaddrv6($server)) + $dnslist[] = $server; + } } elseif (isset($config['dnsmasq']['enable'])) { - $dnslist = get_interface_ipv6($dhcpv6if); - $rtadvdconf .= "\t:rdnss=\"{$dnslist}\":\\\n"; + $dnslist[] = get_interface_ipv6($dhcpv6if); } elseif (!empty($config['system']['dnsserver'][0])) { - $dnslist = implode(",", $config['system']['dnsserver']); - $rtadvdconf .= "\t:rdnss=\"{$dnslist}\":\\\n"; + foreach($config['system']['dnsserver'] as $server) { + if(is_ipaddrv6($server)) + $dnslist[] = $server; + } + } + if(!empty($dnslist)) { + $dnsstring = implode(",", $dnslist); + $rtadvdconf .= "\t:rdnss=\"{$dnsstring}\":\\\n"; } - if($dhcpv6ifconf['domain'] <> "") { $rtadvdconf .= "\t:dnssl=\"{$dhcpv6ifconf['domain']}\":\n"; } elseif ($config['system']['domain'] <> "") { @@ -153,6 +160,7 @@ EOD; $subnetv6 = gen_subnetv6($ifcfgipv6, $ifcfgsnv6); $subnetmaskv6 = gen_subnet_mask($ifcfgsnv6); + $dnslist = array(); if(is_ipaddrv6($subnetv6)) { $rtadvdconf .= "# Generated for DHCP-PD delegation $if\n"; $rtadvdconf .= "{$realif}:\\\n"; @@ -161,11 +169,16 @@ EOD; $rtadvdconf .= "\t:raflags=\"mo\":\\\n"; $rtadvdconf .= "\t:tc=ether:\\\n"; if (isset($config['dnsmasq']['enable'])) { - $dnslist = get_interface_ipv6($dhcpv6if); - $rtadvdconf .= "\t:rdnss=\"{$dnslist}\":\\\n"; + $dnslist[] = get_interface_ipv6($dhcpv6if); } elseif (!empty($config['system']['dnsserver'][0])) { - $dnslist = implode(",", $config['system']['dnsserver']); - $rtadvdconf .= "\t:rdnss=\"{$dnslist}\":\\\n"; + foreach($config['system']['dnsserver'] as $server) { + if(is_ipaddrv6($server)) + $dnslist[] = $server; + } + } + if(!empty($dnslist)) { + $dnsstring = implode(",", $dnslist); + $rtadvdconf .= "\t:rdnss=\"{$dnsstring}\":\\\n"; } $rtadvdconf .= "\n\n"; $rtadvdnum++; |