projects
/
project
/
luci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
luci-base: datatypes: add cidr, ipnet validator type
[project/luci.git]
/
modules
/
luci-base
/
luasrc
/
cbi
/
datatypes.lua
diff --git
a/modules/luci-base/luasrc/cbi/datatypes.lua
b/modules/luci-base/luasrc/cbi/datatypes.lua
index
cf56566
..
df23aaf
100644
(file)
--- a/
modules/luci-base/luasrc/cbi/datatypes.lua
+++ b/
modules/luci-base/luasrc/cbi/datatypes.lua
@@
-132,38
+132,40
@@
function ip6prefix(val)
return ( val and val >= 0 and val <= 128 )
end
return ( val and val >= 0 and val <= 128 )
end
-function ipmask(val)
- return ipmask4(val) or ipmask6(val)
+function cidr4(val)
+ local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+ return ip4addr(ip) and ip4prefix(mask)
end
end
-function
ipmask4
(val)
+function
cidr6
(val)
local ip, mask = val:match("^([^/]+)/([^/]+)$")
local ip, mask = val:match("^([^/]+)/([^/]+)$")
- local bits = tonumber(mask)
- if bits and (bits < 0 or bits > 32) then
- return false
- end
+ return ip6addr(ip) and ip6prefix(mask)
+end
- if not bits and mask and not ip4addr(mask) then
- return false
- end
+function ipnet4(val)
+ local ip, mask = val:match("^([^/]+)/([^/]+)$")
- return ip4addr(ip
or val
)
+ return ip4addr(ip
) and ip4addr(mask
)
end
end
-function ip
mask
6(val)
+function ip
net
6(val)
local ip, mask = val:match("^([^/]+)/([^/]+)$")
local ip, mask = val:match("^([^/]+)/([^/]+)$")
- local bits = tonumber(mask)
- if bits and (bits < 0 or bits > 128) then
- return false
- end
+ return ip6addr(ip) and ip6addr(mask)
+end
- if not bits and mask and not ip6addr(mask) then
- return false
- end
+function ipmask(val)
+ return ipmask4(val) or ipmask6(val)
+end
+
+function ipmask4(val)
+ return cidr4(val) or ipnet4(val) or ip4addr(val)
+end
- return ip6addr(ip or val)
+function ipmask6(val)
+ return cidr6(val) or ipnet6(val) or ip6addr(val)
end
function ip6hostid(val)
end
function ip6hostid(val)