summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeth Mos <seth.mos@dds.nl>2011-09-06 22:24:02 +0200
committerSeth Mos <seth.mos@dds.nl>2011-09-06 22:25:50 +0200
commit3aa114d5550f03ceb0d05d6c9c2ce22542ba5512 (patch)
treec64cf45aca35ea4c0f8e755f2c9c95435659d388
parentf8707b1537b2d83c3f843ccdd43c122bf57a45fc (diff)
downloadpfsense-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.inc35
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++;
OpenPOWER on IntegriCloud