modules/base: work around wireless status changes
[project/luci.git] / modules / base / luasrc / model / network.lua
index a409621..6119abd 100644 (file)
@@ -135,13 +135,25 @@ function _wifi_iface(x)
 end
 
 function _wifi_state(key, val, field)
+       local radio, radiostate, ifc, ifcstate
+
        if not next(_ubuswificache) then
                _ubuswificache = _ubus:call("network.wireless", "status", {}) or {}
+
+               -- workaround extended section format
+               for radio, radiostate in pairs(_ubuswificache) do
+                       for ifc, ifcstate in pairs(radiostate.interfaces) do
+                               if ifcstate.section and ifcstate.section:sub(1, 1) == '@' then
+                                       local s = _uci_real:get_all('wireless.%s' % ifcstate.section)
+                                       if s then
+                                               ifcstate.section = s['.name']
+                                       end
+                               end
+                       end
+               end
        end
 
-       local radio, radiostate
        for radio, radiostate in pairs(_ubuswificache) do
-               local ifc, ifcstate
                for ifc, ifcstate in pairs(radiostate.interfaces) do
                        if ifcstate[key] == val then
                                return ifcstate[field]
@@ -1274,6 +1286,7 @@ function wifidev.get_i18n(self)
        if l.b then m = m .. "b" end
        if l.g then m = m .. "g" end
        if l.n then m = m .. "n" end
+       if l.ac then m = "ac" end
 
        return "%s 802.11%s Wireless Controller (%s)" %{ t, m, self:name() }
 end