modules/base: work around wireless status changes
The latest netifd updates changed the ubus wireless status reporting in a way that breaks the current LuCI integration. Work around the changed format by translating the extended UCI section syntax back to the plain one. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
ff65318ba5
commit
ecb0c2f11b
1 changed files with 14 additions and 2 deletions
|
@ -135,13 +135,25 @@ function _wifi_iface(x)
|
||||||
end
|
end
|
||||||
|
|
||||||
function _wifi_state(key, val, field)
|
function _wifi_state(key, val, field)
|
||||||
|
local radio, radiostate, ifc, ifcstate
|
||||||
|
|
||||||
if not next(_ubuswificache) then
|
if not next(_ubuswificache) then
|
||||||
_ubuswificache = _ubus:call("network.wireless", "status", {}) or {}
|
_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
|
end
|
||||||
|
|
||||||
local radio, radiostate
|
|
||||||
for radio, radiostate in pairs(_ubuswificache) do
|
for radio, radiostate in pairs(_ubuswificache) do
|
||||||
local ifc, ifcstate
|
|
||||||
for ifc, ifcstate in pairs(radiostate.interfaces) do
|
for ifc, ifcstate in pairs(radiostate.interfaces) do
|
||||||
if ifcstate[key] == val then
|
if ifcstate[key] == val then
|
||||||
return ifcstate[field]
|
return ifcstate[field]
|
||||||
|
|
Loading…
Reference in a new issue