libs/core: fixes for luci.model.firewall, luci.model.network and luci.model.network...
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 27 Oct 2009 21:34:06 +0000 (21:34 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 27 Oct 2009 21:34:06 +0000 (21:34 +0000)
libs/core/luasrc/model/firewall.lua
libs/core/luasrc/model/network.lua
libs/core/luasrc/model/network/wireless.lua

index a6158c2..a1daf5a 100644 (file)
@@ -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()
index debf3db..e1e9f45 100644 (file)
@@ -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)
index ec4131b..109367f 100644 (file)
@@ -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  = { },