diff options
-rw-r--r-- | libs/uvl/luasrc/uvl/datatypes.lua | 14 | ||||
-rw-r--r-- | libs/uvl/root/lib/uci/schema/default/firewall | 10 |
2 files changed, 19 insertions, 5 deletions
diff --git a/libs/uvl/luasrc/uvl/datatypes.lua b/libs/uvl/luasrc/uvl/datatypes.lua index 60377e289..e6a4c1688 100644 --- a/libs/uvl/luasrc/uvl/datatypes.lua +++ b/libs/uvl/luasrc/uvl/datatypes.lua @@ -83,6 +83,20 @@ function ip6prefix( val ) return ( val and val >= 0 and val <= 128 ) end +function port( val ) + val = tonumber(val) + return ( val and val >= 1 and val <= 65535 ) +end + +function portrange( val ) + local p1, p2 = val:match("^(%d+)%-(%d+)$") + if p1 and p2 and port(p1) and port(p2) then + return true + else + return port(val) + end +end + function macaddr( val ) if val and val:match( "^[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+:" .. diff --git a/libs/uvl/root/lib/uci/schema/default/firewall b/libs/uvl/root/lib/uci/schema/default/firewall index e421b1103..fc58705cd 100644 --- a/libs/uvl/root/lib/uci/schema/default/firewall +++ b/libs/uvl/root/lib/uci/schema/default/firewall @@ -121,7 +121,7 @@ config variable option name 'src_port' option title 'Source port' option section 'firewall.rule' - option datatype 'uint' + option datatype 'portrange' config variable option name 'src_mac' @@ -145,7 +145,7 @@ config variable option name 'dest_port' option title 'Destination port' option section 'firewall.rule' - option datatype 'uint' + option datatype 'portrange' config variable option name 'proto' @@ -183,13 +183,13 @@ config variable option name 'src_port' option title 'Source port' option section 'firewall.redirect' - option datatype 'uint' + option datatype 'portrange' config variable option name 'src_dport' option title 'Source destination port' option section 'firewall.redirect' - option datatype 'uint' + option datatype 'portrange' config variable option name 'src_mac' @@ -213,7 +213,7 @@ config variable option name 'dest_port' option title 'Destination port' option section 'firewall.redirect' - option datatype 'uint' + option datatype 'portrange' config variable option name 'proto' |