+ local dev = x:get("network", iface, "device") or ""
+ if #dev == 0 or dev:match("^%d") or dev:match("%W") then
+ dev = x:get("network", iface, "ifname") or ""
+ dev = dev:match("%S+")
+ end
+
+ for _, info in ipairs(nixio.getifaddrs()) do
+ local name = info.name:match("[^:]+")
+ if name == dev then
+ if info.family == "packet" then
+ data.flags = info.flags
+ data.stats = info.data
+ data.macaddr = info.addr
+ data.ifname = name
+ elseif info.family == "inet" then
+ data.ipaddrs = data.ipaddrs or { }
+ data.ipaddrs[#data.ipaddrs+1] = {
+ addr = info.addr,
+ broadaddr = info.broadaddr,
+ dstaddr = info.dstaddr,
+ netmask = info.netmask,
+ prefix = info.prefix
+ }
+ elseif info.family == "inet6" then
+ data.ip6addrs = data.ip6addrs or { }
+ data.ip6addrs[#data.ip6addrs+1] = {
+ addr = info.addr,
+ netmask = info.netmask,
+ prefix = info.prefix
+ }
+ end
+ end
+ end
+
+ if next(data) then
+ luci.http.prepare_content("application/json")
+ jsondump(data)
+ return
+ end
+
+ luci.http.status(404, "No such device")
+end
+
+function wifi_status()