# HG changeset patch # User Kim Alvefur # Date 1512099453 -3600 # Node ID a5a03d40a20c58b061e47e21768386be87bf64c7 # Parent a58d560aa8d5ef520be8efec7beaf2be17405879 util.ip: Make bit string function into a method diff -r a58d560aa8d5 -r a5a03d40a20c util/ip.lua --- a/util/ip.lua Fri Dec 01 04:39:12 2017 +0100 +++ b/util/ip.lua Fri Dec 01 04:37:33 2017 +0100 @@ -51,12 +51,7 @@ return setmetatable({ addr = ipStr, packed = packed, proto = proto, zone = zone }, ip_mt); end -local function toBits(ip) - local result = ""; - local fields = {}; - if ip.proto == "IPv4" then - ip = ip.toV4mapped; - end +function ip_methods.bits(ip) ip = (ip.addr):upper(); ip:gsub("([^:]*):?", function (c) fields[#fields + 1] = c end); if not ip:match(":$") then fields[#fields] = nil; end @@ -77,8 +72,15 @@ return result; end +function ip_methods.bits_full(ip) + if ip.proto == "IPv4" then + ip = ip.toV4mapped; + end + return ip.bits; +end + local function commonPrefixLength(ipA, ipB) - ipA, ipB = toBits(ipA), toBits(ipB); + ipA, ipB = ipA.bits_full, ipB.bits_full; for i = 1, 128 do if ipA:sub(i,i) ~= ipB:sub(i,i) then return i-1;