s:option(Value, "upload", nil, "kb/s")
s = m:section(TypedSection, "classify")
s:option(Value, "upload", nil, "kb/s")
s = m:section(TypedSection, "classify")
-s:option(Value, "srchost").optional = true
-s:option(Value, "dsthost").optional = true
+srch = s:option(Value, "srchost")
+srch.rmempty = true
+srch:value("", translate("all"))
+luci.tools.webadmin.cbi_add_knownips(srch)
+
+dsth = s:option(Value, "dsthost")
+dsth.rmempty = true
+dsth:value("", translate("all"))
+luci.tools.webadmin.cbi_add_knownips(dsth)
local pats = luci.fs.dir("/etc/l7-protocols")
if pats then
for i,f in ipairs(pats) do
local pats = luci.fs.dir("/etc/l7-protocols")
if pats then
for i,f in ipairs(pats) do
p2p:value("all", translate("all"))
p2p:value("bit", "BitTorrent")
p2p:value("dc", "DirectConnect")
p2p:value("edk", "eDonkey")
p2p:value("gnu", "Gnutella")
p2p:value("kazaa", "Kazaa")
p2p:value("all", translate("all"))
p2p:value("bit", "BitTorrent")
p2p:value("dc", "DirectConnect")
p2p:value("edk", "eDonkey")
p2p:value("gnu", "Gnutella")
p2p:value("kazaa", "Kazaa")
-s:option(Value, "ports", translate("port")).optional = true
-s:option(Value, "portrange").optional = true
+ports = s:option(Value, "ports", translate("ports"))
+ports.rmempty = true
+ports:value("", translate("all"))