diff options
-rw-r--r-- | etc/inc/pfsense-utils.inc | 17 | ||||
-rw-r--r-- | etc/inc/util.inc | 3 |
2 files changed, 14 insertions, 6 deletions
diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index 47469d8..11c0057 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -2434,15 +2434,24 @@ function load_mac_manufacturer_table() { function is_ipaddr_configured($ipaddr, $ignore_if = "", $check_localip = false, $check_subnets = false) { global $config; + $isipv6 = is_ipaddrv6($ipaddr); + if ($check_subnets) { $iflist = get_configured_interface_list(); foreach ($iflist as $if => $ifname) { if ($ignore_if == $if) continue; - $bitmask = get_interface_subnet($if); - $subnet = gen_subnet(get_interface_ip($if), $bitmask); - if (ip_in_subnet($ipaddr, $subnet . '/' . $bitmask)) - return true; + if ($isipv6 === true) { + $bitmask = get_interface_subnetv6($if); + $subnet = gen_subnetv6(get_interface_ipv6($if), $bitmask); + if (ip_in_subnet($ipaddr, $subnet . '/' . $bitmask)) + return true; + } else { + $bitmask = get_interface_subnet($if); + $subnet = gen_subnet(get_interface_ip($if), $bitmask); + if (ip_in_subnet($ipaddr, $subnet . '/' . $bitmask)) + return true; + } } $interface_list_vips = get_configured_vips_list(true); diff --git a/etc/inc/util.inc b/etc/inc/util.inc index b0f6aa1..2590f8e 100644 --- a/etc/inc/util.inc +++ b/etc/inc/util.inc @@ -477,8 +477,7 @@ function is_ipaddr($ipaddr) { function is_ipaddrv6($ipaddr) { if (!is_string($ipaddr) || empty($ipaddr)) return false; - $result = Net_IPv6::checkIPv6($ipaddr); - return $result; + return Net_IPv6::checkIPv6($ipaddr); } /* returns true if $ipaddr is a valid dotted IPv4 address */ |