modules/admin-full: utilize luci.model.network, add uptime in iface_status action

This commit is contained in:
Jo-Philipp Wich 2010-12-01 21:16:49 +00:00
parent 9d83aafb78
commit a493e28e91

View file

@ -189,55 +189,47 @@ end
function iface_status() function iface_status()
local path = luci.dispatcher.context.requestpath local path = luci.dispatcher.context.requestpath
local x = luci.model.uci.cursor_state() local netm = require "luci.model.network".init()
local rv = { } local rv = { }
local iface local iface
for iface in path[#path]:gmatch("[%w%.%-]+") do for iface in path[#path]:gmatch("[%w%.%-]+") do
local dev local net = netm:get_network(iface)
if x:get("network", iface, "type") == "bridge" then if net then
dev = "br-" .. iface local info
else local dev = net:ifname()
dev = x:get("network", iface, "device") or "" local data = { id = iface, uptime = net:uptime() }
end for _, info in ipairs(nixio.getifaddrs()) do
local name = info.name:match("[^:]+")
if #dev == 0 or dev:match("^%d") or dev:match("%W") then if name == dev then
dev = x:get("network", iface, "ifname") or "" if info.family == "packet" then
dev = dev:match("%S+") data.flags = info.flags
end data.stats = info.data
data.macaddr = info.addr
local info data.ifname = name
local data = { id = iface } elseif info.family == "inet" then
for _, info in ipairs(nixio.getifaddrs()) do data.ipaddrs = data.ipaddrs or { }
local name = info.name:match("[^:]+") data.ipaddrs[#data.ipaddrs+1] = {
if name == dev then addr = info.addr,
if info.family == "packet" then broadaddr = info.broadaddr,
data.flags = info.flags dstaddr = info.dstaddr,
data.stats = info.data netmask = info.netmask,
data.macaddr = info.addr prefix = info.prefix
data.ifname = name }
elseif info.family == "inet" then elseif info.family == "inet6" then
data.ipaddrs = data.ipaddrs or { } data.ip6addrs = data.ip6addrs or { }
data.ipaddrs[#data.ipaddrs+1] = { data.ip6addrs[#data.ip6addrs+1] = {
addr = info.addr, addr = info.addr,
broadaddr = info.broadaddr, netmask = info.netmask,
dstaddr = info.dstaddr, prefix = info.prefix
netmask = info.netmask, }
prefix = info.prefix end
}
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 end
end
if next(data) then if next(data) then
rv[#rv+1] = data rv[#rv+1] = data
end
end end
end end