libs/sys: workaround broken entries in /proc/net/ipv6_route, observed on brcm-2.4

This commit is contained in:
Jo-Philipp Wich 2012-07-18 11:22:10 +00:00
parent 05a1632670
commit 46c84206f3

View file

@ -451,35 +451,42 @@ function net.routes6(callback)
"([a-f0-9]+) +([^%s]+)" "([a-f0-9]+) +([^%s]+)"
) )
src_ip = luci.ip.Hex( if dst_ip and dst_prefix and
src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false src_ip and src_prefix and
) nexthop and metric and
refcnt and usecnt and
flags and dev
then
src_ip = luci.ip.Hex(
src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false
)
dst_ip = luci.ip.Hex( dst_ip = luci.ip.Hex(
dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false
) )
nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false ) nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false )
local rt = { local rt = {
source = src_ip, source = src_ip,
dest = dst_ip, dest = dst_ip,
nexthop = nexthop, nexthop = nexthop,
metric = tonumber(metric, 16), metric = tonumber(metric, 16),
refcount = tonumber(refcnt, 16), refcount = tonumber(refcnt, 16),
usecount = tonumber(usecnt, 16), usecount = tonumber(usecnt, 16),
flags = tonumber(flags, 16), flags = tonumber(flags, 16),
device = dev, device = dev,
-- lua number is too small for storing the metric -- lua number is too small for storing the metric
-- add a metric_raw field with the original content -- add a metric_raw field with the original content
metric_raw = metric metric_raw = metric
} }
if callback then if callback then
callback(rt) callback(rt)
else else
routes[#routes+1] = rt routes[#routes+1] = rt
end
end end
end end