From 99d425aeedf5801a0ca8c6f741e591456bd1ab0e Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 27 Oct 2009 21:34:06 +0000 Subject: [PATCH] libs/core: fixes for luci.model.firewall, luci.model.network and luci.model.network.wireless --- libs/core/luasrc/model/firewall.lua | 14 ++++++++++++-- libs/core/luasrc/model/network.lua | 11 ++++++++++- libs/core/luasrc/model/network/wireless.lua | 6 +++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/libs/core/luasrc/model/firewall.lua b/libs/core/luasrc/model/firewall.lua index a6158c205..a1daf5a70 100644 --- a/libs/core/luasrc/model/firewall.lua +++ b/libs/core/luasrc/model/firewall.lua @@ -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() diff --git a/libs/core/luasrc/model/network.lua b/libs/core/luasrc/model/network.lua index debf3dba4..e1e9f4558 100644 --- a/libs/core/luasrc/model/network.lua +++ b/libs/core/luasrc/model/network.lua @@ -217,7 +217,16 @@ function rename_network(self, old, new) end function get_interface(self, i) - return ifs[i] and interface(i) + if ifs[i] then + return interface(i) + else + local j + for j, _ in pairs(ifs) do + if ifs[j].sid == i then + return interface(j) + end + end + end end function get_interfaces(self) diff --git a/libs/core/luasrc/model/network/wireless.lua b/libs/core/luasrc/model/network/wireless.lua index ec4131b04..109367fd4 100644 --- a/libs/core/luasrc/model/network/wireless.lua +++ b/libs/core/luasrc/model/network/wireless.lua @@ -44,11 +44,11 @@ function init(self, cursor) local device = s.device or "wlan0" local state = st:get_all("wireless", s['.name']) - local name = state.ifname or device .. ".network" .. count + local name = device .. ".network" .. count - ifs[state and state.ifname or name] = { + ifs[name] = { idx = count, - name = state and state.ifname or name, + name = name, rawname = state and state.ifname or name, flags = { }, ipaddrs = { }, -- 2.11.0