util.ip: Add 'private' method/property to determine whether an IP address is generally expected to be internet-routeable (YMMV)
authorMatthew Wild <mwild1@gmail.com>
Fri, 17 May 2013 14:53:51 +0100
changeset 5588 8c1a3243d16f
parent 5587 e108c3f97f26
child 5589 8745193e651e
util.ip: Add 'private' method/property to determine whether an IP address is generally expected to be internet-routeable (YMMV)
util/ip.lua
--- a/util/ip.lua	Fri May 17 14:52:52 2013 +0100
+++ b/util/ip.lua	Fri May 17 14:53:51 2013 +0100
@@ -193,5 +193,20 @@
 	return value;
 end
 
+function ip_methods:private()
+	local private = self.scope ~= 0xE;
+	if not private and self.proto == "IPv4" then
+		local ip = self.addr;
+		local fields = {};
+		ip:gsub("([^.]*).?", function (c) fields[#fields + 1] = tonumber(c) end);
+		if fields[1] == 127 or fields[1] == 10 or (fields[1] == 192 and fields[2] == 168)
+		or (fields[1] == 172 and (fields[2] >= 16 or fields[2] <= 32)) then
+			private = true;
+		end
+	end
+	self.private = private;
+	return private;
+end
+
 return {new_ip = new_ip,
 	commonPrefixLength = commonPrefixLength};