X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fcore%2Fluasrc%2Fmodel%2Ffirewall.lua;h=a1daf5a7019e4266eb9ba8691176a281827f46ee;hp=6fc207cac484d95e37749ee6fd31f251d88325a9;hb=7f92fa405cee6b2657325a4b7554be88b217fb9f;hpb=9fcd1f2f59ba07882e2925f53703e8cfad943800 diff --git a/libs/core/luasrc/model/firewall.lua b/libs/core/luasrc/model/firewall.lua index 6fc207cac..a1daf5a70 100644 --- a/libs/core/luasrc/model/firewall.lua +++ b/libs/core/luasrc/model/firewall.lua @@ -74,21 +74,21 @@ function get_zones(self) return zones end -function get_zones_by_network(self, net) - local zones = { } +function get_zone_by_network(self, net) + local z ub.uci:foreach("firewall", "zone", function(s) - if s.name then + if s.name and net then local n for _, n in ipairs(ub:list(s.network or s.name)) do if n == net then - zones[#zones+1] = zone(s['.name']) - return true + z = s['.name'] + return false end end end end) - return zones + return z and zone(z) end function del_zone(self, n) @@ -234,7 +234,7 @@ function zone.add_forwarding_to(self, dest, with_mtu_fix) local s = ub.uci:section("firewall", "forwarding", nil, { src = self:name(), dest = dest, - mtu_fix = with_mtu_fix and true or false + mtu_fix = with_mtu_fix and "1" or "0" }) return s and forwarding(s) end @@ -252,12 +252,22 @@ function zone.add_forwarding_from(self, src, with_mtu_fix) local s = ub.uci:section("firewall", "forwarding", nil, { src = src, dest = self:name(), - mtu_fix = with_mtu_fix and true or false + mtu_fix = with_mtu_fix and "1" or "0" }) return s and forwarding(s) end end +function zone.del_forwardings_by(self, what) + local name = self:name() + ub.uci:foreach("firewall", "forwarding", + function(s) + if s.src and s.dest and s[what] == name then + ub.uci:delete("firewall", s['.name']) + end + end) +end + function zone.add_redirect(self, options) options = options or { } options.src = self:name()