diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 05e620aa6..6c07c5702 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -3972,7 +3972,13 @@ function ip_in_interface_alias_subnet($interface, $ipalias) function get_interface_ip($interface = 'wan', $ifconfig_details = null) { if (strstr($interface, '_vip')) { - return get_configured_carp_interface_list($interface); + foreach (config_read_array('virtualip', 'vip') as $vip) { + if ($vip['mode'] == 'carp') { + if ($interface == "{$vip['interface']}_vip{$vip['vhid']}" && is_ipaddrv4($vip['subnet'])) { + return $vip['subnet']; + } + } + } } list ($ip) = interfaces_primary_address($interface, $ifconfig_details); @@ -3983,7 +3989,13 @@ function get_interface_ip($interface = 'wan', $ifconfig_details = null) function get_interface_ipv6($interface = 'wan', $ifconfig_details = null) { if (strstr($interface, '_vip')) { - return get_configured_carp_interface_list($interface, 'inet6'); + foreach (config_read_array('virtualip', 'vip') as $vip) { + if ($vip['mode'] == 'carp') { + if ($interface == "{$vip['interface']}_vip{$vip['vhid']}" && is_ipaddrv6($vip['subnet'])) { + return $vip['subnet']; + } + } + } } list ($ipv6) = interfaces_primary_address6($interface, $ifconfig_details); diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc index ad87f9f37..f79b322ac 100644 --- a/src/etc/inc/util.inc +++ b/src/etc/inc/util.inc @@ -753,35 +753,22 @@ function is_inrange($test, $start, $end) return is_ipaddrv6($test) ? is_inrange_v6($test, $start, $end) : is_inrange_v4($test, $start, $end); } -/* XXX: return the configured carp interface list */ -function get_configured_carp_interface_list($carpinterface = '', $family = 'inet') +function get_configured_carp_interface_list() { - $iflist = array(); + $carp_list = []; foreach (config_read_array('virtualip', 'vip') as $vip) { - switch ($vip['mode']) { - case 'carp': - if (!empty($carpinterface)) { - if ($carpinterface == "{$vip['interface']}_vip{$vip['vhid']}") { - if ($family == 'inet' && is_ipaddrv4($vip['subnet'])) { - return $vip['subnet']; - } elseif ($family == 'inet6' && is_ipaddrv6($vip['subnet'])) { - return $vip['subnet']; - } - } - } else { - $iflist["{$vip['interface']}_vip{$vip['vhid']}"] = $vip['subnet']; - } - break; + if ($vip['mode'] == 'carp') { + $carp_list["{$vip['interface']}_vip{$vip['vhid']}"] = $vip['subnet']; } } - return $iflist; + return $carp_list; } function get_configured_ip_aliases_list() { - $alias_list = array(); + $alias_list = []; foreach (config_read_array('virtualip', 'vip') as $vip) { if ($vip['mode'] == 'ipalias') {