diff --git a/src/etc/inc/filter.lib.inc b/src/etc/inc/filter.lib.inc index 15e425402..079909c2b 100644 --- a/src/etc/inc/filter.lib.inc +++ b/src/etc/inc/filter.lib.inc @@ -474,8 +474,13 @@ function filter_core_rules_system($fw, $defaults) ); break; default: - if (isset($config['dhcpdv6'][$intf]['enable']) || isset($intfinfo['track6-interface']) - || (!empty($config['dhcrelay6']['interface']) && in_array($intf, explode(',', $config['dhcrelay6']['interface'])))) { + $dhcpdv6_enabled = isset($config['dhcpdv6'][$intf]['enable']); + $dhcrelay6_enabled = isset($config['dhcrelay6']['enable']); + $dhcrelay6_interfaces = array(); + if (!empty($config['dhcrelay6']['interface'])) { + $dhcrelay6_interfaces = explode(',', $config['dhcrelay6']['interface']); + } + if ($dhcpdv6_enabled || ($dhcrelay6_enabled && in_array($intf, $dhcrelay6_interfaces))) { $fw->registerFilterRule( 1, array('protocol' => 'udp','ipprotocol' => 'inet6', 'from' => 'fe80::/10', 'to' => 'fe80::/10,ff02::/16',