summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2012-09-15 13:10:27 +0000
committerJo-Philipp Wich <jow@openwrt.org>2012-09-15 13:10:27 +0000
commit647a0d33c39b7cbe070bd7e36f17be5a3ac626db (patch)
tree40bbc865f3a7b094f122beae99ad1a47deb283d0
parent1e5066815c7fc10ff20f78df5bfe2c1b001816ba (diff)
libs/core: adapt luci.model.network for wifi-iface instances which are members of multiple networks
-rw-r--r--libs/core/luasrc/model/network.lua55
1 files changed, 43 insertions, 12 deletions
diff --git a/libs/core/luasrc/model/network.lua b/libs/core/luasrc/model/network.lua
index c2c2e66b0..37b792370 100644
--- a/libs/core/luasrc/model/network.lua
+++ b/libs/core/luasrc/model/network.lua
@@ -384,7 +384,17 @@ function del_network(self, n)
_uci_real:foreach("wireless", "wifi-iface",
function(s)
- if s.network == n then
+ local net
+ local rest = { }
+ for net in utl.imatch(s.network) do
+ if net ~= n then
+ rest[#rest+1] = net
+ end
+ end
+ if #rest > 0 then
+ _uci_real:set("wireless", s['.name'], "network",
+ table.concat(rest, " "))
+ else
_uci_real:delete("wireless", s['.name'], "network")
end
end)
@@ -421,8 +431,18 @@ function rename_network(self, old, new)
_uci_real:foreach("wireless", "wifi-iface",
function(s)
- if s.network == old then
- _uci_real:set("wireless", s['.name'], "network", new)
+ local net
+ local list = { }
+ for net in utl.imatch(s.network) do
+ if net == old then
+ list[#list+1] = new
+ else
+ list[#list+1] = net
+ end
+ end
+ if #list > 0 then
+ _uci_real:set("wireless", s['.name'], "network",
+ table.concat(list, " "))
end
end)
@@ -678,9 +698,12 @@ function protocol.ifname(self)
num[s.device] = num[s.device]
and num[s.device] + 1 or 1
- if s.network == self.sid then
- ifname = "%s.network%d" %{ s.device, num[s.device] }
- return false
+ local net
+ for net in utl.imatch(s.network) do
+ if net == self.sid then
+ ifname = "%s.network%d" %{ s.device, num[s.device] }
+ return false
+ end
end
end
end)
@@ -879,9 +902,13 @@ function protocol.get_interface(self)
function(s)
if s.device then
num[s.device] = num[s.device] and num[s.device] + 1 or 1
- if s.network == self.sid then
- ifn = "%s.network%d" %{ s.device, num[s.device] }
- return false
+
+ local net
+ for net in utl.imatch(s.network) do
+ if net == self.sid then
+ ifn = "%s.network%d" %{ s.device, num[s.device] }
+ return false
+ end
end
end
end)
@@ -910,9 +937,13 @@ function protocol.get_interfaces(self)
function(s)
if s.device then
num[s.device] = num[s.device] and num[s.device] + 1 or 1
- if s.network == self.sid then
- ifn = "%s.network%d" %{ s.device, num[s.device] }
- wfs[ifn] = interface(ifn, self)
+
+ local net
+ for net in utl.imatch(s.network) do
+ if net == self.sid then
+ ifn = "%s.network%d" %{ s.device, num[s.device] }
+ wfs[ifn] = interface(ifn, self)
+ end
end
end
end)