diff options
author | Seth Mos <seth.mos@dds.nl> | 2011-05-10 08:40:30 +0000 |
---|---|---|
committer | Seth Mos <seth.mos@dds.nl> | 2011-05-10 08:40:30 +0000 |
commit | 0d6dedb9effb59e903a9b4e97f70839645a26f65 (patch) | |
tree | e877b4518f5476c630e6c0a895f0756e580deae2 | |
parent | bfb3e7174a36490ddb6af768839bc04a7637325d (diff) | |
download | pfsense-0d6dedb9effb59e903a9b4e97f70839645a26f65.zip pfsense-0d6dedb9effb59e903a9b4e97f70839645a26f65.tar.gz |
Prevent incorrect rtadvd.conf generation if the prefix is not yet set on the LAN interface
-rw-r--r-- | etc/inc/services.inc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc index 7a56d4f..246ca98 100644 --- a/etc/inc/services.inc +++ b/etc/inc/services.inc @@ -87,7 +87,6 @@ EOD; if($dhcpv6ifconf['mode'] == "disabled") continue; - $rtadvdnum++; $realif = get_real_interface($dhcpv6if); $rtadvdifs[] = $realif; @@ -96,6 +95,7 @@ EOD; $subnetv6 = gen_subnetv6($ifcfgipv6, $ifcfgsnv6); $subnetmaskv6 = gen_subnet_mask($ifcfgsnv6); + $rtadvdconf .= "# Generated for DHCPv6 Server $dhcpv6if\n"; $rtadvdconf .= "{$realif}:\\\n"; $rtadvdconf .= "\t:addr=\"{$subnetv6}\":\\\n"; $rtadvdconf .= "\t:prefixlen#{$ifcfgsnv6}:\\\n"; @@ -113,13 +113,13 @@ EOD; } $rtadvdconf .= "\t:tc=ether:\n"; $rtadvdconf .= "\n\n"; + $rtadvdnum++; } foreach ($Iflist as $if => $ifdescr) { if(!is_numeric($config['interfaces'][$if]['dhcp6-pd-sla-id'])) continue; - $rtadvdnum++; $realif = get_real_interface($if); $rtadvdifs[] = $realif; @@ -128,12 +128,16 @@ EOD; $subnetv6 = gen_subnetv6($ifcfgipv6, $ifcfgsnv6); $subnetmaskv6 = gen_subnet_mask($ifcfgsnv6); - $rtadvdconf .= "{$realif}:\\\n"; - $rtadvdconf .= "\t:addr=\"{$subnetv6}\":\\\n"; - $rtadvdconf .= "\t:prefixlen#{$ifcfgsnv6}:\\\n"; - $rtadvdconf .= "\t:raflags=\"mo\":\\\n"; - $rtadvdconf .= "\t:tc=ether:\n"; - $rtadvdconf .= "\n\n"; + if(is_ipaddrv6($subnetv6)) { + $rtadvdconf .= "# Generated for DHCP-PD delegation $if\n"; + $rtadvdconf .= "{$realif}:\\\n"; + $rtadvdconf .= "\t:addr=\"{$subnetv6}\":\\\n"; + $rtadvdconf .= "\t:prefixlen#{$ifcfgsnv6}:\\\n"; + $rtadvdconf .= "\t:raflags=\"mo\":\\\n"; + $rtadvdconf .= "\t:tc=ether:\n"; + $rtadvdconf .= "\n\n"; + $rtadvdnum++; + } } fwrite($fd, $rtadvdconf); |