libs/sys: implement luci.sys.net.routes6()
This commit is contained in:
parent
18b4c1f6b6
commit
950825d323
1 changed files with 46 additions and 0 deletions
|
@ -361,6 +361,52 @@ function net.routes()
|
|||
return _parse_delimited_table(io.lines("/proc/net/route"))
|
||||
end
|
||||
|
||||
--- Returns the current ipv6 kernel routing table entries.
|
||||
-- @return Table of tables with properties of the corresponding routes.
|
||||
-- The following fields are defined for route entry tables:
|
||||
-- { "src_ip", "src_prefix", "dst_ip", "dst_prefix", "nexthop_ip",
|
||||
-- "metric", "refcount", "usecount", "flags", "device" }
|
||||
function net.routes6()
|
||||
local routes = { }
|
||||
|
||||
for line in io.lines("/proc/net/ipv6_route") do
|
||||
|
||||
local dst_ip, dst_prefix, src_ip, src_prefix, nexthop,
|
||||
metric, refcnt, usecnt, flags, dev = line:match(
|
||||
"([a-f0-9]+) ([a-f0-9]+) " ..
|
||||
"([a-f0-9]+) ([a-f0-9]+) " ..
|
||||
"([a-f0-9]+) ([a-f0-9]+) " ..
|
||||
"(%d+) (%d+) ([^%s]+) +([^%s]+)"
|
||||
)
|
||||
|
||||
src_ip = luci.ip.Hex(
|
||||
src_ip, tonumber(src_prefix, 16),
|
||||
luci.ip.FAMILY_INET6, false
|
||||
)
|
||||
|
||||
dst_ip = luci.ip.Hex(
|
||||
dst_ip, tonumber(dst_prefix, 16),
|
||||
luci.ip.FAMILY_INET6, false
|
||||
)
|
||||
|
||||
nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false )
|
||||
|
||||
routes[#routes+1] = {
|
||||
src_ip = src_ip:host():string(),
|
||||
src_prefix = src_ip:prefix(),
|
||||
dst_ip = dst_ip:host():string(),
|
||||
dst_prefix = dst_ip:prefix(),
|
||||
nexthop_ip = nexthop:string(),
|
||||
metric = tonumber(metric, 16),
|
||||
refcount = tonumber(refcnt),
|
||||
usecount = tonumber(usecnt),
|
||||
flags = tonumber(flags), -- hex?
|
||||
device = dev
|
||||
}
|
||||
end
|
||||
|
||||
return routes
|
||||
end
|
||||
|
||||
--- Tests whether the given host responds to ping probes.
|
||||
-- @param host String containing a hostname or IPv4 address
|
||||
|
|
Loading…
Reference in a new issue