From 5b94c1cca21aac49c0e105abd6b49b608b40e53e Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 22 Jan 2015 15:53:16 +0100 Subject: luci-mod-admin-full: switch to luci.ip route functions Signed-off-by: Jo-Philipp Wich --- .../luasrc/view/admin_status/routes.htm | 117 ++++++++++++++++----- 1 file changed, 91 insertions(+), 26 deletions(-) (limited to 'modules/luci-mod-admin-full/luasrc/view') diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm index 2d9a4a3dc..82dd3a7df 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm @@ -1,15 +1,33 @@ <%# Copyright 2008-2009 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich + Copyright 2008-2015 Jo-Philipp Wich Licensed to the public under the Apache License 2.0. -%> <%- - require "luci.sys" require "luci.tools.webadmin" require "nixio.fs" + local ip = require "luci.ip" local style = true + local _, v + + local rtn = { + [255] = "local", + [254] = "main", + [253] = "default", + [0] = "unspec" + } + + if nixio.fs.access("/etc/iproute2/rt_tables") then + local ln + for ln in io.lines("/etc/iproute2/rt_tables") do + local i, n = ln:match("^(%d+)%s+(%S+)") + if i and n then + rtn[tonumber(i)] = n + end + end + end -%> <%+header%> @@ -18,7 +36,7 @@

<%:Routes%>

<%:The following rules are currently active on this system.%>
-
+
ARP
@@ -28,19 +46,26 @@ - <% luci.sys.net.arptable(function(e) %> + <% + for _, v in ipairs(ip.neighbors({ family = 4 })) do + if v.mac then + %> - - - + + + - <% style = not style; end) %> + <% + style = not style + end + end + %>
<%:Interface%>
<%=e["IP address"]%><%=e["HW address"]%><%=e["Device"]%><%=v.dest%><%=v.mac%><%=v.dev%>

-
+
<%_Active IPv4-Routes%>
@@ -50,25 +75,27 @@ <%:Target%> <%_IPv4-Gateway%> <%:Metric%> + <%:Table%> - <% luci.sys.net.routes(function(rt) %> + <% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %> - <%=luci.tools.webadmin.iface_get_network(rt.device) or rt.device%> - <%=rt.dest:string()%> - <%=rt.gateway:string()%> - <%=rt.metric%> + <%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%> + <%=v.dest%> + <%=v.gw%> + <%=v.metric or 0%> + <%=rtn[v.table] or v.table%> - <% style = not style; end) %> + <% style = not style end %>

- <% if nixio.fs.access("/proc/net/ipv6_route") then - style = true - fe80 = luci.ip.IPv6("fe80::/10") + <% + if nixio.fs.access("/proc/net/ipv6_route") then + style = true %> -
+
<%_Active IPv6-Routes%>
@@ -76,17 +103,55 @@ <%:Network%> <%:Target%> - <%_IPv6-Gateway%> + <%:Source%> <%:Metric%> + <%:Table%> + + <% + for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do + if v.dest and not v.dest:is6linklocal() then + %> + + <%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%> + <%=v.dest%> + <%=v.from%> + <%=v.metric or 0%> + <%=rtn[v.table] or v.table%> + + <% + style = not style + end + end + %> + +
+
+
+ +
+ <%:IPv6 Neighbours%> + +
+ + + + + - <% luci.sys.net.routes6(function(rt) if fe80:contains(rt.dest) then return end %> + <% + for _, v in ipairs(ip.neighbors({ family = 6 })) do + if v.dest and not v.dest:is6linklocal() and v.mac then + %> - - - - + + + - <% style = not style; end) %> + <% + style = not style + end + end + %>
<%:IPv6-Address%><%:MAC-Address%><%:Interface%>
<%=luci.tools.webadmin.iface_get_network(rt.device) or '(' .. rt.device .. ')'%><%=rt.dest:string()%><%=rt.source:string()%><%=rt.metric_raw:upper()%><%=v.dest%><%=v.mac%><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%>
-- cgit v1.2.3