diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index 75f089375..9f9efff2e 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -286,10 +286,17 @@ function services_radvd_configure($blacklist = array()) if (isset($radvdifs[$realif])) { continue; } - $radvdifs[$realif] = 1; + $radvdifs[$realif] = 1; + $autotype = ''; + + if (isset($config['interfaces'][$trackif]['ipaddrv6'])) { + $autotype = $config['interfaces'][$trackif]['ipaddrv6']; + } + + $subnetv6 = $autotype != 'slaac' ? '::' : '2000::'; + $mtu = legacy_interface_stats($realif)['mtu']; $dnslist = array(); - $subnetv6 = '::'; $ifcfgsnv6 = '64'; $ifcfgipv6 = get_interface_ipv6($if); @@ -309,19 +316,18 @@ function services_radvd_configure($blacklist = array()) } } - if (isset($config['interfaces'][$trackif]['ipaddrv6'])) { - $autotype = $config['interfaces'][$trackif]['ipaddrv6']; - $radvdconf .= "# Generated config for {$autotype} delegation from {$trackif} on {$if}\n"; - } - + $radvdconf .= "# Generated config for {$autotype} delegation from {$trackif} on {$if}\n"; $radvdconf .= "interface {$realif} {\n"; $radvdconf .= "\tAdvSendAdvert on;\n"; $radvdconf .= "\tMinRtrAdvInterval 3;\n"; $radvdconf .= "\tMaxRtrAdvInterval 10;\n"; - $mtu = legacy_interface_stats($realif)['mtu']; $radvdconf .= "\tAdvLinkMTU ". (is_numeric($mtu) ? $mtu : 1280) .";\n"; $radvdconf .= "\tAdvOtherConfigFlag on;\n"; $radvdconf .= "\tprefix {$subnetv6}/{$ifcfgsnv6} {\n"; + if ($autotype == 'slaac') { + $realtrackif = get_real_interface($trackif, 'inet6'); + $radvdconf .= "\t\tBase6Interface $realtrackif;\n"; + } $radvdconf .= "\t\tAdvOnLink on;\n"; $radvdconf .= "\t\tAdvAutonomous on;\n"; $radvdconf .= "\t\tAdvRouterAddr on;\n"; diff --git a/src/www/interfaces.php b/src/www/interfaces.php index 9a628a73b..ef7ca4c8c 100644 --- a/src/www/interfaces.php +++ b/src/www/interfaces.php @@ -2761,9 +2761,10 @@ include("head.inc"); $ifacename): switch($config['interfaces'][$iface]['ipaddrv6']) { - case "6to4": - case "6rd": - case "dhcp6": + case '6rd': + case '6to4': + case 'dhcp6': + case 'slaac': break; default: continue 2;