summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--libs/core/luasrc/model/firewall.lua14
-rw-r--r--libs/core/luasrc/model/network.lua11
-rw-r--r--libs/core/luasrc/model/network/wireless.lua6
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 = { },