+ for j, line in ipairs(lines) do
+ dataindex = ( dataindex + 1 )
+ di = dataindex
+ local fields = luci.util.split(line, "\t", split)
+ data[name][di] = {}
+ for k, key in pairs(keys) do
+ if key == "Remote IP" or key == "Dest. IP" or key == "Gateway IP" or key == "Gateway" then
+ hostname = nixio.getnameinfo(fields[k], "inet")
+ if hostname then
+ data[name][di][key] = fields[k]
+ data[name][di]["Hostname"] = hostname
+ else
+ data[name][di][key] = fields[k]
+ end
+ elseif key == "Local IP" then
+ data[name][di][key] = fields[k]
+ data[name][di]['Local Device'] = fields[k]
+ uci:foreach("network", "interface",
+ function(s)
+ localip = string.gsub(fields[k], ' ', '')
+ if s.ipaddr == localip then
+ data[name][di]['Local Device'] = s['.name'] or interface
+ end
+ end)
+ elseif key == "Interface" then
+ data[name][di][key] = fields[k]
+ uci:foreach("network", "interface",
+ function(s)
+ interface = string.gsub(fields[k], ' ', '')
+ if s.ifname == interface then
+ data[name][di][key] = s['.name'] or interface
+ end
+ end)
+ else
+ data[name][di][key] = fields[k]
+ end
+ end
+ if data[name][di].Linkcost then
+ data[name][di].LinkQuality,
+ data[name][di].NLQ,
+ data[name][di].ETX =
+ data[name][di].Linkcost:match("([%w.]+)/([%w.]+)[%s]+([%w.]+)")
+ end