Merge pull request #509 from neheb/master
[project/luci.git] / modules / luci-base / luasrc / sys.lua
index 3977da3..77f4d44 100644 (file)
@@ -581,30 +581,20 @@ function wifi.getiwinfo(ifname)
        local stat, iwinfo = pcall(require, "iwinfo")
 
        if ifname then
-               local c = 0
-               local u = uci.cursor_state()
                local d, n = ifname:match("^(%w+)%.network(%d+)")
-               if d and n then
+               local wstate = luci.util.ubus("network.wireless", "status") or { }
+
+               d = d or ifname
+               n = n and tonumber(n) or 1
+
+               if type(wstate[d]) == "table" and
+                  type(wstate[d].interfaces) == "table" and
+                  type(wstate[d].interfaces[n]) == "table" and
+                  type(wstate[d].interfaces[n].ifname) == "string"
+               then
+                       ifname = wstate[d].interfaces[n].ifname
+               else
                        ifname = d
-                       n = tonumber(n)
-                       u:foreach("wireless", "wifi-iface",
-                               function(s)
-                                       if s.device == d then
-                                               c = c + 1
-                                               if c == n then
-                                                       ifname = s.ifname or s.device
-                                                       return false
-                                               end
-                                       end
-                               end)
-               elseif u:get("wireless", ifname) == "wifi-device" then
-                       u:foreach("wireless", "wifi-iface",
-                               function(s)
-                                       if s.device == ifname and s.ifname then
-                                               ifname = s.ifname
-                                               return false
-                                       end
-                               end)
                end
 
                local t = stat and iwinfo.type(ifname)