From c1d9107be88df75406e9fbc9ccbec9fbe6e907c2 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 30 Nov 2008 19:15:16 +0000 Subject: [PATCH] luci-0.8: merge r3851 --- libs/sys/luasrc/sys.lua | 81 +++++++++---------- .../luasrc/model/cbi/admin_network/routes.lua | 13 +-- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index e92adc1ad6..fee1feeafd 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -319,14 +319,15 @@ end -- { "source", "dest", "nexthop", "metric", "refcount", "usecount", -- "flags", "device" } function net.defaultroute6() - local route = nil + local route = nil local routes6 = net.routes6() - if not routes6 then - return nil - end - for _, r in pairs(routes6) do - if r.dest:prefix() == 0 and (not route or route.metric > r.metric) then - route = r + if routes6 then + for _, r in pairs(routes6) do + if r.dest:prefix() == 0 and + (not route or route.metric > r.metric) + then + route = r + end end end return route @@ -419,46 +420,44 @@ end -- { "source", "dest", "nexthop", "metric", "refcount", "usecount", -- "flags", "device" } function net.routes6() - local routes = { } - - if not luci.fs.access("/proc/net/ipv6_route", "r") then - return nil - end + if luci.fs.access("/proc/net/ipv6_route", "r") then + 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]+) " .. + "([a-f0-9]+) ([a-f0-9]+) " .. + "([a-f0-9]+) +([^%s]+)" + ) - for line in io.lines("/proc/net/ipv6_route") do + src_ip = luci.ip.Hex( + src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false + ) - 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]+) " .. - "([a-f0-9]+) ([a-f0-9]+) " .. - "([a-f0-9]+) +([^%s]+)" - ) + dst_ip = luci.ip.Hex( + dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false + ) - src_ip = luci.ip.Hex( - src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false - ) + nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false ) - dst_ip = luci.ip.Hex( - dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false - ) + routes[#routes+1] = { + source = src_ip, + dest = dst_ip, + nexthop = nexthop, + metric = tonumber(metric, 16), + refcount = tonumber(refcnt, 16), + usecount = tonumber(usecnt, 16), + flags = tonumber(flags, 16), + device = dev + } + end - nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false ) - - routes[#routes+1] = { - source = src_ip, - dest = dst_ip, - nexthop = nexthop, - metric = tonumber(metric, 16), - refcount = tonumber(refcnt, 16), - usecount = tonumber(usecnt, 16), - flags = tonumber(flags, 16), - device = dev - } + return routes end - - return routes end --- Tests whether the given host responds to ping probes. diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua b/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua index 0d20d67223..be6629774f 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua @@ -42,7 +42,10 @@ if not arg or not arg[1] then return routes[section].gateway:string() end - metric = v:option(DummyValue, "Metric", translate("metric")) + metric = v:option(DummyValue, "metric", translate("metric")) + function metric.cfgvalue(self, section) + return routes[section].metric + end if routes6 then v = m:section(Table, routes6, translate("a_n_routes_kernel6")) @@ -63,10 +66,10 @@ if not arg or not arg[1] then return routes6[section].source:string() end - metric = v:option(DummyValue, "Metric", translate("metric")) - function metric.cfgvalue(self, section) - return string.format( "%08X", routes6[section].metric ) - end + metric = v:option(DummyValue, "metric", translate("metric")) + function metric.cfgvalue(self, section) + return string.format( "%08X", routes6[section].metric ) + end end end -- 2.30.2