diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc index aa832d26f..520a8e0be 100644 --- a/src/etc/inc/plugins.inc.d/dhcpd.inc +++ b/src/etc/inc/plugins.inc.d/dhcpd.inc @@ -316,10 +316,12 @@ function dhcpd_radvd_configure($verbose = false, $blacklist = array()) } foreach (config_read_array('virtualip', 'vip') as $vip) { - if ($vip['interface'] == $dhcpv6if && is_ipaddrv6($vip['subnet'])) { - $subnetv6 = gen_subnetv6($vip['subnet'], $vip['subnet_bits']); - $stanzas[] = "{$subnetv6}/{$vip['subnet_bits']}"; + if ($vip['interface'] != $dhcpv6if || !is_ipaddrv6($vip['subnet']) || is_linklocal($vip['subnet'])) { + continue; } + + $subnetv6 = gen_subnetv6($vip['subnet'], $vip['subnet_bits']); + $stanzas[] = "{$subnetv6}/{$vip['subnet_bits']}"; } /* VIPs may duplicate readings from system */ @@ -505,7 +507,7 @@ function dhcpd_radvd_configure($verbose = false, $blacklist = array()) } foreach (config_read_array('virtualip', 'vip') as $vip) { - if ($vip['interface'] != $if || !is_ipaddrv6($vip['subnet'])) { + if ($vip['interface'] != $if || !is_ipaddrv6($vip['subnet']) || is_linklocal($vip['subnet'])) { continue; }