summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2009-11-08 02:34:31 +0000
committerJo-Philipp Wich <jow@openwrt.org>2009-11-08 02:34:31 +0000
commitc07a7b5a02d8d97f0647fbcbdc6882d87714b33b (patch)
tree551d29a65e78f5b40c834030e907968ed1d40be3
parent936d82ea5abf6914b69eed57b561911e0830fc3c (diff)
libs/core: implement add_network() and del_network() in wireless model
-rw-r--r--libs/core/luasrc/model/wireless.lua58
1 files changed, 42 insertions, 16 deletions
diff --git a/libs/core/luasrc/model/wireless.lua b/libs/core/luasrc/model/wireless.lua
index 8533fb934..6c6467fd4 100644
--- a/libs/core/luasrc/model/wireless.lua
+++ b/libs/core/luasrc/model/wireless.lua
@@ -17,7 +17,7 @@ limitations under the License.
]]--
-local pairs, i18n, uci, math = pairs, luci.i18n, luci.model.uci, math
+local pairs, type, i18n, uci, math = pairs, type, luci.i18n, luci.model.uci, math
local iwi = require "iwinfo"
local utl = require "luci.util"
@@ -86,6 +86,46 @@ function get_network(self, id)
end
end
+function add_network(self, options)
+ if type(options) == "table" and options.device and
+ ub.uci:get("wireless", options.device) == "wifi-device"
+ then
+ local s = ub.uci:section("wireless", "wifi-iface", nil, options)
+ local c = 1
+ ub.uci:foreach("wireless", "wifi-iface", function(s) c = c + 1 end)
+
+ local id = "%s.network%d" %{ options.device, c }
+ ifs[id] = {
+ id = id,
+ sid = s,
+ count = c
+ }
+
+ local wtype = iwi.type(options.device)
+ if wtype then
+ ifs[id].winfo = iwi[wtype]
+ ifs[id].wdev = options.device
+ end
+
+ return network(s)
+ end
+end
+
+function del_network(self, id)
+ if ifs[id] then
+ ub.uci:delete("wireless", ifs[id].sid)
+ ifs[id] = nil
+ else
+ local n
+ for n, _ in pairs(ifs) do
+ if ifs[n].sid == id then
+ ub.uci:delete("wireless", id)
+ ifs[n] = nil
+ end
+ end
+ end
+end
+
function shortname(self, iface)
if iface.wdev and iface.winfo then
return "%s %q" %{
@@ -109,21 +149,6 @@ function get_i18n(self, iface)
end
end
-function del_network(self, id)
- if ifs[id] then
- ub.uci:delete("wireless", ifs[id].sid)
- ifs[id] = nil
- else
- local n
- for n, _ in pairs(ifs) do
- if ifs[n].sid == id then
- ub.uci:delete("wireless", id)
- ifs[n] = nil
- end
- end
- end
-end
-
function find_interfaces(self, iflist, brlist)
local iface
for iface, _ in pairs(ifs) do
@@ -214,6 +239,7 @@ function network._init(self, sid)
end)
local parent_dev = st:get("wireless", sid, "device")
+ or ub.uci:get("wireless", sid, "device")
local dev = st:get("wireless", sid, "ifname")
or parent_dev