From 877361d3c01f7f078bc3a9a91854e329f23a7f11 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Wed, 12 Feb 2020 09:33:36 +0100 Subject: [PATCH] dhcp: guard against primary address grab fail --- src/etc/inc/plugins.inc.d/dhcpd.inc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) 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) {