modules/admin-full: utilize luci.model.network, add uptime in iface_status action
This commit is contained in:
parent
9d83aafb78
commit
a493e28e91
1 changed files with 34 additions and 42 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue