32 lines
830 B
Lua
32 lines
830 B
Lua
if not verbana then verbana = {} end
|
|
|
|
verbana.ip = {}
|
|
|
|
function verbana.ip.ipstr_to_number(ip)
|
|
local a, b, c, d = ip:match('^(%d+)%.(%d+)%.(%d+)%.(%d+)$')
|
|
a = tonumber(a)
|
|
b = tonumber(b)
|
|
c = tonumber(c)
|
|
d = tonumber(d)
|
|
return (a * 16777216) + (b * 65536) + (c * 256) + d
|
|
end
|
|
|
|
function verbana.ip.number_to_ipstr(number)
|
|
local d = number % 256
|
|
number = math.floor(number / 256)
|
|
local c = number % 256
|
|
number = math.floor(number / 256)
|
|
local b = number % 256
|
|
local a = math.floor(number / 256)
|
|
return ('%u.%u.%u.%u'):format(a, b, c, d)
|
|
end
|
|
|
|
function verbana.ip.netstr_to_bounds(ipnet)
|
|
local ip, net = ipnet:match('^(.*)/(%d+)$')
|
|
local start = verbana.ip.ipstr_to_number(ip)
|
|
net = tonumber(net)
|
|
local end_ = start + (2 ^ (32 - net)) - 1
|
|
return start, end_
|
|
end
|
|
|