Diff

util/ip.lua @ 8434:ec8f37baffaa

util.ip: Simplify creation of IPv6-mapped IPv4 addresses
author Kim Alvefur <zash@zash.se>
date Fri, 01 Dec 2017 04:33:49 +0100
parent 8433:ca7f8e60410a
child 8435:47195f035d2f
line wrap: on
line diff
--- a/util/ip.lua	Fri Dec 01 04:33:27 2017 +0100
+++ b/util/ip.lua	Fri Dec 01 04:33:49 2017 +0100
@@ -155,22 +155,9 @@
 	end
 end
 
-local function toV4mapped(ip)
-	local fields = {};
-	local ret = "::ffff:";
-	ip:gsub("([^.]*).?", function (c) fields[#fields + 1] = tonumber(c) end);
-	ret = ret .. ("%02x"):format(fields[1]);
-	ret = ret .. ("%02x"):format(fields[2]);
-	ret = ret .. ":"
-	ret = ret .. ("%02x"):format(fields[3]);
-	ret = ret .. ("%02x"):format(fields[4]);
-	return new_ip(ret, "IPv6");
-end
-
 function ip_methods:toV4mapped()
 	if self.proto ~= "IPv4" then return nil, "No IPv4 address" end
-	local value = toV4mapped(self.addr);
-	self.toV4mapped = value;
+	local value = new_ip("::ffff:" .. self.normal);
 	return value;
 end