#!/usr/bin/lua
|
|
|
|
local uci = require 'uci'.cursor()
|
|
local ubus = require('ubus').connect()
|
|
|
|
local neighbor_reports = {}
|
|
|
|
local function hasKey(tab, key)
|
|
for k, _ in pairs(tab) do
|
|
if k == key then return true end
|
|
end
|
|
return false
|
|
end
|
|
|
|
uci:foreach('static-neighbor-report', 'neighbor', function (config)
|
|
if hasKey(config, "disabled") and config.disabled ~= '0' then
|
|
return
|
|
end
|
|
|
|
local bssid = ''
|
|
local ssid = ''
|
|
local neighbor_report = config['neighbor_report']
|
|
|
|
if hasKey(config, 'bssid') then bssid = config.bssid end
|
|
if hasKey(config, 'ssid') then ssid = config.ssid end
|
|
|
|
for iface in config.iface:gmatch("%S+") do
|
|
if not hasKey(neighbor_reports, iface) then
|
|
neighbor_reports[iface] = {}
|
|
end
|
|
table.insert(neighbor_reports[iface], {bssid, ssid, neighbor_report})
|
|
end
|
|
end)
|
|
|
|
for k, v in pairs(neighbor_reports) do
|
|
ubus:call('hostapd.' .. k, 'rrm_nr_set', {list=v})
|
|
end
|