From e9e827557b7c6c6351a49aa7a1c1e868b1723b62 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Fri, 1 Dec 2017 04:37:33 +0100
Subject: util.ip: Make bit string function into a method

---
 util/ip.lua | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

(limited to 'util')

diff --git a/util/ip.lua b/util/ip.lua
index 0e01c067..5cf612f8 100644
--- a/util/ip.lua
+++ b/util/ip.lua
@@ -51,12 +51,7 @@ local function new_ip(ipStr, proto)
 	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 @@ local function toBits(ip)
 	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;
-- 
cgit v1.2.3