From 0bd1280a456a5f95b15cd397e65ab03d95b79245 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Sun, 24 Sep 2023 20:54:31 +0200 Subject: [PATCH] interfaces: prevent reading config.xml garbage The no prefix is only applicable when 'dhcp6' IPv6 mode is set. PR: https://forum.opnsense.org/index.php?topic=35848.0 --- src/etc/inc/interfaces.inc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 5010d76ee..4a2b0e622 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -4369,11 +4369,20 @@ function interfaces_addresses($interfaces, $as_subnet = false, $ifconfig_details function interfaces_has_prefix_only($interface) { $interfaces_a = config_read_array('interfaces'); + $ret = false; - return empty($interfaces_a[$interface]['adv_dhcp6_config_file_override']) && - ((!empty($interfaces_a[$interface]['adv_dhcp6_config_advanced']) && - empty($interfaces_a[$interface]['adv_dhcp6_id_assoc_statement_address_enable'])) || - isset($interfaces_a[$interface]['dhcp6prefixonly'])); + switch ($interfaces_a[$interface]['ipaddrv6'] ?? '') { + case 'dhcp6': + $ret = empty($interfaces_a[$interface]['adv_dhcp6_config_file_override']) && + ((!empty($interfaces_a[$interface]['adv_dhcp6_config_advanced']) && + empty($interfaces_a[$interface]['adv_dhcp6_id_assoc_statement_address_enable'])) || + isset($interfaces_a[$interface]['dhcp6prefixonly'])); + break; + default: + break; + } + + return $ret; } function interfaces_primary_address($interface, $ifconfig_details = null)