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]+:" ..
option name 'src_port'
option title 'Source port'
option section 'firewall.rule'
- option datatype 'uint'
+ option datatype 'portrange'
config variable
option name 'src_mac'
option name 'dest_port'
option title 'Destination port'
option section 'firewall.rule'
- option datatype 'uint'
+ option datatype 'portrange'
config variable
option name 'proto'
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'
option name 'dest_port'
option title 'Destination port'
option section 'firewall.redirect'
- option datatype 'uint'
+ option datatype 'portrange'
config variable
option name 'proto'