util.ip: Improve comparison, == doesn't necessarily handle IPv6 addresses correctly if they aren't normalized (case, ::, etc.)
--- a/util/ip.lua Tue Nov 17 17:04:04 2015 +0000
+++ b/util/ip.lua Sun Nov 22 15:30:27 2015 +0000
@@ -229,13 +229,10 @@
local function match(ipA, ipB, bits)
local common_bits = commonPrefixLength(ipA, ipB);
- if not bits then
- return ipA == ipB;
- end
if bits and ipB.proto == "IPv4" then
common_bits = common_bits - 96; -- v6 mapped addresses always share these bits
end
- return common_bits >= bits;
+ return common_bits >= (bits or 128);
end
return {new_ip = new_ip,