diff options
-rw-r--r-- | libs/core/luasrc/model/firewall.lua | 14 | ||||
-rw-r--r-- | libs/core/luasrc/model/network.lua | 11 | ||||
-rw-r--r-- | 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 a6158c2052..a1daf5a701 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 debf3dba49..e1e9f4558c 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 ec4131b046..109367fd4c 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 = { }, |