diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc index 3a98af2b9..ea521cfa3 100644 --- a/src/etc/inc/plugins.inc.d/dhcpd.inc +++ b/src/etc/inc/plugins.inc.d/dhcpd.inc @@ -497,14 +497,22 @@ function dhcpd_radvd_configure($verbose = false, $blacklist = array()) } foreach (config_read_array('virtualip', 'vip') as $vip) { - if ($vip['interface'] == $if && is_ipaddrv6($vip['subnet'])) { - $subnetv6 = gen_subnetv6($vip['subnet'], $vip['subnet_bits']); - $radvdconf .= "\tprefix {$subnetv6}/{$vip['subnet_bits']} {\n"; - $radvdconf .= "\t\tDeprecatePrefix on;\n"; - $radvdconf .= "\t\tAdvOnLink on;\n"; - $radvdconf .= "\t\tAdvAutonomous on;\n"; - $radvdconf .= "\t};\n"; + if ($vip['interface'] != $if || !is_ipaddrv6($vip['subnet'])) { + continue; } + + $subnetv6 = gen_subnetv6($vip['subnet'], $vip['subnet_bits']); + $vipnetv6 = "{$subnetv6}/{$vip['subnet_bits']}"; + + if ($vipnetv6 == $networkv6) { + continue; + } + + $radvdconf .= "\tprefix {$vipnetv6} {\n"; + $radvdconf .= "\t\tDeprecatePrefix on;\n"; + $radvdconf .= "\t\tAdvOnLink on;\n"; + $radvdconf .= "\t\tAdvAutonomous on;\n"; + $radvdconf .= "\t};\n"; } if (count($dnslist) > 0) {